From: Rafał Miłecki Date: Tue, 22 Feb 2022 09:56:49 +0000 (+0100) Subject: Add Broadcom / Netgear changes from RAXE 1.0.0.48 X-Git-Url: http://git.openwrt.org/%22https:/collectd.org///%22https:/collectd.org/?a=commitdiff_plain;h=9ba3026e1ed91f34f27c288355103ca10edfd739;p=project%2Fbcm63xx%2Fu-boot.git Add Broadcom / Netgear changes from RAXE 1.0.0.48 U-Boot changes from RAXE500_V1.0.0.48_5.04L.02_GPL.tar.gz Signed-off-by: Rafał Miłecki --- diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index f5a7630e4f..468d6c4dd9 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -247,7 +247,8 @@ config CPU_V7A bool select HAS_THUMB2 select HAS_VBAR - select SYS_CACHE_SHIFT_6 + select SYS_CACHE_SHIFT_5 if BCM63138 + select SYS_CACHE_SHIFT_6 if !BCM63138 imply SYS_ARM_MMU config CPU_V7M @@ -613,6 +614,44 @@ config ARCH_BCMSTB This enables support for Broadcom ARM-based set-top box chipsets, including the 7445 family of chips. +config ARCH_BCMBCA + bool "Broadcom broadband chip family" + select DM + select OF_CONTROL + select DM_GPIO + select LED + select OF_BOARD_SETUP + select AES + select SPI + select DM_SPI + select BCM63XX_HSSPI + select BCMBCA_GPIO if PINCTRL_BCMBCA + select OF_SEPARATE + select SPL_OF_CONTROL if SPL + select TPL_OF_CONTROL if SPL + select SPL_DM if SPL + select SPL_DM_SERIAL if SPL + select SPL_BOARD_INIT if SPL + select TPL_BOARD_INIT if SPL + select TPL_LOAD_FIT if SPL + select TPL_FIT_SIGNATURE if SPL + select TPL_HASH_SUPPORT if SPL + select TPL_CRYPTO_SUPPORT if SPL + select TPL_SHA256_SUPPORT if SPL + select SPL_DM_SEQ_ALIAS if SPL + select TPL_DM_SEQ_ALIAS if SPL + select SPL_SPI_SUPPORT if SPL + select TPL_SPI_SUPPORT if SPL + select SPL_MTD_SUPPORT if SPL + select TPL_MTD_SUPPORT if SPL + select ARMV8_SPIN_TABLE if !TPL_ATF && ARM64 + select ARMV8_MULTIENTRY if !TPL_ATF && ARM64 + select ARMV8_SET_SMPEN if !TPL_ATF && ARM64 + select BCM_BCA_LED + select OF_BOARD_FIXUP + + imply CMD_DM + config TARGET_VEXPRESS_CA5X2 bool "Support vexpress_ca5x2" select CPU_V7A @@ -1586,6 +1625,8 @@ source "arch/arm/mach-bcm283x/Kconfig" source "arch/arm/mach-bcmstb/Kconfig" +source "arch/arm/mach-bcmbca/Kconfig" + source "arch/arm/mach-davinci/Kconfig" source "arch/arm/mach-exynos/Kconfig" diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 5384981c17..80ebcc4a34 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -84,6 +84,7 @@ machine-$(CONFIG_ARCH_ZYNQ) += zynq machine-$(CONFIG_ARCH_ZYNQMP) += zynqmp machine-$(CONFIG_ARCH_VERSAL) += versal machine-$(CONFIG_ARCH_ZYNQMP_R5) += zynqmp-r5 +machine-$(CONFIG_ARCH_BCMBCA) += bcmbca machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y)) diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 20dbc2ff84..bcc8548033 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -757,6 +757,49 @@ dtb-$(CONFIG_ARCH_BCM63158) += \ dtb-$(CONFIG_ARCH_BCM6858) += \ bcm968580xref.dtb +dtb-$(CONFIG_BCM63158) += \ + bcm963158.dtb + +dtb-$(CONFIG_BCM6858) += \ + bcm96858.dtb + +dtb-$(CONFIG_BCM6856) += \ + bcm96856.dtb + +dtb-$(CONFIG_BCM63178) += \ + bcm963178.dtb + +dtb-$(CONFIG_BCM47622) += \ + bcm947622.dtb \ + bcm947622ref1sg.dtb + +dtb-$(CONFIG_BCM6756) += \ + bcm96756.dtb + +dtb-$(CONFIG_BCM4908) += \ + bcm94908.dtb + +dtb-$(CONFIG_BCM4912) += \ + bcm94912.dtb + +dtb-$(CONFIG_BCM63138) += \ + bcm963138.dtb + +dtb-$(CONFIG_BCM63148) += \ + bcm963148.dtb + +dtb-$(CONFIG_BCM63146) += \ + bcm963146.dtb + +dtb-$(CONFIG_BCM6846) += \ + bcm96846.dtb + +dtb-$(CONFIG_BCM6878) += \ + bcm96878.dtb + +dtb-$(CONFIG_BCM6855) += \ + bcm96855.dtb + dtb-$(CONFIG_ARCH_ASPEED) += ast2500-evb.dtb dtb-$(CONFIG_ARCH_STI) += stih410-b2260.dtb diff --git a/arch/arm/dts/bcm47622-pinctrl.dtsi b/arch/arm/dts/bcm47622-pinctrl.dtsi new file mode 100644 index 0000000000..67859fcce1 --- /dev/null +++ b/arch/arm/dts/bcm47622-pinctrl.dtsi @@ -0,0 +1,18 @@ + +/ { + + usb0_pwr_pins: usb0_pwr_pinmux { + pins = <79 80>; + function = <1>; + }; + + usb1_pwr_pins: usb1_pwr_pinmux { + pins = <81 82>; + function = <1>; + }; + + xmii_1_pins: xmii_1_pins { + pins = <10 56 57 58 59 60 61 62 63 64 65 66 67 68 69>; + function = <1>; + }; +}; diff --git a/arch/arm/dts/bcm4908-pinctrl.dtsi b/arch/arm/dts/bcm4908-pinctrl.dtsi new file mode 100644 index 0000000000..b39518750d --- /dev/null +++ b/arch/arm/dts/bcm4908-pinctrl.dtsi @@ -0,0 +1,12 @@ +/ { + + usb0a_pwrflt_pins: usb0a_pwrflt_pinmux { + pins = <63 66>; + function = <0>; + }; + + usb0a_pwron_pins: usb0a_pwron_pinmux { + pins = <64 67>; + function = <0>; + }; +}; diff --git a/arch/arm/dts/bcm4908.dtsi b/arch/arm/dts/bcm4908.dtsi new file mode 100644 index 0000000000..3060a52bd9 --- /dev/null +++ b/arch/arm/dts/bcm4908.dtsi @@ -0,0 +1,229 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2019 Philippe Reynes + */ + +#include "skeleton64.dtsi" +#include "bcm4908-pinctrl.dtsi" +#include "bcmbca-sf2net.dtsi" + +/ { + compatible = "brcm,bcm4908"; + #address-cells = <2>; + #size-cells = <2>; + + aliases { + spi1 = &hsspi; + }; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + + cpu0: cpu@0 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x0>; + next-level-cache = <&l2>; + u-boot,dm-pre-reloc; + }; + + cpu1: cpu@1 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x1>; + next-level-cache = <&l2>; + u-boot,dm-pre-reloc; + }; + + cpu2: cpu@2 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x2>; + next-level-cache = <&l2>; + u-boot,dm-pre-reloc; + }; + + cpu3: cpu@3 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x3>; + next-level-cache = <&l2>; + u-boot,dm-pre-reloc; + }; + + l2: l2-cache0 { + compatible = "cache"; + u-boot,dm-pre-reloc; + }; + }; + + clocks { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + u-boot,dm-pre-reloc; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + u-boot,dm-pre-reloc; + }; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <2>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_status", "reset_reason"; + reg = <0x0 0xff800438 0x0 0x04>, + <0x0 0xFF802628 0x0 0x04>; + }; + + ubus { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + u-boot,dm-pre-reloc; + + + uart0: serial@ff800640 { + compatible = "brcm,bcm6345-uart"; + reg = <0x0 0xff800640 0x0 0x1000>; + clocks = <&refclk50mhz>; + u-boot,dm-pre-reloc; + }; + leds: led-controller@ff800800 { + compatible = "brcm,bcm6858-leds"; + reg = <0x0 0xff800800 0x0 0xe4>; + + status = "disabled"; + }; + + wdt1: watchdog@ff800480 { + compatible = "brcm,bcm6345-wdt"; + reg = <0x0 0xff800428 0x0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + sf2gmac_eth { + compatible = "brcm,bcmbca-sf2gmac"; + reg-names = "gmac-intf-base", + "gmac-mac-base", + "gmac-dma-base"; + + reg = <0x0 0x80002000 0x0 0x48>, + <0x0 0x80002400 0x0 0x340>, + <0x0 0x80002800 0x0 0x420>; + + ethsw = <&switchsf2>; + }; + + switchsf2: sf2@0x80080000 { + compatible = "brcm,bcmbca-sf2"; + phy_base = <0x8>; + reg-names = "switchcore-base", + "switchreg-base", + "switchmdio-base", + "qphy-ctrl", + "sphy-ctrl", + "phy-test-ctrl"; + + reg = <0x0 0x80080000 0x0 0x286B0>, + <0x0 0x800C0000 0x0 0x3F4>, + <0x0 0x800C05C0 0x0 0x8>, + <0x0 0x800C001C 0x0 0x04>, + <0x0 0x800C0024 0x0 0x04>, + <0x0 0x800C0018 0x0 0x04>; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0x0 0xff800564 0x0 0x14>; + }; + + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x0 0x8000c200 0x0 0x100>; + status = "okay"; + }; + + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x0 0x8000c300 0x0 0x100>; + }; + + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x0 0x8000c400 0x0 0x100>; + }; + + hsspi: spi-controller@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + reg = <0x0 0xff801000 0x0 0x600>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <100000000>; + num-cs = <8>; + status = "disabled"; + }; + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0x0 0xff801800 0x0 0x400>, + <0x0 0xff802000 0x0 0x10>, + <0x0 0xff801c00 0x0 0x200>; + parameter-page-big-endian = <0>; + + status = "disabled"; + }; + + sdhci: sdhci@ff858000 { + compatible = "brcm,bcm63xx-sdhci", + "brcm,sdhci-brcmbca"; + reg-names = "sdhci-base", "sdhci-boot"; + reg = <0x0 0xff858000 0x0 0x100>, + <0x0 0xff858200 0x0 0x40>; + bus-width = <8>; + u-boot,dm-pre-reloc; + }; + + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0x0 0xff800b80 0x0 0x28>; + u-boot,dm-pre-reloc; + }; + }; +}; diff --git a/arch/arm/dts/bcm4912.dtsi b/arch/arm/dts/bcm4912.dtsi new file mode 100644 index 0000000000..1ba433020a --- /dev/null +++ b/arch/arm/dts/bcm4912.dtsi @@ -0,0 +1,296 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 Broadcom Ltd. + */ + +#include "skeleton64.dtsi" + +/ { + compatible = "brcm,bcm4912"; + #address-cells = <2>; + #size-cells = <2>; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + + cpu0: cpu@0 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x0>; + next-level-cache = <&l2>; + }; + + cpu1: cpu@1 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x1>; + next-level-cache = <&l2>; + }; + + cpu2: cpu@2 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x2>; + next-level-cache = <&l2>; + }; + + cpu3: cpu@3 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x3>; + next-level-cache = <&l2>; + }; + + l2: l2-cache0 { + compatible = "cache"; + }; + }; + + clocks { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + u-boot,dm-pre-reloc; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <1>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + ubus { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + u-boot,dm-pre-reloc; + + uart0: serial@ff812000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x0 0xff812000 0x0 0x1000>; + clock = <50000000>; + + status = "disabled"; + }; + + wdt1: watchdog@ff800480 { + compatible = "brcm,bcm6345-wdt"; + reg = <0x0 0xff800480 0x0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt2: watchdog@ff8004c0 { + compatible = "brcm,bcm6345-wdt"; + reg = <0x0 0xff8004c0 0x0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0x0 0xff801800 0x0 0x400>, + <0x0 0xff802000 0x0 0x10>, + <0x0 0xff801c00 0x0 0x200>; + parameter-page-big-endian = <0>; + + status = "disabled"; + }; + + hsspi: hsspi@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <0x1>; + #size-cells = <0x0>; + u-boot,dm-pre-reloc; + + reg = <0x0 0xff801000 0x0 0x1000>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <100000000>; + num-cs = <8>; + status = "disabled"; + }; + + sdhci: sdhci@ff810000 { + compatible = "brcm,bcm63xx-sdhci", + "brcm,sdhci-brcmbca"; + reg-names = "sdhci-base", "sdhci-boot"; + reg = <0x0 0xff810000 0x0 0x100>, + <0x0 0xff810200 0x0 0x40>; + bus-width = <8>; + u-boot,dm-pre-reloc; + }; + + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0x0 0xff800b80 0x0 0x28>; + u-boot,dm-pre-reloc; + }; + }; + unimac { + compatible = "brcm,unimac"; + reg = <0x0 0x828a8000 0x0 0x8000>, + <0x0 0x828b0000 0x0 0x2000>; + conf_offset = <0x1000>; + mib_offset = <0x400>; + top_offset = <0x400>; + mib_step = <0x2>; + }; + + egphy { + compatible = "brcm,egphy"; + reg = <0x0 0x837FF00C 0x0 0x10>; + }; + + mdio5 { + compatible = "brcm,mdio5"; + reg = <0x0 0x837FFD00 0x0 0x10>, + <0x0 0xff85a024 0x0 0x4>; + }; + + xrdp { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + ranges = <0x0 0x0 0x0 0x82000000 0x0 0xcd0000 + 0x1 0x0 0x0 0xff800000 0x0 0x62000>; + + mdio: mdio { + compatible = "simple-bus"; + bus-type = "MDIO_V1_INT"; + + #address-cells = <1>; + #size-cells = <0>; + + phy1:1 { + compatible = "brcm,bcaphy"; + phy-type = "EGPHY"; + reg = <1>; + status = "disabled"; + }; + + phy2:2 { + compatible = "brcm,bcaphy"; + phy-type = "EGPHY"; + reg = <2>; + status = "disabled"; + }; + + phy3:3 { + compatible = "brcm,bcaphy"; + phy-type = "EGPHY"; + reg = <3>; + status = "disabled"; + }; + + phy4:4 { + compatible = "brcm,bcaphy"; + phy-type = "EGPHY"; + reg = <4>; + status = "disabled"; + }; + }; + + /* FIXME! + rgmii: rgmii { + compatible = "brcm,rgmii1"; + reg = <0x0 0x828A0300 0x0 0x44 + 0x0 0xff800500 0x0 0x78>; + status = "disabled"; + }; + */ + + switch0: switch0 { + }; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0x0 0xff802628 0x0 0x04>, + <0x0 0xff85a01c 0x0 0x04>; + }; +}; + +&switch0 { + compatible = "brcm,enet"; + label = "bcmsw"; + sw-type = "RUNNER_SW"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port0@0 { + reg = <0>; + mac-type = "UNIMAC"; + phy-handle = <&phy1>; + phy-mode = "gmii"; + gmii-direct; + status = "disabled"; + }; + + port1@1 { + reg = <1>; + mac-type = "UNIMAC"; + phy-handle = <&phy2>; + phy-mode = "gmii"; + gmii-direct; + status = "disabled"; + }; + + port2@2 { + reg = <2>; + mac-type = "UNIMAC"; + phy-handle = <&phy3>; + phy-mode = "gmii"; + gmii-direct; + status = "disabled"; + }; + + port3@3 { + reg = <3>; + mac-type = "UNIMAC"; + phy-handle = <&phy4>; + phy-mode = "gmii"; + gmii-direct; + status = "disabled"; + }; + + /* FIXME + port4@4 { + reg = <4>; + mac-type = "UNIMAC"; + phy-handle = <&phy_rgmii>; + phy-mode = "rgmii"; + gmii-direct; + status = "disabled"; + }; */ + }; +}; + diff --git a/arch/arm/dts/bcm63138-pinctrl.dtsi b/arch/arm/dts/bcm63138-pinctrl.dtsi new file mode 100644 index 0000000000..be2ac57aaf --- /dev/null +++ b/arch/arm/dts/bcm63138-pinctrl.dtsi @@ -0,0 +1,13 @@ + +/ { + + usb0a_pwrflt_pins: usb0a_pwrflt_pinmux { + pins = <132>; + function = <1>; + }; + + usb0a_pwron_pins: usb0a_pwron_pinmux { + pins = <133>; + function = <1>; + }; +}; diff --git a/arch/arm/dts/bcm63138.dtsi b/arch/arm/dts/bcm63138.dtsi new file mode 100644 index 0000000000..bd36139649 --- /dev/null +++ b/arch/arm/dts/bcm63138.dtsi @@ -0,0 +1,173 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include "skeleton.dtsi" +#include "bcm63138-pinctrl.dtsi" +#include "bcmbca-sf2net.dtsi" + + +/ { + compatible = "brcm,bcm63138"; + #address-cells = <1>; + #size-cells = <1>; + + clocks { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + u-boot,dm-pre-reloc; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&refclk50mhz>; + clock-mult = <8>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + }; + + ubus@ff800000 { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + u-boot,dm-pre-reloc; + + uart0: serial@fffe8600 { + u-boot,dm-pre-reloc; + compatible = "brcm,bcm6345-uart"; + reg = <0xfffe8600 0x20>; + clocks = <&refclk50mhz>; + status = "disabled"; + }; + + timer0: timer@fffe8080 { + u-boot,dm-pre-reloc; + compatible = "brcm,bcm6xxx-timer"; + reg = <0xfffe8080 0x28>; + clocks = <&refclk50mhz>; + status = "disabled"; + }; + + wdt1: watchdog@fffe80a8 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xfffe80a8 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + rdp_eth { + compatible = "brcm,bcmbca-rdp"; + ethsw = <&switchsf2>; + }; + + switchsf2: sf2@0x80080000 { + compatible = "brcm,bcmbca-sf2"; + phy_base = <0x8>; + reg-names = "switchcore-base", + "switchreg-base", + "switchmdio-base", + "qphy-ctrl", + "sphy-ctrl", + "phy-test-ctrl"; + reg = <0x80080000 0x40000>, + <0x800c0000 0x1a8>, + <0x800c03c0 0x8>, + <0x800c0024 0x4>, + <0x800c002c 0x4>, + <0x800c0020 0x4>; + }; + + nand: nand-controller@fffea000 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.0", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0xfffea000 0x400>, + <0xfffe80f0 0x10>, + <0xfffea400 0x200>; + parameter-page-big-endian = <0>; + + status = "disabled"; + }; + + hsspi: hsspi@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <0x1>; + #size-cells = <0x0>; + u-boot,dm-pre-reloc; + + reg = <0xfffe9000 0x1000>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <100000000>; + num-cs = <8>; + status = "disabled"; + }; + + sdhci: sdhci@fffec000 { + compatible = "brcm,bcm63xx-sdhci", + "brcm,sdhci-brcmbca"; + reg-names = "sdhci-base", "sdhci-boot"; + reg = <0xfffec000 0x100>, + <0xfffec200 0x40>; + bus-width = <8>; + u-boot,dm-pre-reloc; + }; + + rng: rng@fffe8300 { + compatible = "brcm,iproc-rng200"; + reg = <0xfffe8300 0x28>; + u-boot,dm-pre-reloc; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0xfffe813c 0x14>; + }; + + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x8000c200 0x100>; + status = "okay"; + }; + + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c300 0x100>; + }; + + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c400 0x100>; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v1"; + reg-names = "reset_status", "global_control", + "flash_control", "mode_control"; + reg = <0xfffe80b8 0x04>, + <0xfffe9000 0x04>, + <0xfffe9014 0x04>, + <0xfffe91e8 0x04>; + }; + }; +}; diff --git a/arch/arm/dts/bcm63146.dtsi b/arch/arm/dts/bcm63146.dtsi new file mode 100644 index 0000000000..6e2050e8e5 --- /dev/null +++ b/arch/arm/dts/bcm63146.dtsi @@ -0,0 +1,303 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2019 Philippe Reynes + */ + +#include "skeleton64.dtsi" + +/ { + compatible = "brcm,bcm63146"; + #address-cells = <2>; + #size-cells = <2>; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + + cpu0: cpu@0 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x0>; + next-level-cache = <&l2>; + u-boot,dm-pre-reloc; + }; + + cpu1: cpu@1 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x1>; + next-level-cache = <&l2>; + u-boot,dm-pre-reloc; + }; + + l2: l2-cache0 { + compatible = "cache"; + u-boot,dm-pre-reloc; + }; + }; + + clocks { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + u-boot,dm-pre-reloc; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <1>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + ubus { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + u-boot,dm-pre-reloc; + + uart0: serial@ff812000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x0 0xff812000 0x0 0x1000>; + clock = <50000000>; + + status = "disabled"; + }; + + hsspi: hsspi@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <0x1>; + #size-cells = <0x0>; + u-boot,dm-pre-reloc; + + reg = <0x0 0xff801000 0x0 0x1000>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <100000000>; + num-cs = <8>; + status = "disabled"; + }; + + wdt1: watchdog@ff800480 { + compatible = "brcm,bcm6345-wdt"; + reg = <0x0 0xff800480 0x0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt2: watchdog@ff8004c0 { + compatible = "brcm,bcm6345-wdt"; + reg = <0x0 0xff8004c0 0x0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0x0 0xff801800 0x0 0x400>, + <0x0 0xff802000 0x0 0x10>, + <0x0 0xff801c00 0x0 0x200>; + parameter-page-big-endian = <0>; + + status = "disabled"; + }; + + sdhci: sdhci@ff810000 { + compatible = "brcm,bcm63xx-sdhci", + "brcm,sdhci-brcmbca"; + reg-names = "sdhci-base", "sdhci-boot"; + reg = <0x0 0xff810000 0x0 0x100>, + <0x0 0xff810200 0x0 0x40>; + bus-width = <8>; + u-boot,dm-pre-reloc; + }; + + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0x0 0xff800b80 0x0 0x28>; + u-boot,dm-pre-reloc; + }; + }; + + unimac { + compatible = "brcm,unimac"; + reg = <0x0 0x828a8000 0x0 0x8000>, + <0x0 0x828b0000 0x0 0x2000>; + conf_offset = <0x1000>; + mib_offset = <0x400>; + top_offset = <0x400>; + mib_step = <0x2>; + }; + + egphy { + compatible = "brcm,egphy"; + reg = <0x0 0x837FF00C 0x0 0x20>; + }; + + mdio5 { + compatible = "brcm,mdio5"; + reg = <0x0 0x837FFD00 0x0 0x10>, + <0x0 0xff85a024 0x0 0x4>; + }; + + xrdp { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + ranges = <0x0 0x0 0x0 0x82000000 0x0 0xcd0000 + 0x1 0x0 0x0 0xff800000 0x0 0x62000>; + + mdio: mdio { + compatible = "simple-bus"; + bus-type = "MDIO_V1_INT"; + + #address-cells = <1>; + #size-cells = <0>; + + phy1:1 { + compatible = "brcm,bcaphy"; + phy-type = "EGPHY"; + reg = <1>; + status = "disabled"; + }; + + phy2:2 { + compatible = "brcm,bcaphy"; + phy-type = "EGPHY"; + reg = <2>; + status = "disabled"; + }; + + phy3:3 { + compatible = "brcm,bcaphy"; + phy-type = "EGPHY"; + reg = <3>; + status = "disabled"; + }; + + phy4:4 { + compatible = "brcm,bcaphy"; + phy-type = "EGPHY"; + reg = <4>; + status = "disabled"; + }; + + phy5:5 { + compatible = "brcm,bcaphy"; + phy-type = "EGPHY"; + reg = <5>; + status = "disabled"; + }; + + /* FIXME! + phy_rgmii:rgmii { + compatible = "brcm,bcaphy"; + phy-type = "EXT1"; + reg = <7>; + status = "disabled"; + }; + */ + }; + + /* FIXME! + rgmii: rgmii { + compatible = "brcm,rgmii1"; + reg = <0x0 0x828A0300 0x0 0x44 + 0x0 0xff800500 0x0 0x78>; + status = "disabled"; + }; + */ + + switch0: switch0 { + }; + }; +}; + +&switch0 { + compatible = "brcm,enet"; + label = "bcmsw"; + sw-type = "RUNNER_SW"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port0@0 { + reg = <0>; + mac-type = "UNIMAC"; + phy-handle = <&phy1>; + phy-mode = "gmii"; + gmii-direct; + status = "disabled"; + }; + + port1@1 { + reg = <1>; + mac-type = "UNIMAC"; + phy-handle = <&phy2>; + phy-mode = "gmii"; + gmii-direct; + status = "disabled"; + }; + + port2@2 { + reg = <2>; + mac-type = "UNIMAC"; + phy-handle = <&phy3>; + phy-mode = "gmii"; + gmii-direct; + status = "disabled"; + }; + + port3@3 { + reg = <3>; + mac-type = "UNIMAC"; + phy-handle = <&phy4>; + phy-mode = "gmii"; + gmii-direct; + status = "disabled"; + }; + + port4@4 { + reg = <4>; + mac-type = "UNIMAC"; + phy-handle = <&phy5>; + phy-mode = "gmii"; + gmii-direct; + status = "disabled"; + }; + + /* FIXME + port5@5 { + reg = <5>; + mac-type = "UNIMAC"; + phy-handle = <&phy_serdes>; + phy-mode = "hsgmii"; + gmii-direct; + status = "disabled"; + }; */ + }; +}; diff --git a/arch/arm/dts/bcm63148.dtsi b/arch/arm/dts/bcm63148.dtsi new file mode 100644 index 0000000000..f59eb24cdb --- /dev/null +++ b/arch/arm/dts/bcm63148.dtsi @@ -0,0 +1,142 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include "skeleton.dtsi" +/* #include "bcm63138-pinctrl.dtsi" */ +#include "bcmbca-sf2net.dtsi" + + +/ { + compatible = "brcm,bcm63148"; + #address-cells = <1>; + #size-cells = <1>; + + clocks { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + u-boot,dm-pre-reloc; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + u-boot,dm-pre-reloc; + }; + }; + + ubus@ff800000 { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + u-boot,dm-pre-reloc; + + uart0: serial@fffe8600 { + u-boot,dm-pre-reloc; + compatible = "brcm,bcm6345-uart"; + reg = <0xfffe8600 0x20>; + clocks = <&refclk50mhz>; + status = "disabled"; + }; + + timer0: timer@fffe8080 { + u-boot,dm-pre-reloc; + compatible = "brcm,bcm6xxx-timer"; + reg = <0xfffe8080 0x28>; + clocks = <&refclk50mhz>; + status = "disabled"; + }; + + wdt1: watchdog@fffe80a8 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xfffe80a8 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + rdp_eth { + compatible = "brcm,bcmbca-rdp"; + ethsw = <&switchsf2>; + }; + + switchsf2: sf2@0x80080000 { + compatible = "brcm,bcmbca-sf2"; + phy_base = <0x8>; + reg-names = "switchcore-base", + "switchreg-base", + "switchmdio-base", + "qphy-ctrl", + "sphy-ctrl", + "phy-test-ctrl"; + reg = <0x80080000 0x40000>, + <0x800c0000 0x1a8>, + <0x800c03c0 0x8>, + <0x800c0024 0x4>, + <0x800c002c 0x4>, + <0x800c0020 0x4>; + }; + + nand: nand-controller@fffea000 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0xfffea000 0x400>, + <0xfffe80f0 0x10>, + <0xfffea400 0x200>; + parameter-page-big-endian = <0>; + + status = "disabled"; + }; + + rng: rng@fffe8300 { + compatible = "brcm,iproc-rng200"; + reg = <0xfffe8300 0x28>; + u-boot,dm-pre-reloc; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0xfffe813c 0x14>; + }; + + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x8000c200 0x100>; + status = "okay"; + }; + + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c300 0x100>; + }; + + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c400 0x100>; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v1"; + reg-names = "reset_status", "global_control", + "flash_control", "mode_control"; + reg = <0xfffe80b8 0x04>, + <0xfffe9000 0x04>, + <0xfffe9014 0x04>, + <0xfffe91e8 0x04>; + }; + + + }; +}; diff --git a/arch/arm/dts/bcm63158-pinctrl.dtsi b/arch/arm/dts/bcm63158-pinctrl.dtsi new file mode 100644 index 0000000000..87757e727d --- /dev/null +++ b/arch/arm/dts/bcm63158-pinctrl.dtsi @@ -0,0 +1,44 @@ + +/ { + + usb0a_pwrflt_pins: usb0a_pwrflt_pinmux { + pins = <121>; + function = <1>; + }; + + usb0a_pwron_pins: usb0a_pwron_pinmux { + pins = <122>; + function = <1>; + }; + + usb0b_pwrflt_pins: usb0b_pwrflt_pinmux { + pins = <123>; + function = <2>; + }; + + usb0b_pwron_pins: usb0b_pwron_pinmux { + pins = <124>; + function = <2>; + }; + + usb1a_pwrflt_pins: usb1a_pwrflt_pinmux { + pins = <123>; + function = <1>; + }; + + usb1a_pwron_pins: usb1a_pwron_pinmux { + pins = <124>; + function = <1>; + }; + + usb1b_pwrflt_pins: usb1b_pwrflt_pinmux { + pins = <121>; + function = <2>; + }; + + usb1b_pwron_pins: usb1b_pwron_pinmux { + pins = <122>; + function = <2>; + }; + +}; diff --git a/arch/arm/dts/bcm63158.dtsi b/arch/arm/dts/bcm63158.dtsi index 175af38018..ee023f1f4a 100644 --- a/arch/arm/dts/bcm63158.dtsi +++ b/arch/arm/dts/bcm63158.dtsi @@ -4,12 +4,18 @@ */ #include "skeleton64.dtsi" +#include "bcm63158-pinctrl.dtsi" +#include "bcmbca-sf2net.dtsi" / { compatible = "brcm,bcm63158"; #address-cells = <2>; #size-cells = <2>; + aliases { + spi1 = &hsspi; + }; + cpus { #address-cells = <2>; #size-cells = <0>; @@ -63,10 +69,19 @@ periph_osc: periph-osc { compatible = "fixed-clock"; #clock-cells = <0>; - clock-frequency = <0xbebc200>; + clock-frequency = <200000000>; u-boot,dm-pre-reloc; }; + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <2>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + refclk50mhz: refclk50mhz { compatible = "fixed-clock"; #clock-cells = <0>; @@ -112,97 +127,125 @@ wdt = <&wdt1>; }; - gpio0: gpio-controller@0xff800500 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800500 0x0 0x4>, - <0x0 0xff800520 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; + hsspi: spi-controller@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + reg = <0x0 0xff801000 0x0 0x600>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <100000000>; + num-cs = <8>; status = "disabled"; }; - gpio1: gpio-controller@0xff800504 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800504 0x0 0x4>, - <0x0 0xff800524 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0x0 0xff801800 0x0 0x400>, + <0x0 0xff802000 0x0 0x10>, + <0x0 0xff801c00 0x0 0x200>; + parameter-page-big-endian = <0>; status = "disabled"; }; - gpio2: gpio-controller@0xff800508 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800508 0x0 0x4>, - <0x0 0xff800528 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; - - status = "disabled"; + sdhci: sdhci@ff810000 { + compatible = "brcm,bcm63xx-sdhci", + "brcm,sdhci-brcmbca"; + reg-names = "sdhci-base", "sdhci-boot"; + reg = <0x0 0xff810000 0x0 0x100>, + <0x0 0xff810200 0x0 0x40>; + bus-width = <8>; + u-boot,dm-pre-reloc; }; - gpio3: gpio-controller@0xff80050c { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff80050c 0x0 0x4>, - <0x0 0xff80052c 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; - - status = "disabled"; + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0x0 0xff800b80 0x0 0x28>; + u-boot,dm-pre-reloc; }; - - gpio4: gpio-controller@0xff800510 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800510 0x0 0x4>, - <0x0 0xff800530 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; - - status = "disabled"; + sysport: systemport@0x80490000 { + compatible = "brcm,bcmbca-systemport-v-1.0"; + qphy-avaiable=<0x01>; + sphy-available=<0x01>; + reg-names = "systemport-rbuf-base", "systemport-rdma-base", + "systemport-tdma-base", + "systemport-umac-base", + "systemport-topctrl-base"; + reg = <0x0 0x80490400 0x0 0x14>, + <0x0 0x80492000 0x0 0x1060>, + <0x0 0x80494000 0x0 0x650>, + <0x0 0x80490800 0x0 0x650>, + <0x0 0x80490000 0x0 0x10>; + ethsw = <&switchsf2>; }; - gpio5: gpio-controller@0xff800514 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800514 0x0 0x4>, - <0x0 0xff800534 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; + switchsf2: sf2@80400000 { + compatible = "brcm,bcmbca-sf2"; + phy_base = <0x8>; + phy_wkard_timeout = <25000>; + reg-names = "switchcore-base", + "switchreg-base", + "switchmdio-base", + "qphy-ctrl", + "sphy-ctrl", + "phy-test-ctrl"; - status = "disabled"; + reg = <0x0 0x80400000 0x0 0x72724>, + <0x0 0x80480000 0x0 0x458>, + <0x0 0x804805c0 0x0 0x10>, + <0x0 0x8048001c 0x0 0x04>, + <0x0 0x80480024 0x0 0x04>, + <0x0 0x80480018 0x0 0x04>; }; - gpio6: gpio-controller@0xff800518 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800518 0x0 0x4>, - <0x0 0xff800538 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0x0 0xff800554 0x0 0x14>; + }; - status = "disabled"; + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x0 0x8000c200 0x0 0x100>; + status = "okay"; }; - gpio7: gpio-controller@0xff80051c { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff80051c 0x0 0x4>, - <0x0 0xff80053c 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x0 0x8000c300 0x0 0x100>; + }; - status = "disabled"; + usb1: usb@0x8000c500 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x0 0x8000c500 0x0 0x100>; }; - nand: nand-controller@ff801800 { - compatible = "brcm,nand-bcm63158", - "brcm,brcmnand-v5.0", - "brcm,brcmnand"; - reg-names = "nand", "nand-int-base", "nand-cache"; - reg = <0x0 0xff801800 0x0 0x180>, - <0x0 0xff802000 0x0 0x10>, - <0x0 0xff801c00 0x0 0x200>; - parameter-page-big-endian = <0>; + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x0 0x8000c400 0x0 0x100>; + }; - status = "disabled"; + usb_ohci1: usb_ohci@0x8000c600 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x0 0x8000c600 0x0 0x100>; }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0x00 0xff802628 0x00 0x04>, + <0x00 0xff85a03c 0x00 0x04>; + }; }; }; diff --git a/arch/arm/dts/bcm63178-pinctrl.dtsi b/arch/arm/dts/bcm63178-pinctrl.dtsi new file mode 100644 index 0000000000..41b462a83a --- /dev/null +++ b/arch/arm/dts/bcm63178-pinctrl.dtsi @@ -0,0 +1,14 @@ + +/ { + + usb0_pwr_pins: usb0_pwr_pinmux { + pins = <83 84>; + function = <1>; + }; + + usb1_pwr_pins: usb1_pwr_pinmux { + pins = <85 86>; + function = <1>; + }; + +}; diff --git a/arch/arm/dts/bcm6756-pinctrl.dtsi b/arch/arm/dts/bcm6756-pinctrl.dtsi new file mode 100644 index 0000000000..67859fcce1 --- /dev/null +++ b/arch/arm/dts/bcm6756-pinctrl.dtsi @@ -0,0 +1,18 @@ + +/ { + + usb0_pwr_pins: usb0_pwr_pinmux { + pins = <79 80>; + function = <1>; + }; + + usb1_pwr_pins: usb1_pwr_pinmux { + pins = <81 82>; + function = <1>; + }; + + xmii_1_pins: xmii_1_pins { + pins = <10 56 57 58 59 60 61 62 63 64 65 66 67 68 69>; + function = <1>; + }; +}; diff --git a/arch/arm/dts/bcm6856.dtsi b/arch/arm/dts/bcm6856.dtsi new file mode 100644 index 0000000000..80a1ccee80 --- /dev/null +++ b/arch/arm/dts/bcm6856.dtsi @@ -0,0 +1,222 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2018 Philippe Reynes + */ + +#include "skeleton64.dtsi" + +/ { + compatible = "brcm,bcm6856"; + #address-cells = <2>; + #size-cells = <2>; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + + cpu0: cpu@0 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x0>; + next-level-cache = <&l2>; + u-boot,dm-pre-reloc; + }; + + cpu1: cpu@1 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x1>; + next-level-cache = <&l2>; + u-boot,dm-pre-reloc; + }; + + cpu2: cpu@2 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x2>; + next-level-cache = <&l2>; + u-boot,dm-pre-reloc; + }; + + cpu3: cpu@3 { + compatible = "arm,cortex-a53", "arm,armv8"; + device_type = "cpu"; + reg = <0x0 0x3>; + next-level-cache = <&l2>; + u-boot,dm-pre-reloc; + }; + + l2: l2-cache0 { + compatible = "cache"; + u-boot,dm-pre-reloc; + }; + }; + + clocks { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + ranges; + u-boot,dm-pre-reloc; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <2>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0x00 0xff80263c 0x00 0x04>, + <0x00 0xff85a03c 0x00 0x04>; + }; + + ubus { + compatible = "simple-bus"; + #address-cells = <2>; + #size-cells = <2>; + u-boot,dm-pre-reloc; + + uart0: serial@ff800640 { + compatible = "brcm,bcm6345-uart"; + reg = <0x0 0xff800640 0x0 0x18>; + clocks = <&periph_osc>; + + status = "disabled"; + }; + + leds: led-controller@ff800800 { + compatible = "brcm,bcm6858-leds"; + reg = <0x0 0xff800800 0x0 0xe4>; + + status = "disabled"; + }; + + wdt1: watchdog@ff800480 { + compatible = "brcm,bcm6345-wdt"; + reg = <0x0 0xff800480 0x0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt2: watchdog@ff8004c0 { + compatible = "brcm,bcm6345-wdt"; + reg = <0x0 0xff8004c0 0x0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0x0 0xff801800 0x0 0x400>, + <0x0 0xff802000 0x0 0x10>, + <0x0 0xff801c00 0x0 0x200>; + parameter-page-big-endian = <0>; + + status = "disabled"; + }; + + hsspi: hsspi@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <0x1>; + #size-cells = <0x0>; + u-boot,dm-pre-reloc; + + reg = <0x0 0xff801000 0x0 0x1000>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <100000000>; + num-cs = <8>; + status = "disabled"; + }; + + sdhci: sdhci@ff858000 { + compatible = "brcm,bcm63xx-sdhci", + "brcm,sdhci-brcmbca"; + reg-names = "sdhci-base", "sdhci-boot"; + reg = <0x0 0xff858000 0x0 0x100>, + <0x0 0xff858200 0x0 0x40>; + bus-width = <8>; + u-boot,dm-pre-reloc; + }; + + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0x0 0xff800b80 0x0 0x28>; + u-boot,dm-pre-reloc; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0x0 0xff800554 0x0 0x14>; + gpio-mux = <4>; + }; + + gpioc: gpioc { + compatible = "brcm,bca-gpio"; + gpio-controller; + #gpio-cells = <2>; + reg = <0x0 0xff800500 0x0 0x20>, <0x0 0xff800520 0x0 0x20>; + reg-names = "gpio-dir", "gpio-data"; + ngpios = <84>; + gpio-ranges = <&pinctrl 0 0 84>; + }; + + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x0 0x8000c200 0x0 0x100>; + status = "okay"; + }; + + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x0 0x8000c300 0x0 0x100>; + }; + + usb1: usb@0x8000c500 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x0 0x8000c500 0x0 0x100>; + }; + + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x0 0x8000c400 0x0 0x100>; + }; + + usb_ohci1: usb_ohci@0x8000c600 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x0 0x8000c600 0x0 0x100>; + }; + }; +}; diff --git a/arch/arm/dts/bcm6858.dtsi b/arch/arm/dts/bcm6858.dtsi index 91f7787eb9..aaf1060640 100644 --- a/arch/arm/dts/bcm6858.dtsi +++ b/arch/arm/dts/bcm6858.dtsi @@ -10,6 +10,10 @@ #address-cells = <2>; #size-cells = <2>; + aliases { + spi0 = &hsspi; + }; + cpus { #address-cells = <2>; #size-cells = <0>; @@ -67,6 +71,15 @@ u-boot,dm-pre-reloc; }; + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <2>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + refclk50mhz: refclk50mhz { compatible = "fixed-clock"; #clock-cells = <0>; @@ -74,6 +87,14 @@ }; }; + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0x00 0xff802624 0x00 0x04>, + <0x00 0xff802748 0x00 0x04>; + }; + ubus { compatible = "simple-bus"; #address-cells = <2>; @@ -112,97 +133,95 @@ wdt = <&wdt1>; }; - gpio0: gpio-controller@0xff800500 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800500 0x0 0x4>, - <0x0 0xff800520 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; - - status = "disabled"; - }; + hsspi: spi-controller@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; - gpio1: gpio-controller@0xff800504 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800504 0x0 0x4>, - <0x0 0xff800524 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; + reg = <0x0 0xff801000 0x0 0x600>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <100000000>; + num-cs = <8>; status = "disabled"; }; - gpio2: gpio-controller@0xff800508 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800508 0x0 0x4>, - <0x0 0xff800528 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0x0 0xff801800 0x0 0x400>, + <0x0 0xff802000 0x0 0x10>, + <0x0 0xff801c00 0x0 0x200>; + parameter-page-big-endian = <0>; status = "disabled"; }; - gpio3: gpio-controller@0xff80050c { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff80050c 0x0 0x4>, - <0x0 0xff80052c 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; - - status = "disabled"; + sdhci: sdhci@ff858000 { + compatible = "brcm,bcm63xx-sdhci", + "brcm,sdhci-brcmbca"; + reg-names = "sdhci-base", "sdhci-boot"; + reg = <0x0 0xff858000 0x0 0x100>, + <0x0 0xff858200 0x0 0x40>; + bus-width = <8>; + u-boot,dm-pre-reloc; }; - gpio4: gpio-controller@0xff800510 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800510 0x0 0x4>, - <0x0 0xff800530 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; - - status = "disabled"; + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0x0 0xff800b80 0x0 0x28>; + u-boot,dm-pre-reloc; }; - gpio5: gpio-controller@0xff800514 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800514 0x0 0x4>, - <0x0 0xff800534 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; - - status = "disabled"; + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0x0 0xff800554 0x0 0x14>; + gpio-mux = <5>; }; - gpio6: gpio-controller@0xff800518 { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff800518 0x0 0x4>, - <0x0 0xff800538 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; + gpioc: gpioc { + compatible = "brcm,bca-gpio"; + gpio-controller; + #gpio-cells = <2>; + reg = <0x0 0xff800500 0x0 0x20>, <0x0 0xff800520 0x0 0x20>; + reg-names = "gpio-dir", "gpio-data"; + ngpios = <118>; + gpio-ranges = <&pinctrl 0 0 118>; + }; - status = "disabled"; + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x0 0x8000c200 0x0 0x100>; + status = "okay"; }; - gpio7: gpio-controller@0xff80051c { - compatible = "brcm,bcm6345-gpio"; - reg = <0x0 0xff80051c 0x0 0x4>, - <0x0 0xff80053c 0x0 0x4>; - gpio-controller; - #gpio-cells = <2>; + usb0: usb@8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x0 0x8000c300 0x0 0x100>; + }; - status = "disabled"; + usb1: usb@8000c500 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x0 0x8000c500 0x0 0x100>; }; - nand: nand-controller@ff801800 { - compatible = "brcm,nand-bcm6858", - "brcm,brcmnand-v5.0", - "brcm,brcmnand"; - reg-names = "nand", "nand-int-base", "nand-cache"; - reg = <0x0 0xff801800 0x0 0x180>, - <0x0 0xff802000 0x0 0x10>, - <0x0 0xff801c00 0x0 0x200>; - parameter-page-big-endian = <0>; + usb_ohci0: usb_ohci@8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x0 0x8000c400 0x0 0x100>; + }; - status = "disabled"; + usb_ohci1: usb_ohci@8000c600 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x0 0x8000c600 0x0 0x100>; }; }; }; diff --git a/arch/arm/dts/bcm947622.dts b/arch/arm/dts/bcm947622.dts new file mode 100644 index 0000000000..1848389095 --- /dev/null +++ b/arch/arm/dts/bcm947622.dts @@ -0,0 +1,222 @@ +/dts-v1/; + +#include "bcm47622-pinctrl.dtsi" + +/ { + model = "Broadcom bcm947622"; + compatible = "broadcom,bcm947622", "brcm,brcm-v7"; + #address-cells = <0x1>; + #size-cells = <0x1>; + + aliases { + serial0 = &uart0; + spi1 = &hsspi; + }; + + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x08000000>; + }; + + clocks { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + u-boot,dm-pre-reloc; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <1>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + ubus@ff800000 { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + u-boot,dm-pre-reloc; + + uart0: serial@ff812000 { + u-boot,dm-pre-reloc; + compatible = "arm,pl011", "arm,primecell"; + reg = <0xff812000 0x1000>; + clock = <50000000>; + status = "okay"; + }; + + wdt1: watchdog@ff800480 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff800480 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt2: watchdog@ff8004c0 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff8004c0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + hsspi: spi@ff801000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + u-boot,dm-pre-reloc; + compatible = "brcm,bcm6328-hsspi"; + reg = <0xff801000 0x600>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <100000000>; + num-cs = <0x8>; + cs-gpios = <0x0 0x0>; + status = "disabled"; + }; + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0xff801800 0x400>, + <0xff802000 0x10>, + <0xff801c00 0x200>; + parameter-page-big-endian = <0>; + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; + }; + + sdhci: sdhci@ff810000 { + compatible = "brcm,bcm63xx-sdhci", + "brcm,sdhci-brcmbca"; + reg-names = "sdhci-base", "sdhci-boot"; + reg = <0xff810000 0x100>, + <0xff810200 0x40>; + bus-width = <8>; + u-boot,dm-pre-reloc; + }; + + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0xff800b80 0x28>; + u-boot,dm-pre-reloc; + }; + sysport: systemport@0x80400000 { + compatible = "brcm,bcmbca-systemport-v2.0"; + sphy-available=<0x01>; + reg-names = + "systemport-rbuf-base", + "systemport-rdma-base", + "systemport-tdma-base", + "systemport-umac-base", + "systemport-topctrl-base", + "systemport-switchmdio-base", + "sphy-ctrl", + "phy-test-ctrl"; + reg = <0x80400400 0x14>, + <0x80402000 0x1300>, + <0x80404000 0x8ff>, + <0x80400800 0x350>, + <0x80400000 0x40>, + <0x80411300 0x10>, + <0x804110c0 0x04>, + <0x804110bc 0x04>; + phy_base = <0x8>; + phy_wkard_timeout = <25000>; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0xff802628 0x04>, + <0xff85a03c 0x04>; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0xff800554 0x14>; + }; + + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x8000c200 0x100>; + status = "okay"; + }; + + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c300 0x100>; + status = "okay"; + pinctrl-0 = <&usb0_pwr_pins>; + pinctrl-names="default"; + }; + + usb1: usb@0x8000c500 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c500 0x100>; + status = "okay"; + pinctrl-0 = <&usb1_pwr_pins>; + pinctrl-names="default"; + }; + + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c400 0x100>; + }; + + usb_ohci1: usb_ohci@0x8000c600 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c600 0x100>; + }; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <100000000>; + }; +}; diff --git a/arch/arm/dts/bcm947622ref1sg.dts b/arch/arm/dts/bcm947622ref1sg.dts new file mode 100644 index 0000000000..4bbbc24fd2 --- /dev/null +++ b/arch/arm/dts/bcm947622ref1sg.dts @@ -0,0 +1,228 @@ + +/dts-v1/; + +#include "bcm47622-pinctrl.dtsi" + +/ { + model = "Broadcom bcm947622"; + compatible = "broadcom,bcm947622" ,"bcmbrcm,brcm-v7"; + #address-cells = <0x1>; + #size-cells = <0x1>; + + aliases { + serial0 = &uart0; + spi0 = &hsspi; + }; + + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x20000000>; + }; + + clocks { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + u-boot,dm-pre-reloc; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <1>; + clock-div = <1>; + }; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + ubus@ff800000 { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + u-boot,dm-pre-reloc; + + uart0: serial@ff812000 { + u-boot,dm-pre-reloc; + compatible = "arm,pl011", "arm,primecell"; + reg = <0xff812000 0x1000>; + clock = <50000000>; + status = "okay"; + }; + + wdt1: watchdog@ff800480 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff800480 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt2: watchdog@ff8004c0 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff8004c0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + hsspi: spi@ff801000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + compatible = "brcm,bcm6328-hsspi"; + reg = <0xff801000 0x600>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <67000000>; + num-cs = <0x8>; + cs-gpios = <0x0 0x0>; + status = "okay"; + }; + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0xff801800 0x400>, + <0xff802000 0x10>, + <0xff801c00 0x200>; + parameter-page-big-endian = <0>; + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + nand-ecc-strength = <4>; + nand-ecc-step-size = <512>; + brcm,nand-oob-sector-size = <16>; + }; + }; + + sdhci: sdhci@ff810000 { + compatible = "brcm,bcm63xx-sdhci", + "brcm,sdhci-brcmbca"; + reg-names = "sdhci-base", "sdhci-boot"; + reg = <0xff810000 0x100>, + <0xff810200 0x40>; + bus-width = <8>; + u-boot,dm-pre-reloc; + }; + sysport: systemport@0x80400000 { + compatible = "brcm,bcmbca-systemport-v2.0"; + sphy-available=<0x01>; + reg-names = + "systemport-rbuf-base", + "systemport-rdma-base", + "systemport-tdma-base", + "systemport-umac-base", + "systemport-topctrl-base", + "systemport1-rbuf-base", + "systemport1-rdma-base", + "systemport1-tdma-base", + "systemport1-umac-base", + "systemport1-topctrl-base", + "systemport-switchmdio-base", + "sphy-ctrl", + "phy-test-ctrl"; + reg = <0x80400400 0x14>, + <0x80402000 0x1300>, + <0x80404000 0x8ff>, + <0x80400800 0x350>, + <0x80400000 0x40>, + <0x80500400 0x14>, + <0x80502000 0x1300>, + <0x80504000 0x8ff>, + <0x80500800 0x350>, + <0x80500000 0x40>, + <0x80411300 0x10>, + <0x804110c0 0x04>, + <0x804110bc 0x04>; + phy_base = <0x8>; + phy_wkard_timeout = <25000>; + ethsw = <&switch_ext>; + }; + + switch_ext:switch_ext { + compatible = "brcm,bcmbca-extsw"; + pinctrl-0 = <&xmii_1_pins>; + pinctrl-names="default"; + reg-names ="systemport-serdes-cntrl"; + reg = <0x804110a8 0x8>; + extswsgmii_addr = <0x6>; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0xff800554 0x14>; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0x00 0xff802628 0x00 0x04>, + <0x00 0xff85a03c 0x00 0x04>; + }; + + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x8000c200 0x100>; + pwron-bias-pull-up; + status = "okay"; + }; + + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c300 0x100>; + status = "okay"; + pinctrl-0 = <&usb0_pwr_pins>; + pinctrl-names="default"; + }; + + usb1: usb@0x8000c500 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c500 0x100>; + status = "okay"; + pinctrl-0 = <&usb1_pwr_pins>; + pinctrl-names="default"; + }; + + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c400 0x100>; + }; + + usb_ohci1: usb_ohci@0x8000c600 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c600 0x100>; + }; + }; + +}; diff --git a/arch/arm/dts/bcm94908.dts b/arch/arm/dts/bcm94908.dts new file mode 100644 index 0000000000..41f27169fb --- /dev/null +++ b/arch/arm/dts/bcm94908.dts @@ -0,0 +1,142 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2019 Philippe Reynes + */ + +/dts-v1/; + +#include "bcm4908.dtsi" + +/ { + model = "Broadcom bcm94908"; + compatible = "broadcom,bcm94908", "brcm,bcm4908"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x0 0x0 0x08000000>; + }; +}; + +&uart0 { + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&nand { + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <100000000>; + }; +}; + +&leds { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + brcm,serial-led-en-pol; + brcm,serial-led-data-ppol; + + led@16 { + reg = <16>; + label = "red:dsl2"; + }; + + led@17 { + reg = <17>; + label = "green:dsl1"; + }; + + led@18 { + reg = <18>; + label = "green:fxs2"; + }; + + led@19 { + reg = <19>; + label = "green:fxs1"; + }; + + led@26 { + reg = <26>; + label = "green:wan1_act"; + }; + + led@27 { + reg = <27>; + label = "green:wps"; + }; + + led@28 { + reg = <28>; + active-low; + label = "green:aggregate_act"; + }; + + led@29 { + reg = <29>; + label = "green:aggregate_link"; + }; +}; + +&usb0 { + status = "okay"; + pinctrl-0 = <&usb0a_pwrflt_pins &usb0a_pwron_pins>; + pinctrl-names="default"; +}; + +&switchsf2 { + status = "okay"; + phy_base = <0x8>; + ports { + port0@0 { + phy-handle = <&gphy8>; + }; + port1@1 { + phy-handle = <&gphy9>; + }; + port2@2 { + phy-handle = <&gphya>; + }; + port3@3 { + phy-handle = <&gphyb>; + }; + }; +}; + +&hsspi { + status = "okay"; + spi-nor@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <50000000>; + u-boot,dm-pre-reloc; + }; +}; + diff --git a/arch/arm/dts/bcm94912.dts b/arch/arm/dts/bcm94912.dts new file mode 100644 index 0000000000..cee5b94cad --- /dev/null +++ b/arch/arm/dts/bcm94912.dts @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 Broadcom Ltd. + */ + +/dts-v1/; + +#include "bcm4912.dtsi" + +/ { + model = "Broadcom bcm94912"; + compatible = "broadcom,bcm94912", "brcm,bcm4912"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x0 0x0 0x08000000>; + }; + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0x0 0xff802628 0x0 0x04>, + <0x0 0xff85a01c 0x0 0x04>; + }; +}; + +&uart0 { + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <100000000>; + }; +}; + +&nand { + status = "okay"; + write-protect = <1>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +}; + +/* FIXME! +&rgmii { + status = "okay"; +}; +*/ + +&mdio { + phy1:1 { + status = "okay"; + }; + + phy2:2 { + status = "okay"; + }; + + phy3:3 { + status = "okay"; + }; + + phy4:4 { + status = "okay"; + }; + + /* FIXME + phy_rgmii: phy_rgmii { + reg = <7>; + tx-delay; + status = "okay"; + }; + + phy_ext_serdes: ext_serdes { + reg = <0x1e>; + phy-type = "EXT1"; + enet-phy-lane-swap; + status = "okay"; + }; + + phy_serdes: serdes { + phy-handle = <&phy_ext_serdes>; + status = "okay"; + }; */ +}; + +&switch0 { + ports { + port0@0 { + status = "okay"; + }; + + port1@1 { + status = "okay"; + }; + + port2@2 { + status = "okay"; + }; + + port3@3 { + status = "okay"; + }; + }; +}; + diff --git a/arch/arm/dts/bcm963138.dts b/arch/arm/dts/bcm963138.dts new file mode 100644 index 0000000000..7969880102 --- /dev/null +++ b/arch/arm/dts/bcm963138.dts @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2019 Broadcom Ltd. + */ + + +/dts-v1/; + +#include "bcm63138.dtsi" + +/ { + model = "Broadcom bcm963138"; + compatible = "broadcom,bcm963138", "brcm,bcm963138"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + tick-timer = &timer0; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x08000000>; + }; +}; + +&uart0 { + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&timer0 { + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&nand { + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <100000000>; + }; +}; + +&usb0 { + status = "okay"; + pinctrl-0 = <&usb0a_pwrflt_pins &usb0a_pwron_pins>; + pinctrl-names = "default"; +}; + +&switchsf2 { + status = "okay"; + phy_base = <0x8>; + ports { + port0@0 { + phy-handle = <&gphy8>; + }; + port1@1 { + phy-handle = <&gphy9>; + }; + port2@2 { + phy-handle = <&gphya>; + }; + port3@3 { + phy-handle = <&gphyb>; + }; + }; +}; + diff --git a/arch/arm/dts/bcm963146.dts b/arch/arm/dts/bcm963146.dts new file mode 100644 index 0000000000..bc81d1dff2 --- /dev/null +++ b/arch/arm/dts/bcm963146.dts @@ -0,0 +1,142 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2019 Philippe Reynes + */ + +/dts-v1/; + +#include "bcm63146.dtsi" + +/ { + model = "Broadcom bcm963146"; + compatible = "broadcom,bcm963146", "brcm,bcm63146"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x0 0x0 0x08000000>; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0x0 0xff802628 0x0 0x04>, + <0x0 0xff85a01c 0x0 0x04>; + }; + + +}; + +&uart0 { + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <100000000>; + }; +}; + +&nand { + status = "okay"; + write-protect = <1>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +}; + +/* FIXME! +&rgmii { + status = "okay"; +}; +*/ + +&mdio { + phy1:1 { + status = "okay"; + }; + + phy2:2 { + status = "okay"; + }; + + phy3:3 { + status = "okay"; + }; + + phy4:4 { + status = "okay"; + }; + + phy5:5 { + status = "okay"; + }; + + /* FIXME + phy_rgmii: phy_rgmii { + tx-delay; + status = "okay"; + }; + + phy_ext_serdes: ext_serdes { + reg = <0x1e>; + phy-type = "EXT1"; + enet-phy-lane-swap; + status = "okay"; + }; + + phy_serdes: serdes { + phy-handle = <&phy_ext_serdes>; + status = "okay"; + }; */ +}; + +&switch0 { + ports { + port0@0 { + status = "okay"; + }; + + port1@1 { + status = "okay"; + }; + + port2@2 { + status = "okay"; + }; + + port3@3 { + status = "okay"; + }; + + port4@4 { + status = "okay"; + }; + +/* FIXME + port5@5 { + status = "okay"; + }; +*/ + }; +}; + diff --git a/arch/arm/dts/bcm963148.dts b/arch/arm/dts/bcm963148.dts new file mode 100644 index 0000000000..0990da7e0f --- /dev/null +++ b/arch/arm/dts/bcm963148.dts @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2019 Broadcom Ltd. + */ + + +/dts-v1/; + +#include "bcm63148.dtsi" + +/ { + model = "Broadcom bcm963148"; + compatible = "broadcom,bcm963148", "brcm,bcm963148"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + tick-timer = &timer0; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x08000000>; + }; +}; + +&uart0 { + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&timer0 { + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&nand { + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +}; + +/* usb0 { + status = "okay"; + pinctrl-0 = <&usb0a_pwrflt_pins &usb0a_pwron_pins>; + pinctrl-names = "default"; +}; */ + +&switchsf2 { + status = "okay"; + phy_base = <0x8>; + ports { + port0@0 { + phy-handle = <&gphy8>; + }; + port1@1 { + phy-handle = <&gphy9>; + }; + port2@2 { + phy-handle = <&gphya>; + }; + port3@3 { + phy-handle = <&gphyb>; + }; + }; +}; + diff --git a/arch/arm/dts/bcm963158.dts b/arch/arm/dts/bcm963158.dts index 85659440da..f1a6adc585 100644 --- a/arch/arm/dts/bcm963158.dts +++ b/arch/arm/dts/bcm963158.dts @@ -21,7 +21,7 @@ memory { device_type = "memory"; - reg = <0x0 0x0 0x0 0x40000000>; + reg = <0x0 0x0 0x0 0x08000000>; }; }; @@ -30,38 +30,6 @@ status = "okay"; }; -&gpio0 { - status = "okay"; -}; - -&gpio1 { - status = "okay"; -}; - -&gpio2 { - status = "okay"; -}; - -&gpio3 { - status = "okay"; -}; - -&gpio4 { - status = "okay"; -}; - -&gpio5 { - status = "okay"; -}; - -&gpio6 { - status = "okay"; -}; - -&gpio7 { - status = "okay"; -}; - &nand { status = "okay"; write-protect = <0>; @@ -71,9 +39,18 @@ nandcs@0 { compatible = "brcm,nandcs"; reg = <0>; - nand-ecc-strength = <4>; - nand-ecc-step-size = <512>; - brcm,nand-oob-sector-size = <16>; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <100000000>; }; }; @@ -125,3 +102,34 @@ label = "green:aggregate_link"; }; }; + +&usb0 { + status = "okay"; + pinctrl-0 = <&usb0a_pwrflt_pins &usb0a_pwron_pins>; + pinctrl-names="default"; +}; + +&usb1 { + status = "okay"; + pinctrl-0 = <&usb1a_pwrflt_pins &usb1a_pwron_pins>; + pinctrl-names="default"; +}; + +&switchsf2 { + status = "okay"; + phy_base = <0x8>; + ports { + port0@0 { + phy-handle = <&gphy8>; + }; + port1@1 { + phy-handle = <&gphy9>; + }; + port2@2 { + phy-handle = <&gphya>; + }; + port3@3 { + phy-handle = <&gphyb>; + }; + }; +}; diff --git a/arch/arm/dts/bcm963178.dts b/arch/arm/dts/bcm963178.dts new file mode 100644 index 0000000000..aba154cd0d --- /dev/null +++ b/arch/arm/dts/bcm963178.dts @@ -0,0 +1,252 @@ +/dts-v1/; + +#include "bcmbca-sf2net.dtsi" +#include "bcm63178-pinctrl.dtsi" + +/ { + model = "Broadcom bcm963178"; + compatible = "broadcom,bcm963178", "brcm,brcm-v7"; + #address-cells = <0x1>; + #size-cells = <0x1>; + + aliases { + serial0 = &uart0; + spi1 = &hsspi; + }; + + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x08000000>; + }; + clocks { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + u-boot,dm-pre-reloc; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <1>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + ubus@ff800000 { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + u-boot,dm-pre-reloc; + + hsspi: hsspi@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <0x1>; + #size-cells = <0x0>; + u-boot,dm-pre-reloc; + + reg = <0xff801000 0x1000>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <100000000>; + num-cs = <8>; + status = "okay"; + }; + + uart0: serial@ff812000 { + u-boot,dm-pre-reloc; + compatible = "arm,pl011", "arm,primecell"; + reg = <0xff812000 0x1000>; + clock = <50000000>; + status = "okay"; + }; + + wdt1: watchdog@ff800480 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff800480 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt2: watchdog@ff8004c0 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff8004c0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0xff801800 0x400>, + <0xff802000 0x10>, + <0xff801c00 0x200>; + parameter-page-big-endian = <0>; + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; + }; + + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0xff800b80 0x28>; + u-boot,dm-pre-reloc; + }; + sysport: systemport@0x80490000 { + compatible = "brcm,bcmbca-systemport-v2.0"; + qphy-avaiable=<0x01>; + sphy-available=<0x01>; + reg-names = "systemport-rbuf-base", "systemport-rdma-base", + "systemport-tdma-base", + "systemport-gib-base", + "systemport-umac-base", + "systemport-topctrl-base"; + reg = <0x80490400 0x14>, + <0x80492000 0x1060>, + <0x80494000 0x650>, + <0x80498000 0x10>, + <0x00000000 0x00>, + <0x80490000 0x10>; + ethsw = <&switchsf2>; + }; + + switchsf2: sf2@80400000 { + compatible = "brcm,bcmbca-sf2"; + phy_base = <0x8>; + phy_wkard_timeout = <25000>; + reg-names = "switchcore-base", + "switchreg-base", + "switchmdio-base", + "qphy-ctrl", + "sphy-ctrl", + "phy-test-ctrl"; + + reg = <0x80400000 0x72724>, + <0x80480000 0x458>, + <0x804805c0 0x10>, + <0x8048001c 0x04>, + <0x80480024 0x04>, + <0x80480018 0x04>; + ports { + port0@0 { + phy-handle = <&gphy8>; + }; + port1@1 { + phy-handle = <&gphy9>; + }; + port2@2 { + phy-handle = <&gphya>; + }; + port3@3 { + phy-handle = <&gphyb>; + }; + }; + }; + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0xff802628 0x04>, + <0xff85a03c 0x04>; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0xff800554 0x14>; + }; + + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x8000c200 0x100>; + status = "okay"; + }; + + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c300 0x100>; + status = "okay"; + pinctrl-0 = <&usb0_pwr_pins>; + pinctrl-names="default"; + }; + + usb1: usb@0x8000c500 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c500 0x100>; + status = "okay"; + pinctrl-0 = <&usb1_pwr_pins>; + pinctrl-names="default"; + }; + + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c400 0x100>; + }; + + usb_ohci1: usb_ohci@0x8000c600 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c600 0x100>; + }; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <100000000>; + }; +}; + +&hsspi { + status = "okay"; + spi-nor@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + spi-max-frequency = <50000000>; + u-boot,dm-pre-reloc; + }; +}; + + diff --git a/arch/arm/dts/bcm96756.dts b/arch/arm/dts/bcm96756.dts new file mode 100644 index 0000000000..6ea73d6be8 --- /dev/null +++ b/arch/arm/dts/bcm96756.dts @@ -0,0 +1,236 @@ +/dts-v1/; + +#include "bcmbca-sf2net.dtsi" +#include "bcm6756-pinctrl.dtsi" + +/ { + model = "Broadcom bcm96756"; + compatible = "broadcom,bcm96756", "brcm,brcm-v7"; + #address-cells = <0x1>; + #size-cells = <0x1>; + + aliases { + serial0 = &uart0; + spi1 = &hsspi; + }; + + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x08000000>; + }; + + clocks { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + u-boot,dm-pre-reloc; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <1>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + ubus@ff800000 { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + u-boot,dm-pre-reloc; + + uart0: serial@ff812000 { + u-boot,dm-pre-reloc; + compatible = "arm,pl011", "arm,primecell"; + reg = <0xff812000 0x1000>; + clock = <50000000>; + status = "okay"; + }; + + wdt1: watchdog@ff800480 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff800480 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt2: watchdog@ff8004c0 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff8004c0 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + hsspi: spi@ff801000 { + #address-cells = <0x1>; + #size-cells = <0x0>; + u-boot,dm-pre-reloc; + compatible = "brcm,bcm6328-hsspi"; + reg = <0xff801000 0x600>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <100000000>; + num-cs = <0x8>; + cs-gpios = <0x0 0x0>; + status = "disabled"; + }; + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", + "brcm,brcmnand-v7.1", + "brcm,brcmnand"; + reg-names = "nand", "nand-int-base", "nand-cache"; + reg = <0xff801800 0x400>, + <0xff802000 0x10>, + <0xff801c00 0x200>; + parameter-page-big-endian = <0>; + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; + }; + + sdhci: sdhci@ff810000 { + compatible = "brcm,bcm63xx-sdhci", + "brcm,sdhci-brcmbca"; + reg-names = "sdhci-base", "sdhci-boot"; + reg = <0xff810000 0x100>, + <0xff810200 0x40>; + bus-width = <8>; + u-boot,dm-pre-reloc; + }; + + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0xff800b80 0x28>; + u-boot,dm-pre-reloc; + }; + sysport: systemport@0x80490000 { + compatible = "brcm,bcmbca-systemport-v2.0"; + reg-names = "systemport-rbuf-base", "systemport-rdma-base", + "systemport-tdma-base", + "systemport-gib-base", + "systemport-umac-base", + "systemport-topctrl-base"; + reg = <0x80490400 0x14>, + <0x80492000 0x1258>, + <0x80494000 0x9ac>, + <0x80498000 0x18>, + <0x00000000 0x00>, + <0x80490000 0x34>; + ethsw = <&switchsf2>; + }; + + switchsf2: sf2@80400000 { + compatible = "brcm,bcmbca-sf2"; + phy_base = <0x8>; + phy_wkard_timeout = <25000>; + reg-names = "switchcore-base", + "switchreg-base", + "switchmdio-base", + "sphy-ctrl", + "phy-test-ctrl"; + + reg = <0x80400000 0x72724>, + <0x80480000 0x444>, + <0x804805c0 0x10>, + <0x80480024 0x04>, + <0x80480018 0x04>; + ports { + port0@0 { + phy-handle = <&phy_ge>; + }; + }; + }; + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0xff802628 0x04>, + <0xff85a03c 0x04>; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0xff800554 0x14>; + }; + + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x8000c200 0x100>; + status = "okay"; + }; + + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c300 0x100>; + status = "okay"; + pinctrl-0 = <&usb0_pwr_pins>; + pinctrl-names="default"; + }; + + usb1: usb@0x8000c500 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c500 0x100>; + status = "okay"; + pinctrl-0 = <&usb1_pwr_pins>; + pinctrl-names="default"; + }; + + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c400 0x100>; + }; + + usb_ohci1: usb_ohci@0x8000c600 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c600 0x100>; + }; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <100000000>; + }; +}; diff --git a/arch/arm/dts/bcm96846.dts b/arch/arm/dts/bcm96846.dts new file mode 100644 index 0000000000..3b402cb9a1 --- /dev/null +++ b/arch/arm/dts/bcm96846.dts @@ -0,0 +1,245 @@ +/dts-v1/; + + + +/ { + model = "Broadcom-v7"; + compatible = "brcm,brcm-v7"; + #address-cells = <0x1>; + #size-cells = <0x1>; + + aliases { + serial0 = &uart0; + }; + + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x08000000>; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0xff80263c 0x04>, + <0xff85a03c 0x04>; + }; + + clocks { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + u-boot,dm-pre-reloc; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <2>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + }; + + ubus@ff800000 { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + u-boot,dm-pre-reloc; + + uart0: serial@ff800640 { + compatible = "brcm,bcm6345-uart"; + reg = <0xff800640 0x18>; + clocks = <&periph_osc>; + status = "disabled"; + }; + + wdt1: watchdog@ff802780 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff800480 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt2: watchdog@ff8027c0 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff8004c0 0x14>; + clocks = <&refclk50mhz>; + }; + + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + hsspi: hsspi@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <0x1>; + #size-cells = <0x0>; + u-boot,dm-pre-reloc; + + reg = <0x0 0xff801000 0x0 0x1000>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <67000000>; + num-cs = <8>; + status = "disabled"; + }; + + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", "brcm,brcmnand-v7.1"; + reg-names = "nand", "nand-int-base"; + reg = <0xff801800 0x600>, <0xff802000 0x10>; + parameter-page-big-endian = <0>; + status = "disabled"; + }; + + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0xff800b80 0x28>; + u-boot,dm-pre-reloc; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0xff800554 0x14>; + gpio-mux = <4>; + }; + + gpioc: gpioc { + compatible = "brcm,bca-gpio"; + gpio-controller; + #gpio-cells = <2>; + reg = <0x0 0xff800500 0x0 0x20>, <0x0 0xff800520 0x0 0x20>; + reg-names = "gpio-dir", "gpio-data"; + ngpios = <79>; + gpio-ranges = <&pinctrl 0 0 79>; + }; + + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x8000c200 0x100>; + status = "okay"; + }; + + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c300 0x100>; + }; + + usb1: usb@0x8000c500 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c500 0x100>; + }; + + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c400 0x100>; + }; + + usb_ohci1: usb_ohci@0x8000c600 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c600 0x100>; + }; + }; +}; + +&uart0 { + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&nand { + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <67000000>; + }; +}; + +/* &hsspi { + status = "okay"; + spi-flash@0 { + compatible = "spi-flash"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + spi-max-frequency = <20000000>; + }; +}; */ + +/* pinmux */ +/ { + usb0a_pwrflt_pins: usb0a_pwrflt_pinmux { + pins = <74>; + function = <1>; + }; + + usb0a_pwron_pins: usb0a_pwron_pinmux { + pins = <75>; + function = <1>; + }; + + usb1a_pwrflt_pins: usb1a_pwrflt_pinmux { + pins = <76>; + function = <1>; + }; + + usb1a_pwron_pins: usb1a_pwron_pinmux { + pins = <77>; + function = <1>; + }; +}; + +&usb0 { + status = "okay"; + pinctrl-0 = <&usb0a_pwrflt_pins &usb0a_pwron_pins>; + pinctrl-names="default"; +}; + +&usb1 { + status = "okay"; + pinctrl-0 = <&usb1a_pwrflt_pins &usb1a_pwron_pins>; + pinctrl-names="default"; +}; diff --git a/arch/arm/dts/bcm96855.dts b/arch/arm/dts/bcm96855.dts new file mode 100644 index 0000000000..5af36e30e5 --- /dev/null +++ b/arch/arm/dts/bcm96855.dts @@ -0,0 +1,136 @@ +/dts-v1/; + + + +/ { + model = "Broadcom-v7"; + compatible = "brcm,brcm-v7"; + #address-cells = <0x1>; + #size-cells = <0x1>; + + aliases { + serial0 = &uart0; + }; + + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x08000000>; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0xff802628 0x04>, + <0xff85a018 0x04>; + }; + + clocks { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + u-boot,dm-pre-reloc; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <1>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + ubus@ff800000 { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + u-boot,dm-pre-reloc; + + uart0: serial@ff812000 { + u-boot,dm-pre-reloc; + compatible = "arm,pl011", "arm,primecell"; + reg = <0xff812000 0x1000>; + clock = <50000000>; + status = "okay"; + }; + + hsspi: hsspi@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <0x1>; + #size-cells = <0x0>; + u-boot,dm-pre-reloc; + + reg = <0xff801000 0x1000>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <50000000>; + num-cs = <8>; + status = "disabled"; + }; + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", "brcm,brcmnand-v7.1"; + reg-names = "nand", "nand-int-base"; + reg = <0xff801800 0x600>, <0xff802000 0x10>; + parameter-page-big-endian = <0>; + status = "disabled"; + }; + + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0xff800b80 0x28>; + u-boot,dm-pre-reloc; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0xff800554 0x14>; + }; + }; +}; + +&nand { + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <50000000>; + }; +}; + + diff --git a/arch/arm/dts/bcm96856.dts b/arch/arm/dts/bcm96856.dts new file mode 100644 index 0000000000..90f9d0c904 --- /dev/null +++ b/arch/arm/dts/bcm96856.dts @@ -0,0 +1,140 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2018 Philippe Reynes + * + * Copyright 2019 Broadcom Ltd. + */ + +/dts-v1/; + +#include "bcm6856.dtsi" + +/ { + model = "Broadcom bcm96856"; + compatible = "broadcom,bcm96856", "brcm,bcm6856"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x0 0x0 0x08000000>; + }; +}; + +&uart0 { + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&nand { + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <100000000>; + }; +}; + +&leds { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + brcm,serial-led-en-pol; + brcm,serial-led-data-ppol; + + led@2 { + reg = <2>; + label = "green:inet"; + }; + + led@5 { + reg = <5>; + label = "red:alarm"; + }; + + led@8 { + reg = <8>; + label = "green:wlan_link"; + }; + + led@11 { + reg = <11>; + label = "green:fxs1"; + }; + + led@14 { + reg = <14>; + label = "green:fxs2"; + }; + + led@15 { + reg = <15>; + label = "green:usb0"; + }; + + led@16 { + reg = <16>; + label = "green:usb1"; + }; + + led@17 { + reg = <17>; + label = "green:wps"; + }; +}; + +/* pinmux */ +/ { + usb0a_pwrflt_pins: usb0a_pwrflt_pinmux { + pins = <76>; + function = <1>; + }; + + usb0a_pwron_pins: usb0a_pwron_pinmux { + pins = <77>; + function = <1>; + }; + + usb1a_pwrflt_pins: usb1a_pwrflt_pinmux { + pins = <78>; + function = <1>; + }; + + usb1a_pwron_pins: usb1a_pwron_pinmux { + pins = <79>; + function = <1>; + }; +}; + +&usb0 { + status = "okay"; + pinctrl-0 = <&usb0a_pwrflt_pins &usb0a_pwron_pins>; + pinctrl-names="default"; +}; + +&usb1 { + status = "okay"; + pinctrl-0 = <&usb1a_pwrflt_pins &usb1a_pwron_pins>; + pinctrl-names="default"; +}; diff --git a/arch/arm/dts/bcm96858.dts b/arch/arm/dts/bcm96858.dts new file mode 100644 index 0000000000..3909317f14 --- /dev/null +++ b/arch/arm/dts/bcm96858.dts @@ -0,0 +1,140 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2018 Philippe Reynes + * + * Copyright 2019 Broadcom Ltd. + */ + +/dts-v1/; + +#include "bcm6858.dtsi" + +/ { + model = "Broadcom bcm96858"; + compatible = "broadcom,bcm96858", "brcm,bcm6858"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x0 0x0 0x08000000>; + }; +}; + +&uart0 { + u-boot,dm-pre-reloc; + status = "okay"; +}; + +&nand { + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <100000000>; + }; +}; + +&leds { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + brcm,serial-led-en-pol; + brcm,serial-led-data-ppol; + + led@2 { + reg = <2>; + label = "green:inet"; + }; + + led@5 { + reg = <5>; + label = "red:alarm"; + }; + + led@8 { + reg = <8>; + label = "green:wlan_link"; + }; + + led@11 { + reg = <11>; + label = "green:fxs1"; + }; + + led@14 { + reg = <14>; + label = "green:fxs2"; + }; + + led@15 { + reg = <15>; + label = "green:usb0"; + }; + + led@16 { + reg = <16>; + label = "green:usb1"; + }; + + led@17 { + reg = <17>; + label = "green:wps"; + }; +}; + +/* pinmux */ +/ { + usb0a_pwrflt_pins: usb0a_pwrflt_pinmux { + pins = <113>; + function = <1>; + }; + + usb0a_pwron_pins: usb0a_pwron_pinmux { + pins = <114>; + function = <1>; + }; + + usb1a_pwrflt_pins: usb1a_pwrflt_pinmux { + pins = <115>; + function = <1>; + }; + + usb1a_pwron_pins: usb1a_pwron_pinmux { + pins = <116>; + function = <1>; + }; +}; + +&usb0 { + status = "okay"; + pinctrl-0 = <&usb0a_pwrflt_pins &usb0a_pwron_pins>; + pinctrl-names="default"; +}; + +&usb1 { + status = "okay"; + pinctrl-0 = <&usb1a_pwrflt_pins &usb1a_pwron_pins>; + pinctrl-names="default"; +}; diff --git a/arch/arm/dts/bcm968580xref.dts b/arch/arm/dts/bcm968580xref.dts index 861e9891a7..54ffba315d 100644 --- a/arch/arm/dts/bcm968580xref.dts +++ b/arch/arm/dts/bcm968580xref.dts @@ -30,38 +30,6 @@ status = "okay"; }; -&gpio0 { - status = "okay"; -}; - -&gpio1 { - status = "okay"; -}; - -&gpio2 { - status = "okay"; -}; - -&gpio3 { - status = "okay"; -}; - -&gpio4 { - status = "okay"; -}; - -&gpio5 { - status = "okay"; -}; - -&gpio6 { - status = "okay"; -}; - -&gpio7 { - status = "okay"; -}; - &nand { status = "okay"; write-protect = <0>; @@ -124,3 +92,15 @@ label = "green:wps"; }; }; + +&hsspi { + status = "okay"; + + flash: mt25@0 { + compatible = "jedec,spi-nor"; + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + spi-max-frequency = <25000000>; + }; +}; diff --git a/arch/arm/dts/bcm96878.dts b/arch/arm/dts/bcm96878.dts new file mode 100644 index 0000000000..81990c6c80 --- /dev/null +++ b/arch/arm/dts/bcm96878.dts @@ -0,0 +1,229 @@ +/dts-v1/; + + + +/ { + model = "Broadcom-v7"; + compatible = "brcm,brcm-v7"; + #address-cells = <0x1>; + #size-cells = <0x1>; + + aliases { + serial0 = &uart0; + }; + + + chosen { + stdout-path = "serial0:115200n8"; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x08000000>; + }; + + boot_state { + u-boot,dm-pre-reloc; + compatible = "brcm,bcmbca-bootstate-v2"; + reg-names = "reset_reason", "reset_status"; + reg = <0xff802628 0x04>, + <0xff85a03c 0x04>; + }; + + clocks { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + u-boot,dm-pre-reloc; + + periph_osc: periph-osc { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <200000000>; + u-boot,dm-pre-reloc; + }; + + hsspi_pll: hsspi-pll { + compatible = "fixed-factor-clock"; + #clock-cells = <0>; + clocks = <&periph_osc>; + clock-mult = <1>; + clock-div = <1>; + u-boot,dm-pre-reloc; + }; + + refclk50mhz: refclk50mhz { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <50000000>; + }; + }; + + ubus@ff800000 { + compatible = "simple-bus"; + #address-cells = <0x1>; + #size-cells = <0x1>; + u-boot,dm-pre-reloc; + + uart0: serial@ff812000 { + u-boot,dm-pre-reloc; + compatible = "arm,pl011", "arm,primecell"; + reg = <0xff812000 0x1000>; + clock = <50000000>; + status = "okay"; + }; + + wdt1: watchdog@ff800480 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff800480 0x14>; + clocks = <&refclk50mhz>; + }; + + wdt2: watchdog@ff8004c0 { + compatible = "brcm,bcm6345-wdt"; + reg = <0xff8004c0 0x14>; + clocks = <&refclk50mhz>; + }; + + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdt1>; + }; + + hsspi: hsspi@ff801000 { + compatible = "brcm,bcm6328-hsspi"; + #address-cells = <0x1>; + #size-cells = <0x0>; + u-boot,dm-pre-reloc; + + reg = <0xff801000 0x1000>; + clocks = <&hsspi_pll>, <&hsspi_pll>; + clock-names = "hsspi", "pll"; + spi-max-frequency = <50000000>; + num-cs = <8>; + status = "disabled"; + }; + + nand: nand-controller@ff801800 { + compatible = "brcm,nand-bcmbca", "brcm,brcmnand-v7.1"; + reg-names = "nand", "nand-int-base"; + reg = <0xff801800 0x600>, <0xff802000 0x10>; + parameter-page-big-endian = <0>; + status = "disabled"; + }; + + rng: rng@ff800b80 { + compatible = "brcm,iproc-rng200"; + reg = <0xff800b80 0x28>; + u-boot,dm-pre-reloc; + }; + + pinctrl: pinctrl { + compatible = "brcm,bcmbca-pinctrl"; + reg = <0xff800554 0x14>; + }; + + usb_ctrl:usb_ctrl { + compatible = "brcm,bcmbca-usb-ctrl"; + reg-names = "usb-ctrl"; + reg = <0x8000c200 0x100>; + status = "okay"; + }; + + usb0: usb@0x8000c300 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c300 0x100>; + }; + + usb1: usb@0x8000c500 { + compatible = "brcm,bcmbca-ehci"; + reg-names = "usb-ehci"; + reg = <0x8000c500 0x100>; + }; + + usb_ohci0: usb_ohci@0x8000c400 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c400 0x100>; + }; + + usb_ohci1: usb_ohci@0x8000c600 { + compatible = "brcm,bcmbca-ohci"; + reg-names = "usb-ohci"; + reg = <0x8000c600 0x100>; + }; + }; +}; + +&nand { + status = "okay"; + write-protect = <0>; + #address-cells = <1>; + #size-cells = <0>; + + nandcs@0 { + compatible = "brcm,nandcs"; + reg = <0>; + }; +}; + +&hsspi { + status = "okay"; + spi-nand { + compatible = "spi-nand"; + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + u-boot,dm-pre-reloc; + spi-max-frequency = <50000000>; + }; +}; + +/* &hsspi { + status = "okay"; + spi-flash@0 { + compatible = "spi-flash"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + spi-max-frequency = <20000000>; + } +}; */ + +/* pinmux */ +/ { + usb0a_pwrflt_pins: usb0a_pwrflt_pinmux { + pins = <66>; + function = <1>; + }; + + usb0a_pwron_pins: usb0a_pwron_pinmux { + pins = <67>; + function = <1>; + }; + + usb1a_pwrflt_pins: usb1a_pwrflt_pinmux { + pins = <68>; + function = <1>; + }; + + usb1a_pwron_pins: usb1a_pwron_pinmux { + pins = <69>; + function = <1>; + }; +}; + +&usb0 { + status = "okay"; + pinctrl-0 = <&usb0a_pwrflt_pins &usb0a_pwron_pins>; + pinctrl-names="default"; +}; + +&usb1 { + status = "okay"; + pinctrl-0 = <&usb1a_pwrflt_pins &usb1a_pwron_pins>; + pinctrl-names="default"; +}; diff --git a/arch/arm/dts/bcmbca-sf2net.dtsi b/arch/arm/dts/bcmbca-sf2net.dtsi new file mode 100644 index 0000000000..5b7853b1ec --- /dev/null +++ b/arch/arm/dts/bcmbca-sf2net.dtsi @@ -0,0 +1,42 @@ +/ { + periph { + mdio_sf2: mdio_sf2 { + compatible = "simple-bus"; + }; + serdes_sf2: serdes_sf2 { + compatible = "simple-bus"; + }; + }; +}; + +&mdio_sf2 { + #address-cells = <1>; + #size-cells = <0>; + + gphy8:8 { + reg = <0x8>; + phy-type = "EGPHY"; + }; + gphy9:9 { + reg = <0x9>; + phy-type = "EGPHY"; + }; + gphya:a { + reg = <0xa>; + phy-type = "EGPHY"; + }; + gphyb:b { + reg = <0xb>; + phy-type = "EGPHY"; + }; + gphyc:c { + reg = <0xc>; + phy-type = "EGPHY"; + }; + phy_ge:8 { + reg = <0x8>; + phy-type = "EGPHY"; + }; + +}; + diff --git a/arch/arm/include/asm/arch-bcm47622/BPCM.h b/arch/arm/include/asm/arch-bcm47622/BPCM.h new file mode 100644 index 0000000000..9507387edd --- /dev/null +++ b/arch/arm/include/asm/arch-bcm47622/BPCM.h @@ -0,0 +1,761 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef BPCM_H +#define BPCM_H + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t sw_strap:16; + } Bits; + uint32_t Reg32; +} BPCM_ID_REG; + +// types of PMB devices +enum { + kPMB_BPCM = 0, + kPMB_MIPS_PLL = 1, + kPMB_GEN_PLL = 2, + kPMB_LC_PLL = 3, + // 4..15 reserved +}; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t num_sr_bits:8; + uint32_t devType:4; // see enum above + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_CAPABILITES_REG; + +typedef union { + struct { + uint32_t pwd_alert:1; + uint32_t reserved:31; + } Bits; + uint32_t Reg32; +} BPCM_STATUS_REG; + +typedef union { + struct { + uint32_t ro_en_s:1; + uint32_t ro_en_h:1; + uint32_t ectr_en_s:1; + uint32_t ectr_en_h:1; + uint32_t thresh_en_s:1; + uint32_t thresh_en_h:1; + uint32_t continuous_s:1; + uint32_t continuous_h:1; + uint32_t reserved:4; + uint32_t valid_s:1; + uint32_t alert_s:1; + uint32_t valid_h:1; + uint32_t alert_h:1; + uint32_t interval:16; + } Bits; + uint32_t Reg32; +} BPCM_AVS_ROSC_CONTROL_REG; + +typedef union { + struct { + uint32_t thresh_lo:16; + uint32_t thresh_hi:16; + } Bits; + uint32_t Reg32; +} BPCM_AVS_ROSC_THRESHOLD; + +typedef union { + struct { + uint32_t count_s:16; + uint32_t count_h:16; + } Bits; + uint32_t Reg32; +} BPCM_AVS_ROSC_COUNT; + +typedef union { + struct { + uint32_t pwd_en:1; + uint32_t pwd_alert_sel:1; + uint32_t start:6; + uint32_t pwd_tm_en:1; + uint32_t reserved2:6; + uint32_t alert:1; + uint32_t ccfg:8; + uint32_t rsel:3; + uint32_t clr_cfg:3; + uint32_t reserved1:2; + } Bits; + uint32_t Reg32; +} BPCM_AVS_PWD_CONTROL; + +typedef union { + struct { + uint32_t tbd:32; + } Bits; + uint32_t Reg32; +} BPCM_PWD_ACCUM_CONTROL; + +typedef union { + struct { + uint32_t sr:8; + uint32_t gp:24; + } Bits; + uint32_t Reg32; +} BPCM_SR_CONTROL; + +typedef union{ + struct { + uint32_t tbd:32; + } Bits; + uint32_t Reg32; + struct { + uint32_t vdsl_arm_por_reset_n:1; + uint32_t vdsl_arm_reset_n:1; + uint32_t vdsl_arm_debug_reset_n:1; + uint32_t vdsl_arm_l2_reset_n:1; + uint32_t vdsl_arm_cdbgrstreq_en:1; + uint32_t vdsl_arm_niden_a7_b0:1; + uint32_t vdsl_arm_spniden_a7_b0:1; + uint32_t vdsl_arm_nsocdbgreset_a7:1; + uint32_t axi4_ubus4_pass_through_disable:1; + uint32_t vdsl_arm_dbgen_a7_b0:1; + uint32_t vdsl_arm_spiden_a7_b0:1; + uint32_t vdsl_arm_scratch_reg:21; + } Bits_vdsl; +} BPCM_VDSL_ARM_RST_CTL; + +typedef union { + struct { + uint32_t tbd:32; + } Bits; + uint32_t Reg32; +} BPCM_GLOBAL_CNTL; + +typedef union { + struct { + uint32_t ctl; + } Bits_sata_gp; + struct { + uint32_t iddq_bias:1; /* 0 */ + uint32_t ext_pwr_down:4; /* 1-4 */ + uint32_t force_dll_en:1; /* 5 */ + uint32_t iddq_global_pwr:1; /* 6 */ + uint32_t reserved:25; + } Bits_switch_z1_qgphy; + struct { + uint32_t iddq_bias:1; /* 0 */ + uint32_t ext_pwr_down:1; /* 1 */ + uint32_t force_dll_en:1; /* 2 */ + uint32_t iddq_global_pwd:1; /* 3 */ + uint32_t ck25_dis:1; /* 4 */ + uint32_t phy_reset:1; /* 5 */ + uint32_t reserved0:2; + uint32_t phy_ad:5; /* 8-12 */ + uint32_t reserved1:18; + uint32_t ctrl_en:1; /* 31 */ + } Bits_egphy_1port; + struct { + uint32_t iddq_bias:1; /* 0 */ + uint32_t ext_pwr_down:4; /* 1-4 */ + uint32_t force_dll_en:1; /* 5 */ + uint32_t iddq_global_pwd:1; /* 6 */ + uint32_t ck25_dis:1; /* 7 */ + uint32_t phy_reset:1; /* 8 */ + uint32_t reserved0:3; + uint32_t phy_ad:5; /* 12-16 */ + uint32_t reserved1:14; + uint32_t ctrl_en:1; /* 31 */ + } Bits_egphy_4port; + struct { + uint32_t iddq_bias:1; /* 0 */ + uint32_t ext_pwr_down:4; /* 1-4 */ + uint32_t force_dll_en:1; /* 5 */ + uint32_t iddq_global_pwr:1; /* 6 */ + uint32_t reserved0:25; /* 7-31 */ + } Bits_qgphy_cntl; + struct { + uint32_t ctl; + } Bits_vdsl_phy; + struct { + uint32_t alt_bfc_vector:12; /* 00-11 */ + uint32_t reserved0:3; + uint32_t alt_bfc_en:1; /* 15 */ + uint32_t reset_dly_cfg:2; /* 16-17 */ + uint32_t reserved1:8; + uint32_t ext_mclk_en_reset:1; /* 26 */ + uint32_t ext_mclk_en:1; /* 27 */ + uint32_t por_reset_n_ctl:1; /* 28 */ + uint32_t reset_n_ctl:1; /* 29 */ + uint32_t reserved2:1; + uint32_t clken:1; /* 31 */ + } Bits_vdsl_mips; + uint32_t Reg32; +} BPCM_MISC_CONTROL; + +typedef union { + struct { + uint32_t field; + } Bits_qgphy_status; + struct { + uint32_t alt_bfc_vector:12; /* 00-11 */ + uint32_t reserved0:3; + uint32_t alt_bfc_en:1; /* 15 */ + uint32_t reset_dly_cfg:2; /* 16-17 */ + uint32_t reserved1:8; + uint32_t ext_mclk_en_reset:1; /* 26 */ + uint32_t ext_mclk_en:1; /* 27 */ + uint32_t por_reset_n_ctl:1; /* 28 */ + uint32_t reset_n_ctl:1; /* 29 */ + uint32_t reserved2:1; + uint32_t clken:1; /* 31 */ + } Bits_vdsl_mips; /* second PHY MIPS core */ + uint32_t Reg32; +} BPCM_MISC_CONTROL2; + +typedef union { + struct { + uint32_t gphy_iddq_bias:1; /* 00 */ + uint32_t gphy_ext_pwr_down:1; /* 01 */ + uint32_t gphy_force_dll_en:1; /* 02 */ + uint32_t gphy_iddq_global_pwr:1; /* 03 */ + uint32_t serdes_iddq:1; /* 04 */ + uint32_t serdes_pwrdwn:1; /* 05 */ + uint32_t reserved0:2; /* 07:06 */ + uint32_t serdes_refclk_sel:3; /* 10:08 */ + uint32_t reserved1:5; /* 15:11 */ + uint32_t pll_clk125_250_sel:1; /* 16 */ + uint32_t pll_mux_clk_250_sel:1; /* 17 */ + uint32_t reserved2:14; /* 31:18 */ + } Bits; + uint32_t Reg32; +} BPCM_SGPHY_CNTL; + +typedef union { + struct { + uint32_t field; + } Bits; + uint32_t Reg32; +} BPCM_SGPHY_STATUS; + +typedef union { + struct { + uint32_t cpu_reset_n:8; // 07:00 R/W + uint32_t c0l2_reset:1; // 08:08 R/W + uint32_t c1l2_reset:1; // 09:09 R/W + uint32_t reserved0:6; // 15:10 R/O + uint32_t cpu_bpcm_init_on:8; // 23:16 R/W + uint32_t c0l2_bpcm_init_on:1; // 24:24 R/W + uint32_t c1l2_bpcm_init_on:1; // 25:25 R/W + uint32_t ubus_sr:1; // 26:26 R/W + uint32_t cci_sr:1; // 27:27 R/W + uint32_t webcores_sr:1; // 28:28 R/W + uint32_t hw_done:1; // 29:29 R/O + uint32_t sw_done:1; // 30:30 R/W + uint32_t start:1; // 31:31 R/W + } Bits; + uint32_t Reg32; +} ARM_CONTROL_REG; + +typedef union { + struct { + uint32_t mem_pwr_ok:1; // 00:00 R/W + uint32_t mem_pwr_on:1; // 01:01 R/W + uint32_t mem_clamp_on:1; // 02:02 R/W + uint32_t reserved2:1; // 03:03 R/W + uint32_t mem_pwr_ok_status:1; // 04:04 R/O + uint32_t mem_pwr_on_status:1; // 05:05 R/O + uint32_t reserved1:2; // 07:06 R/W + uint32_t mem_pda:4; // 11:08 R/W only LS bit for CPU0/1, all four bits for neon_l2 + uint32_t reserved0:3; // 14:12 R/W + uint32_t clamp_on:1; // 15:15 R/W + uint32_t pwr_ok:4; // 19:16 R/W ditto + uint32_t pwr_on:4; // 23:20 R/W ditto + uint32_t pwr_ok_status:4; // 27:24 R/O ditto + uint32_t pwr_on_status:4; // 31:28 R/O only LS 2-bits for CPU1, only LS 1 bit for neon_l2 + } Bits; + uint32_t Reg32; +} ARM_CPUx_PWR_CTRL_REG; + +typedef union { + struct { + uint32_t resetb:1; // 00:00 + uint32_t post_resetb:1; // 01:01 + uint32_t pwrdwn:1; // 02:02 + uint32_t master_reset:1; // 03:03 + uint32_t pwrdwn_ldo:1; // 04:04 + uint32_t iso:1; // 05:05 // only used in afepll + uint32_t reserved0:2; // 07:06 + uint32_t ldo_ctrl:6; // 13:08 + uint32_t reserved1:1; // 14:14 + uint32_t hold_ch_all:1; // 15:15 + uint32_t reserved2:4; // 16:19 + uint32_t byp_wait:1; // 20:20 // only used in b15pll + uint32_t reserved3:11; // 21:31 + } Bits; + uint32_t Reg32; +} PLL_CTRL_REG; + +typedef union { + struct { + uint32_t fb_offset:12; // 11:00 + uint32_t fb_phase_en:1; // 12:12 + uint32_t _8phase_en:1; // 13:13 + uint32_t sr:18; // 31:14 + } Bits; + uint32_t Reg32; +} PLL_PHASE_REG; + +typedef union { + struct { + uint32_t ndiv_int:10; // 09:00 + uint32_t ndiv_frac:20; // 29:10 + uint32_t reserved0:1; // 30 + uint32_t ndiv_override:1; // 31 + } Bits; + uint32_t Reg32; +} PLL_NDIV_REG; + +typedef union { + struct { + uint32_t pdiv:3; // 02:00 + uint32_t reserved0:28; // 30:03 + uint32_t ndiv_pdiv_override:1; // 31:31 + } Bits; + uint32_t Reg32; +} PLL_PDIV_REG; + +typedef union { + struct { + uint32_t mdiv0:8; // 07:00 + uint32_t enableb_ch0:1; // 08:08 + uint32_t hold_ch0:1; // 09:09 + uint32_t load_en_ch0:1; // 10:10 + uint32_t mdel0:1; // 11:11 + uint32_t reserved0:3; // 14:12 + uint32_t mdiv_override0:1; // 15:15 + uint32_t mdiv1:8; // 23:16 + uint32_t enableb_ch1:1; // 24:24 + uint32_t hold_ch1:1; // 25:25 + uint32_t load_en_ch1:1; // 26:26 + uint32_t mdel1:1; // 27:27 + uint32_t reserved1:3; // 30:28 + uint32_t mdiv_override1:1; // 31:31 + } Bits; + uint32_t Reg32; +} PLL_CHCFG_REG; + +typedef union { + struct { + uint32_t reserved0:4; // 03:00 + uint32_t ka:3; // 06:04 + uint32_t reserved1:1; // 07:07 + uint32_t ki:3; // 10:08 + uint32_t reserved2:1; // 11:11 + uint32_t kp:4; // 15:12 + uint32_t ssc_step:16; // 31:16 + } Bits; + uint32_t Reg32; +} PLL_LOOP0_REG; + +typedef union { + struct { + uint32_t ssc_limit:22; // 21:00 + uint32_t reserved0:2; // 23:22 + uint32_t ssc_clkdiv:4; // 27:24 + uint32_t ssc_status:1; // 28:28 + uint32_t reserved1:2; // 30:29 + uint32_t ssc_mode:1; // 31:31 + } Bits; + uint32_t Reg32; +} PLL_LOOP1_REG; + +typedef union { + struct { + uint32_t fdco_ctrl_bypass:16; // 15:00 + uint32_t fdco_bypass_en:1; // 16:16 + uint32_t fdco_dac_sel:1; // 17:17 + uint32_t state_reset:1; // 18:18 + uint32_t state_mode:2; // 20:19 + uint32_t state_sel:3; // 23:21 + uint32_t state_update:1; // 24:24 + uint32_t dco_en:1; // 25:25 + uint32_t dco_div2_div4:1; // 26:26 + uint32_t dco_bias_boost:1; // 27:27 + uint32_t bb_en:1; // 28:28 + uint32_t t2d_offset:3; // 31:29 + } Bits; + uint32_t Reg32; +} PLL_CFG0_REG; + +typedef union { + struct { + uint32_t t2d_offset_msb:1; // 00:00 + uint32_t t2d_clk_enable:1; // 01:01 + uint32_t t2d_clk_sel:1; // 02:02 + uint32_t kpp:4; // 06:03 + uint32_t pwm_ctrl:2; // 08:07 + uint32_t port_reset_mode:2; // 10:09 + uint32_t byp2_en:1; // 11:11 + uint32_t byp1_en:1; // 12:12 + uint32_t ref_diff_sel:1; // 13:13 + uint32_t ki_startlow:1; // 14:14 + uint32_t en_500ohm:1; // 15:15 + uint32_t refd2c_bias:3; // 18:16 + uint32_t post_div2_div3:1; // 19:19 + uint32_t ki_boost:1; // 20:20 + uint32_t reserved0:11; // 31:21 + } Bits; + uint32_t Reg32; +} PLL_CFG1_REG; + +typedef union { + struct { + uint32_t en_cml:3; // 02:00 + uint32_t tri_en:1; // 03:03 + uint32_t test_sel:3; // 06:04 + uint32_t test_en:1; // 07:07 + uint32_t reserved0:24; + } Bits; + uint32_t Reg32; +} PLL_OCTRL_REG; + +typedef union { + struct { + uint32_t out:12; // 11:00 + uint32_t reserved:19; // 30:12 + uint32_t lock:1; // 31:31 + } Bits; + uint32_t Reg32; +} PLL_STAT_REG; + +typedef union { + struct { + uint32_t ndiv_int:10; // 09:00 + uint32_t reserved0:2; // 11:10 + uint32_t ndiv_frac:20; // 31:12 + } Bits; + uint32_t Reg32; +} PLL_DECNDIV_REG; + +typedef union { + struct { + uint32_t pdiv:4; // 03:00 + uint32_t reserved0:12; // 15:04 + uint32_t mdiv0:8; // 23:16 + uint32_t mdiv1:8; // 31:24 + } Bits; + uint32_t Reg32; +} PLL_DECPDIV_REG; + +typedef union { + struct { + uint32_t mdiv2:8; // 07:00 + uint32_t mdiv3:8; // 15:08 + uint32_t mdiv4:8; // 23:16 + uint32_t mdiv5:8; // 31:24 + } Bits; + uint32_t Reg32; +} PLL_DECCH25_REG; + +typedef union { + struct { + uint32_t manual_clk_en:1; + uint32_t manual_reset_ctl:1; + uint32_t freq_scale_used:1; // R/O + uint32_t dpg_capable:1; // R/O + uint32_t manual_mem_pwr:2; + uint32_t manual_iso_ctl:1; + uint32_t manual_ctl:1; + uint32_t dpg_ctl_en:1; + uint32_t pwr_dn_req:1; + uint32_t pwr_up_req:1; + uint32_t mem_pwr_ctl_en:1; + uint32_t blk_reset_assert:1; + uint32_t mem_stby:1; + uint32_t reserved:5; + uint32_t pwr_cntl_state:5; + uint32_t freq_scalar_dyn_sel:1; // R/O + uint32_t pwr_off_state:1; // R/O + uint32_t pwr_on_state:1; // R/O + uint32_t pwr_good:1; // R/O + uint32_t dpg_pwr_state:1; // R/O + uint32_t mem_pwr_state:1; // R/O + uint32_t iso_state:1; // R/O + uint32_t reset_state:1; // R/O + } Bits; + uint32_t Reg32; +} BPCM_PWR_ZONE_N_CONTROL; + +typedef union { + struct { + uint32_t pwr_ok_delay_sel:3; + uint32_t pwk_ok_thresh:2; + uint32_t reserved:3; + uint32_t iso_on_delay:4; + uint32_t iso_off_delay:4; + uint32_t clock_on_delay:4; + uint32_t clock_off_delay:4; + uint32_t reset_on_delay:4; + uint32_t reset_off_delay:4; + } Bits; + uint32_t Reg32; +} BPCM_PWR_ZONE_N_CONFIG1; + +typedef union { + struct { + uint32_t delay_prescale_sel:3; + uint32_t slew_prescale_sel:3; + uint32_t reserved:6; + uint32_t dpgn_on_delay:4; + uint32_t dpg1_on_delay:4; + uint32_t dpg_off_delay:4; + uint32_t mem_on_delay:4; + uint32_t mem_off_delay:4; + } Bits; + uint32_t Reg32; +} BPCM_PWR_ZONE_N_CONFIG2; + +typedef union { + struct { + uint32_t fs_bypass_en:1; + uint32_t gear_sel:1; + uint32_t use_dyn_gear_sel:1; + uint32_t reserved2:1; + uint32_t low_gear_div:3; + uint32_t high_gear_div:3; + uint32_t reserved:22; + } Bits; + uint32_t Reg32; +} BPCM_ZONE_N_FREQ_SCALAR_CONTROL; + +typedef struct { + BPCM_PWR_ZONE_N_CONTROL control; + BPCM_PWR_ZONE_N_CONFIG1 config1; + BPCM_PWR_ZONE_N_CONFIG2 config2; + uint32_t reserved0; + uint32_t timer_control; + uint32_t timer_status; + uint32_t reserved1[2]; +} BPCM_ZONE; + +#define BPCMZoneOffset(reg) offsetof(BPCM_ZONE,reg) +#define BPCMZoneRegOffset(reg) (BPCMZoneOffset(reg) >> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +typedef union { + struct { + uint32_t ubus_soft_rst:1; + uint32_t alt_ubus_clk_sel:1; + uint32_t obsv_clk_swinit:1; + uint32_t reserved0:17; + uint32_t wl0_rf_enable:1; + uint32_t wl1_rf_enable:1; + uint32_t reserved1:10; + } Bits; + uint32_t Reg32; +} BPCM_CLKRST_CONTROL; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + uint32_t reserved1[2]; // offset 0x18, PMB reg index 6/7 + // Client-specific registers + uint32_t client_specific[24]; // offset 0x20, PMB reg index 8..31 + // Zones + BPCM_ZONE zones[]; // offset 0x80..(0x20 + MAX_ZONES*32)), PMB reg index 32..(32+(MAX_ZONES*8-1)) +} BPCM_REGS; // total offset space = 4096 + +#define BPCM_OFFSET(reg) (offsetof(BPCM_REGS,reg)>>2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + uint32_t rvrsd[2]; + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_VDSL_REGS; // total offset space = 4096 + +#define BPCMVDSLOffset(reg) offsetof(BPCM_VDSL_REGS,reg) +#define BPCMVDSLRegOffset(reg) (BPCMVDSLOffset(reg) >> 2) + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08, actual offset = 2 + uint32_t cfg_control; // offset = 0x10, actual offset = 4 + BPCM_SR_CONTROL sr_control; // offset = 0x14, actual offset = 5 + uint32_t reserved1[6]; // offset = 0x18, actual offset = 6 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + uint32_t biu_clk_control0; // offset = 0x34, actual offset = 13 + uint32_t tbd[18]; // offset = 0x38, actual offset = 14 + BPCM_ZONE zones; // offset = 0x80, actual offset = 32 +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + PLL_DECNDIV_REG decndiv; // offset = 0x44, actual offset = 0x11 + PLL_DECPDIV_REG decpdiv; // offset = 0x48, actual offset = 0x12 + PLL_DECCH25_REG decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[7]; // offset 0x08-0x20, PMB reg index 2-8 + uint32_t control; // offset 0x24, PMB reg index 9 + uint32_t observe_cntrl; // offset 0x28, PMB reg index 10 + uint32_t observe_div; // offset 0x2c, PMB reg index 11 + uint32_t observe_enable; // offset 0x30, PMB reg index 12 + BPCM_CLKRST_CONTROL clkrst_control; // offset 0x34, PMB reg index 13 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + + uint32_t z0_pm_cntl; // offset 0x18 + uint32_t z0_pm_status; // offset 0x1c + uint32_t z1_pm_cntl; // offset 0x20 + uint32_t z2_pm_cntl; // offset 0x24 + uint32_t reserved1[22]; // reserved from 0x28 to 0x7F + BPCM_ZONE zones[]; + +} BPCM_SYSPORT_REGS; + +#define SYSPOffset(reg) offsetof(BPCM_SYSPORT_REGS,reg) +#define SYSPRegOffset(reg) (SYSPOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm47622/brom.h b/arch/arm/include/asm/arch-bcm47622/brom.h new file mode 100644 index 0000000000..cbc27aa1cb --- /dev/null +++ b/arch/arm/include/asm/arch-bcm47622/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _47622_BROM_H +#define _47622_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK< +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_3_X +#define PMC_IMPL_3_2 + +#define PMC_LOG_IN_DTCM 1 +#define PMC_GETRCAL_SUPPORT 1 +#define PMC_CPUTEMP_SUPPORT 1 +#define PMC_RAM_BOOT 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm47622/rng.h b/arch/arm/include/asm/arch-bcm47622/rng.h new file mode 100644 index 0000000000..63e66ddbcf --- /dev/null +++ b/arch/arm/include/asm/arch-bcm47622/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _47622_RNG_H +#define _47622_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + BPCM_SGPHY_CNTL sgphy_cntl; // offset = 0x38, actual offset = 14 + BPCM_SGPHY_STATUS sgphy_status; // offset = 0x3c, actual offset = 15 + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + uint32_t rvrsd[2]; + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_VDSL_REGS; // total offset space = 4096 + +#define BPCMVDSLOffset(reg) offsetof(BPCM_VDSL_REGS,reg) +#define BPCMVDSLRegOffset(reg) (BPCMVDSLOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + uint32_t decndiv; // offset = 0x44, actual offset = 0x11 + uint32_t decpdiv; // offset = 0x48, actual offset = 0x12 + uint32_t decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved1; // offset = 0x2c, actual offset = 11 + uint32_t clkrst_cfg; // offset = 0x30, actual offset = 12 + uint32_t clkrst_control; // offset = 0x34, actual offset = 13 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm4908/brom.h b/arch/arm/include/asm/arch-bcm4908/brom.h new file mode 100644 index 0000000000..f35d6d054b --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4908/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _4908_BROM_H +#define _4908_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK< + +#define BIUCTRL_BASE 0x81062000 +#define BOOTLUT_BASE 0xffff0000 + +typedef struct BIUArchRegion { + uint32_t addr_ulimit; + uint32_t addr_llimit; + uint32_t permission; + uint32_t access_right_ctrl; +} BIUArchRegion; + +typedef struct BIUArch { + BIUArchRegion region[8]; /* 0x0 */ + uint32_t unused[95]; /* 0x80 */ + uint32_t scratch; /* 0x1fc */ +} BIUArch; + +#define BIUARCH ((volatile BIUArch * const) BIUARCH_BASE) + +typedef struct BIUCpuBusRange { +#define ULIMIT_SHIFT 4 +#define BUSNUM_MASK 0x0000000FU + +#define BUSNUM_UBUS 1 +#define BUSNUM_RBUS 2 +#define BUSNUM_RSVD 3 +#define BUSNUM_MCP0 4 +#define BUSNUM_MCP1 5 +#define BUSNUM_MCP2 6 + + uint32_t ulimit; + uint32_t llimit; +} BIUCpuBusRange; + +typedef struct BIUCpuAccessRightViol { + uint32_t addr; + uint32_t upper_addr; + uint32_t detail_addr; +} BIUCpuAccessRightViol; + +typedef struct BIUCpuBPCMAVS { + uint32_t bpcm_id; + uint32_t bpcm_capability; +} BIUCpuBPCMAVS; + +typedef struct BIUCtrl { + BIUCpuBusRange bus_range[11]; /* 0x0 */ + uint32_t secure_reset_hndshake; + uint32_t secure_soft_reset; + BIUCpuAccessRightViol access_right_viol[2]; /* 0x60 */ + uint32_t rac_cfg0; + uint32_t rac_cfg1; + uint32_t rac_cfg2; /* 0x80 */ + uint32_t rac_flush; + uint32_t power_cfg; +#define BIU_CPU_CTRL_PWR_CFG_CPU0_BPCM_INIT_ON_SHIFT 4 +#define BIU_CPU_CTRL_PWR_CFG_CPU0_BPCM_INIT_ON (0x1< +#include +#include + +#define uint32 uint32_t +/* +** Eth Switch Registers +*/ +typedef struct { + unsigned int led_f; + unsigned int reserved; +} LED_F; + +typedef struct EthernetSwitchCore +{ + unsigned int port_traffic_ctrl[9]; /* 0x00 - 0x08 */ + unsigned int reserved1[2]; /* 0x09 - 0x0a */ + unsigned int switch_mode; /* 0x0b */ +#define ETHSW_SM_RETRY_LIMIT_DIS 0x04 +#define ETHSW_SM_FORWARDING_EN 0x02 +#define ETHSW_SM_MANAGED_MODE 0x01 + unsigned int pause_quanta; /* 0x0c */ + unsigned int reserved33; + unsigned int imp_port_state; /*0x0e */ +#define ETHSW_IPS_USE_MII_HW_STS 0x00 +#define ETHSW_IPS_USE_REG_CONTENTS 0x80 +#define ETHSW_IPS_GMII_SPEED_UP_NORMAL 0x00 +#define ETHSW_IPS_GMII_SPEED_UP_2G 0x40 +#define ETHSW_IPS_TXFLOW_NOT_PAUSE_CAPABLE 0x00 +#define ETHSW_IPS_TXFLOW_PAUSE_CAPABLE 0x20 +#define ETHSW_IPS_RXFLOW_NOT_PAUSE_CAPABLE 0x00 +#define ETHSW_IPS_RXFLOW_PAUSE_CAPABLE 0x10 +#define ETHSW_IPS_SW_PORT_SPEED_1000M_2000M 0x08 +#define ETHSW_IPS_DUPLEX_MODE 0x02 +#define ETHSW_IPS_LINK_FAIL 0x00 +#define ETHSW_IPS_LINK_PASS 0x01 + unsigned int led_refresh; /* 0x0f */ + LED_F led_function[2]; /* 0x10 */ + unsigned int led_function_map; /* 0x14 */ + unsigned int reserved14; + unsigned int led_enable_map; /* 0x16 */ + unsigned int reserved15; + unsigned int led_mode_map0; /* 0x18 */ + unsigned int reserved16; + unsigned int led_function_map1; /* 0x1a */ + unsigned int reserved17; + unsigned int reserved2[5]; /* 0x1c - 0x20 */ + unsigned int port_forward_ctrl; /* 0x21 */ + unsigned int switch_ctrl; /* 0x22 */ +#define ETHSW_SC_MII_DUMP_FORWARDING_EN 0x40 +#define ETHSW_SC_MII2_VOL_SEL 0x02 + unsigned int reserved3; /* 0x23 */ + unsigned int protected_port_selection; /* 0x24 */ + unsigned int reserved18; + unsigned int wan_port_select; /* 0x26 */ + unsigned int reserved19; + unsigned int pause_capability; /* 0x28 */ + unsigned int reserved20[3]; + unsigned int reserved4[3]; /* 0x2c - 0x2e */ + unsigned int reserved_multicast_control; /* 0x2f */ + unsigned int reserved5; /* 0x30 */ + unsigned int txq_flush_mode_control; /* 0x31 */ + unsigned int ulf_forward_map; /* 0x32 */ + unsigned int reserved21; + unsigned int mlf_forward_map; /* 0x34 */ + unsigned int reserved22; + unsigned int mlf_impc_forward_map; /* 0x36 */ + unsigned int reserved23; + unsigned int pause_pass_through_for_rx; /* 0x38 */ + unsigned int reserved24; + unsigned int pause_pass_through_for_tx; /* 0x3a */ + unsigned int reserved25; + unsigned int disable_learning; /* 0x3c */ + unsigned int reserved26; + unsigned int reserved6[26]; /* 0x3e - 0x57 */ + unsigned int port_state_override[8]; /* 0x58 - 0x5f */ +#define ETHSW_PS_SW_OVERRIDE 0x40 +#define ETHSW_PS_SW_TX_FLOW_CTRL_EN 0x20 +#define ETHSW_PS_SW_RX_FLOW_CTRL_EN 0x10 +#define ETHSW_PS_SW_PORT_SPEED_1000M 0x08 +#define ETHSW_PS_SW_PORT_SPEED_100M 0x04 +#define ETHSW_PS_SW_PORT_SPEED_10M 0x00 +#define ETHSW_PS_DUPLEX_MODE 0x02 +#define ETHSW_PS_LINK_DOWN 0x00 +#define ETHSW_PS_LINK_UP 0x01 + unsigned int reserved7[4]; /* 0x60 - 0x63 */ + unsigned int imp_rgmii_ctrl_p4; /* 0x64 */ + unsigned int imp_rgmii_ctrl_p5; /* 0x65 */ + unsigned int reserved8[6]; /* 0x66 - 0x6b */ + unsigned int rgmii_timing_delay_p4; /* 0x6c */ + unsigned int gmii_timing_delay_p5; /* 0x6d */ + unsigned int reserved9[11]; /* 0x6e - 0x78 */ + unsigned int software_reset; /* 0x79 */ + unsigned int reserved13[6]; /* 0x7a - 0x7f */ + unsigned int pause_frame_detection; /* 0x80 */ + unsigned int reserved10[7]; /* 0x81 - 0x87 */ + unsigned int fast_aging_ctrl; /* 0x88 */ + unsigned int fast_aging_port; /* 0x89 */ + unsigned int fast_aging_vid; /* 0x8a */ + unsigned int anonymous1[376]; /* 0x8b */ + unsigned int brcm_hdr_ctrl; /* 0x203 */ + unsigned int anonymous2[0x2efc]; /* 0x204 */ + unsigned int port_vlan_ctrl[9*2]; /* 0x3100 */ +} EthernetSwitchCore; + +#define PBMAP_MIPS 0x100 + +typedef struct { + uint32 led_ctrl; + uint32 led_encoding_sel; + uint32 led_encoding; +}LED_CFG; + +typedef struct EthernetSwitchReg +{ + uint32 switch_ctrl; /* 0x0000 */ + uint32 switch_status; /* 0x0004 */ + uint32 dir_data_write_reg; /* 0x0008 */ + uint32 dir_data_read_reg; /* 0x000c */ + uint32 switch_rev; /* 0x0010 */ + uint32 phy_rev; /* 0x0014 */ + uint32 phy_test_ctrl; /* 0x0018 */ + uint32 qphy_ctrl; /* 0x001c */ +#define ETHSW_QPHY_CTRL_PHYAD_BASE_SHIFT 12 +#define ETHSW_QPHY_CTRL_PHYAD_BASE_MASK (0x1f< +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_1_X + +#define PMC_CPU_BIG_ENDIAN 1 +#define PMC_GETRCAL_SUPPORT 1 +#define PMC_RECLOSE_SUPPORT 1 +#define PMC_STALL_SUPPORT 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm4908/rng.h b/arch/arm/include/asm/arch-bcm4908/rng.h new file mode 100644 index 0000000000..39aacee946 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4908/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _4908_RNG_H +#define _4908_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +typedef union { + struct { + uint32_t ubus_soft_reset:1; + uint32_t alt_ubus_clk_sel:1; + uint32_t observe_clk_sw_init:1; + uint32_t alt_emmc_clk_sel:1; + uint32_t reserved:5; + uint32_t enable:1; + uint32_t counter:8; + uint32_t reserved2:14; + } Bits; + uint32_t Reg32; +} BPCM_CLKRST_VREG_CONTROL; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + uint32_t reserved1[2]; // offset 0x18, PMB reg index 6/7 + // Client-specific registers + uint32_t client_specific[24]; // offset 0x20, PMB reg index 8..31 + // Zones + BPCM_ZONE zones[]; // offset 0x80..(0x20 + MAX_ZONES*32)), PMB reg index 32..(32+(MAX_ZONES*8-1)) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + uint32_t rvrsd[2]; + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_VDSL_REGS; // total offset space = 4096 + +#define BPCMVDSLOffset(reg) offsetof(BPCM_VDSL_REGS,reg) +#define BPCMVDSLRegOffset(reg) (BPCMVDSLOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08, actual offset = 2 + uint32_t cfg_control; // offset = 0x10, actual offset = 4 + BPCM_SR_CONTROL sr_control; // offset = 0x14, actual offset = 5 + uint32_t reserved1[2]; // offset = 0x18, actual offset = 6 + BPCM_ZONE zones; // offset = 0x20, actual offset = 8 + ARM_CONTROL_REG arm_control; // offset = 0x40, actual offset = 16 +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + /* BIU PLL BCPM definition */ + BPCM_ID_REG id_reg; // offset = 0x00 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04 + uint32_t reserved0[2]; // offset = 0x08..0x0c + PLL_CTRL_REG resets; // offset = 0x10 + uint32_t reserved1[2]; // offset = 0x14 + PLL_NDIV_REG ndiv; // offset = 0x1c + PLL_PDIV_REG pdiv; // offset = 0x20 + PLL_LOOP0_REG loop0; // offset = 0x24 + PLL_LOOP1_REG loop1; // offset = 0x28 + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c + PLL_CHCFG_REG ch23_cfg; // offset = 0x30 + PLL_CHCFG_REG ch45_cfg; // offset = 0x34 + uint32_t reserved2; // offset = 0x38 + PLL_STAT_REG stat; // offset = 0x3c + uint32_t strap; // offset = 0x40 + PLL_DECNDIV_REG decndiv;// offset = 0x44 + PLL_DECPDIV_REG decpdiv;// offset = 0x48 + PLL_DECCH25_REG decch25;// offset = 0x4c +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04 + uint32_t reserved0[2]; // offset = 0x08..0x0c + PLL_CTRL_REG resets; // offset = 0x10 + uint32_t reserved1[5]; // offset = 0x14 + PLL_NDIV_REG ndiv; // offset = 0x28 + PLL_PDIV_REG pdiv; // offset = 0x2c + PLL_CHCFG_REG ch01_cfg; // offset = 0x30 + PLL_CHCFG_REG ch23_cfg; // offset = 0x34 + PLL_CHCFG_REG ch45_cfg; // offset = 0x38 + PLL_STAT_REG stat; // offset = 0x3c + uint32_t strap; // offset = 0x40 + PLL_DECNDIV_REG decndiv;// offset = 0x44 + PLL_DECPDIV_REG decpdiv;// offset = 0x48 + PLL_DECCH25_REG decch25;// offset = 0x4c +} RDPPLL_BPCM_REGS; + +#define RDPPLLBPCMOffset(reg) offsetof(RDPPLL_BPCM_REGS,reg) +#define RDPPLLBPCMRegOffset(reg) (RDPPLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved1; // offset = 0x2c, actual offset = 11 + uint32_t clkrst_cfg; // offset = 0x30, actual offset = 12 + BPCM_CLKRST_VREG_CONTROL vreg_control; // offset = 0x34, actual offset = 13 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +typedef struct { + // ETH_PMB + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved8[2]; // offset 0x08, PMB reg index 2/3 + // ETH_CFG + uint32_t dpg_zones; // offset 0x10, PMB reg index 4 + uint32_t soft_rst;; // offset 0x14, PMB reg index 5 + uint32_t reserved18[2]; // offset 0x18, PMB reg index 6/7 + // ETH_CORE + uint32_t qphy_cntrl; // offset 0x20 + uint32_t qphy_status; // offset 0x24 + uint32_t reserved28[2]; + uint32_t serdes0_cntrl; // offset 0x30 + uint32_t serdes0_status;// offset 0x34 + uint32_t serdes0_an_st; // offset 0x38 + uint32_t serdes1_cntrl; // offset 0x3c + uint32_t serdes1_status;// offset 0x40 + uint32_t serdes1_an_st; // offset 0x44 + uint32_t serdes2_cntrl; // offset 0x48 + uint32_t serdes2_status;// offset 0x4c + uint32_t serdes2_an_st; // offset 0x50 + uint32_t rgmii_cntrl; // offset 0x54 + uint32_t xport0_cntrl; // offset 0x58 + uint32_t xport1_cntrl; // offset 0x5c + uint32_t serdes0_st1; // offset 0x60 + uint32_t serdes1_st1; // offset 0x64 + uint32_t serdes2_st1; // offset 0x68 + uint32_t serdes0_pwr_cntrl;// offset 0x6c + uint32_t serdes1_pwr_cntrl;// offset 0x70 + uint32_t serdes2_pwr_cntrl;// offset 0x74 +} BPCM_ETH_REGS; + +#define BPCMETHOffset(reg) offsetof(BPCM_ETH_REGS,reg) +#define BPCMETHRegOffset(reg) (BPCMETHOffset(reg) >> 2) + + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm4912/boot0.h b/arch/arm/include/asm/arch-bcm4912/boot0.h new file mode 100644 index 0000000000..4e65b99e1a --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4912/boot0.h @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _4912_BOOT0_H +#define _4912_BOOT0_H + +#include +#include +#include + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) +_bcm_boot: + tlbi alle3 /* Invalidate TLB */ + dsb sy + isb + + ic ialluis /* Invalidate icache */ + isb + + /* Initialize system control register enable i-cache */ + mrs x0, sctlr_el3 + movn x1, #(CR_M | CR_C) + and x0, x1, x0 + orr x0, x0, #CR_I + msr sctlr_el3, x0 + isb + + /* relocate the code, init'ed data from flash to lmem */ +relo_image: + adr x1, _bcm_boot /* x1 source address in flash */ + ldr x0, =__image_copy_start /* x0 dest address in sram */ + subs x4, x1, x0 /* x4 relocation offset */ + beq relo_dtb /* skip relocation */ + ldr x2, =__image_copy_end /* x2 dest ending address in flash */ + +relo_loop: + ldp x5, x6, [x1], #16 + stp x5, x6, [x0], #16 + cmp x0, x2 + blo relo_loop + + /* if we attached dtb after bss, need to relocate dtb as well */ +relo_dtb: +#if defined(CONFIG_SPL_OF_CONTROL) && defined(CONFIG_OF_SEPARATE) + +#ifdef CONFIG_OF_SPL_SEPARATE_BSS + ldr x3, =__image_binary_end +#else + ldr x3, =_end +#endif + add x1, x3, x4 /* r1 source address in flash */ + mov x0, xzr + mov x2, xzr + /* check ftd size ... */ + /* struct fdt_header { + fdt32_t magic; + fdt32_t totalsize; */ + ldr w0, [x1, #4] /* r0 total size */ + rev w0, w0 /* byte order from fdt to little endian */ + lsr w0, w0, #2 /* in the order of 4 bytes aligned */ + add w0, w0, #1 + lsl w0, w0, #2 + add x2, x1, x0 /* r2 dest ending address in flash */ + mov x0, x3 /* r0 dest address in sram */ + +dtb_loop: + ldp x5, x6, [x1], #16 + stp x5, x6, [x0], #16 + cmp x1, x2 + blo dtb_loop +#endif + ldr x0, =reset + br x0 + +#else + b reset +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm4912/brom.h b/arch/arm/include/asm/arch-bcm4912/brom.h new file mode 100644 index 0000000000..ad3b8516c7 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4912/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _4912_BROM_H +#define _4912_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK< + + +typedef struct CCI500_SlaveIntf { + #define SNOOP_CTRL_ENABLE_SNOOP 0x1 + uint32_t snoop_ctrl; /* 0x0 */ + #define SHARE_OVR_SHAREABLE_OVR_SHIFT 0x0 + #define SHARE_OVR_SHAREABLE_OVR_MASK 0x3 + #define SHARE_OVR_SHAREABLE_OVR_NONSHR 0x2 + #define SHARE_OVR_SHAREABLE_OVR_SHR 0x3 + uint32_t share_ovr; /* 0x4 */ + uint32_t rsvd1[62]; /* 0x8 - 0xff */ + uint32_t arqos_ovr; /* 0x100 */ + uint32_t awqos_ovr; /* 0x104 */ + uint32_t rsvd2[2]; /* 0x108 - 0x10f */ + uint32_t qos_max_ot; /* 0x110 */ + uint32_t rsvd3[955]; /* 0x114 - 0xfff */ +}CCI500_SlaveIntf; + +typedef struct CCI500_EventCounter { + uint32_t sel; /* 0x0 */ + uint32_t data; /* 0x4 */ + uint32_t ctrl; /* 0x8 */ + uint32_t clr_ovfl; /* 0xC */ + uint32_t rsvd[16380]; /* 0x10 - 0xffff */ +}CCI500_EventCounter; + +typedef struct CCI500 { + #define CONTROL_OVERRIDE_SNOOP_DISABLE 0x1 + #define CONTROL_OVERRIDE_SNOOP_FLT_DISABLE 0x4 + uint32_t ctrl_ovr; /* 0x0 */ + uint32_t rsvd1; /* 0x4 */ + #define SECURE_ACCESS_UNSECURE_ENABLE 0x1 + uint32_t secr_acc; /* 0x8 */ + uint32_t status; /* 0xc */ + #define STATUS_CHANGE_PENDING 0x1 + uint32_t impr_err; /* 0x10 */ + uint32_t qos_threshold; /* 0x14 */ + uint32_t rsvd2[58]; /* 0x18 - 0xff */ + uint32_t pmu_ctrl; /* 0x100 */ + #define DBG_CTRL_EN_INTF_MON 0x1 + uint32_t debug_ctrl; /* 0x104 */ + uint32_t rsvd3[958]; /* 0x108 - 0xfff */ + #define SLAVEINTF_COHERENCY_PORT 0x0 + #define SLAVEINTF_CPU_CLUSTER 0x1 + CCI500_SlaveIntf si[7]; /* 0x1000 - 0x7fff */ + uint32_t rsvd4[8192]; /* 0x8000 - 0xffff */ + CCI500_EventCounter evt_cntr[8]; /* 0x10000 - 0x8ffff */ +}CCI500; + +#define CCI500_BASE 0x81100000 +#define CCI500 ((volatile CCI500 * const) CCI500_BASE) + +typedef struct UBUS4_RANGE_CHK_CFG { + uint32_t control; /* 0x0 */ + uint32_t srcpid[8]; /* 0x4 - 0x23 */ + uint32_t seclev; /* 0x24 */ + uint32_t base; /* 0x28 */ + uint32_t base_up; /* 0x2c */ +}UBUS4_RANGE_CHK_CFG; + +typedef struct UBUS4_RANGE_CHK_SETUP { + uint32_t lock; /* 0x0 */ + uint32_t log_inf[3]; /* 0x4 - 0xf */ + UBUS4_RANGE_CHK_CFG cfg[16]; /* 0x10 - 0x30f */ +}UBUS4_RANGE_CHK_SETUP; + +#define UBUS4_COHERENCY_PORT_BASE 0x810A0000 +#define UBUS4_RANGE_CHK_SETUP_OFFSET 0x0 +#define UBUS4_RANGE_CHK_SETUP_BASE (UBUS4_COHERENCY_PORT_BASE+UBUS4_RANGE_CHK_SETUP_OFFSET) +#define UBUS4_RANGE_CHK_SETUP ((volatile UBUS4_RANGE_CHK_SETUP * const) UBUS4_RANGE_CHK_SETUP_BASE) + +typedef struct BIUCFG_Access { + uint32_t permission; /* 0x0 */ + uint32_t sbox; /* 0x4 */ + uint32_t cpu_defeature; /* 0x8 */ + uint32_t dbg_security; /* 0xc */ + uint32_t rsvd1[32]; /* 0x10 - 0x8f */ + uint64_t violation[2]; /* 0x90 - 0x9f */ + uint32_t ts_access[2]; /* 0xa0 - 0xa7 */ + uint32_t rsvd2[22]; /* 0xa8 - 0xff */ +}BIUCFG_Access; + +typedef struct BIUCFG_Cluster { + uint32_t permission; /* 0x0 */ + uint32_t config; /* 0x4 */ + uint32_t status; /* 0x8 */ + uint32_t control; /* 0xc */ + uint32_t cpucfg; /* 0x10 */ + uint32_t dbgrom; /* 0x14 */ + uint32_t rsvd1[2]; /* 0x18 - 0x1f */ + uint64_t rvbar_addr[4]; /* 0x20 - 0x3f */ + uint32_t rsvd2[48]; /* 0x40 - 0xff */ +}BIUCFG_Cluster; + +typedef struct BIUCFG_Bac { + uint32_t bac_permission; /* 0x00 */ + uint32_t bac_periphbase; /* 0x04 */ + uint32_t rsvd[2]; /* 0x08 - 0x0f */ + uint32_t bac_event; /* 0x10 */ + uint32_t rsvd_1[3]; /* 0x14 - 0x1f */ + uint32_t bac_ccicfg; /* 0x20 */ + uint32_t bac_cciaddr; /* 0x24 */ + uint32_t rsvd_2[4]; /* 0x28 - 0x37 */ + uint32_t bac_ccievs2; /* 0x38 */ + uint32_t bac_ccievs3; /* 0x3c */ + uint32_t bac_ccievs4; /* 0x40 */ + uint32_t rsvd_3[3]; /* 0x44 - 0x4f */ + uint32_t bac_ccievm0; /* 0x50 */ + uint32_t bac_ccievm1; /* 0x54 */ + uint32_t rsvd_4[2]; /* 0x58 - 0x5f */ + uint32_t bac_dapapbcfg; /* 0x60 */ + uint32_t bac_status; /* 0x64 */ + uint32_t rsvd_5[2]; /* 0x68 - 0x6f */ + uint32_t cpu_therm_irq_cfg; /* 0x70 */ + uint32_t cpu_therm_threshold_cfg; /* 0x74 */ + uint32_t rsvd_6; /* 0x78 */ + uint32_t cpu_therm_temp; /* 0x7c */ + uint32_t rsvd_7[32]; /* 0x80 - 0xff */ +} BIUCFG_Bac; + +typedef struct BIUCFG_Aux { + uint32_t aux_permission; /* 0x00 */ + uint32_t rsvd[3]; /* 0x04 - 0x0f */ + uint32_t c0_clk_control; /* 0x10 */ + uint32_t c0_clk_ramp; /* 0x14 */ + uint32_t c0_clk_pattern; /* 0x18 */ + uint32_t rsvd_1; /* 0x1c */ + uint32_t c1_clk_control; /* 0x20 */ + uint32_t c1_clk_ramp; /* 0x24 */ + uint32_t c1_clk_pattern; /* 0x28 */ + uint32_t rsvd_2[53]; /* 0x2c - 0xff */ +} BIUCFG_Aux; + +typedef struct BIUCFG_TS0_CTRL { + uint32_t CNTCR; /* 0x00 */ + uint32_t CNTSR; /* 0x04 */ + uint32_t CNTCVL; /* 0x08 */ + uint32_t CNTCVU; /* 0x0c */ + uint32_t rsvd_0[4]; /* 0x10 - 0x1f */ + uint32_t CNTFID0; /* 0x20 */ + uint32_t rsvd_1[1015]; /* 0x24 - 0xfff */ +} BIUCFG_TS0_CTRL; + +typedef struct BIUCFG { + BIUCFG_Access access; /* 0x0 - 0xff*/ + BIUCFG_Cluster cluster[2]; /* 0x100 - 0x2ff*/ + BIUCFG_Bac bac; /* 0x300 - 0x3ff */ + uint32_t anonymous[192]; /* 0x400 - 0x6ff */ + BIUCFG_Aux aux; /* 0x700 - 0x7ff */ + uint32_t anonymous_1[512]; /* 0x800 - 0xfff */ + BIUCFG_TS0_CTRL ts0_ctrl; /* 0x1000 - 0x1fff */ +}BIUCFG; + +#define BIUCFG_BASE 0x81060000 +#define BIUCFG ((volatile BIUCFG * const) BIUCFG_BASE) + +#endif diff --git a/arch/arm/include/asm/arch-bcm4912/ddr.h b/arch/arm/include/asm/arch-bcm4912/ddr.h new file mode 100644 index 0000000000..1d7980b042 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4912/ddr.h @@ -0,0 +1,3242 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _4912_DDR_H +#define _4912_DDR_H + +#define MEMC_BASE 0x80040000 /* DDR IO Buf Control */ +#define PHY_BASE 0x80060000 /* DDR PHY base */ + + +#define mc2_glb_acc 0x00000000 +#define mc2_glb_vers 0x00000004 +#define mc2_glb_gcfg 0x00000008 +#define mc2_glb_auto_self_refresh 0x0000000c +#define mc2_glb_pwr_mgr 0x00000010 + + + +#define mc2_axi_acc 0x00000040 +#define mc2_axi_ver 0x00000044 +#define mc2_axi_CFG 0x00000048 +#define mc2_axi_REP_ARB_MODE 0x0000004c +#define mc2_axi_queue_cfg 0x00000050 +#define mc2_axi_queue_size0 0x00000054 +#define mc2_axi_queue_map0 0x00000058 +#define mc2_axi_SCRATCH 0x00000060 +#define mc2_axi_AXI_DEBUG_0_0 0x00000064 +#define mc2_axi_AXI_DEBUG_1_0 0x00000068 +#define mc2_axi_AXI_DEBUG_MISC 0x0000006c + + + +#define mc2_ubus_acc 0x00000080 +#define mc2_ubus_CFG 0x00000084 +#define mc2_ubus_ESRCID_CFG 0x00000088 +#define mc2_ubus_queue_cfg_queue_cfg 0x0000008c +#define mc2_ubus_queue_cfg_queue_map0 0x00000090 +#define mc2_ubus_queue_cfg_queue_map1 0x00000094 +#define mc2_ubus_queue_cfg_queue_map2 0x00000098 +#define mc2_ubus_queue_cfg_queue_map3 0x0000009c +#define mc2_ubus_queue_cfg_queue_size0 0x000000a0 +#define mc2_ubus_queue_cfg_queue_size1 0x000000a4 +#define mc2_ubus_queue_cfg_queue_size2 0x000000a8 +#define mc2_ubus_queue_cfg_queue_size3 0x000000ac +#define mc2_ubus_diag_ctrl 0x000000b0 +#define mc2_ubus_scratch 0x000000b8 +#define mc2_ubus_debug_ro 0x000000bc + + + +#define mc2_misc_acc 0x00000200 +#define mc2_misc_ver 0x00000204 +#define mc2_misc_cfg 0x00000208 +#define mc2_misc_vq_cfg 0x0000020c +#define mc2_misc_edis_addr_rand 0x00000210 +#define mc2_misc_misc_dbg 0x00000214 + + + +#define mc2_afx_acc 0x00000300 +#define mc2_afx_ver 0x00000304 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi 0x00000310 +#define mc2_afx_sram_match_cfg_sram_start_addr_lo 0x00000314 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi 0x00000318 +#define mc2_afx_sram_match_cfg_sram_end_addr_lo 0x0000031c +#define mc2_afx_addr_fltr_cfg0_start_addr_hi 0x00000320 +#define mc2_afx_addr_fltr_cfg0_start_addr_lo 0x00000324 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi 0x00000328 +#define mc2_afx_addr_fltr_cfg0_end_addr_lo 0x0000032c +#define mc2_afx_addr_fltr_cfg1_start_addr_hi 0x00000330 +#define mc2_afx_addr_fltr_cfg1_start_addr_lo 0x00000334 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi 0x00000338 +#define mc2_afx_addr_fltr_cfg1_end_addr_lo 0x0000033c +#define mc2_afx_addr_fltr_cfg2_start_addr_hi 0x00000340 +#define mc2_afx_addr_fltr_cfg2_start_addr_lo 0x00000344 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi 0x00000348 +#define mc2_afx_addr_fltr_cfg2_end_addr_lo 0x0000034c +#define mc2_afx_addr_fltr_cfg3_start_addr_hi 0x00000350 +#define mc2_afx_addr_fltr_cfg3_start_addr_lo 0x00000354 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi 0x00000358 +#define mc2_afx_addr_fltr_cfg3_end_addr_lo 0x0000035c +#define mc2_afx_srcid_fltr_cfg0_srcid 0x00000360 +#define mc2_afx_srcid_fltr_cfg1_srcid 0x00000364 +#define mc2_afx_srcid_fltr_cfg2_srcid 0x00000368 +#define mc2_afx_srcid_fltr_cfg3_srcid 0x0000036c +#define mc2_afx_row_xtr_cfg_row_19_16 0x00000380 +#define mc2_afx_row_xtr_cfg_row_15_12 0x00000384 +#define mc2_afx_row_xtr_cfg_row_11_8 0x00000388 +#define mc2_afx_row_xtr_cfg_row_7_4 0x0000038c +#define mc2_afx_row_xtr_cfg_row_3_0 0x00000390 +#define mc2_afx_bg_xtr_cfg_bg_3_0 0x000003a0 +#define mc2_afx_bk_xtr_cfg_bk_3_0 0x000003a4 +#define mc2_afx_col_xtr_cfg_col_cfg 0x000003a8 +#define mc2_afx_cs_xtr_cfg_cs_3_0 0x000003b4 +#define mc2_afx_chn_xtr_cfg_chn_bit 0x000003b8 +#define mc2_afx_ddr_sz_chk 0x000003bc + + + +#define mc2_rchk_acc 0x00000400 +#define mc2_rchk_ver 0x00000404 +#define mc2_rchk_range_lock 0x00000410 +#define mc2_rchk_range_0_control 0x00000420 +#define mc2_rchk_range_0_persrcid_port 0x00000424 +#define mc2_rchk_range_0_persrcid_port_upper 0x00000428 +#define mc2_rchk_range_0_base 0x0000042c +#define mc2_rchk_range_0_base_upper 0x00000430 +#define mc2_rchk_range_0_seclev_en 0x00000434 +#define mc2_rchk_range_1_control 0x00000440 +#define mc2_rchk_range_1_persrcid_port 0x00000444 +#define mc2_rchk_range_1_persrcid_port_upper 0x00000448 +#define mc2_rchk_range_1_base 0x0000044c +#define mc2_rchk_range_1_base_upper 0x00000450 +#define mc2_rchk_range_1_seclev_en 0x00000454 +#define mc2_rchk_range_2_control 0x00000460 +#define mc2_rchk_range_2_persrcid_port 0x00000464 +#define mc2_rchk_range_2_persrcid_port_upper 0x00000468 +#define mc2_rchk_range_2_base 0x0000046c +#define mc2_rchk_range_2_base_upper 0x00000470 +#define mc2_rchk_range_2_seclev_en 0x00000474 +#define mc2_rchk_range_3_control 0x00000480 +#define mc2_rchk_range_3_persrcid_port 0x00000484 +#define mc2_rchk_range_3_persrcid_port_upper 0x00000488 +#define mc2_rchk_range_3_base 0x0000048c +#define mc2_rchk_range_3_base_upper 0x00000490 +#define mc2_rchk_range_3_seclev_en 0x00000494 +#define mc2_rchk_range_4_control 0x000004a0 +#define mc2_rchk_range_4_persrcid_port 0x000004a4 +#define mc2_rchk_range_4_persrcid_port_upper 0x000004a8 +#define mc2_rchk_range_4_base 0x000004ac +#define mc2_rchk_range_4_base_upper 0x000004b0 +#define mc2_rchk_range_4_seclev_en 0x000004b4 +#define mc2_rchk_range_5_control 0x000004c0 +#define mc2_rchk_range_5_persrcid_port 0x000004c4 +#define mc2_rchk_range_5_persrcid_port_upper 0x000004c8 +#define mc2_rchk_range_5_base 0x000004cc +#define mc2_rchk_range_5_base_upper 0x000004d0 +#define mc2_rchk_range_5_seclev_en 0x000004d4 +#define mc2_rchk_range_6_control 0x000004e0 +#define mc2_rchk_range_6_persrcid_port 0x000004e4 +#define mc2_rchk_range_6_persrcid_port_upper 0x000004e8 +#define mc2_rchk_range_6_base 0x000004ec +#define mc2_rchk_range_6_base_upper 0x000004f0 +#define mc2_rchk_range_6_seclev_en 0x000004f4 +#define mc2_rchk_range_7_control 0x00000500 +#define mc2_rchk_range_7_persrcid_port 0x00000504 +#define mc2_rchk_range_7_persrcid_port_upper 0x00000508 +#define mc2_rchk_range_7_base 0x0000050c +#define mc2_rchk_range_7_base_upper 0x00000510 +#define mc2_rchk_range_7_seclev_en 0x00000514 +#define mc2_rchk_log_info_0 0x00000520 +#define mc2_rchk_log_info_1 0x00000524 +#define mc2_rchk_log_info_2 0x00000528 +#define mc2_rlt_acc 0x00000600 +#define mc2_rlt_vers 0x00000604 +#define mc2_rlt_rate_limiter0_cfg_0 0x00000610 +#define mc2_rlt_rate_limiter0_cfg_1 0x00000614 +#define mc2_rlt_rate_limiter1_cfg_0 0x00000618 +#define mc2_rlt_rate_limiter1_cfg_1 0x0000061c +#define mc2_rlt_rate_limiter2_cfg_0 0x00000620 +#define mc2_rlt_rate_limiter2_cfg_1 0x00000624 +#define mc2_rlt_rate_limiter3_cfg_0 0x00000628 +#define mc2_rlt_rate_limiter3_cfg_1 0x0000062c +#define mc2_rlt_rate_limiter4_cfg_0 0x00000630 +#define mc2_rlt_rate_limiter4_cfg_1 0x00000634 +#define mc2_rlt_rate_limiter5_cfg_0 0x00000638 +#define mc2_rlt_rate_limiter5_cfg_1 0x0000063c +#define mc2_rlt_monitor0_mon_0 0x00000690 +#define mc2_rlt_monitor0_mon_1 0x00000694 +#define mc2_rlt_monitor1_mon_0 0x00000698 +#define mc2_rlt_monitor1_mon_1 0x0000069c +#define mc2_rlt_monitor2_mon_0 0x000006a0 +#define mc2_rlt_monitor2_mon_1 0x000006a4 +#define mc2_rlt_monitor3_mon_0 0x000006a8 +#define mc2_rlt_monitor3_mon_1 0x000006ac +#define mc2_rlt_monitor4_mon_0 0x000006b0 +#define mc2_rlt_monitor4_mon_1 0x000006b4 +#define mc2_rlt_monitor5_mon_0 0x000006b8 +#define mc2_rlt_monitor5_mon_1 0x000006bc + +#define mc2_chn_ddr_acc 0x00000900 +#define mc2_chn_ddr_ver 0x00000904 +#define mc2_chn_ddr_chn_arb_cfg 0x00000908 +#define mc2_chn_ddr_chn_arb_param 0x0000090c +#define mc2_chn_ddr_chn_sch_cfg 0x00000910 +#define mc2_chn_ddr_phy_st 0x00000914 +#define mc2_chn_ddr_dram_cfg 0x00000918 +#define mc2_chn_ddr_dcmd 0x0000091c +#define mc2_chn_ddr_dmode_0 0x00000920 +#define mc2_chn_ddr_dmode_2 0x00000924 +#define mc2_chn_ddr_odt 0x00000928 +#define mc2_chn_ddr_ddr_param_cmd0 0x0000092c +#define mc2_chn_ddr_ddr_param_cmd1 0x00000930 +#define mc2_chn_ddr_ddr_param_cmd2 0x00000934 +#define mc2_chn_ddr_ddr_param_cmd3 0x00000938 +#define mc2_chn_ddr_ddr_param_dat0 0x0000093c +#define mc2_chn_ddr_ddr_param_dat1 0x00000940 +#define mc2_chn_ddr_ddr_param_pre0 0x00000944 +#define mc2_chn_ddr_ddr_param_pwr0 0x00000948 +#define mc2_chn_ddr_ddr_param_zqc0 0x0000094c +#define mc2_chn_ddr_refresh_aref0 0x00000954 +#define mc2_chn_ddr_refresh_aref1 0x00000958 +#define mc2_chn_ddr_auto_self_refresh 0x0000095c +#define mc2_chn_ddr_auto_zqcs 0x00000968 +#define mc2_chn_ddr_dfi_error 0x0000096c + + +#define mc2_chn_sram_acc 0x00000a20 +#define mc2_chn_sram_ver 0x00000a24 +#define mc2_chn_sram_ind_ctrl 0x00000a28 +#define mc2_chn_sram_init 0x00000a2c +#define mc2_chn_sram_ind_data0 0x00000a30 +#define mc2_chn_sram_ind_data1 0x00000a34 +#define mc2_chn_sram_ind_data2 0x00000a38 +#define mc2_chn_sram_ind_data3 0x00000a3c + + +#define mc2_wbf_acc 0x00000e80 +#define mc2_wbf_ver 0x00000e84 +#define mc2_wbf_pri_cfg 0x00000e88 +#define mc2_wbf_sta 0x00000e8c +#define mc2_wbf_bkdr_bkdr_cmd 0x00000e90 +#define mc2_wbf_bkdr_bkdr_data0 0x00000e94 +#define mc2_wbf_bkdr_bkdr_data1 0x00000e98 +#define mc2_wbf_bkdr_bkdr_data2 0x00000e9c +#define mc2_wbf_bkdr_bkdr_data3 0x00000ea0 +#define mc2_wbf_bkdr_bkdr_data4 0x00000ea4 +#define mc2_wbf_bkdr_bkdr_data5 0x00000ea8 +#define mc2_wbf_bkdr_bkdr_data6 0x00000eac +#define mc2_wbf_bkdr_bkdr_data7 0x00000eb0 +#define mc2_wbf_id_bkdr_id_cmd 0x00000ec0 +#define mc2_wbf_id_bkdr_id_data 0x00000ec4 + + + +#define mc2_rmx_acc 0x00000ed0 +#define mc2_rmx_ver 0x00000ed4 +#define mc2_rmx_pri_cfg 0x00000ed8 + + +#define mc2_glb_acc_acc_eack_MASK 0x80000000 +#define mc2_glb_acc_acc_eack_ALIGN 0 +#define mc2_glb_acc_acc_eack_BITS 1 +#define mc2_glb_acc_acc_eack_SHIFT 31 +#define mc2_glb_acc_acc_eack_DEFAULT 0x00000000 + + +#define mc2_glb_acc_reserved0_MASK 0x7fffff00 +#define mc2_glb_acc_reserved0_ALIGN 0 +#define mc2_glb_acc_reserved0_BITS 23 +#define mc2_glb_acc_reserved0_SHIFT 8 + + +#define mc2_glb_acc_acc_sw_MASK 0x00000080 +#define mc2_glb_acc_acc_sw_ALIGN 0 +#define mc2_glb_acc_acc_sw_BITS 1 +#define mc2_glb_acc_acc_sw_SHIFT 7 +#define mc2_glb_acc_acc_sw_DEFAULT 0x00000001 + + +#define mc2_glb_acc_acc_sr_MASK 0x00000040 +#define mc2_glb_acc_acc_sr_ALIGN 0 +#define mc2_glb_acc_acc_sr_BITS 1 +#define mc2_glb_acc_acc_sr_SHIFT 6 +#define mc2_glb_acc_acc_sr_DEFAULT 0x00000001 + + +#define mc2_glb_acc_acc_nsw_MASK 0x00000020 +#define mc2_glb_acc_acc_nsw_ALIGN 0 +#define mc2_glb_acc_acc_nsw_BITS 1 +#define mc2_glb_acc_acc_nsw_SHIFT 5 +#define mc2_glb_acc_acc_nsw_DEFAULT 0x00000001 + + +#define mc2_glb_acc_acc_nsr_MASK 0x00000010 +#define mc2_glb_acc_acc_nsr_ALIGN 0 +#define mc2_glb_acc_acc_nsr_BITS 1 +#define mc2_glb_acc_acc_nsr_SHIFT 4 +#define mc2_glb_acc_acc_nsr_DEFAULT 0x00000001 + + +#define mc2_glb_acc_perm_sw_MASK 0x00000008 +#define mc2_glb_acc_perm_sw_ALIGN 0 +#define mc2_glb_acc_perm_sw_BITS 1 +#define mc2_glb_acc_perm_sw_SHIFT 3 +#define mc2_glb_acc_perm_sw_DEFAULT 0x00000001 + + +#define mc2_glb_acc_perm_sr_MASK 0x00000004 +#define mc2_glb_acc_perm_sr_ALIGN 0 +#define mc2_glb_acc_perm_sr_BITS 1 +#define mc2_glb_acc_perm_sr_SHIFT 2 +#define mc2_glb_acc_perm_sr_DEFAULT 0x00000001 + + +#define mc2_glb_acc_perm_nsw_MASK 0x00000002 +#define mc2_glb_acc_perm_nsw_ALIGN 0 +#define mc2_glb_acc_perm_nsw_BITS 1 +#define mc2_glb_acc_perm_nsw_SHIFT 1 +#define mc2_glb_acc_perm_nsw_DEFAULT 0x00000001 + + +#define mc2_glb_acc_perm_nsr_MASK 0x00000001 +#define mc2_glb_acc_perm_nsr_ALIGN 0 +#define mc2_glb_acc_perm_nsr_BITS 1 +#define mc2_glb_acc_perm_nsr_SHIFT 0 +#define mc2_glb_acc_perm_nsr_DEFAULT 0x00000001 + + + + +#define mc2_glb_vers_reserved0_MASK 0xffff0000 +#define mc2_glb_vers_reserved0_ALIGN 0 +#define mc2_glb_vers_reserved0_BITS 16 +#define mc2_glb_vers_reserved0_SHIFT 16 + + +#define mc2_glb_vers_VERSION_MAJOR_MASK 0x0000ff00 +#define mc2_glb_vers_VERSION_MAJOR_ALIGN 0 +#define mc2_glb_vers_VERSION_MAJOR_BITS 8 +#define mc2_glb_vers_VERSION_MAJOR_SHIFT 8 +#define mc2_glb_vers_VERSION_MAJOR_DEFAULT 0x00000005 + + +#define mc2_glb_vers_VERSION_MINOR_MASK 0x000000ff +#define mc2_glb_vers_VERSION_MINOR_ALIGN 0 +#define mc2_glb_vers_VERSION_MINOR_BITS 8 +#define mc2_glb_vers_VERSION_MINOR_SHIFT 0 +#define mc2_glb_vers_VERSION_MINOR_DEFAULT 0x00000002 + + + + +#define mc2_glb_gcfg_dram_en_MASK 0x80000000 +#define mc2_glb_gcfg_dram_en_ALIGN 0 +#define mc2_glb_gcfg_dram_en_BITS 1 +#define mc2_glb_gcfg_dram_en_SHIFT 31 +#define mc2_glb_gcfg_dram_en_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_reserved0_MASK 0x78000000 +#define mc2_glb_gcfg_reserved0_ALIGN 0 +#define mc2_glb_gcfg_reserved0_BITS 4 +#define mc2_glb_gcfg_reserved0_SHIFT 27 + + +#define mc2_glb_gcfg_sref_slow_clk_en_MASK 0x04000000 +#define mc2_glb_gcfg_sref_slow_clk_en_ALIGN 0 +#define mc2_glb_gcfg_sref_slow_clk_en_BITS 1 +#define mc2_glb_gcfg_sref_slow_clk_en_SHIFT 26 +#define mc2_glb_gcfg_sref_slow_clk_en_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_phy_dfi_mode_MASK 0x03000000 +#define mc2_glb_gcfg_phy_dfi_mode_ALIGN 0 +#define mc2_glb_gcfg_phy_dfi_mode_BITS 2 +#define mc2_glb_gcfg_phy_dfi_mode_SHIFT 24 +#define mc2_glb_gcfg_phy_dfi_mode_DEFAULT 0x00000001 + + +#define mc2_glb_gcfg_reserved1_MASK 0x00f00000 +#define mc2_glb_gcfg_reserved1_ALIGN 0 +#define mc2_glb_gcfg_reserved1_BITS 4 +#define mc2_glb_gcfg_reserved1_SHIFT 20 + + +#define mc2_glb_gcfg_dpfe_block_dmem_read_MASK 0x00080000 +#define mc2_glb_gcfg_dpfe_block_dmem_read_ALIGN 0 +#define mc2_glb_gcfg_dpfe_block_dmem_read_BITS 1 +#define mc2_glb_gcfg_dpfe_block_dmem_read_SHIFT 19 +#define mc2_glb_gcfg_dpfe_block_dmem_read_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_block_dmem_write_MASK 0x00040000 +#define mc2_glb_gcfg_dpfe_block_dmem_write_ALIGN 0 +#define mc2_glb_gcfg_dpfe_block_dmem_write_BITS 1 +#define mc2_glb_gcfg_dpfe_block_dmem_write_SHIFT 18 +#define mc2_glb_gcfg_dpfe_block_dmem_write_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_block_imem_read_MASK 0x00020000 +#define mc2_glb_gcfg_dpfe_block_imem_read_ALIGN 0 +#define mc2_glb_gcfg_dpfe_block_imem_read_BITS 1 +#define mc2_glb_gcfg_dpfe_block_imem_read_SHIFT 17 +#define mc2_glb_gcfg_dpfe_block_imem_read_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_block_imem_write_MASK 0x00010000 +#define mc2_glb_gcfg_dpfe_block_imem_write_ALIGN 0 +#define mc2_glb_gcfg_dpfe_block_imem_write_BITS 1 +#define mc2_glb_gcfg_dpfe_block_imem_write_SHIFT 16 +#define mc2_glb_gcfg_dpfe_block_imem_write_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_disable_cpu_MASK 0x00008000 +#define mc2_glb_gcfg_dpfe_disable_cpu_ALIGN 0 +#define mc2_glb_gcfg_dpfe_disable_cpu_BITS 1 +#define mc2_glb_gcfg_dpfe_disable_cpu_SHIFT 15 +#define mc2_glb_gcfg_dpfe_disable_cpu_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_reserved2_MASK 0x00004000 +#define mc2_glb_gcfg_reserved2_ALIGN 0 +#define mc2_glb_gcfg_reserved2_BITS 1 +#define mc2_glb_gcfg_reserved2_SHIFT 14 + + +#define mc2_glb_gcfg_wr_data_mode_MASK 0x00002000 +#define mc2_glb_gcfg_wr_data_mode_ALIGN 0 +#define mc2_glb_gcfg_wr_data_mode_BITS 1 +#define mc2_glb_gcfg_wr_data_mode_SHIFT 13 +#define mc2_glb_gcfg_wr_data_mode_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_exe_notify_mode_MASK 0x00001000 +#define mc2_glb_gcfg_exe_notify_mode_ALIGN 0 +#define mc2_glb_gcfg_exe_notify_mode_BITS 1 +#define mc2_glb_gcfg_exe_notify_mode_SHIFT 12 +#define mc2_glb_gcfg_exe_notify_mode_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_shmoo_done_MASK 0x00000800 +#define mc2_glb_gcfg_shmoo_done_ALIGN 0 +#define mc2_glb_gcfg_shmoo_done_BITS 1 +#define mc2_glb_gcfg_shmoo_done_SHIFT 11 +#define mc2_glb_gcfg_shmoo_done_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dfi_en_MASK 0x00000400 +#define mc2_glb_gcfg_dfi_en_ALIGN 0 +#define mc2_glb_gcfg_dfi_en_BITS 1 +#define mc2_glb_gcfg_dfi_en_SHIFT 10 +#define mc2_glb_gcfg_dfi_en_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_mclksrc_MASK 0x00000200 +#define mc2_glb_gcfg_mclksrc_ALIGN 0 +#define mc2_glb_gcfg_mclksrc_BITS 1 +#define mc2_glb_gcfg_mclksrc_SHIFT 9 +#define mc2_glb_gcfg_mclksrc_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_meminitdone_MASK 0x00000100 +#define mc2_glb_gcfg_meminitdone_ALIGN 0 +#define mc2_glb_gcfg_meminitdone_BITS 1 +#define mc2_glb_gcfg_meminitdone_SHIFT 8 +#define mc2_glb_gcfg_meminitdone_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_uart_tx_share_en_MASK 0x00000080 +#define mc2_glb_gcfg_dpfe_uart_tx_share_en_ALIGN 0 +#define mc2_glb_gcfg_dpfe_uart_tx_share_en_BITS 1 +#define mc2_glb_gcfg_dpfe_uart_tx_share_en_SHIFT 7 +#define mc2_glb_gcfg_dpfe_uart_tx_share_en_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_uart_tx_en_MASK 0x00000040 +#define mc2_glb_gcfg_dpfe_uart_tx_en_ALIGN 0 +#define mc2_glb_gcfg_dpfe_uart_tx_en_BITS 1 +#define mc2_glb_gcfg_dpfe_uart_tx_en_SHIFT 6 +#define mc2_glb_gcfg_dpfe_uart_tx_en_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_uart_rx_mode_MASK 0x00000030 +#define mc2_glb_gcfg_dpfe_uart_rx_mode_ALIGN 0 +#define mc2_glb_gcfg_dpfe_uart_rx_mode_BITS 2 +#define mc2_glb_gcfg_dpfe_uart_rx_mode_SHIFT 4 +#define mc2_glb_gcfg_dpfe_uart_rx_mode_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_sec_intr_mask_lock_MASK 0x00000008 +#define mc2_glb_gcfg_sec_intr_mask_lock_ALIGN 0 +#define mc2_glb_gcfg_sec_intr_mask_lock_BITS 1 +#define mc2_glb_gcfg_sec_intr_mask_lock_SHIFT 3 +#define mc2_glb_gcfg_sec_intr_mask_lock_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_reserved3_MASK 0x00000006 +#define mc2_glb_gcfg_reserved3_ALIGN 0 +#define mc2_glb_gcfg_reserved3_BITS 2 +#define mc2_glb_gcfg_reserved3_SHIFT 1 + + +#define mc2_glb_gcfg_dpath_mode_MASK 0x00000001 +#define mc2_glb_gcfg_dpath_mode_ALIGN 0 +#define mc2_glb_gcfg_dpath_mode_BITS 1 +#define mc2_glb_gcfg_dpath_mode_SHIFT 0 +#define mc2_glb_gcfg_dpath_mode_DEFAULT 0x00000000 + + + + +#define mc2_glb_auto_self_refresh_enable_MASK 0x80000000 +#define mc2_glb_auto_self_refresh_enable_ALIGN 0 +#define mc2_glb_auto_self_refresh_enable_BITS 1 +#define mc2_glb_auto_self_refresh_enable_SHIFT 31 +#define mc2_glb_auto_self_refresh_enable_DEFAULT 0x00000000 + + +#define mc2_glb_auto_self_refresh_immediate_MASK 0x40000000 +#define mc2_glb_auto_self_refresh_immediate_ALIGN 0 +#define mc2_glb_auto_self_refresh_immediate_BITS 1 +#define mc2_glb_auto_self_refresh_immediate_SHIFT 30 +#define mc2_glb_auto_self_refresh_immediate_DEFAULT 0x00000000 + + +#define mc2_glb_auto_self_refresh_idle_count_MASK 0x3fffffff +#define mc2_glb_auto_self_refresh_idle_count_ALIGN 0 +#define mc2_glb_auto_self_refresh_idle_count_BITS 30 +#define mc2_glb_auto_self_refresh_idle_count_SHIFT 0 +#define mc2_glb_auto_self_refresh_idle_count_DEFAULT 0x00000000 + + + + +#define mc2_glb_pwr_mgr_reserved0_MASK 0xffff0000 +#define mc2_glb_pwr_mgr_reserved0_ALIGN 0 +#define mc2_glb_pwr_mgr_reserved0_BITS 16 +#define mc2_glb_pwr_mgr_reserved0_SHIFT 16 + + +#define mc2_glb_pwr_mgr_idle_mask_MASK 0x0000ffff +#define mc2_glb_pwr_mgr_idle_mask_ALIGN 0 +#define mc2_glb_pwr_mgr_idle_mask_BITS 16 +#define mc2_glb_pwr_mgr_idle_mask_SHIFT 0 +#define mc2_glb_pwr_mgr_idle_mask_DEFAULT 0x00000000 + + + + +#define mc2_axi_acc_acc_eack_MASK 0x80000000 +#define mc2_axi_acc_acc_eack_ALIGN 0 +#define mc2_axi_acc_acc_eack_BITS 1 +#define mc2_axi_acc_acc_eack_SHIFT 31 +#define mc2_axi_acc_acc_eack_DEFAULT 0x00000000 + + +#define mc2_axi_acc_reserved0_MASK 0x7fffff00 +#define mc2_axi_acc_reserved0_ALIGN 0 +#define mc2_axi_acc_reserved0_BITS 23 +#define mc2_axi_acc_reserved0_SHIFT 8 + + +#define mc2_axi_acc_acc_sw_MASK 0x00000080 +#define mc2_axi_acc_acc_sw_ALIGN 0 +#define mc2_axi_acc_acc_sw_BITS 1 +#define mc2_axi_acc_acc_sw_SHIFT 7 +#define mc2_axi_acc_acc_sw_DEFAULT 0x00000001 + + +#define mc2_axi_acc_acc_sr_MASK 0x00000040 +#define mc2_axi_acc_acc_sr_ALIGN 0 +#define mc2_axi_acc_acc_sr_BITS 1 +#define mc2_axi_acc_acc_sr_SHIFT 6 +#define mc2_axi_acc_acc_sr_DEFAULT 0x00000001 + + +#define mc2_axi_acc_acc_nsw_MASK 0x00000020 +#define mc2_axi_acc_acc_nsw_ALIGN 0 +#define mc2_axi_acc_acc_nsw_BITS 1 +#define mc2_axi_acc_acc_nsw_SHIFT 5 +#define mc2_axi_acc_acc_nsw_DEFAULT 0x00000001 + + +#define mc2_axi_acc_acc_nsr_MASK 0x00000010 +#define mc2_axi_acc_acc_nsr_ALIGN 0 +#define mc2_axi_acc_acc_nsr_BITS 1 +#define mc2_axi_acc_acc_nsr_SHIFT 4 +#define mc2_axi_acc_acc_nsr_DEFAULT 0x00000001 + + +#define mc2_axi_acc_perm_sw_MASK 0x00000008 +#define mc2_axi_acc_perm_sw_ALIGN 0 +#define mc2_axi_acc_perm_sw_BITS 1 +#define mc2_axi_acc_perm_sw_SHIFT 3 +#define mc2_axi_acc_perm_sw_DEFAULT 0x00000001 + + +#define mc2_axi_acc_perm_sr_MASK 0x00000004 +#define mc2_axi_acc_perm_sr_ALIGN 0 +#define mc2_axi_acc_perm_sr_BITS 1 +#define mc2_axi_acc_perm_sr_SHIFT 2 +#define mc2_axi_acc_perm_sr_DEFAULT 0x00000001 + + +#define mc2_axi_acc_perm_nsw_MASK 0x00000002 +#define mc2_axi_acc_perm_nsw_ALIGN 0 +#define mc2_axi_acc_perm_nsw_BITS 1 +#define mc2_axi_acc_perm_nsw_SHIFT 1 +#define mc2_axi_acc_perm_nsw_DEFAULT 0x00000001 + + +#define mc2_axi_acc_perm_nsr_MASK 0x00000001 +#define mc2_axi_acc_perm_nsr_ALIGN 0 +#define mc2_axi_acc_perm_nsr_BITS 1 +#define mc2_axi_acc_perm_nsr_SHIFT 0 +#define mc2_axi_acc_perm_nsr_DEFAULT 0x00000001 + + + + +#define mc2_axi_ver_reserved0_MASK 0xffffff00 +#define mc2_axi_ver_reserved0_ALIGN 0 +#define mc2_axi_ver_reserved0_BITS 24 +#define mc2_axi_ver_reserved0_SHIFT 8 + + +#define mc2_axi_ver_version_MASK 0x000000ff +#define mc2_axi_ver_version_ALIGN 0 +#define mc2_axi_ver_version_BITS 8 +#define mc2_axi_ver_version_SHIFT 0 +#define mc2_axi_ver_version_DEFAULT 0x00000000 + + + + +#define mc2_axi_CFG_reserved0_MASK 0xe0000000 +#define mc2_axi_CFG_reserved0_ALIGN 0 +#define mc2_axi_CFG_reserved0_BITS 3 +#define mc2_axi_CFG_reserved0_SHIFT 29 + + +#define mc2_axi_CFG_CPQ_WRITE_IN_TRANSIT_MASK 0x1f800000 +#define mc2_axi_CFG_CPQ_WRITE_IN_TRANSIT_ALIGN 0 +#define mc2_axi_CFG_CPQ_WRITE_IN_TRANSIT_BITS 6 +#define mc2_axi_CFG_CPQ_WRITE_IN_TRANSIT_SHIFT 23 +#define mc2_axi_CFG_CPQ_WRITE_IN_TRANSIT_DEFAULT 0x00000008 + + +#define mc2_axi_CFG_CPU_WRITE_IN_TRANSIT_MASK 0x007e0000 +#define mc2_axi_CFG_CPU_WRITE_IN_TRANSIT_ALIGN 0 +#define mc2_axi_CFG_CPU_WRITE_IN_TRANSIT_BITS 6 +#define mc2_axi_CFG_CPU_WRITE_IN_TRANSIT_SHIFT 17 +#define mc2_axi_CFG_CPU_WRITE_IN_TRANSIT_DEFAULT 0x00000008 + + +#define mc2_axi_CFG_WRITE_ACK_MODE_MASK 0x00010000 +#define mc2_axi_CFG_WRITE_ACK_MODE_ALIGN 0 +#define mc2_axi_CFG_WRITE_ACK_MODE_BITS 1 +#define mc2_axi_CFG_WRITE_ACK_MODE_SHIFT 16 +#define mc2_axi_CFG_WRITE_ACK_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_reserved1_MASK 0x0000f000 +#define mc2_axi_CFG_reserved1_ALIGN 0 +#define mc2_axi_CFG_reserved1_BITS 4 +#define mc2_axi_CFG_reserved1_SHIFT 12 + + +#define mc2_axi_CFG_MC_CAP_MUX_SEL_MASK 0x00000f00 +#define mc2_axi_CFG_MC_CAP_MUX_SEL_ALIGN 0 +#define mc2_axi_CFG_MC_CAP_MUX_SEL_BITS 4 +#define mc2_axi_CFG_MC_CAP_MUX_SEL_SHIFT 8 +#define mc2_axi_CFG_MC_CAP_MUX_SEL_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_MC_CAP_MUX_VLD_SEL_MASK 0x000000c0 +#define mc2_axi_CFG_MC_CAP_MUX_VLD_SEL_ALIGN 0 +#define mc2_axi_CFG_MC_CAP_MUX_VLD_SEL_BITS 2 +#define mc2_axi_CFG_MC_CAP_MUX_VLD_SEL_SHIFT 6 +#define mc2_axi_CFG_MC_CAP_MUX_VLD_SEL_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_MC_CAP_MUX_TRIG_SEL_MASK 0x00000030 +#define mc2_axi_CFG_MC_CAP_MUX_TRIG_SEL_ALIGN 0 +#define mc2_axi_CFG_MC_CAP_MUX_TRIG_SEL_BITS 2 +#define mc2_axi_CFG_MC_CAP_MUX_TRIG_SEL_SHIFT 4 +#define mc2_axi_CFG_MC_CAP_MUX_TRIG_SEL_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_RPT_NON_SECURE_ERR_MASK 0x00000008 +#define mc2_axi_CFG_RPT_NON_SECURE_ERR_ALIGN 0 +#define mc2_axi_CFG_RPT_NON_SECURE_ERR_BITS 1 +#define mc2_axi_CFG_RPT_NON_SECURE_ERR_SHIFT 3 +#define mc2_axi_CFG_RPT_NON_SECURE_ERR_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_RPT_SECURE_ERR_MASK 0x00000004 +#define mc2_axi_CFG_RPT_SECURE_ERR_ALIGN 0 +#define mc2_axi_CFG_RPT_SECURE_ERR_BITS 1 +#define mc2_axi_CFG_RPT_SECURE_ERR_SHIFT 2 +#define mc2_axi_CFG_RPT_SECURE_ERR_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_CMD_WAIT_WDATA_MASK 0x00000002 +#define mc2_axi_CFG_CMD_WAIT_WDATA_ALIGN 0 +#define mc2_axi_CFG_CMD_WAIT_WDATA_BITS 1 +#define mc2_axi_CFG_CMD_WAIT_WDATA_SHIFT 1 +#define mc2_axi_CFG_CMD_WAIT_WDATA_DEFAULT 0x00000001 + + +#define mc2_axi_CFG_DIS_RBUS_MSTR_MASK 0x00000001 +#define mc2_axi_CFG_DIS_RBUS_MSTR_ALIGN 0 +#define mc2_axi_CFG_DIS_RBUS_MSTR_BITS 1 +#define mc2_axi_CFG_DIS_RBUS_MSTR_SHIFT 0 +#define mc2_axi_CFG_DIS_RBUS_MSTR_DEFAULT 0x00000000 + + + + +#define mc2_axi_REP_ARB_MODE_reserved0_MASK 0xfffff000 +#define mc2_axi_REP_ARB_MODE_reserved0_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_reserved0_BITS 20 +#define mc2_axi_REP_ARB_MODE_reserved0_SHIFT 12 + + +#define mc2_axi_REP_ARB_MODE_RD_BUFFER_SIZE_MASK 0x00000800 +#define mc2_axi_REP_ARB_MODE_RD_BUFFER_SIZE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_RD_BUFFER_SIZE_BITS 1 +#define mc2_axi_REP_ARB_MODE_RD_BUFFER_SIZE_SHIFT 11 +#define mc2_axi_REP_ARB_MODE_RD_BUFFER_SIZE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_LEN_MASK 0x00000780 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_LEN_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_LEN_BITS 4 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_LEN_SHIFT 7 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_LEN_DEFAULT 0x00000007 + + +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_EN_MASK 0x00000040 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_EN_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_EN_BITS 1 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_EN_SHIFT 6 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_EN_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_DIS_RRESP_ERR_MODE_MASK 0x00000020 +#define mc2_axi_REP_ARB_MODE_DIS_RRESP_ERR_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_DIS_RRESP_ERR_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_DIS_RRESP_ERR_MODE_SHIFT 5 +#define mc2_axi_REP_ARB_MODE_DIS_RRESP_ERR_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_RD_FIFO_MODE_MASK 0x00000010 +#define mc2_axi_REP_ARB_MODE_RD_FIFO_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_RD_FIFO_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_RD_FIFO_MODE_SHIFT 4 +#define mc2_axi_REP_ARB_MODE_RD_FIFO_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_RD_PACKET_MODE_MASK 0x00000008 +#define mc2_axi_REP_ARB_MODE_RD_PACKET_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_RD_PACKET_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_RD_PACKET_MODE_SHIFT 3 +#define mc2_axi_REP_ARB_MODE_RD_PACKET_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_DIS_BRESP_ERR_MODE_MASK 0x00000004 +#define mc2_axi_REP_ARB_MODE_DIS_BRESP_ERR_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_DIS_BRESP_ERR_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_DIS_BRESP_ERR_MODE_SHIFT 2 +#define mc2_axi_REP_ARB_MODE_DIS_BRESP_ERR_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_WR_FIFO_MODE_MASK 0x00000002 +#define mc2_axi_REP_ARB_MODE_WR_FIFO_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_WR_FIFO_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_WR_FIFO_MODE_SHIFT 1 +#define mc2_axi_REP_ARB_MODE_WR_FIFO_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_WR_REPLY_MODE_MASK 0x00000001 +#define mc2_axi_REP_ARB_MODE_WR_REPLY_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_WR_REPLY_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_WR_REPLY_MODE_SHIFT 0 +#define mc2_axi_REP_ARB_MODE_WR_REPLY_MODE_DEFAULT 0x00000000 + + + + +#define mc2_axi_queue_cfg_reserved0_MASK 0xfffffc00 +#define mc2_axi_queue_cfg_reserved0_ALIGN 0 +#define mc2_axi_queue_cfg_reserved0_BITS 22 +#define mc2_axi_queue_cfg_reserved0_SHIFT 10 + + +#define mc2_axi_queue_cfg_disable_backpressure_MASK 0x00000200 +#define mc2_axi_queue_cfg_disable_backpressure_ALIGN 0 +#define mc2_axi_queue_cfg_disable_backpressure_BITS 1 +#define mc2_axi_queue_cfg_disable_backpressure_SHIFT 9 +#define mc2_axi_queue_cfg_disable_backpressure_DEFAULT 0x00000000 + + +#define mc2_axi_queue_cfg_overflow_drop_MASK 0x00000100 +#define mc2_axi_queue_cfg_overflow_drop_ALIGN 0 +#define mc2_axi_queue_cfg_overflow_drop_BITS 1 +#define mc2_axi_queue_cfg_overflow_drop_SHIFT 8 +#define mc2_axi_queue_cfg_overflow_drop_DEFAULT 0x00000000 + + +#define mc2_axi_queue_cfg_reserved1_MASK 0x000000f0 +#define mc2_axi_queue_cfg_reserved1_ALIGN 0 +#define mc2_axi_queue_cfg_reserved1_BITS 4 +#define mc2_axi_queue_cfg_reserved1_SHIFT 4 + + +#define mc2_axi_queue_cfg_queue_start_MASK 0x0000000f +#define mc2_axi_queue_cfg_queue_start_ALIGN 0 +#define mc2_axi_queue_cfg_queue_start_BITS 4 +#define mc2_axi_queue_cfg_queue_start_SHIFT 0 +#define mc2_axi_queue_cfg_queue_start_DEFAULT 0x00000000 + + + + +#define mc2_axi_queue_size0_reserved0_MASK 0x80000000 +#define mc2_axi_queue_size0_reserved0_ALIGN 0 +#define mc2_axi_queue_size0_reserved0_BITS 1 +#define mc2_axi_queue_size0_reserved0_SHIFT 31 + + +#define mc2_axi_queue_size0_size3_MASK 0x7f000000 +#define mc2_axi_queue_size0_size3_ALIGN 0 +#define mc2_axi_queue_size0_size3_BITS 7 +#define mc2_axi_queue_size0_size3_SHIFT 24 +#define mc2_axi_queue_size0_size3_DEFAULT 0x00000008 + + +#define mc2_axi_queue_size0_reserved1_MASK 0x00800000 +#define mc2_axi_queue_size0_reserved1_ALIGN 0 +#define mc2_axi_queue_size0_reserved1_BITS 1 +#define mc2_axi_queue_size0_reserved1_SHIFT 23 + + +#define mc2_axi_queue_size0_size2_MASK 0x007f0000 +#define mc2_axi_queue_size0_size2_ALIGN 0 +#define mc2_axi_queue_size0_size2_BITS 7 +#define mc2_axi_queue_size0_size2_SHIFT 16 +#define mc2_axi_queue_size0_size2_DEFAULT 0x00000008 + + +#define mc2_axi_queue_size0_reserved2_MASK 0x00008000 +#define mc2_axi_queue_size0_reserved2_ALIGN 0 +#define mc2_axi_queue_size0_reserved2_BITS 1 +#define mc2_axi_queue_size0_reserved2_SHIFT 15 + + +#define mc2_axi_queue_size0_size1_MASK 0x00007f00 +#define mc2_axi_queue_size0_size1_ALIGN 0 +#define mc2_axi_queue_size0_size1_BITS 7 +#define mc2_axi_queue_size0_size1_SHIFT 8 +#define mc2_axi_queue_size0_size1_DEFAULT 0x00000008 + + +#define mc2_axi_queue_size0_reserved3_MASK 0x00000080 +#define mc2_axi_queue_size0_reserved3_ALIGN 0 +#define mc2_axi_queue_size0_reserved3_BITS 1 +#define mc2_axi_queue_size0_reserved3_SHIFT 7 + + +#define mc2_axi_queue_size0_size0_MASK 0x0000007f +#define mc2_axi_queue_size0_size0_ALIGN 0 +#define mc2_axi_queue_size0_size0_BITS 7 +#define mc2_axi_queue_size0_size0_SHIFT 0 +#define mc2_axi_queue_size0_size0_DEFAULT 0x00000008 + + + + +#define mc2_axi_queue_map0_reserved0_MASK 0xffffff00 +#define mc2_axi_queue_map0_reserved0_ALIGN 0 +#define mc2_axi_queue_map0_reserved0_BITS 24 +#define mc2_axi_queue_map0_reserved0_SHIFT 8 + + +#define mc2_axi_queue_map0_cpq_rd_MASK 0x000000c0 +#define mc2_axi_queue_map0_cpq_rd_ALIGN 0 +#define mc2_axi_queue_map0_cpq_rd_BITS 2 +#define mc2_axi_queue_map0_cpq_rd_SHIFT 6 +#define mc2_axi_queue_map0_cpq_rd_DEFAULT 0x00000003 + + +#define mc2_axi_queue_map0_cpq_wr_MASK 0x00000030 +#define mc2_axi_queue_map0_cpq_wr_ALIGN 0 +#define mc2_axi_queue_map0_cpq_wr_BITS 2 +#define mc2_axi_queue_map0_cpq_wr_SHIFT 4 +#define mc2_axi_queue_map0_cpq_wr_DEFAULT 0x00000002 + + +#define mc2_axi_queue_map0_cpu_rd_MASK 0x0000000c +#define mc2_axi_queue_map0_cpu_rd_ALIGN 0 +#define mc2_axi_queue_map0_cpu_rd_BITS 2 +#define mc2_axi_queue_map0_cpu_rd_SHIFT 2 +#define mc2_axi_queue_map0_cpu_rd_DEFAULT 0x00000001 + + +#define mc2_axi_queue_map0_cpu_wr_MASK 0x00000003 +#define mc2_axi_queue_map0_cpu_wr_ALIGN 0 +#define mc2_axi_queue_map0_cpu_wr_BITS 2 +#define mc2_axi_queue_map0_cpu_wr_SHIFT 0 +#define mc2_axi_queue_map0_cpu_wr_DEFAULT 0x00000000 + + +#define mc2_axi_SCRATCH_scratch_MASK 0xffffffff +#define mc2_axi_SCRATCH_scratch_ALIGN 0 +#define mc2_axi_SCRATCH_scratch_BITS 32 +#define mc2_axi_SCRATCH_scratch_SHIFT 0 +#define mc2_axi_SCRATCH_scratch_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_acc_acc_eack_MASK 0x80000000 +#define mc2_chn_ddr_acc_acc_eack_ALIGN 0 +#define mc2_chn_ddr_acc_acc_eack_BITS 1 +#define mc2_chn_ddr_acc_acc_eack_SHIFT 31 +#define mc2_chn_ddr_acc_acc_eack_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_acc_reserved0_MASK 0x7fffff00 +#define mc2_chn_ddr_acc_reserved0_ALIGN 0 +#define mc2_chn_ddr_acc_reserved0_BITS 23 +#define mc2_chn_ddr_acc_reserved0_SHIFT 8 + + +#define mc2_chn_ddr_acc_acc_sw_MASK 0x00000080 +#define mc2_chn_ddr_acc_acc_sw_ALIGN 0 +#define mc2_chn_ddr_acc_acc_sw_BITS 1 +#define mc2_chn_ddr_acc_acc_sw_SHIFT 7 +#define mc2_chn_ddr_acc_acc_sw_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_acc_sr_MASK 0x00000040 +#define mc2_chn_ddr_acc_acc_sr_ALIGN 0 +#define mc2_chn_ddr_acc_acc_sr_BITS 1 +#define mc2_chn_ddr_acc_acc_sr_SHIFT 6 +#define mc2_chn_ddr_acc_acc_sr_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_acc_nsw_MASK 0x00000020 +#define mc2_chn_ddr_acc_acc_nsw_ALIGN 0 +#define mc2_chn_ddr_acc_acc_nsw_BITS 1 +#define mc2_chn_ddr_acc_acc_nsw_SHIFT 5 +#define mc2_chn_ddr_acc_acc_nsw_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_acc_nsr_MASK 0x00000010 +#define mc2_chn_ddr_acc_acc_nsr_ALIGN 0 +#define mc2_chn_ddr_acc_acc_nsr_BITS 1 +#define mc2_chn_ddr_acc_acc_nsr_SHIFT 4 +#define mc2_chn_ddr_acc_acc_nsr_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_perm_sw_MASK 0x00000008 +#define mc2_chn_ddr_acc_perm_sw_ALIGN 0 +#define mc2_chn_ddr_acc_perm_sw_BITS 1 +#define mc2_chn_ddr_acc_perm_sw_SHIFT 3 +#define mc2_chn_ddr_acc_perm_sw_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_perm_sr_MASK 0x00000004 +#define mc2_chn_ddr_acc_perm_sr_ALIGN 0 +#define mc2_chn_ddr_acc_perm_sr_BITS 1 +#define mc2_chn_ddr_acc_perm_sr_SHIFT 2 +#define mc2_chn_ddr_acc_perm_sr_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_perm_nsw_MASK 0x00000002 +#define mc2_chn_ddr_acc_perm_nsw_ALIGN 0 +#define mc2_chn_ddr_acc_perm_nsw_BITS 1 +#define mc2_chn_ddr_acc_perm_nsw_SHIFT 1 +#define mc2_chn_ddr_acc_perm_nsw_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_perm_nsr_MASK 0x00000001 +#define mc2_chn_ddr_acc_perm_nsr_ALIGN 0 +#define mc2_chn_ddr_acc_perm_nsr_BITS 1 +#define mc2_chn_ddr_acc_perm_nsr_SHIFT 0 +#define mc2_chn_ddr_acc_perm_nsr_DEFAULT 0x00000001 + + + + +#define mc2_chn_ddr_ver_reserved0_MASK 0xffffff00 +#define mc2_chn_ddr_ver_reserved0_ALIGN 0 +#define mc2_chn_ddr_ver_reserved0_BITS 24 +#define mc2_chn_ddr_ver_reserved0_SHIFT 8 + + +#define mc2_chn_ddr_ver_version_MASK 0x000000ff +#define mc2_chn_ddr_ver_version_ALIGN 0 +#define mc2_chn_ddr_ver_version_BITS 8 +#define mc2_chn_ddr_ver_version_SHIFT 0 +#define mc2_chn_ddr_ver_version_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_chn_arb_cfg_fifo_mode_MASK 0x80000000 +#define mc2_chn_ddr_chn_arb_cfg_fifo_mode_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_fifo_mode_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_fifo_mode_SHIFT 31 +#define mc2_chn_ddr_chn_arb_cfg_fifo_mode_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_addr_chk_disable_MASK 0x40000000 +#define mc2_chn_ddr_chn_arb_cfg_addr_chk_disable_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_addr_chk_disable_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_addr_chk_disable_SHIFT 30 +#define mc2_chn_ddr_chn_arb_cfg_addr_chk_disable_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_reserved0_MASK 0x3c000000 +#define mc2_chn_ddr_chn_arb_cfg_reserved0_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_reserved0_BITS 4 +#define mc2_chn_ddr_chn_arb_cfg_reserved0_SHIFT 26 + + +#define mc2_chn_ddr_chn_arb_cfg_always_auto_precharge_MASK 0x02000000 +#define mc2_chn_ddr_chn_arb_cfg_always_auto_precharge_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_always_auto_precharge_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_always_auto_precharge_SHIFT 25 +#define mc2_chn_ddr_chn_arb_cfg_always_auto_precharge_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_auto_precharge_MASK 0x01000000 +#define mc2_chn_ddr_chn_arb_cfg_auto_precharge_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_auto_precharge_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_auto_precharge_SHIFT 24 +#define mc2_chn_ddr_chn_arb_cfg_auto_precharge_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_reserved1_MASK 0x00ffffe0 +#define mc2_chn_ddr_chn_arb_cfg_reserved1_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_reserved1_BITS 19 +#define mc2_chn_ddr_chn_arb_cfg_reserved1_SHIFT 5 + + +#define mc2_chn_ddr_chn_arb_cfg_extra_slot_en_MASK 0x00000010 +#define mc2_chn_ddr_chn_arb_cfg_extra_slot_en_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_extra_slot_en_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_extra_slot_en_SHIFT 4 +#define mc2_chn_ddr_chn_arb_cfg_extra_slot_en_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpq_MASK 0x00000008 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpq_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpq_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpq_SHIFT 3 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpq_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpu_MASK 0x00000004 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpu_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpu_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpu_SHIFT 2 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpu_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_pri_elevate_dis_MASK 0x00000002 +#define mc2_chn_ddr_chn_arb_cfg_pri_elevate_dis_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_pri_elevate_dis_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_pri_elevate_dis_SHIFT 1 +#define mc2_chn_ddr_chn_arb_cfg_pri_elevate_dis_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_arb_mode_MASK 0x00000001 +#define mc2_chn_ddr_chn_arb_cfg_arb_mode_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_arb_mode_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_arb_mode_SHIFT 0 +#define mc2_chn_ddr_chn_arb_cfg_arb_mode_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_chn_arb_param_reserved0_MASK 0x80000000 +#define mc2_chn_ddr_chn_arb_param_reserved0_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_reserved0_BITS 1 +#define mc2_chn_ddr_chn_arb_param_reserved0_SHIFT 31 + + +#define mc2_chn_ddr_chn_arb_param_vq2_timeout_MASK 0x7f000000 +#define mc2_chn_ddr_chn_arb_param_vq2_timeout_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_vq2_timeout_BITS 7 +#define mc2_chn_ddr_chn_arb_param_vq2_timeout_SHIFT 24 +#define mc2_chn_ddr_chn_arb_param_vq2_timeout_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_param_reserved1_MASK 0x00800000 +#define mc2_chn_ddr_chn_arb_param_reserved1_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_reserved1_BITS 1 +#define mc2_chn_ddr_chn_arb_param_reserved1_SHIFT 23 + + +#define mc2_chn_ddr_chn_arb_param_vq0_timeout_MASK 0x007f0000 +#define mc2_chn_ddr_chn_arb_param_vq0_timeout_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_vq0_timeout_BITS 7 +#define mc2_chn_ddr_chn_arb_param_vq0_timeout_SHIFT 16 +#define mc2_chn_ddr_chn_arb_param_vq0_timeout_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_param_reserved2_MASK 0x0000c000 +#define mc2_chn_ddr_chn_arb_param_reserved2_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_reserved2_BITS 2 +#define mc2_chn_ddr_chn_arb_param_reserved2_SHIFT 14 + + +#define mc2_chn_ddr_chn_arb_param_wrr6_weight_MASK 0x00003000 +#define mc2_chn_ddr_chn_arb_param_wrr6_weight_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_wrr6_weight_BITS 2 +#define mc2_chn_ddr_chn_arb_param_wrr6_weight_SHIFT 12 +#define mc2_chn_ddr_chn_arb_param_wrr6_weight_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_chn_arb_param_wrr5_weight_MASK 0x00000c00 +#define mc2_chn_ddr_chn_arb_param_wrr5_weight_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_wrr5_weight_BITS 2 +#define mc2_chn_ddr_chn_arb_param_wrr5_weight_SHIFT 10 +#define mc2_chn_ddr_chn_arb_param_wrr5_weight_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_chn_arb_param_wrr0_weight_MASK 0x00000300 +#define mc2_chn_ddr_chn_arb_param_wrr0_weight_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_wrr0_weight_BITS 2 +#define mc2_chn_ddr_chn_arb_param_wrr0_weight_SHIFT 8 +#define mc2_chn_ddr_chn_arb_param_wrr0_weight_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_chn_arb_param_reserved3_MASK 0x000000e0 +#define mc2_chn_ddr_chn_arb_param_reserved3_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_reserved3_BITS 3 +#define mc2_chn_ddr_chn_arb_param_reserved3_SHIFT 5 + + +#define mc2_chn_ddr_chn_arb_param_rdwr_wrr_weight_MASK 0x0000001f +#define mc2_chn_ddr_chn_arb_param_rdwr_wrr_weight_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_rdwr_wrr_weight_BITS 5 +#define mc2_chn_ddr_chn_arb_param_rdwr_wrr_weight_SHIFT 0 +#define mc2_chn_ddr_chn_arb_param_rdwr_wrr_weight_DEFAULT 0x00000010 + + + + +#define mc2_chn_ddr_chn_sch_cfg_opt_chn_hshk_dis_MASK 0x80000000 +#define mc2_chn_ddr_chn_sch_cfg_opt_chn_hshk_dis_ALIGN 0 +#define mc2_chn_ddr_chn_sch_cfg_opt_chn_hshk_dis_BITS 1 +#define mc2_chn_ddr_chn_sch_cfg_opt_chn_hshk_dis_SHIFT 31 +#define mc2_chn_ddr_chn_sch_cfg_opt_chn_hshk_dis_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_sch_cfg_reserved0_MASK 0x7ffffff8 +#define mc2_chn_ddr_chn_sch_cfg_reserved0_ALIGN 0 +#define mc2_chn_ddr_chn_sch_cfg_reserved0_BITS 28 +#define mc2_chn_ddr_chn_sch_cfg_reserved0_SHIFT 3 + + +#define mc2_chn_ddr_chn_sch_cfg_num_cmdr_MASK 0x00000007 +#define mc2_chn_ddr_chn_sch_cfg_num_cmdr_ALIGN 0 +#define mc2_chn_ddr_chn_sch_cfg_num_cmdr_BITS 3 +#define mc2_chn_ddr_chn_sch_cfg_num_cmdr_SHIFT 0 +#define mc2_chn_ddr_chn_sch_cfg_num_cmdr_DEFAULT 0x00000007 + + + + +#define mc2_chn_ddr_phy_st_reserved0_MASK 0xffffffe0 +#define mc2_chn_ddr_phy_st_reserved0_ALIGN 0 +#define mc2_chn_ddr_phy_st_reserved0_BITS 27 +#define mc2_chn_ddr_phy_st_reserved0_SHIFT 5 + + +#define mc2_chn_ddr_phy_st_phy_st_phy_ready_MASK 0x00000010 +#define mc2_chn_ddr_phy_st_phy_st_phy_ready_ALIGN 0 +#define mc2_chn_ddr_phy_st_phy_st_phy_ready_BITS 1 +#define mc2_chn_ddr_phy_st_phy_st_phy_ready_SHIFT 4 +#define mc2_chn_ddr_phy_st_phy_st_phy_ready_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_phy_st_reserved1_MASK 0x00000008 +#define mc2_chn_ddr_phy_st_reserved1_ALIGN 0 +#define mc2_chn_ddr_phy_st_reserved1_BITS 1 +#define mc2_chn_ddr_phy_st_reserved1_SHIFT 3 + + +#define mc2_chn_ddr_phy_st_phy_st_sw_reset_MASK 0x00000004 +#define mc2_chn_ddr_phy_st_phy_st_sw_reset_ALIGN 0 +#define mc2_chn_ddr_phy_st_phy_st_sw_reset_BITS 1 +#define mc2_chn_ddr_phy_st_phy_st_sw_reset_SHIFT 2 +#define mc2_chn_ddr_phy_st_phy_st_sw_reset_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_phy_st_phy_st_hw_reset_MASK 0x00000002 +#define mc2_chn_ddr_phy_st_phy_st_hw_reset_ALIGN 0 +#define mc2_chn_ddr_phy_st_phy_st_hw_reset_BITS 1 +#define mc2_chn_ddr_phy_st_phy_st_hw_reset_SHIFT 1 +#define mc2_chn_ddr_phy_st_phy_st_hw_reset_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_phy_st_phy_st_phy_power_up_MASK 0x00000001 +#define mc2_chn_ddr_phy_st_phy_st_phy_power_up_ALIGN 0 +#define mc2_chn_ddr_phy_st_phy_st_phy_power_up_BITS 1 +#define mc2_chn_ddr_phy_st_phy_st_phy_power_up_SHIFT 0 +#define mc2_chn_ddr_phy_st_phy_st_phy_power_up_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_dram_cfg_reserved0_MASK 0xfffe0000 +#define mc2_chn_ddr_dram_cfg_reserved0_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_reserved0_BITS 15 +#define mc2_chn_ddr_dram_cfg_reserved0_SHIFT 17 + + +#define mc2_chn_ddr_dram_cfg_dram_srx_cmd_MASK 0x00010000 +#define mc2_chn_ddr_dram_cfg_dram_srx_cmd_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_dram_srx_cmd_BITS 1 +#define mc2_chn_ddr_dram_cfg_dram_srx_cmd_SHIFT 16 +#define mc2_chn_ddr_dram_cfg_dram_srx_cmd_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs_mode_MASK 0x0000c000 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs_mode_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs_mode_BITS 2 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs_mode_SHIFT 14 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs_mode_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs1_enable_MASK 0x00002000 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs1_enable_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs1_enable_BITS 1 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs1_enable_SHIFT 13 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs1_enable_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dram_cfg_reserved1_MASK 0x00001800 +#define mc2_chn_ddr_dram_cfg_reserved1_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_reserved1_BITS 2 +#define mc2_chn_ddr_dram_cfg_reserved1_SHIFT 11 + + +#define mc2_chn_ddr_dram_cfg_dram_cfg_2taddrcmd_MASK 0x00000400 +#define mc2_chn_ddr_dram_cfg_dram_cfg_2taddrcmd_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_dram_cfg_2taddrcmd_BITS 1 +#define mc2_chn_ddr_dram_cfg_dram_cfg_2taddrcmd_SHIFT 10 +#define mc2_chn_ddr_dram_cfg_dram_cfg_2taddrcmd_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dram_cfg_cmd_timeout_MASK 0x000003f0 +#define mc2_chn_ddr_dram_cfg_cmd_timeout_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_cmd_timeout_BITS 6 +#define mc2_chn_ddr_dram_cfg_cmd_timeout_SHIFT 4 +#define mc2_chn_ddr_dram_cfg_cmd_timeout_DEFAULT 0x0000003f + + +#define mc2_chn_ddr_dram_cfg_dram_cfg_dramtype_MASK 0x0000000f +#define mc2_chn_ddr_dram_cfg_dram_cfg_dramtype_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_dram_cfg_dramtype_BITS 4 +#define mc2_chn_ddr_dram_cfg_dram_cfg_dramtype_SHIFT 0 +#define mc2_chn_ddr_dram_cfg_dram_cfg_dramtype_DEFAULT 0x00000004 + + + + +#define mc2_chn_ddr_dcmd_sch_sel_MASK 0x80000000 +#define mc2_chn_ddr_dcmd_sch_sel_ALIGN 0 +#define mc2_chn_ddr_dcmd_sch_sel_BITS 1 +#define mc2_chn_ddr_dcmd_sch_sel_SHIFT 31 +#define mc2_chn_ddr_dcmd_sch_sel_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dcmd_reserved0_MASK 0x7ffe0000 +#define mc2_chn_ddr_dcmd_reserved0_ALIGN 0 +#define mc2_chn_ddr_dcmd_reserved0_BITS 14 +#define mc2_chn_ddr_dcmd_reserved0_SHIFT 17 + + +#define mc2_chn_ddr_dcmd_dramcmdreq_MASK 0x00010000 +#define mc2_chn_ddr_dcmd_dramcmdreq_ALIGN 0 +#define mc2_chn_ddr_dcmd_dramcmdreq_BITS 1 +#define mc2_chn_ddr_dcmd_dramcmdreq_SHIFT 16 +#define mc2_chn_ddr_dcmd_dramcmdreq_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dcmd_reserved1_MASK 0x0000fc00 +#define mc2_chn_ddr_dcmd_reserved1_ALIGN 0 +#define mc2_chn_ddr_dcmd_reserved1_BITS 6 +#define mc2_chn_ddr_dcmd_reserved1_SHIFT 10 + + +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs1_MASK 0x00000200 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs1_ALIGN 0 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs1_BITS 1 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs1_SHIFT 9 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs1_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs0_MASK 0x00000100 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs0_ALIGN 0 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs0_BITS 1 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs0_SHIFT 8 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs0_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dcmd_reserved2_MASK 0x000000e0 +#define mc2_chn_ddr_dcmd_reserved2_ALIGN 0 +#define mc2_chn_ddr_dcmd_reserved2_BITS 3 +#define mc2_chn_ddr_dcmd_reserved2_SHIFT 5 + + +#define mc2_chn_ddr_dcmd_dcmd_memcmd_MASK 0x0000001f +#define mc2_chn_ddr_dcmd_dcmd_memcmd_ALIGN 0 +#define mc2_chn_ddr_dcmd_dcmd_memcmd_BITS 5 +#define mc2_chn_ddr_dcmd_dcmd_memcmd_SHIFT 0 +#define mc2_chn_ddr_dcmd_dcmd_memcmd_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_dmode_0_reserved0_MASK 0x80000000 +#define mc2_chn_ddr_dmode_0_reserved0_ALIGN 0 +#define mc2_chn_ddr_dmode_0_reserved0_BITS 1 +#define mc2_chn_ddr_dmode_0_reserved0_SHIFT 31 + + +#define mc2_chn_ddr_dmode_0_dmode_modedata_MASK 0x7fff0000 +#define mc2_chn_ddr_dmode_0_dmode_modedata_ALIGN 0 +#define mc2_chn_ddr_dmode_0_dmode_modedata_BITS 15 +#define mc2_chn_ddr_dmode_0_dmode_modedata_SHIFT 16 +#define mc2_chn_ddr_dmode_0_dmode_modedata_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dmode_0_reserved1_MASK 0x00008000 +#define mc2_chn_ddr_dmode_0_reserved1_ALIGN 0 +#define mc2_chn_ddr_dmode_0_reserved1_BITS 1 +#define mc2_chn_ddr_dmode_0_reserved1_SHIFT 15 + + +#define mc2_chn_ddr_dmode_0_dmode_emodedata_MASK 0x00007fff +#define mc2_chn_ddr_dmode_0_dmode_emodedata_ALIGN 0 +#define mc2_chn_ddr_dmode_0_dmode_emodedata_BITS 15 +#define mc2_chn_ddr_dmode_0_dmode_emodedata_SHIFT 0 +#define mc2_chn_ddr_dmode_0_dmode_emodedata_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_dmode_2_reserved0_MASK 0x80000000 +#define mc2_chn_ddr_dmode_2_reserved0_ALIGN 0 +#define mc2_chn_ddr_dmode_2_reserved0_BITS 1 +#define mc2_chn_ddr_dmode_2_reserved0_SHIFT 31 + + +#define mc2_chn_ddr_dmode_2_dmode_emode3data_MASK 0x7fff0000 +#define mc2_chn_ddr_dmode_2_dmode_emode3data_ALIGN 0 +#define mc2_chn_ddr_dmode_2_dmode_emode3data_BITS 15 +#define mc2_chn_ddr_dmode_2_dmode_emode3data_SHIFT 16 +#define mc2_chn_ddr_dmode_2_dmode_emode3data_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dmode_2_reserved1_MASK 0x00008000 +#define mc2_chn_ddr_dmode_2_reserved1_ALIGN 0 +#define mc2_chn_ddr_dmode_2_reserved1_BITS 1 +#define mc2_chn_ddr_dmode_2_reserved1_SHIFT 15 + + +#define mc2_chn_ddr_dmode_2_dmode_emode2data_MASK 0x00007fff +#define mc2_chn_ddr_dmode_2_dmode_emode2data_ALIGN 0 +#define mc2_chn_ddr_dmode_2_dmode_emode2data_BITS 15 +#define mc2_chn_ddr_dmode_2_dmode_emode2data_SHIFT 0 +#define mc2_chn_ddr_dmode_2_dmode_emode2data_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_odt_reserved0_MASK 0xfffffc00 +#define mc2_chn_ddr_odt_reserved0_ALIGN 0 +#define mc2_chn_ddr_odt_reserved0_BITS 22 +#define mc2_chn_ddr_odt_reserved0_SHIFT 10 + + +#define mc2_chn_ddr_odt_odt_dynodten_MASK 0x00000200 +#define mc2_chn_ddr_odt_odt_dynodten_ALIGN 0 +#define mc2_chn_ddr_odt_odt_dynodten_BITS 1 +#define mc2_chn_ddr_odt_odt_dynodten_SHIFT 9 +#define mc2_chn_ddr_odt_odt_dynodten_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_odt_odt_csoddodten_MASK 0x00000100 +#define mc2_chn_ddr_odt_odt_csoddodten_ALIGN 0 +#define mc2_chn_ddr_odt_odt_csoddodten_BITS 1 +#define mc2_chn_ddr_odt_odt_csoddodten_SHIFT 8 +#define mc2_chn_ddr_odt_odt_csoddodten_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs1_odt_wr_cs1_MASK 0x00000080 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs1_ALIGN 0 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs1_BITS 1 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs1_SHIFT 7 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs1_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs1_odt_wr_cs0_MASK 0x00000040 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs0_ALIGN 0 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs0_BITS 1 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs0_SHIFT 6 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs0_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs1_odt_rd_cs1_MASK 0x00000020 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs1_ALIGN 0 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs1_BITS 1 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs1_SHIFT 5 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs1_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs1_odt_rd_cs0_MASK 0x00000010 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs0_ALIGN 0 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs0_BITS 1 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs0_SHIFT 4 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs0_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs0_odt_wr_cs1_MASK 0x00000008 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs1_ALIGN 0 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs1_BITS 1 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs1_SHIFT 3 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs1_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs0_odt_wr_cs0_MASK 0x00000004 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs0_ALIGN 0 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs0_BITS 1 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs0_SHIFT 2 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs0_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs0_odt_rd_cs1_MASK 0x00000002 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs1_ALIGN 0 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs1_BITS 1 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs1_SHIFT 1 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs1_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs0_odt_rd_cs0_MASK 0x00000001 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs0_ALIGN 0 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs0_BITS 1 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs0_SHIFT 0 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs0_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_ddr_param_cmd0_tAL_MASK 0xff000000 +#define mc2_chn_ddr_ddr_param_cmd0_tAL_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd0_tAL_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd0_tAL_SHIFT 24 +#define mc2_chn_ddr_ddr_param_cmd0_tAL_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_cmd0_tRCD_MASK 0x00ff0000 +#define mc2_chn_ddr_ddr_param_cmd0_tRCD_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd0_tRCD_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd0_tRCD_SHIFT 16 +#define mc2_chn_ddr_ddr_param_cmd0_tRCD_DEFAULT 0x00000006 + + +#define mc2_chn_ddr_ddr_param_cmd0_tCWL_MASK 0x0000ff00 +#define mc2_chn_ddr_ddr_param_cmd0_tCWL_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd0_tCWL_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd0_tCWL_SHIFT 8 +#define mc2_chn_ddr_ddr_param_cmd0_tCWL_DEFAULT 0x00000004 + + +#define mc2_chn_ddr_ddr_param_cmd0_tCL_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_cmd0_tCL_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd0_tCL_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd0_tCL_SHIFT 0 +#define mc2_chn_ddr_ddr_param_cmd0_tCL_DEFAULT 0x00000005 + + + + +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_L_MASK 0xff000000 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_L_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_L_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_L_SHIFT 24 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_L_DEFAULT 0x00000008 + + +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_S_MASK 0x00ff0000 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_S_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_S_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_S_SHIFT 16 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_S_DEFAULT 0x00000008 + + +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_L_MASK 0x0000ff00 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_L_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_L_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_L_SHIFT 8 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_L_DEFAULT 0x00000004 + + +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_S_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_S_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_S_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_S_SHIFT 0 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_S_DEFAULT 0x00000004 + + + + +#define mc2_chn_ddr_ddr_param_cmd2_reserved0_MASK 0xffffff00 +#define mc2_chn_ddr_ddr_param_cmd2_reserved0_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd2_reserved0_BITS 24 +#define mc2_chn_ddr_ddr_param_cmd2_reserved0_SHIFT 8 + + +#define mc2_chn_ddr_ddr_param_cmd2_tCCDMW_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_cmd2_tCCDMW_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd2_tCCDMW_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd2_tCCDMW_SHIFT 0 +#define mc2_chn_ddr_ddr_param_cmd2_tCCDMW_DEFAULT 0x00000020 + + + + +#define mc2_chn_ddr_ddr_param_cmd3_tFAW_MASK 0xff000000 +#define mc2_chn_ddr_ddr_param_cmd3_tFAW_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd3_tFAW_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd3_tFAW_SHIFT 24 +#define mc2_chn_ddr_ddr_param_cmd3_tFAW_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_cmd3_tRPpb_MASK 0x00ff0000 +#define mc2_chn_ddr_ddr_param_cmd3_tRPpb_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd3_tRPpb_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd3_tRPpb_SHIFT 16 +#define mc2_chn_ddr_ddr_param_cmd3_tRPpb_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_cmd3_tRPab_MASK 0x0000ff00 +#define mc2_chn_ddr_ddr_param_cmd3_tRPab_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd3_tRPab_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd3_tRPab_SHIFT 8 +#define mc2_chn_ddr_ddr_param_cmd3_tRPab_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_cmd3_tRAS_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_cmd3_tRAS_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd3_tRAS_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd3_tRAS_SHIFT 0 +#define mc2_chn_ddr_ddr_param_cmd3_tRAS_DEFAULT 0x00000011 + + + + +#define mc2_chn_ddr_ddr_param_dat0_tWTR_L_MASK 0xff000000 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_L_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_L_BITS 8 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_L_SHIFT 24 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_L_DEFAULT 0x00000002 + + +#define mc2_chn_ddr_ddr_param_dat0_tWTR_S_MASK 0x00ff0000 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_S_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_S_BITS 8 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_S_SHIFT 16 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_S_DEFAULT 0x00000002 + + +#define mc2_chn_ddr_ddr_param_dat0_tWR_MASK 0x0000ff00 +#define mc2_chn_ddr_ddr_param_dat0_tWR_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tWR_BITS 8 +#define mc2_chn_ddr_ddr_param_dat0_tWR_SHIFT 8 +#define mc2_chn_ddr_ddr_param_dat0_tWR_DEFAULT 0x00000020 + + +#define mc2_chn_ddr_ddr_param_dat0_tDQSCK_MASK 0x000000f0 +#define mc2_chn_ddr_ddr_param_dat0_tDQSCK_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tDQSCK_BITS 4 +#define mc2_chn_ddr_ddr_param_dat0_tDQSCK_SHIFT 4 +#define mc2_chn_ddr_ddr_param_dat0_tDQSCK_DEFAULT 0x00000007 + + +#define mc2_chn_ddr_ddr_param_dat0_reserved0_MASK 0x0000000c +#define mc2_chn_ddr_ddr_param_dat0_reserved0_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_reserved0_BITS 2 +#define mc2_chn_ddr_ddr_param_dat0_reserved0_SHIFT 2 + + +#define mc2_chn_ddr_ddr_param_dat0_tWPST_MASK 0x00000002 +#define mc2_chn_ddr_ddr_param_dat0_tWPST_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tWPST_BITS 1 +#define mc2_chn_ddr_ddr_param_dat0_tWPST_SHIFT 1 +#define mc2_chn_ddr_ddr_param_dat0_tWPST_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_dat0_tWPRE_MASK 0x00000001 +#define mc2_chn_ddr_ddr_param_dat0_tWPRE_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tWPRE_BITS 1 +#define mc2_chn_ddr_ddr_param_dat0_tWPRE_SHIFT 0 +#define mc2_chn_ddr_ddr_param_dat0_tWPRE_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_ddr_param_dat1_tRPST_MASK 0x80000000 +#define mc2_chn_ddr_ddr_param_dat1_tRPST_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tRPST_BITS 1 +#define mc2_chn_ddr_ddr_param_dat1_tRPST_SHIFT 31 +#define mc2_chn_ddr_ddr_param_dat1_tRPST_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_ddr_param_dat1_tRPRE_MASK 0x40000000 +#define mc2_chn_ddr_ddr_param_dat1_tRPRE_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tRPRE_BITS 1 +#define mc2_chn_ddr_ddr_param_dat1_tRPRE_SHIFT 30 +#define mc2_chn_ddr_ddr_param_dat1_tRPRE_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_dat1_reserved0_MASK 0x3f000000 +#define mc2_chn_ddr_ddr_param_dat1_reserved0_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_reserved0_BITS 6 +#define mc2_chn_ddr_ddr_param_dat1_reserved0_SHIFT 24 + + +#define mc2_chn_ddr_ddr_param_dat1_tW2R_MASK 0x00ff0000 +#define mc2_chn_ddr_ddr_param_dat1_tW2R_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tW2R_BITS 8 +#define mc2_chn_ddr_ddr_param_dat1_tW2R_SHIFT 16 +#define mc2_chn_ddr_ddr_param_dat1_tW2R_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_dat1_tR2R_MASK 0x0000f000 +#define mc2_chn_ddr_ddr_param_dat1_tR2R_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tR2R_BITS 4 +#define mc2_chn_ddr_ddr_param_dat1_tR2R_SHIFT 12 +#define mc2_chn_ddr_ddr_param_dat1_tR2R_DEFAULT 0x00000003 + + +#define mc2_chn_ddr_ddr_param_dat1_tW2W_MASK 0x00000f00 +#define mc2_chn_ddr_ddr_param_dat1_tW2W_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tW2W_BITS 4 +#define mc2_chn_ddr_ddr_param_dat1_tW2W_SHIFT 8 +#define mc2_chn_ddr_ddr_param_dat1_tW2W_DEFAULT 0x00000008 + + +#define mc2_chn_ddr_ddr_param_dat1_tR2W_MASK 0x000000f0 +#define mc2_chn_ddr_ddr_param_dat1_tR2W_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tR2W_BITS 4 +#define mc2_chn_ddr_ddr_param_dat1_tR2W_SHIFT 4 +#define mc2_chn_ddr_ddr_param_dat1_tR2W_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_dat1_reserved1_MASK 0x0000000f +#define mc2_chn_ddr_ddr_param_dat1_reserved1_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_reserved1_BITS 4 +#define mc2_chn_ddr_ddr_param_dat1_reserved1_SHIFT 0 + + + + +#define mc2_chn_ddr_ddr_param_pre0_autoprecharge_MASK 0x80000000 +#define mc2_chn_ddr_ddr_param_pre0_autoprecharge_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pre0_autoprecharge_BITS 1 +#define mc2_chn_ddr_ddr_param_pre0_autoprecharge_SHIFT 31 +#define mc2_chn_ddr_ddr_param_pre0_autoprecharge_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_pre0_reserved0_MASK 0x7fff0000 +#define mc2_chn_ddr_ddr_param_pre0_reserved0_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pre0_reserved0_BITS 15 +#define mc2_chn_ddr_ddr_param_pre0_reserved0_SHIFT 16 + + +#define mc2_chn_ddr_ddr_param_pre0_tPPD_MASK 0x0000ff00 +#define mc2_chn_ddr_ddr_param_pre0_tPPD_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pre0_tPPD_BITS 8 +#define mc2_chn_ddr_ddr_param_pre0_tPPD_SHIFT 8 +#define mc2_chn_ddr_ddr_param_pre0_tPPD_DEFAULT 0x00000002 + + +#define mc2_chn_ddr_ddr_param_pre0_tRTP_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_pre0_tRTP_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pre0_tRTP_BITS 8 +#define mc2_chn_ddr_ddr_param_pre0_tRTP_SHIFT 0 +#define mc2_chn_ddr_ddr_param_pre0_tRTP_DEFAULT 0x00000002 + + + + +#define mc2_chn_ddr_ddr_param_pwr0_tXP_MASK 0xfff00000 +#define mc2_chn_ddr_ddr_param_pwr0_tXP_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pwr0_tXP_BITS 12 +#define mc2_chn_ddr_ddr_param_pwr0_tXP_SHIFT 20 +#define mc2_chn_ddr_ddr_param_pwr0_tXP_DEFAULT 0x00000003 + + +#define mc2_chn_ddr_ddr_param_pwr0_tXSR_MASK 0x000fff00 +#define mc2_chn_ddr_ddr_param_pwr0_tXSR_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pwr0_tXSR_BITS 12 +#define mc2_chn_ddr_ddr_param_pwr0_tXSR_SHIFT 8 +#define mc2_chn_ddr_ddr_param_pwr0_tXSR_DEFAULT 0x00000002 + + +#define mc2_chn_ddr_ddr_param_pwr0_tSR_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_pwr0_tSR_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pwr0_tSR_BITS 8 +#define mc2_chn_ddr_ddr_param_pwr0_tSR_SHIFT 0 +#define mc2_chn_ddr_ddr_param_pwr0_tSR_DEFAULT 0x00000003 + + + + +#define mc2_chn_ddr_ddr_param_zqc0_reserved0_MASK 0xf0000000 +#define mc2_chn_ddr_ddr_param_zqc0_reserved0_ALIGN 0 +#define mc2_chn_ddr_ddr_param_zqc0_reserved0_BITS 4 +#define mc2_chn_ddr_ddr_param_zqc0_reserved0_SHIFT 28 + + +#define mc2_chn_ddr_ddr_param_zqc0_tZQCL_MASK 0x0fff0000 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCL_ALIGN 0 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCL_BITS 12 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCL_SHIFT 16 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCL_DEFAULT 0x00000100 + + +#define mc2_chn_ddr_ddr_param_zqc0_reserved1_MASK 0x0000fe00 +#define mc2_chn_ddr_ddr_param_zqc0_reserved1_ALIGN 0 +#define mc2_chn_ddr_ddr_param_zqc0_reserved1_BITS 7 +#define mc2_chn_ddr_ddr_param_zqc0_reserved1_SHIFT 9 + + +#define mc2_chn_ddr_ddr_param_zqc0_tZQCS_MASK 0x000001ff +#define mc2_chn_ddr_ddr_param_zqc0_tZQCS_ALIGN 0 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCS_BITS 9 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCS_SHIFT 0 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCS_DEFAULT 0x00000040 + + + + +#define mc2_chn_ddr_refresh_aref0_refmaxdelay_MASK 0xf0000000 +#define mc2_chn_ddr_refresh_aref0_refmaxdelay_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_refmaxdelay_BITS 4 +#define mc2_chn_ddr_refresh_aref0_refmaxdelay_SHIFT 28 +#define mc2_chn_ddr_refresh_aref0_refmaxdelay_DEFAULT 0x00000004 + + +#define mc2_chn_ddr_refresh_aref0_reserved0_MASK 0x0e000000 +#define mc2_chn_ddr_refresh_aref0_reserved0_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_reserved0_BITS 3 +#define mc2_chn_ddr_refresh_aref0_reserved0_SHIFT 25 + + +#define mc2_chn_ddr_refresh_aref0_pbref_ordered_MASK 0x01000000 +#define mc2_chn_ddr_refresh_aref0_pbref_ordered_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_pbref_ordered_BITS 1 +#define mc2_chn_ddr_refresh_aref0_pbref_ordered_SHIFT 24 +#define mc2_chn_ddr_refresh_aref0_pbref_ordered_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_refresh_aref0_pbref_intlv_MASK 0x00ff0000 +#define mc2_chn_ddr_refresh_aref0_pbref_intlv_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_pbref_intlv_BITS 8 +#define mc2_chn_ddr_refresh_aref0_pbref_intlv_SHIFT 16 +#define mc2_chn_ddr_refresh_aref0_pbref_intlv_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_refresh_aref0_abref_num_MASK 0x0000f000 +#define mc2_chn_ddr_refresh_aref0_abref_num_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_abref_num_BITS 4 +#define mc2_chn_ddr_refresh_aref0_abref_num_SHIFT 12 +#define mc2_chn_ddr_refresh_aref0_abref_num_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_refresh_aref0_reserved1_MASK 0x00000c00 +#define mc2_chn_ddr_refresh_aref0_reserved1_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_reserved1_BITS 2 +#define mc2_chn_ddr_refresh_aref0_reserved1_SHIFT 10 + + +#define mc2_chn_ddr_refresh_aref0_tREFI_MASK 0x000003ff +#define mc2_chn_ddr_refresh_aref0_tREFI_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_tREFI_BITS 10 +#define mc2_chn_ddr_refresh_aref0_tREFI_SHIFT 0 +#define mc2_chn_ddr_refresh_aref0_tREFI_DEFAULT 0x00000103 + + + + +#define mc2_chn_ddr_refresh_aref1_refdisable_MASK 0x80000000 +#define mc2_chn_ddr_refresh_aref1_refdisable_ALIGN 0 +#define mc2_chn_ddr_refresh_aref1_refdisable_BITS 1 +#define mc2_chn_ddr_refresh_aref1_refdisable_SHIFT 31 +#define mc2_chn_ddr_refresh_aref1_refdisable_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_refresh_aref1_reserved0_MASK 0x70000000 +#define mc2_chn_ddr_refresh_aref1_reserved0_ALIGN 0 +#define mc2_chn_ddr_refresh_aref1_reserved0_BITS 3 +#define mc2_chn_ddr_refresh_aref1_reserved0_SHIFT 28 + + +#define mc2_chn_ddr_refresh_aref1_tRFCpb_MASK 0x0fff0000 +#define mc2_chn_ddr_refresh_aref1_tRFCpb_ALIGN 0 +#define mc2_chn_ddr_refresh_aref1_tRFCpb_BITS 12 +#define mc2_chn_ddr_refresh_aref1_tRFCpb_SHIFT 16 +#define mc2_chn_ddr_refresh_aref1_tRFCpb_DEFAULT 0x0000008d + + +#define mc2_chn_ddr_refresh_aref1_reserved1_MASK 0x0000f000 +#define mc2_chn_ddr_refresh_aref1_reserved1_ALIGN 0 +#define mc2_chn_ddr_refresh_aref1_reserved1_BITS 4 +#define mc2_chn_ddr_refresh_aref1_reserved1_SHIFT 12 + + +#define mc2_chn_ddr_refresh_aref1_tRFCab_MASK 0x00000fff +#define mc2_chn_ddr_refresh_aref1_tRFCab_ALIGN 0 +#define mc2_chn_ddr_refresh_aref1_tRFCab_BITS 12 +#define mc2_chn_ddr_refresh_aref1_tRFCab_SHIFT 0 +#define mc2_chn_ddr_refresh_aref1_tRFCab_DEFAULT 0x0000011a + + + + +#define mc2_chn_ddr_auto_self_refresh_enable_MASK 0x80000000 +#define mc2_chn_ddr_auto_self_refresh_enable_ALIGN 0 +#define mc2_chn_ddr_auto_self_refresh_enable_BITS 1 +#define mc2_chn_ddr_auto_self_refresh_enable_SHIFT 31 +#define mc2_chn_ddr_auto_self_refresh_enable_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_auto_self_refresh_immediate_MASK 0x40000000 +#define mc2_chn_ddr_auto_self_refresh_immediate_ALIGN 0 +#define mc2_chn_ddr_auto_self_refresh_immediate_BITS 1 +#define mc2_chn_ddr_auto_self_refresh_immediate_SHIFT 30 +#define mc2_chn_ddr_auto_self_refresh_immediate_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_auto_self_refresh_idle_count_MASK 0x3fffffff +#define mc2_chn_ddr_auto_self_refresh_idle_count_ALIGN 0 +#define mc2_chn_ddr_auto_self_refresh_idle_count_BITS 30 +#define mc2_chn_ddr_auto_self_refresh_idle_count_SHIFT 0 +#define mc2_chn_ddr_auto_self_refresh_idle_count_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_auto_zqcs_enable_MASK 0x80000000 +#define mc2_chn_ddr_auto_zqcs_enable_ALIGN 0 +#define mc2_chn_ddr_auto_zqcs_enable_BITS 1 +#define mc2_chn_ddr_auto_zqcs_enable_SHIFT 31 +#define mc2_chn_ddr_auto_zqcs_enable_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_auto_zqcs_timer_count_MASK 0x7fffffe0 +#define mc2_chn_ddr_auto_zqcs_timer_count_ALIGN 0 +#define mc2_chn_ddr_auto_zqcs_timer_count_BITS 26 +#define mc2_chn_ddr_auto_zqcs_timer_count_SHIFT 5 +#define mc2_chn_ddr_auto_zqcs_timer_count_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_auto_zqcs_reserved0_MASK 0x0000001f +#define mc2_chn_ddr_auto_zqcs_reserved0_ALIGN 0 +#define mc2_chn_ddr_auto_zqcs_reserved0_BITS 5 +#define mc2_chn_ddr_auto_zqcs_reserved0_SHIFT 0 + + + + +#define mc2_chn_ddr_dfi_error_dfi_error_b_vld_MASK 0x80000000 +#define mc2_chn_ddr_dfi_error_dfi_error_b_vld_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_b_vld_BITS 1 +#define mc2_chn_ddr_dfi_error_dfi_error_b_vld_SHIFT 31 +#define mc2_chn_ddr_dfi_error_dfi_error_b_vld_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dfi_error_dfi_error_b_clr_MASK 0x40000000 +#define mc2_chn_ddr_dfi_error_dfi_error_b_clr_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_b_clr_BITS 1 +#define mc2_chn_ddr_dfi_error_dfi_error_b_clr_SHIFT 30 +#define mc2_chn_ddr_dfi_error_dfi_error_b_clr_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dfi_error_reserved0_MASK 0x3f000000 +#define mc2_chn_ddr_dfi_error_reserved0_ALIGN 0 +#define mc2_chn_ddr_dfi_error_reserved0_BITS 6 +#define mc2_chn_ddr_dfi_error_reserved0_SHIFT 24 + + +#define mc2_chn_ddr_dfi_error_dfi_error_b_info_MASK 0x00ff0000 +#define mc2_chn_ddr_dfi_error_dfi_error_b_info_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_b_info_BITS 8 +#define mc2_chn_ddr_dfi_error_dfi_error_b_info_SHIFT 16 +#define mc2_chn_ddr_dfi_error_dfi_error_b_info_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dfi_error_dfi_error_a_vld_MASK 0x00008000 +#define mc2_chn_ddr_dfi_error_dfi_error_a_vld_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_a_vld_BITS 1 +#define mc2_chn_ddr_dfi_error_dfi_error_a_vld_SHIFT 15 +#define mc2_chn_ddr_dfi_error_dfi_error_a_vld_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dfi_error_dfi_error_a_clr_MASK 0x00004000 +#define mc2_chn_ddr_dfi_error_dfi_error_a_clr_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_a_clr_BITS 1 +#define mc2_chn_ddr_dfi_error_dfi_error_a_clr_SHIFT 14 +#define mc2_chn_ddr_dfi_error_dfi_error_a_clr_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dfi_error_reserved1_MASK 0x00003f00 +#define mc2_chn_ddr_dfi_error_reserved1_ALIGN 0 +#define mc2_chn_ddr_dfi_error_reserved1_BITS 6 +#define mc2_chn_ddr_dfi_error_reserved1_SHIFT 8 + + +#define mc2_chn_ddr_dfi_error_dfi_error_a_info_MASK 0x000000ff +#define mc2_chn_ddr_dfi_error_dfi_error_a_info_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_a_info_BITS 8 +#define mc2_chn_ddr_dfi_error_dfi_error_a_info_SHIFT 0 +#define mc2_chn_ddr_dfi_error_dfi_error_a_info_DEFAULT 0x00000000 + + +#define mc2_afx_acc_acc_eack_MASK 0x80000000 +#define mc2_afx_acc_acc_eack_ALIGN 0 +#define mc2_afx_acc_acc_eack_BITS 1 +#define mc2_afx_acc_acc_eack_SHIFT 31 +#define mc2_afx_acc_acc_eack_DEFAULT 0x00000000 + + +#define mc2_afx_acc_reserved0_MASK 0x7fffff00 +#define mc2_afx_acc_reserved0_ALIGN 0 +#define mc2_afx_acc_reserved0_BITS 23 +#define mc2_afx_acc_reserved0_SHIFT 8 + + +#define mc2_afx_acc_acc_sw_MASK 0x00000080 +#define mc2_afx_acc_acc_sw_ALIGN 0 +#define mc2_afx_acc_acc_sw_BITS 1 +#define mc2_afx_acc_acc_sw_SHIFT 7 +#define mc2_afx_acc_acc_sw_DEFAULT 0x00000001 + + +#define mc2_afx_acc_acc_sr_MASK 0x00000040 +#define mc2_afx_acc_acc_sr_ALIGN 0 +#define mc2_afx_acc_acc_sr_BITS 1 +#define mc2_afx_acc_acc_sr_SHIFT 6 +#define mc2_afx_acc_acc_sr_DEFAULT 0x00000001 + + +#define mc2_afx_acc_acc_nsw_MASK 0x00000020 +#define mc2_afx_acc_acc_nsw_ALIGN 0 +#define mc2_afx_acc_acc_nsw_BITS 1 +#define mc2_afx_acc_acc_nsw_SHIFT 5 +#define mc2_afx_acc_acc_nsw_DEFAULT 0x00000001 + + +#define mc2_afx_acc_acc_nsr_MASK 0x00000010 +#define mc2_afx_acc_acc_nsr_ALIGN 0 +#define mc2_afx_acc_acc_nsr_BITS 1 +#define mc2_afx_acc_acc_nsr_SHIFT 4 +#define mc2_afx_acc_acc_nsr_DEFAULT 0x00000001 + + +#define mc2_afx_acc_perm_sw_MASK 0x00000008 +#define mc2_afx_acc_perm_sw_ALIGN 0 +#define mc2_afx_acc_perm_sw_BITS 1 +#define mc2_afx_acc_perm_sw_SHIFT 3 +#define mc2_afx_acc_perm_sw_DEFAULT 0x00000001 + + +#define mc2_afx_acc_perm_sr_MASK 0x00000004 +#define mc2_afx_acc_perm_sr_ALIGN 0 +#define mc2_afx_acc_perm_sr_BITS 1 +#define mc2_afx_acc_perm_sr_SHIFT 2 +#define mc2_afx_acc_perm_sr_DEFAULT 0x00000001 + + +#define mc2_afx_acc_perm_nsw_MASK 0x00000002 +#define mc2_afx_acc_perm_nsw_ALIGN 0 +#define mc2_afx_acc_perm_nsw_BITS 1 +#define mc2_afx_acc_perm_nsw_SHIFT 1 +#define mc2_afx_acc_perm_nsw_DEFAULT 0x00000001 + + +#define mc2_afx_acc_perm_nsr_MASK 0x00000001 +#define mc2_afx_acc_perm_nsr_ALIGN 0 +#define mc2_afx_acc_perm_nsr_BITS 1 +#define mc2_afx_acc_perm_nsr_SHIFT 0 +#define mc2_afx_acc_perm_nsr_DEFAULT 0x00000001 + + + + +#define mc2_afx_ver_reserved0_MASK 0xffffff00 +#define mc2_afx_ver_reserved0_ALIGN 0 +#define mc2_afx_ver_reserved0_BITS 24 +#define mc2_afx_ver_reserved0_SHIFT 8 + + +#define mc2_afx_ver_version_MASK 0x000000ff +#define mc2_afx_ver_version_ALIGN 0 +#define mc2_afx_ver_version_BITS 8 +#define mc2_afx_ver_version_SHIFT 0 +#define mc2_afx_ver_version_DEFAULT 0x00000000 + + + + +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_enable_MASK 0x80000000 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_enable_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_enable_BITS 1 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_enable_SHIFT 31 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_enable_DEFAULT 0x00000001 + + +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_reserved0_MASK 0x7fffff00 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_reserved0_BITS 23 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_addr_hi_BITS 8 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_addr_hi_DEFAULT 0x00000001 + + + + +#define mc2_afx_sram_match_cfg_sram_start_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_sram_match_cfg_sram_start_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_lo_addr_lo_BITS 32 +#define mc2_afx_sram_match_cfg_sram_start_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_lo_addr_lo_DEFAULT 0x7fff0000 + + + + +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_reserved0_MASK 0xffffff00 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_reserved0_BITS 24 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_addr_hi_BITS 8 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_addr_hi_DEFAULT 0x00000001 + + + + +#define mc2_afx_sram_match_cfg_sram_end_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_sram_match_cfg_sram_end_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_end_addr_lo_addr_lo_BITS 32 +#define mc2_afx_sram_match_cfg_sram_end_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_sram_match_cfg_sram_end_addr_lo_addr_lo_DEFAULT 0x7fffffff + + + + +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_enable_MASK 0x80000000 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_enable_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_enable_BITS 1 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_enable_SHIFT 31 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_enable_DEFAULT 0x00000000 + + +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_reserved0_MASK 0x7fffff00 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_reserved0_BITS 23 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg0_start_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg0_start_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg0_start_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_reserved0_MASK 0xffffff00 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_reserved0_BITS 24 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg0_end_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg0_end_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_end_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg0_end_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg0_end_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_enable_MASK 0x80000000 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_enable_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_enable_BITS 1 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_enable_SHIFT 31 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_enable_DEFAULT 0x00000000 + + +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_reserved0_MASK 0x7fffff00 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_reserved0_BITS 23 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg1_start_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg1_start_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg1_start_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_reserved0_MASK 0xffffff00 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_reserved0_BITS 24 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg1_end_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg1_end_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_end_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg1_end_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg1_end_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_enable_MASK 0x80000000 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_enable_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_enable_BITS 1 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_enable_SHIFT 31 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_enable_DEFAULT 0x00000000 + + +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_reserved0_MASK 0x7fffff00 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_reserved0_BITS 23 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg2_start_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg2_start_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg2_start_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_reserved0_MASK 0xffffff00 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_reserved0_BITS 24 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg2_end_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg2_end_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_end_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg2_end_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg2_end_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_enable_MASK 0x80000000 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_enable_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_enable_BITS 1 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_enable_SHIFT 31 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_enable_DEFAULT 0x00000000 + + +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_reserved0_MASK 0x7fffff00 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_reserved0_BITS 23 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg3_start_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg3_start_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg3_start_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_reserved0_MASK 0xffffff00 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_reserved0_BITS 24 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg3_end_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg3_end_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_end_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg3_end_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg3_end_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_srcid_fltr_cfg0_srcid_enable_MASK 0x80000000 +#define mc2_afx_srcid_fltr_cfg0_srcid_enable_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_enable_BITS 1 +#define mc2_afx_srcid_fltr_cfg0_srcid_enable_SHIFT 31 +#define mc2_afx_srcid_fltr_cfg0_srcid_enable_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved0_MASK 0x70000000 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved0_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved0_BITS 3 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved0_SHIFT 28 + + +#define mc2_afx_srcid_fltr_cfg0_srcid_start_srcid_MASK 0x0fff0000 +#define mc2_afx_srcid_fltr_cfg0_srcid_start_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_start_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg0_srcid_start_srcid_SHIFT 16 +#define mc2_afx_srcid_fltr_cfg0_srcid_start_srcid_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved1_MASK 0x0000f000 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved1_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved1_BITS 4 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved1_SHIFT 12 + + +#define mc2_afx_srcid_fltr_cfg0_srcid_end_srcid_MASK 0x00000fff +#define mc2_afx_srcid_fltr_cfg0_srcid_end_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_end_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg0_srcid_end_srcid_SHIFT 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_end_srcid_DEFAULT 0x00000000 + + + + +#define mc2_afx_srcid_fltr_cfg1_srcid_enable_MASK 0x80000000 +#define mc2_afx_srcid_fltr_cfg1_srcid_enable_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_enable_BITS 1 +#define mc2_afx_srcid_fltr_cfg1_srcid_enable_SHIFT 31 +#define mc2_afx_srcid_fltr_cfg1_srcid_enable_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved0_MASK 0x70000000 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved0_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved0_BITS 3 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved0_SHIFT 28 + + +#define mc2_afx_srcid_fltr_cfg1_srcid_start_srcid_MASK 0x0fff0000 +#define mc2_afx_srcid_fltr_cfg1_srcid_start_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_start_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg1_srcid_start_srcid_SHIFT 16 +#define mc2_afx_srcid_fltr_cfg1_srcid_start_srcid_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved1_MASK 0x0000f000 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved1_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved1_BITS 4 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved1_SHIFT 12 + + +#define mc2_afx_srcid_fltr_cfg1_srcid_end_srcid_MASK 0x00000fff +#define mc2_afx_srcid_fltr_cfg1_srcid_end_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_end_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg1_srcid_end_srcid_SHIFT 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_end_srcid_DEFAULT 0x00000000 + + + + +#define mc2_afx_srcid_fltr_cfg2_srcid_enable_MASK 0x80000000 +#define mc2_afx_srcid_fltr_cfg2_srcid_enable_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_enable_BITS 1 +#define mc2_afx_srcid_fltr_cfg2_srcid_enable_SHIFT 31 +#define mc2_afx_srcid_fltr_cfg2_srcid_enable_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved0_MASK 0x70000000 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved0_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved0_BITS 3 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved0_SHIFT 28 + + +#define mc2_afx_srcid_fltr_cfg2_srcid_start_srcid_MASK 0x0fff0000 +#define mc2_afx_srcid_fltr_cfg2_srcid_start_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_start_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg2_srcid_start_srcid_SHIFT 16 +#define mc2_afx_srcid_fltr_cfg2_srcid_start_srcid_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved1_MASK 0x0000f000 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved1_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved1_BITS 4 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved1_SHIFT 12 + + +#define mc2_afx_srcid_fltr_cfg2_srcid_end_srcid_MASK 0x00000fff +#define mc2_afx_srcid_fltr_cfg2_srcid_end_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_end_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg2_srcid_end_srcid_SHIFT 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_end_srcid_DEFAULT 0x00000000 + + + + +#define mc2_afx_srcid_fltr_cfg3_srcid_enable_MASK 0x80000000 +#define mc2_afx_srcid_fltr_cfg3_srcid_enable_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_enable_BITS 1 +#define mc2_afx_srcid_fltr_cfg3_srcid_enable_SHIFT 31 +#define mc2_afx_srcid_fltr_cfg3_srcid_enable_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved0_MASK 0x70000000 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved0_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved0_BITS 3 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved0_SHIFT 28 + + +#define mc2_afx_srcid_fltr_cfg3_srcid_start_srcid_MASK 0x0fff0000 +#define mc2_afx_srcid_fltr_cfg3_srcid_start_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_start_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg3_srcid_start_srcid_SHIFT 16 +#define mc2_afx_srcid_fltr_cfg3_srcid_start_srcid_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved1_MASK 0x0000f000 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved1_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved1_BITS 4 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved1_SHIFT 12 + + +#define mc2_afx_srcid_fltr_cfg3_srcid_end_srcid_MASK 0x00000fff +#define mc2_afx_srcid_fltr_cfg3_srcid_end_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_end_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg3_srcid_end_srcid_SHIFT 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_end_srcid_DEFAULT 0x00000000 + + + + +#define mc2_afx_row_xtr_cfg_row_19_16_reserved0_MASK 0xffffffc0 +#define mc2_afx_row_xtr_cfg_row_19_16_reserved0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_19_16_reserved0_BITS 26 +#define mc2_afx_row_xtr_cfg_row_19_16_reserved0_SHIFT 6 + + +#define mc2_afx_row_xtr_cfg_row_19_16_bit_16_MASK 0x0000003f +#define mc2_afx_row_xtr_cfg_row_19_16_bit_16_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_19_16_bit_16_BITS 6 +#define mc2_afx_row_xtr_cfg_row_19_16_bit_16_SHIFT 0 +#define mc2_afx_row_xtr_cfg_row_19_16_bit_16_DEFAULT 0x0000001e + + + + +#define mc2_afx_row_xtr_cfg_row_15_12_reserved0_MASK 0xc0000000 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved0_BITS 2 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved0_SHIFT 30 + + +#define mc2_afx_row_xtr_cfg_row_15_12_bit_15_MASK 0x3f000000 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_15_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_15_BITS 6 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_15_SHIFT 24 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_15_DEFAULT 0x0000001d + + +#define mc2_afx_row_xtr_cfg_row_15_12_reserved1_MASK 0x00c00000 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved1_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved1_BITS 2 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved1_SHIFT 22 + + +#define mc2_afx_row_xtr_cfg_row_15_12_bit_14_MASK 0x003f0000 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_14_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_14_BITS 6 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_14_SHIFT 16 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_14_DEFAULT 0x0000001c + + +#define mc2_afx_row_xtr_cfg_row_15_12_reserved2_MASK 0x0000c000 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved2_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved2_BITS 2 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved2_SHIFT 14 + + +#define mc2_afx_row_xtr_cfg_row_15_12_bit_13_MASK 0x00003f00 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_13_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_13_BITS 6 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_13_SHIFT 8 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_13_DEFAULT 0x0000001b + + +#define mc2_afx_row_xtr_cfg_row_15_12_reserved3_MASK 0x000000c0 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved3_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved3_BITS 2 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved3_SHIFT 6 + + +#define mc2_afx_row_xtr_cfg_row_15_12_bit_12_MASK 0x0000003f +#define mc2_afx_row_xtr_cfg_row_15_12_bit_12_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_12_BITS 6 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_12_SHIFT 0 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_12_DEFAULT 0x0000001a + + + + +#define mc2_afx_row_xtr_cfg_row_11_8_reserved0_MASK 0xc0000000 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved0_BITS 2 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved0_SHIFT 30 + + +#define mc2_afx_row_xtr_cfg_row_11_8_bit_11_MASK 0x3f000000 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_11_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_11_BITS 6 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_11_SHIFT 24 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_11_DEFAULT 0x00000019 + + +#define mc2_afx_row_xtr_cfg_row_11_8_reserved1_MASK 0x00c00000 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved1_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved1_BITS 2 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved1_SHIFT 22 + + +#define mc2_afx_row_xtr_cfg_row_11_8_bit_10_MASK 0x003f0000 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_10_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_10_BITS 6 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_10_SHIFT 16 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_10_DEFAULT 0x00000018 + + +#define mc2_afx_row_xtr_cfg_row_11_8_reserved2_MASK 0x0000c000 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved2_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved2_BITS 2 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved2_SHIFT 14 + + +#define mc2_afx_row_xtr_cfg_row_11_8_bit_9_MASK 0x00003f00 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_9_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_9_BITS 6 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_9_SHIFT 8 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_9_DEFAULT 0x00000017 + + +#define mc2_afx_row_xtr_cfg_row_11_8_reserved3_MASK 0x000000c0 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved3_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved3_BITS 2 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved3_SHIFT 6 + + +#define mc2_afx_row_xtr_cfg_row_11_8_bit_8_MASK 0x0000003f +#define mc2_afx_row_xtr_cfg_row_11_8_bit_8_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_8_BITS 6 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_8_SHIFT 0 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_8_DEFAULT 0x00000016 + + + + +#define mc2_afx_row_xtr_cfg_row_7_4_reserved0_MASK 0xc0000000 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved0_BITS 2 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved0_SHIFT 30 + + +#define mc2_afx_row_xtr_cfg_row_7_4_bit_7_MASK 0x3f000000 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_7_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_7_BITS 6 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_7_SHIFT 24 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_7_DEFAULT 0x00000015 + + +#define mc2_afx_row_xtr_cfg_row_7_4_reserved1_MASK 0x00c00000 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved1_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved1_BITS 2 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved1_SHIFT 22 + + +#define mc2_afx_row_xtr_cfg_row_7_4_bit_6_MASK 0x003f0000 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_6_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_6_BITS 6 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_6_SHIFT 16 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_6_DEFAULT 0x00000014 + + +#define mc2_afx_row_xtr_cfg_row_7_4_reserved2_MASK 0x0000c000 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved2_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved2_BITS 2 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved2_SHIFT 14 + + +#define mc2_afx_row_xtr_cfg_row_7_4_bit_5_MASK 0x00003f00 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_5_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_5_BITS 6 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_5_SHIFT 8 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_5_DEFAULT 0x00000013 + + +#define mc2_afx_row_xtr_cfg_row_7_4_reserved3_MASK 0x000000c0 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved3_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved3_BITS 2 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved3_SHIFT 6 + + +#define mc2_afx_row_xtr_cfg_row_7_4_bit_4_MASK 0x0000003f +#define mc2_afx_row_xtr_cfg_row_7_4_bit_4_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_4_BITS 6 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_4_SHIFT 0 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_4_DEFAULT 0x00000012 + + + + +#define mc2_afx_row_xtr_cfg_row_3_0_reserved0_MASK 0xc0000000 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved0_BITS 2 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved0_SHIFT 30 + + +#define mc2_afx_row_xtr_cfg_row_3_0_bit_3_MASK 0x3f000000 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_3_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_3_BITS 6 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_3_SHIFT 24 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_3_DEFAULT 0x00000011 + + +#define mc2_afx_row_xtr_cfg_row_3_0_reserved1_MASK 0x00c00000 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved1_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved1_BITS 2 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved1_SHIFT 22 + + +#define mc2_afx_row_xtr_cfg_row_3_0_bit_2_MASK 0x003f0000 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_2_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_2_BITS 6 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_2_SHIFT 16 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_2_DEFAULT 0x00000010 + + +#define mc2_afx_row_xtr_cfg_row_3_0_reserved2_MASK 0x0000c000 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved2_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved2_BITS 2 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved2_SHIFT 14 + + +#define mc2_afx_row_xtr_cfg_row_3_0_bit_1_MASK 0x00003f00 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_1_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_1_BITS 6 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_1_SHIFT 8 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_1_DEFAULT 0x0000000f + + +#define mc2_afx_row_xtr_cfg_row_3_0_reserved3_MASK 0x000000c0 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved3_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved3_BITS 2 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved3_SHIFT 6 + + +#define mc2_afx_row_xtr_cfg_row_3_0_bit_0_MASK 0x0000003f +#define mc2_afx_row_xtr_cfg_row_3_0_bit_0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_0_BITS 6 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_0_SHIFT 0 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_0_DEFAULT 0x0000000e + + + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved0_MASK 0xc0000000 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved0_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved0_BITS 2 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved0_SHIFT 30 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_3_MASK 0x3f000000 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_3_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_3_BITS 6 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_3_SHIFT 24 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_3_DEFAULT 0x00000000 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved1_MASK 0x00c00000 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved1_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved1_BITS 2 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved1_SHIFT 22 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_2_MASK 0x003f0000 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_2_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_2_BITS 6 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_2_SHIFT 16 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_2_DEFAULT 0x00000000 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved2_MASK 0x0000c000 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved2_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved2_BITS 2 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved2_SHIFT 14 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_1_MASK 0x00003f00 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_1_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_1_BITS 6 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_1_SHIFT 8 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_1_DEFAULT 0x00000000 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved3_MASK 0x000000c0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved3_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved3_BITS 2 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved3_SHIFT 6 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_0_MASK 0x0000003f +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_0_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_0_BITS 6 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_0_SHIFT 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_0_DEFAULT 0x00000000 + + + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved0_MASK 0xc0000000 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved0_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved0_BITS 2 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved0_SHIFT 30 + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_3_MASK 0x3f000000 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_3_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_3_BITS 6 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_3_SHIFT 24 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_3_DEFAULT 0x00000000 + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved1_MASK 0x00c00000 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved1_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved1_BITS 2 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved1_SHIFT 22 + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_2_MASK 0x003f0000 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_2_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_2_BITS 6 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_2_SHIFT 16 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_2_DEFAULT 0x0000000d + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved2_MASK 0x0000c000 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved2_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved2_BITS 2 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved2_SHIFT 14 + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_1_MASK 0x00003f00 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_1_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_1_BITS 6 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_1_SHIFT 8 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_1_DEFAULT 0x0000000c + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved3_MASK 0x000000c0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved3_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved3_BITS 2 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved3_SHIFT 6 + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_0_MASK 0x0000003f +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_0_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_0_BITS 6 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_0_SHIFT 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_0_DEFAULT 0x0000000b + + + + +#define mc2_afx_col_xtr_cfg_col_cfg_reserved0_MASK 0xffffffc0 +#define mc2_afx_col_xtr_cfg_col_cfg_reserved0_ALIGN 0 +#define mc2_afx_col_xtr_cfg_col_cfg_reserved0_BITS 26 +#define mc2_afx_col_xtr_cfg_col_cfg_reserved0_SHIFT 6 + + +#define mc2_afx_col_xtr_cfg_col_cfg_col_bit_start_MASK 0x00000030 +#define mc2_afx_col_xtr_cfg_col_cfg_col_bit_start_ALIGN 0 +#define mc2_afx_col_xtr_cfg_col_cfg_col_bit_start_BITS 2 +#define mc2_afx_col_xtr_cfg_col_cfg_col_bit_start_SHIFT 4 +#define mc2_afx_col_xtr_cfg_col_cfg_col_bit_start_DEFAULT 0x00000001 + + +#define mc2_afx_col_xtr_cfg_col_cfg_col_mode_MASK 0x0000000c +#define mc2_afx_col_xtr_cfg_col_cfg_col_mode_ALIGN 0 +#define mc2_afx_col_xtr_cfg_col_cfg_col_mode_BITS 2 +#define mc2_afx_col_xtr_cfg_col_cfg_col_mode_SHIFT 2 +#define mc2_afx_col_xtr_cfg_col_cfg_col_mode_DEFAULT 0x00000000 + + +#define mc2_afx_col_xtr_cfg_col_cfg_num_col_bits_MASK 0x00000003 +#define mc2_afx_col_xtr_cfg_col_cfg_num_col_bits_ALIGN 0 +#define mc2_afx_col_xtr_cfg_col_cfg_num_col_bits_BITS 2 +#define mc2_afx_col_xtr_cfg_col_cfg_num_col_bits_SHIFT 0 +#define mc2_afx_col_xtr_cfg_col_cfg_num_col_bits_DEFAULT 0x00000001 + + + + +#define mc2_afx_cs_xtr_cfg_cs_3_0_enable_MASK 0x80000000 +#define mc2_afx_cs_xtr_cfg_cs_3_0_enable_ALIGN 0 +#define mc2_afx_cs_xtr_cfg_cs_3_0_enable_BITS 1 +#define mc2_afx_cs_xtr_cfg_cs_3_0_enable_SHIFT 31 +#define mc2_afx_cs_xtr_cfg_cs_3_0_enable_DEFAULT 0x00000000 + + +#define mc2_afx_cs_xtr_cfg_cs_3_0_reserved0_MASK 0x7fffffc0 +#define mc2_afx_cs_xtr_cfg_cs_3_0_reserved0_ALIGN 0 +#define mc2_afx_cs_xtr_cfg_cs_3_0_reserved0_BITS 25 +#define mc2_afx_cs_xtr_cfg_cs_3_0_reserved0_SHIFT 6 + + +#define mc2_afx_cs_xtr_cfg_cs_3_0_bit_0_MASK 0x0000003f +#define mc2_afx_cs_xtr_cfg_cs_3_0_bit_0_ALIGN 0 +#define mc2_afx_cs_xtr_cfg_cs_3_0_bit_0_BITS 6 +#define mc2_afx_cs_xtr_cfg_cs_3_0_bit_0_SHIFT 0 +#define mc2_afx_cs_xtr_cfg_cs_3_0_bit_0_DEFAULT 0x0000000b + + + + +#define mc2_afx_chn_xtr_cfg_chn_bit_enable_MASK 0x80000000 +#define mc2_afx_chn_xtr_cfg_chn_bit_enable_ALIGN 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_enable_BITS 1 +#define mc2_afx_chn_xtr_cfg_chn_bit_enable_SHIFT 31 +#define mc2_afx_chn_xtr_cfg_chn_bit_enable_DEFAULT 0x00000001 + + +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved0_MASK 0x7ffffc00 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved0_ALIGN 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved0_BITS 21 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved0_SHIFT 10 + + +#define mc2_afx_chn_xtr_cfg_chn_bit_chn_mode_MASK 0x00000300 +#define mc2_afx_chn_xtr_cfg_chn_bit_chn_mode_ALIGN 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_chn_mode_BITS 2 +#define mc2_afx_chn_xtr_cfg_chn_bit_chn_mode_SHIFT 8 +#define mc2_afx_chn_xtr_cfg_chn_bit_chn_mode_DEFAULT 0x00000000 + + +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved1_MASK 0x000000c0 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved1_ALIGN 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved1_BITS 2 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved1_SHIFT 6 + + +#define mc2_afx_chn_xtr_cfg_chn_bit_bit_0_MASK 0x0000003f +#define mc2_afx_chn_xtr_cfg_chn_bit_bit_0_ALIGN 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_bit_0_BITS 6 +#define mc2_afx_chn_xtr_cfg_chn_bit_bit_0_SHIFT 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_bit_0_DEFAULT 0x0000000a + + + + +#define mc2_afx_ddr_sz_chk_reserved0_MASK 0xffffff00 +#define mc2_afx_ddr_sz_chk_reserved0_ALIGN 0 +#define mc2_afx_ddr_sz_chk_reserved0_BITS 24 +#define mc2_afx_ddr_sz_chk_reserved0_SHIFT 8 + + +#define mc2_afx_ddr_sz_chk_dram_size_limit_MASK 0x000000f0 +#define mc2_afx_ddr_sz_chk_dram_size_limit_ALIGN 0 +#define mc2_afx_ddr_sz_chk_dram_size_limit_BITS 4 +#define mc2_afx_ddr_sz_chk_dram_size_limit_SHIFT 4 +#define mc2_afx_ddr_sz_chk_dram_size_limit_DEFAULT 0x0000000c + + +#define mc2_afx_ddr_sz_chk_reserved1_MASK 0x0000000f +#define mc2_afx_ddr_sz_chk_reserved1_ALIGN 0 +#define mc2_afx_ddr_sz_chk_reserved1_BITS 4 +#define mc2_afx_ddr_sz_chk_reserved1_SHIFT 0 + + +#define mc2_wbf_acc_acc_eack_MASK 0x80000000 +#define mc2_wbf_acc_acc_eack_ALIGN 0 +#define mc2_wbf_acc_acc_eack_BITS 1 +#define mc2_wbf_acc_acc_eack_SHIFT 31 +#define mc2_wbf_acc_acc_eack_DEFAULT 0x00000000 + + +#define mc2_wbf_acc_reserved0_MASK 0x7fffff00 +#define mc2_wbf_acc_reserved0_ALIGN 0 +#define mc2_wbf_acc_reserved0_BITS 23 +#define mc2_wbf_acc_reserved0_SHIFT 8 + + +#define mc2_wbf_acc_acc_sw_MASK 0x00000080 +#define mc2_wbf_acc_acc_sw_ALIGN 0 +#define mc2_wbf_acc_acc_sw_BITS 1 +#define mc2_wbf_acc_acc_sw_SHIFT 7 +#define mc2_wbf_acc_acc_sw_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_acc_sr_MASK 0x00000040 +#define mc2_wbf_acc_acc_sr_ALIGN 0 +#define mc2_wbf_acc_acc_sr_BITS 1 +#define mc2_wbf_acc_acc_sr_SHIFT 6 +#define mc2_wbf_acc_acc_sr_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_acc_nsw_MASK 0x00000020 +#define mc2_wbf_acc_acc_nsw_ALIGN 0 +#define mc2_wbf_acc_acc_nsw_BITS 1 +#define mc2_wbf_acc_acc_nsw_SHIFT 5 +#define mc2_wbf_acc_acc_nsw_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_acc_nsr_MASK 0x00000010 +#define mc2_wbf_acc_acc_nsr_ALIGN 0 +#define mc2_wbf_acc_acc_nsr_BITS 1 +#define mc2_wbf_acc_acc_nsr_SHIFT 4 +#define mc2_wbf_acc_acc_nsr_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_perm_sw_MASK 0x00000008 +#define mc2_wbf_acc_perm_sw_ALIGN 0 +#define mc2_wbf_acc_perm_sw_BITS 1 +#define mc2_wbf_acc_perm_sw_SHIFT 3 +#define mc2_wbf_acc_perm_sw_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_perm_sr_MASK 0x00000004 +#define mc2_wbf_acc_perm_sr_ALIGN 0 +#define mc2_wbf_acc_perm_sr_BITS 1 +#define mc2_wbf_acc_perm_sr_SHIFT 2 +#define mc2_wbf_acc_perm_sr_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_perm_nsw_MASK 0x00000002 +#define mc2_wbf_acc_perm_nsw_ALIGN 0 +#define mc2_wbf_acc_perm_nsw_BITS 1 +#define mc2_wbf_acc_perm_nsw_SHIFT 1 +#define mc2_wbf_acc_perm_nsw_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_perm_nsr_MASK 0x00000001 +#define mc2_wbf_acc_perm_nsr_ALIGN 0 +#define mc2_wbf_acc_perm_nsr_BITS 1 +#define mc2_wbf_acc_perm_nsr_SHIFT 0 +#define mc2_wbf_acc_perm_nsr_DEFAULT 0x00000001 + + + + +#define mc2_wbf_ver_reserved0_MASK 0xffffff00 +#define mc2_wbf_ver_reserved0_ALIGN 0 +#define mc2_wbf_ver_reserved0_BITS 24 +#define mc2_wbf_ver_reserved0_SHIFT 8 + + +#define mc2_wbf_ver_version_MASK 0x000000ff +#define mc2_wbf_ver_version_ALIGN 0 +#define mc2_wbf_ver_version_BITS 8 +#define mc2_wbf_ver_version_SHIFT 0 +#define mc2_wbf_ver_version_DEFAULT 0x00000000 + + + + +#define mc2_wbf_pri_cfg_wbf_en_MASK 0x80000000 +#define mc2_wbf_pri_cfg_wbf_en_ALIGN 0 +#define mc2_wbf_pri_cfg_wbf_en_BITS 1 +#define mc2_wbf_pri_cfg_wbf_en_SHIFT 31 +#define mc2_wbf_pri_cfg_wbf_en_DEFAULT 0x00000000 + + +#define mc2_wbf_pri_cfg_reserved0_MASK 0x70000000 +#define mc2_wbf_pri_cfg_reserved0_ALIGN 0 +#define mc2_wbf_pri_cfg_reserved0_BITS 3 +#define mc2_wbf_pri_cfg_reserved0_SHIFT 28 + + +#define mc2_wbf_pri_cfg_prefetch_en_MASK 0x0f000000 +#define mc2_wbf_pri_cfg_prefetch_en_ALIGN 0 +#define mc2_wbf_pri_cfg_prefetch_en_BITS 4 +#define mc2_wbf_pri_cfg_prefetch_en_SHIFT 24 +#define mc2_wbf_pri_cfg_prefetch_en_DEFAULT 0x00000000 + + +#define mc2_wbf_pri_cfg_reserved1_MASK 0x00e00000 +#define mc2_wbf_pri_cfg_reserved1_ALIGN 0 +#define mc2_wbf_pri_cfg_reserved1_BITS 3 +#define mc2_wbf_pri_cfg_reserved1_SHIFT 21 + + +#define mc2_wbf_pri_cfg_wbf_pslc_buf_mode_MASK 0x00100000 +#define mc2_wbf_pri_cfg_wbf_pslc_buf_mode_ALIGN 0 +#define mc2_wbf_pri_cfg_wbf_pslc_buf_mode_BITS 1 +#define mc2_wbf_pri_cfg_wbf_pslc_buf_mode_SHIFT 20 +#define mc2_wbf_pri_cfg_wbf_pslc_buf_mode_DEFAULT 0x00000000 + + +#define mc2_wbf_pri_cfg_high_pri_chn_MASK 0x000f0000 +#define mc2_wbf_pri_cfg_high_pri_chn_ALIGN 0 +#define mc2_wbf_pri_cfg_high_pri_chn_BITS 4 +#define mc2_wbf_pri_cfg_high_pri_chn_SHIFT 16 +#define mc2_wbf_pri_cfg_high_pri_chn_DEFAULT 0x00000003 + + +#define mc2_wbf_pri_cfg_reserved2_MASK 0x0000fff0 +#define mc2_wbf_pri_cfg_reserved2_ALIGN 0 +#define mc2_wbf_pri_cfg_reserved2_BITS 12 +#define mc2_wbf_pri_cfg_reserved2_SHIFT 4 + + +#define mc2_wbf_pri_cfg_high_pri_ifm_MASK 0x0000000f +#define mc2_wbf_pri_cfg_high_pri_ifm_ALIGN 0 +#define mc2_wbf_pri_cfg_high_pri_ifm_BITS 4 +#define mc2_wbf_pri_cfg_high_pri_ifm_SHIFT 0 +#define mc2_wbf_pri_cfg_high_pri_ifm_DEFAULT 0x00000003 + + + + +#define mc2_wbf_sta_bq_full_MASK 0x80000000 +#define mc2_wbf_sta_bq_full_ALIGN 0 +#define mc2_wbf_sta_bq_full_BITS 1 +#define mc2_wbf_sta_bq_full_SHIFT 31 + + +#define mc2_wbf_sta_bq_empty_MASK 0x40000000 +#define mc2_wbf_sta_bq_empty_ALIGN 0 +#define mc2_wbf_sta_bq_empty_BITS 1 +#define mc2_wbf_sta_bq_empty_SHIFT 30 + + +#define mc2_wbf_sta_reserved0_MASK 0x3ffc0000 +#define mc2_wbf_sta_reserved0_ALIGN 0 +#define mc2_wbf_sta_reserved0_BITS 12 +#define mc2_wbf_sta_reserved0_SHIFT 18 + + +#define mc2_wbf_sta_wbf_buf_level_MASK 0x0003ff00 +#define mc2_wbf_sta_wbf_buf_level_ALIGN 0 +#define mc2_wbf_sta_wbf_buf_level_BITS 10 +#define mc2_wbf_sta_wbf_buf_level_SHIFT 8 + + +#define mc2_wbf_sta_bq_count_MASK 0x000000ff +#define mc2_wbf_sta_bq_count_ALIGN 0 +#define mc2_wbf_sta_bq_count_BITS 8 +#define mc2_wbf_sta_bq_count_SHIFT 0 + + + + +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_go_MASK 0x80000000 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_go_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_go_BITS 1 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_go_SHIFT 31 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_go_DEFAULT 0x00000000 + + +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wr_MASK 0x40000000 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wr_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wr_BITS 1 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wr_SHIFT 30 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wr_DEFAULT 0x00000000 + + +#define mc2_wbf_bkdr_bkdr_cmd_reserved0_MASK 0x3ff80000 +#define mc2_wbf_bkdr_bkdr_cmd_reserved0_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_reserved0_BITS 11 +#define mc2_wbf_bkdr_bkdr_cmd_reserved0_SHIFT 19 + + +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_slice_MASK 0x00070000 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_slice_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_slice_BITS 3 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_slice_SHIFT 16 + + +#define mc2_wbf_bkdr_bkdr_cmd_pslc_wbf_buf_sel_MASK 0x0000ff00 +#define mc2_wbf_bkdr_bkdr_cmd_pslc_wbf_buf_sel_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_pslc_wbf_buf_sel_BITS 8 +#define mc2_wbf_bkdr_bkdr_cmd_pslc_wbf_buf_sel_SHIFT 8 +#define mc2_wbf_bkdr_bkdr_cmd_pslc_wbf_buf_sel_DEFAULT 0x00000000 + + +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wbf_id_MASK 0x000000ff +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wbf_id_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wbf_id_BITS 8 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wbf_id_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wbf_id_DEFAULT 0x00000000 + + + +#define mc2_wbf_bkdr_bkdr_datai_ARRAY_BASE 0x00000e94 +#define mc2_wbf_bkdr_bkdr_datai_ARRAY_START 0 +#define mc2_wbf_bkdr_bkdr_datai_ARRAY_END 7 +#define mc2_wbf_bkdr_bkdr_datai_ARRAY_ELEMENT_SIZE 32 + + + + +#define mc2_wbf_bkdr_bkdr_datai_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_datai_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_datai_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_datai_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_datai_data_DEFAULT 0x00000000 + + + + + +#define mc2_wbf_bkdr_bkdr_data0_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data0_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data0_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data0_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data0_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data1_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data1_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data1_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data1_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data1_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data2_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data2_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data2_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data2_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data2_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data3_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data3_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data3_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data3_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data3_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data4_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data4_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data4_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data4_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data4_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data5_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data5_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data5_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data5_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data5_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data6_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data6_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data6_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data6_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data6_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data7_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data7_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data7_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data7_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data7_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_id_bkdr_id_cmd_id_freeze_MASK 0x80000000 +#define mc2_wbf_id_bkdr_id_cmd_id_freeze_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_id_freeze_BITS 1 +#define mc2_wbf_id_bkdr_id_cmd_id_freeze_SHIFT 31 +#define mc2_wbf_id_bkdr_id_cmd_id_freeze_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_cmd_reserved0_MASK 0x70000000 +#define mc2_wbf_id_bkdr_id_cmd_reserved0_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_reserved0_BITS 3 +#define mc2_wbf_id_bkdr_id_cmd_reserved0_SHIFT 28 + + +#define mc2_wbf_id_bkdr_id_cmd_id_go_MASK 0x0f000000 +#define mc2_wbf_id_bkdr_id_cmd_id_go_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_id_go_BITS 4 +#define mc2_wbf_id_bkdr_id_cmd_id_go_SHIFT 24 +#define mc2_wbf_id_bkdr_id_cmd_id_go_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_cmd_reserved1_MASK 0x00fe0000 +#define mc2_wbf_id_bkdr_id_cmd_reserved1_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_reserved1_BITS 7 +#define mc2_wbf_id_bkdr_id_cmd_reserved1_SHIFT 17 + + +#define mc2_wbf_id_bkdr_id_cmd_id_wr_MASK 0x00010000 +#define mc2_wbf_id_bkdr_id_cmd_id_wr_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_id_wr_BITS 1 +#define mc2_wbf_id_bkdr_id_cmd_id_wr_SHIFT 16 +#define mc2_wbf_id_bkdr_id_cmd_id_wr_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_cmd_reserved2_MASK 0x0000ff00 +#define mc2_wbf_id_bkdr_id_cmd_reserved2_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_reserved2_BITS 8 +#define mc2_wbf_id_bkdr_id_cmd_reserved2_SHIFT 8 + + +#define mc2_wbf_id_bkdr_id_cmd_id_addr_MASK 0x000000ff +#define mc2_wbf_id_bkdr_id_cmd_id_addr_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_id_addr_BITS 8 +#define mc2_wbf_id_bkdr_id_cmd_id_addr_SHIFT 0 +#define mc2_wbf_id_bkdr_id_cmd_id_addr_DEFAULT 0x00000000 + + + + +#define mc2_wbf_id_bkdr_id_data_wbf_id_wr_ptr_MASK 0xff000000 +#define mc2_wbf_id_bkdr_id_data_wbf_id_wr_ptr_ALIGN 0 +#define mc2_wbf_id_bkdr_id_data_wbf_id_wr_ptr_BITS 8 +#define mc2_wbf_id_bkdr_id_data_wbf_id_wr_ptr_SHIFT 24 +#define mc2_wbf_id_bkdr_id_data_wbf_id_wr_ptr_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_data_wbf_id_rd_ptr_MASK 0x00ff0000 +#define mc2_wbf_id_bkdr_id_data_wbf_id_rd_ptr_ALIGN 0 +#define mc2_wbf_id_bkdr_id_data_wbf_id_rd_ptr_BITS 8 +#define mc2_wbf_id_bkdr_id_data_wbf_id_rd_ptr_SHIFT 16 +#define mc2_wbf_id_bkdr_id_data_wbf_id_rd_ptr_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_data_bq_count_wr_MASK 0x0000ff00 +#define mc2_wbf_id_bkdr_id_data_bq_count_wr_ALIGN 0 +#define mc2_wbf_id_bkdr_id_data_bq_count_wr_BITS 8 +#define mc2_wbf_id_bkdr_id_data_bq_count_wr_SHIFT 8 +#define mc2_wbf_id_bkdr_id_data_bq_count_wr_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_data_wbf_id_MASK 0x000000ff +#define mc2_wbf_id_bkdr_id_data_wbf_id_ALIGN 0 +#define mc2_wbf_id_bkdr_id_data_wbf_id_BITS 8 +#define mc2_wbf_id_bkdr_id_data_wbf_id_SHIFT 0 +#define mc2_wbf_id_bkdr_id_data_wbf_id_DEFAULT 0x00000000 + +#endif diff --git a/arch/arm/include/asm/arch-bcm4912/misc.h b/arch/arm/include/asm/arch-bcm4912/misc.h new file mode 100644 index 0000000000..c493dbf409 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4912/misc.h @@ -0,0 +1,153 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _4912_MISC_H +#define _4912_MISC_H + +#define MISC_BASE 0xff802600 + +/* + * Misc Register Set Definitions. + */ +typedef struct Misc { + uint32_t miscStrapBus; /* 0x00 */ + + /* boot select bits 3-5 */ +#define BOOT_SEL_STRAP_NAND_2K_PAGE 0x00 +#define BOOT_SEL_STRAP_NAND_4K_PAGE 0x08 +#define BOOT_SEL_STRAP_NAND_8K_PAGE 0x10 +#define BOOT_SEL_STRAP_NAND_512B_PAGE 0x18 +#define BOOT_SEL_STRAP_SPI_NOR 0x38 +#define BOOT_SEL_STRAP_EMMC 0x30 +#define BOOT_SEL_STRAP_SPI_NAND 0x28 + +#define BOOT_SEL_STRAP_BOOT_SEL_MASK (0x38) +#define BOOT_SEL_STRAP_PAGE_SIZE_MASK (0x7) + +#define MISC_STRAP_BUS_BOOT_SEL_SHIFT 0 +#define MISC_STRAP_BUS_BOOT_SEL_MASK (0x38 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SPI_NOR (0x38 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_EMMC (0x30 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SPI_NAND (0x28 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SEL_NAND_MASK (0x20 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND (0x00 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SEL_PAGE_MASK (0x18 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_2K_PAGE (0x00 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_4K_PAGE (0x08 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_8K_PAGE (0x10 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_512_PAGE (0x18 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SEL_ECC_MASK (0x7 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_DISABLE (0x0 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_1_BIT (0x1 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_4_BIT (0x2 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_8_BIT (0x3 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_12_BIT (0x4 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_24_BIT (0x5 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_40_BIT (0x6 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_60_BIT (0x7 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_PCIE3_RC_MODE (0x1 << 6) +#define MISC_STRAP_BUS_LS_SPI_SLAVE_DISABLE (0x1 << 7) +#define MISC_STRAP_BUS_B53_BOOT_N (0x1 << 8) +#define MISC_STRAP_BUS_RESET_OUT_DELAY (0x1 << 9) +/* When ROM BOOT OTP bits are 2b'11, always boot rom secure boot, this strap bit is don't care. + When ROM BOOT OTP bits are are not 2b'11, this trap bit determine the following: + 1: boot rom non-secure boot + 0: XIP boot +*/ +#define MISC_STRAP_BUS_BOOTROM_BOOT (0x1 << 12) +#define MISC_STRAP_BUS_SW_RESERVE_MASK (0x3 << 13) +#define MISC_STRAP_BUS_CPU_SLOW_FREQ_SHIFT 16 +#define MISC_STRAP_BUS_CPU_SLOW_FREQ (0x1 << MISC_STRAP_BUS_CPU_SLOW_FREQ_SHIFT) + uint32_t miscStrapOverride; /* 0x04 */ + uint32_t miscMaskUBUSErr; /* 0x08 */ + uint32_t miscPeriphCtrl; /* 0x0c */ + uint32_t miscSpiMasterCtrl; /* 0x10 */ + uint32_t reserved0; /* 0x14 */ + uint32_t miscPeriphMiscCtrl; /* 0x18 */ + uint32_t miscPeriphMiscStat; /* 0x1c */ + uint32_t miscSoftResetB; /* 0x20 */ + uint32_t miscSpare0; /* 0x24 */ + uint32_t miscSWdebugNW[2]; /* 0x28 */ + uint32_t miscWDResetCtrl; /* 0x30 */ +} Misc; + +#define MISC ((volatile Misc * const) MISC_BASE) + + +/* + * Gpio Controller + */ +typedef struct GpioControl { + uint32_t GPIODir[8]; /* 0x00-0x1f */ + uint32_t GPIOio[8]; /* 0x20-0x3f */ + uint32_t PadCtrl; /* 0x40 */ + uint32_t SpiSlaveCfg; /* 0x44 */ + uint32_t TestControl; /* 0x48 */ + uint32_t TestPortBlockEnMSB; /* 0x4c */ + uint32_t TestPortBlockEnLSB; /* 0x50 */ + uint32_t TestPortBlockDataMSB; /* 0x54 */ + uint32_t TestPortBlockDataLSB; /* 0x58 */ + uint32_t TestPortCmd; /* 0x5c */ + uint32_t DiagReadBack; /* 0x60 */ + uint32_t DiagReadBackHi; /* 0x64 */ + uint32_t GeneralPurpose; /* 0x68 */ + uint32_t spare[3]; +} GpioControl; + +#define GPIO_BASE 0xff800500 +#define GPIO ((volatile GpioControl * const) GPIO_BASE) +#define PINCTRL_BASE (GPIO_BASE + 0x54) + +/* + * Peripheral Controller + */ +typedef struct DMAIrqCfg { + uint32_t DMAIrqStatus; /* 0x00 */ + uint32_t DMAIrqSet; /* 0x04 */ + uint32_t DMAIrqClear; /* 0x08 */ + uint32_t DMAIrqMaskStatus; /* 0x0c */ + uint32_t DMAIrqMaskSet; /* 0x10 */ + uint32_t DMAIrqMaskClear; /* 0x14 */ +}DMAIrqCfg; + +typedef struct PerfControl { + uint32_t RevID; /* 0x00 */ +#define CHIP_ID_SHIFT 12 +#define CHIP_ID_MASK (0xfffff << CHIP_ID_SHIFT) +#define REV_ID_MASK 0xfff + uint32_t reserved0[7]; /* 0x04 - 0x1f */ + uint32_t ExtIrqCtrl; /* 0x20 */ +#define EI_LVLSTICKY_SHFT 0 +#define EI_SENSE_SHFT 8 +#define EI_INSENS_SHFT 16 +#define EI_LEVEL_SHFT 24 + uint32_t ExtIrqStatus; /* 0x24 */ +#define EI_STATUS_SHFT 0 +#define EI_STATUS_MASK 0xff + uint32_t ExtIrqSet; /* 0x28 */ + uint32_t ExtIrqClear; /* 0x2c */ + uint32_t ExtIrqMaskStatus;/* 0x30 */ + uint32_t ExtIrqMaskSet; /* 0x34 */ + uint32_t ExtIrqMaskClear; /* 0x38 */ + uint32_t reserved1[2]; /* 0x3c - 0x43 */ + uint32_t ExtIrqMuxSel0; /* 0x44 */ +#define EXT_IRQ_SLOT_SIZE 16 +#define EXT_IRQ_MUX_SEL0_SHIFT 4 +#define EXT_IRQ_MUX_SEL0_MASK 0xf + uint32_t ExtIrqMuxSel1; /* 0x48 */ +#define EXT_IRQ_MUX_SEL1_SHIFT 4 +#define EXT_IRQ_MUX_SEL1_MASK 0xf + uint32_t IrqPeriphStatus; /* 0x4c */ + uint32_t IrqPeriphMask; /* 0x50 */ + uint32_t reserved2[8]; /* 0x54 - 0x73 */ + DMAIrqCfg dmaIrqCfg[3]; /* 0x74 - 0xbb */ +} PerfControl; + +#define PERF_BASE 0xff800000 +#define PERF ((volatile PerfControl * const) PERF_BASE) + + + +#endif diff --git a/arch/arm/include/asm/arch-bcm4912/otp.h b/arch/arm/include/asm/arch-bcm4912/otp.h new file mode 100644 index 0000000000..d7006a965a --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4912/otp.h @@ -0,0 +1,69 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ + +#ifndef _4912_OTP_H +#define _4912_OTP_H + +#define JTAG_OTP_BASE 0xff802800 + +/* row 9 */ +#define OTP_CPU_CLOCK_FREQ_ROW 9 +#define OTP_CPU_CLOCK_FREQ_SHIFT 0 +#define OTP_CPU_CLOCK_FREQ_MASK 0x7 + +/* row 8 */ +#define OTP_CPU_CORE_CFG_ROW 8 +#define OTP_CPU_CORE_CFG_SHIFT 28 +#define OTP_CPU_CORE_CFG_MASK 0x1 // 0=dual cores, 1=single core + +/* row 14 */ +#define OTP_JTAG_CUST_LOCK_ROW 0xff +#define OTP_JTAG_CUST_LOCK_MASK 0x1 +#define OTP_JTAG_CUST_LOCK_REG_SHIFT 25 + +/* row 13 */ +#define OTP_BRCM_PRODUCTION_MODE_ROW 13 +#define OTP_BRCM_PRODUCTION_MODE_SHIFT 0 +#define OTP_BRCM_PRODUCTION_MODE_MASK 0x1 + +/* row 13 */ +#define OTP_BRCM_BTRM_BOOT_ENABLE_ROW 13 +#define OTP_BRCM_BTRM_BOOT_ENABLE_SHIFT 2 +#define OTP_BRCM_BTRM_BOOT_ENABLE_MASK 1 + +/* row 14 */ +#define OTP_CUST_BTRM_BOOT_ENABLE_ROW 14 +#define OTP_CUST_BTRM_BOOT_ENABLE_SHIFT 28 +#define OTP_CUST_BTRM_BOOT_ENABLE_MASK 0x1 + +/* row 14 */ +#define OTP_CUST_BTRM_UART_DISABLE_ROW 14 +#define OTP_CUST_BTRM_UART_DISABLE_SHIFT 0 +#define OTP_CUST_BTRM_UART_DISABLE_MASK 1 + +/* row 14 */ +#define OTP_CUST_BTRM_MSG_DISABLE_ROW 14 +#define OTP_CUST_BTRM_MSG_DISABLE_SHIFT 27 +#define OTP_CUST_BTRM_MSG_DISABLE_MASK 1 + +/* row 29 */ +#define OTP_CUST_MFG_MRKTID_ROW 29 +#define OTP_CUST_MFG_MRKTID_SHIFT 0 +#define OTP_CUST_MFG_MRKTID_MASK 0xffff + +/* A row initializer that maps actual row number with mask and shift to a feature name; + * this allows to use features vs. rows for common functionality, + * such as secure boot handling frequency, chipid and so on + * prevent ifdef dependencies when used outside of arch directories for common among SoCs logic + * */ +#define DEFINE_OTP_MAP_ROW_INITLR(__VV__) \ + static otp_hw_cmn_row_t __VV__[ ] = { \ + {OTP_MAP_BRCM_BTRM_BOOT_ENABLE, OTP_BRCM_BTRM_BOOT_ENABLE_ROW, OTP_BRCM_BTRM_BOOT_ENABLE_MASK, OTP_BRCM_BTRM_BOOT_ENABLE_SHIFT, 1},\ + {OTP_MAP_CUST_BTRM_BOOT_ENABLE, OTP_CUST_BTRM_BOOT_ENABLE_ROW, OTP_CUST_BTRM_BOOT_ENABLE_MASK, OTP_CUST_BTRM_BOOT_ENABLE_SHIFT, 1},\ + {OTP_MAP_CUST_MFG_MRKTID, OTP_CUST_MFG_MRKTID_ROW, OTP_CUST_MFG_MRKTID_MASK, OTP_CUST_MFG_MRKTID_SHIFT, 1}, \ + {OTP_MAP_BRCM_PRODUCTION_MODE, OTP_BRCM_PRODUCTION_MODE_ROW, OTP_BRCM_PRODUCTION_MODE_MASK, OTP_BRCM_PRODUCTION_MODE_SHIFT, 1}, \ + } +#endif + diff --git a/arch/arm/include/asm/arch-bcm4912/pmc.h b/arch/arm/include/asm/arch-bcm4912/pmc.h new file mode 100644 index 0000000000..5343066fc2 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4912/pmc.h @@ -0,0 +1,342 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _4912_PMC_H +#define _4912_PMC_H + +#define PMC_BASE 0xFFB00000 +#define PMC ((volatile Pmc * const)PMC_BASE) + +#define PMB_BASE 0xFFB20100 +#define PMB ((volatile PMBMaster * const)PMB_BASE) + +#define PROC_MON_BASE 0xFFB00000 +#define PROCMON ((volatile Procmon * const) PROC_MON_BASE) + +typedef struct PmcCtrlReg { + uint32_t gpTmr0Ctl; /* 0x018 */ + uint32_t gpTmr0Cnt; /* 0x01c */ + uint32_t gpTmr1Ctl; /* 0x020 */ + uint32_t gpTmr1Cnt; /* 0x024 */ + uint32_t hostMboxIn; /* 0x028 */ + uint32_t hostMboxOut; /* 0x02c */ + uint32_t reserved[4]; /* 0x030 */ + uint32_t dmaCtrl; /* 0x040 */ + uint32_t dmaStatus; /* 0x044 */ + uint32_t dma0_3FifoStatus; /* 0x048 */ + uint32_t reserved1[4]; /* 0x04c */ + uint32_t diagControl; /* 0x05c */ + uint32_t diagHigh; /* 0x060 */ + uint32_t diagLow; /* 0x064 */ + uint32_t reserved8; /* 0x068 */ + uint32_t addr1WndwMask; /* 0x06c */ + uint32_t addr1WndwBaseIn; /* 0x070 */ + uint32_t addr1WndwBaseOut; /* 0x074 */ + uint32_t addr2WndwMask; /* 0x078 */ + uint32_t addr2WndwBaseIn; /* 0x07c */ + uint32_t addr2WndwBaseOut; /* 0x080 */ + uint32_t scratch; /* 0x084 */ + uint32_t reserved9; /* 0x088 */ + uint32_t softResets; /* 0x08c */ + uint32_t reserved2; /* 0x090 */ + uint32_t m4keCoreStatus; /* 0x094 */ + uint32_t reserved3; /* 0x098 */ + uint32_t ubSlaveTimeout; /* 0x09c */ + uint32_t diagEn; /* 0x0a0 */ + uint32_t devTimeout; /* 0x0a4 */ + uint32_t ubusErrorOutMask; /* 0x0a8 */ + uint32_t diagCaptStopMask; /* 0x0ac */ + uint32_t revId; /* 0x0b0 */ + uint32_t reserved4[4]; /* 0x0b4 */ + uint32_t diagCtrl; /* 0x0c4 */ + uint32_t diagStat; /* 0x0c8 */ + uint32_t diagMask; /* 0x0cc */ + uint32_t diagRslt; /* 0x0d0 */ + uint32_t diagCmp; /* 0x0d4 */ + uint32_t diagCapt; /* 0x0d8 */ + uint32_t diagCnt; /* 0x0dc */ + uint32_t diagEdgeCnt; /* 0x0e0 */ + uint32_t reserved5[4]; /* 0x0e4 */ + uint32_t smisc_bus_config; /* 0x0f4 */ + uint32_t lfsr; /* 0x0f8 */ + uint32_t dqm_pac_lock; /* 0x0fc */ + uint32_t l1_irq_4ke_mask; /* 0x100 */ + uint32_t l1_irq_4ke_status; /* 0x104 */ + uint32_t l1_irq_mips_mask; /* 0x108 */ + uint32_t l1_irq_mips_status; /* 0x10c */ + uint32_t l1_irq_mips1_mask; /* 0x110 */ + uint32_t reserved6[3]; /* 0x114 */ + uint32_t l2_irq_gp_mask; /* 0x120 */ + uint32_t l2_irq_gp_status; /* 0x124 */ + uint32_t l2_irq_gp_set; /* 0x128 */ + uint32_t reserved7; /* 0x12c */ + uint32_t gp_in_irq_mask; /* 0x130 */ + uint32_t gp_in_irq_status; /* 0x134 */ + uint32_t gp_in_irq_set; /* 0x138 */ + uint32_t gp_in_irq_sense; /* 0x13c */ + uint32_t gp_in; /* 0x140 */ + uint32_t gp_out; /* 0x144 */ +} PmcCtrlReg; + +typedef struct PmcDmaReg { + /* 0x00 */ + uint32_t src; + uint32_t dest; + uint32_t cmdList; + uint32_t lenCtl; + /* 0x10 */ + uint32_t rsltSrc; + uint32_t rsltDest; + uint32_t rsltHcs; + uint32_t rsltLenStat; +} PmcDmaReg; + +typedef struct PmcTokenReg { + /* 0x00 */ + uint32_t bufSize; + uint32_t bufBase; + uint32_t idx2ptrIdx; + uint32_t idx2ptrPtr; + /* 0x10 */ + uint32_t unused[2]; + uint32_t bufSize2; +} PmcTokenReg; + +typedef struct PmcPerfPowReg { + uint32_t freqScalarCtrl; /* 0x3c */ + uint32_t freqScalarMask; /* 0x40 */ +} PmcPerfPowReg; + +typedef struct PmcDQMPac { + uint32_t dqmPac[32]; +} PmcDQMPac; + +typedef struct PmcDQMReg { + uint32_t cfg; /* 0x1c00 */ + uint32_t _4keLowWtmkIrqMask; /* 0x1c04 */ + uint32_t mipsLowWtmkIrqMask; /* 0x1c08 */ + uint32_t lowWtmkIrqMask; /* 0x1c0c */ + uint32_t _4keNotEmptyIrqMask; /* 0x1c10 */ + uint32_t mipsNotEmptyIrqMask; /* 0x1c14 */ + uint32_t notEmptyIrqSts; /* 0x1c18 */ + uint32_t queueRst; /* 0x1c1c */ + uint32_t notEmptySts; /* 0x1c20 */ + uint32_t nextAvailMask; /* 0x1c24 */ + uint32_t nextAvailQueue; /* 0x1c28 */ + uint32_t mips1LowWtmkIrqMask; /* 0x1c2c */ + uint32_t mips1NotEmptyIrqMask; /* 0x1c30 */ + uint32_t autoSrcPidInsert; /* 0x1c34 */ + uint32_t timerIrqStatus; /* 0x1c38 */ + uint32_t timerStatus; /* 0x1c3c */ + uint32_t _4keTimerIrqMask; /* 0x1c40 */ + uint32_t mipsTimerIrqMask; /* 0x1c44 */ + uint32_t mips1TimerIrqMask; /* 0x1c48 */ +} PmcDQMReg; + +typedef struct PmcCntReg { + uint32_t cntr[10]; + uint32_t unused[6]; /* 0x28-0x3f */ + uint32_t cntrIrqMask; + uint32_t cntrIrqSts; +} PmcCntReg; + +typedef struct PmcDqmQCtrlReg { + uint32_t size; + uint32_t cfga; + uint32_t cfgb; + uint32_t cfgc; +} PmcDqmQCtrlReg; + +typedef struct PmcDqmQDataReg { + uint32_t word[4]; +} PmcDqmQDataReg; + +typedef struct PmcDqmQMibReg { + uint32_t qNumFull[32]; + uint32_t qNumEmpty[32]; + uint32_t qNumPushed[32]; +} PmcDqmQMibReg; + +typedef struct SSBMaster { + uint32_t ssbmControl; /* 0x0060 */ + uint32_t ssbmWrData; /* 0x0064 */ + uint32_t ssbmRdData; /* 0x0068 */ + uint32_t ssbmStatus; /* 0x006c */ +} SSBMaster; + +typedef struct PmmReg { + uint32_t memPowerCtrl; /* 0x0000 */ + uint32_t regSecurityConfig; /* 0x0004 */ +} PmmReg; + +typedef struct keyholeReg { + uint32_t ctrlSts; + uint32_t wrData; + uint32_t mutex; + uint32_t rdData; +} keyholeReg; + +typedef struct PmbBus { + uint32_t config; /* 0x0100 */ + uint32_t arbiter; /* 0x0104 */ + uint32_t timeout; /* 0x0108 */ + uint32_t unused1; /* 0x010c */ + keyholeReg keyhole[4]; /* 0x0110-0x014f */ + uint32_t unused2[44]; /* 0x0150-0x01ff */ + uint32_t map[64]; /* 0x0200-0x02ff */ +}PmbBus; + +typedef struct CoreCtrl { + uint32_t coreEnable; /* 0x0400 */ + uint32_t autoresetControl; /* 0x0404 */ + uint32_t coreIdle; /* 0x0408 */ + uint32_t coreResetCause; /* 0x040c */ + uint32_t memPwrDownCtrl0; /* 0x0410 */ + uint32_t memPwrDownSts0; /* 0x0414 */ + uint32_t memPwrDownCtrl1; /* 0x0418 */ + uint32_t memPwrDownSts1; /* 0x041c */ + uint32_t sysFlg0Status; /* 0x0420 */ + uint32_t sysFlg0Set; /* 0x0424 */ + uint32_t sysFlg0Clear; /* 0x0428 */ + uint32_t unused1; /* 0x042c */ + uint32_t usrFlg0Status; /* 0x0430 */ + uint32_t usrFlg0Set; /* 0x0434 */ + uint32_t usrFlg0Clear; /* 0x0438 */ + uint32_t unused2; /* 0x043c */ + uint32_t subsystemRev; /* 0x0440 */ + uint32_t resetVector; /* 0x0444 */ +} CoreCtrl; + +typedef struct CoreState { + uint32_t sysMbx[8]; /* 0x0480 */ + uint32_t usrMbx[8]; /* 0x04a0 */ + uint32_t sysMtx[4]; /* 0x04c0 */ + uint32_t usrMtx[8]; /* 0x04d0 */ +} CoreState; + +typedef struct CoreIntr { + uint32_t irqStatus; /* 0x0500 */ + uint32_t irqSet; /* 0x0504 */ + uint32_t irqClear; /* 0x0508 */ + uint32_t unused1; /* 0x050c */ + uint32_t srqStatus; /* 0x0510 */ + uint32_t srqSet; /* 0x0514 */ + uint32_t srqClear; /* 0x0518 */ + uint32_t unused2; /* 0x051c */ + uint32_t drqStatus; /* 0x0520 */ + uint32_t drqSet; /* 0x0524 */ + uint32_t drqClear; /* 0x0528 */ + uint32_t unused3; /* 0x052c */ + uint32_t frqStatus; /* 0x0530 */ + uint32_t frqSet; /* 0x0534 */ + uint32_t frqClear; /* 0x0538 */ + uint32_t unused4; /* 0x053c */ + uint32_t hostIrqLatched; /* 0x0540 */ + uint32_t hostIrqSet; /* 0x0544 */ + uint32_t hostIrqClear; /* 0x0548 */ + uint32_t hostIrqEnable; /* 0x054c */ + uint32_t obusFaultStatus; /* 0x0550 */ + uint32_t obusFaultClear; /* 0x0554 */ + uint32_t obusFaultAddr; /* 0x0558 */ +} CoreIntr; + +typedef struct CoreProfile { + uint32_t mutex; /* 0x0580 */ + uint32_t lastConfPcLo; /* 0x0584 */ + uint32_t lastConfPcHi; /* 0x0588 */ + uint32_t lastPcLo; /* 0x058c */ + uint32_t lastPcHi; /* 0x0590 */ + uint32_t braTargetPc0Lo; /* 0x0594 */ + uint32_t braTargetPc0Hi; /* 0x0598 */ + uint32_t braTargetPc1Lo; /* 0x059c */ + uint32_t braTargetPc1Hi; /* 0x05a0 */ + uint32_t braTargetPc2Lo; /* 0x05a4 */ + uint32_t braTargetPc2Hi; /* 0x05a8 */ + uint32_t braTargetPc3Lo; /* 0x05ac */ + uint32_t braTargetPc3Hi; /* 0x05b0 */ + uint32_t unused[3]; /* 0x05b4-0x05bf */ + uint32_t profSampleW[4]; /* 0x05c0 */ +} CoreProfile; + +typedef struct MaestroMisc { + CoreCtrl coreCtrl; /* 0x0400 */ + uint32_t unused1[14]; /* 0x0448-0x047f */ + CoreState coreState; /* 0x0480 */ + uint32_t unused2[4]; /* 0x04f0-0x04ff */ + CoreIntr interrupt; /* 0x0500 */ + uint32_t unused3[9]; /* 0x055c-0x057f */ + CoreProfile profile; /* 0x0580 */ +} MaestroMisc; + +typedef struct Pmc { + uint32_t unused0[1030]; + PmcCtrlReg ctrl; /* 0x1018 */ + uint32_t unused1[622]; /* 0x1148-0x1cff */ + PmcDQMPac dqmPac; /* 0x1b00 */ + uint32_t unused5[32]; /* 0x1b80-0x1bff */ + PmcDQMReg dqm; /* 0x1c00 */ + uint32_t unused6[749]; /* 0x1c4c-0x27ff */ + uint32_t qStatus[32]; /* 0x2800 */ + uint32_t unused7[480]; /* 0x2880-0x2fff */ + PmcDqmQMibReg qMib; /* 0x3000 */ + uint32_t unused8[928]; /* 0x3180-0x3fff */ + PmcDqmQCtrlReg dqmQCtrl[8]; /* 0x4000 */ + uint32_t unused9[992]; /* 0x4080-0x4fff */ + PmcDqmQDataReg dqmQData[8]; /* 0x5000 */ +} Pmc; + +typedef struct Procmon { + uint32_t unused00[256]; + MaestroMisc maestroReg; /* 0x00400 */ + uint32_t unused10[32396]; /* 0x005d0-0x1ffff */ + PmmReg pmm; /* 0x20000 */ + uint32_t unused11[22]; /* 0x20008-0x2005f */ + SSBMaster ssbMasterCtrl; /* 0x20060 */ + uint32_t unused12[36]; /* 0x20070-0x200ff */ + PmbBus pmb; /* 0x20100 */ + uint32_t unused13[32576]; /* 0x20300-0x3ffff */ + uint32_t qsm[128]; /* 0x40000-0x401ff */ + uint32_t unused14[65408]; /* 0x40200-0x7ffff */ + uint32_t dtcm[1024]; /* 0x80000-0x80fff */ + uint32_t unused15[64512]; /* 0x81000-0xbffff */ + uint32_t itcm[4096]; /* 0xc0000-0xc3fff */ +} Procmon; + + +typedef struct PMSSBMasterControl { + uint32_t control; + uint32_t wr_data; + uint32_t rd_data; +} PMSSBMasterControl; + +typedef struct +{ + uint32_t control; +#define PMC_PMBM_START (1 << 31) +#define PMC_PMBM_TIMEOUT (1 << 30) +#define PMC_PMBM_SLAVE_ERR (1 << 29) +#define PMC_PMBM_BUSY (1 << 28) +#define PMC_PMBM_BUS_SHIFT (20) +#define PMC_PMBM_Read (0 << 24) +#define PMC_PMBM_Write (1 << 24) + uint32_t wr_data; + uint32_t mutex; + uint32_t rd_data; +} PMB_keyhole_reg; + +typedef struct PMBMaster { + uint32_t config; +#define PMB_NUM_REGS_SHIFT (20) +#define PMB_NUM_REGS_MASK (0x3ff) + uint32_t arbitger; + uint32_t timeout; + uint32_t reserved; + PMB_keyhole_reg keyhole[4]; + uint32_t reserved1[44]; + uint32_t map[64]; +} PMBMaster; + + +#endif diff --git a/arch/arm/include/asm/arch-bcm4912/pmc_addr.h b/arch/arm/include/asm/arch-bcm4912/pmc_addr.h new file mode 100644 index 0000000000..f666fc2968 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4912/pmc_addr.h @@ -0,0 +1,189 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ +/* +<:copyright-BRCM:2019:DUAL/GPL:standard + + Copyright (c) 2019 Broadcom + All Rights Reserved + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License, version 2, as published by +the Free Software Foundation (the "GPL"). + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + + +A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by +writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. + +:> +*/ + +#ifndef _4912_PMC_ADDR_H +#define _4912_PMC_ADDR_H + +#define PMB_BUS_MAX 2 +#define PMB_BUS_ID_SHIFT 12 + +#define PMB_BUS_PERIPH 0 +#define PMB_ADDR_PERIPH (0 | PMB_BUS_PERIPH << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PERIPH 4 + +#define PMB_BUS_CHIP_CLKRST 0 +#define PMB_ADDR_CHIP_CLKRST (1 | PMB_BUS_CHIP_CLKRST << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_CHIP_CLKRST 0 + +#define PMB_BUS_PVTMON 1 +#define PMB_ADDR_PVTMON (3 | PMB_BUS_PVTMON << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PVTMON 0 + +#define PMB_BUS_CRYPTO 1 +#define PMB_ADDR_CRYPTO (4 | PMB_BUS_CRYPTO << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_CRYPTO 0 + +#define PMB_BUS_USB30_2X 0 +#define PMB_ADDR_USB30_2X (5 | PMB_BUS_USB30_2X << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_USB30_2X 4 + +#define PMB_BUS_PCIE1 1 +#define PMB_ADDR_PCIE1 (6 | PMB_BUS_PCIE1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE1 4 + +// referring to PCIEG3 +#define PMB_BUS_PCIE3 1 +#define PMB_ADDR_PCIE3 (7 | PMB_BUS_PCIE3 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE3 1 + +#define PMB_BUS_MEMC 1 +#define PMB_ADDR_MEMC (8 | PMB_BUS_MEMC << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MEMC 1 + +#define PMB_BUS_XRDP 1 +#define PMB_ADDR_XRDP (9 | PMB_BUS_XRDP << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP 1 + +#define PMB_BUS_PCIE2 1 +#define PMB_ADDR_PCIE2 (11 | PMB_BUS_PCIE2 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE2 1 + +#define PMB_BUS_PCIE0 0 +#define PMB_ADDR_PCIE0 (12 | PMB_BUS_PCIE0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE0 1 + +#define PMB_BUS_ETH 1 +#define PMB_ADDR_ETH (13 | PMB_BUS_ETH << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ETH 1 + +#define PMB_BUS_MPM 1 +#define PMB_ADDR_MPM (14 | PMB_BUS_MPM << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MPM 1 + +#define PMB_BUS_XRDPPLL 0 +#define PMB_ADDR_XRDPPLL (15 | PMB_BUS_XRDPPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDPPLL 0 + +#define PMB_BUS_PERIPH_ARS 0 +#define PMB_ADDR_PERIPH_ARS (16 | PMB_BUS_PERIPH_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PERIPH_ARS 0 + +#define PMB_BUS_PCIE0_UBUS_ARS 0 +#define PMB_ADDR_PCIE0_UBUS_ARS (17 | PMB_BUS_PCIE0_UBUS_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE0_UBUS_ARS 0 + +#define PMB_BUS_USB30_2X_ARS 0 +#define PMB_ADDR_USB30_2X_ARS (18 | PMB_BUS_USB30_2X_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_USB30_2X_ARS 0 + +#define PMB_BUS_SYS_ARS 0 +#define PMB_ADDR_SYS_ARS (19 | PMB_BUS_SYS_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_SYS_ARS 0 + +#define PMB_BUS_CRYPTO2_ARS 1 +#define PMB_ADDR_CRYPTO2_ARS (20 | PMB_BUS_CRYPTO2_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_CRYPTO2_ARS 0 + +#define PMB_BUS_XRDP_ARS 1 +#define PMB_ADDR_XRDP_ARS (21 | PMB_BUS_XRDP_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_ARS 0 + +#define PMB_BUS_MPM_ARS 1 +#define PMB_ADDR_MPM_ARS (22 | PMB_BUS_MPM_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MPM_ARS 0 + +#define PMB_BUS_MEMC_ARS 1 +#define PMB_ADDR_MEMC_ARS (23 | PMB_BUS_MEMC_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MEMC_ARS 0 + +#define PMB_BUS_ETH_ARS 1 +#define PMB_ADDR_ETH_ARS (24 | PMB_BUS_ETH_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ETH_ARS 0 + +#define PMB_BUS_PCIE1_UBUS_ARS 1 +#define PMB_ADDR_PCIE1_UBUS_ARS (25 | PMB_BUS_PCIE1_UBUS_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE1_UBUS_ARS 0 + +#define PMB_BUS_PCIE3_ARS 1 +#define PMB_ADDR_PCIE3_ARS (26 | PMB_BUS_PCIE3_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE3_ARS 0 + +#define PMB_BUS_MERLIN0_UBUS_ARS 1 +#define PMB_ADDR_MERLIN0_UBUS_ARS (27 | PMB_BUS_MERLIN0_UBUS_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MERLIN0_UBUS_ARS 0 + +#define PMB_BUS_MERLIN1_UBUS_ARS 1 +#define PMB_ADDR_MERLIN1_UBUS_ARS (28 | PMB_BUS_MERLIN1_UBUS_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MERLIN1_UBUS_ARS 0 + +#define PMB_BUS_MERLIN2_UBUS_ARS 1 +#define PMB_ADDR_MERLIN2_UBUS_ARS (29 | PMB_BUS_MERLIN2_UBUS_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MERLIN2_UBUS_ARS 0 + +#define PMB_BUS_ORION_PLL 1 +#define PMB_ADDR_ORION_PLL (32 | PMB_BUS_ORION_PLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_PLL 0 +#define PMB_BUS_BIU_PLL PMB_BUS_ORION_PLL +#define PMB_ADDR_BIU_PLL PMB_ADDR_ORION_PLL +#define PMB_ZONES_BIU_PLL PMB_ZONES_ORION_PLL + + +#define PMB_BUS_ORION_BPCM 1 +#define PMB_ADDR_ORION_BPCM (33 | PMB_BUS_ORION_BPCM << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_BPCM 1 +#define PMB_BUS_BIU_BPCM PMB_BUS_ORION_BPCM +#define PMB_ADDR_BIU_BPCM PMB_ADDR_ORION_BPCM +#define PMB_ZONES_BIU_BPCM PMB_ZONES_ORION_BPCM + +#define PMB_BUS_ORION_CPU0 1 +#define PMB_ADDR_ORION_CPU0 (34 | PMB_BUS_ORION_CPU0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU0 1 + +#define PMB_BUS_ORION_CPU1 1 +#define PMB_ADDR_ORION_CPU1 (35 | PMB_BUS_ORION_CPU1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU1 1 + +#define PMB_BUS_ORION_CPU2 1 +#define PMB_ADDR_ORION_CPU2 (36 | PMB_BUS_ORION_CPU2 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU2 1 + +#define PMB_BUS_ORION_CPU3 1 +#define PMB_ADDR_ORION_CPU3 (37 | PMB_BUS_ORION_CPU3 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU3 1 + +#define PMB_BUS_ORION_NONCPU 1 +#define PMB_ADDR_ORION_NONCPU (38 | PMB_BUS_ORION_NONCPU << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_NONCPU 1 + +#define PMB_BUS_ORION_ARS 1 +#define PMB_ADDR_ORION_ARS (39 | PMB_BUS_ORION_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_ARS 0 + +#define PMB_BUS_ORION_ACEBIU_ARS 1 +#define PMB_ADDR_ORION_ACEBIU_ARS (40 | PMB_BUS_ORION_ACEBIU_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_ACEBIU_ARS 0 +#endif diff --git a/arch/arm/include/asm/arch-bcm4912/pmc_drv_cfg.h b/arch/arm/include/asm/arch-bcm4912/pmc_drv_cfg.h new file mode 100644 index 0000000000..c38e5eb307 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4912/pmc_drv_cfg.h @@ -0,0 +1,40 @@ +/* +<:copyright-BRCM:2019:DUAL/GPL:standard + + Copyright (c) 2019 Broadcom + All Rights Reserved + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License, version 2, as published by +the Free Software Foundation (the "GPL"). + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + + +A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by +writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. + +:> +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_3_X +#define PMC_IMPL_3_2 + +#define PMC_LOG_IN_DTCM 1 +#define PMC_FW_IN_ITCM 1 +#define PMC_CPUTEMP_SUPPORT 1 +#define PMC_RAM_BOOT 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm4912/rng.h b/arch/arm/include/asm/arch-bcm4912/rng.h new file mode 100644 index 0000000000..2e5ada10c2 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm4912/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _4912_RNG_H +#define _4912_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + BPCM_SGPHY_CNTL sgphy_cntl; // offset = 0x38, actual offset = 14 + BPCM_SGPHY_STATUS sgphy_status; // offset = 0x3c, actual offset = 15 + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + uint32_t rvrsd[2]; + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_VDSL_REGS; // total offset space = 4096 + +#define BPCMVDSLOffset(reg) offsetof(BPCM_VDSL_REGS,reg) +#define BPCMVDSLRegOffset(reg) (BPCMVDSLOffset(reg) >> 2) + +// ARM BPCM addresses as used by 63138 and possibly others (28nm) +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved; // offset = 0x2c, actual offset = 11 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + ARM_CPUx_PWR_CTRL_REG arm_pwr_ctrl_0; // offset = 0x34, actual offset = 13 + ARM_CPUx_PWR_CTRL_REG arm_pwr_ctrl_1; // offset = 0x38, actual offset = 14 + ARM_CPUx_PWR_CTRL_REG arm_neon_l2; // offset = 0x3c, actua; offset = 15 + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + uint32_t decndiv; // offset = 0x44, actual offset = 0x11 + uint32_t decpdiv; // offset = 0x48, actual offset = 0x12 + uint32_t decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved1; // offset = 0x2c, actual offset = 11 + uint32_t clkrst_cfg; // offset = 0x30, actual offset = 12 + uint32_t clkrst_control; // offset = 0x34, actual offset = 13 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm63138/avs_fixup.h b/arch/arm/include/asm/arch-bcm63138/avs_fixup.h new file mode 100644 index 0000000000..fca75efcdd --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63138/avs_fixup.h @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include + +/* +The algorithm to disable AVS in PMC ROM if enabled in STRAP: + + if (POR) { + clear_marker(); + } + + if (AVS_ENABLED) { + override (AVS_DISABLE); + set_marker(); + do_soft_reset(); + } + + if (is_marker_set()) { + override (AVS_ENABLE); + } + + clear_marker(); +*/ + /////////////////////////////////////////// + // Check if this is POR + ldr r0, =TIMR_BASE + ldr r1, [r0, #TIMER_RESET_STATUS] + tst r1, #(TIMER_RESET_STATUS_POR) + beq do_avs_disabled + // for POR, always clear marker + ldr r0, =MISC_BASE + ldr r1, [r0, #MISC_STRAP_BUS] + bic r1, r1, #(MISC_STRAP_BUS_PMC_AVS_OVERRIDE_MARKER) + str r1, [r0, #MISC_STRAP_BUS] + +do_avs_disabled: + ldr r0, =MISC_BASE + ldr r1, [r0, #MISC_STRAP_BUS] + // Check if AVS "was" intentionally disabled earlier + tst r1, #(MISC_STRAP_BUS_PMC_BOOT_AVS) + beq do_marker_check + // Since AVS is enabled, + // disable AVS and do soft reset + bic r1, r1, #(MISC_STRAP_BUS_PMC_BOOT_AVS) + // Set marker to indicate AVS was disabled + orr r1, r1, #(MISC_STRAP_BUS_PMC_AVS_OVERRIDE_MARKER) + str r1, [r0, #MISC_STRAP_BUS] + // Save changes (toggle override) + mov r1, #1 + str r1, [r0, #MISC_STRAP_BUS_OVERRIDE] + mov r1, #0 + str r1, [r0, #MISC_STRAP_BUS_OVERRIDE] + //soft reset the chip + ldr r0, =TIMR_BASE + mov r1, #1 + str r1, [r0, #TIMER_WD_RESET] + // See you in next life +rstc: + b rstc + +do_marker_check: + // re-enable AVS only if it "was" intentionally disabled earlier + tst r1, #(MISC_STRAP_BUS_PMC_AVS_OVERRIDE_MARKER) + beq do_clear_marker + // Enable AVS + orr r1, r1, #(MISC_STRAP_BUS_PMC_BOOT_AVS) + +do_clear_marker: + // Clear marker + bic r1, r1, #(MISC_STRAP_BUS_PMC_AVS_OVERRIDE_MARKER) + str r1, [r0, #MISC_STRAP_BUS] + // Save changes (toggle override) + mov r1, #1 + str r1, [r0, #MISC_STRAP_BUS_OVERRIDE] + mov r1, #0 + str r1, [r0, #MISC_STRAP_BUS_OVERRIDE] diff --git a/arch/arm/include/asm/arch-bcm63138/boot0.h b/arch/arm/include/asm/arch-bcm63138/boot0.h new file mode 100644 index 0000000000..51439af122 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63138/boot0.h @@ -0,0 +1,79 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63138_BOOT0_H +#define _63138_BOOT0_H + +#include +#include +#include + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) +_bcm_boot: + mov r0,#0 + mcr p15,0,r0,c8,c7,0 /* Invalidate TLB */ + mcr p15,0,r0,c7,c5,0 /* Invalidate icache */ + + /* Initialize system control register enable i-cache */ + mrc p15,0,r0,c1,c0,0 + bic r0,r0,#(CR_C|CR_A|CR_M) /* Clear C, A, M bits */ + orr r0,r0,#CR_I /* Set I bit: enable instruction cache */ + mcr p15,0,r0,c1,c0,0 + + isb + +#include +#include + + /* relocate the code, init'ed data from flash to lmem */ +relo_image: + adr r1, _bcm_boot /* r1 source address in flash */ + ldr r0, =__image_copy_start /* r0 dest address in sram */ + subs r4, r1, r0 /* r4 relocation offset */ + beq relo_dtb /* skip relocation */ + ldr r2, =__image_copy_end /* r2 dest ending address in flash */ + +relo_loop: + ldmia r1!, {r10-r11} + stmia r0!, {r10-r11} + cmp r0, r2 + blo relo_loop + + /* if we attached dtb after bss, need to relocate dtb as well */ +relo_dtb: +#if defined(CONFIG_SPL_OF_CONTROL) && defined(CONFIG_OF_SEPARATE) + +#ifdef CONFIG_OF_SPL_SEPARATE_BSS + ldr r3, =__image_binary_end +#else + ldr r3, =__bss_end +#endif + add r1, r3, r4 /* r1 source address in flash */ + /* check ftd size ... */ + /* struct fdt_header { + fdt32_t magic; + fdt32_t totalsize; */ + ldr r0, [r1, #4] /* r0 total size */ + rev r0, r0 /* byte order from fdt to little endian */ + lsr r0, r0, #2 /* in the order of 4 bytes aligned */ + add r0, r0, #1 + lsl r0, r0, #2 + add r2, r1, r0 /* r2 dest ending address in flash */ + mov r0, r3 /* r0 dest address in sram */ + +dtb_loop: + ldmia r1!, {r10-r11} + stmia r0!, {r10-r11} + cmp r1, r2 + blo dtb_loop +#endif + ldr r0, =reset + bx r0 + +#endif + .align(5), 0x0 +_start: + ARM_VECTORS +#endif diff --git a/arch/arm/include/asm/arch-bcm63138/brom.h b/arch/arm/include/asm/arch-bcm63138/brom.h new file mode 100644 index 0000000000..2fa9eed572 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63138/brom.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63138_BROM_H +#define _63138_BROM_H +#define BROM_SEC_BASE 0xfffeb614 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromSec_ { +#define BROM_GEN_JTAG_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_JTAG_SPI_SLV_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; +} BromSec; + +#define BROM_GEN ((volatile BromSec * const) BROM_SEC_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= (BROM_GEN_JTAGE_SPI_SLV_UNLOCK_MASK<> AIPACP_WCACHE_SHIFT) & AIPACP_WCACHE_MASK) +#define AIPACP_WCACHE_SET(reg_val,new_val) ((reg_val & ~(AIPACP_WCACHE_MASK << AIPACP_WCACHE_SHIFT)) | (new_val << AIPACP_WCACHE_SHIFT)) +#define AIPACP_RCACHE_SHIFT 4 +#define AIPACP_RCACHE_MASK 0xf +#define AIPACP_RCACHE_GET(reg_val) ((reg_val >> AIPACP_RCACHE_SHIFT) & AIPACP_RCACHE_MASK) +#define AIPACP_RCACHE_SET(reg_val,new_val) ((reg_val & ~(AIPACP_RCACHE_MASK << AIPACP_RCACHE_SHIFT)) | (new_val << AIPACP_RCACHE_SHIFT)) +#define AIPACP_WUSER_SHIFT 8 +#define AIPACP_WUSER_MASK 0x1f +#define AIPACP_WUSER_GET(reg_val) ((reg_val >> AIPACP_WUSER_SHIFT) & AIPACP_WUSER_MASK) +#define AIPACP_WUSER_SET(reg_val,new_val) ((reg_val & ~(AIPACP_WUSER_MASK << AIPACP_WUSER_SHIFT)) | (new_val << AIPACP_WUSER_SHIFT)) +#define AIPACP_RUSER_SHIFT 13 +#define AIPACP_RUSER_MASK 0x1f +#define AIPACP_RUSER_GET(reg_val) ((reg_val >> AIPACP_RUSER_SHIFT) & AIPACP_RUSER_MASK) +#define AIPACP_RUSER_SET(reg_val,new_val) ((reg_val & ~(AIPACP_RUSER_MASK << AIPACP_RUSER_SHIFT)) | (new_val << AIPACP_RUSER_SHIFT)) + + uint32_t unused1[12]; + uint32_t debug_permission; /* 0xc0 */ + uint32_t debug_en; /* 0xc4 */ +} ArmAipCtrl; +#define ARMAIPCTRL ((volatile ArmAipCtrl * const) AIP_BASE) + +/* + * ARM CFG + */ +typedef struct ArmProcClkMgr { + uint32_t wr_access; /* 0x00 */ +#define ARM_PROC_CLK_WR_ACCESS_PASSWORD_SHIFT 8 +#define ARM_PROC_CLK_WR_ACCESS_PASSWORD_MASK (0xffff< NAND BOOT */ +#define MISC_STRAP_BUS_SW_BOOT_NORMAL_MASK (0x1 << 24) /* Bit 24 = 0 => Bootrom boot */ +#define MISC_STRAP_BUS_BISR_MEM_REPAIR (1 << 23) +#define MISC_STRAP_BUS_RESET_OUT_DELAY_SHIFT 22 +#define MISC_STRAP_BUS_RESET_OUT_DELAY_MASK (1 << MISC_STRAP_BUS_RESET_OUT_DELAY_SHIFT) +#define MISC_STRAP_BUS_RESET_OUT_DELAY_100MS (1 << MISC_STRAP_BUS_RESET_OUT_DELAY_SHIFT) +#define MISC_STRAP_BUS_RESET_OUT_DELAY_50MS (0x0 << MISC_STRAP_BUS_RESET_OUT_DELAY_SHIFT) +#define MISC_STRAP_BUS_SYS_BUS_FREQ (0x3 << 20) +#define MISC_STRAP_BUS_A9_CORE0_BOOT (1 << 19) +#define MISC_STRAP_BUS_PMC_BOOT_FLASH_N (1 << 18) +#define MISC_STRAP_BUS_PMC_BOOT_AVS (1 << 17) +#define MISC_STRAP_BUS_HS_SPIM_24B_N_32B_ADDR (1 << 16) +#define MISC_STRAP_BUS_HS_SPIM_CLK_SLOW_N_FAST (1 << 15) +#define MISC_STRAP_BUS_SW_RESERVE_0 (0x7 << 12) +#define MISC_STRAP_BUS_DISABLE_NAND_ECC (1 << 11) +#define MISC_STRAP_BUS_PMC_ROM_BOOT_SHIFT 10 +#define MISC_STRAP_BUS_PMC_ROM_BOOT (1< +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_1_X + +#define PMC_CPU_BIG_ENDIAN 1 +#define PMC_GETRCAL_SUPPORT 1 +#define PMC_STALL_SUPPORT 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm63138/pmc_ll_init.h b/arch/arm/include/asm/arch-bcm63138/pmc_ll_init.h new file mode 100644 index 0000000000..131392e718 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63138/pmc_ll_init.h @@ -0,0 +1,218 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include + +#define SETLEDS(a,b,c,d) + +/* ********************************************************************* + * This function power up any necessary modules that are controlled by + * PMC for board to boot such as vdsl. + * This is called when still executing in place on flash + ********************************************************************* */ +pmc_ll_init: + + ldr r0, =MISC_BASE /* check if PMC ROM is enabled or not */ + ldr r0, [r0, #MISC_STRAP_BUS] + lsr r0, #MISC_STRAP_BUS_PMC_ROM_BOOT_SHIFT + ands r0, #0x1 + beq pmbd + + SETLEDS('P','M','C','S') + b pmcs +pmbd: + SETLEDS('P','M','B','S') +pmcs: + + /* workaround for the high temp lock issue. no need for 148 because + these setting are already in the chip */ +#if defined(CONFIG_BCM63138) + /* config AFE PLL */ + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x5 /* cfg[0] reg offset in PLL_BPCM_REGS */ + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + mov r0, #1 + lsl r0, #27 + orr r2, r1, r0 + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x5 /* cfg[0] reg offset in PLL_BPCM_REGS */ + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* overwrite ndiv and pdiv */ + ldr r2, =0x80000001 + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x12 /* pdiv reg offset in PLL_BPCM_REGS */ + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + ldr r2, =0x80000030 + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x11 /* ndiv reg offset in PLL_BPCM_REGS */ + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error +#endif + + /* start AFE PLL */ + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x4 /* resets reg offset in PLL_BPCM_REGS */ + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + orr r2, r1, #0x3 + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x4 /* resets reg offset in PLL_BPCM_REGS */ + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* wait AFE PLL to lock */ +afel: + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0xa + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Wait for AFE PLL lock: repeat read until bit 31 (AFE PLL lock bit) is set */ + ldr r0, =0x80000000 + and r1, r0 + cmp r1, #0 /* if bit 31 is not one, repeat read of reg 0x1700a */ + beq afel + + /* AFE is locked, commence LMEM init */ + /* Enable VDSL step 0. Power on zone 0, 1 and 2 */ + mov r5, #0x10 +pwr_zone_vdsl: + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, r5 + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + ldr r0, =0x1d00 + orr r2, r0, r1 + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, r5 + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + add r5, #4 + /* zone 0 starts from 0x10 offset */ + cmp r5, #(0x10+4*PMB_ZONES_VDSL3_CORE) + bne pwr_zone_vdsl + + /* Enable VDSL step 1: initiate a read of register 0x1600a via the PMC message handler */ + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xa + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable VDSL step 1: or data with 0xffffff01 and write back into 0x1600a */ + ldr r0, =0xffffff01 + orr r2, r0, r1 + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xa + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable VDSL step 2 : initiate a read of register 0x1600c via the PMC message handler */ + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xc + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable VDSL step 2 : set the bottom two bits high and rewrite back into 0x1600c */ + mov r0, #0x3 + orr r2, r0, r1 + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xc + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable VDSL step 3: initiate a read of register 0x1600a via the PMC message handler */ + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xa + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable VDSL step 3 : write to reg 0x1600a */ + ldr r0, =0xffffff03 + orr r2, r0, r1 + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xa + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable PCM_BMU zones */ + mov r5, #0x10 +pwr_zone_apm: + mov r0, #PMB_ADDR_APM + mov r1, r5 + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + ldr r0, =0x1d00 + orr r2, r0, r1 + mov r0, #PMB_ADDR_APM + mov r1, r5 + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + add r5, #4 + /* zone 0 starts from 0x10 offset */ + cmp r5, #(0x10+4*PMB_ZONES_APM) + bne pwr_zone_apm + + /* Move LDO reference to make it settle to the right voltage */ + ldr r0, =0x80100130 + ldr r1, [r0] + //set bit[15] high + ldr r2, =0x8000 + orr r1, r2 + str r1, [r0] + +#if defined(CONFIG_BCM63138) + /* 63148 does not need to deassert */ + //Wait 550usec de-assert bit[15]. + ldr r2, =110000 +w2: + sub r2, #1 + cmp r2, #0 + bne w2 + ldr r1, [r0] + bic r1, #0x8000 + str r1, [r0] +#endif + + b pmc_done + +pmc_error: + SETLEDS('P','M','C','E') + mov r0, #1 + /* failed to power lmem? dead and stuck here */ + b pmc_error + +pmc_done: + SETLEDS('P','M','C','D') + mov r0, #0 diff --git a/arch/arm/include/asm/arch-bcm63138/rdp.h b/arch/arm/include/asm/arch-bcm63138/rdp.h new file mode 100644 index 0000000000..7b691ef1be --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63138/rdp.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63138_RDP_H +#define _63138_RDP_H + +#define RDP_BASE 0x80200000 + +#endif diff --git a/arch/arm/include/asm/arch-bcm63138/rng.h b/arch/arm/include/asm/arch-bcm63138/rng.h new file mode 100644 index 0000000000..4bb26eca98 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63138/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63138_RNG_H +#define _63138_RNG_H + +#define RNG_BASE 0xfffe8300 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +typedef union { + struct { + uint32_t ubus_soft_reset:1; + uint32_t alt_ubus_clk_sel:1; + uint32_t observe_clk_sw_init:1; + uint32_t alt_emmc_clk_sel:1; + uint32_t reserved:5; + uint32_t enable:1; + uint32_t counter:8; + uint32_t reserved2:14; + } Bits; + uint32_t Reg32; +} BPCM_CLKRST_VREG_CONTROL; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + uint32_t reserved1[2]; // offset 0x18, PMB reg index 6/7 + // Client-specific registers + uint32_t client_specific[24]; // offset 0x20, PMB reg index 8..31 + // Zones + BPCM_ZONE zones[]; // offset 0x80..(0x20 + MAX_ZONES*32)), PMB reg index 32..(32+(MAX_ZONES*8-1)) +} BPCM_REGS; // total offset space = 4096 + +#define BPCM_OFFSET(reg) (offsetof(BPCM_REGS,reg)>>2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08, actual offset = 2 + uint32_t cfg_control; // offset = 0x10, actual offset = 4 + BPCM_SR_CONTROL sr_control; // offset = 0x14, actual offset = 5 + uint32_t reserved1[2]; // offset = 0x18, actual offset = 6 + uint32_t vdsl_arm_sr; // offset = 0x20, actual offset = 8 + BPCM_VDSL_ARM_RST_CTL vdsl_arm_rst_control; // offset = 0x24, actual offset = 9 + uint32_t reserved2[2]; // offset = 0x28, actual offset = 10 + uint32_t vdsl_afe_config0; // offset = 0x30, actual offset = 12 + uint32_t vdsl_afe_config1; // offset = 0x34, actual offset = 13 + uint32_t reserved3[18]; // offset = 0x38, actual offset = 14 + BPCM_ZONE zones; // offset = 0x80, actual offset = 32 +} BPCM_VDSL_REGS; // total offset space = 4096 + +#define BPCMVDSLOffset(reg) offsetof(BPCM_VDSL_REGS,reg) +#define BPCMVDSLRegOffset(reg) (BPCMVDSLOffset(reg) >> 2) + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08, actual offset = 2 + uint32_t cfg_control; // offset = 0x10, actual offset = 4 + BPCM_SR_CONTROL sr_control; // offset = 0x14, actual offset = 5 + uint32_t reserved1[2]; // offset = 0x18, actual offset = 6 + BPCM_ZONE zones; // offset = 0x20, actual offset = 8 + ARM_CONTROL_REG arm_control; // offset = 0x40, actual offset = 16 +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + /* BIU PLL BCPM definition */ + BPCM_ID_REG id_reg; // offset = 0x00 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04 + uint32_t reserved0[2]; // offset = 0x08..0x0c + PLL_CTRL_REG resets; // offset = 0x10 + uint32_t reserved1[2]; // offset = 0x14 + PLL_NDIV_REG ndiv; // offset = 0x1c + PLL_PDIV_REG pdiv; // offset = 0x20 + PLL_LOOP0_REG loop0; // offset = 0x24 + PLL_LOOP1_REG loop1; // offset = 0x28 + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c + PLL_CHCFG_REG ch23_cfg; // offset = 0x30 + PLL_CHCFG_REG ch45_cfg; // offset = 0x34 + uint32_t reserved2; // offset = 0x38 + PLL_STAT_REG stat; // offset = 0x3c + uint32_t strap; // offset = 0x40 + PLL_DECNDIV_REG decndiv;// offset = 0x44 + PLL_DECPDIV_REG decpdiv;// offset = 0x48 + PLL_DECCH25_REG decch25;// offset = 0x4c +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + uint32_t reserved1[5]; // offset = 0x14, actual offset = 5 + PLL_NDIV_REG ndiv; // offset = 0x28, actual offset = a + PLL_PDIV_REG pdiv; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch01_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch23_cfg; // offset = 0x34, actual offset = d + PLL_CHCFG_REG ch45_cfg; // offset = 0x38, actual offset = e + PLL_LOOP0_REG loop0; // offset = 0x3c, actual offset = f + PLL_LOOP1_REG loop1; // offset = 0x40, actual offset = 0x10 + PLL_STAT_REG stat; // offset = 0x44, actual offset = 0x11 + uint32_t strap; // offset = 0x48, actual offset = 0x12 + PLL_DECNDIV_REG decndiv;// offset = 0x4c, actual offset = 0x13 + PLL_DECPDIV_REG decpdiv;// offset = 0x50, actual offset = 0x14 + PLL_DECCH25_REG decch25;// offset = 0x54, actual offset = 0x15 +} AFEPLL_BPCM_REGS; + +#define AFEPLLBPCMOffset(reg) offsetof(AFEPLL_BPCM_REGS,reg) +#define AFEPLLBPCMRegOffset(reg) (AFEPLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04 + uint32_t reserved0[2]; // offset = 0x08..0x0c + PLL_CTRL_REG resets; // offset = 0x10 + uint32_t reserved1[5]; // offset = 0x14 + PLL_NDIV_REG ndiv; // offset = 0x28 + PLL_PDIV_REG pdiv; // offset = 0x2c + PLL_CHCFG_REG ch01_cfg; // offset = 0x30 + PLL_CHCFG_REG ch23_cfg; // offset = 0x34 + PLL_CHCFG_REG ch45_cfg; // offset = 0x38 + PLL_STAT_REG stat; // offset = 0x3c + uint32_t strap; // offset = 0x40 + PLL_DECNDIV_REG decndiv;// offset = 0x44 + PLL_DECPDIV_REG decpdiv;// offset = 0x48 + PLL_DECCH25_REG decch25;// offset = 0x4c +} RDPPLL_BPCM_REGS; + +#define RDPPLLBPCMOffset(reg) offsetof(RDPPLL_BPCM_REGS,reg) +#define RDPPLLBPCMRegOffset(reg) (RDPPLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved1; // offset = 0x2c, actual offset = 11 + uint32_t clkrst_cfg; // offset = 0x30, actual offset = 12 + BPCM_CLKRST_VREG_CONTROL vreg_control; // offset 0x50, PMB reg index 19 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +typedef struct { + // ETH_PMB + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved8[2]; // offset 0x08, PMB reg index 2/3 + // ETH_CFG + uint32_t dpg_zones; // offset 0x10, PMB reg index 4 + uint32_t soft_rst;; // offset 0x14, PMB reg index 5 + uint32_t reserved18[2]; // offset 0x18, PMB reg index 6/7 + // ETH_CORE + uint32_t qphy_cntrl; // offset 0x20 + uint32_t qphy_status; // offset 0x24 + uint32_t sphy_cntrl; // offset 0x28 + uint32_t sphy_status; // offset 0x2c + uint32_t serdes0_cntrl; // offset 0x30 + uint32_t serdes0_status;// offset 0x34 + uint32_t serdes0_an_st; // offset 0x38 + uint32_t serdes1_cntrl; // offset 0x3c + uint32_t serdes1_status;// offset 0x40 + uint32_t serdes1_an_st; // offset 0x44 + uint32_t reserved48[3]; + uint32_t rgmii_cntrl; // offset 0x54 + uint32_t reserved58[2]; + uint32_t serdes0_st1; // offset 0x60 + uint32_t serdes1_st1; // offset 0x64 + uint32_t reserved68; + uint32_t serdes0_pwr_cntrl;// offset 0x6c + uint32_t serdes1_pwr_cntrl;// offset 0x70 +} BPCM_ETH_REGS; + +#define BPCMETHOffset(reg) offsetof(BPCM_ETH_REGS,reg) +#define BPCMETHRegOffset(reg) (BPCMETHOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif +#endif + + diff --git a/arch/arm/include/asm/arch-bcm63146/boot0.h b/arch/arm/include/asm/arch-bcm63146/boot0.h new file mode 100644 index 0000000000..776f923b54 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63146/boot0.h @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63146_BOOT0_H +#define _63146_BOOT0_H + +#include +#include +#include + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) +_bcm_boot: + tlbi alle3 /* Invalidate TLB */ + dsb sy + isb + + ic ialluis /* Invalidate icache */ + isb + + /* Initialize system control register enable i-cache */ + mrs x0, sctlr_el3 + movn x1, #(CR_M | CR_C) + and x0, x1, x0 + orr x0, x0, #CR_I + msr sctlr_el3, x0 + isb + + /* relocate the code, init'ed data from flash to lmem */ +relo_image: + adr x1, _bcm_boot /* x1 source address in flash */ + ldr x0, =__image_copy_start /* x0 dest address in sram */ + subs x4, x1, x0 /* x4 relocation offset */ + beq relo_dtb /* skip relocation */ + ldr x2, =__image_copy_end /* x2 dest ending address in flash */ + +relo_loop: + ldp x5, x6, [x1], #16 + stp x5, x6, [x0], #16 + cmp x0, x2 + blo relo_loop + + /* if we attached dtb after bss, need to relocate dtb as well */ +relo_dtb: +#if defined(CONFIG_SPL_OF_CONTROL) && defined(CONFIG_OF_SEPARATE) + +#ifdef CONFIG_OF_SPL_SEPARATE_BSS + ldr x3, =__image_binary_end +#else + ldr x3, =_end +#endif + add x1, x3, x4 /* r1 source address in flash */ + mov x0, xzr + mov x2, xzr + /* check ftd size ... */ + /* struct fdt_header { + fdt32_t magic; + fdt32_t totalsize; */ + ldr w0, [x1, #4] /* r0 total size */ + rev w0, w0 /* byte order from fdt to little endian */ + lsr w0, w0, #2 /* in the order of 4 bytes aligned */ + add w0, w0, #1 + lsl w0, w0, #2 + add x2, x1, x0 /* r2 dest ending address in flash */ + mov x0, x3 /* r0 dest address in sram */ + +dtb_loop: + ldp x5, x6, [x1], #16 + stp x5, x6, [x0], #16 + cmp x1, x2 + blo dtb_loop +#endif + ldr x0, =reset + br x0 + +#else + b reset +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm63146/brom.h b/arch/arm/include/asm/arch-bcm63146/brom.h new file mode 100644 index 0000000000..b89f52dc65 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63146/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63146_BROM_H +#define _63146_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK< + + +typedef struct CCI500_SlaveIntf { + #define SNOOP_CTRL_ENABLE_SNOOP 0x1 + uint32_t snoop_ctrl; /* 0x0 */ + #define SHARE_OVR_SHAREABLE_OVR_SHIFT 0x0 + #define SHARE_OVR_SHAREABLE_OVR_MASK 0x3 + #define SHARE_OVR_SHAREABLE_OVR_NONSHR 0x2 + #define SHARE_OVR_SHAREABLE_OVR_SHR 0x3 + uint32_t share_ovr; /* 0x4 */ + uint32_t rsvd1[62]; /* 0x8 - 0xff */ + uint32_t arqos_ovr; /* 0x100 */ + uint32_t awqos_ovr; /* 0x104 */ + uint32_t rsvd2[2]; /* 0x108 - 0x10f */ + uint32_t qos_max_ot; /* 0x110 */ + uint32_t rsvd3[955]; /* 0x114 - 0xfff */ +}CCI500_SlaveIntf; + +typedef struct CCI500_EventCounter { + uint32_t sel; /* 0x0 */ + uint32_t data; /* 0x4 */ + uint32_t ctrl; /* 0x8 */ + uint32_t clr_ovfl; /* 0xC */ + uint32_t rsvd[16380]; /* 0x10 - 0xffff */ +}CCI500_EventCounter; + +typedef struct CCI500 { + #define CONTROL_OVERRIDE_SNOOP_DISABLE 0x1 + #define CONTROL_OVERRIDE_SNOOP_FLT_DISABLE 0x4 + uint32_t ctrl_ovr; /* 0x0 */ + uint32_t rsvd1; /* 0x4 */ + #define SECURE_ACCESS_UNSECURE_ENABLE 0x1 + uint32_t secr_acc; /* 0x8 */ + uint32_t status; /* 0xc */ + #define STATUS_CHANGE_PENDING 0x1 + uint32_t impr_err; /* 0x10 */ + uint32_t qos_threshold; /* 0x14 */ + uint32_t rsvd2[58]; /* 0x18 - 0xff */ + uint32_t pmu_ctrl; /* 0x100 */ + #define DBG_CTRL_EN_INTF_MON 0x1 + uint32_t debug_ctrl; /* 0x104 */ + uint32_t rsvd3[958]; /* 0x108 - 0xfff */ + #define SLAVEINTF_COHERENCY_PORT 0x0 + #define SLAVEINTF_CPU_CLUSTER 0x1 + CCI500_SlaveIntf si[7]; /* 0x1000 - 0x7fff */ + uint32_t rsvd4[8192]; /* 0x8000 - 0xffff */ + CCI500_EventCounter evt_cntr[8]; /* 0x10000 - 0x8ffff */ +}CCI500; + +#define CCI500_BASE 0x81100000 +#define CCI500 ((volatile CCI500 * const) CCI500_BASE) + +typedef struct UBUS4_RANGE_CHK_CFG { + uint32_t control; /* 0x0 */ + uint32_t srcpid[8]; /* 0x4 - 0x23 */ + uint32_t seclev; /* 0x24 */ + uint32_t base; /* 0x28 */ + uint32_t base_up; /* 0x2c */ +}UBUS4_RANGE_CHK_CFG; + +typedef struct UBUS4_RANGE_CHK_SETUP { + uint32_t lock; /* 0x0 */ + uint32_t log_inf[3]; /* 0x4 - 0xf */ + UBUS4_RANGE_CHK_CFG cfg[16]; /* 0x10 - 0x30f */ +}UBUS4_RANGE_CHK_SETUP; + +#define UBUS4_COHERENCY_PORT_BASE 0x810A0000 +#define UBUS4_RANGE_CHK_SETUP_OFFSET 0x0 +#define UBUS4_RANGE_CHK_SETUP_BASE (UBUS4_COHERENCY_PORT_BASE+UBUS4_RANGE_CHK_SETUP_OFFSET) +#define UBUS4_RANGE_CHK_SETUP ((volatile UBUS4_RANGE_CHK_SETUP * const) UBUS4_RANGE_CHK_SETUP_BASE) + +typedef struct BIUCFG_Access { + uint32_t permission; /* 0x0 */ + uint32_t sbox; /* 0x4 */ + uint32_t cpu_defeature; /* 0x8 */ + uint32_t dbg_security; /* 0xc */ + uint32_t rsvd1[32]; /* 0x10 - 0x8f */ + uint64_t violation[2]; /* 0x90 - 0x9f */ + uint32_t ts_access[2]; /* 0xa0 - 0xa7 */ + uint32_t rsvd2[22]; /* 0xa8 - 0xff */ +}BIUCFG_Access; + +typedef struct BIUCFG_Cluster { + uint32_t permission; /* 0x0 */ + uint32_t config; /* 0x4 */ + uint32_t status; /* 0x8 */ + uint32_t control; /* 0xc */ + uint32_t cpucfg; /* 0x10 */ + uint32_t dbgrom; /* 0x14 */ + uint32_t rsvd1[2]; /* 0x18 - 0x1f */ + uint64_t rvbar_addr[4]; /* 0x20 - 0x3f */ + uint32_t rsvd2[48]; /* 0x40 - 0xff */ +}BIUCFG_Cluster; + +typedef struct BIUCFG_Bac { + uint32_t bac_permission; /* 0x00 */ + uint32_t bac_periphbase; /* 0x04 */ + uint32_t rsvd[2]; /* 0x08 - 0x0f */ + uint32_t bac_event; /* 0x10 */ + uint32_t rsvd_1[3]; /* 0x14 - 0x1f */ + uint32_t bac_ccicfg; /* 0x20 */ + uint32_t bac_cciaddr; /* 0x24 */ + uint32_t rsvd_2[4]; /* 0x28 - 0x37 */ + uint32_t bac_ccievs2; /* 0x38 */ + uint32_t bac_ccievs3; /* 0x3c */ + uint32_t bac_ccievs4; /* 0x40 */ + uint32_t rsvd_3[3]; /* 0x44 - 0x4f */ + uint32_t bac_ccievm0; /* 0x50 */ + uint32_t bac_ccievm1; /* 0x54 */ + uint32_t rsvd_4[2]; /* 0x58 - 0x5f */ + uint32_t bac_dapapbcfg; /* 0x60 */ + uint32_t bac_status; /* 0x64 */ + uint32_t rsvd_5[2]; /* 0x68 - 0x6f */ + uint32_t cpu_therm_irq_cfg; /* 0x70 */ + uint32_t cpu_therm_threshold_cfg; /* 0x74 */ + uint32_t rsvd_6; /* 0x78 */ + uint32_t cpu_therm_temp; /* 0x7c */ + uint32_t rsvd_7[32]; /* 0x80 - 0xff */ +} BIUCFG_Bac; + +typedef struct BIUCFG_Aux { + uint32_t aux_permission; /* 0x00 */ + uint32_t rsvd[3]; /* 0x04 - 0x0f */ + uint32_t c0_clk_control; /* 0x10 */ + uint32_t c0_clk_ramp; /* 0x14 */ + uint32_t c0_clk_pattern; /* 0x18 */ + uint32_t rsvd_1; /* 0x1c */ + uint32_t c1_clk_control; /* 0x20 */ + uint32_t c1_clk_ramp; /* 0x24 */ + uint32_t c1_clk_pattern; /* 0x28 */ + uint32_t rsvd_2[53]; /* 0x2c - 0xff */ +} BIUCFG_Aux; + +typedef struct BIUCFG_TS0_CTRL { + uint32_t CNTCR; /* 0x00 */ + uint32_t CNTSR; /* 0x04 */ + uint32_t CNTCVL; /* 0x08 */ + uint32_t CNTCVU; /* 0x0c */ + uint32_t rsvd_0[4]; /* 0x10 - 0x1f */ + uint32_t CNTFID0; /* 0x20 */ + uint32_t rsvd_1[1015]; /* 0x24 - 0xfff */ +} BIUCFG_TS0_CTRL; + +typedef struct BIUCFG { + BIUCFG_Access access; /* 0x0 - 0xff*/ + BIUCFG_Cluster cluster[2]; /* 0x100 - 0x2ff*/ + BIUCFG_Bac bac; /* 0x300 - 0x3ff */ + uint32_t anonymous[192]; /* 0x400 - 0x6ff */ + BIUCFG_Aux aux; /* 0x700 - 0x7ff */ + uint32_t anonymous_1[512]; /* 0x800 - 0xfff */ + BIUCFG_TS0_CTRL ts0_ctrl; /* 0x1000 - 0x1fff */ +}BIUCFG; + +#define BIUCFG_BASE 0x81060000 +#define BIUCFG ((volatile BIUCFG * const) BIUCFG_BASE) + +#endif diff --git a/arch/arm/include/asm/arch-bcm63146/ddr.h b/arch/arm/include/asm/arch-bcm63146/ddr.h new file mode 100644 index 0000000000..746b51af1b --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63146/ddr.h @@ -0,0 +1,3242 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63146_DDR_H +#define _63146_DDR_H + +#define MEMC_BASE 0x80040000 /* DDR IO Buf Control */ +#define PHY_BASE 0x80060000 /* DDR PHY base */ + +#define mc2_glb_acc 0x00000000 +#define mc2_glb_vers 0x00000004 +#define mc2_glb_gcfg 0x00000008 +#define mc2_glb_auto_self_refresh 0x0000000c +#define mc2_glb_pwr_mgr 0x00000010 + + + +#define mc2_axi_acc 0x00000040 +#define mc2_axi_ver 0x00000044 +#define mc2_axi_CFG 0x00000048 +#define mc2_axi_REP_ARB_MODE 0x0000004c +#define mc2_axi_queue_cfg 0x00000050 +#define mc2_axi_queue_size0 0x00000054 +#define mc2_axi_queue_map0 0x00000058 +#define mc2_axi_SCRATCH 0x00000060 +#define mc2_axi_AXI_DEBUG_0_0 0x00000064 +#define mc2_axi_AXI_DEBUG_1_0 0x00000068 +#define mc2_axi_AXI_DEBUG_MISC 0x0000006c + + + +#define mc2_ubus_acc 0x00000080 +#define mc2_ubus_CFG 0x00000084 +#define mc2_ubus_ESRCID_CFG 0x00000088 +#define mc2_ubus_queue_cfg_queue_cfg 0x0000008c +#define mc2_ubus_queue_cfg_queue_map0 0x00000090 +#define mc2_ubus_queue_cfg_queue_map1 0x00000094 +#define mc2_ubus_queue_cfg_queue_map2 0x00000098 +#define mc2_ubus_queue_cfg_queue_map3 0x0000009c +#define mc2_ubus_queue_cfg_queue_size0 0x000000a0 +#define mc2_ubus_queue_cfg_queue_size1 0x000000a4 +#define mc2_ubus_queue_cfg_queue_size2 0x000000a8 +#define mc2_ubus_queue_cfg_queue_size3 0x000000ac +#define mc2_ubus_diag_ctrl 0x000000b0 +#define mc2_ubus_scratch 0x000000b8 +#define mc2_ubus_debug_ro 0x000000bc + + + +#define mc2_misc_acc 0x00000200 +#define mc2_misc_ver 0x00000204 +#define mc2_misc_cfg 0x00000208 +#define mc2_misc_vq_cfg 0x0000020c +#define mc2_misc_edis_addr_rand 0x00000210 +#define mc2_misc_misc_dbg 0x00000214 + + + +#define mc2_afx_acc 0x00000300 +#define mc2_afx_ver 0x00000304 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi 0x00000310 +#define mc2_afx_sram_match_cfg_sram_start_addr_lo 0x00000314 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi 0x00000318 +#define mc2_afx_sram_match_cfg_sram_end_addr_lo 0x0000031c +#define mc2_afx_addr_fltr_cfg0_start_addr_hi 0x00000320 +#define mc2_afx_addr_fltr_cfg0_start_addr_lo 0x00000324 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi 0x00000328 +#define mc2_afx_addr_fltr_cfg0_end_addr_lo 0x0000032c +#define mc2_afx_addr_fltr_cfg1_start_addr_hi 0x00000330 +#define mc2_afx_addr_fltr_cfg1_start_addr_lo 0x00000334 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi 0x00000338 +#define mc2_afx_addr_fltr_cfg1_end_addr_lo 0x0000033c +#define mc2_afx_addr_fltr_cfg2_start_addr_hi 0x00000340 +#define mc2_afx_addr_fltr_cfg2_start_addr_lo 0x00000344 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi 0x00000348 +#define mc2_afx_addr_fltr_cfg2_end_addr_lo 0x0000034c +#define mc2_afx_addr_fltr_cfg3_start_addr_hi 0x00000350 +#define mc2_afx_addr_fltr_cfg3_start_addr_lo 0x00000354 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi 0x00000358 +#define mc2_afx_addr_fltr_cfg3_end_addr_lo 0x0000035c +#define mc2_afx_srcid_fltr_cfg0_srcid 0x00000360 +#define mc2_afx_srcid_fltr_cfg1_srcid 0x00000364 +#define mc2_afx_srcid_fltr_cfg2_srcid 0x00000368 +#define mc2_afx_srcid_fltr_cfg3_srcid 0x0000036c +#define mc2_afx_row_xtr_cfg_row_19_16 0x00000380 +#define mc2_afx_row_xtr_cfg_row_15_12 0x00000384 +#define mc2_afx_row_xtr_cfg_row_11_8 0x00000388 +#define mc2_afx_row_xtr_cfg_row_7_4 0x0000038c +#define mc2_afx_row_xtr_cfg_row_3_0 0x00000390 +#define mc2_afx_bg_xtr_cfg_bg_3_0 0x000003a0 +#define mc2_afx_bk_xtr_cfg_bk_3_0 0x000003a4 +#define mc2_afx_col_xtr_cfg_col_cfg 0x000003a8 +#define mc2_afx_cs_xtr_cfg_cs_3_0 0x000003b4 +#define mc2_afx_chn_xtr_cfg_chn_bit 0x000003b8 +#define mc2_afx_ddr_sz_chk 0x000003bc + + + +#define mc2_rchk_acc 0x00000400 +#define mc2_rchk_ver 0x00000404 +#define mc2_rchk_range_lock 0x00000410 +#define mc2_rchk_range_0_control 0x00000420 +#define mc2_rchk_range_0_persrcid_port 0x00000424 +#define mc2_rchk_range_0_persrcid_port_upper 0x00000428 +#define mc2_rchk_range_0_base 0x0000042c +#define mc2_rchk_range_0_base_upper 0x00000430 +#define mc2_rchk_range_0_seclev_en 0x00000434 +#define mc2_rchk_range_1_control 0x00000440 +#define mc2_rchk_range_1_persrcid_port 0x00000444 +#define mc2_rchk_range_1_persrcid_port_upper 0x00000448 +#define mc2_rchk_range_1_base 0x0000044c +#define mc2_rchk_range_1_base_upper 0x00000450 +#define mc2_rchk_range_1_seclev_en 0x00000454 +#define mc2_rchk_range_2_control 0x00000460 +#define mc2_rchk_range_2_persrcid_port 0x00000464 +#define mc2_rchk_range_2_persrcid_port_upper 0x00000468 +#define mc2_rchk_range_2_base 0x0000046c +#define mc2_rchk_range_2_base_upper 0x00000470 +#define mc2_rchk_range_2_seclev_en 0x00000474 +#define mc2_rchk_range_3_control 0x00000480 +#define mc2_rchk_range_3_persrcid_port 0x00000484 +#define mc2_rchk_range_3_persrcid_port_upper 0x00000488 +#define mc2_rchk_range_3_base 0x0000048c +#define mc2_rchk_range_3_base_upper 0x00000490 +#define mc2_rchk_range_3_seclev_en 0x00000494 +#define mc2_rchk_range_4_control 0x000004a0 +#define mc2_rchk_range_4_persrcid_port 0x000004a4 +#define mc2_rchk_range_4_persrcid_port_upper 0x000004a8 +#define mc2_rchk_range_4_base 0x000004ac +#define mc2_rchk_range_4_base_upper 0x000004b0 +#define mc2_rchk_range_4_seclev_en 0x000004b4 +#define mc2_rchk_range_5_control 0x000004c0 +#define mc2_rchk_range_5_persrcid_port 0x000004c4 +#define mc2_rchk_range_5_persrcid_port_upper 0x000004c8 +#define mc2_rchk_range_5_base 0x000004cc +#define mc2_rchk_range_5_base_upper 0x000004d0 +#define mc2_rchk_range_5_seclev_en 0x000004d4 +#define mc2_rchk_range_6_control 0x000004e0 +#define mc2_rchk_range_6_persrcid_port 0x000004e4 +#define mc2_rchk_range_6_persrcid_port_upper 0x000004e8 +#define mc2_rchk_range_6_base 0x000004ec +#define mc2_rchk_range_6_base_upper 0x000004f0 +#define mc2_rchk_range_6_seclev_en 0x000004f4 +#define mc2_rchk_range_7_control 0x00000500 +#define mc2_rchk_range_7_persrcid_port 0x00000504 +#define mc2_rchk_range_7_persrcid_port_upper 0x00000508 +#define mc2_rchk_range_7_base 0x0000050c +#define mc2_rchk_range_7_base_upper 0x00000510 +#define mc2_rchk_range_7_seclev_en 0x00000514 +#define mc2_rchk_log_info_0 0x00000520 +#define mc2_rchk_log_info_1 0x00000524 +#define mc2_rchk_log_info_2 0x00000528 +#define mc2_rlt_acc 0x00000600 +#define mc2_rlt_vers 0x00000604 +#define mc2_rlt_rate_limiter0_cfg_0 0x00000610 +#define mc2_rlt_rate_limiter0_cfg_1 0x00000614 +#define mc2_rlt_rate_limiter1_cfg_0 0x00000618 +#define mc2_rlt_rate_limiter1_cfg_1 0x0000061c +#define mc2_rlt_rate_limiter2_cfg_0 0x00000620 +#define mc2_rlt_rate_limiter2_cfg_1 0x00000624 +#define mc2_rlt_rate_limiter3_cfg_0 0x00000628 +#define mc2_rlt_rate_limiter3_cfg_1 0x0000062c +#define mc2_rlt_rate_limiter4_cfg_0 0x00000630 +#define mc2_rlt_rate_limiter4_cfg_1 0x00000634 +#define mc2_rlt_rate_limiter5_cfg_0 0x00000638 +#define mc2_rlt_rate_limiter5_cfg_1 0x0000063c +#define mc2_rlt_monitor0_mon_0 0x00000690 +#define mc2_rlt_monitor0_mon_1 0x00000694 +#define mc2_rlt_monitor1_mon_0 0x00000698 +#define mc2_rlt_monitor1_mon_1 0x0000069c +#define mc2_rlt_monitor2_mon_0 0x000006a0 +#define mc2_rlt_monitor2_mon_1 0x000006a4 +#define mc2_rlt_monitor3_mon_0 0x000006a8 +#define mc2_rlt_monitor3_mon_1 0x000006ac +#define mc2_rlt_monitor4_mon_0 0x000006b0 +#define mc2_rlt_monitor4_mon_1 0x000006b4 +#define mc2_rlt_monitor5_mon_0 0x000006b8 +#define mc2_rlt_monitor5_mon_1 0x000006bc + +#define mc2_chn_ddr_acc 0x00000900 +#define mc2_chn_ddr_ver 0x00000904 +#define mc2_chn_ddr_chn_arb_cfg 0x00000908 +#define mc2_chn_ddr_chn_arb_param 0x0000090c +#define mc2_chn_ddr_chn_sch_cfg 0x00000910 +#define mc2_chn_ddr_phy_st 0x00000914 +#define mc2_chn_ddr_dram_cfg 0x00000918 +#define mc2_chn_ddr_dcmd 0x0000091c +#define mc2_chn_ddr_dmode_0 0x00000920 +#define mc2_chn_ddr_dmode_2 0x00000924 +#define mc2_chn_ddr_odt 0x00000928 +#define mc2_chn_ddr_ddr_param_cmd0 0x0000092c +#define mc2_chn_ddr_ddr_param_cmd1 0x00000930 +#define mc2_chn_ddr_ddr_param_cmd2 0x00000934 +#define mc2_chn_ddr_ddr_param_cmd3 0x00000938 +#define mc2_chn_ddr_ddr_param_dat0 0x0000093c +#define mc2_chn_ddr_ddr_param_dat1 0x00000940 +#define mc2_chn_ddr_ddr_param_pre0 0x00000944 +#define mc2_chn_ddr_ddr_param_pwr0 0x00000948 +#define mc2_chn_ddr_ddr_param_zqc0 0x0000094c +#define mc2_chn_ddr_refresh_aref0 0x00000954 +#define mc2_chn_ddr_refresh_aref1 0x00000958 +#define mc2_chn_ddr_auto_self_refresh 0x0000095c +#define mc2_chn_ddr_auto_zqcs 0x00000968 +#define mc2_chn_ddr_dfi_error 0x0000096c + + +#define mc2_chn_sram_acc 0x00000a20 +#define mc2_chn_sram_ver 0x00000a24 +#define mc2_chn_sram_ind_ctrl 0x00000a28 +#define mc2_chn_sram_init 0x00000a2c +#define mc2_chn_sram_ind_data0 0x00000a30 +#define mc2_chn_sram_ind_data1 0x00000a34 +#define mc2_chn_sram_ind_data2 0x00000a38 +#define mc2_chn_sram_ind_data3 0x00000a3c + + +#define mc2_wbf_acc 0x00000e80 +#define mc2_wbf_ver 0x00000e84 +#define mc2_wbf_pri_cfg 0x00000e88 +#define mc2_wbf_sta 0x00000e8c +#define mc2_wbf_bkdr_bkdr_cmd 0x00000e90 +#define mc2_wbf_bkdr_bkdr_data0 0x00000e94 +#define mc2_wbf_bkdr_bkdr_data1 0x00000e98 +#define mc2_wbf_bkdr_bkdr_data2 0x00000e9c +#define mc2_wbf_bkdr_bkdr_data3 0x00000ea0 +#define mc2_wbf_bkdr_bkdr_data4 0x00000ea4 +#define mc2_wbf_bkdr_bkdr_data5 0x00000ea8 +#define mc2_wbf_bkdr_bkdr_data6 0x00000eac +#define mc2_wbf_bkdr_bkdr_data7 0x00000eb0 +#define mc2_wbf_id_bkdr_id_cmd 0x00000ec0 +#define mc2_wbf_id_bkdr_id_data 0x00000ec4 + + + +#define mc2_rmx_acc 0x00000ed0 +#define mc2_rmx_ver 0x00000ed4 +#define mc2_rmx_pri_cfg 0x00000ed8 + + +#define mc2_glb_acc_acc_eack_MASK 0x80000000 +#define mc2_glb_acc_acc_eack_ALIGN 0 +#define mc2_glb_acc_acc_eack_BITS 1 +#define mc2_glb_acc_acc_eack_SHIFT 31 +#define mc2_glb_acc_acc_eack_DEFAULT 0x00000000 + + +#define mc2_glb_acc_reserved0_MASK 0x7fffff00 +#define mc2_glb_acc_reserved0_ALIGN 0 +#define mc2_glb_acc_reserved0_BITS 23 +#define mc2_glb_acc_reserved0_SHIFT 8 + + +#define mc2_glb_acc_acc_sw_MASK 0x00000080 +#define mc2_glb_acc_acc_sw_ALIGN 0 +#define mc2_glb_acc_acc_sw_BITS 1 +#define mc2_glb_acc_acc_sw_SHIFT 7 +#define mc2_glb_acc_acc_sw_DEFAULT 0x00000001 + + +#define mc2_glb_acc_acc_sr_MASK 0x00000040 +#define mc2_glb_acc_acc_sr_ALIGN 0 +#define mc2_glb_acc_acc_sr_BITS 1 +#define mc2_glb_acc_acc_sr_SHIFT 6 +#define mc2_glb_acc_acc_sr_DEFAULT 0x00000001 + + +#define mc2_glb_acc_acc_nsw_MASK 0x00000020 +#define mc2_glb_acc_acc_nsw_ALIGN 0 +#define mc2_glb_acc_acc_nsw_BITS 1 +#define mc2_glb_acc_acc_nsw_SHIFT 5 +#define mc2_glb_acc_acc_nsw_DEFAULT 0x00000001 + + +#define mc2_glb_acc_acc_nsr_MASK 0x00000010 +#define mc2_glb_acc_acc_nsr_ALIGN 0 +#define mc2_glb_acc_acc_nsr_BITS 1 +#define mc2_glb_acc_acc_nsr_SHIFT 4 +#define mc2_glb_acc_acc_nsr_DEFAULT 0x00000001 + + +#define mc2_glb_acc_perm_sw_MASK 0x00000008 +#define mc2_glb_acc_perm_sw_ALIGN 0 +#define mc2_glb_acc_perm_sw_BITS 1 +#define mc2_glb_acc_perm_sw_SHIFT 3 +#define mc2_glb_acc_perm_sw_DEFAULT 0x00000001 + + +#define mc2_glb_acc_perm_sr_MASK 0x00000004 +#define mc2_glb_acc_perm_sr_ALIGN 0 +#define mc2_glb_acc_perm_sr_BITS 1 +#define mc2_glb_acc_perm_sr_SHIFT 2 +#define mc2_glb_acc_perm_sr_DEFAULT 0x00000001 + + +#define mc2_glb_acc_perm_nsw_MASK 0x00000002 +#define mc2_glb_acc_perm_nsw_ALIGN 0 +#define mc2_glb_acc_perm_nsw_BITS 1 +#define mc2_glb_acc_perm_nsw_SHIFT 1 +#define mc2_glb_acc_perm_nsw_DEFAULT 0x00000001 + + +#define mc2_glb_acc_perm_nsr_MASK 0x00000001 +#define mc2_glb_acc_perm_nsr_ALIGN 0 +#define mc2_glb_acc_perm_nsr_BITS 1 +#define mc2_glb_acc_perm_nsr_SHIFT 0 +#define mc2_glb_acc_perm_nsr_DEFAULT 0x00000001 + + + + +#define mc2_glb_vers_reserved0_MASK 0xffff0000 +#define mc2_glb_vers_reserved0_ALIGN 0 +#define mc2_glb_vers_reserved0_BITS 16 +#define mc2_glb_vers_reserved0_SHIFT 16 + + +#define mc2_glb_vers_VERSION_MAJOR_MASK 0x0000ff00 +#define mc2_glb_vers_VERSION_MAJOR_ALIGN 0 +#define mc2_glb_vers_VERSION_MAJOR_BITS 8 +#define mc2_glb_vers_VERSION_MAJOR_SHIFT 8 +#define mc2_glb_vers_VERSION_MAJOR_DEFAULT 0x00000005 + + +#define mc2_glb_vers_VERSION_MINOR_MASK 0x000000ff +#define mc2_glb_vers_VERSION_MINOR_ALIGN 0 +#define mc2_glb_vers_VERSION_MINOR_BITS 8 +#define mc2_glb_vers_VERSION_MINOR_SHIFT 0 +#define mc2_glb_vers_VERSION_MINOR_DEFAULT 0x00000001 + + + + +#define mc2_glb_gcfg_dram_en_MASK 0x80000000 +#define mc2_glb_gcfg_dram_en_ALIGN 0 +#define mc2_glb_gcfg_dram_en_BITS 1 +#define mc2_glb_gcfg_dram_en_SHIFT 31 +#define mc2_glb_gcfg_dram_en_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_reserved0_MASK 0x78000000 +#define mc2_glb_gcfg_reserved0_ALIGN 0 +#define mc2_glb_gcfg_reserved0_BITS 4 +#define mc2_glb_gcfg_reserved0_SHIFT 27 + + +#define mc2_glb_gcfg_sref_slow_clk_en_MASK 0x04000000 +#define mc2_glb_gcfg_sref_slow_clk_en_ALIGN 0 +#define mc2_glb_gcfg_sref_slow_clk_en_BITS 1 +#define mc2_glb_gcfg_sref_slow_clk_en_SHIFT 26 +#define mc2_glb_gcfg_sref_slow_clk_en_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_phy_dfi_mode_MASK 0x03000000 +#define mc2_glb_gcfg_phy_dfi_mode_ALIGN 0 +#define mc2_glb_gcfg_phy_dfi_mode_BITS 2 +#define mc2_glb_gcfg_phy_dfi_mode_SHIFT 24 +#define mc2_glb_gcfg_phy_dfi_mode_DEFAULT 0x00000001 + + +#define mc2_glb_gcfg_reserved1_MASK 0x00f00000 +#define mc2_glb_gcfg_reserved1_ALIGN 0 +#define mc2_glb_gcfg_reserved1_BITS 4 +#define mc2_glb_gcfg_reserved1_SHIFT 20 + + +#define mc2_glb_gcfg_dpfe_block_dmem_read_MASK 0x00080000 +#define mc2_glb_gcfg_dpfe_block_dmem_read_ALIGN 0 +#define mc2_glb_gcfg_dpfe_block_dmem_read_BITS 1 +#define mc2_glb_gcfg_dpfe_block_dmem_read_SHIFT 19 +#define mc2_glb_gcfg_dpfe_block_dmem_read_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_block_dmem_write_MASK 0x00040000 +#define mc2_glb_gcfg_dpfe_block_dmem_write_ALIGN 0 +#define mc2_glb_gcfg_dpfe_block_dmem_write_BITS 1 +#define mc2_glb_gcfg_dpfe_block_dmem_write_SHIFT 18 +#define mc2_glb_gcfg_dpfe_block_dmem_write_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_block_imem_read_MASK 0x00020000 +#define mc2_glb_gcfg_dpfe_block_imem_read_ALIGN 0 +#define mc2_glb_gcfg_dpfe_block_imem_read_BITS 1 +#define mc2_glb_gcfg_dpfe_block_imem_read_SHIFT 17 +#define mc2_glb_gcfg_dpfe_block_imem_read_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_block_imem_write_MASK 0x00010000 +#define mc2_glb_gcfg_dpfe_block_imem_write_ALIGN 0 +#define mc2_glb_gcfg_dpfe_block_imem_write_BITS 1 +#define mc2_glb_gcfg_dpfe_block_imem_write_SHIFT 16 +#define mc2_glb_gcfg_dpfe_block_imem_write_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_disable_cpu_MASK 0x00008000 +#define mc2_glb_gcfg_dpfe_disable_cpu_ALIGN 0 +#define mc2_glb_gcfg_dpfe_disable_cpu_BITS 1 +#define mc2_glb_gcfg_dpfe_disable_cpu_SHIFT 15 +#define mc2_glb_gcfg_dpfe_disable_cpu_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_reserved2_MASK 0x00004000 +#define mc2_glb_gcfg_reserved2_ALIGN 0 +#define mc2_glb_gcfg_reserved2_BITS 1 +#define mc2_glb_gcfg_reserved2_SHIFT 14 + + +#define mc2_glb_gcfg_wr_data_mode_MASK 0x00002000 +#define mc2_glb_gcfg_wr_data_mode_ALIGN 0 +#define mc2_glb_gcfg_wr_data_mode_BITS 1 +#define mc2_glb_gcfg_wr_data_mode_SHIFT 13 +#define mc2_glb_gcfg_wr_data_mode_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_exe_notify_mode_MASK 0x00001000 +#define mc2_glb_gcfg_exe_notify_mode_ALIGN 0 +#define mc2_glb_gcfg_exe_notify_mode_BITS 1 +#define mc2_glb_gcfg_exe_notify_mode_SHIFT 12 +#define mc2_glb_gcfg_exe_notify_mode_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_shmoo_done_MASK 0x00000800 +#define mc2_glb_gcfg_shmoo_done_ALIGN 0 +#define mc2_glb_gcfg_shmoo_done_BITS 1 +#define mc2_glb_gcfg_shmoo_done_SHIFT 11 +#define mc2_glb_gcfg_shmoo_done_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dfi_en_MASK 0x00000400 +#define mc2_glb_gcfg_dfi_en_ALIGN 0 +#define mc2_glb_gcfg_dfi_en_BITS 1 +#define mc2_glb_gcfg_dfi_en_SHIFT 10 +#define mc2_glb_gcfg_dfi_en_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_mclksrc_MASK 0x00000200 +#define mc2_glb_gcfg_mclksrc_ALIGN 0 +#define mc2_glb_gcfg_mclksrc_BITS 1 +#define mc2_glb_gcfg_mclksrc_SHIFT 9 +#define mc2_glb_gcfg_mclksrc_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_meminitdone_MASK 0x00000100 +#define mc2_glb_gcfg_meminitdone_ALIGN 0 +#define mc2_glb_gcfg_meminitdone_BITS 1 +#define mc2_glb_gcfg_meminitdone_SHIFT 8 +#define mc2_glb_gcfg_meminitdone_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_uart_tx_share_en_MASK 0x00000080 +#define mc2_glb_gcfg_dpfe_uart_tx_share_en_ALIGN 0 +#define mc2_glb_gcfg_dpfe_uart_tx_share_en_BITS 1 +#define mc2_glb_gcfg_dpfe_uart_tx_share_en_SHIFT 7 +#define mc2_glb_gcfg_dpfe_uart_tx_share_en_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_uart_tx_en_MASK 0x00000040 +#define mc2_glb_gcfg_dpfe_uart_tx_en_ALIGN 0 +#define mc2_glb_gcfg_dpfe_uart_tx_en_BITS 1 +#define mc2_glb_gcfg_dpfe_uart_tx_en_SHIFT 6 +#define mc2_glb_gcfg_dpfe_uart_tx_en_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_dpfe_uart_rx_mode_MASK 0x00000030 +#define mc2_glb_gcfg_dpfe_uart_rx_mode_ALIGN 0 +#define mc2_glb_gcfg_dpfe_uart_rx_mode_BITS 2 +#define mc2_glb_gcfg_dpfe_uart_rx_mode_SHIFT 4 +#define mc2_glb_gcfg_dpfe_uart_rx_mode_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_sec_intr_mask_lock_MASK 0x00000008 +#define mc2_glb_gcfg_sec_intr_mask_lock_ALIGN 0 +#define mc2_glb_gcfg_sec_intr_mask_lock_BITS 1 +#define mc2_glb_gcfg_sec_intr_mask_lock_SHIFT 3 +#define mc2_glb_gcfg_sec_intr_mask_lock_DEFAULT 0x00000000 + + +#define mc2_glb_gcfg_reserved3_MASK 0x00000006 +#define mc2_glb_gcfg_reserved3_ALIGN 0 +#define mc2_glb_gcfg_reserved3_BITS 2 +#define mc2_glb_gcfg_reserved3_SHIFT 1 + + +#define mc2_glb_gcfg_dpath_mode_MASK 0x00000001 +#define mc2_glb_gcfg_dpath_mode_ALIGN 0 +#define mc2_glb_gcfg_dpath_mode_BITS 1 +#define mc2_glb_gcfg_dpath_mode_SHIFT 0 +#define mc2_glb_gcfg_dpath_mode_DEFAULT 0x00000000 + + + + +#define mc2_glb_auto_self_refresh_enable_MASK 0x80000000 +#define mc2_glb_auto_self_refresh_enable_ALIGN 0 +#define mc2_glb_auto_self_refresh_enable_BITS 1 +#define mc2_glb_auto_self_refresh_enable_SHIFT 31 +#define mc2_glb_auto_self_refresh_enable_DEFAULT 0x00000000 + + +#define mc2_glb_auto_self_refresh_immediate_MASK 0x40000000 +#define mc2_glb_auto_self_refresh_immediate_ALIGN 0 +#define mc2_glb_auto_self_refresh_immediate_BITS 1 +#define mc2_glb_auto_self_refresh_immediate_SHIFT 30 +#define mc2_glb_auto_self_refresh_immediate_DEFAULT 0x00000000 + + +#define mc2_glb_auto_self_refresh_idle_count_MASK 0x3fffffff +#define mc2_glb_auto_self_refresh_idle_count_ALIGN 0 +#define mc2_glb_auto_self_refresh_idle_count_BITS 30 +#define mc2_glb_auto_self_refresh_idle_count_SHIFT 0 +#define mc2_glb_auto_self_refresh_idle_count_DEFAULT 0x00000000 + + + + +#define mc2_glb_pwr_mgr_reserved0_MASK 0xffff0000 +#define mc2_glb_pwr_mgr_reserved0_ALIGN 0 +#define mc2_glb_pwr_mgr_reserved0_BITS 16 +#define mc2_glb_pwr_mgr_reserved0_SHIFT 16 + + +#define mc2_glb_pwr_mgr_idle_mask_MASK 0x0000ffff +#define mc2_glb_pwr_mgr_idle_mask_ALIGN 0 +#define mc2_glb_pwr_mgr_idle_mask_BITS 16 +#define mc2_glb_pwr_mgr_idle_mask_SHIFT 0 +#define mc2_glb_pwr_mgr_idle_mask_DEFAULT 0x00000000 + + + + +#define mc2_axi_acc_acc_eack_MASK 0x80000000 +#define mc2_axi_acc_acc_eack_ALIGN 0 +#define mc2_axi_acc_acc_eack_BITS 1 +#define mc2_axi_acc_acc_eack_SHIFT 31 +#define mc2_axi_acc_acc_eack_DEFAULT 0x00000000 + + +#define mc2_axi_acc_reserved0_MASK 0x7fffff00 +#define mc2_axi_acc_reserved0_ALIGN 0 +#define mc2_axi_acc_reserved0_BITS 23 +#define mc2_axi_acc_reserved0_SHIFT 8 + + +#define mc2_axi_acc_acc_sw_MASK 0x00000080 +#define mc2_axi_acc_acc_sw_ALIGN 0 +#define mc2_axi_acc_acc_sw_BITS 1 +#define mc2_axi_acc_acc_sw_SHIFT 7 +#define mc2_axi_acc_acc_sw_DEFAULT 0x00000001 + + +#define mc2_axi_acc_acc_sr_MASK 0x00000040 +#define mc2_axi_acc_acc_sr_ALIGN 0 +#define mc2_axi_acc_acc_sr_BITS 1 +#define mc2_axi_acc_acc_sr_SHIFT 6 +#define mc2_axi_acc_acc_sr_DEFAULT 0x00000001 + + +#define mc2_axi_acc_acc_nsw_MASK 0x00000020 +#define mc2_axi_acc_acc_nsw_ALIGN 0 +#define mc2_axi_acc_acc_nsw_BITS 1 +#define mc2_axi_acc_acc_nsw_SHIFT 5 +#define mc2_axi_acc_acc_nsw_DEFAULT 0x00000001 + + +#define mc2_axi_acc_acc_nsr_MASK 0x00000010 +#define mc2_axi_acc_acc_nsr_ALIGN 0 +#define mc2_axi_acc_acc_nsr_BITS 1 +#define mc2_axi_acc_acc_nsr_SHIFT 4 +#define mc2_axi_acc_acc_nsr_DEFAULT 0x00000001 + + +#define mc2_axi_acc_perm_sw_MASK 0x00000008 +#define mc2_axi_acc_perm_sw_ALIGN 0 +#define mc2_axi_acc_perm_sw_BITS 1 +#define mc2_axi_acc_perm_sw_SHIFT 3 +#define mc2_axi_acc_perm_sw_DEFAULT 0x00000001 + + +#define mc2_axi_acc_perm_sr_MASK 0x00000004 +#define mc2_axi_acc_perm_sr_ALIGN 0 +#define mc2_axi_acc_perm_sr_BITS 1 +#define mc2_axi_acc_perm_sr_SHIFT 2 +#define mc2_axi_acc_perm_sr_DEFAULT 0x00000001 + + +#define mc2_axi_acc_perm_nsw_MASK 0x00000002 +#define mc2_axi_acc_perm_nsw_ALIGN 0 +#define mc2_axi_acc_perm_nsw_BITS 1 +#define mc2_axi_acc_perm_nsw_SHIFT 1 +#define mc2_axi_acc_perm_nsw_DEFAULT 0x00000001 + + +#define mc2_axi_acc_perm_nsr_MASK 0x00000001 +#define mc2_axi_acc_perm_nsr_ALIGN 0 +#define mc2_axi_acc_perm_nsr_BITS 1 +#define mc2_axi_acc_perm_nsr_SHIFT 0 +#define mc2_axi_acc_perm_nsr_DEFAULT 0x00000001 + + + + +#define mc2_axi_ver_reserved0_MASK 0xffffff00 +#define mc2_axi_ver_reserved0_ALIGN 0 +#define mc2_axi_ver_reserved0_BITS 24 +#define mc2_axi_ver_reserved0_SHIFT 8 + + +#define mc2_axi_ver_version_MASK 0x000000ff +#define mc2_axi_ver_version_ALIGN 0 +#define mc2_axi_ver_version_BITS 8 +#define mc2_axi_ver_version_SHIFT 0 +#define mc2_axi_ver_version_DEFAULT 0x00000000 + + + + +#define mc2_axi_CFG_reserved0_MASK 0xe0000000 +#define mc2_axi_CFG_reserved0_ALIGN 0 +#define mc2_axi_CFG_reserved0_BITS 3 +#define mc2_axi_CFG_reserved0_SHIFT 29 + + +#define mc2_axi_CFG_CPQ_WRITE_IN_TRANSIT_MASK 0x1f800000 +#define mc2_axi_CFG_CPQ_WRITE_IN_TRANSIT_ALIGN 0 +#define mc2_axi_CFG_CPQ_WRITE_IN_TRANSIT_BITS 6 +#define mc2_axi_CFG_CPQ_WRITE_IN_TRANSIT_SHIFT 23 +#define mc2_axi_CFG_CPQ_WRITE_IN_TRANSIT_DEFAULT 0x00000008 + + +#define mc2_axi_CFG_CPU_WRITE_IN_TRANSIT_MASK 0x007e0000 +#define mc2_axi_CFG_CPU_WRITE_IN_TRANSIT_ALIGN 0 +#define mc2_axi_CFG_CPU_WRITE_IN_TRANSIT_BITS 6 +#define mc2_axi_CFG_CPU_WRITE_IN_TRANSIT_SHIFT 17 +#define mc2_axi_CFG_CPU_WRITE_IN_TRANSIT_DEFAULT 0x00000008 + + +#define mc2_axi_CFG_WRITE_ACK_MODE_MASK 0x00010000 +#define mc2_axi_CFG_WRITE_ACK_MODE_ALIGN 0 +#define mc2_axi_CFG_WRITE_ACK_MODE_BITS 1 +#define mc2_axi_CFG_WRITE_ACK_MODE_SHIFT 16 +#define mc2_axi_CFG_WRITE_ACK_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_reserved1_MASK 0x0000f000 +#define mc2_axi_CFG_reserved1_ALIGN 0 +#define mc2_axi_CFG_reserved1_BITS 4 +#define mc2_axi_CFG_reserved1_SHIFT 12 + + +#define mc2_axi_CFG_MC_CAP_MUX_SEL_MASK 0x00000f00 +#define mc2_axi_CFG_MC_CAP_MUX_SEL_ALIGN 0 +#define mc2_axi_CFG_MC_CAP_MUX_SEL_BITS 4 +#define mc2_axi_CFG_MC_CAP_MUX_SEL_SHIFT 8 +#define mc2_axi_CFG_MC_CAP_MUX_SEL_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_MC_CAP_MUX_VLD_SEL_MASK 0x000000c0 +#define mc2_axi_CFG_MC_CAP_MUX_VLD_SEL_ALIGN 0 +#define mc2_axi_CFG_MC_CAP_MUX_VLD_SEL_BITS 2 +#define mc2_axi_CFG_MC_CAP_MUX_VLD_SEL_SHIFT 6 +#define mc2_axi_CFG_MC_CAP_MUX_VLD_SEL_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_MC_CAP_MUX_TRIG_SEL_MASK 0x00000030 +#define mc2_axi_CFG_MC_CAP_MUX_TRIG_SEL_ALIGN 0 +#define mc2_axi_CFG_MC_CAP_MUX_TRIG_SEL_BITS 2 +#define mc2_axi_CFG_MC_CAP_MUX_TRIG_SEL_SHIFT 4 +#define mc2_axi_CFG_MC_CAP_MUX_TRIG_SEL_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_RPT_NON_SECURE_ERR_MASK 0x00000008 +#define mc2_axi_CFG_RPT_NON_SECURE_ERR_ALIGN 0 +#define mc2_axi_CFG_RPT_NON_SECURE_ERR_BITS 1 +#define mc2_axi_CFG_RPT_NON_SECURE_ERR_SHIFT 3 +#define mc2_axi_CFG_RPT_NON_SECURE_ERR_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_RPT_SECURE_ERR_MASK 0x00000004 +#define mc2_axi_CFG_RPT_SECURE_ERR_ALIGN 0 +#define mc2_axi_CFG_RPT_SECURE_ERR_BITS 1 +#define mc2_axi_CFG_RPT_SECURE_ERR_SHIFT 2 +#define mc2_axi_CFG_RPT_SECURE_ERR_DEFAULT 0x00000000 + + +#define mc2_axi_CFG_CMD_WAIT_WDATA_MASK 0x00000002 +#define mc2_axi_CFG_CMD_WAIT_WDATA_ALIGN 0 +#define mc2_axi_CFG_CMD_WAIT_WDATA_BITS 1 +#define mc2_axi_CFG_CMD_WAIT_WDATA_SHIFT 1 +#define mc2_axi_CFG_CMD_WAIT_WDATA_DEFAULT 0x00000001 + + +#define mc2_axi_CFG_DIS_RBUS_MSTR_MASK 0x00000001 +#define mc2_axi_CFG_DIS_RBUS_MSTR_ALIGN 0 +#define mc2_axi_CFG_DIS_RBUS_MSTR_BITS 1 +#define mc2_axi_CFG_DIS_RBUS_MSTR_SHIFT 0 +#define mc2_axi_CFG_DIS_RBUS_MSTR_DEFAULT 0x00000000 + + + + +#define mc2_axi_REP_ARB_MODE_reserved0_MASK 0xfffff000 +#define mc2_axi_REP_ARB_MODE_reserved0_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_reserved0_BITS 20 +#define mc2_axi_REP_ARB_MODE_reserved0_SHIFT 12 + + +#define mc2_axi_REP_ARB_MODE_RD_BUFFER_SIZE_MASK 0x00000800 +#define mc2_axi_REP_ARB_MODE_RD_BUFFER_SIZE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_RD_BUFFER_SIZE_BITS 1 +#define mc2_axi_REP_ARB_MODE_RD_BUFFER_SIZE_SHIFT 11 +#define mc2_axi_REP_ARB_MODE_RD_BUFFER_SIZE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_LEN_MASK 0x00000780 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_LEN_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_LEN_BITS 4 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_LEN_SHIFT 7 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_LEN_DEFAULT 0x00000007 + + +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_EN_MASK 0x00000040 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_EN_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_EN_BITS 1 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_EN_SHIFT 6 +#define mc2_axi_REP_ARB_MODE_BRESP_PIPELINE_EN_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_DIS_RRESP_ERR_MODE_MASK 0x00000020 +#define mc2_axi_REP_ARB_MODE_DIS_RRESP_ERR_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_DIS_RRESP_ERR_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_DIS_RRESP_ERR_MODE_SHIFT 5 +#define mc2_axi_REP_ARB_MODE_DIS_RRESP_ERR_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_RD_FIFO_MODE_MASK 0x00000010 +#define mc2_axi_REP_ARB_MODE_RD_FIFO_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_RD_FIFO_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_RD_FIFO_MODE_SHIFT 4 +#define mc2_axi_REP_ARB_MODE_RD_FIFO_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_RD_PACKET_MODE_MASK 0x00000008 +#define mc2_axi_REP_ARB_MODE_RD_PACKET_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_RD_PACKET_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_RD_PACKET_MODE_SHIFT 3 +#define mc2_axi_REP_ARB_MODE_RD_PACKET_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_DIS_BRESP_ERR_MODE_MASK 0x00000004 +#define mc2_axi_REP_ARB_MODE_DIS_BRESP_ERR_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_DIS_BRESP_ERR_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_DIS_BRESP_ERR_MODE_SHIFT 2 +#define mc2_axi_REP_ARB_MODE_DIS_BRESP_ERR_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_WR_FIFO_MODE_MASK 0x00000002 +#define mc2_axi_REP_ARB_MODE_WR_FIFO_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_WR_FIFO_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_WR_FIFO_MODE_SHIFT 1 +#define mc2_axi_REP_ARB_MODE_WR_FIFO_MODE_DEFAULT 0x00000000 + + +#define mc2_axi_REP_ARB_MODE_WR_REPLY_MODE_MASK 0x00000001 +#define mc2_axi_REP_ARB_MODE_WR_REPLY_MODE_ALIGN 0 +#define mc2_axi_REP_ARB_MODE_WR_REPLY_MODE_BITS 1 +#define mc2_axi_REP_ARB_MODE_WR_REPLY_MODE_SHIFT 0 +#define mc2_axi_REP_ARB_MODE_WR_REPLY_MODE_DEFAULT 0x00000000 + + + + +#define mc2_axi_queue_cfg_reserved0_MASK 0xfffffc00 +#define mc2_axi_queue_cfg_reserved0_ALIGN 0 +#define mc2_axi_queue_cfg_reserved0_BITS 22 +#define mc2_axi_queue_cfg_reserved0_SHIFT 10 + + +#define mc2_axi_queue_cfg_disable_backpressure_MASK 0x00000200 +#define mc2_axi_queue_cfg_disable_backpressure_ALIGN 0 +#define mc2_axi_queue_cfg_disable_backpressure_BITS 1 +#define mc2_axi_queue_cfg_disable_backpressure_SHIFT 9 +#define mc2_axi_queue_cfg_disable_backpressure_DEFAULT 0x00000000 + + +#define mc2_axi_queue_cfg_overflow_drop_MASK 0x00000100 +#define mc2_axi_queue_cfg_overflow_drop_ALIGN 0 +#define mc2_axi_queue_cfg_overflow_drop_BITS 1 +#define mc2_axi_queue_cfg_overflow_drop_SHIFT 8 +#define mc2_axi_queue_cfg_overflow_drop_DEFAULT 0x00000000 + + +#define mc2_axi_queue_cfg_reserved1_MASK 0x000000f0 +#define mc2_axi_queue_cfg_reserved1_ALIGN 0 +#define mc2_axi_queue_cfg_reserved1_BITS 4 +#define mc2_axi_queue_cfg_reserved1_SHIFT 4 + + +#define mc2_axi_queue_cfg_queue_start_MASK 0x0000000f +#define mc2_axi_queue_cfg_queue_start_ALIGN 0 +#define mc2_axi_queue_cfg_queue_start_BITS 4 +#define mc2_axi_queue_cfg_queue_start_SHIFT 0 +#define mc2_axi_queue_cfg_queue_start_DEFAULT 0x00000000 + + + + +#define mc2_axi_queue_size0_reserved0_MASK 0x80000000 +#define mc2_axi_queue_size0_reserved0_ALIGN 0 +#define mc2_axi_queue_size0_reserved0_BITS 1 +#define mc2_axi_queue_size0_reserved0_SHIFT 31 + + +#define mc2_axi_queue_size0_size3_MASK 0x7f000000 +#define mc2_axi_queue_size0_size3_ALIGN 0 +#define mc2_axi_queue_size0_size3_BITS 7 +#define mc2_axi_queue_size0_size3_SHIFT 24 +#define mc2_axi_queue_size0_size3_DEFAULT 0x00000008 + + +#define mc2_axi_queue_size0_reserved1_MASK 0x00800000 +#define mc2_axi_queue_size0_reserved1_ALIGN 0 +#define mc2_axi_queue_size0_reserved1_BITS 1 +#define mc2_axi_queue_size0_reserved1_SHIFT 23 + + +#define mc2_axi_queue_size0_size2_MASK 0x007f0000 +#define mc2_axi_queue_size0_size2_ALIGN 0 +#define mc2_axi_queue_size0_size2_BITS 7 +#define mc2_axi_queue_size0_size2_SHIFT 16 +#define mc2_axi_queue_size0_size2_DEFAULT 0x00000008 + + +#define mc2_axi_queue_size0_reserved2_MASK 0x00008000 +#define mc2_axi_queue_size0_reserved2_ALIGN 0 +#define mc2_axi_queue_size0_reserved2_BITS 1 +#define mc2_axi_queue_size0_reserved2_SHIFT 15 + + +#define mc2_axi_queue_size0_size1_MASK 0x00007f00 +#define mc2_axi_queue_size0_size1_ALIGN 0 +#define mc2_axi_queue_size0_size1_BITS 7 +#define mc2_axi_queue_size0_size1_SHIFT 8 +#define mc2_axi_queue_size0_size1_DEFAULT 0x00000008 + + +#define mc2_axi_queue_size0_reserved3_MASK 0x00000080 +#define mc2_axi_queue_size0_reserved3_ALIGN 0 +#define mc2_axi_queue_size0_reserved3_BITS 1 +#define mc2_axi_queue_size0_reserved3_SHIFT 7 + + +#define mc2_axi_queue_size0_size0_MASK 0x0000007f +#define mc2_axi_queue_size0_size0_ALIGN 0 +#define mc2_axi_queue_size0_size0_BITS 7 +#define mc2_axi_queue_size0_size0_SHIFT 0 +#define mc2_axi_queue_size0_size0_DEFAULT 0x00000008 + + + + +#define mc2_axi_queue_map0_reserved0_MASK 0xffffff00 +#define mc2_axi_queue_map0_reserved0_ALIGN 0 +#define mc2_axi_queue_map0_reserved0_BITS 24 +#define mc2_axi_queue_map0_reserved0_SHIFT 8 + + +#define mc2_axi_queue_map0_cpq_rd_MASK 0x000000c0 +#define mc2_axi_queue_map0_cpq_rd_ALIGN 0 +#define mc2_axi_queue_map0_cpq_rd_BITS 2 +#define mc2_axi_queue_map0_cpq_rd_SHIFT 6 +#define mc2_axi_queue_map0_cpq_rd_DEFAULT 0x00000003 + + +#define mc2_axi_queue_map0_cpq_wr_MASK 0x00000030 +#define mc2_axi_queue_map0_cpq_wr_ALIGN 0 +#define mc2_axi_queue_map0_cpq_wr_BITS 2 +#define mc2_axi_queue_map0_cpq_wr_SHIFT 4 +#define mc2_axi_queue_map0_cpq_wr_DEFAULT 0x00000002 + + +#define mc2_axi_queue_map0_cpu_rd_MASK 0x0000000c +#define mc2_axi_queue_map0_cpu_rd_ALIGN 0 +#define mc2_axi_queue_map0_cpu_rd_BITS 2 +#define mc2_axi_queue_map0_cpu_rd_SHIFT 2 +#define mc2_axi_queue_map0_cpu_rd_DEFAULT 0x00000001 + + +#define mc2_axi_queue_map0_cpu_wr_MASK 0x00000003 +#define mc2_axi_queue_map0_cpu_wr_ALIGN 0 +#define mc2_axi_queue_map0_cpu_wr_BITS 2 +#define mc2_axi_queue_map0_cpu_wr_SHIFT 0 +#define mc2_axi_queue_map0_cpu_wr_DEFAULT 0x00000000 + + +#define mc2_axi_SCRATCH_scratch_MASK 0xffffffff +#define mc2_axi_SCRATCH_scratch_ALIGN 0 +#define mc2_axi_SCRATCH_scratch_BITS 32 +#define mc2_axi_SCRATCH_scratch_SHIFT 0 +#define mc2_axi_SCRATCH_scratch_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_acc_acc_eack_MASK 0x80000000 +#define mc2_chn_ddr_acc_acc_eack_ALIGN 0 +#define mc2_chn_ddr_acc_acc_eack_BITS 1 +#define mc2_chn_ddr_acc_acc_eack_SHIFT 31 +#define mc2_chn_ddr_acc_acc_eack_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_acc_reserved0_MASK 0x7fffff00 +#define mc2_chn_ddr_acc_reserved0_ALIGN 0 +#define mc2_chn_ddr_acc_reserved0_BITS 23 +#define mc2_chn_ddr_acc_reserved0_SHIFT 8 + + +#define mc2_chn_ddr_acc_acc_sw_MASK 0x00000080 +#define mc2_chn_ddr_acc_acc_sw_ALIGN 0 +#define mc2_chn_ddr_acc_acc_sw_BITS 1 +#define mc2_chn_ddr_acc_acc_sw_SHIFT 7 +#define mc2_chn_ddr_acc_acc_sw_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_acc_sr_MASK 0x00000040 +#define mc2_chn_ddr_acc_acc_sr_ALIGN 0 +#define mc2_chn_ddr_acc_acc_sr_BITS 1 +#define mc2_chn_ddr_acc_acc_sr_SHIFT 6 +#define mc2_chn_ddr_acc_acc_sr_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_acc_nsw_MASK 0x00000020 +#define mc2_chn_ddr_acc_acc_nsw_ALIGN 0 +#define mc2_chn_ddr_acc_acc_nsw_BITS 1 +#define mc2_chn_ddr_acc_acc_nsw_SHIFT 5 +#define mc2_chn_ddr_acc_acc_nsw_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_acc_nsr_MASK 0x00000010 +#define mc2_chn_ddr_acc_acc_nsr_ALIGN 0 +#define mc2_chn_ddr_acc_acc_nsr_BITS 1 +#define mc2_chn_ddr_acc_acc_nsr_SHIFT 4 +#define mc2_chn_ddr_acc_acc_nsr_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_perm_sw_MASK 0x00000008 +#define mc2_chn_ddr_acc_perm_sw_ALIGN 0 +#define mc2_chn_ddr_acc_perm_sw_BITS 1 +#define mc2_chn_ddr_acc_perm_sw_SHIFT 3 +#define mc2_chn_ddr_acc_perm_sw_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_perm_sr_MASK 0x00000004 +#define mc2_chn_ddr_acc_perm_sr_ALIGN 0 +#define mc2_chn_ddr_acc_perm_sr_BITS 1 +#define mc2_chn_ddr_acc_perm_sr_SHIFT 2 +#define mc2_chn_ddr_acc_perm_sr_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_perm_nsw_MASK 0x00000002 +#define mc2_chn_ddr_acc_perm_nsw_ALIGN 0 +#define mc2_chn_ddr_acc_perm_nsw_BITS 1 +#define mc2_chn_ddr_acc_perm_nsw_SHIFT 1 +#define mc2_chn_ddr_acc_perm_nsw_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_acc_perm_nsr_MASK 0x00000001 +#define mc2_chn_ddr_acc_perm_nsr_ALIGN 0 +#define mc2_chn_ddr_acc_perm_nsr_BITS 1 +#define mc2_chn_ddr_acc_perm_nsr_SHIFT 0 +#define mc2_chn_ddr_acc_perm_nsr_DEFAULT 0x00000001 + + + + +#define mc2_chn_ddr_ver_reserved0_MASK 0xffffff00 +#define mc2_chn_ddr_ver_reserved0_ALIGN 0 +#define mc2_chn_ddr_ver_reserved0_BITS 24 +#define mc2_chn_ddr_ver_reserved0_SHIFT 8 + + +#define mc2_chn_ddr_ver_version_MASK 0x000000ff +#define mc2_chn_ddr_ver_version_ALIGN 0 +#define mc2_chn_ddr_ver_version_BITS 8 +#define mc2_chn_ddr_ver_version_SHIFT 0 +#define mc2_chn_ddr_ver_version_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_chn_arb_cfg_fifo_mode_MASK 0x80000000 +#define mc2_chn_ddr_chn_arb_cfg_fifo_mode_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_fifo_mode_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_fifo_mode_SHIFT 31 +#define mc2_chn_ddr_chn_arb_cfg_fifo_mode_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_addr_chk_disable_MASK 0x40000000 +#define mc2_chn_ddr_chn_arb_cfg_addr_chk_disable_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_addr_chk_disable_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_addr_chk_disable_SHIFT 30 +#define mc2_chn_ddr_chn_arb_cfg_addr_chk_disable_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_reserved0_MASK 0x3c000000 +#define mc2_chn_ddr_chn_arb_cfg_reserved0_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_reserved0_BITS 4 +#define mc2_chn_ddr_chn_arb_cfg_reserved0_SHIFT 26 + + +#define mc2_chn_ddr_chn_arb_cfg_always_auto_precharge_MASK 0x02000000 +#define mc2_chn_ddr_chn_arb_cfg_always_auto_precharge_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_always_auto_precharge_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_always_auto_precharge_SHIFT 25 +#define mc2_chn_ddr_chn_arb_cfg_always_auto_precharge_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_auto_precharge_MASK 0x01000000 +#define mc2_chn_ddr_chn_arb_cfg_auto_precharge_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_auto_precharge_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_auto_precharge_SHIFT 24 +#define mc2_chn_ddr_chn_arb_cfg_auto_precharge_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_reserved1_MASK 0x00ffffe0 +#define mc2_chn_ddr_chn_arb_cfg_reserved1_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_reserved1_BITS 19 +#define mc2_chn_ddr_chn_arb_cfg_reserved1_SHIFT 5 + + +#define mc2_chn_ddr_chn_arb_cfg_extra_slot_en_MASK 0x00000010 +#define mc2_chn_ddr_chn_arb_cfg_extra_slot_en_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_extra_slot_en_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_extra_slot_en_SHIFT 4 +#define mc2_chn_ddr_chn_arb_cfg_extra_slot_en_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpq_MASK 0x00000008 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpq_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpq_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpq_SHIFT 3 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpq_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpu_MASK 0x00000004 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpu_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpu_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpu_SHIFT 2 +#define mc2_chn_ddr_chn_arb_cfg_per_intf_rl_cpu_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_pri_elevate_dis_MASK 0x00000002 +#define mc2_chn_ddr_chn_arb_cfg_pri_elevate_dis_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_pri_elevate_dis_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_pri_elevate_dis_SHIFT 1 +#define mc2_chn_ddr_chn_arb_cfg_pri_elevate_dis_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_cfg_arb_mode_MASK 0x00000001 +#define mc2_chn_ddr_chn_arb_cfg_arb_mode_ALIGN 0 +#define mc2_chn_ddr_chn_arb_cfg_arb_mode_BITS 1 +#define mc2_chn_ddr_chn_arb_cfg_arb_mode_SHIFT 0 +#define mc2_chn_ddr_chn_arb_cfg_arb_mode_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_chn_arb_param_reserved0_MASK 0x80000000 +#define mc2_chn_ddr_chn_arb_param_reserved0_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_reserved0_BITS 1 +#define mc2_chn_ddr_chn_arb_param_reserved0_SHIFT 31 + + +#define mc2_chn_ddr_chn_arb_param_vq2_timeout_MASK 0x7f000000 +#define mc2_chn_ddr_chn_arb_param_vq2_timeout_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_vq2_timeout_BITS 7 +#define mc2_chn_ddr_chn_arb_param_vq2_timeout_SHIFT 24 +#define mc2_chn_ddr_chn_arb_param_vq2_timeout_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_param_reserved1_MASK 0x00800000 +#define mc2_chn_ddr_chn_arb_param_reserved1_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_reserved1_BITS 1 +#define mc2_chn_ddr_chn_arb_param_reserved1_SHIFT 23 + + +#define mc2_chn_ddr_chn_arb_param_vq0_timeout_MASK 0x007f0000 +#define mc2_chn_ddr_chn_arb_param_vq0_timeout_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_vq0_timeout_BITS 7 +#define mc2_chn_ddr_chn_arb_param_vq0_timeout_SHIFT 16 +#define mc2_chn_ddr_chn_arb_param_vq0_timeout_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_arb_param_reserved2_MASK 0x0000c000 +#define mc2_chn_ddr_chn_arb_param_reserved2_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_reserved2_BITS 2 +#define mc2_chn_ddr_chn_arb_param_reserved2_SHIFT 14 + + +#define mc2_chn_ddr_chn_arb_param_wrr6_weight_MASK 0x00003000 +#define mc2_chn_ddr_chn_arb_param_wrr6_weight_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_wrr6_weight_BITS 2 +#define mc2_chn_ddr_chn_arb_param_wrr6_weight_SHIFT 12 +#define mc2_chn_ddr_chn_arb_param_wrr6_weight_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_chn_arb_param_wrr5_weight_MASK 0x00000c00 +#define mc2_chn_ddr_chn_arb_param_wrr5_weight_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_wrr5_weight_BITS 2 +#define mc2_chn_ddr_chn_arb_param_wrr5_weight_SHIFT 10 +#define mc2_chn_ddr_chn_arb_param_wrr5_weight_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_chn_arb_param_wrr0_weight_MASK 0x00000300 +#define mc2_chn_ddr_chn_arb_param_wrr0_weight_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_wrr0_weight_BITS 2 +#define mc2_chn_ddr_chn_arb_param_wrr0_weight_SHIFT 8 +#define mc2_chn_ddr_chn_arb_param_wrr0_weight_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_chn_arb_param_reserved3_MASK 0x000000e0 +#define mc2_chn_ddr_chn_arb_param_reserved3_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_reserved3_BITS 3 +#define mc2_chn_ddr_chn_arb_param_reserved3_SHIFT 5 + + +#define mc2_chn_ddr_chn_arb_param_rdwr_wrr_weight_MASK 0x0000001f +#define mc2_chn_ddr_chn_arb_param_rdwr_wrr_weight_ALIGN 0 +#define mc2_chn_ddr_chn_arb_param_rdwr_wrr_weight_BITS 5 +#define mc2_chn_ddr_chn_arb_param_rdwr_wrr_weight_SHIFT 0 +#define mc2_chn_ddr_chn_arb_param_rdwr_wrr_weight_DEFAULT 0x00000010 + + + + +#define mc2_chn_ddr_chn_sch_cfg_opt_chn_hshk_dis_MASK 0x80000000 +#define mc2_chn_ddr_chn_sch_cfg_opt_chn_hshk_dis_ALIGN 0 +#define mc2_chn_ddr_chn_sch_cfg_opt_chn_hshk_dis_BITS 1 +#define mc2_chn_ddr_chn_sch_cfg_opt_chn_hshk_dis_SHIFT 31 +#define mc2_chn_ddr_chn_sch_cfg_opt_chn_hshk_dis_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_chn_sch_cfg_reserved0_MASK 0x7ffffff8 +#define mc2_chn_ddr_chn_sch_cfg_reserved0_ALIGN 0 +#define mc2_chn_ddr_chn_sch_cfg_reserved0_BITS 28 +#define mc2_chn_ddr_chn_sch_cfg_reserved0_SHIFT 3 + + +#define mc2_chn_ddr_chn_sch_cfg_num_cmdr_MASK 0x00000007 +#define mc2_chn_ddr_chn_sch_cfg_num_cmdr_ALIGN 0 +#define mc2_chn_ddr_chn_sch_cfg_num_cmdr_BITS 3 +#define mc2_chn_ddr_chn_sch_cfg_num_cmdr_SHIFT 0 +#define mc2_chn_ddr_chn_sch_cfg_num_cmdr_DEFAULT 0x00000007 + + + + +#define mc2_chn_ddr_phy_st_reserved0_MASK 0xffffffe0 +#define mc2_chn_ddr_phy_st_reserved0_ALIGN 0 +#define mc2_chn_ddr_phy_st_reserved0_BITS 27 +#define mc2_chn_ddr_phy_st_reserved0_SHIFT 5 + + +#define mc2_chn_ddr_phy_st_phy_st_phy_ready_MASK 0x00000010 +#define mc2_chn_ddr_phy_st_phy_st_phy_ready_ALIGN 0 +#define mc2_chn_ddr_phy_st_phy_st_phy_ready_BITS 1 +#define mc2_chn_ddr_phy_st_phy_st_phy_ready_SHIFT 4 +#define mc2_chn_ddr_phy_st_phy_st_phy_ready_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_phy_st_reserved1_MASK 0x00000008 +#define mc2_chn_ddr_phy_st_reserved1_ALIGN 0 +#define mc2_chn_ddr_phy_st_reserved1_BITS 1 +#define mc2_chn_ddr_phy_st_reserved1_SHIFT 3 + + +#define mc2_chn_ddr_phy_st_phy_st_sw_reset_MASK 0x00000004 +#define mc2_chn_ddr_phy_st_phy_st_sw_reset_ALIGN 0 +#define mc2_chn_ddr_phy_st_phy_st_sw_reset_BITS 1 +#define mc2_chn_ddr_phy_st_phy_st_sw_reset_SHIFT 2 +#define mc2_chn_ddr_phy_st_phy_st_sw_reset_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_phy_st_phy_st_hw_reset_MASK 0x00000002 +#define mc2_chn_ddr_phy_st_phy_st_hw_reset_ALIGN 0 +#define mc2_chn_ddr_phy_st_phy_st_hw_reset_BITS 1 +#define mc2_chn_ddr_phy_st_phy_st_hw_reset_SHIFT 1 +#define mc2_chn_ddr_phy_st_phy_st_hw_reset_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_phy_st_phy_st_phy_power_up_MASK 0x00000001 +#define mc2_chn_ddr_phy_st_phy_st_phy_power_up_ALIGN 0 +#define mc2_chn_ddr_phy_st_phy_st_phy_power_up_BITS 1 +#define mc2_chn_ddr_phy_st_phy_st_phy_power_up_SHIFT 0 +#define mc2_chn_ddr_phy_st_phy_st_phy_power_up_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_dram_cfg_reserved0_MASK 0xfffe0000 +#define mc2_chn_ddr_dram_cfg_reserved0_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_reserved0_BITS 15 +#define mc2_chn_ddr_dram_cfg_reserved0_SHIFT 17 + + +#define mc2_chn_ddr_dram_cfg_dram_srx_cmd_MASK 0x00010000 +#define mc2_chn_ddr_dram_cfg_dram_srx_cmd_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_dram_srx_cmd_BITS 1 +#define mc2_chn_ddr_dram_cfg_dram_srx_cmd_SHIFT 16 +#define mc2_chn_ddr_dram_cfg_dram_srx_cmd_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs_mode_MASK 0x0000c000 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs_mode_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs_mode_BITS 2 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs_mode_SHIFT 14 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs_mode_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs1_enable_MASK 0x00002000 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs1_enable_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs1_enable_BITS 1 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs1_enable_SHIFT 13 +#define mc2_chn_ddr_dram_cfg_dram_cfg_cs1_enable_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dram_cfg_reserved1_MASK 0x00001800 +#define mc2_chn_ddr_dram_cfg_reserved1_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_reserved1_BITS 2 +#define mc2_chn_ddr_dram_cfg_reserved1_SHIFT 11 + + +#define mc2_chn_ddr_dram_cfg_dram_cfg_2taddrcmd_MASK 0x00000400 +#define mc2_chn_ddr_dram_cfg_dram_cfg_2taddrcmd_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_dram_cfg_2taddrcmd_BITS 1 +#define mc2_chn_ddr_dram_cfg_dram_cfg_2taddrcmd_SHIFT 10 +#define mc2_chn_ddr_dram_cfg_dram_cfg_2taddrcmd_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dram_cfg_cmd_timeout_MASK 0x000003f0 +#define mc2_chn_ddr_dram_cfg_cmd_timeout_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_cmd_timeout_BITS 6 +#define mc2_chn_ddr_dram_cfg_cmd_timeout_SHIFT 4 +#define mc2_chn_ddr_dram_cfg_cmd_timeout_DEFAULT 0x0000003f + + +#define mc2_chn_ddr_dram_cfg_dram_cfg_dramtype_MASK 0x0000000f +#define mc2_chn_ddr_dram_cfg_dram_cfg_dramtype_ALIGN 0 +#define mc2_chn_ddr_dram_cfg_dram_cfg_dramtype_BITS 4 +#define mc2_chn_ddr_dram_cfg_dram_cfg_dramtype_SHIFT 0 +#define mc2_chn_ddr_dram_cfg_dram_cfg_dramtype_DEFAULT 0x00000004 + + + + +#define mc2_chn_ddr_dcmd_sch_sel_MASK 0x80000000 +#define mc2_chn_ddr_dcmd_sch_sel_ALIGN 0 +#define mc2_chn_ddr_dcmd_sch_sel_BITS 1 +#define mc2_chn_ddr_dcmd_sch_sel_SHIFT 31 +#define mc2_chn_ddr_dcmd_sch_sel_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dcmd_reserved0_MASK 0x7ffe0000 +#define mc2_chn_ddr_dcmd_reserved0_ALIGN 0 +#define mc2_chn_ddr_dcmd_reserved0_BITS 14 +#define mc2_chn_ddr_dcmd_reserved0_SHIFT 17 + + +#define mc2_chn_ddr_dcmd_dramcmdreq_MASK 0x00010000 +#define mc2_chn_ddr_dcmd_dramcmdreq_ALIGN 0 +#define mc2_chn_ddr_dcmd_dramcmdreq_BITS 1 +#define mc2_chn_ddr_dcmd_dramcmdreq_SHIFT 16 +#define mc2_chn_ddr_dcmd_dramcmdreq_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dcmd_reserved1_MASK 0x0000fc00 +#define mc2_chn_ddr_dcmd_reserved1_ALIGN 0 +#define mc2_chn_ddr_dcmd_reserved1_BITS 6 +#define mc2_chn_ddr_dcmd_reserved1_SHIFT 10 + + +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs1_MASK 0x00000200 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs1_ALIGN 0 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs1_BITS 1 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs1_SHIFT 9 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs1_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs0_MASK 0x00000100 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs0_ALIGN 0 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs0_BITS 1 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs0_SHIFT 8 +#define mc2_chn_ddr_dcmd_dcmd_memcmdcs0_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dcmd_reserved2_MASK 0x000000e0 +#define mc2_chn_ddr_dcmd_reserved2_ALIGN 0 +#define mc2_chn_ddr_dcmd_reserved2_BITS 3 +#define mc2_chn_ddr_dcmd_reserved2_SHIFT 5 + + +#define mc2_chn_ddr_dcmd_dcmd_memcmd_MASK 0x0000001f +#define mc2_chn_ddr_dcmd_dcmd_memcmd_ALIGN 0 +#define mc2_chn_ddr_dcmd_dcmd_memcmd_BITS 5 +#define mc2_chn_ddr_dcmd_dcmd_memcmd_SHIFT 0 +#define mc2_chn_ddr_dcmd_dcmd_memcmd_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_dmode_0_reserved0_MASK 0x80000000 +#define mc2_chn_ddr_dmode_0_reserved0_ALIGN 0 +#define mc2_chn_ddr_dmode_0_reserved0_BITS 1 +#define mc2_chn_ddr_dmode_0_reserved0_SHIFT 31 + + +#define mc2_chn_ddr_dmode_0_dmode_modedata_MASK 0x7fff0000 +#define mc2_chn_ddr_dmode_0_dmode_modedata_ALIGN 0 +#define mc2_chn_ddr_dmode_0_dmode_modedata_BITS 15 +#define mc2_chn_ddr_dmode_0_dmode_modedata_SHIFT 16 +#define mc2_chn_ddr_dmode_0_dmode_modedata_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dmode_0_reserved1_MASK 0x00008000 +#define mc2_chn_ddr_dmode_0_reserved1_ALIGN 0 +#define mc2_chn_ddr_dmode_0_reserved1_BITS 1 +#define mc2_chn_ddr_dmode_0_reserved1_SHIFT 15 + + +#define mc2_chn_ddr_dmode_0_dmode_emodedata_MASK 0x00007fff +#define mc2_chn_ddr_dmode_0_dmode_emodedata_ALIGN 0 +#define mc2_chn_ddr_dmode_0_dmode_emodedata_BITS 15 +#define mc2_chn_ddr_dmode_0_dmode_emodedata_SHIFT 0 +#define mc2_chn_ddr_dmode_0_dmode_emodedata_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_dmode_2_reserved0_MASK 0x80000000 +#define mc2_chn_ddr_dmode_2_reserved0_ALIGN 0 +#define mc2_chn_ddr_dmode_2_reserved0_BITS 1 +#define mc2_chn_ddr_dmode_2_reserved0_SHIFT 31 + + +#define mc2_chn_ddr_dmode_2_dmode_emode3data_MASK 0x7fff0000 +#define mc2_chn_ddr_dmode_2_dmode_emode3data_ALIGN 0 +#define mc2_chn_ddr_dmode_2_dmode_emode3data_BITS 15 +#define mc2_chn_ddr_dmode_2_dmode_emode3data_SHIFT 16 +#define mc2_chn_ddr_dmode_2_dmode_emode3data_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dmode_2_reserved1_MASK 0x00008000 +#define mc2_chn_ddr_dmode_2_reserved1_ALIGN 0 +#define mc2_chn_ddr_dmode_2_reserved1_BITS 1 +#define mc2_chn_ddr_dmode_2_reserved1_SHIFT 15 + + +#define mc2_chn_ddr_dmode_2_dmode_emode2data_MASK 0x00007fff +#define mc2_chn_ddr_dmode_2_dmode_emode2data_ALIGN 0 +#define mc2_chn_ddr_dmode_2_dmode_emode2data_BITS 15 +#define mc2_chn_ddr_dmode_2_dmode_emode2data_SHIFT 0 +#define mc2_chn_ddr_dmode_2_dmode_emode2data_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_odt_reserved0_MASK 0xfffffc00 +#define mc2_chn_ddr_odt_reserved0_ALIGN 0 +#define mc2_chn_ddr_odt_reserved0_BITS 22 +#define mc2_chn_ddr_odt_reserved0_SHIFT 10 + + +#define mc2_chn_ddr_odt_odt_dynodten_MASK 0x00000200 +#define mc2_chn_ddr_odt_odt_dynodten_ALIGN 0 +#define mc2_chn_ddr_odt_odt_dynodten_BITS 1 +#define mc2_chn_ddr_odt_odt_dynodten_SHIFT 9 +#define mc2_chn_ddr_odt_odt_dynodten_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_odt_odt_csoddodten_MASK 0x00000100 +#define mc2_chn_ddr_odt_odt_csoddodten_ALIGN 0 +#define mc2_chn_ddr_odt_odt_csoddodten_BITS 1 +#define mc2_chn_ddr_odt_odt_csoddodten_SHIFT 8 +#define mc2_chn_ddr_odt_odt_csoddodten_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs1_odt_wr_cs1_MASK 0x00000080 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs1_ALIGN 0 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs1_BITS 1 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs1_SHIFT 7 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs1_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs1_odt_wr_cs0_MASK 0x00000040 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs0_ALIGN 0 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs0_BITS 1 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs0_SHIFT 6 +#define mc2_chn_ddr_odt_cs1_odt_wr_cs0_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs1_odt_rd_cs1_MASK 0x00000020 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs1_ALIGN 0 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs1_BITS 1 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs1_SHIFT 5 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs1_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs1_odt_rd_cs0_MASK 0x00000010 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs0_ALIGN 0 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs0_BITS 1 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs0_SHIFT 4 +#define mc2_chn_ddr_odt_cs1_odt_rd_cs0_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs0_odt_wr_cs1_MASK 0x00000008 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs1_ALIGN 0 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs1_BITS 1 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs1_SHIFT 3 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs1_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs0_odt_wr_cs0_MASK 0x00000004 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs0_ALIGN 0 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs0_BITS 1 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs0_SHIFT 2 +#define mc2_chn_ddr_odt_cs0_odt_wr_cs0_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs0_odt_rd_cs1_MASK 0x00000002 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs1_ALIGN 0 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs1_BITS 1 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs1_SHIFT 1 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs1_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_odt_cs0_odt_rd_cs0_MASK 0x00000001 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs0_ALIGN 0 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs0_BITS 1 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs0_SHIFT 0 +#define mc2_chn_ddr_odt_cs0_odt_rd_cs0_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_ddr_param_cmd0_tAL_MASK 0xff000000 +#define mc2_chn_ddr_ddr_param_cmd0_tAL_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd0_tAL_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd0_tAL_SHIFT 24 +#define mc2_chn_ddr_ddr_param_cmd0_tAL_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_cmd0_tRCD_MASK 0x00ff0000 +#define mc2_chn_ddr_ddr_param_cmd0_tRCD_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd0_tRCD_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd0_tRCD_SHIFT 16 +#define mc2_chn_ddr_ddr_param_cmd0_tRCD_DEFAULT 0x00000006 + + +#define mc2_chn_ddr_ddr_param_cmd0_tCWL_MASK 0x0000ff00 +#define mc2_chn_ddr_ddr_param_cmd0_tCWL_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd0_tCWL_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd0_tCWL_SHIFT 8 +#define mc2_chn_ddr_ddr_param_cmd0_tCWL_DEFAULT 0x00000004 + + +#define mc2_chn_ddr_ddr_param_cmd0_tCL_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_cmd0_tCL_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd0_tCL_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd0_tCL_SHIFT 0 +#define mc2_chn_ddr_ddr_param_cmd0_tCL_DEFAULT 0x00000005 + + + + +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_L_MASK 0xff000000 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_L_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_L_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_L_SHIFT 24 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_L_DEFAULT 0x00000008 + + +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_S_MASK 0x00ff0000 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_S_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_S_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_S_SHIFT 16 +#define mc2_chn_ddr_ddr_param_cmd1_tCCD_S_DEFAULT 0x00000008 + + +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_L_MASK 0x0000ff00 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_L_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_L_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_L_SHIFT 8 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_L_DEFAULT 0x00000004 + + +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_S_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_S_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_S_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_S_SHIFT 0 +#define mc2_chn_ddr_ddr_param_cmd1_tRRD_S_DEFAULT 0x00000004 + + + + +#define mc2_chn_ddr_ddr_param_cmd2_reserved0_MASK 0xffffff00 +#define mc2_chn_ddr_ddr_param_cmd2_reserved0_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd2_reserved0_BITS 24 +#define mc2_chn_ddr_ddr_param_cmd2_reserved0_SHIFT 8 + + +#define mc2_chn_ddr_ddr_param_cmd2_tCCDMW_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_cmd2_tCCDMW_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd2_tCCDMW_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd2_tCCDMW_SHIFT 0 +#define mc2_chn_ddr_ddr_param_cmd2_tCCDMW_DEFAULT 0x00000020 + + + + +#define mc2_chn_ddr_ddr_param_cmd3_tFAW_MASK 0xff000000 +#define mc2_chn_ddr_ddr_param_cmd3_tFAW_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd3_tFAW_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd3_tFAW_SHIFT 24 +#define mc2_chn_ddr_ddr_param_cmd3_tFAW_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_cmd3_tRPpb_MASK 0x00ff0000 +#define mc2_chn_ddr_ddr_param_cmd3_tRPpb_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd3_tRPpb_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd3_tRPpb_SHIFT 16 +#define mc2_chn_ddr_ddr_param_cmd3_tRPpb_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_cmd3_tRPab_MASK 0x0000ff00 +#define mc2_chn_ddr_ddr_param_cmd3_tRPab_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd3_tRPab_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd3_tRPab_SHIFT 8 +#define mc2_chn_ddr_ddr_param_cmd3_tRPab_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_cmd3_tRAS_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_cmd3_tRAS_ALIGN 0 +#define mc2_chn_ddr_ddr_param_cmd3_tRAS_BITS 8 +#define mc2_chn_ddr_ddr_param_cmd3_tRAS_SHIFT 0 +#define mc2_chn_ddr_ddr_param_cmd3_tRAS_DEFAULT 0x00000011 + + + + +#define mc2_chn_ddr_ddr_param_dat0_tWTR_L_MASK 0xff000000 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_L_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_L_BITS 8 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_L_SHIFT 24 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_L_DEFAULT 0x00000002 + + +#define mc2_chn_ddr_ddr_param_dat0_tWTR_S_MASK 0x00ff0000 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_S_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_S_BITS 8 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_S_SHIFT 16 +#define mc2_chn_ddr_ddr_param_dat0_tWTR_S_DEFAULT 0x00000002 + + +#define mc2_chn_ddr_ddr_param_dat0_tWR_MASK 0x0000ff00 +#define mc2_chn_ddr_ddr_param_dat0_tWR_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tWR_BITS 8 +#define mc2_chn_ddr_ddr_param_dat0_tWR_SHIFT 8 +#define mc2_chn_ddr_ddr_param_dat0_tWR_DEFAULT 0x00000020 + + +#define mc2_chn_ddr_ddr_param_dat0_tDQSCK_MASK 0x000000f0 +#define mc2_chn_ddr_ddr_param_dat0_tDQSCK_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tDQSCK_BITS 4 +#define mc2_chn_ddr_ddr_param_dat0_tDQSCK_SHIFT 4 +#define mc2_chn_ddr_ddr_param_dat0_tDQSCK_DEFAULT 0x00000007 + + +#define mc2_chn_ddr_ddr_param_dat0_reserved0_MASK 0x0000000c +#define mc2_chn_ddr_ddr_param_dat0_reserved0_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_reserved0_BITS 2 +#define mc2_chn_ddr_ddr_param_dat0_reserved0_SHIFT 2 + + +#define mc2_chn_ddr_ddr_param_dat0_tWPST_MASK 0x00000002 +#define mc2_chn_ddr_ddr_param_dat0_tWPST_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tWPST_BITS 1 +#define mc2_chn_ddr_ddr_param_dat0_tWPST_SHIFT 1 +#define mc2_chn_ddr_ddr_param_dat0_tWPST_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_dat0_tWPRE_MASK 0x00000001 +#define mc2_chn_ddr_ddr_param_dat0_tWPRE_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat0_tWPRE_BITS 1 +#define mc2_chn_ddr_ddr_param_dat0_tWPRE_SHIFT 0 +#define mc2_chn_ddr_ddr_param_dat0_tWPRE_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_ddr_param_dat1_tRPST_MASK 0x80000000 +#define mc2_chn_ddr_ddr_param_dat1_tRPST_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tRPST_BITS 1 +#define mc2_chn_ddr_ddr_param_dat1_tRPST_SHIFT 31 +#define mc2_chn_ddr_ddr_param_dat1_tRPST_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_ddr_param_dat1_tRPRE_MASK 0x40000000 +#define mc2_chn_ddr_ddr_param_dat1_tRPRE_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tRPRE_BITS 1 +#define mc2_chn_ddr_ddr_param_dat1_tRPRE_SHIFT 30 +#define mc2_chn_ddr_ddr_param_dat1_tRPRE_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_dat1_reserved0_MASK 0x3f000000 +#define mc2_chn_ddr_ddr_param_dat1_reserved0_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_reserved0_BITS 6 +#define mc2_chn_ddr_ddr_param_dat1_reserved0_SHIFT 24 + + +#define mc2_chn_ddr_ddr_param_dat1_tW2R_MASK 0x00ff0000 +#define mc2_chn_ddr_ddr_param_dat1_tW2R_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tW2R_BITS 8 +#define mc2_chn_ddr_ddr_param_dat1_tW2R_SHIFT 16 +#define mc2_chn_ddr_ddr_param_dat1_tW2R_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_dat1_tR2R_MASK 0x0000f000 +#define mc2_chn_ddr_ddr_param_dat1_tR2R_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tR2R_BITS 4 +#define mc2_chn_ddr_ddr_param_dat1_tR2R_SHIFT 12 +#define mc2_chn_ddr_ddr_param_dat1_tR2R_DEFAULT 0x00000003 + + +#define mc2_chn_ddr_ddr_param_dat1_tW2W_MASK 0x00000f00 +#define mc2_chn_ddr_ddr_param_dat1_tW2W_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tW2W_BITS 4 +#define mc2_chn_ddr_ddr_param_dat1_tW2W_SHIFT 8 +#define mc2_chn_ddr_ddr_param_dat1_tW2W_DEFAULT 0x00000008 + + +#define mc2_chn_ddr_ddr_param_dat1_tR2W_MASK 0x000000f0 +#define mc2_chn_ddr_ddr_param_dat1_tR2W_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_tR2W_BITS 4 +#define mc2_chn_ddr_ddr_param_dat1_tR2W_SHIFT 4 +#define mc2_chn_ddr_ddr_param_dat1_tR2W_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_dat1_reserved1_MASK 0x0000000f +#define mc2_chn_ddr_ddr_param_dat1_reserved1_ALIGN 0 +#define mc2_chn_ddr_ddr_param_dat1_reserved1_BITS 4 +#define mc2_chn_ddr_ddr_param_dat1_reserved1_SHIFT 0 + + + + +#define mc2_chn_ddr_ddr_param_pre0_autoprecharge_MASK 0x80000000 +#define mc2_chn_ddr_ddr_param_pre0_autoprecharge_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pre0_autoprecharge_BITS 1 +#define mc2_chn_ddr_ddr_param_pre0_autoprecharge_SHIFT 31 +#define mc2_chn_ddr_ddr_param_pre0_autoprecharge_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_ddr_param_pre0_reserved0_MASK 0x7fff0000 +#define mc2_chn_ddr_ddr_param_pre0_reserved0_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pre0_reserved0_BITS 15 +#define mc2_chn_ddr_ddr_param_pre0_reserved0_SHIFT 16 + + +#define mc2_chn_ddr_ddr_param_pre0_tPPD_MASK 0x0000ff00 +#define mc2_chn_ddr_ddr_param_pre0_tPPD_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pre0_tPPD_BITS 8 +#define mc2_chn_ddr_ddr_param_pre0_tPPD_SHIFT 8 +#define mc2_chn_ddr_ddr_param_pre0_tPPD_DEFAULT 0x00000002 + + +#define mc2_chn_ddr_ddr_param_pre0_tRTP_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_pre0_tRTP_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pre0_tRTP_BITS 8 +#define mc2_chn_ddr_ddr_param_pre0_tRTP_SHIFT 0 +#define mc2_chn_ddr_ddr_param_pre0_tRTP_DEFAULT 0x00000002 + + + + +#define mc2_chn_ddr_ddr_param_pwr0_tXP_MASK 0xfff00000 +#define mc2_chn_ddr_ddr_param_pwr0_tXP_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pwr0_tXP_BITS 12 +#define mc2_chn_ddr_ddr_param_pwr0_tXP_SHIFT 20 +#define mc2_chn_ddr_ddr_param_pwr0_tXP_DEFAULT 0x00000003 + + +#define mc2_chn_ddr_ddr_param_pwr0_tXSR_MASK 0x000fff00 +#define mc2_chn_ddr_ddr_param_pwr0_tXSR_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pwr0_tXSR_BITS 12 +#define mc2_chn_ddr_ddr_param_pwr0_tXSR_SHIFT 8 +#define mc2_chn_ddr_ddr_param_pwr0_tXSR_DEFAULT 0x00000002 + + +#define mc2_chn_ddr_ddr_param_pwr0_tSR_MASK 0x000000ff +#define mc2_chn_ddr_ddr_param_pwr0_tSR_ALIGN 0 +#define mc2_chn_ddr_ddr_param_pwr0_tSR_BITS 8 +#define mc2_chn_ddr_ddr_param_pwr0_tSR_SHIFT 0 +#define mc2_chn_ddr_ddr_param_pwr0_tSR_DEFAULT 0x00000003 + + + + +#define mc2_chn_ddr_ddr_param_zqc0_reserved0_MASK 0xf0000000 +#define mc2_chn_ddr_ddr_param_zqc0_reserved0_ALIGN 0 +#define mc2_chn_ddr_ddr_param_zqc0_reserved0_BITS 4 +#define mc2_chn_ddr_ddr_param_zqc0_reserved0_SHIFT 28 + + +#define mc2_chn_ddr_ddr_param_zqc0_tZQCL_MASK 0x0fff0000 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCL_ALIGN 0 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCL_BITS 12 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCL_SHIFT 16 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCL_DEFAULT 0x00000100 + + +#define mc2_chn_ddr_ddr_param_zqc0_reserved1_MASK 0x0000fe00 +#define mc2_chn_ddr_ddr_param_zqc0_reserved1_ALIGN 0 +#define mc2_chn_ddr_ddr_param_zqc0_reserved1_BITS 7 +#define mc2_chn_ddr_ddr_param_zqc0_reserved1_SHIFT 9 + + +#define mc2_chn_ddr_ddr_param_zqc0_tZQCS_MASK 0x000001ff +#define mc2_chn_ddr_ddr_param_zqc0_tZQCS_ALIGN 0 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCS_BITS 9 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCS_SHIFT 0 +#define mc2_chn_ddr_ddr_param_zqc0_tZQCS_DEFAULT 0x00000040 + + + + +#define mc2_chn_ddr_refresh_aref0_refmaxdelay_MASK 0xf0000000 +#define mc2_chn_ddr_refresh_aref0_refmaxdelay_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_refmaxdelay_BITS 4 +#define mc2_chn_ddr_refresh_aref0_refmaxdelay_SHIFT 28 +#define mc2_chn_ddr_refresh_aref0_refmaxdelay_DEFAULT 0x00000004 + + +#define mc2_chn_ddr_refresh_aref0_reserved0_MASK 0x0e000000 +#define mc2_chn_ddr_refresh_aref0_reserved0_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_reserved0_BITS 3 +#define mc2_chn_ddr_refresh_aref0_reserved0_SHIFT 25 + + +#define mc2_chn_ddr_refresh_aref0_pbref_ordered_MASK 0x01000000 +#define mc2_chn_ddr_refresh_aref0_pbref_ordered_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_pbref_ordered_BITS 1 +#define mc2_chn_ddr_refresh_aref0_pbref_ordered_SHIFT 24 +#define mc2_chn_ddr_refresh_aref0_pbref_ordered_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_refresh_aref0_pbref_intlv_MASK 0x00ff0000 +#define mc2_chn_ddr_refresh_aref0_pbref_intlv_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_pbref_intlv_BITS 8 +#define mc2_chn_ddr_refresh_aref0_pbref_intlv_SHIFT 16 +#define mc2_chn_ddr_refresh_aref0_pbref_intlv_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_refresh_aref0_abref_num_MASK 0x0000f000 +#define mc2_chn_ddr_refresh_aref0_abref_num_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_abref_num_BITS 4 +#define mc2_chn_ddr_refresh_aref0_abref_num_SHIFT 12 +#define mc2_chn_ddr_refresh_aref0_abref_num_DEFAULT 0x00000001 + + +#define mc2_chn_ddr_refresh_aref0_reserved1_MASK 0x00000c00 +#define mc2_chn_ddr_refresh_aref0_reserved1_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_reserved1_BITS 2 +#define mc2_chn_ddr_refresh_aref0_reserved1_SHIFT 10 + + +#define mc2_chn_ddr_refresh_aref0_tREFI_MASK 0x000003ff +#define mc2_chn_ddr_refresh_aref0_tREFI_ALIGN 0 +#define mc2_chn_ddr_refresh_aref0_tREFI_BITS 10 +#define mc2_chn_ddr_refresh_aref0_tREFI_SHIFT 0 +#define mc2_chn_ddr_refresh_aref0_tREFI_DEFAULT 0x00000103 + + + + +#define mc2_chn_ddr_refresh_aref1_refdisable_MASK 0x80000000 +#define mc2_chn_ddr_refresh_aref1_refdisable_ALIGN 0 +#define mc2_chn_ddr_refresh_aref1_refdisable_BITS 1 +#define mc2_chn_ddr_refresh_aref1_refdisable_SHIFT 31 +#define mc2_chn_ddr_refresh_aref1_refdisable_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_refresh_aref1_reserved0_MASK 0x70000000 +#define mc2_chn_ddr_refresh_aref1_reserved0_ALIGN 0 +#define mc2_chn_ddr_refresh_aref1_reserved0_BITS 3 +#define mc2_chn_ddr_refresh_aref1_reserved0_SHIFT 28 + + +#define mc2_chn_ddr_refresh_aref1_tRFCpb_MASK 0x0fff0000 +#define mc2_chn_ddr_refresh_aref1_tRFCpb_ALIGN 0 +#define mc2_chn_ddr_refresh_aref1_tRFCpb_BITS 12 +#define mc2_chn_ddr_refresh_aref1_tRFCpb_SHIFT 16 +#define mc2_chn_ddr_refresh_aref1_tRFCpb_DEFAULT 0x0000008d + + +#define mc2_chn_ddr_refresh_aref1_reserved1_MASK 0x0000f000 +#define mc2_chn_ddr_refresh_aref1_reserved1_ALIGN 0 +#define mc2_chn_ddr_refresh_aref1_reserved1_BITS 4 +#define mc2_chn_ddr_refresh_aref1_reserved1_SHIFT 12 + + +#define mc2_chn_ddr_refresh_aref1_tRFCab_MASK 0x00000fff +#define mc2_chn_ddr_refresh_aref1_tRFCab_ALIGN 0 +#define mc2_chn_ddr_refresh_aref1_tRFCab_BITS 12 +#define mc2_chn_ddr_refresh_aref1_tRFCab_SHIFT 0 +#define mc2_chn_ddr_refresh_aref1_tRFCab_DEFAULT 0x0000011a + + + + +#define mc2_chn_ddr_auto_self_refresh_enable_MASK 0x80000000 +#define mc2_chn_ddr_auto_self_refresh_enable_ALIGN 0 +#define mc2_chn_ddr_auto_self_refresh_enable_BITS 1 +#define mc2_chn_ddr_auto_self_refresh_enable_SHIFT 31 +#define mc2_chn_ddr_auto_self_refresh_enable_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_auto_self_refresh_immediate_MASK 0x40000000 +#define mc2_chn_ddr_auto_self_refresh_immediate_ALIGN 0 +#define mc2_chn_ddr_auto_self_refresh_immediate_BITS 1 +#define mc2_chn_ddr_auto_self_refresh_immediate_SHIFT 30 +#define mc2_chn_ddr_auto_self_refresh_immediate_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_auto_self_refresh_idle_count_MASK 0x3fffffff +#define mc2_chn_ddr_auto_self_refresh_idle_count_ALIGN 0 +#define mc2_chn_ddr_auto_self_refresh_idle_count_BITS 30 +#define mc2_chn_ddr_auto_self_refresh_idle_count_SHIFT 0 +#define mc2_chn_ddr_auto_self_refresh_idle_count_DEFAULT 0x00000000 + + + + +#define mc2_chn_ddr_auto_zqcs_enable_MASK 0x80000000 +#define mc2_chn_ddr_auto_zqcs_enable_ALIGN 0 +#define mc2_chn_ddr_auto_zqcs_enable_BITS 1 +#define mc2_chn_ddr_auto_zqcs_enable_SHIFT 31 +#define mc2_chn_ddr_auto_zqcs_enable_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_auto_zqcs_timer_count_MASK 0x7fffffe0 +#define mc2_chn_ddr_auto_zqcs_timer_count_ALIGN 0 +#define mc2_chn_ddr_auto_zqcs_timer_count_BITS 26 +#define mc2_chn_ddr_auto_zqcs_timer_count_SHIFT 5 +#define mc2_chn_ddr_auto_zqcs_timer_count_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_auto_zqcs_reserved0_MASK 0x0000001f +#define mc2_chn_ddr_auto_zqcs_reserved0_ALIGN 0 +#define mc2_chn_ddr_auto_zqcs_reserved0_BITS 5 +#define mc2_chn_ddr_auto_zqcs_reserved0_SHIFT 0 + + + + +#define mc2_chn_ddr_dfi_error_dfi_error_b_vld_MASK 0x80000000 +#define mc2_chn_ddr_dfi_error_dfi_error_b_vld_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_b_vld_BITS 1 +#define mc2_chn_ddr_dfi_error_dfi_error_b_vld_SHIFT 31 +#define mc2_chn_ddr_dfi_error_dfi_error_b_vld_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dfi_error_dfi_error_b_clr_MASK 0x40000000 +#define mc2_chn_ddr_dfi_error_dfi_error_b_clr_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_b_clr_BITS 1 +#define mc2_chn_ddr_dfi_error_dfi_error_b_clr_SHIFT 30 +#define mc2_chn_ddr_dfi_error_dfi_error_b_clr_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dfi_error_reserved0_MASK 0x3f000000 +#define mc2_chn_ddr_dfi_error_reserved0_ALIGN 0 +#define mc2_chn_ddr_dfi_error_reserved0_BITS 6 +#define mc2_chn_ddr_dfi_error_reserved0_SHIFT 24 + + +#define mc2_chn_ddr_dfi_error_dfi_error_b_info_MASK 0x00ff0000 +#define mc2_chn_ddr_dfi_error_dfi_error_b_info_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_b_info_BITS 8 +#define mc2_chn_ddr_dfi_error_dfi_error_b_info_SHIFT 16 +#define mc2_chn_ddr_dfi_error_dfi_error_b_info_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dfi_error_dfi_error_a_vld_MASK 0x00008000 +#define mc2_chn_ddr_dfi_error_dfi_error_a_vld_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_a_vld_BITS 1 +#define mc2_chn_ddr_dfi_error_dfi_error_a_vld_SHIFT 15 +#define mc2_chn_ddr_dfi_error_dfi_error_a_vld_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dfi_error_dfi_error_a_clr_MASK 0x00004000 +#define mc2_chn_ddr_dfi_error_dfi_error_a_clr_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_a_clr_BITS 1 +#define mc2_chn_ddr_dfi_error_dfi_error_a_clr_SHIFT 14 +#define mc2_chn_ddr_dfi_error_dfi_error_a_clr_DEFAULT 0x00000000 + + +#define mc2_chn_ddr_dfi_error_reserved1_MASK 0x00003f00 +#define mc2_chn_ddr_dfi_error_reserved1_ALIGN 0 +#define mc2_chn_ddr_dfi_error_reserved1_BITS 6 +#define mc2_chn_ddr_dfi_error_reserved1_SHIFT 8 + + +#define mc2_chn_ddr_dfi_error_dfi_error_a_info_MASK 0x000000ff +#define mc2_chn_ddr_dfi_error_dfi_error_a_info_ALIGN 0 +#define mc2_chn_ddr_dfi_error_dfi_error_a_info_BITS 8 +#define mc2_chn_ddr_dfi_error_dfi_error_a_info_SHIFT 0 +#define mc2_chn_ddr_dfi_error_dfi_error_a_info_DEFAULT 0x00000000 + + +#define mc2_afx_acc_acc_eack_MASK 0x80000000 +#define mc2_afx_acc_acc_eack_ALIGN 0 +#define mc2_afx_acc_acc_eack_BITS 1 +#define mc2_afx_acc_acc_eack_SHIFT 31 +#define mc2_afx_acc_acc_eack_DEFAULT 0x00000000 + + +#define mc2_afx_acc_reserved0_MASK 0x7fffff00 +#define mc2_afx_acc_reserved0_ALIGN 0 +#define mc2_afx_acc_reserved0_BITS 23 +#define mc2_afx_acc_reserved0_SHIFT 8 + + +#define mc2_afx_acc_acc_sw_MASK 0x00000080 +#define mc2_afx_acc_acc_sw_ALIGN 0 +#define mc2_afx_acc_acc_sw_BITS 1 +#define mc2_afx_acc_acc_sw_SHIFT 7 +#define mc2_afx_acc_acc_sw_DEFAULT 0x00000001 + + +#define mc2_afx_acc_acc_sr_MASK 0x00000040 +#define mc2_afx_acc_acc_sr_ALIGN 0 +#define mc2_afx_acc_acc_sr_BITS 1 +#define mc2_afx_acc_acc_sr_SHIFT 6 +#define mc2_afx_acc_acc_sr_DEFAULT 0x00000001 + + +#define mc2_afx_acc_acc_nsw_MASK 0x00000020 +#define mc2_afx_acc_acc_nsw_ALIGN 0 +#define mc2_afx_acc_acc_nsw_BITS 1 +#define mc2_afx_acc_acc_nsw_SHIFT 5 +#define mc2_afx_acc_acc_nsw_DEFAULT 0x00000001 + + +#define mc2_afx_acc_acc_nsr_MASK 0x00000010 +#define mc2_afx_acc_acc_nsr_ALIGN 0 +#define mc2_afx_acc_acc_nsr_BITS 1 +#define mc2_afx_acc_acc_nsr_SHIFT 4 +#define mc2_afx_acc_acc_nsr_DEFAULT 0x00000001 + + +#define mc2_afx_acc_perm_sw_MASK 0x00000008 +#define mc2_afx_acc_perm_sw_ALIGN 0 +#define mc2_afx_acc_perm_sw_BITS 1 +#define mc2_afx_acc_perm_sw_SHIFT 3 +#define mc2_afx_acc_perm_sw_DEFAULT 0x00000001 + + +#define mc2_afx_acc_perm_sr_MASK 0x00000004 +#define mc2_afx_acc_perm_sr_ALIGN 0 +#define mc2_afx_acc_perm_sr_BITS 1 +#define mc2_afx_acc_perm_sr_SHIFT 2 +#define mc2_afx_acc_perm_sr_DEFAULT 0x00000001 + + +#define mc2_afx_acc_perm_nsw_MASK 0x00000002 +#define mc2_afx_acc_perm_nsw_ALIGN 0 +#define mc2_afx_acc_perm_nsw_BITS 1 +#define mc2_afx_acc_perm_nsw_SHIFT 1 +#define mc2_afx_acc_perm_nsw_DEFAULT 0x00000001 + + +#define mc2_afx_acc_perm_nsr_MASK 0x00000001 +#define mc2_afx_acc_perm_nsr_ALIGN 0 +#define mc2_afx_acc_perm_nsr_BITS 1 +#define mc2_afx_acc_perm_nsr_SHIFT 0 +#define mc2_afx_acc_perm_nsr_DEFAULT 0x00000001 + + + + +#define mc2_afx_ver_reserved0_MASK 0xffffff00 +#define mc2_afx_ver_reserved0_ALIGN 0 +#define mc2_afx_ver_reserved0_BITS 24 +#define mc2_afx_ver_reserved0_SHIFT 8 + + +#define mc2_afx_ver_version_MASK 0x000000ff +#define mc2_afx_ver_version_ALIGN 0 +#define mc2_afx_ver_version_BITS 8 +#define mc2_afx_ver_version_SHIFT 0 +#define mc2_afx_ver_version_DEFAULT 0x00000000 + + + + +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_enable_MASK 0x80000000 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_enable_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_enable_BITS 1 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_enable_SHIFT 31 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_enable_DEFAULT 0x00000001 + + +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_reserved0_MASK 0x7fffff00 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_reserved0_BITS 23 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_addr_hi_BITS 8 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_hi_addr_hi_DEFAULT 0x00000001 + + + + +#define mc2_afx_sram_match_cfg_sram_start_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_sram_match_cfg_sram_start_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_lo_addr_lo_BITS 32 +#define mc2_afx_sram_match_cfg_sram_start_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_sram_match_cfg_sram_start_addr_lo_addr_lo_DEFAULT 0x7fff0000 + + + + +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_reserved0_MASK 0xffffff00 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_reserved0_BITS 24 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_addr_hi_BITS 8 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_sram_match_cfg_sram_end_addr_hi_addr_hi_DEFAULT 0x00000001 + + + + +#define mc2_afx_sram_match_cfg_sram_end_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_sram_match_cfg_sram_end_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_sram_match_cfg_sram_end_addr_lo_addr_lo_BITS 32 +#define mc2_afx_sram_match_cfg_sram_end_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_sram_match_cfg_sram_end_addr_lo_addr_lo_DEFAULT 0x7fffffff + + + + +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_enable_MASK 0x80000000 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_enable_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_enable_BITS 1 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_enable_SHIFT 31 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_enable_DEFAULT 0x00000000 + + +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_reserved0_MASK 0x7fffff00 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_reserved0_BITS 23 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg0_start_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg0_start_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg0_start_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg0_start_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_reserved0_MASK 0xffffff00 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_reserved0_BITS 24 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg0_end_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg0_end_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg0_end_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg0_end_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg0_end_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg0_end_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_enable_MASK 0x80000000 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_enable_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_enable_BITS 1 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_enable_SHIFT 31 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_enable_DEFAULT 0x00000000 + + +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_reserved0_MASK 0x7fffff00 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_reserved0_BITS 23 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg1_start_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg1_start_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg1_start_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg1_start_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_reserved0_MASK 0xffffff00 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_reserved0_BITS 24 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg1_end_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg1_end_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg1_end_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg1_end_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg1_end_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg1_end_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_enable_MASK 0x80000000 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_enable_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_enable_BITS 1 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_enable_SHIFT 31 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_enable_DEFAULT 0x00000000 + + +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_reserved0_MASK 0x7fffff00 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_reserved0_BITS 23 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg2_start_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg2_start_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg2_start_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg2_start_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_reserved0_MASK 0xffffff00 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_reserved0_BITS 24 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg2_end_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg2_end_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg2_end_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg2_end_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg2_end_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg2_end_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_enable_MASK 0x80000000 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_enable_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_enable_BITS 1 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_enable_SHIFT 31 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_enable_DEFAULT 0x00000000 + + +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_reserved0_MASK 0x7fffff00 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_reserved0_BITS 23 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg3_start_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg3_start_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg3_start_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg3_start_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_reserved0_MASK 0xffffff00 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_reserved0_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_reserved0_BITS 24 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_reserved0_SHIFT 8 + + +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_addr_hi_MASK 0x000000ff +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_addr_hi_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_addr_hi_BITS 8 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_addr_hi_SHIFT 0 +#define mc2_afx_addr_fltr_cfg3_end_addr_hi_addr_hi_DEFAULT 0x00000000 + + + + +#define mc2_afx_addr_fltr_cfg3_end_addr_lo_addr_lo_MASK 0xffffffff +#define mc2_afx_addr_fltr_cfg3_end_addr_lo_addr_lo_ALIGN 0 +#define mc2_afx_addr_fltr_cfg3_end_addr_lo_addr_lo_BITS 32 +#define mc2_afx_addr_fltr_cfg3_end_addr_lo_addr_lo_SHIFT 0 +#define mc2_afx_addr_fltr_cfg3_end_addr_lo_addr_lo_DEFAULT 0x00000000 + + + + +#define mc2_afx_srcid_fltr_cfg0_srcid_enable_MASK 0x80000000 +#define mc2_afx_srcid_fltr_cfg0_srcid_enable_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_enable_BITS 1 +#define mc2_afx_srcid_fltr_cfg0_srcid_enable_SHIFT 31 +#define mc2_afx_srcid_fltr_cfg0_srcid_enable_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved0_MASK 0x70000000 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved0_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved0_BITS 3 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved0_SHIFT 28 + + +#define mc2_afx_srcid_fltr_cfg0_srcid_start_srcid_MASK 0x0fff0000 +#define mc2_afx_srcid_fltr_cfg0_srcid_start_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_start_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg0_srcid_start_srcid_SHIFT 16 +#define mc2_afx_srcid_fltr_cfg0_srcid_start_srcid_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved1_MASK 0x0000f000 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved1_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved1_BITS 4 +#define mc2_afx_srcid_fltr_cfg0_srcid_reserved1_SHIFT 12 + + +#define mc2_afx_srcid_fltr_cfg0_srcid_end_srcid_MASK 0x00000fff +#define mc2_afx_srcid_fltr_cfg0_srcid_end_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_end_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg0_srcid_end_srcid_SHIFT 0 +#define mc2_afx_srcid_fltr_cfg0_srcid_end_srcid_DEFAULT 0x00000000 + + + + +#define mc2_afx_srcid_fltr_cfg1_srcid_enable_MASK 0x80000000 +#define mc2_afx_srcid_fltr_cfg1_srcid_enable_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_enable_BITS 1 +#define mc2_afx_srcid_fltr_cfg1_srcid_enable_SHIFT 31 +#define mc2_afx_srcid_fltr_cfg1_srcid_enable_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved0_MASK 0x70000000 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved0_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved0_BITS 3 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved0_SHIFT 28 + + +#define mc2_afx_srcid_fltr_cfg1_srcid_start_srcid_MASK 0x0fff0000 +#define mc2_afx_srcid_fltr_cfg1_srcid_start_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_start_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg1_srcid_start_srcid_SHIFT 16 +#define mc2_afx_srcid_fltr_cfg1_srcid_start_srcid_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved1_MASK 0x0000f000 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved1_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved1_BITS 4 +#define mc2_afx_srcid_fltr_cfg1_srcid_reserved1_SHIFT 12 + + +#define mc2_afx_srcid_fltr_cfg1_srcid_end_srcid_MASK 0x00000fff +#define mc2_afx_srcid_fltr_cfg1_srcid_end_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_end_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg1_srcid_end_srcid_SHIFT 0 +#define mc2_afx_srcid_fltr_cfg1_srcid_end_srcid_DEFAULT 0x00000000 + + + + +#define mc2_afx_srcid_fltr_cfg2_srcid_enable_MASK 0x80000000 +#define mc2_afx_srcid_fltr_cfg2_srcid_enable_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_enable_BITS 1 +#define mc2_afx_srcid_fltr_cfg2_srcid_enable_SHIFT 31 +#define mc2_afx_srcid_fltr_cfg2_srcid_enable_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved0_MASK 0x70000000 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved0_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved0_BITS 3 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved0_SHIFT 28 + + +#define mc2_afx_srcid_fltr_cfg2_srcid_start_srcid_MASK 0x0fff0000 +#define mc2_afx_srcid_fltr_cfg2_srcid_start_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_start_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg2_srcid_start_srcid_SHIFT 16 +#define mc2_afx_srcid_fltr_cfg2_srcid_start_srcid_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved1_MASK 0x0000f000 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved1_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved1_BITS 4 +#define mc2_afx_srcid_fltr_cfg2_srcid_reserved1_SHIFT 12 + + +#define mc2_afx_srcid_fltr_cfg2_srcid_end_srcid_MASK 0x00000fff +#define mc2_afx_srcid_fltr_cfg2_srcid_end_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_end_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg2_srcid_end_srcid_SHIFT 0 +#define mc2_afx_srcid_fltr_cfg2_srcid_end_srcid_DEFAULT 0x00000000 + + + + +#define mc2_afx_srcid_fltr_cfg3_srcid_enable_MASK 0x80000000 +#define mc2_afx_srcid_fltr_cfg3_srcid_enable_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_enable_BITS 1 +#define mc2_afx_srcid_fltr_cfg3_srcid_enable_SHIFT 31 +#define mc2_afx_srcid_fltr_cfg3_srcid_enable_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved0_MASK 0x70000000 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved0_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved0_BITS 3 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved0_SHIFT 28 + + +#define mc2_afx_srcid_fltr_cfg3_srcid_start_srcid_MASK 0x0fff0000 +#define mc2_afx_srcid_fltr_cfg3_srcid_start_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_start_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg3_srcid_start_srcid_SHIFT 16 +#define mc2_afx_srcid_fltr_cfg3_srcid_start_srcid_DEFAULT 0x00000000 + + +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved1_MASK 0x0000f000 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved1_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved1_BITS 4 +#define mc2_afx_srcid_fltr_cfg3_srcid_reserved1_SHIFT 12 + + +#define mc2_afx_srcid_fltr_cfg3_srcid_end_srcid_MASK 0x00000fff +#define mc2_afx_srcid_fltr_cfg3_srcid_end_srcid_ALIGN 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_end_srcid_BITS 12 +#define mc2_afx_srcid_fltr_cfg3_srcid_end_srcid_SHIFT 0 +#define mc2_afx_srcid_fltr_cfg3_srcid_end_srcid_DEFAULT 0x00000000 + + + + +#define mc2_afx_row_xtr_cfg_row_19_16_reserved0_MASK 0xffffffc0 +#define mc2_afx_row_xtr_cfg_row_19_16_reserved0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_19_16_reserved0_BITS 26 +#define mc2_afx_row_xtr_cfg_row_19_16_reserved0_SHIFT 6 + + +#define mc2_afx_row_xtr_cfg_row_19_16_bit_16_MASK 0x0000003f +#define mc2_afx_row_xtr_cfg_row_19_16_bit_16_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_19_16_bit_16_BITS 6 +#define mc2_afx_row_xtr_cfg_row_19_16_bit_16_SHIFT 0 +#define mc2_afx_row_xtr_cfg_row_19_16_bit_16_DEFAULT 0x0000001e + + + + +#define mc2_afx_row_xtr_cfg_row_15_12_reserved0_MASK 0xc0000000 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved0_BITS 2 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved0_SHIFT 30 + + +#define mc2_afx_row_xtr_cfg_row_15_12_bit_15_MASK 0x3f000000 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_15_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_15_BITS 6 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_15_SHIFT 24 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_15_DEFAULT 0x0000001d + + +#define mc2_afx_row_xtr_cfg_row_15_12_reserved1_MASK 0x00c00000 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved1_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved1_BITS 2 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved1_SHIFT 22 + + +#define mc2_afx_row_xtr_cfg_row_15_12_bit_14_MASK 0x003f0000 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_14_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_14_BITS 6 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_14_SHIFT 16 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_14_DEFAULT 0x0000001c + + +#define mc2_afx_row_xtr_cfg_row_15_12_reserved2_MASK 0x0000c000 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved2_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved2_BITS 2 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved2_SHIFT 14 + + +#define mc2_afx_row_xtr_cfg_row_15_12_bit_13_MASK 0x00003f00 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_13_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_13_BITS 6 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_13_SHIFT 8 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_13_DEFAULT 0x0000001b + + +#define mc2_afx_row_xtr_cfg_row_15_12_reserved3_MASK 0x000000c0 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved3_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved3_BITS 2 +#define mc2_afx_row_xtr_cfg_row_15_12_reserved3_SHIFT 6 + + +#define mc2_afx_row_xtr_cfg_row_15_12_bit_12_MASK 0x0000003f +#define mc2_afx_row_xtr_cfg_row_15_12_bit_12_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_12_BITS 6 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_12_SHIFT 0 +#define mc2_afx_row_xtr_cfg_row_15_12_bit_12_DEFAULT 0x0000001a + + + + +#define mc2_afx_row_xtr_cfg_row_11_8_reserved0_MASK 0xc0000000 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved0_BITS 2 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved0_SHIFT 30 + + +#define mc2_afx_row_xtr_cfg_row_11_8_bit_11_MASK 0x3f000000 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_11_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_11_BITS 6 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_11_SHIFT 24 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_11_DEFAULT 0x00000019 + + +#define mc2_afx_row_xtr_cfg_row_11_8_reserved1_MASK 0x00c00000 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved1_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved1_BITS 2 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved1_SHIFT 22 + + +#define mc2_afx_row_xtr_cfg_row_11_8_bit_10_MASK 0x003f0000 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_10_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_10_BITS 6 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_10_SHIFT 16 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_10_DEFAULT 0x00000018 + + +#define mc2_afx_row_xtr_cfg_row_11_8_reserved2_MASK 0x0000c000 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved2_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved2_BITS 2 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved2_SHIFT 14 + + +#define mc2_afx_row_xtr_cfg_row_11_8_bit_9_MASK 0x00003f00 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_9_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_9_BITS 6 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_9_SHIFT 8 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_9_DEFAULT 0x00000017 + + +#define mc2_afx_row_xtr_cfg_row_11_8_reserved3_MASK 0x000000c0 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved3_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved3_BITS 2 +#define mc2_afx_row_xtr_cfg_row_11_8_reserved3_SHIFT 6 + + +#define mc2_afx_row_xtr_cfg_row_11_8_bit_8_MASK 0x0000003f +#define mc2_afx_row_xtr_cfg_row_11_8_bit_8_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_8_BITS 6 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_8_SHIFT 0 +#define mc2_afx_row_xtr_cfg_row_11_8_bit_8_DEFAULT 0x00000016 + + + + +#define mc2_afx_row_xtr_cfg_row_7_4_reserved0_MASK 0xc0000000 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved0_BITS 2 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved0_SHIFT 30 + + +#define mc2_afx_row_xtr_cfg_row_7_4_bit_7_MASK 0x3f000000 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_7_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_7_BITS 6 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_7_SHIFT 24 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_7_DEFAULT 0x00000015 + + +#define mc2_afx_row_xtr_cfg_row_7_4_reserved1_MASK 0x00c00000 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved1_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved1_BITS 2 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved1_SHIFT 22 + + +#define mc2_afx_row_xtr_cfg_row_7_4_bit_6_MASK 0x003f0000 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_6_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_6_BITS 6 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_6_SHIFT 16 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_6_DEFAULT 0x00000014 + + +#define mc2_afx_row_xtr_cfg_row_7_4_reserved2_MASK 0x0000c000 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved2_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved2_BITS 2 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved2_SHIFT 14 + + +#define mc2_afx_row_xtr_cfg_row_7_4_bit_5_MASK 0x00003f00 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_5_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_5_BITS 6 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_5_SHIFT 8 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_5_DEFAULT 0x00000013 + + +#define mc2_afx_row_xtr_cfg_row_7_4_reserved3_MASK 0x000000c0 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved3_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved3_BITS 2 +#define mc2_afx_row_xtr_cfg_row_7_4_reserved3_SHIFT 6 + + +#define mc2_afx_row_xtr_cfg_row_7_4_bit_4_MASK 0x0000003f +#define mc2_afx_row_xtr_cfg_row_7_4_bit_4_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_4_BITS 6 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_4_SHIFT 0 +#define mc2_afx_row_xtr_cfg_row_7_4_bit_4_DEFAULT 0x00000012 + + + + +#define mc2_afx_row_xtr_cfg_row_3_0_reserved0_MASK 0xc0000000 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved0_BITS 2 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved0_SHIFT 30 + + +#define mc2_afx_row_xtr_cfg_row_3_0_bit_3_MASK 0x3f000000 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_3_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_3_BITS 6 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_3_SHIFT 24 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_3_DEFAULT 0x00000011 + + +#define mc2_afx_row_xtr_cfg_row_3_0_reserved1_MASK 0x00c00000 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved1_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved1_BITS 2 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved1_SHIFT 22 + + +#define mc2_afx_row_xtr_cfg_row_3_0_bit_2_MASK 0x003f0000 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_2_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_2_BITS 6 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_2_SHIFT 16 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_2_DEFAULT 0x00000010 + + +#define mc2_afx_row_xtr_cfg_row_3_0_reserved2_MASK 0x0000c000 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved2_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved2_BITS 2 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved2_SHIFT 14 + + +#define mc2_afx_row_xtr_cfg_row_3_0_bit_1_MASK 0x00003f00 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_1_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_1_BITS 6 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_1_SHIFT 8 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_1_DEFAULT 0x0000000f + + +#define mc2_afx_row_xtr_cfg_row_3_0_reserved3_MASK 0x000000c0 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved3_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved3_BITS 2 +#define mc2_afx_row_xtr_cfg_row_3_0_reserved3_SHIFT 6 + + +#define mc2_afx_row_xtr_cfg_row_3_0_bit_0_MASK 0x0000003f +#define mc2_afx_row_xtr_cfg_row_3_0_bit_0_ALIGN 0 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_0_BITS 6 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_0_SHIFT 0 +#define mc2_afx_row_xtr_cfg_row_3_0_bit_0_DEFAULT 0x0000000e + + + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved0_MASK 0xc0000000 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved0_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved0_BITS 2 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved0_SHIFT 30 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_3_MASK 0x3f000000 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_3_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_3_BITS 6 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_3_SHIFT 24 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_3_DEFAULT 0x00000000 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved1_MASK 0x00c00000 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved1_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved1_BITS 2 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved1_SHIFT 22 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_2_MASK 0x003f0000 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_2_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_2_BITS 6 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_2_SHIFT 16 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_2_DEFAULT 0x00000000 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved2_MASK 0x0000c000 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved2_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved2_BITS 2 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved2_SHIFT 14 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_1_MASK 0x00003f00 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_1_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_1_BITS 6 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_1_SHIFT 8 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_1_DEFAULT 0x00000000 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved3_MASK 0x000000c0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved3_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved3_BITS 2 +#define mc2_afx_bg_xtr_cfg_bg_3_0_reserved3_SHIFT 6 + + +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_0_MASK 0x0000003f +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_0_ALIGN 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_0_BITS 6 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_0_SHIFT 0 +#define mc2_afx_bg_xtr_cfg_bg_3_0_bit_0_DEFAULT 0x00000000 + + + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved0_MASK 0xc0000000 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved0_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved0_BITS 2 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved0_SHIFT 30 + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_3_MASK 0x3f000000 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_3_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_3_BITS 6 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_3_SHIFT 24 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_3_DEFAULT 0x00000000 + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved1_MASK 0x00c00000 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved1_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved1_BITS 2 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved1_SHIFT 22 + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_2_MASK 0x003f0000 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_2_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_2_BITS 6 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_2_SHIFT 16 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_2_DEFAULT 0x0000000d + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved2_MASK 0x0000c000 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved2_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved2_BITS 2 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved2_SHIFT 14 + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_1_MASK 0x00003f00 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_1_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_1_BITS 6 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_1_SHIFT 8 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_1_DEFAULT 0x0000000c + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved3_MASK 0x000000c0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved3_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved3_BITS 2 +#define mc2_afx_bk_xtr_cfg_bk_3_0_reserved3_SHIFT 6 + + +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_0_MASK 0x0000003f +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_0_ALIGN 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_0_BITS 6 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_0_SHIFT 0 +#define mc2_afx_bk_xtr_cfg_bk_3_0_bit_0_DEFAULT 0x0000000b + + + + +#define mc2_afx_col_xtr_cfg_col_cfg_reserved0_MASK 0xffffffc0 +#define mc2_afx_col_xtr_cfg_col_cfg_reserved0_ALIGN 0 +#define mc2_afx_col_xtr_cfg_col_cfg_reserved0_BITS 26 +#define mc2_afx_col_xtr_cfg_col_cfg_reserved0_SHIFT 6 + + +#define mc2_afx_col_xtr_cfg_col_cfg_col_bit_start_MASK 0x00000030 +#define mc2_afx_col_xtr_cfg_col_cfg_col_bit_start_ALIGN 0 +#define mc2_afx_col_xtr_cfg_col_cfg_col_bit_start_BITS 2 +#define mc2_afx_col_xtr_cfg_col_cfg_col_bit_start_SHIFT 4 +#define mc2_afx_col_xtr_cfg_col_cfg_col_bit_start_DEFAULT 0x00000001 + + +#define mc2_afx_col_xtr_cfg_col_cfg_col_mode_MASK 0x0000000c +#define mc2_afx_col_xtr_cfg_col_cfg_col_mode_ALIGN 0 +#define mc2_afx_col_xtr_cfg_col_cfg_col_mode_BITS 2 +#define mc2_afx_col_xtr_cfg_col_cfg_col_mode_SHIFT 2 +#define mc2_afx_col_xtr_cfg_col_cfg_col_mode_DEFAULT 0x00000000 + + +#define mc2_afx_col_xtr_cfg_col_cfg_num_col_bits_MASK 0x00000003 +#define mc2_afx_col_xtr_cfg_col_cfg_num_col_bits_ALIGN 0 +#define mc2_afx_col_xtr_cfg_col_cfg_num_col_bits_BITS 2 +#define mc2_afx_col_xtr_cfg_col_cfg_num_col_bits_SHIFT 0 +#define mc2_afx_col_xtr_cfg_col_cfg_num_col_bits_DEFAULT 0x00000001 + + + + +#define mc2_afx_cs_xtr_cfg_cs_3_0_enable_MASK 0x80000000 +#define mc2_afx_cs_xtr_cfg_cs_3_0_enable_ALIGN 0 +#define mc2_afx_cs_xtr_cfg_cs_3_0_enable_BITS 1 +#define mc2_afx_cs_xtr_cfg_cs_3_0_enable_SHIFT 31 +#define mc2_afx_cs_xtr_cfg_cs_3_0_enable_DEFAULT 0x00000000 + + +#define mc2_afx_cs_xtr_cfg_cs_3_0_reserved0_MASK 0x7fffffc0 +#define mc2_afx_cs_xtr_cfg_cs_3_0_reserved0_ALIGN 0 +#define mc2_afx_cs_xtr_cfg_cs_3_0_reserved0_BITS 25 +#define mc2_afx_cs_xtr_cfg_cs_3_0_reserved0_SHIFT 6 + + +#define mc2_afx_cs_xtr_cfg_cs_3_0_bit_0_MASK 0x0000003f +#define mc2_afx_cs_xtr_cfg_cs_3_0_bit_0_ALIGN 0 +#define mc2_afx_cs_xtr_cfg_cs_3_0_bit_0_BITS 6 +#define mc2_afx_cs_xtr_cfg_cs_3_0_bit_0_SHIFT 0 +#define mc2_afx_cs_xtr_cfg_cs_3_0_bit_0_DEFAULT 0x0000000b + + + + +#define mc2_afx_chn_xtr_cfg_chn_bit_enable_MASK 0x80000000 +#define mc2_afx_chn_xtr_cfg_chn_bit_enable_ALIGN 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_enable_BITS 1 +#define mc2_afx_chn_xtr_cfg_chn_bit_enable_SHIFT 31 +#define mc2_afx_chn_xtr_cfg_chn_bit_enable_DEFAULT 0x00000001 + + +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved0_MASK 0x7ffffc00 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved0_ALIGN 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved0_BITS 21 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved0_SHIFT 10 + + +#define mc2_afx_chn_xtr_cfg_chn_bit_chn_mode_MASK 0x00000300 +#define mc2_afx_chn_xtr_cfg_chn_bit_chn_mode_ALIGN 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_chn_mode_BITS 2 +#define mc2_afx_chn_xtr_cfg_chn_bit_chn_mode_SHIFT 8 +#define mc2_afx_chn_xtr_cfg_chn_bit_chn_mode_DEFAULT 0x00000000 + + +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved1_MASK 0x000000c0 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved1_ALIGN 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved1_BITS 2 +#define mc2_afx_chn_xtr_cfg_chn_bit_reserved1_SHIFT 6 + + +#define mc2_afx_chn_xtr_cfg_chn_bit_bit_0_MASK 0x0000003f +#define mc2_afx_chn_xtr_cfg_chn_bit_bit_0_ALIGN 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_bit_0_BITS 6 +#define mc2_afx_chn_xtr_cfg_chn_bit_bit_0_SHIFT 0 +#define mc2_afx_chn_xtr_cfg_chn_bit_bit_0_DEFAULT 0x0000000a + + + + +#define mc2_afx_ddr_sz_chk_reserved0_MASK 0xffffff00 +#define mc2_afx_ddr_sz_chk_reserved0_ALIGN 0 +#define mc2_afx_ddr_sz_chk_reserved0_BITS 24 +#define mc2_afx_ddr_sz_chk_reserved0_SHIFT 8 + + +#define mc2_afx_ddr_sz_chk_dram_size_limit_MASK 0x000000f0 +#define mc2_afx_ddr_sz_chk_dram_size_limit_ALIGN 0 +#define mc2_afx_ddr_sz_chk_dram_size_limit_BITS 4 +#define mc2_afx_ddr_sz_chk_dram_size_limit_SHIFT 4 +#define mc2_afx_ddr_sz_chk_dram_size_limit_DEFAULT 0x0000000c + + +#define mc2_afx_ddr_sz_chk_reserved1_MASK 0x0000000f +#define mc2_afx_ddr_sz_chk_reserved1_ALIGN 0 +#define mc2_afx_ddr_sz_chk_reserved1_BITS 4 +#define mc2_afx_ddr_sz_chk_reserved1_SHIFT 0 + + +#define mc2_wbf_acc_acc_eack_MASK 0x80000000 +#define mc2_wbf_acc_acc_eack_ALIGN 0 +#define mc2_wbf_acc_acc_eack_BITS 1 +#define mc2_wbf_acc_acc_eack_SHIFT 31 +#define mc2_wbf_acc_acc_eack_DEFAULT 0x00000000 + + +#define mc2_wbf_acc_reserved0_MASK 0x7fffff00 +#define mc2_wbf_acc_reserved0_ALIGN 0 +#define mc2_wbf_acc_reserved0_BITS 23 +#define mc2_wbf_acc_reserved0_SHIFT 8 + + +#define mc2_wbf_acc_acc_sw_MASK 0x00000080 +#define mc2_wbf_acc_acc_sw_ALIGN 0 +#define mc2_wbf_acc_acc_sw_BITS 1 +#define mc2_wbf_acc_acc_sw_SHIFT 7 +#define mc2_wbf_acc_acc_sw_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_acc_sr_MASK 0x00000040 +#define mc2_wbf_acc_acc_sr_ALIGN 0 +#define mc2_wbf_acc_acc_sr_BITS 1 +#define mc2_wbf_acc_acc_sr_SHIFT 6 +#define mc2_wbf_acc_acc_sr_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_acc_nsw_MASK 0x00000020 +#define mc2_wbf_acc_acc_nsw_ALIGN 0 +#define mc2_wbf_acc_acc_nsw_BITS 1 +#define mc2_wbf_acc_acc_nsw_SHIFT 5 +#define mc2_wbf_acc_acc_nsw_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_acc_nsr_MASK 0x00000010 +#define mc2_wbf_acc_acc_nsr_ALIGN 0 +#define mc2_wbf_acc_acc_nsr_BITS 1 +#define mc2_wbf_acc_acc_nsr_SHIFT 4 +#define mc2_wbf_acc_acc_nsr_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_perm_sw_MASK 0x00000008 +#define mc2_wbf_acc_perm_sw_ALIGN 0 +#define mc2_wbf_acc_perm_sw_BITS 1 +#define mc2_wbf_acc_perm_sw_SHIFT 3 +#define mc2_wbf_acc_perm_sw_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_perm_sr_MASK 0x00000004 +#define mc2_wbf_acc_perm_sr_ALIGN 0 +#define mc2_wbf_acc_perm_sr_BITS 1 +#define mc2_wbf_acc_perm_sr_SHIFT 2 +#define mc2_wbf_acc_perm_sr_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_perm_nsw_MASK 0x00000002 +#define mc2_wbf_acc_perm_nsw_ALIGN 0 +#define mc2_wbf_acc_perm_nsw_BITS 1 +#define mc2_wbf_acc_perm_nsw_SHIFT 1 +#define mc2_wbf_acc_perm_nsw_DEFAULT 0x00000001 + + +#define mc2_wbf_acc_perm_nsr_MASK 0x00000001 +#define mc2_wbf_acc_perm_nsr_ALIGN 0 +#define mc2_wbf_acc_perm_nsr_BITS 1 +#define mc2_wbf_acc_perm_nsr_SHIFT 0 +#define mc2_wbf_acc_perm_nsr_DEFAULT 0x00000001 + + + + +#define mc2_wbf_ver_reserved0_MASK 0xffffff00 +#define mc2_wbf_ver_reserved0_ALIGN 0 +#define mc2_wbf_ver_reserved0_BITS 24 +#define mc2_wbf_ver_reserved0_SHIFT 8 + + +#define mc2_wbf_ver_version_MASK 0x000000ff +#define mc2_wbf_ver_version_ALIGN 0 +#define mc2_wbf_ver_version_BITS 8 +#define mc2_wbf_ver_version_SHIFT 0 +#define mc2_wbf_ver_version_DEFAULT 0x00000000 + + + + +#define mc2_wbf_pri_cfg_wbf_en_MASK 0x80000000 +#define mc2_wbf_pri_cfg_wbf_en_ALIGN 0 +#define mc2_wbf_pri_cfg_wbf_en_BITS 1 +#define mc2_wbf_pri_cfg_wbf_en_SHIFT 31 +#define mc2_wbf_pri_cfg_wbf_en_DEFAULT 0x00000000 + + +#define mc2_wbf_pri_cfg_reserved0_MASK 0x70000000 +#define mc2_wbf_pri_cfg_reserved0_ALIGN 0 +#define mc2_wbf_pri_cfg_reserved0_BITS 3 +#define mc2_wbf_pri_cfg_reserved0_SHIFT 28 + + +#define mc2_wbf_pri_cfg_prefetch_en_MASK 0x0f000000 +#define mc2_wbf_pri_cfg_prefetch_en_ALIGN 0 +#define mc2_wbf_pri_cfg_prefetch_en_BITS 4 +#define mc2_wbf_pri_cfg_prefetch_en_SHIFT 24 +#define mc2_wbf_pri_cfg_prefetch_en_DEFAULT 0x00000000 + + +#define mc2_wbf_pri_cfg_reserved1_MASK 0x00e00000 +#define mc2_wbf_pri_cfg_reserved1_ALIGN 0 +#define mc2_wbf_pri_cfg_reserved1_BITS 3 +#define mc2_wbf_pri_cfg_reserved1_SHIFT 21 + + +#define mc2_wbf_pri_cfg_wbf_pslc_buf_mode_MASK 0x00100000 +#define mc2_wbf_pri_cfg_wbf_pslc_buf_mode_ALIGN 0 +#define mc2_wbf_pri_cfg_wbf_pslc_buf_mode_BITS 1 +#define mc2_wbf_pri_cfg_wbf_pslc_buf_mode_SHIFT 20 +#define mc2_wbf_pri_cfg_wbf_pslc_buf_mode_DEFAULT 0x00000000 + + +#define mc2_wbf_pri_cfg_high_pri_chn_MASK 0x000f0000 +#define mc2_wbf_pri_cfg_high_pri_chn_ALIGN 0 +#define mc2_wbf_pri_cfg_high_pri_chn_BITS 4 +#define mc2_wbf_pri_cfg_high_pri_chn_SHIFT 16 +#define mc2_wbf_pri_cfg_high_pri_chn_DEFAULT 0x00000003 + + +#define mc2_wbf_pri_cfg_reserved2_MASK 0x0000fff0 +#define mc2_wbf_pri_cfg_reserved2_ALIGN 0 +#define mc2_wbf_pri_cfg_reserved2_BITS 12 +#define mc2_wbf_pri_cfg_reserved2_SHIFT 4 + + +#define mc2_wbf_pri_cfg_high_pri_ifm_MASK 0x0000000f +#define mc2_wbf_pri_cfg_high_pri_ifm_ALIGN 0 +#define mc2_wbf_pri_cfg_high_pri_ifm_BITS 4 +#define mc2_wbf_pri_cfg_high_pri_ifm_SHIFT 0 +#define mc2_wbf_pri_cfg_high_pri_ifm_DEFAULT 0x00000003 + + + + +#define mc2_wbf_sta_bq_full_MASK 0x80000000 +#define mc2_wbf_sta_bq_full_ALIGN 0 +#define mc2_wbf_sta_bq_full_BITS 1 +#define mc2_wbf_sta_bq_full_SHIFT 31 + + +#define mc2_wbf_sta_bq_empty_MASK 0x40000000 +#define mc2_wbf_sta_bq_empty_ALIGN 0 +#define mc2_wbf_sta_bq_empty_BITS 1 +#define mc2_wbf_sta_bq_empty_SHIFT 30 + + +#define mc2_wbf_sta_reserved0_MASK 0x3ffc0000 +#define mc2_wbf_sta_reserved0_ALIGN 0 +#define mc2_wbf_sta_reserved0_BITS 12 +#define mc2_wbf_sta_reserved0_SHIFT 18 + + +#define mc2_wbf_sta_wbf_buf_level_MASK 0x0003ff00 +#define mc2_wbf_sta_wbf_buf_level_ALIGN 0 +#define mc2_wbf_sta_wbf_buf_level_BITS 10 +#define mc2_wbf_sta_wbf_buf_level_SHIFT 8 + + +#define mc2_wbf_sta_bq_count_MASK 0x000000ff +#define mc2_wbf_sta_bq_count_ALIGN 0 +#define mc2_wbf_sta_bq_count_BITS 8 +#define mc2_wbf_sta_bq_count_SHIFT 0 + + + + +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_go_MASK 0x80000000 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_go_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_go_BITS 1 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_go_SHIFT 31 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_go_DEFAULT 0x00000000 + + +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wr_MASK 0x40000000 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wr_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wr_BITS 1 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wr_SHIFT 30 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wr_DEFAULT 0x00000000 + + +#define mc2_wbf_bkdr_bkdr_cmd_reserved0_MASK 0x3ff80000 +#define mc2_wbf_bkdr_bkdr_cmd_reserved0_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_reserved0_BITS 11 +#define mc2_wbf_bkdr_bkdr_cmd_reserved0_SHIFT 19 + + +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_slice_MASK 0x00070000 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_slice_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_slice_BITS 3 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_slice_SHIFT 16 + + +#define mc2_wbf_bkdr_bkdr_cmd_pslc_wbf_buf_sel_MASK 0x0000ff00 +#define mc2_wbf_bkdr_bkdr_cmd_pslc_wbf_buf_sel_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_pslc_wbf_buf_sel_BITS 8 +#define mc2_wbf_bkdr_bkdr_cmd_pslc_wbf_buf_sel_SHIFT 8 +#define mc2_wbf_bkdr_bkdr_cmd_pslc_wbf_buf_sel_DEFAULT 0x00000000 + + +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wbf_id_MASK 0x000000ff +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wbf_id_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wbf_id_BITS 8 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wbf_id_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_cmd_bkdr_wbf_id_DEFAULT 0x00000000 + + + +#define mc2_wbf_bkdr_bkdr_datai_ARRAY_BASE 0x00000e94 +#define mc2_wbf_bkdr_bkdr_datai_ARRAY_START 0 +#define mc2_wbf_bkdr_bkdr_datai_ARRAY_END 7 +#define mc2_wbf_bkdr_bkdr_datai_ARRAY_ELEMENT_SIZE 32 + + + + +#define mc2_wbf_bkdr_bkdr_datai_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_datai_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_datai_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_datai_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_datai_data_DEFAULT 0x00000000 + + + + + +#define mc2_wbf_bkdr_bkdr_data0_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data0_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data0_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data0_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data0_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data1_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data1_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data1_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data1_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data1_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data2_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data2_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data2_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data2_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data2_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data3_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data3_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data3_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data3_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data3_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data4_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data4_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data4_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data4_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data4_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data5_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data5_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data5_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data5_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data5_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data6_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data6_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data6_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data6_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data6_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_bkdr_bkdr_data7_data_MASK 0xffffffff +#define mc2_wbf_bkdr_bkdr_data7_data_ALIGN 0 +#define mc2_wbf_bkdr_bkdr_data7_data_BITS 32 +#define mc2_wbf_bkdr_bkdr_data7_data_SHIFT 0 +#define mc2_wbf_bkdr_bkdr_data7_data_DEFAULT 0x00000000 + + + + +#define mc2_wbf_id_bkdr_id_cmd_id_freeze_MASK 0x80000000 +#define mc2_wbf_id_bkdr_id_cmd_id_freeze_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_id_freeze_BITS 1 +#define mc2_wbf_id_bkdr_id_cmd_id_freeze_SHIFT 31 +#define mc2_wbf_id_bkdr_id_cmd_id_freeze_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_cmd_reserved0_MASK 0x70000000 +#define mc2_wbf_id_bkdr_id_cmd_reserved0_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_reserved0_BITS 3 +#define mc2_wbf_id_bkdr_id_cmd_reserved0_SHIFT 28 + + +#define mc2_wbf_id_bkdr_id_cmd_id_go_MASK 0x0f000000 +#define mc2_wbf_id_bkdr_id_cmd_id_go_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_id_go_BITS 4 +#define mc2_wbf_id_bkdr_id_cmd_id_go_SHIFT 24 +#define mc2_wbf_id_bkdr_id_cmd_id_go_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_cmd_reserved1_MASK 0x00fe0000 +#define mc2_wbf_id_bkdr_id_cmd_reserved1_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_reserved1_BITS 7 +#define mc2_wbf_id_bkdr_id_cmd_reserved1_SHIFT 17 + + +#define mc2_wbf_id_bkdr_id_cmd_id_wr_MASK 0x00010000 +#define mc2_wbf_id_bkdr_id_cmd_id_wr_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_id_wr_BITS 1 +#define mc2_wbf_id_bkdr_id_cmd_id_wr_SHIFT 16 +#define mc2_wbf_id_bkdr_id_cmd_id_wr_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_cmd_reserved2_MASK 0x0000ff00 +#define mc2_wbf_id_bkdr_id_cmd_reserved2_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_reserved2_BITS 8 +#define mc2_wbf_id_bkdr_id_cmd_reserved2_SHIFT 8 + + +#define mc2_wbf_id_bkdr_id_cmd_id_addr_MASK 0x000000ff +#define mc2_wbf_id_bkdr_id_cmd_id_addr_ALIGN 0 +#define mc2_wbf_id_bkdr_id_cmd_id_addr_BITS 8 +#define mc2_wbf_id_bkdr_id_cmd_id_addr_SHIFT 0 +#define mc2_wbf_id_bkdr_id_cmd_id_addr_DEFAULT 0x00000000 + + + + +#define mc2_wbf_id_bkdr_id_data_wbf_id_wr_ptr_MASK 0xff000000 +#define mc2_wbf_id_bkdr_id_data_wbf_id_wr_ptr_ALIGN 0 +#define mc2_wbf_id_bkdr_id_data_wbf_id_wr_ptr_BITS 8 +#define mc2_wbf_id_bkdr_id_data_wbf_id_wr_ptr_SHIFT 24 +#define mc2_wbf_id_bkdr_id_data_wbf_id_wr_ptr_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_data_wbf_id_rd_ptr_MASK 0x00ff0000 +#define mc2_wbf_id_bkdr_id_data_wbf_id_rd_ptr_ALIGN 0 +#define mc2_wbf_id_bkdr_id_data_wbf_id_rd_ptr_BITS 8 +#define mc2_wbf_id_bkdr_id_data_wbf_id_rd_ptr_SHIFT 16 +#define mc2_wbf_id_bkdr_id_data_wbf_id_rd_ptr_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_data_bq_count_wr_MASK 0x0000ff00 +#define mc2_wbf_id_bkdr_id_data_bq_count_wr_ALIGN 0 +#define mc2_wbf_id_bkdr_id_data_bq_count_wr_BITS 8 +#define mc2_wbf_id_bkdr_id_data_bq_count_wr_SHIFT 8 +#define mc2_wbf_id_bkdr_id_data_bq_count_wr_DEFAULT 0x00000000 + + +#define mc2_wbf_id_bkdr_id_data_wbf_id_MASK 0x000000ff +#define mc2_wbf_id_bkdr_id_data_wbf_id_ALIGN 0 +#define mc2_wbf_id_bkdr_id_data_wbf_id_BITS 8 +#define mc2_wbf_id_bkdr_id_data_wbf_id_SHIFT 0 +#define mc2_wbf_id_bkdr_id_data_wbf_id_DEFAULT 0x00000000 + + +#endif diff --git a/arch/arm/include/asm/arch-bcm63146/misc.h b/arch/arm/include/asm/arch-bcm63146/misc.h new file mode 100644 index 0000000000..1d101c732e --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63146/misc.h @@ -0,0 +1,116 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63146_MISC_H +#define _63146_MISC_H + +#define MISC_BASE 0xff802600 + +/* + * Misc Register Set Definitions. + */ +typedef struct Misc { + uint32_t miscStrapBus; /* 0x00 */ + + /* boot select bits 3-5 */ +#define BOOT_SEL_STRAP_NAND_2K_PAGE 0x00 +#define BOOT_SEL_STRAP_NAND_4K_PAGE 0x08 +#define BOOT_SEL_STRAP_NAND_8K_PAGE 0x10 +#define BOOT_SEL_STRAP_NAND_512B_PAGE 0x18 +#define BOOT_SEL_STRAP_SPI_NOR 0x38 +#define BOOT_SEL_STRAP_EMMC 0x30 +#define BOOT_SEL_STRAP_SPI_NAND 0x28 + +#define BOOT_SEL_STRAP_BOOT_SEL_MASK (0x38) +#define BOOT_SEL_STRAP_PAGE_SIZE_MASK (0x7) + +#define MISC_STRAP_BUS_BOOT_SEL_SHIFT 0 +#define MISC_STRAP_BUS_BOOT_SEL_MASK (0x38 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SPI_NOR (0x38 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_EMMC (0x30 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SPI_NAND (0x28 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SEL_NAND_MASK (0x20 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND (0x00 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SEL_PAGE_MASK (0x18 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_2K_PAGE (0x00 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_4K_PAGE (0x08 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_8K_PAGE (0x10 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_512_PAGE (0x18 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SEL_ECC_MASK (0x7 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_DISABLE (0x0 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_1_BIT (0x1 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_4_BIT (0x2 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_8_BIT (0x3 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_12_BIT (0x4 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_24_BIT (0x5 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_40_BIT (0x6 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_60_BIT (0x7 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_PCIE0_RC_MODE (0x1 << 6) +#define MISC_STRAP_BUS_LS_SPI_SLAVE_DISABLE (0x1 << 7) +#define MISC_STRAP_BUS_B53_BOOT_N (0x1 << 8) +/* When ROM BOOT OTP bits are 2b'11, always boot rom secure boot, this strap bit is don't care. + When ROM BOOT OTP bits are are not 2b'11, this trap bit determine the following: + 1: boot rom non-secure boot + 0: XIP boot +*/ +#define MISC_STRAP_BUS_BOOTROM_BOOT (0x1 << 12) +#define MISC_STRAP_BUS_SW_RESERVE_MASK (0x3 << 14) +#define MISC_STRAP_BUS_CPU_SLOW_FREQ_SHIFT 16 +#define MISC_STRAP_BUS_CPU_SLOW_FREQ (0x1 << MISC_STRAP_BUS_CPU_SLOW_FREQ_SHIFT) + uint32_t miscStrapOverride; /* 0x04 */ + uint32_t miscMaskUBUSErr; /* 0x08 */ + uint32_t miscPeriphCtrl; /* 0x0c */ + uint32_t miscSpiMasterCtrl; /* 0x10 */ + uint32_t reserved0; /* 0x14 */ + uint32_t miscPeriphMiscCtrl; /* 0x18 */ + uint32_t miscPeriphMiscStat; /* 0x1c */ + uint32_t miscSoftResetB; /* 0x20 */ + uint32_t miscSpare0; /* 0x24 */ + uint32_t miscSWdebugNW[2]; /* 0x28 */ + uint32_t miscWDResetCtrl; /* 0x30 */ +} Misc; + +#define MISC ((volatile Misc * const) MISC_BASE) + + +/* + * Gpio Controller + */ +typedef struct GpioControl { + uint32_t GPIODir[8]; /* 0x00-0x1f */ + uint32_t GPIOio[8]; /* 0x20-0x3f */ + uint32_t PadCtrl; /* 0x40 */ + uint32_t SpiSlaveCfg; /* 0x44 */ + uint32_t TestControl; /* 0x48 */ + uint32_t TestPortBlockEnMSB; /* 0x4c */ + uint32_t TestPortBlockEnLSB; /* 0x50 */ + uint32_t TestPortBlockDataMSB; /* 0x54 */ + uint32_t TestPortBlockDataLSB; /* 0x58 */ + uint32_t TestPortCmd; /* 0x5c */ + uint32_t DiagReadBack; /* 0x60 */ + uint32_t DiagReadBackHi; /* 0x64 */ + uint32_t GeneralPurpose; /* 0x68 */ + uint32_t spare[3]; +} GpioControl; + +#define GPIO_BASE 0xff800500 +#define GPIO ((volatile GpioControl * const) GPIO_BASE) +#define PINCTRL_BASE (GPIO_BASE + 0x54) + +// PERF +typedef struct PerfControl { /* GenInt */ + uint32_t RevID; /* (00) word 0 */ +#define CHIP_ID_SHIFT 12 +#define CHIP_ID_MASK (0xfffff << CHIP_ID_SHIFT) +#define REV_ID_MASK 0xfff +} PerfControl; + +#define PERF_BASE 0xff800000 +#define PERF ((volatile PerfControl * const) PERF_BASE) + +#define BCM_WDT_SOFT_RESET (PERF_BASE+0x48c) +#define BCM_LOWLEVEL_RESET() { *((volatile uint32_t *)BCM_WDT_SOFT_RESET) = 1; } + +#endif diff --git a/arch/arm/include/asm/arch-bcm63146/otp.h b/arch/arm/include/asm/arch-bcm63146/otp.h new file mode 100644 index 0000000000..7365c388e2 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63146/otp.h @@ -0,0 +1,68 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ + +#ifndef _63146_OTP_H +#define _63146_OTP_H + + +#define JTAG_OTP_BASE 0xff802800 + +/* row 9 */ +#define OTP_CPU_CLOCK_FREQ_ROW 9 +#define OTP_CPU_CLOCK_FREQ_SHIFT 0 +#define OTP_CPU_CLOCK_FREQ_MASK 0x7 + +/* row 8 */ +#define OTP_CPU_CORE_CFG_ROW 8 +#define OTP_CPU_CORE_CFG_SHIFT 28 +#define OTP_CPU_CORE_CFG_MASK 0x1 // 0=dual cores, 1=single core + +/* row 14 */ +#define OTP_JTAG_CUST_LOCK_ROW 0xff +#define OTP_JTAG_CUST_LOCK_MASK 0x1 +#define OTP_JTAG_CUST_LOCK_REG_SHIFT 25 + +/* row 13 */ +#define OTP_BRCM_PRODUCTION_MODE_ROW 13 +#define OTP_BRCM_PRODUCTION_MODE_SHIFT 0 +#define OTP_BRCM_PRODUCTION_MODE_MASK 0x1 + +/* row 13 */ +#define OTP_BRCM_BTRM_BOOT_ENABLE_ROW 13 +#define OTP_BRCM_BTRM_BOOT_ENABLE_SHIFT 2 +#define OTP_BRCM_BTRM_BOOT_ENABLE_MASK 1 + +/* row 14 */ +#define OTP_CUST_BTRM_BOOT_ENABLE_ROW 14 +#define OTP_CUST_BTRM_BOOT_ENABLE_SHIFT 28 +#define OTP_CUST_BTRM_BOOT_ENABLE_MASK 0x1 + +/* row 14 */ +#define OTP_CUST_BTRM_UART_DISABLE_ROW 14 +#define OTP_CUST_BTRM_UART_DISABLE_SHIFT 0 +#define OTP_CUST_BTRM_UART_DISABLE_MASK 1 + +/* row 14 */ +#define OTP_CUST_BTRM_MSG_DISABLE_ROW 14 +#define OTP_CUST_BTRM_MSG_DISABLE_SHIFT 27 +#define OTP_CUST_BTRM_MSG_DISABLE_MASK 1 +/* row 29 */ +#define OTP_CUST_MFG_MRKTID_ROW 29 +#define OTP_CUST_MFG_MRKTID_SHIFT 0 +#define OTP_CUST_MFG_MRKTID_MASK 0xffff + +/* A row initializer that maps actual row number with mask and shift to a feature name; + * this allows to use features vs. rows for common functionality, + * such as secure boot handling frequency, chipid and so on + * prevent ifdef dependencies when used outside of arch directories for common among SoCs logic + * */ +#define DEFINE_OTP_MAP_ROW_INITLR(__VV__) \ + static otp_hw_cmn_row_t __VV__[ ] = { \ + {OTP_MAP_BRCM_BTRM_BOOT_ENABLE, OTP_BRCM_BTRM_BOOT_ENABLE_ROW, OTP_BRCM_BTRM_BOOT_ENABLE_MASK, OTP_BRCM_BTRM_BOOT_ENABLE_SHIFT, 1},\ + {OTP_MAP_CUST_BTRM_BOOT_ENABLE, OTP_CUST_BTRM_BOOT_ENABLE_ROW, OTP_CUST_BTRM_BOOT_ENABLE_MASK, OTP_CUST_BTRM_BOOT_ENABLE_SHIFT, 1},\ + {OTP_MAP_CUST_MFG_MRKTID, OTP_CUST_MFG_MRKTID_ROW, OTP_CUST_MFG_MRKTID_MASK, OTP_CUST_MFG_MRKTID_SHIFT, 1}, \ + {OTP_MAP_BRCM_PRODUCTION_MODE, OTP_BRCM_PRODUCTION_MODE_ROW, OTP_BRCM_PRODUCTION_MODE_MASK, OTP_BRCM_PRODUCTION_MODE_SHIFT, 1}, \ + } +#endif diff --git a/arch/arm/include/asm/arch-bcm63146/pmc.h b/arch/arm/include/asm/arch-bcm63146/pmc.h new file mode 100644 index 0000000000..46eeedc124 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63146/pmc.h @@ -0,0 +1,342 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63146_PMC_H +#define _63146_PMC_H + +#define PMC_BASE 0xFFB00000 +#define PMC ((volatile Pmc * const)PMC_BASE) + +#define PMB_BASE 0xFFB20100 +#define PMB ((volatile PMBMaster * const)PMB_BASE) + +#define PROC_MON_BASE 0xFFB00000 +#define PROCMON ((volatile Procmon * const) PROC_MON_BASE) + +typedef struct PmcCtrlReg { + uint32_t gpTmr0Ctl; /* 0x018 */ + uint32_t gpTmr0Cnt; /* 0x01c */ + uint32_t gpTmr1Ctl; /* 0x020 */ + uint32_t gpTmr1Cnt; /* 0x024 */ + uint32_t hostMboxIn; /* 0x028 */ + uint32_t hostMboxOut; /* 0x02c */ + uint32_t reserved[4]; /* 0x030 */ + uint32_t dmaCtrl; /* 0x040 */ + uint32_t dmaStatus; /* 0x044 */ + uint32_t dma0_3FifoStatus; /* 0x048 */ + uint32_t reserved1[4]; /* 0x04c */ + uint32_t diagControl; /* 0x05c */ + uint32_t diagHigh; /* 0x060 */ + uint32_t diagLow; /* 0x064 */ + uint32_t reserved8; /* 0x068 */ + uint32_t addr1WndwMask; /* 0x06c */ + uint32_t addr1WndwBaseIn; /* 0x070 */ + uint32_t addr1WndwBaseOut; /* 0x074 */ + uint32_t addr2WndwMask; /* 0x078 */ + uint32_t addr2WndwBaseIn; /* 0x07c */ + uint32_t addr2WndwBaseOut; /* 0x080 */ + uint32_t scratch; /* 0x084 */ + uint32_t reserved9; /* 0x088 */ + uint32_t softResets; /* 0x08c */ + uint32_t reserved2; /* 0x090 */ + uint32_t m4keCoreStatus; /* 0x094 */ + uint32_t reserved3; /* 0x098 */ + uint32_t ubSlaveTimeout; /* 0x09c */ + uint32_t diagEn; /* 0x0a0 */ + uint32_t devTimeout; /* 0x0a4 */ + uint32_t ubusErrorOutMask; /* 0x0a8 */ + uint32_t diagCaptStopMask; /* 0x0ac */ + uint32_t revId; /* 0x0b0 */ + uint32_t reserved4[4]; /* 0x0b4 */ + uint32_t diagCtrl; /* 0x0c4 */ + uint32_t diagStat; /* 0x0c8 */ + uint32_t diagMask; /* 0x0cc */ + uint32_t diagRslt; /* 0x0d0 */ + uint32_t diagCmp; /* 0x0d4 */ + uint32_t diagCapt; /* 0x0d8 */ + uint32_t diagCnt; /* 0x0dc */ + uint32_t diagEdgeCnt; /* 0x0e0 */ + uint32_t reserved5[4]; /* 0x0e4 */ + uint32_t smisc_bus_config; /* 0x0f4 */ + uint32_t lfsr; /* 0x0f8 */ + uint32_t dqm_pac_lock; /* 0x0fc */ + uint32_t l1_irq_4ke_mask; /* 0x100 */ + uint32_t l1_irq_4ke_status; /* 0x104 */ + uint32_t l1_irq_mips_mask; /* 0x108 */ + uint32_t l1_irq_mips_status; /* 0x10c */ + uint32_t l1_irq_mips1_mask; /* 0x110 */ + uint32_t reserved6[3]; /* 0x114 */ + uint32_t l2_irq_gp_mask; /* 0x120 */ + uint32_t l2_irq_gp_status; /* 0x124 */ + uint32_t l2_irq_gp_set; /* 0x128 */ + uint32_t reserved7; /* 0x12c */ + uint32_t gp_in_irq_mask; /* 0x130 */ + uint32_t gp_in_irq_status; /* 0x134 */ + uint32_t gp_in_irq_set; /* 0x138 */ + uint32_t gp_in_irq_sense; /* 0x13c */ + uint32_t gp_in; /* 0x140 */ + uint32_t gp_out; /* 0x144 */ +} PmcCtrlReg; + +typedef struct PmcDmaReg { + /* 0x00 */ + uint32_t src; + uint32_t dest; + uint32_t cmdList; + uint32_t lenCtl; + /* 0x10 */ + uint32_t rsltSrc; + uint32_t rsltDest; + uint32_t rsltHcs; + uint32_t rsltLenStat; +} PmcDmaReg; + +typedef struct PmcTokenReg { + /* 0x00 */ + uint32_t bufSize; + uint32_t bufBase; + uint32_t idx2ptrIdx; + uint32_t idx2ptrPtr; + /* 0x10 */ + uint32_t unused[2]; + uint32_t bufSize2; +} PmcTokenReg; + +typedef struct PmcPerfPowReg { + uint32_t freqScalarCtrl; /* 0x3c */ + uint32_t freqScalarMask; /* 0x40 */ +} PmcPerfPowReg; + +typedef struct PmcDQMPac { + uint32_t dqmPac[32]; +} PmcDQMPac; + +typedef struct PmcDQMReg { + uint32_t cfg; /* 0x1c00 */ + uint32_t _4keLowWtmkIrqMask; /* 0x1c04 */ + uint32_t mipsLowWtmkIrqMask; /* 0x1c08 */ + uint32_t lowWtmkIrqMask; /* 0x1c0c */ + uint32_t _4keNotEmptyIrqMask; /* 0x1c10 */ + uint32_t mipsNotEmptyIrqMask; /* 0x1c14 */ + uint32_t notEmptyIrqSts; /* 0x1c18 */ + uint32_t queueRst; /* 0x1c1c */ + uint32_t notEmptySts; /* 0x1c20 */ + uint32_t nextAvailMask; /* 0x1c24 */ + uint32_t nextAvailQueue; /* 0x1c28 */ + uint32_t mips1LowWtmkIrqMask; /* 0x1c2c */ + uint32_t mips1NotEmptyIrqMask; /* 0x1c30 */ + uint32_t autoSrcPidInsert; /* 0x1c34 */ + uint32_t timerIrqStatus; /* 0x1c38 */ + uint32_t timerStatus; /* 0x1c3c */ + uint32_t _4keTimerIrqMask; /* 0x1c40 */ + uint32_t mipsTimerIrqMask; /* 0x1c44 */ + uint32_t mips1TimerIrqMask; /* 0x1c48 */ +} PmcDQMReg; + +typedef struct PmcCntReg { + uint32_t cntr[10]; + uint32_t unused[6]; /* 0x28-0x3f */ + uint32_t cntrIrqMask; + uint32_t cntrIrqSts; +} PmcCntReg; + +typedef struct PmcDqmQCtrlReg { + uint32_t size; + uint32_t cfga; + uint32_t cfgb; + uint32_t cfgc; +} PmcDqmQCtrlReg; + +typedef struct PmcDqmQDataReg { + uint32_t word[4]; +} PmcDqmQDataReg; + +typedef struct PmcDqmQMibReg { + uint32_t qNumFull[32]; + uint32_t qNumEmpty[32]; + uint32_t qNumPushed[32]; +} PmcDqmQMibReg; + +typedef struct SSBMaster { + uint32_t ssbmControl; /* 0x0060 */ + uint32_t ssbmWrData; /* 0x0064 */ + uint32_t ssbmRdData; /* 0x0068 */ + uint32_t ssbmStatus; /* 0x006c */ +} SSBMaster; + +typedef struct PmmReg { + uint32_t memPowerCtrl; /* 0x0000 */ + uint32_t regSecurityConfig; /* 0x0004 */ +} PmmReg; + +typedef struct keyholeReg { + uint32_t ctrlSts; + uint32_t wrData; + uint32_t mutex; + uint32_t rdData; +} keyholeReg; + +typedef struct PmbBus { + uint32_t config; /* 0x0100 */ + uint32_t arbiter; /* 0x0104 */ + uint32_t timeout; /* 0x0108 */ + uint32_t unused1; /* 0x010c */ + keyholeReg keyhole[4]; /* 0x0110-0x014f */ + uint32_t unused2[44]; /* 0x0150-0x01ff */ + uint32_t map[64]; /* 0x0200-0x02ff */ +}PmbBus; + +typedef struct CoreCtrl { + uint32_t coreEnable; /* 0x0400 */ + uint32_t autoresetControl; /* 0x0404 */ + uint32_t coreIdle; /* 0x0408 */ + uint32_t coreResetCause; /* 0x040c */ + uint32_t memPwrDownCtrl0; /* 0x0410 */ + uint32_t memPwrDownSts0; /* 0x0414 */ + uint32_t memPwrDownCtrl1; /* 0x0418 */ + uint32_t memPwrDownSts1; /* 0x041c */ + uint32_t sysFlg0Status; /* 0x0420 */ + uint32_t sysFlg0Set; /* 0x0424 */ + uint32_t sysFlg0Clear; /* 0x0428 */ + uint32_t unused1; /* 0x042c */ + uint32_t usrFlg0Status; /* 0x0430 */ + uint32_t usrFlg0Set; /* 0x0434 */ + uint32_t usrFlg0Clear; /* 0x0438 */ + uint32_t unused2; /* 0x043c */ + uint32_t subsystemRev; /* 0x0440 */ + uint32_t resetVector; /* 0x0444 */ +} CoreCtrl; + +typedef struct CoreState { + uint32_t sysMbx[8]; /* 0x0480 */ + uint32_t usrMbx[8]; /* 0x04a0 */ + uint32_t sysMtx[4]; /* 0x04c0 */ + uint32_t usrMtx[8]; /* 0x04d0 */ +} CoreState; + +typedef struct CoreIntr { + uint32_t irqStatus; /* 0x0500 */ + uint32_t irqSet; /* 0x0504 */ + uint32_t irqClear; /* 0x0508 */ + uint32_t unused1; /* 0x050c */ + uint32_t srqStatus; /* 0x0510 */ + uint32_t srqSet; /* 0x0514 */ + uint32_t srqClear; /* 0x0518 */ + uint32_t unused2; /* 0x051c */ + uint32_t drqStatus; /* 0x0520 */ + uint32_t drqSet; /* 0x0524 */ + uint32_t drqClear; /* 0x0528 */ + uint32_t unused3; /* 0x052c */ + uint32_t frqStatus; /* 0x0530 */ + uint32_t frqSet; /* 0x0534 */ + uint32_t frqClear; /* 0x0538 */ + uint32_t unused4; /* 0x053c */ + uint32_t hostIrqLatched; /* 0x0540 */ + uint32_t hostIrqSet; /* 0x0544 */ + uint32_t hostIrqClear; /* 0x0548 */ + uint32_t hostIrqEnable; /* 0x054c */ + uint32_t obusFaultStatus; /* 0x0550 */ + uint32_t obusFaultClear; /* 0x0554 */ + uint32_t obusFaultAddr; /* 0x0558 */ +} CoreIntr; + +typedef struct CoreProfile { + uint32_t mutex; /* 0x0580 */ + uint32_t lastConfPcLo; /* 0x0584 */ + uint32_t lastConfPcHi; /* 0x0588 */ + uint32_t lastPcLo; /* 0x058c */ + uint32_t lastPcHi; /* 0x0590 */ + uint32_t braTargetPc0Lo; /* 0x0594 */ + uint32_t braTargetPc0Hi; /* 0x0598 */ + uint32_t braTargetPc1Lo; /* 0x059c */ + uint32_t braTargetPc1Hi; /* 0x05a0 */ + uint32_t braTargetPc2Lo; /* 0x05a4 */ + uint32_t braTargetPc2Hi; /* 0x05a8 */ + uint32_t braTargetPc3Lo; /* 0x05ac */ + uint32_t braTargetPc3Hi; /* 0x05b0 */ + uint32_t unused[3]; /* 0x05b4-0x05bf */ + uint32_t profSampleW[4]; /* 0x05c0 */ +} CoreProfile; + +typedef struct MaestroMisc { + CoreCtrl coreCtrl; /* 0x0400 */ + uint32_t unused1[14]; /* 0x0448-0x047f */ + CoreState coreState; /* 0x0480 */ + uint32_t unused2[4]; /* 0x04f0-0x04ff */ + CoreIntr interrupt; /* 0x0500 */ + uint32_t unused3[9]; /* 0x055c-0x057f */ + CoreProfile profile; /* 0x0580 */ +} MaestroMisc; + +typedef struct Pmc { + uint32_t unused0[1030]; + PmcCtrlReg ctrl; /* 0x1018 */ + uint32_t unused1[622]; /* 0x1148-0x1cff */ + PmcDQMPac dqmPac; /* 0x1b00 */ + uint32_t unused5[32]; /* 0x1b80-0x1bff */ + PmcDQMReg dqm; /* 0x1c00 */ + uint32_t unused6[749]; /* 0x1c4c-0x27ff */ + uint32_t qStatus[32]; /* 0x2800 */ + uint32_t unused7[480]; /* 0x2880-0x2fff */ + PmcDqmQMibReg qMib; /* 0x3000 */ + uint32_t unused8[928]; /* 0x3180-0x3fff */ + PmcDqmQCtrlReg dqmQCtrl[8]; /* 0x4000 */ + uint32_t unused9[992]; /* 0x4080-0x4fff */ + PmcDqmQDataReg dqmQData[8]; /* 0x5000 */ +} Pmc; + +typedef struct Procmon { + uint32_t unused00[256]; + MaestroMisc maestroReg; /* 0x00400 */ + uint32_t unused10[32396]; /* 0x005d0-0x1ffff */ + PmmReg pmm; /* 0x20000 */ + uint32_t unused11[22]; /* 0x20008-0x2005f */ + SSBMaster ssbMasterCtrl; /* 0x20060 */ + uint32_t unused12[36]; /* 0x20070-0x200ff */ + PmbBus pmb; /* 0x20100 */ + uint32_t unused13[32576]; /* 0x20300-0x3ffff */ + uint32_t qsm[128]; /* 0x40000-0x401ff */ + uint32_t unused14[65408]; /* 0x40200-0x7ffff */ + uint32_t dtcm[1024]; /* 0x80000-0x80fff */ + uint32_t unused15[64512]; /* 0x81000-0xbffff */ + uint32_t itcm[4096]; /* 0xc0000-0xc3fff */ +} Procmon; + + +typedef struct PMSSBMasterControl { + uint32_t control; + uint32_t wr_data; + uint32_t rd_data; +} PMSSBMasterControl; + +typedef struct +{ + uint32_t control; +#define PMC_PMBM_START (1 << 31) +#define PMC_PMBM_TIMEOUT (1 << 30) +#define PMC_PMBM_SLAVE_ERR (1 << 29) +#define PMC_PMBM_BUSY (1 << 28) +#define PMC_PMBM_BUS_SHIFT (20) +#define PMC_PMBM_Read (0 << 24) +#define PMC_PMBM_Write (1 << 24) + uint32_t wr_data; + uint32_t mutex; + uint32_t rd_data; +} PMB_keyhole_reg; + +typedef struct PMBMaster { + uint32_t config; +#define PMB_NUM_REGS_SHIFT (20) +#define PMB_NUM_REGS_MASK (0x3ff) + uint32_t arbitger; + uint32_t timeout; + uint32_t reserved; + PMB_keyhole_reg keyhole[4]; + uint32_t reserved1[44]; + uint32_t map[64]; +} PMBMaster; + + +#endif diff --git a/arch/arm/include/asm/arch-bcm63146/pmc_addr.h b/arch/arm/include/asm/arch-bcm63146/pmc_addr.h new file mode 100644 index 0000000000..7b32c731ea --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63146/pmc_addr.h @@ -0,0 +1,104 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63146_PMC_ADDR_H +#define _63146_PMC_ADDR_H + +/* FIXME! only fill those that I found from RTL */ +#define PMB_BUS_MAX 2 +#define PMB_BUS_ID_SHIFT 12 + +#define PMB_BUS_PCIE0 0 +#define PMB_ADDR_PCIE0 (0 | PMB_BUS_PCIE0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE0 1 + +#define PMB_BUS_VDSL3_CORE 0 +#define PMB_ADDR_VDSL3_CORE (1 | PMB_BUS_VDSL3_CORE << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_VDSL3_CORE 1 + +#define PMB_BUS_EGPHY 0 +#define PMB_ADDR_EGPHY (2 | PMB_BUS_EGPHY << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_EGPHY 1 // not shown in spreadsheet + +#define PMB_BUS_XRDP 0 +#define PMB_ADDR_XRDP (3 | PMB_BUS_XRDP << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP 3 + +#define PMB_BUS_USB30_2X 0 +#define PMB_ADDR_USB30_2X (4 | PMB_BUS_USB30_2X << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_USB30_2X 4 + +#define PMB_BUS_MEMC 0 +#define PMB_ADDR_MEMC (5 | PMB_BUS_MEMC << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MEMC 1 + +#define PMB_BUS_PVTMON 0 +#define PMB_ADDR_PVTMON (6 | PMB_BUS_PVTMON << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PVTMON 0 + +#define PMB_BUS_PCIE1 0 +#define PMB_ADDR_PCIE1 (7 | PMB_BUS_PCIE1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE1 1 + +#define PMB_BUS_PCIE2 0 +#define PMB_ADDR_PCIE2 (8 | PMB_BUS_PCIE2 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE2 1 + +#define PMB_BUS_PERIPH 1 +#define PMB_ADDR_PERIPH (9 | PMB_BUS_PERIPH << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PERIPH 4 + +#define PMB_BUS_VDSL3_PMD 1 +#define PMB_ADDR_VDSL3_PMD (10 | PMB_BUS_VDSL3_PMD << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_VDSL3_PMD 1 + +//--------- DGASP related bits/Offsets ------------------------ +#define BPCM_PHY_CNTL_OVERRIDE 0x00000002 +#define BPCM_PHY_CNTL_AFE_PWRDWN 0x00000001 +#define PMB_ADDR_VDSL_DGASP_PMD PMB_ADDR_VDSL3_PMD +#define BPCM_VDSL_PHY_CTL_REG vdsl_afe_config1 // Alias for register containing DGASP override inside the VDSL PMD +#define BPCM_VDSL_AFE_CTL_REG vdsl_afe_config0 // Alias for register containing DGASP configuration inside the VDSL PMD + +#define PMB_BUS_AFEPLL 1 +#define PMB_ADDR_AFEPLL (11 | PMB_BUS_AFEPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_AFEPLL 1 + +#define AFEPLL_PMB_BUS_VDSL3_CORE PMB_BUS_AFEPLL +#define AFEPLL_PMB_ADDR_VDSL3_CORE PMB_ADDR_AFEPLL +#define AFEPLL_PMB_ZONES_VDSL3_CORE PMB_ZONES_AFEPLL + +#define PMB_BUS_CHIP_CLKRST 1 +#define PMB_ADDR_CHIP_CLKRST (12 | PMB_BUS_CHIP_CLKRST << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_CHIP_CLKRST 0 + +#define PMB_BUS_RDPPLL 1 +#define PMB_ADDR_RDPPLL (13 | PMB_BUS_RDPPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_RDPPLL 0 + +#define PMB_BUS_BIU_PLL 1 +#define PMB_ADDR_BIU_PLL (32 | PMB_BUS_BIU_PLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_PLL 0 + +#define PMB_BUS_BIU_BPCM 1 +#define PMB_ADDR_BIU_BPCM (33 | PMB_BUS_BIU_BPCM << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_BPCM 1 + +#define PMB_BUS_ORION_CPU0 1 +#define PMB_ADDR_ORION_CPU0 (34 | PMB_BUS_ORION_CPU0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU0 1 + +#define PMB_BUS_ORION_CPU1 1 +#define PMB_ADDR_ORION_CPU1 (35 | PMB_BUS_ORION_CPU1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU1 1 + +#define PMB_BUS_ORION_NONCPU 1 +#define PMB_ADDR_ORION_NONCPU (38 | PMB_BUS_ORION_NONCPU << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_NONCPU 1 + +#define PMB_BUS_ORION_ARS 1 +#define PMB_ADDR_ORION_ARS (39 | PMB_BUS_ORION_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_ARS 0 + +#endif diff --git a/arch/arm/include/asm/arch-bcm63146/pmc_drv_cfg.h b/arch/arm/include/asm/arch-bcm63146/pmc_drv_cfg.h new file mode 100644 index 0000000000..c38e5eb307 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63146/pmc_drv_cfg.h @@ -0,0 +1,40 @@ +/* +<:copyright-BRCM:2019:DUAL/GPL:standard + + Copyright (c) 2019 Broadcom + All Rights Reserved + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License, version 2, as published by +the Free Software Foundation (the "GPL"). + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + + +A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by +writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. + +:> +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_3_X +#define PMC_IMPL_3_2 + +#define PMC_LOG_IN_DTCM 1 +#define PMC_FW_IN_ITCM 1 +#define PMC_CPUTEMP_SUPPORT 1 +#define PMC_RAM_BOOT 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm63146/rng.h b/arch/arm/include/asm/arch-bcm63146/rng.h new file mode 100644 index 0000000000..d17142f69f --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63146/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63146_RNG_H +#define _63146_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + BPCM_SGPHY_CNTL sgphy_cntl; // offset = 0x38, actual offset = 14 + BPCM_SGPHY_STATUS sgphy_status; // offset = 0x3c, actual offset = 15 + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + uint32_t rvrsd[2]; + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_VDSL_REGS; // total offset space = 4096 + +#define BPCMVDSLOffset(reg) offsetof(BPCM_VDSL_REGS,reg) +#define BPCMVDSLRegOffset(reg) (BPCMVDSLOffset(reg) >> 2) + +// ARM BPCM addresses as used by 63148 and possibly others (28nm) +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved; // offset = 0x2c, actual offset = 11 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + uint32_t reserved1[3]; // offset = 0x34, actual offset = 13..15 + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + uint32_t decndiv; // offset = 0x44, actual offset = 0x11 + uint32_t decpdiv; // offset = 0x48, actual offset = 0x12 + uint32_t decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved1; // offset = 0x2c, actual offset = 11 + uint32_t clkrst_cfg; // offset = 0x30, actual offset = 12 + uint32_t clkrst_control; // offset = 0x34, actual offset = 13 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm63148/boot0.h b/arch/arm/include/asm/arch-bcm63148/boot0.h new file mode 100644 index 0000000000..8ce5f5a0f2 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63148/boot0.h @@ -0,0 +1,78 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63148_BOOT0_H +#define _63148_BOOT0_H + +#include +#include +#include + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) +_bcm_boot: + mov r0,#0 + mcr p15,0,r0,c8,c7,0 /* Invalidate TLB */ + mcr p15,0,r0,c7,c5,0 /* Invalidate icache */ + + /* Initialize system control register enable i-cache */ + mrc p15,0,r0,c1,c0,0 + bic r0,r0,#(CR_C|CR_A|CR_M) /* Clear C, A, M bits */ + orr r0,r0,#CR_I /* Set I bit: enable instruction cache */ + mcr p15,0,r0,c1,c0,0 + + isb + +#include + + /* relocate the code, init'ed data from flash to lmem */ +relo_image: + adr r1, _bcm_boot /* r1 source address in flash */ + ldr r0, =__image_copy_start /* r0 dest address in sram */ + subs r4, r1, r0 /* r4 relocation offset */ + beq relo_dtb /* skip relocation */ + ldr r2, =__image_copy_end /* r2 dest ending address in flash */ + +relo_loop: + ldmia r1!, {r10-r11} + stmia r0!, {r10-r11} + cmp r0, r2 + blo relo_loop + + /* if we attached dtb after bss, need to relocate dtb as well */ +relo_dtb: +#if defined(CONFIG_SPL_OF_CONTROL) && defined(CONFIG_OF_SEPARATE) + +#ifdef CONFIG_OF_SPL_SEPARATE_BSS + ldr r3, =__image_binary_end +#else + ldr r3, =__bss_end +#endif + add r1, r3, r4 /* r1 source address in flash */ + /* check ftd size ... */ + /* struct fdt_header { + fdt32_t magic; + fdt32_t totalsize; */ + ldr r0, [r1, #4] /* r0 total size */ + rev r0, r0 /* byte order from fdt to little endian */ + lsr r0, r0, #2 /* in the order of 4 bytes aligned */ + add r0, r0, #1 + lsl r0, r0, #2 + add r2, r1, r0 /* r2 dest ending address in flash */ + mov r0, r3 /* r0 dest address in sram */ + +dtb_loop: + ldmia r1!, {r10-r11} + stmia r0!, {r10-r11} + cmp r1, r2 + blo dtb_loop +#endif + ldr r0, =reset + bx r0 + +#endif + .align(5), 0x0 +_start: + ARM_VECTORS +#endif diff --git a/arch/arm/include/asm/arch-bcm63148/brom.h b/arch/arm/include/asm/arch-bcm63148/brom.h new file mode 100644 index 0000000000..63c8c2d896 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63148/brom.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63148_BROM_H +#define _63148_BROM_H +#define BROM_SEC_BASE 0xfffeb614 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromSec_ { +#define BROM_GEN_JTAG_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_JTAG_SPI_SLV_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; +} BromSec; + +#define BROM_GEN ((volatile BromSec * const) BROM_SEC_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= (BROM_GEN_JTAGE_SPI_SLV_UNLOCK_MASK< +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_1_X + +#define PMC_CPU_BIG_ENDIAN 1 +#define PMC_STALL_SUPPORT 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm63148/pmc_ll_init.h b/arch/arm/include/asm/arch-bcm63148/pmc_ll_init.h new file mode 100644 index 0000000000..131392e718 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63148/pmc_ll_init.h @@ -0,0 +1,218 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include + +#define SETLEDS(a,b,c,d) + +/* ********************************************************************* + * This function power up any necessary modules that are controlled by + * PMC for board to boot such as vdsl. + * This is called when still executing in place on flash + ********************************************************************* */ +pmc_ll_init: + + ldr r0, =MISC_BASE /* check if PMC ROM is enabled or not */ + ldr r0, [r0, #MISC_STRAP_BUS] + lsr r0, #MISC_STRAP_BUS_PMC_ROM_BOOT_SHIFT + ands r0, #0x1 + beq pmbd + + SETLEDS('P','M','C','S') + b pmcs +pmbd: + SETLEDS('P','M','B','S') +pmcs: + + /* workaround for the high temp lock issue. no need for 148 because + these setting are already in the chip */ +#if defined(CONFIG_BCM63138) + /* config AFE PLL */ + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x5 /* cfg[0] reg offset in PLL_BPCM_REGS */ + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + mov r0, #1 + lsl r0, #27 + orr r2, r1, r0 + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x5 /* cfg[0] reg offset in PLL_BPCM_REGS */ + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* overwrite ndiv and pdiv */ + ldr r2, =0x80000001 + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x12 /* pdiv reg offset in PLL_BPCM_REGS */ + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + ldr r2, =0x80000030 + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x11 /* ndiv reg offset in PLL_BPCM_REGS */ + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error +#endif + + /* start AFE PLL */ + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x4 /* resets reg offset in PLL_BPCM_REGS */ + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + orr r2, r1, #0x3 + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0x4 /* resets reg offset in PLL_BPCM_REGS */ + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* wait AFE PLL to lock */ +afel: + mov r0, #AFEPLL_PMB_ADDR_VDSL3_CORE + mov r1, #0xa + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Wait for AFE PLL lock: repeat read until bit 31 (AFE PLL lock bit) is set */ + ldr r0, =0x80000000 + and r1, r0 + cmp r1, #0 /* if bit 31 is not one, repeat read of reg 0x1700a */ + beq afel + + /* AFE is locked, commence LMEM init */ + /* Enable VDSL step 0. Power on zone 0, 1 and 2 */ + mov r5, #0x10 +pwr_zone_vdsl: + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, r5 + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + ldr r0, =0x1d00 + orr r2, r0, r1 + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, r5 + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + add r5, #4 + /* zone 0 starts from 0x10 offset */ + cmp r5, #(0x10+4*PMB_ZONES_VDSL3_CORE) + bne pwr_zone_vdsl + + /* Enable VDSL step 1: initiate a read of register 0x1600a via the PMC message handler */ + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xa + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable VDSL step 1: or data with 0xffffff01 and write back into 0x1600a */ + ldr r0, =0xffffff01 + orr r2, r0, r1 + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xa + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable VDSL step 2 : initiate a read of register 0x1600c via the PMC message handler */ + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xc + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable VDSL step 2 : set the bottom two bits high and rewrite back into 0x1600c */ + mov r0, #0x3 + orr r2, r0, r1 + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xc + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable VDSL step 3: initiate a read of register 0x1600a via the PMC message handler */ + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xa + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable VDSL step 3 : write to reg 0x1600a */ + ldr r0, =0xffffff03 + orr r2, r0, r1 + mov r0, #PMB_ADDR_VDSL3_CORE + mov r1, #0xa + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + /* Enable PCM_BMU zones */ + mov r5, #0x10 +pwr_zone_apm: + mov r0, #PMB_ADDR_APM + mov r1, r5 + bl pmc_read_bpcm_reg + cmp r0, #0 + bne pmc_error + + ldr r0, =0x1d00 + orr r2, r0, r1 + mov r0, #PMB_ADDR_APM + mov r1, r5 + bl pmc_write_bpcm_reg + cmp r0, #0 + bne pmc_error + + add r5, #4 + /* zone 0 starts from 0x10 offset */ + cmp r5, #(0x10+4*PMB_ZONES_APM) + bne pwr_zone_apm + + /* Move LDO reference to make it settle to the right voltage */ + ldr r0, =0x80100130 + ldr r1, [r0] + //set bit[15] high + ldr r2, =0x8000 + orr r1, r2 + str r1, [r0] + +#if defined(CONFIG_BCM63138) + /* 63148 does not need to deassert */ + //Wait 550usec de-assert bit[15]. + ldr r2, =110000 +w2: + sub r2, #1 + cmp r2, #0 + bne w2 + ldr r1, [r0] + bic r1, #0x8000 + str r1, [r0] +#endif + + b pmc_done + +pmc_error: + SETLEDS('P','M','C','E') + mov r0, #1 + /* failed to power lmem? dead and stuck here */ + b pmc_error + +pmc_done: + SETLEDS('P','M','C','D') + mov r0, #0 diff --git a/arch/arm/include/asm/arch-bcm63148/rdp.h b/arch/arm/include/asm/arch-bcm63148/rdp.h new file mode 100644 index 0000000000..72d5302acd --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63148/rdp.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63148_RDP_H +#define _63148_RDP_H + +#define RDP_BASE 0x80200000 + +#endif diff --git a/arch/arm/include/asm/arch-bcm63148/rng.h b/arch/arm/include/asm/arch-bcm63148/rng.h new file mode 100644 index 0000000000..4a88c68a63 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63148/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63148_RNG_H +#define _63148_RNG_H + +#define RNG_BASE 0xfffe8300 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved; // offset = 0x2c, actual offset = 11 + BPCM_GLOBAL_CNTL_0 global_control; // offset = 0x30, actual offset = 12 + BPCM_GLOBAL_CNTL_1 global_control_1; // offset = 0x34, actual offset = 13 + BPCM_GLOBAL_CNTL_2 global_control_2; // offset = 0x38, actual offset = 14 + uint32_t global_status; // offset = 0x3c, actual offset = 15 + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + uint32_t rvrsd[2]; + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_VDSL_REGS; // total offset space = 4096 + +#define BPCMVDSLOffset(reg) offsetof(BPCM_VDSL_REGS,reg) +#define BPCMVDSLRegOffset(reg) (BPCMVDSLOffset(reg) >> 2) + +// ARM BPCM addresses as used by 63138/63148 and possibly others (28nm) +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved; // offset = 0x2c, actual offset = 11 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + uint32_t decndiv; // offset = 0x44, actual offset = 0x11 + uint32_t decpdiv; // offset = 0x48, actual offset = 0x12 + uint32_t decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved1; // offset = 0x2c, actual offset = 11 + uint32_t clkrst_cfg; // offset = 0x30, actual offset = 12 + uint32_t clkrst_control; // offset = 0x34, actual offset = 13 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm63158/brom.h b/arch/arm/include/asm/arch-bcm63158/brom.h new file mode 100644 index 0000000000..c2e0b636fc --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63158/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63158_BROM_H +#define _63158_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK< + + +typedef struct CCI500_SlaveIntf { + #define SNOOP_CTRL_ENABLE_SNOOP 0x1 + uint32_t snoop_ctrl; /* 0x0 */ + #define SHARE_OVR_SHAREABLE_OVR_SHIFT 0x0 + #define SHARE_OVR_SHAREABLE_OVR_MASK 0x3 + #define SHARE_OVR_SHAREABLE_OVR_NONSHR 0x2 + #define SHARE_OVR_SHAREABLE_OVR_SHR 0x3 + uint32_t share_ovr; /* 0x4 */ + uint32_t rsvd1[62]; /* 0x8 - 0xff */ + uint32_t arqos_ovr; /* 0x100 */ + uint32_t awqos_ovr; /* 0x104 */ + uint32_t rsvd2[2]; /* 0x108 - 0x10f */ + uint32_t qos_max_ot; /* 0x110 */ + uint32_t rsvd3[955]; /* 0x114 - 0xfff */ +}CCI500_SlaveIntf; + +typedef struct CCI500_EventCounter { + uint32_t sel; /* 0x0 */ + uint32_t data; /* 0x4 */ + uint32_t ctrl; /* 0x8 */ + uint32_t clr_ovfl; /* 0xC */ + uint32_t rsvd[16380]; /* 0x10 - 0xffff */ +}CCI500_EventCounter; + +typedef struct CCI500 { + #define CONTROL_OVERRIDE_SNOOP_DISABLE 0x1 + #define CONTROL_OVERRIDE_SNOOP_FLT_DISABLE 0x4 + uint32_t ctrl_ovr; /* 0x0 */ + uint32_t rsvd1; /* 0x4 */ + #define SECURE_ACCESS_UNSECURE_ENABLE 0x1 + uint32_t secr_acc; /* 0x8 */ + uint32_t status; /* 0xc */ + #define STATUS_CHANGE_PENDING 0x1 + uint32_t impr_err; /* 0x10 */ + uint32_t qos_threshold; /* 0x14 */ + uint32_t rsvd2[58]; /* 0x18 - 0xff */ + uint32_t pmu_ctrl; /* 0x100 */ + #define DBG_CTRL_EN_INTF_MON 0x1 + uint32_t debug_ctrl; /* 0x104 */ + uint32_t rsvd3[958]; /* 0x108 - 0xfff */ + #define SLAVEINTF_COHERENCY_PORT 0x0 + #define SLAVEINTF_CPU_CLUSTER 0x1 + CCI500_SlaveIntf si[7]; /* 0x1000 - 0x7fff */ + uint32_t rsvd4[8192]; /* 0x8000 - 0xffff */ + CCI500_EventCounter evt_cntr[8]; /* 0x10000 - 0x8ffff */ +}CCI500; + +#define CCI500_BASE 0x81100000 +#define CCI500 ((volatile CCI500 * const) CCI500_BASE) + +typedef struct UBUS4_RANGE_CHK_CFG { + uint32_t control; /* 0x0 */ + uint32_t srcpid[8]; /* 0x4 - 0x23 */ + uint32_t seclev; /* 0x24 */ + uint32_t base; /* 0x28 */ + uint32_t base_up; /* 0x2c */ +}UBUS4_RANGE_CHK_CFG; + +typedef struct UBUS4_RANGE_CHK_SETUP { + uint32_t lock; /* 0x0 */ + uint32_t log_inf[3]; /* 0x4 - 0xf */ + UBUS4_RANGE_CHK_CFG cfg[16]; /* 0x10 - 0x30f */ +}UBUS4_RANGE_CHK_SETUP; + +#define UBUS4_COHERENCY_PORT_BASE 0x810A0000 +#define UBUS4_RANGE_CHK_SETUP_OFFSET 0x0 +#define UBUS4_RANGE_CHK_SETUP_BASE (UBUS4_COHERENCY_PORT_BASE+UBUS4_RANGE_CHK_SETUP_OFFSET) +#define UBUS4_RANGE_CHK_SETUP ((volatile UBUS4_RANGE_CHK_SETUP * const) UBUS4_RANGE_CHK_SETUP_BASE) + +typedef struct BIUCFG_Access { + uint32_t permission; /* 0x0 */ + uint32_t sbox; /* 0x4 */ + uint32_t cpu_defeature; /* 0x8 */ + uint32_t dbg_security; /* 0xc */ + uint32_t rsvd1[32]; /* 0x10 - 0x8f */ + uint64_t violation[2]; /* 0x90 - 0x9f */ + uint32_t ts_access[2]; /* 0xa0 - 0xa7 */ + uint32_t rsvd2[22]; /* 0xa8 - 0xff */ +}BIUCFG_Access; + +typedef struct BIUCFG_Cluster { + uint32_t permission; /* 0x0 */ + uint32_t config; /* 0x4 */ + uint32_t status; /* 0x8 */ + uint32_t control; /* 0xc */ + uint32_t cpucfg; /* 0x10 */ + uint32_t dbgrom; /* 0x14 */ + uint32_t rsvd1[2]; /* 0x18 - 0x1f */ + uint64_t rvbar_addr[4]; /* 0x20 - 0x3f */ + uint32_t rsvd2[48]; /* 0x40 - 0xff */ +}BIUCFG_Cluster; + +typedef struct BIUCFG_Bac { + uint32_t bac_permission; /* 0x00 */ + uint32_t bac_periphbase; /* 0x04 */ + uint32_t rsvd[2]; /* 0x08 - 0x0f */ + uint32_t bac_event; /* 0x10 */ + uint32_t rsvd_1[3]; /* 0x14 - 0x1f */ + uint32_t bac_ccicfg; /* 0x20 */ + uint32_t bac_cciaddr; /* 0x24 */ + uint32_t rsvd_2[4]; /* 0x28 - 0x37 */ + uint32_t bac_ccievs2; /* 0x38 */ + uint32_t bac_ccievs3; /* 0x3c */ + uint32_t bac_ccievs4; /* 0x40 */ + uint32_t rsvd_3[3]; /* 0x44 - 0x4f */ + uint32_t bac_ccievm0; /* 0x50 */ + uint32_t bac_ccievm1; /* 0x54 */ + uint32_t rsvd_4[2]; /* 0x58 - 0x5f */ + uint32_t bac_dapapbcfg; /* 0x60 */ + uint32_t bac_status; /* 0x64 */ + uint32_t rsvd_5[2]; /* 0x68 - 0x6f */ + uint32_t cpu_therm_irq_cfg; /* 0x70 */ + uint32_t cpu_therm_threshold_cfg; /* 0x74 */ + uint32_t rsvd_6; /* 0x78 */ + uint32_t cpu_therm_temp; /* 0x7c */ + uint32_t rsvd_7[32]; /* 0x80 - 0xff */ +} BIUCFG_Bac; + +typedef struct BIUCFG_Aux { + uint32_t aux_permission; /* 0x00 */ + uint32_t rsvd[3]; /* 0x04 - 0x0f */ + uint32_t c0_clk_control; /* 0x10 */ + uint32_t c0_clk_ramp; /* 0x14 */ + uint32_t c0_clk_pattern; /* 0x18 */ + uint32_t rsvd_1; /* 0x1c */ + uint32_t c1_clk_control; /* 0x20 */ + uint32_t c1_clk_ramp; /* 0x24 */ + uint32_t c1_clk_pattern; /* 0x28 */ + uint32_t rsvd_2[53]; /* 0x2c - 0xff */ +} BIUCFG_Aux; + +typedef struct BIUCFG { + BIUCFG_Access access; /* 0x0 - 0xff*/ + BIUCFG_Cluster cluster[2]; /* 0x100 - 0x2ff*/ + BIUCFG_Bac bac; /* 0x300 - 0x3ff */ + uint32_t anonymous[192]; /* 0x400 - 0x6ff */ + BIUCFG_Aux aux; /* 0x700 - 0x7ff */ + uint32_t anonymous_1[512]; /* 0x800 - 0xfff */ + uint32_t TSO_CNTCR; /* 0x1000 */ + uint32_t anonymous_2[2047]; /* 0x1004 - 0x2fff */ +}BIUCFG; + +#define BIUCFG_BASE 0x81060000 +#define BIUCFG ((volatile BIUCFG * const) BIUCFG_BASE) + diff --git a/arch/arm/include/asm/arch-bcm63158/ddr.h b/arch/arm/include/asm/arch-bcm63158/ddr.h new file mode 100644 index 0000000000..c10e3987c5 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63158/ddr.h @@ -0,0 +1,601 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63158_DDR_H +#define _63158_DDR_H + +#define MEMC_BASE 0x80180000 /* DDR IO Buf Control */ + +typedef struct UBUSInterface { + uint32_t CFG; /* 0x00 */ +#define UBUSIF_CFG_WRITE_REPLY_MODE_SHIFT 0x0 +#define UBUSIF_CFG_WRITE_REPLY_MODE_MASK (0x1<< UBUSIF_CFG_WRITE_REPLY_MODE_SHIFT) +#define UBUSIF_CFG_WRITE_BURST_MODE_SHIFT 0x1 +#define UBUSIF_CFG_WRITE_BURST_MODE_MASK (0x1<< UBUSIF_CFG_WRITE_BURST_MODE_SHIFT) +#define UBUSIF_CFG_INBAND_ERR_MASK_SHIFT 0x2 +#define UBUSIF_CFG_INBAND_ERR_MASK_MASK (0x1<< UBUSIF_CFG_INBAND_ERR_MASK_SHIFT) +#define UBUSIF_CFG_OOB_ERR_MASK_SHIFT 0x3 +#define UBUSIF_CFG_OOB_ERR_MASK_MASK (0x1<< UBUSIF_CFG_OOB_ERR_MASK_SHIFT) + uint32_t ESRCID_CFG; /* 0x04 */ + uint32_t SRC_QUEUE_CTRL[4]; /* 0x08 - 0x17 */ + uint32_t REP_ARB_MODE; /* 0x18 */ +#define UBUSIF_REP_ARB_MODE_FIFO_MODE_SHIFT 0x0 +#define UBUSIF_REP_ARB_MODE_FIFO_MODE_MASK (0x1< +#include +#include + +typedef struct { + uint32_t led_ctrl; +#define SPDLNK_LED1_ACT_POL_SEL_SHIFT 7 +#define SPDLNK_LED1_ACT_POL_SEL_MASK (0x1 << SPDLNK_LED1_ACT_POL_SEL_SHIFT) +#define ACT_LED_ACT_SEL_SHIFT 5 +#define ACT_LED_ACT_SEL_MASK (0x1 << ACT_LED_ACT_SEL_SHIFT) +#define SPDLNK_LED0_ACT_SEL_SHIFT 2 +#define SPDLNK_LED0_ACT_SEL_MASK (0x1 << SPDLNK_LED0_ACT_SEL_SHIFT) +#define RESERVED0_SHIFT 16 +#define RESERVED0_MASK (0xffff << RESERVED0_SHIFT) +#define SPDLNK_LED0_ACT_POL_SEL_SHIFT 6 +#define SPDLNK_LED0_ACT_POL_SEL_MASK (0x1 << SPDLNK_LED0_ACT_POL_SEL_SHIFT) +#define AGGREGATE_LED_CNTRL_RESERVED0_SHIFT 19 +#define AGGREGATE_LED_CNTRL_RESERVED0_MASK (0x1fff << AGGREGATE_LED_CNTRL_RESERVED0_SHIFT) +#define AGGREGATE_LED_CNTRL_ACT_POL_SEL_SHIFT 17 +#define AGGREGATE_LED_CNTRL_ACT_POL_SEL_MASK (0x1 << AGGREGATE_LED_CNTRL_ACT_POL_SEL_SHIFT) +#define SPDLNK_LED2_ACT_SEL_SHIFT 4 +#define SPDLNK_LED2_ACT_SEL_MASK (0x1 << SPDLNK_LED2_ACT_SEL_SHIFT) +#define LED_SPD_OVRD_SHIFT 10 +#define LED_SPD_OVRD_MASK (0x7 << LED_SPD_OVRD_SHIFT) +#define SPDLNK_LED2_ACT_POL_SEL_SHIFT 8 +#define SPDLNK_LED2_ACT_POL_SEL_MASK (0x1 << SPDLNK_LED2_ACT_POL_SEL_SHIFT) +#define SPD_OVRD_EN_SHIFT 14 +#define SPD_OVRD_EN_MASK (0x1 << SPD_OVRD_EN_SHIFT) +#define TX_ACT_EN_SHIFT 1 +#define TX_ACT_EN_MASK (0x1 << TX_ACT_EN_SHIFT) +#define AGGREGATE_LED_CNTRL_ACT_SEL_SHIFT 16 +#define AGGREGATE_LED_CNTRL_ACT_SEL_MASK (0x1 << AGGREGATE_LED_CNTRL_ACT_SEL_SHIFT) +#define LNK_STATUS_OVRD_SHIFT 13 +#define LNK_STATUS_OVRD_MASK (0x1 << LNK_STATUS_OVRD_SHIFT) +#define RX_ACT_EN_SHIFT 0 +#define RX_ACT_EN_MASK (0x1 << RX_ACT_EN_SHIFT) +#define AGGREGATE_LED_CNTRL_LNK_POL_SEL_SHIFT 18 +#define AGGREGATE_LED_CNTRL_LNK_POL_SEL_MASK (0x1 << AGGREGATE_LED_CNTRL_LNK_POL_SEL_SHIFT) +#define SPDLNK_LED1_ACT_SEL_SHIFT 3 +#define SPDLNK_LED1_ACT_SEL_MASK (0x1 << SPDLNK_LED1_ACT_SEL_SHIFT) +#define ACT_LED_POL_SEL_SHIFT 9 +#define ACT_LED_POL_SEL_MASK (0x1 << ACT_LED_POL_SEL_SHIFT) +#define LNK_OVRD_EN_SHIFT 15 +#define LNK_OVRD_EN_MASK (0x1 << LNK_OVRD_EN_SHIFT) +#define AGGREGATE_LED_CNTRL_PORT_EN_SHIFT 0 +#define AGGREGATE_LED_CNTRL_PORT_EN_MASK (0xffff << AGGREGATE_LED_CNTRL_PORT_EN_SHIFT) + uint32_t led_encoding_sel; + uint32_t led_encoding; +#define LINK_AND_SPEED_ENCODING_M10G_ENCODE_SHIFT 15 +#define LINK_AND_SPEED_ENCODING_M10G_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M10G_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_SHIFT 3 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_SHIFT 6 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_SHIFT 15 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M10_ENCODE_SHIFT 3 +#define LINK_AND_SPEED_ENCODING_M10_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M10_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M1000_ENCODE_SHIFT 9 +#define LINK_AND_SPEED_ENCODING_M1000_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M1000_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_SHIFT 12 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M100_ENCODE_SHIFT 6 +#define LINK_AND_SPEED_ENCODING_M100_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M100_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_SHIFT 9 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M2500_ENCODE_SHIFT 12 +#define LINK_AND_SPEED_ENCODING_M2500_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M2500_ENCODE_SHIFT) + +}LED_CFG; + +typedef struct EthernetSwitchReg +{ + uint32_t switch_ctrl; /* 0x0000 */ + uint32_t switch_status; /* 0x0004 */ + uint32_t dir_data_write_reg; /* 0x0008 */ + uint32_t dir_data_read_reg; /* 0x000c */ + uint32_t switch_rev; /* 0x0010 */ + uint32_t phy_rev; /* 0x0014 */ + uint32_t phy_test_ctrl; /* 0x0018 */ + uint32_t qphy_ctrl; /* 0x001c */ +#define ETHSW_QPHY_CTRL_PHYAD_BASE_SHIFT 12 +#define ETHSW_QPHY_CTRL_PHYAD_BASE_MASK (0x1f< +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_1_X + +#define PMC_CPU_BIG_ENDIAN 1 +#define PMC_GETRCAL_SUPPORT 1 +#define PMC_CPUTEMP_SUPPORT 1 +#define PMC_CLOCK_SET_SUPPORT 1 +#define PMC_RAM_BOOT 1 +#define PMC_IN_MAIN_LOOP kPMCRunStateRunning +#define PMC_SHARED_MEMORY 0x80204000 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm63158/rng.h b/arch/arm/include/asm/arch-bcm63158/rng.h new file mode 100644 index 0000000000..407576c7f0 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63158/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63158_RNG_H +#define _63158_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +typedef union { + struct { + uint32_t counter:8; + uint32_t reserved2:7; + uint32_t enable:1; + uint32_t reserved1:16; + } Bits; + uint32_t Reg32; +} BPCM_CLKRST_VREG_CONTROL; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + uint32_t reserved1[2]; // offset 0x18, PMB reg index 6/7 + // Client-specific registers + uint32_t client_specific[24]; // offset 0x20, PMB reg index 8..31 + // Zones + BPCM_ZONE zones[]; // offset 0x80..(0x20 + MAX_ZONES*32)), PMB reg index 32..(32+(MAX_ZONES*8-1)) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08, actual offset = 2 + uint32_t cfg_control; // offset = 0x10, actual offset = 4 + BPCM_SR_CONTROL sr_control; // offset = 0x14, actual offset = 5 + uint32_t reserved1[10]; // offset = 0x18, actual offset = 6 + BPCM_MISC_CONTROL misc_control; // offset = 0x40, actual offset = 16 + uint32_t vdsl_phy_ctl; // offset = 0x44, actual offset = 17 + uint32_t vdsl_afe_ctl; // offset = 0x48, actual offset = 18 + uint32_t reserved2[13]; // offset = 0x4c, actual offset = 19 + BPCM_ZONE zones; // offset = 0x80, actual offset = 32 +} BPCM_VDSL_REGS; // total offset space = 4096 + +#define BPCMVDSLOffset(reg) offsetof(BPCM_VDSL_REGS,reg) +#define BPCMVDSLRegOffset(reg) (BPCMVDSLOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08, actual offset = 2 + uint32_t cfg_control; // offset = 0x10, actual offset = 4 + BPCM_SR_CONTROL sr_control; // offset = 0x14, actual offset = 5 + uint32_t reserved1[6]; // offset = 0x18, actual offset = 6 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + uint32_t biu_clk_control0; // offset = 0x34, actual offset = 13 + uint32_t tbd[18]; // offset = 0x38, actual offset = 14 + BPCM_ZONE zones; // offset = 0x80, actual offset = 32 +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + PLL_DECNDIV_REG decndiv; // offset = 0x44, actual offset = 0x11 + PLL_DECPDIV_REG decpdiv; // offset = 0x48, actual offset = 0x12 + PLL_DECCH25_REG decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[7]; // offset 0x08-0x20, PMB reg index 2-8 + uint32_t control; // offset 0x24, PMB reg index 9 + uint32_t unused[10]; // offset 0x28, PMB reg index 10 + BPCM_CLKRST_VREG_CONTROL vreg_control; // offset 0x50, PMB reg index 19 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm63178/brom.h b/arch/arm/include/asm/arch-bcm63178/brom.h new file mode 100644 index 0000000000..0575e395c9 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63178/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63178_BROM_H +#define _63178_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK< +#include +#include + +typedef struct { + uint32_t led_ctrl; +#define SPDLNK_LED1_ACT_POL_SEL_SHIFT 7 +#define SPDLNK_LED1_ACT_POL_SEL_MASK (0x1 << SPDLNK_LED1_ACT_POL_SEL_SHIFT) +#define ACT_LED_ACT_SEL_SHIFT 5 +#define ACT_LED_ACT_SEL_MASK (0x1 << ACT_LED_ACT_SEL_SHIFT) +#define SPDLNK_LED0_ACT_SEL_SHIFT 2 +#define SPDLNK_LED0_ACT_SEL_MASK (0x1 << SPDLNK_LED0_ACT_SEL_SHIFT) +#define RESERVED0_SHIFT 16 +#define RESERVED0_MASK (0xffff << RESERVED0_SHIFT) +#define SPDLNK_LED0_ACT_POL_SEL_SHIFT 6 +#define SPDLNK_LED0_ACT_POL_SEL_MASK (0x1 << SPDLNK_LED0_ACT_POL_SEL_SHIFT) +#define AGGREGATE_LED_CNTRL_RESERVED0_SHIFT 19 +#define AGGREGATE_LED_CNTRL_RESERVED0_MASK (0x1fff << AGGREGATE_LED_CNTRL_RESERVED0_SHIFT) +#define AGGREGATE_LED_CNTRL_ACT_POL_SEL_SHIFT 17 +#define AGGREGATE_LED_CNTRL_ACT_POL_SEL_MASK (0x1 << AGGREGATE_LED_CNTRL_ACT_POL_SEL_SHIFT) +#define SPDLNK_LED2_ACT_SEL_SHIFT 4 +#define SPDLNK_LED2_ACT_SEL_MASK (0x1 << SPDLNK_LED2_ACT_SEL_SHIFT) +#define LED_SPD_OVRD_SHIFT 10 +#define LED_SPD_OVRD_MASK (0x7 << LED_SPD_OVRD_SHIFT) +#define SPDLNK_LED2_ACT_POL_SEL_SHIFT 8 +#define SPDLNK_LED2_ACT_POL_SEL_MASK (0x1 << SPDLNK_LED2_ACT_POL_SEL_SHIFT) +#define SPD_OVRD_EN_SHIFT 14 +#define SPD_OVRD_EN_MASK (0x1 << SPD_OVRD_EN_SHIFT) +#define TX_ACT_EN_SHIFT 1 +#define TX_ACT_EN_MASK (0x1 << TX_ACT_EN_SHIFT) +#define AGGREGATE_LED_CNTRL_ACT_SEL_SHIFT 16 +#define AGGREGATE_LED_CNTRL_ACT_SEL_MASK (0x1 << AGGREGATE_LED_CNTRL_ACT_SEL_SHIFT) +#define LNK_STATUS_OVRD_SHIFT 13 +#define LNK_STATUS_OVRD_MASK (0x1 << LNK_STATUS_OVRD_SHIFT) +#define RX_ACT_EN_SHIFT 0 +#define RX_ACT_EN_MASK (0x1 << RX_ACT_EN_SHIFT) +#define AGGREGATE_LED_CNTRL_LNK_POL_SEL_SHIFT 18 +#define AGGREGATE_LED_CNTRL_LNK_POL_SEL_MASK (0x1 << AGGREGATE_LED_CNTRL_LNK_POL_SEL_SHIFT) +#define SPDLNK_LED1_ACT_SEL_SHIFT 3 +#define SPDLNK_LED1_ACT_SEL_MASK (0x1 << SPDLNK_LED1_ACT_SEL_SHIFT) +#define ACT_LED_POL_SEL_SHIFT 9 +#define ACT_LED_POL_SEL_MASK (0x1 << ACT_LED_POL_SEL_SHIFT) +#define LNK_OVRD_EN_SHIFT 15 +#define LNK_OVRD_EN_MASK (0x1 << LNK_OVRD_EN_SHIFT) +#define AGGREGATE_LED_CNTRL_PORT_EN_SHIFT 0 +#define AGGREGATE_LED_CNTRL_PORT_EN_MASK (0xffff << AGGREGATE_LED_CNTRL_PORT_EN_SHIFT) + uint32_t led_encoding_sel; + uint32_t led_encoding; +#define LINK_AND_SPEED_ENCODING_M10G_ENCODE_SHIFT 15 +#define LINK_AND_SPEED_ENCODING_M10G_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M10G_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_SHIFT 3 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_SHIFT 6 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_SHIFT 15 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M10_ENCODE_SHIFT 3 +#define LINK_AND_SPEED_ENCODING_M10_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M10_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M1000_ENCODE_SHIFT 9 +#define LINK_AND_SPEED_ENCODING_M1000_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M1000_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_SHIFT 12 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M100_ENCODE_SHIFT 6 +#define LINK_AND_SPEED_ENCODING_M100_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M100_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_SHIFT 9 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M2500_ENCODE_SHIFT 12 +#define LINK_AND_SPEED_ENCODING_M2500_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M2500_ENCODE_SHIFT) + +}LED_CFG; + +typedef struct EthernetSwitchReg +{ + uint32_t switch_ctrl; /* 0x0000 */ +#define ETHSW_SWITCH_CTRL_SWITCH_CLK_SEL_SHIFT 27 +#define ETHSW_SWITCH_CTRL_SWITCH_CLK_SEL_MASK (0x3< +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_3_X +#define PMC_IMPL_3_2 + +#define PMC_LOG_IN_DTCM 1 +#define PMC_GETRCAL_SUPPORT 1 +#define PMC_CPUTEMP_SUPPORT 1 +#define PMC_RAM_BOOT 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm63178/rng.h b/arch/arm/include/asm/arch-bcm63178/rng.h new file mode 100644 index 0000000000..6f4ca0c53c --- /dev/null +++ b/arch/arm/include/asm/arch-bcm63178/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _63178_RNG_H +#define _63178_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +typedef union { + struct { + uint32_t ubus_soft_rst:1; + uint32_t alt_ubus_clk_sel:1; + uint32_t obsv_clk_swinit:1; + uint32_t reserved0:17; + uint32_t wl0_rf_enable:1; + uint32_t wl1_rf_enable:1; + uint32_t reserved1:10; + } Bits; + uint32_t Reg32; +} BPCM_CLKRST_CONTROL; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + uint32_t reserved1[2]; // offset 0x18, PMB reg index 6/7 + // Client-specific registers + uint32_t client_specific[24]; // offset 0x20, PMB reg index 8..31 + // Zones + BPCM_ZONE zones[]; // offset 0x80..(0x20 + MAX_ZONES*32)), PMB reg index 32..(32+(MAX_ZONES*8-1)) +} BPCM_REGS; // total offset space = 4096 + +#define BPCM_OFFSET(reg) (offsetof(BPCM_REGS,reg)>>2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + uint32_t rvrsd[2]; + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_VDSL_REGS; // total offset space = 4096 + +#define BPCMVDSLOffset(reg) offsetof(BPCM_VDSL_REGS,reg) +#define BPCMVDSLRegOffset(reg) (BPCMVDSLOffset(reg) >> 2) + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08, actual offset = 2 + uint32_t cfg_control; // offset = 0x10, actual offset = 4 + BPCM_SR_CONTROL sr_control; // offset = 0x14, actual offset = 5 + uint32_t reserved1[6]; // offset = 0x18, actual offset = 6 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + uint32_t biu_clk_control0; // offset = 0x34, actual offset = 13 + uint32_t tbd[18]; // offset = 0x38, actual offset = 14 + BPCM_ZONE zones; // offset = 0x80, actual offset = 32 +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + PLL_DECNDIV_REG decndiv; // offset = 0x44, actual offset = 0x11 + PLL_DECPDIV_REG decpdiv; // offset = 0x48, actual offset = 0x12 + PLL_DECCH25_REG decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[7]; // offset 0x08-0x20, PMB reg index 2-8 + uint32_t control; // offset 0x24, PMB reg index 9 + uint32_t observe_cntrl; // offset 0x28, PMB reg index 10 + uint32_t observe_div; // offset 0x2c, PMB reg index 11 + uint32_t observe_enable; // offset 0x30, PMB reg index 12 + BPCM_CLKRST_CONTROL clkrst_control; // offset 0x34, PMB reg index 13 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + + uint32_t z0_pm_cntl; // offset 0x18 + uint32_t z0_pm_status; // offset 0x1c + uint32_t z1_pm_cntl; // offset 0x20 + uint32_t z2_pm_cntl; // offset 0x24 + uint32_t reserved1[22]; // reserved from 0x28 to 0x7F + BPCM_ZONE zones[]; + +} BPCM_SYSPORT_REGS; + +#define SYSPOffset(reg) offsetof(BPCM_SYSPORT_REGS,reg) +#define SYSPRegOffset(reg) (SYSPOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm6756/brom.h b/arch/arm/include/asm/arch-bcm6756/brom.h new file mode 100644 index 0000000000..206301816b --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6756/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6756_BROM_H +#define _6756_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK< +#include +#include + +typedef struct { + uint32_t led_ctrl; +#define SPDLNK_LED1_ACT_POL_SEL_SHIFT 7 +#define SPDLNK_LED1_ACT_POL_SEL_MASK (0x1 << SPDLNK_LED1_ACT_POL_SEL_SHIFT) +#define ACT_LED_ACT_SEL_SHIFT 5 +#define ACT_LED_ACT_SEL_MASK (0x1 << ACT_LED_ACT_SEL_SHIFT) +#define SPDLNK_LED0_ACT_SEL_SHIFT 2 +#define SPDLNK_LED0_ACT_SEL_MASK (0x1 << SPDLNK_LED0_ACT_SEL_SHIFT) +#define RESERVED0_SHIFT 16 +#define RESERVED0_MASK (0xffff << RESERVED0_SHIFT) +#define SPDLNK_LED0_ACT_POL_SEL_SHIFT 6 +#define SPDLNK_LED0_ACT_POL_SEL_MASK (0x1 << SPDLNK_LED0_ACT_POL_SEL_SHIFT) +#define AGGREGATE_LED_CNTRL_RESERVED0_SHIFT 19 +#define AGGREGATE_LED_CNTRL_RESERVED0_MASK (0x1fff << AGGREGATE_LED_CNTRL_RESERVED0_SHIFT) +#define AGGREGATE_LED_CNTRL_ACT_POL_SEL_SHIFT 17 +#define AGGREGATE_LED_CNTRL_ACT_POL_SEL_MASK (0x1 << AGGREGATE_LED_CNTRL_ACT_POL_SEL_SHIFT) +#define SPDLNK_LED2_ACT_SEL_SHIFT 4 +#define SPDLNK_LED2_ACT_SEL_MASK (0x1 << SPDLNK_LED2_ACT_SEL_SHIFT) +#define LED_SPD_OVRD_SHIFT 10 +#define LED_SPD_OVRD_MASK (0x7 << LED_SPD_OVRD_SHIFT) +#define SPDLNK_LED2_ACT_POL_SEL_SHIFT 8 +#define SPDLNK_LED2_ACT_POL_SEL_MASK (0x1 << SPDLNK_LED2_ACT_POL_SEL_SHIFT) +#define SPD_OVRD_EN_SHIFT 14 +#define SPD_OVRD_EN_MASK (0x1 << SPD_OVRD_EN_SHIFT) +#define TX_ACT_EN_SHIFT 1 +#define TX_ACT_EN_MASK (0x1 << TX_ACT_EN_SHIFT) +#define AGGREGATE_LED_CNTRL_ACT_SEL_SHIFT 16 +#define AGGREGATE_LED_CNTRL_ACT_SEL_MASK (0x1 << AGGREGATE_LED_CNTRL_ACT_SEL_SHIFT) +#define LNK_STATUS_OVRD_SHIFT 13 +#define LNK_STATUS_OVRD_MASK (0x1 << LNK_STATUS_OVRD_SHIFT) +#define RX_ACT_EN_SHIFT 0 +#define RX_ACT_EN_MASK (0x1 << RX_ACT_EN_SHIFT) +#define AGGREGATE_LED_CNTRL_LNK_POL_SEL_SHIFT 18 +#define AGGREGATE_LED_CNTRL_LNK_POL_SEL_MASK (0x1 << AGGREGATE_LED_CNTRL_LNK_POL_SEL_SHIFT) +#define SPDLNK_LED1_ACT_SEL_SHIFT 3 +#define SPDLNK_LED1_ACT_SEL_MASK (0x1 << SPDLNK_LED1_ACT_SEL_SHIFT) +#define ACT_LED_POL_SEL_SHIFT 9 +#define ACT_LED_POL_SEL_MASK (0x1 << ACT_LED_POL_SEL_SHIFT) +#define LNK_OVRD_EN_SHIFT 15 +#define LNK_OVRD_EN_MASK (0x1 << LNK_OVRD_EN_SHIFT) +#define AGGREGATE_LED_CNTRL_PORT_EN_SHIFT 0 +#define AGGREGATE_LED_CNTRL_PORT_EN_MASK (0xffff << AGGREGATE_LED_CNTRL_PORT_EN_SHIFT) + uint32_t led_encoding_sel; + uint32_t led_encoding; +#define LINK_AND_SPEED_ENCODING_M10G_ENCODE_SHIFT 15 +#define LINK_AND_SPEED_ENCODING_M10G_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M10G_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_SHIFT 3 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_SHIFT 6 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_SHIFT 15 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M10_ENCODE_SHIFT 3 +#define LINK_AND_SPEED_ENCODING_M10_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M10_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M1000_ENCODE_SHIFT 9 +#define LINK_AND_SPEED_ENCODING_M1000_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M1000_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_SHIFT 12 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M100_ENCODE_SHIFT 6 +#define LINK_AND_SPEED_ENCODING_M100_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M100_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_SHIFT 9 +#define LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_SHIFT) +#define LINK_AND_SPEED_ENCODING_M2500_ENCODE_SHIFT 12 +#define LINK_AND_SPEED_ENCODING_M2500_ENCODE_MASK (0x7 << LINK_AND_SPEED_ENCODING_M2500_ENCODE_SHIFT) + +}LED_CFG; + +/* leaving the definition of the QPHY register for compilation only */ +#define ETHSW_QPHY_CTRL_PHYAD_BASE_SHIFT 12 +#define ETHSW_QPHY_CTRL_PHYAD_BASE_MASK (0x1f< +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_3_X +#define PMC_IMPL_3_2 + +#define PMC_LOG_IN_DTCM 1 +#define PMC_GETRCAL_SUPPORT 1 +#define PMC_CPUTEMP_SUPPORT 1 +#define PMC_RAM_BOOT 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm6756/rng.h b/arch/arm/include/asm/arch-bcm6756/rng.h new file mode 100644 index 0000000000..10420dba20 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6756/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6756_RNG_H +#define _6756_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + uint32_t reserved1[2]; // offset 0x18, PMB reg index 6/7 + // Client-specific registers + uint32_t client_specific[24]; // offset 0x20, PMB reg index 8..31 + // Zones + BPCM_ZONE zones[]; // offset 0x80..(0x20 + MAX_ZONES*32)), PMB reg index 32..(32+(MAX_ZONES*8-1)) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + CLASSIC_BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x18, actual offset = 6 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x1c, actual offset = 7 + BPCM_SR_CONTROL sr_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0[3]; // offset = 0x24, actual offset = 9 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + uint32_t biu_clk_control0; // offset = 0x34, actual offset = 13 + uint32_t reserved1[2]; // offset = 0x38, actual offset = 14 + BPCM_ZONE zones; // offset = 0x40, actual offset = 16 +} ARM_BPCM_REGS; + +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + PLL_DECNDIV_REG decndiv; // offset = 0x44, actual offset = 0x11 + PLL_DECPDIV_REG decpdiv; // offset = 0x48, actual offset = 0x12 + PLL_DECCH25_REG decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_CLASSIC_BPCM_REGS; + +#define PLLCLASSICBPCMOffset(reg) offsetof(PLL_CLASSIC_BPCM_REGS,reg) +#define PLLCLASSICBPCMRegOffset(reg) (PLLCLASSICBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04 + uint32_t reserved0[6]; // offset = 0x08 + PLL_CTRL_REG resets; // offset = 0x20 + PLL_CFG0_REG cfg0; // offset = 0x24 + PLL_CFG1_REG cfg1; // offset = 0x28 + PLL_NDIV_REG ndiv; // offset = 0x2c + PLL_PDIV_REG pdiv; // offset = 0x30 + PLL_LOOP0_REG loop0; // offset = 0x34 + uint32_t reserved1; // offset = 0x38 + PLL_LOOP1_REG loop1; // offset = 0x3c + PLL_CHCFG_REG ch01_cfg; // offset = 0x40 + PLL_CHCFG_REG ch23_cfg; // offset = 0x44 + PLL_CHCFG_REG ch45_cfg; // offset = 0x48 + PLL_STAT_REG stat; // offset = 0x4c + uint32_t strap; // offset = 0x50 + PLL_DECNDIV_REG decndiv; // offset = 0x54 + PLL_DECPDIV_REG decpdiv; // offset = 0x58 + PLL_DECCH25_REG decch25; // offset = 0x5c +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved1; // offset = 0x2c, actual offset = 11 + uint32_t clkrst_cfg; // offset = 0x30, actual offset = 12 + uint32_t clkrst_control; // offset = 0x34, actual offset = 13 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm6846/brom.h b/arch/arm/include/asm/arch-bcm6846/brom.h new file mode 100644 index 0000000000..75a938572d --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6846/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6846_BROM_H +#define _6846_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK<SSBMaster.control) & 0x8000) && (num > 0)) ; num--) ;\ + if(!num) \ + {\ + printf("Error num %d timeout num = %d!!!", (x), num);\ + }\ +} + +typedef struct PmmReg { + uint32_t memPowerCtrl; /* 0x0000 */ + uint32_t regSecurityConfig; /* 0x0004 */ +} PmmReg; + +typedef struct keyholeReg { + uint32_t ctrlSts; + uint32_t wrData; + uint32_t mutex; + uint32_t rdData; +} keyholeReg; + +typedef struct PmbBus { + uint32_t config; /* 0x0100 */ + uint32_t arbiter; /* 0x0104 */ + uint32_t timeout; /* 0x0108 */ + uint32_t unused1; /* 0x010c */ + keyholeReg keyhole[4]; /* 0x0110-0x014f */ + uint32_t unused2[44]; /* 0x0150-0x01ff */ + uint32_t map[64]; /* 0x0200-0x02ff */ +}PmbBus; + +typedef struct CoreCtrl { + uint32_t coreEnable; /* 0x0400 */ + uint32_t autoresetControl; /* 0x0404 */ + uint32_t coreIdle; /* 0x0408 */ + uint32_t coreResetCause; /* 0x040c */ + uint32_t memPwrDownCtrl0; /* 0x0410 */ + uint32_t memPwrDownSts0; /* 0x0414 */ + uint32_t memPwrDownCtrl1; /* 0x0418 */ + uint32_t memPwrDownSts1; /* 0x041c */ + uint32_t sysFlg0Status; /* 0x0420 */ + uint32_t sysFlg0Set; /* 0x0424 */ + uint32_t sysFlg0Clear; /* 0x0428 */ + uint32_t unused1; /* 0x042c */ + uint32_t usrFlg0Status; /* 0x0430 */ + uint32_t usrFlg0Set; /* 0x0434 */ + uint32_t usrFlg0Clear; /* 0x0438 */ + uint32_t unused2; /* 0x043c */ + uint32_t subsystemRev; /* 0x0440 */ + uint32_t resetVector; /* 0x0444 */ +} CoreCtrl; + +typedef struct CoreState { + uint32_t sysMbx[8]; /* 0x0480 */ + uint32_t usrMbx[8]; /* 0x04a0 */ + uint32_t sysMtx[4]; /* 0x04c0 */ + uint32_t usrMtx[8]; /* 0x04d0 */ +} CoreState; + +typedef struct CoreIntr { + uint32_t irqStatus; /* 0x0500 */ + uint32_t irqSet; /* 0x0504 */ + uint32_t irqClear; /* 0x0508 */ + uint32_t unused1; /* 0x050c */ + uint32_t srqStatus; /* 0x0510 */ + uint32_t srqSet; /* 0x0514 */ + uint32_t srqClear; /* 0x0518 */ + uint32_t unused2; /* 0x051c */ + uint32_t drqStatus; /* 0x0520 */ + uint32_t drqSet; /* 0x0524 */ + uint32_t drqClear; /* 0x0528 */ + uint32_t unused3; /* 0x052c */ + uint32_t frqStatus; /* 0x0530 */ + uint32_t frqSet; /* 0x0534 */ + uint32_t frqClear; /* 0x0538 */ + uint32_t unused4; /* 0x053c */ + uint32_t hostIrqLatched; /* 0x0540 */ + uint32_t hostIrqSet; /* 0x0544 */ + uint32_t hostIrqClear; /* 0x0548 */ + uint32_t hostIrqEnable; /* 0x054c */ + uint32_t obusFaultStatus; /* 0x0550 */ + uint32_t obusFaultClear; /* 0x0554 */ + uint32_t obusFaultAddr; /* 0x0558 */ +} CoreIntr; + +typedef struct CoreProfile { + uint32_t mutex; /* 0x0580 */ + uint32_t lastConfPcLo; /* 0x0584 */ + uint32_t lastConfPcHi; /* 0x0588 */ + uint32_t lastPcLo; /* 0x058c */ + uint32_t lastPcHi; /* 0x0590 */ + uint32_t braTargetPc0Lo; /* 0x0594 */ + uint32_t braTargetPc0Hi; /* 0x0598 */ + uint32_t braTargetPc1Lo; /* 0x059c */ + uint32_t braTargetPc1Hi; /* 0x05a0 */ + uint32_t braTargetPc2Lo; /* 0x05a4 */ + uint32_t braTargetPc2Hi; /* 0x05a8 */ + uint32_t braTargetPc3Lo; /* 0x05ac */ + uint32_t braTargetPc3Hi; /* 0x05b0 */ + uint32_t unused[3]; /* 0x05b4-0x05bf */ + uint32_t profSampleW[4]; /* 0x05c0 */ +} CoreProfile; + +typedef struct MaestroMisc { + CoreCtrl coreCtrl; /* 0x0400 */ + uint32_t unused1[14]; /* 0x0448-0x047f */ + CoreState coreState; /* 0x0480 */ + uint32_t unused2[4]; /* 0x04f0-0x04ff */ + CoreIntr interrupt; /* 0x0500 */ + uint32_t unused3[9]; /* 0x055c-0x057f */ + CoreProfile profile; /* 0x0580 */ +} MaestroMisc; + +typedef struct Pmc { + uint32_t baseReserved; /* 0x0000 */ + uint32_t unused0[1029]; + PmcCtrlReg ctrl; /* 0x1018 */ + uint32_t unused1[174]; /* 0x1148-0x13ff */ + PmcTokenReg token; /* 0x1400 */ + uint32_t unused2[136]; /* 0x141c-0x163b */ + PmcPerfPowReg perfPower; /* 0x163c */ + uint32_t unused3[175]; /* 0x1644-0x18ff */ + PmcCntReg hwCounter; /* 0x1900 */ + uint32_t unused4[110]; /* 0x1948-0x1aff */ + PmcDQMPac dqmPac; /* 0x1b00 */ + uint32_t unused5[32]; /* 0x1b80-0x1bff */ + PmcDQMReg dqm; /* 0x1c00 */ + uint32_t unused6[749]; /* 0x1c4c-0x27ff */ + uint32_t qStatus[32]; /* 0x2800 */ + uint32_t unused7[480]; /* 0x2880-0x2fff */ + PmcDqmQMibReg qMib; /* 0x3000 */ + uint32_t unused8[928]; /* 0x3180-0x3fff */ + PmcDqmQCtrlReg dqmQCtrl[8]; /* 0x4000 */ + uint32_t unused9[992]; /* 0x4080-0x4fff */ + PmcDqmQDataReg dqmQData[8]; /* 0x5000 */ +} Pmc; +#define PMC_BASE 0xffb00000 +#define PMC ((volatile Pmc * const) PMC_BASE) + +/* + * Process Monitor Module + */ +typedef struct Procmon { + PmmReg pmm; /* 0x20000 */ + uint32_t unused11[22]; /* 0x20008-0x2005f */ + PMSSBMasterControl SSBMaster; /* 0x20060 */ + uint32_t unused12[36]; /* 0x20070-0x200ff */ + PmbBus pmb; /* 0x20100 */ + uint32_t unused13[64]; /* 0x20300-0x203ff */ + MaestroMisc maestroReg; /* 0x20400 */ +} Procmon; +#define PROC_MON_BASE 0xffb20000 +#define PROCMON ((volatile Procmon * const) PROC_MON_BASE) + +typedef struct +{ + uint32_t control; +#define PMC_PMBM_START (1 << 31) +#define PMC_PMBM_TIMEOUT (1 << 30) +#define PMC_PMBM_SLAVE_ERR (1 << 29) +#define PMC_PMBM_BUSY (1 << 28) +#define PMC_PMBM_BUS_SHIFT (20) +#define PMC_PMBM_Read (0 << 24) +#define PMC_PMBM_Write (1 << 24) + uint32_t wr_data; + uint32_t mutex; + uint32_t rd_data; +} PMB_keyhole_reg; + +typedef struct PMBMaster { + uint32_t config; +#define PMB_NUM_REGS_SHIFT (20) +#define PMB_NUM_REGS_MASK (0x3ff) + uint32_t arbitger; + uint32_t timeout; + uint32_t reserved; + PMB_keyhole_reg keyhole[4]; + uint32_t reserved1[44]; + uint32_t map[64]; +} PMBMaster; +#define PMB_BASE 0xffb20100 +#define PMB ((volatile PMBMaster * const) PMB_BASE) + +#endif diff --git a/arch/arm/include/asm/arch-bcm6846/pmc_addr.h b/arch/arm/include/asm/arch-bcm6846/pmc_addr.h new file mode 100644 index 0000000000..1ddf1c67fe --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6846/pmc_addr.h @@ -0,0 +1,62 @@ +#define PMB_BUS_MAX 2 +#define PMB_BUS_ID_SHIFT 12 + +#define PMB_BUS_PERIPH 0 +#define PMB_ADDR_PERIPH (0 | PMB_BUS_PERIPH << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PERIPH 4 + +#define PMB_BUS_CHIP_CLKRST 1 +#define PMB_ADDR_CHIP_CLKRST (1 | PMB_BUS_CHIP_CLKRST << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_CHIP_CLKRST 0 + +#define PMB_BUS_RDPPLL 1 +#define PMB_ADDR_RDPPLL (3 | PMB_BUS_RDPPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_RDPPLL 0 + +#define PMB_BUS_PVTMON 1 +#define PMB_ADDR_PVTMON (6 | PMB_BUS_PVTMON << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PVTMON 0 + +#define PMB_BUS_MEMC 1 +#define PMB_ADDR_MEMC (8 | PMB_BUS_MEMC << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MEMC 1 + +#define PMB_BUS_USB20_2X 1 +#define PMB_ADDR_USB20_2X (10 | PMB_BUS_USB20_2X << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_USB20_2X 4 + +#define PMB_BUS_WAN 1 +#define PMB_ADDR_WAN (11 | PMB_BUS_WAN << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_WAN 3 + +#define PMB_BUS_XRDP 1 +#define PMB_ADDR_XRDP (12 | PMB_BUS_XRDP << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP 3 + +#define PMB_BUS_XRDP_RC0 1 +#define PMB_ADDR_XRDP_RC0 (14 | PMB_BUS_XRDP_RC0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC0 1 + +#define PMB_BUS_XRDP_RC1 1 +#define PMB_ADDR_XRDP_RC1 (15 | PMB_BUS_XRDP_RC1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC1 1 + +#define PMB_BUS_XRDP_RC2 1 +#define PMB_ADDR_XRDP_RC2 (16 | PMB_BUS_XRDP_RC2 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC2 1 + +#define PMB_BUS_PCIE0 0 +#define PMB_ADDR_PCIE0 (18 | PMB_BUS_PCIE0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE0 1 + +#define PMB_BUS_PCIE1 0 +#define PMB_ADDR_PCIE1 (19 | PMB_BUS_PCIE1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE1 1 + +#define PMB_BUS_BIU_PLL 1 +#define PMB_ADDR_BIU_PLL (38 | PMB_BUS_BIU_PLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_PLL 1 + +#define PMB_BUS_BIU_BPCM 1 +#define PMB_ADDR_BIU_BPCM (39 | PMB_BUS_BIU_BPCM << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_BPCM 1 diff --git a/arch/arm/include/asm/arch-bcm6846/pmc_drv_cfg.h b/arch/arm/include/asm/arch-bcm6846/pmc_drv_cfg.h new file mode 100644 index 0000000000..2fcca35220 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6846/pmc_drv_cfg.h @@ -0,0 +1,38 @@ +/* +<:copyright-BRCM:2019:DUAL/GPL:standard + + Copyright (c) 2019 Broadcom + All Rights Reserved + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License, version 2, as published by +the Free Software Foundation (the "GPL"). + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + + +A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by +writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. + +:> +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_3_X +#define PMC_IMPL_3_1 + +#define PMC_UCBID 1 +#define PMC_RAM_BOOT 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm6846/rng.h b/arch/arm/include/asm/arch-bcm6846/rng.h new file mode 100644 index 0000000000..401ec12120 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6846/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6846_RNG_H +#define _6846_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + uint32_t reserved1[2]; // offset 0x18, PMB reg index 6/7 + // Client-specific registers + uint32_t client_specific[24]; // offset 0x20, PMB reg index 8..31 + // Zones + BPCM_ZONE zones[]; // offset 0x80..(0x20 + MAX_ZONES*32)), PMB reg index 32..(32+(MAX_ZONES*8-1)) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08, actual offset = 2 + uint32_t cfg_control; // offset = 0x10, actual offset = 4 + BPCM_SR_CONTROL sr_control; // offset = 0x14, actual offset = 5 + uint32_t reserved1[6]; // offset = 0x18, actual offset = 6 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + uint32_t biu_clk_control0; // offset = 0x34, actual offset = 13 + uint32_t tbd[18]; // offset = 0x38, actual offset = 14 + BPCM_ZONE zones; // offset = 0x80, actual offset = 32 +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + PLL_DECNDIV_REG decndiv; // offset = 0x44, actual offset = 0x11 + PLL_DECPDIV_REG decpdiv; // offset = 0x48, actual offset = 0x12 + PLL_DECCH25_REG decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef union { + struct { + uint32_t dac_data:10; // [09:00] + uint32_t vavs_minb0:1; // [10:10] - R/O iVDDC <= Vmin0 + uint32_t vavs_minb1:1; // [11:11] - R/O iVDDC <= Vmin1 + uint32_t vavs_warnb0:1; // [12:12] - R/O iVDDC <= Vwarn0 + uint32_t vavs_warnb1:1; // [13:13] - R/O iVDDC <= Vwarn1 + uint32_t vavs_maxb0:1; // [14:14] - R/O iVDDC <= Vmax0 + uint32_t vavs_maxb1:1; // [15:15] - R/O iVDDC <= Vmax1 + uint32_t adc_data:10; // [25:16] - R/O ADC output data in offset binary format + uint32_t adc_data_valid:1; // [26:26] - R/O + uint32_t reserved:5; // [31:27] - R/O + } Bits; + uint32_t Reg32; +} APVTMON_DATA_REG; + +typedef union { + // little endian - from page 5 of "ANA_VTMON_TS16FF_S0 & ANA_VTMON_PAD_TS16FF_Sx Module Specification" + // defaut value = 0x00000001 + struct { + uint32_t bg_adj:3; // [02:00] - default = 1 + uint32_t vtest_sel:4; // [06:03] - VTest = i_VDCC * (+1)/20, default = 0 + uint32_t rmon_sel:3; // [09:07] + uint32_t mode:3; // [12:10] + uint32_t adc_insel:2; // [14:13] - only used in expert mode (mode = 0b111) + uint32_t dac_en:1; // [15:15] - only used in expert mode (mode = 0b111) + uint32_t con_pad:1; // [16:16] - only used in expert mode (mode = 0b111) + uint32_t burnin_en:1; // [17:17] - only used in expert mode (mode = 0b111) + uint32_t reserved:1; // [18:18] + uint32_t vdccmon_refadj_max1:1; // [19:19] + uint32_t vdccmon_refadj_min0:4; // [23:20] + uint32_t vdccmon_refadj_min1:3; // [26:24] + uint32_t dac_reset:1; // [27:27] + uint32_t dac_set:1; // [28:28] + uint32_t vdccmon_refadj_max0:3; // [31:29] + } Bits; + uint32_t Reg32; +} APVTMON_CONTROL_REG; + +typedef union { + struct { + uint32_t rstb:1; // [00:00] - low active. default = 0 (i.e. in reset) + uint32_t pwr_dn:1; // [01:01] - high-active. default = 1 (i.e. powered down) + uint32_t clk_en:1; // [02:02] + uint32_t reserved0:1; // [03:03] + uint32_t sel:3; // [06:04] - see enum below - reset value = 0 + uint32_t reserved1:1; // [07:07] + uint32_t clk_div:5; // [12:08] - value needed to divide pm_clk by (2*clk_div) to generate a 5MHz clock + uint32_t reserved2:19; // [31:13] + } Bits; + uint32_t Reg32; +} APVTMON_CONFIG_STATUS_REG; + +typedef union { + struct { + uint32_t accum_en:1; // [00:00] + uint32_t round_en:1; // [01:01] defaults to 1 (rounding enabled) + uint32_t reserved1:6; // [07:02] + uint32_t skip_len:4; // [11:08] how many samples to skip prior to starting averaging, default = 3 + uint32_t reserved0:20; // [31:12] + } Bits; + uint32_t Reg32; +} APVTMON_ACQ_CONFIG_REG; + +typedef union { + struct { + uint32_t warn_threshold:10; // [09:00] - in ADC counts + uint32_t warn_en:1; // [10:10] + uint32_t reserved0:3; // [13:11] + uint32_t clear_warn:1; // [14:14] - Write only + uint32_t warn:1; // [15:15] - Read only + uint32_t reset_threshold:10; // [25:16] - in ADC counts + uint32_t reset_en:1; // [26:26] + uint32_t reserved1:3; // [29:27] + uint32_t clear_reset:1; // [30:30] - Write only + uint32_t reset:1; // [31:31] - Read only + } Bits; + uint32_t Reg32; +} APVTMON_TEMP_WARN_RESET_REG; + +typedef union { + struct { + uint32_t reset_value:10; // [09:00] + uint32_t reserved:22; // [31:10] + } Bits; + uint32_t Reg32; +} APVTMON_RESET_TEMP_REG; + +typedef union { + struct { + uint32_t value:10; // [09:00] - there are fractional bits + uint32_t reserved0:8; // [17:10] + uint32_t valid:1; // [18:18] + uint32_t busy:1; // [19:19] + uint32_t reserved1:4; // [23:20] + uint32_t meas_len:3; // [26:24] #samples = 2^ + uint32_t reserved2:4; // [30:27] + uint32_t enable:1; // [31:31] + } Bits; + uint32_t Reg32; +} APVTMON_ACCUM_REG; + +typedef union { + struct { + uint32_t sel:6; // [05:00] - ring oscillator select (0..35) + uint32_t reserved2:2; // [07:06] + uint32_t srm_ind_en:1; // [08:08] + uint32_t srm_ind_od:1; // [09:09] + uint32_t srm_ind_sel:2; // [11:10] + uint32_t reserved1:4; // [15:12] + uint32_t out:1; // [16:16] + uint32_t all_idl_low_oscs:1; // [17:17] + uint32_t all_idl_hi_oscs:1; // [18:18] + uint32_t reserved0:13; // [31:19] + } Bits; + uint32_t Reg32; +} ROSC_CTRL_STS_REG; + +typedef union { + struct { + uint32_t count:16; // [15:00] + uint32_t valid:1; // [16:16] + uint32_t too_lo:1; // [17:17] - count <= thresh_lo (only when THRESH_EN == 1) + uint32_t too_hi:1; // [18:18] - count <= thresh_hi (only when THRESH_EN == 1) + uint32_t reserved0:5; // [23:19] + uint32_t continuous:1; // [24:24] + uint32_t thresh_en:1; // [25:25] - enable threshold detection + uint32_t ectr_en:1; // [26:26] - enable counter + uint32_t src_en:1; // [27:27] - enable event source (may not do anything???) + uint32_t meas_len:4; // [31:28] - interval = 2^(+1) + } Bits; + uint32_t Reg32; +} ECTR_CTRL_STS_REG; + +typedef union { + struct { + uint32_t thresh_lo:16; // [15:00] + uint32_t thresh_hi:16; // [31:16] + } Bits; + uint32_t Reg32; +} ECTR_THRESH_REG; + +typedef struct { + ECTR_CTRL_STS_REG count_reg; + ECTR_THRESH_REG thresh_reg; +} ROSC_REGS; + +typedef struct { + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + uint32_t reserved1[12]; // offset 0x10, PMB reg index 4-15 (future proofing ) + APVTMON_CONTROL_REG control; // offset 0x40, PMB reg index 16 + APVTMON_CONFIG_STATUS_REG config; // offset 0x44, PMB reg index 17 + APVTMON_DATA_REG adc_data; // offset 0x48, PMB reg index 18 + uint32_t reserved2; // offset 0x4c, PMB reg index 19 + APVTMON_ACQ_CONFIG_REG accum_config; // offset 0x50, PMB reg index 20 + APVTMON_TEMP_WARN_RESET_REG warn_rst; // offset 0x54, PMB reg index 21 + uint32_t reserved3[2]; // offset 0x58, PMB reg index 23 + APVTMON_ACCUM_REG acq_accum_regs[8]; // offset 0x60, PMB reg index 24-31 + ROSC_CTRL_STS_REG rosc_ctrl_sts; // offset 0x80, PMB reg index 32 + uint32_t rosc_en_lo; // offset 0x84, PMB reg index 33 + uint32_t rosc_en_hi; // offset 0x88, PMB reg index 34 + uint32_t rosc_idle_lo; // offset 0x8c, PMB reg index 35 + uint32_t rosc_idle_hi; // offset 0x90, PMB reg index 36 + uint32_t reserved4[3]; // offset 0x94, PMB reg index 37-39 + ROSC_REGS ectr_regs; // offset 0xa0, PMB reg index 40/41 +} PVTMON_REGS; +// retrieves the BYTE offset of a PVTMON register: +#define PVTMON_OFFSET(reg) (offsetof(PVTMON_REGS,reg)>>2) + +typedef struct { +// PMB-slave + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[6]; // offset 0x08, PMB reg index 2-7 + // ROSC registers + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset 0x20, PMB reg index 8 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset 0x24, PMB reg index 9 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset 0x28, PMB reg index 10 + BPCM_AVS_ROSC_COUNT rosc_count; // offset 0x2c, PMB reg index 11 + BPCM_AVS_PWD_CONTROL pwd_ctrl; // offset 0x30, PMB reg index 12 + BPCM_PWD_ACCUM_CONTROL pwd_accum; // offset 0x34, PMB reg index 13 +} ARS_REGS; +// retrieves the BYTE offset of an ARS register: +#define ARS_OFFSET(reg) (offsetof(ARS_REGS, reg)>>2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved1; // offset = 0x2c, actual offset = 11 + uint32_t clkrst_cfg; // offset = 0x30, actual offset = 12 + uint32_t clkrst_control; // offset = 0x34, actual offset = 13 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm6855/boot0.h b/arch/arm/include/asm/arch-bcm6855/boot0.h new file mode 100644 index 0000000000..af69028c9e --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6855/boot0.h @@ -0,0 +1,83 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6855_BOOT0_H +#define _6855_BOOT0_H + +#include +#include +#include + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) +_bcm_boot: + mov r0,#0 + + b skip_emu + .org 0x10 + .word 1 + .org 0x40 + +skip_emu: + mcr p15,0,r0,c8,c7,0 /* Invalidate TLB */ + mcr p15,0,r0,c7,c5,0 /* Invalidate icache */ + + /* Initialize system control register enable i-cache */ + mrc p15,0,r0,c1,c0,0 + bic r0,r0,#(CR_C|CR_A|CR_M) /* Clear C, A, M bits */ + orr r0,r0,#CR_I /* Set I bit: enable instruction cache */ + mcr p15,0,r0,c1,c0,0 + + isb + + /* relocate the code, init'ed data from flash to lmem */ +relo_image: + adr r1, _bcm_boot /* r1 source address in flash */ + ldr r0, =__image_copy_start /* r0 dest address in sram */ + subs r4, r1, r0 /* r4 relocation offset */ + beq relo_dtb /* skip relocation */ + ldr r2, =__image_copy_end /* r2 dest ending address in flash */ + +relo_loop: + ldmia r1!, {r10-r11} + stmia r0!, {r10-r11} + cmp r0, r2 + blo relo_loop + + /* if we attached dtb after bss, need to relocate dtb as well */ +relo_dtb: +#if defined(CONFIG_SPL_OF_CONTROL) && defined(CONFIG_OF_SEPARATE) + +#ifdef CONFIG_OF_SPL_SEPARATE_BSS + ldr r3, =__image_binary_end +#else + ldr r3, =__bss_end +#endif + add r1, r3, r4 /* r1 source address in flash */ + /* check ftd size ... */ + /* struct fdt_header { + fdt32_t magic; + fdt32_t totalsize; */ + ldr r0, [r1, #4] /* r0 total size */ + rev r0, r0 /* byte order from fdt to little endian */ + lsr r0, r0, #2 /* in the order of 4 bytes aligned */ + add r0, r0, #1 + lsl r0, r0, #2 + add r2, r1, r0 /* r2 dest ending address in flash */ + mov r0, r3 /* r0 dest address in sram */ + +dtb_loop: + ldmia r1!, {r10-r11} + stmia r0!, {r10-r11} + cmp r1, r2 + blo dtb_loop +#endif + ldr r0, =reset + bx r0 + +#endif + .align(5), 0x0 +_start: + ARM_VECTORS +#endif diff --git a/arch/arm/include/asm/arch-bcm6855/brom.h b/arch/arm/include/asm/arch-bcm6855/brom.h new file mode 100644 index 0000000000..9cdcb5c791 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6855/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6855_BROM_H +#define _6855_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK<SSBMaster.control) & 0x8000) && (num > 0)) ; num--) ;\ + if(!num) \ + {\ + printf("Error num %d timeout num = %d!!!", (x), num);\ + }\ +} + +typedef struct PmmReg { + uint32_t memPowerCtrl; /* 0x0000 */ + uint32_t regSecurityConfig; /* 0x0004 */ +} PmmReg; + +typedef struct keyholeReg { + uint32_t ctrlSts; + uint32_t wrData; + uint32_t mutex; + uint32_t rdData; +} keyholeReg; + +typedef struct PmbBus { + PMB_CONFIG_REG config; /* 0x0100 */ + uint32_t arbiter; /* 0x0104 */ + uint32_t timeout; /* 0x0108 */ + uint32_t unused1; /* 0x010c */ + keyholeReg keyhole[4]; /* 0x0110-0x014f */ + uint32_t unused2[44]; /* 0x0150-0x01ff */ + uint32_t map[64]; /* 0x0200-0x02ff */ +}PmbBus; + +typedef struct Procmon { + PmmReg pmm; /* 0x20000 */ + uint32_t unused11[22]; /* 0x20008-0x2005f */ + PMSSBMasterControl SSBMaster; /* 0x20060-0x20077 */ + uint32_t unused12[34]; /* 0x20078-0x200ff */ + PmbBus pmb; /* 0x20100 */ +} Procmon; +#define PROC_MON_BASE 0xffb20000 +#define PROCMON ((volatile Procmon * const) PROC_MON_BASE) + +typedef struct +{ + uint32_t control; +#define PMC_PMBM_START (1 << 31) +#define PMC_PMBM_TIMEOUT (1 << 30) +#define PMC_PMBM_SLAVE_ERR (1 << 29) +#define PMC_PMBM_BUSY (1 << 28) +#define PMC_PMBM_BUS_SHIFT (20) +#define PMC_PMBM_Read (0 << 24) +#define PMC_PMBM_Write (1 << 24) + uint32_t wr_data; + uint32_t mutex; + uint32_t rd_data; +} PMB_keyhole_reg; + +typedef struct PMBMaster { + uint32_t config; +#define PMB_NUM_REGS_SHIFT (20) +#define PMB_NUM_REGS_MASK (0x3ff) + uint32_t arbitger; + uint32_t timeout; + uint32_t reserved; + PMB_keyhole_reg keyhole[4]; + uint32_t reserved1[44]; + uint32_t map[64]; +} PMBMaster; +#define PMB_BASE 0xffb20100 +#define PMB ((volatile PMBMaster * const) PMB_BASE) + +#endif diff --git a/arch/arm/include/asm/arch-bcm6855/pmc_addr.h b/arch/arm/include/asm/arch-bcm6855/pmc_addr.h new file mode 100644 index 0000000000..1349221e17 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6855/pmc_addr.h @@ -0,0 +1,79 @@ +#define PMB_BUS_MAX 2 +#define PMB_BUS_ID_SHIFT 12 + +#define PMB_BUS_PERIPH 0 +#define PMB_ADDR_PERIPH (0 | PMB_BUS_PERIPH << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PERIPH 4 + +#define PMB_BUS_CHIP_CLKRST 0 +#define PMB_ADDR_CHIP_CLKRST (1 | PMB_BUS_CHIP_CLKRST << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_CHIP_CLKRST 0 + +#define PMB_BUS_SYSPLL 0 +#define PMB_ADDR_SYSPLL (3 | PMB_BUS_SYSPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_SYSPLL 0 + +#define PMB_BUS_PVTMON 0 +#define PMB_ADDR_PVTMON (6 | PMB_BUS_PVTMON << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PVTMON 0 + +#define PMB_BUS_MEMC 0 +#define PMB_ADDR_MEMC (8 | PMB_BUS_MEMC << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MEMC 1 + +#define PMB_BUS_USB20_2X 1 +#define PMB_ADDR_USB20_2X (10 | PMB_BUS_USB20_2X << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_USB20_2X 4 + +#define PMB_BUS_WAN 1 +#define PMB_ADDR_WAN (11 | PMB_BUS_WAN << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_WAN 3 + +#define PMB_BUS_XRDP 1 +#define PMB_ADDR_XRDP (12 | PMB_BUS_XRDP << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP 3 + +#define PMB_BUS_PCIE0 1 +#define PMB_ADDR_PCIE0 (17 | PMB_BUS_PCIE0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE0 1 + +#define PMB_BUS_PCIE1 1 +#define PMB_ADDR_PCIE1 (18 | PMB_BUS_PCIE1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE1 1 + +#define PMB_BUS_WLAN0 1 +#define PMB_ADDR_WLAN0 (19 | PMB_BUS_WLAN0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_WLAN0 1 + +#define PMB_BUS_WLAN0_PHY1 1 +#define PMB_ADDR_WLAN0_PHY1 (20 | PMB_BUS_WLAN0_PHY1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_WLAN0_PHY1 1 + +#define PMB_BUS_WLAN0_PHY2 1 +#define PMB_ADDR_WLAN0_PHY2 (21 | PMB_BUS_WLAN0_PHY2 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_WLAN0_PHY2 1 + +#define PMB_BUS_ORION_CPU0 0 +#define PMB_ADDR_ORION_CPU0 (32 | PMB_BUS_ORION_CPU0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU0 1 + +#define PMB_BUS_ORION_CPU1 0 +#define PMB_ADDR_ORION_CPU1 (33 | PMB_BUS_ORION_CPU1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU1 1 + +#define PMB_BUS_ORION_CPU2 0 +#define PMB_ADDR_ORION_CPU2 (33 | PMB_BUS_ORION_CPU2 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU2 1 + +#define PMB_BUS_ORION_NONCPU 0 +#define PMB_ADDR_ORION_NONCPU (36 | PMB_BUS_ORION_NONCPU << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_NONCPU 1 + +#define PMB_BUS_BIU_PLL 0 +#define PMB_ADDR_BIU_PLL (38 | PMB_BUS_BIU_PLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_PLL 0 + +#define PMB_BUS_BIU_BPCM 0 +#define PMB_ADDR_BIU_BPCM (39 | PMB_BUS_BIU_BPCM << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_BPCM 1 + diff --git a/arch/arm/include/asm/arch-bcm6855/pmc_drv_cfg.h b/arch/arm/include/asm/arch-bcm6855/pmc_drv_cfg.h new file mode 100644 index 0000000000..83aa0127c1 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6855/pmc_drv_cfg.h @@ -0,0 +1,34 @@ +/* +<:copyright-BRCM:2019:DUAL/GPL:standard + + Copyright (c) 2019 Broadcom + All Rights Reserved + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License, version 2, as published by +the Free Software Foundation (the "GPL"). + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + + +A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by +writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. + +:> +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_ON_HOSTCPU 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm6855/rng.h b/arch/arm/include/asm/arch-bcm6855/rng.h new file mode 100644 index 0000000000..e30018116a --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6855/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6855_RNG_H +#define _6855_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + uint32_t reserved1[2]; // offset 0x18, PMB reg index 6/7 + // Client-specific registers + uint32_t client_specific[24]; // offset 0x20, PMB reg index 8..31 + // Zones + BPCM_ZONE zones[]; // offset 0x80..(0x20 + MAX_ZONES*32)), PMB reg index 32..(32+(MAX_ZONES*8-1)) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + CLASSIC_BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x18, actual offset = 6 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x1c, actual offset = 7 + BPCM_SR_CONTROL sr_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0[3]; // offset = 0x24, actual offset = 9 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + uint32_t biu_clk_control0; // offset = 0x34, actual offset = 13 + uint32_t reserved1[2]; // offset = 0x38, actual offset = 14 + BPCM_ZONE zones; // offset = 0x40, actual offset = 16 +} ARM_BPCM_REGS; + +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + PLL_DECNDIV_REG decndiv; // offset = 0x44, actual offset = 0x11 + PLL_DECPDIV_REG decpdiv; // offset = 0x48, actual offset = 0x12 + PLL_DECCH25_REG decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_CLASSIC_BPCM_REGS; + +#define PLLCLASSICBPCMOffset(reg) offsetof(PLL_CLASSIC_BPCM_REGS,reg) +#define PLLCLASSICBPCMRegOffset(reg) (PLLCLASSICBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04 + uint32_t reserved0[6]; // offset = 0x08 + PLL_CTRL_REG resets; // offset = 0x20 + PLL_CFG0_REG cfg0; // offset = 0x24 + PLL_CFG1_REG cfg1; // offset = 0x28 + PLL_NDIV_REG ndiv; // offset = 0x2c + PLL_PDIV_REG pdiv; // offset = 0x30 + PLL_LOOP0_REG loop0; // offset = 0x34 + uint32_t reserved1; // offset = 0x38 + PLL_LOOP1_REG loop1; // offset = 0x3c + PLL_CHCFG_REG ch01_cfg; // offset = 0x40 + PLL_CHCFG_REG ch23_cfg; // offset = 0x44 + PLL_CHCFG_REG ch45_cfg; // offset = 0x48 + PLL_STAT_REG stat; // offset = 0x4c + uint32_t strap; // offset = 0x50 + PLL_DECNDIV_REG decndiv; // offset = 0x54 + PLL_DECPDIV_REG decpdiv; // offset = 0x58 + PLL_DECCH25_REG decch25; // offset = 0x5c +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved1; // offset = 0x2c, actual offset = 11 + uint32_t clkrst_cfg; // offset = 0x30, actual offset = 12 + uint32_t clkrst_control; // offset = 0x34, actual offset = 13 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm6856/brom.h b/arch/arm/include/asm/arch-bcm6856/brom.h new file mode 100644 index 0000000000..2c4c19944f --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6856/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6856_BROM_H +#define _6856_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK<> 5) & 0x0f) : (0)) +#define GPIO_NUM_TO_MASK(X) (((X & BP_GPIO_NUM_MASK) < GPIO_NUM_MAX) ? (1 << ((X & BP_GPIO_NUM_MASK) & 0x1f)) : (0)) +#define GPIO_NUM_TO_ARRAY_SHIFT(X) (((X) & BP_GPIO_NUM_MASK) & 0x1f) + +/* +** Misc Register Set Definitions. +*/ + +typedef struct Misc { + uint32_t miscStrapBus; /* 0x00 */ +#define MISC_STRAP_BUS_BOOT_SEL_SHIFT 5 +#define MISC_STRAP_BUS_BOOT_SEL_MASK (0x38 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SPI_NOR (0x38 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_EMMC (0x30 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SPI_NAND (0x28 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SEL_NAND_MASK (0x20 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND (0x00 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SEL_PAGE_MASK (0x18 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_2K_PAGE (0x00 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_4K_PAGE (0x08 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_8K_PAGE (0x10 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_512_PAGE (0x18 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_SEL_ECC_MASK (0x7 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_DISABLE (0x0 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_1_BIT (0x1 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_4_BIT (0x2 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_8_BIT (0x3 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_12_BIT (0x4 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_24_BIT (0x5 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_40_BIT (0x6 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOT_NAND_ECC_60_BIT (0x7 << MISC_STRAP_BUS_BOOT_SEL_SHIFT) +#define MISC_STRAP_BUS_BOOTROM_BOOT_N (0x1 << 11) + + uint32_t miscStrapOverride; /* 0x04 */ + uint32_t miscMaskUBUSErr; /* 0x08 */ + uint32_t miscPeriphCtrl; /* 0x0c */ + uint32_t miscSPImasterCtrl; /* 0x10 */ + uint32_t miscDierevid; /* 0x14 */ + uint32_t miscPeriphMiscCtrl; /* 0x18 */ + uint32_t miscPeriphMiscStat; /* 0x1c */ + uint32_t miscMbox0_data; /* 0x20 */ + uint32_t miscMbox1_data; /* 0x24 */ + uint32_t miscMbox2_data; /* 0x28 */ + uint32_t miscMbox3_data; /* 0x2c */ + uint32_t miscMbox_ctrl; /* 0x30 */ + uint32_t miscSoftResetB; /* 0x34 */ + uint32_t miscSpare0; /* 0x38 */ + uint32_t miscSWdebugNW[2]; /* 0x3c-0x40 */ + uint32_t miscWDenReset; /* 0x44 */ +} Misc; + +#define MISC_BASE 0xff802600 +#define MISC ((volatile Misc * const) MISC_BASE) + +// PERF +typedef struct PerfControl { /* GenInt */ + uint32_t RevID; /* (00) word 0 */ +#define CHIP_ID_SHIFT 12 +#define CHIP_ID_MASK (0xfffff << CHIP_ID_SHIFT) +#define REV_ID_MASK 0xff +} PerfControl; + +#define PERF_BASE 0xff800000 +#define PERF ((volatile PerfControl * const) PERF_BASE) + +#endif diff --git a/arch/arm/include/asm/arch-bcm6856/otp.h b/arch/arm/include/asm/arch-bcm6856/otp.h new file mode 100644 index 0000000000..82a45b6d52 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6856/otp.h @@ -0,0 +1,50 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +#ifndef _6856_OTP_H +#define _6856_OTP_H + + +#define JTAG_OTP_BASE 0xff802800 + +/* row 8 */ +#define OTP_CPU_CORE_CFG_ROW 8 +#define OTP_CPU_CORE_CFG_SHIFT 28 +#define OTP_CPU_CORE_CFG_MASK 0x7 + +/* row 9 */ +#define OTP_CPU_CLOCK_FREQ_ROW 9 +#define OTP_CPU_CLOCK_FREQ_SHIFT 0 +#define OTP_CPU_CLOCK_FREQ_MASK 0x7 + +/* row 17 */ +#define OTP_BRCM_BTRM_BOOT_ENABLE_ROW 17 +#define OTP_BRCM_BTRM_BOOT_ENABLE_SHIFT 3 +#define OTP_BRCM_BTRM_BOOT_ENABLE_MASK 1 + +/* row 18 */ +#define OTP_CUST_BTRM_BOOT_ENABLE_ROW 18 +#define OTP_CUST_BTRM_BOOT_ENABLE_SHIFT 15 +#define OTP_CUST_BTRM_BOOT_ENABLE_MASK 7 + +/* row 23 */ +#define OTP_CUST_MFG_MRKTID_ROW 23 +#define OTP_CUST_MFG_MRKTID_SHIFT 0 +#define OTP_CUST_MFG_MRKTID_MASK 0xffff + +/* A row initializer that maps actual row number with mask and shift to a feature name; + * this allows to use features vs. rows for common functionality, + * such as secure boot handling frequency, chipid and so on + * prevent ifdef dependencies when used outside of arch directories for common among SoCs logic + * */ +#define DEFINE_OTP_MAP_ROW_INITLR(__VV__) \ + static otp_hw_cmn_row_t __VV__[ ] = { \ + {OTP_MAP_BRCM_BTRM_BOOT_ENABLE, OTP_BRCM_BTRM_BOOT_ENABLE_ROW, OTP_BRCM_BTRM_BOOT_ENABLE_MASK, OTP_BRCM_BTRM_BOOT_ENABLE_SHIFT, 1},\ + {OTP_MAP_CUST_BTRM_BOOT_ENABLE, OTP_CUST_BTRM_BOOT_ENABLE_ROW, OTP_CUST_BTRM_BOOT_ENABLE_MASK, OTP_CUST_BTRM_BOOT_ENABLE_SHIFT, 1},\ + {OTP_MAP_CUST_MFG_MRKTID, OTP_CUST_MFG_MRKTID_ROW, OTP_CUST_MFG_MRKTID_MASK, OTP_CUST_MFG_MRKTID_SHIFT, 1}, \ + {OTP_MAP_CPU_CLOCK_FREQ, OTP_CPU_CLOCK_FREQ_ROW, OTP_CPU_CLOCK_FREQ_MASK, OTP_CPU_CLOCK_FREQ_SHIFT, 1}, \ + {OTP_MAP_CPU_CORE_CFG, OTP_CPU_CORE_CFG_ROW, OTP_CPU_CORE_CFG_MASK, OTP_CPU_CORE_CFG_SHIFT, 1}, \ + } + +#endif diff --git a/arch/arm/include/asm/arch-bcm6856/pmc.h b/arch/arm/include/asm/arch-bcm6856/pmc.h new file mode 100644 index 0000000000..eb112bb424 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6856/pmc.h @@ -0,0 +1,361 @@ +#ifndef PMC_H +#define PMC_H + +/* + * Power Management Control + */ +typedef struct PmcCtrlReg { + uint32_t gpTmr0Ctl; /* 0x018 */ + uint32_t gpTmr0Cnt; /* 0x01c */ + uint32_t gpTmr1Ctl; /* 0x020 */ + uint32_t gpTmr1Cnt; /* 0x024 */ + uint32_t hostMboxIn; /* 0x028 */ + uint32_t hostMboxOut; /* 0x02c */ + uint32_t reserved[4]; /* 0x030 */ + uint32_t dmaCtrl; /* 0x040 */ + uint32_t dmaStatus; /* 0x044 */ + uint32_t dma0_3FifoStatus; /* 0x048 */ + uint32_t reserved1[4]; /* 0x04c */ + uint32_t diagControl; /* 0x05c */ + uint32_t diagHigh; /* 0x060 */ + uint32_t diagLow; /* 0x064 */ + uint32_t reserved8; /* 0x068 */ + uint32_t addr1WndwMask; /* 0x06c */ + uint32_t addr1WndwBaseIn; /* 0x070 */ + uint32_t addr1WndwBaseOut; /* 0x074 */ + uint32_t addr2WndwMask; /* 0x078 */ + uint32_t addr2WndwBaseIn; /* 0x07c */ + uint32_t addr2WndwBaseOut; /* 0x080 */ + uint32_t scratch; /* 0x084 */ + uint32_t reserved9; /* 0x088 */ + uint32_t softResets; /* 0x08c */ + uint32_t reserved2; /* 0x090 */ + uint32_t m4keCoreStatus; /* 0x094 */ + uint32_t reserved3; /* 0x098 */ + uint32_t ubSlaveTimeout; /* 0x09c */ + uint32_t diagEn; /* 0x0a0 */ + uint32_t devTimeout; /* 0x0a4 */ + uint32_t ubusErrorOutMask; /* 0x0a8 */ + uint32_t diagCaptStopMask; /* 0x0ac */ + uint32_t revId; /* 0x0b0 */ + uint32_t gpTmr2Ctl; /* 0x0b4 */ + uint32_t gpTmr2Cnt; /* 0x0b8 */ + uint32_t reserved4[2]; /* 0x0bc */ + uint32_t diagCtrl; /* 0x0c4 */ + uint32_t diagStat; /* 0x0c8 */ + uint32_t diagMask; /* 0x0cc */ + uint32_t diagRslt; /* 0x0d0 */ + uint32_t diagCmp; /* 0x0d4 */ + uint32_t diagCapt; /* 0x0d8 */ + uint32_t diagCnt; /* 0x0dc */ + uint32_t diagEdgeCnt; /* 0x0e0 */ + uint32_t reserved5[4]; /* 0x0e4 */ + uint32_t smisc_bus_config; /* 0x0f4 */ + uint32_t lfsr; /* 0x0f8 */ + uint32_t dqm_pac_lock; /* 0x0fc */ + uint32_t l1_irq_4ke_mask; /* 0x100 */ + uint32_t l1_irq_4ke_status; /* 0x104 */ + uint32_t l1_irq_mips_mask; /* 0x108 */ + uint32_t l1_irq_mips_status; /* 0x10c */ + uint32_t l1_irq_mips1_mask; /* 0x110 */ + uint32_t reserved6[3]; /* 0x114 */ + uint32_t l2_irq_gp_mask; /* 0x120 */ + uint32_t l2_irq_gp_status; /* 0x124 */ + uint32_t l2_irq_gp_set; /* 0x128 */ + uint32_t reserved7; /* 0x12c */ + uint32_t gp_in_irq_mask; /* 0x130 */ + uint32_t gp_in_irq_status; /* 0x134 */ + uint32_t gp_in_irq_set; /* 0x138 */ + uint32_t gp_in_irq_sense; /* 0x13c */ + uint32_t gp_in; /* 0x140 */ + uint32_t gp_out; /* 0x144 */ +} PmcCtrlReg; + +typedef struct PmcDmaReg { + /* 0x00 */ + uint32_t src; + uint32_t dest; + uint32_t cmdList; + uint32_t lenCtl; + /* 0x10 */ + uint32_t rsltSrc; + uint32_t rsltDest; + uint32_t rsltHcs; + uint32_t rsltLenStat; +} PmcDmaReg; + +typedef struct PmcTokenReg { + /* 0x00 */ + uint32_t bufSize; + uint32_t bufBase; + uint32_t idx2ptrIdx; + uint32_t idx2ptrPtr; + /* 0x10 */ + uint32_t unused[2]; + uint32_t bufSize2; +} PmcTokenReg; + +typedef struct PmcPerfPowReg { + uint32_t freqScalarCtrl; /* 0x3c */ + uint32_t freqScalarMask; /* 0x40 */ +} PmcPerfPowReg; + +typedef struct PmcDQMPac { + uint32_t dqmPac[32]; +} PmcDQMPac; + +typedef struct PmcDQMReg { + uint32_t cfg; /* 0x1c00 */ + uint32_t _4keLowWtmkIrqMask; /* 0x1c04 */ + uint32_t mipsLowWtmkIrqMask; /* 0x1c08 */ + uint32_t lowWtmkIrqMask; /* 0x1c0c */ + uint32_t _4keNotEmptyIrqMask; /* 0x1c10 */ + uint32_t mipsNotEmptyIrqMask; /* 0x1c14 */ + uint32_t notEmptyIrqSts; /* 0x1c18 */ + uint32_t queueRst; /* 0x1c1c */ + uint32_t notEmptySts; /* 0x1c20 */ + uint32_t nextAvailMask; /* 0x1c24 */ + uint32_t nextAvailQueue; /* 0x1c28 */ + uint32_t mips1LowWtmkIrqMask; /* 0x1c2c */ + uint32_t mips1NotEmptyIrqMask; /* 0x1c30 */ + uint32_t autoSrcPidInsert; /* 0x1c34 */ + uint32_t timerIrqStatus; /* 0x1c38 */ + uint32_t timerStatus; /* 0x1c3c */ + uint32_t _4keTimerIrqMask; /* 0x1c40 */ + uint32_t mipsTimerIrqMask; /* 0x1c44 */ + uint32_t mips1TimerIrqMask; /* 0x1c48 */ +} PmcDQMReg; + +typedef struct PmcCntReg { + uint32_t cntr[10]; + uint32_t unused[6]; /* 0x28-0x3f */ + uint32_t cntrIrqMask; + uint32_t cntrIrqSts; +} PmcCntReg; + +typedef struct PmcDqmQCtrlReg { + uint32_t size; + uint32_t cfga; + uint32_t cfgb; + uint32_t cfgc; +} PmcDqmQCtrlReg; + +typedef struct PmcDqmQDataReg { + uint32_t word[4]; +} PmcDqmQDataReg; + +typedef struct PmcDqmQMibReg { + uint32_t qNumFull[32]; + uint32_t qNumEmpty[32]; + uint32_t qNumPushed[32]; +} PmcDqmQMibReg; + +typedef struct PMSSBMasterControl { + uint32_t control; /* 0x0060 */ + uint32_t wr_data; /* 0x0064 */ + uint32_t rd_data; /* 0x0068 */ + uint32_t status; /* 0x006c */ +} PMSSBMasterControl; + +#define SWR_FIRST 0 +#define SWR_LAST 4 +#define SWR_READ_CMD_P 0xB800 +#define SWR_WR_CMD_P 0xB400 +#define SWR_EN 0x1000 +#define SET_ADDR(ps, reg) (((ps) << 5 | ((reg) & 0x1f)) & 0x2ff) + +#define SR_TEST(x) {\ + int num;\ + for(num=1000;(((PROCMON->SSBMaster.control) & 0x8000) && (num > 0)) ; num--) ;\ + if(!num) \ + {\ + printf("Error num %d timeout num = %d!!!", (x), num);\ + }\ +} + + +typedef struct PmmReg { + uint32_t memPowerCtrl; /* 0x0000 */ + uint32_t regSecurityConfig; /* 0x0004 */ +} PmmReg; + +typedef struct keyholeReg { + uint32_t ctrlSts; + uint32_t wrData; + uint32_t mutex; + uint32_t rdData; +} keyholeReg; + +typedef struct PmbBus { + uint32_t config; /* 0x0100 */ + uint32_t arbiter; /* 0x0104 */ + uint32_t timeout; /* 0x0108 */ + uint32_t unused1; /* 0x010c */ + keyholeReg keyhole[4]; /* 0x0110-0x014f */ + uint32_t unused2[44]; /* 0x0150-0x01ff */ + uint32_t map[64]; /* 0x0200-0x02ff */ +}PmbBus; + +typedef struct CoreCtrl { + uint32_t coreEnable; /* 0x0400 */ + uint32_t autoresetControl; /* 0x0404 */ + uint32_t coreIdle; /* 0x0408 */ + uint32_t coreResetCause; /* 0x040c */ + uint32_t memPwrDownCtrl0; /* 0x0410 */ + uint32_t memPwrDownSts0; /* 0x0414 */ + uint32_t memPwrDownCtrl1; /* 0x0418 */ + uint32_t memPwrDownSts1; /* 0x041c */ + uint32_t sysFlg0Status; /* 0x0420 */ + uint32_t sysFlg0Set; /* 0x0424 */ + uint32_t sysFlg0Clear; /* 0x0428 */ + uint32_t unused1; /* 0x042c */ + uint32_t usrFlg0Status; /* 0x0430 */ + uint32_t usrFlg0Set; /* 0x0434 */ + uint32_t usrFlg0Clear; /* 0x0438 */ + uint32_t unused2; /* 0x043c */ + uint32_t subsystemRev; /* 0x0440 */ + uint32_t resetVector; /* 0x0444 */ +} CoreCtrl; + +typedef struct CoreState { + uint32_t sysMbx[8]; /* 0x0480 */ + uint32_t usrMbx[8]; /* 0x04a0 */ + uint32_t sysMtx[4]; /* 0x04c0 */ + uint32_t usrMtx[8]; /* 0x04d0 */ +} CoreState; + +typedef struct CoreIntr { + uint32_t irqStatus; /* 0x0500 */ + uint32_t irqSet; /* 0x0504 */ + uint32_t irqClear; /* 0x0508 */ + uint32_t unused1; /* 0x050c */ + uint32_t srqStatus; /* 0x0510 */ + uint32_t srqSet; /* 0x0514 */ + uint32_t srqClear; /* 0x0518 */ + uint32_t unused2; /* 0x051c */ + uint32_t drqStatus; /* 0x0520 */ + uint32_t drqSet; /* 0x0524 */ + uint32_t drqClear; /* 0x0528 */ + uint32_t unused3; /* 0x052c */ + uint32_t frqStatus; /* 0x0530 */ + uint32_t frqSet; /* 0x0534 */ + uint32_t frqClear; /* 0x0538 */ + uint32_t unused4; /* 0x053c */ + uint32_t hostIrqLatched; /* 0x0540 */ + uint32_t hostIrqSet; /* 0x0544 */ + uint32_t hostIrqClear; /* 0x0548 */ + uint32_t hostIrqEnable; /* 0x054c */ + uint32_t obusFaultStatus; /* 0x0550 */ + uint32_t obusFaultClear; /* 0x0554 */ + uint32_t obusFaultAddr; /* 0x0558 */ +} CoreIntr; + +typedef struct CoreProfile { + uint32_t mutex; /* 0x0580 */ + uint32_t lastConfPcLo; /* 0x0584 */ + uint32_t lastConfPcHi; /* 0x0588 */ + uint32_t lastPcLo; /* 0x058c */ + uint32_t lastPcHi; /* 0x0590 */ + uint32_t braTargetPc0Lo; /* 0x0594 */ + uint32_t braTargetPc0Hi; /* 0x0598 */ + uint32_t braTargetPc1Lo; /* 0x059c */ + uint32_t braTargetPc1Hi; /* 0x05a0 */ + uint32_t braTargetPc2Lo; /* 0x05a4 */ + uint32_t braTargetPc2Hi; /* 0x05a8 */ + uint32_t braTargetPc3Lo; /* 0x05ac */ + uint32_t braTargetPc3Hi; /* 0x05b0 */ + uint32_t unused[3]; /* 0x05b4-0x05bf */ + uint32_t profSampleW[4]; /* 0x05c0 */ +} CoreProfile; + +typedef struct MaestroMisc { + CoreCtrl coreCtrl; /* 0x0400 */ + uint32_t unused1[14]; /* 0x0448-0x047f */ + CoreState coreState; /* 0x0480 */ + uint32_t unused2[4]; /* 0x04f0-0x04ff */ + CoreIntr interrupt; /* 0x0500 */ + uint32_t unused3[9]; /* 0x055c-0x057f */ + CoreProfile profile; /* 0x0580 */ +} MaestroMisc; + +typedef struct Pmc { + uint32_t baseReserved; /* 0x0000 */ + uint32_t unused0[1029]; + PmcCtrlReg ctrl; /* 0x1018 */ + + uint32_t unused1[174]; /* 0x1148-0x13ff */ + + PmcTokenReg token; /* 0x1400 */ + uint32_t unused2[136]; /* 0x141c-0x163b */ + + PmcPerfPowReg perfPower; /* 0x163c */ + uint32_t unused3[175]; /* 0x1644-0x18ff */ + + PmcCntReg hwCounter; /* 0x1900 */ + uint32_t unused4[110]; /* 0x1948-0x1aff */ + + PmcDQMPac dqmPac; /* 0x1b00 */ + uint32_t unused5[32]; /* 0x1b80-0x1bff */ + + PmcDQMReg dqm; /* 0x1c00 */ + uint32_t unused6[749]; /* 0x1c4c-0x27ff */ + + uint32_t qStatus[32]; /* 0x2800 */ + uint32_t unused7[480]; /* 0x2880-0x2fff */ + + PmcDqmQMibReg qMib; /* 0x3000 */ + uint32_t unused8[928]; /* 0x3180-0x3fff */ + + PmcDqmQCtrlReg dqmQCtrl[8]; /* 0x4000 */ + uint32_t unused9[992]; /* 0x4080-0x4fff */ + + PmcDqmQDataReg dqmQData[8]; /* 0x5000 */ +} Pmc; +#define PMC_BASE 0xffb00000 +#define PMC ((volatile Pmc * const) PMC_BASE) + +typedef struct Procmon { + PmmReg pmm; /* 0x20000 */ + uint32_t unused11[22]; /* 0x20008-0x2005f */ + + PMSSBMasterControl SSBMaster; /* 0x20060 */ + uint32_t unused12[36]; /* 0x20070-0x200ff */ + + PmbBus pmb; /* 0x20100 */ + uint32_t unused13[64]; /* 0x20300-0x203ff */ + + MaestroMisc maestroReg; /* 0x20400 */ +} Procmon; +#define PROC_MON_BASE 0xffb20000 +#define PROCMON ((volatile Procmon * const) PROC_MON_BASE) + +typedef struct +{ + uint32_t control; +#define PMC_PMBM_START (1 << 31) +#define PMC_PMBM_TIMEOUT (1 << 30) +#define PMC_PMBM_SLAVE_ERR (1 << 29) +#define PMC_PMBM_BUSY (1 << 28) +#define PMC_PMBM_BUS_SHIFT (20) +#define PMC_PMBM_Read (0 << 24) +#define PMC_PMBM_Write (1 << 24) + uint32_t wr_data; + uint32_t mutex; + uint32_t rd_data; +} PMB_keyhole_reg; + +typedef struct PMBMaster { + uint32_t config; +#define PMB_NUM_REGS_SHIFT (20) +#define PMB_NUM_REGS_MASK (0x3ff) + uint32_t arbitger; + uint32_t timeout; + uint32_t reserved; + PMB_keyhole_reg keyhole[4]; + uint32_t reserved1[44]; + uint32_t map[64]; +} PMBMaster; +#define PMB_BASE 0xffb20100 +#define PMB ((volatile PMBMaster * const) PMB_BASE) + +#endif diff --git a/arch/arm/include/asm/arch-bcm6856/pmc_addr.h b/arch/arm/include/asm/arch-bcm6856/pmc_addr.h new file mode 100644 index 0000000000..50a31dae80 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6856/pmc_addr.h @@ -0,0 +1,102 @@ +#define PMB_BUS_MAX 2 +#define PMB_BUS_ID_SHIFT 12 + +#define PMB_BUS_PERIPH 0 +#define PMB_ADDR_PERIPH (0 | PMB_BUS_PERIPH << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PERIPH 4 + +#define PMB_BUS_MEMC 0 +#define PMB_ADDR_MEMC (1 | PMB_BUS_MEMC << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MEMC 1 + +#define PMB_BUS_PVTMON 0 +#define PMB_ADDR_PVTMON (2 | PMB_BUS_PVTMON << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PVTMON 0 + +#define PMB_BUS_CHIP_CLKRST 0 +#define PMB_ADDR_CHIP_CLKRST (3 | PMB_BUS_CHIP_CLKRST << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_CHIP_CLKRST 0 + +#define PMB_BUS_USB30_2X 0 +#define PMB_ADDR_USB30_2X (4 | PMB_BUS_USB30_2X << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_USB30_2X 4 + +#define PMB_BUS_SYSPLL 0 +#define PMB_ADDR_SYSPLL (5 | PMB_BUS_SYSPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_SYSPLL 0 + +#define PMB_BUS_RDPPLL 0 +#define PMB_ADDR_RDPPLL (6 | PMB_BUS_RDPPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_RDPPLL 0 + +#define PMB_BUS_PCIE0 1 +#define PMB_ADDR_PCIE0 (7 | PMB_BUS_PCIE0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE0 1 + +#define PMB_BUS_PCIE1 1 +#define PMB_ADDR_PCIE1 (8 | PMB_BUS_PCIE1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE1 1 + +#define PMB_BUS_PCIE2 1 +#define PMB_ADDR_PCIE2 (9 | PMB_BUS_PCIE2 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE2 1 + +#define PMB_BUS_XRDP 1 +#define PMB_ADDR_XRDP (10 | PMB_BUS_XRDP << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP 3 + +#define PMB_BUS_XRDP_RC0 1 +#define PMB_ADDR_XRDP_RC0 (11 | PMB_BUS_XRDP_RC0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC0 1 + +#define PMB_BUS_XRDP_RC1 1 +#define PMB_ADDR_XRDP_RC1 (12 | PMB_BUS_XRDP_RC1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC1 1 + +#define PMB_BUS_XRDP_RC2 1 +#define PMB_ADDR_XRDP_RC2 (13 | PMB_BUS_XRDP_RC2 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC2 1 + +#define PMB_BUS_XRDP_RC3 1 +#define PMB_ADDR_XRDP_RC3 (14 | PMB_BUS_XRDP_RC3 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC3 1 + +#define PMB_BUS_XRDP_RC4 1 +#define PMB_ADDR_XRDP_RC4 (15 | PMB_BUS_XRDP_RC4 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC4 1 + +#define PMB_BUS_XRDP_RC5 1 +#define PMB_ADDR_XRDP_RC5 (16 | PMB_BUS_XRDP_RC5 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC5 1 + +#define PMB_BUS_XRDP_RC6 1 +#define PMB_ADDR_XRDP_RC6 (17 | PMB_BUS_XRDP_RC6 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC6 1 + +#define PMB_BUS_XRDP_RC7 1 +#define PMB_ADDR_XRDP_RC7 (18 | PMB_BUS_XRDP_RC7 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC7 1 + +#define PMB_BUS_WAN 1 +#define PMB_ADDR_WAN (19 | PMB_BUS_WAN << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_WAN 6 + +#define PMB_BUS_ORION_CPU0 0 +#define PMB_ADDR_ORION_CPU0 (32 | PMB_BUS_ORION_CPU0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU0 1 + +#define PMB_BUS_ORION_CPU1 0 +#define PMB_ADDR_ORION_CPU1 (33 | PMB_BUS_ORION_CPU1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU1 1 + +#define PMB_BUS_ORION_NONCPU 0 +#define PMB_ADDR_ORION_NONCPU (36 | PMB_BUS_ORION_NONCPU << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_NONCPU 1 + +#define PMB_BUS_BIU_PLL 0 +#define PMB_ADDR_BIU_PLL (38 | PMB_BUS_BIU_PLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_PLL 1 + +#define PMB_BUS_BIU_BPCM 0 +#define PMB_ADDR_BIU_BPCM (39 | PMB_BUS_BIU_BPCM << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_BPCM 1 diff --git a/arch/arm/include/asm/arch-bcm6856/pmc_drv_cfg.h b/arch/arm/include/asm/arch-bcm6856/pmc_drv_cfg.h new file mode 100644 index 0000000000..2fcca35220 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6856/pmc_drv_cfg.h @@ -0,0 +1,38 @@ +/* +<:copyright-BRCM:2019:DUAL/GPL:standard + + Copyright (c) 2019 Broadcom + All Rights Reserved + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License, version 2, as published by +the Free Software Foundation (the "GPL"). + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + + +A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by +writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. + +:> +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_3_X +#define PMC_IMPL_3_1 + +#define PMC_UCBID 1 +#define PMC_RAM_BOOT 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm6856/rng.h b/arch/arm/include/asm/arch-bcm6856/rng.h new file mode 100644 index 0000000000..415958d135 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6856/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6858_RNG_H +#define _6858_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + BPCM_SGPHY_CNTL sgphy_cntl; // offset = 0x38, actual offset = 14 + BPCM_SGPHY_STATUS sgphy_status; // offset = 0x3c, actual offset = 15 + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + BPCM_GLOBAL_CNTL global_control; // offset = 0x2c, actual offset = 11 + BPCM_MISC_CONTROL misc_control; // offset = 0x30, actual offset = 12 + BPCM_MISC_CONTROL2 misc_control2; // offset = 0x34, actual offset = 13 + uint32_t rvrsd[2]; + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} BPCM_VDSL_REGS; // total offset space = 4096 + +#define BPCMVDSLOffset(reg) offsetof(BPCM_VDSL_REGS,reg) +#define BPCMVDSLRegOffset(reg) (BPCMVDSLOffset(reg) >> 2) + +// ARM BPCM addresses as used by 63138/63148 and possibly others (28nm) +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + BPCM_PWD_ACCUM_CONTROL pwd_accum_control; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved; // offset = 0x2c, actual offset = 11 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + uint32_t biu_clk_control0; // offset = 0x34, actual offset = 13 + uint32_t reserved1[2]; // offset = 0x38, actual offset = 13..14 + BPCM_ZONE zones[1020]; // offset = 0x40..0x3FFC, actual offset = 16..4095 (1020 * 4 = 4080 + 16 = 4096) +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + PLL_DECNDIV_REG decndiv; // offset = 0x44, actual offset = 0x11 + PLL_DECPDIV_REG decpdiv; // offset = 0x48, actual offset = 0x12 + PLL_DECCH25_REG decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t reserved0; // offset = 0x24, actual offset = 9 + BPCM_SR_CONTROL sr_control; // offset = 0x28, actual offset = 10 + uint32_t reserved1; // offset = 0x2c, actual offset = 11 + uint32_t clkrst_cfg; // offset = 0x30, actual offset = 12 + uint32_t clkrst_control; // offset = 0x34, actual offset = 13 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm6858/brom.h b/arch/arm/include/asm/arch-bcm6858/brom.h new file mode 100644 index 0000000000..c3bf26c1e9 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6858/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6858_BROM_H +#define _6858_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK<SSBMaster.control) & 0x8000) && (num > 0)) ; num--) ;\ + if(!num) \ + {\ + printf("Error num %d timeout num = %d!!!", (x), num);\ + }\ +} + +typedef struct PMEctrControl { + uint32_t control; + uint32_t interval; + uint32_t thresh_lo; + uint32_t thresh_hi; + uint32_t count; +} PMEctrControl; + +typedef struct PMBMaster { + uint32_t ctrl; +#define PMC_PMBM_START (1 << 31) +#define PMC_PMBM_TIMEOUT (1 << 30) +#define PMC_PMBM_SLAVE_ERR (1 << 29) +#define PMC_PMBM_BUSY (1 << 28) +#define PMC_PMBM_Read (0 << 20) +#define PMC_PMBM_Write (1 << 20) + uint32_t wr_data; + uint32_t timeout; + uint32_t rd_data; + uint32_t unused[4]; +} PMBMaster; + +typedef struct PMAPVTMONControl { + uint32_t control; + uint32_t reserved; + uint32_t cfg_lo; + uint32_t cfg_hi; + uint32_t data; + uint32_t vref_data; + uint32_t unused[2]; + uint32_t ascan_cfg; + uint32_t warn_temp; + uint32_t reset_temp; + uint32_t temp_value; + uint32_t data1_value; + uint32_t data2_value; + uint32_t data3_value; +} PMAPVTMONControl; + +typedef struct PMUBUSCfg { + uint32_t window[8]; + uint32_t control; +} PMUBUSCfg; + +typedef struct ProcessMonitorRegs { + uint32_t MonitorCtrl; /* 0x00 */ + uint32_t unused0[7]; + PMRingOscillatorControl ROSC; /* 0x20 */ + uint32_t unused1; + PMMiscControl Misc; /* 0x40 */ + PMSSBMasterControl SSBMaster; /* 0x60 */ + uint32_t unused2[5]; + PMEctrControl Ectr; /* 0x80 */ + uint32_t unused3[11]; + PMBMaster PMBM[2]; /* 0xc0 */ + PMAPVTMONControl APvtmonCtrl; /* 0x100 */ + uint32_t unused4[9]; + PMUBUSCfg UBUSCfg; /* 0x160 */ +} ProcessMonitorRegs; + +#define PROC_MON_BASE 0x80280000 +#define PROCMON ((volatile ProcessMonitorRegs * const) PROC_MON_BASE) + +#endif diff --git a/arch/arm/include/asm/arch-bcm6858/pmc_addr.h b/arch/arm/include/asm/arch-bcm6858/pmc_addr.h new file mode 100644 index 0000000000..05c31db7e6 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6858/pmc_addr.h @@ -0,0 +1,134 @@ +#define PMB_BUS_MAX 2 +#define PMB_BUS_ID_SHIFT 8 + +#define PMB_BUS_PERIPH 0 +#define PMB_ADDR_PERIPH (0 | PMB_BUS_PERIPH << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PERIPH 3 + +#define PMB_BUS_CHIP_CLKRST 0 +#define PMB_ADDR_CHIP_CLKRST (1 | PMB_BUS_CHIP_CLKRST << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_CHIP_CLKRST 0 + +#define PMB_BUS_SYSPLL 0 +#define PMB_ADDR_SYSPLL (2 | PMB_BUS_SYSPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_SYSPLL 0 + +#define PMB_BUS_RDPPLL 0 +#define PMB_ADDR_RDPPLL (3 | PMB_BUS_RDPPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_RDPPLL 0 + +#define PMB_BUS_UNIPLL 0 +#define PMB_ADDR_UNIPLL (5 | PMB_BUS_UNIPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_UNIPLL 0 + +#define PMB_BUS_CRYPTO 1 +#define PMB_ADDR_CRYPTO (6 | PMB_BUS_CRYPTO << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_CRYPTO 0 + +#define PMB_BUS_APM 0 +#define PMB_ADDR_APM (7 | PMB_BUS_APM << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_APM 2 + +#define PMB_BUS_MEMC 0 +#define PMB_ADDR_MEMC (8 | PMB_BUS_MEMC << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MEMC 1 + +#define PMB_BUS_LPORT 1 +#define PMB_ADDR_LPORT (9 | PMB_BUS_LPORT << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_LPORT 3 + +#define PMB_BUS_USB30_2X 1 +#define PMB_ADDR_USB30_2X (10 | PMB_BUS_USB30_2X << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_USB30_2X 4 + +#define PMB_BUS_WAN 1 +#define PMB_ADDR_WAN (11 | PMB_BUS_WAN << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_WAN 7 + +#define PMB_BUS_XRDP 1 +#define PMB_ADDR_XRDP (12 | PMB_BUS_XRDP << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP 3 + +#define PMB_BUS_XRDP_QM 1 +#define PMB_ADDR_XRDP_QM (13 | PMB_BUS_XRDP_QM << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_QM 1 + +#define PMB_BUS_XRDP_RC_QUAD0 1 +#define PMB_ADDR_XRDP_RC_QUAD0 (14 | PMB_BUS_XRDP_RC_QUAD0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC_QUAD0 1 + +#define PMB_BUS_XRDP_RC_QUAD1 1 +#define PMB_ADDR_XRDP_RC_QUAD1 (15 | PMB_BUS_XRDP_RC_QUAD1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC_QUAD1 1 + +#define PMB_BUS_XRDP_RC_QUAD2 1 +#define PMB_ADDR_XRDP_RC_QUAD2 (16 | PMB_BUS_XRDP_RC_QUAD2 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC_QUAD2 1 + +#define PMB_BUS_XRDP_RC_QUAD3 1 +#define PMB_ADDR_XRDP_RC_QUAD3 (17 | PMB_BUS_XRDP_RC_QUAD3 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP_RC_QUAD3 1 + +#define PMB_BUS_PCIE0 1 +#define PMB_ADDR_PCIE0 (18 | PMB_BUS_PCIE0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE0 1 + +#define PMB_BUS_PCIE1 1 +#define PMB_ADDR_PCIE1 (19 | PMB_BUS_PCIE1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE1 1 + +#define PMB_BUS_SATA 1 +#define PMB_ADDR_SATA (20 | PMB_BUS_SATA << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_SATA 1 + +#define PMB_BUS_PCIE_UBUS 1 +#define PMB_ADDR_PCIE_UBUS (21 | PMB_BUS_PCIE_UBUS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE_UBUS 1 + +#define PMB_BUS_ORION_CPU0 0 +#define PMB_ADDR_ORION_CPU0 (24 | PMB_BUS_ORION_CPU0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU0 1 + +#define PMB_BUS_ORION_CPU1 0 +#define PMB_ADDR_ORION_CPU1 (25 | PMB_BUS_ORION_CPU1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU1 1 + +#define PMB_BUS_ORION_CPU2 0 +#define PMB_ADDR_ORION_CPU2 (26 | PMB_BUS_ORION_CPU2 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU2 1 + +#define PMB_BUS_ORION_CPU3 0 +#define PMB_ADDR_ORION_CPU3 (27 | PMB_BUS_ORION_CPU3 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU3 1 + +#define PMB_BUS_ORION_NONCPU 0 +#define PMB_ADDR_ORION_NONCPU (28 | PMB_BUS_ORION_NONCPU << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_NONCPU 1 + +#define PMB_BUS_ORION_ARS 0 +#define PMB_ADDR_ORION_ARS (29 | PMB_BUS_ORION_ARS << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_ARS 1 + +#define PMB_BUS_BIU_PLL 0 +#define PMB_ADDR_BIU_PLL (30 | PMB_BUS_BIU_PLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_PLL 1 // FIXMET + +#define PMB_BUS_BIU_BPCM 0 +#define PMB_ADDR_BIU_BPCM (31 | PMB_BUS_BIU_BPCM << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_BPCM 1 + +#define PMB_BUS_PCM 0 + +#define PMB_ADDR_PCM (0 | PMB_BUS_PCM << PMB_BUS_ID_SHIFT) + +#define PMB_ZONES_PCM 2 + +enum { + PCM_Zone_Main, + PCM_Zone_PCM=3, +}; + +//--------- SOFT Reset bits for PCM ------------------------ +#define BPCM_PCM_SRESET_HARDRST_N 0x00000004 +#define BPCM_PCM_SRESET_PCM_N 0x00000040 +#define BPCM_PCM_SRESET_BUS_N 0x00000001 diff --git a/arch/arm/include/asm/arch-bcm6858/pmc_drv_cfg.h b/arch/arm/include/asm/arch-bcm6858/pmc_drv_cfg.h new file mode 100644 index 0000000000..dd15d87a03 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6858/pmc_drv_cfg.h @@ -0,0 +1,39 @@ +/* +<:copyright-BRCM:2019:DUAL/GPL:standard + + Copyright (c) 2019 Broadcom + All Rights Reserved + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License, version 2, as published by +the Free Software Foundation (the "GPL"). + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + + +A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by +writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. + +:> +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_IMPL_1_X + +#define PMC_CPU_BIG_ENDIAN 1 +#define PMC_GETRCAL_SUPPORT 1 +#define PMC_STALL_SUPPORT 1 +#define PMC_UCBID 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm6858/rng.h b/arch/arm/include/asm/arch-bcm6858/rng.h new file mode 100644 index 0000000000..415958d135 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6858/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6858_RNG_H +#define _6858_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)<> 2) + +typedef union { + struct { + uint32_t pmb_Addr:8; + uint32_t hw_rev:8; + uint32_t module_id:16; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_ID_REG; + +typedef union { + struct { + uint32_t num_zones:8; + uint32_t sr_reg_bits:8; + uint32_t pllType:2; + uint32_t reserved0:1; + uint32_t ubus:1; + uint32_t reserved1:12; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CAPABILITES_REG; + +typedef union { + struct { + uint32_t ctrl_eswap:4; + uint32_t reserved0:4; + uint32_t ctrl_cd:4; + uint32_t reserved1:4; + uint32_t ctrl_seclev:8; + uint32_t reqout_seclev:8; + } Bits; + uint32_t Reg32; +} BPCM_UBUS_CTRL_REG; + +typedef union { + struct { + uint64_t addr_in:24; + uint64_t addr_out:24; + uint64_t pid:8; + uint64_t size:5; + uint64_t cmddta:1; + uint64_t en:2; + } Bits; + struct { + uint32_t word0; + uint32_t word1; + } Regs32; + uint64_t Reg64; +} BPCM_UBUS_CFG_REG; + +// There is a 20-bit address used to access any given BPCM register. The upper 8-bits +// is the device address and the lower 12-bits is used to represent the BPCM register +// set for that device. 32-bit registers are allocated on 4-byte boundaries +// (i.e. 0, 1, 2, 3...) rather than on byte boundaries (0x00, 0x04, 0x08, 0x0c...) +// Thus, to get the actual address of any given register within the device's address +// space, I'll use the "C" offsetof macro and divide the result by 4 +// e.g.: +// int regOffset = offsetof(BPCM_REGS,BPCM_AVS_PWD_CONTROL); // yields the byte offset of the target register +// int regAddress = regOffset/4; // yields the 32-bit word offset of the target register +// The ReadBPCMReg and WriteBPCMReg functions will always take a device address +// (address of the BPCM device) and register offset (like regOffset above). The offset +// will be divided by 4 and used as the lower 12-bits of the actual target address, while the +// device address will serve as the upper 8-bits of the actual address. +typedef struct { + // PMB-slave: + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + // BPCM + uint32_t control; // offset 0x10, PMB reg index 4 + BPCM_SR_CONTROL sr_control; // offset 0x14, PMB reg index 5 + uint32_t reserved1[2]; // offset 0x18, PMB reg index 6/7 + // Client-specific registers + uint32_t client_specific[24]; // offset 0x20, PMB reg index 8..31 + // Zones + BPCM_ZONE zones[]; // offset 0x80..(0x20 + MAX_ZONES*32)), PMB reg index 32..(32+(MAX_ZONES*8-1)) +} BPCM_REGS; // total offset space = 4096 + +#define BPCMOffset(reg) offsetof(BPCM_REGS,reg) +#define BPCMRegOffset(reg) (BPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08, actual offset = 2 + uint32_t cfg_control; // offset = 0x10, actual offset = 4 + BPCM_SR_CONTROL sr_control; // offset = 0x14, actual offset = 5 + uint32_t reserved1[6]; // offset = 0x18, actual offset = 6 + ARM_CONTROL_REG arm_control; // offset = 0x30, actual offset = 12 + uint32_t biu_clk_control0; // offset = 0x34, actual offset = 13 + uint32_t tbd[18]; // offset = 0x38, actual offset = 14 + BPCM_ZONE zones; // offset = 0x80, actual offset = 32 +} ARM_BPCM_REGS; +#define ARMBPCMOffset(reg) offsetof(ARM_BPCM_REGS,reg) +#define ARMBPCMRegOffset(reg) (ARMBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04 + uint32_t reserved0[6]; // offset = 0x08 + PLL_CTRL_REG resets; // offset = 0x20 + PLL_CFG0_REG cfg0; // offset = 0x24 + PLL_CFG1_REG cfg1; // offset = 0x28 + PLL_NDIV_REG ndiv; // offset = 0x2c + PLL_PDIV_REG pdiv; // offset = 0x30 + PLL_LOOP0_REG loop0; // offset = 0x34 + uint32_t reserved1; // offset = 0x38 + PLL_LOOP1_REG loop1; // offset = 0x3c + PLL_CHCFG_REG ch01_cfg; // offset = 0x40 + PLL_CHCFG_REG ch23_cfg; // offset = 0x44 + PLL_CHCFG_REG ch45_cfg; // offset = 0x48 + PLL_STAT_REG stat; // offset = 0x4c + uint32_t strap; // offset = 0x50 + PLL_DECNDIV_REG decndiv; // offset = 0x54 + PLL_DECPDIV_REG decpdiv; // offset = 0x58 + PLL_DECCH25_REG decch25; // offset = 0x5c +} PLL_CLASSIC_BPCM_REGS; + +#define PLLCLASSICBPCMOffset(reg) offsetof(PLL_CLASSIC_BPCM_REGS,reg) +#define PLLCLASSICBPCMRegOffset(reg) (PLLCLASSICBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t reserved0[2]; // offset = 0x08..0x0c, actual offset 2..3 + PLL_CTRL_REG resets; // offset = 0x10, actual offset = 4 + PLL_CFG0_REG cfg0; // offset = 0x14, actual offset = 5 + PLL_CFG1_REG cfg1; // offset = 0x18, actual offset = 6 + PLL_NDIV_REG ndiv; // offset = 0x1c, actual offset = 7 + PLL_PDIV_REG pdiv; // offset = 0x20, actual offset = 8 + PLL_LOOP0_REG loop0; // offset = 0x24, actual offset = 9 + PLL_LOOP1_REG loop1; // offset = 0x28, actual offset = a + PLL_CHCFG_REG ch01_cfg; // offset = 0x2c, actual offset = b + PLL_CHCFG_REG ch23_cfg; // offset = 0x30, actual offset = c + PLL_CHCFG_REG ch45_cfg; // offset = 0x34, actual offset = d + PLL_OCTRL_REG octrl; // offset = 0x38, actual offset = e + PLL_STAT_REG stat; // offset = 0x3c, actual offset = f + uint32_t strap; // offset = 0x40, actual offset = 0x10 + PLL_DECNDIV_REG decndiv; // offset = 0x44, actual offset = 0x11 + PLL_DECPDIV_REG decpdiv; // offset = 0x48, actual offset = 0x12 + PLL_DECCH25_REG decch25; // offset = 0x4c, actual offset = 0x13 +} PLL_BPCM_REGS; + +#define PLLBPCMOffset(reg) offsetof(PLL_BPCM_REGS,reg) +#define PLLBPCMRegOffset(reg) (PLLBPCMOffset(reg) >> 2) + +typedef union { + struct { + uint32_t dac_data:10; // [09:00] + uint32_t vavs_minb0:1; // [10:10] - R/O iVDDC <= Vmin0 + uint32_t vavs_minb1:1; // [11:11] - R/O iVDDC <= Vmin1 + uint32_t vavs_warnb0:1; // [12:12] - R/O iVDDC <= Vwarn0 + uint32_t vavs_warnb1:1; // [13:13] - R/O iVDDC <= Vwarn1 + uint32_t vavs_maxb0:1; // [14:14] - R/O iVDDC <= Vmax0 + uint32_t vavs_maxb1:1; // [15:15] - R/O iVDDC <= Vmax1 + uint32_t adc_data:10; // [25:16] - R/O ADC output data in offset binary format + uint32_t adc_data_valid:1; // [26:26] - R/O + uint32_t reserved:5; // [31:27] - R/O + } Bits; + uint32_t Reg32; +} APVTMON_DATA_REG; + +typedef union { + // little endian - from page 5 of "ANA_VTMON_TS16FF_S0 & ANA_VTMON_PAD_TS16FF_Sx Module Specification" + // defaut value = 0x00000001 + struct { + uint32_t bg_adj:3; // [02:00] - default = 1 + uint32_t vtest_sel:4; // [06:03] - VTest = i_VDCC * (+1)/20, default = 0 + uint32_t rmon_sel:3; // [09:07] + uint32_t mode:3; // [12:10] + uint32_t adc_insel:2; // [14:13] - only used in expert mode (mode = 0b111) + uint32_t dac_en:1; // [15:15] - only used in expert mode (mode = 0b111) + uint32_t con_pad:1; // [16:16] - only used in expert mode (mode = 0b111) + uint32_t burnin_en:1; // [17:17] - only used in expert mode (mode = 0b111) + uint32_t reserved:1; // [18:18] + uint32_t vdccmon_refadj_max1:1; // [19:19] + uint32_t vdccmon_refadj_min0:4; // [23:20] + uint32_t vdccmon_refadj_min1:3; // [26:24] + uint32_t dac_reset:1; // [27:27] + uint32_t dac_set:1; // [28:28] + uint32_t vdccmon_refadj_max0:3; // [31:29] + } Bits; + uint32_t Reg32; +} APVTMON_CONTROL_REG; + +typedef union { + struct { + uint32_t rstb:1; // [00:00] - low active. default = 0 (i.e. in reset) + uint32_t pwr_dn:1; // [01:01] - high-active. default = 1 (i.e. powered down) + uint32_t clk_en:1; // [02:02] + uint32_t reserved0:1; // [03:03] + uint32_t sel:3; // [06:04] - see enum below - reset value = 0 + uint32_t reserved1:1; // [07:07] + uint32_t clk_div:5; // [12:08] - value needed to divide pm_clk by (2*clk_div) to generate a 5MHz clock + uint32_t reserved2:19; // [31:13] + } Bits; + uint32_t Reg32; +} APVTMON_CONFIG_STATUS_REG; + +typedef union { + struct { + uint32_t accum_en:1; // [00:00] + uint32_t round_en:1; // [01:01] defaults to 1 (rounding enabled) + uint32_t reserved1:6; // [07:02] + uint32_t skip_len:4; // [11:08] how many samples to skip prior to starting averaging, default = 3 + uint32_t reserved0:20; // [31:12] + } Bits; + uint32_t Reg32; +} APVTMON_ACQ_CONFIG_REG; + +typedef union { + struct { + uint32_t warn_threshold:10; // [09:00] - in ADC counts + uint32_t warn_en:1; // [10:10] + uint32_t reserved0:3; // [13:11] + uint32_t clear_warn:1; // [14:14] - Write only + uint32_t warn:1; // [15:15] - Read only + uint32_t reset_threshold:10; // [25:16] - in ADC counts + uint32_t reset_en:1; // [26:26] + uint32_t reserved1:3; // [29:27] + uint32_t clear_reset:1; // [30:30] - Write only + uint32_t reset:1; // [31:31] - Read only + } Bits; + uint32_t Reg32; +} APVTMON_TEMP_WARN_RESET_REG; + +typedef union { + struct { + uint32_t reset_value:10; // [09:00] + uint32_t reserved:22; // [31:10] + } Bits; + uint32_t Reg32; +} APVTMON_RESET_TEMP_REG; + +typedef union { + struct { + uint32_t value:10; // [09:00] - there are fractional bits + uint32_t reserved0:8; // [17:10] + uint32_t valid:1; // [18:18] + uint32_t busy:1; // [19:19] + uint32_t reserved1:4; // [23:20] + uint32_t meas_len:3; // [26:24] #samples = 2^ + uint32_t reserved2:4; // [30:27] + uint32_t enable:1; // [31:31] + } Bits; + uint32_t Reg32; +} APVTMON_ACCUM_REG; + +typedef union { + struct { + uint32_t sel:6; // [05:00] - ring oscillator select (0..35) + uint32_t reserved2:2; // [07:06] + uint32_t srm_ind_en:1; // [08:08] + uint32_t srm_ind_od:1; // [09:09] + uint32_t srm_ind_sel:2; // [11:10] + uint32_t reserved1:4; // [15:12] + uint32_t out:1; // [16:16] + uint32_t all_idl_low_oscs:1; // [17:17] + uint32_t all_idl_hi_oscs:1; // [18:18] + uint32_t reserved0:13; // [31:19] + } Bits; + uint32_t Reg32; +} ROSC_CTRL_STS_REG; + +typedef union { + struct { + uint32_t count:16; // [15:00] + uint32_t valid:1; // [16:16] + uint32_t too_lo:1; // [17:17] - count <= thresh_lo (only when THRESH_EN == 1) + uint32_t too_hi:1; // [18:18] - count <= thresh_hi (only when THRESH_EN == 1) + uint32_t reserved0:5; // [23:19] + uint32_t continuous:1; // [24:24] + uint32_t thresh_en:1; // [25:25] - enable threshold detection + uint32_t ectr_en:1; // [26:26] - enable counter + uint32_t src_en:1; // [27:27] - enable event source (may not do anything???) + uint32_t meas_len:4; // [31:28] - interval = 2^(+1) + } Bits; + uint32_t Reg32; +} ECTR_CTRL_STS_REG; + +typedef union { + struct { + uint32_t thresh_lo:16; // [15:00] + uint32_t thresh_hi:16; // [31:16] + } Bits; + uint32_t Reg32; +} ECTR_THRESH_REG; + +typedef struct { + ECTR_CTRL_STS_REG count_reg; + ECTR_THRESH_REG thresh_reg; +} ROSC_REGS; + +typedef struct { + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[2]; // offset 0x08, PMB reg index 2/3 + uint32_t reserved1[12]; // offset 0x10, PMB reg index 4-15 (future proofing ) + APVTMON_CONTROL_REG control; // offset 0x40, PMB reg index 16 + APVTMON_CONFIG_STATUS_REG config; // offset 0x44, PMB reg index 17 + APVTMON_DATA_REG adc_data; // offset 0x48, PMB reg index 18 + uint32_t reserved2; // offset 0x4c, PMB reg index 19 + APVTMON_ACQ_CONFIG_REG accum_config; // offset 0x50, PMB reg index 20 + APVTMON_TEMP_WARN_RESET_REG warn_rst; // offset 0x54, PMB reg index 21 + uint32_t reserved3[2]; // offset 0x58, PMB reg index 23 + APVTMON_ACCUM_REG acq_accum_regs[8]; // offset 0x60, PMB reg index 24-31 + ROSC_CTRL_STS_REG rosc_ctrl_sts; // offset 0x80, PMB reg index 32 + uint32_t rosc_en_lo; // offset 0x84, PMB reg index 33 + uint32_t rosc_en_hi; // offset 0x88, PMB reg index 34 + uint32_t rosc_idle_lo; // offset 0x8c, PMB reg index 35 + uint32_t rosc_idle_hi; // offset 0x90, PMB reg index 36 + uint32_t reserved4[3]; // offset 0x94, PMB reg index 37-39 + ROSC_REGS ectr_regs; // offset 0xa0, PMB reg index 40/41 +} PVTMON_REGS; +// retrieves the BYTE offset of a PVTMON register: +#define PVTMON_OFFSET(reg) (offsetof(PVTMON_REGS,reg)>>2) + +typedef struct { +// PMB-slave + BPCM_ID_REG id_reg; // offset 0x00, PMB reg index 0 + BPCM_CAPABILITES_REG capabilities; // offset 0x04, PMB reg index 1 + uint32_t reserved0[6]; // offset 0x08, PMB reg index 2-7 + // ROSC registers + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset 0x20, PMB reg index 8 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset 0x24, PMB reg index 9 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset 0x28, PMB reg index 10 + BPCM_AVS_ROSC_COUNT rosc_count; // offset 0x2c, PMB reg index 11 + BPCM_AVS_PWD_CONTROL pwd_ctrl; // offset 0x30, PMB reg index 12 + BPCM_PWD_ACCUM_CONTROL pwd_accum; // offset 0x34, PMB reg index 13 +} ARS_REGS; +// retrieves the BYTE offset of an ARS register: +#define ARS_OFFSET(reg) (offsetof(ARS_REGS, reg)>>2) + +typedef struct { + BPCM_UBUS_ID_REG id_reg; /* offset = 0x00, actual offset = 0 */ + BPCM_UBUS_CAPABILITES_REG capabilities; /* offset = 0x04, actual offset = 1 */ + uint32_t reserved0; /* offset = 0x08, actual offset = 2 */ + BPCM_UBUS_CTRL_REG ctrl; /* offset = 0x0c, actual offset = 3 */ + BPCM_UBUS_CFG_REG cfg[4]; /* offset = 0x10..0x2c, actual offset = 4..11 */ +} BPCM_UBUS_REG; + +#define UBUSBPCMOffset(reg) offsetof(BPCM_UBUS_REG,reg) +#define UBUSBPCMRegOffset(reg) (UBUSBPCMOffset(reg) >> 2) + +typedef struct { + BPCM_ID_REG id_reg; // offset = 0x00, actual offset = 0 + BPCM_CAPABILITES_REG capabilities; // offset = 0x04, actual offset = 1 + uint32_t control; // offset = 0x08, actual offset = 2 + BPCM_STATUS_REG status; // offset = 0x0c, actual offset = 3 + BPCM_AVS_ROSC_CONTROL_REG rosc_control; // offset = 0x10, actual offset = 4 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_h; // offset = 0x14, actual offset = 5 + BPCM_AVS_ROSC_THRESHOLD rosc_thresh_s; // offset = 0x18, actual offset = 6 + BPCM_AVS_ROSC_COUNT rosc_count; // offset = 0x1c, actual offset = 7 + BPCM_AVS_PWD_CONTROL pwd_control; // offset = 0x20, actual offset = 8 + uint32_t bpcm_ctrl; // offset = 0x24, actual offset = 9 + uint32_t clkrst_control; // offset = 0x28, actual offset = 10 + uint32_t ext_observe_ctrl; // offset = 0x2c, actual offset = 11 + uint32_t reserved0[2]; // offset = 0x30-0x34, actual offset 12-13 + uint32_t xtal_control; // offset = 0x38, actual offset = 14 + uint32_t clkrst_stat; // offset = 0x3c, actual offset = 15 + uint32_t reserved1; // offset = 0x40, actual offset = 16 + uint32_t clkrst_ena_clk_31_0; // offset = 0x44, actual offset = 17 + uint32_t clkrst_ena_clk_63_32; // offset = 0x48, actual offset = 18 + uint32_t clkrst_ena_clk_95_64; // offset = 0x4c, actual offset = 19 + uint32_t reserved2[11]; // offset = 0x50-0x78, actual offset = 20-30 + uint32_t clkrst_ena_reset_31_0; // offset = 0x7c, actual offset = 31 + uint32_t clkrst_ena_reset_63_32; // offset = 0x80, actual offset = 32 + uint32_t clkrst_pll_observe_clk; // offset = 0x84, actual offset = 33 + uint32_t clkrst_ref_cnt_thresh; // offset = 0x88, actual offset = 34 + uint32_t clkrst_pll_clk_low_th; // offset = 0x8c, actual offset = 35 + uint32_t clkrst_pll_clk_hi_th; // offset = 0x90, actual offset = 36 + uint32_t clkrst_pll_clk_stat; // offset = 0x94, actual offset = 37 + uint32_t clkrst_sticky_bit_stat; // offset = 0x98, actual offset = 38 + uint32_t clkrst_clk250_src_sel; // offset = 0x9c, actual offset = 39 + uint32_t clkrst_ena_force; // offset = 0xa0, actual offset = 40 + uint32_t reserved3; // offset = 0xa4, actual offset = 41 + uint32_t pmd_xtal_cntl; // offset = 0xa8, actual offset = 42 + uint32_t pmd_xtal_cntl2; // offset = 0xac, actual offset = 43 +} BPCM_CLKRST_REGS; + +#define CLKRSTBPCMOffset(reg) offsetof(BPCM_CLKRST_REGS, reg) +#define CLKRSTBPCMRegOffset(reg) (CLKRSTBPCMOffset(reg) >> 2) + +// *************************** macros ****************************** +#ifndef offsetof +#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER) +#endif + +#endif diff --git a/arch/arm/include/asm/arch-bcm6878/brom.h b/arch/arm/include/asm/arch-bcm6878/brom.h new file mode 100644 index 0000000000..147b197334 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6878/brom.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6878_BROM_H +#define _6878_BROM_H + +#define BROM_GEN_BASE 0xff800600 + +/* + * BROM_GEN Register Definition . + */ +typedef struct BromGen_ { +#define BROM_GEN_SPI_SLV_UNLOCK_MASK 0x1 +#define BROM_GEN_SPI_SLV_UNLOCK_SHIFT 0x2 +#define BROM_GEN_TAG_UNLOCK_MASK 0x1 +#define BROM_GEN_TAG_UNLOCK_SHIFT 0x1 + uint32_t secBootCfg; + uint32_t bromCrcRevIdLow; + uint32_t bromCrcRevIdHigh; +} BromGen; + +#define BROM_GEN ((volatile BromGen * const) BROM_GEN_BASE) +#define BROM_GEN_JTAG_UNLOCK do {BROM_GEN->secBootCfg |= ((BROM_GEN_SPI_SLV_UNLOCK_MASK<SSBMaster.control) & 0x8000) && (num > 0)) ; num--) ;\ + if(!num) \ + {\ + printf("Error num %d timeout num = %d!!!", (x), num);\ + }\ +} + +typedef struct PmmReg { + uint32_t memPowerCtrl; /* 0x0000 */ + uint32_t regSecurityConfig; /* 0x0004 */ +} PmmReg; + +typedef struct keyholeReg { + uint32_t ctrlSts; + uint32_t wrData; + uint32_t mutex; + uint32_t rdData; +} keyholeReg; + +typedef struct PmbBus { + PMB_CONFIG_REG config; /* 0x0100 */ + uint32_t arbiter; /* 0x0104 */ + uint32_t timeout; /* 0x0108 */ + uint32_t unused1; /* 0x010c */ + keyholeReg keyhole[4]; /* 0x0110-0x014f */ + uint32_t unused2[44]; /* 0x0150-0x01ff */ + uint32_t map[64]; /* 0x0200-0x02ff */ +}PmbBus; + +typedef struct Procmon { + PmmReg pmm; /* 0x20000 */ + uint32_t unused11[22]; /* 0x20008-0x2005f */ + PMSSBMasterControl SSBMaster; /* 0x20060-0x20077 */ + uint32_t unused12[34]; /* 0x20078-0x200ff */ + PmbBus pmb; /* 0x20100 */ +} Procmon; +#define PROC_MON_BASE 0xffb20000 +#define PROCMON ((volatile Procmon * const) PROC_MON_BASE) + +typedef struct +{ + uint32_t control; +#define PMC_PMBM_START (1 << 31) +#define PMC_PMBM_TIMEOUT (1 << 30) +#define PMC_PMBM_SLAVE_ERR (1 << 29) +#define PMC_PMBM_BUSY (1 << 28) +#define PMC_PMBM_BUS_SHIFT (20) +#define PMC_PMBM_Read (0 << 24) +#define PMC_PMBM_Write (1 << 24) + uint32_t wr_data; + uint32_t mutex; + uint32_t rd_data; +} PMB_keyhole_reg; + +typedef struct PMBMaster { + uint32_t config; +#define PMB_NUM_REGS_SHIFT (20) +#define PMB_NUM_REGS_MASK (0x3ff) + uint32_t arbitger; + uint32_t timeout; + uint32_t reserved; + PMB_keyhole_reg keyhole[4]; + uint32_t reserved1[44]; + uint32_t map[64]; +} PMBMaster; +#define PMB_BASE 0xffb20100 +#define PMB ((volatile PMBMaster * const) PMB_BASE) + +#endif diff --git a/arch/arm/include/asm/arch-bcm6878/pmc_addr.h b/arch/arm/include/asm/arch-bcm6878/pmc_addr.h new file mode 100644 index 0000000000..5763406df0 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6878/pmc_addr.h @@ -0,0 +1,62 @@ +#define PMB_BUS_MAX 2 +#define PMB_BUS_ID_SHIFT 12 + +#define PMB_BUS_PERIPH 0 +#define PMB_ADDR_PERIPH (0 | PMB_BUS_PERIPH << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PERIPH 3 + +#define PMB_BUS_CHIP_CLKRST 1 +#define PMB_ADDR_CHIP_CLKRST (1 | PMB_BUS_CHIP_CLKRST << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_CHIP_CLKRST 0 + +#define PMB_BUS_SYSPLL 1 +#define PMB_ADDR_SYSPLL (3 | PMB_BUS_SYSPLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_SYSPLL 0 + +#define PMB_BUS_PVTMON 1 +#define PMB_ADDR_PVTMON (6 | PMB_BUS_PVTMON << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PVTMON 0 + +#define PMB_BUS_MEMC 1 +#define PMB_ADDR_MEMC (8 | PMB_BUS_MEMC << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_MEMC 1 + +#define PMB_BUS_USB20_2X 1 +#define PMB_ADDR_USB20_2X (10 | PMB_BUS_USB20_2X << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_USB20_2X 4 + +#define PMB_BUS_WAN 1 +#define PMB_ADDR_WAN (11 | PMB_BUS_WAN << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_WAN 3 + +#define PMB_BUS_XRDP 1 +#define PMB_ADDR_XRDP (12 | PMB_BUS_XRDP << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_XRDP 3 + +#define PMB_BUS_PCIE0 1 +#define PMB_ADDR_PCIE0 (18 | PMB_BUS_PCIE0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_PCIE0 1 + +#define PMB_BUS_WLAN0 0 +#define PMB_ADDR_WLAN0 (19 | PMB_BUS_WLAN0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_WLAN0 1 + +#define PMB_BUS_ORION_CPU0 1 +#define PMB_ADDR_ORION_CPU0 (32 | PMB_BUS_ORION_CPU0 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU0 1 + +#define PMB_BUS_ORION_CPU1 1 +#define PMB_ADDR_ORION_CPU1 (33 | PMB_BUS_ORION_CPU1 << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_CPU1 1 + +#define PMB_BUS_ORION_NONCPU 1 +#define PMB_ADDR_ORION_NONCPU (36 | PMB_BUS_ORION_NONCPU << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_ORION_NONCPU 1 + +#define PMB_BUS_BIU_PLL 1 +#define PMB_ADDR_BIU_PLL (38 | PMB_BUS_BIU_PLL << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_PLL 0 + +#define PMB_BUS_BIU_BPCM 1 +#define PMB_ADDR_BIU_BPCM (39 | PMB_BUS_BIU_BPCM << PMB_BUS_ID_SHIFT) +#define PMB_ZONES_BIU_BPCM 1 diff --git a/arch/arm/include/asm/arch-bcm6878/pmc_drv_cfg.h b/arch/arm/include/asm/arch-bcm6878/pmc_drv_cfg.h new file mode 100644 index 0000000000..83aa0127c1 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6878/pmc_drv_cfg.h @@ -0,0 +1,34 @@ +/* +<:copyright-BRCM:2019:DUAL/GPL:standard + + Copyright (c) 2019 Broadcom + All Rights Reserved + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License, version 2, as published by +the Free Software Foundation (the "GPL"). + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + + +A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by +writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. + +:> +*/ + +/***************************************************************************** + * Description: + * This contains special header for different flavors of PMC drivers. + *****************************************************************************/ + +#ifndef PMC_DRV_CFG_H +#define PMC_DRV_CFG_H + +#define PMC_ON_HOSTCPU 1 + +#endif // #ifndef PMC_DRV_CFG_H diff --git a/arch/arm/include/asm/arch-bcm6878/rng.h b/arch/arm/include/asm/arch-bcm6878/rng.h new file mode 100644 index 0000000000..83367fec05 --- /dev/null +++ b/arch/arm/include/asm/arch-bcm6878/rng.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _6878_RNG_H +#define _6878_RNG_H + +#define RNG_BASE 0xff800b80 + +typedef struct Rng { + uint32_t ctrl0; /* 0x00 */ + uint32_t rngSoftReset; /* 0x04 */ + uint32_t rbgSoftReset; /* 0x08 */ + uint32_t totalBitCnt; /* 0x0c */ + uint32_t totalBitCntThreshold; /* 0x10 */ + uint32_t revId; /* 0x14 */ + uint32_t intStatus; /* 0x18 */ +#define RNG_INT_STATUS_NIST_FAIL (0x1<<5) +#define RNG_INT_STATUS_FIFO_FULL (0x1<<2) + uint32_t intEn; /* 0x1c */ + uint32_t rngFifoData; /* 0x20 */ + uint32_t fifoCnt; /* 0x24 */ +#define RNG_PERM_ALLOW_SECURE_ACCESS 0xCC +#define RNG_PERM_ALLOW_NONSEC_ACCESS 0x33 + uint32_t perm; /* 0x28 */ +} Rng; + +#define RNG_PERM_SHIFT 0x0 +#define RNG_PERM_BLK_SHIFT 0x4 + +#define RNG_PERM_SEC_W 0x8 +#define RNG_PERM_SEC_R 0x4 +#define RNG_PERM_NSEC_W 0x2 +#define RNG_PERM_NSEC_R 0x1 + +#define RNG_PERM_BLK_SEC_W 0x8 +#define RNG_PERM_BLK_SEC_R 0x4 +#define RNG_PERM_BLK_NSEC_W 0x2 +#define RNG_PERM_BLK_NSEC_R 0x1 + +#define RNG_PERM_NSEC_ENABLE (((RNG_PERM_BLK_NSEC_R|RNG_PERM_BLK_NSEC_W)< #endif #include diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index aed2e3c51e..841e4515f5 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h @@ -345,6 +345,14 @@ void switch_to_hypervisor_ret(void); #define wfi() #endif +static inline unsigned long read_mpidr(void) +{ + unsigned long val; + + asm volatile("mrc p15, 0, %0, c0, c0, 5" : "=r" (val)); + return val; +} + static inline unsigned long get_cpsr(void) { unsigned long cpsr; diff --git a/arch/arm/lib/cache-cp15.c b/arch/arm/lib/cache-cp15.c index b2913e8165..d14fd7e84e 100644 --- a/arch/arm/lib/cache-cp15.c +++ b/arch/arm/lib/cache-cp15.c @@ -23,6 +23,26 @@ __weak void arm_init_domains(void) { } +#ifdef CONFIG_ARMV7_LPAE +void set_section_attr(int section, u64 virt, u64 attr) +#else +void set_section_attr(int section, u32 virt, u32 attr) +#endif +{ +#ifdef CONFIG_ARMV7_LPAE + u64 *page_table = (u64 *)gd->arch.tlb_addr; + u64 value = virt; +#else + u32 *page_table = (u32 *)gd->arch.tlb_addr; + u32 value = virt; +#endif + /* Add page attribute bits */ + value |= attr; + + /* Set PTE */ + page_table[section] = value; +} + void set_section_dcache(int section, enum dcache_option option) { #ifdef CONFIG_ARMV7_LPAE diff --git a/arch/arm/lib/cache.c b/arch/arm/lib/cache.c index 449544d11c..463d283cb7 100644 --- a/arch/arm/lib/cache.c +++ b/arch/arm/lib/cache.c @@ -77,6 +77,7 @@ void noncached_init(void) phys_addr_t start, end; size_t size; + /* If this calculation changes, update board_f.c:reserve_noncached() */ end = ALIGN(mem_malloc_start, MMU_SECTION_SIZE) - MMU_SECTION_SIZE; size = ALIGN(CONFIG_SYS_NONCACHED_MEMORY, MMU_SECTION_SIZE); start = end - size; diff --git a/arch/arm/mach-bcmbca/Kconfig b/arch/arm/mach-bcmbca/Kconfig new file mode 100644 index 0000000000..1d6a842331 --- /dev/null +++ b/arch/arm/mach-bcmbca/Kconfig @@ -0,0 +1,368 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if ARCH_BCMBCA + +config BCM63158 + bool "Broadcom BCM63158 family" + select SUPPORT_SPL + select SUPPORT_TPL + select ARM64 + +config BCM4908 + bool "Broadcom BCM4908 family" + select SUPPORT_SPL + select SUPPORT_TPL + select ARM64 + +config BCM4912 + bool "Broadcom BCM4912 family" + select SUPPORT_SPL + select SUPPORT_TPL + select ARM64 + +config BCM6858 + bool "Broadcom BCM6858 family" + select SUPPORT_SPL + select SUPPORT_TPL + select ARM64 + +config BCM6856 + bool "Broadcom BCM6856 family" + select SUPPORT_SPL + select SUPPORT_TPL + select ARM64 + +config BCM63178 + bool "Broadcom BCM63178 family" + select SUPPORT_SPL + select SUPPORT_TPL + select SYS_ARCH_TIMER + select CPU_V7A + +config BCM47622 + bool "Broadcom BCM47622 family" + select SUPPORT_SPL + select SUPPORT_TPL + select SYS_ARCH_TIMER + select CPU_V7A + +config BCM6756 + bool "Broadcom BCM6756 family" + select SUPPORT_SPL + select SUPPORT_TPL + select SYS_ARCH_TIMER + select CPU_V7A + +config BCM63138 + bool "Broadcom BCM63138 family" + select SUPPORT_SPL + select SUPPORT_TPL + select CPU_V7A + select ENABLE_ARM_SOC_BOOT0_HOOK if SPL + select TIMER + select BCM6XXX_TIMER + imply SPL_TIMER + imply TPL_TIMER + +config BCM63148 + bool "Broadcom BCM63148 family" + select SUPPORT_SPL + select SUPPORT_TPL + select CPU_V7A + select ENABLE_ARM_SOC_BOOT0_HOOK if SPL + select TIMER + select BCM6XXX_TIMER + select ARM_CORTEX_A15_CVE_2017_5715 + imply SPL_TIMER + imply TPL_TIMER + +config BCM63146 + bool "Broadcom BCM63146 family" + select SUPPORT_SPL + select SUPPORT_TPL + select ARM64 + +config BCM6846 + bool "Broadcom BCM6846 family" + select SUPPORT_SPL + select SUPPORT_TPL + select SYS_ARCH_TIMER + select CPU_V7A + +config BCM6878 + bool "Broadcom BCM6878 family" + select SUPPORT_SPL + select SUPPORT_TPL + select SYS_ARCH_TIMER + select CPU_V7A + +config BCM6855 + bool "Broadcom BCM6855 family" + select SUPPORT_SPL + select SUPPORT_TPL + select SYS_ARCH_TIMER + select CPU_V7A + +config BCMBCA_OTP + bool "Broadcom BCA OTP controller" + default y + +config OTP_V1 + bool "OTP Version 1 controller (40nm SoC)" + depends on BCMBCA_OTP + default y if BCM63138 + default y if BCM63148 + default y if BCM6858 + default y if BCM4908 + default n + +config OTP_V2 + bool "OTP Version 2 controller(28nm SoC)" + depends on BCMBCA_OTP + default y if BCM63158 + default y if BCM63178 + default y if BCM47622 + default y if BCM6756 + default y if BCM6846 + default y if BCM6878 + default y if BCM6855 + default y if BCM6856 + default n + +config OTP_V3 + bool "OTP Version 2 controller(16nm SoC)" + depends on BCMBCA_OTP + default y if BCM4912 + default y if BCM63146 + default n + +config OTP_LOCK + bool "OTP HW CPU locking" + depends on BCMBCA_OTP + default y if BCM63178 + default y if BCM4912 + default y if BCM47622 + default y if BCM6756 + default y if BCM63146 + default y if BCM6878 + default y if BCM6855 + default n + +config OTP_SOTP + bool "Secure OTP support" + depends on BCMBCA_OTP + default y if BCM63158 + default y if BCM63178 + default y if BCM47622 + default y if BCM6756 + default y if BCM6846 + default y if BCM6856 + default y if BCM6858 + default y if BCM4908 + default n + +config OTP_SKP + bool "Secure OTP via Secure Key Portal (SKP) support" + depends on BCMBCA_OTP + default y if BCM4912 + default y if BCM63146 + default n + +config OTP_SKO + bool "Secure OTP via Secure Key Object (SKO) support" + depends on BCMBCA_OTP + default y if BCM6878 + default y if BCM6855 + default n + +config BCMBCA_RDP + bool "Broadcom BCA RDP Support" + default n + +config BCMBCA_UBUS + bool "Broadcom BCA UBUS Support" + default y if BCM6858 + default y if BCM47622 + default y if BCM6756 + default y if BCM63178 + default n + +config BCMBCA_PMC + bool "Broadcom BCA PMC Support" + default y if BCM63138 + default y if BCM63148 + default y if BCM63158 + default y if BCM63178 + default y if BCM4908 + default y if BCM4912 + default y if BCM47622 + default y if BCM6756 + default y if BCM63146 + default y if BCM6846 + default y if BCM6856 + default y if BCM6858 + default y if BCM6878 + default y if BCM6855 + default n + +config BCMBCA_PMC_SWITCH + bool "Broadcom BCA PMC SWITCH Support" + default y if BCM63138 || BCM63148 || BCM63158 || BCM4908 || BCM63178 || BCM6756 + default n + +config BCMBCA_PMC_RDP + bool "Broadcom BCA PMC RDP Support" + default y if BCM63138 + default y if BCM63148 + default n + +config BCMBCA_PMC_XRDP + bool "Broadcom BCA PMC XRDP Support" + default y if BCM63146 + default y if BCM6846 + default y if BCM6856 + default y if BCM6858 + default y if BCM6878 + default n + +config BCMBCA_PMC_LPORT + bool "Broadcom BCA PMC LPORT Support" + default y if BCM6858 + default n + +config BCMBCA_PMC_SYSPORT + bool "Broadcom BCA PMC SystemPort Support" + default y if BCM47622 + default n + +config BCMBCA_DDRC + bool "Broadcom BCA DDR Support" + depends on SPL + default n + +config BCMBCA_DPFE + bool "Broadcom BCA DPFE Engine based DDR init" + depends on SPL + default n + +config BCMBCA_DDR_REGINIT + bool "Broadcom BCA registers based DDR init" + depends on SPL + default n + +config BRCM_SPL_MEMC_SRAM + bool "Set SPL pagetables in MEMC SRAM" + depends on SPL + default y if BCM6858 + default y if BCM4908 + default y if BCM6856 + default y if BCM6846 + default y if BCM63178 + default y if BCM47622 + default y if BCM6756 + default n + +config BCMBCA_RNG + bool "Broadcom BCA RNG driver" + default y if BCM63138 + default y if BCM63148 + default y if BCM63158 + default y if BCM63178 + default y if BCM4908 + default y if BCM4912 + default y if BCM47622 + default y if BCM6756 + default y if BCM63146 + default y if BCM6846 + default y if BCM6856 + default y if BCM6858 + default y if BCM6878 + default y if BCM6855 + default n + +if BCMBCA_DDRC + +config BCMBCA_DDR_LOADADDR + hex "DDR binary load address" + +config BCMBCA_DDR4 + bool "DDR4 Chip Support" + default n + +config BCMBCA_DDRC_SCRAMBLER + bool "DDR Scrambler support" + select SPL_HASH_SUPPORT + default y if BCM63158 + default y if BCM63146 + default y if BCM4912 + default y if BCM6858 + default y if BCM4908 + default n + +config BCMBCA_DDRC_EARLY_VREF_DQ + bool "Early VREF_DQ support" + default y if BCM63158 + default y if BCM4908 + default y if BCM63178 + default y if BCM47622 + default y if BCM6756 + default y if BCM6858 + default y if BCM6856 + default n + help + Enable or disable early VREF_DQ voltage turn on + +config BCMBCA_DDRC_DBGPRINT + bool "DDR Debug Print" + default y if BCM6858 + default y if BCM6846 + default y if BCM6878 + default y if BCM6856 + default y if BCM47622 + default y if BCM6756 + default y if BCM63146 + default y if BCM4912 + default y if BCM6855 + default n + +config BCMBCA_DDR_MCBSEL_OVERRIDE + bool "MCB selector override" + default n + help + Enable or disable mcb seletor override from environment variable + +config BCMBCA_DDR_MCBSEL_OVERRIDE_VALUE + hex "MCB selector override value" + depends on BCMBCA_DDR_MCBSEL_OVERRIDE + default 0x0 + help + mcb seletor override value + +config BOOT_BLOB_JTAG_LOAD_MAX_DDR_SIZE + hex "Max size of DDR binary for JTAG" + +endif + +if BCMBCA_DPFE +source "arch/arm/mach-bcmbca/bcmbca_dpfe/Kconfig" +endif +source "arch/arm/mach-bcmbca/bcm63158/Kconfig" +source "arch/arm/mach-bcmbca/bcm4908/Kconfig" +source "arch/arm/mach-bcmbca/bcm4912/Kconfig" +source "arch/arm/mach-bcmbca/bcm6858/Kconfig" +source "arch/arm/mach-bcmbca/bcm6856/Kconfig" +source "arch/arm/mach-bcmbca/bcm63178/Kconfig" +source "arch/arm/mach-bcmbca/bcm47622/Kconfig" +source "arch/arm/mach-bcmbca/bcm6756/Kconfig" +source "arch/arm/mach-bcmbca/bcm63138/Kconfig" +source "arch/arm/mach-bcmbca/bcm63148/Kconfig" +source "arch/arm/mach-bcmbca/bcm63146/Kconfig" +source "arch/arm/mach-bcmbca/bcm6846/Kconfig" +source "arch/arm/mach-bcmbca/bcm6878/Kconfig" +source "arch/arm/mach-bcmbca/bcm6855/Kconfig" + +endif + diff --git a/arch/arm/mach-bcmbca/Makefile b/arch/arm/mach-bcmbca/Makefile new file mode 100644 index 0000000000..64591648b3 --- /dev/null +++ b/arch/arm/mach-bcmbca/Makefile @@ -0,0 +1,59 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +obj-y += mmu_setup.o pinmux.o lowlevel_init.o +obj-$(CONFIG_OF_SYSTEM_SETUP) += bcmbca-dtsetup.o dt_helper.o + +obj-$(CONFIG_BCM63158) += bcm63158/ +obj-$(CONFIG_BCM63146) += bcm63146/ +obj-$(CONFIG_BCM6858) += bcm6858/ +obj-$(CONFIG_BCM6856) += bcm6856/ +obj-$(CONFIG_BCM63178) += bcm63178/ +obj-$(CONFIG_BCM47622) += bcm47622/ +obj-$(CONFIG_BCM6756) += bcm6756/ +obj-$(CONFIG_BCM4908) += bcm4908/ +obj-$(CONFIG_BCM4912) += bcm4912/ +obj-$(CONFIG_BCM63138) += bcm63138/ +obj-$(CONFIG_BCM63148) += bcm63148/ +obj-$(CONFIG_BCM6846) += bcm6846/ +obj-$(CONFIG_BCM6878) += bcm6878/ +obj-$(CONFIG_BCM6855) += bcm6855/ + +obj-$(CONFIG_BCMBCA_PMC) += pmc/ +obj-$(CONFIG_BCMBCA_UBUS) += ubus/ +obj-$(CONFIG_BCMBCA_OTP) += otp/ +obj-$(CONFIG_BCMBCA_RNG) += rng/ + +ifndef CONFIG_SPL_BUILD +# u-boot proper +obj-$(CONFIG_BCMBCA_RDP) += rdp/ +obj-$(CONFIG_BCMBCA_XRDP_146) += xrdp/ + +else # SPL_BUILD + +# TPL and SPL +obj-$(CONFIG_SPL_BUILD) += bcm_fdtdec.o +obj-$(CONFIG_NAND) += bcmbca_nand_spl.o +obj-$(CONFIG_BCMBCA_BOARD_TK_PROG) += otp_tk/ + +ifndef CONFIG_TPL_BUILD +# SPL ONLY +ifdef CONFIG_BCMBCA_DDRC +obj-$(CONFIG_SPL_BUILD) += spl_ddrinit.o +ifdef CONFIG_BCMBCA_DDR_REGINIT +obj-$(CONFIG_SPL_BUILD) += ddrinit_reg.o +else # BCMBCA_DDR_REGINIT +ifdef CONFIG_BCMBCA_DPFE +obj-$(CONFIG_SPL_BUILD) += ddrinit_dpfe.o +subdir-$(CONFIG_SPL_BUILD) += bcmbca_dpfe +else # BCMBCA_DPFE +subdir-$(CONFIG_SPL_BUILD) += bcmbca_ddr +endif # BCMBCA_DPFE +endif # BCMBCA_DDR_REGINIT +endif # BCMBCA_DDRC + +endif # TPL_BUILD + +endif # SPL_BUILD diff --git a/arch/arm/mach-bcmbca/bcm47622/Kconfig b/arch/arm/mach-bcmbca/bcm47622/Kconfig new file mode 100644 index 0000000000..2b29d73ea2 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm47622/Kconfig @@ -0,0 +1,38 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM47622 + +config TARGET_BCM947622 + bool "Broadcom 47622 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm47622" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x00001607 + +config BCMBCA_DDR4_DEF_MCBSEL + hex "default DDR4 mcb selector value" + default 0x101607 +endif + +config TPL_MAX_SIZE + default 1048576 + +config RSVD_USE_MAX_FROM_ENV_AND_DT + bool "RSVD will use max value from env and DT" + default y + +config BCMBCA_LDO_TRIM + bool "Support LDO Trim" + default y + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm47622/Makefile b/arch/arm/mach-bcmbca/bcm47622/Makefile new file mode 100644 index 0000000000..29dad125c5 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm47622/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +obj-y += cpu.o +obj-y += mmu_table.o \ No newline at end of file diff --git a/arch/arm/mach-bcmbca/bcm47622/cpu.c b/arch/arm/mach-bcmbca/bcm47622/cpu.c new file mode 100644 index 0000000000..95426bff02 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm47622/cpu.c @@ -0,0 +1,136 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#endif + +#if defined(CONFIG_TPL_BUILD) +static void enable_ns_access(void) +{ + BIUCFG->bac.bac_permission |= 0x33; // Linux access to BAC_CPU_THERM_TEMP +} + +/*this function is used to turn on CCI from secure mode +* * it also turns snooping enable for S5 CPU interface*/ +static void cci500_enable(void) +{ + /*Enable access from E2 and below */ + CCI500->secr_acc |= SECURE_ACCESS_UNSECURE_ENABLE; +} +#endif + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + printf("Chip ID: BCM%X_%X\n",chipId,revId); +} +#endif + +#if defined(CONFIG_BCMBCA_PMC) + +void boost_cpu_clock(void) +{ + printf("set cpu freq to 1500MHz\n"); + set_cpu_freq(1500); + pll_ch_freq_set(PMB_ADDR_BIU_PLL, 1, 3000/600); // raise ACEBIU clock rate to 600 MHz +} + +int set_cpu_freq(int freqMHz) +{ + int mdiv; + + if( freqMHz > 1500 || freqMHz < 300 ) + { + printf("%dMHz is not supported\n", freqMHz); + return -1; + } + + /* VCO at 3GHz, mdiv = Fvco/target frequency */ + mdiv = 3000/freqMHz; + + pll_ch_freq_set(PMB_ADDR_BIU_PLL, 0, mdiv); + + return 3000/mdiv; +} +#endif + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_EMMC) + return BOOT_DEVICE_MMC1; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + + u32 frq = COUNTER_FREQUENCY; + + spl_ddrinit_prepare(); + + /* set arch timer frequency */ + asm volatile("mcr p15, 0, %0, c14, c0, 0" : : "r" (frq)); + /* enable system timer */ + BIUCFG->TSO_CNTCR |= 1; + + /* force axi write reply to workaround wifi memory write ordering issue */ + ubus_master_cpu_enable_axi_write_cache(0); + /* enable unalgined access */ + set_cr(get_cr() & ~CR_A); +#endif + +#if defined(CONFIG_TPL_BUILD) + enable_ns_access(); + cci500_enable(); +#endif + + + return 0; +} + +void arch_cpu_deinit() +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* restore axi write cache when we spl does not need to use wifi memory */ + ubus_master_cpu_enable_axi_write_cache(1); +#endif +} + +int get_nr_cpus() +{ + uint32_t nr_cpus; + + if (bcm_otp_get_nr_cpus(&nr_cpus)) { + printf("Error: failed to read cpu core from OTP\n"); + nr_cpus = 4; + } else { + if (nr_cpus >= 0 && nr_cpus <= 4) + nr_cpus = 4; + else + nr_cpus = 8 - nr_cpus; + } + + return nr_cpus; +} diff --git a/arch/arm/mach-bcmbca/bcm47622/mmu_table.c b/arch/arm/mach-bcmbca/bcm47622/mmu_table.c new file mode 100644 index 0000000000..5193cbde42 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm47622/mmu_table.c @@ -0,0 +1,125 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include "mmu_map_v7.h" + +static struct mm_region broadcom_bcm947622_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) +#if !defined(CONFIG_TPL_BUILD) + /* SPL table */ + /* DDR memory. Enable the maximum 2GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000, + .phys = 0x00000000, + .size = SZ_2G, + .attrs = SECTION_ATTR_DEVICE, + }, + /* PSRAM for SPL runtime */ + + { + .virt = 0x85200000, + .phys = 0x85200000, + .size = SZ_1M, + .attrs = SECTION_ATTR_CACHED_MEM, + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = SECTION_ATTR_DEVICE, + }, +#else + /* TPL table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif +#else + /* u-boot table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + { + /* CCI 500 */ + .virt = 0x81100000, + .phys = 0x81100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SYSPORT 0 and 1 */ + .virt = 0x80400000, + .phys = 0x80400000, + .size = SZ_2M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* BIU */ + .virt = 0x81000000, + .phys = 0x81000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* UBUS */ + .virt = 0x83000000, + .phys = 0x83000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* USB (includes other blocks in the 1M window) */ + .virt = 0x8000c000, + .phys = 0x8000c000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif + { + /* PMC */ + .virt = 0x80200000, + .phys = 0x80200000, + .size = SZ_2M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* MEMC PHY register */ + .virt = 0x80100000, + .phys = 0x80100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SoC peripheral */ + .virt = 0xff800000, + .phys = 0xff800000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* BLUT */ + .virt = 0xfff00000, + .phys = 0xfff00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm947622_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm4908/Kconfig b/arch/arm/mach-bcmbca/bcm4908/Kconfig new file mode 100644 index 0000000000..fe70b01d54 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm4908/Kconfig @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM4908 + +config TARGET_BCM94908 + bool "Broadcom 4908 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm4908" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x523 +endif + +config RSVD_USE_MAX_FROM_ENV_AND_DT + bool "RSVD will use max value from env and DT" + default y + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm4908/Makefile b/arch/arm/mach-bcmbca/bcm4908/Makefile new file mode 100644 index 0000000000..8cb9592c8f --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm4908/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +obj-y += mmu_table.o +obj-y += cpu.o \ No newline at end of file diff --git a/arch/arm/mach-bcmbca/bcm4908/cpu.c b/arch/arm/mach-bcmbca/bcm4908/cpu.c new file mode 100644 index 0000000000..0572deaa5f --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm4908/cpu.c @@ -0,0 +1,159 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#endif +#if defined(CONFIG_BCMBCA_DDRC) +#include "spl_ddrinit.h" +#endif +#include "bcmbca-dtsetup.h" + +uint32_t cpu_speed = 0; +#define DUAL_CORE_4906 0x4906 + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + +static void enable_ubus_fast_write_ack(void) +{ + BIUCTRL->ubus_cfg |= 0x70; +} + +#endif + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + printf("Chip ID: BCM%X_%X\n",chipId,revId); +} +#endif + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_EMMC) + return BOOT_DEVICE_MMC1; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NOR) + return BOOT_DEVICE_NOR; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +#if defined(CONFIG_BCMBCA_PMC) + +void boost_cpu_clock(void) +{ + cpu_speed = (MISC->miscStrapBus&MISC_STRAP_BUS_CPU_SLOW_FREQ) ? 400: 1800; + printf("set cpu freq to 1800MHz from %dMHz\n", cpu_speed); + set_cpu_freq(1800); +} + +int set_cpu_freq(int freqMHz) +{ + PLL_CTRL_REG ctrl_reg; + uint32_t clkcfg; + + /* only support 1800MHz and 400MHz for now */ + if( freqMHz != 1800 && freqMHz != 400) + { + printf("%dMHz is not supported, stay with %dMHz\n", freqMHz, cpu_speed); + return -1; + } + + /* this code is used to switch from default slow cpu 400MHz to 1.8GHz */ + if( freqMHz == 1800 ) + { + if( cpu_speed == 400 ) + { + ReadBPCMRegister(PMB_ADDR_B53PLL, PLLBPCMRegOffset(resets), &ctrl_reg.Reg32); + ctrl_reg.Bits.byp_wait = 0; + WriteBPCMRegister(PMB_ADDR_B53PLL, PLLBPCMRegOffset(resets), ctrl_reg.Reg32); + } + /* adjust clock divider and safe mode setting for better perfomance */ + clkcfg = BIUCTRL->clock_cfg; + clkcfg &= ~(BIU_CPU_CTRL_CLK_CFG_CCI_CLK_RATIO_MASK|BIU_CPU_CTRL_CLK_CFG_SAFE_CLOCK_MODE_MASK|BIU_CPU_CTRL_CLK_CFG_CLK_RATIO_MASK); + clkcfg |= (BIU_CPU_CTRL_CLK_CFG_CCI_CLK_RATIO_DIV2|BIU_CPU_CTRL_CLK_CFG_CLK_RATIO_DIV1); + BIUCTRL->clock_cfg = clkcfg; + } + + if( freqMHz == 400 ) + { + /* turn on safe mode setting */ + clkcfg = BIUCTRL->clock_cfg; + clkcfg &= ~(BIU_CPU_CTRL_CLK_CFG_SAFE_CLOCK_MODE_MASK); + clkcfg |= (BIU_CPU_CTRL_CLK_CFG_SAFE_CLOCK_MODE_MASK); + BIUCTRL->clock_cfg = clkcfg; + + if( cpu_speed == 1800) + { + ReadBPCMRegister(PMB_ADDR_B53PLL, PLLBPCMRegOffset(resets), &ctrl_reg.Reg32); + ctrl_reg.Bits.byp_wait = 1; + WriteBPCMRegister(PMB_ADDR_B53PLL, PLLBPCMRegOffset(resets), ctrl_reg.Reg32); + } + } + + cpu_speed = freqMHz; + return freqMHz; +} +#endif + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + enable_ubus_fast_write_ack(); +#if defined(CONFIG_BCMBCA_DDRC) + spl_ddrinit_prepare(); +#endif + /* enable unalgined access */ + set_sctlr(get_sctlr() & ~CR_A); +#endif + return 0; +} +int get_nr_cpus() +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + int nr_cpus=QUAD_CPUS; + + if(chipId == DUAL_CORE_4906) + nr_cpus=DUAL_CPUS; + + return nr_cpus; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + uint32_t cpu, nr_cpus = QUAD_CPUS; + + printf("boot secondary cpu from 0x%lx\n", vector); + + nr_cpus = get_nr_cpus(); + cpu = 1; + while (cpu < nr_cpus) { + BOOT_LUT->bootLutRst = (uint32_t)vector; + BIUCTRL->power_cfg |= (0x1 << (cpu+BIU_CPU_CTRL_PWR_CFG_CPU0_BPCM_INIT_ON_SHIFT)); + BIUCTRL->reset_cfg &= ~(0x1 << cpu); + cpu++; + } + + return; +} +#endif diff --git a/arch/arm/mach-bcmbca/bcm4908/mmu_table.c b/arch/arm/mach-bcmbca/bcm4908/mmu_table.c new file mode 100644 index 0000000000..8a9a6d1f08 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm4908/mmu_table.c @@ -0,0 +1,163 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include + +static struct mm_region broadcom_bcm94908_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* DDR memory. Enable the maximum 4GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 2UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* MEMC and DDRY PHY control registers */ + { + .virt = 0x80018000UL, + .phys = 0x80018000UL, + .size = 0x40000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* RDP MEM for bootrom runtime */ + { + .virt = CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_128K_OFFSET, + .phys = CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_128K_OFFSET, + .size = SZ_128K, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* RDP MEM 32Kfor bootrom runtime */ + { + .virt = CONFIG_SYS_INIT_RAM_ADDR_VIRT, + .phys = CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_32K_OFFSET, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* RDP MEM 48K part 0 bootrom runtime */ + { + .virt = CONFIG_SYS_INIT_RAM_ADDR_VIRT + SZ_32K, + .phys = CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_48K_0_OFFSET, + .size = SZ_32K + SZ_16K, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* RDP MEM 48K part 1 bootrom runtime */ + { + .virt = CONFIG_SYS_INIT_RAM_ADDR_VIRT + SZ_32K + SZ_32K + SZ_16K, + .phys = CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_48K_1_OFFSET, + .size = SZ_32K + SZ_16K, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#else + /* DDR entries for cached memory, total size is a placehold + and will be filled in at run time. MUST be first entry */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 1UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* PMC */ + { + .virt = 0x80200000, + .phys = 0x80200000, + .size = 0x81000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* USB */ + { + .virt = 0x8000C000UL, + .phys = 0x8000C000UL, + .size = 0x3000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* BIUCFG */ + { + .virt = 0x81062000UL, + .phys = 0x81062000UL, + .size = 0x1000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* BOOTLUT */ + { + .virt = 0xffff0000UL, + .phys = 0xffff0000UL, + .size = 0x1000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* UNIMAC */ + { + .virt = 0x80002000UL, + .phys = 0x80002000UL, + .size = 0x1000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* SF2 */ + { + .virt = 0x80080000UL, + .phys = 0x80080000UL, + .size = 0x42000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#endif + { + /* SoC peripheral */ + .virt = 0xff800000UL, + .phys = 0xff800000UL, + .size = 0x100000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm94908_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm4912/Kconfig b/arch/arm/mach-bcmbca/bcm4912/Kconfig new file mode 100644 index 0000000000..5c34bc769e --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm4912/Kconfig @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM4912 + +config TARGET_BCM94912 + bool "Broadcom 4912 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm4912" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x41607 + +config BCMBCA_DDR4_DEF_MCBSEL + hex "default DDR4 mcb selector value" + default 0x141733 +endif + +config RSVD_USE_MAX_FROM_ENV_AND_DT + bool "RSVD will use max value from env and DT" + default y + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm4912/Makefile b/arch/arm/mach-bcmbca/bcm4912/Makefile new file mode 100644 index 0000000000..e7f9f65ffb --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm4912/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +obj-y += mmu_table.o +obj-y += cpu.o diff --git a/arch/arm/mach-bcmbca/bcm4912/cpu.c b/arch/arm/mach-bcmbca/bcm4912/cpu.c new file mode 100644 index 0000000000..919ac8bd47 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm4912/cpu.c @@ -0,0 +1,205 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#if defined(CONFIG_BCMBCA_DDRC) +#include +#endif +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#endif +#include "tpl_params.h" + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + +static void enable_ts0_couner(void) +{ + BIUCFG->ts0_ctrl.CNTCR |= 0x1; +} + +static void enable_upper_memory_access(void) +{ + /* enable the 8G to 16G address range for memc */ + BIUCFG->bac.bac_cciaddr = 0x55550055; + CCI500->ctrl_ovr |= (1 << 29); +} + +#elif defined(CONFIG_TPL_BUILD) +static void cci500_enable(void) +{ + /*Enable access from E2 and below */ + CCI500->secr_acc |= SECURE_ACCESS_UNSECURE_ENABLE; +} + +static void enable_ns_access(void) +{ + BIUCFG->bac.bac_permission |= 0x33; // Linux access to BAC_CPU_THERM_TEMP +} + +static void disable_memc_sram(void) +{ + uint32_t addr = MEMC_BASE + mc2_afx_sram_match_cfg_sram_start_addr_hi; + + writel(readl(addr)&~0x80000000, addr); +} + +static void setup_ubus_rangechk(void) +{ + /* Size in MB. First 2GB is set up by default */ + int size_left = tplparams->ddr_size - 2048; + int size, size_bit, i = 1; +#ifdef PHYS_SDRAM_2 + uint64_t addr = PHYS_SDRAM_2; +#else + uint64_t addr = 0x100000000UL; +#endif + + /* Fix the default of RC0 to only enable lower 2G memory for ubus master */ + UBUS4_RANGE_CHK_SETUP->cfg[0].base = 0x13; + + /* setup the second range check for the top DDR region */ + while (size_left > 0 && i < 16) { + /* each range checker can support up to 4GB size */ + if (size_left > 4096 ) + size = 4096; + else + size = size_left; + size_left -= size; + size_bit = 0; + size = (size << 8); /* MB to # of 4KB */ + while (size) { + size = (size >> 1); + if (size) + size_bit++; + } + + UBUS4_RANGE_CHK_SETUP->cfg[i].control = 0x1f0; + UBUS4_RANGE_CHK_SETUP->cfg[i].srcpid[0] = 0xffffffff; + UBUS4_RANGE_CHK_SETUP->cfg[i].seclev = 0xffffffff; + UBUS4_RANGE_CHK_SETUP->cfg[i].base = (addr&0xffffffe0) | size_bit; + UBUS4_RANGE_CHK_SETUP->cfg[i].base_up = addr >> 32; + + addr += 4096UL << size_bit; + i++; + } +} + +#endif + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + printf("Chip ID: BCM%X_%X\n",chipId,revId); +} +#endif + +#if defined(CONFIG_BCMBCA_PMC) +void boost_cpu_clock(void) +{ + printf("set cpu freq to 2000MHz\n"); + set_cpu_freq(2000); + pll_ch_freq_set(PMB_ADDR_BIU_PLL, 1, 4000/800); // raise ACEBIU clock rate to 800 MHz +} + +int set_cpu_freq(int freqMHz) +{ + int mdiv; + + if( freqMHz > 2000 || freqMHz < 400 ) + { + printf("%dMHz is not supported\n", freqMHz); + return -1; + } + + /* VCO at 4GHz, mdiv = Fvco/target frequency */ + mdiv = 4000/freqMHz; + + pll_ch_freq_set(PMB_ADDR_BIU_PLL, 0, mdiv); + + return 4000/mdiv; +} +#endif + +static int reset_plls(void) +{ + /* Software workaround for non-resetting eMMC PLL */ + pll_ch_reset(PMB_ADDR_BIU_PLL, 5, PLLBPCMRegOffset(ch45_cfg)); + return 0; +} + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + enable_ts0_couner(); +#if defined(CONFIG_BCMBCA_DDRC) + spl_ddrinit_prepare(); +#endif + enable_upper_memory_access(); + /* enable unalgined access */ + set_sctlr(get_sctlr() & ~CR_A); +#endif + +#if defined(CONFIG_TPL_BUILD) + enable_ns_access(); + disable_memc_sram(); + setup_ubus_rangechk(); + cci500_enable(); +#endif + + reset_plls(); + return 0; +} + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_EMMC) + return BOOT_DEVICE_MMC1; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + uint32_t cpu, nr_cpus = 4; + ARM_CONTROL_REG ctrl_reg; + uint64_t rvbar = vector; + + printf("boot secondary cpu from 0x%lx\n", vector); + + cpu = 1; + while (cpu < nr_cpus) { + int stat; + + BIUCFG->cluster[0].rvbar_addr[cpu] = rvbar; + stat = PowerOnDevice(PMB_ADDR_ORION_CPU0 + cpu); + if (stat != kPMC_NO_ERROR) + printf("failed to power on secondary cpu %d - sts %d\n", cpu, stat); + + stat = ReadBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), &ctrl_reg.Reg32); + ctrl_reg.Bits.cpu_reset_n &= ~(0x1 << cpu); + stat |= WriteBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), ctrl_reg.Reg32); + if (stat != kPMC_NO_ERROR) + printf("failed to boot secondary cpu %d - sts %d\n", cpu, stat); + cpu++; + } + + return; +} +#endif diff --git a/arch/arm/mach-bcmbca/bcm4912/mmu_table.c b/arch/arm/mach-bcmbca/bcm4912/mmu_table.c new file mode 100644 index 0000000000..f38d54a48a --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm4912/mmu_table.c @@ -0,0 +1,202 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include +#ifdef CONFIG_SPL_XIP_SUPPORT +#include +#endif + +static struct mm_region broadcom_bcm94912_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* DDR memory. Enable the maximum 8GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 2UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + { + .virt = 0x100000000UL, + .phys = 0x100000000UL, + .size = 6UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* MEMC control registers */ + { + .virt = 0x80040000UL, + .phys = 0x80040000UL, + .size = 0x2000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* DDR PHY control registers */ + { + .virt = 0x80060000UL, + .phys = 0x80060000UL, + .size = 0x6000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* DPFE control registers */ + { + .virt = 0x80070000UL, + .phys = 0x80070000UL, + .size = 0xc000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* LMEM for bootrom runtime */ + { + .virt = CONFIG_SYS_INIT_RAM_ADDR, + .phys = CONFIG_SYS_INIT_RAM_ADDR, + .size = CONFIG_SYS_INIT_RAM_SIZE, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + +#ifdef CONFIG_SPL_XIP_SUPPORT + /* NOR FLASH XIP Window */ + { + .virt = NOR_XIP_BASE_ADDR, + .phys = NOR_XIP_BASE_ADDR, + .size = 0x100000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#endif +#else + /* DDR entries for cached memory, total size is a placehold + and will be filled in at run time. MUST be first entry */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 1UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* GIC */ + { + .virt = 0x81001000UL, + .phys = 0x81001000UL, + .size = 0x7000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + + { + /* XRDP PSRAM */ + .virt = 0x82000000UL, + .phys = 0x82000000UL, + .size = 0x30000, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + + { + /* XRDP Rest of block */ + .virt = 0x82700000UL, + .phys = 0x82700000UL, + .size = 0x600000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + { + /* ETH_PHY_TOP */ + .virt = 0x837ff000UL, + .phys = 0x837ff000UL, + .size = 0x1000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + { + /* PMC */ + .virt = 0xffa00000UL, + .phys = 0xffa00000UL, + .size = 0x200000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#endif + { + /* SoC peripheral */ + .virt = 0xff800000UL, + .phys = 0xff800000UL, + .size = 0x100000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* CCI-500 */ + { + .virt = 0x81100000, + .phys = 0x81100000, + .size = 0x91000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* BIUCFG */ + { + .virt = 0x81060000, + .phys = 0x81060000, + .size = 0x3000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* UBUS4 Coherency Port */ + { + .virt = 0x810A0000, + .phys = 0x810A0000, + .size = 0x1000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm94912_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm63138/Kconfig b/arch/arm/mach-bcmbca/bcm63138/Kconfig new file mode 100644 index 0000000000..eb14e61d74 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/Kconfig @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM63138 + +config TARGET_BCM963138 + bool "Broadcom 63138 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm63138" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x421 +endif + +config TPL_MAX_SIZE + default 1048576 + +config RSVD_USE_MAX_FROM_ENV_AND_DT + bool "RSVD will use max value from env and DT" + default y + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm63138/Makefile b/arch/arm/mach-bcmbca/bcm63138/Makefile new file mode 100644 index 0000000000..6ac5fdfe02 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/Makefile @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +obj-y += cpu.o +obj-y += mmu_table.o +ifndef CONFIG_TPL_BUILD +# SPL +obj-$(CONFIG_SPL_BUILD) += pmc.o +endif + +ifndef CONFIG_SPL_BUILD +# u-boot proper +obj-$(CONFIG_BCMBCA_RDP) += rdp_fw/ +endif \ No newline at end of file diff --git a/arch/arm/mach-bcmbca/bcm63138/cpu.c b/arch/arm/mach-bcmbca/bcm63138/cpu.c new file mode 100644 index 0000000000..62d851c339 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/cpu.c @@ -0,0 +1,189 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include +#include "bcmbca-dtsetup.h" + +#define SINGLE_CORE_63132 0x63132 + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) +static void set_vr_gain(void) +{ + /* set the internal voltage regulator gain to 8. This reduces the response time and keeps + voltage supply to ddr stable. */ + PROCMON->SSBMaster.wr_data = 0x800; + PROCMON->SSBMaster.control = 0x3440; + PROCMON->SSBMaster.control = 0xb440; + while (PROCMON->SSBMaster.control & 0x8000) ; + + PROCMON->SSBMaster.wr_data = 0x802; + PROCMON->SSBMaster.control = 0x3440; + PROCMON->SSBMaster.control = 0xb440; + while (PROCMON->SSBMaster.control & 0x8000) ; + + PROCMON->SSBMaster.wr_data = 0x800; + PROCMON->SSBMaster.control = 0x3440; + PROCMON->SSBMaster.control = 0xb440; + while (PROCMON->SSBMaster.control & 0x8000) ; +} + +static void enable_ubus_fast_ack(void) +{ + ARMAIPCTRL->cfg |= AIP_CTRL_CFG_WR_FAST_ACK_MASK; +} +#endif + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + printf("Chip ID: BCM%X_%X\n",chipId,revId); +} +#endif + +int bcmbca_get_boot_device(void) +{ + if ( (MISC->miscStrapBus & MISC_STRAP_BUS_SW_BOOT_SPI_SPINAND_EMMC_MASK) && + ((MISC->miscStrapBus & MISC_STRAP_BUS_BOOT_OPT_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) ) + return BOOT_DEVICE_SPI; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SPI_NOR) != MISC_STRAP_BUS_BOOT_SPI_NOR) + return BOOT_DEVICE_NAND; + + if ( (MISC->miscStrapBus & MISC_STRAP_BUS_SW_BOOT_SPI_SPINAND_EMMC_MASK) && + ((MISC->miscStrapBus & MISC_STRAP_BUS_BOOT_OPT_MASK) == MISC_STRAP_BUS_BOOT_EMMC) ) + return BOOT_DEVICE_MMC1; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +void boost_cpu_clock(void) +{ + printf("set cpu freq to 1000MHz\n"); + set_cpu_freq(1000); +} + +int set_cpu_freq(int freqMHz) +{ + int mdiv = 0; + int policy = 0; + + if (freqMHz < 200 || freqMHz > 1000) { + printf("invalid cpu frequency %d\n", freqMHz); + return -1; + } + + /* enable write access the arm clk mananger */ + ARMCFG->proc_clk.wr_access |= + (ARM_PROC_CLK_WR_ACCESS_PASSWORD << + ARM_PROC_CLK_WR_ACCESS_PASSWORD_SHIFT) | + ARM_PROC_CLK_WR_ACCESS_CLKMGR_ACC; + mdiv = 2000 / freqMHz; + + if (mdiv < 10) { /* setting frequency between 200 MHz and 1 GHz */ + /* set clk divider and enable pll */ + int ndiv = 2 * 1000 / 25; // ndiv based on 1GHz + + ARMCFG->proc_clk.pllarma = + (ARMCFG->proc_clk. + pllarma & ~(ARM_PROC_CLK_PLLARMA_PDIV_MASK | + ARM_PROC_CLK_PLLARMA_NDIV_MASK | + ARM_PROC_CLK_PLLARMA_PWRDWN_SWOVRRIDE_MASK)) | + (2 << ARM_PROC_CLK_PLLARMA_PDIV_SHIFT) | (ndiv << + ARM_PROC_CLK_PLLARMA_NDIV_SHIFT) + | ARM_PROC_CLK_PLLARMA_SOFT_RESETB_N; + + /* wait for pll to lock */ + while ((ARMCFG->proc_clk. + pllarma & ARM_PROC_CLK_PLLARMA_PLL_LOCK_RAW) == 0) ; + + /* enable post diveder */ + ARMCFG->proc_clk.pllarma |= + ARM_PROC_CLK_PLLARMA_SOFT_POST_RESETB_N; + } + + /* set the freq policy */ + policy = + (freqMHz == + 200) ? ARM_PROC_CLK_POLICY_FREQ_SYSCLK : + ARM_PROC_CLK_POLICY_FREQ_ARMPLL_SLOW; + ARMCFG->proc_clk.policy_freq = + (ARMCFG->proc_clk. + policy_freq & ~ARM_PROC_CLK_POLICY_FREQ_MASK) | (policy << + ARM_PROC_CLK_POLICY3_FREQ_SHIFT) + | (policy << ARM_PROC_CLK_POLICY2_FREQ_SHIFT) | (policy << + ARM_PROC_CLK_POLICY1_FREQ_SHIFT) + | (policy << ARM_PROC_CLK_POLICY0_FREQ_SHIFT); + + /* setting the mdiv */ + ARMCFG->proc_clk.pllarmc &= 0xffffff00; + ARMCFG->proc_clk.pllarmc |= mdiv; + ARMCFG->proc_clk.pllarmc |= 0x800; + + /* enabled hardware clock gating */ + ARMCFG->proc_clk.core0_clkgate = + (ARMCFG->proc_clk. + core0_clkgate & ~ARM_PROC_CLK_CORE0_CLKGATE_GATING_SEL_MASK) | + (ARM_PROC_CLK_CORE0_CLKGATE_GATING_SEL_HW << + ARM_PROC_CLK_CORE0_CLKGATE_GATING_SEL_SHIFT); + ARMCFG->proc_clk.core1_clkgate = + (ARMCFG->proc_clk. + core1_clkgate & ~ARM_PROC_CLK_CORE1_CLKGATE_GATING_SEL_MASK) | + (ARM_PROC_CLK_CORE1_CLKGATE_GATING_SEL_HW << + ARM_PROC_CLK_CORE1_CLKGATE_GATING_SEL_SHIFT); + ARMCFG->proc_clk.arm_switch_clkgate = + (ARMCFG->proc_clk. + arm_switch_clkgate & ~ARM_PROC_CLK_SWITCH_CLKGATE_GATING_SEL_MASK) + | (ARM_PROC_CLK_SWITCH_CLKGATE_GATING_SEL_HW << + ARM_PROC_CLK_SWITCH_CLKGATE_GATING_SEL_SHIFT); + ARMCFG->proc_clk.arm_periph_clkgate = + (ARMCFG->proc_clk. + arm_periph_clkgate & ~ARM_PROC_CLK_PERIPH_CLKGATE_GATING_SEL_MASK) + | (ARM_PROC_CLK_PERIPH_CLKGATE_GATING_SEL_HW << + ARM_PROC_CLK_PERIPH_CLKGATE_GATING_SEL_SHIFT); + ARMCFG->proc_clk.apb0_clkgate = + (ARMCFG->proc_clk. + apb0_clkgate & ~ARM_PROC_CLK_APB0_CLKGATE_GATING_SEL_MASK) | + (ARM_PROC_CLK_APB0_CLKGATE_GATING_SEL_HW << + ARM_PROC_CLK_APB0_CLKGATE_GATING_SEL_SHIFT); + + /* enable the new freq policy */ + ARMCFG->proc_clk.policy_ctl |= + (ARM_PROC_CLK_POLICY_CTL_GO_AC | ARM_PROC_CLK_POLICY_CTL_GO); + + /* wait for policy to be activated */ + while (ARMCFG->proc_clk.policy_ctl & ARM_PROC_CLK_POLICY_CTL_GO) ; + + return 2000/mdiv; +} + +int get_nr_cpus() +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + int nr_cpus=DUAL_CPUS; + + if(chipId == SINGLE_CORE_63132) + nr_cpus=ONE_CPU; + + return nr_cpus; +} +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + enable_ubus_fast_ack(); + set_vr_gain(); + /* enable unalgined access */ + set_cr(get_cr() & ~CR_A); +#endif + return 0; +} diff --git a/arch/arm/mach-bcmbca/bcm63138/mmu_table.c b/arch/arm/mach-bcmbca/bcm63138/mmu_table.c new file mode 100644 index 0000000000..98948624a0 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/mmu_table.c @@ -0,0 +1,90 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include "mmu_map_v7.h" + +static struct mm_region broadcom_bcm963138_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) +#if !defined(CONFIG_TPL_BUILD) + /* SPL table */ + + /* DDR memory. Enable the maximum 1GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000, + .phys = 0x00000000, + .size = SZ_1G, + .attrs = SECTION_ATTR_DEVICE, + }, + /* LMEM for SPL runtime */ + { + .virt = 0x80700000, + .phys = 0x80700000, + .size = SZ_1M, + .attrs = SECTION_ATTR_CACHED_MEM, + }, +#else + /* TPL table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + /* LMEM for SPL runtime */ + { + .virt = 0x80700000, + .phys = 0x80700000, + .size = SZ_1M, + .attrs = SECTION_ATTR_CACHED_MEM, + }, +#endif +#else + /* u-boot table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + { + /* APM */ + .virt = 0x80100000, + .phys = 0x80100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* RDP */ + .virt = 0x80200000, + .phys = 0x80200000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif + { + /* Register space (covers MEMC, USB, etc) */ + .virt = 0x80000000, + .phys = 0x80000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* PMC */ + .virt = 0x80400000, + .phys = 0x80400000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SoC peripheral */ + .virt = 0xfff00000, + .phys = 0xfff00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm963138_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm63138/pmc.S b/arch/arm/mach-bcmbca/bcm63138/pmc.S new file mode 100644 index 0000000000..70bfff18f5 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/pmc.S @@ -0,0 +1,237 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include + +/* ********************************************************************* + * pmc_send_cmd() + * + * send pmc cmd to DQM queue and wait for response + * + * + * Inputs: + * r0 - DQM input word0 + * r1 - DQM input word1 + * r2 - DQM input word2 + * r3 - DQM input word3 + * + * Outputs: + * r0 - DQM output word0 + * r1 - DQM output word1 + * r2 - DQM output word2 + * r3 - DQM output word3 + * + * Register used: + * r0, r1, r2, r3, r4 + ********************************************************************* */ +ENTRY(pmc_send_cmd) + + ldr r4, =PMC_DQM_QUEUE_DATA_BASE + add r4, #PMC_DQM_QUEUE_DATA_HOST_TO_PMC + str r0, [r4, #0x0] + str r1, [r4, #0x4] + str r2, [r4, #0x8] + str r3, [r4, #0xc] /* Write register value (the 4th word) intiates the write */ + + ldr r4, =PMC_DQM_BASE + mov r1, #2 /* Only need the status for DQM message queue 1 PMC to Host */ +pmcw: ldr r2, [r4, #PMC_DQM_NOT_EMPTY_STS] + and r2, r2, r1 /* get rid of everything except 2nd bit */ + cmp r2, #0 + beq pmcw /* Repeat until DQM1 is ready with data */ + + ldr r4, =PMC_DQM_QUEUE_DATA_BASE + add r4, #PMC_DQM_QUEUE_DATA_PMC_TO_HOST + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + ldr r3, [r4, #0xc] /* read word 3 ( read is complete ... DQM1 has been flushed) */ + + mov pc, lr +ENDPROC(pmc_send_cmd) + +/* ********************************************************************* + * pmb_send_cmd() + * + * register access using power mamagement bus directly + * + * + * Inputs: + * r0 - dev address + * r1 - register offset + * r2 - register value for write, ignore for read + * r3 - 0 for read, 1 for write + * Outputs: + * r0 - return value + * zero - success, 1 - time out, 2 - slave error + * r1 - read value + * + * Register used: + * r0, r1, r2, r3, r4 + ********************************************************************* */ +ENTRY(pmb_send_cmd) + + mov r4, #3 /* check which power management bus */ + ands r4, r0, LSR #8 + ldreq r4, =PMBM0_BASE + ldrne r4, =PMBM1_BASE + + and r0, #0xff + orr r1, r0, LSL #12 + orr r1, r3, LSL #PMB_CNTRL_CMD_SHIFT + + /* make sure PMBM is not busy */ +pmbw1: + mov r3, #1 + ldr r0, [r4, #PMB_CNTRL] + ands r3, r0, LSR #PMB_CNTRL_BUSY_SHIFT + bne pmbw1 + + /* store the data if for write */ + mov r3, r1, LSR #PMB_CNTRL_CMD_SHIFT + ands r3, #0x1 + beq scmd + str r2, [r4, #PMB_WR_DATA] +scmd: + /* send the cmd */ + str r1, [r4, #PMB_CNTRL] + mov r3, #1 + orr r1, r3, LSL #PMB_CNTRL_START_SHIFT + str r1, [r4, #PMB_CNTRL] + + /* make sure the cmd is done */ +pmbw2: + mov r3, #1 + ldr r0, [r4, #PMB_CNTRL] + ands r3, r0, LSR #PMB_CNTRL_START_SHIFT + bne pmbw2 + + /* check if any error */ + mov r3, #1 + ands r3, r0, LSR #PMB_CNTRL_TIMEOUT_ERR_SHIFT + movne r0, #1 + bne pmb_done + + mov r3, #1 + ands r3, r0, LSR #PMB_CNTRL_SLAVE_ERR_SHIFT + movne r0, #2 + bne pmb_done + + mov r0, #0 + mov r3, r1, LSR #PMB_CNTRL_CMD_SHIFT + ands r3, #0x1 + bne pmb_done + ldr r1, [r4, #PMB_RD_DATA] + +pmb_done: + mov pc, lr + +ENDPROC(pmb_send_cmd) + +/* ********************************************************************* + * pmc_write_bpcm_reg() + * + * perform a write to a BPCM register via the PMC message handler + * + * + * Inputs: + * r0 - dev address + * r1 - register offset + * r2 - register value to write + * + * Outputs: + * r0 - return value, pmc error code. + * zero - success, non zero - error + * + * Register used: + * r0, r1, r2, r3, r4, r10 + ********************************************************************* */ +ENTRY(pmc_write_bpcm_reg) + mov r10, lr /* persevere link reg across call */ + + ldr r4, =MISC_BASE /* check if PMC ROM is enabled or not */ + ldr r4, [r4, #MISC_STRAP_BUS] + lsr r4, #MISC_STRAP_BUS_PMC_ROM_BOOT_SHIFT + ands r4, #0x1 + beq nopmc1 + + mov r3, r2 + and r2, r1, #0xff /* register addr offset within pmbs device */ + ldr r4, =0x3ff + and r1, r0, r4 + lsl r1, #10 /* DQM message word1 pmb bus index[19:18]=0, dev addr within bus[17:10] */ + mov r0, #0xd /* DQM message word0 cmdId[7:0]=cmdWriteBpcmReg=0x0d */ + + bl pmc_send_cmd + + lsr r0, #8 + and r0, #0xff /* return the PMC error code */ + b write_reg_done + +nopmc1: /* use PMB direct access */ + mov r3, #1 /* 1 for write */ + bl pmb_send_cmd + +write_reg_done: + mov lr, r10 /* restore link */ + mov pc, lr +ENDPROC(pmc_write_bpcm_reg) + + +/* ********************************************************************* + * pmc_read_bpcm_reg() + * + * perform a read to a BPCM register via the PMC message handler + * + * + * Inputs: + * r0 - dev address + * r1 - register offset + * + * Outputs: + * r0 - return value, pmc error code. + * zero - success, non zero - error + * r1 - register value if return success + * + * Register used: + * r0, r1, r2, r3, r4, r10 + ********************************************************************* */ +ENTRY(pmc_read_bpcm_reg) + + mov r10, lr /* persevere link reg across call */ + + ldr r4, =MISC_BASE /* check if PMC ROM is enabled or not */ + ldr r4, [r4, #MISC_STRAP_BUS] + lsr r4, #MISC_STRAP_BUS_PMC_ROM_BOOT_SHIFT + ands r4, #0x1 + beq nopmc2 + + mov r3, #0 + and r2, r1, #0xff /* register addr offset within pmbs device */ + ldr r4, =0x3ff + and r1, r0, r4 + lsl r1, #10 /* DQM message word1 pmb bus index[19:18]=0, dev addr within bus[17:10] */ + mov r0, #0xb /* DQM message word0 cmdId[7:0]=cmdReadBpcmReg=0x0b */ + + bl pmc_send_cmd + + lsr r0, #8 + and r0, #0xff /* return the PMC error code */ + mov r1, r2 + b read_reg_done + +nopmc2: /* use PMB direct access */ + mov r3, #0 /* 0 for write */ + bl pmb_send_cmd + +read_reg_done: + mov lr, r10 /* restore link */ + mov pc, lr + +ENDPROC(pmc_read_bpcm_reg) + + diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/Makefile b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/Makefile new file mode 100644 index 0000000000..2d63fbb27b --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/Makefile @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +KBUILD_CPPFLAGS += --include linux/types.h + +obj-y += \ + runner_fw_b.o \ + runner_fw_c.o \ + runner_fw_d.o \ + predict_runner_fw_b.o \ + predict_runner_fw_c.o \ + predict_runner_fw_d.o + diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/predict_runner_fw_b.c b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/predict_runner_fw_b.c new file mode 100755 index 0000000000..ec2bba582f --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/predict_runner_fw_b.c @@ -0,0 +1,459 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint16_t firmware_predict_B[] = { + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0008, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x8000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0010, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x1000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x2020, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0040, + 0x0000, + 0x0082, + 0x0000, + 0x0020, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0001, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0100, + 0x0000, + 0x0080, + 0x0000, + 0x0020, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0100, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0080, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0001, + 0x0002, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0100, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0004, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0400, + 0x1000, + 0x0010, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0200, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0020, + 0x4000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0002, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0200, + 0x0000, + 0x0000, + 0x0200, + 0x1000, + 0x0000, + 0x0000, + 0x4000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x1000, + 0x0040, + 0x0000, + 0x0000, + 0x0000, + 0x0080, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, +}; diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/predict_runner_fw_c.c b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/predict_runner_fw_c.c new file mode 100755 index 0000000000..8d09bc7c9b --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/predict_runner_fw_c.c @@ -0,0 +1,267 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint16_t firmware_predict_C[] = { + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x1000, + 0x0000, + 0x0008, + 0x0000, + 0x0000, + 0x1004, + 0x8009, + 0x0000, + 0x0000, + 0x0002, + 0x0200, + 0x0000, + 0x0008, + 0x0400, + 0x0000, + 0x0000, + 0x0000, + 0x0020, + 0x0000, + 0x0000, + 0x0000, + 0x0010, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0080, + 0x0000, + 0x0000, + 0x0010, + 0x0001, + 0x0001, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0002, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x4000, + 0x0040, + 0x0000, + 0x2002, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0040, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x4000, + 0x0000, + 0x0040, + 0x0000, + 0x0000, + 0x0020, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0001, + 0x0000, + 0x0200, + 0x0000, + 0x0000, + 0x4000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0400, + 0x0000, + 0x0080, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0010, + 0x0000, + 0x1000, + 0x0000, + 0x0000, + 0x0008, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0020, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x2000, + 0x0200, + 0x0010, + 0x0000, + 0x0000, + 0x0400, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, +}; diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/predict_runner_fw_d.c b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/predict_runner_fw_d.c new file mode 100755 index 0000000000..9f72dd814e --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/predict_runner_fw_d.c @@ -0,0 +1,267 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint16_t firmware_predict_D[] = { + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0200, + 0x0000, + 0x1000, + 0x0000, + 0x0000, + 0x0000, + 0x1000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0101, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0004, + 0x8000, + 0x0010, + 0x0000, + 0x0000, + 0x0200, + 0x0000, + 0x2000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x8000, + 0x2000, + 0x0000, + 0x0009, + 0x0004, + 0x1000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x2000, + 0x0000, + 0x0000, + 0x0200, + 0x2000, + 0x1000, + 0x0800, + 0x0000, + 0x0804, + 0x0100, + 0x0002, + 0x0000, + 0x0000, + 0x0000, + 0x0040, + 0x0001, + 0x0001, + 0x0000, + 0x0002, + 0x0004, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0020, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0100, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0020, + 0x0000, + 0x0100, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0001, + 0x0200, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, +}; diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_a_labels.h b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_a_labels.h new file mode 100755 index 0000000000..97e3260d37 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_a_labels.h @@ -0,0 +1,91 @@ +#ifndef RUNNER_A_CODE_ADDRESSES +#define RUNNER_A_CODE_ADDRESSES + +#define runner_a_start_task_initialization_task (0x14) +#define runner_a_initialization_task (0x14) +#define runner_a_start_task_timer_scheduler_set (0x38AC) +#define runner_a_timer_scheduler_set (0x38AC) +#define runner_a_start_task_cpu_rx_wakeup_request (0x2670) +#define runner_a_cpu_rx_wakeup_request (0x2670) +#define runner_a_start_task_flow_cache_wakeup_request (0xE78) +#define runner_a_flow_cache_wakeup_request (0xE78) +#define runner_a_start_task_cpu_tx_wakeup_request (0x2E1C) +#define runner_a_cpu_tx_wakeup_request (0x2E1C) +#define runner_a_start_task_policer_budget_allocator_1st_wakeup_request (0x39E0) +#define runner_a_policer_budget_allocator_1st_wakeup_request (0x39E0) +#define runner_a_start_task_wan_direct_wakeup_request (0x18D4) +#define runner_a_wan_direct_wakeup_request (0x18D4) +#define runner_a_start_task_wan_cpu_wakeup_request (0x204) +#define runner_a_wan_cpu_wakeup_request (0x204) +#define runner_a_start_task_wan_normal_wakeup_request (0x3C8) +#define runner_a_wan_normal_wakeup_request (0x3C8) +#define runner_a_start_task_downstream_multicast_wakeup_request (0x335C) +#define runner_a_downstream_multicast_wakeup_request (0x335C) +#define runner_a_start_task_debug_routine (0x11C) +#define runner_a_debug_routine (0x11C) +#define runner_a_start_task_free_skb_index_wakeup_request (0x39AC) +#define runner_a_free_skb_index_wakeup_request (0x39AC) +#define runner_a_free_skb_index_tx_abs_done (0x39AC) +#define runner_a_start_task_dhd_tx_post (0x4428) +#define runner_a_dhd_tx_post (0x4428) +#define runner_a_start_task_dhd_tx_complete_wakeup_request (0x484C) +#define runner_a_dhd_tx_complete_wakeup_request (0x484C) +#define runner_a_dhd_tx_complete_check_next (0x484C) +#define runner_a_start_task_ipsec_ds_wakeup_request (0x3CE8) +#define runner_a_ipsec_ds_wakeup_request (0x3CE8) +#define runner_a_start_task_ethwan2_normal_wakeup_request (0x260) +#define runner_a_ethwan2_normal_wakeup_request (0x260) +#define runner_a_gpe_sop_push_replace_ddr_sram_32 (0x1A90) +#define runner_a_gpe_sop_push_replace_sram_32_64 (0x1B04) +#define runner_a_gpe_sop_push_replace_sram_64 (0x1B18) +#define runner_a_gpe_sop_push_replace_sram_64_32 (0x1B2C) +#define runner_a_gpe_sop_pull_replace_ddr_sram_32 (0x1B40) +#define runner_a_gpe_sop_pull_replace_sram_32_64 (0x1BB4) +#define runner_a_gpe_sop_pull_replace_sram_64 (0x1C04) +#define runner_a_gpe_sop_pull_replace_sram_64_32 (0x1C40) +#define runner_a_gpe_replace_pointer_32_ddr (0x1C90) +#define runner_a_gpe_replace_pointer_32_sram (0x1CB4) +#define runner_a_gpe_replace_pointer_64_sram (0x1CD8) +#define runner_a_gpe_replace_16 (0x1CFC) +#define runner_a_gpe_replace_32 (0x1D30) +#define runner_a_gpe_replace_bits_16 (0x1D54) +#define runner_a_gpe_copy_add_16_cl (0x1D80) +#define runner_a_gpe_copy_add_16_sram (0x1D8C) +#define runner_a_gpe_copy_bits_16_cl (0x1DD4) +#define runner_a_gpe_copy_bits_16_sram (0x1DE0) +#define runner_a_gpe_insert_16 (0x1E28) +#define runner_a_gpe_delete_16 (0x1E90) +#define runner_a_gpe_decrement_8 (0x1ED0) +#define runner_a_gpe_apply_icsum_16 (0x1EF4) +#define runner_a_gpe_apply_icsum_nz_16 (0x1F18) +#define runner_a_gpe_compute_csum_16_cl (0x1F54) +#define runner_a_gpe_compute_csum_16_sram (0x1F60) +#define runner_a_gpe_buffer_copy_16_sram (0x1FA0) +#define runner_a_gpe_buffer_copy_16_ddr (0x1FC8) +#define runner_a_ingress_classification_key_src_ip (0x21D0) +#define runner_a_ingress_classification_key_dst_ip (0x2214) +#define runner_a_ingress_classification_key_ipv6_flow_label (0x2258) +#define runner_a_ingress_classification_key_generic_rule_1 (0x227C) +#define runner_a_ingress_classification_key_generic_rule_2 (0x2284) +#define runner_a_ingress_classification_key_outer_tpid (0x22F0) +#define runner_a_ingress_classification_key_inner_tpid (0x22FC) +#define runner_a_ingress_classification_key_src_port (0x2318) +#define runner_a_ingress_classification_key_dst_port (0x2338) +#define runner_a_ingress_classification_key_outer_vlan (0x2358) +#define runner_a_ingress_classification_key_inner_vlan (0x2370) +#define runner_a_ingress_classification_key_dst_mac (0x238C) +#define runner_a_ingress_classification_key_src_mac (0x2394) +#define runner_a_ingress_classification_key_ether_type (0x23BC) +#define runner_a_ingress_classification_key_ip_protocol (0x23D0) +#define runner_a_ingress_classification_key_dscp (0x23F4) +#define runner_a_ingress_classification_key_ssid (0x2410) +#define runner_a_ingress_classification_key_ingress_port (0x2414) +#define runner_a_ingress_classification_key_outer_pbits (0x2424) +#define runner_a_ingress_classification_key_inner_pbits (0x243C) +#define runner_a_ingress_classification_key_number_of_vlans (0x2458) +#define runner_a_ingress_classification_key_layer3_protocol (0x2468) +#define runner_a_cpu_rx_meter_budget_allocate (0x392C) +#define runner_a_dhd_tx_post_close_aggregation (0x3978) +#define runner_a_schedule_free_skb_index (0x3990) + +#endif diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_b_labels.h b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_b_labels.h new file mode 100755 index 0000000000..4c663c2fa3 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_b_labels.h @@ -0,0 +1,56 @@ +#ifndef RUNNER_B_CODE_ADDRESSES +#define RUNNER_B_CODE_ADDRESSES + +#define runner_b_start_task_initialization_task (0x14) +#define runner_b_initialization_task (0x14) +#define runner_b_start_task_timer_scheduler_set (0x2E8C) +#define runner_b_timer_scheduler_set (0x2E8C) +#define runner_b_start_task_cpu_rx_wakeup_request (0x1574) +#define runner_b_cpu_rx_wakeup_request (0x1574) +#define runner_b_start_task_cpu_tx_wakeup_request (0x26A8) +#define runner_b_cpu_tx_wakeup_request (0x26A8) +#define runner_b_start_task_policer_budget_allocator_1st_wakeup_request (0x3338) +#define runner_b_policer_budget_allocator_1st_wakeup_request (0x3338) +#define runner_b_start_task_rate_control_budget_allocator_1st_wakeup_request (0x2588) +#define runner_b_rate_control_budget_allocator_1st_wakeup_request (0x2588) +#define runner_b_start_task_wan_interworking_enqueue_wakeup_request (0x208) +#define runner_b_wan_interworking_enqueue_wakeup_request (0x208) +#define runner_b_start_task_wan_tx_wakeup_request (0x6EC) +#define runner_b_wan_tx_wakeup_request (0x6EC) +#define runner_b_start_task_debug_routine (0x120) +#define runner_b_debug_routine (0x120) +#define runner_b_start_task_timer_7_1st_wakeup_request (0x30DC) +#define runner_b_timer_7_1st_wakeup_request (0x30DC) +#define runner_b_start_task_free_skb_index_wakeup_request (0x3020) +#define runner_b_free_skb_index_wakeup_request (0x3020) +#define runner_b_start_task_dhd_tx_post (0x3494) +#define runner_b_dhd_tx_post (0x3494) +#define runner_b_ingress_classification_key_src_ip (0x10AC) +#define runner_b_ingress_classification_key_dst_ip (0x10F0) +#define runner_b_ingress_classification_key_ipv6_flow_label (0x1134) +#define runner_b_ingress_classification_key_generic_rule_1 (0x1158) +#define runner_b_ingress_classification_key_generic_rule_2 (0x1160) +#define runner_b_ingress_classification_key_outer_tpid (0x11CC) +#define runner_b_ingress_classification_key_inner_tpid (0x11D8) +#define runner_b_ingress_classification_key_src_port (0x11F4) +#define runner_b_ingress_classification_key_dst_port (0x1214) +#define runner_b_ingress_classification_key_outer_vlan (0x1234) +#define runner_b_ingress_classification_key_inner_vlan (0x124C) +#define runner_b_ingress_classification_key_dst_mac (0x1268) +#define runner_b_ingress_classification_key_src_mac (0x1270) +#define runner_b_ingress_classification_key_ether_type (0x1298) +#define runner_b_ingress_classification_key_ip_protocol (0x12AC) +#define runner_b_ingress_classification_key_dscp (0x12D0) +#define runner_b_ingress_classification_key_ssid (0x12EC) +#define runner_b_ingress_classification_key_ingress_port (0x1304) +#define runner_b_ingress_classification_key_outer_pbits (0x1314) +#define runner_b_ingress_classification_key_inner_pbits (0x132C) +#define runner_b_ingress_classification_key_number_of_vlans (0x1348) +#define runner_b_ingress_classification_key_layer3_protocol (0x1358) +#define runner_b_spdsvc_timer_wakeup_request (0x2DF8) +#define runner_b_cpu_rx_meter_budget_allocate (0x2F0C) +#define runner_b_upstream_rate_limiter_budget_allocate (0x2F58) +#define runner_b_schedule_free_skb_index (0x3004) +#define runner_b_pps_rate_limiter_timer_wakeup_request (0x3140) + +#endif diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_c_labels.h b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_c_labels.h new file mode 100755 index 0000000000..9f4658f8f0 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_c_labels.h @@ -0,0 +1,40 @@ +#ifndef RUNNER_C_CODE_ADDRESSES +#define RUNNER_C_CODE_ADDRESSES + +#define runner_c_start_task_initialization_task (0x14) +#define runner_c_initialization_task (0x14) +#define runner_c_start_task_timer_scheduler_set (0x80C) +#define runner_c_timer_scheduler_set (0x80C) +#define runner_c_start_task_lan_tx_wakeup_request (0x454) +#define runner_c_lan_tx_wakeup_request (0x454) +#define runner_c_start_task_cpu_tx_wakeup_request (0xB2C) +#define runner_c_cpu_tx_wakeup_request (0xB2C) +#define runner_c_start_task_lan_enqueue_ih_wakeup_request (0x1C4) +#define runner_c_lan_enqueue_ih_wakeup_request (0x1C4) +#define runner_c_start_task_lan_enqueue_pd_wakeup_request (0x208) +#define runner_c_lan_enqueue_pd_wakeup_request (0x208) +#define runner_c_start_task_multicast_lan_enqueue_wakeup_request (0x258) +#define runner_c_multicast_lan_enqueue_wakeup_request (0x258) +#define runner_c_start_task_wlan_mcast_wakeup_request (0x2E7C) +#define runner_c_wlan_mcast_wakeup_request (0x2E7C) +#define runner_c_start_task_cpu_rx_int_coalesce_timer_1st_wakeup_request (0xA74) +#define runner_c_cpu_rx_int_coalesce_timer_1st_wakeup_request (0xA74) +#define runner_c_start_task_debug_routine (0xDC) +#define runner_c_debug_routine (0xDC) +#define runner_c_start_task_gso_wakeup_request (0x1D5C) +#define runner_c_gso_wakeup_request (0x1D5C) +#define runner_c_start_task_timer_7_1st_wakeup_request (0x9E0) +#define runner_c_timer_7_1st_wakeup_request (0x9E0) +#define runner_c_start_task_free_skb_index_wakeup_request (0x97C) +#define runner_c_free_skb_index_wakeup_request (0x97C) +#define runner_c_start_task_service_queue_dequeue_wakeup_request (0x37B4) +#define runner_c_service_queue_dequeue_wakeup_request (0x37B4) +#define runner_c_start_task_service_queue_enqueue_wakeup_request (0x3884) +#define runner_c_service_queue_enqueue_wakeup_request (0x3884) +#define runner_c_ds_rate_limiter_budget_allocate (0x88C) +#define runner_c_ds_service_queue_rate_limiter_budget_allocate (0x948) +#define runner_c_schedule_free_skb_index (0x960) +#define runner_c_pps_rate_limiter_timer_wakeup_request (0xA44) +#define runner_c_spdsvc_timer_wakeup_request (0x1044) + +#endif diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_d_labels.h b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_d_labels.h new file mode 100755 index 0000000000..7c3d5e5f2d --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/rdd_runner_d_labels.h @@ -0,0 +1,54 @@ +#ifndef RUNNER_D_CODE_ADDRESSES +#define RUNNER_D_CODE_ADDRESSES + +#define runner_d_start_task_initialization_task (0x14) +#define runner_d_initialization_task (0x14) +#define runner_d_start_task_timer_scheduler_set (0x1C44) +#define runner_d_timer_scheduler_set (0x1C44) +#define runner_d_start_task_flow_cache_wakeup_request (0xD94) +#define runner_d_flow_cache_wakeup_request (0xD94) +#define runner_d_start_task_lan_dispatch_wakeup_request (0x1A24) +#define runner_d_lan_dispatch_wakeup_request (0x1A24) +#define runner_d_start_task_lan_cpu_wakeup_request (0x154) +#define runner_d_lan_cpu_wakeup_request (0x154) +#define runner_d_start_task_lan_normal_wakeup_request (0x19C) +#define runner_d_lan_normal_wakeup_request (0x19C) +#define runner_d_start_task_debug_routine (0x6C) +#define runner_d_debug_routine (0x6C) +#define runner_d_start_task_free_skb_index_wakeup_request (0x1DC0) +#define runner_d_free_skb_index_wakeup_request (0x1DC0) +#define runner_d_free_skb_index_tx_abs_done (0x1DC0) +#define runner_d_start_task_dhd_rx_complete_wakeup_request (0x1F28) +#define runner_d_dhd_rx_complete_wakeup_request (0x1F28) +#define runner_d_gpe_sop_push_replace_ddr_sram_32 (0x13D8) +#define runner_d_gpe_sop_push_replace_sram_32_64 (0x144C) +#define runner_d_gpe_sop_push_replace_sram_64 (0x1460) +#define runner_d_gpe_sop_push_replace_sram_64_32 (0x1474) +#define runner_d_gpe_sop_pull_replace_ddr_sram_32 (0x1488) +#define runner_d_gpe_sop_pull_replace_sram_32_64 (0x14FC) +#define runner_d_gpe_sop_pull_replace_sram_64 (0x154C) +#define runner_d_gpe_sop_pull_replace_sram_64_32 (0x1588) +#define runner_d_gpe_replace_pointer_32_ddr (0x15D8) +#define runner_d_gpe_replace_pointer_32_sram (0x15FC) +#define runner_d_gpe_replace_pointer_64_sram (0x1620) +#define runner_d_gpe_replace_16 (0x1644) +#define runner_d_gpe_replace_32 (0x1678) +#define runner_d_gpe_replace_bits_16 (0x169C) +#define runner_d_gpe_copy_add_16_cl (0x16C8) +#define runner_d_gpe_copy_add_16_sram (0x16D4) +#define runner_d_gpe_copy_bits_16_cl (0x171C) +#define runner_d_gpe_copy_bits_16_sram (0x1728) +#define runner_d_gpe_insert_16 (0x1770) +#define runner_d_gpe_delete_16 (0x17D8) +#define runner_d_gpe_decrement_8 (0x1818) +#define runner_d_gpe_apply_icsum_16 (0x183C) +#define runner_d_gpe_apply_icsum_nz_16 (0x1860) +#define runner_d_gpe_compute_csum_16_cl (0x189C) +#define runner_d_gpe_compute_csum_16_sram (0x18A8) +#define runner_d_gpe_buffer_copy_16_sram (0x18E8) +#define runner_d_gpe_buffer_copy_16_ddr (0x1910) +#define runner_d_upstream_ingress_rate_limiter_budget_allocate (0x1CC4) +#define runner_d_upstream_quasi_budget_allocate (0x1D44) +#define runner_d_schedule_free_skb_index (0x1DA4) + +#endif diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/runner_fw_b.c b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/runner_fw_b.c new file mode 100755 index 0000000000..8defe496cf --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/runner_fw_b.c @@ -0,0 +1,7180 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint32_t firmware_binary_B[] = { + 0x0A300005, + 0xFC000000, + 0x10000048, + 0xFC000000, + 0xFC000000, + 0x221A7E42, + 0x222A7E83, + 0x224A7F03, + 0x226A7F83, + 0xC2001202, + 0xC2001302, + 0xBC801000, + 0xBC800018, + 0xC2021202, + 0xC2021302, + 0xBC8000F4, + 0x969200F0, + 0xBC800034, + 0xD0020092, + 0x228AECA1, + 0xC2021502, + 0xBC9A9F84, + 0xBC800064, + 0xBC8003C8, + 0x2A124026, + 0xCE920080, + 0xBC992C04, + 0xBC810AC8, + 0xBC810F00, + 0x2A824006, + 0xBC811348, + 0xBC811580, + 0x2A824026, + 0xBC811608, + 0xBC800000, + 0x2A824046, + 0xBC800000, + 0xBC811CC0, + 0x2A824066, + 0xBC811D88, + 0xBC811F40, + 0x2A824086, + 0xBC812148, + 0xBC812340, + 0x2A8240A6, + 0xBC8124C8, + 0xBC812680, + 0x2A8240C6, + 0xBC812708, + 0xBC812980, + 0x2A8240E6, + 0xBC812AC8, + 0xBC812D00, + 0x2A824106, + 0xBC812EC8, + 0xBC813040, + 0x2A824126, + 0xBC813148, + 0xBC8132C0, + 0x2A824146, + 0xBC813488, + 0xBC813580, + 0x2A824166, + 0xBC991904, + 0xBC82F0CC, + 0xBC82F580, + 0x2A824006, + 0xBC830044, + 0x2A824055, + 0x18000000, + 0xFC000000, + 0xFC000000, + 0x2A0AA402, + 0x2A1AA442, + 0x2A2AA483, + 0x2A4AA503, + 0x2A6AA583, + 0x2A8AA603, + 0x2AAAA683, + 0x2ACAA703, + 0x2AEAA783, + 0x2B0AA803, + 0x2B2AA883, + 0x2B4AA903, + 0x2B6AA983, + 0x2B8AAA03, + 0x2BAAAA83, + 0x2BCAAB03, + 0x2BEAAB83, + 0xC6800042, + 0x2A8AF202, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xC2000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x220AA402, + 0x221AA442, + 0x222AA483, + 0x224AA503, + 0x226AA583, + 0x228AA603, + 0x22AAA683, + 0x22CAA703, + 0x22EAA783, + 0x230AA803, + 0x232AA883, + 0x234AA903, + 0x236AA983, + 0x238AAA03, + 0x23AAAA83, + 0x23CAAB03, + 0x23EAAB83, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x16000001, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x248A4000, + 0xA4A20A80, + 0x06720886, + 0x2C0A4000, + 0x22828784, + 0x23A2876C, + 0xBCB8C004, + 0xA4B69020, + 0x82924012, + 0x8A92440A, + 0x22C2875C, + 0xA0E30650, + 0xA4C00650, + 0x2122C002, + 0xA0D48D00, + 0x86036080, + 0x02008805, + 0xBCFA0004, + 0x02002008, + 0xAAB36580, + 0x80B3E0B0, + 0xBCB83004, + 0x96D34050, + 0x80B2E0D0, + 0x86032030, + 0x0200C0E4, + 0x96C30010, + 0x82C32180, + 0xFC000000, + 0xA0F38650, + 0x2182C0C5, + 0xA5262100, + 0x8312AEC0, + 0x22C28407, + 0xA5200700, + 0xA5800600, + 0x20B44000, + 0x22EAE421, + 0x0A32E057, + 0x96B3C010, + 0x82F2E1C0, + 0x22B287FC, + 0xA0B2CA00, + 0x256600F5, + 0x26F600A5, + 0xA1431C00, + 0x0A33AC5D, + 0x2735803C, + 0xBD100004, + 0x8AE6A0F0, + 0xFC000000, + 0x0EFB8C05, + 0xBCE07C04, + 0x840520E0, + 0x0200D0D2, + 0x23428754, + 0x0634E4ED, + 0x27258025, + 0x27458045, + 0x84052120, + 0x0200C8A5, + 0x2A028784, + 0x228AE1C1, + 0xFC000000, + 0x0F22100A, + 0xA1331C00, + 0xA0828A80, + 0x22EAE1A1, + 0xFC000000, + 0x0A1390C3, + 0x23428754, + 0x02002009, + 0x86E3A010, + 0x2AEAE1A1, + 0x22EAE181, + 0xFC000000, + 0x0A1390BC, + 0x23428754, + 0x86E3A010, + 0x2AEAE181, + 0xCB45E01E, + 0xFC000000, + 0xC945F13E, + 0x0659E042, + 0xBCE00064, + 0xD0038082, + 0xA140A000, + 0x22208035, + 0x8284A010, + 0x2E858025, + 0x26E58006, + 0x2283C0A6, + 0x80822130, + 0x2A83C0A6, + 0xC9A3813E, + 0xA4C2C8E0, + 0xA4D003B0, + 0xA4D69170, + 0x0A23A008, + 0x28C50003, + 0xCBA2801E, + 0x20838002, + 0x80822142, + 0x02002005, + 0x28838002, + 0xA4E52000, + 0xA4E52000, + 0xA4E52100, + 0x0A345CC2, + 0x2EE58006, + 0x26858075, + 0x26B600B5, + 0x26C60086, + 0x8C82E080, + 0x2E8600B5, + 0x2283C026, + 0x22B3C09C, + 0x8C8220C0, + 0x2A83C026, + 0x0402C809, + 0x8A82E018, + 0x2A83C09C, + 0x00002009, + 0x2283C015, + 0xD0020006, + 0xBCB00024, + 0xC202D702, + 0x18004147, + 0xFC000000, + 0xFC000000, + 0x20B44000, + 0xFC000000, + 0x0A32C3F9, + 0x020023A4, + 0xFC000000, + 0xFC000000, + 0x18002087, + 0xFC000000, + 0xFC000000, + 0x06C49FA6, + 0x23228446, + 0xA1248440, + 0x0A3487A3, + 0x840520E0, + 0x02008FA1, + 0x82E52030, + 0x0200239F, + 0x8B43A038, + 0xA4C51C00, + 0x07F3501F, + 0x237AF341, + 0x80E32000, + 0x81536000, + 0x2545C002, + 0xFC000000, + 0x0A350816, + 0xBD400014, + 0xA1935E00, + 0xA59506F0, + 0x06F35803, + 0xBD400034, + 0xBD400074, + 0xD0050194, + 0xA4E2CAE0, + 0x234AE5C0, + 0xA4E50930, + 0xA4E01370, + 0x8F43A803, + 0xA5501170, + 0x2D45C003, + 0x82E5C080, + 0x8AE38019, + 0x2AEAF341, + 0xBD400294, + 0x14000000, + 0xBCE00024, + 0xD0038140, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0x10000C8C, + 0xBD004E80, + 0xFC000000, + 0x10000C70, + 0xBD004F40, + 0xFC000000, + 0x0A3643F7, + 0xBC8A3004, + 0xA0E28E60, + 0x96B2C0F1, + 0xA4D69170, + 0x20E200E6, + 0xBD0051C0, + 0x10000CA8, + 0xA1431C00, + 0xBDA88004, + 0xBC8FFFFC, + 0x42EA0017, + 0xFC000000, + 0xFC000000, + 0x237AF341, + 0xA1A35170, + 0xFC000000, + 0x2485C002, + 0xFC000000, + 0x0A32080F, + 0x80E32000, + 0x81536000, + 0x228AECA1, + 0x82822120, + 0x96820011, + 0xA5520F00, + 0x10080126, + 0xFC000000, + 0xFC000000, + 0xBD005780, + 0x10000CA2, + 0xFC000000, + 0xFC000000, + 0x0200037B, + 0x10000C86, + 0xBD005880, + 0xFC000000, + 0x020013F8, + 0xFC000000, + 0x26E58055, + 0xFC000000, + 0x0A338018, + 0x0A321806, + 0x22838015, + 0x8404A080, + 0x02008814, + 0x02001009, + 0x22838046, + 0x23438025, + 0x8404A140, + 0x02009351, + 0x22838035, + 0x8404A080, + 0x0200980C, + 0x22838066, + 0x8534A140, + 0xC6E020C1, + 0x07F20005, + 0xA8822130, + 0x8403A080, + 0x0200C347, + 0x02000004, + 0xA884E080, + 0x8403A080, + 0x0200C343, + 0x0200100D, + 0x23428754, + 0x22C28407, + 0x23428754, + 0x2282C015, + 0x8A8223F0, + 0x86022200, + 0x02005803, + 0x82C52150, + 0x82C52140, + 0x02002011, + 0x228287FC, + 0xA0B20A00, + 0x2283C015, + 0x8A8223F0, + 0x86022200, + 0x02006007, + 0x26858034, + 0xA0C31C00, + 0xCA80C01C, + 0x02002007, + 0xC88080CE, + 0x82C52140, + 0xCA81101C, + 0xFC000000, + 0xC88100CE, + 0x82C52150, + 0xA0828A80, + 0xBCE00064, + 0xD0038082, + 0x86052010, + 0x02009005, + 0xCBA4801C, + 0x02002004, + 0xCA05201C, + 0xFC000000, + 0xCAC5E01C, + 0x10080C5C, + 0xFC000000, + 0xFC000000, + 0x00001009, + 0xFC000000, + 0x231287A4, + 0xA0E4C600, + 0xBD38B004, + 0xA5338270, + 0xAAE46020, + 0x82E3A100, + 0x02002310, + 0x8115A000, + 0x2164C0E5, + 0x26844025, + 0x82822010, + 0x2E844025, + 0x26B580A5, + 0x26C58066, + 0x81646000, + 0x2282C006, + 0x02002339, + 0x8C8220C0, + 0x2A82C006, + 0x0A221004, + 0x80C02086, + 0x22ABCB82, + 0x80C2A086, + 0xBCAA0004, + 0xFC000000, + 0xAAB32580, + 0x8152A0B0, + 0x86032080, + 0x0200A00A, + 0x22A5400C, + 0x236540C5, + 0xBCB83004, + 0x96A30050, + 0x8152E0A0, + 0xFC000000, + 0xFC000000, + 0x22A5400C, + 0x236540C5, + 0x0A32987B, + 0x28020002, + 0x22F54004, + 0x26D580B5, + 0x9F434000, + 0xBD0077C0, + 0x065501B1, + 0x97450010, + 0x834521C0, + 0xFC000000, + 0xFC000000, + 0x24C58145, + 0x22E540A6, + 0xFC000000, + 0x26A3003C, + 0xFC000000, + 0x06328180, + 0xFC000000, + 0x22AA9782, + 0xFC000000, + 0x0A228402, + 0x0A1285A2, + 0xBD007A80, + 0x27E30006, + 0xFC000000, + 0x0A33E994, + 0x20AF8003, + 0xA1D29C00, + 0xA172D170, + 0xA4B01170, + 0x84E3A1D0, + 0x2AE540A6, + 0x07F2D19F, + 0xBD007C80, + 0xA0E28320, + 0xA4B38770, + 0xBCE8C004, + 0xA4E5D020, + 0xA4A00320, + 0x22F54015, + 0x8AF3E3F0, + 0x8603E200, + 0x02005005, + 0x26F30034, + 0xCAF0401E, + 0x02001005, + 0xC8F001DE, + 0xCAF0F01E, + 0xFC000000, + 0xC8F0E1DE, + 0x26F30025, + 0x0A232406, + 0x8723E010, + 0x2F230025, + 0x26FB0025, + 0x8723E010, + 0x2F2B0025, + 0xA0F29B30, + 0x96F3C030, + 0x0A33E006, + 0x20E38002, + 0xA4A39B30, + 0x0200200F, + 0x2EF30005, + 0xFC000000, + 0xBD0086C0, + 0xBD408500, + 0x0A232D5F, + 0x27330075, + 0x2E030006, + 0x88C36138, + 0x2EC580B5, + 0x0A331805, + 0x22C5409C, + 0xA4C04200, + 0x2AC5409C, + 0x8EB2E403, + 0x07F28006, + 0x8AC5E070, + 0xFC000000, + 0x0E7B080A, + 0xFC000000, + 0xFC000000, + 0x22E54015, + 0x86A2A040, + 0x86076400, + 0x02009012, + 0xFC000000, + 0x02001004, + 0xFC000000, + 0x22E54015, + 0x86A2A040, + 0x22CA9842, + 0xBCDAB584, + 0xCED30080, + 0x10000239, + 0x22DAE1C1, + 0xBD008C00, + 0x22BA9842, + 0xBCAA9F84, + 0xCEA2C080, + 0x18006EC7, + 0x802001E6, + 0xFC000000, + 0x020023F4, + 0xBCC003C4, + 0xA4A31C00, + 0x22CA97A1, + 0x86C32010, + 0x2ACA97A1, + 0x0F235007, + 0xD00380A3, + 0x280F8002, + 0x22AAE1A1, + 0x02002006, + 0x82A28010, + 0x2AAAE1A1, + 0x22AAE181, + 0x82A28010, + 0x2AAAE181, + 0x00002010, + 0x2A2F8026, + 0xFC000000, + 0x22E54026, + 0x23754046, + 0x88A3A170, + 0x0A328070, + 0xFC000000, + 0x9EA28002, + 0x96A28010, + 0x82A2A180, + 0xFC000000, + 0xFC000000, + 0x216540A5, + 0x22F54004, + 0xBD009880, + 0x26D580B5, + 0x9F434000, + 0x97450010, + 0x834521C0, + 0xFC000000, + 0xFC000000, + 0x24C58145, + 0x231540A6, + 0xFC000000, + 0x26A3003C, + 0xFC000000, + 0x063280FD, + 0xFC000000, + 0x22AA9782, + 0xFC000000, + 0x0A228402, + 0x0A12851F, + 0xBD009B40, + 0x27E30006, + 0xFC000000, + 0x0A33E911, + 0x20AF8003, + 0xA1D29C00, + 0xA182D170, + 0xA4B01170, + 0x84F461D0, + 0x2AF540A6, + 0x07F2D11C, + 0xBD009D40, + 0xA0F28320, + 0xA4B3C770, + 0x26F58046, + 0x84F3E1D0, + 0x2EF58046, + 0xBD18C004, + 0xA5161020, + 0x23254015, + 0x8B24A3F0, + 0x8604A200, + 0x02005005, + 0x27230034, + 0xCB20401E, + 0x02001005, + 0xC92001DE, + 0xCB20F01E, + 0xFC000000, + 0xC920E1DE, + 0x27230025, + 0x0A232406, + 0x8724A010, + 0x2F230025, + 0x272B0025, + 0x8724A010, + 0x2F2B0025, + 0xA1329B30, + 0x9734C030, + 0x0A34E006, + 0x21144002, + 0xA4A45B30, + 0x02002013, + 0x2F330005, + 0x27158086, + 0xBD00A900, + 0xBD40A640, + 0x0A232CDA, + 0x27330075, + 0x2E030006, + 0x88C36138, + 0x2EC580B5, + 0x27158086, + 0x0A330808, + 0x88C3A118, + 0x2AC54026, + 0x0A331805, + 0x22C5409C, + 0xA4C04200, + 0x2AC5409C, + 0x8EB2E403, + 0x8603E000, + 0x02008803, + 0x88C5E118, + 0x2AC54046, + 0x22DA9842, + 0xBCCAB584, + 0xCEC34080, + 0x22E54015, + 0xA4A00320, + 0x86076400, + 0x0200900B, + 0x86A2A040, + 0x10000239, + 0x22DAE1C1, + 0xBD00ACC0, + 0x22BA9842, + 0xBCAA9F84, + 0xCEA2C080, + 0x18006EC7, + 0x802001E6, + 0xFC000000, + 0x020023F7, + 0xBCC003C4, + 0xA4A31C00, + 0x23854066, + 0x88C3A180, + 0x0A3310C7, + 0x22B5409C, + 0x22A54094, + 0x0672CC03, + 0xBCA00004, + 0xFC000000, + 0x9CA300A2, + 0x8172A000, + 0x96A28010, + 0x82A2A180, + 0xFC000000, + 0xFC000000, + 0x216540A5, + 0x22F54004, + 0xBD00BA40, + 0x279580DC, + 0x26B580D4, + 0x0A36500D, + 0x26A580C5, + 0x96B2C080, + 0x9AA2A010, + 0x80B2A0B0, + 0x0200C006, + 0x82A5E010, + 0x8AA2A208, + 0x020023E5, + 0x2AA54094, + 0x2EB580C5, + 0x2EB580C5, + 0x2E0580DC, + 0x26D580B5, + 0xFC000000, + 0x9F434000, + 0x97450010, + 0x834521C0, + 0xFC000000, + 0xFC000000, + 0x24C58145, + 0x231540A6, + 0xFC000000, + 0x26A3003C, + 0xFC000000, + 0x06328076, + 0xFC000000, + 0x22AA9782, + 0xFC000000, + 0x0A228402, + 0x0A128498, + 0xBD00BD00, + 0x27E30006, + 0xFC000000, + 0x0A33E88A, + 0x20AF8003, + 0xA1D29C00, + 0xA1F2D170, + 0xA4B01170, + 0x84F461D0, + 0x2AF540A6, + 0x07F2D095, + 0xBD00BF00, + 0xA0F28320, + 0xA4B3C770, + 0x26F58006, + 0x84F3E1D0, + 0x2EF58006, + 0xBD18C004, + 0xA517D020, + 0x23254015, + 0x8B24A3F0, + 0x8604A200, + 0x02005005, + 0x27230034, + 0xCB20401E, + 0x02001005, + 0xC92001DE, + 0xCB20F01E, + 0xFC000000, + 0xC920E1DE, + 0x27230025, + 0x0A232406, + 0x8724A010, + 0x2F230025, + 0x272B0025, + 0x8724A010, + 0x2F2B0025, + 0xA1329B30, + 0x9734C030, + 0x0A34E00E, + 0x21144002, + 0xA4A45B30, + 0x2F330005, + 0x27158086, + 0xBD900004, + 0x26C580C5, + 0x84C321D0, + 0x2EC580C5, + 0x0200C022, + 0xBD900014, + 0x02002020, + 0x82C5E010, + 0x8B732208, + 0xBD00D000, + 0xBD40CA00, + 0x0A232C4B, + 0x27330075, + 0x2E030006, + 0x88C36138, + 0x2EC580B5, + 0x27158086, + 0xBD900004, + 0x26D580C5, + 0x84D361D0, + 0x2ED580C5, + 0x0A330006, + 0x0200C010, + 0xBD900014, + 0x0200200E, + 0x82C5E010, + 0x8B732208, + 0x88D3A118, + 0x2AD54026, + 0x2E0580C5, + 0xBD900014, + 0x82C5E010, + 0x8B732208, + 0x0A335805, + 0x22C5409C, + 0xA4C04200, + 0x2AC5409C, + 0x8EB2E403, + 0x8403E000, + 0x0200C007, + 0x88C62118, + 0x2AC54066, + 0x0A364804, + 0xBD900014, + 0x82C5E010, + 0x8B732208, + 0x22DA9842, + 0xBCCAB584, + 0xCEC34080, + 0x2F9580DC, + 0x2B754094, + 0xA4A00320, + 0x86076400, + 0x0200A00C, + 0x22E54015, + 0x86A2A040, + 0x10000239, + 0x22DAE1C1, + 0xBD00D540, + 0x22BA9842, + 0xBCAA9F84, + 0xCEA2C080, + 0x18006EC7, + 0x802001E6, + 0xFC000000, + 0x020023F7, + 0xBCC003C4, + 0xA4A31C00, + 0xA0A28600, + 0xBCB8B004, + 0xA4B28270, + 0xFC000000, + 0xFC000000, + 0x22A2C006, + 0xFC000000, + 0x9EA28002, + 0xFC000000, + 0x0652A01E, + 0xAAA2A020, + 0x8322A100, + 0x26A30034, + 0xFC000000, + 0x20B2C125, + 0x00002010, + 0x80C2E0C2, + 0x2EA2C034, + 0x271300A5, + 0x27330066, + 0xFC000000, + 0x23A44006, + 0x89A6A138, + 0x0836A810, + 0x2BA44006, + 0x27158086, + 0x00002014, + 0x273B0075, + 0xFC000000, + 0xBD293404, + 0xFC000000, + 0x0613D004, + 0x22F48006, + 0x8403E000, + 0x02008005, + 0x86F3E140, + 0x00002010, + 0x84F3E1D0, + 0x2AF48006, + 0x22B54015, + 0x22A5409C, + 0xA4A04200, + 0xD002C004, + 0x2AA5409C, + 0x18006EC7, + 0xFC000000, + 0xFC000000, + 0xA0F22000, + 0x20E20002, + 0x26A76742, + 0x0A33980B, + 0xA0D2DC00, + 0x96E34020, + 0x80A2A0E0, + 0x42F28047, + 0xFC000000, + 0xFC000000, + 0x20E20002, + 0xFC000000, + 0x0A3383FB, + 0x28E20002, + 0xA4B3BC00, + 0x0A221004, + 0x80E02086, + 0x22ABCB82, + 0x80E2A086, + 0xBCFE8804, + 0xA4F38C10, + 0x20AF8002, + 0xFC000000, + 0x2513C001, + 0x83246020, + 0xFC000000, + 0x2CD44001, + 0xA5148A00, + 0x2D13C001, + 0x85C3A086, + 0xA0D26000, + 0xA0E26100, + 0xFC000000, + 0x20F341C4, + 0x20D381C4, + 0x84D3E0D0, + 0x8B1363F0, + 0x28F381C4, + 0x00006010, + 0x22E54026, + 0x26D580B5, + 0x2ADAEAA1, + 0x2AEAEA42, + 0x2ACAEB02, + 0x100003C0, + 0xBDB0EF04, + 0xFC000000, + 0x22DAEAA1, + 0x22EAEA42, + 0x22CAEB02, + 0x00000010, + 0xBCEE8004, + 0x81C72086, + 0xA4E70C10, + 0x2AEAEA01, + 0xBCCACE04, + 0x22DA9890, + 0x24E38001, + 0xFC000000, + 0x86F46010, + 0x25138001, + 0x232A80C2, + 0x233A80A1, + 0x0A34840B, + 0x8404E110, + 0x02004809, + 0x8724A010, + 0x2B2A80C2, + 0x233A8282, + 0x8334E010, + 0x2B3A8282, + 0x233A8102, + 0x8004E120, + 0x02004804, + 0x8F146801, + 0x291300D5, + 0x82D36020, + 0x8313A020, + 0xA4E44A00, + 0x2AEAEA21, + 0x2AFAEA81, + 0x2A0A9810, + 0x06434804, + 0x10000CFD, + 0xBCE0F8C4, + 0x2723F342, + 0x231AEA81, + 0x22FAEA01, + 0x0A345BE3, + 0x22EAEA21, + 0x2ADA9890, + 0x2CE3C001, + 0x0000001B, + 0x06458146, + 0xBCCA5000, + 0xA4C58830, + 0xFC000000, + 0xFC000000, + 0x20E30003, + 0xA1838510, + 0x0A362808, + 0x22C28446, + 0xA1A30480, + 0x0A369129, + 0x22C28707, + 0x8A036010, + 0x02004912, + 0x02000125, + 0x06162022, + 0xA193F000, + 0xBCD00004, + 0x06B64805, + 0x0A369120, + 0xFC000000, + 0x22D28485, + 0xA4D008C0, + 0x07464805, + 0x0A36911B, + 0x22C28485, + 0xA0C306D0, + 0xA4D306D0, + 0x06C64806, + 0x8606A020, + 0x02009115, + 0x22C284C5, + 0xA4C008C0, + 0xA4D31900, + 0x07564806, + 0x8606A020, + 0x0200910F, + 0x22C284C5, + 0xA0C306D0, + 0xA4D307D0, + 0x07365803, + 0xBCC00004, + 0xA0C5CA00, + 0x072648DD, + 0x8605E0D0, + 0x02004906, + 0x020020DA, + 0x22F28774, + 0xA4C3C880, + 0x2A0AEE02, + 0x2A0AEE42, + 0x2A0AEE82, + 0x2A0AEEC2, + 0xBD8AEF0C, + 0x9FB64002, + 0xBCD92C00, + 0xA4D6CA10, + 0x0656C0B8, + 0xBCC00014, + 0x20D34001, + 0x94C301B0, + 0xFC000000, + 0x899660C8, + 0x0000100D, + 0x23D28446, + 0xA0C74440, + 0x0A3300F1, + 0x86032020, + 0x02005005, + 0x87862042, + 0x020023F0, + 0x22C28586, + 0x28CE0002, + 0x22C2854C, + 0x80C320A0, + 0x82C32080, + 0x80D02008, + 0xD6D30102, + 0xFC000000, + 0x020023E7, + 0xC6C00602, + 0x28CE0002, + 0xA0C74440, + 0x0A3300E0, + 0x86032020, + 0x02005005, + 0x87862042, + 0x020023DF, + 0x22C285A6, + 0x28CE0002, + 0x22C2854C, + 0x80C320A0, + 0x82C32180, + 0x80D02008, + 0xD6D30102, + 0xFC000000, + 0x020023D6, + 0xC6C00602, + 0x28CE0002, + 0x065758D0, + 0x22C2854C, + 0x80C320A0, + 0xFC000000, + 0x87862042, + 0x20C30002, + 0x020023CD, + 0xA0C32800, + 0x28CE0002, + 0x02001003, + 0xA0C3C5A0, + 0xA0C3C580, + 0xBCDA7604, + 0xA4D30430, + 0xBDE00124, + 0xFC000000, + 0x20C34003, + 0xA1B305E0, + 0xA1C30E00, + 0x0A36C006, + 0xA0C74440, + 0x0A3300BB, + 0x0606D003, + 0x23E2854C, + 0x23E28544, + 0x80C721E0, + 0xFC000000, + 0xFC000000, + 0x21B280C5, + 0x82C32020, + 0xFC000000, + 0xFC000000, + 0x20C280C5, + 0x87862042, + 0x8CC321B2, + 0x88C320D0, + 0x020013AF, + 0x28CE0002, + 0x0A3680AA, + 0x02001005, + 0x82C2A1E0, + 0x8606A020, + 0x020080A6, + 0x82C2A220, + 0x87862022, + 0x020023A6, + 0x20C30001, + 0x28CE0001, + 0x06B740A0, + 0x07E7409F, + 0x07D7409E, + 0x0797489D, + 0x87862022, + 0x0200239E, + 0x22C28565, + 0x28CE0001, + 0x06B74098, + 0x07E74097, + 0x07D74096, + 0x07974895, + 0x87862022, + 0x02002396, + 0x22C28575, + 0x28CE0001, + 0x0A368090, + 0x87862022, + 0x22C28485, + 0x02002390, + 0xA4C008C0, + 0x28CE0001, + 0x8606A020, + 0x02008089, + 0x87862022, + 0x22C284C5, + 0x02002389, + 0xA4C008C0, + 0x28CE0001, + 0x02001003, + 0x22C28666, + 0x22C286A6, + 0x8A032050, + 0x0200407F, + 0x87862022, + 0x06132B80, + 0xA0C31840, + 0x28CE0001, + 0x0200237D, + 0x82C32041, + 0x28CE0001, + 0x22C28554, + 0x87862022, + 0x02002378, + 0x20C280C5, + 0x28CE0001, + 0x06B74072, + 0x07E74071, + 0x07D74070, + 0xA0C74440, + 0x0A33006E, + 0x87862012, + 0x0200236F, + 0x22C2855C, + 0x28CE0000, + 0xA0C74440, + 0x0A330068, + 0x87862012, + 0x22C2853C, + 0x02002368, + 0xA0C30C20, + 0x28CE0000, + 0x8605E0D0, + 0x02004861, + 0x87862012, + 0x02002362, + 0x22C28774, + 0x28CE0000, + 0x87862012, + 0x0200235E, + 0xFC000000, + 0x297E0000, + 0x0A368058, + 0x87862012, + 0x22C28485, + 0x02002358, + 0xA0C306D0, + 0x28CE0000, + 0x8606A020, + 0x02008051, + 0x87862012, + 0x22C284C5, + 0x02002351, + 0xA0C306D0, + 0x28CE0000, + 0x87862012, + 0x0200234D, + 0xFC000000, + 0x29AE0000, + 0xA0C74440, + 0x87862012, + 0x02002348, + 0xFC000000, + 0x28CE0000, + 0xA1838510, + 0xBCCAEE8C, + 0x06062815, + 0xFC000000, + 0x20CB0003, + 0xBCFAEE0C, + 0xC2035002, + 0xA0D33000, + 0xC2035042, + 0xA1931180, + 0x20CBC003, + 0xFC000000, + 0x96D34182, + 0x96C30080, + 0xA4C35000, + 0xA4D65000, + 0xA4C58980, + 0xDCC3431C, + 0xFC000000, + 0xFC000000, + 0x18013D86, + 0xFC000000, + 0xFC000000, + 0xA4C58900, + 0xDCC3711F, + 0xFC000000, + 0xFC000000, + 0xC4C80112, + 0xFC000000, + 0x06030825, + 0x86062030, + 0x0200500A, + 0xA0D31840, + 0x06132005, + 0xBCC9C004, + 0xA4C34A30, + 0xBCCA8004, + 0xA4C35030, + 0x02002008, + 0xFC000000, + 0x24C30002, + 0xBCC80004, + 0xA4C34E40, + 0xFC000000, + 0xFC000000, + 0x26C30046, + 0xA0D38730, + 0x86036020, + 0x02004003, + 0x06034005, + 0x0200000D, + 0x020022DC, + 0xA1638B60, + 0xA1531180, + 0x06134805, + 0xA1638B60, + 0x020022D7, + 0xA0C31180, + 0x8F432803, + 0xA0C38300, + 0x0A331AD3, + 0xA1638B60, + 0x0200000D, + 0x020022D0, + 0xA5604240, + 0xA1531180, + 0xA0C38730, + 0x86032040, + 0x0200400B, + 0x86032010, + 0x02005AC9, + 0xA1638BB0, + 0xA0C382F0, + 0x0A331AC6, + 0xA1638BB0, + 0xCB75101C, + 0x100006FB, + 0xBCC00214, + 0xCAC5601C, + 0xA1638BB0, + 0xFC000000, + 0x06458ABE, + 0x10000584, + 0xBD300294, + 0xFC000000, + 0x231AE630, + 0xBD698004, + 0xA5655030, + 0x22C28446, + 0x0604441F, + 0x07F51818, + 0x20C58003, + 0xA5651030, + 0x06045418, + 0x8EC32013, + 0x22E58026, + 0xA0E38B20, + 0xA4D38B20, + 0x20E58002, + 0xA0F38300, + 0xA4C3C700, + 0xA0F38650, + 0xA4C3C650, + 0xBD192004, + 0x0773AC06, + 0xA0E38510, + 0xA4C38510, + 0x20E440F4, + 0xA0E38650, + 0xA4C39080, + 0x22E58026, + 0x1000057F, + 0xA4D3AC00, + 0xFC000000, + 0x1000057F, + 0xFC000000, + 0xFC000000, + 0x02002005, + 0xBD014E80, + 0xA0E51000, + 0xBD014D40, + 0xA0E55000, + 0xBCF90004, + 0xA4F39010, + 0xFC000000, + 0xFC000000, + 0x24E3C001, + 0x82E3A010, + 0x00001010, + 0x2CE3C001, + 0xBD200004, + 0x20824000, + 0xA4A20A80, + 0x06721008, + 0xBCC00004, + 0x96924102, + 0xFC000000, + 0xFC000000, + 0x20824000, + 0xA4A20A80, + 0x0672092A, + 0x28024000, + 0x82924010, + 0x8A924408, + 0x2332863C, + 0xBCDAB604, + 0x22C287FC, + 0xA1730A00, + 0x2A13403C, + 0x2B73402C, + 0x22E28407, + 0x8604E290, + 0x02006811, + 0x236AF510, + 0x2AE34047, + 0x2A0A9810, + 0x0645A40D, + 0xBD300294, + 0xBD100034, + 0xBD1002C8, + 0xBCC00FF4, + 0x100003EA, + 0xBD500004, + 0xBD400004, + 0x07F3417C, + 0x07E34804, + 0xA0C30600, + 0x83332380, + 0x2B32863C, + 0xBD5AB604, + 0x22DAF5A0, + 0xA0C20A00, + 0x840320D0, + 0x02009806, + 0x8604E290, + 0x02005804, + 0xBCC00244, + 0x0200116F, + 0xCAC5601C, + 0x23654047, + 0x22D5402C, + 0x860360D0, + 0x0200680A, + 0x22E286D4, + 0x22C287BC, + 0x0603A007, + 0x22F28634, + 0x232286C5, + 0x22C286C5, + 0x86C32120, + 0xBCE00264, + 0x8133A0F0, + 0x2AC54024, + 0x22C287A4, + 0x2AC5401C, + 0x2A15403C, + 0xBD800000, + 0x0674E026, + 0x22C2875C, + 0x82F32080, + 0x0E3CC00B, + 0xBCE00004, + 0xFC000000, + 0x0E4CC008, + 0xBCE00094, + 0xFC000000, + 0x0F1CC005, + 0xBCE00124, + 0xFC000000, + 0x0200100A, + 0x20E2C134, + 0x22C287FC, + 0xA0D30A00, + 0xBCCAEB84, + 0x80C320E0, + 0x80C320D0, + 0xFC000000, + 0xFC000000, + 0x20E30000, + 0x22F28446, + 0xBCCE8D04, + 0x0763C802, + 0xBCC3A804, + 0x0F0B800C, + 0xFC000000, + 0x24F30134, + 0xBCB93808, + 0xA4B38930, + 0xFC000000, + 0xFC000000, + 0x22CAC005, + 0xFC000000, + 0x0A330154, + 0x86C32010, + 0x2ACAC005, + 0xBCC00054, + 0xC2031130, + 0xC6C01130, + 0x2AF54014, + 0x06032006, + 0xBCC75004, + 0xA4C3C840, + 0x18017406, + 0xFC000000, + 0xFC000000, + 0xBCEC4004, + 0xA4E3C840, + 0x26C30026, + 0xFC000000, + 0x0A330122, + 0xFC000000, + 0xFC000000, + 0x42EB0107, + 0xFC000000, + 0xFC000000, + 0x27438046, + 0x80C52000, + 0x0A35011A, + 0x07F50119, + 0x07F5C05A, + 0xA0E59C00, + 0x2315403C, + 0x22F2879C, + 0xAFB3C100, + 0xAE24CFF0, + 0x02040808, + 0xBCD00004, + 0x0A345003, + 0x22F54024, + 0x22F287B4, + 0x0200201E, + 0xFC000000, + 0xA5639C00, + 0xA0E59C00, + 0x06F5C0C8, + 0x0674D139, + 0x22FAECA1, + 0x07F5C0A4, + 0xBDAAD804, + 0xFC000000, + 0xFC000000, + 0x2AF6821C, + 0x2A868246, + 0x0200208F, + 0x2AC68226, + 0x2A0A9810, + 0x22C68226, + 0x22868246, + 0xBD5AB604, + 0xA0E59C00, + 0x232286C5, + 0x82F3E120, + 0x82A2A120, + 0x8603A6E0, + 0x0200D003, + 0xBCD006E4, + 0x80D3A000, + 0x50A500D7, + 0xFC000000, + 0xFC000000, + 0x819520D0, + 0x84E520C0, + 0xA0C5DE00, + 0x231AF520, + 0x233ADD42, + 0xA8C32110, + 0x96C30080, + 0x80C32130, + 0x80C3A0C0, + 0x80C320D0, + 0x0A348003, + 0x80F4A000, + 0xFC000000, + 0x80E320F0, + 0xA0C59C00, + 0x854320D0, + 0x82C52000, + 0x82F66000, + 0x8313A000, + 0xBCD08004, + 0x840520D0, + 0x0200C802, + 0x81436000, + 0x10000CA8, + 0xBD018840, + 0xBDAE0004, + 0x80F3E0D0, + 0x811460D0, + 0x82E46000, + 0x84C320D0, + 0x0200E3F6, + 0x83432000, + 0x8393E000, + 0x02000009, + 0xBCCAD804, + 0xFC000000, + 0xFC000000, + 0xBD5AB604, + 0xA0859C00, + 0x228286C5, + 0x22830226, + 0x22830246, + 0x22C5402C, + 0xA0C30A00, + 0x96C300F0, + 0xA4C5DE00, + 0xBCD00034, + 0xA4A01000, + 0xD00340C6, + 0xA5600760, + 0xFC000000, + 0x22F2863C, + 0x22C54014, + 0xA0D5DC00, + 0xA0E5C3F0, + 0x96E381F0, + 0x8CD360E0, + 0x2325402C, + 0xA1158EE0, + 0x8B3467F0, + 0xA115C3D0, + 0x971440B0, + 0x8D34E110, + 0xA1158350, + 0x971440A0, + 0x8D14E110, + 0xA5645940, + 0xA5648AE0, + 0x2312879C, + 0xBD700004, + 0x06446004, + 0xA573CD90, + 0xA5660330, + 0xA5704240, + 0xA0F59C00, + 0x8713E040, + 0x8604A0D0, + 0x02005803, + 0x22F28774, + 0xA563D940, + 0xBD2C4004, + 0xA5230840, + 0xA5645C00, + 0x2D648003, + 0xBD175004, + 0xA5130840, + 0x26F48046, + 0x8EF3E803, + 0x2EF48046, + 0x22F5401C, + 0x22F28786, + 0xA4F003F0, + 0x07F34803, + 0x88F360E8, + 0xA4F043F0, + 0x2EF48066, + 0x24E44003, + 0x5B2BC100, + 0xA1339600, + 0xA0D39700, + 0x82D36010, + 0xA1238AB0, + 0x84036130, + 0x02005805, + 0x80F3E120, + 0xA8D4E120, + 0x84F3E0D0, + 0xBCD00004, + 0xA4E35700, + 0x2CE44003, + 0xBD3FFFFC, + 0x2325403C, + 0x83256060, + 0x4324C017, + 0xFC000000, + 0xFC000000, + 0xA4800460, + 0xBD200064, + 0xD0048082, + 0x020020B1, + 0x96924102, + 0x27244045, + 0xC2021601, + 0x020022DB, + 0xBC800024, + 0xC2021130, + 0x82852000, + 0x84E520C0, + 0xA0C5DE00, + 0x232AF520, + 0x231ADD42, + 0xA8C32120, + 0x96C30080, + 0x80C32110, + 0x80E3A0C0, + 0x1000087E, + 0x82C3E120, + 0x8153A0C0, + 0x18015747, + 0xFC000000, + 0xFC000000, + 0x81952000, + 0xA5639C00, + 0xBCCA3004, + 0xA0D28E60, + 0xFC000000, + 0xFC000000, + 0x20E300D6, + 0x0674C805, + 0x80D3A0F0, + 0x22C54024, + 0x82C32120, + 0x84E360C0, + 0xA1459C00, + 0x83152000, + 0x82D66000, + 0x82F3A000, + 0xBCC08004, + 0xA4A01000, + 0x840520C0, + 0x0200C802, + 0x81432000, + 0x10000CA8, + 0xBD01AB00, + 0xBDAE0004, + 0x80D360C0, + 0x80F3E0C0, + 0x82E3E000, + 0x851460C0, + 0x0200E3F6, + 0x83446000, + 0x83936000, + 0x02001067, + 0xBD018E00, + 0x0674D80C, + 0xA57002F0, + 0xA0C5D400, + 0x96D30070, + 0xA0F5CF00, + 0x9723C010, + 0x80D36120, + 0xBCFE9804, + 0xBD100804, + 0x02002023, + 0x85146120, + 0xBCB89AC8, + 0xA0E59C00, + 0x8603A6E0, + 0x0200E004, + 0x82A2A120, + 0xBD1006E4, + 0x8113A000, + 0x50A50114, + 0xFC000000, + 0x96C340F1, + 0x86A2A120, + 0x81452110, + 0xA0C5DE00, + 0x06F5D003, + 0xBCFEE004, + 0xBCFE9804, + 0x84E3A110, + 0x0200C816, + 0xBCB89AC8, + 0xBCD00874, + 0xD00340CA, + 0x1801B606, + 0xFC000000, + 0xFC000000, + 0x20CAC002, + 0xFC000000, + 0x06030BFE, + 0xA0C31410, + 0x96D30070, + 0x8603A800, + 0x0200D003, + 0xBD100804, + 0x8113A000, + 0x40FB6117, + 0xFC000000, + 0x280AC002, + 0x020023EC, + 0x50FD0114, + 0x81452110, + 0x1801BA86, + 0xFC000000, + 0xFC000000, + 0xBD800000, + 0x22C287FC, + 0xA0C30A00, + 0x96D300E0, + 0xA4D5DC00, + 0x02002349, + 0xBCC00074, + 0xD00300DC, + 0xBCC1C284, + 0x020023F7, + 0xBCC00024, + 0xC2031130, + 0x0674C803, + 0xBCC000D4, + 0xCAC5201C, + 0xBCC00024, + 0xC2031130, + 0xBD5AB604, + 0xFC000000, + 0xFC000000, + 0x23654047, + 0xFC000000, + 0x07F5E01A, + 0xBD01C280, + 0x22C5403C, + 0x06F5D3E7, + 0x22C5402C, + 0xA0C30A00, + 0x96C300F0, + 0xA4C5DE00, + 0xBCD00034, + 0xD00340C6, + 0xBCE75004, + 0x22C54014, + 0xA4E30840, + 0xA4800460, + 0xBCD00064, + 0xD0034082, + 0x86032FF0, + 0x0200524C, + 0xFC000000, + 0x26838055, + 0x02002249, + 0x82822010, + 0x2E838055, + 0x020023E4, + 0x82C3A100, + 0xCAC5B01C, + 0xA0D5DC00, + 0xBCCACE04, + 0x22EA9890, + 0x8ED36801, + 0x28D300E5, + 0x82D3A020, + 0xFC000000, + 0x06434804, + 0x10000CFD, + 0xBCE1C944, + 0x2723F342, + 0x00001010, + 0x2ADA9890, + 0xA5639C00, + 0xA0D5CF00, + 0x96F34010, + 0x07F5C36A, + 0x020012DC, + 0xBCD00004, + 0x0200133C, + 0x528A4100, + 0xBC870C04, + 0xA4830820, + 0xBD100024, + 0xC2045130, + 0xBD100054, + 0xC2045110, + 0xC7101110, + 0xFC000000, + 0x06044006, + 0xFC000000, + 0xFC000000, + 0x1801CF46, + 0xFC000000, + 0xFC000000, + 0x27376FE1, + 0x25120002, + 0xA1445460, + 0x0A351023, + 0x8804A130, + 0x0200C018, + 0xA1438AB0, + 0x97550010, + 0x86D36020, + 0x0200A806, + 0x84F3E150, + 0xA0D39600, + 0xFC000000, + 0xA8D36140, + 0x80F3E0D0, + 0xBCDC4004, + 0xA4D30840, + 0x82E3E080, + 0x42DB8047, + 0xFC000000, + 0xFC000000, + 0x24D34002, + 0xFC000000, + 0x07F3400F, + 0x8CD4E120, + 0x2ED76FE1, + 0x02002011, + 0xA5106100, + 0x2D120002, + 0xA0D44D00, + 0x82D36010, + 0xA5134D00, + 0x2D120002, + 0xA0844C00, + 0x84036080, + 0x02008008, + 0x8884E128, + 0x2E876FE1, + 0x96830020, + 0x82822010, + 0xCA86001E, + 0xFC000000, + 0xC2049601, + 0x96830020, + 0xCA86001E, + 0x1000055D, + 0xBC800024, + 0xC2021110, + 0x86046010, + 0x0200500C, + 0xA4E00840, + 0x86046000, + 0x02005006, + 0x86046020, + 0x0200400A, + 0x0200200B, + 0xA4E04270, + 0xD906C157, + 0x02002008, + 0xA4E04240, + 0xD906C156, + 0x02002005, + 0xA4E04250, + 0xD906C154, + 0xA4E04260, + 0xD906C155, + 0x2AE48006, + 0x1801E0C6, + 0xFC000000, + 0xFC000000, + 0x00001013, + 0xC7101E02, + 0x23348054, + 0x2354805C, + 0xBDC00014, + 0x8334E0A0, + 0x020023E4, + 0xBD31E300, + 0xA4E70940, + 0x00000010, + 0xFC000000, + 0x22F48054, + 0xBDA00004, + 0x8333E0C0, + 0xBD5000C4, + 0xBD800024, + 0x21334136, + 0x82F3E100, + 0xA1B52000, + 0x293501A6, + 0xBD300044, + 0x20F340F6, + 0x28F50136, + 0xBCF00084, + 0x23A48095, + 0x2334804C, + 0xA5A4E100, + 0xA4E60940, + 0x020023CE, + 0xBD31E880, + 0x29A500F6, + 0x00001010, + 0xFC000000, + 0xBD420804, + 0x22F48054, + 0x8333E080, + 0xBD800004, + 0xA1B52000, + 0x21334136, + 0x8353E0C0, + 0xBDA00024, + 0x29350186, + 0xBD800044, + 0x21334156, + 0x8353E100, + 0xA4E68940, + 0x29350186, + 0xBD800084, + 0x21334156, + 0x8353E140, + 0x29350186, + 0xBD8000C4, + 0x21334156, + 0x8353E180, + 0x29350186, + 0xBD800104, + 0x21334156, + 0x8353E1C0, + 0x29350186, + 0xBD800144, + 0x21334156, + 0x8353E200, + 0x29350186, + 0xBD800184, + 0x21334156, + 0x82F3E240, + 0x29350186, + 0xBD3001C4, + 0x20F340F6, + 0x23548095, + 0x28F50136, + 0xBD300204, + 0xBCF00064, + 0x0683A004, + 0x29550136, + 0xBD800244, + 0xBCF00114, + 0xBD500284, + 0x0200239C, + 0xBD31F500, + 0x28F50186, + 0x00001010, + 0xFC000000, + 0x23148084, + 0x0683A004, + 0x81B36110, + 0x82F46100, + 0x82F46060, + 0x0A332005, + 0xBCF00034, + 0xA4E3C940, + 0x02001003, + 0xBD100014, + 0xBD100024, + 0x0200238C, + 0xBD31F900, + 0x2354808C, + 0x00001010, + 0xFC000000, + 0x0A332019, + 0x2B048286, + 0x82D36120, + 0x23948195, + 0xBD320004, + 0x50D200F7, + 0xFC000000, + 0xFC000000, + 0x0A33208A, + 0x808220F0, + 0x82D66000, + 0x8384E000, + 0x82F02000, + 0x2AD481A5, + 0x2A0A9810, + 0xFC000000, + 0xFC000000, + 0x234481B5, + 0x23C481A5, + 0x84072140, + 0x0200880A, + 0x84D521C0, + 0x02002009, + 0x2AD481B5, + 0x83472000, + 0x58D200F0, + 0xFC000000, + 0xFC000000, + 0x02001076, + 0x808220F0, + 0x2A0481B5, + 0x22D481E6, + 0x0A33E80C, + 0x81336140, + 0x2B3481E6, + 0x83302800, + 0x86072800, + 0x0200E004, + 0xBCF20004, + 0x8383E000, + 0x83302400, + 0x82F4E000, + 0x2B3480B4, + 0x2AF480BC, + 0x81B020F0, + 0x8406E140, + 0x0200C802, + 0x83B52000, + 0x06C38008, + 0x06A38007, + 0xFC000000, + 0xFC000000, + 0x418341B7, + 0xFC000000, + 0xFC000000, + 0x02000010, + 0x06C38002, + 0xA4E002A0, + 0xA4E002C0, + 0x2AE48006, + 0x83536000, + 0x83C62000, + 0x8336E000, + 0x8334E000, + 0x0200D807, + 0x21A54002, + 0x83556040, + 0x29A70002, + 0x020023FC, + 0x83C72040, + 0x8734E040, + 0x233481A5, + 0x84F3E1B0, + 0x85C4E1B0, + 0x2AF480BC, + 0x818621B0, + 0x2BC481A5, + 0x0A372017, + 0x854521B0, + 0x80D361B0, + 0x0A33C004, + 0x0A351031, + 0xFC000000, + 0x0200003F, + 0xBDA20004, + 0xBD100014, + 0x235480B4, + 0xBD300044, + 0xA4E4C940, + 0x0200232E, + 0xBD321080, + 0xA1B6A000, + 0x51A20157, + 0xFC000000, + 0xFC000000, + 0x0A352023, + 0x2B1480A5, + 0x80822150, + 0x020013C1, + 0xFC000000, + 0x22F480B4, + 0x22D480BC, + 0x8583E0D0, + 0xBD420004, + 0x8B562038, + 0x84062150, + 0x02004008, + 0x83556040, + 0x82F62000, + 0x84D56180, + 0x86D36010, + 0x0A336BFF, + 0x280500F4, + 0x82F3E010, + 0xBD100024, + 0x06838004, + 0x06338003, + 0x06238002, + 0xBD100014, + 0xBCD00044, + 0xA4E34940, + 0x0200230E, + 0xBD321880, + 0xA1B52000, + 0x59420180, + 0xFC000000, + 0xFC000000, + 0x0200200C, + 0x2B1480A5, + 0x80822180, + 0x22D481B5, + 0xFC000000, + 0x0A334805, + 0x06B38804, + 0x100008FA, + 0xBD021BC0, + 0xFC000000, + 0x02001385, + 0xFC000000, + 0x228481B5, + 0xFC000000, + 0x0A320805, + 0x06B38804, + 0x100008FA, + 0xBD021E00, + 0xFC000000, + 0x23048286, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00001010, + 0xFC000000, + 0x23928446, + 0xBCE00004, + 0xBD800000, + 0x8A066300, + 0x02006065, + 0xBD2AD804, + 0xBD000010, + 0x860360D0, + 0x02004061, + 0x06B64060, + 0x0746405F, + 0x07E6405E, + 0x07D6405D, + 0x0796585C, + 0xA0D2A000, + 0x8A066100, + 0x0200680D, + 0x2312854C, + 0x23328544, + 0x80C460A0, + 0x83B32180, + 0x80C02008, + 0xD6C6C102, + 0xFC000000, + 0xBCC9F404, + 0xC7B00602, + 0xD7BB2842, + 0x02001005, + 0xFC000000, + 0x23B285A6, + 0xBCCE8604, + 0xD7BB2642, + 0x84C4E110, + 0x87C46120, + 0xC7D00702, + 0x23B28525, + 0x06876845, + 0x2AC4805C, + 0xA1D59C00, + 0x8A066100, + 0x02006805, + 0x2B148054, + 0x2B348084, + 0xA4E04290, + 0x81B6E0C0, + 0x8196E1C0, + 0x840661D0, + 0x0200C03A, + 0x860666E0, + 0x0200E804, + 0x2BB48065, + 0x83C66000, + 0x83C026E0, + 0x2B948035, + 0x2BC48025, + 0x23C2855C, + 0x2BC4804C, + 0x86072110, + 0x0200680D, + 0x84C6E0C0, + 0x2AC48095, + 0x86032080, + 0x0200A02B, + 0x82C4E060, + 0xA4E00280, + 0xBDB00084, + 0x20C340C5, + 0xBD000020, + 0xFC000000, + 0x0A130021, + 0x0200000B, + 0x82C4E0C0, + 0x86072060, + 0x02006820, + 0xA4E04280, + 0x20C340C6, + 0xA0C309C0, + 0x97B30020, + 0x8606E140, + 0x0200901A, + 0x2AE48006, + 0x80C4E1B0, + 0x87332120, + 0x2BB4808C, + 0x84066130, + 0x0200A014, + 0x2B348044, + 0xBD000010, + 0x8604E6E0, + 0x0200C010, + 0x02001034, + 0xFC000000, + 0x22848146, + 0xBD000030, + 0x2B048184, + 0x82C22010, + 0xBC800024, + 0xC2021190, + 0xFC000000, + 0x02002006, + 0x2B048184, + 0x2AC48146, + 0x22848126, + 0x82822010, + 0x2A848126, + 0x100005F9, + 0x2B048184, + 0xFC000000, + 0x22848106, + 0xBD800010, + 0x82C22010, + 0x02002007, + 0xBC800000, + 0x2AC48106, + 0xBD800000, + 0x22C48166, + 0x82C32010, + 0x2AC48166, + 0xBCC00024, + 0xC2031190, + 0xFC000000, + 0x10000629, + 0x2A848184, + 0xFC000000, + 0x235480CC, + 0x233480C4, + 0x96D54020, + 0x83A361C0, + 0x97454010, + 0x86D4E010, + 0x834521A0, + 0x0A336805, + 0x83356010, + 0x215481A6, + 0xA4E002B0, + 0x2AE48006, + 0x21448145, + 0x2B5481E6, + 0x2B4481B5, + 0x00002010, + 0x2B3480CC, + 0x2AD480C4, + 0xBCC00054, + 0xC2031190, + 0xC6C01190, + 0xFC000000, + 0x06030006, + 0xFC000000, + 0xFC000000, + 0x18024586, + 0xFC000000, + 0xFC000000, + 0xC6C01F42, + 0x82C02030, + 0x8EC32400, + 0x8EC32800, + 0xC2031F42, + 0x84C66130, + 0x23E48025, + 0x2AC481C5, + 0x85D7A130, + 0x2BD481B5, + 0x0A332014, + 0xBDC00004, + 0xBDB00004, + 0x86032800, + 0x02008806, + 0x86032400, + 0x0200C804, + 0x86076400, + 0x0200C802, + 0xA4E042A0, + 0x860666E0, + 0x0200D809, + 0xA4E042C0, + 0x859661E0, + 0x815561E0, + 0x2B9480D5, + 0x2B5480E6, + 0x83B6E010, + 0x83572010, + 0xA4E042B0, + 0x2A0480CC, + 0x2BB480C4, + 0x2AE48006, + 0x8132A130, + 0x8334E120, + 0x2B3481E6, + 0x0693A024, + 0x83932000, + 0x2B948195, + 0xBD300004, + 0x81B36110, + 0x10000785, + 0xBD025080, + 0xBD100034, + 0x0A145B98, + 0x2B148075, + 0xBD420804, + 0xBCF00004, + 0x2AF480A5, + 0x1000078D, + 0xBD025280, + 0xBD100004, + 0x100007D6, + 0xBD025340, + 0x2B1480A5, + 0x22F48044, + 0x82F3E000, + 0x100007E6, + 0xBD025480, + 0xA4E04230, + 0x2B1480A5, + 0x84832190, + 0x2A8481C5, + 0x8284A310, + 0xBCCFFFFC, + 0x28020000, + 0x42830017, + 0xFC000000, + 0xFC000000, + 0x0A14438F, + 0x02001394, + 0xBC800040, + 0xBCF00004, + 0x100007A4, + 0xBD025280, + 0xBD100004, + 0x228AE561, + 0xC2021281, + 0xBC800034, + 0x96820020, + 0x8E822030, + 0xC2021240, + 0x20848001, + 0x9EA20001, + 0xBC900014, + 0x94B240A0, + 0x0652803A, + 0xA4A7C640, + 0xFC000000, + 0xFC000000, + 0xAAA2A300, + 0xBC9C8004, + 0x80A260A0, + 0x888220B8, + 0xFC000000, + 0x26C280A5, + 0x26D28026, + 0xA09344E0, + 0xA0B35C00, + 0xFC000000, + 0x20938094, + 0x94F2C090, + 0xA0B345E0, + 0xA0935D00, + 0xFC000000, + 0x20B380B4, + 0x951240B0, + 0x26B28006, + 0x2293009C, + 0x22D30015, + 0x06024804, + 0x8A926820, + 0x2A93009C, + 0xD0034006, + 0x26D28086, + 0x27428046, + 0x229AE580, + 0x27328066, + 0x84052091, + 0x02009006, + 0x23530046, + 0x2F328046, + 0x80B2E140, + 0x0A34C805, + 0x02000006, + 0x80952130, + 0x0200D804, + 0x2E928046, + 0x8C9560D0, + 0x2A930046, + 0x8092E110, + 0x840260F0, + 0x0200D003, + 0x2EF28006, + 0x2E928006, + 0x84026000, + 0x22930066, + 0x0200CBCA, + 0x0200ABC9, + 0x8C9260D0, + 0x2A930066, + 0x18025A07, + 0xFC000000, + 0xFC000000, + 0x83F7E010, + 0x020023FC, + 0x8BF7E088, + 0xA527C610, + 0x20C20003, + 0x8A032803, + 0x0200415B, + 0xA0B307C0, + 0x8602E070, + 0x020040B8, + 0x8602E040, + 0x02004809, + 0xA0B35C00, + 0x2ABA80A1, + 0xBCB00034, + 0x02002147, + 0xA4C2C7C0, + 0x2ACA8003, + 0xFC000000, + 0xA4704270, + 0xA0E35370, + 0x96E38040, + 0x8363AB01, + 0xA1A31130, + 0xA4D2C3F0, + 0x27858065, + 0x26E5803C, + 0xA1331C00, + 0x22BAE441, + 0x26F600A5, + 0x0A32D898, + 0xBD100004, + 0x0633A1A7, + 0x27258025, + 0x26B58045, + 0x8AE6A0F0, + 0xFC000000, + 0x0EFB8C04, + 0xBCE07C04, + 0x8404E0E0, + 0x0200C13C, + 0x8404A0B0, + 0x0200983D, + 0xA0E303B0, + 0x22BAE1C1, + 0x8402E120, + 0x0200D009, + 0xFC000000, + 0x22BAE1A1, + 0xFC000000, + 0x0A12C132, + 0xFC000000, + 0x02002008, + 0x86B2E010, + 0x2ABAE1A1, + 0x22BAE181, + 0xFC000000, + 0x0A12C12B, + 0x86B2E010, + 0x2ABAE181, + 0x0651C047, + 0xA0E0A000, + 0x22208035, + 0x82B4A010, + 0x2EB58025, + 0x27258006, + 0x22B3C0A6, + 0x80B2E130, + 0x2AB3C0A6, + 0xC9A3813E, + 0xA4C01B30, + 0xA4D69170, + 0x28C38003, + 0x0A249007, + 0xCBA2801E, + 0x20C48002, + 0x80C320E2, + 0x02002005, + 0x28C48002, + 0xA523A000, + 0xA523A000, + 0xA523A100, + 0x0A34597C, + 0x2F258006, + 0x26C58075, + 0x26B600B5, + 0x26D60086, + 0x8CB2E0C0, + 0x2EB600B5, + 0x22C3C026, + 0x22B3C09C, + 0x8CC320D0, + 0x2AC3C026, + 0x0671DC04, + 0x22CA8242, + 0x82C32010, + 0x2ACA8242, + 0x0602C8F5, + 0x8AB2E018, + 0x2AB3C09C, + 0x020020F2, + 0x22B3C015, + 0xD002C006, + 0x27458055, + 0xFC000000, + 0x0A350018, + 0x0A339806, + 0x22E50015, + 0x8404A0E0, + 0x02008814, + 0x02001009, + 0x22E50046, + 0x22B50025, + 0x8404A0B0, + 0x020093BA, + 0x22E50035, + 0x8404A0E0, + 0x0200980C, + 0x22E50066, + 0x84B4A0B0, + 0xC74020C1, + 0x07F38005, + 0xA8B3A0B0, + 0x840520B0, + 0x0200C3B0, + 0x02000004, + 0xA8B2E0E0, + 0x840520B0, + 0x0200C3AC, + 0x020010E3, + 0xFC000000, + 0x0671C7BA, + 0x07F30BB9, + 0x07F34005, + 0x10080118, + 0xA0B30AE0, + 0xFC000000, + 0x020003B4, + 0x10000C8C, + 0xBD028CC0, + 0xFC000000, + 0x10000C70, + 0xBD028D80, + 0xBCB000C4, + 0x0A3643AD, + 0xBD492404, + 0xA0E20C10, + 0xFC000000, + 0xFC000000, + 0x20E500E6, + 0xBD029000, + 0x10000CA8, + 0xA1431C00, + 0xBDA88004, + 0xBD4FFFFC, + 0x42ED0017, + 0xFC000000, + 0xFC000000, + 0x237AF341, + 0xA1A31130, + 0xFC000000, + 0x24E5C002, + 0xFC000000, + 0x0A33880F, + 0x80E32000, + 0x81536000, + 0x22BAECA1, + 0x82B2E120, + 0x96B2C011, + 0xA552CF00, + 0x10080126, + 0xBCB000C4, + 0xFC000000, + 0xBD0295C0, + 0x10000CA2, + 0xFC000000, + 0xFC000000, + 0x0200038C, + 0x10080C86, + 0xBD0296C0, + 0xFC000000, + 0x020003F8, + 0xBCB8C004, + 0xA4B69020, + 0xFC000000, + 0x02009B67, + 0x20B2C002, + 0xFC000000, + 0x06C2CB64, + 0x82B4E030, + 0x02002362, + 0x8B32E038, + 0xA4C4DC00, + 0xA0B34800, + 0x8602E050, + 0x0200400E, + 0x8602E0D0, + 0x0200406C, + 0x8602E060, + 0x0200407E, + 0x8602E0E0, + 0x02004085, + 0x8602E000, + 0x02004088, + 0x8602E0C0, + 0x020040C5, + 0x8602E080, + 0x020040DA, + 0x02000086, + 0xA0B35370, + 0x96B2C040, + 0x82F2EB01, + 0xBD800004, + 0xFC000000, + 0x26D3C065, + 0x26C3C03C, + 0xFC000000, + 0x26B340A5, + 0x2723C006, + 0x27C3C025, + 0x2E03C025, + 0x2E03C006, + 0x26E340B5, + 0x2713C075, + 0x06332037, + 0x88E3A118, + 0x2EE340B5, + 0x0A339807, + 0xA194A100, + 0x22C2C026, + 0x26D34086, + 0xFC000000, + 0x88C320D8, + 0x2AC2C026, + 0x8C066180, + 0x0200406B, + 0x0A365034, + 0x21664003, + 0xFC000000, + 0x07F5C01B, + 0xA0C58AE0, + 0x96D300F0, + 0xA4D5DE00, + 0xBCC00034, + 0xD00300D6, + 0x22C2C0A6, + 0xA0D59C00, + 0x84C320D0, + 0x2AC2C0A6, + 0x22CAE1C1, + 0xA0D59B30, + 0xBCE00004, + 0x0EC71807, + 0x80F02020, + 0x28E64003, + 0x22CAE1A1, + 0x02002006, + 0x82C32010, + 0x2ACAE1A1, + 0x22CAE181, + 0x82C32010, + 0x2ACAE181, + 0xA0266000, + 0x020023E3, + 0x97934030, + 0x87C72010, + 0xA0D5DC00, + 0xBCCACE04, + 0x22EA9890, + 0x8ED36801, + 0x28D300E5, + 0x82D3A020, + 0xFC000000, + 0x06434804, + 0x10000CFD, + 0xBCE2AEC4, + 0x2723F342, + 0x020013E0, + 0x2ADA9890, + 0xA0C30600, + 0xBDB8B004, + 0xA5B30270, + 0xFC000000, + 0xFC000000, + 0x2356C006, + 0x020023C6, + 0x8383E000, + 0x2A06C006, + 0x9EC54002, + 0xFC000000, + 0x06532034, + 0xAAC32020, + 0x82C32100, + 0xFC000000, + 0xFC000000, + 0x20C6C0C5, + 0xFC000000, + 0xFC000000, + 0x26D30066, + 0x26E30006, + 0x895560D8, + 0xA193A100, + 0x020023C1, + 0x2E030025, + 0x2E030006, + 0xA0C34D60, + 0x86032080, + 0x02008805, + 0xBCBA0004, + 0x02002006, + 0xAAC32580, + 0x80D2E0C0, + 0xBCD83004, + 0x96B30050, + 0x80D360B0, + 0xFC000000, + 0xFC000000, + 0x22B3409C, + 0xFC000000, + 0x22C34015, + 0x0602C816, + 0x8AB2E038, + 0x02002014, + 0x2AB3409C, + 0xD0030006, + 0x2A0A8C02, + 0x2A1A8C42, + 0x2A2A8C82, + 0x2A3A8CC2, + 0x2A4A8D02, + 0x2A5A8D42, + 0x0200200B, + 0x2A6A8D82, + 0x2A7A8DC2, + 0x07630803, + 0x02001007, + 0x8E71E200, + 0x02001005, + 0x8A71E208, + 0x02002003, + 0x22BAECA1, + 0xC202D502, + 0x0671C48D, + 0x28020002, + 0x82820080, + 0x8A820808, + 0xA0B20830, + 0x2EBF5690, + 0x20C20002, + 0x8A032803, + 0x02004003, + 0xBCB00024, + 0xC202D702, + 0x18026A87, + 0xFC000000, + 0xFC000000, + 0x22B3C015, + 0x8AB2E3F0, + 0x8602E200, + 0x02006007, + 0x26E58034, + 0xA0B31C00, + 0xCAE0C01C, + 0x02002007, + 0xC8E080BE, + 0xBCB00144, + 0xCAE1101C, + 0xFC000000, + 0xC8E100BE, + 0xBCB00154, + 0xCBA4801C, + 0x07F35008, + 0xCAB5E01C, + 0xA0B30AE0, + 0x96C2C0F0, + 0xA4C35E00, + 0x020023DE, + 0xBCB00034, + 0xD002C0C6, + 0x0671DC0A, + 0x22BA8202, + 0x82B2E010, + 0x2ABA8202, + 0x22BA80C2, + 0x22CA8102, + 0x86B2E010, + 0x2ABA80C2, + 0x800320B0, + 0x0200485F, + 0xA0B35C00, + 0xBCCACE04, + 0x22DA9890, + 0x8EB2E801, + 0x28B300D5, + 0x82D36020, + 0xFC000000, + 0x06434804, + 0x10000CFD, + 0xBCE2CD84, + 0x2723F342, + 0x020013C6, + 0x2ADA9890, + 0x07F3580A, + 0xA0C35F00, + 0x22BAE1A1, + 0x84B2E0C0, + 0x0200800E, + 0x2ABAE1A1, + 0x22BAE181, + 0x020023BD, + 0x80B2E0C0, + 0x2ABAE181, + 0x22BAE181, + 0x84B2E0C0, + 0x02008006, + 0x2ABAE181, + 0x22BAE1A1, + 0x020023B5, + 0x80B2E0C0, + 0x2ABAE1A1, + 0xBCB00024, + 0xC202D702, + 0x1802CE07, + 0xFC000000, + 0xFC000000, + 0xA0E31E00, + 0x2A1AF142, + 0x22BAEDC0, + 0xFC000000, + 0x0A32C006, + 0xBCB00024, + 0xC202D702, + 0x1802D447, + 0xFC000000, + 0xFC000000, + 0xBCCAE304, + 0xD6E32640, + 0xBCDA5804, + 0xFC000000, + 0xC6B00702, + 0xFC000000, + 0x0682C80B, + 0xA0B2D000, + 0xA4D2C640, + 0xA4C2C610, + 0x28034002, + 0x2A034026, + 0x2A034046, + 0x2A034066, + 0x020023F2, + 0xBCB00FF4, + 0x28B30000, + 0x02002392, + 0x2A0AF142, + 0xFC000000, + 0xA0E38600, + 0x8115A000, + 0xBD48B004, + 0xA5438270, + 0x02002258, + 0xFC000000, + 0x23650085, + 0x26C580A5, + 0x26D58066, + 0x26B44025, + 0x82B2E010, + 0x2EB44025, + 0x81646000, + 0x22B30006, + 0x0200227F, + 0x8CB2E0D0, + 0x2AB30006, + 0x22CA8003, + 0x22BA81C2, + 0x0A331420, + 0x22CA8181, + 0x22DA81A1, + 0x80B2E0C0, + 0x8402E0D0, + 0x0200C802, + 0x80B020D0, + 0x2ABA81C2, + 0x2A0A9810, + 0xA4700270, + 0x22DA8141, + 0x22CA8102, + 0x22BA8161, + 0x06F34803, + 0xBCC00004, + 0x2ACA8102, + 0x0A33100E, + 0x22DA81C2, + 0x840360B0, + 0x0200800D, + 0x84B360B0, + 0x2ABA81C2, + 0x86B32010, + 0x2ABA8102, + 0x22BA80C2, + 0x82B2E010, + 0x2ABA80C2, + 0x100009B8, + 0xBCB00034, + 0x22CA8003, + 0x2A0A8002, + 0x2A0A9810, + 0x10000C43, + 0xFC000000, + 0xFC000000, + 0x228AE4E1, + 0xC20212C1, + 0xBC800044, + 0x96820020, + 0x8E822030, + 0xC2021250, + 0xBC9A9824, + 0xBC891A04, + 0xFC000000, + 0x20D24001, + 0xFC000000, + 0x0A334012, + 0xBCB91904, + 0x22920015, + 0x96924010, + 0x22A20004, + 0xFC000000, + 0x2092C095, + 0x86A2A010, + 0x0200C006, + 0xFC000000, + 0x00082009, + 0xFC000000, + 0xFC000000, + 0x22A2000C, + 0x2AA20004, + 0x0E1B4BF2, + 0x86D36010, + 0x82822080, + 0x1802EA47, + 0xFC000000, + 0xFC000000, + 0x22B54025, + 0x22954005, + 0x9A926010, + 0x22A54015, + 0x0A32C006, + 0x809260B0, + 0x8402A090, + 0x0200D003, + 0x2A954005, + 0x2AA54005, + 0x83556080, + 0x8334E010, + 0xFC000000, + 0x0EFCDBF3, + 0xFC000000, + 0xFC000000, + 0x14000000, + 0xBD300004, + 0xBD593804, + 0xBCA93404, + 0xFC000000, + 0xFC000000, + 0x22928035, + 0x22C28006, + 0x22E28025, + 0x0A324022, + 0x06F25C03, + 0xA0B25E00, + 0x96B2C050, + 0x06F39C03, + 0xA0939E00, + 0x96924050, + 0x80B320B0, + 0x02008012, + 0x840260B0, + 0x0200D003, + 0x2AB28006, + 0x2A928006, + 0xBCAAC804, + 0xFC000000, + 0xFC000000, + 0x20B28001, + 0x82A2A020, + 0x0A32D010, + 0x2292C09C, + 0x22C2C015, + 0x06024BFB, + 0xD0030006, + 0x020023F9, + 0x8A926018, + 0x2A92C09C, + 0xBC9FB604, + 0xBC900128, + 0x800260B0, + 0x02009BF0, + 0x2AB28006, + 0x020023EE, + 0x84902090, + 0x2A928006, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0xBC901D14, + 0xC2025702, + 0xBC902414, + 0xC2025702, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0xBDC00004, + 0xBC8A9804, + 0xBCBA9884, + 0xFC000000, + 0x209201C4, + 0x20A2C1C4, + 0xBC8AE8C4, + 0xBC800008, + 0x84A260A0, + 0x8B12A3F0, + 0x2892C1C4, + 0x0A344005, + 0xFC000000, + 0x100003C0, + 0xBDB30604, + 0xFC000000, + 0xBDC00004, + 0xBCAA9904, + 0xBC9ADD84, + 0xBC8AE884, + 0xBC800018, + 0xFC000000, + 0x20B281C4, + 0x20C241C4, + 0x84C2E0C0, + 0x8B1323F0, + 0x28B241C4, + 0x0A344004, + 0x100003C0, + 0xBDB309C4, + 0xFC000000, + 0x0EEF1BF6, + 0x83C72010, + 0xFC000000, + 0xBCCACE04, + 0xBC8A9894, + 0x22DA9890, + 0xFC000000, + 0x0A334006, + 0xFC000000, + 0x10000CFD, + 0xBCE30CC4, + 0x2723F342, + 0x28D20000, + 0x18030207, + 0xFC000000, + 0xFC000000, + 0x2A0A8002, + 0x26B76F41, + 0xC202D3E1, + 0xBCB001B4, + 0x96B2C020, + 0x8EB2E030, + 0xC202D370, + 0xBCB20A84, + 0x2ABAF401, + 0x2A0A9810, + 0xFC000000, + 0xFC000000, + 0x22BAF401, + 0xFC000000, + 0xFC000000, + 0x20C2C001, + 0x82B2E020, + 0x0A331005, + 0x2ABAF401, + 0x0000200C, + 0xFC000000, + 0xFC000000, + 0x18030F87, + 0xFC000000, + 0xFC000000, + 0x22BA97A1, + 0x22DA9781, + 0x22CA97E1, + 0x0A334406, + 0x80B2E0D0, + 0x8402E0C0, + 0x0200C802, + 0x80B020C0, + 0x2ABA97A1, + 0x10000C43, + 0xFC000000, + 0xFC000000, + 0x07F34006, + 0xA0C35E00, + 0xA4C2CAF0, + 0x14000000, + 0xBC800034, + 0xD00200C6, + 0xA0B35C00, + 0xBCCACE04, + 0x228A9890, + 0x8EB2E801, + 0x28B30085, + 0x82D22020, + 0xFC000000, + 0x06434804, + 0x10000CFD, + 0xBCE31B44, + 0x2723F342, + 0x14000000, + 0x2ADA9890, + 0xFC000000, + 0x26E3F642, + 0x8A03AFF2, + 0x02005811, + 0x26EC7D42, + 0xFC000000, + 0x06038002, + 0x07038BFA, + 0x2E0C7D42, + 0x96B2C0F0, + 0xBD400034, + 0xD00500B2, + 0x07038008, + 0xA1539E10, + 0x22EAF520, + 0x234AB742, + 0xA8E560E0, + 0x00002010, + 0x96E38080, + 0x8193A140, + 0xBD500004, + 0x00001010, + 0xBD900004, + 0xA0B2CA00, + 0x96E2C0F0, + 0xA4E55E00, + 0x00002010, + 0xBD400034, + 0xD00500E6, + 0x22EAF420, + 0xFC000000, + 0x0A338006, + 0xBCE00024, + 0xC2039702, + 0x18032307, + 0xFC000000, + 0xFC000000, + 0xBCE00014, + 0x2AEAF420, + 0xBCE00054, + 0xC20391B0, + 0xC6E011B0, + 0xFC000000, + 0x06038006, + 0xFC000000, + 0xFC000000, + 0x18032806, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00000010, + 0x2A0AF420, + 0xFC000000, + 0xFC000000, + 0x00002010, + 0xBCE00024, + 0xC20391B0, + 0xBDB00074, + 0x86052400, + 0x0200E810, + 0x8DB6E142, + 0x8DA6A1A2, + 0x0A16D005, + 0x87452400, + 0x43AB8400, + 0x02001006, + 0x87B6E010, + 0x83B6E070, + 0x43AB8407, + 0xFC000000, + 0xFC000000, + 0x86052400, + 0x0200E3F6, + 0x83A6A400, + 0x82E3A400, + 0x43AB8407, + 0xFC000000, + 0xFC000000, + 0x814021B6, + 0x80E021A6, + 0x86052800, + 0x0200C807, + 0x87452800, + 0x52EE4800, + 0x86052800, + 0x0200E3FD, + 0x82E3A800, + 0x83966800, + 0xFC000000, + 0x50EE4147, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00001010, + 0xFC000000, + 0x228AE521, + 0xC20212E1, + 0xBC800054, + 0x96820020, + 0x8E822030, + 0xC2021270, + 0x229AE501, + 0xBC800054, + 0xC2021150, + 0xC6801150, + 0xFC000000, + 0x06020006, + 0xFC000000, + 0xFC000000, + 0x180337C6, + 0xFC000000, + 0xFC000000, + 0xBCA8A004, + 0x9EB24001, + 0xA4A2C840, + 0x0A324017, + 0xFC000000, + 0x22D28025, + 0x22C28006, + 0x22828035, + 0x22E28055, + 0x94D200D0, + 0x96838050, + 0x80C320D0, + 0x840220C0, + 0x02009009, + 0x2A828006, + 0xBC8FB604, + 0xBC800128, + 0x800220C0, + 0x0200A004, + 0x84802080, + 0x2A828006, + 0x2AC28006, + 0x948040B0, + 0x020023E9, + 0x88926088, + 0xFC000000, + 0xBC800024, + 0x18033507, + 0xC2021150, + 0xFC000000, + 0xBCF00014, + 0xC203D170, + 0xC6F01170, + 0xFC000000, + 0x0603DBFC, + 0x2733F382, + 0xBD100024, + 0x82F32000, + 0x8524A130, + 0x8344A020, + 0x840520D0, + 0x0200E005, + 0x81A4E0D0, + 0x83236000, + 0x82D52000, + 0x27A3F302, + 0x2FA3F3C2, + 0xBDAFFFFC, + 0xBD4AF534, + 0x58F4C0D0, + 0x28050000, + 0x43468010, + 0x2A0A9810, + 0xFC000000, + 0xFC000000, + 0x21350000, + 0xFC000000, + 0x0A34C3FE, + 0x8524A0D0, + 0x2743F3C2, + 0x2F43F382, + 0x0A34A006, + 0x80F3E0D0, + 0x82D4A000, + 0x020023EE, + 0x83352000, + 0x81A520D0, + 0x0000200E, + 0xC2045170, + 0xFC000000, + 0x20BA8000, + 0xA492CA80, + 0x0672C89E, + 0x280A8000, + 0x82A2A012, + 0x8AA2A40A, + 0x22C24786, + 0xA13309A0, + 0xA0E308A0, + 0xA08304E0, + 0xA1131400, + 0xA1530500, + 0x22F2455C, + 0x232247FC, + 0x22C24407, + 0x0E6BCC04, + 0xBD400004, + 0xA5438B80, + 0xA5404360, + 0x0F1BCC04, + 0xA5448B00, + 0xA544C7D0, + 0xA5404370, + 0x0672C803, + 0xBCE00064, + 0xD00380B2, + 0xBD34F804, + 0xBCBC5004, + 0xA5320450, + 0x8134E0B2, + 0xA5320560, + 0xBDE00004, + 0x10000DCB, + 0xBCA35200, + 0xBD036800, + 0x07F35009, + 0xFC000000, + 0xBCE76F84, + 0x97554010, + 0x26F77041, + 0xFC000000, + 0x24E38155, + 0x8403A0F0, + 0x0200C84D, + 0xA1535E00, + 0x07F35022, + 0xA0C31C00, + 0xA0D34F00, + 0x96F34010, + 0x22EAF520, + 0x22DADD42, + 0xA8E560E0, + 0x96E38080, + 0x80D360E0, + 0x816360F0, + 0xA0D50B00, + 0xA5534AF0, + 0xA5500580, + 0x8EE56023, + 0x0661DC0B, + 0xBCD00054, + 0xC2035180, + 0xC6D01180, + 0xFC000000, + 0x06034009, + 0xFC000000, + 0xFC000000, + 0x18035B86, + 0xFC000000, + 0xFC000000, + 0xC2035180, + 0x020013F9, + 0xC6D01180, + 0x26D77041, + 0x82D36010, + 0x2ED77041, + 0xBCD00024, + 0xC2035180, + 0x0200000B, + 0x96F54020, + 0xA5500580, + 0x8EE56013, + 0x26D76742, + 0x80D360F0, + 0xBCFAF3C4, + 0x42F34047, + 0xFC000000, + 0xFC000000, + 0x2163C002, + 0x86C32120, + 0xA5432000, + 0x10000E9E, + 0xBCA37000, + 0xBCD360C0, + 0x26D2C046, + 0xBCFAE004, + 0xA0C34640, + 0xA4F30620, + 0xA0D34A80, + 0xFC000000, + 0x0661DC0B, + 0xBCC00054, + 0xC2031180, + 0xC6C01180, + 0xFC000000, + 0x06030009, + 0xFC000000, + 0xFC000000, + 0x180365C6, + 0xFC000000, + 0xFC000000, + 0xC2031180, + 0x020013F9, + 0xC6C01180, + 0x20C3C002, + 0x82C32010, + 0x28C3C002, + 0x10000EF7, + 0xBCA36E00, + 0xFC000000, + 0x26C2C054, + 0xA4C00270, + 0x2EC2C054, + 0xA0E35E00, + 0xA0B50B00, + 0xA4E2CAF0, + 0x07F36004, + 0xA0B343F0, + 0xA4E2C380, + 0xA4E04390, + 0x0661DC0B, + 0xBCB00054, + 0xC202D180, + 0xC6B01180, + 0xFC000000, + 0x0602C009, + 0xFC000000, + 0xFC000000, + 0x18036D46, + 0xFC000000, + 0xFC000000, + 0xC202D180, + 0x020013F9, + 0xC6B01180, + 0x10000EFB, + 0xBCA36EC0, + 0xA0D50B80, + 0x2682C054, + 0xA4800270, + 0x2E82C054, + 0xBC800024, + 0xC2021180, + 0x02002008, + 0xBC800024, + 0xC2021702, + 0x2682C054, + 0xA4800270, + 0x2E82C054, + 0xBC800024, + 0xC2021702, + 0x18034947, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0661DC0B, + 0xBCB00054, + 0xC202D180, + 0xC6B01180, + 0xFC000000, + 0x0602C009, + 0xFC000000, + 0xFC000000, + 0x18037646, + 0xFC000000, + 0xFC000000, + 0xC202D180, + 0x020013F9, + 0xC6B01180, + 0xBD7E9604, + 0x81602110, + 0xA56204A0, + 0xD76DE840, + 0xBCBC6004, + 0xBC976408, + 0xBD29F804, + 0xC6E00702, + 0xA0F39000, + 0x06838816, + 0xA523C830, + 0xA4B3C840, + 0xA493C910, + 0xBCE4FE04, + 0xA573C810, + 0x2762C054, + 0xA4E3C810, + 0x06758086, + 0xA5604270, + 0x2F62C054, + 0x26E2C046, + 0x26F2C075, + 0xBCF00024, + 0xC203D180, + 0x0413A80A, + 0x26E2C065, + 0x24EA4001, + 0x0837880A, + 0x00002010, + 0xA5600270, + 0x2F62C054, + 0x26EF56D0, + 0xA4B38840, + 0xA4938910, + 0xA5738810, + 0xFC000000, + 0x26F2C054, + 0x81B3A000, + 0x0673E3FA, + 0x82E3A010, + 0x8AE3A108, + 0x2EEF56D0, + 0x24F5C001, + 0xA193C4A0, + 0xBD84F804, + 0xBCEC5004, + 0xA5864450, + 0x818620E2, + 0xA5864560, + 0xA0E3D400, + 0xA526C830, + 0xAAF3A140, + 0x26EE0126, + 0x80E3A0F0, + 0x83D3A0C0, + 0x25C5C001, + 0x258A4001, + 0x06F7102C, + 0x24E48003, + 0xBDAF5584, + 0x2792C075, + 0x2CE68003, + 0x5BAF4080, + 0xBCFAF5C4, + 0xBCEFFFFC, + 0x42F38017, + 0xFC000000, + 0xFC000000, + 0x84066180, + 0x02004020, + 0xA0E704A0, + 0xA4E71510, + 0x2F82C075, + 0xA0F61080, + 0xA4F61080, + 0xBD8F5564, + 0xBD94F804, + 0xBDAC5004, + 0xA5938450, + 0x819661A2, + 0xA5938560, + 0xFC000000, + 0x2CF60001, + 0x26FE4046, + 0x80F3E0E6, + 0x5B8BC020, + 0xBCFAF5C4, + 0xBD8FFFFC, + 0x42F60017, + 0xFC000000, + 0xFC000000, + 0xA1839510, + 0x26EE4006, + 0xBCFAF2C4, + 0x97860130, + 0x83862013, + 0x8F862103, + 0x2983C002, + 0x52F38047, + 0xFC000000, + 0xFC000000, + 0xAAF46140, + 0x26ECC126, + 0x80E3A0F0, + 0xBDA4FE04, + 0xA5A6C810, + 0xBD9F5404, + 0x439B8147, + 0xFC000000, + 0xFC000000, + 0x27864046, + 0x0A37A804, + 0x24E64003, + 0x27B64086, + 0x06160022, + 0x2CE2C003, + 0xA58042F0, + 0x2F82C046, + 0x26E64066, + 0x2FB48026, + 0x2EE48006, + 0x2D65C001, + 0x2D668001, + 0xBCFF5544, + 0xBD6F5564, + 0x97744010, + 0x26ECC086, + 0x80E3A170, + 0x42FB8020, + 0x26ECC046, + 0x80E3A170, + 0x436B8027, + 0xFC000000, + 0xFC000000, + 0x24F3C001, + 0xA0E3D080, + 0xA4E3D080, + 0x2EE2C065, + 0x25658001, + 0xA0F59080, + 0xA4F59080, + 0xA0E59080, + 0xA4E59080, + 0x2EF2C075, + 0x2CEA4001, + 0xBCE00024, + 0xC2039180, + 0x0000000A, + 0xBCE00024, + 0xC2039180, + 0x00000010, + 0xBCB00024, + 0xC202D180, + 0xBCB00024, + 0xC202D702, + 0x18037207, + 0xFC000000, + 0xFC000000, + 0x26FF4FE1, + 0xBCCF4404, + 0x0A33E814, + 0x8733E020, + 0x80F4E0C0, + 0x26CF4F81, + 0x26FF4FA1, + 0x82F3E100, + 0x840320F0, + 0x00009010, + 0xBD500004, + 0xBD5F4404, + 0x26CF4F42, + 0x435B0207, + 0xFC000000, + 0xFC000000, + 0x82C32200, + 0xBD3001E4, + 0x2ECF4F42, + 0x2EFF4FA1, + 0x80F4E150, + 0xFC000000, + 0x26C48025, + 0x82C32010, + 0x2EC48025, + 0x00002011, + 0x2553C001, + 0x2F3F4FE1, + 0x10000F0E, + 0xBCA3A580, + 0xBCB3A6C0, + 0x26930046, + 0x26E30026, + 0x0200205F, + 0xBCA3A4C0, + 0xA0D24B80, + 0x00002008, + 0xFC000000, + 0xFC000000, + 0x27748025, + 0x26C48035, + 0xA0F32000, + 0x0A35DC18, + 0x24CA4001, + 0x2752C065, + 0x83932010, + 0x840660F0, + 0x02004802, + 0xBD900004, + 0x84066150, + 0x02005816, + 0xFC000000, + 0xBCCF5604, + 0x97844010, + 0x275CC086, + 0x81556180, + 0x42CD4027, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x25530001, + 0xA0C55080, + 0xA4C55080, + 0x840660C0, + 0x02005C08, + 0x2EC2C065, + 0x26C2C046, + 0x80F5E0F0, + 0x8403E0C6, + 0x02008006, + 0x02001018, + 0xFC000000, + 0x10000F3E, + 0xBD53BD04, + 0xFC000000, + 0x0661DC0B, + 0xBCC00054, + 0xC2031180, + 0xC6C01180, + 0xFC000000, + 0x06030009, + 0xFC000000, + 0xFC000000, + 0x1803B406, + 0xFC000000, + 0xFC000000, + 0xC2031180, + 0x020013F9, + 0xC6C01180, + 0x10000E77, + 0xBD13B580, + 0xBD03B4C0, + 0xBCC00024, + 0xC2031180, + 0x0000000D, + 0xBCFE9500, + 0xFC000000, + 0x271F4F02, + 0xA5156040, + 0x2E03C006, + 0x2F43C046, + 0x2EE3C026, + 0x2F63C066, + 0x5AFC4100, + 0xBCCAF5C4, + 0xBCDFFFFC, + 0x42C34017, + 0xFC000000, + 0xFC000000, + 0x26D48006, + 0xA5136040, + 0x2F53C005, + 0x5AFC4040, + 0xBCCAF5C4, + 0xBCFFFFFC, + 0x42C3C017, + 0xFC000000, + 0xFC000000, + 0x800020D6, + 0x02005803, + 0xA4D56000, + 0xA4D56100, + 0x2ED48006, + 0xBCC00024, + 0xC2031180, + 0x0000200A, + 0xFC000000, + 0xFC000000, + 0x07839004, + 0x26C77041, + 0x86C32010, + 0x2EC77041, + 0x82C22250, + 0xCAD30014, + 0x07838004, + 0x0000200A, + 0xBCC00034, + 0xD00300E6, + 0xBCCACE04, + 0x22DA9890, + 0x8EE3A801, + 0x28E300D5, + 0x82D36020, + 0xFC000000, + 0x06434804, + 0x10000CFD, + 0xBCE3C2C4, + 0x2723F342, + 0x2ADA9890, + 0x0000000A, + 0xFC000000, + 0x26D20005, + 0xBCCE9500, + 0x269F4F02, + 0x0833500B, + 0xFC000000, + 0xA4936040, + 0xFC000000, + 0xFC000000, + 0x42CA4107, + 0xFC000000, + 0xFC000000, + 0x26930005, + 0xFC000000, + 0x0A325803, + 0x2E920005, + 0x2E020015, + 0x02001004, + 0xBCB3C800, + 0x0000100A, + 0xFC000000, + 0x26EF4FE1, + 0xBCFF4404, + 0xBC900404, + 0x80F3A0F0, + 0x82E3A020, + 0x8403A090, + 0x02009807, + 0x2CD3C001, + 0x26920025, + 0x86926010, + 0x0000200B, + 0x2EEF4FE1, + 0x2E920025, + 0x269F4FA1, + 0x86926100, + 0x2E9F4FA1, + 0xBCDF4604, + 0x269F4F42, + 0x86F26200, + 0x5ADBC200, + 0xBC9AF5C4, + 0xBCDFFFFC, + 0x42934017, + 0xFC000000, + 0xFC000000, + 0x020023EF, + 0xBCE00204, + 0x2EFF4F42, + 0xBCFA9404, + 0x075520A8, + 0x27A4C094, + 0x278CC194, + 0x42F580E7, + 0xFC000000, + 0xFC000000, + 0xBD9ABC04, + 0x06762804, + 0xA1752000, + 0xBCC00324, + 0xBCC002A4, + 0x8405E0C0, + 0x0200809A, + 0xA0D5D080, + 0xA4D5D080, + 0x8365A0E0, + 0x81802160, + 0xA0C59180, + 0xA4C59180, + 0x97658081, + 0xA4C59100, + 0x97658081, + 0xA4C59080, + 0x06569C13, + 0x81652000, + 0xA5400300, + 0xA5404F10, + 0x2AE64006, + 0xA5436000, + 0x2B464026, + 0x2AC64046, + 0x2A064066, + 0x20C3C003, + 0x2AC64086, + 0x2AD640A6, + 0x22C3C046, + 0x2AC640C6, + 0xBD400204, + 0x2A0640F5, + 0x02002017, + 0x22C3C065, + 0x2AC640E5, + 0xBDA000F4, + 0x2BA64004, + 0x2A064145, + 0xA1A507D0, + 0xA1450B80, + 0x97A68050, + 0x8FA6A010, + 0x2BA640B4, + 0x2B46400C, + 0x2AE64026, + 0x2AD64155, + 0x2AC64106, + 0x2A064126, + 0x20C3C003, + 0x2AC64047, + 0x22D3C046, + 0x2AD64086, + 0x22C3C065, + 0x2AC640A5, + 0xBD400304, + 0x26DCC194, + 0xBDAAAAA4, + 0xA5A5E100, + 0x06736813, + 0xBCD05DC4, + 0x840320D0, + 0x0200E810, + 0x83A6A082, + 0x2BA3C066, + 0x2AC3C0A5, + 0xBCD80F34, + 0x840320D0, + 0x02006006, + 0xBCD81374, + 0x840320D0, + 0x02006805, + 0xBDA0300C, + 0x2BA3C086, + 0xBDA00F80, + 0x2BA3C086, + 0x86C62160, + 0x52F30160, + 0x0765A407, + 0x26CCC195, + 0xA0D31000, + 0x07759008, + 0xBCF00004, + 0x02001006, + 0xA0F302D0, + 0x8405E0D0, + 0x0200D803, + 0xBCF00014, + 0xBCF00004, + 0x26C2C046, + 0xA0C30640, + 0x82D32340, + 0x0E4B0C04, + 0x2782C075, + 0x257CC0D4, + 0xBD700014, + 0x256A4001, + 0x26C48035, + 0xA0D32000, + 0x80C62170, + 0x8325A010, + 0x898320D8, + 0x8924A0D8, + 0x2D2A4001, + 0x26C2C007, + 0x84062120, + 0x0200600B, + 0xA8D5A140, + 0x80C320D0, + 0x0603C008, + 0x59930140, + 0xBCCAF5C4, + 0xBCDFFFFC, + 0x42C34017, + 0xFC000000, + 0xFC000000, + 0x02000029, + 0xBCFF5664, + 0x51930140, + 0x2F22C075, + 0x96D44010, + 0x26CCC046, + 0x80C320D0, + 0xA0D49080, + 0xA4D49080, + 0x2CD3C001, + 0x5AFB0020, + 0xBCCAF5C4, + 0xBCDFFFFC, + 0x42C34017, + 0xFC000000, + 0xFC000000, + 0x26C4C094, + 0x2724C0A4, + 0x06431803, + 0xBCC00004, + 0x96C44051, + 0x0A34840D, + 0xBCDF4C04, + 0xA4D20440, + 0xA4D30800, + 0xAE35D010, + 0xFC000000, + 0x24F34000, + 0x82F3C010, + 0xAC23C120, + 0x0204180B, + 0x2CF34000, + 0xBCF00004, + 0x2CF34000, + 0x82C32010, + 0xBCFAF2C4, + 0x26DCC006, + 0x96C30180, + 0xA4C043C0, + 0x28C3C002, + 0x52F34040, + 0x00000015, + 0xFC000000, + 0xFC000000, + 0x02001367, + 0x817020C0, + 0xBD7A8384, + 0xFC000000, + 0xFC000000, + 0x20C5C003, + 0x28C3C003, + 0x02002359, + 0x22C5C047, + 0x2AC3C047, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, +}; +char *rdpa_version_fw_b = "$Change: 239242 $"; diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/runner_fw_c.c b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/runner_fw_c.c new file mode 100755 index 0000000000..02013fa466 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/runner_fw_c.c @@ -0,0 +1,4108 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint32_t firmware_binary_C[] = { + 0x0A300005, + 0xFC000000, + 0x10000037, + 0xFC000000, + 0xFC000000, + 0x221ABE42, + 0x222AEC83, + 0x224AED03, + 0x226AED83, + 0xC2001202, + 0xC2001302, + 0xBC801000, + 0xBC800018, + 0xC2021202, + 0xC2021302, + 0x228B9561, + 0xC2021502, + 0xC6801B82, + 0x8A8221F9, + 0x8E822801, + 0xC2021B82, + 0xC6801F42, + 0x82802030, + 0x8E822400, + 0x8E822800, + 0xC2021F42, + 0xBC8B5000, + 0xBC900014, + 0x2A92024C, + 0xBC9B6080, + 0xFC000000, + 0xBC8B9404, + 0x2A824005, + 0xBC8B9684, + 0x2A824015, + 0xBC8B6684, + 0x2A824025, + 0xBC828D44, + 0x2A824035, + 0xBC9B6F80, + 0xFC000000, + 0xBC8B9204, + 0x2A824005, + 0xBC8B9704, + 0x2A824015, + 0xBC80C244, + 0x2A824035, + 0xBC975D04, + 0xBC8088C4, + 0x2A824045, + 0xBC809484, + 0x2A824075, + 0x18000000, + 0xFC000000, + 0xFC000000, + 0x2A0B3202, + 0x2A1B3242, + 0x2A2B3283, + 0x2A4B3303, + 0x2A6B3383, + 0x2A8B3403, + 0x2AAB3483, + 0x2ACB3503, + 0x2AEB3583, + 0x2B0B3603, + 0x2B2B3683, + 0x2B4B3703, + 0x2B6B3783, + 0x2B8B3803, + 0x2BAB3883, + 0x2BCB3903, + 0x2BEB3983, + 0xC6800042, + 0x2A8B27C2, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xC2000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x220B3202, + 0x221B3242, + 0x222B3283, + 0x224B3303, + 0x226B3383, + 0x228B3403, + 0x22AB3483, + 0x22CB3503, + 0x22EB3583, + 0x230B3603, + 0x232B3683, + 0x234B3703, + 0x236B3783, + 0x238B3803, + 0x23AB3883, + 0x23CB3903, + 0x23EB3983, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x16000001, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x20BA4000, + 0xA4A2CC80, + 0x0672C871, + 0x280A4000, + 0x82924012, + 0x8A92440A, + 0x2312863C, + 0x22C2875C, + 0x228287FC, + 0xA0F20800, + 0x23428407, + 0xA543CAE0, + 0x23328784, + 0xA5500770, + 0x02002021, + 0xBC800064, + 0xD00200B2, + 0x25424003, + 0xFC000000, + 0x07F5080A, + 0x2C024002, + 0x82924080, + 0x8A924019, + 0xA5500770, + 0xA1150B30, + 0xA0C50780, + 0x02002015, + 0xA0F50AE0, + 0xA13503B0, + 0x21428003, + 0xBC802D14, + 0x07F50854, + 0xC2021702, + 0x28028002, + 0x020023F5, + 0x82A28080, + 0x8AA28029, + 0x21424003, + 0xFC000000, + 0x07F5084C, + 0x28024002, + 0x82924080, + 0x8A924808, + 0xA1150B30, + 0xA0C50780, + 0xA0F50AE0, + 0xA13503B0, + 0xBC888004, + 0xA4844650, + 0xA4830620, + 0x232B3181, + 0x22BB3101, + 0x20820002, + 0xFC000000, + 0xFC000000, + 0x23620025, + 0x22E20045, + 0x8405A0E0, + 0x0200883C, + 0x0F64900C, + 0x22EB7FD0, + 0x232A0044, + 0x22DB3161, + 0x8D23A120, + 0x0A136050, + 0x86E36010, + 0x22D2C035, + 0x2B2B7FD0, + 0x0200200B, + 0x2ADB3101, + 0x2AEB3161, + 0x22DB3141, + 0x8D23A120, + 0x0A136047, + 0x86D36010, + 0x22E2C035, + 0x2AEB3101, + 0x2ADB3141, + 0x2B2B7FD0, + 0x22D20006, + 0x82E5A010, + 0x2AE20025, + 0x0A236008, + 0xA543E4E0, + 0x2942C003, + 0x20C34002, + 0x80C320B2, + 0x0200200E, + 0x28C34002, + 0xA4D2E000, + 0xA4D2E000, + 0xA4D2E100, + 0x92E32070, + 0x22FA00C4, + 0xA0B51C00, + 0x96B2C020, + 0xA0C545C0, + 0xA4B00400, + 0xA4B386E0, + 0xA4B3C710, + 0xC202D8C2, + 0x2AD20006, + 0x22C20074, + 0x22BA004C, + 0x8CB2E0C0, + 0x2ABA004C, + 0x06709C04, + 0x22B75A42, + 0x82B2E010, + 0x2AB75A42, + 0x228A0034, + 0x96820040, + 0x00002010, + 0x82822010, + 0xC2021702, + 0x18000005, + 0xFC000000, + 0xFC000000, + 0x23720055, + 0xFC000000, + 0x0A35C018, + 0x0A34D806, + 0x22D5C015, + 0x8405A0D0, + 0x02008814, + 0x02001009, + 0x22D5C046, + 0x22E5C025, + 0x8405A0E0, + 0x020093BA, + 0x22D5C035, + 0x8405A0D0, + 0x0200980C, + 0x22D5C066, + 0x8535A0E0, + 0xC6E020C1, + 0x07F34005, + 0xA8D36130, + 0x8403A0D0, + 0x0200C3B0, + 0x02000004, + 0xA8D4E0D0, + 0x8403A0D0, + 0x0200C3AC, + 0x2282007C, + 0xCA80C01C, + 0x07F5680D, + 0xA0B51C00, + 0xC88080BE, + 0x06709C0A, + 0x22875A02, + 0x82822010, + 0x2A875A02, + 0x228758C2, + 0x22B75902, + 0x86822010, + 0x2A8758C2, + 0x8002E080, + 0x02004804, + 0x100806E1, + 0xFC000000, + 0xCB15201C, + 0x00001010, + 0xFC000000, + 0x23FB7FD0, + 0xBD400064, + 0x0A37C07E, + 0x0A35007B, + 0xFC000000, + 0x22977982, + 0xFC000000, + 0x0A224402, + 0x0A124476, + 0x9C87C080, + 0xBC9AB804, + 0xA4920630, + 0x82822010, + 0xA0820600, + 0x21E24002, + 0x22B24026, + 0xFC000000, + 0x233F804C, + 0x9E94C000, + 0xA4B24720, + 0x0652506F, + 0x22DF8055, + 0x93226070, + 0x20CAC002, + 0x94A04120, + 0xC4D000D0, + 0x23130005, + 0x880360A0, + 0x02006806, + 0x22DF802C, + 0x20E44003, + 0x94904090, + 0x020013F2, + 0x8934E098, + 0xA093C5C0, + 0x96A24020, + 0x82A2A0C0, + 0x82B2A030, + 0xFC000000, + 0x213F80A5, + 0x21DF80B4, + 0xFC000000, + 0x22A4C007, + 0xA0A29180, + 0xA0B2D180, + 0x84A2E0A0, + 0xA0A28C00, + 0x86A2A080, + 0x02008853, + 0x82B2E010, + 0xA0A39C00, + 0x8602A440, + 0x02008803, + 0xBCA00444, + 0xA4E29C00, + 0x0E7B584E, + 0xA0B2CC00, + 0x2AB4C024, + 0x22DF80C4, + 0xA0A39C00, + 0x96A28020, + 0xA4A00400, + 0xA4A486E0, + 0xA4A34710, + 0xA4A04340, + 0xC20298C2, + 0xA0A39B30, + 0x97428030, + 0xA4E01B30, + 0xA4F007C0, + 0x22A3007C, + 0xCAA0401E, + 0xA0B39C00, + 0xC8A000BE, + 0x96A28031, + 0x82A2A080, + 0xCAA5201E, + 0x23330025, + 0x0A35200F, + 0x22AAEE03, + 0x2AA44007, + 0x2B430005, + 0x20A50002, + 0xA0A29C00, + 0x96A28020, + 0xA4A00400, + 0xA4A486E0, + 0xA4A34710, + 0xC20298C2, + 0x22A30025, + 0x02002009, + 0x8732A010, + 0x2B330025, + 0x22A30074, + 0x2A030006, + 0x2A030025, + 0x22BF804C, + 0x88A2E0A8, + 0x2AAF804C, + 0x22AB3181, + 0x22BB3121, + 0x0F329007, + 0x2B12C035, + 0x2B1B3121, + 0x22AB3161, + 0x02002006, + 0x82A2A010, + 0x2AAB3161, + 0x22AB3141, + 0x82A2A010, + 0x2AAB3141, + 0x07F3E028, + 0x86A3A040, + 0x8EB3E403, + 0x229779A1, + 0x86926010, + 0x2A9779A1, + 0x229F804C, + 0xFC000000, + 0x0A326B8B, + 0xD00740A3, + 0xBD400064, + 0x229F8044, + 0x02002387, + 0x89F7E098, + 0x2BFB7FD0, + 0xBC900024, + 0xC2025702, + 0x18004547, + 0xFC000000, + 0xFC000000, + 0x0200137F, + 0x87452010, + 0xBCB93004, + 0xA4B34630, + 0xA0A39C00, + 0xFC000000, + 0x22D2C006, + 0x84036000, + 0x0200C804, + 0x020023AE, + 0x84A360A0, + 0x2AA2C006, + 0x229F8066, + 0x22AF8044, + 0xFC000000, + 0x22BA4024, + 0x86B2E010, + 0x020023EF, + 0xA0B2CC00, + 0x2ABA4024, + 0x82C26010, + 0xBCDB2C04, + 0xA4D30630, + 0x87932010, + 0xBD7B7F84, + 0xA5764600, + 0x02002024, + 0xBD406D44, + 0x21A5C000, + 0x0A368806, + 0xBCC00024, + 0xC2031702, + 0x18006B07, + 0xFC000000, + 0xFC000000, + 0x26976742, + 0xA0E2DC00, + 0x96C38020, + 0x809260C0, + 0xBCFB2404, + 0xA4F64620, + 0xBD1B7F84, + 0xA5164600, + 0xBCDABD04, + 0xA4D64610, + 0x42F24047, + 0xFC000000, + 0xFC000000, + 0x20C3C002, + 0xFC000000, + 0x0A3303FB, + 0xA5042100, + 0x20944000, + 0x20F34001, + 0x86926010, + 0x28944000, + 0xA4B33C00, + 0x28E3C001, + 0x8293E020, + 0x020023B4, + 0xA4F24A00, + 0x28F34001, + 0xBCCB2C04, + 0xFC000000, + 0x20D34000, + 0x20E30194, + 0x84E360E0, + 0x8B83A3F0, + 0x02006025, + 0x28D30194, + 0x29A5C000, + 0xBD6B3B04, + 0xA5664610, + 0xBCDB3E04, + 0x22CB9910, + 0x21558001, + 0xFC000000, + 0x87862010, + 0x20E54001, + 0x83A6A010, + 0x22F758C2, + 0x231758A1, + 0x0A33C40B, + 0x840460E0, + 0x02004809, + 0x86F3E010, + 0x2AF758C2, + 0x23175A82, + 0x83146010, + 0x2B175A82, + 0x23175902, + 0x800460F0, + 0x02004804, + 0x8EE3A801, + 0x28E340C5, + 0x82C32020, + 0x82E56020, + 0xA5538A00, + 0x06430804, + 0x100006B9, + 0xBCE07F84, + 0x2723F342, + 0x0A362BE7, + 0x2ACB9910, + 0x29558001, + 0x00001014, + 0x29A5C000, + 0x228B64E1, + 0xC2021381, + 0xBC800224, + 0x96820020, + 0x8E822030, + 0xC2021340, + 0xBC8B31A4, + 0xBC976E04, + 0xFC000000, + 0x20820001, + 0xFC000000, + 0x0A320012, + 0xBCC75D04, + 0x22A24015, + 0x96A28010, + 0x22B24004, + 0xFC000000, + 0x20A300A5, + 0x86B2E010, + 0x0200C006, + 0xFC000000, + 0x0008200A, + 0xFC000000, + 0xFC000000, + 0x22B2400C, + 0x2AB24004, + 0x0E1A0BF2, + 0x86822010, + 0x82926080, + 0x18008247, + 0xFC000000, + 0xFC000000, + 0x22A50035, + 0x22C50006, + 0x22E50025, + 0x0A329022, + 0x20B54001, + 0xA0D2D080, + 0x80D2E0D0, + 0xFC000000, + 0x06234803, + 0x82C32010, + 0x86D36040, + 0x06F29C03, + 0xA0A29E00, + 0x96A28030, + 0x06F39C03, + 0xA0B39E00, + 0x96B2C030, + 0x80A320A0, + 0x8402E0A0, + 0x0200D003, + 0x2AA50006, + 0x2AB50006, + 0x8604E050, + 0x02009003, + 0x28D54001, + 0x02000012, + 0xBCA88004, + 0xA4A4C650, + 0xFC000000, + 0xFC000000, + 0x20A28002, + 0xFC000000, + 0xFC000000, + 0x22AA8034, + 0x96A28040, + 0x82A2A010, + 0xC2029702, + 0x8334E010, + 0x83452080, + 0x83556020, + 0x0E5CDBD8, + 0xFC000000, + 0xFC000000, + 0xBD577C00, + 0x14000000, + 0xBD300004, + 0xBD493000, + 0x10000DB7, + 0xBCF09544, + 0xFC000000, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0xBCA01D14, + 0xC2029702, + 0xBCA02814, + 0xC2029702, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0x82826010, + 0xBCDB2C04, + 0xA4D20630, + 0x87922010, + 0xBD7B7F84, + 0xA5764600, + 0xFC000000, + 0xFC000000, + 0x21A5C000, + 0x100001D6, + 0xBD409AC4, + 0xFC000000, + 0xBCDB3E04, + 0xBC8B9914, + 0x22CB9910, + 0xFC000000, + 0x0A330006, + 0xFC000000, + 0x100006B9, + 0xBCE09D04, + 0x2723F342, + 0x28C20000, + 0x180097C7, + 0xFC000000, + 0xFC000000, + 0x2A075802, + 0x26876F41, + 0xC20213E1, + 0xBC800264, + 0x96820020, + 0x8E822030, + 0xC2021370, + 0xBC864A84, + 0x2A8B9741, + 0x2A0B98E0, + 0xFC000000, + 0xFC000000, + 0x228B9741, + 0xFC000000, + 0xFC000000, + 0x20A20001, + 0x82822020, + 0x0A329005, + 0x2A8B9741, + 0x0000200A, + 0xFC000000, + 0xFC000000, + 0x18009FC7, + 0xFC000000, + 0xFC000000, + 0x228779A1, + 0x22B77981, + 0x22A779E1, + 0x0A32C406, + 0x808220B0, + 0x840220A0, + 0x0200C802, + 0x808020A0, + 0x2A8779A1, + 0x10000284, + 0xFC000000, + 0xFC000000, + 0x26976F61, + 0xC20253C1, + 0xBC800274, + 0x96820020, + 0x8E822030, + 0xC2021350, + 0xBC800054, + 0xC2021110, + 0xC6801110, + 0xFC000000, + 0x06020006, + 0xFC000000, + 0xFC000000, + 0x1800AB46, + 0xFC000000, + 0xFC000000, + 0x26C76FE1, + 0xBCF70C04, + 0x0A331018, + 0x80D020C0, + 0x9EE34001, + 0xFC000000, + 0x0653A014, + 0x94A040E0, + 0xA4F38820, + 0xFC000000, + 0x88D360A8, + 0x2483C002, + 0xA1121460, + 0xA0B21560, + 0x80B2E090, + 0xA482D560, + 0x2C83C002, + 0x8402E110, + 0x0200A3F2, + 0x96838020, + 0x82822020, + 0x88C320A8, + 0xCA86001E, + 0x020023ED, + 0xC2029601, + 0x2EC76FE1, + 0xBC800024, + 0x1800A8C7, + 0xC2021110, + 0xFC000000, + 0x21424003, + 0x8A052803, + 0x0200404A, + 0xFC000000, + 0xFC000000, + 0x228B9920, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x1800B407, + 0xFC000000, + 0xFC000000, + 0x2A1B9920, + 0xA12507C0, + 0x8604A070, + 0x02004082, + 0x8604A040, + 0x02004819, + 0xA0A50960, + 0xA0855C00, + 0x2A8758A1, + 0xBC800034, + 0x0632A16D, + 0xA54207C0, + 0x2B475803, + 0x02002021, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x228B9920, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x1800BB07, + 0xFC000000, + 0xFC000000, + 0x2A1B9920, + 0xA4204270, + 0x07A50052, + 0xA1150960, + 0xA0C50730, + 0xA13503B0, + 0x06346809, + 0xA0F50AE0, + 0xA54024E0, + 0xBC8B6F84, + 0x06709803, + 0xBCAB9004, + 0xBCA75B84, + 0x02001016, + 0x2AA20025, + 0x100000A0, + 0xBD00C240, + 0xA55483F0, + 0x06709513, + 0x2A0B9920, + 0x28024002, + 0x82924080, + 0x8A924808, + 0xFC000000, + 0xFC000000, + 0xA0824830, + 0x2E8F56A0, + 0x20824002, + 0x8A022803, + 0x02004003, + 0xBC800024, + 0xC2021702, + 0x1800B2C7, + 0xFC000000, + 0xFC000000, + 0x0670AC06, + 0xA0F55C00, + 0xBCBB5004, + 0x02002013, + 0x22E75B42, + 0xBD300014, + 0xBD300004, + 0x07A50804, + 0x0200200E, + 0x22E2C306, + 0x22F2C386, + 0x26B76742, + 0x96D3C020, + 0x80B2E0D0, + 0x22D20015, + 0x42D2C047, + 0xFC000000, + 0xFC000000, + 0x20E34002, + 0xFC000000, + 0x0A3393FA, + 0xFC000000, + 0xA4F00580, + 0x07A51007, + 0x8F13E023, + 0x0E3C8005, + 0xA5100580, + 0x8F146013, + 0xA5100580, + 0x8F146023, + 0xA1251C00, + 0xA0D554E0, + 0xA0B54580, + 0xA0F549A0, + 0xA4D2C4A0, + 0xBCB00004, + 0xA4B3CB80, + 0xA4B307D0, + 0xA4B4C350, + 0xA4B4A000, + 0x10000528, + 0xBD00D140, + 0xFC000000, + 0x22820035, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00001008, + 0xFC000000, + 0x228B97E1, + 0xFC000000, + 0xFC000000, + 0x20A20002, + 0x8A02A803, + 0x02004808, + 0x29420003, + 0x82822080, + 0x8A822029, + 0x2A8B97E1, + 0x020023B4, + 0xBC802114, + 0xC2021702, + 0xBCAB5004, + 0xFC000000, + 0xFC000000, + 0x2A0B9920, + 0x22828155, + 0x020023B8, + 0x82822010, + 0x2A828155, + 0xA0854800, + 0x860220C0, + 0x0200400E, + 0x86022060, + 0x0200407D, + 0x860220F0, + 0x0200404C, + 0x86022090, + 0x02004063, + 0x86022000, + 0x02004074, + 0x860220E0, + 0x020040FA, + 0x860220D0, + 0x0200408C, + 0x0200039A, + 0xA0A50960, + 0xA0B50730, + 0xBC888004, + 0xA4828850, + 0xA482C620, + 0xFC000000, + 0xFC000000, + 0x20820002, + 0xFC000000, + 0xFC000000, + 0x23520005, + 0x22A20015, + 0x23420025, + 0x2A020025, + 0x22A20074, + 0x22BA004C, + 0x88A2E0A8, + 0x2AAA004C, + 0x20A54003, + 0x0A35402D, + 0x07F2C008, + 0xA0C28AE0, + 0x06F2E013, + 0x96C300F0, + 0xA4C2DE00, + 0x02002014, + 0xBCB00034, + 0xD002C0C6, + 0xA0B2DC00, + 0xBCDB3E04, + 0x22CB9910, + 0x8EB2E801, + 0x28B340C5, + 0x82C32020, + 0xFC000000, + 0x06430804, + 0x100006B9, + 0xBCE0E5C4, + 0x2723F342, + 0x02001006, + 0x2ACB9910, + 0x96C300E0, + 0xA4C2DC00, + 0xBCB00074, + 0xD002C0CC, + 0x22BB3121, + 0x22CB3181, + 0x22EAEE03, + 0x2AE54007, + 0x0EC51807, + 0x2B52C035, + 0x2B5B3121, + 0x22BB3161, + 0x02002006, + 0x82B2E010, + 0x2ABB3161, + 0x22BB3141, + 0x82B2E010, + 0x2ABB3141, + 0xA0A29B30, + 0x97528030, + 0x020023D6, + 0x87452010, + 0x20A54003, + 0x02001359, + 0x2A020006, + 0xA0850960, + 0xBCAB3B04, + 0xA4A20610, + 0xBCBABD04, + 0xA4B20610, + 0x20828001, + 0xFC000000, + 0x20B2C001, + 0xBCDB3E04, + 0x22CB9910, + 0x0EB2000E, + 0x20E20001, + 0x8EE3A801, + 0x28E340C5, + 0x82C32020, + 0x82E22020, + 0xA4838A00, + 0x06430804, + 0x100006B9, + 0xBCE0F1C4, + 0x2723F342, + 0x020023F5, + 0x2ACB9910, + 0x28828001, + 0x0200033F, + 0xBC800054, + 0xC2021130, + 0xC6801130, + 0xFC000000, + 0x06020006, + 0xFC000000, + 0xFC000000, + 0x1800F546, + 0xFC000000, + 0xFC000000, + 0xA0854B70, + 0xBCC75004, + 0xA4C20840, + 0x22AAEE03, + 0x2CA30003, + 0x2EA30047, + 0x0200232E, + 0xBC800024, + 0xC2021130, + 0x0200232B, + 0x228B9561, + 0xC2021502, + 0xC6801480, + 0x2A8AAE00, + 0xC6801490, + 0x2A8AAE10, + 0xC68014A0, + 0x2A8AAE20, + 0xC68014B0, + 0x2A8AAE30, + 0xC68014C0, + 0x2A8AAE40, + 0xC68014D0, + 0x2A8AAE50, + 0xC68014E0, + 0x2A8AAE60, + 0xC68014F0, + 0x2A8AAE70, + 0x2A0AAC02, + 0x2A1AAC42, + 0x2A2AAC82, + 0x2A3AACC2, + 0x2A4AAD02, + 0x2A5AAD42, + 0x02002312, + 0x2A6AAD82, + 0x2A7AADC2, + 0x07F5580A, + 0xA0A55F00, + 0x228B3161, + 0x848220A0, + 0x0200800E, + 0x2A8B3161, + 0x228B3141, + 0x02002308, + 0x808220A0, + 0x2A8B3141, + 0x228B3141, + 0x848220A0, + 0x02008006, + 0x2A8B3141, + 0x228B3161, + 0x02002300, + 0x808220A0, + 0x2A8B3161, + 0xBC800024, + 0xC2021702, + 0x1800FE87, + 0xFC000000, + 0xFC000000, + 0x22A75803, + 0x228759C2, + 0x0A32943C, + 0x22A75981, + 0x22B759A1, + 0x808220A0, + 0x840220B0, + 0x0200C802, + 0x808020B0, + 0x2A8759C2, + 0x2A0B98E0, + 0xA4200270, + 0x228B99F0, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x18010747, + 0xFC000000, + 0xFC000000, + 0x2A1B99F0, + 0xBC800054, + 0xC2021180, + 0xC6801180, + 0xFC000000, + 0x06020006, + 0xFC000000, + 0xFC000000, + 0x18010CC6, + 0xFC000000, + 0xFC000000, + 0x22B75941, + 0x22A75902, + 0x22875961, + 0x06F2C803, + 0xBCA00004, + 0x2AA75902, + 0x0A329011, + 0x22B759C2, + 0x8402E080, + 0x02008010, + 0x8482E080, + 0x2A8759C2, + 0x8682A010, + 0x2A875902, + 0x228758C2, + 0x82822010, + 0x2A8758C2, + 0xBC800024, + 0xC2021180, + 0x2A0B99F0, + 0x100002EB, + 0xBD200034, + 0x23475803, + 0x2A075802, + 0x2A0B98E0, + 0xBC800024, + 0xC2021180, + 0x2A0B99F0, + 0x10000284, + 0xFC000000, + 0xFC000000, + 0xBCBB6644, + 0x228758A1, + 0x26A76742, + 0x96820020, + 0x8082A080, + 0x42B20047, + 0xFC000000, + 0xFC000000, + 0x20A2C002, + 0xFC000000, + 0xFC000000, + 0x0A3283FA, + 0x2AA75B42, + 0xBC875B84, + 0x428280E7, + 0xFC000000, + 0xFC000000, + 0x020022A6, + 0xFC000000, + 0xFC000000, + 0xA12545E0, + 0xA0B55520, + 0xA18545C0, + 0xBD64F804, + 0xBC8C5004, + 0xA5660450, + 0x8165A082, + 0xA5660560, + 0xBD300014, + 0x020020D3, + 0xBCE11C80, + 0xBD0144C0, + 0x22CB9A10, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A330007, + 0xFC000000, + 0xBCC00024, + 0xC2031702, + 0x18011C87, + 0xFC000000, + 0xFC000000, + 0x2A1B9A10, + 0x06409C0B, + 0xBCC00054, + 0xC2031180, + 0xC6C01180, + 0xFC000000, + 0x06030009, + 0xFC000000, + 0xFC000000, + 0x18012306, + 0xFC000000, + 0xFC000000, + 0xC2031180, + 0x020013F9, + 0xC6C01180, + 0x8604A000, + 0x02005006, + 0x9742C010, + 0x8604A010, + 0x02005042, + 0xFC000000, + 0x0200007B, + 0x02001187, + 0xBD612540, + 0x26CD8194, + 0x27977041, + 0x06032C05, + 0xBD700304, + 0xBD800044, + 0xBD700204, + 0xBD800004, + 0x0705500B, + 0xA1555460, + 0xBCD76F04, + 0x26CD8086, + 0x80C32140, + 0x42DB0027, + 0xFC000000, + 0xFC000000, + 0x24C34001, + 0xA1531080, + 0xA5531080, + 0xA4B042F0, + 0x2CB74001, + 0x2CB28001, + 0x254E8001, + 0x24A68003, + 0x26820035, + 0xA0822000, + 0x84052150, + 0x0200401E, + 0xBCBAA004, + 0x80D2E180, + 0xA8B56170, + 0x80B2A0B0, + 0x80B2E180, + 0x82C56010, + 0x89532088, + 0x42D2C047, + 0xFC000000, + 0xFC000000, + 0x20C34002, + 0xFC000000, + 0x07830005, + 0x87966010, + 0x020023F0, + 0xBCB00034, + 0xD002C0C6, + 0xBCDB3E04, + 0x22BB9910, + 0x8EC32801, + 0x28C340B5, + 0x82C2E020, + 0xFC000000, + 0x06430804, + 0x100006B9, + 0xBCE132C4, + 0x2723F342, + 0x020013E3, + 0x2ACB9910, + 0x2E068075, + 0x2C0E8001, + 0x0200203E, + 0x2E068065, + 0x2F977041, + 0x02001148, + 0xBD613500, + 0xAAD520A0, + 0x26CD8126, + 0x80C320D0, + 0x832320C0, + 0x25174001, + 0x24EE8001, + 0x06F4502C, + 0x24C20003, + 0xBCF76784, + 0x26868075, + 0x2CC3C003, + 0x5AFC8080, + 0xBCDB99E4, + 0xBCCFFFFC, + 0x42D30017, + 0xFC000000, + 0xFC000000, + 0x840220E0, + 0x02004020, + 0xA0F444A0, + 0xA4F45510, + 0x2EE68075, + 0xA0839080, + 0xA4839080, + 0xBCC76BA4, + 0xBCD4F804, + 0xBCEC5004, + 0xA4D3C450, + 0x80D360E2, + 0xA4D3C560, + 0xFC000000, + 0x2C830001, + 0x268B4046, + 0x808220F6, + 0x5ACA0020, + 0xBC8B99E4, + 0xBCCFFFFC, + 0x42830017, + 0xFC000000, + 0xFC000000, + 0xA0E3D510, + 0x26834006, + 0xBCCB3D44, + 0x96D38130, + 0x82D36013, + 0x8ED36103, + 0x28D30002, + 0x52C20047, + 0xFC000000, + 0xFC000000, + 0xBC800024, + 0x8C85E080, + 0xA4B604A0, + 0xA4B042F0, + 0x2CB74001, + 0x2CB28001, + 0x2E868046, + 0xBC800024, + 0xC2021180, + 0x2A0B9A10, + 0x26868054, + 0xA4800270, + 0x2E868054, + 0x10000309, + 0xFC000000, + 0xFC000000, + 0x22C3C066, + 0xA0E309A0, + 0xA1130600, + 0x22D3C045, + 0xBCB00004, + 0xA4B38B80, + 0xA4B447D0, + 0xA4B36000, + 0xA12305E0, + 0xA0D31500, + 0x2313C006, + 0x22E3C026, + 0xA4D484A0, + 0x22C3C055, + 0x2323C026, + 0x52C480E7, + 0xFC000000, + 0xFC000000, + 0xBD34D804, + 0x27476961, + 0x82C52010, + 0x8B232070, + 0x26C76941, + 0x8404A0C0, + 0x02005807, + 0xA5350640, + 0xBCC00024, + 0xC2031702, + 0x18014A47, + 0xFC000000, + 0xFC000000, + 0x2F276961, + 0xA4D044F0, + 0x2F14C026, + 0x2EB4C046, + 0x2EE4C066, + 0x2ED4C005, + 0xBCB01314, + 0xC202D702, + 0x00001010, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x228B9A10, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x18015087, + 0xFC000000, + 0xFC000000, + 0x2A1B9A10, + 0x06409C0B, + 0xBC800054, + 0xC2021180, + 0xC6801180, + 0xFC000000, + 0x06020009, + 0xFC000000, + 0xFC000000, + 0x18015706, + 0xFC000000, + 0xFC000000, + 0xC2021180, + 0x020013F9, + 0xC6801180, + 0xBDD4FE04, + 0x80F020B0, + 0xA4F604A0, + 0xD6FF6850, + 0xBDAC6004, + 0xBDA76408, + 0xBC89F804, + 0xC6A00742, + 0xA0C29000, + 0x06828817, + 0xA4830830, + 0xA5A30840, + 0xA5A30910, + 0xBCAE9604, + 0xA5D30810, + 0x26D68054, + 0xA4A30810, + 0x06734089, + 0xA4D04270, + 0x2ED68054, + 0x27768046, + 0x26C68075, + 0xBCC00024, + 0xC2031180, + 0x2A0B9A10, + 0x0415E80E, + 0x26C68065, + 0x24CE8001, + 0x0834C80E, + 0x00002010, + 0xA4D00270, + 0x2ED68054, + 0x26AF56D0, + 0xA5A28840, + 0xA5A28910, + 0xA5D28810, + 0xFC000000, + 0x26C68054, + 0x8112A000, + 0x067323FA, + 0x82A2A010, + 0x8AA2A108, + 0x2EAF56D0, + 0x24C74001, + 0xA14304A0, + 0xBCD4F804, + 0xBCAC5004, + 0xA4D50450, + 0x80D360A2, + 0xA4D50560, + 0xA0A31400, + 0xA4844830, + 0xAAC2A140, + 0x26AB4126, + 0x80A2A0C0, + 0x8392A0C0, + 0x25474001, + 0x24AE8001, + 0x06F5102C, + 0x24C20003, + 0xBD776784, + 0x27B68075, + 0x2CC5C003, + 0x5B7E4080, + 0xBCCB99E4, + 0xBCDFFFFC, + 0x42C34017, + 0xFC000000, + 0xFC000000, + 0x8406E0A0, + 0x02004020, + 0xA17504A0, + 0xA5751510, + 0x2EA68075, + 0xA0C29080, + 0xA4C29080, + 0xBCA76BA4, + 0xBD44F804, + 0xBCDC5004, + 0xA545C450, + 0x814520D2, + 0xA545C560, + 0xFC000000, + 0x2CC28001, + 0x26CD0046, + 0x80C32176, + 0x5AAB0020, + 0xBCAB99E4, + 0xBCCFFFFC, + 0x42A30017, + 0xFC000000, + 0xFC000000, + 0xA0C5D510, + 0x26A50006, + 0xBCDB3D44, + 0x96C30130, + 0x82C32013, + 0x8EC32103, + 0x28C34002, + 0x52D28047, + 0xFC000000, + 0xFC000000, + 0xAAC2E140, + 0x26AD8126, + 0x80C2A0C0, + 0xBCAE9604, + 0xA4A44810, + 0xBD176604, + 0x431B0147, + 0xFC000000, + 0xFC000000, + 0x27744046, + 0x0A34E804, + 0x24C44003, + 0x27344086, + 0x0615C023, + 0x2CC68003, + 0xA57042F0, + 0x2F768046, + 0x26C44066, + 0x2F320026, + 0x2EC20006, + 0x2CF74001, + 0x2CF28001, + 0xBCD76B84, + 0xBCF76BA4, + 0x9712C010, + 0x26CD8086, + 0x80C32110, + 0x42DB0020, + 0x26CD8046, + 0x80C32110, + 0x42FB0027, + 0xFC000000, + 0xFC000000, + 0x24D34001, + 0xA0C35080, + 0xA4C35080, + 0x2EC68065, + 0x24F3C001, + 0xA0D3D080, + 0xA4D3D080, + 0xA0C3D080, + 0xA4C3D080, + 0x2ED68075, + 0x2CCE8001, + 0xBCC00024, + 0xC2031180, + 0x2A0B9A10, + 0x0000000E, + 0xBCC00024, + 0xC2031180, + 0x2A0B9A10, + 0x00000010, + 0xBC800024, + 0xC2021180, + 0x2A0B9A10, + 0xBC800024, + 0xC2021702, + 0x18014FC7, + 0xFC000000, + 0xFC000000, + 0x26AF4FC1, + 0xBC873C04, + 0x0A32A814, + 0x86D2A020, + 0x80A36080, + 0x268F4F81, + 0x26AF4FA1, + 0x82A2A100, + 0x840220A0, + 0x0000900B, + 0xBCE00004, + 0xBCB73C04, + 0x268F4F42, + 0x42BA0207, + 0xFC000000, + 0xFC000000, + 0x82822200, + 0xBCD001E4, + 0x2E8F4F42, + 0x2EAF4FA1, + 0x80A360B0, + 0xFC000000, + 0x26824025, + 0x82822010, + 0x2E824025, + 0x0000200C, + 0x24E28001, + 0x2EDF4FC1, + 0x10000689, + 0xBCD18740, + 0xBCE18880, + 0x26E3C046, + 0x26C3C026, + 0x02002049, + 0xBD018680, + 0xA0D38B80, + 0x00002016, + 0xFC000000, + 0xFC000000, + 0x228B9A10, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x18018947, + 0xFC000000, + 0xFC000000, + 0x2A1B9A10, + 0x06409C0B, + 0xBC800054, + 0xC2021180, + 0xC6801180, + 0xFC000000, + 0x06020009, + 0xFC000000, + 0xFC000000, + 0x18018FC6, + 0xFC000000, + 0xFC000000, + 0xC2021180, + 0x020013F9, + 0xC6801180, + 0x100005FE, + 0xBCC19180, + 0xBCB19080, + 0xBC800024, + 0xC2021180, + 0x2A0B9A10, + 0x00000009, + 0xBCB3F700, + 0xFC000000, + 0x26CF4F02, + 0xA4C3A040, + 0x2E02C006, + 0x2E92C046, + 0x2E92C026, + 0x2E92C066, + 0x5ABB0100, + 0xBC8B99E4, + 0xBCAFFFFC, + 0x42828017, + 0xFC000000, + 0xFC000000, + 0x26A24006, + 0xA4C2A040, + 0x2EE2C005, + 0x5ABB0040, + 0xBC8B99E4, + 0xBCBFFFFC, + 0x4282C017, + 0xFC000000, + 0xFC000000, + 0x800020A6, + 0x02005803, + 0xA4A3A000, + 0xA4A3A100, + 0x2EA24006, + 0xBC800024, + 0xC2021180, + 0x2A0B9A10, + 0x00002009, + 0xFC000000, + 0xFC000000, + 0x07831004, + 0x26F77041, + 0x86F3E010, + 0x2EF77041, + 0x82F62250, + 0xCAD3C014, + 0x07830004, + 0x00002010, + 0xBCD00034, + 0xD00340C6, + 0x0753980A, + 0x22D75A02, + 0x82D36010, + 0x2AD75A02, + 0x22D758C2, + 0x86D36010, + 0x2AD758C2, + 0x22E75902, + 0x8003A0D0, + 0x0200480C, + 0xBCDB3E04, + 0x22EB9910, + 0x8EC32801, + 0x28C340E5, + 0x82C3A020, + 0xFC000000, + 0x06430804, + 0x100006B9, + 0xBCE1A184, + 0x2723F342, + 0x2ACB9910, + 0x00000010, + 0xFC000000, + 0x27120005, + 0xBCF3F700, + 0x26CF4F02, + 0x0834500E, + 0xFC000000, + 0xA4C46040, + 0xFC000000, + 0xFC000000, + 0x42FB0107, + 0xFC000000, + 0xFC000000, + 0x26C3C005, + 0xFC000000, + 0x0A331803, + 0x2EC20005, + 0x2E020015, + 0x02001004, + 0xBCE1A6C0, + 0x0000100D, + 0xFC000000, + 0x272F4FC1, + 0xBD373C04, + 0xBCC00404, + 0x8134A130, + 0x8324A020, + 0x8404A0C0, + 0x02009807, + 0x2D14C001, + 0x26C20025, + 0x86C32010, + 0x0000200E, + 0x2F2F4FC1, + 0x2EC20025, + 0x26CF4FA1, + 0x86C32100, + 0x2ECF4FA1, + 0xBD173E04, + 0x26CF4F42, + 0x87332200, + 0x5B1CC200, + 0xBCCB99E4, + 0xBD1FFFFC, + 0x42C44017, + 0xFC000000, + 0xFC000000, + 0x020023EF, + 0xBD200204, + 0x2F3F4F42, + 0xBCF00014, + 0xC203D170, + 0xC6F01170, + 0xFC000000, + 0x0603DBFC, + 0x2733F382, + 0xBD100024, + 0x82F36000, + 0x8524A130, + 0x83B4A020, + 0x8406E0C0, + 0x0200E005, + 0x81C4E0C0, + 0x83232000, + 0x82C6E000, + 0x27C3F302, + 0x2FC3F3C2, + 0xBDCFFFFC, + 0xBDBB9984, + 0x58F4C0C0, + 0x2806C000, + 0x43B70010, + 0x2A0B98E0, + 0xFC000000, + 0xFC000000, + 0x2136C000, + 0xFC000000, + 0x0A34C3FE, + 0x8524A0C0, + 0x27B3F3C2, + 0x2FB3F382, + 0x0A34A006, + 0x80F3E0C0, + 0x82C4A000, + 0x020023EE, + 0x8336E000, + 0x81C6E0C0, + 0x0000200E, + 0xC2045170, + 0xFC000000, + 0x07F54006, + 0xA0C55E00, + 0xA4C3CAF0, + 0x14000000, + 0xBC800034, + 0xD00200C6, + 0xA0855C00, + 0xBCDB3E04, + 0x22BB9910, + 0x8E822801, + 0x288340B5, + 0x82C2E020, + 0xFC000000, + 0x06430804, + 0x100006B9, + 0xBCE1BC84, + 0x2723F342, + 0x14000000, + 0x2ACB9910, + 0xFC000000, + 0x26C3F642, + 0x8A032FF2, + 0x02005815, + 0x26C3F442, + 0xFC000000, + 0x06030002, + 0x07030BFA, + 0x2E03F442, + 0x0672D003, + 0xFC000000, + 0x22B287FC, + 0xA0B2CA00, + 0x96B2C0F0, + 0xBD600034, + 0xD00580B2, + 0x07030008, + 0xA0C31E10, + 0x23CB9960, + 0x236B2342, + 0xA9C321C0, + 0x00002010, + 0x97C70080, + 0x81672160, + 0xBCC00004, + 0x00001010, + 0xBD600004, + 0xA0820A00, + 0x96A200F0, + 0xA4A25E00, + 0x00002010, + 0xBC800034, + 0xD00200A6, + 0x22CB9770, + 0xFC000000, + 0x0A330006, + 0xBCC00024, + 0xC2031702, + 0x1801C547, + 0xFC000000, + 0xFC000000, + 0xBCC00014, + 0x2ACB9770, + 0xBCC00054, + 0xC2031140, + 0xC6C01140, + 0xFC000000, + 0x06030006, + 0xFC000000, + 0xFC000000, + 0x1801CA46, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00000010, + 0x2A0B9770, + 0xFC000000, + 0xFC000000, + 0x00002010, + 0xBDC00024, + 0xC2071140, + 0xBDF00074, + 0x8607A400, + 0x0200E810, + 0x8DF7E1E2, + 0x8DD761D2, + 0x0A17D005, + 0x87E7A400, + 0x43DCC400, + 0x02001006, + 0x87F7E010, + 0x83F7E070, + 0x43DCC407, + 0xFC000000, + 0xFC000000, + 0x8607A400, + 0x0200E3F6, + 0x83D76400, + 0x8334E400, + 0x43DCC407, + 0xFC000000, + 0xFC000000, + 0x813021F6, + 0x81D021D6, + 0x8604E800, + 0x0200C807, + 0x8734E800, + 0x53DD8800, + 0x8604E800, + 0x0200E3FD, + 0x83D76800, + 0x8365A800, + 0xFC000000, + 0x51DD8137, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00001010, + 0xFC000000, + 0x2120C003, + 0x8A04A803, + 0x0200400F, + 0xFC000000, + 0x02002022, + 0xFC000000, + 0xFC000000, + 0x2800C002, + 0x8230E080, + 0x8A30E029, + 0xFC000000, + 0xFC000000, + 0x2080C002, + 0x8A022803, + 0x02005003, + 0xBC800024, + 0xC2021702, + 0x1801D5C7, + 0xFC000000, + 0xFC000000, + 0xBCB00054, + 0xC202D190, + 0xC6B01190, + 0xFC000000, + 0x0602C006, + 0xFC000000, + 0xFC000000, + 0x1801DD46, + 0xFC000000, + 0xFC000000, + 0xC6B01F42, + 0x82B02030, + 0x8EB2E400, + 0x8F12E800, + 0x22B383E6, + 0x00002010, + 0xC2045F42, + 0xC202DE02, + 0xBCEB5004, + 0xBC864004, + 0xBC9B7004, + 0xBCD00004, + 0xBCFB9604, + 0x26B76742, + 0x82C22020, + 0xA084DC00, + 0x96820020, + 0x8082E080, + 0x42F20047, + 0xFC000000, + 0xFC000000, + 0x22BB9602, + 0x2B238007, + 0x0A32E3FB, + 0xA4D002B0, + 0x2A0381F4, + 0x4292C807, + 0xFC000000, + 0xFC000000, + 0x22824035, + 0x860227E0, + 0x0200E804, + 0x22F24006, + 0x22B2405C, + 0xBC8007E4, + 0x40C3C087, + 0xFC000000, + 0xFC000000, + 0x0A32D004, + 0x2A0381FC, + 0x2AB381F4, + 0xA4D042B0, + 0x86832020, + 0xBCC000E4, + 0x22B38086, + 0x82B2E010, + 0x2AB38086, + 0x22F380A6, + 0x22B24025, + 0x80B3E0B0, + 0x2AB380A6, + 0x07948002, + 0x82C32040, + 0xBCB08004, + 0xFC000000, + 0x20F200C5, + 0x8403E0B0, + 0x0200401B, + 0xBCB86DD4, + 0x8403E0B0, + 0x02004009, + 0xBCB81004, + 0x8403E0B0, + 0x02004004, + 0x10000B72, + 0x22938135, + 0x82926010, + 0x020013F2, + 0x82C32040, + 0xA4D04290, + 0x82B32020, + 0x82C2E000, + 0x2AC38184, + 0x82B2E040, + 0xBCF00284, + 0x2AF3818C, + 0x20B200B6, + 0xA112D080, + 0xA0B2E100, + 0x80C320F0, + 0x80B2E0F0, + 0x02002015, + 0x2AC38204, + 0x2AB38195, + 0x82C32020, + 0x82B32000, + 0x2AB38184, + 0x20C200C6, + 0xA0F30980, + 0x9713C020, + 0xA0F32000, + 0x80C2E110, + 0x2B13818C, + 0x8312E040, + 0x2AF38195, + 0x2AC38204, + 0x20F20115, + 0x82B2E080, + 0x2A0381B5, + 0x2AF381A5, + 0x20B200B6, + 0xA112D100, + 0x86046060, + 0x0200600C, + 0x2B1381CC, + 0x82B32040, + 0x86046110, + 0x02004004, + 0x10000B72, + 0x22938135, + 0x82926010, + 0xBCF00084, + 0x0200200C, + 0x20B200B5, + 0x2AB38215, + 0x20F200B6, + 0x82B320C0, + 0x2AF38226, + 0xA4D04280, + 0x20F200B6, + 0xA0B3D100, + 0x2AB38244, + 0xA0B3C9C0, + 0x96F2C020, + 0x80B320F0, + 0x86B2E020, + 0x8602E7E0, + 0x0200E8B4, + 0x2AF3820C, + 0x2AB381E4, + 0x10000B72, + 0x22938135, + 0x82926010, + 0x8602E010, + 0x0200500C, + 0xA4D00840, + 0x8602E000, + 0x02004006, + 0x8602E020, + 0x0200400A, + 0x0200200B, + 0xA4D04270, + 0xD9048117, + 0x02002008, + 0xA4D04240, + 0xD9048116, + 0x02002005, + 0xA4D04250, + 0xD9048114, + 0xA4D04260, + 0xD9048115, + 0xFC000000, + 0x2AD38166, + 0x18020446, + 0xFC000000, + 0xFC000000, + 0xC6B01E02, + 0x00000010, + 0x020023E7, + 0x23338184, + 0xBD020580, + 0x00001014, + 0x8314E0A0, + 0xBD900004, + 0x23138184, + 0x832460C0, + 0x235381CC, + 0x23838215, + 0x21220126, + 0x83746100, + 0x2924C196, + 0xBD100044, + 0x21220176, + 0x2924C116, + 0xBD700084, + 0xA5856100, + 0xA124E000, + 0x831020C0, + 0x020023D3, + 0xBD020A80, + 0x2984C176, + 0x00001014, + 0xFC000000, + 0xBD264804, + 0x23138184, + 0x83546080, + 0xBD700004, + 0x23438215, + 0x21520156, + 0x838460C0, + 0x29548176, + 0xBD700044, + 0x21520186, + 0x83846100, + 0x29548176, + 0xBD700084, + 0x21520186, + 0x83846140, + 0x29548176, + 0xBD7000C4, + 0x21520186, + 0x83846180, + 0x29548176, + 0xBD700104, + 0x21520186, + 0x838461C0, + 0x29548176, + 0xBD700144, + 0x21520186, + 0x83846200, + 0x29548176, + 0xBD700184, + 0x21520186, + 0x83146240, + 0x29548176, + 0xBD5001C4, + 0x21120116, + 0x29148156, + 0xBD700204, + 0x83102280, + 0xBD500064, + 0x06836004, + 0x29448176, + 0xBD400244, + 0xBD500114, + 0x29548146, + 0x020023A3, + 0xBD021680, + 0xA124A000, + 0x00001013, + 0xFC000000, + 0x23138204, + 0x06836004, + 0x81222110, + 0x82B46100, + 0x82B46060, + 0x0A33D004, + 0x280200B5, + 0x02001003, + 0xBCB00014, + 0xBCB00024, + 0x02002394, + 0xBD021A40, + 0x2313820C, + 0x00001013, + 0xFC000000, + 0x22B38184, + 0x8312E0A0, + 0xFC000000, + 0xFC000000, + 0x20C20115, + 0x28020115, + 0x8312E020, + 0xFC000000, + 0xFC000000, + 0x21220115, + 0x28020115, + 0x8312E040, + 0xB8C00120, + 0xFC000000, + 0x21220115, + 0x28020115, + 0x82B2E060, + 0xB8C00120, + 0xFC000000, + 0x211200B5, + 0x280200B5, + 0xB8C00110, + 0x00002010, + 0xB8C00004, + 0x2AC381D5, + 0x23138184, + 0x83246020, + 0x22B381D5, + 0xFC000000, + 0x21320125, + 0x83246040, + 0xB8B4C000, + 0xFC000000, + 0x21320125, + 0x83246060, + 0xB8B4C000, + 0xFC000000, + 0x21220125, + 0x831460A0, + 0xB8B48000, + 0x00002010, + 0xB8B00004, + 0x28B20115, + 0x232381FC, + 0x238381F4, + 0x97148020, + 0x83346100, + 0x97148010, + 0x83146580, + 0x87862010, + 0x0A362805, + 0x21324136, + 0x8324A010, + 0xA4D002B0, + 0x2AD38166, + 0x21124115, + 0x2B3382C6, + 0x2B1382E5, + 0x00002010, + 0x2B2381FC, + 0x2B8381F4, + 0x22B38184, + 0x22F38195, + 0x80B2E0F0, + 0x8722E020, + 0x23124035, + 0x84046120, + 0x0200E804, + 0x22B381E4, + 0x2B2383A5, + 0x8314A000, + 0x22F24045, + 0x06836804, + 0x2B1382F5, + 0x2AF38265, + 0x0A33C80A, + 0x0A33C990, + 0xA4D042A0, + 0x84F4A0B0, + 0x06835006, + 0x2AF38265, + 0x2313820C, + 0x0200218A, + 0x80F3E110, + 0x2AF38265, + 0x84C4A0B0, + 0x231382F5, + 0xBD200004, + 0x851460B0, + 0x0200A009, + 0x2B2381EC, + 0x2B1382E5, + 0x02006009, + 0x23124006, + 0x2AC382B5, + 0x0200200B, + 0x80B460B0, + 0x2AB382C6, + 0x10000B74, + 0xFC000000, + 0xFC000000, + 0x06B34805, + 0xFC000000, + 0x10000896, + 0xBD023540, + 0xFC000000, + 0x86B3E000, + 0x2AB38275, + 0x22B381EC, + 0x2AD38166, + 0x0A32E004, + 0x22F382B5, + 0xFC000000, + 0x0A33C0A4, + 0x10000715, + 0xBD023800, + 0xFC000000, + 0xBCB00004, + 0x100006F5, + 0xBD023900, + 0xA4B04270, + 0x1000072B, + 0xBD0239C0, + 0xFC000000, + 0x0A359009, + 0x2AC38386, + 0x22B38275, + 0x8403E0B0, + 0x0200A808, + 0x2B638306, + 0xA4D00800, + 0x02001006, + 0x8343E000, + 0x10000B6D, + 0xFC000000, + 0xFC000000, + 0x8342E000, + 0x2B438285, + 0xFC000000, + 0xFC000000, + 0x22B38184, + 0x233381E4, + 0x22C3818C, + 0x2323820C, + 0x80C32120, + 0x81132140, + 0x06936005, + 0x80C4E140, + 0x2AC38325, + 0x02001004, + 0x82C2E020, + 0x82C2E040, + 0x87146280, + 0x236381EC, + 0x22B38275, + 0x0A359808, + 0x291200C5, + 0x8403E140, + 0x0200C003, + 0x02001009, + 0xA4D04230, + 0x02001007, + 0xA4D04200, + 0x8403E140, + 0x0200C003, + 0x02001003, + 0xA4D04220, + 0xA4D04210, + 0x80C4A140, + 0x06936007, + 0x22B38184, + 0x2AC38215, + 0x82B2E040, + 0x02002004, + 0x22C381A5, + 0x28C200B5, + 0x82B2E040, + 0x22C38204, + 0x83132040, + 0x23238226, + 0xBCB00FF4, + 0x29220116, + 0x06034007, + 0x06134008, + 0x06234009, + 0xFC000000, + 0xFC000000, + 0x02001008, + 0x8B12EFF0, + 0x02001006, + 0x8B12E098, + 0x02001004, + 0x8B12E898, + 0x02001002, + 0x8B12E808, + 0x82C320D0, + 0x22B38244, + 0x02002003, + 0x88B2E110, + 0x28B200C4, + 0xBCC65004, + 0x0693401A, + 0x1000076B, + 0xBD024E00, + 0xFC000000, + 0x23338184, + 0x8324E0A0, + 0x2313818C, + 0xBCB00004, + 0x28020125, + 0x81222130, + 0x10000813, + 0xBD425040, + 0xBCB00034, + 0x28B20115, + 0xBD364804, + 0xBCB00004, + 0x10000818, + 0xBD4251C0, + 0xBCB00004, + 0x1000085C, + 0xBD325280, + 0xA0B22000, + 0x2AB38255, + 0x0200200A, + 0x231381E4, + 0x87246000, + 0x1000076B, + 0xBD025440, + 0xFC000000, + 0xBCB00004, + 0x1000082C, + 0xBD3251C0, + 0xBCB00004, + 0x10000983, + 0xBD425600, + 0xFC000000, + 0x22B38204, + 0x22938255, + 0x82B2E100, + 0x23138306, + 0x289200B5, + 0xA0922000, + 0xFC000000, + 0x80C260B0, + 0x8692E020, + 0x80946090, + 0x5AC24020, + 0xFC000000, + 0xFC000000, + 0x22B38285, + 0x8493E0B0, + 0x2A9382B5, + 0x8295A010, + 0x2A9381EC, + 0x2AD38166, + 0x229381A5, + 0x82926010, + 0x2A9381A5, + 0x22938226, + 0x809260B0, + 0x2A938226, + 0xBC9FFFFC, + 0x82822780, + 0xFC000000, + 0x28020000, + 0x42824017, + 0xFC000000, + 0xFC000000, + 0x228380C6, + 0x82822010, + 0x2A8380C6, + 0x229380E6, + 0x22838325, + 0x02002093, + 0x80826080, + 0x2A8380E6, + 0x10000B7B, + 0xFC000000, + 0xFC000000, + 0x83122020, + 0x23338306, + 0x5114C127, + 0xFC000000, + 0xFC000000, + 0x0A33D074, + 0x8154E120, + 0x22B38285, + 0x82C32000, + 0x82B2E000, + 0x83702000, + 0x2AB38295, + 0x2A0B98E0, + 0x23938295, + 0x233382E5, + 0x84066130, + 0x02008805, + 0x84B4E190, + 0x02002004, + 0x2AB382E5, + 0x83366000, + 0x2A0382E5, + 0x238382C6, + 0x0A35E80C, + 0x80B62130, + 0x2AB382C6, + 0x82B02800, + 0x86066800, + 0x0200E004, + 0xBCC65004, + 0x82C32000, + 0x82B02400, + 0x8372E000, + 0x2AB382A4, + 0x2B7382AC, + 0x81102170, + 0x84046130, + 0x0200D803, + 0xFC000000, + 0x8314E000, + 0x40C60117, + 0xFC000000, + 0xFC000000, + 0x22B38295, + 0x8575E110, + 0x8592E110, + 0x2B7382AC, + 0x80C32110, + 0x2B938295, + 0x0A366017, + 0x8534E110, + 0x81862110, + 0x0A35C005, + 0x0A34C033, + 0x10000B7B, + 0xFC000000, + 0xFC000000, + 0xBDA65004, + 0xBCB00014, + 0x231382A4, + 0x100007FA, + 0xBD027080, + 0xA126A000, + 0xFC000000, + 0x51A54117, + 0xFC000000, + 0xFC000000, + 0x0A34E025, + 0x2AB38255, + 0x81556110, + 0x020013D4, + 0xFC000000, + 0x22C382A4, + 0x22B382AC, + 0x853320B0, + 0xBD765004, + 0x8B14E038, + 0x8404E110, + 0x02004008, + 0x83146040, + 0x82C4E000, + 0x84B46130, + 0x86B2E010, + 0x0A32EBFF, + 0x2805C0C4, + 0x82C32010, + 0xBCB00024, + 0x06834004, + 0x06334003, + 0x06234002, + 0xBCB00014, + 0x100007FA, + 0xBD027840, + 0xA125E000, + 0xFC000000, + 0x51754136, + 0x81556130, + 0x2AB38255, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x18027D46, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x22B382E5, + 0xFC000000, + 0x0A32C805, + 0x06B34804, + 0x10000896, + 0xBD027CC0, + 0xFC000000, + 0x0200139C, + 0xFC000000, + 0x22C382E5, + 0xFC000000, + 0x0A330805, + 0x06B34804, + 0x10000896, + 0xBD027F00, + 0xFC000000, + 0x23238007, + 0x22C38325, + 0xA1148960, + 0x860460D0, + 0x02005004, + 0xBD100404, + 0xBD100444, + 0x82C32040, + 0x84C32110, + 0x02008806, + 0x84C020C0, + 0xBD1AEE04, + 0x511540C7, + 0xFC000000, + 0xFC000000, + 0xBCC00024, + 0xC2031190, + 0xFC000000, + 0x00001014, + 0x2AB383E6, + 0x23438007, + 0xA1150960, + 0xA0C50730, + 0xA09545C0, + 0xA13503B0, + 0x22B38325, + 0x06346004, + 0xBC800404, + 0x82B2E040, + 0xBC800444, + 0x8402E080, + 0x02008802, + 0x82B22000, + 0x0634680B, + 0x22838386, + 0xBCF00004, + 0x8692E040, + 0xA543E4E0, + 0xBC8B6084, + 0x2AD38166, + 0xBD200004, + 0x1000031A, + 0xA54043A0, + 0xA5425C00, + 0xBD400004, + 0xBD500004, + 0xA543CAE0, + 0xA5521E00, + 0xA542DC00, + 0x228B9561, + 0x82822120, + 0x96820011, + 0xA5520F00, + 0xA55245C0, + 0x100000A0, + 0xBD028D40, + 0xFC000000, + 0xBCEB5004, + 0xBC864004, + 0xBC9B7004, + 0x22C38166, + 0xFC000000, + 0xFC000000, + 0x06831805, + 0x22B382B5, + 0x100008D7, + 0x22D38166, + 0xFC000000, + 0x06C3013B, + 0x10000A88, + 0x22D38166, + 0xFC000000, + 0x10000B74, + 0xFC000000, + 0xFC000000, + 0x8544A0B0, + 0x231382F5, + 0xBD200004, + 0x851460B0, + 0x0200A3F9, + 0x2B2381EC, + 0x2B1382E5, + 0x02006006, + 0x23224006, + 0x2B4382B5, + 0x02002008, + 0x8124A0B0, + 0x2B2382C6, + 0x06B34805, + 0xFC000000, + 0x10000896, + 0xBD029640, + 0xFC000000, + 0x2B1382E5, + 0x0693682C, + 0x2313820C, + 0x8523E110, + 0x06A34029, + 0x2A0381B5, + 0xBCF002C4, + 0x23338184, + 0x8334E060, + 0xFC000000, + 0x28F20134, + 0x80C220C0, + 0x80C32110, + 0x87332040, + 0x8354E080, + 0x22F38204, + 0x20C4C002, + 0x0A346006, + 0x8734E040, + 0x28C54002, + 0x020023FC, + 0x87146040, + 0x87556040, + 0x22C3818C, + 0x83132080, + 0x82C3E080, + 0x2B13818C, + 0x2AC38204, + 0x82B2E080, + 0x2AB381E4, + 0x22C3820C, + 0x22B38184, + 0x80B2E110, + 0x86B2E080, + 0x8312E040, + 0x22B383C6, + 0x82F2E010, + 0x22B38265, + 0x84052120, + 0x0200E806, + 0x28F20116, + 0x2AF383C6, + 0x86B2E080, + 0x8522E0C0, + 0x2AB38265, + 0x2B238275, + 0x2AD38166, + 0x22B381EC, + 0xFC000000, + 0x0A32E004, + 0x22F382B5, + 0xFC000000, + 0x0A33C0BD, + 0x10000715, + 0xBD02A440, + 0xFC000000, + 0xBCB00004, + 0x100006F5, + 0xBD02A540, + 0xA4B04270, + 0x1000072B, + 0xBD02A600, + 0xFC000000, + 0x0A35900B, + 0x2AC38386, + 0xA4D00800, + 0x22B38275, + 0x06B3500A, + 0x2B638306, + 0x8403E0B0, + 0x02008807, + 0x02002007, + 0x8343E000, + 0x22B382C6, + 0x10000B6D, + 0xFC000000, + 0xFC000000, + 0x8342E000, + 0x22C3820C, + 0x236381EC, + 0x231381E4, + 0x22B3818C, + 0x0A35A811, + 0x2B438285, + 0x23238275, + 0x8403E140, + 0x0200C003, + 0x02001005, + 0xA4D04230, + 0xA4D04200, + 0x23438285, + 0x8B24A078, + 0x80C2E0C0, + 0x81332140, + 0x81446140, + 0x22C38265, + 0x0200200C, + 0x8AC32078, + 0x2AC38275, + 0x8403E140, + 0x0200C003, + 0x02001003, + 0xA4D04220, + 0xA4D04210, + 0x8132E140, + 0x83146000, + 0x81146140, + 0x854460C0, + 0x06236005, + 0x2B438325, + 0xBD100004, + 0x06334002, + 0xBD100014, + 0x0693600F, + 0x23238184, + 0x22C381B5, + 0x235381A5, + 0x8344A040, + 0x96B30031, + 0xA4B2DA00, + 0x29520145, + 0x82C4A060, + 0xA4B446D0, + 0x28B200C5, + 0x82B4A020, + 0x02002012, + 0x293200B5, + 0xFC000000, + 0x8354A040, + 0x8734E280, + 0x0633600D, + 0x29320155, + 0x2B438325, + 0x96C30031, + 0xA4C31A30, + 0xA4C44600, + 0x231381CC, + 0x80B4A0B0, + 0x86B2E080, + 0x82B2E020, + 0x02002003, + 0xA4C45180, + 0x28C200B6, + 0xBCB00004, + 0xBCC65004, + 0x06934021, + 0x1000076B, + 0xBD02BB80, + 0xFC000000, + 0x0A35980A, + 0xFC000000, + 0x8334A0A0, + 0x2313818C, + 0xBCB00004, + 0x28020135, + 0x81222120, + 0x10000813, + 0xBD42BEC0, + 0xBCB00034, + 0x10000884, + 0xBD02BEC0, + 0xFC000000, + 0x0A358819, + 0x28B20115, + 0xBD364804, + 0xBCB00004, + 0x10000818, + 0xBD42C080, + 0xBCB00004, + 0x1000085C, + 0xBD32C140, + 0xA0B22000, + 0x0A358002, + 0x0200000E, + 0x2AB38255, + 0x02002012, + 0x231381E4, + 0x87246000, + 0x06834002, + 0x0A358808, + 0x1000076B, + 0xBD02C400, + 0xFC000000, + 0xBCB00004, + 0x1000082C, + 0xBD32C080, + 0xBCB00004, + 0x1000076B, + 0xBD02C5C0, + 0xFC000000, + 0x2313820C, + 0x232381E4, + 0x8524A110, + 0x10000983, + 0xBD42C740, + 0xFC000000, + 0x06934005, + 0x0A358804, + 0x1000086B, + 0xBD02C880, + 0xFC000000, + 0x0A35A80A, + 0x22B381B5, + 0x22C3820C, + 0x80B2E0C0, + 0x23138306, + 0x23238325, + 0x22C38386, + 0x2B138346, + 0x2B238335, + 0x2AC38366, + 0x23138285, + 0x84C3E110, + 0x2AC382B5, + 0x82F5A010, + 0x2AF381EC, + 0x2AD38166, + 0x0E1BC356, + 0x80B2E110, + 0x2AB381B5, + 0x22B38306, + 0x82C22020, + 0x5AC2C010, + 0xFC000000, + 0xFC000000, + 0x28030000, + 0xBCCFFFFC, + 0x82B22780, + 0x42B30017, + 0xFC000000, + 0xFC000000, + 0x22B380C6, + 0x82B2E010, + 0x2AB380C6, + 0x22B380E6, + 0x22C38325, + 0x0E1BCACB, + 0x80B2E0C0, + 0x2AB380E6, + 0x02001340, + 0xFC000000, + 0x22F38255, + 0xFC000000, + 0x0A33C802, + 0xBCFFFFF4, + 0x22B38204, + 0x22938346, + 0x82B2E060, + 0x22C38335, + 0x28F200B5, + 0x80C220B0, + 0x86B2E020, + 0x809260B0, + 0x5AC24020, + 0xFC000000, + 0xFC000000, + 0x82922780, + 0xBC8FFFFC, + 0x28024000, + 0x42920017, + 0xFC000000, + 0xFC000000, + 0x22938335, + 0x22838366, + 0x2A938325, + 0x2A838386, + 0x228380C6, + 0x82822010, + 0x2A8380C6, + 0x228380E6, + 0x22938325, + 0x80822090, + 0x2A8380E6, + 0x020022A6, + 0xA4D042C0, + 0x2AD38166, + 0xFC000000, + 0x22938125, + 0x02002009, + 0x82926010, + 0x2A938125, + 0x02001006, + 0x2A938135, + 0xFC000000, + 0x22938145, + 0x82926010, + 0x2A938145, + 0x22938106, + 0x82926010, + 0x2A938106, + 0x22C38007, + 0xBC9B7004, + 0xA0E35C00, + 0xBCDB3E04, + 0x22CB9910, + 0x22B24045, + 0x8EE3A801, + 0x28E340C5, + 0x0A32E804, + 0x82C32020, + 0xFC000000, + 0x06430804, + 0x100006B9, + 0xBCE2E284, + 0x2723F342, + 0x2ACB9910, + 0x22DB9602, + 0x22C24054, + 0xA0B26000, + 0x82B2E0A0, + 0xA4C00200, + 0x82D360A0, + 0x2AC24054, + 0x5AB34010, + 0xFC000000, + 0xFC000000, + 0x82922780, + 0xBC8FFFFC, + 0x28024000, + 0x42920016, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x1801D786, + 0xFC000000, + 0xFC000000, + 0x20B20000, + 0xA492CA80, + 0x0672C8DD, + 0x8AD2E808, + 0x28D20000, + 0x22E24407, + 0x237247A4, + 0xBCC48004, + 0xAAB5E080, + 0x80B320B0, + 0x82822010, + 0x8A822408, + 0x2742C007, + 0xBD900004, + 0x07F508F9, + 0xA0B3CF00, + 0x96B2C010, + 0xA0C50F80, + 0x0A331012, + 0x22CB2342, + 0x8AC32FF0, + 0x84C2E0C0, + 0x82C321C0, + 0x80C260C0, + 0x81966010, + 0xBD177084, + 0x0765200A, + 0x21230002, + 0x2B244065, + 0x86C32040, + 0x97248101, + 0x2B244055, + 0x20C30002, + 0x2AC44045, + 0x96C30101, + 0x2AC44035, + 0xBCC00064, + 0xD00300D2, + 0x2A0B0F82, + 0x2A0B0FC1, + 0xA0C52000, + 0x0A330002, + 0x81966010, + 0xA0C56100, + 0x0A330002, + 0x81966010, + 0xA0C56000, + 0x0A330803, + 0x0A3640D7, + 0x85966010, + 0xA0C3DE00, + 0x22DB9960, + 0x231B2382, + 0xA8D320D0, + 0x96D34080, + 0x80D36110, + 0x80D360B0, + 0x81836000, + 0xA1139C00, + 0xBDB77204, + 0xBDA77304, + 0xA0B38AE0, + 0xA4C2CAF0, + 0xA4C043F0, + 0x28C6C002, + 0x28D68002, + 0x2A077242, + 0x2A077282, + 0x2A0772C2, + 0xBD228004, + 0x0A36400D, + 0x87966010, + 0x83B6E040, + 0x83A6A040, + 0x020020C6, + 0xBD02FB00, + 0x81362000, + 0x0A334006, + 0xA4C2CAF0, + 0xA4C043F0, + 0x020023F6, + 0x28C6C002, + 0x28D68002, + 0xBD877204, + 0xBCB77304, + 0xA0D52000, + 0x0A334006, + 0xBD300004, + 0xA0C50320, + 0x02002089, + 0xBD02FEC0, + 0x83132000, + 0xA0D56100, + 0x0A334006, + 0xBD300014, + 0xA0C50310, + 0x02002082, + 0xBD030080, + 0x83132020, + 0xA0D56000, + 0x0A334006, + 0xBD300024, + 0xA0C50300, + 0x0200207B, + 0xBD030240, + 0x83132040, + 0x20C60002, + 0xA0D50F80, + 0x0A334070, + 0x07F30C6F, + 0xA4C003F0, + 0x8EC32023, + 0x20B2C002, + 0x2AC77402, + 0x2AB77442, + 0xBCB77544, + 0x22C77482, + 0xAAF5E400, + 0x80C3E0C0, + 0x40B300D7, + 0xFC000000, + 0xFC000000, + 0xA0C50360, + 0x2AC77500, + 0x2AB77521, + 0x2AD77510, + 0xBCFB9304, + 0xA0B39C00, + 0x86B2E040, + 0x2AB3C045, + 0xBCB77084, + 0x2AB3C055, + 0x23777521, + 0x23477510, + 0xFC000000, + 0x2155C000, + 0x8375E010, + 0x2B777521, + 0x0A35004D, + 0x87452010, + 0x2B477510, + 0x06754BFA, + 0x0A35200E, + 0x22B77402, + 0x22D77442, + 0x81336000, + 0x2313C045, + 0xA0B2CAF0, + 0x80E2E000, + 0x0200207B, + 0xBD030DC0, + 0xBD228004, + 0x0A33403F, + 0x02002004, + 0xA4C38AF0, + 0x8EB32023, + 0x2A077402, + 0x2AB3C006, + 0x2AD3C026, + 0xA0C54E00, + 0xBCB38004, + 0xAAC320A0, + 0x80B320B0, + 0x82C2E080, + 0xFC000000, + 0xFC000000, + 0x24D30001, + 0xA0C35000, + 0xBD177084, + 0x0A3303DE, + 0x82C2E060, + 0xA0D34680, + 0x2AD3C07C, + 0x24C30001, + 0x82E2E040, + 0x2AC3C065, + 0xA1630CA0, + 0xBD24E004, + 0xA5258C30, + 0xBD44C004, + 0xA5458C30, + 0x23377500, + 0xA0C58440, + 0x96D30010, + 0xBCCB0F84, + 0x815320D0, + 0xA0C58800, + 0x94C040C0, + 0x20D54001, + 0x880360C0, + 0x02004809, + 0x8CC360C0, + 0x28C54001, + 0x24C48003, + 0x82C32010, + 0x2353C045, + 0x83556040, + 0x80D36150, + 0x2CC48003, + 0x0A34D007, + 0x26C50006, + 0x2AC44045, + 0x96C30101, + 0x2AC44035, + 0x26C50025, + 0x2AC44055, + 0x24C38001, + 0x2AC44025, + 0x82C2E020, + 0x24B2C001, + 0x28B44001, + 0x24B30001, + 0x10000516, + 0xBD0308C0, + 0x2AB44015, + 0x22C77402, + 0xFC000000, + 0x0A330003, + 0xBCB00034, + 0xD002C0C6, + 0x02002324, + 0xFC000000, + 0xFC000000, + 0x1802E7C7, + 0xFC000000, + 0xFC000000, + 0x21960002, + 0x2162C002, + 0x83862040, + 0x82B2E040, + 0x20CA0002, + 0x07F64FF5, + 0xA59003F0, + 0x0A330C1B, + 0x9734C010, + 0xBCCB0F84, + 0x80C32130, + 0xA1350730, + 0x2ED48005, + 0x28D30001, + 0x8BA5AFF0, + 0x86D5A120, + 0x2E048085, + 0x96C4C020, + 0x2EC4801C, + 0x2FA48024, + 0x532B4057, + 0xFC000000, + 0xFC000000, + 0xA4E043F0, + 0xA4F65E00, + 0xA4F447A0, + 0x96C68011, + 0xA4F30F00, + 0x28EA0003, + 0x82822082, + 0x8A82280A, + 0x00002010, + 0xBCC00114, + 0xC2031702, + 0x00002010, + 0xBCC00034, + 0xD0030196, + 0xBCB00064, + 0xD002C0D2, + 0xA0B3DE00, + 0xA0C38AE0, + 0x96C300F0, + 0xA4C2DE00, + 0x020023CF, + 0xBCB00034, + 0xD002C0C6, + 0x80D42000, + 0x8124A000, + 0x10000715, + 0xBD032D00, + 0xFC000000, + 0x100006F5, + 0xBD032DC0, + 0xA4B04270, + 0xBD032EC0, + 0x1000072B, + 0xFC000000, + 0xFC000000, + 0x81C5A000, + 0x0A358005, + 0x81E46000, + 0x10000731, + 0xBD033040, + 0x81D4A000, + 0x81036000, + 0x8124A000, + 0x80D72000, + 0xFC000000, + 0x00001010, + 0xFC000000, + 0xBD500004, + 0xBD44A004, + 0xA5434A40, + 0xBCC74004, + 0xA4C34A30, + 0x26E50035, + 0xA0838C00, + 0xA0838C60, + 0x26850025, + 0xFC000000, + 0x26C30005, + 0xFC000000, + 0x0E831847, + 0x26E50035, + 0xA1138C60, + 0x27850075, + 0xAAC46100, + 0x819620C0, + 0x26C50055, + 0xA52003F0, + 0x83546010, + 0x2F264007, + 0x2F664047, + 0x06F3141A, + 0x951040D0, + 0xA12388C0, + 0x8374A010, + 0xA4E5C8C0, + 0x860560C0, + 0x02008002, + 0xBD500004, + 0xA1638C00, + 0x8B256038, + 0x8B65A038, + 0xFC000000, + 0x0F64882A, + 0xA4E54C60, + 0x2EE50035, + 0x0E4DD827, + 0xFC000000, + 0xFC000000, + 0x0A356804, + 0x8765E040, + 0xA4C042F0, + 0xBD5000C0, + 0x87256040, + 0xA4C48C00, + 0x02001007, + 0xA4E588C0, + 0x8A056030, + 0x0200681B, + 0xA4E54C60, + 0x2EE50035, + 0xA1230C00, + 0xBD574004, + 0xA5534830, + 0xA4E48C60, + 0x2EE50035, + 0xAAE4A100, + 0x80E3A180, + 0x27250015, + 0x27754026, + 0xAB64A100, + 0x8165E160, + 0x52ED9404, + 0x82E22040, + 0x8284A040, + 0x27254005, + 0x84022120, + 0x02008002, + 0xBC800004, + 0x2EC5005D, + 0x2EE50025, + 0x2E850015, + 0x18034506, + 0xFC000000, + 0xFC000000, + 0x26876842, + 0x8C822110, + 0x2E876842, + 0x0000200B, + 0xCAD5C01E, + 0xBD500014, + 0x0000100B, + 0xCAD5A01C, + 0x27576800, + 0x26E76842, + 0x06556078, + 0x26C768C2, + 0x27676902, + 0x8893A0C0, + 0x0A324007, + 0x06756404, + 0xBD100004, + 0xBC800004, + 0x26876830, + 0x02001012, + 0x9D924082, + 0x88D3A160, + 0x0A33406A, + 0x06656406, + 0xBC800004, + 0xBD100014, + 0x26876820, + 0x8A8221F0, + 0xFC000000, + 0x9D934082, + 0x82966010, + 0x0FFE5806, + 0x9E834002, + 0x2E976820, + 0x82922010, + 0x81922000, + 0x2E976820, + 0xBCD4A004, + 0xA4D64A40, + 0xFC000000, + 0xFC000000, + 0x27734035, + 0xA085C8C0, + 0x0A322451, + 0xA185CC00, + 0x27334075, + 0xAA962100, + 0x81426130, + 0x87222010, + 0xA57488C0, + 0x26850007, + 0x26E50047, + 0x0A3243FE, + 0x83A62010, + 0x8606A0C0, + 0x02009003, + 0x2743405D, + 0xBDA00004, + 0xA1821C00, + 0x0655404E, + 0x95804190, + 0x27534064, + 0xA1B54E00, + 0x8606E200, + 0x02008050, + 0x06F51404, + 0xA5768C00, + 0x02001037, + 0x2F734035, + 0xA115CC60, + 0x8AC6A038, + 0x8B546038, + 0xFC000000, + 0x0F530807, + 0xFC000000, + 0xFC000000, + 0x83A6A040, + 0x8606A0C0, + 0x02008002, + 0xBDA00004, + 0x0A349404, + 0xA5768C00, + 0x02001028, + 0x2F734035, + 0x26C34025, + 0x86C32040, + 0x2EC34025, + 0x0A330808, + 0xA0C50C00, + 0x0A330802, + 0x82C020C0, + 0x87A32040, + 0x8B246030, + 0xA54002F0, + 0x2F43405D, + 0xAAC6A100, + 0x81432130, + 0xBD374004, + 0x2E050026, + 0x2E0500A6, + 0x2E050126, + 0xA5364830, + 0x27134005, + 0x2E0501A6, + 0x2754C026, + 0xAAC46100, + 0x80C560C0, + 0x434B0400, + 0xFC000000, + 0xFC000000, + 0x83146040, + 0x26C4C005, + 0x840460C0, + 0x02008002, + 0xBD100000, + 0x2F134005, + 0xFC000000, + 0x82C4A040, + 0xA57308C0, + 0x02002003, + 0xA5768C00, + 0x2F734035, + 0x00001010, + 0xBCC00014, + 0x94804190, + 0xFC000000, + 0x8883A088, + 0x2E876842, + 0x00001010, + 0xBCC00004, + 0xBC8B7E04, + 0xFC000000, + 0xFC000000, + 0x22820046, + 0x84022000, + 0x0200CBF9, + 0x02000385, + 0xBD5B7E04, + 0xFC000000, + 0xFC000000, + 0x23B54046, + 0x020023AF, + 0x8586E180, + 0x2B854046, + 0xBD572604, + 0xABB6E180, + 0x815561B0, + 0xA1B21C00, + 0x0A345808, + 0x23154046, + 0x851461B0, + 0x0200D3AA, + 0x2B154046, + 0x020023A8, + 0x88C32188, + 0x2EC768C2, + 0x22C54006, + 0x84C321B0, + 0x0200D3A3, + 0x2AC54006, + 0x020023A1, + 0x88C5A188, + 0x2EC76902, + 0x26A76800, + 0x26C76882, + 0x0652900A, + 0xBCDB7E04, + 0x9EB30002, + 0x94A040B0, + 0x0652C02D, + 0xAAB2E180, + 0xBCD72604, + 0x80D360B0, + 0x88C320A8, + 0xFC000000, + 0x22E34026, + 0xBD277004, + 0xA0A384E0, + 0xA0B39C00, + 0xFC000000, + 0x24A480A4, + 0x9512C0A0, + 0xA0B385E0, + 0xA0A39D00, + 0xFC000000, + 0x24B480B4, + 0x94E280B0, + 0x22B34006, + 0x22A34086, + 0x23234046, + 0x23634066, + 0x8404A000, + 0x02009006, + 0x277768C2, + 0x2B634046, + 0x80B2E120, + 0x0A358805, + 0x02000006, + 0x8124A160, + 0x0200D804, + 0x2B234046, + 0x8D25E0A0, + 0x2F2768C2, + 0x80B2E0E0, + 0x8402E110, + 0x0200D003, + 0x2B134006, + 0x2AB34006, + 0x8402E000, + 0x0200DBD6, + 0x26B76902, + 0x020023D4, + 0x8CA2E0A0, + 0x2EA76902, + 0x0000200F, + 0xBCA02D14, + 0xC2029702, + 0x10000D1C, + 0xBD037C00, + 0xBC800004, + 0x0A331027, + 0xA0C3D180, + 0x0A331010, + 0xA48043F0, + 0x0E1B001A, + 0xFC000000, + 0xFC000000, + 0x20DA8002, + 0x22CA8046, + 0x0A334821, + 0x288A8003, + 0x82A28082, + 0x8AA2802B, + 0x0A3323F0, + 0xBC802914, + 0xC2021702, + 0x02001017, + 0xFC000000, + 0x20C28002, + 0x22D28086, + 0x0A330816, + 0x28828003, + 0x2AE28047, + 0x82A28100, + 0x8AA28019, + 0x0A3363E4, + 0xBC801314, + 0xC2021702, + 0x0200100B, + 0xFC000000, + 0x20C2C002, + 0x22D2C046, + 0x0A33080A, + 0x2882C003, + 0x82B2C080, + 0x8AB2C029, + 0x0A3363D9, + 0xBC800114, + 0xC2021702, + 0x18037B47, + 0xFC000000, + 0xFC000000, + 0xA0820AE0, + 0xA0820A00, + 0x968200F0, + 0xA4825E00, + 0x020023F9, + 0xBC900034, + 0xD0024086, + 0x20828000, + 0xA4920A80, + 0x06720830, + 0x28028000, + 0x82A28010, + 0x8AA28408, + 0x23224407, + 0x22F247FC, + 0x22B24784, + 0xA5300770, + 0x22E246D4, + 0x22D2477C, + 0xBD700004, + 0xA5739180, + 0x0E1B8016, + 0xA522C330, + 0x23124786, + 0x0E0B8008, + 0x22B2463C, + 0x2342475C, + 0xA0C2C230, + 0x94C500C1, + 0x0E0B880E, + 0xA522C8E0, + 0xA5230740, + 0x22C24754, + 0x22B24774, + 0xA15449A0, + 0xA1445400, + 0xA0E444E0, + 0xA1144500, + 0x8163A0B2, + 0xA5654820, + 0xA5651460, + 0xA5644550, + 0xA5731100, + 0xBCB00064, + 0xD002C082, + 0x10000CC7, + 0xBCB39284, + 0xFC000000, + 0x0A356BD7, + 0xBC802D14, + 0xC2021702, + 0xA083CA00, + 0x96B200F0, + 0xA4B4DE00, + 0x020023D1, + 0xBC800034, + 0xD00200B6, + 0x18038847, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, +}; +char *rdpa_version_fw_c = "$Change: 239242 $"; diff --git a/arch/arm/mach-bcmbca/bcm63138/rdp_fw/runner_fw_d.c b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/runner_fw_d.c new file mode 100755 index 0000000000..79476861eb --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63138/rdp_fw/runner_fw_d.c @@ -0,0 +1,4108 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint32_t firmware_binary_D[] = { + 0x0A300005, + 0xFC000000, + 0x1000001B, + 0xFC000000, + 0xFC000000, + 0x221A7E42, + 0x222A8683, + 0x224A8703, + 0x226A8783, + 0x228AECA1, + 0xC2021502, + 0xC2001202, + 0xC2001302, + 0xBC801000, + 0xBC800018, + 0xC2021202, + 0xC2021302, + 0x1000064F, + 0xBD000500, + 0xFC000000, + 0xBC991904, + 0xBC81CC4C, + 0xBC81D440, + 0x2A824026, + 0x18000000, + 0xFC000000, + 0xFC000000, + 0x2A0AA402, + 0x2A1AA442, + 0x2A2AA483, + 0x2A4AA503, + 0x2A6AA583, + 0x2A8AA603, + 0x2AAAA683, + 0x2ACAA703, + 0x2AEAA783, + 0x2B0AA803, + 0x2B2AA883, + 0x2B4AA903, + 0x2B6AA983, + 0x2B8AAA03, + 0x2BAAAA83, + 0x2BCAAB03, + 0x2BEAAB83, + 0xC6800042, + 0x2A8AF202, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xC2000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x220AA402, + 0x221AA442, + 0x222AA483, + 0x224AA503, + 0x226AA583, + 0x228AA603, + 0x22AAA683, + 0x22CAA703, + 0x22EAA783, + 0x230AA803, + 0x232AA883, + 0x234AA903, + 0x236AA983, + 0x238AAA03, + 0x23AAAA83, + 0x23CAAB03, + 0x23EAAB83, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x16000001, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x229AF580, + 0x9E924000, + 0xFC000000, + 0x0652400A, + 0xBD100004, + 0xBCBAE1E4, + 0x21220003, + 0xA094CD00, + 0xA4A24A80, + 0x28020002, + 0x0A3481BC, + 0x0200101A, + 0x2A0287B4, + 0xBC900024, + 0xC2025702, + 0x18001547, + 0xFC000000, + 0xFC000000, + 0x21220003, + 0xBD100004, + 0xBCBAE1E4, + 0xA0E32100, + 0x07F4E15E, + 0xA094CD00, + 0xA4A24A80, + 0x229AF580, + 0x9E924000, + 0xFC000000, + 0x06524004, + 0x02002008, + 0xD0038004, + 0xFC000000, + 0xBC900024, + 0xC2025702, + 0x180019C7, + 0xFC000000, + 0xFC000000, + 0x22928446, + 0x2A02879C, + 0xA0949C00, + 0x2A9286E5, + 0xBD5A9604, + 0x22E287FC, + 0x86E3A020, + 0xA5538620, + 0x23428446, + 0xFC000000, + 0x20E54002, + 0xFC000000, + 0x0A338457, + 0x06039C13, + 0x2352855C, + 0x86056110, + 0x02004810, + 0xA1550440, + 0x86056010, + 0x02005807, + 0x23628575, + 0x8755A430, + 0x8B556018, + 0x02004809, + 0x02001157, + 0xBD7000B4, + 0xBD502224, + 0x8B65A018, + 0x8405A150, + 0x02004803, + 0x02001151, + 0xBD7000B4, + 0x06139C0E, + 0x2352855C, + 0xA15508C0, + 0x86056050, + 0x0200580A, + 0x23528544, + 0x815560A0, + 0xFC000000, + 0xFC000000, + 0x21554000, + 0x86056820, + 0x02004803, + 0x02005143, + 0xBD700054, + 0x06650002, + 0x07950018, + 0x06F38C17, + 0xBD682004, + 0x235287FC, + 0x87556020, + 0xA5654660, + 0xD745A851, + 0xFC000000, + 0xFC000000, + 0xC7600742, + 0xFC000000, + 0x0685880D, + 0xBC9A6004, + 0xA4954640, + 0xA0E59000, + 0xFC000000, + 0xFC000000, + 0x209240E4, + 0x8A026800, + 0x0200592D, + 0xA1724C00, + 0x100001C7, + 0x8293A000, + 0xFC000000, + 0x07138814, + 0x06B5000E, + 0x07450812, + 0xFC000000, + 0x235285CC, + 0x8B556028, + 0xBD8FFFF4, + 0x237285D5, + 0x236285E5, + 0x0A354806, + 0x8405E180, + 0x02004804, + 0x0A358803, + 0x02001007, + 0xA5400340, + 0x072398F7, + 0xBC9002E4, + 0x100001E9, + 0xBD7000E4, + 0xFC000000, + 0x07338808, + 0x07D50002, + 0x07E50806, + 0x074398EF, + 0xBC9002F4, + 0x100001E9, + 0xBD700124, + 0xFC000000, + 0x23828525, + 0x2A02879C, + 0x06B50109, + 0x07050011, + 0x06650010, + 0xFC000000, + 0x235AF4E0, + 0x22EAF5B0, + 0x06054C0C, + 0x0A339515, + 0x2A12879C, + 0xBCEAAC04, + 0x23628095, + 0x237280A6, + 0xD763A854, + 0xFC000000, + 0xFC000000, + 0xC6E00742, + 0xFC000000, + 0x06838D0B, + 0x2A02879C, + 0x074500E9, + 0x07E500F5, + 0x07D500F4, + 0xFC000000, + 0x2352854C, + 0x86E560E0, + 0xA1950440, + 0x86066010, + 0x02006841, + 0x236285A4, + 0x97758041, + 0x815620E0, + 0x22E2855C, + 0x84056090, + 0x0200C0E8, + 0x86056400, + 0x0200C802, + 0xA5255C00, + 0x2B828785, + 0x22928544, + 0x8603A290, + 0x02005009, + 0xBD500024, + 0x8603A2F0, + 0x02005006, + 0xBD500034, + 0x0EEDC8ED, + 0xFC000000, + 0xFC000000, + 0x020000E9, + 0xBCCAE900, + 0x234287FC, + 0xA1450800, + 0x97554040, + 0x2A028566, + 0x21430144, + 0xA5550800, + 0x8342AAC0, + 0xD75500C2, + 0x2B52855C, + 0x1000021E, + 0xBCC04740, + 0xBD700004, + 0x0A3528DE, + 0x2AE2855C, + 0x2A0A9810, + 0xFC000000, + 0x22E2855C, + 0x8603A2F0, + 0x02005123, + 0xFC000000, + 0x83426070, + 0x83526060, + 0x80E26000, + 0x83726280, + 0x8363A040, + 0x20928144, + 0x2A928534, + 0x23428446, + 0xBC900020, + 0xA5424440, + 0x21628165, + 0x8293A000, + 0x8365A280, + 0x2B628785, + 0x20928095, + 0xA0925040, + 0x2A92853C, + 0x20928154, + 0x2A92855C, + 0x0200206D, + 0x21528176, + 0x2B528566, + 0x86066020, + 0x020058AD, + 0xBD700294, + 0x83862280, + 0x80E620E0, + 0x8403A090, + 0x0200C0A7, + 0x8603A400, + 0x0200C802, + 0xA5239C00, + 0x22E2855C, + 0x22928544, + 0x8603A040, + 0x0200500A, + 0xBD700044, + 0x8603A2F0, + 0x02005007, + 0xBD700034, + 0x2B828785, + 0x8605AFF0, + 0x020048AA, + 0xFC000000, + 0x020000A7, + 0x814560A0, + 0x83452080, + 0x81502008, + 0xD7550102, + 0x2A028566, + 0xFC000000, + 0xC7600642, + 0x2B628586, + 0x83450100, + 0xD7550102, + 0x23428554, + 0x8F452010, + 0x2B428554, + 0xC7500642, + 0x234287FC, + 0xA1450800, + 0xBCCAE900, + 0x9765C040, + 0x2B5285A6, + 0x21430144, + 0xA5650800, + 0x8342AAC0, + 0xD76500C2, + 0x2B62855C, + 0x1000021E, + 0xBCC05B40, + 0xBD700004, + 0x0A35288E, + 0x2AE2855C, + 0x2A0A9810, + 0x22E2855C, + 0x8603A2F0, + 0x020050D4, + 0xFC000000, + 0x83426080, + 0x22E28554, + 0x8AE3A018, + 0x2AE28554, + 0x20E28144, + 0x2AE28534, + 0x83526090, + 0x80E26000, + 0x83726140, + 0x8383A020, + 0x8293A010, + 0x23428446, + 0xBCC00010, + 0xA5430440, + 0x20928094, + 0x2A92853C, + 0x8363A0C0, + 0x20928154, + 0x2A92855C, + 0x21528185, + 0x2B528785, + 0x8355A020, + 0x21828165, + 0x8365A040, + 0x2B828585, + 0x21528155, + 0x2B528595, + 0x8385A020, + 0x21928165, + 0x8355A040, + 0x2B9285A5, + 0x21628185, + 0x2B6285B5, + 0x83656020, + 0x21828155, + 0x83556040, + 0x2B828565, + 0x21528165, + 0x2B528575, + 0x8363A060, + 0x215280E4, + 0x86056450, + 0x0200584A, + 0xFC000000, + 0x21628165, + 0xBD53FFF4, + 0x8805A150, + 0x02005845, + 0xFC000000, + 0x2B428446, + 0x2AE2854C, + 0x82E5E0D0, + 0x86026060, + 0x02006806, + 0xFC000000, + 0x20E280E4, + 0x8A03A070, + 0x0200404E, + 0x0200003A, + 0x86026110, + 0x0200404B, + 0x86026720, + 0x02005049, + 0x860263D0, + 0x02005047, + 0xFC000000, + 0x86026000, + 0x02005044, + 0xFC000000, + 0x860268D0, + 0x02009841, + 0xFC000000, + 0x2292855C, + 0x86026010, + 0x0200502B, + 0xBD7002D4, + 0x860263A0, + 0x02005028, + 0xBD700064, + 0x86026020, + 0x02005025, + 0xBD700054, + 0x02000022, + 0x02001006, + 0xCA95601C, + 0xA094CD00, + 0xA4A24A80, + 0xD0038004, + 0xFC000000, + 0xA0B4CF60, + 0xA5301560, + 0x229287FC, + 0x8602E020, + 0x02004006, + 0xA0924A00, + 0x96B240F0, + 0xA4B4DE00, + 0xBC900034, + 0xD00240B6, + 0xA0928A80, + 0x02002037, + 0xBCB00064, + 0xD002C092, + 0xBD7FFFF4, + 0x22E285CC, + 0x8B53A028, + 0x236285D5, + 0x22E285E5, + 0x0A354808, + 0x0A338807, + 0x8405A170, + 0x02004310, + 0x02001005, + 0xBD7000E4, + 0x02001003, + 0xBD700334, + 0xBD700294, + 0x229286E5, + 0xA5225C00, + 0x2B72863C, + 0x2B228407, + 0x20E2C001, + 0xA094CD00, + 0x8C926116, + 0x8E926800, + 0x28938000, + 0x82938010, + 0x8A924408, + 0x2892C001, + 0x0200201A, + 0xBC900114, + 0xC2025702, + 0x020003EE, + 0x07951BC3, + 0xFC000000, + 0x2B228407, + 0x232AF580, + 0x9EB48000, + 0x8292E200, + 0x96924040, + 0x83426010, + 0xA094CD00, + 0x8EE26800, + 0xBC900014, + 0x949240B0, + 0x233AF381, + 0x8134E0B0, + 0x88B4A098, + 0x2ABAF580, + 0x28E4C000, + 0x2898C000, + 0x8230E012, + 0x02002003, + 0x8A30E04A, + 0xC2051702, + 0x0E1C4409, + 0xBC901004, + 0xFC000000, + 0x07F22243, + 0x82822080, + 0x88822098, + 0x180019C7, + 0xFC000000, + 0xFC000000, + 0x100006B5, + 0xFC000000, + 0xFC000000, + 0x18001547, + 0xFC000000, + 0xFC000000, + 0xC7600642, + 0x8352AA80, + 0x234AE142, + 0xA1659A00, + 0xA5459A60, + 0x615500D7, + 0xFC000000, + 0xFC000000, + 0xC56800D2, + 0x0615D01B, + 0xFC000000, + 0x06059812, + 0xFC000000, + 0x0645980C, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x615500D0, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x615500D7, + 0xFC000000, + 0xFC000000, + 0x0605980D, + 0xFC000000, + 0x0000100C, + 0xBD400014, + 0xA16586D0, + 0x0A359008, + 0xFC000000, + 0x8F75E020, + 0x020023E4, + 0x83452400, + 0x8B45208A, + 0x060593E9, + 0xFC000000, + 0x0000100C, + 0xBD400004, + 0x22928544, + 0xBD665584, + 0xBD708004, + 0xBD486DD4, + 0x21528096, + 0x82926040, + 0xA0E56100, + 0x0A338B9B, + 0xA0E56000, + 0x8403A160, + 0x02004007, + 0x8403A170, + 0x02004322, + 0x8403A140, + 0x020042D1, + 0x02001393, + 0xFC000000, + 0x829260C0, + 0xFC000000, + 0xFC000000, + 0x20E28095, + 0x8403A170, + 0x02006318, + 0x82926020, + 0x8403A140, + 0x020052C6, + 0x20E28095, + 0x8403A170, + 0x02006312, + 0x82926020, + 0x8403A140, + 0x020052C0, + 0x20E28095, + 0x8403A170, + 0x0200630C, + 0x82926020, + 0x8403A140, + 0x020042BA, + 0x0200137C, + 0xFC000000, + 0x22EAF140, + 0xFC000000, + 0x0A338042, + 0xBCE00024, + 0xC2039702, + 0x18009B87, + 0xFC000000, + 0xFC000000, + 0x22D28446, + 0x22E2855C, + 0x07734804, + 0x100004A4, + 0xFC000000, + 0xFC000000, + 0x2AE28024, + 0x8603A110, + 0x02006418, + 0xBCF00074, + 0xBD0AE900, + 0x8603A060, + 0x02005C05, + 0xBD10A4C4, + 0x1000048C, + 0xFC000000, + 0xFC000000, + 0x8603A290, + 0x0200540E, + 0xBCF00024, + 0x8603A040, + 0x0200540B, + 0xBCF00044, + 0x8603A2F0, + 0x02005408, + 0xBCF00034, + 0x100004A4, + 0x80B02000, + 0xFC000000, + 0x07F45003, + 0xBCF00054, + 0xBCF00064, + 0x22B287FC, + 0xA0E2C800, + 0x96B3C040, + 0xFC000000, + 0x219400E4, + 0xA4B64800, + 0x2AB2855C, + 0x2A0A9810, + 0xA0E34440, + 0x8603A020, + 0x02005FCE, + 0x82F2AA80, + 0x22E2854C, + 0x80E3A0A0, + 0x82E3A080, + 0x81302008, + 0xD7338102, + 0xFC000000, + 0xFC000000, + 0xC7100642, + 0x2B128586, + 0x82E38100, + 0xD7338102, + 0x22E28554, + 0x8EE3A010, + 0x2AE28554, + 0xC6E00642, + 0x2AE285A6, + 0x22EAEDC0, + 0xA1128900, + 0x88E3A110, + 0x2AEAEDC0, + 0xBCEA5804, + 0x2143C003, + 0x2363C047, + 0xC2059082, + 0xC205D0C2, + 0xA1451200, + 0xBD694004, + 0xD743A656, + 0x22E28407, + 0x8315A000, + 0xC7100742, + 0xFC000000, + 0x06846089, + 0xA1445000, + 0xBD3AF184, + 0x82E2AAC0, + 0x22F2855C, + 0xD6F380C2, + 0x8382AA80, + 0xFC000000, + 0xC6E00642, + 0x233AE142, + 0xA0E39A00, + 0xA5339A60, + 0xA1B22100, + 0x43BCC407, + 0xFC000000, + 0xFC000000, + 0xBD100004, + 0xBDAA5804, + 0x20E60003, + 0x2566C003, + 0xA0E39200, + 0x07F5880B, + 0xA1459200, + 0xAC3500E0, + 0xAC05C0F0, + 0x23460047, + 0x26E6C047, + 0xAC038140, + 0xAC03C150, + 0x02042046, + 0x234AF590, + 0xA1459F00, + 0x83B6E100, + 0x8A06E3F0, + 0x02004BEF, + 0xBCE00294, + 0x07F5882E, + 0x0A34482D, + 0xBD100014, + 0xA0E586D0, + 0x0A338031, + 0x8334E400, + 0x8B34E08A, + 0xA1B22100, + 0x43BCC404, + 0x1800B4C6, + 0xFC000000, + 0xFC000000, + 0x22D28446, + 0x22B2855C, + 0x2AB28024, + 0xA0B348C0, + 0x8602E010, + 0x02005595, + 0xBD10BE44, + 0xA0F443F0, + 0xBD0AE900, + 0x22B287FC, + 0xA0B2C800, + 0xFC000000, + 0xA1122000, + 0x219400B4, + 0x80B66000, + 0x81402008, + 0xD7438102, + 0x8343A100, + 0x2A044026, + 0xC6E00642, + 0x2B34403C, + 0x2AF44034, + 0x80F02008, + 0xD6F50102, + 0x2AE44066, + 0x2AB44006, + 0xC6E00642, + 0x2AE44046, + 0x82E46040, + 0xD6B380C2, + 0x8783A040, + 0xFC000000, + 0xC6E00642, + 0x020003B8, + 0xFC000000, + 0x22EAF3A1, + 0xFC000000, + 0x0A339004, + 0x860660B0, + 0x02005B82, + 0xBD9000B4, + 0xA0C28900, + 0x22BAEDC0, + 0x88B2E0C8, + 0x2ABAEDC0, + 0x22B28024, + 0x2AB2855C, + 0x2A0A9810, + 0x02002182, + 0x80B02000, + 0xFC000000, + 0xBCBAF184, + 0xBCDAE304, + 0xA4D10610, + 0x2812C044, + 0x29434001, + 0xAAD12100, + 0x80D361A0, + 0xA1859200, + 0x29834002, + 0x2B734026, + 0x2AE34047, + 0xA1558890, + 0xBD194004, + 0x233AE642, + 0x22E28407, + 0xAAD12800, + 0x811460D0, + 0xAAD52840, + 0x80D4E0D0, + 0x83412000, + 0x82412010, + 0x8A412088, + 0x97354030, + 0x8334E180, + 0x0A354803, + 0x8334E180, + 0xFC000000, + 0x41134137, + 0xFC000000, + 0xFC000000, + 0x2802C144, + 0xA1328900, + 0x22BAEDC0, + 0x88B2E138, + 0x2ABAEDC0, + 0x100003AA, + 0x22B44066, + 0x23644045, + 0xAAB52800, + 0x8115A0B0, + 0xBCBAE304, + 0xAAD52020, + 0x80B2E0D0, + 0xFC000000, + 0x2154C144, + 0x20D2C001, + 0x22BAE642, + 0xAAD36840, + 0x80D2E0D0, + 0x0A354808, + 0xA1328900, + 0x22BAEDC0, + 0x88B2E138, + 0x2ABAEDC0, + 0x100003AA, + 0x22B44066, + 0x23644045, + 0xBCB00024, + 0xC202D702, + 0x1800D8C7, + 0xFC000000, + 0xFC000000, + 0x020013F3, + 0x2154C144, + 0x212A4000, + 0xA4A48A80, + 0x06748903, + 0xFC000000, + 0xBCB00FF4, + 0x22B2879C, + 0x2A0287B4, + 0x280A4000, + 0x0A32E709, + 0x80B02000, + 0x22C2854C, + 0x82B2A120, + 0xC6000642, + 0xA4B2E100, + 0x86F2E020, + 0xBCEA6E04, + 0x22B28446, + 0x22D3C015, + 0xA152C480, + 0x2AD38015, + 0x22D3C026, + 0x2AD38026, + 0x233286E5, + 0xBCD000E4, + 0x97154020, + 0x8734E120, + 0x8544E110, + 0x233287FC, + 0xA134CA00, + 0x8604E0D0, + 0x02004403, + 0x82D36040, + 0x87452040, + 0x816460D0, + 0x2B428785, + 0xBD3FFFF0, + 0x80F3E0D2, + 0x0E0D400C, + 0xBD3FFFF8, + 0x8314E000, + 0x2143C0D5, + 0x213BC001, + 0x82F3E042, + 0x0E1D4006, + 0x82D36040, + 0xA5352100, + 0x211BC001, + 0x20D3C0D5, + 0xA5136100, + 0x2B338086, + 0x2B1380A6, + 0x22D3C046, + 0x2AD380C6, + 0x2313C065, + 0x20F3C165, + 0x20D280C4, + 0x8A02E300, + 0x0200600A, + 0xA4F46100, + 0x2AF380E6, + 0x96D34041, + 0x0652E004, + 0x2332853C, + 0x86036040, + 0x0200434D, + 0x86036060, + 0x0200434B, + 0xBD300FF4, + 0x02000349, + 0x07F2D040, + 0x234AF5A0, + 0xA1348A00, + 0x23544086, + 0x8404E140, + 0x02008805, + 0x07E55004, + 0xBD300244, + 0x02001117, + 0xCB35601C, + 0x2334405C, + 0xA134CA00, + 0x2B3287A4, + 0x06D5A80F, + 0x23428534, + 0x23344054, + 0x0E1D18EB, + 0x2344405C, + 0xBD5002B4, + 0x06650809, + 0x82C32060, + 0xA1450250, + 0xFC000000, + 0x20C280C5, + 0xA0C302E0, + 0x840520C0, + 0x020058E1, + 0xBD500294, + 0x23428785, + 0xA0C59600, + 0x840520C0, + 0x0200E01F, + 0x2342879C, + 0x22C2853C, + 0x0A352C06, + 0x234440B5, + 0xBD5FFFF4, + 0x84032130, + 0x02005818, + 0xBCC00294, + 0x84052150, + 0x0200602F, + 0x2334409C, + 0xA0C39C00, + 0x22C28446, + 0xA1330800, + 0x22C28554, + 0x8604E020, + 0x020068CB, + 0x82C32040, + 0xBD500294, + 0x80C320A0, + 0xFC000000, + 0xFC000000, + 0x20C30001, + 0x840520C0, + 0x02006020, + 0x2334409C, + 0xA0C39C00, + 0x020020C0, + 0xBD500294, + 0xFC000000, + 0x020010BD, + 0xBD500024, + 0x83546180, + 0x22C28544, + 0x82C32080, + 0x814320A0, + 0x21354000, + 0x83556010, + 0x20C50000, + 0x0A34C009, + 0x84032130, + 0x02004804, + 0x020023FA, + 0x83452010, + 0xFC000000, + 0x020020AE, + 0xBD500294, + 0xFC000000, + 0x22CA82C2, + 0xBD3A8304, + 0x0A330802, + 0xBD3A82C4, + 0xC6C01402, + 0x28C4C002, + 0x2334409C, + 0xA0C39C00, + 0xCB31401E, + 0x23444007, + 0x83452010, + 0xC93180CE, + 0x815560C0, + 0x2B444007, + 0x53134080, + 0x07F2D0C0, + 0x235286C5, + 0xFC000000, + 0x0A356805, + 0x83B46180, + 0xBD010500, + 0x235AB770, + 0x2B5286C5, + 0x100004D8, + 0xA5B6E100, + 0xFC000000, + 0x0702E807, + 0xA0C2C550, + 0x86032030, + 0x02004804, + 0x100007A5, + 0xBD0106C0, + 0x83A56020, + 0x80C56170, + 0x59430130, + 0x82C56020, + 0x82D2AEC0, + 0xBD3FFFFC, + 0x28034000, + 0x42D4C017, + 0xFC000000, + 0xFC000000, + 0xA4E01B30, + 0xA4E61C00, + 0x84C32190, + 0x97330011, + 0x07E2E055, + 0x22C44086, + 0xA4F4CF00, + 0x07F31046, + 0xFC000000, + 0x20C0C000, + 0x840320A6, + 0x0200488B, + 0x8230E010, + 0x8A30E048, + 0x22D4405C, + 0xA132C550, + 0x06735003, + 0x2A128784, + 0x2A028784, + 0x8604E010, + 0x02005C0B, + 0xFC000000, + 0xBCC00294, + 0x2AB28786, + 0x2AE28407, + 0xBCB00814, + 0x29294000, + 0xC202D702, + 0x02002325, + 0x82514012, + 0x8A51440A, + 0xA0C2D080, + 0xA112C650, + 0x8604E000, + 0x02005C17, + 0x233AF361, + 0x06734802, + 0xA4E043B0, + 0x22B287FC, + 0xA0D2CA00, + 0x24B4C002, + 0xA4F045C0, + 0xA4E30B30, + 0xA4E44780, + 0xA4E34AE0, + 0x0A32D87D, + 0x8EE3A803, + 0x2CE4C003, + 0x82B4C080, + 0x8AB2C019, + 0x2ABAF361, + 0xBCB00064, + 0xD002C122, + 0xBCC00294, + 0x0200230B, + 0xBCB00024, + 0xD002C0C0, + 0x2AC2876C, + 0xA0B2D000, + 0x2AB2875C, + 0x2AE28407, + 0x8EB4A800, + 0x22DAF481, + 0xBCC01514, + 0xC2031702, + 0x2CB34000, + 0x82B36010, + 0x020022FE, + 0x8AB2E408, + 0x2ABAF481, + 0x22BAF580, + 0x8CB2E0A6, + 0xFC000000, + 0x2ABAF580, + 0x1800D947, + 0xFC000000, + 0xFC000000, + 0x22C28406, + 0xA4C61C00, + 0x2AC28406, + 0x2B8286E5, + 0x96D4C010, + 0x22C44094, + 0xA1530C00, + 0x22C2879C, + 0xA4C04240, + 0x0200202B, + 0x2AD287B4, + 0x2AC2879C, + 0xA0C2C570, + 0x96D30010, + 0xA0C2C390, + 0x80C360C0, + 0x2AC2875C, + 0x2A1286D4, + 0x2AB28786, + 0xBD500FF4, + 0xA0C39C00, + 0x22E28406, + 0xA4E31C00, + 0x2AE28406, + 0x0200201C, + 0x96C4C010, + 0x2AC287B4, + 0x07D34015, + 0x07E36014, + 0x22BAF4E0, + 0x23428525, + 0x0612EC11, + 0x22F28544, + 0x22B2854C, + 0x06534C02, + 0x83452280, + 0x84B3E0B0, + 0x82F3E0C0, + 0x84B520B0, + 0xA0B2E000, + 0x20F280F5, + 0x9743C0A1, + 0x0643E806, + 0xA5400400, + 0x8402E140, + 0x0200C003, + 0x00001011, + 0xA51043F0, + 0x00002011, + 0xFC000000, + 0xFC000000, + 0xBD500294, + 0x20C0C000, + 0x840320A6, + 0x02004818, + 0x8230E010, + 0x22C28407, + 0x8A30E048, + 0x07E2D003, + 0x22B286E5, + 0xA4C2DC00, + 0x2AC28406, + 0x2B52863C, + 0x22CAE1E1, + 0xA0B34D00, + 0x8EB2E800, + 0x28B30000, + 0x82B30010, + 0x8AB2C408, + 0x2ABAE1E1, + 0x020022AE, + 0xBCB00114, + 0xC202D702, + 0xBCC00024, + 0xC2031702, + 0x18010B47, + 0xFC000000, + 0xFC000000, + 0xBCC00024, + 0xC2031702, + 0x18012947, + 0xFC000000, + 0xFC000000, + 0xBCB00024, + 0xC202D702, + 0x18013247, + 0xFC000000, + 0xFC000000, + 0x20B0C000, + 0x8402E0A6, + 0x02004BF9, + 0x8230E010, + 0x8A30E048, + 0x22B287FC, + 0xA0B2CA00, + 0x96C2C0F0, + 0xA4C3DE00, + 0xBCB00034, + 0xD002C0C6, + 0xA0B28A80, + 0x02002395, + 0xBCC00064, + 0xD00300B2, + 0xA1839C00, + 0x860626E0, + 0x0200D003, + 0xBD300704, + 0x83362020, + 0x8342A100, + 0xA0D3DE00, + 0x22CAF520, + 0x236ADD42, + 0xA8C360C0, + 0x96C30080, + 0x81932160, + 0x02002003, + 0x80C66150, + 0x87532020, + 0x81702000, + 0xBD6A9B84, + 0x20C6C002, + 0xA1E30BB0, + 0x08378010, + 0x97A78010, + 0xA1E30D50, + 0x96D78010, + 0x21D581A5, + 0x81C520D0, + 0x83B6E040, + 0xA1A30B00, + 0x0000201D, + 0xA1D32000, + 0xA0C31000, + 0x855560D0, + 0x818620D0, + 0x06876C0E, + 0x854520D0, + 0x8134E0D0, + 0x80D6E000, + 0x81A6E0C0, + 0x83B6A030, + 0xA5B00400, + 0x814520C0, + 0x8534E0C0, + 0x8175E0C0, + 0x50D540C0, + 0x020023E8, + 0x20C6C002, + 0xA1E30BB0, + 0x0E0E83E5, + 0x20C6C002, + 0xA1E30BB0, + 0x80C52000, + 0x87A6A010, + 0x20D6C002, + 0x28D30002, + 0x0A36ABFD, + 0x83B6E040, + 0x82C32040, + 0x020023DB, + 0x20C6C002, + 0xA1E30BB0, + 0x855560D0, + 0x818620D0, + 0x0200202E, + 0x854520D0, + 0x8134E0D0, + 0x855560D0, + 0x818620D0, + 0x0200203D, + 0x854520D0, + 0x8134E0D0, + 0x855560D0, + 0x818620D0, + 0x02002047, + 0x854520D0, + 0x8134E0D0, + 0x815560D0, + 0x858620D0, + 0x06876C0E, + 0x814520D0, + 0x8534E0D0, + 0x80D6E000, + 0x81A6E0C0, + 0x83B6A030, + 0xA5B00400, + 0x814520C0, + 0x8534E0C0, + 0x8175E0C0, + 0x50D540C0, + 0x020023BC, + 0x20C6C002, + 0xA1E30BB0, + 0x0E0E83B9, + 0x20C6C002, + 0xA1E30BB0, + 0x80D52000, + 0x87A6A010, + 0x20C6C002, + 0x28C34002, + 0x0A36ABFD, + 0x83B6E040, + 0x82D36040, + 0x020023AF, + 0x20C6C002, + 0xA1E30BB0, + 0x815560D0, + 0x858620D0, + 0x814520D0, + 0x8534E0D0, + 0x80D6E0C0, + 0xFC000000, + 0x81C52000, + 0x20C34002, + 0x28C70002, + 0x83B36040, + 0x83C72040, + 0x87A6A010, + 0x20C6C003, + 0x28C70003, + 0x0A36ABFD, + 0x83B6E080, + 0x83C72080, + 0x0200239B, + 0x20C6C002, + 0xA1E30BB0, + 0x815560D0, + 0x858620D0, + 0x814520D0, + 0x8534E0D0, + 0x81B6E0C0, + 0x81C52000, + 0x87A6A010, + 0x20C6C003, + 0x28C70003, + 0x0A36ABFD, + 0x83B6E080, + 0x83C72080, + 0x0200238C, + 0x20C6C002, + 0xA1E30BB0, + 0x815560D0, + 0x858620D0, + 0x814520D0, + 0x8534E0D0, + 0x81B6E0C0, + 0x81C52000, + 0x87A6A010, + 0x20C6C003, + 0x28C70003, + 0x0A36ABFD, + 0x83B6E080, + 0x83C72080, + 0xFC000000, + 0x20C6C002, + 0x28C70002, + 0x83B6E040, + 0x82C72040, + 0x02002378, + 0x20C6C002, + 0xA1E30BB0, + 0x80D560D0, + 0x96C68020, + 0x51DB40C0, + 0x814520C0, + 0x8534E0C0, + 0x8175E0C0, + 0x0200236F, + 0x20C6C002, + 0xA1E30BB0, + 0x87A6A010, + 0x20C74002, + 0x28C70002, + 0x0A36ABFD, + 0x83D76040, + 0x83C72040, + 0x02002366, + 0x20C6C002, + 0xA1E30BB0, + 0x87A6A010, + 0x20C74003, + 0x28C70003, + 0x0A36ABFD, + 0x83D76080, + 0x83C72080, + 0x0200235D, + 0x20C6C002, + 0xA1E30BB0, + 0x86C6E020, + 0x96D68011, + 0x96D34020, + 0x81B6E0D0, + 0x87A6A010, + 0x20D30001, + 0x28D70001, + 0x0A36ABFD, + 0x82C32020, + 0x83C72020, + 0x02002350, + 0x20C6C002, + 0xA1E30BB0, + 0x87A6A010, + 0x20C6C002, + 0x28C70002, + 0x0A36ABFD, + 0x83B6E040, + 0x83C72040, + 0x02002347, + 0x20C6C002, + 0xA1E30BB0, + 0x20C6C002, + 0x83B6E040, + 0xA0D32100, + 0xA0C32000, + 0x21A70001, + 0x88D6A0D0, + 0x8CC360C0, + 0x28C70001, + 0x0200233C, + 0x20C6C002, + 0xA1E30BB0, + 0x02002005, + 0x80C520C0, + 0x81A361B6, + 0x80C520C0, + 0x81A520D0, + 0x06F76408, + 0xA0D75080, + 0x21C30001, + 0x80C720D0, + 0x28C68001, + 0x0200232F, + 0x20C6C002, + 0xA1E30BB0, + 0x86C02010, + 0xFC000000, + 0x8CC360C1, + 0x80C720C0, + 0x28C68001, + 0x02002327, + 0x20C6C002, + 0xA1E30BB0, + 0x02002005, + 0x81C520C0, + 0x80C361B6, + 0x81C520C0, + 0x80C520D0, + 0x94D041A0, + 0x87A36010, + 0xA0D74880, + 0x21C70001, + 0x94D700D1, + 0x89C361A0, + 0xA1D748C0, + 0x94D681D0, + 0x95C701D0, + 0x21A30001, + 0x88D6A0D8, + 0x8CD361C0, + 0x28D30001, + 0x02002312, + 0x20C6C002, + 0xA1E30BB0, + 0x97C68010, + 0x84D521C0, + 0x80C52000, + 0x855561C0, + 0x818621C0, + 0x854521C0, + 0x8134E1C0, + 0x87E7A010, + 0x21C30001, + 0x29C34001, + 0x0A37ABFD, + 0x82C32020, + 0x82D36020, + 0x86C6E020, + 0x97C68011, + 0x97C70020, + 0x81B6E1C0, + 0x87A6A010, + 0x21C30001, + 0x29C34001, + 0x0A36ABFD, + 0x82C32020, + 0x82D36020, + 0x020022F8, + 0x20C6C002, + 0xA1E30BB0, + 0x97A68010, + 0x86C72020, + 0x80D321A0, + 0x815561A0, + 0x858621A0, + 0x814521A0, + 0x8534E1A0, + 0x87E7A010, + 0x21A30001, + 0x29A34001, + 0x0A37ABFD, + 0x86C32020, + 0x86D36020, + 0x020022E8, + 0x20C6C002, + 0xA1E30BB0, + 0x80C520C0, + 0xFC000000, + 0xFC000000, + 0x20D30000, + 0x86D36010, + 0x28D30000, + 0x020022DF, + 0x20C6C002, + 0xA1E30BB0, + 0x20C70001, + 0xFC000000, + 0xB8C001D0, + 0xFC000000, + 0xB8C00004, + 0x28C70001, + 0x020022D6, + 0x20C6C002, + 0xA1E30BB0, + 0x20D70001, + 0xFC000000, + 0x0E0B42D1, + 0x20C6C002, + 0xA1E30BB0, + 0xB8D001D0, + 0xFC000000, + 0xB8D00004, + 0x28D70001, + 0x0E0B4ACA, + 0xFC000000, + 0xFC000000, + 0x020022C7, + 0xBCDFFFF0, + 0x28D70001, + 0x02002005, + 0x80D361B6, + 0x81C321B6, + 0x80D520D0, + 0x81C520C0, + 0x81D02000, + 0x28070001, + 0x86C6A010, + 0x21A34001, + 0x82D36020, + 0xB9D68000, + 0x0E0B0BFD, + 0x86C32010, + 0xFC000000, + 0xB9D00004, + 0x29D70001, + 0x020022B4, + 0x20C6C002, + 0xA1E30BB0, + 0x97A68010, + 0x20D6C002, + 0x83B6E040, + 0x80C360C0, + 0x41C301A7, + 0xFC000000, + 0xFC000000, + 0x020022AA, + 0x20C6C002, + 0xA1E30BB0, + 0x97A68010, + 0x81C520C0, + 0x20C6C002, + 0x83B6E040, + 0x80C320D0, + 0x51C301A0, + 0xFC000000, + 0xFC000000, + 0x0200229F, + 0x20C6C002, + 0xA1E30BB0, + 0xBC8A9B84, + 0xBC913D84, + 0x2A920015, + 0xBC9144C4, + 0x2A920025, + 0xBC914604, + 0x2A920035, + 0xBC914744, + 0x2A920045, + 0xBC914884, + 0x2A920055, + 0xBC914FC4, + 0x2A920065, + 0xBC9154C4, + 0x2A920075, + 0xBC915884, + 0x2A920085, + 0xBC915D84, + 0x2A920095, + 0xBC915FC4, + 0x2A9200A5, + 0xBC916204, + 0x2A9200B5, + 0xBC916444, + 0x2A9200C5, + 0xBC916784, + 0x2A9200D5, + 0xBC9169C4, + 0x2A9200E5, + 0xBC916C84, + 0x2A9200F5, + 0xBC916D44, + 0x2A920105, + 0xBC9171C4, + 0x2A920115, + 0xBC917284, + 0x2A920125, + 0xBC917704, + 0x2A920135, + 0xBC917D84, + 0x2A920145, + 0xBC918184, + 0x2A920155, + 0xBC9183C4, + 0x2A920165, + 0xBC918604, + 0x2A920175, + 0xBC9189C4, + 0x2A920185, + 0xBC918A84, + 0x2A920195, + 0xBC918E84, + 0x2A9201A5, + 0xBC919104, + 0x2A9201B5, + 0x00002010, + 0xFC000000, + 0xFC000000, + 0x21220003, + 0xA0E4CD00, + 0x0A34802A, + 0xA4A38A80, + 0xBC901004, + 0x82822080, + 0x88822098, + 0x07F4C065, + 0xFC000000, + 0x229AF580, + 0x9E924000, + 0x22B28105, + 0x06524077, + 0xD003C004, + 0x22928105, + 0xA0B24A00, + 0x229AF4F0, + 0x2A028774, + 0x8402E090, + 0x02004802, + 0x2A128774, + 0xBC9AED04, + 0x23428687, + 0x2B228407, + 0x20B240B4, + 0x06054806, + 0xA0950A80, + 0x840260B0, + 0x02004003, + 0x8E956040, + 0x8B526018, + 0x229287FC, + 0x8A926F00, + 0x2B428687, + 0x23128774, + 0x8C9260B0, + 0x2A9287FC, + 0x8692E010, + 0x0A346809, + 0x82926080, + 0xCA95301E, + 0x1000007A, + 0xBD100014, + 0xBCBAE1E0, + 0x1801A247, + 0xFC000000, + 0xFC000000, + 0x8352A120, + 0x829560A0, + 0x834560E0, + 0xBCB000C4, + 0x21124001, + 0x86B2E020, + 0x86926020, + 0x29150001, + 0x0A32DBFC, + 0x87452020, + 0xA1149C00, + 0x860466E0, + 0x0200D003, + 0xBD4006E4, + 0x81446000, + 0x229AECA1, + 0x83726120, + 0xA094DE00, + 0x22BAF520, + 0x236ADD42, + 0xA89260B0, + 0x96924080, + 0x80926160, + 0x80926170, + 0x59524140, + 0x82B2AEC0, + 0xBC9FFFFC, + 0x2802C000, + 0x42B24017, + 0xFC000000, + 0xFC000000, + 0x82B5E040, + 0x86946040, + 0x9712C011, + 0x22B287FC, + 0x234AF441, + 0xA0B2CA00, + 0xA532CD00, + 0x24B50002, + 0xA5225C00, + 0xA5244EE0, + 0x0A32C80D, + 0x2D250003, + 0x82950080, + 0x8A924019, + 0x2A9AF441, + 0xBC900064, + 0xD00240E2, + 0xBCB000A4, + 0xBC900024, + 0xD00240B0, + 0x1801A247, + 0xFC000000, + 0xFC000000, + 0x229287FC, + 0xA0924A00, + 0x96B240F0, + 0xA4B4DE00, + 0x020023F4, + 0xBC900034, + 0xD00240B6, + 0xD003C004, + 0xA094CF60, + 0xA5301560, + 0x86026020, + 0x02004009, + 0x86026040, + 0x02005007, + 0x229287FC, + 0xA0924A00, + 0x96B240F0, + 0xA4B4DE00, + 0xBC900034, + 0xD00240B6, + 0xA094CD00, + 0xBCB00064, + 0xD002C092, + 0x1801A247, + 0xFC000000, + 0xFC000000, + 0x82822000, + 0x1801A247, + 0xFC000000, + 0xFC000000, + 0xBC900024, + 0xC2025702, + 0x1801A487, + 0xFC000000, + 0xFC000000, + 0x228AE4E1, + 0xC2021381, + 0xBC800254, + 0x96820020, + 0x8E822030, + 0xC2021340, + 0xBC9A98A4, + 0xBC8A6604, + 0xFC000000, + 0x20D24001, + 0xFC000000, + 0x0A334012, + 0xBCB91904, + 0x22920015, + 0x96924010, + 0x22A20004, + 0xFC000000, + 0x2092C095, + 0x86A2A010, + 0x0200C006, + 0xFC000000, + 0x00082009, + 0xFC000000, + 0xFC000000, + 0x22A2000C, + 0x2AA20004, + 0x0E1B4BF2, + 0x86D36010, + 0x82822080, + 0x1801C5C7, + 0xFC000000, + 0xFC000000, + 0xBCBA7804, + 0xBCE00004, + 0xFC000000, + 0x22A2C066, + 0x2292C006, + 0x0A228013, + 0xA0C29D20, + 0xA0A28500, + 0x94A300A0, + 0x849260A0, + 0x0200D003, + 0x2A92C006, + 0x2A02C006, + 0x22A2C074, + 0xFC000000, + 0x0A329009, + 0x22A2C026, + 0x22C2C046, + 0x84A2A0C0, + 0x8402A090, + 0x02009004, + 0x2292C07C, + 0xD202400E, + 0x2A02C074, + 0x82E3A010, + 0x8603A040, + 0x0200EBE9, + 0x82B2E100, + 0xFC000000, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0x22A50035, + 0x22B50006, + 0x22950025, + 0x0A32800C, + 0x06F29C03, + 0xA0A29E00, + 0x96A28030, + 0x06F25C03, + 0xA0925E00, + 0x96924030, + 0x80A2E0A0, + 0x840260A0, + 0x0200D003, + 0x2AA50006, + 0x2A950006, + 0x83452080, + 0x8334E010, + 0xFC000000, + 0x0E5CDBEE, + 0xFC000000, + 0xFC000000, + 0x14000000, + 0xBD300004, + 0xBD493004, + 0xBC901D14, + 0xC2025702, + 0xBC902414, + 0xC2025702, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0xBCEAE204, + 0xBCAAED94, + 0x22CAED90, + 0xFC000000, + 0x0A330006, + 0xFC000000, + 0x1000077D, + 0xBC81DE44, + 0x2693F342, + 0x28C28000, + 0x1801DC07, + 0xFC000000, + 0xFC000000, + 0xBCD00014, + 0xC2035170, + 0xC6D01170, + 0xFC000000, + 0x06035BFC, + 0x2763F382, + 0xBD500024, + 0x82D3A000, + 0x84926160, + 0x82926020, + 0x840260C0, + 0x0200E005, + 0x80E5A0C0, + 0x83732000, + 0x82C26000, + 0x26E3F302, + 0x2EE3F3C2, + 0xBC9FFFFC, + 0xBCEAF544, + 0x58D580C0, + 0x28038000, + 0x42E24010, + 0x2A0A9810, + 0xFC000000, + 0xFC000000, + 0x20938000, + 0xFC000000, + 0x0A3243FE, + 0x8575E0C0, + 0x2693F3C2, + 0x2E93F382, + 0x0A35E006, + 0x80D360C0, + 0x82C5E000, + 0x020023EE, + 0x83626000, + 0x80E260C0, + 0x00002008, + 0xC2055170, + 0xFC000000, + 0x81502000, + 0x81602090, + 0x80C62000, + 0xBDB00004, + 0x0A330016, + 0xBD501FC4, + 0x84032150, + 0x0200C003, + 0x02001008, + 0x81532000, + 0x84D32150, + 0x86036600, + 0x02008804, + 0x82D36600, + 0x84D560D0, + 0x8B536038, + 0x84C32150, + 0x82D56040, + 0x81502000, + 0xA5535800, + 0xA55002F0, + 0xA55002C0, + 0x83B6E010, + 0x020023ED, + 0x29558001, + 0x8365A020, + 0x86C5A020, + 0xA55042C0, + 0x29530001, + 0x86C6A100, + 0x80D02090, + 0x8375E100, + 0x52D30100, + 0x80C32000, + 0x00002010, + 0x83862100, + 0x87532020, + 0x9683C161, + 0xA1720400, + 0xBC8002E4, + 0x813220F6, + 0xBC800284, + 0x814220F6, + 0x269BC185, + 0xA0825080, + 0xA4825080, + 0x2494C001, + 0xA1225080, + 0xA5225080, + 0x26CBC194, + 0xBD9A6804, + 0xA595C450, + 0x84022120, + 0x020040F8, + 0x1000092B, + 0xBD01F780, + 0xBC9000D4, + 0x24E50001, + 0xA0839080, + 0xA4839080, + 0x0A3240DA, + 0xBC9A7004, + 0x060328FE, + 0xA495C450, + 0x26CBC0C6, + 0xAAE22080, + 0x815320E0, + 0xBD1000D4, + 0x22EAF520, + 0x22CADD42, + 0xA8E360E0, + 0x96E38080, + 0xA4D44AF0, + 0x2AD24006, + 0x22DAECA1, + 0x82D36190, + 0x8B136078, + 0x80D3A0C0, + 0x80D36110, + 0xA0E35180, + 0xA4E35180, + 0x96D34081, + 0xA4E35100, + 0x96D34081, + 0xA4E35080, + 0x2AE24026, + 0x52954080, + 0xBC904004, + 0x82822010, + 0x88D22098, + 0x268BC046, + 0x82822020, + 0xA0935080, + 0xA4935080, + 0x2C950001, + 0x534A0020, + 0x268BC106, + 0xAA94A080, + 0x80822090, + 0xBC988004, + 0xA495C470, + 0x82926020, + 0x43920087, + 0xFC000000, + 0xFC000000, + 0x22864015, + 0xA1521080, + 0xA5521080, + 0x2286400C, + 0x81122110, + 0x22864006, + 0x0A3560BB, + 0xA1620B80, + 0x23864026, + 0x860566E0, + 0x0200D003, + 0xBC8006E4, + 0x80856000, + 0xA0E61E00, + 0x22DAF520, + 0xFC000000, + 0xA8D3A0D0, + 0x96D34080, + 0xFC000000, + 0x80C360C0, + 0x80D32110, + 0xFC000000, + 0x22CAF550, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A330007, + 0xFC000000, + 0xBCC00024, + 0xC2031702, + 0x18020907, + 0xFC000000, + 0xFC000000, + 0x2A1AF550, + 0xFC000000, + 0x40934087, + 0xFC000000, + 0xFC000000, + 0xBC988004, + 0xA495C470, + 0x82C22020, + 0x228AF242, + 0xCC9200C2, + 0xBCCAB404, + 0xA4C5C430, + 0xBDA000D4, + 0xBCD000B4, + 0x20830003, + 0xBCE00284, + 0x80E3A170, + 0xA4838C60, + 0xA4968A00, + 0xA49348D0, + 0x28830003, + 0xCEC2C082, + 0xFC000000, + 0x18021247, + 0xFC000000, + 0xFC000000, + 0x22CB6F03, + 0xFC000000, + 0x060348C8, + 0x06336069, + 0x2A0B6F42, + 0x2A0AF550, + 0xA0E34C50, + 0x96C38080, + 0x82856040, + 0xA0961E00, + 0xA4939F00, + 0x06E34802, + 0xA49043E0, + 0x2B1306C5, + 0x2A0306D4, + 0x2B630774, + 0x2B730634, + 0x28888003, + 0xBC802614, + 0xC2021702, + 0xBC801004, + 0x8220A082, + 0x8820A08A, + 0xBC904004, + 0x8284A010, + 0x88822098, + 0x269BC066, + 0xA0C21080, + 0xA4C21080, + 0x2CC4C001, + 0x82826020, + 0x82A2A010, + 0x8602A100, + 0x02008026, + 0x5B3A0020, + 0xBC9AF5C4, + 0xBC8FFFFC, + 0x42920017, + 0xFC000000, + 0xFC000000, + 0x228AF550, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x18021C47, + 0xFC000000, + 0xFC000000, + 0x2A1AF550, + 0x269BC006, + 0x2484C001, + 0xBC870018, + 0x28864002, + 0x53924047, + 0xFC000000, + 0xFC000000, + 0x26CBC194, + 0x269BC006, + 0x24850001, + 0x06331806, + 0xBC850008, + 0x28864002, + 0x53924047, + 0xFC000000, + 0xFC000000, + 0x0200233D, + 0x2A0AF550, + 0x86A2A100, + 0x0200133A, + 0x533A0020, + 0x0A328020, + 0xFC000000, + 0x228AF550, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x18022507, + 0xFC000000, + 0xFC000000, + 0x2A1AF550, + 0x268BC006, + 0x2494C001, + 0xBC970018, + 0x28964002, + 0x53920047, + 0xFC000000, + 0xFC000000, + 0x26ABC194, + 0x269BC006, + 0x24850001, + 0x06329806, + 0xBC850008, + 0x28864002, + 0x53924047, + 0xFC000000, + 0xFC000000, + 0x2A0AF550, + 0xBCA00004, + 0x1801F287, + 0xFC000000, + 0xFC000000, + 0x80802000, + 0x10080917, + 0x80962000, + 0xBD100374, + 0x020013A7, + 0xCB15601C, + 0xBC9002A4, + 0x80C260F6, + 0x269BC086, + 0x82926020, + 0x42CA4027, + 0xFC000000, + 0xFC000000, + 0x24930001, + 0xA0C25080, + 0xA4C25080, + 0x840220C0, + 0x02006BCC, + 0xBC800384, + 0xCA85601C, + 0xBCA00004, + 0xBC800024, + 0xC2021702, + 0x1801F287, + 0xFC000000, + 0xFC000000, + 0x02002391, + 0xBC800034, + 0xD0020186, + 0xBC800304, + 0x809220F6, + 0x268BC0A6, + 0x82822020, + 0x429A0027, + 0xFC000000, + 0xFC000000, + 0x24924001, + 0xA0825080, + 0xA4825080, + 0x84022120, + 0x020043B5, + 0x020022FD, + 0xFC000000, + 0xFC000000, + 0xAAE22200, + 0x811320E0, + 0xBD5000D4, + 0x22EAF520, + 0x22CADD42, + 0xA8E360E0, + 0x97638080, + 0xA4D54AF0, + 0x2AD24026, + 0x22DAECA1, + 0x82D36190, + 0x8AE36078, + 0x80D5A0C0, + 0x815360E0, + 0xA0D55180, + 0xA4D55180, + 0x97554081, + 0xA4D55100, + 0x97554081, + 0xA4D55080, + 0x2AD240C6, + 0x52944200, + 0xBC904004, + 0x82822010, + 0x88D22098, + 0x268BC046, + 0x82922020, + 0xA0835080, + 0xA4835080, + 0x2C850001, + 0x534A4020, + 0x268BC106, + 0xAA94A200, + 0x80D22090, + 0xBC888004, + 0xA485C470, + 0x82922020, + 0x43934207, + 0xFC000000, + 0xFC000000, + 0x22864075, + 0xA1521080, + 0xA5521080, + 0x22D64085, + 0xA0835080, + 0xA4835080, + 0x811220E0, + 0x02002307, + 0x2366400C, + 0x23864026, + 0xFC000000, + 0xFC000000, + 0x02000331, + 0xFC000000, + 0x07F24006, + 0xA0C25E00, + 0xA4C68AF0, + 0x14000000, + 0xBC800034, + 0xD00200C6, + 0xA0825C00, + 0xBCEAE204, + 0x229AED90, + 0x8E822801, + 0x28838095, + 0x82C26020, + 0xFC000000, + 0x06430804, + 0x1000077D, + 0xBC824A04, + 0x2693F342, + 0x14000000, + 0x2ACAED90, + 0xFC000000, + 0x2683F642, + 0x8A022FF2, + 0x02005811, + 0x268C7D42, + 0xFC000000, + 0x06020002, + 0x07020BFA, + 0x2E0C7D42, + 0x96D240F0, + 0xBC900034, + 0xD00240D2, + 0x07020008, + 0xA0D21E10, + 0x228AF520, + 0x229AB742, + 0xA8836080, + 0x00002010, + 0x96820080, + 0x80922090, + 0xBCD00004, + 0x00001010, + 0xBC900004, + 0xA0920A00, + 0x969240F0, + 0xA4921E00, + 0x00002010, + 0xBC800034, + 0xD0020096, + 0x228AF430, + 0xFC000000, + 0x0A320006, + 0xBC800024, + 0xC2021702, + 0x180251C7, + 0xFC000000, + 0xFC000000, + 0xBC800014, + 0x2A8AF430, + 0xBC800054, + 0xC20211B0, + 0xC68011B0, + 0xFC000000, + 0x06020006, + 0xFC000000, + 0xFC000000, + 0x180256C6, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00000010, + 0x2A0AF430, + 0xFC000000, + 0xFC000000, + 0x00002010, + 0xBC800024, + 0xC20211B0, + 0xBCC00074, + 0x86022400, + 0x0200E810, + 0x8CC32082, + 0x8CB2E0B2, + 0x0A131005, + 0x86822400, + 0x42BA4400, + 0x02001006, + 0x86C32010, + 0x82C32070, + 0x42BA4407, + 0xFC000000, + 0xFC000000, + 0x86022400, + 0x0200E3F6, + 0x82B2E400, + 0x82926400, + 0x42BA4407, + 0xFC000000, + 0xFC000000, + 0x809020C6, + 0x808020B6, + 0x86026800, + 0x0200C807, + 0x86926800, + 0x528A8800, + 0x86026800, + 0x0200E3FD, + 0x82822800, + 0x82A2A800, + 0xFC000000, + 0x508A8097, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00001010, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, +}; +char *rdpa_version_fw_d = "$Change: 239581 $"; diff --git a/arch/arm/mach-bcmbca/bcm63146/Kconfig b/arch/arm/mach-bcmbca/bcm63146/Kconfig new file mode 100644 index 0000000000..09f581338d --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63146/Kconfig @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM63146 + +config TARGET_BCM963146 + bool "Broadcom 63146 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm63146" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x1607 + +config BCMBCA_DDR4_DEF_MCBSEL + hex "default DDR4 mcb selector value" + default 0x101633 +endif + +config RSVD_USE_MAX_FROM_ENV_AND_DT + bool "RSVD will use max value from env and DT" + default y + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm63146/Makefile b/arch/arm/mach-bcmbca/bcm63146/Makefile new file mode 100644 index 0000000000..e7f9f65ffb --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63146/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +obj-y += mmu_table.o +obj-y += cpu.o diff --git a/arch/arm/mach-bcmbca/bcm63146/cpu.c b/arch/arm/mach-bcmbca/bcm63146/cpu.c new file mode 100644 index 0000000000..10a23c3eee --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63146/cpu.c @@ -0,0 +1,169 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#if defined(CONFIG_BCMBCA_DDRC) +#include +#endif +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#endif +#include "tpl_params.h" + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + +static void enable_ts0_couner(void) +{ + BIUCFG->ts0_ctrl.CNTCR |= 0x1; +} +#elif defined(CONFIG_TPL_BUILD) +static void cci500_enable(void) +{ + /*Enable access from E2 and below */ + CCI500->secr_acc |= SECURE_ACCESS_UNSECURE_ENABLE; +} + +static void enable_ns_access(void) +{ + BIUCFG->bac.bac_permission |= 0x33; // Linux access to BAC_CPU_THERM_TEMP +} + +static void disable_memc_sram(void) +{ + uint32_t addr = MEMC_BASE + mc2_afx_sram_match_cfg_sram_start_addr_hi; + + writel(readl(addr)&~0x80000000, addr); +} + +static void setup_ubus_rangechk(void) +{ + /* Fix the default of RC0 to only enable lower 2G memory for ubus master */ + UBUS4_RANGE_CHK_SETUP->cfg[0].base = 0x13; + /* setup the second range check for the top DDR region */ + if (tplparams->ddr_size > 2048) { + UBUS4_RANGE_CHK_SETUP->cfg[1].control = 0x1f0; + UBUS4_RANGE_CHK_SETUP->cfg[1].srcpid[0] = 0xffffffff; + UBUS4_RANGE_CHK_SETUP->cfg[1].seclev = 0xffffffff; + /* enable ubus maser to access the upper 2GB */ + UBUS4_RANGE_CHK_SETUP->cfg[1].base = 0x13; + UBUS4_RANGE_CHK_SETUP->cfg[1].base_up = 0x1; + } +} +#endif + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + printf("Chip ID: BCM%X_%X\n",chipId,revId); +} +#endif + +#if defined(CONFIG_BCMBCA_PMC) +void boost_cpu_clock(void) +{ + printf("set cpu freq to 2000MHz\n"); + set_cpu_freq(2000); + pll_ch_freq_set(PMB_ADDR_BIU_PLL, 1, 4000/800); // raise ACEBIU clock rate to 800 MHz +} + +int set_cpu_freq(int freqMHz) +{ + int mdiv; + + if( freqMHz > 2000 || freqMHz < 400 ) + { + printf("%dMHz is not supported\n", freqMHz); + return -1; + } + + /* VCO at 4GHz, mdiv = Fvco/target frequency */ + mdiv = 4000/freqMHz; + + pll_ch_freq_set(PMB_ADDR_BIU_PLL, 0, mdiv); + + return 4000/mdiv; +} +#endif + +static int reset_plls(void) +{ + /* Force Reset eMMC PLL */ + pll_ch_reset(PMB_ADDR_RDPPLL, 1, PLLBPCMRegOffset(ch01_cfg)); + return 0; +} + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + enable_ts0_couner(); +#if defined(CONFIG_BCMBCA_DDRC) + spl_ddrinit_prepare(); +#endif + /* enable unalgined access */ + set_sctlr(get_sctlr() & ~CR_A); +#endif +#if defined(CONFIG_TPL_BUILD) + enable_ns_access(); + disable_memc_sram(); + setup_ubus_rangechk(); + cci500_enable(); +#endif + + reset_plls(); + return 0; +} + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_EMMC) + return BOOT_DEVICE_MMC1; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + uint32_t cpu, nr_cpus = 2; + ARM_CONTROL_REG ctrl_reg; + uint64_t rvbar = vector; + + printf("boot secondary cpu from 0x%lx\n", vector); + + cpu = 1; + while (cpu < nr_cpus) { + int stat; + + BIUCFG->cluster[0].rvbar_addr[cpu] = rvbar; + stat = PowerOnDevice(PMB_ADDR_ORION_CPU0 + cpu); + if (stat != kPMC_NO_ERROR) + printf("failed to power on secondary cpu %d - sts %d\n", cpu, stat); + + stat = ReadBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), &ctrl_reg.Reg32); + ctrl_reg.Bits.cpu_reset_n &= ~(0x1 << cpu); + stat |= WriteBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), ctrl_reg.Reg32); + if (stat != kPMC_NO_ERROR) + printf("failed to boot secondary cpu %d - sts %d\n", cpu, stat); + cpu++; + } + + return; +} +#endif diff --git a/arch/arm/mach-bcmbca/bcm63146/mmu_table.c b/arch/arm/mach-bcmbca/bcm63146/mmu_table.c new file mode 100644 index 0000000000..81762ff9cc --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63146/mmu_table.c @@ -0,0 +1,201 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include +#ifdef CONFIG_SPL_XIP_SUPPORT +#include +#endif + +static struct mm_region broadcom_bcm963146_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* DDR memory. Enable the maximum 4GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 2UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + { + .virt = 0x100000000UL, + .phys = 0x100000000UL, + .size = 2UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* MEMC control registers */ + { + .virt = 0x80040000UL, + .phys = 0x80040000UL, + .size = 0x2000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* DDR PHY control registers */ + { + .virt = 0x80060000UL, + .phys = 0x80060000UL, + .size = 0x6000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* DPFE control registers */ + { + .virt = 0x80070000UL, + .phys = 0x80070000UL, + .size = 0xc000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* LMEM for bootrom runtime */ + { + .virt = CONFIG_SYS_INIT_RAM_ADDR, + .phys = CONFIG_SYS_INIT_RAM_ADDR, + .size = CONFIG_SYS_INIT_RAM_SIZE, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + +#ifdef CONFIG_SPL_XIP_SUPPORT + /* NOR FLASH XIP Window */ + { + .virt = NOR_XIP_BASE_ADDR, + .phys = NOR_XIP_BASE_ADDR, + .size = 0x100000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#endif + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#else + /* DDR entries for cached memory, total size is a placehold + and will be filled in at run time. MUST be first entry */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 1UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* GIC */ + { + .virt = 0x81001000UL, + .phys = 0x81001000UL, + .size = 0x7000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* CCI-500 */ + { + .virt = 0x81100000, + .phys = 0x81100000, + .size = 0x91000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + { + /* XRDP PSRAM */ + .virt = 0x82000000UL, + .phys = 0x82000000UL, + .size = 0x30000, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + + { + /* XRDP Rest of block */ + .virt = 0x82700000UL, + .phys = 0x82700000UL, + .size = 0x600000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + { + /* ETH_PHY_TOP */ + .virt = 0x837ff000UL, + .phys = 0x837ff000UL, + .size = 0x1000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + { + /* PMC */ + .virt = 0xffa00000UL, + .phys = 0xffa00000UL, + .size = 0x200000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#endif + { + /* SoC peripheral */ + .virt = 0xff800000UL, + .phys = 0xff800000UL, + .size = 0x100000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* BIUCFG */ + { + .virt = 0x81060000, + .phys = 0x81060000, + .size = 0x3000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* UBUS4 Coherency Port */ + { + .virt = 0x810A0000, + .phys = 0x810A0000, + .size = 0x1000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm963146_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm63148/Kconfig b/arch/arm/mach-bcmbca/bcm63148/Kconfig new file mode 100644 index 0000000000..9df47ae0e0 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/Kconfig @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM63148 + +config TARGET_BCM963148 + bool "Broadcom 63148 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm63148" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x421 +endif + +config TPL_MAX_SIZE + default 1048576 + +config RSVD_USE_MAX_FROM_ENV_AND_DT + bool "RSVD will use max value from env and DT" + default y + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm63148/Makefile b/arch/arm/mach-bcmbca/bcm63148/Makefile new file mode 100644 index 0000000000..3d667300f4 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/Makefile @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +obj-y += cpu.o +obj-y += mmu_table.o +ifndef CONFIG_TPL_BUILD +# SPL +obj-$(CONFIG_SPL_BUILD) += pmc.o +endif + +ifndef CONFIG_SPL_BUILD +# u-boot proper +obj-$(CONFIG_BCMBCA_RDP) += rdp_fw/ +endif diff --git a/arch/arm/mach-bcmbca/bcm63148/cpu.c b/arch/arm/mach-bcmbca/bcm63148/cpu.c new file mode 100644 index 0000000000..e3565a31a3 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/cpu.c @@ -0,0 +1,182 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#endif + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) +static void set_b15_config(void) +{ + uint32_t reg = 0x0; + + /* set mcp0 read/write credits to 8 */ + /* And workaround for HW63148-100: Disabling write pairing by clearing bits 28-31.*/ + reg = B15CTRL->cpu_ctrl.credit; + reg &= 0x0fffff00; + reg |= 0x88; + B15CTRL->cpu_ctrl.credit = reg; + + /* set RAC_config0 to 0x0 to disable it */ + B15CTRL->cpu_ctrl.rac_cfg0 = 0x0; + + return; +} + +static void set_vr_gain(void) +{ + /* set the internal voltage regulator gain to 8. This reduces the response time and keeps + voltage supply to ddr stable. */ + PROCMON->SSBMaster.wr_data = 0x800; + PROCMON->SSBMaster.control = 0x3440; + PROCMON->SSBMaster.control = 0xb440; + while (PROCMON->SSBMaster.control & 0x8000) ; + + PROCMON->SSBMaster.wr_data = 0x802; + PROCMON->SSBMaster.control = 0x3440; + PROCMON->SSBMaster.control = 0xb440; + while (PROCMON->SSBMaster.control & 0x8000) ; + + PROCMON->SSBMaster.wr_data = 0x800; + PROCMON->SSBMaster.control = 0x3440; + PROCMON->SSBMaster.control = 0xb440; + while (PROCMON->SSBMaster.control & 0x8000) ; +} + +static void set_ubus_config(void) +{ + /* enable UBUS multiple read/write transaction to improve performance */ + B15CTRL->cpu_ctrl.ubus_cfg |= 0x70; +} +#endif + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + printf("Chip ID: BCM%X_%X\n",chipId,revId); +} +#endif + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SPI_NOR) != MISC_STRAP_BUS_BOOT_SPI_NOR) + return BOOT_DEVICE_NAND; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +#if defined(CONFIG_BCMBCA_PMC) +#define PLL_GET_CHANNEL_OFFSET(channel) (PLLBPCMRegOffset(ch01_cfg) + ((channel/2)*sizeof(PLL_CHCFG_REG)>>2)) +static void set_biu_pll_post_divider(int bpcmaddr, int channel, int mdiv) +{ + PLL_CHCFG_REG pll_ch_cfg; + int offset, mdiv_rb; + + if( channel < 0 || channel > 5 ) + return; + + offset = PLL_GET_CHANNEL_OFFSET(channel); + + ReadBPCMRegister(bpcmaddr, offset, &pll_ch_cfg.Reg32); + mdiv_rb = channel&1 ? pll_ch_cfg.Bits.mdiv1 : pll_ch_cfg.Bits.mdiv0; + if (mdiv_rb != mdiv) { + if( channel&1 ) + pll_ch_cfg.Bits.mdiv1 = mdiv; + else + pll_ch_cfg.Bits.mdiv0 = mdiv; + WriteBPCMRegister(bpcmaddr, offset, pll_ch_cfg.Reg32); + udelay(1000); + if( channel&1 ) + pll_ch_cfg.Bits.mdiv_override1 = 1; + else + pll_ch_cfg.Bits.mdiv_override0 = 1; + WriteBPCMRegister(bpcmaddr, offset, pll_ch_cfg.Reg32); + udelay(10000); + } + + return; +} + +void boost_cpu_clock(void) +{ + printf("set cpu freq to 1500MHz\n"); + set_cpu_freq(1500); +} + +int set_cpu_freq(int freqMHz) +{ + uint32_t val; + int mdiv0 = 2; + + /* we only support the following frequency: + * 1) 375, 750, and 1500 + * 2) 125, 250, 500, and 1000 */ + val = B15CTRL->cpu_ctrl.clock_cfg; + if ((freqMHz == 375) || (freqMHz == 750) || (freqMHz == 1500)) { + mdiv0 = 2; + val &= ~0xf; + val |= (1500 / freqMHz) - 1; + if (freqMHz == 1500) + val &= ~0x10; + } else if ((freqMHz == 125) || (freqMHz == 250) || (freqMHz == 500) || (freqMHz == 1000)) { + mdiv0 = 3; + val &= ~0xf; + val |= (1000 / freqMHz) - 1; + if (freqMHz == 1000) + val &= ~0x10; + } else if (freqMHz == 7501) { + /* this is a special setting of 750 MHz for hw team to try */ + mdiv0 = 4; + val &= ~0xf; + freqMHz = 750; + } else { + printf("cpufreq %dMHz is not supported\n", freqMHz); + return -1; + } + + set_biu_pll_post_divider(PMB_ADDR_B15_PLL, 0, mdiv0); + + B15CTRL->cpu_ctrl.clock_cfg = val; + + return freqMHz; +} +#endif + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + set_ubus_config(); + set_b15_config(); + set_vr_gain(); +#endif + /* enable unalgined access */ + set_cr(get_cr() & ~CR_A); + + return 0; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + printf("boot secondary cpu from 0x%lx\n", vector); + + *(volatile uint32_t*)(BOOTLUT_BASE+0x20) = vector; + + B15CTRL->cpu_ctrl.cpu1_pwr_zone_ctrl |= 0x400; + B15CTRL->cpu_ctrl.reset_cfg &= 0xfffffffd; + + return; +} +#endif diff --git a/arch/arm/mach-bcmbca/bcm63148/mmu_table.c b/arch/arm/mach-bcmbca/bcm63148/mmu_table.c new file mode 100644 index 0000000000..14b97757e5 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/mmu_table.c @@ -0,0 +1,90 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include "mmu_map_v7.h" + +static struct mm_region broadcom_bcm963148_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) +#if !defined(CONFIG_TPL_BUILD) + /* SPL table */ + + /* DDR memory. Enable the maximum 1GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000, + .phys = 0x00000000, + .size = SZ_1G, + .attrs = SECTION_ATTR_DEVICE, + }, + /* LMEM for SPL runtime */ + { + .virt = 0x80700000, + .phys = 0x80700000, + .size = SZ_1M, + .attrs = SECTION_ATTR_CACHED_MEM, + }, +#else + /* TPL table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + /* LMEM for SPL runtime */ + { + .virt = 0x80700000, + .phys = 0x80700000, + .size = SZ_1M, + .attrs = SECTION_ATTR_CACHED_MEM, + }, +#endif +#else + /* u-boot table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + { + /* APM */ + .virt = 0x80100000, + .phys = 0x80100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* RDP */ + .virt = 0x80200000, + .phys = 0x80200000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif + { + /* Register space (covers MEMC, USB, etc) */ + .virt = 0x80000000, + .phys = 0x80000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* PMC */ + .virt = 0x80400000, + .phys = 0x80400000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SoC peripheral */ + .virt = 0xfff00000, + .phys = 0xfff00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm963148_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm63148/pmc.S b/arch/arm/mach-bcmbca/bcm63148/pmc.S new file mode 100644 index 0000000000..70bfff18f5 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/pmc.S @@ -0,0 +1,237 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include + +/* ********************************************************************* + * pmc_send_cmd() + * + * send pmc cmd to DQM queue and wait for response + * + * + * Inputs: + * r0 - DQM input word0 + * r1 - DQM input word1 + * r2 - DQM input word2 + * r3 - DQM input word3 + * + * Outputs: + * r0 - DQM output word0 + * r1 - DQM output word1 + * r2 - DQM output word2 + * r3 - DQM output word3 + * + * Register used: + * r0, r1, r2, r3, r4 + ********************************************************************* */ +ENTRY(pmc_send_cmd) + + ldr r4, =PMC_DQM_QUEUE_DATA_BASE + add r4, #PMC_DQM_QUEUE_DATA_HOST_TO_PMC + str r0, [r4, #0x0] + str r1, [r4, #0x4] + str r2, [r4, #0x8] + str r3, [r4, #0xc] /* Write register value (the 4th word) intiates the write */ + + ldr r4, =PMC_DQM_BASE + mov r1, #2 /* Only need the status for DQM message queue 1 PMC to Host */ +pmcw: ldr r2, [r4, #PMC_DQM_NOT_EMPTY_STS] + and r2, r2, r1 /* get rid of everything except 2nd bit */ + cmp r2, #0 + beq pmcw /* Repeat until DQM1 is ready with data */ + + ldr r4, =PMC_DQM_QUEUE_DATA_BASE + add r4, #PMC_DQM_QUEUE_DATA_PMC_TO_HOST + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + ldr r3, [r4, #0xc] /* read word 3 ( read is complete ... DQM1 has been flushed) */ + + mov pc, lr +ENDPROC(pmc_send_cmd) + +/* ********************************************************************* + * pmb_send_cmd() + * + * register access using power mamagement bus directly + * + * + * Inputs: + * r0 - dev address + * r1 - register offset + * r2 - register value for write, ignore for read + * r3 - 0 for read, 1 for write + * Outputs: + * r0 - return value + * zero - success, 1 - time out, 2 - slave error + * r1 - read value + * + * Register used: + * r0, r1, r2, r3, r4 + ********************************************************************* */ +ENTRY(pmb_send_cmd) + + mov r4, #3 /* check which power management bus */ + ands r4, r0, LSR #8 + ldreq r4, =PMBM0_BASE + ldrne r4, =PMBM1_BASE + + and r0, #0xff + orr r1, r0, LSL #12 + orr r1, r3, LSL #PMB_CNTRL_CMD_SHIFT + + /* make sure PMBM is not busy */ +pmbw1: + mov r3, #1 + ldr r0, [r4, #PMB_CNTRL] + ands r3, r0, LSR #PMB_CNTRL_BUSY_SHIFT + bne pmbw1 + + /* store the data if for write */ + mov r3, r1, LSR #PMB_CNTRL_CMD_SHIFT + ands r3, #0x1 + beq scmd + str r2, [r4, #PMB_WR_DATA] +scmd: + /* send the cmd */ + str r1, [r4, #PMB_CNTRL] + mov r3, #1 + orr r1, r3, LSL #PMB_CNTRL_START_SHIFT + str r1, [r4, #PMB_CNTRL] + + /* make sure the cmd is done */ +pmbw2: + mov r3, #1 + ldr r0, [r4, #PMB_CNTRL] + ands r3, r0, LSR #PMB_CNTRL_START_SHIFT + bne pmbw2 + + /* check if any error */ + mov r3, #1 + ands r3, r0, LSR #PMB_CNTRL_TIMEOUT_ERR_SHIFT + movne r0, #1 + bne pmb_done + + mov r3, #1 + ands r3, r0, LSR #PMB_CNTRL_SLAVE_ERR_SHIFT + movne r0, #2 + bne pmb_done + + mov r0, #0 + mov r3, r1, LSR #PMB_CNTRL_CMD_SHIFT + ands r3, #0x1 + bne pmb_done + ldr r1, [r4, #PMB_RD_DATA] + +pmb_done: + mov pc, lr + +ENDPROC(pmb_send_cmd) + +/* ********************************************************************* + * pmc_write_bpcm_reg() + * + * perform a write to a BPCM register via the PMC message handler + * + * + * Inputs: + * r0 - dev address + * r1 - register offset + * r2 - register value to write + * + * Outputs: + * r0 - return value, pmc error code. + * zero - success, non zero - error + * + * Register used: + * r0, r1, r2, r3, r4, r10 + ********************************************************************* */ +ENTRY(pmc_write_bpcm_reg) + mov r10, lr /* persevere link reg across call */ + + ldr r4, =MISC_BASE /* check if PMC ROM is enabled or not */ + ldr r4, [r4, #MISC_STRAP_BUS] + lsr r4, #MISC_STRAP_BUS_PMC_ROM_BOOT_SHIFT + ands r4, #0x1 + beq nopmc1 + + mov r3, r2 + and r2, r1, #0xff /* register addr offset within pmbs device */ + ldr r4, =0x3ff + and r1, r0, r4 + lsl r1, #10 /* DQM message word1 pmb bus index[19:18]=0, dev addr within bus[17:10] */ + mov r0, #0xd /* DQM message word0 cmdId[7:0]=cmdWriteBpcmReg=0x0d */ + + bl pmc_send_cmd + + lsr r0, #8 + and r0, #0xff /* return the PMC error code */ + b write_reg_done + +nopmc1: /* use PMB direct access */ + mov r3, #1 /* 1 for write */ + bl pmb_send_cmd + +write_reg_done: + mov lr, r10 /* restore link */ + mov pc, lr +ENDPROC(pmc_write_bpcm_reg) + + +/* ********************************************************************* + * pmc_read_bpcm_reg() + * + * perform a read to a BPCM register via the PMC message handler + * + * + * Inputs: + * r0 - dev address + * r1 - register offset + * + * Outputs: + * r0 - return value, pmc error code. + * zero - success, non zero - error + * r1 - register value if return success + * + * Register used: + * r0, r1, r2, r3, r4, r10 + ********************************************************************* */ +ENTRY(pmc_read_bpcm_reg) + + mov r10, lr /* persevere link reg across call */ + + ldr r4, =MISC_BASE /* check if PMC ROM is enabled or not */ + ldr r4, [r4, #MISC_STRAP_BUS] + lsr r4, #MISC_STRAP_BUS_PMC_ROM_BOOT_SHIFT + ands r4, #0x1 + beq nopmc2 + + mov r3, #0 + and r2, r1, #0xff /* register addr offset within pmbs device */ + ldr r4, =0x3ff + and r1, r0, r4 + lsl r1, #10 /* DQM message word1 pmb bus index[19:18]=0, dev addr within bus[17:10] */ + mov r0, #0xb /* DQM message word0 cmdId[7:0]=cmdReadBpcmReg=0x0b */ + + bl pmc_send_cmd + + lsr r0, #8 + and r0, #0xff /* return the PMC error code */ + mov r1, r2 + b read_reg_done + +nopmc2: /* use PMB direct access */ + mov r3, #0 /* 0 for write */ + bl pmb_send_cmd + +read_reg_done: + mov lr, r10 /* restore link */ + mov pc, lr + +ENDPROC(pmc_read_bpcm_reg) + + diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/Makefile b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/Makefile new file mode 100644 index 0000000000..2d63fbb27b --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/Makefile @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +KBUILD_CPPFLAGS += --include linux/types.h + +obj-y += \ + runner_fw_b.o \ + runner_fw_c.o \ + runner_fw_d.o \ + predict_runner_fw_b.o \ + predict_runner_fw_c.o \ + predict_runner_fw_d.o + diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/predict_runner_fw_b.c b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/predict_runner_fw_b.c new file mode 100644 index 0000000000..755acf4f39 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/predict_runner_fw_b.c @@ -0,0 +1,459 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint16_t firmware_predict_B[] = { + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0008, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x8000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0010, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0800, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0400, + 0x0004, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0800, + 0x0000, + 0x1040, + 0x0000, + 0x0400, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0020, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x2000, + 0x0000, + 0x1000, + 0x0000, + 0x0400, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x2000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x1000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0020, + 0x0040, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x2000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0080, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x8000, + 0x0000, + 0x0202, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x4000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0400, + 0x0000, + 0x0008, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0040, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x4000, + 0x0000, + 0x0000, + 0x4000, + 0x0000, + 0x0002, + 0x0000, + 0x0000, + 0x0008, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0802, + 0x0000, + 0x0000, + 0x0000, + 0x1000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, +}; diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/predict_runner_fw_c.c b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/predict_runner_fw_c.c new file mode 100644 index 0000000000..475908727c --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/predict_runner_fw_c.c @@ -0,0 +1,267 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint16_t firmware_predict_C[] = { + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x1000, + 0x0000, + 0x0008, + 0x0000, + 0x0200, + 0x0488, + 0x0040, + 0x0000, + 0x0010, + 0x1000, + 0x4000, + 0x4000, + 0x0000, + 0x0000, + 0x0000, + 0x0040, + 0x0000, + 0x0000, + 0x0000, + 0x0020, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0100, + 0x0000, + 0x0000, + 0x0020, + 0x0002, + 0x0002, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0004, + 0x0000, + 0x0000, + 0x0000, + 0x8000, + 0x0080, + 0x0000, + 0x4004, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0080, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x8000, + 0x0000, + 0x0080, + 0x0000, + 0x0000, + 0x0040, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0002, + 0x0000, + 0x0400, + 0x0000, + 0x0000, + 0x8000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0800, + 0x0000, + 0x0100, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0020, + 0x0000, + 0x2000, + 0x0000, + 0x0000, + 0x0010, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0040, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x4000, + 0x0400, + 0x0020, + 0x0000, + 0x0000, + 0x0800, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, +}; diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/predict_runner_fw_d.c b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/predict_runner_fw_d.c new file mode 100644 index 0000000000..632715e686 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/predict_runner_fw_d.c @@ -0,0 +1,267 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint16_t firmware_predict_D[] = { + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0200, + 0x0000, + 0x1000, + 0x0000, + 0x0000, + 0x0000, + 0x1000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0101, + 0x0000, + 0x0000, + 0x0000, + 0x4000, + 0x0000, + 0x0800, + 0x0001, + 0x0000, + 0x0000, + 0x0020, + 0x0000, + 0x0200, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0800, + 0x0200, + 0x0400, + 0x0000, + 0x0004, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0010, + 0x0000, + 0x0000, + 0x0001, + 0x0010, + 0x0008, + 0x0004, + 0x0200, + 0x8004, + 0x0100, + 0x0000, + 0x0000, + 0x0000, + 0x2000, + 0x0080, + 0x0080, + 0x0000, + 0x0100, + 0x0200, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x1000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x8000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x1000, + 0x0000, + 0x8000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0080, + 0x0000, + 0x0001, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, + 0x0000, +}; diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_a_labels.h b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_a_labels.h new file mode 100644 index 0000000000..f70dccb825 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_a_labels.h @@ -0,0 +1,91 @@ +#ifndef RUNNER_A_CODE_ADDRESSES +#define RUNNER_A_CODE_ADDRESSES + +#define runner_a_start_task_initialization_task (0x14) +#define runner_a_initialization_task (0x14) +#define runner_a_start_task_timer_scheduler_set (0x3844) +#define runner_a_timer_scheduler_set (0x3844) +#define runner_a_start_task_cpu_rx_wakeup_request (0x2608) +#define runner_a_cpu_rx_wakeup_request (0x2608) +#define runner_a_start_task_flow_cache_wakeup_request (0xE78) +#define runner_a_flow_cache_wakeup_request (0xE78) +#define runner_a_start_task_cpu_tx_wakeup_request (0x2DB4) +#define runner_a_cpu_tx_wakeup_request (0x2DB4) +#define runner_a_start_task_policer_budget_allocator_1st_wakeup_request (0x3978) +#define runner_a_policer_budget_allocator_1st_wakeup_request (0x3978) +#define runner_a_start_task_wan_direct_wakeup_request (0x186C) +#define runner_a_wan_direct_wakeup_request (0x186C) +#define runner_a_start_task_wan_cpu_wakeup_request (0x204) +#define runner_a_wan_cpu_wakeup_request (0x204) +#define runner_a_start_task_wan_normal_wakeup_request (0x3C8) +#define runner_a_wan_normal_wakeup_request (0x3C8) +#define runner_a_start_task_downstream_multicast_wakeup_request (0x32F4) +#define runner_a_downstream_multicast_wakeup_request (0x32F4) +#define runner_a_start_task_debug_routine (0x11C) +#define runner_a_debug_routine (0x11C) +#define runner_a_start_task_free_skb_index_wakeup_request (0x3944) +#define runner_a_free_skb_index_wakeup_request (0x3944) +#define runner_a_free_skb_index_tx_abs_done (0x3944) +#define runner_a_start_task_dhd_tx_post (0x43C0) +#define runner_a_dhd_tx_post (0x43C0) +#define runner_a_start_task_dhd_tx_complete_wakeup_request (0x47E4) +#define runner_a_dhd_tx_complete_wakeup_request (0x47E4) +#define runner_a_dhd_tx_complete_check_next (0x47E4) +#define runner_a_start_task_ipsec_ds_wakeup_request (0x3C80) +#define runner_a_ipsec_ds_wakeup_request (0x3C80) +#define runner_a_start_task_ethwan2_normal_wakeup_request (0x260) +#define runner_a_ethwan2_normal_wakeup_request (0x260) +#define runner_a_gpe_sop_push_replace_ddr_sram_32 (0x1A28) +#define runner_a_gpe_sop_push_replace_sram_32_64 (0x1A9C) +#define runner_a_gpe_sop_push_replace_sram_64 (0x1AB0) +#define runner_a_gpe_sop_push_replace_sram_64_32 (0x1AC4) +#define runner_a_gpe_sop_pull_replace_ddr_sram_32 (0x1AD8) +#define runner_a_gpe_sop_pull_replace_sram_32_64 (0x1B4C) +#define runner_a_gpe_sop_pull_replace_sram_64 (0x1B9C) +#define runner_a_gpe_sop_pull_replace_sram_64_32 (0x1BD8) +#define runner_a_gpe_replace_pointer_32_ddr (0x1C28) +#define runner_a_gpe_replace_pointer_32_sram (0x1C4C) +#define runner_a_gpe_replace_pointer_64_sram (0x1C70) +#define runner_a_gpe_replace_16 (0x1C94) +#define runner_a_gpe_replace_32 (0x1CC8) +#define runner_a_gpe_replace_bits_16 (0x1CEC) +#define runner_a_gpe_copy_add_16_cl (0x1D18) +#define runner_a_gpe_copy_add_16_sram (0x1D24) +#define runner_a_gpe_copy_bits_16_cl (0x1D6C) +#define runner_a_gpe_copy_bits_16_sram (0x1D78) +#define runner_a_gpe_insert_16 (0x1DC0) +#define runner_a_gpe_delete_16 (0x1E28) +#define runner_a_gpe_decrement_8 (0x1E68) +#define runner_a_gpe_apply_icsum_16 (0x1E8C) +#define runner_a_gpe_apply_icsum_nz_16 (0x1EB0) +#define runner_a_gpe_compute_csum_16_cl (0x1EEC) +#define runner_a_gpe_compute_csum_16_sram (0x1EF8) +#define runner_a_gpe_buffer_copy_16_sram (0x1F38) +#define runner_a_gpe_buffer_copy_16_ddr (0x1F60) +#define runner_a_ingress_classification_key_src_ip (0x2168) +#define runner_a_ingress_classification_key_dst_ip (0x21AC) +#define runner_a_ingress_classification_key_ipv6_flow_label (0x21F0) +#define runner_a_ingress_classification_key_generic_rule_1 (0x2214) +#define runner_a_ingress_classification_key_generic_rule_2 (0x221C) +#define runner_a_ingress_classification_key_outer_tpid (0x2288) +#define runner_a_ingress_classification_key_inner_tpid (0x2294) +#define runner_a_ingress_classification_key_src_port (0x22B0) +#define runner_a_ingress_classification_key_dst_port (0x22D0) +#define runner_a_ingress_classification_key_outer_vlan (0x22F0) +#define runner_a_ingress_classification_key_inner_vlan (0x2308) +#define runner_a_ingress_classification_key_dst_mac (0x2324) +#define runner_a_ingress_classification_key_src_mac (0x232C) +#define runner_a_ingress_classification_key_ether_type (0x2354) +#define runner_a_ingress_classification_key_ip_protocol (0x2368) +#define runner_a_ingress_classification_key_dscp (0x238C) +#define runner_a_ingress_classification_key_ssid (0x23A8) +#define runner_a_ingress_classification_key_ingress_port (0x23AC) +#define runner_a_ingress_classification_key_outer_pbits (0x23BC) +#define runner_a_ingress_classification_key_inner_pbits (0x23D4) +#define runner_a_ingress_classification_key_number_of_vlans (0x23F0) +#define runner_a_ingress_classification_key_layer3_protocol (0x2400) +#define runner_a_cpu_rx_meter_budget_allocate (0x38C4) +#define runner_a_dhd_tx_post_close_aggregation (0x3910) +#define runner_a_schedule_free_skb_index (0x3928) + +#endif diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_b_labels.h b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_b_labels.h new file mode 100644 index 0000000000..e94578f36a --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_b_labels.h @@ -0,0 +1,56 @@ +#ifndef RUNNER_B_CODE_ADDRESSES +#define RUNNER_B_CODE_ADDRESSES + +#define runner_b_start_task_initialization_task (0x14) +#define runner_b_initialization_task (0x14) +#define runner_b_start_task_timer_scheduler_set (0x2E60) +#define runner_b_timer_scheduler_set (0x2E60) +#define runner_b_start_task_cpu_rx_wakeup_request (0x1548) +#define runner_b_cpu_rx_wakeup_request (0x1548) +#define runner_b_start_task_cpu_tx_wakeup_request (0x267C) +#define runner_b_cpu_tx_wakeup_request (0x267C) +#define runner_b_start_task_policer_budget_allocator_1st_wakeup_request (0x330C) +#define runner_b_policer_budget_allocator_1st_wakeup_request (0x330C) +#define runner_b_start_task_rate_control_budget_allocator_1st_wakeup_request (0x255C) +#define runner_b_rate_control_budget_allocator_1st_wakeup_request (0x255C) +#define runner_b_start_task_wan_interworking_enqueue_wakeup_request (0x208) +#define runner_b_wan_interworking_enqueue_wakeup_request (0x208) +#define runner_b_start_task_wan_tx_wakeup_request (0x6EC) +#define runner_b_wan_tx_wakeup_request (0x6EC) +#define runner_b_start_task_debug_routine (0x120) +#define runner_b_debug_routine (0x120) +#define runner_b_start_task_timer_7_1st_wakeup_request (0x30B0) +#define runner_b_timer_7_1st_wakeup_request (0x30B0) +#define runner_b_start_task_free_skb_index_wakeup_request (0x2FF4) +#define runner_b_free_skb_index_wakeup_request (0x2FF4) +#define runner_b_start_task_dhd_tx_post (0x3468) +#define runner_b_dhd_tx_post (0x3468) +#define runner_b_ingress_classification_key_src_ip (0x1080) +#define runner_b_ingress_classification_key_dst_ip (0x10C4) +#define runner_b_ingress_classification_key_ipv6_flow_label (0x1108) +#define runner_b_ingress_classification_key_generic_rule_1 (0x112C) +#define runner_b_ingress_classification_key_generic_rule_2 (0x1134) +#define runner_b_ingress_classification_key_outer_tpid (0x11A0) +#define runner_b_ingress_classification_key_inner_tpid (0x11AC) +#define runner_b_ingress_classification_key_src_port (0x11C8) +#define runner_b_ingress_classification_key_dst_port (0x11E8) +#define runner_b_ingress_classification_key_outer_vlan (0x1208) +#define runner_b_ingress_classification_key_inner_vlan (0x1220) +#define runner_b_ingress_classification_key_dst_mac (0x123C) +#define runner_b_ingress_classification_key_src_mac (0x1244) +#define runner_b_ingress_classification_key_ether_type (0x126C) +#define runner_b_ingress_classification_key_ip_protocol (0x1280) +#define runner_b_ingress_classification_key_dscp (0x12A4) +#define runner_b_ingress_classification_key_ssid (0x12C0) +#define runner_b_ingress_classification_key_ingress_port (0x12D8) +#define runner_b_ingress_classification_key_outer_pbits (0x12E8) +#define runner_b_ingress_classification_key_inner_pbits (0x1300) +#define runner_b_ingress_classification_key_number_of_vlans (0x131C) +#define runner_b_ingress_classification_key_layer3_protocol (0x132C) +#define runner_b_spdsvc_timer_wakeup_request (0x2DCC) +#define runner_b_cpu_rx_meter_budget_allocate (0x2EE0) +#define runner_b_upstream_rate_limiter_budget_allocate (0x2F2C) +#define runner_b_schedule_free_skb_index (0x2FD8) +#define runner_b_pps_rate_limiter_timer_wakeup_request (0x3114) + +#endif diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_c_labels.h b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_c_labels.h new file mode 100644 index 0000000000..ceaf03ddbd --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_c_labels.h @@ -0,0 +1,40 @@ +#ifndef RUNNER_C_CODE_ADDRESSES +#define RUNNER_C_CODE_ADDRESSES + +#define runner_c_start_task_initialization_task (0x14) +#define runner_c_initialization_task (0x14) +#define runner_c_start_task_timer_scheduler_set (0x790) +#define runner_c_timer_scheduler_set (0x790) +#define runner_c_start_task_lan_tx_wakeup_request (0x430) +#define runner_c_lan_tx_wakeup_request (0x430) +#define runner_c_start_task_cpu_tx_wakeup_request (0xAB0) +#define runner_c_cpu_tx_wakeup_request (0xAB0) +#define runner_c_start_task_lan_enqueue_ih_wakeup_request (0x1C4) +#define runner_c_lan_enqueue_ih_wakeup_request (0x1C4) +#define runner_c_start_task_lan_enqueue_pd_wakeup_request (0x208) +#define runner_c_lan_enqueue_pd_wakeup_request (0x208) +#define runner_c_start_task_multicast_lan_enqueue_wakeup_request (0x258) +#define runner_c_multicast_lan_enqueue_wakeup_request (0x258) +#define runner_c_start_task_wlan_mcast_wakeup_request (0x2DC0) +#define runner_c_wlan_mcast_wakeup_request (0x2DC0) +#define runner_c_start_task_cpu_rx_int_coalesce_timer_1st_wakeup_request (0x9F8) +#define runner_c_cpu_rx_int_coalesce_timer_1st_wakeup_request (0x9F8) +#define runner_c_start_task_debug_routine (0xDC) +#define runner_c_debug_routine (0xDC) +#define runner_c_start_task_gso_wakeup_request (0x1CA0) +#define runner_c_gso_wakeup_request (0x1CA0) +#define runner_c_start_task_timer_7_1st_wakeup_request (0x964) +#define runner_c_timer_7_1st_wakeup_request (0x964) +#define runner_c_start_task_free_skb_index_wakeup_request (0x900) +#define runner_c_free_skb_index_wakeup_request (0x900) +#define runner_c_start_task_service_queue_dequeue_wakeup_request (0x36F8) +#define runner_c_service_queue_dequeue_wakeup_request (0x36F8) +#define runner_c_start_task_service_queue_enqueue_wakeup_request (0x37C8) +#define runner_c_service_queue_enqueue_wakeup_request (0x37C8) +#define runner_c_ds_rate_limiter_budget_allocate (0x810) +#define runner_c_ds_service_queue_rate_limiter_budget_allocate (0x8CC) +#define runner_c_schedule_free_skb_index (0x8E4) +#define runner_c_pps_rate_limiter_timer_wakeup_request (0x9C8) +#define runner_c_spdsvc_timer_wakeup_request (0xF88) + +#endif diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_d_labels.h b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_d_labels.h new file mode 100644 index 0000000000..b3f65f26ef --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/rdd_runner_d_labels.h @@ -0,0 +1,54 @@ +#ifndef RUNNER_D_CODE_ADDRESSES +#define RUNNER_D_CODE_ADDRESSES + +#define runner_d_start_task_initialization_task (0x14) +#define runner_d_initialization_task (0x14) +#define runner_d_start_task_timer_scheduler_set (0x1BE0) +#define runner_d_timer_scheduler_set (0x1BE0) +#define runner_d_start_task_flow_cache_wakeup_request (0xD84) +#define runner_d_flow_cache_wakeup_request (0xD84) +#define runner_d_start_task_lan_dispatch_wakeup_request (0x19C0) +#define runner_d_lan_dispatch_wakeup_request (0x19C0) +#define runner_d_start_task_lan_cpu_wakeup_request (0x154) +#define runner_d_lan_cpu_wakeup_request (0x154) +#define runner_d_start_task_lan_normal_wakeup_request (0x19C) +#define runner_d_lan_normal_wakeup_request (0x19C) +#define runner_d_start_task_debug_routine (0x6C) +#define runner_d_debug_routine (0x6C) +#define runner_d_start_task_free_skb_index_wakeup_request (0x1D5C) +#define runner_d_free_skb_index_wakeup_request (0x1D5C) +#define runner_d_free_skb_index_tx_abs_done (0x1D5C) +#define runner_d_start_task_dhd_rx_complete_wakeup_request (0x1EC4) +#define runner_d_dhd_rx_complete_wakeup_request (0x1EC4) +#define runner_d_gpe_sop_push_replace_ddr_sram_32 (0x1374) +#define runner_d_gpe_sop_push_replace_sram_32_64 (0x13E8) +#define runner_d_gpe_sop_push_replace_sram_64 (0x13FC) +#define runner_d_gpe_sop_push_replace_sram_64_32 (0x1410) +#define runner_d_gpe_sop_pull_replace_ddr_sram_32 (0x1424) +#define runner_d_gpe_sop_pull_replace_sram_32_64 (0x1498) +#define runner_d_gpe_sop_pull_replace_sram_64 (0x14E8) +#define runner_d_gpe_sop_pull_replace_sram_64_32 (0x1524) +#define runner_d_gpe_replace_pointer_32_ddr (0x1574) +#define runner_d_gpe_replace_pointer_32_sram (0x1598) +#define runner_d_gpe_replace_pointer_64_sram (0x15BC) +#define runner_d_gpe_replace_16 (0x15E0) +#define runner_d_gpe_replace_32 (0x1614) +#define runner_d_gpe_replace_bits_16 (0x1638) +#define runner_d_gpe_copy_add_16_cl (0x1664) +#define runner_d_gpe_copy_add_16_sram (0x1670) +#define runner_d_gpe_copy_bits_16_cl (0x16B8) +#define runner_d_gpe_copy_bits_16_sram (0x16C4) +#define runner_d_gpe_insert_16 (0x170C) +#define runner_d_gpe_delete_16 (0x1774) +#define runner_d_gpe_decrement_8 (0x17B4) +#define runner_d_gpe_apply_icsum_16 (0x17D8) +#define runner_d_gpe_apply_icsum_nz_16 (0x17FC) +#define runner_d_gpe_compute_csum_16_cl (0x1838) +#define runner_d_gpe_compute_csum_16_sram (0x1844) +#define runner_d_gpe_buffer_copy_16_sram (0x1884) +#define runner_d_gpe_buffer_copy_16_ddr (0x18AC) +#define runner_d_upstream_ingress_rate_limiter_budget_allocate (0x1C60) +#define runner_d_upstream_quasi_budget_allocate (0x1CE0) +#define runner_d_schedule_free_skb_index (0x1D40) + +#endif diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/runner_fw_b.c b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/runner_fw_b.c new file mode 100644 index 0000000000..a47cdb898f --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/runner_fw_b.c @@ -0,0 +1,7180 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint32_t firmware_binary_B[] = { + 0x0A300005, + 0xFC000000, + 0x10000048, + 0xFC000000, + 0xFC000000, + 0x221A7E42, + 0x222A7E83, + 0x224A7F03, + 0x226A7F83, + 0xC2001202, + 0xC2001302, + 0xBC801000, + 0xBC800018, + 0xC2021202, + 0xC2021302, + 0xBC8000F4, + 0x969200E0, + 0xBC800034, + 0xD0020092, + 0x228AECA1, + 0xC2021502, + 0xBC9A9F84, + 0xBC800064, + 0xBC8003C8, + 0x2A124026, + 0xCE920080, + 0xBC992C04, + 0xBC810808, + 0xBC810C40, + 0x2A824006, + 0xBC811088, + 0xBC8112C0, + 0x2A824026, + 0xBC811348, + 0xBC800000, + 0x2A824046, + 0xBC800000, + 0xBC811A00, + 0x2A824066, + 0xBC811AC8, + 0xBC811C80, + 0x2A824086, + 0xBC811E88, + 0xBC812080, + 0x2A8240A6, + 0xBC812208, + 0xBC8123C0, + 0x2A8240C6, + 0xBC812448, + 0xBC8126C0, + 0x2A8240E6, + 0xBC812808, + 0xBC812A40, + 0x2A824106, + 0xBC812C08, + 0xBC812D80, + 0x2A824126, + 0xBC812E88, + 0xBC813000, + 0x2A824146, + 0xBC8131C8, + 0xBC8132C0, + 0x2A824166, + 0xBC991904, + 0xBC82EE0C, + 0xBC82F2C0, + 0x2A824006, + 0xBC82FD84, + 0x2A824055, + 0x18000000, + 0xFC000000, + 0xFC000000, + 0x2A0AA402, + 0x2A1AA442, + 0x2A2AA483, + 0x2A4AA503, + 0x2A6AA583, + 0x2A8AA603, + 0x2AAAA683, + 0x2ACAA703, + 0x2AEAA783, + 0x2B0AA803, + 0x2B2AA883, + 0x2B4AA903, + 0x2B6AA983, + 0x2B8AAA03, + 0x2BAAAA83, + 0x2BCAAB03, + 0x2BEAAB83, + 0xC6800042, + 0x2A8AF202, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xC2000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x220AA402, + 0x221AA442, + 0x222AA483, + 0x224AA503, + 0x226AA583, + 0x228AA603, + 0x22AAA683, + 0x22CAA703, + 0x22EAA783, + 0x230AA803, + 0x232AA883, + 0x234AA903, + 0x236AA983, + 0x238AAA03, + 0x23AAAA83, + 0x23CAAB03, + 0x23EAAB83, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x16000001, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x248A4000, + 0xA4A20A80, + 0x06720886, + 0x2C0A4000, + 0x22828784, + 0x23A2876C, + 0xBCB8C004, + 0xA4B69020, + 0x82924012, + 0x8A92440A, + 0x22C2875C, + 0xA0E30650, + 0xA4C00650, + 0x2122C002, + 0xA0D48D00, + 0x86036080, + 0x02008805, + 0xBCFA0004, + 0x02002008, + 0xAAB36580, + 0x80B3E0B0, + 0xBCB83004, + 0x96D34050, + 0x80B2E0D0, + 0x86032030, + 0x0200C0E4, + 0x96C30010, + 0x82C32180, + 0xFC000000, + 0xA0F38650, + 0x2182C0C5, + 0xA5262100, + 0x8312AEC0, + 0x22C28407, + 0xA5200700, + 0xA5800600, + 0x20B44000, + 0x22EAE421, + 0x0A32E057, + 0x96B3C010, + 0x82F2E1C0, + 0x22B287FC, + 0xA0B2CA00, + 0x256600F5, + 0x26F600A5, + 0xA1431C00, + 0x0A33AC5D, + 0x2735803C, + 0xBD100004, + 0x8AE6A0F0, + 0xFC000000, + 0x0EFB8C05, + 0xBCE07C04, + 0x840520E0, + 0x0200D0D2, + 0x23428754, + 0x0634E4ED, + 0x27258025, + 0x27458045, + 0x84052120, + 0x0200C8A5, + 0x2A028784, + 0x228AE1C1, + 0xFC000000, + 0x0F22100A, + 0xA1331C00, + 0xA0828A80, + 0x22EAE1A1, + 0xFC000000, + 0x0A1390C3, + 0x23428754, + 0x02002009, + 0x86E3A010, + 0x2AEAE1A1, + 0x22EAE181, + 0xFC000000, + 0x0A1390BC, + 0x23428754, + 0x86E3A010, + 0x2AEAE181, + 0xCB45E01E, + 0xFC000000, + 0xC945F13E, + 0x0659E042, + 0xBCE00064, + 0xD0038082, + 0xA140A000, + 0x22208035, + 0x8284A010, + 0x2E858025, + 0x26E58006, + 0x2283C0A6, + 0x80822130, + 0x2A83C0A6, + 0xC9A3813E, + 0xA4C2C8E0, + 0xA4D003B0, + 0xA4D69170, + 0x0A23A008, + 0x28C50003, + 0xCBA2801E, + 0x20838002, + 0x80822142, + 0x02002005, + 0x28838002, + 0xA4E52000, + 0xA4E52000, + 0xA4E52100, + 0x0A345CC2, + 0x2EE58006, + 0x26858075, + 0x26B600B5, + 0x26C60086, + 0x8C82E080, + 0x2E8600B5, + 0x2283C026, + 0x22B3C09C, + 0x8C8220C0, + 0x2A83C026, + 0x0402C809, + 0x8A82E018, + 0x2A83C09C, + 0x00002009, + 0x2283C015, + 0xD0020006, + 0xBCB00024, + 0xC202D702, + 0x18004147, + 0xFC000000, + 0xFC000000, + 0x20B44000, + 0xFC000000, + 0x0A32C3F9, + 0x020023A4, + 0xFC000000, + 0xFC000000, + 0x18002087, + 0xFC000000, + 0xFC000000, + 0x06C49FA6, + 0x23228446, + 0xA1248440, + 0x0A3487A3, + 0x840520E0, + 0x02008FA1, + 0x82E52030, + 0x0200239F, + 0x8B43A038, + 0xA4C51C00, + 0x07F3501F, + 0x237AF341, + 0x80E32000, + 0x81536000, + 0x2545C002, + 0xFC000000, + 0x0A350816, + 0xBD400014, + 0xA1935C00, + 0xA59506E0, + 0x06F35803, + 0xBD400034, + 0xBD400074, + 0xD0050194, + 0xA4E2CAE0, + 0x234AE5C0, + 0xA4E50930, + 0xA4E01370, + 0x8F43A803, + 0xA5501170, + 0x2D45C003, + 0x82E5C080, + 0x8AE38019, + 0x2AEAF341, + 0xBD400294, + 0x14000000, + 0xBCE00024, + 0xD0038140, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0x10000C81, + 0xBD004E80, + 0xFC000000, + 0x10000C65, + 0xBD004F40, + 0xFC000000, + 0x0A3643F7, + 0xBC8A3004, + 0xA0E28E60, + 0x96B2C0E1, + 0xA4D69170, + 0x20E200E6, + 0xBD0051C0, + 0x10000C9D, + 0xA1431C00, + 0xBDA88004, + 0xBC8FFFFC, + 0x42EA0017, + 0xFC000000, + 0xFC000000, + 0x237AF341, + 0xA1A35170, + 0xFC000000, + 0x2485C002, + 0xFC000000, + 0x0A32080F, + 0x80E32000, + 0x81536000, + 0x228AECA1, + 0x82822120, + 0x96820011, + 0xA5520F00, + 0x10080126, + 0xFC000000, + 0xFC000000, + 0xBD005780, + 0x10000C97, + 0xFC000000, + 0xFC000000, + 0x0200037B, + 0x10000C7B, + 0xBD005880, + 0xFC000000, + 0x020013F8, + 0xFC000000, + 0x26E58055, + 0xFC000000, + 0x0A338018, + 0x0A321806, + 0x22838015, + 0x8404A080, + 0x02008814, + 0x02001009, + 0x22838046, + 0x23438025, + 0x8404A140, + 0x02009351, + 0x22838035, + 0x8404A080, + 0x0200980C, + 0x22838066, + 0x8534A140, + 0xC6E020C1, + 0x07F20005, + 0xA8822130, + 0x8403A080, + 0x0200C347, + 0x02000004, + 0xA884E080, + 0x8403A080, + 0x0200C343, + 0x0200100D, + 0x23428754, + 0x22C28407, + 0x23428754, + 0x2282C015, + 0x8A8223F0, + 0x86022200, + 0x02005803, + 0x82C52150, + 0x82C52140, + 0x02002011, + 0x228287FC, + 0xA0B20A00, + 0x2283C015, + 0x8A8223F0, + 0x86022200, + 0x02006007, + 0x26858034, + 0xA0C31C00, + 0xCA80C01C, + 0x02002007, + 0xC88080CE, + 0x82C52140, + 0xCA81101C, + 0xFC000000, + 0xC88100CE, + 0x82C52150, + 0xA0828A80, + 0xBCE00064, + 0xD0038082, + 0x86052010, + 0x02009005, + 0xCBA4801C, + 0x02002004, + 0xCA05201C, + 0xFC000000, + 0xCAC5E01C, + 0x10080C51, + 0xFC000000, + 0xFC000000, + 0x00001009, + 0xFC000000, + 0x231287A4, + 0xA0E4C600, + 0xBD38B004, + 0xA5338270, + 0xAAE46020, + 0x82E3A100, + 0x02002310, + 0x8115A000, + 0x2164C0E5, + 0x26844025, + 0x82822010, + 0x2E844025, + 0x26B580A5, + 0x26C58066, + 0x81646000, + 0x2282C006, + 0x02002339, + 0x8C8220C0, + 0x2A82C006, + 0x0A221004, + 0x80C02086, + 0x22ABCB82, + 0x80C2A086, + 0xBCAA0004, + 0xFC000000, + 0xAAB32580, + 0x8152A0B0, + 0x86032080, + 0x0200A00A, + 0x22A5400C, + 0x236540C5, + 0xBCB83004, + 0x96A30050, + 0x8152E0A0, + 0xFC000000, + 0xFC000000, + 0x22A5400C, + 0x236540C5, + 0x0A32987A, + 0x28020002, + 0x22F54004, + 0x26D580B5, + 0x9F434000, + 0xBD0077C0, + 0x065501A6, + 0x97450010, + 0x834521C0, + 0xFC000000, + 0xFC000000, + 0x24C58145, + 0x22E540A6, + 0xFC000000, + 0x26A3003C, + 0xFC000000, + 0x06328175, + 0xBD007940, + 0x27E30006, + 0xFC000000, + 0x0A33E98E, + 0x20AF8003, + 0xA1D29C00, + 0xA172D170, + 0xA4B01170, + 0x84E3A1D0, + 0x2AE540A6, + 0x07F2D199, + 0xBD007B40, + 0xA0E28320, + 0xA4B38770, + 0xBCE8C004, + 0xA4E5D020, + 0xA4A00320, + 0x22F54015, + 0x8AF3E3F0, + 0x8603E200, + 0x02005005, + 0x26F30034, + 0xCAF0401E, + 0x02001005, + 0xC8F001DE, + 0xCAF0F01E, + 0xFC000000, + 0xC8F0E1DE, + 0x26F30025, + 0x0A232406, + 0x8723E010, + 0x2F230025, + 0x26FB0025, + 0x8723E010, + 0x2F2B0025, + 0xA0F29B30, + 0x96F3C030, + 0x0A33E006, + 0x20E38002, + 0xA4A39B30, + 0x0200200F, + 0x2EF30005, + 0xFC000000, + 0xBD008580, + 0xBD4083C0, + 0x0A232D59, + 0x27330075, + 0x2E030006, + 0x88C36138, + 0x2EC580B5, + 0x0A331805, + 0x22C5409C, + 0xA4C04200, + 0x2AC5409C, + 0x8EB2E403, + 0x07F2800D, + 0x8AD5E070, + 0xA0C387A0, + 0x0E7B4811, + 0x96C30002, + 0x8AC32070, + 0x86032070, + 0x02004006, + 0x86032010, + 0x02004004, + 0x86032040, + 0x02005809, + 0xFC000000, + 0x22E54015, + 0x86A2A040, + 0x86076400, + 0x02009012, + 0xFC000000, + 0x02001004, + 0xFC000000, + 0x22E54015, + 0x86A2A040, + 0x22CA9842, + 0xBCDAB584, + 0xCED30080, + 0x1000023B, + 0x22CAE1C1, + 0xBD008C80, + 0x22BA9842, + 0xBCAA9F84, + 0xCEA2C080, + 0x18006EC7, + 0x802001E6, + 0xFC000000, + 0x020023F4, + 0xBCC003C4, + 0xA4A31C00, + 0x0F231007, + 0xD00380A3, + 0x280F8002, + 0x22AAE1A1, + 0x02002006, + 0x82A28010, + 0x2AAAE1A1, + 0x22AAE181, + 0x82A28010, + 0x2AAAE181, + 0x00002010, + 0x2A2F8026, + 0xFC000000, + 0x22E54026, + 0x23754046, + 0x88A3A170, + 0x0A32806B, + 0xFC000000, + 0x9EA28002, + 0x96A28010, + 0x82A2A180, + 0xFC000000, + 0xFC000000, + 0x216540A5, + 0x22F54004, + 0xBD009840, + 0x26D580B5, + 0x9F434000, + 0x97450010, + 0x834521C0, + 0xFC000000, + 0xFC000000, + 0x24C58145, + 0x231540A6, + 0xFC000000, + 0x26A3003C, + 0xFC000000, + 0x063280F3, + 0xBD0099C0, + 0x27E30006, + 0xFC000000, + 0x0A33E90C, + 0x20AF8003, + 0xA1D29C00, + 0xA182D170, + 0xA4B01170, + 0x84F461D0, + 0x2AF540A6, + 0x07F2D117, + 0xBD009BC0, + 0xA0F28320, + 0xA4B3C770, + 0x26F58046, + 0x84F3E1D0, + 0x2EF58046, + 0xBD18C004, + 0xA5161020, + 0x23254015, + 0x8B24A3F0, + 0x8604A200, + 0x02005005, + 0x27230034, + 0xCB20401E, + 0x02001005, + 0xC92001DE, + 0xCB20F01E, + 0xFC000000, + 0xC920E1DE, + 0x27230025, + 0x0A232406, + 0x8724A010, + 0x2F230025, + 0x272B0025, + 0x8724A010, + 0x2F2B0025, + 0xA1329B30, + 0x9734C030, + 0x0A34E006, + 0x21144002, + 0xA4A45B30, + 0x02002013, + 0x2F330005, + 0x27158086, + 0xBD00A780, + 0xBD40A4C0, + 0x0A232CD5, + 0x27330075, + 0x2E030006, + 0x88C36138, + 0x2EC580B5, + 0x27158086, + 0x0A330808, + 0x88C3A118, + 0x2AC54026, + 0x0A331805, + 0x22C5409C, + 0xA4C04200, + 0x2AC5409C, + 0x8EB2E403, + 0x8603E000, + 0x02008803, + 0x88C5E118, + 0x2AC54046, + 0x22DA9842, + 0xBCCAB584, + 0xCEC34080, + 0x22E54015, + 0xA4A00320, + 0x86076400, + 0x0200900B, + 0x86A2A040, + 0x1000023B, + 0x22CAE1C1, + 0xBD00AB40, + 0x22BA9842, + 0xBCAA9F84, + 0xCEA2C080, + 0x18006EC7, + 0x802001E6, + 0xFC000000, + 0x020023F7, + 0xBCC003C4, + 0xA4A31C00, + 0x23854066, + 0x88C3A180, + 0x0A3310C2, + 0x22B5409C, + 0x22A54094, + 0x0672CC03, + 0xBCA00004, + 0xFC000000, + 0x9CA300A2, + 0x8172A000, + 0x96A28010, + 0x82A2A180, + 0xFC000000, + 0xFC000000, + 0x216540A5, + 0x22F54004, + 0xBD00B8C0, + 0x279580DC, + 0x26B580D4, + 0x0A36500D, + 0x26A580C5, + 0x96B2C080, + 0x9AA2A010, + 0x80B2A0B0, + 0x0200C006, + 0x82A5E010, + 0x8AA2A208, + 0x020023E5, + 0x2AA54094, + 0x2EB580C5, + 0x2EB580C5, + 0x2E0580DC, + 0x26D580B5, + 0xFC000000, + 0x9F434000, + 0x97450010, + 0x834521C0, + 0xFC000000, + 0xFC000000, + 0x24C58145, + 0x231540A6, + 0xFC000000, + 0x26A3003C, + 0xFC000000, + 0x06328071, + 0xBD00BA40, + 0x27E30006, + 0xFC000000, + 0x0A33E88A, + 0x20AF8003, + 0xA1D29C00, + 0xA1F2D170, + 0xA4B01170, + 0x84F461D0, + 0x2AF540A6, + 0x07F2D095, + 0xBD00BC40, + 0xA0F28320, + 0xA4B3C770, + 0x26F58006, + 0x84F3E1D0, + 0x2EF58006, + 0xBD18C004, + 0xA517D020, + 0x23254015, + 0x8B24A3F0, + 0x8604A200, + 0x02005005, + 0x27230034, + 0xCB20401E, + 0x02001005, + 0xC92001DE, + 0xCB20F01E, + 0xFC000000, + 0xC920E1DE, + 0x27230025, + 0x0A232406, + 0x8724A010, + 0x2F230025, + 0x272B0025, + 0x8724A010, + 0x2F2B0025, + 0xA1329B30, + 0x9734C030, + 0x0A34E00E, + 0x21144002, + 0xA4A45B30, + 0x2F330005, + 0x27158086, + 0xBD900004, + 0x26C580C5, + 0x84C321D0, + 0x2EC580C5, + 0x0200C022, + 0xBD900014, + 0x02002020, + 0x82C5E010, + 0x8B732208, + 0xBD00CD40, + 0xBD40C740, + 0x0A232C4B, + 0x27330075, + 0x2E030006, + 0x88C36138, + 0x2EC580B5, + 0x27158086, + 0xBD900004, + 0x26D580C5, + 0x84D361D0, + 0x2ED580C5, + 0x0A330006, + 0x0200C010, + 0xBD900014, + 0x0200200E, + 0x82C5E010, + 0x8B732208, + 0x88D3A118, + 0x2AD54026, + 0x2E0580C5, + 0xBD900014, + 0x82C5E010, + 0x8B732208, + 0x0A335805, + 0x22C5409C, + 0xA4C04200, + 0x2AC5409C, + 0x8EB2E403, + 0x8403E000, + 0x0200C007, + 0x88C62118, + 0x2AC54066, + 0x0A364804, + 0xBD900014, + 0x82C5E010, + 0x8B732208, + 0x22DA9842, + 0xBCCAB584, + 0xCEC34080, + 0x2F9580DC, + 0x2B754094, + 0xA4A00320, + 0x86076400, + 0x0200A00C, + 0x22E54015, + 0x86A2A040, + 0x1000023B, + 0x22CAE1C1, + 0xBD00D280, + 0x22BA9842, + 0xBCAA9F84, + 0xCEA2C080, + 0x18006EC7, + 0x802001E6, + 0xFC000000, + 0x020023F7, + 0xBCC003C4, + 0xA4A31C00, + 0xA0A28600, + 0xBCB8B004, + 0xA4B28270, + 0xFC000000, + 0xFC000000, + 0x22A2C006, + 0xFC000000, + 0x9EA28002, + 0xFC000000, + 0x0652A01E, + 0xAAA2A020, + 0x8322A100, + 0x26A30034, + 0xFC000000, + 0x20B2C125, + 0x00002010, + 0x80C2E0C2, + 0x2EA2C034, + 0x271300A5, + 0x27330066, + 0xFC000000, + 0x23A44006, + 0x89A6A138, + 0x0836A810, + 0x2BA44006, + 0x27158086, + 0x00002014, + 0x273B0075, + 0xFC000000, + 0xBD293404, + 0xFC000000, + 0x0613D004, + 0x22F48006, + 0x8403E000, + 0x02008005, + 0x86F3E140, + 0x00002010, + 0x84F3E1D0, + 0x2AF48006, + 0x22B54015, + 0x22A5409C, + 0xA4A04200, + 0xD002C004, + 0x2AA5409C, + 0x18006EC7, + 0xFC000000, + 0xFC000000, + 0xA0F22000, + 0x20E20002, + 0x26A76742, + 0x0A33980B, + 0xA0D2DC00, + 0x96E34020, + 0x80A2A0E0, + 0x42F28047, + 0xFC000000, + 0xFC000000, + 0x20E20002, + 0xFC000000, + 0x0A3383FB, + 0x28E20002, + 0xA4B3BC00, + 0x0A221004, + 0x80E02086, + 0x22ABCB82, + 0x80E2A086, + 0xBCFE8804, + 0xA4F38C10, + 0x20AF8002, + 0xFC000000, + 0x2513C001, + 0x83246020, + 0xFC000000, + 0x2CD44001, + 0xA5148A00, + 0x2D13C001, + 0x85C3A086, + 0xA0D26000, + 0xA0E26100, + 0xFC000000, + 0x20F341C4, + 0x20D381C4, + 0x84D3E0D0, + 0x8B1363F0, + 0x28F381C4, + 0x00006010, + 0x22E54026, + 0x26D580B5, + 0x2ADAEAA1, + 0x2AEAEA42, + 0x2ACAEB02, + 0x100003B5, + 0xBDB0EC44, + 0xFC000000, + 0x22DAEAA1, + 0x22EAEA42, + 0x22CAEB02, + 0x00000010, + 0xBCEE8004, + 0x81C72086, + 0xA4E70C10, + 0x2AEAEA01, + 0xBCCACE04, + 0x22DA9890, + 0x24E38001, + 0xFC000000, + 0x86F46010, + 0x25138001, + 0x232A80C2, + 0x233A80A1, + 0x0A34840B, + 0x8404E110, + 0x02004809, + 0x8724A010, + 0x2B2A80C2, + 0x233A8282, + 0x8334E010, + 0x2B3A8282, + 0x233A8102, + 0x8004E120, + 0x02004804, + 0x8F146801, + 0x291300D5, + 0x82D36020, + 0x8313A020, + 0xA4E44A00, + 0x2AEAEA21, + 0x2AFAEA81, + 0x2A0A9810, + 0x06434804, + 0x10000CF2, + 0xBCE0F604, + 0x2723F342, + 0x231AEA81, + 0x22FAEA01, + 0x0A345BE3, + 0x22EAEA21, + 0x2ADA9890, + 0x2CE3C001, + 0x0000001B, + 0x06458146, + 0xBCCA5000, + 0xA4C58830, + 0xFC000000, + 0xFC000000, + 0x20E30003, + 0xA1838510, + 0x0A362808, + 0x22C28446, + 0xA1A30480, + 0x0A369129, + 0x22C28707, + 0x8A036010, + 0x02004912, + 0x02000125, + 0x06162022, + 0xA193F000, + 0xBCD00004, + 0x06B64805, + 0x0A369120, + 0xFC000000, + 0x22D28485, + 0xA4D008C0, + 0x07464805, + 0x0A36911B, + 0x22C28485, + 0xA0C306D0, + 0xA4D306D0, + 0x06C64806, + 0x8606A020, + 0x02009115, + 0x22C284C5, + 0xA4C008C0, + 0xA4D31900, + 0x07564806, + 0x8606A020, + 0x0200910F, + 0x22C284C5, + 0xA0C306D0, + 0xA4D307D0, + 0x07365803, + 0xBCC00004, + 0xA0C5CA00, + 0x072648DD, + 0x8605E0D0, + 0x02004906, + 0x020020DA, + 0x22F28774, + 0xA4C3C880, + 0x2A0AEE02, + 0x2A0AEE42, + 0x2A0AEE82, + 0x2A0AEEC2, + 0xBD8AEF0C, + 0x9FB64002, + 0xBCD92C00, + 0xA4D6CA10, + 0x0656C0B8, + 0xBCC00014, + 0x20D34001, + 0x94C301B0, + 0xFC000000, + 0x899660C8, + 0x0000100D, + 0x23D28446, + 0xA0C74440, + 0x0A3300F1, + 0x86032020, + 0x02005005, + 0x87862042, + 0x020023F0, + 0x22C28586, + 0x28CE0002, + 0x22C2854C, + 0x80C320A0, + 0x82C32080, + 0x80D02008, + 0xD6D30102, + 0xFC000000, + 0x020023E7, + 0xC6C00602, + 0x28CE0002, + 0xA0C74440, + 0x0A3300E0, + 0x86032020, + 0x02005005, + 0x87862042, + 0x020023DF, + 0x22C285A6, + 0x28CE0002, + 0x22C2854C, + 0x80C320A0, + 0x82C32180, + 0x80D02008, + 0xD6D30102, + 0xFC000000, + 0x020023D6, + 0xC6C00602, + 0x28CE0002, + 0x065758D0, + 0x22C2854C, + 0x80C320A0, + 0xFC000000, + 0x87862042, + 0x20C30002, + 0x020023CD, + 0xA0C32800, + 0x28CE0002, + 0x02001003, + 0xA0C3C5A0, + 0xA0C3C580, + 0xBCDA7604, + 0xA4D30430, + 0xBDE00124, + 0xFC000000, + 0x20C34003, + 0xA1B305E0, + 0xA1C30E00, + 0x0A36C006, + 0xA0C74440, + 0x0A3300BB, + 0x0606D003, + 0x23E2854C, + 0x23E28544, + 0x80C721E0, + 0xFC000000, + 0xFC000000, + 0x21B280C5, + 0x82C32020, + 0xFC000000, + 0xFC000000, + 0x20C280C5, + 0x87862042, + 0x8CC321B2, + 0x88C320D0, + 0x020013AF, + 0x28CE0002, + 0x0A3680AA, + 0x02001005, + 0x82C2A1E0, + 0x8606A020, + 0x020080A6, + 0x82C2A220, + 0x87862022, + 0x020023A6, + 0x20C30001, + 0x28CE0001, + 0x06B740A0, + 0x07E7409F, + 0x07D7409E, + 0x0797489D, + 0x87862022, + 0x0200239E, + 0x22C28565, + 0x28CE0001, + 0x06B74098, + 0x07E74097, + 0x07D74096, + 0x07974895, + 0x87862022, + 0x02002396, + 0x22C28575, + 0x28CE0001, + 0x0A368090, + 0x87862022, + 0x22C28485, + 0x02002390, + 0xA4C008C0, + 0x28CE0001, + 0x8606A020, + 0x02008089, + 0x87862022, + 0x22C284C5, + 0x02002389, + 0xA4C008C0, + 0x28CE0001, + 0x02001003, + 0x22C28666, + 0x22C286A6, + 0x8A032050, + 0x0200407F, + 0x87862022, + 0x06132B80, + 0xA0C31840, + 0x28CE0001, + 0x0200237D, + 0x82C32041, + 0x28CE0001, + 0x22C28554, + 0x87862022, + 0x02002378, + 0x20C280C5, + 0x28CE0001, + 0x06B74072, + 0x07E74071, + 0x07D74070, + 0xA0C74440, + 0x0A33006E, + 0x87862012, + 0x0200236F, + 0x22C2855C, + 0x28CE0000, + 0xA0C74440, + 0x0A330068, + 0x87862012, + 0x22C2853C, + 0x02002368, + 0xA0C30C20, + 0x28CE0000, + 0x8605E0D0, + 0x02004861, + 0x87862012, + 0x02002362, + 0x22C28774, + 0x28CE0000, + 0x87862012, + 0x0200235E, + 0xFC000000, + 0x297E0000, + 0x0A368058, + 0x87862012, + 0x22C28485, + 0x02002358, + 0xA0C306D0, + 0x28CE0000, + 0x8606A020, + 0x02008051, + 0x87862012, + 0x22C284C5, + 0x02002351, + 0xA0C306D0, + 0x28CE0000, + 0x87862012, + 0x0200234D, + 0xFC000000, + 0x29AE0000, + 0xA0C74440, + 0x87862012, + 0x02002348, + 0xFC000000, + 0x28CE0000, + 0xA1838510, + 0xBCCAEE8C, + 0x06062815, + 0xFC000000, + 0x20CB0003, + 0xBCFAEE0C, + 0xC2035002, + 0xA0D33000, + 0xC2035042, + 0xA1931180, + 0x20CBC003, + 0xFC000000, + 0x96D34182, + 0x96C30080, + 0xA4C35000, + 0xA4D65000, + 0xA4C58980, + 0xDCC3431C, + 0xFC000000, + 0xFC000000, + 0x18013AC6, + 0xFC000000, + 0xFC000000, + 0xA4C58900, + 0xDCC3711F, + 0xFC000000, + 0xFC000000, + 0xC4C80112, + 0xFC000000, + 0x06030825, + 0x86062030, + 0x0200500A, + 0xA0D31840, + 0x06132005, + 0xBCC9C004, + 0xA4C34A30, + 0xBCCA8004, + 0xA4C35030, + 0x02002008, + 0xFC000000, + 0x24C30002, + 0xBCC80004, + 0xA4C34E40, + 0xFC000000, + 0xFC000000, + 0x26C30046, + 0xA0D38730, + 0x86036020, + 0x02004003, + 0x06034005, + 0x0200000D, + 0x020022DC, + 0xA1638B60, + 0xA1531180, + 0x06134805, + 0xA1638B60, + 0x020022D7, + 0xA0C31180, + 0x8F432803, + 0xA0C38300, + 0x0A331AD3, + 0xA1638B60, + 0x0200000D, + 0x020022D0, + 0xA5604240, + 0xA1531180, + 0xA0C38730, + 0x86032040, + 0x0200400B, + 0x86032010, + 0x02005AC9, + 0xA1638BB0, + 0xA0C382F0, + 0x0A331AC6, + 0xA1638BB0, + 0xCB75101C, + 0x100006F0, + 0xBCC00214, + 0xCAC5601C, + 0xA1638BB0, + 0xFC000000, + 0x06458ABE, + 0x10000579, + 0xBD300294, + 0xFC000000, + 0x231AE630, + 0xBD698004, + 0xA5655030, + 0x22C28446, + 0x0604441F, + 0x07F51818, + 0x20C58003, + 0xA5651030, + 0x06045418, + 0x8EC32013, + 0x22E58026, + 0xA0E38B20, + 0xA4D38B20, + 0x20E58002, + 0xA0F38300, + 0xA4C3C700, + 0xA0F38650, + 0xA4C3C650, + 0xBD192004, + 0x0773AC06, + 0xA0E38510, + 0xA4C38510, + 0x20E440F4, + 0xA0E38650, + 0xA4C39080, + 0x22E58026, + 0x10000574, + 0xA4D3AC00, + 0xFC000000, + 0x10000574, + 0xFC000000, + 0xFC000000, + 0x02002005, + 0xBD014BC0, + 0xA0E51000, + 0xBD014A80, + 0xA0E55000, + 0xBCF90004, + 0xA4F39010, + 0xFC000000, + 0xFC000000, + 0x24E3C001, + 0x82E3A010, + 0x00001010, + 0x2CE3C001, + 0xBD200004, + 0x20824000, + 0xA4A20A80, + 0x06721008, + 0xBCC00004, + 0x96924102, + 0xFC000000, + 0xFC000000, + 0x20824000, + 0xA4A20A80, + 0x0672092A, + 0x28024000, + 0x82924010, + 0x8A924408, + 0x2332863C, + 0xBCDAB604, + 0x22C287FC, + 0xA1730A00, + 0x2A13403C, + 0x2B73402C, + 0x22E28407, + 0x8604E290, + 0x02006811, + 0x236AF510, + 0x2AE34047, + 0x2A0A9810, + 0x0645A40D, + 0xBD300294, + 0xBD100034, + 0xBD1002C8, + 0xBCC00FF4, + 0x100003DF, + 0xBD500004, + 0xBD400004, + 0x07F3417C, + 0x07E34804, + 0xA0C30600, + 0x83332380, + 0x2B32863C, + 0xBD5AB604, + 0x22DAF5A0, + 0xA0C20A00, + 0x840320D0, + 0x02009806, + 0x8604E290, + 0x02005804, + 0xBCC00244, + 0x0200116F, + 0xCAC5601C, + 0x23654047, + 0x22D5402C, + 0x860360D0, + 0x0200680A, + 0x22E286D4, + 0x22C287BC, + 0x0603A007, + 0x22F28634, + 0x232286C5, + 0x22C286C5, + 0x86C32120, + 0xBCE00264, + 0x8133A0F0, + 0x2AC54024, + 0x22C287A4, + 0x2AC5401C, + 0x2A15403C, + 0xBD800000, + 0x0674E026, + 0x22C2875C, + 0x82F32080, + 0x0E3CC00B, + 0xBCE00004, + 0xFC000000, + 0x0E4CC008, + 0xBCE00094, + 0xFC000000, + 0x0F1CC005, + 0xBCE00124, + 0xFC000000, + 0x0200100A, + 0x20E2C134, + 0x22C287FC, + 0xA0D30A00, + 0xBCCAEB84, + 0x80C320E0, + 0x80C320D0, + 0xFC000000, + 0xFC000000, + 0x20E30000, + 0x22F28446, + 0xBCCE8D04, + 0x0763C802, + 0xBCC3A804, + 0x0F0B800C, + 0xFC000000, + 0x24F30134, + 0xBCB93808, + 0xA4B38930, + 0xFC000000, + 0xFC000000, + 0x22CAC005, + 0xFC000000, + 0x0A330154, + 0x86C32010, + 0x2ACAC005, + 0xBCC00054, + 0xC2031130, + 0xC6C01130, + 0x2AF54014, + 0x06032006, + 0xBCC75004, + 0xA4C3C840, + 0x18017146, + 0xFC000000, + 0xFC000000, + 0xBCEC4004, + 0xA4E3C840, + 0x26C30026, + 0xFC000000, + 0x0A330122, + 0xFC000000, + 0xFC000000, + 0x42EB0107, + 0xFC000000, + 0xFC000000, + 0x27438046, + 0x80C52000, + 0x0A35011A, + 0x07F50119, + 0x07F5C05A, + 0xA0E59C00, + 0x2315403C, + 0x22F2879C, + 0xAFB3C100, + 0xAE24CFF0, + 0x02040808, + 0xBCD00004, + 0x0A345003, + 0x22F54024, + 0x22F287B4, + 0x0200201E, + 0xFC000000, + 0xA5639C00, + 0xA0E59C00, + 0x06F5C0C8, + 0x0674D139, + 0x22FAECA1, + 0x07F5C0A4, + 0xBDAAD804, + 0xFC000000, + 0xFC000000, + 0x2AF6821C, + 0x2A868246, + 0x0200208F, + 0x2AC68226, + 0x2A0A9810, + 0x22C68226, + 0x22868246, + 0xBD5AB604, + 0xA0E59C00, + 0x232286C5, + 0x82F3E120, + 0x82A2A120, + 0x8603A6E0, + 0x0200D003, + 0xBCD006E4, + 0x80D3A000, + 0x50A500D7, + 0xFC000000, + 0xFC000000, + 0x819520D0, + 0x84E520C0, + 0xA0C5DC00, + 0x231AF520, + 0x233ADD42, + 0xA8C32110, + 0x96C30080, + 0x80C32130, + 0x80C3A0C0, + 0x80C320D0, + 0x0A348003, + 0x80F4A000, + 0xFC000000, + 0x80E320F0, + 0xA0C59C00, + 0x854320D0, + 0x82C52000, + 0x82F66000, + 0x8313A000, + 0xBCD08004, + 0x840520D0, + 0x0200C802, + 0x81436000, + 0x10000C9D, + 0xBD018580, + 0xBDAE0004, + 0x80F3E0D0, + 0x811460D0, + 0x82E46000, + 0x84C320D0, + 0x0200E3F6, + 0x83432000, + 0x8393E000, + 0x02000009, + 0xBCCAD804, + 0xFC000000, + 0xFC000000, + 0xBD5AB604, + 0xA0859C00, + 0x228286C5, + 0x22830226, + 0x22830246, + 0x22C5402C, + 0xA0C30A00, + 0x96C300E0, + 0xA4C5DC00, + 0xBCD00034, + 0xA4A01000, + 0xD00340C6, + 0xA5600760, + 0xFC000000, + 0x22F2863C, + 0x22C54014, + 0xA0D5DC00, + 0xA0E5C3F0, + 0x96E381F0, + 0x8CD360E0, + 0x2325402C, + 0xA1158EE0, + 0x8B3467F0, + 0xA115C3D0, + 0x971440B0, + 0x8D34E110, + 0xA1158350, + 0x971440A0, + 0x8D14E110, + 0xA5645940, + 0xA5648AE0, + 0x2312879C, + 0xBD700004, + 0x06446004, + 0xA573CD90, + 0xA5660330, + 0xA5704240, + 0xA0F59C00, + 0x8713E040, + 0x8604A0D0, + 0x02005803, + 0x22F28774, + 0xA563D940, + 0xBD2C4004, + 0xA5230840, + 0xA5645C00, + 0x2D648003, + 0xBD175004, + 0xA5130840, + 0x26F48046, + 0x8EF3E803, + 0x2EF48046, + 0x22F5401C, + 0x22F28786, + 0xA4F003F0, + 0x07F34803, + 0x88F360E8, + 0xA4F043F0, + 0x2EF48066, + 0x24E44003, + 0x5B2BC100, + 0xA1339600, + 0xA0D39700, + 0x82D36010, + 0xA1238AB0, + 0x84036130, + 0x02005805, + 0x80F3E120, + 0xA8D4E120, + 0x84F3E0D0, + 0xBCD00004, + 0xA4E35700, + 0x2CE44003, + 0xBD3FFFFC, + 0x2325403C, + 0x83256060, + 0x4324C017, + 0xFC000000, + 0xFC000000, + 0xA4800460, + 0xBD200064, + 0xD0048082, + 0x020020B1, + 0x96924102, + 0x27244045, + 0xC2021601, + 0x020022DB, + 0xBC800024, + 0xC2021130, + 0x82852000, + 0x84E520C0, + 0xA0C5DC00, + 0x232AF520, + 0x231ADD42, + 0xA8C32120, + 0x96C30080, + 0x80C32110, + 0x80E3A0C0, + 0x10000873, + 0x82C3E120, + 0x8153A0C0, + 0x18015487, + 0xFC000000, + 0xFC000000, + 0x81952000, + 0xA5639C00, + 0xBCCA3004, + 0xA0D28E60, + 0xFC000000, + 0xFC000000, + 0x20E300D6, + 0x0674C805, + 0x80D3A0F0, + 0x22C54024, + 0x82C32120, + 0x84E360C0, + 0xA1459C00, + 0x83152000, + 0x82D66000, + 0x82F3A000, + 0xBCC08004, + 0xA4A01000, + 0x840520C0, + 0x0200C802, + 0x81432000, + 0x10000C9D, + 0xBD01A840, + 0xBDAE0004, + 0x80D360C0, + 0x80F3E0C0, + 0x82E3E000, + 0x851460C0, + 0x0200E3F6, + 0x83446000, + 0x83936000, + 0x02001067, + 0xBD018B40, + 0x0674D80C, + 0xA57002F0, + 0xA0C5D400, + 0x96D30070, + 0xA0F5CF00, + 0x9723C010, + 0x80D36120, + 0xBCFE9804, + 0xBD100804, + 0x02002023, + 0x85146120, + 0xBCB89AC8, + 0xA0E59C00, + 0x8603A6E0, + 0x0200E004, + 0x82A2A120, + 0xBD1006E4, + 0x8113A000, + 0x50A50114, + 0xFC000000, + 0x96C340E1, + 0x86A2A120, + 0x81452110, + 0xA0C5DC00, + 0x06F5D003, + 0xBCFEE004, + 0xBCFE9804, + 0x84E3A110, + 0x0200C816, + 0xBCB89AC8, + 0xBCD00874, + 0xD00340CA, + 0x1801B346, + 0xFC000000, + 0xFC000000, + 0x20CAC002, + 0xFC000000, + 0x06030BFE, + 0xA0C31410, + 0x96D30070, + 0x8603A800, + 0x0200D003, + 0xBD100804, + 0x8113A000, + 0x40FB6117, + 0xFC000000, + 0x280AC002, + 0x020023EC, + 0x50FD0114, + 0x81452110, + 0x1801B7C6, + 0xFC000000, + 0xFC000000, + 0xBD800000, + 0x22C287FC, + 0xA0C30A00, + 0x96D300E0, + 0xA4D5DC00, + 0x02002349, + 0xBCC00074, + 0xD00300DC, + 0xBCC1BFC4, + 0x020023F7, + 0xBCC00024, + 0xC2031130, + 0x0674C803, + 0xBCC000D4, + 0xCAC5201C, + 0xBCC00024, + 0xC2031130, + 0xBD5AB604, + 0xFC000000, + 0xFC000000, + 0x23654047, + 0xFC000000, + 0x07F5E01A, + 0xBD01BFC0, + 0x22C5403C, + 0x06F5D3E7, + 0x22C5402C, + 0xA0C30A00, + 0x96C300E0, + 0xA4C5DC00, + 0xBCD00034, + 0xD00340C6, + 0xBCE75004, + 0x22C54014, + 0xA4E30840, + 0xA4800460, + 0xBCD00064, + 0xD0034082, + 0x86032FF0, + 0x0200524C, + 0xFC000000, + 0x26838055, + 0x02002249, + 0x82822010, + 0x2E838055, + 0x020023E4, + 0x82C3A100, + 0xCAC5B01C, + 0xA0D5DC00, + 0xBCCACE04, + 0x22EA9890, + 0x8ED36801, + 0x28D300E5, + 0x82D3A020, + 0xFC000000, + 0x06434804, + 0x10000CF2, + 0xBCE1C684, + 0x2723F342, + 0x00001010, + 0x2ADA9890, + 0xA5639C00, + 0xA0D5CF00, + 0x96F34010, + 0x07F5C36A, + 0x020012DC, + 0xBCD00004, + 0x0200133C, + 0x528A4100, + 0xBC870C04, + 0xA4830820, + 0xBD100024, + 0xC2045130, + 0xBD100054, + 0xC2045110, + 0xC7101110, + 0xFC000000, + 0x06044006, + 0xFC000000, + 0xFC000000, + 0x1801CC86, + 0xFC000000, + 0xFC000000, + 0x27376FE1, + 0x25120002, + 0xA1445460, + 0x0A351023, + 0x8804A130, + 0x0200C018, + 0xA1438AB0, + 0x97550010, + 0x86D36020, + 0x0200A806, + 0x84F3E150, + 0xA0D39600, + 0xFC000000, + 0xA8D36140, + 0x80F3E0D0, + 0xBCDC4004, + 0xA4D30840, + 0x82E3E080, + 0x42DB8047, + 0xFC000000, + 0xFC000000, + 0x24D34002, + 0xFC000000, + 0x07F3400F, + 0x8CD4E120, + 0x2ED76FE1, + 0x02002011, + 0xA5106100, + 0x2D120002, + 0xA0D44D00, + 0x82D36010, + 0xA5134D00, + 0x2D120002, + 0xA0844C00, + 0x84036080, + 0x02008008, + 0x8884E128, + 0x2E876FE1, + 0x96830020, + 0x82822010, + 0xCA86001E, + 0xFC000000, + 0xC2049601, + 0x96830020, + 0xCA86001E, + 0x10000552, + 0xBC800024, + 0xC2021110, + 0x86046010, + 0x0200500C, + 0xA4E00840, + 0x86046000, + 0x02005006, + 0x86046020, + 0x0200400A, + 0x0200200B, + 0xA4E04270, + 0xD906C157, + 0x02002008, + 0xA4E04240, + 0xD906C156, + 0x02002005, + 0xA4E04250, + 0xD906C154, + 0xA4E04260, + 0xD906C155, + 0x2AE48006, + 0x1801DE06, + 0xFC000000, + 0xFC000000, + 0x00001013, + 0xC7101E02, + 0x23348054, + 0x2354805C, + 0xBDC00014, + 0x8334E0A0, + 0x020023E4, + 0xBD31E040, + 0xA4E70940, + 0x00000010, + 0xFC000000, + 0x22F48054, + 0xBDA00004, + 0x8333E0C0, + 0xBD5000C4, + 0xBD800024, + 0x21334136, + 0x82F3E100, + 0xA1B52000, + 0x293501A6, + 0xBD300044, + 0x20F340F6, + 0x28F50136, + 0xBCF00084, + 0x23A48095, + 0x2334804C, + 0xA5A4E100, + 0xA4E60940, + 0x020023CE, + 0xBD31E5C0, + 0x29A500F6, + 0x00001010, + 0xFC000000, + 0xBD420804, + 0x22F48054, + 0x8333E080, + 0xBD800004, + 0xA1B52000, + 0x21334136, + 0x8353E0C0, + 0xBDA00024, + 0x29350186, + 0xBD800044, + 0x21334156, + 0x8353E100, + 0xA4E68940, + 0x29350186, + 0xBD800084, + 0x21334156, + 0x8353E140, + 0x29350186, + 0xBD8000C4, + 0x21334156, + 0x8353E180, + 0x29350186, + 0xBD800104, + 0x21334156, + 0x8353E1C0, + 0x29350186, + 0xBD800144, + 0x21334156, + 0x8353E200, + 0x29350186, + 0xBD800184, + 0x21334156, + 0x82F3E240, + 0x29350186, + 0xBD3001C4, + 0x20F340F6, + 0x23548095, + 0x28F50136, + 0xBD300204, + 0xBCF00064, + 0x0683A004, + 0x29550136, + 0xBD800244, + 0xBCF00114, + 0xBD500284, + 0x0200239C, + 0xBD31F240, + 0x28F50186, + 0x00001010, + 0xFC000000, + 0x23148084, + 0x0683A004, + 0x81B36110, + 0x82F46100, + 0x82F46060, + 0x0A332005, + 0xBCF00034, + 0xA4E3C940, + 0x02001003, + 0xBD100014, + 0xBD100024, + 0x0200238C, + 0xBD31F640, + 0x2354808C, + 0x00001010, + 0xFC000000, + 0x0A332019, + 0x2B048286, + 0x82D36120, + 0x23948195, + 0xBD320004, + 0x50D200F7, + 0xFC000000, + 0xFC000000, + 0x0A33208A, + 0x808220F0, + 0x82D66000, + 0x8384E000, + 0x82F02000, + 0x2AD481A5, + 0x2A0A9810, + 0xFC000000, + 0xFC000000, + 0x234481B5, + 0x23C481A5, + 0x84072140, + 0x0200880A, + 0x84D521C0, + 0x02002009, + 0x2AD481B5, + 0x83472000, + 0x58D200F0, + 0xFC000000, + 0xFC000000, + 0x02001076, + 0x808220F0, + 0x2A0481B5, + 0x22D481E6, + 0x0A33E80C, + 0x81336140, + 0x2B3481E6, + 0x83302800, + 0x86072800, + 0x0200E004, + 0xBCF20004, + 0x8383E000, + 0x83302400, + 0x82F4E000, + 0x2B3480B4, + 0x2AF480BC, + 0x81B020F0, + 0x8406E140, + 0x0200C802, + 0x83B52000, + 0x06C38008, + 0x06A38007, + 0xFC000000, + 0xFC000000, + 0x418341B7, + 0xFC000000, + 0xFC000000, + 0x02000010, + 0x06C38002, + 0xA4E002A0, + 0xA4E002C0, + 0x2AE48006, + 0x83536000, + 0x83C62000, + 0x8336E000, + 0x8334E000, + 0x0200D807, + 0x21A54002, + 0x83556040, + 0x29A70002, + 0x020023FC, + 0x83C72040, + 0x8734E040, + 0x233481A5, + 0x84F3E1B0, + 0x85C4E1B0, + 0x2AF480BC, + 0x818621B0, + 0x2BC481A5, + 0x0A372017, + 0x854521B0, + 0x80D361B0, + 0x0A33C004, + 0x0A351031, + 0xFC000000, + 0x0200003F, + 0xBDA20004, + 0xBD100014, + 0x235480B4, + 0xBD300044, + 0xA4E4C940, + 0x0200232E, + 0xBD320DC0, + 0xA1B6A000, + 0x51A20157, + 0xFC000000, + 0xFC000000, + 0x0A352023, + 0x2B1480A5, + 0x80822150, + 0x020013C1, + 0xFC000000, + 0x22F480B4, + 0x22D480BC, + 0x8583E0D0, + 0xBD420004, + 0x8B562038, + 0x84062150, + 0x02004008, + 0x83556040, + 0x82F62000, + 0x84D56180, + 0x86D36010, + 0x0A336BFF, + 0x280500F4, + 0x82F3E010, + 0xBD100024, + 0x06838004, + 0x06338003, + 0x06238002, + 0xBD100014, + 0xBCD00044, + 0xA4E34940, + 0x0200230E, + 0xBD3215C0, + 0xA1B52000, + 0x59420180, + 0xFC000000, + 0xFC000000, + 0x0200200C, + 0x2B1480A5, + 0x80822180, + 0x22D481B5, + 0xFC000000, + 0x0A334805, + 0x06B38804, + 0x100008EF, + 0xBD021900, + 0xFC000000, + 0x02001385, + 0xFC000000, + 0x228481B5, + 0xFC000000, + 0x0A320805, + 0x06B38804, + 0x100008EF, + 0xBD021B40, + 0xFC000000, + 0x23048286, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00001010, + 0xFC000000, + 0x23928446, + 0xBCE00004, + 0xBD800000, + 0x8A066300, + 0x02006065, + 0xBD2AD804, + 0xBD000010, + 0x860360D0, + 0x02004061, + 0x06B64060, + 0x0746405F, + 0x07E6405E, + 0x07D6405D, + 0x0796585C, + 0xA0D2A000, + 0x8A066100, + 0x0200680D, + 0x2312854C, + 0x23328544, + 0x80C460A0, + 0x83B32180, + 0x80C02008, + 0xD6C6C102, + 0xFC000000, + 0xBCC9F404, + 0xC7B00602, + 0xD7BB2842, + 0x02001005, + 0xFC000000, + 0x23B285A6, + 0xBCCE8604, + 0xD7BB2642, + 0x84C4E110, + 0x87C46120, + 0xC7D00702, + 0x23B28525, + 0x06876845, + 0x2AC4805C, + 0xA1D59C00, + 0x8A066100, + 0x02006805, + 0x2B148054, + 0x2B348084, + 0xA4E04290, + 0x81B6E0C0, + 0x8196E1C0, + 0x840661D0, + 0x0200C03A, + 0x860666E0, + 0x0200E804, + 0x2BB48065, + 0x83C66000, + 0x83C026E0, + 0x2B948035, + 0x2BC48025, + 0x23C2855C, + 0x2BC4804C, + 0x86072110, + 0x0200680D, + 0x84C6E0C0, + 0x2AC48095, + 0x86032080, + 0x0200A02B, + 0x82C4E060, + 0xA4E00280, + 0xBDB00084, + 0x20C340C5, + 0xBD000020, + 0xFC000000, + 0x0A130021, + 0x0200000B, + 0x82C4E0C0, + 0x86072060, + 0x02006820, + 0xA4E04280, + 0x20C340C6, + 0xA0C309C0, + 0x97B30020, + 0x8606E140, + 0x0200901A, + 0x2AE48006, + 0x80C4E1B0, + 0x87332120, + 0x2BB4808C, + 0x84066130, + 0x0200A014, + 0x2B348044, + 0xBD000010, + 0x8604E6E0, + 0x0200C010, + 0x02001034, + 0xFC000000, + 0x22848146, + 0xBD000030, + 0x2B048184, + 0x82C22010, + 0xBC800024, + 0xC2021190, + 0xFC000000, + 0x02002006, + 0x2B048184, + 0x2AC48146, + 0x22848126, + 0x82822010, + 0x2A848126, + 0x100005EE, + 0x2B048184, + 0xFC000000, + 0x22848106, + 0xBD800010, + 0x82C22010, + 0x02002007, + 0xBC800000, + 0x2AC48106, + 0xBD800000, + 0x22C48166, + 0x82C32010, + 0x2AC48166, + 0xBCC00024, + 0xC2031190, + 0xFC000000, + 0x1000061E, + 0x2A848184, + 0xFC000000, + 0x235480CC, + 0x233480C4, + 0x96D54020, + 0x83A361C0, + 0x97454010, + 0x86D4E010, + 0x834521A0, + 0x0A336805, + 0x83356010, + 0x215481A6, + 0xA4E002B0, + 0x2AE48006, + 0x21448145, + 0x2B5481E6, + 0x2B4481B5, + 0x00002010, + 0x2B3480CC, + 0x2AD480C4, + 0xBCC00054, + 0xC2031190, + 0xC6C01190, + 0xFC000000, + 0x06030006, + 0xFC000000, + 0xFC000000, + 0x180242C6, + 0xFC000000, + 0xFC000000, + 0xC6C01F42, + 0x82C02030, + 0x8EC32400, + 0x8EC32800, + 0xC2031F42, + 0x84C66130, + 0x23E48025, + 0x2AC481C5, + 0x85D7A130, + 0x2BD481B5, + 0x0A332014, + 0xBDC00004, + 0xBDB00004, + 0x86032800, + 0x02008806, + 0x86032400, + 0x0200C804, + 0x86076400, + 0x0200C802, + 0xA4E042A0, + 0x860666E0, + 0x0200D809, + 0xA4E042C0, + 0x859661E0, + 0x815561E0, + 0x2B9480D5, + 0x2B5480E6, + 0x83B6E010, + 0x83572010, + 0xA4E042B0, + 0x2A0480CC, + 0x2BB480C4, + 0x2AE48006, + 0x8132A130, + 0x8334E120, + 0x2B3481E6, + 0x0693A024, + 0x83932000, + 0x2B948195, + 0xBD300004, + 0x81B36110, + 0x1000077A, + 0xBD024DC0, + 0xBD100034, + 0x0A145B98, + 0x2B148075, + 0xBD420804, + 0xBCF00004, + 0x2AF480A5, + 0x10000782, + 0xBD024FC0, + 0xBD100004, + 0x100007CB, + 0xBD025080, + 0x2B1480A5, + 0x22F48044, + 0x82F3E000, + 0x100007DB, + 0xBD0251C0, + 0xA4E04230, + 0x2B1480A5, + 0x84832190, + 0x2A8481C5, + 0x8284A310, + 0xBCCFFFFC, + 0x28020000, + 0x42830017, + 0xFC000000, + 0xFC000000, + 0x0A14438F, + 0x02001394, + 0xBC800040, + 0xBCF00004, + 0x10000799, + 0xBD024FC0, + 0xBD100004, + 0x228AE561, + 0xC2021281, + 0xBC800034, + 0x96820020, + 0x8E822030, + 0xC2021240, + 0x20848001, + 0x9EA20001, + 0xBC900014, + 0x94B240A0, + 0x0652803A, + 0xA4A7C640, + 0xFC000000, + 0xFC000000, + 0xAAA2A300, + 0xBC9C8004, + 0x80A260A0, + 0x888220B8, + 0xFC000000, + 0x26C280A5, + 0x26D28026, + 0xA09344E0, + 0xA0B35C00, + 0xFC000000, + 0x20938094, + 0x94F2C090, + 0xA0B345E0, + 0xA0935D00, + 0xFC000000, + 0x20B380B4, + 0x951240B0, + 0x26B28006, + 0x2293009C, + 0x22D30015, + 0x06024804, + 0x8A926820, + 0x2A93009C, + 0xD0034006, + 0x26D28086, + 0x27428046, + 0x229AE580, + 0x27328066, + 0x84052091, + 0x02009006, + 0x23530046, + 0x2F328046, + 0x80B2E140, + 0x0A34C805, + 0x02000006, + 0x80952130, + 0x0200D804, + 0x2E928046, + 0x8C9560D0, + 0x2A930046, + 0x8092E110, + 0x840260F0, + 0x0200D003, + 0x2EF28006, + 0x2E928006, + 0x84026000, + 0x22930066, + 0x0200CBCA, + 0x0200ABC9, + 0x8C9260D0, + 0x2A930066, + 0x18025747, + 0xFC000000, + 0xFC000000, + 0x83F7E010, + 0x020023FC, + 0x8BF7E088, + 0xA527C610, + 0x20C20003, + 0x8A032803, + 0x0200415B, + 0xA0B307C0, + 0x8602E070, + 0x020040B8, + 0x8602E040, + 0x02004809, + 0xA0B35C00, + 0x2ABA80A1, + 0xBCB00034, + 0x02002147, + 0xA4C2C7C0, + 0x2ACA8003, + 0xFC000000, + 0xA4704270, + 0xA0E35370, + 0x96E38040, + 0x8363AB01, + 0xA1A31130, + 0xA4D2C3F0, + 0x27858065, + 0x26E5803C, + 0xA1331C00, + 0x22BAE441, + 0x26F600A5, + 0x0A32D898, + 0xBD100004, + 0x0633A1A7, + 0x27258025, + 0x26B58045, + 0x8AE6A0F0, + 0xFC000000, + 0x0EFB8C04, + 0xBCE07C04, + 0x8404E0E0, + 0x0200C13C, + 0x8404A0B0, + 0x0200983D, + 0xA0E303B0, + 0x22BAE1C1, + 0x8402E120, + 0x0200D009, + 0xFC000000, + 0x22BAE1A1, + 0xFC000000, + 0x0A12C132, + 0xFC000000, + 0x02002008, + 0x86B2E010, + 0x2ABAE1A1, + 0x22BAE181, + 0xFC000000, + 0x0A12C12B, + 0x86B2E010, + 0x2ABAE181, + 0x0651C047, + 0xA0E0A000, + 0x22208035, + 0x82B4A010, + 0x2EB58025, + 0x27258006, + 0x22B3C0A6, + 0x80B2E130, + 0x2AB3C0A6, + 0xC9A3813E, + 0xA4C01B30, + 0xA4D69170, + 0x28C38003, + 0x0A249007, + 0xCBA2801E, + 0x20C48002, + 0x80C320E2, + 0x02002005, + 0x28C48002, + 0xA523A000, + 0xA523A000, + 0xA523A100, + 0x0A34597C, + 0x2F258006, + 0x26C58075, + 0x26B600B5, + 0x26D60086, + 0x8CB2E0C0, + 0x2EB600B5, + 0x22C3C026, + 0x22B3C09C, + 0x8CC320D0, + 0x2AC3C026, + 0x0671DC04, + 0x22CA8242, + 0x82C32010, + 0x2ACA8242, + 0x0602C8F5, + 0x8AB2E018, + 0x2AB3C09C, + 0x020020F2, + 0x22B3C015, + 0xD002C006, + 0x27458055, + 0xFC000000, + 0x0A350018, + 0x0A339806, + 0x22E50015, + 0x8404A0E0, + 0x02008814, + 0x02001009, + 0x22E50046, + 0x22B50025, + 0x8404A0B0, + 0x020093BA, + 0x22E50035, + 0x8404A0E0, + 0x0200980C, + 0x22E50066, + 0x84B4A0B0, + 0xC74020C1, + 0x07F38005, + 0xA8B3A0B0, + 0x840520B0, + 0x0200C3B0, + 0x02000004, + 0xA8B2E0E0, + 0x840520B0, + 0x0200C3AC, + 0x020010E3, + 0xFC000000, + 0x0671C7BA, + 0x07F30BB9, + 0x07F34005, + 0x10080118, + 0xA0B30AE0, + 0xFC000000, + 0x020003B4, + 0x10000C81, + 0xBD028A00, + 0xFC000000, + 0x10000C65, + 0xBD028AC0, + 0xBCB000C4, + 0x0A3643AD, + 0xBD492404, + 0xA0E20C10, + 0xFC000000, + 0xFC000000, + 0x20E500E6, + 0xBD028D40, + 0x10000C9D, + 0xA1431C00, + 0xBDA88004, + 0xBD4FFFFC, + 0x42ED0017, + 0xFC000000, + 0xFC000000, + 0x237AF341, + 0xA1A31130, + 0xFC000000, + 0x24E5C002, + 0xFC000000, + 0x0A33880F, + 0x80E32000, + 0x81536000, + 0x22BAECA1, + 0x82B2E120, + 0x96B2C011, + 0xA552CF00, + 0x10080126, + 0xBCB000C4, + 0xFC000000, + 0xBD029300, + 0x10000C97, + 0xFC000000, + 0xFC000000, + 0x0200038C, + 0x10080C7B, + 0xBD029400, + 0xFC000000, + 0x020003F8, + 0xBCB8C004, + 0xA4B69020, + 0xFC000000, + 0x02009B67, + 0x20B2C002, + 0xFC000000, + 0x06C2CB64, + 0x82B4E030, + 0x02002362, + 0x8B32E038, + 0xA4C4DC00, + 0xA0B34800, + 0x8602E050, + 0x0200400E, + 0x8602E0D0, + 0x0200406C, + 0x8602E060, + 0x0200407E, + 0x8602E0E0, + 0x02004085, + 0x8602E000, + 0x02004088, + 0x8602E0C0, + 0x020040C5, + 0x8602E080, + 0x020040DA, + 0x02000086, + 0xA0B35370, + 0x96B2C040, + 0x82F2EB01, + 0xBD800004, + 0xFC000000, + 0x26D3C065, + 0x26C3C03C, + 0xFC000000, + 0x26B340A5, + 0x2723C006, + 0x27C3C025, + 0x2E03C025, + 0x2E03C006, + 0x26E340B5, + 0x2713C075, + 0x06332037, + 0x88E3A118, + 0x2EE340B5, + 0x0A339807, + 0xA194A100, + 0x22C2C026, + 0x26D34086, + 0xFC000000, + 0x88C320D8, + 0x2AC2C026, + 0x8C066180, + 0x0200406B, + 0x0A365034, + 0x21664003, + 0xFC000000, + 0x07F5C01B, + 0xA0C58AE0, + 0x96D300E0, + 0xA4D5DC00, + 0xBCC00034, + 0xD00300D6, + 0x22C2C0A6, + 0xA0D59C00, + 0x84C320D0, + 0x2AC2C0A6, + 0x22CAE1C1, + 0xA0D59B30, + 0xBCE00004, + 0x0EC71807, + 0x80F02020, + 0x28E64003, + 0x22CAE1A1, + 0x02002006, + 0x82C32010, + 0x2ACAE1A1, + 0x22CAE181, + 0x82C32010, + 0x2ACAE181, + 0xA0266000, + 0x020023E3, + 0x97934030, + 0x87C72010, + 0xA0D5DC00, + 0xBCCACE04, + 0x22EA9890, + 0x8ED36801, + 0x28D300E5, + 0x82D3A020, + 0xFC000000, + 0x06434804, + 0x10000CF2, + 0xBCE2AC04, + 0x2723F342, + 0x020013E0, + 0x2ADA9890, + 0xA0C30600, + 0xBDB8B004, + 0xA5B30270, + 0xFC000000, + 0xFC000000, + 0x2356C006, + 0x020023C6, + 0x8383E000, + 0x2A06C006, + 0x9EC54002, + 0xFC000000, + 0x06532034, + 0xAAC32020, + 0x82C32100, + 0xFC000000, + 0xFC000000, + 0x20C6C0C5, + 0xFC000000, + 0xFC000000, + 0x26D30066, + 0x26E30006, + 0x895560D8, + 0xA193A100, + 0x020023C1, + 0x2E030025, + 0x2E030006, + 0xA0C34D60, + 0x86032080, + 0x02008805, + 0xBCBA0004, + 0x02002006, + 0xAAC32580, + 0x80D2E0C0, + 0xBCD83004, + 0x96B30050, + 0x80D360B0, + 0xFC000000, + 0xFC000000, + 0x22B3409C, + 0xFC000000, + 0x22C34015, + 0x0602C816, + 0x8AB2E038, + 0x02002014, + 0x2AB3409C, + 0xD0030006, + 0x2A0A8C02, + 0x2A1A8C42, + 0x2A2A8C82, + 0x2A3A8CC2, + 0x2A4A8D02, + 0x2A5A8D42, + 0x0200200B, + 0x2A6A8D82, + 0x2A7A8DC2, + 0x07630803, + 0x02001007, + 0x8E71E200, + 0x02001005, + 0x8A71E208, + 0x02002003, + 0x22BAECA1, + 0xC202D502, + 0x0671C48D, + 0x28020002, + 0x82820080, + 0x8A820808, + 0xA0B20830, + 0x2EBF5690, + 0x20C20002, + 0x8A032803, + 0x02004003, + 0xBCB00024, + 0xC202D702, + 0x180267C7, + 0xFC000000, + 0xFC000000, + 0x22B3C015, + 0x8AB2E3F0, + 0x8602E200, + 0x02006007, + 0x26E58034, + 0xA0B31C00, + 0xCAE0C01C, + 0x02002007, + 0xC8E080BE, + 0xBCB00144, + 0xCAE1101C, + 0xFC000000, + 0xC8E100BE, + 0xBCB00154, + 0xCBA4801C, + 0x07F35008, + 0xCAB5E01C, + 0xA0B30AE0, + 0x96C2C0E0, + 0xA4C35C00, + 0x020023DE, + 0xBCB00034, + 0xD002C0C6, + 0x0671DC0A, + 0x22BA8202, + 0x82B2E010, + 0x2ABA8202, + 0x22BA80C2, + 0x22CA8102, + 0x86B2E010, + 0x2ABA80C2, + 0x800320B0, + 0x0200485F, + 0xA0B35C00, + 0xBCCACE04, + 0x22DA9890, + 0x8EB2E801, + 0x28B300D5, + 0x82D36020, + 0xFC000000, + 0x06434804, + 0x10000CF2, + 0xBCE2CAC4, + 0x2723F342, + 0x020013C6, + 0x2ADA9890, + 0x07F3580A, + 0xA0C35F00, + 0x22BAE1A1, + 0x84B2E0C0, + 0x0200800E, + 0x2ABAE1A1, + 0x22BAE181, + 0x020023BD, + 0x80B2E0C0, + 0x2ABAE181, + 0x22BAE181, + 0x84B2E0C0, + 0x02008006, + 0x2ABAE181, + 0x22BAE1A1, + 0x020023B5, + 0x80B2E0C0, + 0x2ABAE1A1, + 0xBCB00024, + 0xC202D702, + 0x1802CB47, + 0xFC000000, + 0xFC000000, + 0xA0E31E00, + 0x2A1AF142, + 0x22BAEDC0, + 0xFC000000, + 0x0A32C006, + 0xBCB00024, + 0xC202D702, + 0x1802D187, + 0xFC000000, + 0xFC000000, + 0xBCCAE304, + 0xD6E32640, + 0xBCDA5804, + 0xFC000000, + 0xC6B00702, + 0xFC000000, + 0x0682C80B, + 0xA0B2D000, + 0xA4D2C640, + 0xA4C2C610, + 0x28034002, + 0x2A034026, + 0x2A034046, + 0x2A034066, + 0x020023F2, + 0xBCB00FF4, + 0x28B30000, + 0x02002392, + 0x2A0AF142, + 0xFC000000, + 0xA0E38600, + 0x8115A000, + 0xBD48B004, + 0xA5438270, + 0x02002258, + 0xFC000000, + 0x23650085, + 0x26C580A5, + 0x26D58066, + 0x26B44025, + 0x82B2E010, + 0x2EB44025, + 0x81646000, + 0x22B30006, + 0x0200227F, + 0x8CB2E0D0, + 0x2AB30006, + 0x22CA8003, + 0x22BA81C2, + 0x0A331420, + 0x22CA8181, + 0x22DA81A1, + 0x80B2E0C0, + 0x8402E0D0, + 0x0200C802, + 0x80B020D0, + 0x2ABA81C2, + 0x2A0A9810, + 0xA4700270, + 0x22DA8141, + 0x22CA8102, + 0x22BA8161, + 0x06F34803, + 0xBCC00004, + 0x2ACA8102, + 0x0A33100E, + 0x22DA81C2, + 0x840360B0, + 0x0200800D, + 0x84B360B0, + 0x2ABA81C2, + 0x86B32010, + 0x2ABA8102, + 0x22BA80C2, + 0x82B2E010, + 0x2ABA80C2, + 0x100009AD, + 0xBCB00034, + 0x22CA8003, + 0x2A0A8002, + 0x2A0A9810, + 0x10000C38, + 0xFC000000, + 0xFC000000, + 0x228AE4E1, + 0xC20212C1, + 0xBC800044, + 0x96820020, + 0x8E822030, + 0xC2021250, + 0xBC9A9824, + 0xBC891A04, + 0xFC000000, + 0x20D24001, + 0xFC000000, + 0x0A334012, + 0xBCB91904, + 0x22920015, + 0x96924010, + 0x22A20004, + 0xFC000000, + 0x2092C095, + 0x86A2A010, + 0x0200C006, + 0xFC000000, + 0x00082009, + 0xFC000000, + 0xFC000000, + 0x22A2000C, + 0x2AA20004, + 0x0E1B4BF2, + 0x86D36010, + 0x82822080, + 0x1802E787, + 0xFC000000, + 0xFC000000, + 0x22B54025, + 0x22954005, + 0x9A926010, + 0x22A54015, + 0x0A32C006, + 0x809260B0, + 0x8402A090, + 0x0200D003, + 0x2A954005, + 0x2AA54005, + 0x83556080, + 0x8334E010, + 0xFC000000, + 0x0EFCDBF3, + 0xFC000000, + 0xFC000000, + 0x14000000, + 0xBD300004, + 0xBD593804, + 0xBCA93404, + 0xFC000000, + 0xFC000000, + 0x22928035, + 0x22C28006, + 0x22E28025, + 0x0A324022, + 0x06F25C03, + 0xA0B25E00, + 0x96B2C050, + 0x06F39C03, + 0xA0939E00, + 0x96924050, + 0x80B320B0, + 0x02008012, + 0x840260B0, + 0x0200D003, + 0x2AB28006, + 0x2A928006, + 0xBCAAC804, + 0xFC000000, + 0xFC000000, + 0x20B28001, + 0x82A2A020, + 0x0A32D010, + 0x2292C09C, + 0x22C2C015, + 0x06024BFB, + 0xD0030006, + 0x020023F9, + 0x8A926018, + 0x2A92C09C, + 0xBC9FB604, + 0xBC900128, + 0x800260B0, + 0x02009BF0, + 0x2AB28006, + 0x020023EE, + 0x84902090, + 0x2A928006, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0xBC901D14, + 0xC2025702, + 0xBC902414, + 0xC2025702, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0xBDC00004, + 0xBC8A9804, + 0xBCBA9884, + 0xFC000000, + 0x209201C4, + 0x20A2C1C4, + 0xBC8AE8C4, + 0xBC800008, + 0x84A260A0, + 0x8B12A3F0, + 0x2892C1C4, + 0x0A344005, + 0xFC000000, + 0x100003B5, + 0xBDB30344, + 0xFC000000, + 0xBDC00004, + 0xBCAA9904, + 0xBC9ADD84, + 0xBC8AE884, + 0xBC800018, + 0xFC000000, + 0x20B281C4, + 0x20C241C4, + 0x84C2E0C0, + 0x8B1323F0, + 0x28B241C4, + 0x0A344004, + 0x100003B5, + 0xBDB30704, + 0xFC000000, + 0x0EEF1BF6, + 0x83C72010, + 0xFC000000, + 0xBCCACE04, + 0xBC8A9894, + 0x22DA9890, + 0xFC000000, + 0x0A334006, + 0xFC000000, + 0x10000CF2, + 0xBCE30A04, + 0x2723F342, + 0x28D20000, + 0x1802FF47, + 0xFC000000, + 0xFC000000, + 0x2A0A8002, + 0x26B76F41, + 0xC202D3E1, + 0xBCB001B4, + 0x96B2C020, + 0x8EB2E030, + 0xC202D370, + 0xBCB20A84, + 0x2ABAF401, + 0x2A0A9810, + 0xFC000000, + 0xFC000000, + 0x22BAF401, + 0xFC000000, + 0xFC000000, + 0x20C2C001, + 0x82B2E020, + 0x0A331005, + 0x2ABAF401, + 0x0000200C, + 0xFC000000, + 0xFC000000, + 0x18030CC7, + 0xFC000000, + 0xFC000000, + 0x22BA97A1, + 0x22DA9781, + 0x22CA97E1, + 0x0A334406, + 0x80B2E0D0, + 0x8402E0C0, + 0x0200C802, + 0x80B020C0, + 0x2ABA97A1, + 0x10000C38, + 0xFC000000, + 0xFC000000, + 0x07F34006, + 0xA0C35C00, + 0xA4C2CAE0, + 0x14000000, + 0xBC800034, + 0xD00200C6, + 0xA0B35C00, + 0xBCCACE04, + 0x228A9890, + 0x8EB2E801, + 0x28B30085, + 0x82D22020, + 0xFC000000, + 0x06434804, + 0x10000CF2, + 0xBCE31884, + 0x2723F342, + 0x14000000, + 0x2ADA9890, + 0xFC000000, + 0x26E3F642, + 0x8A03AFF2, + 0x02005811, + 0x26EC7D42, + 0xFC000000, + 0x06038002, + 0x07038BFA, + 0x2E0C7D42, + 0x96B2C0E0, + 0xBD400034, + 0xD00500B2, + 0x07038008, + 0xA1539C10, + 0x22EAF520, + 0x234AB742, + 0xA8E560E0, + 0x00002010, + 0x96E38080, + 0x8193A140, + 0xBD500004, + 0x00001010, + 0xBD900004, + 0xA0B2CA00, + 0x96E2C0E0, + 0xA4E55C00, + 0x00002010, + 0xBD400034, + 0xD00500E6, + 0x22EAF420, + 0xFC000000, + 0x0A338006, + 0xBCE00024, + 0xC2039702, + 0x18032047, + 0xFC000000, + 0xFC000000, + 0xBCE00014, + 0x2AEAF420, + 0xBCE00054, + 0xC20391B0, + 0xC6E011B0, + 0xFC000000, + 0x06038006, + 0xFC000000, + 0xFC000000, + 0x18032546, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00000010, + 0x2A0AF420, + 0xFC000000, + 0xFC000000, + 0x00002010, + 0xBCE00024, + 0xC20391B0, + 0xBDB00074, + 0x86052400, + 0x0200E810, + 0x8DB6E142, + 0x8DA6A1A2, + 0x0A16D005, + 0x87452400, + 0x43AB8400, + 0x02001006, + 0x87B6E010, + 0x83B6E070, + 0x43AB8407, + 0xFC000000, + 0xFC000000, + 0x86052400, + 0x0200E3F6, + 0x83A6A400, + 0x82E3A400, + 0x43AB8407, + 0xFC000000, + 0xFC000000, + 0x814021B6, + 0x80E021A6, + 0x86052800, + 0x0200C807, + 0x87452800, + 0x52EE4800, + 0x86052800, + 0x0200E3FD, + 0x82E3A800, + 0x83966800, + 0xFC000000, + 0x50EE4147, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00001010, + 0xFC000000, + 0x228AE521, + 0xC20212E1, + 0xBC800054, + 0x96820020, + 0x8E822030, + 0xC2021270, + 0x229AE501, + 0xBC800054, + 0xC2021150, + 0xC6801150, + 0xFC000000, + 0x06020006, + 0xFC000000, + 0xFC000000, + 0x18033506, + 0xFC000000, + 0xFC000000, + 0xBCA8A004, + 0x9EB24001, + 0xA4A2C840, + 0x0A324017, + 0xFC000000, + 0x22D28025, + 0x22C28006, + 0x22828035, + 0x22E28055, + 0x94D200D0, + 0x96838050, + 0x80C320D0, + 0x840220C0, + 0x02009009, + 0x2A828006, + 0xBC8FB604, + 0xBC800128, + 0x800220C0, + 0x0200A004, + 0x84802080, + 0x2A828006, + 0x2AC28006, + 0x948040B0, + 0x020023E9, + 0x88926088, + 0xFC000000, + 0xBC800024, + 0x18033247, + 0xC2021150, + 0xFC000000, + 0xBCF00014, + 0xC203D170, + 0xC6F01170, + 0xFC000000, + 0x0603DBFC, + 0x2733F382, + 0xBD100024, + 0x82F32000, + 0x8524A130, + 0x8344A020, + 0x840520D0, + 0x0200E005, + 0x81A4E0D0, + 0x83236000, + 0x82D52000, + 0x27A3F302, + 0x2FA3F3C2, + 0xBDAFFFFC, + 0xBD4AF534, + 0x58F4C0D0, + 0x28050000, + 0x43468010, + 0x2A0A9810, + 0xFC000000, + 0xFC000000, + 0x21350000, + 0xFC000000, + 0x0A34C3FE, + 0x8524A0D0, + 0x2743F3C2, + 0x2F43F382, + 0x0A34A006, + 0x80F3E0D0, + 0x82D4A000, + 0x020023EE, + 0x83352000, + 0x81A520D0, + 0x0000200E, + 0xC2045170, + 0xFC000000, + 0x20BA8000, + 0xA492CA80, + 0x0672C89E, + 0x280A8000, + 0x82A2A012, + 0x8AA2A40A, + 0x22C24786, + 0xA13309A0, + 0xA0E308A0, + 0xA08304E0, + 0xA1131400, + 0xA1530500, + 0x22F2455C, + 0x232247FC, + 0x22C24407, + 0x0E6BCC04, + 0xBD400004, + 0xA5438B80, + 0xA5404360, + 0x0F1BCC04, + 0xA5448B00, + 0xA544C7D0, + 0xA5404370, + 0x0672C803, + 0xBCE00064, + 0xD00380B2, + 0xBD34F804, + 0xBCBC5004, + 0xA5320450, + 0x8134E0B2, + 0xA5320560, + 0xBDE00004, + 0x10000DC0, + 0xBCA34F40, + 0xBD036540, + 0x07F35009, + 0xFC000000, + 0xBCE76F84, + 0x97554010, + 0x26F77041, + 0xFC000000, + 0x24E38155, + 0x8403A0F0, + 0x0200C84D, + 0xA1535C00, + 0x07F35022, + 0xA0C31C00, + 0xA0D34F00, + 0x96F34010, + 0x22EAF520, + 0x22DADD42, + 0xA8E560E0, + 0x96E38080, + 0x80D360E0, + 0x816360F0, + 0xA0D50B00, + 0xA5534AE0, + 0xA5500580, + 0x8EE56023, + 0x0661DC0B, + 0xBCD00054, + 0xC2035180, + 0xC6D01180, + 0xFC000000, + 0x06034009, + 0xFC000000, + 0xFC000000, + 0x180358C6, + 0xFC000000, + 0xFC000000, + 0xC2035180, + 0x020013F9, + 0xC6D01180, + 0x26D77041, + 0x82D36010, + 0x2ED77041, + 0xBCD00024, + 0xC2035180, + 0x0200000B, + 0x96F54020, + 0xA5500580, + 0x8EE56013, + 0x26D76742, + 0x80D360F0, + 0xBCFAF3C4, + 0x42F34047, + 0xFC000000, + 0xFC000000, + 0x2163C002, + 0x86C32120, + 0xA5432000, + 0x10000E93, + 0xBCA36D40, + 0xBCD35E00, + 0x26D2C046, + 0xBCFAE004, + 0xA0C34640, + 0xA4F30620, + 0xA0D34A80, + 0xFC000000, + 0x0661DC0B, + 0xBCC00054, + 0xC2031180, + 0xC6C01180, + 0xFC000000, + 0x06030009, + 0xFC000000, + 0xFC000000, + 0x18036306, + 0xFC000000, + 0xFC000000, + 0xC2031180, + 0x020013F9, + 0xC6C01180, + 0x20C3C002, + 0x82C32010, + 0x28C3C002, + 0x10000EEC, + 0xBCA36B40, + 0xFC000000, + 0x26C2C054, + 0xA4C00270, + 0x2EC2C054, + 0xA0E35C00, + 0xA0B50B00, + 0xA4E2CAE0, + 0x07F36004, + 0xA0B343F0, + 0xA4E2C380, + 0xA4E04390, + 0x0661DC0B, + 0xBCB00054, + 0xC202D180, + 0xC6B01180, + 0xFC000000, + 0x0602C009, + 0xFC000000, + 0xFC000000, + 0x18036A86, + 0xFC000000, + 0xFC000000, + 0xC202D180, + 0x020013F9, + 0xC6B01180, + 0x10000EF0, + 0xBCA36C00, + 0xA0D50B80, + 0x2682C054, + 0xA4800270, + 0x2E82C054, + 0xBC800024, + 0xC2021180, + 0x02002008, + 0xBC800024, + 0xC2021702, + 0x2682C054, + 0xA4800270, + 0x2E82C054, + 0xBC800024, + 0xC2021702, + 0x18034687, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0661DC0B, + 0xBCB00054, + 0xC202D180, + 0xC6B01180, + 0xFC000000, + 0x0602C009, + 0xFC000000, + 0xFC000000, + 0x18037386, + 0xFC000000, + 0xFC000000, + 0xC202D180, + 0x020013F9, + 0xC6B01180, + 0xBD7E9604, + 0x81602110, + 0xA56204A0, + 0xD76DE840, + 0xBCBC6004, + 0xBC976408, + 0xBD29F804, + 0xC6E00702, + 0xA0F39000, + 0x06838816, + 0xA523C830, + 0xA4B3C840, + 0xA493C910, + 0xBCE4FE04, + 0xA573C810, + 0x2762C054, + 0xA4E3C810, + 0x06758086, + 0xA5604270, + 0x2F62C054, + 0x26E2C046, + 0x26F2C075, + 0xBCF00024, + 0xC203D180, + 0x0413A80A, + 0x26E2C065, + 0x24EA4001, + 0x0837880A, + 0x00002010, + 0xA5600270, + 0x2F62C054, + 0x26EF56D0, + 0xA4B38840, + 0xA4938910, + 0xA5738810, + 0xFC000000, + 0x26F2C054, + 0x81B3A000, + 0x0673E3FA, + 0x82E3A010, + 0x8AE3A108, + 0x2EEF56D0, + 0x24F5C001, + 0xA193C4A0, + 0xBD84F804, + 0xBCEC5004, + 0xA5864450, + 0x818620E2, + 0xA5864560, + 0xA0E3D400, + 0xA526C830, + 0xAAF3A140, + 0x26EE0126, + 0x80E3A0F0, + 0x83D3A0C0, + 0x25C5C001, + 0x258A4001, + 0x06F7102C, + 0x24E48003, + 0xBDAF5584, + 0x2792C075, + 0x2CE68003, + 0x5BAF4080, + 0xBCFAF5C4, + 0xBCEFFFFC, + 0x42F38017, + 0xFC000000, + 0xFC000000, + 0x84066180, + 0x02004020, + 0xA0E704A0, + 0xA4E71510, + 0x2F82C075, + 0xA0F61080, + 0xA4F61080, + 0xBD8F5564, + 0xBD94F804, + 0xBDAC5004, + 0xA5938450, + 0x819661A2, + 0xA5938560, + 0xFC000000, + 0x2CF60001, + 0x26FE4046, + 0x80F3E0E6, + 0x5B8BC020, + 0xBCFAF5C4, + 0xBD8FFFFC, + 0x42F60017, + 0xFC000000, + 0xFC000000, + 0xA1839510, + 0x26EE4006, + 0xBCFAF2C4, + 0x97860130, + 0x83862013, + 0x8F862103, + 0x2983C002, + 0x52F38047, + 0xFC000000, + 0xFC000000, + 0xAAF46140, + 0x26ECC126, + 0x80E3A0F0, + 0xBDA4FE04, + 0xA5A6C810, + 0xBD9F5404, + 0x439B8147, + 0xFC000000, + 0xFC000000, + 0x27864046, + 0x0A37A804, + 0x24E64003, + 0x27B64086, + 0x06160022, + 0x2CE2C003, + 0xA58042F0, + 0x2F82C046, + 0x26E64066, + 0x2FB48026, + 0x2EE48006, + 0x2D65C001, + 0x2D668001, + 0xBCFF5544, + 0xBD6F5564, + 0x97744010, + 0x26ECC086, + 0x80E3A170, + 0x42FB8020, + 0x26ECC046, + 0x80E3A170, + 0x436B8027, + 0xFC000000, + 0xFC000000, + 0x24F3C001, + 0xA0E3D080, + 0xA4E3D080, + 0x2EE2C065, + 0x25658001, + 0xA0F59080, + 0xA4F59080, + 0xA0E59080, + 0xA4E59080, + 0x2EF2C075, + 0x2CEA4001, + 0xBCE00024, + 0xC2039180, + 0x0000000A, + 0xBCE00024, + 0xC2039180, + 0x00000010, + 0xBCB00024, + 0xC202D180, + 0xBCB00024, + 0xC202D702, + 0x18036F47, + 0xFC000000, + 0xFC000000, + 0x26FF4FE1, + 0xBCCF4404, + 0x0A33E814, + 0x8733E020, + 0x80F4E0C0, + 0x26CF4F81, + 0x26FF4FA1, + 0x82F3E100, + 0x840320F0, + 0x00009010, + 0xBD500004, + 0xBD5F4404, + 0x26CF4F42, + 0x435B0207, + 0xFC000000, + 0xFC000000, + 0x82C32200, + 0xBD3001E4, + 0x2ECF4F42, + 0x2EFF4FA1, + 0x80F4E150, + 0xFC000000, + 0x26C48025, + 0x82C32010, + 0x2EC48025, + 0x00002011, + 0x2553C001, + 0x2F3F4FE1, + 0x10000F03, + 0xBCA3A2C0, + 0xBCB3A400, + 0x26930046, + 0x26E30026, + 0x0200205F, + 0xBCA3A200, + 0xA0D24B80, + 0x00002008, + 0xFC000000, + 0xFC000000, + 0x27748025, + 0x26C48035, + 0xA0F32000, + 0x0A35DC18, + 0x24CA4001, + 0x2752C065, + 0x83932010, + 0x840660F0, + 0x02004802, + 0xBD900004, + 0x84066150, + 0x02005816, + 0xFC000000, + 0xBCCF5604, + 0x97844010, + 0x275CC086, + 0x81556180, + 0x42CD4027, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x25530001, + 0xA0C55080, + 0xA4C55080, + 0x840660C0, + 0x02005C08, + 0x2EC2C065, + 0x26C2C046, + 0x80F5E0F0, + 0x8403E0C6, + 0x02008006, + 0x02001018, + 0xFC000000, + 0x10000F33, + 0xBD53BA44, + 0xFC000000, + 0x0661DC0B, + 0xBCC00054, + 0xC2031180, + 0xC6C01180, + 0xFC000000, + 0x06030009, + 0xFC000000, + 0xFC000000, + 0x1803B146, + 0xFC000000, + 0xFC000000, + 0xC2031180, + 0x020013F9, + 0xC6C01180, + 0x10000E6C, + 0xBD13B2C0, + 0xBD03B200, + 0xBCC00024, + 0xC2031180, + 0x0000000D, + 0xBCFE9500, + 0xFC000000, + 0x271F4F02, + 0xA5156040, + 0x2E03C006, + 0x2F43C046, + 0x2EE3C026, + 0x2F63C066, + 0x5AFC4100, + 0xBCCAF5C4, + 0xBCDFFFFC, + 0x42C34017, + 0xFC000000, + 0xFC000000, + 0x26D48006, + 0xA5136040, + 0x2F53C005, + 0x5AFC4040, + 0xBCCAF5C4, + 0xBCFFFFFC, + 0x42C3C017, + 0xFC000000, + 0xFC000000, + 0x800020D6, + 0x02005803, + 0xA4D56000, + 0xA4D56100, + 0x2ED48006, + 0xBCC00024, + 0xC2031180, + 0x0000200A, + 0xFC000000, + 0xFC000000, + 0x07839004, + 0x26C77041, + 0x86C32010, + 0x2EC77041, + 0x82C22250, + 0xCAD30014, + 0x07838004, + 0x0000200A, + 0xBCC00034, + 0xD00300E6, + 0xBCCACE04, + 0x22DA9890, + 0x8EE3A801, + 0x28E300D5, + 0x82D36020, + 0xFC000000, + 0x06434804, + 0x10000CF2, + 0xBCE3C004, + 0x2723F342, + 0x2ADA9890, + 0x0000000A, + 0xFC000000, + 0x26D20005, + 0xBCCE9500, + 0x269F4F02, + 0x0833500B, + 0xFC000000, + 0xA4936040, + 0xFC000000, + 0xFC000000, + 0x42CA4107, + 0xFC000000, + 0xFC000000, + 0x26930005, + 0xFC000000, + 0x0A325803, + 0x2E920005, + 0x2E020015, + 0x02001004, + 0xBCB3C540, + 0x0000100A, + 0xFC000000, + 0x26EF4FE1, + 0xBCFF4404, + 0xBC900404, + 0x80F3A0F0, + 0x82E3A020, + 0x8403A090, + 0x02009807, + 0x2CD3C001, + 0x26920025, + 0x86926010, + 0x0000200B, + 0x2EEF4FE1, + 0x2E920025, + 0x269F4FA1, + 0x86926100, + 0x2E9F4FA1, + 0xBCDF4604, + 0x269F4F42, + 0x86F26200, + 0x5ADBC200, + 0xBC9AF5C4, + 0xBCDFFFFC, + 0x42934017, + 0xFC000000, + 0xFC000000, + 0x020023EF, + 0xBCE00204, + 0x2EFF4F42, + 0xBCFA9404, + 0x075520AA, + 0x27A4C094, + 0x278CC194, + 0x42F580E7, + 0xFC000000, + 0xFC000000, + 0xBD9ABC04, + 0x06762804, + 0xA1752000, + 0xBCC00324, + 0xBCC002A4, + 0x8405E0C0, + 0x0200809C, + 0xA0D5D080, + 0xA4D5D080, + 0x8365A0E0, + 0x81802160, + 0xA0C59180, + 0xA4C59180, + 0x97658081, + 0xA4C59100, + 0x97658081, + 0xA4C59080, + 0x06569C13, + 0x81652000, + 0xA5400300, + 0xA5404F10, + 0x2AE64006, + 0xA5436000, + 0x2B464026, + 0x2AC64046, + 0x2A064066, + 0x20C3C003, + 0x2AC64086, + 0x2AD640A6, + 0x22C3C046, + 0x2AC640C6, + 0xBD400204, + 0x2A0640F5, + 0x02002017, + 0x22C3C065, + 0x2AC640E5, + 0xBDA000F4, + 0x2BA64004, + 0x2A064145, + 0xA1A507D0, + 0xA1450B80, + 0x97A68050, + 0x8FA6A010, + 0x2BA640B4, + 0x2B46400C, + 0x2AE64026, + 0x2AD64155, + 0x2AC64106, + 0x2A064126, + 0x20C3C003, + 0x2AC64047, + 0x22D3C046, + 0x2AD64086, + 0x22C3C065, + 0x2AC640A5, + 0xBD400304, + 0x26DCC194, + 0xBDAAAAA4, + 0xA5A5E100, + 0x06736813, + 0xBCD05DC4, + 0x840320D0, + 0x0200E810, + 0x83A6A082, + 0x2BA3C066, + 0x2AC3C0A5, + 0xBCD80F34, + 0x840320D0, + 0x02006006, + 0xBCD81374, + 0x840320D0, + 0x02006805, + 0xBDA0300C, + 0x2BA3C086, + 0xBDA00F80, + 0x2BA3C086, + 0x86C62160, + 0x52F30160, + 0x0765A407, + 0x26CCC195, + 0xA0D31000, + 0x07759008, + 0xBCF00004, + 0x02001006, + 0xA0F302D0, + 0x8405E0D0, + 0x0200D803, + 0xBCF00014, + 0xBCF00004, + 0x26C2C046, + 0xA0C30640, + 0x82D32340, + 0x0E4B0C04, + 0x2782C075, + 0x257CC0D4, + 0xBD700014, + 0x256A4001, + 0x26C48035, + 0xA0D32000, + 0x80C62170, + 0x8325A010, + 0x898320D8, + 0x8924A0D8, + 0x2D2A4001, + 0x26C2C007, + 0x84062120, + 0x0200600B, + 0xA8D5A140, + 0x80C320D0, + 0x0603C008, + 0x59930140, + 0xBCCAF5C4, + 0xBCDFFFFC, + 0x42C34017, + 0xFC000000, + 0xFC000000, + 0x0200002B, + 0xBCFF5664, + 0x51930140, + 0x2F22C075, + 0x96D44010, + 0x26CCC046, + 0x80C320D0, + 0xA0D49080, + 0xA4D49080, + 0x2CD3C001, + 0x5AFB0020, + 0xBCCAF5C4, + 0xBCDFFFFC, + 0x42C34017, + 0xFC000000, + 0xFC000000, + 0x26C4C094, + 0x2724C0A4, + 0x06431803, + 0xBCC00004, + 0x96C44051, + 0x0A34840D, + 0xBCDF4C04, + 0xA4D20440, + 0xA4D30800, + 0xAE35D010, + 0xFC000000, + 0x24F34000, + 0x82F3C010, + 0xAC23C120, + 0x0204180D, + 0x2CF34000, + 0xBCF00004, + 0x2CF34000, + 0x82C32010, + 0xBD1AF2C4, + 0x26DCC006, + 0x06431004, + 0xBCF1F00C, + 0x96F30180, + 0xA4F043C0, + 0x28F44002, + 0x53134040, + 0x00000015, + 0xFC000000, + 0xFC000000, + 0x02001365, + 0x817020C0, + 0xBD7A8384, + 0xFC000000, + 0xFC000000, + 0x20C5C003, + 0x28C3C003, + 0x02002357, + 0x22C5C047, + 0x2AC3C047, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, +}; +char *rdpa_version_fw_b = "$Change: 255249 $"; diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/runner_fw_c.c b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/runner_fw_c.c new file mode 100644 index 0000000000..574f938d6e --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/runner_fw_c.c @@ -0,0 +1,4108 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint32_t firmware_binary_C[] = { + 0x0A300005, + 0xFC000000, + 0x10000037, + 0xFC000000, + 0xFC000000, + 0x221ABE42, + 0x222AEC83, + 0x224AED03, + 0x226AED83, + 0xC2001202, + 0xC2001302, + 0xBC801000, + 0xBC800018, + 0xC2021202, + 0xC2021302, + 0x228B9561, + 0xC2021502, + 0xC6801B82, + 0x8A8221F9, + 0x8E822801, + 0xC2021B82, + 0xC6801F42, + 0x82802030, + 0x8E822400, + 0x8E822800, + 0xC2021F42, + 0xBC8B5000, + 0xBC900014, + 0x2A92024C, + 0xBC9B6080, + 0xFC000000, + 0xBC8B9404, + 0x2A824005, + 0xBC8B9684, + 0x2A824015, + 0xBC8B6684, + 0x2A824025, + 0xBC828184, + 0x2A824035, + 0xBC9B6F80, + 0xFC000000, + 0xBC8B9204, + 0x2A824005, + 0xBC8B9704, + 0x2A824015, + 0xBC80BA84, + 0x2A824035, + 0xBC975D04, + 0xBC808104, + 0x2A824045, + 0xBC808CC4, + 0x2A824075, + 0x18000000, + 0xFC000000, + 0xFC000000, + 0x2A0B3202, + 0x2A1B3242, + 0x2A2B3283, + 0x2A4B3303, + 0x2A6B3383, + 0x2A8B3403, + 0x2AAB3483, + 0x2ACB3503, + 0x2AEB3583, + 0x2B0B3603, + 0x2B2B3683, + 0x2B4B3703, + 0x2B6B3783, + 0x2B8B3803, + 0x2BAB3883, + 0x2BCB3903, + 0x2BEB3983, + 0xC6800042, + 0x2A8B27C2, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xC2000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x220B3202, + 0x221B3242, + 0x222B3283, + 0x224B3303, + 0x226B3383, + 0x228B3403, + 0x22AB3483, + 0x22CB3503, + 0x22EB3583, + 0x230B3603, + 0x232B3683, + 0x234B3703, + 0x236B3783, + 0x238B3803, + 0x23AB3883, + 0x23CB3903, + 0x23EB3983, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x16000001, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x20BA4000, + 0xA4A2CC80, + 0x0672C868, + 0x280A4000, + 0x82924012, + 0x8A92440A, + 0x2312863C, + 0x22C2875C, + 0x228287FC, + 0xA0F20800, + 0x23428407, + 0xA543CAE0, + 0x23228784, + 0xA5500770, + 0x02002021, + 0xBC800064, + 0xD00200B2, + 0x25424003, + 0xFC000000, + 0x07F5080A, + 0x2C024002, + 0x82924080, + 0x8A924019, + 0xA5500770, + 0xA1150B30, + 0xA0C50780, + 0x02002015, + 0xA0F50AE0, + 0xA12503B0, + 0x21428003, + 0xBC802D14, + 0x07F5084B, + 0xC2021702, + 0x28028002, + 0x020023F5, + 0x82A28080, + 0x8AA28029, + 0x21424003, + 0xFC000000, + 0x07F50843, + 0x28024002, + 0x82924080, + 0x8A924808, + 0xA1150B30, + 0xA0C50780, + 0xA0F50AE0, + 0xA12503B0, + 0xBC888004, + 0xA4844650, + 0xA4830620, + 0x22EB3181, + 0x22BB3101, + 0x20820002, + 0xFC000000, + 0xFC000000, + 0x23320025, + 0x22D20045, + 0x8404E0D0, + 0x02008833, + 0x0F33900C, + 0x22DB7FD0, + 0x22EA0044, + 0x22CB3161, + 0x8CE360E0, + 0x0A132047, + 0x86D32010, + 0x22C2C035, + 0x2AEB7FD0, + 0x0200200B, + 0x2ACB3101, + 0x2ADB3161, + 0x22CB3141, + 0x8CE360E0, + 0x0A13203E, + 0x86C32010, + 0x22D2C035, + 0x2ADB3101, + 0x2ACB3141, + 0x2AEB7FD0, + 0x22C20006, + 0x82D4E010, + 0x2AD20025, + 0x0A232008, + 0xA543E4E0, + 0x2942C003, + 0x20E30002, + 0x80E3A0B2, + 0x02002005, + 0x28E30002, + 0xA4C2E000, + 0xA4C2E000, + 0xA4C2E100, + 0x2AC20006, + 0x22C20074, + 0x22BA004C, + 0x8CB2E0C0, + 0x2ABA004C, + 0x06709C04, + 0x22B75A42, + 0x82B2E010, + 0x2AB75A42, + 0x228A0034, + 0x96820040, + 0x00002010, + 0x82822010, + 0xC2021702, + 0x18000005, + 0xFC000000, + 0xFC000000, + 0x23620055, + 0xFC000000, + 0x0A358018, + 0x0A349806, + 0x22C58015, + 0x8404E0C0, + 0x02008814, + 0x02001009, + 0x22C58046, + 0x22D58025, + 0x8404E0D0, + 0x020093C3, + 0x22C58035, + 0x8404E0C0, + 0x0200980C, + 0x22C58066, + 0x8524E0D0, + 0xC6D020C1, + 0x07F30005, + 0xA8C32120, + 0x840360C0, + 0x0200C3B9, + 0x02000004, + 0xA8C4A0C0, + 0x840360C0, + 0x0200C3B5, + 0x2282007C, + 0xCA80C01C, + 0x07F5680D, + 0xA0B51C00, + 0xC88080BE, + 0x06709C0A, + 0x22875A02, + 0x82822010, + 0x2A875A02, + 0x228758C2, + 0x22B75902, + 0x86822010, + 0x2A8758C2, + 0x8002E080, + 0x02004804, + 0x100806B2, + 0xFC000000, + 0xCB15201C, + 0x00001010, + 0xFC000000, + 0x23FB7FD0, + 0xBD300064, + 0x0A37C068, + 0x0A34C065, + 0xFC000000, + 0x9C87C080, + 0xBC9AB804, + 0xA4920630, + 0x82822010, + 0xA0820600, + 0x21E24002, + 0x22B24026, + 0xFC000000, + 0x232F804C, + 0x9E948000, + 0xA4B24720, + 0x0652505D, + 0x22DF8055, + 0x92A26070, + 0x20CAC002, + 0x94A040A0, + 0xC4D000D0, + 0x23130005, + 0x880360A0, + 0x02006806, + 0x22DF802C, + 0x20E44003, + 0x94904090, + 0x020013F2, + 0x8924A098, + 0xA1D3C5C0, + 0x96974020, + 0x829260C0, + 0x82A26030, + 0xFC000000, + 0x212F8095, + 0x209F80A4, + 0xFC000000, + 0x22A48007, + 0xA0A29180, + 0xA0B2D180, + 0x84A2E0A0, + 0xA0A28C00, + 0x86A2A080, + 0x02008841, + 0x82B2E010, + 0xA0A39C00, + 0x8602A440, + 0x02008803, + 0xBCA00444, + 0xA4E29C00, + 0x0E7B583C, + 0xA0B2CC00, + 0x2AB48024, + 0xA0A39B30, + 0x96D28030, + 0xA4E01B30, + 0xA4F007C0, + 0x22A3007C, + 0xCAA0401E, + 0xA0B39C00, + 0xC8A000BE, + 0x96A28031, + 0x82A2A080, + 0xCAA5201E, + 0x22B30025, + 0x0A336008, + 0x232AEE03, + 0x2B244007, + 0x2AD30005, + 0x22A30025, + 0x02002009, + 0x86B2A010, + 0x2AB30025, + 0x22A30074, + 0x2A030006, + 0x2A030025, + 0x22CF804C, + 0x88A320A8, + 0x2AAF804C, + 0x22AB3181, + 0x22CB3121, + 0x0EB29007, + 0x2B130035, + 0x2B1B3121, + 0x22AB3161, + 0x02002006, + 0x82A2A010, + 0x2AAB3161, + 0x22AB3141, + 0x82A2A010, + 0x2AAB3141, + 0x07F3E025, + 0x86A3A040, + 0x8EB3E403, + 0x22CF804C, + 0xFC000000, + 0x0A332BA1, + 0xD00240A3, + 0xBD300064, + 0x229F8044, + 0x0200239D, + 0x89F7E098, + 0x2BFB7FD0, + 0xBC900024, + 0xC2025702, + 0x18004307, + 0xFC000000, + 0xFC000000, + 0x02001395, + 0x8734E010, + 0xBCB93004, + 0xA4B34630, + 0xA0A39C00, + 0xFC000000, + 0x22D2C006, + 0x84036000, + 0x0200C804, + 0x020023C0, + 0x84A360A0, + 0x2AA2C006, + 0x229F8066, + 0x22AF8044, + 0xFC000000, + 0x22BA4024, + 0x86B2E010, + 0x020023EF, + 0xA0B2CC00, + 0x2ABA4024, + 0x82C76010, + 0xBCDB2C04, + 0xA4D30630, + 0x87932010, + 0xBD7B7F84, + 0xA5764600, + 0x02002024, + 0xBD406584, + 0x21A5C000, + 0x0A368806, + 0xBCC00024, + 0xC2031702, + 0x18006347, + 0xFC000000, + 0xFC000000, + 0x26C76742, + 0xA0F2DC00, + 0x96D3C020, + 0x80C320D0, + 0xBD1B2404, + 0xA5164620, + 0xBD2B7F84, + 0xA5264600, + 0xBCEABD04, + 0xA4E64610, + 0x43130047, + 0xFC000000, + 0xFC000000, + 0x20D44002, + 0xFC000000, + 0x0A3343FB, + 0xA5042100, + 0x20C48000, + 0x21138001, + 0x86C32010, + 0x28C48000, + 0xA4B37C00, + 0x28F44001, + 0x82C46020, + 0x020023B7, + 0xA5130A00, + 0x29138001, + 0xBCCB2C04, + 0xFC000000, + 0x20D34000, + 0x20E30194, + 0x84E360E0, + 0x8B83A3F0, + 0x02006025, + 0x28D30194, + 0x29A5C000, + 0xBD6B3B04, + 0xA5664610, + 0xBCDB3E04, + 0x22CB9910, + 0x21558001, + 0xFC000000, + 0x87862010, + 0x20E54001, + 0x83A6A010, + 0x22F758C2, + 0x231758A1, + 0x0A33C40B, + 0x840460E0, + 0x02004809, + 0x86F3E010, + 0x2AF758C2, + 0x23175A82, + 0x83146010, + 0x2B175A82, + 0x23175902, + 0x800460F0, + 0x02004804, + 0x8EE3A801, + 0x28E340C5, + 0x82C32020, + 0x82E56020, + 0xA5538A00, + 0x06430804, + 0x1000068A, + 0xBCE077C4, + 0x2723F342, + 0x0A362BE7, + 0x2ACB9910, + 0x29558001, + 0x00001014, + 0x29A5C000, + 0x228B64E1, + 0xC2021381, + 0xBC800224, + 0x96820020, + 0x8E822030, + 0xC2021340, + 0xBC8B31A4, + 0xBC976E04, + 0xFC000000, + 0x20820001, + 0xFC000000, + 0x0A320012, + 0xBCC75D04, + 0x22A24015, + 0x96A28010, + 0x22B24004, + 0xFC000000, + 0x20A300A5, + 0x86B2E010, + 0x0200C006, + 0xFC000000, + 0x0008200A, + 0xFC000000, + 0xFC000000, + 0x22B2400C, + 0x2AB24004, + 0x0E1A0BF2, + 0x86822010, + 0x82926080, + 0x18007A87, + 0xFC000000, + 0xFC000000, + 0x22A50035, + 0x22C50006, + 0x22E50025, + 0x0A329022, + 0x20B54001, + 0xA0D2D080, + 0x80D2E0D0, + 0xFC000000, + 0x06234803, + 0x82C32010, + 0x86D36040, + 0x06F29C03, + 0xA0A29E00, + 0x96A28030, + 0x06F39C03, + 0xA0B39E00, + 0x96B2C030, + 0x80A320A0, + 0x8402E0A0, + 0x0200D003, + 0x2AA50006, + 0x2AB50006, + 0x8604E050, + 0x02009003, + 0x28D54001, + 0x02000012, + 0xBCA88004, + 0xA4A4C650, + 0xFC000000, + 0xFC000000, + 0x20A28002, + 0xFC000000, + 0xFC000000, + 0x22AA8034, + 0x96A28040, + 0x82A2A010, + 0xC2029702, + 0x8334E010, + 0x83452080, + 0x83556020, + 0x0E5CDBD8, + 0xFC000000, + 0xFC000000, + 0xBD577C00, + 0x14000000, + 0xBD300004, + 0xBD493000, + 0x10000D88, + 0xBCF08D84, + 0xFC000000, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0xBCA01D14, + 0xC2029702, + 0xBCA02814, + 0xC2029702, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0x82826010, + 0xBCDB2C04, + 0xA4D20630, + 0x87922010, + 0xBD7B7F84, + 0xA5764600, + 0xFC000000, + 0xFC000000, + 0x21A5C000, + 0x100001B7, + 0xBD409304, + 0xFC000000, + 0xBCDB3E04, + 0xBC8B9914, + 0x22CB9910, + 0xFC000000, + 0x0A330006, + 0xFC000000, + 0x1000068A, + 0xBCE09544, + 0x2723F342, + 0x28C20000, + 0x18009007, + 0xFC000000, + 0xFC000000, + 0x2A075802, + 0x26876F41, + 0xC20213E1, + 0xBC800264, + 0x96820020, + 0x8E822030, + 0xC2021370, + 0xBC864A84, + 0x2A8B9741, + 0x2A0B98E0, + 0xFC000000, + 0xFC000000, + 0x228B9741, + 0xFC000000, + 0xFC000000, + 0x20A20001, + 0x82822020, + 0x0A329005, + 0x2A8B9741, + 0x0000200A, + 0xFC000000, + 0xFC000000, + 0x18009807, + 0xFC000000, + 0xFC000000, + 0x228779A1, + 0x22B77981, + 0x22A779E1, + 0x0A32C406, + 0x808220B0, + 0x840220A0, + 0x0200C802, + 0x808020A0, + 0x2A8779A1, + 0x10000265, + 0xFC000000, + 0xFC000000, + 0x26976F61, + 0xC20253C1, + 0xBC800274, + 0x96820020, + 0x8E822030, + 0xC2021350, + 0xBC800054, + 0xC2021110, + 0xC6801110, + 0xFC000000, + 0x06020006, + 0xFC000000, + 0xFC000000, + 0x1800A386, + 0xFC000000, + 0xFC000000, + 0x26C76FE1, + 0xBCF70C04, + 0x0A331018, + 0x80D020C0, + 0x9EE34001, + 0xFC000000, + 0x0653A014, + 0x94A040E0, + 0xA4F38820, + 0xFC000000, + 0x88D360A8, + 0x2483C002, + 0xA1121460, + 0xA0B21560, + 0x80B2E090, + 0xA482D560, + 0x2C83C002, + 0x8402E110, + 0x0200A3F2, + 0x96838020, + 0x82822020, + 0x88C320A8, + 0xCA86001E, + 0x020023ED, + 0xC2029601, + 0x2EC76FE1, + 0xBC800024, + 0x1800A107, + 0xC2021110, + 0xFC000000, + 0x21424003, + 0x8A052803, + 0x0200404A, + 0xFC000000, + 0xFC000000, + 0x228B9920, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x1800AC47, + 0xFC000000, + 0xFC000000, + 0x2A1B9920, + 0xA13507C0, + 0x8604E070, + 0x02004082, + 0x8604E040, + 0x02004819, + 0xA0A50960, + 0xA0855C00, + 0x2A8758A1, + 0xBC800034, + 0x0632A15D, + 0xA54207C0, + 0x2B475803, + 0x02002021, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x228B9920, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x1800B347, + 0xFC000000, + 0xFC000000, + 0x2A1B9920, + 0xA4204270, + 0x07A50052, + 0xA1150960, + 0xA0C50730, + 0xA12503B0, + 0x06346809, + 0xA0F50AE0, + 0xA54024E0, + 0xBC8B6F84, + 0x06709803, + 0xBCAB9004, + 0xBCA75B84, + 0x02001016, + 0x2AA20025, + 0x100000A0, + 0xBD00BA80, + 0xA554C3F0, + 0x06709503, + 0x2A0B9920, + 0x28024002, + 0x82924080, + 0x8A924808, + 0xFC000000, + 0xFC000000, + 0xA0824830, + 0x2E8F56A0, + 0x20824002, + 0x8A022803, + 0x02004003, + 0xBC800024, + 0xC2021702, + 0x1800AB07, + 0xFC000000, + 0xFC000000, + 0x0670AC06, + 0xA0F55C00, + 0xBCBB5004, + 0x02002013, + 0x22E75B42, + 0xBD600014, + 0xBD600004, + 0x07A50804, + 0x0200200E, + 0x22E2C306, + 0x22F2C386, + 0x26B76742, + 0x96D3C020, + 0x80B2E0D0, + 0x22D20015, + 0x42D2C047, + 0xFC000000, + 0xFC000000, + 0x20E34002, + 0xFC000000, + 0x0A3393FA, + 0xFC000000, + 0xA4F00580, + 0x07A51007, + 0x8F13E023, + 0x0E3CC005, + 0xA5100580, + 0x8F146013, + 0xA5100580, + 0x8F146023, + 0xA1251C00, + 0xA0D554E0, + 0xA0B54580, + 0xA0F549A0, + 0xA4D2C4A0, + 0xBCB00004, + 0xA4B3CB80, + 0xA4B307D0, + 0xA4B58350, + 0xA4B4A000, + 0x100004F9, + 0xBD00C980, + 0xFC000000, + 0x22820035, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00001008, + 0xFC000000, + 0x228B97E1, + 0xFC000000, + 0xFC000000, + 0x20A20002, + 0x8A02A803, + 0x02004808, + 0x29420003, + 0x82822080, + 0x8A822029, + 0x2A8B97E1, + 0x020023B4, + 0xBC802114, + 0xC2021702, + 0xBCAB5004, + 0xFC000000, + 0xFC000000, + 0x2A0B9920, + 0x22828155, + 0x020023B8, + 0x82822010, + 0x2A828155, + 0xA0854800, + 0x860220C0, + 0x0200400E, + 0x86022060, + 0x0200407D, + 0x860220F0, + 0x0200404C, + 0x86022090, + 0x02004063, + 0x86022000, + 0x02004074, + 0x860220E0, + 0x020040EA, + 0x860220D0, + 0x0200407C, + 0x0200039A, + 0xA0A50960, + 0xA0B50730, + 0xBC888004, + 0xA4828850, + 0xA482C620, + 0xFC000000, + 0xFC000000, + 0x20820002, + 0xFC000000, + 0xFC000000, + 0x23520005, + 0x22A20015, + 0x23420025, + 0x2A020025, + 0x22A20074, + 0x22BA004C, + 0x88A2E0A8, + 0x2AAA004C, + 0x20A54003, + 0x0A35402D, + 0x07F2C008, + 0xA0C28AE0, + 0x06F2E013, + 0x96C300E0, + 0xA4C2DC00, + 0x02002014, + 0xBCB00034, + 0xD002C0C6, + 0xA0B2DC00, + 0xBCDB3E04, + 0x22CB9910, + 0x8EB2E801, + 0x28B340C5, + 0x82C32020, + 0xFC000000, + 0x06430804, + 0x1000068A, + 0xBCE0DE04, + 0x2723F342, + 0x02001006, + 0x2ACB9910, + 0x96C300E0, + 0xA4C2DC00, + 0xBCB00074, + 0xD002C0CC, + 0x22BB3121, + 0x22CB3181, + 0x22EAEE03, + 0x2AE54007, + 0x0EC51807, + 0x2B52C035, + 0x2B5B3121, + 0x22BB3161, + 0x02002006, + 0x82B2E010, + 0x2ABB3161, + 0x22BB3141, + 0x82B2E010, + 0x2ABB3141, + 0xA0A29B30, + 0x97528030, + 0x020023D6, + 0x87452010, + 0x20A54003, + 0x02001359, + 0x2A020006, + 0xA0850960, + 0xBCAB3B04, + 0xA4A20610, + 0xBCBABD04, + 0xA4B20610, + 0x20828001, + 0xFC000000, + 0x20B2C001, + 0xBCDB3E04, + 0x22CB9910, + 0x0EB2000E, + 0x20E20001, + 0x8EE3A801, + 0x28E340C5, + 0x82C32020, + 0x82E22020, + 0xA4838A00, + 0x06430804, + 0x1000068A, + 0xBCE0EA04, + 0x2723F342, + 0x020023F5, + 0x2ACB9910, + 0x28828001, + 0x0200033F, + 0xBC800054, + 0xC2021130, + 0xC6801130, + 0xFC000000, + 0x06020006, + 0xFC000000, + 0xFC000000, + 0x1800ED86, + 0xFC000000, + 0xFC000000, + 0xA0854B70, + 0xBCC75004, + 0xA4C20840, + 0x22AAEE03, + 0x2CA30003, + 0x2EA30047, + 0x0200232E, + 0xBC800024, + 0xC2021130, + 0x0200232B, + 0x228B9561, + 0xC2021502, + 0x2A0AAC02, + 0x2A1AAC42, + 0x2A2AAC82, + 0x2A3AACC2, + 0x2A4AAD02, + 0x2A5AAD42, + 0x02002322, + 0x2A6AAD82, + 0x2A7AADC2, + 0x07F5580A, + 0xA0A55F00, + 0x228B3161, + 0x848220A0, + 0x0200800E, + 0x2A8B3161, + 0x228B3141, + 0x02002318, + 0x808220A0, + 0x2A8B3141, + 0x228B3141, + 0x848220A0, + 0x02008006, + 0x2A8B3141, + 0x228B3161, + 0x02002310, + 0x808220A0, + 0x2A8B3161, + 0xBC800024, + 0xC2021702, + 0x1800F2C7, + 0xFC000000, + 0xFC000000, + 0x22A75803, + 0x228759C2, + 0x0A32943C, + 0x22A75981, + 0x22B759A1, + 0x808220A0, + 0x840220B0, + 0x0200C802, + 0x808020B0, + 0x2A8759C2, + 0x2A0B98E0, + 0xA4200270, + 0x228B99F0, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x1800FB87, + 0xFC000000, + 0xFC000000, + 0x2A1B99F0, + 0xBC800054, + 0xC2021180, + 0xC6801180, + 0xFC000000, + 0x06020006, + 0xFC000000, + 0xFC000000, + 0x18010106, + 0xFC000000, + 0xFC000000, + 0x22B75941, + 0x22A75902, + 0x22875961, + 0x06F2C803, + 0xBCA00004, + 0x2AA75902, + 0x0A329011, + 0x22B759C2, + 0x8402E080, + 0x02008010, + 0x8482E080, + 0x2A8759C2, + 0x8682A010, + 0x2A875902, + 0x228758C2, + 0x82822010, + 0x2A8758C2, + 0xBC800024, + 0xC2021180, + 0x2A0B99F0, + 0x100002CC, + 0xBD300034, + 0x23475803, + 0x2A075802, + 0x2A0B98E0, + 0xBC800024, + 0xC2021180, + 0x2A0B99F0, + 0x10000265, + 0xFC000000, + 0xFC000000, + 0xBCBB6644, + 0x228758A1, + 0x26A76742, + 0x96820020, + 0x8082A080, + 0x42B20047, + 0xFC000000, + 0xFC000000, + 0x20A2C002, + 0xFC000000, + 0xFC000000, + 0x0A3283FA, + 0x2AA75B42, + 0xBC875B84, + 0x428280E7, + 0xFC000000, + 0xFC000000, + 0x020022B6, + 0xFC000000, + 0xFC000000, + 0xA12545E0, + 0xA0B55520, + 0xA18545C0, + 0xBD64F804, + 0xBC8C5004, + 0xA5660450, + 0x8165A082, + 0xA5660560, + 0xBD300014, + 0x020020D3, + 0xBCE110C0, + 0xBD013900, + 0x22CB9A10, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A330007, + 0xFC000000, + 0xBCC00024, + 0xC2031702, + 0x180110C7, + 0xFC000000, + 0xFC000000, + 0x2A1B9A10, + 0x06409C0B, + 0xBCC00054, + 0xC2031180, + 0xC6C01180, + 0xFC000000, + 0x06030009, + 0xFC000000, + 0xFC000000, + 0x18011746, + 0xFC000000, + 0xFC000000, + 0xC2031180, + 0x020013F9, + 0xC6C01180, + 0x8604A000, + 0x02005006, + 0x9742C010, + 0x8604A010, + 0x02005042, + 0xFC000000, + 0x0200007B, + 0x02001187, + 0xBD611980, + 0x26CD8194, + 0x27977041, + 0x06032C05, + 0xBD700304, + 0xBD800044, + 0xBD700204, + 0xBD800004, + 0x0705500B, + 0xA1555460, + 0xBCD76F04, + 0x26CD8086, + 0x80C32140, + 0x42DB0027, + 0xFC000000, + 0xFC000000, + 0x24C34001, + 0xA1531080, + 0xA5531080, + 0xA4B042F0, + 0x2CB74001, + 0x2CB28001, + 0x254E8001, + 0x24A68003, + 0x26820035, + 0xA0822000, + 0x84052150, + 0x0200401E, + 0xBCBAA004, + 0x80D2E180, + 0xA8B56170, + 0x80B2A0B0, + 0x80B2E180, + 0x82C56010, + 0x89532088, + 0x42D2C047, + 0xFC000000, + 0xFC000000, + 0x20C34002, + 0xFC000000, + 0x07830005, + 0x87966010, + 0x020023F0, + 0xBCB00034, + 0xD002C0C6, + 0xBCDB3E04, + 0x22BB9910, + 0x8EC32801, + 0x28C340B5, + 0x82C2E020, + 0xFC000000, + 0x06430804, + 0x1000068A, + 0xBCE12704, + 0x2723F342, + 0x020013E3, + 0x2ACB9910, + 0x2E068075, + 0x2C0E8001, + 0x0200203E, + 0x2E068065, + 0x2F977041, + 0x02001148, + 0xBD612940, + 0xAAD520A0, + 0x26CD8126, + 0x80C320D0, + 0x832320C0, + 0x25174001, + 0x24EE8001, + 0x06F4502C, + 0x24C20003, + 0xBCF76784, + 0x26868075, + 0x2CC3C003, + 0x5AFC8080, + 0xBCDB99E4, + 0xBCCFFFFC, + 0x42D30017, + 0xFC000000, + 0xFC000000, + 0x840220E0, + 0x02004020, + 0xA0F444A0, + 0xA4F45510, + 0x2EE68075, + 0xA0839080, + 0xA4839080, + 0xBCC76BA4, + 0xBCD4F804, + 0xBCEC5004, + 0xA4D3C450, + 0x80D360E2, + 0xA4D3C560, + 0xFC000000, + 0x2C830001, + 0x268B4046, + 0x808220F6, + 0x5ACA0020, + 0xBC8B99E4, + 0xBCCFFFFC, + 0x42830017, + 0xFC000000, + 0xFC000000, + 0xA0E3D510, + 0x26834006, + 0xBCCB3D44, + 0x96D38130, + 0x82D36013, + 0x8ED36103, + 0x28D30002, + 0x52C20047, + 0xFC000000, + 0xFC000000, + 0xBC800024, + 0x8C85E080, + 0xA4B604A0, + 0xA4B042F0, + 0x2CB74001, + 0x2CB28001, + 0x2E868046, + 0xBC800024, + 0xC2021180, + 0x2A0B9A10, + 0x26868054, + 0xA4800270, + 0x2E868054, + 0x100002EA, + 0xFC000000, + 0xFC000000, + 0x22C3C066, + 0xA0E309A0, + 0xA1130600, + 0x22D3C045, + 0xBCB00004, + 0xA4B38B80, + 0xA4B447D0, + 0xA4B36000, + 0xA12305E0, + 0xA0D31500, + 0x2313C006, + 0x22E3C026, + 0xA4D484A0, + 0x22C3C055, + 0x2323C026, + 0x52C480E7, + 0xFC000000, + 0xFC000000, + 0xBD34D804, + 0x27476961, + 0x82C52010, + 0x8B232070, + 0x26C76941, + 0x8404A0C0, + 0x02005807, + 0xA5350640, + 0xBCC00024, + 0xC2031702, + 0x18013E87, + 0xFC000000, + 0xFC000000, + 0x2F276961, + 0xA4D044F0, + 0x2F14C026, + 0x2EB4C046, + 0x2EE4C066, + 0x2ED4C005, + 0xBCB01314, + 0xC202D702, + 0x00001010, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x228B9A10, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x180144C7, + 0xFC000000, + 0xFC000000, + 0x2A1B9A10, + 0x06409C0B, + 0xBC800054, + 0xC2021180, + 0xC6801180, + 0xFC000000, + 0x06020009, + 0xFC000000, + 0xFC000000, + 0x18014B46, + 0xFC000000, + 0xFC000000, + 0xC2021180, + 0x020013F9, + 0xC6801180, + 0xBDD4FE04, + 0x80F020B0, + 0xA4F604A0, + 0xD6FF6850, + 0xBDAC6004, + 0xBDA76408, + 0xBC89F804, + 0xC6A00742, + 0xA0C29000, + 0x06828817, + 0xA4830830, + 0xA5A30840, + 0xA5A30910, + 0xBCAE9604, + 0xA5D30810, + 0x26D68054, + 0xA4A30810, + 0x06734089, + 0xA4D04270, + 0x2ED68054, + 0x27768046, + 0x26C68075, + 0xBCC00024, + 0xC2031180, + 0x2A0B9A10, + 0x0415E80E, + 0x26C68065, + 0x24CE8001, + 0x0834C80E, + 0x00002010, + 0xA4D00270, + 0x2ED68054, + 0x26AF56D0, + 0xA5A28840, + 0xA5A28910, + 0xA5D28810, + 0xFC000000, + 0x26C68054, + 0x8112A000, + 0x067323FA, + 0x82A2A010, + 0x8AA2A108, + 0x2EAF56D0, + 0x24C74001, + 0xA14304A0, + 0xBCD4F804, + 0xBCAC5004, + 0xA4D50450, + 0x80D360A2, + 0xA4D50560, + 0xA0A31400, + 0xA4844830, + 0xAAC2A140, + 0x26AB4126, + 0x80A2A0C0, + 0x8392A0C0, + 0x25474001, + 0x24AE8001, + 0x06F5102C, + 0x24C20003, + 0xBD776784, + 0x27B68075, + 0x2CC5C003, + 0x5B7E4080, + 0xBCCB99E4, + 0xBCDFFFFC, + 0x42C34017, + 0xFC000000, + 0xFC000000, + 0x8406E0A0, + 0x02004020, + 0xA17504A0, + 0xA5751510, + 0x2EA68075, + 0xA0C29080, + 0xA4C29080, + 0xBCA76BA4, + 0xBD44F804, + 0xBCDC5004, + 0xA545C450, + 0x814520D2, + 0xA545C560, + 0xFC000000, + 0x2CC28001, + 0x26CD0046, + 0x80C32176, + 0x5AAB0020, + 0xBCAB99E4, + 0xBCCFFFFC, + 0x42A30017, + 0xFC000000, + 0xFC000000, + 0xA0C5D510, + 0x26A50006, + 0xBCDB3D44, + 0x96C30130, + 0x82C32013, + 0x8EC32103, + 0x28C34002, + 0x52D28047, + 0xFC000000, + 0xFC000000, + 0xAAC2E140, + 0x26AD8126, + 0x80C2A0C0, + 0xBCAE9604, + 0xA4A44810, + 0xBD176604, + 0x431B0147, + 0xFC000000, + 0xFC000000, + 0x27744046, + 0x0A34E804, + 0x24C44003, + 0x27344086, + 0x0615C023, + 0x2CC68003, + 0xA57042F0, + 0x2F768046, + 0x26C44066, + 0x2F320026, + 0x2EC20006, + 0x2CF74001, + 0x2CF28001, + 0xBCD76B84, + 0xBCF76BA4, + 0x9712C010, + 0x26CD8086, + 0x80C32110, + 0x42DB0020, + 0x26CD8046, + 0x80C32110, + 0x42FB0027, + 0xFC000000, + 0xFC000000, + 0x24D34001, + 0xA0C35080, + 0xA4C35080, + 0x2EC68065, + 0x24F3C001, + 0xA0D3D080, + 0xA4D3D080, + 0xA0C3D080, + 0xA4C3D080, + 0x2ED68075, + 0x2CCE8001, + 0xBCC00024, + 0xC2031180, + 0x2A0B9A10, + 0x0000000E, + 0xBCC00024, + 0xC2031180, + 0x2A0B9A10, + 0x00000010, + 0xBC800024, + 0xC2021180, + 0x2A0B9A10, + 0xBC800024, + 0xC2021702, + 0x18014407, + 0xFC000000, + 0xFC000000, + 0x26AF4FC1, + 0xBC873C04, + 0x0A32A814, + 0x86D2A020, + 0x80A36080, + 0x268F4F81, + 0x26AF4FA1, + 0x82A2A100, + 0x840220A0, + 0x0000900B, + 0xBCE00004, + 0xBCB73C04, + 0x268F4F42, + 0x42BA0207, + 0xFC000000, + 0xFC000000, + 0x82822200, + 0xBCD001E4, + 0x2E8F4F42, + 0x2EAF4FA1, + 0x80A360B0, + 0xFC000000, + 0x26824025, + 0x82822010, + 0x2E824025, + 0x0000200C, + 0x24E28001, + 0x2EDF4FC1, + 0x1000065A, + 0xBCD17B80, + 0xBCE17CC0, + 0x26E3C046, + 0x26C3C026, + 0x02002049, + 0xBD017AC0, + 0xA0D38B80, + 0x00002016, + 0xFC000000, + 0xFC000000, + 0x228B9A10, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x18017D87, + 0xFC000000, + 0xFC000000, + 0x2A1B9A10, + 0x06409C0B, + 0xBC800054, + 0xC2021180, + 0xC6801180, + 0xFC000000, + 0x06020009, + 0xFC000000, + 0xFC000000, + 0x18018406, + 0xFC000000, + 0xFC000000, + 0xC2021180, + 0x020013F9, + 0xC6801180, + 0x100005CF, + 0xBCC185C0, + 0xBCB184C0, + 0xBC800024, + 0xC2021180, + 0x2A0B9A10, + 0x00000009, + 0xBCB3F700, + 0xFC000000, + 0x26CF4F02, + 0xA4C3A040, + 0x2E02C006, + 0x2E92C046, + 0x2E92C026, + 0x2E92C066, + 0x5ABB0100, + 0xBC8B99E4, + 0xBCAFFFFC, + 0x42828017, + 0xFC000000, + 0xFC000000, + 0x26A24006, + 0xA4C2A040, + 0x2EE2C005, + 0x5ABB0040, + 0xBC8B99E4, + 0xBCBFFFFC, + 0x4282C017, + 0xFC000000, + 0xFC000000, + 0x800020A6, + 0x02005803, + 0xA4A3A000, + 0xA4A3A100, + 0x2EA24006, + 0xBC800024, + 0xC2021180, + 0x2A0B9A10, + 0x00002009, + 0xFC000000, + 0xFC000000, + 0x07831004, + 0x26F77041, + 0x86F3E010, + 0x2EF77041, + 0x82F62250, + 0xCAD3C014, + 0x07830004, + 0x00002010, + 0xBCD00034, + 0xD00340C6, + 0x0753980A, + 0x22D75A02, + 0x82D36010, + 0x2AD75A02, + 0x22D758C2, + 0x86D36010, + 0x2AD758C2, + 0x22E75902, + 0x8003A0D0, + 0x0200480C, + 0xBCDB3E04, + 0x22EB9910, + 0x8EC32801, + 0x28C340E5, + 0x82C3A020, + 0xFC000000, + 0x06430804, + 0x1000068A, + 0xBCE195C4, + 0x2723F342, + 0x2ACB9910, + 0x00000010, + 0xFC000000, + 0x27120005, + 0xBCF3F700, + 0x26CF4F02, + 0x0834500E, + 0xFC000000, + 0xA4C46040, + 0xFC000000, + 0xFC000000, + 0x42FB0107, + 0xFC000000, + 0xFC000000, + 0x26C3C005, + 0xFC000000, + 0x0A331803, + 0x2EC20005, + 0x2E020015, + 0x02001004, + 0xBCE19B00, + 0x0000100D, + 0xFC000000, + 0x272F4FC1, + 0xBD373C04, + 0xBCC00404, + 0x8134A130, + 0x8324A020, + 0x8404A0C0, + 0x02009807, + 0x2D14C001, + 0x26C20025, + 0x86C32010, + 0x0000200E, + 0x2F2F4FC1, + 0x2EC20025, + 0x26CF4FA1, + 0x86C32100, + 0x2ECF4FA1, + 0xBD173E04, + 0x26CF4F42, + 0x87332200, + 0x5B1CC200, + 0xBCCB99E4, + 0xBD1FFFFC, + 0x42C44017, + 0xFC000000, + 0xFC000000, + 0x020023EF, + 0xBD200204, + 0x2F3F4F42, + 0xBCF00014, + 0xC203D170, + 0xC6F01170, + 0xFC000000, + 0x0603DBFC, + 0x2733F382, + 0xBD100024, + 0x82F36000, + 0x8524A130, + 0x83B4A020, + 0x8406E0C0, + 0x0200E005, + 0x81C4E0C0, + 0x83232000, + 0x82C6E000, + 0x27C3F302, + 0x2FC3F3C2, + 0xBDCFFFFC, + 0xBDBB9984, + 0x58F4C0C0, + 0x2806C000, + 0x43B70010, + 0x2A0B98E0, + 0xFC000000, + 0xFC000000, + 0x2136C000, + 0xFC000000, + 0x0A34C3FE, + 0x8524A0C0, + 0x27B3F3C2, + 0x2FB3F382, + 0x0A34A006, + 0x80F3E0C0, + 0x82C4A000, + 0x020023EE, + 0x8336E000, + 0x81C6E0C0, + 0x0000200E, + 0xC2045170, + 0xFC000000, + 0x07F54006, + 0xA0C55C00, + 0xA4C3CAE0, + 0x14000000, + 0xBC800034, + 0xD00200C6, + 0xA0855C00, + 0xBCDB3E04, + 0x22BB9910, + 0x8E822801, + 0x288340B5, + 0x82C2E020, + 0xFC000000, + 0x06430804, + 0x1000068A, + 0xBCE1B0C4, + 0x2723F342, + 0x14000000, + 0x2ACB9910, + 0xFC000000, + 0x26C3F642, + 0x8A032FF2, + 0x02005815, + 0x26C3F442, + 0xFC000000, + 0x06030002, + 0x07030BFA, + 0x2E03F442, + 0x0672D003, + 0xFC000000, + 0x22B287FC, + 0xA0B2CA00, + 0x96B2C0E0, + 0xBD600034, + 0xD00580B2, + 0x07030008, + 0xA0C31C10, + 0x23CB9960, + 0x236B2342, + 0xA9C321C0, + 0x00002010, + 0x97C70080, + 0x81672160, + 0xBCC00004, + 0x00001010, + 0xBD600004, + 0xA0820A00, + 0x96A200E0, + 0xA4A25C00, + 0x00002010, + 0xBC800034, + 0xD00200A6, + 0x22CB9770, + 0xFC000000, + 0x0A330006, + 0xBCC00024, + 0xC2031702, + 0x1801B987, + 0xFC000000, + 0xFC000000, + 0xBCC00014, + 0x2ACB9770, + 0xBCC00054, + 0xC2031140, + 0xC6C01140, + 0xFC000000, + 0x06030006, + 0xFC000000, + 0xFC000000, + 0x1801BE86, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00000010, + 0x2A0B9770, + 0xFC000000, + 0xFC000000, + 0x00002010, + 0xBDC00024, + 0xC2071140, + 0xBDF00074, + 0x8607A400, + 0x0200E810, + 0x8DF7E1E2, + 0x8DD761D2, + 0x0A17D005, + 0x87E7A400, + 0x43DCC400, + 0x02001006, + 0x87F7E010, + 0x83F7E070, + 0x43DCC407, + 0xFC000000, + 0xFC000000, + 0x8607A400, + 0x0200E3F6, + 0x83D76400, + 0x8334E400, + 0x43DCC407, + 0xFC000000, + 0xFC000000, + 0x813021F6, + 0x81D021D6, + 0x8604E800, + 0x0200C807, + 0x8734E800, + 0x53DD8800, + 0x8604E800, + 0x0200E3FD, + 0x83D76800, + 0x8365A800, + 0xFC000000, + 0x51DD8137, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00001010, + 0xFC000000, + 0x2120C003, + 0x8A04A803, + 0x0200400F, + 0xFC000000, + 0x02002022, + 0xFC000000, + 0xFC000000, + 0x2800C002, + 0x8230E080, + 0x8A30E029, + 0xFC000000, + 0xFC000000, + 0x2080C002, + 0x8A022803, + 0x02005003, + 0xBC800024, + 0xC2021702, + 0x1801CA07, + 0xFC000000, + 0xFC000000, + 0xBCB00054, + 0xC202D190, + 0xC6B01190, + 0xFC000000, + 0x0602C006, + 0xFC000000, + 0xFC000000, + 0x1801D186, + 0xFC000000, + 0xFC000000, + 0xC6B01F42, + 0x82B02030, + 0x8EB2E400, + 0x8F12E800, + 0x22B383E6, + 0x00002010, + 0xC2045F42, + 0xC202DE02, + 0xBCEB5004, + 0xBC864004, + 0xBC9B7004, + 0xBCD00004, + 0xBCFB9604, + 0x26B76742, + 0x82C22020, + 0xA084DC00, + 0x96820020, + 0x8082E080, + 0x42F20047, + 0xFC000000, + 0xFC000000, + 0x22BB9602, + 0x2B238007, + 0x0A32E3FB, + 0xA4D002B0, + 0x2A0381F4, + 0x4292C807, + 0xFC000000, + 0xFC000000, + 0x22824035, + 0x860227E0, + 0x0200E804, + 0x22F24006, + 0x22B2405C, + 0xBC8007E4, + 0x40C3C087, + 0xFC000000, + 0xFC000000, + 0x0A32D004, + 0x2A0381FC, + 0x2AB381F4, + 0xA4D042B0, + 0x86832020, + 0xBCC000E4, + 0x22B38086, + 0x82B2E010, + 0x2AB38086, + 0x22F380A6, + 0x22B24025, + 0x80B3E0B0, + 0x2AB380A6, + 0x07948002, + 0x82C32040, + 0xBCB08004, + 0xFC000000, + 0x20F200C5, + 0x8403E0B0, + 0x0200401B, + 0xBCB86DD4, + 0x8403E0B0, + 0x02004009, + 0xBCB81004, + 0x8403E0B0, + 0x02004004, + 0x10000B43, + 0x22938135, + 0x82926010, + 0x020013F2, + 0x82C32040, + 0xA4D04290, + 0x82B32020, + 0x82C2E000, + 0x2AC38184, + 0x82B2E040, + 0xBCF00284, + 0x2AF3818C, + 0x20B200B6, + 0xA112D080, + 0xA0B2E100, + 0x80C320F0, + 0x80B2E0F0, + 0x02002015, + 0x2AC38204, + 0x2AB38195, + 0x82C32020, + 0x82B32000, + 0x2AB38184, + 0x20C200C6, + 0xA0F30980, + 0x9713C020, + 0xA0F32000, + 0x80C2E110, + 0x2B13818C, + 0x8312E040, + 0x2AF38195, + 0x2AC38204, + 0x20F20115, + 0x82B2E080, + 0x2A0381B5, + 0x2AF381A5, + 0x20B200B6, + 0xA112D100, + 0x86046060, + 0x0200600C, + 0x2B1381CC, + 0x82B32040, + 0x86046110, + 0x02004004, + 0x10000B43, + 0x22938135, + 0x82926010, + 0xBCF00084, + 0x0200200C, + 0x20B200B5, + 0x2AB38215, + 0x20F200B6, + 0x82B320C0, + 0x2AF38226, + 0xA4D04280, + 0x20F200B6, + 0xA0B3D100, + 0x2AB38244, + 0xA0B3C9C0, + 0x96F2C020, + 0x80B320F0, + 0x86B2E020, + 0x8602E7E0, + 0x0200E8B4, + 0x2AF3820C, + 0x2AB381E4, + 0x10000B43, + 0x22938135, + 0x82926010, + 0x8602E010, + 0x0200500C, + 0xA4D00840, + 0x8602E000, + 0x02004006, + 0x8602E020, + 0x0200400A, + 0x0200200B, + 0xA4D04270, + 0xD9048117, + 0x02002008, + 0xA4D04240, + 0xD9048116, + 0x02002005, + 0xA4D04250, + 0xD9048114, + 0xA4D04260, + 0xD9048115, + 0xFC000000, + 0x2AD38166, + 0x1801F886, + 0xFC000000, + 0xFC000000, + 0xC6B01E02, + 0x00000010, + 0x020023E7, + 0x23338184, + 0xBD01F9C0, + 0x00001014, + 0x8314E0A0, + 0xBD900004, + 0x23138184, + 0x832460C0, + 0x235381CC, + 0x23838215, + 0x21220126, + 0x83746100, + 0x2924C196, + 0xBD100044, + 0x21220176, + 0x2924C116, + 0xBD700084, + 0xA5856100, + 0xA124E000, + 0x831020C0, + 0x020023D3, + 0xBD01FEC0, + 0x2984C176, + 0x00001014, + 0xFC000000, + 0xBD264804, + 0x23138184, + 0x83546080, + 0xBD700004, + 0x23438215, + 0x21520156, + 0x838460C0, + 0x29548176, + 0xBD700044, + 0x21520186, + 0x83846100, + 0x29548176, + 0xBD700084, + 0x21520186, + 0x83846140, + 0x29548176, + 0xBD7000C4, + 0x21520186, + 0x83846180, + 0x29548176, + 0xBD700104, + 0x21520186, + 0x838461C0, + 0x29548176, + 0xBD700144, + 0x21520186, + 0x83846200, + 0x29548176, + 0xBD700184, + 0x21520186, + 0x83146240, + 0x29548176, + 0xBD5001C4, + 0x21120116, + 0x29148156, + 0xBD700204, + 0x83102280, + 0xBD500064, + 0x06836004, + 0x29448176, + 0xBD400244, + 0xBD500114, + 0x29548146, + 0x020023A3, + 0xBD020AC0, + 0xA124A000, + 0x00001013, + 0xFC000000, + 0x23138204, + 0x06836004, + 0x81222110, + 0x82B46100, + 0x82B46060, + 0x0A33D004, + 0x280200B5, + 0x02001003, + 0xBCB00014, + 0xBCB00024, + 0x02002394, + 0xBD020E80, + 0x2313820C, + 0x00001013, + 0xFC000000, + 0x22B38184, + 0x8312E0A0, + 0xFC000000, + 0xFC000000, + 0x20C20115, + 0x28020115, + 0x8312E020, + 0xFC000000, + 0xFC000000, + 0x21220115, + 0x28020115, + 0x8312E040, + 0xB8C00120, + 0xFC000000, + 0x21220115, + 0x28020115, + 0x82B2E060, + 0xB8C00120, + 0xFC000000, + 0x211200B5, + 0x280200B5, + 0xB8C00110, + 0x00002010, + 0xB8C00004, + 0x2AC381D5, + 0x23138184, + 0x83246020, + 0x22B381D5, + 0xFC000000, + 0x21320125, + 0x83246040, + 0xB8B4C000, + 0xFC000000, + 0x21320125, + 0x83246060, + 0xB8B4C000, + 0xFC000000, + 0x21220125, + 0x831460A0, + 0xB8B48000, + 0x00002010, + 0xB8B00004, + 0x28B20115, + 0x232381FC, + 0x238381F4, + 0x97148020, + 0x83346100, + 0x97148010, + 0x83146580, + 0x87862010, + 0x0A362805, + 0x21324136, + 0x8324A010, + 0xA4D002B0, + 0x2AD38166, + 0x21124115, + 0x2B3382C6, + 0x2B1382E5, + 0x00002010, + 0x2B2381FC, + 0x2B8381F4, + 0x22B38184, + 0x22F38195, + 0x80B2E0F0, + 0x8722E020, + 0x23124035, + 0x84046120, + 0x0200E804, + 0x22B381E4, + 0x2B2383A5, + 0x8314A000, + 0x22F24045, + 0x06836804, + 0x2B1382F5, + 0x2AF38265, + 0x0A33C80A, + 0x0A33C990, + 0xA4D042A0, + 0x84F4A0B0, + 0x06835006, + 0x2AF38265, + 0x2313820C, + 0x0200218A, + 0x80F3E110, + 0x2AF38265, + 0x84C4A0B0, + 0x231382F5, + 0xBD200004, + 0x851460B0, + 0x0200A009, + 0x2B2381EC, + 0x2B1382E5, + 0x02006009, + 0x23124006, + 0x2AC382B5, + 0x0200200B, + 0x80B460B0, + 0x2AB382C6, + 0x10000B45, + 0xFC000000, + 0xFC000000, + 0x06B34805, + 0xFC000000, + 0x10000867, + 0xBD022980, + 0xFC000000, + 0x86B3E000, + 0x2AB38275, + 0x22B381EC, + 0x2AD38166, + 0x0A32E004, + 0x22F382B5, + 0xFC000000, + 0x0A33C0A4, + 0x100006E6, + 0xBD022C40, + 0xFC000000, + 0xBCB00004, + 0x100006C6, + 0xBD022D40, + 0xA4B04270, + 0x100006FC, + 0xBD022E00, + 0xFC000000, + 0x0A359009, + 0x2AC38386, + 0x22B38275, + 0x8403E0B0, + 0x0200A808, + 0x2B638306, + 0xA4D00800, + 0x02001006, + 0x8343E000, + 0x10000B3E, + 0xFC000000, + 0xFC000000, + 0x8342E000, + 0x2B438285, + 0xFC000000, + 0xFC000000, + 0x22B38184, + 0x233381E4, + 0x22C3818C, + 0x2323820C, + 0x80C32120, + 0x81132140, + 0x06936005, + 0x80C4E140, + 0x2AC38325, + 0x02001004, + 0x82C2E020, + 0x82C2E040, + 0x87146280, + 0x236381EC, + 0x22B38275, + 0x0A359808, + 0x291200C5, + 0x8403E140, + 0x0200C003, + 0x02001009, + 0xA4D04230, + 0x02001007, + 0xA4D04200, + 0x8403E140, + 0x0200C003, + 0x02001003, + 0xA4D04220, + 0xA4D04210, + 0x80C4A140, + 0x06936007, + 0x22B38184, + 0x2AC38215, + 0x82B2E040, + 0x02002004, + 0x22C381A5, + 0x28C200B5, + 0x82B2E040, + 0x22C38204, + 0x83132040, + 0x23238226, + 0xBCB00FF4, + 0x29220116, + 0x06034007, + 0x06134008, + 0x06234009, + 0xFC000000, + 0xFC000000, + 0x02001008, + 0x8B12EFF0, + 0x02001006, + 0x8B12E098, + 0x02001004, + 0x8B12E898, + 0x02001002, + 0x8B12E808, + 0x82C320D0, + 0x22B38244, + 0x02002003, + 0x88B2E110, + 0x28B200C4, + 0xBCC65004, + 0x0693401A, + 0x1000073C, + 0xBD024240, + 0xFC000000, + 0x23338184, + 0x8324E0A0, + 0x2313818C, + 0xBCB00004, + 0x28020125, + 0x81222130, + 0x100007E4, + 0xBD424480, + 0xBCB00034, + 0x28B20115, + 0xBD364804, + 0xBCB00004, + 0x100007E9, + 0xBD424600, + 0xBCB00004, + 0x1000082D, + 0xBD3246C0, + 0xA0B22000, + 0x2AB38255, + 0x0200200A, + 0x231381E4, + 0x87246000, + 0x1000073C, + 0xBD024880, + 0xFC000000, + 0xBCB00004, + 0x100007FD, + 0xBD324600, + 0xBCB00004, + 0x10000954, + 0xBD424A40, + 0xFC000000, + 0x22B38204, + 0x22938255, + 0x82B2E100, + 0x23138306, + 0x289200B5, + 0xA0922000, + 0xFC000000, + 0x80C260B0, + 0x8692E020, + 0x80946090, + 0x5AC24020, + 0xFC000000, + 0xFC000000, + 0x22B38285, + 0x8493E0B0, + 0x2A9382B5, + 0x8295A010, + 0x2A9381EC, + 0x2AD38166, + 0x229381A5, + 0x82926010, + 0x2A9381A5, + 0x22938226, + 0x809260B0, + 0x2A938226, + 0xBC9FFFFC, + 0x82822780, + 0xFC000000, + 0x28020000, + 0x42824017, + 0xFC000000, + 0xFC000000, + 0x228380C6, + 0x82822010, + 0x2A8380C6, + 0x229380E6, + 0x22838325, + 0x02002093, + 0x80826080, + 0x2A8380E6, + 0x10000B4C, + 0xFC000000, + 0xFC000000, + 0x83122020, + 0x23338306, + 0x5114C127, + 0xFC000000, + 0xFC000000, + 0x0A33D074, + 0x8154E120, + 0x22B38285, + 0x82C32000, + 0x82B2E000, + 0x83702000, + 0x2AB38295, + 0x2A0B98E0, + 0x23938295, + 0x233382E5, + 0x84066130, + 0x02008805, + 0x84B4E190, + 0x02002004, + 0x2AB382E5, + 0x83366000, + 0x2A0382E5, + 0x238382C6, + 0x0A35E80C, + 0x80B62130, + 0x2AB382C6, + 0x82B02800, + 0x86066800, + 0x0200E004, + 0xBCC65004, + 0x82C32000, + 0x82B02400, + 0x8372E000, + 0x2AB382A4, + 0x2B7382AC, + 0x81102170, + 0x84046130, + 0x0200D803, + 0xFC000000, + 0x8314E000, + 0x40C60117, + 0xFC000000, + 0xFC000000, + 0x22B38295, + 0x8575E110, + 0x8592E110, + 0x2B7382AC, + 0x80C32110, + 0x2B938295, + 0x0A366017, + 0x8534E110, + 0x81862110, + 0x0A35C005, + 0x0A34C033, + 0x10000B4C, + 0xFC000000, + 0xFC000000, + 0xBDA65004, + 0xBCB00014, + 0x231382A4, + 0x100007CB, + 0xBD0264C0, + 0xA126A000, + 0xFC000000, + 0x51A54117, + 0xFC000000, + 0xFC000000, + 0x0A34E025, + 0x2AB38255, + 0x81556110, + 0x020013D4, + 0xFC000000, + 0x22C382A4, + 0x22B382AC, + 0x853320B0, + 0xBD765004, + 0x8B14E038, + 0x8404E110, + 0x02004008, + 0x83146040, + 0x82C4E000, + 0x84B46130, + 0x86B2E010, + 0x0A32EBFF, + 0x2805C0C4, + 0x82C32010, + 0xBCB00024, + 0x06834004, + 0x06334003, + 0x06234002, + 0xBCB00014, + 0x100007CB, + 0xBD026C80, + 0xA125E000, + 0xFC000000, + 0x51754136, + 0x81556130, + 0x2AB38255, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x18027186, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x22B382E5, + 0xFC000000, + 0x0A32C805, + 0x06B34804, + 0x10000867, + 0xBD027100, + 0xFC000000, + 0x0200139C, + 0xFC000000, + 0x22C382E5, + 0xFC000000, + 0x0A330805, + 0x06B34804, + 0x10000867, + 0xBD027340, + 0xFC000000, + 0x23238007, + 0x22C38325, + 0xA1148960, + 0x860460D0, + 0x02005004, + 0xBD100404, + 0xBD100444, + 0x82C32040, + 0x84C32110, + 0x02008806, + 0x84C020C0, + 0xBD1AEE04, + 0x511540C7, + 0xFC000000, + 0xFC000000, + 0xBCC00024, + 0xC2031190, + 0xFC000000, + 0x00001014, + 0x2AB383E6, + 0x23438007, + 0xA1150960, + 0xA0C50730, + 0xA09545C0, + 0xA12503B0, + 0x22B38325, + 0x06346004, + 0xBC800404, + 0x82B2E040, + 0xBC800444, + 0x8402E080, + 0x02008802, + 0x82B22000, + 0x0634680B, + 0x22838386, + 0xBCF00004, + 0x8692E040, + 0xA543E4E0, + 0xBC8B6084, + 0x2AD38166, + 0xBD300004, + 0x100002FB, + 0xA54043A0, + 0xA5425C00, + 0xBD400004, + 0xBD500004, + 0xA543CAE0, + 0xA5521C00, + 0xA542DC00, + 0x228B9561, + 0x82822120, + 0x96820011, + 0xA5520F00, + 0xA55245C0, + 0x100000A0, + 0xBD028180, + 0xFC000000, + 0xBCEB5004, + 0xBC864004, + 0xBC9B7004, + 0x22C38166, + 0xFC000000, + 0xFC000000, + 0x06831805, + 0x22B382B5, + 0x100008A8, + 0x22D38166, + 0xFC000000, + 0x06C3013B, + 0x10000A59, + 0x22D38166, + 0xFC000000, + 0x10000B45, + 0xFC000000, + 0xFC000000, + 0x8544A0B0, + 0x231382F5, + 0xBD200004, + 0x851460B0, + 0x0200A3F9, + 0x2B2381EC, + 0x2B1382E5, + 0x02006006, + 0x23224006, + 0x2B4382B5, + 0x02002008, + 0x8124A0B0, + 0x2B2382C6, + 0x06B34805, + 0xFC000000, + 0x10000867, + 0xBD028A80, + 0xFC000000, + 0x2B1382E5, + 0x0693682C, + 0x2313820C, + 0x8523E110, + 0x06A34029, + 0x2A0381B5, + 0xBCF002C4, + 0x23338184, + 0x8334E060, + 0xFC000000, + 0x28F20134, + 0x80C220C0, + 0x80C32110, + 0x87332040, + 0x8354E080, + 0x22F38204, + 0x20C4C002, + 0x0A346006, + 0x8734E040, + 0x28C54002, + 0x020023FC, + 0x87146040, + 0x87556040, + 0x22C3818C, + 0x83132080, + 0x82C3E080, + 0x2B13818C, + 0x2AC38204, + 0x82B2E080, + 0x2AB381E4, + 0x22C3820C, + 0x22B38184, + 0x80B2E110, + 0x86B2E080, + 0x8312E040, + 0x22B383C6, + 0x82F2E010, + 0x22B38265, + 0x84052120, + 0x0200E806, + 0x28F20116, + 0x2AF383C6, + 0x86B2E080, + 0x8522E0C0, + 0x2AB38265, + 0x2B238275, + 0x2AD38166, + 0x22B381EC, + 0xFC000000, + 0x0A32E004, + 0x22F382B5, + 0xFC000000, + 0x0A33C0BD, + 0x100006E6, + 0xBD029880, + 0xFC000000, + 0xBCB00004, + 0x100006C6, + 0xBD029980, + 0xA4B04270, + 0x100006FC, + 0xBD029A40, + 0xFC000000, + 0x0A35900B, + 0x2AC38386, + 0xA4D00800, + 0x22B38275, + 0x06B3500A, + 0x2B638306, + 0x8403E0B0, + 0x02008807, + 0x02002007, + 0x8343E000, + 0x22B382C6, + 0x10000B3E, + 0xFC000000, + 0xFC000000, + 0x8342E000, + 0x22C3820C, + 0x236381EC, + 0x231381E4, + 0x22B3818C, + 0x0A35A811, + 0x2B438285, + 0x23238275, + 0x8403E140, + 0x0200C003, + 0x02001005, + 0xA4D04230, + 0xA4D04200, + 0x23438285, + 0x8B24A078, + 0x80C2E0C0, + 0x81332140, + 0x81446140, + 0x22C38265, + 0x0200200C, + 0x8AC32078, + 0x2AC38275, + 0x8403E140, + 0x0200C003, + 0x02001003, + 0xA4D04220, + 0xA4D04210, + 0x8132E140, + 0x83146000, + 0x81146140, + 0x854460C0, + 0x06236005, + 0x2B438325, + 0xBD100004, + 0x06334002, + 0xBD100014, + 0x0693600F, + 0x23238184, + 0x22C381B5, + 0x235381A5, + 0x8344A040, + 0x96B30031, + 0xA4B2DA00, + 0x29520145, + 0x82C4A060, + 0xA4B446D0, + 0x28B200C5, + 0x82B4A020, + 0x02002012, + 0x293200B5, + 0xFC000000, + 0x8354A040, + 0x8734E280, + 0x0633600D, + 0x29320155, + 0x2B438325, + 0x96C30031, + 0xA4C31A30, + 0xA4C44600, + 0x231381CC, + 0x80B4A0B0, + 0x86B2E080, + 0x82B2E020, + 0x02002003, + 0xA4C45180, + 0x28C200B6, + 0xBCB00004, + 0xBCC65004, + 0x06934021, + 0x1000073C, + 0xBD02AFC0, + 0xFC000000, + 0x0A35980A, + 0xFC000000, + 0x8334A0A0, + 0x2313818C, + 0xBCB00004, + 0x28020135, + 0x81222120, + 0x100007E4, + 0xBD42B300, + 0xBCB00034, + 0x10000855, + 0xBD02B300, + 0xFC000000, + 0x0A358819, + 0x28B20115, + 0xBD364804, + 0xBCB00004, + 0x100007E9, + 0xBD42B4C0, + 0xBCB00004, + 0x1000082D, + 0xBD32B580, + 0xA0B22000, + 0x0A358002, + 0x0200000E, + 0x2AB38255, + 0x02002012, + 0x231381E4, + 0x87246000, + 0x06834002, + 0x0A358808, + 0x1000073C, + 0xBD02B840, + 0xFC000000, + 0xBCB00004, + 0x100007FD, + 0xBD32B4C0, + 0xBCB00004, + 0x1000073C, + 0xBD02BA00, + 0xFC000000, + 0x2313820C, + 0x232381E4, + 0x8524A110, + 0x10000954, + 0xBD42BB80, + 0xFC000000, + 0x06934005, + 0x0A358804, + 0x1000083C, + 0xBD02BCC0, + 0xFC000000, + 0x0A35A80A, + 0x22B381B5, + 0x22C3820C, + 0x80B2E0C0, + 0x23138306, + 0x23238325, + 0x22C38386, + 0x2B138346, + 0x2B238335, + 0x2AC38366, + 0x23138285, + 0x84C3E110, + 0x2AC382B5, + 0x82F5A010, + 0x2AF381EC, + 0x2AD38166, + 0x0E1BC356, + 0x80B2E110, + 0x2AB381B5, + 0x22B38306, + 0x82C22020, + 0x5AC2C010, + 0xFC000000, + 0xFC000000, + 0x28030000, + 0xBCCFFFFC, + 0x82B22780, + 0x42B30017, + 0xFC000000, + 0xFC000000, + 0x22B380C6, + 0x82B2E010, + 0x2AB380C6, + 0x22B380E6, + 0x22C38325, + 0x0E1BCACB, + 0x80B2E0C0, + 0x2AB380E6, + 0x02001340, + 0xFC000000, + 0x22F38255, + 0xFC000000, + 0x0A33C802, + 0xBCFFFFF4, + 0x22B38204, + 0x22938346, + 0x82B2E060, + 0x22C38335, + 0x28F200B5, + 0x80C220B0, + 0x86B2E020, + 0x809260B0, + 0x5AC24020, + 0xFC000000, + 0xFC000000, + 0x82922780, + 0xBC8FFFFC, + 0x28024000, + 0x42920017, + 0xFC000000, + 0xFC000000, + 0x22938335, + 0x22838366, + 0x2A938325, + 0x2A838386, + 0x228380C6, + 0x82822010, + 0x2A8380C6, + 0x228380E6, + 0x22938325, + 0x80822090, + 0x2A8380E6, + 0x020022A6, + 0xA4D042C0, + 0x2AD38166, + 0xFC000000, + 0x22938125, + 0x02002009, + 0x82926010, + 0x2A938125, + 0x02001006, + 0x2A938135, + 0xFC000000, + 0x22938145, + 0x82926010, + 0x2A938145, + 0x22938106, + 0x82926010, + 0x2A938106, + 0x22C38007, + 0xBC9B7004, + 0xA0E35C00, + 0xBCDB3E04, + 0x22CB9910, + 0x22B24045, + 0x8EE3A801, + 0x28E340C5, + 0x0A32E804, + 0x82C32020, + 0xFC000000, + 0x06430804, + 0x1000068A, + 0xBCE2D6C4, + 0x2723F342, + 0x2ACB9910, + 0x22DB9602, + 0x22C24054, + 0xA0B26000, + 0x82B2E0A0, + 0xA4C00200, + 0x82D360A0, + 0x2AC24054, + 0x5AB34010, + 0xFC000000, + 0xFC000000, + 0x82922780, + 0xBC8FFFFC, + 0x28024000, + 0x42920016, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x1801CBC6, + 0xFC000000, + 0xFC000000, + 0x20B20000, + 0xA492CA80, + 0x0672C8DD, + 0x8AD2E808, + 0x28D20000, + 0x22E24407, + 0x237247A4, + 0xBCC48004, + 0xAAB5E080, + 0x80B320B0, + 0x82822010, + 0x8A822408, + 0x2742C007, + 0xBD900004, + 0x07F508F9, + 0xA0B3CF00, + 0x96B2C010, + 0xA0C50F80, + 0x0A331012, + 0x22CB2342, + 0x8AC32FF0, + 0x84C2E0C0, + 0x82C321C0, + 0x80C260C0, + 0x81966010, + 0xBD177084, + 0x0765200A, + 0x21230002, + 0x2B244065, + 0x86C32040, + 0x97248101, + 0x2B244055, + 0x20C30002, + 0x2AC44045, + 0x96C30101, + 0x2AC44035, + 0xBCC00064, + 0xD00300D2, + 0x2A0B0F82, + 0x2A0B0FC1, + 0xA0C52000, + 0x0A330002, + 0x81966010, + 0xA0C56100, + 0x0A330002, + 0x81966010, + 0xA0C56000, + 0x0A330803, + 0x0A3640D7, + 0x85966010, + 0xA0C3DC00, + 0x22DB9960, + 0x231B2382, + 0xA8D320D0, + 0x96D34080, + 0x80D36110, + 0x80D360B0, + 0x81836000, + 0xA1139C00, + 0xBDB77204, + 0xBDA77304, + 0xA0B38AE0, + 0xA4C2CAE0, + 0xA4C043F0, + 0x28C6C002, + 0x28D68002, + 0x2A077242, + 0x2A077282, + 0x2A0772C2, + 0xBD228004, + 0x0A36400D, + 0x87966010, + 0x83B6E040, + 0x83A6A040, + 0x020020C6, + 0xBD02EF40, + 0x81362000, + 0x0A334006, + 0xA4C2CAE0, + 0xA4C043F0, + 0x020023F6, + 0x28C6C002, + 0x28D68002, + 0xBD877204, + 0xBCB77304, + 0xA0D52000, + 0x0A334006, + 0xBD300004, + 0xA0C50320, + 0x02002089, + 0xBD02F300, + 0x83132000, + 0xA0D56100, + 0x0A334006, + 0xBD300014, + 0xA0C50310, + 0x02002082, + 0xBD02F4C0, + 0x83132020, + 0xA0D56000, + 0x0A334006, + 0xBD300024, + 0xA0C50300, + 0x0200207B, + 0xBD02F680, + 0x83132040, + 0x20C60002, + 0xA0D50F80, + 0x0A334070, + 0x07F30C6F, + 0xA4C003F0, + 0x8EC32023, + 0x20B2C002, + 0x2AC77402, + 0x2AB77442, + 0xBCB77544, + 0x22C77482, + 0xAAF5E400, + 0x80C3E0C0, + 0x40B300D7, + 0xFC000000, + 0xFC000000, + 0xA0C50360, + 0x2AC77500, + 0x2AB77521, + 0x2AD77510, + 0xBCFB9304, + 0xA0B39C00, + 0x86B2E040, + 0x2AB3C045, + 0xBCB77084, + 0x2AB3C055, + 0x23777521, + 0x23477510, + 0xFC000000, + 0x2155C000, + 0x8375E010, + 0x2B777521, + 0x0A35004D, + 0x87452010, + 0x2B477510, + 0x06754BFA, + 0x0A35200E, + 0x22B77402, + 0x22D77442, + 0x81336000, + 0x2313C045, + 0xA0B2CAE0, + 0x80E2E000, + 0x0200207B, + 0xBD030200, + 0xBD228004, + 0x0A33403F, + 0x02002004, + 0xA4C38AE0, + 0x8EB32023, + 0x2A077402, + 0x2AB3C006, + 0x2AD3C026, + 0xA0C54E00, + 0xBCB38004, + 0xAAC320A0, + 0x80B320B0, + 0x82C2E080, + 0xFC000000, + 0xFC000000, + 0x24D30001, + 0xA0C35000, + 0xBD177084, + 0x0A3303DE, + 0x82C2E060, + 0xA0D34680, + 0x2AD3C07C, + 0x24C30001, + 0x82E2E040, + 0x2AC3C065, + 0xA1630CA0, + 0xBD24E004, + 0xA5258C30, + 0xBD44C004, + 0xA5458C30, + 0x23377500, + 0xA0C58440, + 0x96D30010, + 0xBCCB0F84, + 0x815320D0, + 0xA0C58800, + 0x94C040C0, + 0x20D54001, + 0x880360C0, + 0x02004809, + 0x8CC360C0, + 0x28C54001, + 0x24C48003, + 0x82C32010, + 0x2353C045, + 0x83556040, + 0x80D36150, + 0x2CC48003, + 0x0A34D007, + 0x26C50006, + 0x2AC44045, + 0x96C30101, + 0x2AC44035, + 0x26C50025, + 0x2AC44055, + 0x24C38001, + 0x2AC44025, + 0x82C2E020, + 0x24B2C001, + 0x28B44001, + 0x24B30001, + 0x100004E7, + 0xBD02FD00, + 0x2AB44015, + 0x22C77402, + 0xFC000000, + 0x0A330003, + 0xBCB00034, + 0xD002C0C6, + 0x02002324, + 0xFC000000, + 0xFC000000, + 0x1802DC07, + 0xFC000000, + 0xFC000000, + 0x21960002, + 0x2162C002, + 0x83862040, + 0x82B2E040, + 0x20CA0002, + 0x07F64FF5, + 0xA59003F0, + 0x0A330C1B, + 0x9734C010, + 0xBCCB0F84, + 0x80C32130, + 0xA1350730, + 0x2ED48005, + 0x28D30001, + 0x8BA5AFF0, + 0x86D5A120, + 0x2E048085, + 0x96C4C020, + 0x2EC4801C, + 0x2FA48024, + 0x532B4057, + 0xFC000000, + 0xFC000000, + 0xA4E043F0, + 0xA4F65C00, + 0xA4F447A0, + 0x96C68011, + 0xA4F30F00, + 0x28EA0003, + 0x82822082, + 0x8A82280A, + 0x00002010, + 0xBCC00114, + 0xC2031702, + 0x00002010, + 0xBCC00034, + 0xD0030196, + 0xBCB00064, + 0xD002C0D2, + 0xA0B3DC00, + 0xA0C38AE0, + 0x96C300E0, + 0xA4C2DC00, + 0x020023CF, + 0xBCB00034, + 0xD002C0C6, + 0x80D42000, + 0x8124A000, + 0x100006E6, + 0xBD032140, + 0xFC000000, + 0x100006C6, + 0xBD032200, + 0xA4B04270, + 0xBD032300, + 0x100006FC, + 0xFC000000, + 0xFC000000, + 0x81C5A000, + 0x0A358005, + 0x81E46000, + 0x10000702, + 0xBD032480, + 0x81D4A000, + 0x81036000, + 0x8124A000, + 0x80D72000, + 0xFC000000, + 0x00001010, + 0xFC000000, + 0xBD500004, + 0xBD44A004, + 0xA5434A40, + 0xBCC74004, + 0xA4C34A30, + 0x26E50035, + 0xA0838C00, + 0xA0838C60, + 0x26850025, + 0xFC000000, + 0x26C30005, + 0xFC000000, + 0x0E831847, + 0x26E50035, + 0xA1138C60, + 0x27850075, + 0xAAC46100, + 0x819620C0, + 0x26C50055, + 0xA52003F0, + 0x83546010, + 0x2F264007, + 0x2F664047, + 0x06F3141A, + 0x951040D0, + 0xA12388C0, + 0x8374A010, + 0xA4E5C8C0, + 0x860560C0, + 0x02008002, + 0xBD500004, + 0xA1638C00, + 0x8B256038, + 0x8B65A038, + 0xFC000000, + 0x0F64882A, + 0xA4E54C60, + 0x2EE50035, + 0x0E4DD827, + 0xFC000000, + 0xFC000000, + 0x0A356804, + 0x8765E040, + 0xA4C042F0, + 0xBD5000C0, + 0x87256040, + 0xA4C48C00, + 0x02001007, + 0xA4E588C0, + 0x8A056030, + 0x0200681B, + 0xA4E54C60, + 0x2EE50035, + 0xA1230C00, + 0xBD574004, + 0xA5534830, + 0xA4E48C60, + 0x2EE50035, + 0xAAE4A100, + 0x80E3A180, + 0x27250015, + 0x27754026, + 0xAB64A100, + 0x8165E160, + 0x52ED9404, + 0x82E22040, + 0x8284A040, + 0x27254005, + 0x84022120, + 0x02008002, + 0xBC800004, + 0x2EC5005D, + 0x2EE50025, + 0x2E850015, + 0x18033946, + 0xFC000000, + 0xFC000000, + 0x26876842, + 0x8C822110, + 0x2E876842, + 0x0000200B, + 0xCAD5C01E, + 0xBD500014, + 0x0000100B, + 0xCAD5A01C, + 0x27576800, + 0x26E76842, + 0x06556078, + 0x26C768C2, + 0x27676902, + 0x8893A0C0, + 0x0A324007, + 0x06756404, + 0xBD100004, + 0xBC800004, + 0x26876830, + 0x02001012, + 0x9D924082, + 0x88D3A160, + 0x0A33406A, + 0x06656406, + 0xBC800004, + 0xBD100014, + 0x26876820, + 0x8A8221F0, + 0xFC000000, + 0x9D934082, + 0x82966010, + 0x0FFE5806, + 0x9E834002, + 0x2E976820, + 0x82922010, + 0x81922000, + 0x2E976820, + 0xBCD4A004, + 0xA4D64A40, + 0xFC000000, + 0xFC000000, + 0x27734035, + 0xA085C8C0, + 0x0A322451, + 0xA185CC00, + 0x27334075, + 0xAA962100, + 0x81426130, + 0x87222010, + 0xA57488C0, + 0x26850007, + 0x26E50047, + 0x0A3243FE, + 0x83A62010, + 0x8606A0C0, + 0x02009003, + 0x2743405D, + 0xBDA00004, + 0xA1821C00, + 0x0655404E, + 0x95804190, + 0x27534064, + 0xA1B54E00, + 0x8606E200, + 0x02008050, + 0x06F51404, + 0xA5768C00, + 0x02001037, + 0x2F734035, + 0xA115CC60, + 0x8AC6A038, + 0x8B546038, + 0xFC000000, + 0x0F530807, + 0xFC000000, + 0xFC000000, + 0x83A6A040, + 0x8606A0C0, + 0x02008002, + 0xBDA00004, + 0x0A349404, + 0xA5768C00, + 0x02001028, + 0x2F734035, + 0x26C34025, + 0x86C32040, + 0x2EC34025, + 0x0A330808, + 0xA0C50C00, + 0x0A330802, + 0x82C020C0, + 0x87A32040, + 0x8B246030, + 0xA54002F0, + 0x2F43405D, + 0xAAC6A100, + 0x81432130, + 0xBD374004, + 0x2E050026, + 0x2E0500A6, + 0x2E050126, + 0xA5364830, + 0x27134005, + 0x2E0501A6, + 0x2754C026, + 0xAAC46100, + 0x80C560C0, + 0x434B0400, + 0xFC000000, + 0xFC000000, + 0x83146040, + 0x26C4C005, + 0x840460C0, + 0x02008002, + 0xBD100000, + 0x2F134005, + 0xFC000000, + 0x82C4A040, + 0xA57308C0, + 0x02002003, + 0xA5768C00, + 0x2F734035, + 0x00001010, + 0xBCC00014, + 0x94804190, + 0xFC000000, + 0x8883A088, + 0x2E876842, + 0x00001010, + 0xBCC00004, + 0xBC8B7E04, + 0xFC000000, + 0xFC000000, + 0x22820046, + 0x84022000, + 0x0200CBF9, + 0x02000385, + 0xBD5B7E04, + 0xFC000000, + 0xFC000000, + 0x23B54046, + 0x020023AF, + 0x8586E180, + 0x2B854046, + 0xBD572604, + 0xABB6E180, + 0x815561B0, + 0xA1B21C00, + 0x0A345808, + 0x23154046, + 0x851461B0, + 0x0200D3AA, + 0x2B154046, + 0x020023A8, + 0x88C32188, + 0x2EC768C2, + 0x22C54006, + 0x84C321B0, + 0x0200D3A3, + 0x2AC54006, + 0x020023A1, + 0x88C5A188, + 0x2EC76902, + 0x26A76800, + 0x26C76882, + 0x0652900A, + 0xBCDB7E04, + 0x9EB30002, + 0x94A040B0, + 0x0652C02D, + 0xAAB2E180, + 0xBCD72604, + 0x80D360B0, + 0x88C320A8, + 0xFC000000, + 0x22E34026, + 0xBD277004, + 0xA0A384E0, + 0xA0B39C00, + 0xFC000000, + 0x24A480A4, + 0x9512C0A0, + 0xA0B385E0, + 0xA0A39D00, + 0xFC000000, + 0x24B480B4, + 0x94E280B0, + 0x22B34006, + 0x22A34086, + 0x23234046, + 0x23634066, + 0x8404A000, + 0x02009006, + 0x277768C2, + 0x2B634046, + 0x80B2E120, + 0x0A358805, + 0x02000006, + 0x8124A160, + 0x0200D804, + 0x2B234046, + 0x8D25E0A0, + 0x2F2768C2, + 0x80B2E0E0, + 0x8402E110, + 0x0200D003, + 0x2B134006, + 0x2AB34006, + 0x8402E000, + 0x0200DBD6, + 0x26B76902, + 0x020023D4, + 0x8CA2E0A0, + 0x2EA76902, + 0x0000200F, + 0xBCA02D14, + 0xC2029702, + 0x10000CED, + 0xBD037040, + 0xBC800004, + 0x0A331027, + 0xA0C3D180, + 0x0A331010, + 0xA48043F0, + 0x0E1B001A, + 0xFC000000, + 0xFC000000, + 0x20DA8002, + 0x22CA8046, + 0x0A334821, + 0x288A8003, + 0x82A28082, + 0x8AA2802B, + 0x0A3323F0, + 0xBC802914, + 0xC2021702, + 0x02001017, + 0xFC000000, + 0x20C28002, + 0x22D28086, + 0x0A330816, + 0x28828003, + 0x2AE28047, + 0x82A28100, + 0x8AA28019, + 0x0A3363E4, + 0xBC801314, + 0xC2021702, + 0x0200100B, + 0xFC000000, + 0x20C2C002, + 0x22D2C046, + 0x0A33080A, + 0x2882C003, + 0x82B2C080, + 0x8AB2C029, + 0x0A3363D9, + 0xBC800114, + 0xC2021702, + 0x18036F87, + 0xFC000000, + 0xFC000000, + 0xA0820AE0, + 0xA0820A00, + 0x968200E0, + 0xA4825C00, + 0x020023F9, + 0xBC900034, + 0xD0024086, + 0x20828000, + 0xA4920A80, + 0x06720830, + 0x28028000, + 0x82A28010, + 0x8AA28408, + 0x23224407, + 0x22F247FC, + 0x22B24784, + 0xA5300770, + 0x22E246D4, + 0x22D2477C, + 0xBD700004, + 0xA5739180, + 0x0E1B8016, + 0xA522C330, + 0x23124786, + 0x0E0B8008, + 0x22B2463C, + 0x2342475C, + 0xA0C2C230, + 0x94C500C1, + 0x0E0B880E, + 0xA522C8E0, + 0xA5230740, + 0x22C24754, + 0x22B24774, + 0xA15449A0, + 0xA1445400, + 0xA0E444E0, + 0xA1144500, + 0x8163A0B2, + 0xA5654820, + 0xA5651460, + 0xA5644550, + 0xA5731100, + 0xBCB00064, + 0xD002C082, + 0x10000C98, + 0xBCB386C4, + 0xFC000000, + 0x0A356BD7, + 0xBC802D14, + 0xC2021702, + 0xA083CA00, + 0x96B200E0, + 0xA4B4DC00, + 0x020023D1, + 0xBC800034, + 0xD00200B6, + 0x18037C87, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, +}; +char *rdpa_version_fw_c = "$Change: 241757 $"; diff --git a/arch/arm/mach-bcmbca/bcm63148/rdp_fw/runner_fw_d.c b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/runner_fw_d.c new file mode 100644 index 0000000000..ee34e766ae --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63148/rdp_fw/runner_fw_d.c @@ -0,0 +1,4108 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + + +uint32_t firmware_binary_D[] = { + 0x0A300005, + 0xFC000000, + 0x1000001B, + 0xFC000000, + 0xFC000000, + 0x221A7E42, + 0x222A8683, + 0x224A8703, + 0x226A8783, + 0x228AECA1, + 0xC2021502, + 0xC2001202, + 0xC2001302, + 0xBC801000, + 0xBC800018, + 0xC2021202, + 0xC2021302, + 0x10000636, + 0xBD000500, + 0xFC000000, + 0xBC991904, + 0xBC81C60C, + 0xBC81CE00, + 0x2A824026, + 0x18000000, + 0xFC000000, + 0xFC000000, + 0x2A0AA402, + 0x2A1AA442, + 0x2A2AA483, + 0x2A4AA503, + 0x2A6AA583, + 0x2A8AA603, + 0x2AAAA683, + 0x2ACAA703, + 0x2AEAA783, + 0x2B0AA803, + 0x2B2AA883, + 0x2B4AA903, + 0x2B6AA983, + 0x2B8AAA03, + 0x2BAAAA83, + 0x2BCAAB03, + 0x2BEAAB83, + 0xC6800042, + 0x2A8AF202, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xC2000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x220AA402, + 0x221AA442, + 0x222AA483, + 0x224AA503, + 0x226AA583, + 0x228AA603, + 0x22AAA683, + 0x22CAA703, + 0x22EAA783, + 0x230AA803, + 0x232AA883, + 0x234AA903, + 0x236AA983, + 0x238AAA03, + 0x23AAAA83, + 0x23CAAB03, + 0x23EAAB83, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x16000001, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x229AF580, + 0x9E924000, + 0xFC000000, + 0x0652400A, + 0xBD100004, + 0xBCBAE1E4, + 0x21220003, + 0xA094CD00, + 0xA4A24A80, + 0x28020002, + 0x0A3481BC, + 0x0200101A, + 0x2A0287B4, + 0xBC900024, + 0xC2025702, + 0x18001547, + 0xFC000000, + 0xFC000000, + 0x21220003, + 0xBD100004, + 0xBCBAE1E4, + 0xA0E32100, + 0x07F4E15E, + 0xA094CD00, + 0xA4A24A80, + 0x229AF580, + 0x9E924000, + 0xFC000000, + 0x06524004, + 0x02002008, + 0xD0038004, + 0xFC000000, + 0xBC900024, + 0xC2025702, + 0x180019C7, + 0xFC000000, + 0xFC000000, + 0x22928446, + 0x2A02879C, + 0xA0949C00, + 0x2A9286E5, + 0xBD5A9604, + 0x22E287FC, + 0x86E3A020, + 0xA5538620, + 0x23428446, + 0xFC000000, + 0x20E54002, + 0xFC000000, + 0x0A338457, + 0x06039C13, + 0x2352855C, + 0x86056110, + 0x02004810, + 0xA1550440, + 0x86056010, + 0x02005807, + 0x23628575, + 0x8755A430, + 0x8B556018, + 0x02004809, + 0x02001157, + 0xBD7000B4, + 0xBD502224, + 0x8B65A018, + 0x8405A150, + 0x02004803, + 0x02001151, + 0xBD7000B4, + 0x06139C0E, + 0x2352855C, + 0xA15508C0, + 0x86056050, + 0x0200580A, + 0x23528544, + 0x815560A0, + 0xFC000000, + 0xFC000000, + 0x21554000, + 0x86056820, + 0x02004803, + 0x02005143, + 0xBD700054, + 0x06650002, + 0x07950018, + 0x06F38C17, + 0xBD682004, + 0x235287FC, + 0x87556020, + 0xA5654660, + 0xD745A851, + 0xFC000000, + 0xFC000000, + 0xC7600742, + 0xFC000000, + 0x0685880D, + 0xBC9A6004, + 0xA4954640, + 0xA0E59000, + 0xFC000000, + 0xFC000000, + 0x209240E4, + 0x8A026800, + 0x0200592D, + 0xA1724C00, + 0x100001C7, + 0x8293A000, + 0xFC000000, + 0x07138814, + 0x06B5000E, + 0x07450812, + 0xFC000000, + 0x235285CC, + 0x8B556028, + 0xBD8FFFF4, + 0x237285D5, + 0x236285E5, + 0x0A354806, + 0x8405E180, + 0x02004804, + 0x0A358803, + 0x02001007, + 0xA5400340, + 0x072398F7, + 0xBC9002E4, + 0x100001E9, + 0xBD7000E4, + 0xFC000000, + 0x07338808, + 0x07D50002, + 0x07E50806, + 0x074398EF, + 0xBC9002F4, + 0x100001E9, + 0xBD700124, + 0xFC000000, + 0x23828525, + 0x2A02879C, + 0x06B50109, + 0x07050011, + 0x06650010, + 0xFC000000, + 0x235AF4E0, + 0x22EAF5B0, + 0x06054C0C, + 0x0A339515, + 0x2A12879C, + 0xBCEAAC04, + 0x23628095, + 0x237280A6, + 0xD763A854, + 0xFC000000, + 0xFC000000, + 0xC6E00742, + 0xFC000000, + 0x06838D0B, + 0x2A02879C, + 0x074500E9, + 0x07E500F5, + 0x07D500F4, + 0xFC000000, + 0x2352854C, + 0x86E560E0, + 0xA1950440, + 0x86066010, + 0x02006841, + 0x236285A4, + 0x97758041, + 0x815620E0, + 0x22E2855C, + 0x84056090, + 0x0200C0E8, + 0x86056400, + 0x0200C802, + 0xA5255C00, + 0x2B828785, + 0x22928544, + 0x8603A290, + 0x02005009, + 0xBD500024, + 0x8603A2F0, + 0x02005006, + 0xBD500034, + 0x0EEDC8ED, + 0xFC000000, + 0xFC000000, + 0x020000E9, + 0xBCCAE900, + 0x234287FC, + 0xA1450800, + 0x97554040, + 0x2A028566, + 0x21430144, + 0xA5550800, + 0x8342AAC0, + 0xD75500C2, + 0x2B52855C, + 0x1000021E, + 0xBCC04740, + 0xBD700004, + 0x0A3528DE, + 0x2AE2855C, + 0x2A0A9810, + 0xFC000000, + 0x22E2855C, + 0x8603A2F0, + 0x02005123, + 0xFC000000, + 0x83426070, + 0x83526060, + 0x80E26000, + 0x83726280, + 0x8363A040, + 0x20928144, + 0x2A928534, + 0x23428446, + 0xBC900020, + 0xA5424440, + 0x21628165, + 0x8293A000, + 0x8365A280, + 0x2B628785, + 0x20928095, + 0xA0925040, + 0x2A92853C, + 0x20928154, + 0x2A92855C, + 0x0200206D, + 0x21528176, + 0x2B528566, + 0x86066020, + 0x020058AD, + 0xBD700294, + 0x83862280, + 0x80E620E0, + 0x8403A090, + 0x0200C0A7, + 0x8603A400, + 0x0200C802, + 0xA5239C00, + 0x22E2855C, + 0x22928544, + 0x8603A040, + 0x0200500A, + 0xBD700044, + 0x8603A2F0, + 0x02005007, + 0xBD700034, + 0x2B828785, + 0x8605AFF0, + 0x020048AA, + 0xFC000000, + 0x020000A7, + 0x814560A0, + 0x83452080, + 0x81502008, + 0xD7550102, + 0x2A028566, + 0xFC000000, + 0xC7600642, + 0x2B628586, + 0x83450100, + 0xD7550102, + 0x23428554, + 0x8F452010, + 0x2B428554, + 0xC7500642, + 0x234287FC, + 0xA1450800, + 0xBCCAE900, + 0x9765C040, + 0x2B5285A6, + 0x21430144, + 0xA5650800, + 0x8342AAC0, + 0xD76500C2, + 0x2B62855C, + 0x1000021E, + 0xBCC05B40, + 0xBD700004, + 0x0A35288E, + 0x2AE2855C, + 0x2A0A9810, + 0x22E2855C, + 0x8603A2F0, + 0x020050D4, + 0xFC000000, + 0x83426080, + 0x22E28554, + 0x8AE3A018, + 0x2AE28554, + 0x20E28144, + 0x2AE28534, + 0x83526090, + 0x80E26000, + 0x83726140, + 0x8383A020, + 0x8293A010, + 0x23428446, + 0xBCC00010, + 0xA5430440, + 0x20928094, + 0x2A92853C, + 0x8363A0C0, + 0x20928154, + 0x2A92855C, + 0x21528185, + 0x2B528785, + 0x8355A020, + 0x21828165, + 0x8365A040, + 0x2B828585, + 0x21528155, + 0x2B528595, + 0x8385A020, + 0x21928165, + 0x8355A040, + 0x2B9285A5, + 0x21628185, + 0x2B6285B5, + 0x83656020, + 0x21828155, + 0x83556040, + 0x2B828565, + 0x21528165, + 0x2B528575, + 0x8363A060, + 0x215280E4, + 0x86056450, + 0x0200584A, + 0xFC000000, + 0x21628165, + 0xBD53FFF4, + 0x8805A150, + 0x02005845, + 0xFC000000, + 0x2B428446, + 0x2AE2854C, + 0x82E5E0D0, + 0x86026060, + 0x02006806, + 0xFC000000, + 0x20E280E4, + 0x8A03A070, + 0x0200404E, + 0x0200003A, + 0x86026110, + 0x0200404B, + 0x86026720, + 0x02005049, + 0x860263D0, + 0x02005047, + 0xFC000000, + 0x86026000, + 0x02005044, + 0xFC000000, + 0x860268D0, + 0x02009841, + 0xFC000000, + 0x2292855C, + 0x86026010, + 0x0200502B, + 0xBD7002D4, + 0x860263A0, + 0x02005028, + 0xBD700064, + 0x86026020, + 0x02005025, + 0xBD700054, + 0x02000022, + 0x02001006, + 0xCA95601C, + 0xA094CD00, + 0xA4A24A80, + 0xD0038004, + 0xFC000000, + 0xA0B4CF60, + 0xA5301560, + 0x229287FC, + 0x8602E020, + 0x02004006, + 0xA0924A00, + 0x96B240E0, + 0xA4B4DC00, + 0xBC900034, + 0xD00240B6, + 0xA0928A80, + 0x02002037, + 0xBCB00064, + 0xD002C092, + 0xBD7FFFF4, + 0x22E285CC, + 0x8B53A028, + 0x236285D5, + 0x22E285E5, + 0x0A354808, + 0x0A338807, + 0x8405A170, + 0x02004310, + 0x02001005, + 0xBD7000E4, + 0x02001003, + 0xBD700334, + 0xBD700294, + 0x229286E5, + 0xA5225C00, + 0x2B72863C, + 0x2B228407, + 0x20E2C001, + 0xA094CD00, + 0x8C926116, + 0x8E926800, + 0x28938000, + 0x82938010, + 0x8A924408, + 0x2892C001, + 0x0200201A, + 0xBC900114, + 0xC2025702, + 0x020003EE, + 0x07951BC3, + 0xFC000000, + 0x2B228407, + 0x232AF580, + 0x9EB48000, + 0x8292E200, + 0x96924040, + 0x83426010, + 0xA094CD00, + 0x8EE26800, + 0xBC900014, + 0x949240B0, + 0x233AF381, + 0x8134E0B0, + 0x88B4A098, + 0x2ABAF580, + 0x28E4C000, + 0x2898C000, + 0x8230E012, + 0x02002003, + 0x8A30E04A, + 0xC2051702, + 0x0E1C4409, + 0xBC901004, + 0xFC000000, + 0x07F22243, + 0x82822080, + 0x88822098, + 0x180019C7, + 0xFC000000, + 0xFC000000, + 0x1000069C, + 0xFC000000, + 0xFC000000, + 0x18001547, + 0xFC000000, + 0xFC000000, + 0xC7600642, + 0x8352AA80, + 0x234AE142, + 0xA1659A00, + 0xA5459A60, + 0x615500D7, + 0xFC000000, + 0xFC000000, + 0xC56800D2, + 0x0615D01B, + 0xFC000000, + 0x06059812, + 0xFC000000, + 0x0645980C, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x615500D0, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x615500D7, + 0xFC000000, + 0xFC000000, + 0x0605980D, + 0xFC000000, + 0x0000100C, + 0xBD400014, + 0xA16586D0, + 0x0A359008, + 0xFC000000, + 0x8F75E020, + 0x020023E4, + 0x83452400, + 0x8B45208A, + 0x060593E9, + 0xFC000000, + 0x0000100C, + 0xBD400004, + 0x22928544, + 0xBD665584, + 0xBD708004, + 0xBD486DD4, + 0x21528096, + 0x82926040, + 0xA0E56100, + 0x0A338B9B, + 0xA0E56000, + 0x8403A160, + 0x02004007, + 0x8403A170, + 0x02004322, + 0x8403A140, + 0x020042D1, + 0x02001393, + 0xFC000000, + 0x829260C0, + 0xFC000000, + 0xFC000000, + 0x20E28095, + 0x8403A170, + 0x02006318, + 0x82926020, + 0x8403A140, + 0x020052C6, + 0x20E28095, + 0x8403A170, + 0x02006312, + 0x82926020, + 0x8403A140, + 0x020052C0, + 0x20E28095, + 0x8403A170, + 0x0200630C, + 0x82926020, + 0x8403A140, + 0x020042BA, + 0x0200137C, + 0xFC000000, + 0x22EAF140, + 0xFC000000, + 0x0A33803E, + 0xBCE00024, + 0xC2039702, + 0x18009B87, + 0xFC000000, + 0xFC000000, + 0x22D28446, + 0x22E2855C, + 0x07734804, + 0x1000048B, + 0xFC000000, + 0xFC000000, + 0x2AE28024, + 0x8603A110, + 0x02006414, + 0xBCF00074, + 0xBD0AE900, + 0x8603A060, + 0x020055F1, + 0xBD10A3C4, + 0x8603A290, + 0x0200540D, + 0xBCF00024, + 0x8603A040, + 0x0200540A, + 0xBCF00044, + 0x8603A2F0, + 0x02005407, + 0xBCF00034, + 0x020011FE, + 0x80B02000, + 0x07F45003, + 0xBCF00054, + 0xBCF00064, + 0x22B287FC, + 0xA0E2C800, + 0x96B3C040, + 0xFC000000, + 0x219400E4, + 0xA4B64800, + 0x2AB2855C, + 0x2A0A9810, + 0xA0E34440, + 0x8603A020, + 0x02005FD2, + 0x82F2AA80, + 0x22E2854C, + 0x80E3A0A0, + 0x82E3A080, + 0x81302008, + 0xD7338102, + 0xFC000000, + 0xFC000000, + 0xC7100642, + 0x2B128586, + 0x82E38100, + 0xD7338102, + 0x22E28554, + 0x8EE3A010, + 0x2AE28554, + 0xC6E00642, + 0x2AE285A6, + 0x22EAEDC0, + 0xA1128900, + 0x88E3A110, + 0x2AEAEDC0, + 0xBCEA5804, + 0x2143C003, + 0x2363C047, + 0xC2059082, + 0xC205D0C2, + 0xA1451200, + 0xBD694004, + 0xD743A656, + 0x22E28407, + 0x8315A000, + 0xC7100742, + 0xFC000000, + 0x06846089, + 0xA1445000, + 0xBD3AF184, + 0x82E2AAC0, + 0x22F2855C, + 0xD6F380C2, + 0x8382AA80, + 0xFC000000, + 0xC6E00642, + 0x233AE142, + 0xA0E39A00, + 0xA5339A60, + 0xA1B22100, + 0x43BCC407, + 0xFC000000, + 0xFC000000, + 0xBD100004, + 0xBDAA5804, + 0x20E60003, + 0x2566C003, + 0xA0E39200, + 0x07F5880B, + 0xA1459200, + 0xAC3500E0, + 0xAC05C0F0, + 0x23460047, + 0x26E6C047, + 0xAC038140, + 0xAC03C150, + 0x02042046, + 0x234AF590, + 0xA1459F00, + 0x83B6E100, + 0x8A06E3F0, + 0x02004BEF, + 0xBCE00294, + 0x07F5882E, + 0x0A34482D, + 0xBD100014, + 0xA0E586D0, + 0x0A338031, + 0x8334E400, + 0x8B34E08A, + 0xA1B22100, + 0x43BCC404, + 0x1800B3C6, + 0xFC000000, + 0xFC000000, + 0x22D28446, + 0x22B2855C, + 0x2AB28024, + 0xA0B348C0, + 0x8602E010, + 0x02005580, + 0xBD10BD44, + 0xA0F443F0, + 0xBD0AE900, + 0x22B287FC, + 0xA0B2C800, + 0xFC000000, + 0xA1122000, + 0x219400B4, + 0x80B66000, + 0x81402008, + 0xD7438102, + 0x8343A100, + 0x2A044026, + 0xC6E00642, + 0x2B34403C, + 0x2AF44034, + 0x80F02008, + 0xD6F50102, + 0x2AE44066, + 0x2AB44006, + 0xC6E00642, + 0x2AE44046, + 0x82E46040, + 0xD6B380C2, + 0x8783A040, + 0xFC000000, + 0xC6E00642, + 0x020003B8, + 0xFC000000, + 0x22EAF3A1, + 0xFC000000, + 0x0A339004, + 0x860660B0, + 0x02005B82, + 0xBD9000B4, + 0xA0C28900, + 0x22BAEDC0, + 0x88B2E0C8, + 0x2ABAEDC0, + 0x22B28024, + 0x2AB2855C, + 0x2A0A9810, + 0x0200216D, + 0x80B02000, + 0xFC000000, + 0xBCBAF184, + 0xBCDAE304, + 0xA4D10610, + 0x2812C044, + 0x29434001, + 0xAAD12100, + 0x80D361A0, + 0xA1859200, + 0x29834002, + 0x2B734026, + 0x2AE34047, + 0xA1558890, + 0xBD194004, + 0x233AE642, + 0x22E28407, + 0xAAD12800, + 0x811460D0, + 0xAAD52840, + 0x80D4E0D0, + 0x83412000, + 0x82412010, + 0x8A412088, + 0x97354030, + 0x8334E180, + 0x0A354803, + 0x8334E180, + 0xFC000000, + 0x41134137, + 0xFC000000, + 0xFC000000, + 0x2802C144, + 0xA1328900, + 0x22BAEDC0, + 0x88B2E138, + 0x2ABAEDC0, + 0x100003A6, + 0x22B44066, + 0x23544045, + 0xAAB52800, + 0x8115A0B0, + 0xBCBAE304, + 0xAAD52020, + 0x80B2E0D0, + 0xFC000000, + 0x2154C144, + 0x20D2C001, + 0x22BAE642, + 0xAAD36840, + 0x80D2E0D0, + 0x0A354808, + 0xA1328900, + 0x22BAEDC0, + 0x88B2E138, + 0x2ABAEDC0, + 0x100003A6, + 0x22B44066, + 0x23544045, + 0xBCB00024, + 0xC202D702, + 0x1800D7C7, + 0xFC000000, + 0xFC000000, + 0x020013F3, + 0x2154C144, + 0x212A4000, + 0xA4A48A80, + 0x067488ED, + 0xFC000000, + 0xBCB00FF4, + 0x22B2879C, + 0x2A0287B4, + 0x280A4000, + 0x0A32E70D, + 0x80B02000, + 0x22C2854C, + 0x82B2A120, + 0xC6000642, + 0xA4B2E100, + 0x86F2E020, + 0xBCEA6E04, + 0x22B28446, + 0x22D3C015, + 0xA152C480, + 0x2AD38015, + 0x22D3C026, + 0x2AD38026, + 0x233286E5, + 0xBCD000E4, + 0x97154020, + 0x8734E120, + 0x8544E110, + 0x233287FC, + 0xA134CA00, + 0x8604E0D0, + 0x02004403, + 0x82D36040, + 0x87452040, + 0x816460D0, + 0x2B428785, + 0xBD3FFFF0, + 0x80F3E0D2, + 0x0E0D400C, + 0xBD3FFFF8, + 0x8314E000, + 0x2143C0D5, + 0x213BC001, + 0x82F3E042, + 0x0E1D4006, + 0x82D36040, + 0xA5352100, + 0x211BC001, + 0x20D3C0D5, + 0xA5136100, + 0x2B338086, + 0x2B1380A6, + 0x22D3C046, + 0x2AD380C6, + 0x2313C065, + 0x20F3C165, + 0x20D280C4, + 0x8A02E300, + 0x0200600A, + 0xA4F46100, + 0x2AF380E6, + 0x96D34041, + 0x0652E004, + 0x2332853C, + 0x86036040, + 0x0200434D, + 0x86036060, + 0x0200434B, + 0xBD300FF4, + 0x02000349, + 0x07F2D02A, + 0x234AF5A0, + 0xA1348A00, + 0x23644086, + 0x8404E140, + 0x02008805, + 0x07E59004, + 0xBD300244, + 0x02001102, + 0xCB35601C, + 0x2334405C, + 0xA134CA00, + 0x2B3287A4, + 0x06D5680F, + 0x23428534, + 0x23344054, + 0x0E1D18D6, + 0x2364405C, + 0xBD4002B4, + 0x06658809, + 0x82C32060, + 0xA1458250, + 0xFC000000, + 0x20C280C5, + 0xA0C302E0, + 0x840520C0, + 0x020058CC, + 0xBD400294, + 0x23428785, + 0xA0C55600, + 0x840520C0, + 0x0200E009, + 0x2342879C, + 0x22C2853C, + 0x0A350C1E, + 0x84032130, + 0x0200401C, + 0x020020C1, + 0xBD400294, + 0xFC000000, + 0x020010BE, + 0xBD400024, + 0x83546180, + 0x22C28544, + 0x82C32080, + 0x814320A0, + 0x21354000, + 0x83556010, + 0x20C50000, + 0x0A34C009, + 0x84032130, + 0x02004804, + 0x020023FA, + 0x83452010, + 0xFC000000, + 0x020020AF, + 0xBD400294, + 0xFC000000, + 0x22CA82C2, + 0xBD3A8304, + 0x0A330802, + 0xBD3A82C4, + 0xC6C01402, + 0x28C4C002, + 0x2334409C, + 0xCB31401E, + 0x23444007, + 0x83452010, + 0xA0C39C00, + 0xC93180CE, + 0x815560C0, + 0x2B444007, + 0x53134080, + 0x07F2D0C1, + 0x235286C5, + 0xFC000000, + 0x0A356805, + 0x83B46180, + 0xBD00FE80, + 0x235AB770, + 0x2B5286C5, + 0x100004BF, + 0xA5B6E100, + 0xFC000000, + 0x0702E807, + 0xA0C2C550, + 0x86032030, + 0x02004804, + 0x1000078C, + 0xBD010040, + 0x83A56020, + 0x80C56170, + 0x59430130, + 0x82C56020, + 0x82D2AEC0, + 0xBD3FFFFC, + 0x28034000, + 0x42D4C017, + 0xFC000000, + 0xFC000000, + 0xA4E01B30, + 0xA4E61C00, + 0x84C32190, + 0x97330011, + 0x07E2E056, + 0x22C44086, + 0xA4F4CF00, + 0x07F31047, + 0xFC000000, + 0x20C0C000, + 0x840320A6, + 0x0200488C, + 0x8230E010, + 0x8A30E048, + 0x22D4405C, + 0xA132C550, + 0x06735003, + 0x2A128784, + 0x2A028784, + 0x8604E010, + 0x02005C0B, + 0xFC000000, + 0xBCC00294, + 0x2AB28786, + 0x2AE28407, + 0xBCB00814, + 0x29294000, + 0xC202D702, + 0x0200233B, + 0x82514012, + 0x8A51440A, + 0xA0C2D080, + 0xA112C650, + 0x8604E000, + 0x02005C17, + 0x233AF361, + 0x06734802, + 0xA4E043B0, + 0x22B287FC, + 0xA0D2CA00, + 0x24B4C002, + 0xA4F045C0, + 0xA4E30B30, + 0xA4E44780, + 0xA4E34AE0, + 0x0A32D87E, + 0x8EE3A803, + 0x2CE4C003, + 0x82B4C080, + 0x8AB2C019, + 0x2ABAF361, + 0xBCB00064, + 0xD002C122, + 0xBCC00294, + 0x02002321, + 0xBCB00024, + 0xD002C0C0, + 0x2AC2876C, + 0xA0B2D000, + 0x2AB2875C, + 0x2AE28407, + 0x8EB4A800, + 0x22DAF481, + 0xBCC01514, + 0xC2031702, + 0x2CB34000, + 0x82B36010, + 0x02002314, + 0x8AB2E408, + 0x2ABAF481, + 0x22BAF580, + 0x8CB2E0A6, + 0xFC000000, + 0x2ABAF580, + 0x2A0B98E0, + 0x1800D847, + 0xFC000000, + 0xFC000000, + 0x22C28406, + 0xA4C61C00, + 0x2AC28406, + 0x2B8286E5, + 0x96D4C010, + 0x22C44094, + 0xA1430C00, + 0x22C2879C, + 0xA4C04240, + 0x0200202B, + 0x2AD287B4, + 0x2AC2879C, + 0xA0C2C570, + 0x96D30010, + 0xA0C2C390, + 0x80C360C0, + 0x2AC2875C, + 0x2A1286D4, + 0x2AB28786, + 0xBD400FF4, + 0xA0C39C00, + 0x22E28406, + 0xA4E31C00, + 0x2AE28406, + 0x0200201C, + 0x96C4C010, + 0x2AC287B4, + 0x07D34015, + 0x07E36014, + 0x22BAF4E0, + 0x23428525, + 0x0612EC11, + 0x22F28544, + 0x22B2854C, + 0x06534C02, + 0x83452280, + 0x84B3E0B0, + 0x82F3E0C0, + 0x84B520B0, + 0xA0B2E000, + 0x20F280F5, + 0x9743C0A1, + 0x0643E806, + 0xA5400400, + 0x8402E140, + 0x0200C003, + 0x00001011, + 0xA51043F0, + 0x00002011, + 0xFC000000, + 0xFC000000, + 0xBD400294, + 0x20C0C000, + 0x840320A6, + 0x02004818, + 0x8230E010, + 0x22C28407, + 0x8A30E048, + 0x07E2D003, + 0x22B286E5, + 0xA4C2DC00, + 0x2AC28406, + 0x2B42863C, + 0x22CAE1E1, + 0xA0B34D00, + 0x8EB2E800, + 0x28B30000, + 0x82B30010, + 0x8AB2C408, + 0x2ABAE1E1, + 0x020022C3, + 0xBCB00114, + 0xC202D702, + 0xBCC00024, + 0xC2031702, + 0x180104C7, + 0xFC000000, + 0xFC000000, + 0xBCC00024, + 0xC2031702, + 0x18012307, + 0xFC000000, + 0xFC000000, + 0xBCB00024, + 0xC202D702, + 0x18012C07, + 0xFC000000, + 0xFC000000, + 0x20B0C000, + 0x8402E0A6, + 0x02004BF9, + 0x8230E010, + 0x8A30E048, + 0x22B287FC, + 0xA0B2CA00, + 0x96C2C0E0, + 0xA4C3DC00, + 0xBCB00034, + 0xD002C0C6, + 0xA0B28A80, + 0x02002394, + 0xBCC00064, + 0xD00300B2, + 0xA1839C00, + 0x860626E0, + 0x0200D003, + 0xBD300704, + 0x83362020, + 0x8342A100, + 0xA0D3DC00, + 0x22CAF520, + 0x236ADD42, + 0xA8C360C0, + 0x96C30080, + 0x81932160, + 0x02002003, + 0x80C66150, + 0x87532020, + 0x81702000, + 0xBD6A9B84, + 0x20C6C002, + 0xA1E30BB0, + 0x08378010, + 0x97A78010, + 0xA1E30D50, + 0x96D78010, + 0x21D581A5, + 0x81C520D0, + 0x83B6E040, + 0xA1A30B00, + 0x0000201D, + 0xA1D32000, + 0xA0C31000, + 0x855560D0, + 0x818620D0, + 0x06876C0E, + 0x854520D0, + 0x8134E0D0, + 0x80D6E000, + 0x81A6E0C0, + 0x83B6A030, + 0xA5B00400, + 0x814520C0, + 0x8534E0C0, + 0x8175E0C0, + 0x50D540C0, + 0x020023E8, + 0x20C6C002, + 0xA1E30BB0, + 0x0E0E83E5, + 0x20C6C002, + 0xA1E30BB0, + 0x80C52000, + 0x87A6A010, + 0x20D6C002, + 0x28D30002, + 0x0A36ABFD, + 0x83B6E040, + 0x82C32040, + 0x020023DB, + 0x20C6C002, + 0xA1E30BB0, + 0x855560D0, + 0x818620D0, + 0x0200202E, + 0x854520D0, + 0x8134E0D0, + 0x855560D0, + 0x818620D0, + 0x0200203D, + 0x854520D0, + 0x8134E0D0, + 0x855560D0, + 0x818620D0, + 0x02002047, + 0x854520D0, + 0x8134E0D0, + 0x815560D0, + 0x858620D0, + 0x06876C0E, + 0x814520D0, + 0x8534E0D0, + 0x80D6E000, + 0x81A6E0C0, + 0x83B6A030, + 0xA5B00400, + 0x814520C0, + 0x8534E0C0, + 0x8175E0C0, + 0x50D540C0, + 0x020023BC, + 0x20C6C002, + 0xA1E30BB0, + 0x0E0E83B9, + 0x20C6C002, + 0xA1E30BB0, + 0x80D52000, + 0x87A6A010, + 0x20C6C002, + 0x28C34002, + 0x0A36ABFD, + 0x83B6E040, + 0x82D36040, + 0x020023AF, + 0x20C6C002, + 0xA1E30BB0, + 0x815560D0, + 0x858620D0, + 0x814520D0, + 0x8534E0D0, + 0x80D6E0C0, + 0xFC000000, + 0x81C52000, + 0x20C34002, + 0x28C70002, + 0x83B36040, + 0x83C72040, + 0x87A6A010, + 0x20C6C003, + 0x28C70003, + 0x0A36ABFD, + 0x83B6E080, + 0x83C72080, + 0x0200239B, + 0x20C6C002, + 0xA1E30BB0, + 0x815560D0, + 0x858620D0, + 0x814520D0, + 0x8534E0D0, + 0x81B6E0C0, + 0x81C52000, + 0x87A6A010, + 0x20C6C003, + 0x28C70003, + 0x0A36ABFD, + 0x83B6E080, + 0x83C72080, + 0x0200238C, + 0x20C6C002, + 0xA1E30BB0, + 0x815560D0, + 0x858620D0, + 0x814520D0, + 0x8534E0D0, + 0x81B6E0C0, + 0x81C52000, + 0x87A6A010, + 0x20C6C003, + 0x28C70003, + 0x0A36ABFD, + 0x83B6E080, + 0x83C72080, + 0xFC000000, + 0x20C6C002, + 0x28C70002, + 0x83B6E040, + 0x82C72040, + 0x02002378, + 0x20C6C002, + 0xA1E30BB0, + 0x80D560D0, + 0x96C68020, + 0x51DB40C0, + 0x814520C0, + 0x8534E0C0, + 0x8175E0C0, + 0x0200236F, + 0x20C6C002, + 0xA1E30BB0, + 0x87A6A010, + 0x20C74002, + 0x28C70002, + 0x0A36ABFD, + 0x83D76040, + 0x83C72040, + 0x02002366, + 0x20C6C002, + 0xA1E30BB0, + 0x87A6A010, + 0x20C74003, + 0x28C70003, + 0x0A36ABFD, + 0x83D76080, + 0x83C72080, + 0x0200235D, + 0x20C6C002, + 0xA1E30BB0, + 0x86C6E020, + 0x96D68011, + 0x96D34020, + 0x81B6E0D0, + 0x87A6A010, + 0x20D30001, + 0x28D70001, + 0x0A36ABFD, + 0x82C32020, + 0x83C72020, + 0x02002350, + 0x20C6C002, + 0xA1E30BB0, + 0x87A6A010, + 0x20C6C002, + 0x28C70002, + 0x0A36ABFD, + 0x83B6E040, + 0x83C72040, + 0x02002347, + 0x20C6C002, + 0xA1E30BB0, + 0x20C6C002, + 0x83B6E040, + 0xA0D32100, + 0xA0C32000, + 0x21A70001, + 0x88D6A0D0, + 0x8CC360C0, + 0x28C70001, + 0x0200233C, + 0x20C6C002, + 0xA1E30BB0, + 0x02002005, + 0x80C520C0, + 0x81A361B6, + 0x80C520C0, + 0x81A520D0, + 0x06F76408, + 0xA0D75080, + 0x21C30001, + 0x80C720D0, + 0x28C68001, + 0x0200232F, + 0x20C6C002, + 0xA1E30BB0, + 0x86C02010, + 0xFC000000, + 0x8CC360C1, + 0x80C720C0, + 0x28C68001, + 0x02002327, + 0x20C6C002, + 0xA1E30BB0, + 0x02002005, + 0x81C520C0, + 0x80C361B6, + 0x81C520C0, + 0x80C520D0, + 0x94D041A0, + 0x87A36010, + 0xA0D74880, + 0x21C70001, + 0x94D700D1, + 0x89C361A0, + 0xA1D748C0, + 0x94D681D0, + 0x95C701D0, + 0x21A30001, + 0x88D6A0D8, + 0x8CD361C0, + 0x28D30001, + 0x02002312, + 0x20C6C002, + 0xA1E30BB0, + 0x97C68010, + 0x84D521C0, + 0x80C52000, + 0x855561C0, + 0x818621C0, + 0x854521C0, + 0x8134E1C0, + 0x87E7A010, + 0x21C30001, + 0x29C34001, + 0x0A37ABFD, + 0x82C32020, + 0x82D36020, + 0x86C6E020, + 0x97C68011, + 0x97C70020, + 0x81B6E1C0, + 0x87A6A010, + 0x21C30001, + 0x29C34001, + 0x0A36ABFD, + 0x82C32020, + 0x82D36020, + 0x020022F8, + 0x20C6C002, + 0xA1E30BB0, + 0x97A68010, + 0x86C72020, + 0x80D321A0, + 0x815561A0, + 0x858621A0, + 0x814521A0, + 0x8534E1A0, + 0x87E7A010, + 0x21A30001, + 0x29A34001, + 0x0A37ABFD, + 0x86C32020, + 0x86D36020, + 0x020022E8, + 0x20C6C002, + 0xA1E30BB0, + 0x80C520C0, + 0xFC000000, + 0xFC000000, + 0x20D30000, + 0x86D36010, + 0x28D30000, + 0x020022DF, + 0x20C6C002, + 0xA1E30BB0, + 0x20C70001, + 0xFC000000, + 0xB8C001D0, + 0xFC000000, + 0xB8C00004, + 0x28C70001, + 0x020022D6, + 0x20C6C002, + 0xA1E30BB0, + 0x20D70001, + 0xFC000000, + 0x0E0B42D1, + 0x20C6C002, + 0xA1E30BB0, + 0xB8D001D0, + 0xFC000000, + 0xB8D00004, + 0x28D70001, + 0x0E0B4ACA, + 0xFC000000, + 0xFC000000, + 0x020022C7, + 0xBCDFFFF0, + 0x28D70001, + 0x02002005, + 0x80D361B6, + 0x81C321B6, + 0x80D520D0, + 0x81C520C0, + 0x81D02000, + 0x28070001, + 0x86C6A010, + 0x21A34001, + 0x82D36020, + 0xB9D68000, + 0x0E0B0BFD, + 0x86C32010, + 0xFC000000, + 0xB9D00004, + 0x29D70001, + 0x020022B4, + 0x20C6C002, + 0xA1E30BB0, + 0x97A68010, + 0x20D6C002, + 0x83B6E040, + 0x80C360C0, + 0x41C301A7, + 0xFC000000, + 0xFC000000, + 0x020022AA, + 0x20C6C002, + 0xA1E30BB0, + 0x97A68010, + 0x81C520C0, + 0x20C6C002, + 0x83B6E040, + 0x80C320D0, + 0x51C301A0, + 0xFC000000, + 0xFC000000, + 0x0200229F, + 0x20C6C002, + 0xA1E30BB0, + 0xBC8A9B84, + 0xBC913744, + 0x2A920015, + 0xBC913E84, + 0x2A920025, + 0xBC913FC4, + 0x2A920035, + 0xBC914104, + 0x2A920045, + 0xBC914244, + 0x2A920055, + 0xBC914984, + 0x2A920065, + 0xBC914E84, + 0x2A920075, + 0xBC915244, + 0x2A920085, + 0xBC915744, + 0x2A920095, + 0xBC915984, + 0x2A9200A5, + 0xBC915BC4, + 0x2A9200B5, + 0xBC915E04, + 0x2A9200C5, + 0xBC916144, + 0x2A9200D5, + 0xBC916384, + 0x2A9200E5, + 0xBC916644, + 0x2A9200F5, + 0xBC916704, + 0x2A920105, + 0xBC916B84, + 0x2A920115, + 0xBC916C44, + 0x2A920125, + 0xBC9170C4, + 0x2A920135, + 0xBC917744, + 0x2A920145, + 0xBC917B44, + 0x2A920155, + 0xBC917D84, + 0x2A920165, + 0xBC917FC4, + 0x2A920175, + 0xBC918384, + 0x2A920185, + 0xBC918444, + 0x2A920195, + 0xBC918844, + 0x2A9201A5, + 0xBC918AC4, + 0x2A9201B5, + 0x00002010, + 0xFC000000, + 0xFC000000, + 0x21220003, + 0xA0E4CD00, + 0x0A34802A, + 0xA4A38A80, + 0xBC901004, + 0x82822080, + 0x88822098, + 0x07F4C065, + 0xFC000000, + 0x229AF580, + 0x9E924000, + 0x22B28105, + 0x06524077, + 0xD003C004, + 0x22928105, + 0xA0B24A00, + 0x229AF4F0, + 0x2A028774, + 0x8402E090, + 0x02004802, + 0x2A128774, + 0xBC9AED04, + 0x23428687, + 0x2B228407, + 0x20B240B4, + 0x06054806, + 0xA0950A80, + 0x840260B0, + 0x02004003, + 0x8E956040, + 0x8B526018, + 0x229287FC, + 0x8A926F00, + 0x2B428687, + 0x23128774, + 0x8C9260B0, + 0x2A9287FC, + 0x8692E010, + 0x0A346809, + 0x82926080, + 0xCA95301E, + 0x1000007A, + 0xBD100014, + 0xBCBAE1E0, + 0x18019C07, + 0xFC000000, + 0xFC000000, + 0x8352A120, + 0x829560A0, + 0x834560E0, + 0xBCB000C4, + 0x21124001, + 0x86B2E020, + 0x86926020, + 0x29150001, + 0x0A32DBFC, + 0x87452020, + 0xA1149C00, + 0x860466E0, + 0x0200D003, + 0xBD4006E4, + 0x81446000, + 0x229AECA1, + 0x83726120, + 0xA094DC00, + 0x22BAF520, + 0x236ADD42, + 0xA89260B0, + 0x96924080, + 0x80926160, + 0x80926170, + 0x59524140, + 0x82B2AEC0, + 0xBC9FFFFC, + 0x2802C000, + 0x42B24017, + 0xFC000000, + 0xFC000000, + 0x82B5E040, + 0x86946040, + 0x9712C011, + 0x22B287FC, + 0x234AF441, + 0xA0B2CA00, + 0xA532CD00, + 0x24B50002, + 0xA5225C00, + 0xA5244EE0, + 0x0A32C80D, + 0x2D250003, + 0x82950080, + 0x8A924019, + 0x2A9AF441, + 0xBC900064, + 0xD00240E2, + 0xBCB000A4, + 0xBC900024, + 0xD00240B0, + 0x18019C07, + 0xFC000000, + 0xFC000000, + 0x229287FC, + 0xA0924A00, + 0x96B240E0, + 0xA4B4DC00, + 0x020023F4, + 0xBC900034, + 0xD00240B6, + 0xD003C004, + 0xA094CF60, + 0xA5301560, + 0x86026020, + 0x02004009, + 0x86026040, + 0x02005007, + 0x229287FC, + 0xA0924A00, + 0x96B240E0, + 0xA4B4DC00, + 0xBC900034, + 0xD00240B6, + 0xA094CD00, + 0xBCB00064, + 0xD002C092, + 0x18019C07, + 0xFC000000, + 0xFC000000, + 0x82822000, + 0x18019C07, + 0xFC000000, + 0xFC000000, + 0xBC900024, + 0xC2025702, + 0x18019E47, + 0xFC000000, + 0xFC000000, + 0x228AE4E1, + 0xC2021381, + 0xBC800254, + 0x96820020, + 0x8E822030, + 0xC2021340, + 0xBC9A98A4, + 0xBC8A6604, + 0xFC000000, + 0x20D24001, + 0xFC000000, + 0x0A334012, + 0xBCB91904, + 0x22920015, + 0x96924010, + 0x22A20004, + 0xFC000000, + 0x2092C095, + 0x86A2A010, + 0x0200C006, + 0xFC000000, + 0x00082009, + 0xFC000000, + 0xFC000000, + 0x22A2000C, + 0x2AA20004, + 0x0E1B4BF2, + 0x86D36010, + 0x82822080, + 0x1801BF87, + 0xFC000000, + 0xFC000000, + 0xBCBA7804, + 0xBCE00004, + 0xFC000000, + 0x22A2C066, + 0x2292C006, + 0x0A228013, + 0xA0C29D20, + 0xA0A28500, + 0x94A300A0, + 0x849260A0, + 0x0200D003, + 0x2A92C006, + 0x2A02C006, + 0x22A2C074, + 0xFC000000, + 0x0A329009, + 0x22A2C026, + 0x22C2C046, + 0x84A2A0C0, + 0x8402A090, + 0x02009004, + 0x2292C07C, + 0xD202400E, + 0x2A02C074, + 0x82E3A010, + 0x8603A040, + 0x0200EBE9, + 0x82B2E100, + 0xFC000000, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0x22A50035, + 0x22B50006, + 0x22950025, + 0x0A32800C, + 0x06F29C03, + 0xA0A29E00, + 0x96A28030, + 0x06F25C03, + 0xA0925E00, + 0x96924030, + 0x80A2E0A0, + 0x840260A0, + 0x0200D003, + 0x2AA50006, + 0x2A950006, + 0x83452080, + 0x8334E010, + 0xFC000000, + 0x0E5CDBEE, + 0xFC000000, + 0xFC000000, + 0x14000000, + 0xBD300004, + 0xBD493004, + 0xBC901D14, + 0xC2025702, + 0xBC902414, + 0xC2025702, + 0x14000000, + 0xFC000000, + 0xFC000000, + 0xBCEAE204, + 0xBCAAED94, + 0x22CAED90, + 0xFC000000, + 0x0A330006, + 0xFC000000, + 0x10000764, + 0xBC81D804, + 0x2693F342, + 0x28C28000, + 0x1801D5C7, + 0xFC000000, + 0xFC000000, + 0xBCD00014, + 0xC2035170, + 0xC6D01170, + 0xFC000000, + 0x06035BFC, + 0x2763F382, + 0xBD500024, + 0x82D3A000, + 0x84926160, + 0x82926020, + 0x840260C0, + 0x0200E005, + 0x80E5A0C0, + 0x83732000, + 0x82C26000, + 0x26E3F302, + 0x2EE3F3C2, + 0xBC9FFFFC, + 0xBCEAF544, + 0x58D580C0, + 0x28038000, + 0x42E24010, + 0x2A0A9810, + 0xFC000000, + 0xFC000000, + 0x20938000, + 0xFC000000, + 0x0A3243FE, + 0x8575E0C0, + 0x2693F3C2, + 0x2E93F382, + 0x0A35E006, + 0x80D360C0, + 0x82C5E000, + 0x020023EE, + 0x83626000, + 0x80E260C0, + 0x00002008, + 0xC2055170, + 0xFC000000, + 0x81502000, + 0x81602090, + 0x80C62000, + 0xBDB00004, + 0x0A330016, + 0xBD501FC4, + 0x84032150, + 0x0200C003, + 0x02001008, + 0x81532000, + 0x84D32150, + 0x86036600, + 0x02008804, + 0x82D36600, + 0x84D560D0, + 0x8B536038, + 0x84C32150, + 0x82D56040, + 0x81502000, + 0xA5535800, + 0xA55002F0, + 0xA55002C0, + 0x83B6E010, + 0x020023ED, + 0x29558001, + 0x8365A020, + 0x86C5A020, + 0xA55042C0, + 0x29530001, + 0x86C6A100, + 0x80D02090, + 0x8375E100, + 0x52D30100, + 0x80C32000, + 0x00002010, + 0x83862100, + 0x87532020, + 0x9683C161, + 0xA1720400, + 0xBC8002E4, + 0x813220F6, + 0xBC800284, + 0x814220F6, + 0x269BC185, + 0xA0825080, + 0xA4825080, + 0x2494C001, + 0xA1225080, + 0xA5225080, + 0x26CBC194, + 0xBD9A6804, + 0xA595C450, + 0x84022120, + 0x020040F8, + 0x10000912, + 0xBD01F140, + 0xBC9000D4, + 0x24E50001, + 0xA0839080, + 0xA4839080, + 0x0A3240DA, + 0xBC9A7004, + 0x060328FE, + 0xA495C450, + 0x26CBC0C6, + 0xAAE22080, + 0x815320E0, + 0xBD1000D4, + 0x22EAF520, + 0x22CADD42, + 0xA8E360E0, + 0x96E38080, + 0xA4D44AE0, + 0x2AD24006, + 0x22DAECA1, + 0x82D36190, + 0x8B136078, + 0x80D3A0C0, + 0x80D36110, + 0xA0E35180, + 0xA4E35180, + 0x96D34081, + 0xA4E35100, + 0x96D34081, + 0xA4E35080, + 0x2AE24026, + 0x52954080, + 0xBC904004, + 0x82822010, + 0x88D22098, + 0x268BC046, + 0x82822020, + 0xA0935080, + 0xA4935080, + 0x2C950001, + 0x534A0020, + 0x268BC106, + 0xAA94A080, + 0x80822090, + 0xBC988004, + 0xA495C470, + 0x82926020, + 0x43920087, + 0xFC000000, + 0xFC000000, + 0x22864015, + 0xA1521080, + 0xA5521080, + 0x2286400C, + 0x81122110, + 0x22864006, + 0x0A3560BB, + 0xA1620B80, + 0x23864026, + 0x860566E0, + 0x0200D003, + 0xBC8006E4, + 0x80856000, + 0xA0E61C00, + 0x22DAF520, + 0xFC000000, + 0xA8D3A0D0, + 0x96D34080, + 0xFC000000, + 0x80C360C0, + 0x80D32110, + 0xFC000000, + 0x22CAF550, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A330007, + 0xFC000000, + 0xBCC00024, + 0xC2031702, + 0x180202C7, + 0xFC000000, + 0xFC000000, + 0x2A1AF550, + 0xFC000000, + 0x40934087, + 0xFC000000, + 0xFC000000, + 0xBC988004, + 0xA495C470, + 0x82C22020, + 0x228AF242, + 0xCC9200C2, + 0xBCCAB404, + 0xA4C5C430, + 0xBDA000D4, + 0xBCD000B4, + 0x20830003, + 0xBCE00284, + 0x80E3A170, + 0xA4838C60, + 0xA4968A00, + 0xA49348D0, + 0x28830003, + 0xCEC2C082, + 0xFC000000, + 0x18020C07, + 0xFC000000, + 0xFC000000, + 0x22CB6F03, + 0xFC000000, + 0x060348C8, + 0x06336069, + 0x2A0B6F42, + 0x2A0AF550, + 0xA0E34C50, + 0x96C38080, + 0x82856040, + 0xA0961C00, + 0xA4939F00, + 0x06E34802, + 0xA49043E0, + 0x2B1306C5, + 0x2A0306D4, + 0x2B630774, + 0x2B730634, + 0x28888003, + 0xBC802614, + 0xC2021702, + 0xBC801004, + 0x8220A082, + 0x8820A08A, + 0xBC904004, + 0x8284A010, + 0x88822098, + 0x269BC066, + 0xA0C21080, + 0xA4C21080, + 0x2CC4C001, + 0x82826020, + 0x82A2A010, + 0x8602A100, + 0x02008026, + 0x5B3A0020, + 0xBC9AF5C4, + 0xBC8FFFFC, + 0x42920017, + 0xFC000000, + 0xFC000000, + 0x228AF550, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x18021607, + 0xFC000000, + 0xFC000000, + 0x2A1AF550, + 0x269BC006, + 0x2484C001, + 0xBC870018, + 0x28864002, + 0x53924047, + 0xFC000000, + 0xFC000000, + 0x26CBC194, + 0x269BC006, + 0x24850001, + 0x06331806, + 0xBC850008, + 0x28864002, + 0x53924047, + 0xFC000000, + 0xFC000000, + 0x0200233D, + 0x2A0AF550, + 0x86A2A100, + 0x0200133A, + 0x533A0020, + 0x0A328020, + 0xFC000000, + 0x228AF550, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x0A320007, + 0xFC000000, + 0xBC800024, + 0xC2021702, + 0x18021EC7, + 0xFC000000, + 0xFC000000, + 0x2A1AF550, + 0x268BC006, + 0x2494C001, + 0xBC970018, + 0x28964002, + 0x53920047, + 0xFC000000, + 0xFC000000, + 0x26ABC194, + 0x269BC006, + 0x24850001, + 0x06329806, + 0xBC850008, + 0x28864002, + 0x53924047, + 0xFC000000, + 0xFC000000, + 0x2A0AF550, + 0xBCA00004, + 0x1801EC47, + 0xFC000000, + 0xFC000000, + 0x80802000, + 0x100808FE, + 0x80962000, + 0xBD100374, + 0x020013A7, + 0xCB15601C, + 0xBC9002A4, + 0x80C260F6, + 0x269BC086, + 0x82926020, + 0x42CA4027, + 0xFC000000, + 0xFC000000, + 0x24930001, + 0xA0C25080, + 0xA4C25080, + 0x840220C0, + 0x02006BCC, + 0xBC800384, + 0xCA85601C, + 0xBCA00004, + 0xBC800024, + 0xC2021702, + 0x1801EC47, + 0xFC000000, + 0xFC000000, + 0x02002391, + 0xBC800034, + 0xD0020186, + 0xBC800304, + 0x809220F6, + 0x268BC0A6, + 0x82822020, + 0x429A0027, + 0xFC000000, + 0xFC000000, + 0x24924001, + 0xA0825080, + 0xA4825080, + 0x84022120, + 0x020043B5, + 0x020022FD, + 0xFC000000, + 0xFC000000, + 0xAAE22200, + 0x811320E0, + 0xBD5000D4, + 0x22EAF520, + 0x22CADD42, + 0xA8E360E0, + 0x97638080, + 0xA4D54AE0, + 0x2AD24026, + 0x22DAECA1, + 0x82D36190, + 0x8AE36078, + 0x80D5A0C0, + 0x815360E0, + 0xA0D55180, + 0xA4D55180, + 0x97554081, + 0xA4D55100, + 0x97554081, + 0xA4D55080, + 0x2AD240C6, + 0x52944200, + 0xBC904004, + 0x82822010, + 0x88D22098, + 0x268BC046, + 0x82922020, + 0xA0835080, + 0xA4835080, + 0x2C850001, + 0x534A4020, + 0x268BC106, + 0xAA94A200, + 0x80D22090, + 0xBC888004, + 0xA485C470, + 0x82922020, + 0x43934207, + 0xFC000000, + 0xFC000000, + 0x22864075, + 0xA1521080, + 0xA5521080, + 0x22D64085, + 0xA0835080, + 0xA4835080, + 0x811220E0, + 0x02002307, + 0x2366400C, + 0x23864026, + 0xFC000000, + 0xFC000000, + 0x02000331, + 0xFC000000, + 0x07F24006, + 0xA0C25C00, + 0xA4C68AE0, + 0x14000000, + 0xBC800034, + 0xD00200C6, + 0xA0825C00, + 0xBCEAE204, + 0x229AED90, + 0x8E822801, + 0x28838095, + 0x82C26020, + 0xFC000000, + 0x06430804, + 0x10000764, + 0xBC8243C4, + 0x2693F342, + 0x14000000, + 0x2ACAED90, + 0xFC000000, + 0x2683F642, + 0x8A022FF2, + 0x02005811, + 0x268C7D42, + 0xFC000000, + 0x06020002, + 0x07020BFA, + 0x2E0C7D42, + 0x96D240E0, + 0xBC900034, + 0xD00240D2, + 0x07020008, + 0xA0D21C10, + 0x228AF520, + 0x229AB742, + 0xA8836080, + 0x00002010, + 0x96820080, + 0x80922090, + 0xBCD00004, + 0x00001010, + 0xBC900004, + 0xA0920A00, + 0x969240E0, + 0xA4921C00, + 0x00002010, + 0xBC800034, + 0xD0020096, + 0x228AF430, + 0xFC000000, + 0x0A320006, + 0xBC800024, + 0xC2021702, + 0x18024B87, + 0xFC000000, + 0xFC000000, + 0xBC800014, + 0x2A8AF430, + 0xBC800054, + 0xC20211B0, + 0xC68011B0, + 0xFC000000, + 0x06020006, + 0xFC000000, + 0xFC000000, + 0x18025086, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00000010, + 0x2A0AF430, + 0xFC000000, + 0xFC000000, + 0x00002010, + 0xBC800024, + 0xC20211B0, + 0xBCC00074, + 0x86022400, + 0x0200E810, + 0x8CC32082, + 0x8CB2E0B2, + 0x0A131005, + 0x86822400, + 0x42BA4400, + 0x02001006, + 0x86C32010, + 0x82C32070, + 0x42BA4407, + 0xFC000000, + 0xFC000000, + 0x86022400, + 0x0200E3F6, + 0x82B2E400, + 0x82926400, + 0x42BA4407, + 0xFC000000, + 0xFC000000, + 0x809020C6, + 0x808020B6, + 0x86026800, + 0x0200C807, + 0x86926800, + 0x528A8800, + 0x86026800, + 0x0200E3FD, + 0x82822800, + 0x82A2A800, + 0xFC000000, + 0x508A8097, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0x00001010, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, + 0xFC000000, +}; +char *rdpa_version_fw_d = "$Change: 255901 $"; diff --git a/arch/arm/mach-bcmbca/bcm63158/Kconfig b/arch/arm/mach-bcmbca/bcm63158/Kconfig new file mode 100644 index 0000000000..1829394420 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63158/Kconfig @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM63158 + +config TARGET_BCM963158 + bool "Broadcom 63158 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm63158" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x523 + +config BCMBCA_DDR4_DEF_MCBSEL + hex "default DDR4 mcb selector value" + default 0x141727 +endif + +config RSVD_USE_MAX_FROM_ENV_AND_DT + bool "RSVD will use max value from env and DT" + default y + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm63158/Makefile b/arch/arm/mach-bcmbca/bcm63158/Makefile new file mode 100644 index 0000000000..e7f9f65ffb --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63158/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +obj-y += mmu_table.o +obj-y += cpu.o diff --git a/arch/arm/mach-bcmbca/bcm63158/cpu.c b/arch/arm/mach-bcmbca/bcm63158/cpu.c new file mode 100644 index 0000000000..2d7c8e429a --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63158/cpu.c @@ -0,0 +1,290 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#endif +#if defined(CONFIG_BCMBCA_DDRC) +#include "spl_ddrinit.h" +#endif +#include "bcmbca-dtsetup.h" + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + +static void enable_ts0_counter(void) +{ + BIUCFG->TSO_CNTCR |= 1; +} + +#elif defined(CONFIG_TPL_BUILD) +static void cci500_enable(void) +{ + /*Enable access from E2 and below */ + CCI500->secr_acc |= SECURE_ACCESS_UNSECURE_ENABLE; +} + +static void enable_ns_access(void) +{ + BIUCFG->bac.bac_permission |= 0x33; // Linux access to BAC_CPU_THERM_TEMP +} + +static void setup_ubus_rangechk(void) +{ + /* Fix the default of RC0 to only enable lower 2G memory for ubus master */ + UBUS4_RANGE_CHK_SETUP->cfg[0].base = 0x13; + /* setup the second range check for the top DDR region */ + if (tplparams->ddr_size > 2048) { + UBUS4_RANGE_CHK_SETUP->cfg[1].control = 0x1f0; + UBUS4_RANGE_CHK_SETUP->cfg[1].srcpid[0] = 0xffffffff; + UBUS4_RANGE_CHK_SETUP->cfg[1].seclev = 0xffffffff; + /* enable ubus maser to access the upper 2GB */ + UBUS4_RANGE_CHK_SETUP->cfg[1].base = 0x13; + UBUS4_RANGE_CHK_SETUP->cfg[1].base_up = 0x1; + } +} + +#endif + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + printf("Chip ID: BCM%X_%X\n",chipId,revId); +} +#endif + +#if defined(CONFIG_BCMBCA_PMC) +static void wait_biu_pll_lock(int bpcmaddr) +{ + PLL_STAT_REG stat_reg; + + do { + ReadBPCMRegister(bpcmaddr, PLLBPCMRegOffset(stat), + &stat_reg.Reg32); + } while (stat_reg.Bits.lock == 0); + + return; +} + +#define PLL_GET_CHANNEL_OFFSET(channel) (PLLBPCMRegOffset(ch01_cfg) + ((channel/2)*sizeof(PLL_CHCFG_REG)>>2)) +void set_biu_pll_post_divider(int bpcmaddr, int channel, int mdiv) +{ + PLL_CHCFG_REG pll_ch_cfg; + int offset, mdiv_rb; + + if (channel < 0 || channel > 5) + return; + + offset = PLL_GET_CHANNEL_OFFSET(channel); + + ReadBPCMRegister(bpcmaddr, offset, &pll_ch_cfg.Reg32); + mdiv_rb = channel & 1 ? pll_ch_cfg.Bits.mdiv1 : pll_ch_cfg.Bits.mdiv0; + if (mdiv_rb != mdiv) { + if (channel & 1) + pll_ch_cfg.Bits.mdiv1 = mdiv; + else + pll_ch_cfg.Bits.mdiv0 = mdiv; + WriteBPCMRegister(bpcmaddr, offset, pll_ch_cfg.Reg32); + udelay(1000); + if (channel & 1) + pll_ch_cfg.Bits.mdiv_override1 = 1; + else + pll_ch_cfg.Bits.mdiv_override0 = 1; + WriteBPCMRegister(bpcmaddr, offset, pll_ch_cfg.Reg32); + udelay(10000); + } + + return; +} + +#if defined(CONFIG_TPL_BUILD) +#define CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV (17) +static void disable_xtal_clk(void) +{ + uint32_t data; + int ret; + + ret = ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(xtal_control), &data); + + data |= (0x1 << CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV); + + ret |= WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(xtal_control), data); + + if (ret) + printf("Failed to disable xtal clk\n"); +} +#endif + +void boost_cpu_clock(void) +{ + printf("set cpu freq to 1675MHz\n"); + set_cpu_freq(1675); + + disable_xtal_clk(); +} + +int set_cpu_freq(int freqMHz) +{ + PLL_CTRL_REG ctrl_reg; + PLL_NDIV_REG ndiv_reg; + PLL_PDIV_REG pdiv_reg; + int mdiv = 2; + int ndiv; + + /* cpufreq = Fvco/mdiv = ndiv*50MHz/mdiv */ + /* For clock below the nominal frequency, we use post divider mdiv = 2 + cpufreq = ndiv*50MHz/2 where ndiv = 22..67 for 550MHz, 425MHz.. 1675 + For overclock, we use post divider mdiv=1 in order to keep vco frequency low + cpufreq = ndiv*50MHz/1 where ndiv = 34 .. 44 for 1700MHz, 1750MHz.. 2200MHz */ + + if (freqMHz < 550 || freqMHz > 1675) { + printf("%dMHz is not supported\n", freqMHz); + return -1; + } + + if (freqMHz > 1675) + mdiv = 1; + ndiv = (mdiv * freqMHz) / 50; + + /* round freqMHz to the factor of 50/25MHz */ + freqMHz = (50 * ndiv) / mdiv; + + /* switch to bypass clock for cpu clock change first */ + ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), + &ctrl_reg.Reg32); + ctrl_reg.Bits.byp_wait = 1; + WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), + ctrl_reg.Reg32); + + /* assert pll reset */ + ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), + &ctrl_reg.Reg32); + ctrl_reg.Bits.master_reset = 1; + WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), + ctrl_reg.Reg32); + + /* change vco pll frequency */ + ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(pdiv), + &pdiv_reg.Reg32); + pdiv_reg.Bits.ndiv_pdiv_override = 1; + WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(pdiv), + pdiv_reg.Reg32); + + ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(ndiv), + &ndiv_reg.Reg32); + ndiv_reg.Bits.ndiv_int = ndiv; + WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(ndiv), + ndiv_reg.Reg32); + + /* de-assert pll reset */ + ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), + &ctrl_reg.Reg32); + ctrl_reg.Bits.master_reset = 0; + WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), + ctrl_reg.Reg32); + + /* wait for pll to lock */ + wait_biu_pll_lock(PMB_ADDR_BIU_PLL); + + /* set the post divider */ + set_biu_pll_post_divider(PMB_ADDR_BIU_PLL, 0, mdiv); + + /* switch back to VCO PLL clock */ + ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), + &ctrl_reg.Reg32); + ctrl_reg.Bits.byp_wait = 0; + WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), + ctrl_reg.Reg32); + + return freqMHz; +} +#endif + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + enable_ts0_counter(); +#if defined(CONFIG_BCMBCA_DDRC) + spl_ddrinit_prepare(); + /* enable unalgined access */ + set_sctlr(get_sctlr() & ~CR_A); +#endif +#endif +#if defined(CONFIG_TPL_BUILD) + enable_ns_access(); + setup_ubus_rangechk(); + cci500_enable(); +#endif + return 0; +} + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_EMMC) + return BOOT_DEVICE_MMC1; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +int get_nr_cpus() +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + int nr_cpus=QUAD_CPUS; + + if(chipId == DUAL_CORE_63152) + nr_cpus=DUAL_CPUS; + + return nr_cpus; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + uint32_t cpu, nr_cpus = QUAD_CPUS; + ARM_CONTROL_REG ctrl_reg; + uint64_t rvbar = vector; + + nr_cpus = get_nr_cpus(); + + printf("boot secondary cpu from 0x%lx\n", vector); + + cpu = 1; + while (cpu < nr_cpus) { + int stat; + + BIUCFG->cluster[0].rvbar_addr[cpu] = rvbar; + stat = PowerOnDevice(PMB_ADDR_ORION_CPU0 + cpu); + if (stat != kPMC_NO_ERROR) + printf("failed to power on secondary cpu %d - sts %d\n", cpu, stat); + + stat = ReadBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), &ctrl_reg.Reg32); + ctrl_reg.Bits.cpu_reset_n &= ~(0x1 << cpu); + stat |= WriteBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), ctrl_reg.Reg32); + if (stat != kPMC_NO_ERROR) + printf("failed to boot secondary cpu %d - sts %d\n", cpu, stat); + cpu++; + } + + return; +} +#endif diff --git a/arch/arm/mach-bcmbca/bcm63158/mmu_table.c b/arch/arm/mach-bcmbca/bcm63158/mmu_table.c new file mode 100644 index 0000000000..aa54718de2 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63158/mmu_table.c @@ -0,0 +1,152 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include + +static struct mm_region broadcom_bcm963158_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* DDR memory. Enable the maximum 4GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 2UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + { + .virt = 0x100000000UL, + .phys = 0x100000000UL, + .size = 2UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* MEMC and DDRY PHY control registers */ + { + .virt = 0x80180000UL, + .phys = 0x80180000UL, + .size = 0x40000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* LMEM for bootrom runtime */ + { + .virt = CONFIG_SYS_INIT_RAM_ADDR, + .phys = CONFIG_SYS_INIT_RAM_ADDR, + .size = CONFIG_SYS_INIT_RAM_SIZE, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#else + /* DDR entries for cached memory, total size is a placehold + and will be filled in at run time. MUST be first entry */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 1UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* CCI-500 */ + { + .virt = 0x81100000, + .phys = 0x81100000, + .size = 0x91000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* BIUCFG */ + { + .virt = 0x81060000, + .phys = 0x81060000, + .size = 0x3000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* PMC */ + { + .virt = 0x80200000, + .phys = 0x80200000, + .size = 0x81000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* USB */ + { + .virt = 0x8000C000UL, + .phys = 0x8000C000UL, + .size = 0x3000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#endif + { + /* SoC peripheral */ + .virt = 0xff800000UL, + .phys = 0xff800000UL, + .size = 0x100000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* System port and Switch Core */ + { + .virt = 0x80400000UL, + .phys = 0x80400000UL, + .size = 0x100000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* GIC */ + { + .virt = 0x81001000UL, + .phys = 0x81001000UL, + .size = 0x7000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* UBUS4 Coherency Port */ + { + .virt = 0x810A0000, + .phys = 0x810A0000, + .size = 0x1000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm963158_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm63178/Kconfig b/arch/arm/mach-bcmbca/bcm63178/Kconfig new file mode 100644 index 0000000000..b36c07b3ed --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63178/Kconfig @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM63178 + +config TARGET_BCM963178 + bool "Broadcom 63178 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm63178" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x20001603 +endif + +config TPL_MAX_SIZE + default 1048576 + +config RSVD_USE_MAX_FROM_ENV_AND_DT + bool "RSVD will use max value from env and DT" + default y + +config BCMBCA_LDO_TRIM + bool "Support LDO Trim" + default y + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm63178/Makefile b/arch/arm/mach-bcmbca/bcm63178/Makefile new file mode 100644 index 0000000000..e80bcb13a3 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63178/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +obj-y += cpu.o +obj-y += mmu_table.o diff --git a/arch/arm/mach-bcmbca/bcm63178/cpu.c b/arch/arm/mach-bcmbca/bcm63178/cpu.c new file mode 100644 index 0000000000..61b3bf11d6 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63178/cpu.c @@ -0,0 +1,116 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#endif + +#if defined(CONFIG_TPL_BUILD) +static void enable_ns_access(void) +{ + BIUCFG->bac.bac_permission |= 0x33; // Linux access to BAC_CPU_THERM_TEMP +} +/*this function is used to turn on CCI from secure mode + * it also turns snooping enable for S5 CPU interface*/ +static void cci500_enable(void) +{ + /*Enable access from E2 and below */ + CCI500->secr_acc |= SECURE_ACCESS_UNSECURE_ENABLE; +} +#endif + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + printf("Chip ID: BCM%X_%X\n",chipId,revId); +} +#endif + +#if defined(CONFIG_BCMBCA_PMC) + +void boost_cpu_clock(void) +{ + printf("set cpu freq to 1500MHz\n"); + set_cpu_freq(1500); + pll_ch_freq_set(PMB_ADDR_BIU_PLL, 1, 3000/600); // raise ACEBIU clock rate to 600 MHz +} + +int set_cpu_freq(int freqMHz) +{ + int mdiv; + + if( freqMHz > 1500 || freqMHz < 300 ) + { + printf("%dMHz is not supported\n", freqMHz); + return -1; + } + + /* VCO at 3GHz, mdiv = Fvco/target frequency */ + mdiv = 3000/freqMHz; + + pll_ch_freq_set(PMB_ADDR_BIU_PLL, 0, mdiv); + + return 3000/mdiv; +} +#endif + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NOR) + return BOOT_DEVICE_NOR; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + u32 frq = COUNTER_FREQUENCY; + + spl_ddrinit_prepare(); + + // set arch timer frequency + asm volatile("mcr p15, 0, %0, c14, c0, 0" : : "r" (frq)); + // enable system timer + BIUCFG->TSO_CNTCR |= 1; + + /* force axi write reply to workaround wifi memory write ordering issue */ + ubus_master_cpu_enable_axi_write_cache(0); + /* enable unalgined access */ + set_cr(get_cr() & ~CR_A); +#endif + +#if defined(CONFIG_TPL_BUILD) + cci500_enable(); + enable_ns_access(); +#endif + + return 0; +} + +void arch_cpu_deinit() +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* restore axi write cache when we spl does not need to use wifi memory */ + ubus_master_cpu_enable_axi_write_cache(1); +#endif +} diff --git a/arch/arm/mach-bcmbca/bcm63178/mmu_table.c b/arch/arm/mach-bcmbca/bcm63178/mmu_table.c new file mode 100644 index 0000000000..76dfcb1f86 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm63178/mmu_table.c @@ -0,0 +1,125 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include "mmu_map_v7.h" + +static struct mm_region broadcom_bcm963178_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) +#if !defined(CONFIG_TPL_BUILD) + /* SPL table */ + /* DDR memory. Enable the maximum 2GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000, + .phys = 0x00000000, + .size = SZ_2G, + .attrs = SECTION_ATTR_DEVICE, + }, + /* PSRAM for SPL runtime */ + + { + .virt = 0x84200000, + .phys = 0x84200000, + .size = SZ_1M, + .attrs = SECTION_ATTR_CACHED_MEM, + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = SECTION_ATTR_DEVICE, + }, +#else + /* TPL table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif +#else + /* u-boot table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + { + /* CCI 500 */ + .virt = 0x81100000, + .phys = 0x81100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SWITCH SYSPORT */ + .virt = 0x80400000, + .phys = 0x80400000, + .size = SZ_2M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* BIU */ + .virt = 0x81000000, + .phys = 0x81000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* UBUS */ + .virt = 0x83000000, + .phys = 0x83000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* USB (includes other blocks in the 1M window) */ + .virt = 0x8000c000, + .phys = 0x8000c000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif + { + /* PMC */ + .virt = 0x80200000, + .phys = 0x80200000, + .size = SZ_2M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* MEMC PHY register */ + .virt = 0x80100000, + .phys = 0x80100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SoC peripheral */ + .virt = 0xff800000, + .phys = 0xff800000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* BLUT */ + .virt = 0xfff00000, + .phys = 0xfff00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm963178_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm6756/Kconfig b/arch/arm/mach-bcmbca/bcm6756/Kconfig new file mode 100644 index 0000000000..2215eed4e5 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6756/Kconfig @@ -0,0 +1,38 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM6756 + +config TARGET_BCM96756 + bool "Broadcom 47622 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm6756" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x00001607 + +config BCMBCA_DDR4_DEF_MCBSEL + hex "default DDR4 mcb selector value" + default 0x101607 +endif + +config TPL_MAX_SIZE + default 1048576 + +config RSVD_USE_MAX_FROM_ENV_AND_DT + bool "RSVD will use max value from env and DT" + default y + +config BCMBCA_LDO_TRIM + bool "Support LDO Trim" + default y + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm6756/Makefile b/arch/arm/mach-bcmbca/bcm6756/Makefile new file mode 100644 index 0000000000..29dad125c5 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6756/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +obj-y += cpu.o +obj-y += mmu_table.o \ No newline at end of file diff --git a/arch/arm/mach-bcmbca/bcm6756/cpu.c b/arch/arm/mach-bcmbca/bcm6756/cpu.c new file mode 100644 index 0000000000..b60aac79f2 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6756/cpu.c @@ -0,0 +1,161 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#endif + +#if defined(CONFIG_TPL_BUILD) +static void enable_ns_access(void) +{ + BIUCFG->bac.bac_permission |= 0x33; // Linux access to BAC_CPU_THERM_TEMP +} + +/*this function is used to turn on CCI from secure mode +* * it also turns snooping enable for S5 CPU interface*/ +static void cci500_enable(void) +{ + /*Enable access from E2 and below */ + CCI500->secr_acc |= SECURE_ACCESS_UNSECURE_ENABLE; +} +#endif + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + printf("Chip ID: BCM%X_%X\n",chipId,revId); +} +#endif + +#if defined(CONFIG_BCMBCA_PMC) + +void boost_cpu_clock(void) +{ + printf("set cpu freq to 1700MHz\n"); + set_cpu_freq(1700); + pll_ch_freq_set(PMB_ADDR_BIU_PLL, 1, 3000/600); // raise ACEBIU clock rate to 600 MHz +} + +int set_cpu_freq(int freqMHz) +{ + int mdiv; + + if( freqMHz > 1700 || freqMHz < 485 ) + { + printf("%dMHz is not supported\n", freqMHz); + return -1; + } + + /* VCO at 3.4GHz, mdiv = Fvco/target frequency */ + mdiv = 3400/freqMHz; + + pll_ch_freq_set(PMB_ADDR_BIU_PLL, 0, mdiv); + + return 3400/mdiv; +} +#endif + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_EMMC) + return BOOT_DEVICE_MMC1; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + + u32 frq = COUNTER_FREQUENCY; + + spl_ddrinit_prepare(); + + /* set arch timer frequency */ + asm volatile("mcr p15, 0, %0, c14, c0, 0" : : "r" (frq)); + /* enable system timer */ + BIUCFG->TSO_CNTCR |= 1; + + /* enable unalgined access */ + set_cr(get_cr() & ~CR_A); +#endif + +#if defined(CONFIG_TPL_BUILD) + enable_ns_access(); + cci500_enable(); +#endif + + + return 0; +} + +void arch_cpu_deinit() +{ +} + +int get_nr_cpus() +{ + uint32_t nr_cpus; + + if (bcm_otp_get_nr_cpus(&nr_cpus)) { + printf("Error: failed to read cpu core from OTP\n"); + nr_cpus = 4; + } else { + if (nr_cpus >= 0 && nr_cpus <= 4) + nr_cpus = 4; + else + nr_cpus = 8 - nr_cpus; + } + + return nr_cpus; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + uint32_t cpu = 1; + uint32_t nr_cpus = get_nr_cpus(); + ARM_CONTROL_REG ctrl_reg; + + printf("boot secondary cpu from 0x%lx\n", vector); + + *(volatile uint32_t*)(BOOTLUT_BASE+0x20) = vector; + + while (cpu < nr_cpus) { + int stat; + + stat = PowerOnDevice(PMB_ADDR_ORION_CPU0 + cpu); + if (stat != kPMC_NO_ERROR) + printf("failed to power on secondary cpu %d - sts %d\n", cpu, stat); + + stat = ReadBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), &ctrl_reg.Reg32); + ctrl_reg.Bits.cpu_reset_n &= ~(0x1 << cpu); + stat |= WriteBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), ctrl_reg.Reg32); + if (stat != kPMC_NO_ERROR) + printf("failed to boot secondary cpu %d - sts %d\n", cpu, stat); + + cpu++; + } + + return; +} +#endif diff --git a/arch/arm/mach-bcmbca/bcm6756/mmu_table.c b/arch/arm/mach-bcmbca/bcm6756/mmu_table.c new file mode 100644 index 0000000000..fd1a21d841 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6756/mmu_table.c @@ -0,0 +1,125 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include "mmu_map_v7.h" + +static struct mm_region broadcom_bcm96756_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) +#if !defined(CONFIG_TPL_BUILD) + /* SPL table */ + /* DDR memory. Enable the maximum 2GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000, + .phys = 0x00000000, + .size = SZ_2G, + .attrs = SECTION_ATTR_DEVICE, + }, + /* PSRAM for SPL runtime */ + + { + .virt = 0x85200000, + .phys = 0x85200000, + .size = SZ_1M, + .attrs = SECTION_ATTR_CACHED_MEM, + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = SECTION_ATTR_DEVICE, + }, +#else + /* TPL table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif +#else + /* u-boot table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + { + /* CCI 500 */ + .virt = 0x81100000, + .phys = 0x81100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SYSPORT 0 and 1 */ + .virt = 0x80400000, + .phys = 0x80400000, + .size = SZ_2M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* BIU */ + .virt = 0x81000000, + .phys = 0x81000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* UBUS */ + .virt = 0x83000000, + .phys = 0x83000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* USB (includes other blocks in the 1M window) */ + .virt = 0x8000c000, + .phys = 0x8000c000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif + { + /* PMC */ + .virt = 0x80200000, + .phys = 0x80200000, + .size = SZ_2M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* MEMC PHY register */ + .virt = 0x80100000, + .phys = 0x80100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SoC peripheral */ + .virt = 0xff800000, + .phys = 0xff800000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* BLUT */ + .virt = 0xfff00000, + .phys = 0xfff00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm96756_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm6846/Kconfig b/arch/arm/mach-bcmbca/bcm6846/Kconfig new file mode 100644 index 0000000000..b22c710545 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6846/Kconfig @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM6846 + +config TARGET_BCM96846 + bool "Broadcom 6846 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm6846" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default mcb selector value" + default 0x527 +endif + +config TPL_MAX_SIZE + default 1048576 + +source "board/broadcom/bcmbca/Kconfig" + +endif + diff --git a/arch/arm/mach-bcmbca/bcm6846/Makefile b/arch/arm/mach-bcmbca/bcm6846/Makefile new file mode 100644 index 0000000000..5567c2c89e --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6846/Makefile @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +EXTRA_CFLAGS += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/pmc + +obj-y += cpu.o +obj-y += mmu_table.o + diff --git a/arch/arm/mach-bcmbca/bcm6846/cpu.c b/arch/arm/mach-bcmbca/bcm6846/cpu.c new file mode 100644 index 0000000000..ee0671efdb --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6846/cpu.c @@ -0,0 +1,249 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#include "clk_rst.h" +#endif + +#if defined(CONFIG_TPL_BUILD) +static void cci400_enable(void) +{ + CCI400->secr_acc |= SECURE_ACCESS_UNSECURE_ENABLE; +} + +static void enable_ns_access(void) +{ + BIUCFG->aux.permission |= 0xff; +} +#endif + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) +static void swrw(unsigned int ps, unsigned int reg, unsigned int val) +{ + unsigned int cmd = 0; + unsigned int cmd1 = 0; + unsigned int reg0 = 0; + + PROCMON->SSBMaster.control = SWR_EN; + + if (reg == 0) { + /* no need read reg0 in case that we write to it , we know wal :) */ + reg0 = val; + } else { + /* read reg0 */ + cmd1 = SWR_READ_CMD_P | SET_ADDR(ps, 0); + PROCMON->SSBMaster.control = cmd1; + SR_TEST(1) + reg0 = PROCMON->SSBMaster.rd_data; + } + /* write reg */ + PROCMON->SSBMaster.wr_data = val; + cmd = SWR_WR_CMD_P | SET_ADDR(ps, reg); + PROCMON->SSBMaster.control = cmd; + SR_TEST(2); + /*toggele bit 1 reg0 this load the new regs value */ + cmd1 = SWR_WR_CMD_P | SET_ADDR(ps, 0); + PROCMON->SSBMaster.wr_data = reg0 & ~0x2; + PROCMON->SSBMaster.control = cmd1; + SR_TEST(3); + PROCMON->SSBMaster.wr_data = reg0 | 0x2; + PROCMON->SSBMaster.control = cmd1; + SR_TEST(4); + PROCMON->SSBMaster.wr_data = reg0 & ~0x2; + PROCMON->SSBMaster.control = cmd1; + SR_TEST(5); +} + +static void bcm_setsw(void) +{ + swrw(0,3,0x5171); + swrw(0,6,0xb000); + swrw(0,7,0x0029); + /* 1.8 SWREG set bit reg3[8] & reg3[4] pll_en and pll_phase_en */ + swrw(1,3,0x5170); + swrw(1,7,0x0029); + /* 1.5 SWREG set bit reg3[8] & reg3[4] pll_en and pll_phase_en */ + swrw(2,3,0x5170); + swrw(2,7,0x0029); + /* 1.0 Analog SWREG set bit reg3[8] & reg3[4] pll_en and pll_phase_en */ + swrw(3,3,0x5170); + swrw(3,7,0x0029); + + if (!(MISC->miscStrapBus & MISC_STRAP_ENABLE_INT_1p8V)) + swrw(1,0,0xc691); +} +#endif + +#if defined(CONFIG_TPL_BUILD) +#define CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV (17) +static void disable_xtal_clk(void) +{ + uint32_t data; + int ret; + + ret = ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(xtal_control), &data); + + data |= (0x1 << CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV); + + ret |= WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(xtal_control), data); + + if (ret) + printf("Failed to disable xtal clk\n"); +} +#endif + +void boost_cpu_clock(void) +{ + unsigned int clk_index, cpu_clock; + int stat; + PLL_CTRL_REG ctrl_reg; + + //configure ubus clock + UBUS4CLK->ClockCtrl = 0x04; + + if (!bcm_otp_get_cpu_clk(&clk_index)) + { + switch (clk_index) { + case 0: + case 1: + cpu_clock = 1000; + break; + case 2: + cpu_clock = 750; + break; + default: + cpu_clock = 0; + } + } + else + printf("Error: failed to read cpu clock\n"); + + stat = ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLCLASSICBPCMRegOffset(resets), &ctrl_reg.Reg32); + ctrl_reg.Bits.byp_wait = 0; + stat |= WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLCLASSICBPCMRegOffset(resets), ctrl_reg.Reg32); + + if (stat) + printf("Error: failed to set cpu fast mode\n"); + else + printf("CPU Clock: %dMHz\n", cpu_clock); + + disable_xtal_clk(); +} + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + u32 frq = COUNTER_FREQUENCY; + + spl_ddrinit_prepare(); + + // set arch timer frequency + asm volatile("mcr p15, 0, %0, c14, c0, 0" : : "r" (frq)); + + // enable spi slave + *((volatile unsigned int*)CONFIG_BROM_REG_ADDR) |= 0x4; + + // enable system timer + BIUCFG->TSO_CNTCR |= 1; + + bcm_setsw(); + + /* enable unalgined access */ + set_cr(get_cr() & ~CR_A); +#endif + +#if defined(CONFIG_TPL_BUILD) + enable_ns_access(); + cci400_enable(); +#endif + + return 0; +} + +#if !defined(CONFIG_SPL_BUILD) +const uint32_t cpu_speed_table[4] = { + 1000, 1000, 750, 0 +}; + +void print_chipinfo(void) +{ + char *mktname = NULL; + unsigned int cpu_speed, rdp_speed, clk_index; + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + switch (chipId) { + case(0x68463): + mktname = "68460U"; + break; + case(0x68464): + mktname = "68461S"; + default: + mktname = NULL; + } + + if (mktname == NULL) + printf("Chip ID: BCM%X_%X\n",chipId,revId); + else + printf("Chip ID: BCM%s_%X\n",mktname,revId); + + get_rdp_freq(&rdp_speed); + if ( !bcm_otp_get_cpu_clk(&clk_index) ) + cpu_speed = cpu_speed_table[clk_index]; + else + cpu_speed = 0; + + printf("ARM Cortex A7 Dual Core: %dMHz\n",cpu_speed); + printf("RDP: %dMHz\n",rdp_speed); +} +#endif + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + uint32_t cpu = 1; + uint32_t nr_cpus = 2; + ARM_CONTROL_REG ctrl_reg; + + printf("boot secondary cpu from 0x%lx\n", vector); + + *(volatile uint32_t*)(BOOTLUT_BASE+0x20) = vector; + + while (cpu < nr_cpus) { + int stat; + + stat = ReadBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), &ctrl_reg.Reg32); + ctrl_reg.Bits.cpu_reset_n &= ~(0x1 << cpu); + stat |= WriteBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), ctrl_reg.Reg32); + if (stat != kPMC_NO_ERROR) + printf("failed to boot secondary cpu %d - sts %d\n", cpu, stat); + cpu++; + } + + return; +} +#endif diff --git a/arch/arm/mach-bcmbca/bcm6846/mmu_table.c b/arch/arm/mach-bcmbca/bcm6846/mmu_table.c new file mode 100644 index 0000000000..9f420a0fdd --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6846/mmu_table.c @@ -0,0 +1,127 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include "mmu_map_v7.h" + +static struct mm_region broadcom_bcm96846_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) +#if !defined(CONFIG_TPL_BUILD) + /* SPL table */ + /* DDR memory. Enable the maximum 2GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000, + .phys = 0x00000000, + .size = SZ_1G, + .attrs = SECTION_ATTR_DEVICE, + }, + /* PSRAM for SPL runtime */ + + { + .virt = 0x82600000, + .phys = 0x82600000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + + /* page table area */ + { + .virt = 0x7ff00000, + .phys = 0x7ff00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = SECTION_ATTR_DEVICE, + }, +#else + /* TPL table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* UBUS */ + .virt = 0x83000000, + .phys = 0x83000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + +#endif +#else + /* u-boot table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + { + /* BIU & CCI400 */ + .virt = 0x81000000, + .phys = 0x81000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + /* USB */ + { + .virt = 0x80000000UL, + .phys = 0x80000000UL, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif + { + /* PMC */ + .virt = 0xffb00000, + .phys = 0xffb00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* MEMC PHY register */ + .virt = 0x80100000, + .phys = 0x80100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SoC peripheral */ + .virt = 0xff800000, + .phys = 0xff800000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* BLUT */ + .virt = 0xfff00000, + .phys = 0xfff00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + /* XRDP */ + { + .virt = 0x82000000UL, + .phys = 0x82000000UL, + .size = 16 * SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm96846_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm6855/Kconfig b/arch/arm/mach-bcmbca/bcm6855/Kconfig new file mode 100644 index 0000000000..bc2f5c47ed --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6855/Kconfig @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM6855 + +config TARGET_BCM96855 + bool "Broadcom 6855 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm6855" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default mcb selector value" + default 0x80407 +endif + +config TPL_MAX_SIZE + default 1048576 + +source "board/broadcom/bcmbca/Kconfig" + +endif + diff --git a/arch/arm/mach-bcmbca/bcm6855/Makefile b/arch/arm/mach-bcmbca/bcm6855/Makefile new file mode 100644 index 0000000000..5567c2c89e --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6855/Makefile @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +EXTRA_CFLAGS += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/pmc + +obj-y += cpu.o +obj-y += mmu_table.o + diff --git a/arch/arm/mach-bcmbca/bcm6855/cpu.c b/arch/arm/mach-bcmbca/bcm6855/cpu.c new file mode 100644 index 0000000000..5c58815481 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6855/cpu.c @@ -0,0 +1,144 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include +#include "bcm_otp.h" +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#include "clk_rst.h" +#endif + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + u32 frq = COUNTER_FREQUENCY; + + // set arch timer frequency + asm volatile("mcr p15, 0, %0, c14, c0, 0" : : "r" (frq)); + + // enable system timer + BIUCFG->TSO_CNTCR |= 1; + + /* enable unalgined access */ + set_cr(get_cr() & ~CR_A); +#endif + + return 0; +} + +void boost_cpu_clock(void) +{ + int stat = 0; + uint32_t chipid; + PLL_CTRL_REG ctrl_reg; + + chipid = (((PERF->RevID & CHIP_ID_MASK) >> (CHIP_ID_SHIFT-CHIP_ID_LC_SIZE)) | (TOP->OtpChipidLC && CHIP_ID_LC_MASK)); + if ((chipid==0x68552c) || (chipid==0x682520) || (chipid==0x685500)) + { + stat = ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), &ctrl_reg.Reg32); + ctrl_reg.Bits.byp_wait = 1; + stat |= WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), ctrl_reg.Reg32); + + stat |= pll_vco_config(PMB_ADDR_BIU_PLL ,60, 1); + stat |= pll_ch_freq_set(PMB_ADDR_BIU_PLL, 0, 2); + + stat = ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), &ctrl_reg.Reg32); + ctrl_reg.Bits.byp_wait = 0; + stat |= WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), ctrl_reg.Reg32); + } + else if (chipid==685520) + stat = pll_ch_freq_set(PMB_ADDR_BIU_PLL, 0, 2); + + if (stat) + printf("Error: failed to set cpu clock\n"); + + UBUS4CLK->ClockCtrl = UBUS4_CLK_BYPASS_MASK; +} + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + unsigned int cpu_speed, rdp_speed, nr_cores; + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + unsigned int chipIdLC = (TOP->OtpChipidLC && CHIP_ID_LC_MASK); + if (chipIdLC) + chipId = (chipId << CHIP_ID_LC_SIZE) | chipIdLC; + + printf("Chip ID: BCM%X_%X\n",chipId,revId); + + pll_ch_freq_get(PMB_ADDR_BIU_PLL, 0, &cpu_speed); + if (bcm_otp_get_nr_cpus(&nr_cores)) + printf("Error: failed to read cores from OTP\n"); + else + { + if (nr_cores) + printf("ARM Cortex A7 Dual Core: %dMHz", cpu_speed); + else + printf("ARM Cortex A7 Triple Core: %dMHz", cpu_speed); + } + + get_rdp_freq(& rdp_speed); + printf("RDP Freq: %dMHz\n", rdp_speed); +} +#endif + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + uint32_t cpu = 1; + uint32_t nr_cpus; + ARM_CONTROL_REG ctrl_reg; + uint64_t rvbar = vector; + int stat; + + printf("boot secondary cpu from 0x%lx\n", vector); + + *(volatile uint32_t*)(BOOTLUT_BASE+0x20) = vector; + + if ( bcm_otp_get_nr_cpus(&nr_cpus) ) + return; + + nr_cpus = MAX_NUM_OF_CPU-nr_cpus; + + while (cpu < nr_cpus) + { + BIUCFG->cluster[0].rvbar_addr[cpu] = rvbar; + + stat = PowerOnDevice(PMB_ADDR_ORION_CPU0 + cpu); + if (stat != kPMC_NO_ERROR) + printf("failed to power on secondary cpu %d - sts %d\n", cpu, stat); + + stat = ReadBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), &ctrl_reg.Reg32); + ctrl_reg.Bits.cpu_reset_n &= ~(0x1 << cpu); + stat |= WriteBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), ctrl_reg.Reg32); + if (stat != kPMC_NO_ERROR) + printf("failed to boot secondary cpu %d - sts %d\n", cpu, stat); + cpu++; + } + + return; +} +#endif + diff --git a/arch/arm/mach-bcmbca/bcm6855/mmu_table.c b/arch/arm/mach-bcmbca/bcm6855/mmu_table.c new file mode 100644 index 0000000000..4d9b62d133 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6855/mmu_table.c @@ -0,0 +1,118 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include "mmu_map_v7.h" + +static struct mm_region broadcom_bcm96855_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) +#if !defined(CONFIG_TPL_BUILD) + /* SPL table */ + /* DDR memory. Enable the maximum 2GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000, + .phys = 0x00000000, + .size = SZ_2G, + .attrs = SECTION_ATTR_DEVICE, + }, + + /* PSRAM for SPL runtime */ + { + .virt = 0x82000000, + .phys = 0x82000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + + /* page table area */ + { + .virt = 0x82700000, + .phys = 0x82700000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#else + /* TPL table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + { + .virt = 0x82000000, + .phys = 0x82000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif +#else + /* u-boot table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + { + /* BIU */ + .virt = 0x81000000, + .phys = 0x81000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* UBUS */ + .virt = 0x83000000, + .phys = 0x83000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + /* USB */ + { + .virt = 0x80000000UL, + .phys = 0x80000000UL, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + /* XRDP */ + { + .virt = 0x82000000UL, + .phys = 0x82000000UL, + .size = 16 * SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif + { + /* PMC */ + .virt = 0xffb00000, + .phys = 0xffb00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* MEMC PHY register */ + .virt = 0x80100000, + .phys = 0x80100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SoC peripheral */ + .virt = 0xff800000, + .phys = 0xff800000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* BLUT */ + .virt = 0xfff00000, + .phys = 0xfff00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm96855_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm6856/Kconfig b/arch/arm/mach-bcmbca/bcm6856/Kconfig new file mode 100644 index 0000000000..937db38456 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6856/Kconfig @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM6856 + +config TARGET_BCM96856 + bool "Broadcom 6856 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm6856" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x1527 +endif + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm6856/Makefile b/arch/arm/mach-bcmbca/bcm6856/Makefile new file mode 100644 index 0000000000..c7efc2be51 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6856/Makefile @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +EXTRA_CFLAGS += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/pmc + +obj-y += mmu_table.o +obj-y += cpu.o + diff --git a/arch/arm/mach-bcmbca/bcm6856/cpu.c b/arch/arm/mach-bcmbca/bcm6856/cpu.c new file mode 100644 index 0000000000..9f9fa84839 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6856/cpu.c @@ -0,0 +1,213 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 Broadcom Ltd. + */ + +#include +#include +#include +#include "bcm_otp.h" +#include +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#include "clk_rst.h" +#endif + +#if defined(CONFIG_TPL_BUILD) +static void cci400_enable(void) +{ + CCI400->secr_acc |= SECURE_ACCESS_UNSECURE_ENABLE; +} + +static void enable_ns_access(void) +{ + BIUCFG->aux.permission |= 0xff; +} +#endif + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) +static void swrw(unsigned int ps, unsigned int reg, unsigned int val) +{ + unsigned int cmd = 0; + unsigned int cmd1 = 0; + unsigned int reg0 = 0; + + PROCMON->SSBMaster.control = SWR_EN; + + if (reg == 0) { + /* no need read reg0 in case that we write to it , we know wal :) */ + reg0 = val; + } else { + /* read reg0 */ + cmd1 = SWR_READ_CMD_P | SET_ADDR(ps, 0); + PROCMON->SSBMaster.control = cmd1; + SR_TEST(1) + reg0 = PROCMON->SSBMaster.rd_data; + } + /* write reg */ + PROCMON->SSBMaster.wr_data = val; + cmd = SWR_WR_CMD_P | SET_ADDR(ps, reg); + PROCMON->SSBMaster.control = cmd; + SR_TEST(2); + /*toggele bit 1 reg0 this load the new regs value */ + cmd1 = SWR_WR_CMD_P | SET_ADDR(ps, 0); + PROCMON->SSBMaster.wr_data = reg0 & ~0x2; + PROCMON->SSBMaster.control = cmd1; + SR_TEST(3); + PROCMON->SSBMaster.wr_data = reg0 | 0x2; + PROCMON->SSBMaster.control = cmd1; + SR_TEST(4); + PROCMON->SSBMaster.wr_data = reg0 & ~0x2; + PROCMON->SSBMaster.control = cmd1; + SR_TEST(5); +} + +static void bcm_setsw(void) +{ + swrw(0,3,0x5372); + swrw(0,6,0xb000); + swrw(0,7,0x0029); + swrw(1,3,0x5370); + swrw(1,7,0x0029); + swrw(2,3,0x5370); + swrw(2,7,0x0029); + swrw(3,3,0x5370); + swrw(3,7,0x0029); +} +#endif + +#if defined(CONFIG_TPL_BUILD) +#define CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV (17) +static void disable_xtal_clk(void) +{ + uint32_t data; + int ret; + + ret = ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(xtal_control), &data); + + data |= (0x1 << CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV); + + ret |= WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(xtal_control), data); + + if (ret) + printf("Failed to disable xtal clk\n"); +} +#endif + +void boost_cpu_clock(void) +{ + unsigned int clk_index, cpu_clock; + int stat; + PLL_CTRL_REG ctrl_reg; + + //configure ubus clock + UBUS4CLK->ClockCtrl = 0x04; + + if ( !bcm_otp_get_cpu_clk(&clk_index) ) + cpu_clock = 500 + 500*(2-clk_index); + else + cpu_clock = 0; + + stat = ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLCLASSICBPCMRegOffset(resets), &ctrl_reg.Reg32); + ctrl_reg.Bits.byp_wait = 0; + stat |= WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLCLASSICBPCMRegOffset(resets), ctrl_reg.Reg32); + + if (stat) + printf("Error: failed to set cpu fast mode\n"); + + printf("CPU Clock: %dMHz\n", cpu_clock); + + disable_xtal_clk(); +} + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + spl_ddrinit_prepare(); + bcm_setsw(); + /* enable unalgined access */ + set_sctlr(get_sctlr() & ~CR_A); +#endif + +#if defined(CONFIG_TPL_BUILD) + enable_ns_access(); + cci400_enable(); +#endif + + return 0; +} + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + char *mktname = NULL; + char *nr_cores = NULL; + unsigned int cpu_speed, rdp_speed, otp_cores; + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + printf("Chip ID: BCM%X_%X\n",chipId,revId); + + if ( !bcm_otp_get_nr_cpus(&otp_cores) ) + { + if (otp_cores == 0) + nr_cores = "Dual"; + else if (otp_cores == 1) + nr_cores = "Single"; + } + + pll_ch_freq_get(PMB_ADDR_BIU_PLL, 0, &cpu_speed); + get_rdp_freq(&rdp_speed); + + printf("Broadcom B53 %s Core: %dMHz\n", nr_cores, cpu_speed); + printf("RDP: %dMHz\n",rdp_speed); +} +#endif + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_EMMC) + return BOOT_DEVICE_MMC1; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + uint32_t cpu = 1; + uint32_t nr_cpus = 2; + ARM_CONTROL_REG ctrl_reg; + + printf("boot secondary cpu from 0x%lx\n", vector); + + while (cpu < nr_cpus) { + int stat; + + BIUCFG->cluster[0].rvbar_addr[cpu] = vector; + stat = PowerOnDevice(PMB_ADDR_ORION_CPU0 + cpu); + if (stat != kPMC_NO_ERROR) + printf("failed to power on secondary cpu %d - sts %d\n", cpu, stat); + + stat = ReadBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), &ctrl_reg.Reg32); + ctrl_reg.Bits.cpu_reset_n &= ~(0x1 << cpu); + stat |= WriteBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), ctrl_reg.Reg32); + if (stat != kPMC_NO_ERROR) + printf("failed to boot secondary cpu %d - sts %d\n", cpu, stat); + cpu++; + } + + return; +} +#endif diff --git a/arch/arm/mach-bcmbca/bcm6856/mmu_table.c b/arch/arm/mach-bcmbca/bcm6856/mmu_table.c new file mode 100644 index 0000000000..a29f4fd510 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6856/mmu_table.c @@ -0,0 +1,155 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include + +static struct mm_region broadcom_bcm96856_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* DDR memory. Enable the maximum 4GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 2UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + { + .virt = 0x100000000UL, + .phys = 0x100000000UL, + .size = 2UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* MEMC and DDRY PHY control registers */ + { + .virt = 0x80180000UL, + .phys = 0x80180000UL, + .size = 0x40000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* LMEM for bootrom runtime */ + { + .virt = CONFIG_SYS_INIT_RAM_ADDR, + .phys = CONFIG_SYS_INIT_RAM_ADDR, + .size = CONFIG_SYS_INIT_RAM_SIZE, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#else + /* DDR entries for cached memory, total size is a placehold + and will be filled in at run time. MUST be first entry */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 1UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* PMC */ + { + .virt = 0xffb00000UL, + .phys = 0xffb00000UL, + .size = 0x6000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* PROC_MON */ + { + .virt = 0xffb20000UL, + .phys = 0xffb20000UL, + .size = 0x1000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* BIUCFG */ + { + .virt = 0x81060000UL, + .phys = 0x81060000UL, + .size = 0x3000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* CCI400 */ + { + .virt = 0x81090000, + .phys = 0x81090000, + .size = 0x10000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* UBUS */ + { + .virt = 0x83000000UL, + .phys = 0x83000000UL, + .size = 0x600000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#if !defined(CONFIG_TPL_BUILD) + /* USB */ + { + .virt = 0x8000C000UL, + .phys = 0x8000C000UL, + .size = 0x3000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* XRDP */ + { + .virt = 0x82000000UL, + .phys = 0x82000000UL, + .size = 0x1000000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#endif +#endif + { + /* SoC peripheral */ + .virt = 0xff800000UL, + .phys = 0xff800000UL, + .size = SZ_1M, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm96856_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm6858/Kconfig b/arch/arm/mach-bcmbca/bcm6858/Kconfig new file mode 100644 index 0000000000..374e2a032f --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6858/Kconfig @@ -0,0 +1,23 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM6858 + +config TARGET_BCM96858 + bool "Broadcom 6858 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm6858" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default DDR3 mcb selector value" + default 0x527 +endif + +source "board/broadcom/bcmbca/Kconfig" + +endif diff --git a/arch/arm/mach-bcmbca/bcm6858/Makefile b/arch/arm/mach-bcmbca/bcm6858/Makefile new file mode 100644 index 0000000000..c7efc2be51 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6858/Makefile @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +EXTRA_CFLAGS += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/pmc + +obj-y += mmu_table.o +obj-y += cpu.o + diff --git a/arch/arm/mach-bcmbca/bcm6858/cpu.c b/arch/arm/mach-bcmbca/bcm6858/cpu.c new file mode 100644 index 0000000000..1782cd601c --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6858/cpu.c @@ -0,0 +1,281 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include "bcm_otp.h" +#include +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "clk_rst.h" +#include "asm/arch/BPCM.h" +#endif + +#if defined(CONFIG_TPL_BUILD) +static void cci400_enable(void) +{ + CCI400->secr_acc |= SECURE_ACCESS_UNSECURE_ENABLE; +} + +static void enable_ns_access(void) +{ + BIUCFG->aux.permission |= 0xff; +} +#endif + +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) +static void swrw(unsigned int ps, unsigned int reg, unsigned int val) +{ + unsigned int cmd = 0; + unsigned int cmd1 = 0; + unsigned int reg0 = 0; + + PROCMON->SSBMaster.control = SWR_EN; + + if (reg == 0) { + /* no need read reg0 in case that we write to it , we know wal :) */ + reg0 = val; + } else { + /* read reg0 */ + cmd1 = SWR_READ_CMD_P | SET_ADDR(ps, 0); + PROCMON->SSBMaster.control = cmd1; + SR_TEST(1) + reg0 = PROCMON->SSBMaster.rd_data; + } + /* write reg */ + PROCMON->SSBMaster.wr_data = val; + cmd = SWR_WR_CMD_P | SET_ADDR(ps, reg); + PROCMON->SSBMaster.control = cmd; + SR_TEST(2); + /*toggele bit 1 reg0 this load the new regs value */ + cmd1 = SWR_WR_CMD_P | SET_ADDR(ps, 0); + PROCMON->SSBMaster.wr_data = reg0 & ~0x2; + PROCMON->SSBMaster.control = cmd1; + SR_TEST(3); + PROCMON->SSBMaster.wr_data = reg0 | 0x2; + PROCMON->SSBMaster.control = cmd1; + SR_TEST(4); + PROCMON->SSBMaster.wr_data = reg0 & ~0x2; + PROCMON->SSBMaster.control = cmd1; + SR_TEST(5); +} + +static void bcm_setsw(void) +{ + swrw(1,3,0x5170); + swrw(1,7,0x4829); + swrw(2,3,0x5172); + swrw(2,7,0x4829); +} +#endif + +#if defined(CONFIG_TPL_BUILD) +#define CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV (17) +static void disable_xtal_clk(void) +{ + uint32_t data; + int ret; + + ret = ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(xtal_control), &data); + + data |= (0x1 << CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV); + + ret |= WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(xtal_control), data); + + if (ret) + printf("Failed to disable xtal clk\n"); +} +#endif + +void boost_cpu_clock(void) +{ + unsigned int clk_index, cpu_clock; + unsigned int chipId = 0; + int stat; + bcm_otp_get_chipid(&chipId); + + if (chipId == 0x5 || chipId == 0x2) + { + cpu_clock = 1000; + if (pll_ch_freq_set(PMB_ADDR_BIU_PLL, 0, 3)) + printf("Error: failed to set CPU clock\n"); + } + else if ( !bcm_otp_get_cpu_clk(&clk_index) ) + cpu_clock = 500 + 500*(2-clk_index); + else + cpu_clock = 0; + + /* configure AXI clock */ + if (pll_ch_freq_set(PMB_ADDR_BIU_PLL, 2, 4)) + printf("Error: failed to set AXI clock\n"); + + /* Change cpu to fast clock */ + if ((MISC->miscStrapBus)&MISC_STRAP_BUS_CPU_SLOW_FREQ) + { + int stat; + PLL_CTRL_REG ctrl_reg; + stat = ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), &ctrl_reg.Reg32); + ctrl_reg.Bits.byp_wait = 0; + stat |= WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), ctrl_reg.Reg32); + if (stat) + printf("Error: failed to set cpu fast mode\n"); + } + + printf("CPU Clock: %dMHz\n", cpu_clock); + + stat = PowerOnDevice(PMB_ADDR_RDPPLL); + + stat = pll_ch_freq_set(PMB_ADDR_RDPPLL, 0, 2); + stat |= pll_ch_freq_set(PMB_ADDR_RDPPLL, 1, 1); + + if (stat) + printf("Error: Failed to set RDPPLL\n"); + + disable_xtal_clk(); +} + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + spl_ddrinit_prepare(); + // enable system timer + BIUCFG->TSO_CNTCR |= 1; + + bcm_setsw(); + /* enable unalgined access */ + set_sctlr(get_sctlr() & ~CR_A); +#endif + +#if defined(CONFIG_TPL_BUILD) + enable_ns_access(); + cci400_enable(); +#endif + + return 0; +} + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + char *mktname = NULL; + char *nr_cores = NULL; + unsigned int cpu_speed, rdp_speed, chipId; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + if (bcm_otp_get_chipid(&chipId)) { + chipId = 0; + } + + + switch (chipId) { + case(0x0): + nr_cores = "Quad"; + case(0x1): + mktname = "68580X"; + break; + case(0x2): + nr_cores = "Dual"; + mktname = "55040"; + break; + case(0x3): + mktname = "68580H"; + break; + case(0x4): + mktname = "55040P"; + break; + case(0x5): + nr_cores = "Dual"; + mktname = "55045"; + break; + case(0x6): + mktname = "68580XV"; + break; + case(0x7): + mktname = "49508"; + break; + case(0x8): + mktname = "62119"; + break; + case(0x9): + mktname = "68580XP"; + break; + case(0xA): + mktname = "62119P"; + break; + case(0xB): + nr_cores = "Dual"; + mktname = "55040B"; + break; + case(0xC): + mktname = "55040M"; + break; + case(0xD): + mktname = "68580XF"; + break; + default: + mktname = NULL; + } + + printf("Chip ID: BCM%s_%X\n",mktname,revId); + + pll_ch_freq_get(PMB_ADDR_BIU_PLL, 0, &cpu_speed); + printf("Broadcom B53 %s Core: %dMHz\n", nr_cores, cpu_speed); + + get_rdp_freq(&rdp_speed); + printf("RDP: %dMHz\n",rdp_speed); +} +#endif + +int bcmbca_get_boot_device(void) +{ + unsigned int bootsel = ((MISC->miscStrapBus & MISC_STRAP_BUS_BOOT_SEL0_4_MASK) >> MISC_STRAP_BUS_BOOT_SEL0_4_SHIFT) | + ((MISC->miscStrapBus & MISC_STRAP_BUS_BOOT_SEL5_MASK) >> BOOT_SEL5_STRAP_ADJ_SHIFT); + + if ((bootsel & BOOT_SEL_STRAP_BOOT_SEL_NAND_MASK) == BOOT_SEL_STRAP_NAND) + return BOOT_DEVICE_NAND; + + if ((bootsel & BOOT_SEL_STRAP_BOOT_SEL_MASK) == BOOT_SEL_STRAP_SPI_NAND) + return BOOT_DEVICE_SPI; + + if ((bootsel & BOOT_SEL_STRAP_BOOT_SEL_MASK) == BOOT_SEL_STRAP_EMMC) + return BOOT_DEVICE_MMC1; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + uint32_t cpu = 1; + uint32_t nr_cpus = 4; + ARM_CONTROL_REG ctrl_reg; + + printf("boot secondary cpu from 0x%lx\n", vector); + + while (cpu < nr_cpus) { + int stat; + + BIUCFG->cluster[0].rvbar_addr[cpu] = vector >> 8; + stat = PowerOnDevice(PMB_ADDR_ORION_CPU0 + cpu); + if (stat != kPMC_NO_ERROR) + printf("failed to power on secondary cpu %d - sts %d\n", cpu, stat); + + stat = ReadBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), &ctrl_reg.Reg32); + ctrl_reg.Bits.cpu_reset_n &= ~(0x1 << cpu); + stat |= WriteBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), ctrl_reg.Reg32); + if (stat != kPMC_NO_ERROR) + printf("failed to boot secondary cpu %d - sts %d\n", cpu, stat); + cpu++; + } + + return; +} +#endif diff --git a/arch/arm/mach-bcmbca/bcm6858/mmu_table.c b/arch/arm/mach-bcmbca/bcm6858/mmu_table.c new file mode 100644 index 0000000000..b0c50e3f7d --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6858/mmu_table.c @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include + +static struct mm_region broadcom_bcm96858_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + /* DDR memory. Enable the maximum 4GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 2UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + { + .virt = 0x100000000UL, + .phys = 0x100000000UL, + .size = 2UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* MEMC and DDRY PHY control registers */ + { + .virt = 0x80180000UL, + .phys = 0x80180000UL, + .size = 0x40000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* LMEM for bootrom runtime */ + { + .virt = CONFIG_SYS_INIT_RAM_ADDR, + .phys = CONFIG_SYS_INIT_RAM_ADDR, + .size = CONFIG_SYS_INIT_RAM_SIZE, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#else + /* DDR entries for cached memory, total size is a placehold + and will be filled in at run time. MUST be first entry */ + { + .virt = 0x00000000UL, + .phys = 0x00000000UL, + .size = 1UL * SZ_1G, + .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) | + PTE_BLOCK_INNER_SHARE + }, + /* PMC */ + { + .virt = 0x80200000UL, + .phys = 0x80200000UL, + .size = 0x5000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* PROC_MON */ + { + .virt = 0x80280000UL, + .phys = 0x80280000UL, + .size = 0x1000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* BIUCFG */ + { + .virt = 0x81060000, + .phys = 0x81060000, + .size = 0x3000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + + /* CCI400 */ + { + .virt = 0x81090000, + .phys = 0x81090000, + .size = 0x10000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* STD Mem */ + { + .virt = CONFIG_SYS_INIT_STD_32K_ADDR, + .phys = CONFIG_SYS_INIT_STD_32K_ADDR, + .size = SZ_32K, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + +#if !defined(CONFIG_TPL_BUILD) + /* USB */ + { + .virt = 0x8000C000UL, + .phys = 0x8000C000UL, + .size = 0x3000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* LPORT */ + { + .virt = 0x80138000UL, + .phys = 0x80138000UL, + .size = 0x6000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* UBUS */ + { + .virt = 0x83000000UL, + .phys = 0x83000000UL, + .size = 0x600000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + /* XRDP */ + { + .virt = 0x82000000UL, + .phys = 0x82000000UL, + .size = 0x1000000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, +#endif +#endif + { + /* SoC peripheral */ + .virt = 0xff800000UL, + .phys = 0xff800000UL, + .size = 0x100000, + .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) | + PTE_BLOCK_NON_SHARE | + PTE_BLOCK_PXN | PTE_BLOCK_UXN + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm96858_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm6878/Kconfig b/arch/arm/mach-bcmbca/bcm6878/Kconfig new file mode 100644 index 0000000000..b86344ebf6 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6878/Kconfig @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +if BCM6878 + +config TARGET_BCM96878 + bool "Broadcom 6878 Reference Board" + depends on ARCH_BCMBCA + +config SYS_SOC + default "bcm6878" + +if BCMBCA_DDRC +config BCMBCA_DDR_DEF_MCBSEL + hex "default mcb selector value" + default 0x80407 +endif + +config TPL_MAX_SIZE + default 1048576 + +source "board/broadcom/bcmbca/Kconfig" + +endif + diff --git a/arch/arm/mach-bcmbca/bcm6878/Makefile b/arch/arm/mach-bcmbca/bcm6878/Makefile new file mode 100644 index 0000000000..5567c2c89e --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6878/Makefile @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +EXTRA_CFLAGS += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/pmc + +obj-y += cpu.o +obj-y += mmu_table.o + diff --git a/arch/arm/mach-bcmbca/bcm6878/cpu.c b/arch/arm/mach-bcmbca/bcm6878/cpu.c new file mode 100644 index 0000000000..521335e0bf --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6878/cpu.c @@ -0,0 +1,187 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#include "clk_rst.h" +#endif + +#if defined(CONFIG_TPL_BUILD) +#define CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV (2) +#define CLOCK_RESET_XTAL_CONTROL_BIT_PWRON (27) +#define CLOCK_RESET_XTAL_CONTROL2_BIT_PD (0) + +static void disable_xtal_clk(void) +{ + uint32_t data; + int ret; + + ret = ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(pmd_xtal_cntl), &data); + + data |= (0x1 << CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV); + data &= ~(0x1 << CLOCK_RESET_XTAL_CONTROL_BIT_PWRON); + + ret |= WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(pmd_xtal_cntl), data); + + ret |= ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(pmd_xtal_cntl2), &data); + + data |= (0x1 << CLOCK_RESET_XTAL_CONTROL2_BIT_PD); + + ret |= WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(pmd_xtal_cntl2), data); + + if (ret) + printf("Failed to disable xtal clk\n"); +} +#endif + +int arch_cpu_init(void) +{ +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_TPL_BUILD) + u32 frq = COUNTER_FREQUENCY; + + // set arch timer frequency + asm volatile("mcr p15, 0, %0, c14, c0, 0" : : "r" (frq)); + + // enable system timer + BIUCFG->TSO_CNTCR |= 1; + + /* enable unalgined access */ + set_cr(get_cr() & ~CR_A); +#endif + + return 0; +} + +void boost_cpu_clock(void) +{ + unsigned int clk_index, cpu_clock; + int stat; + PLL_CTRL_REG ctrl_reg; + + if ( !bcm_otp_get_cpu_clk(&clk_index) ) + { + switch (clk_index) { + case 0: + case 1: + cpu_clock = 1200; + break; + case 2: + cpu_clock = 800; + break; + default: + cpu_clock = 0; + } + } + else + printf("ERROR: failed to read cpu clock\n"); + + stat = ReadBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), &ctrl_reg.Reg32); + ctrl_reg.Bits.byp_wait = 0; + stat |= WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), ctrl_reg.Reg32); + + if (stat) + printf("ERROR: failed to set cpu fast clock\n"); + else + printf("CPU Clock: %dMHz\n", cpu_clock); + + disable_xtal_clk(); +} + +#if !defined(CONFIG_SPL_BUILD) +void print_chipinfo(void) +{ + char *mktname = NULL; + unsigned int cpu_speed, rdp_speed; + unsigned int chipId = (PERF->RevID & CHIP_ID_MASK) >> CHIP_ID_SHIFT; + unsigned int revId = PERF->RevID & REV_ID_MASK; + + switch (chipId) { + case(0x6878A): + mktname = "68782G"; + break; + case(0x68789): + mktname = "68781H"; + break; + case(0x6878C): + mktname = "68789"; + break; + case(0x6878E): + mktname = "68782N"; + break; + case(0x6878D): + mktname = "68781G"; + break; + default: + mktname = NULL; + } + + if (mktname == NULL) + printf("Chip ID: BCM%X_%X\n",chipId,revId); + else + printf("Chip ID: BCM%s_%X\n",mktname,revId); + + pll_ch_freq_get(PMB_ADDR_BIU_PLL, 0, &cpu_speed); + get_rdp_freq(&rdp_speed); + + printf("ARM Cortex A7 Dual Core: %dMHz\n",cpu_speed); + printf("RDP: %dMHz\n",rdp_speed); +} +#endif + +int bcmbca_get_boot_device(void) +{ + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_NAND_MASK) == MISC_STRAP_BUS_BOOT_NAND) + return BOOT_DEVICE_NAND; + + if ((MISC->miscStrapBus&MISC_STRAP_BUS_BOOT_SEL_MASK) == MISC_STRAP_BUS_BOOT_SPI_NAND) + return BOOT_DEVICE_SPI; + + printf("Error: boot_sel straps are not set correctly\n"); + + return BOOT_DEVICE_NONE; +} + +#if !defined(CONFIG_TPL_ATF) +void boot_secondary_cpu(unsigned long vector) +{ + uint32_t cpu = 1; + uint32_t nr_cpus = 2; + ARM_CONTROL_REG ctrl_reg; + uint64_t rvbar = vector; + int stat; + + printf("boot secondary cpu from 0x%lx\n", vector); + + *(volatile uint32_t*)(BOOTLUT_BASE+0x20) = vector; + + BIUCFG->cluster[0].rvbar_addr[cpu] = rvbar; + + stat = PowerOnDevice(PMB_ADDR_ORION_CPU0 + cpu); + if (stat != kPMC_NO_ERROR) + printf("failed to power on secondary cpu %d - sts %d\n", cpu, stat); + + while (cpu < nr_cpus) + { + stat = ReadBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), &ctrl_reg.Reg32); + ctrl_reg.Bits.cpu_reset_n &= ~(0x1 << cpu); + stat |= WriteBPCMRegister(PMB_ADDR_BIU_BPCM, ARMBPCMRegOffset(arm_control), ctrl_reg.Reg32); + if (stat != kPMC_NO_ERROR) + printf("failed to boot secondary cpu %d - sts %d\n", cpu, stat); + cpu++; + } + + return; +} +#endif + diff --git a/arch/arm/mach-bcmbca/bcm6878/mmu_table.c b/arch/arm/mach-bcmbca/bcm6878/mmu_table.c new file mode 100644 index 0000000000..6c55bbe8c2 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm6878/mmu_table.c @@ -0,0 +1,118 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#include +#include "mmu_map_v7.h" + +static struct mm_region broadcom_bcm96878_mem_map[] = { +#if defined(CONFIG_SPL_BUILD) +#if !defined(CONFIG_TPL_BUILD) + /* SPL table */ + /* DDR memory. Enable the maximum 2GB DDR for alias test. Use Device Attr + to avoid CPU speculative fetch */ + { + .virt = 0x00000000, + .phys = 0x00000000, + .size = SZ_2G, + .attrs = SECTION_ATTR_DEVICE, + }, + /* PSRAM for SPL runtime */ + + { + .virt = 0x82600000, + .phys = 0x82600000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + + /* page table area */ + { + .virt = 0x82c00000, + .phys = 0x82c00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#else + /* TPL table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + { + .virt = 0x82600000, + .phys = 0x82600000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif +#else + /* u-boot table */ + /* + * uboot ddr entries for cached memory will be set in ram_bank_mmu_setup + * based on actual size + */ + { + /* BIU */ + .virt = 0x81000000, + .phys = 0x81000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* UBUS */ + .virt = 0x83000000, + .phys = 0x83000000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + /* USB */ + { + .virt = 0x80000000UL, + .phys = 0x80000000UL, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + /* XRDP */ + { + .virt = 0x82000000UL, + .phys = 0x82000000UL, + .size = 16 * SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, +#endif + { + /* PMC */ + .virt = 0xffb00000, + .phys = 0xffb00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* MEMC PHY register */ + .virt = 0x80100000, + .phys = 0x80100000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* SoC peripheral */ + .virt = 0xff800000, + .phys = 0xff800000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* BLUT */ + .virt = 0xfff00000, + .phys = 0xfff00000, + .size = SZ_1M, + .attrs = SECTION_ATTR_DEVICE, + }, + { + /* List terminator */ + 0, + } +}; + +struct mm_region *mem_map = broadcom_bcm96878_mem_map; diff --git a/arch/arm/mach-bcmbca/bcm_fdtdec.c b/arch/arm/mach-bcmbca/bcm_fdtdec.c new file mode 100644 index 0000000000..1bcfd4e099 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcm_fdtdec.c @@ -0,0 +1,22 @@ +#include +#include +#include +#include +#include + +#if defined(CONFIG_ARM64) +void __attribute__((section(".data"))) * g_fdt_ptr = NULL; +void *board_fdt_blob_setup(void) +{ + struct fdt_header * fdt_blob = (ulong *)&_end; + if( uimage_to_cpu(fdt_blob->magic) == FDT_MAGIC ) + { + g_fdt_ptr = malloc( uimage_to_cpu(fdt_blob->totalsize) ); + if( g_fdt_ptr ) + memcpy( (char*)g_fdt_ptr, (char*)fdt_blob, uimage_to_cpu(fdt_blob->totalsize) ); + } + + return g_fdt_ptr; +} +#endif + diff --git a/arch/arm/mach-bcmbca/bcmbca-dtsetup.c b/arch/arm/mach-bcmbca/bcmbca-dtsetup.c new file mode 100644 index 0000000000..e1b4ee532d --- /dev/null +++ b/arch/arm/mach-bcmbca/bcmbca-dtsetup.c @@ -0,0 +1,512 @@ +#include +#include +#include + +#include "bcmbca-dtsetup.h" +#include "dt_helper.h" +#include "boot_flash.h" +#include "spl_env.h" + +#define FDT_PAD_BYTES 0x1000 + +DECLARE_GLOBAL_DATA_PTR; + +static int set_sec_exports(void *blob) +{ + int off_linux, ret=0; + int len = 0; + u8 * value; + int trust_offset,exp_item_offset; + char * exp_flag; + char * node_name; + int ndepth; + + off_linux=fdt_path_offset (blob, "/"); + if (off_linux < 0) { + return ret; + } + + trust_offset = fdt_path_offset(gd->fdt_blob, "/trust"); + if (trust_offset < 0) { + debug("INFO: Didnt find /trust node in boot DTB\n"); + return ret; + } + + for (ndepth = 0, exp_item_offset = fdt_next_node(gd->fdt_blob, trust_offset, &ndepth); + (exp_item_offset >= 0) && (ndepth > 0); + exp_item_offset = fdt_next_node(gd->fdt_blob, exp_item_offset, &ndepth)) { + if (ndepth == 1) { + /* + * Direct child node of the trust parent node, + * i.e. item node. + */ + node_name = (char*)fdt_get_name(gd->fdt_blob, exp_item_offset, &len); + exp_flag = (char*)(fdt_getprop(gd->fdt_blob, exp_item_offset, "export", &len)); + value = (char*)(fdt_getprop(gd->fdt_blob, exp_item_offset, "value", &len)); + + if( exp_flag && len && value && node_name && (strcasecmp(exp_flag, "yes") == 0) ) { + ret = fdt_setprop(blob, off_linux, node_name, value, len); + if(ret != 0 ) { + printf("fdt_setprop failed for %s [%d]\n", node_name, ret); + return ret; + } + } + } + } + return ret; +} + +static int set_uboot_version(void *blob) +{ + char version[64]; + int offset, ret=-1; + + display_options_get_banner(false, version, sizeof(version)); + offset=fdt_path_offset (blob, "/"); + if(offset >= 0 ) + { + ret = fdt_setprop(blob, offset, "uboot-version", version, strlen(version)); + if(ret != 0 ) + printf("fdt_setprop failed [%d]\n", ret); + } + return ret; +} + +static int set_uboot_env(void *blob) +{ + env_t *ep; + char *envbuf = NULL; + int ret = -2; + int elen; + char *config; + uint32_t new; + int i; + char *found = NULL; + int offset; + + config = env_get("env_boot_magic"); + if (NULL == config) + { + printf("env_boot_magic missing in the env\n"); + return -1; + } + elen = simple_strtoul(config, NULL, 0); + found = malloc(strlen(config) + 1); + if (!found) + { + printf("memory allocation failed\n"); + return -2; + } + strcpy(found, config); + envbuf = malloc(max(elen + 12, CONFIG_ENV_SIZE + 12)); + if (!envbuf) + { + printf("memory allocation failed\n"); + return -2; + } + ep = (env_t *) (envbuf + 8); + ret = env_export(ep); + for (i = CONFIG_ENV_SIZE; i < elen; i++) { + envbuf[12 + i] = 0xff; + } + new = crc32(0, ep->data, elen - 4); + memcpy(&ep->crc, &new, sizeof(new)); + + offset=fdt_path_offset (blob, "/"); + if(offset >= 0 ) + { + //add 0x1000 (4096) padding bytes, 12 bytes for env header + ret=fdt_increase_size(blob, max(elen + 12, CONFIG_ENV_SIZE + 12)+FDT_PAD_BYTES); + ret = fdt_setprop(blob, offset, "uboot_env", envbuf, max(elen + 12, CONFIG_ENV_SIZE + 12)); + if(ret != 0 ) + printf("fdt_setprop failed [%d]\n", ret); + } + else + { + printf("can't append uboot env to dtb, / node not found\n"); + ret=-4; + } + + return ret; +} + +/* Todo: port the remaining code from cfe dtb_set_bootcmd(void) */ +static int set_bootargs(void *blob) +{ + char* boot_args; + char* extra_args, *mtd_parts, *rootfs; + int len = 0; + + boot_args = env_get("bootargs"); + if (boot_args) { + /* fdt_chosen function already override the bootargs.. just print the msg */ + printf("linux boot command line overriden from bootargs env variable:\n"); + printf(" %s\n", boot_args); + } else + { + boot_args = malloc(1024); + if (boot_args == NULL) { + printf("Failed to allocate memory for bootargs!\n"); + return -1; + } + + memset(boot_args, 0x0, 1024); + + /* append the required bootargs saved in the env variables */ + mtd_parts = env_get("mtdparts"); + if (mtd_parts) + len = snprintf(boot_args, 1024, "mtdparts=%s ", mtd_parts); + + rootfs = env_get("rootfs_opts"); + if (rootfs) + strncat(boot_args, rootfs, 1024-len); + + /* any other argment to append? */ + extra_args = env_get("+bootargs"); + if (extra_args) { + strncat(boot_args, " ", 1024-strlen(boot_args)); + strncat(boot_args, extra_args, 1024-strlen(boot_args)); + } + + strncat(boot_args, " cma=0M", 1024-strlen(boot_args)); + + printf("appending extra boot args to linux boot command line:\n"); + printf(" %s\n", boot_args); + dtb_set_bootargs(blob, boot_args, 1); + + free(boot_args); + } + + return 0; +} + +static int is_cma_rsvmem_enabled(void *fdt_ptr) +{ + char dt_node_name[64]; + int len; + int ret = 0; + + sprintf(dt_node_name, "/%s/%s%s", DT_RSVD_NODE_STR, DT_RSVD_PREFIX_STR, CMA_BASE_ADDR_STR); + if (dtb_get_prop(fdt_ptr, dt_node_name, "reg", &len)) { + ret = 1; + } + return ret; +} + +static void del_all_cma_nodes(void *dtb_ptr) +{ + char dt_node_name[64]; + + sprintf(dt_node_name, "%s%s", DT_RSVD_PREFIX_STR, CMA_BASE_ADDR_STR); + dtb_del_reserved_memory(dtb_ptr, dt_node_name); + dtb_del_cma_rsvmem_device(dtb_ptr); + + return; +} + +static int get_dsl_excl_range(void *dtb_ptr, char *name, uint64_t* low, uint64_t* high) +{ + int ret = -1; + + ret = dtb_getprop_cma_rsv_param(dtb_ptr, name, "excl-addr-low", low); + if (ret != 0) + return ret; + ret = dtb_getprop_cma_rsv_param(dtb_ptr, name, "excl-addr-high", high); + + return ret; +} + +static void set_reserved_memory(void *dtb_ptr, bd_t *bd) +{ + uint64_t mem_end = bd->bi_dram[0].size + bd->bi_dram[0].start; + uint64_t rsrv_mem_required = 0; + char dt_node_name[64]; + int use_max_from_env_and_dt = 0; + uint64_t size; + +#ifdef CONFIG_RSVD_USE_MAX_FROM_ENV_AND_DT + use_max_from_env_and_dt = 1; +#endif + + struct mem_reserv_prm { + uint64_t size; + int size_in_mb; + char * of_str; + char * env_str; + int from_dt; + } params[] = { + /* DSL memory must be reserved first toward end of 256MB */ + {0, 0, ADSL_BASE_ADDR_STR, NULL, 0}, + {0, 1, PARAM1_BASE_ADDR_STR, ENV_RDP1, 0}, {0, 1, PARAM2_BASE_ADDR_STR, ENV_RDP2, 0}, + {0, 1, BUFMEM_BASE_ADDR_STR, ENV_BUFMEM, 0}, {0, 1, RNRMEM_BASE_ADDR_STR, ENV_RNRMEM, 0}, + {0, 1, DHD_BASE_ADDR_STR, ENV_DHD1, 0}, {0, 1, DHD_BASE_ADDR_STR_1, ENV_DHD2, 0}, + {0, 1, DHD_BASE_ADDR_STR_2, ENV_DHD3, 0}, {0, 1, NULL, NULL, 0}}, *params_ptr = params; + + if(!dtb_ptr){ + printf("RSVD: ERROT NULL dtb pointer!"); + return; + } + +#if defined(CONFIG_BCM63138) || defined(CONFIG_BCM63148) + if (mem_end > 256 * SZ_1M) + mem_end = 256 * SZ_1M; +#endif + + /* We support only alocation using CMA */ + /* Some device like 63178, 47622 don't use CMA, just exit here */ + if (!is_cma_rsvmem_enabled(dtb_ptr)){ + return; + } + + /*compute alocation memory*/ + while (params_ptr->of_str){ + size = 0; + /* get size from environment */ + if (params_ptr->env_str){ + params_ptr->size = env_get_ulong(params_ptr->env_str, 0, 0); + if (params_ptr->size_in_mb) + params_ptr->size *= SZ_1M; + } + /* if no environment for the parameter or CONFIG_ENV_NOT_OVERRIDE defined, + get size from DT */ + if (!params_ptr->size || use_max_from_env_and_dt){ + if (dtb_getprop_cma_rsvmem_size(dtb_ptr, params_ptr->of_str, &size) != 0){ + params_ptr->size = 0; + printf("RSVD: not found enrty for %s\n", params_ptr->of_str); + } + else if (strcmp(params_ptr->of_str, ADSL_BASE_ADDR_STR) == 0) { + uint64_t adsl_excl_low = 0, adsl_excl_high; + if ((get_dsl_excl_range(dtb_ptr, params_ptr->of_str, &adsl_excl_low, &adsl_excl_high) == 0) && (adsl_excl_low != 0)) { + printf("adsl_excl_memory_range: low=0x%X high=0x%X rsv_size=0x%X mem_end=0x%X\n", adsl_excl_low, adsl_excl_high, size, mem_end); + if ((mem_end > adsl_excl_low) && ((mem_end - size) < adsl_excl_high)) + mem_end = adsl_excl_low; + } + else { + if( mem_end > 256*SZ_1M ) + mem_end = 256*SZ_1M; + } + } + } + + if(size && (!use_max_from_env_and_dt || params_ptr->size < size)){ + params_ptr->from_dt = 1; + params_ptr->size = size; + } + + if (!params_ptr->size){ + params_ptr++; + continue; + } + + params_ptr->size = ALIGN(params_ptr->size, SZ_1M); + + /* make sure we don't reserve too much memory in total that can cause + * conflict with linux. Print big warining */ + if ((rsrv_mem_required + params_ptr->size) > (mem_end - (32 * SZ_1M))) { + /* out of the range, worning and skip it */ + printf("RSVD: Not enough memory %s skipped!\n", params_ptr->of_str); + printf("Requested 0x%llx already alocated 0x%llx, mem_end 0x%llx\n", + params_ptr->size, rsrv_mem_required, mem_end); + dtb_del_cma_rsvmem(dtb_ptr, params_ptr->of_str); + params_ptr->size = 0; + } + else + rsrv_mem_required += params_ptr->size; + + params_ptr++; + } + + if (rsrv_mem_required == 0 ) { + /* remove the cma nodes if no rsvmem is needed */ + del_all_cma_nodes(dtb_ptr); + printf("RSVD: No CMA memory reserved\n"); + return; + } + + /* update DTB and environmet */ + params_ptr = params; + + while (params_ptr->of_str){ + if (!params_ptr->size){ + params_ptr++; + continue; + } + if(!params_ptr->from_dt){ + /* update DT */ + dtb_setprop_cma_rsvmem_size(dtb_ptr, params_ptr->of_str, params_ptr->size); + } + else if (params_ptr->env_str){ + /* propogate in env, make it visible in linux proc */ + env_set_ulong(params_ptr->env_str, params_ptr->size_in_mb?params_ptr->size/SZ_1M:params_ptr->size); + } + printf("RSVD: Allocated for %s %uMB\n", params_ptr->of_str, (uint32_t)(params_ptr->size/SZ_1M)); + params_ptr++; + } + + /* kernel want 4MB aligned in both start address and size + mem_end already aligned so need care only of rsrv_mem_required*/ + rsrv_mem_required = ALIGN(rsrv_mem_required, SZ_4M); + + sprintf(dt_node_name, "%s%s", DT_RSVD_PREFIX_STR, CMA_BASE_ADDR_STR); + if (!dtb_set_reserved_memory(dtb_ptr, dt_node_name, mem_end - rsrv_mem_required, rsrv_mem_required)) + printf("RSVD: Total 0x%08x bytes CMA reserved memory @ 0x%08x\n", + (uint32_t)rsrv_mem_required, (uint32_t)(mem_end - rsrv_mem_required)); + else + printf("RSVD: ERROR set CMA reserved memory!\n"); +} + +static void set_flash_node(void* fdt_addr) +{ + if (bcmbca_get_boot_device() != BOOT_DEVICE_SPI) + fdt_status_disabled_by_alias(fdt_addr, "spinand0"); + + if (bcmbca_get_boot_device() != BOOT_DEVICE_NAND) + fdt_status_disabled_by_alias(fdt_addr, "nand0") ; + + if (bcmbca_get_boot_device() != BOOT_DEVICE_NOR) + fdt_status_disabled_by_alias(fdt_addr, "spinor0") ; +} + +int ft_system_setup(void *blob, bd_t *bd) +{ + int ret; + + set_flash_node(blob); + ft_update_cpu_nodes(blob, bd); + set_reserved_memory(blob, bd); + ret = set_bootargs(blob); + ret |= set_uboot_env(blob); + ret |= set_uboot_version(blob); + ret |= set_sec_exports(blob); + + return ret; +} + +static inline char * dev_to_string(int bdevice) +{ + char *device_str=NULL; + switch(bdevice) + { + case BOOT_DEVICE_NAND: + case BOOT_DEVICE_SPI: /* SPI NAND */ + device_str=FLASH_DEV_STR_NAND; + break; + + case BOOT_DEVICE_NOR: + device_str=FLASH_DEV_STR_SPINOR; + break; + case BOOT_DEVICE_MMC1: + case BOOT_DEVICE_MMC2: + case BOOT_DEVICE_MMC2_2: + device_str=FLASH_DEV_STR_EMMC; + break; + + } + return device_str; +} + +void update_uboot_fdt(void *fdt_addr, tpl_params *tplp) +{ + int offset, regsize; + uint64_t total_size; +#if defined(CONFIG_ARM64) + uint64_t reg[4]; + uint64_t split_size = PHYS_SDRAM_1_SIZE; +#if defined(PHYS_SDRAM_2) + uint64_t second_base = PHYS_SDRAM_2; +#else + uint64_t second_base = PHYS_SDRAM_1_SIZE; +#endif +#else + uint32_t reg[2]; +#endif + + total_size = ((uint64_t)tplp->ddr_size)*SZ_1M; + + /* Fixup memory offsets */ + offset=fdt_path_offset (fdt_addr, "/memory"); + if(offset >= 0) + { +#if defined(CONFIG_ARM64) + reg[0] = cpu_to_fdt64(0); + if (total_size <= split_size) { + reg[1] = cpu_to_fdt64(total_size); + regsize = 16; + } else { + reg[1] = cpu_to_fdt64(split_size); + reg[2] = cpu_to_fdt64(second_base); + reg[3] = cpu_to_fdt64(total_size-split_size); + regsize = 32; + } +#else + reg[0] = cpu_to_fdt32(0); + reg[1] = cpu_to_fdt32(total_size); + regsize = sizeof(reg); +#endif + if(fdt_setprop(fdt_addr, offset, "reg", reg, regsize)) + { + printf("Could not set memory node in the fdt, device may not boot properly\n"); + } + } + + /*get boot device from tplparams */ + offset=fdt_path_offset (fdt_addr, "/chosen"); + if(offset >= 0) + { + char *dev_string=dev_to_string(tplp->boot_device); + if(dev_string != NULL) + { + if(fdt_setprop_string(fdt_addr, offset, "boot_device", dev_string)) + { + printf("Could not set boot device node in the fdt, device may not boot properly\n"); + } + } + +#if defined(CONFIG_BCMBCA_PMC) + char *avs_disable = + find_spl_env_val(tplp->environment, ENV_AVS_DISABLE); + if (avs_disable && *avs_disable == '1' && + fdt_setprop(fdt_addr, offset, ENV_AVS_DISABLE, + avs_disable, sizeof(*avs_disable))) + { + printf("Could not set avs_disable=1 in the fdt, " + "device may not boot properly\n"); + } +#endif + } + + //other parameters??? + set_flash_node(fdt_addr); +} + +__attribute__ ((weak)) +int get_nr_cpus() +{ + return -1; +} + +#define CPU_STR "/cpus/cpu@" + +void ft_update_cpu_nodes(void *blob, bd_t * bd) +{ + int nr_cpus=get_nr_cpus(), cpu=0; + int offset; + char cpu_node_str[30]; + + if(nr_cpus >= 1) + { + for( cpu = QUAD_CPUS-1; cpu >= nr_cpus; cpu--) + { + if(snprintf(cpu_node_str, sizeof(cpu_node_str), "%s%d", CPU_STR, cpu) != -1) + { + offset = fdt_path_offset(blob, cpu_node_str); + if (offset >= 0) + { + fdt_del_node(blob, offset); + } + } + } + } + + return; +} diff --git a/arch/arm/mach-bcmbca/bcmbca_ddr/Makefile b/arch/arm/mach-bcmbca/bcmbca_ddr/Makefile new file mode 100644 index 0000000000..c80812f6e0 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcmbca_ddr/Makefile @@ -0,0 +1 @@ +# This file is intentionally blank diff --git a/arch/arm/mach-bcmbca/bcmbca_dpfe/Kconfig b/arch/arm/mach-bcmbca/bcmbca_dpfe/Kconfig new file mode 100644 index 0000000000..472d861d89 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcmbca_dpfe/Kconfig @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +config MHS_VER + string "MHS version" + default "2p2" if BCM47622 + default "4p3" if BCM63146 + default "5p3" if BCM4912 + +config DPFE_SEGSIZE + hex "dpfe segment size" + default 0x500c + +config MEMC_VER + string "MEMC version" + default "4p50" if BCM47622 + default "5p1" if BCM63146 || BCM4912 diff --git a/arch/arm/mach-bcmbca/bcmbca_dpfe/Makefile b/arch/arm/mach-bcmbca/bcmbca_dpfe/Makefile new file mode 100644 index 0000000000..c80812f6e0 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcmbca_dpfe/Makefile @@ -0,0 +1 @@ +# This file is intentionally blank diff --git a/arch/arm/mach-bcmbca/bcmbca_nand_spl.c b/arch/arm/mach-bcmbca/bcmbca_nand_spl.c new file mode 100644 index 0000000000..9f3cd6c204 --- /dev/null +++ b/arch/arm/mach-bcmbca/bcmbca_nand_spl.c @@ -0,0 +1,148 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 Broadcom Ltd. + */ + +#include +#include +#include + +#include + +#include "bca_common.h" +#include "bcmbca_nand_spl.h" +#include "brcmnand_spl.h" +#include + + +u32 (*get_block_size)(void); +u32 (*get_page_size)(void); +u64 (*get_total_size)(void); +int (*read_block)(int block, int offset, u8 *dst, u32 len); +int (*is_bad_block)(int block); + + +int type = BOOT_DEVICE_NAND; + + +void nand_init(void) +{ + static int nand_init = 0; + + /* return if already initalized */ + if (nand_init) + return; + + type = bcmbca_get_boot_device(); + + switch (type) + { +#if defined(CONFIG_MTD_SPI_NAND) + case BOOT_DEVICE_SPI: + spinandmini_init(); + get_page_size = spinandmini_get_page_size; + get_block_size = spinandmini_get_block_size; + get_total_size = spinandmini_get_total_size; + read_block = spinandmini_read_buf; + is_bad_block = spinandmini_is_bad_block; + break; +#endif + +#if defined(CONFIG_NAND_BRCMNAND) + case BOOT_DEVICE_NAND: + default: + brcmnand_init(); + get_page_size = brcmnand_get_page_size; + get_block_size = brcmnand_get_block_size; + get_total_size = brcmnand_get_total_size; + read_block = brcmnand_read_buf; + is_bad_block = brcmnand_is_bad_block; + break; +#endif + } + + nand_init = 1; + + return; +} + +void nand_deselect(void) +{ +} + +u32 nand_spl_get_page_size(void) +{ + return (*get_page_size)(); +} + +u32 nand_spl_get_blk_size(void) +{ + return (*get_block_size)(); +} + +u64 nand_spl_get_total_size(void) +{ + return (*get_total_size)(); +} + +__weak int nand_is_bad_block(unsigned int blk) +{ + return (*is_bad_block)(blk); +} + +int nand_spl_read_block(int block, int offset, int len, void *dst) +{ + int ret; + + ret = (*read_block)(block, offset, dst, len); + return (ret > 0) ? 0 : ret; +} + +int nand_spl_load_image(u32 offs, u32 size, void *dst) +{ + u32 block, lastblock, block_size; + u32 block_offset, read_size; + int ret = 0; + + block_size = nand_spl_get_blk_size(); + /* offs has to be aligned to a page address! */ + block = offs / block_size; + lastblock = (offs + size - 1) / block_size; + block_offset = offs % block_size; + read_size = block_size - block_offset; + if (read_size > size) + read_size = size; + + if (nand_is_bad_block(block)) + return -EIO; + + while (block <= lastblock) { + /* Skip bad blocks */ + if (!nand_is_bad_block(block)) { + ret = nand_spl_read_block(block, block_offset, read_size, dst); + if (ret < 0) { + printf("read block %d offset 0x%x size 0x%x dst %p failed ret %d\n", + block, block_offset, read_size, dst, ret); + return -EIO; + } + } else { + printf("nand_spl_load_image skip bad block %d\n", block); + lastblock++; + block++; + continue; + } + + size -= read_size; + if (size == 0) + break; + + dst += read_size; + read_size = block_size; + if (read_size > size) + read_size = size; + block_offset = 0; + block++; + } + + return 0; +} diff --git a/arch/arm/mach-bcmbca/ddrinit_dpfe.c b/arch/arm/mach-bcmbca/ddrinit_dpfe.c new file mode 100644 index 0000000000..c6a1263c16 --- /dev/null +++ b/arch/arm/mach-bcmbca/ddrinit_dpfe.c @@ -0,0 +1,243 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include + +#include "spl_ddrinit.h" +#include "ddrinit_dpfe.h" +#include "boot_blob.h" +#include "tpl_params.h" + +typedef int (*load_dpfe_seg_fun)(dpfe_seg_param* param); + +/* +This is a stub function for jtag load. +cmm script will have a breakpoint, stop here and load the next stage of the dpfe +*/ +static int load_dpfe_segment_stub(dpfe_seg_param* param) +{ +static int last_seg=0; + + /* cmm script sets this to 1 when it reaches the last stage of dpfe */ + return last_seg; +} +static int load_dpfe_segment(dpfe_seg_param* param) +{ + int last_seg = -1, rc; + int size = param->buf_size; + uint32_t magic = BP_DDR_IS_DDR4(param->mcb_sel) ? DPFE_DDR4_TABLE_MAGIC|param->seg_id : DPFE_DDR3_TABLE_MAGIC|param->seg_id; + + if (param->seg_buf && param->buf_size) { + rc = load_boot_blob(magic, param->seg_id, param->seg_buf, &size); + if (rc == BOOT_BLOB_NOT_IN_HASTTBL) { /* seg id not in has table. try with last seg id flag */ + size = param->buf_size; + rc = load_boot_blob(magic|0x80, param->seg_id|0x80, param->seg_buf, &size); + if (rc == BOOT_BLOB_SUCCESS) + last_seg = 1; + else + last_seg = rc; + } else + last_seg = rc; + } + debug("load_dpfe_segment %d return %d\n", param->seg_id, last_seg); + return last_seg; +} + + +/* return 1 if there is alias, 0 no alias. memsize in MB */ +static int memc_alias_test(uint32_t memsize) +{ + volatile uint32_t *base_addr; + volatile uint32_t *test_addr; + uint64_t test_size, total_size; +#ifdef CONFIG_BCMBCA_IKOS + uint32_t data; +#endif + int ret = 0; + + total_size = ((uint64_t) (memsize)) << 20; + base_addr = (volatile uint32_t *)((uintptr_t) CONFIG_SYS_SDRAM_BASE); + + for (test_size = 256; test_size < total_size; + test_size = test_size << 1) { + test_addr = + (volatile uint32_t *)((uintptr_t) base_addr + + (uintptr_t) test_size); +#if defined(PHYS_SDRAM_2) + /* if we are over the lower memory region from 0 to 2GB, we shift to the upper memory region */ + if (test_size >= PHYS_SDRAM_1_SIZE) + test_addr = + (volatile uint32_t *)((uintptr_t) test_addr + + PHYS_SDRAM_1_SIZE); +#endif +#ifdef CONFIG_BCMBCA_IKOS + data = *test_addr; +#endif + *base_addr = 0; + *test_addr = 0xaa55beef; + if (*base_addr == *test_addr) { + printf("alias detected at 0x%p\n", test_addr); + ret = 1; + break; + } + /* check base addr and make sure it does not get overriden */ + if (*base_addr != 0x0) { + printf("alias test at 0x%p corrupted base 0x%x 0x%x\n", + test_addr, *base_addr, *test_addr); + ret = 1; + break; + } +#ifdef CONFIG_BCMBCA_IKOS + *test_addr = data; +#endif + } + + return ret; +} + +static int memory_test_range(uint32_t *addr, uint32_t size) +{ + uint32_t *temp; + int i, ret = 0; + uint32_t data; + + for (temp = addr, i = 0; i < size/sizeof(uint32_t); i++) + *temp++ = i; + + for (temp = addr, i = 0; i < size/sizeof(uint32_t); i++) { + data = *temp++; + if (data != i) + break; + } + + if (i != size/sizeof(uint32_t)) { + printf("DDR test failed at 0x%p\n\r", addr+i); + ret = -1; + } + + return ret; +} + +/* return 1 if there is error, 0 no error. memsize in MB */ +static int memc_memory_test(uint32_t memsize) +{ + uint32_t *addr; + int ret = 0; + uint64_t total_size; + + total_size = ((uint64_t) (memsize)) << 20; + + addr = (uint32_t *)CONFIG_SYS_SDRAM_BASE; + ret = memory_test_range(addr, SZ_4K); +#if defined(PHYS_SDRAM_2) + if (total_size > PHYS_SDRAM_1_SIZE) { + addr = (uint32_t *)PHYS_SDRAM_2; + total_size -= PHYS_SDRAM_1_SIZE; + while ((int64_t)total_size) { + ret |= memory_test_range(addr, SZ_4K); + total_size -= SZ_1G; + addr = (uint32_t*)((uint64_t)addr + SZ_1G); + } + } +#endif + if (!ret) + printf("DDR test done successfully\n\r"); + else { + ret = -2; + } + + return ret; +} + + +int ddr_init_dpfe(ddr_init_param * ddrinit_params) +{ + uint32_t ret, memcfg, ddr_size; + int is_safemode; + uint8_t *seg_buf = NULL; + int seg_id, last_seg; + dpfe_seg_param seg_params; + dpfe_param dpfe_params; + dpfe_func run_dpfe; + load_dpfe_seg_fun load_dpfe_segment_p=load_dpfe_segment; + + + if (IS_JTAG_LOADED(boot_params)) + { + load_dpfe_segment_p=load_dpfe_segment_stub; + } + + is_safemode = ddrinit_params->safe_mode; + memcfg = ddrinit_params->mcb_sel; + + seg_buf = (void *)ddrinit_params->dpfe_segbuf; + run_dpfe = (dpfe_func)ddrinit_params->dpfe_stdalone; + + dpfe_params.mcb = (uint32_t *) ddrinit_params->mcb; +#ifdef CONFIG_BCMBCA_DDRC_SCRAMBLER + dpfe_params.seed = ddrinit_params->seed; +#endif + dpfe_params.ddr_size = &ddr_size; + dpfe_params.seg_param = &seg_params; + dpfe_params.dpfe_option = 0; + + if (is_safemode) + dpfe_params.dpfe_option |= DPFE_OPTION_SAFEMODE; + + seg_id = last_seg = 0; + dpfe_params.dpfe_option |= DPFE_OPTION_SEG_FIRST; + + seg_params.seg_buf = seg_buf; + seg_params.mcb_sel = memcfg; + seg_params.buf_size = CONFIG_DPFE_SEGSIZE;; + + while (!last_seg) { + seg_params.seg_id = seg_id; + last_seg = load_dpfe_segment_p(&seg_params); + if (last_seg < 0) { + printf("failed to load dpfe segment %d!\n\r", seg_id); + return -1; + } + if (last_seg) + dpfe_params.dpfe_option |= DPFE_OPTION_SEG_LAST; + + ret = run_dpfe(&dpfe_params); + if (ret < 0) { + return -1; + } + + if (ret > 0) { + printf("shmoo finish early at segment %d!\n\r", seg_id); + break; + } + + dpfe_params.dpfe_option &= ~DPFE_OPTION_SEG_MASK; + seg_id++; + } + + /* make sure configure register write are really carried over to target block */ + __asm__ __volatile__("dsb sy"); + __asm__ __volatile__("isb"); + + /* get the ddr size in mega bytes */ + if (ddrinit_params->ddr_size != NULL) + *ddrinit_params->ddr_size = ddr_size; + + + /* Make sure it is configured size is not larger the actual size */ + if (is_safemode == 0) { + if (memc_alias_test(ddr_size)) { + printf + ("\nMemory alias detected. Probably wrong memory size is specified or memory subsystem not working\n"); + return -3; + } + } + + if ((ret = memc_memory_test(ddr_size))) + return ret; + + return ret; +} diff --git a/arch/arm/mach-bcmbca/ddrinit_reg.c b/arch/arm/mach-bcmbca/ddrinit_reg.c new file mode 100644 index 0000000000..32bddcee13 --- /dev/null +++ b/arch/arm/mach-bcmbca/ddrinit_reg.c @@ -0,0 +1,491 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include + +#include "spl_ddrinit.h" + +/* + op - operation type + 0 - read, 32 bit read operation + 1 - write, 32 bit write operation + 2 - poll read, read until the value read mactches read_value&mask +*/ +#define REG_OP_READ 0x0 +#define REG_OP_WRITE 0x1 +#define REG_OP_POLL 0x2 + +typedef struct _reg_entry { + uint32_t op; + uint32_t addr; + uint32_t mask; + uint32_t value; +} reg_entry; + +reg_entry reg_table[] = { +#ifdef CONFIG_BCM63146 + {1, 0x800400b8, 0, 0x12345678}, + {0, 0x800400b8, 0, 0x12345678}, + {0, 0x80040e88, 0, 0x00030003}, + {1, 0x80040e88, 0, 0x80030003}, + {0, 0x80040914, 0, 0x00000011}, + {0, 0x80040008, 0, 0x01000000}, + {1, 0x80040008, 0, 0x01000000}, + {1, 0x8004091c, 0, 0x00000307}, + {1, 0x80060364, 0, 0x00000001}, + {1, 0x80060228, 0, 0x02000000}, + {1, 0x8006022c, 0, 0x00000a0e}, + {1, 0x80060230, 0, 0x00000000}, + {1, 0x80060030, 0, 0x00000000}, + {1, 0x8006002c, 0, 0x00000000}, + {1, 0x80060014, 0, 0x00000003}, + {1, 0x80060018, 0, 0x00000000}, + {1, 0x80060020, 0, 0x00000032}, + {1, 0x80060024, 0, 0x02a99999}, + {0, 0x80060034, 0, 0x00000001}, + {1, 0x80060034, 0, 0x00000003}, + {1, 0x80060044, 0, 0x00000101}, + {1, 0x80060018, 0, 0x00000001}, + {0, 0x8006000c, 0, 0x00004001}, + {1, 0x80060018, 0, 0x00000001}, + {0, 0x80040008, 0, 0x01000000}, + {1, 0x80040008, 0, 0x01000000}, + {1, 0x80040008, 0, 0x01000200}, + {1, 0x8006002c, 0, 0x00000000}, + {0, 0x8006035c, 0, 0x00000011}, + {1, 0x8006035c, 0, 0x00000010}, + {1, 0x80060064, 0, 0x00072020}, + {0, 0x80060388, 0, 0x07f8f0f0}, + {1, 0x80060388, 0, 0x27f8f0f0}, + {0, 0x8006035c, 0, 0x00000010}, + {1, 0x8006035c, 0, 0x00000000}, + {1, 0x8006035c, 0, 0x00000008}, + {1, 0x8006034c, 0, 0x00000000}, + {1, 0x80060354, 0, 0x00000000}, + {1, 0x80060344, 0, 0x00000000}, + {1, 0x8006020c, 0, 0x00031bff}, + {1, 0x80060210, 0, 0x00031bff}, + {1, 0x80060078, 0, 0x00031bff}, + {1, 0x8006007c, 0, 0x00031bff}, + {1, 0x80060720, 0, 0x00031bff}, + {1, 0x80060724, 0, 0x00031bff}, + {1, 0x80060728, 0, 0x00031bff}, + {1, 0x80060920, 0, 0x00031bff}, + {1, 0x80060924, 0, 0x00031bff}, + {1, 0x80060928, 0, 0x00031bff}, + {0, 0x80060220, 0, 0x40000002}, + {1, 0x80060220, 0, 0x40000002}, + {0, 0x80060050, 0, 0x0000000c}, + {1, 0x80060050, 0, 0x0000000c}, + {0, 0x80060068, 0, 0x00180000}, + {1, 0x80060068, 0, 0x00180000}, + {1, 0x80060368, 0, 0x00001000}, + {0, 0x800606d0, 0, 0x00000000}, + {1, 0x80060734, 0, 0x0000083c}, + {0, 0x800608d0, 0, 0x00000000}, + {1, 0x80060934, 0, 0x0000083c}, + {1, 0x80060380, 0, 0x00000000}, + {1, 0x80060718, 0, 0x00000000}, + {1, 0x80060918, 0, 0x00000000}, + {0, 0x8006072c, 0, 0x00020000}, + {1, 0x8006072c, 0, 0x00020000}, + {1, 0x8006092c, 0, 0x00020000}, + {1, 0x80060730, 0, 0x001241c3}, + {1, 0x80060930, 0, 0x001241c3}, + {0, 0x8006071c, 0, 0x00c0000a}, + {1, 0x8006071c, 0, 0x0000000a}, + {1, 0x8006091c, 0, 0x0000000a}, + {0, 0x80060388, 0, 0x27f8f0f0}, + {1, 0x80060388, 0, 0x07f8f0f0}, + {1, 0x80060364, 0, 0x00000001}, + {0, 0x80060364, 0, 0x00000003}, + {0, 0x80060388, 0, 0x07f8f0f0}, + {1, 0x80060388, 0, 0x27f8f0f0}, + {0, 0x80060388, 0, 0x27f8f0f0}, + {1, 0x80060388, 0, 0x2ff8f0f0}, + {0, 0x8006038c, 0, 0x00000000}, + {1, 0x8006038c, 0, 0x00000040}, + {0, 0x80060304, 0, 0x00000000}, + {0, 0x80060304, 0, 0x00000000}, + {1, 0x800602d4, 0, 0xe0820228}, + {1, 0x800602e0, 0, 0x80820228}, + {1, 0x800602ec, 0, 0x60820228}, + {0, 0x80060304, 0, 0x00000002}, + {0, 0x80060304, 0, 0x00000002}, + {1, 0x80060304, 0, 0x00000002}, + {1, 0x800602d4, 0, 0xe0830000}, + {1, 0x800602e0, 0, 0x80830000}, + {1, 0x800602ec, 0, 0x60830000}, + {0, 0x80060304, 0, 0x00000002}, + {0, 0x80060304, 0, 0x00000002}, + {1, 0x80060304, 0, 0x00000002}, + {1, 0x800602d4, 0, 0xe0810006}, + {1, 0x800602e0, 0, 0x80810006}, + {1, 0x800602ec, 0, 0x60810006}, + {0, 0x80060304, 0, 0x00000002}, + {0, 0x80060304, 0, 0x00000002}, + {1, 0x80060304, 0, 0x00000002}, + {1, 0x800602d4, 0, 0xe0801124}, + {1, 0x800602e0, 0, 0x80801124}, + {1, 0x800602ec, 0, 0x60801124}, + {0, 0x80060304, 0, 0x00000002}, + {0, 0x80060304, 0, 0x00000002}, + {1, 0x80060304, 0, 0x00000002}, + {1, 0x800602d4, 0, 0xe0300400}, + {1, 0x800602e0, 0, 0x80300400}, + {1, 0x800602ec, 0, 0x60300400}, + {1, 0x80060364, 0, 0x00000000}, + {0, 0x80060364, 0, 0x00000000}, + {0, 0x80060308, 0, 0x00011124}, + {0, 0x8006030c, 0, 0x00010006}, + {0, 0x80060310, 0, 0x00010228}, + {0, 0x80060314, 0, 0x00010000}, + {1, 0x80040918, 0, 0x000003f1}, + {0, 0x80040008, 0, 0x01000200}, + {1, 0x80040008, 0, 0x01000600}, + {1, 0x800403a8, 0, 0x00000011}, + {1, 0x800403b8, 0, 0x0000000a}, + {1, 0x80040390, 0, 0x100f0e0d}, + {1, 0x8004038c, 0, 0x14131211}, + {1, 0x80040388, 0, 0x18171615}, + {1, 0x80040384, 0, 0x001b1a19}, + {1, 0x80040380, 0, 0x00000000}, + {1, 0x800403a4, 0, 0x000c0b0a}, + /* SKIP MEMC SRAM disable. Used by MMU table */ +#if 0 + {0, 0x80040310, 0, 0x80000001}, + {1, 0x80040310, 0, 0x00000001}, +#endif + {1, 0x8004092c, 0, 0x000e0a0e}, + {1, 0x80040930, 0, 0x00040007}, + {1, 0x80040934, 0, 0x00000000}, + {1, 0x80040938, 0, 0x26000e24}, + {1, 0x8004093c, 0, 0x00081000}, + {1, 0x80040940, 0, 0x00000000}, + {1, 0x80040944, 0, 0x00000408}, + {1, 0x80040948, 0, 0x0002000b}, + {1, 0x8004094c, 0, 0x01560056}, + {1, 0x80040954, 0, 0x40001100}, + {1, 0x80040958, 0, 0x008d0118}, + {0, 0x80040048, 0, 0x04100002}, + {1, 0x80040048, 0, 0x04100002}, + {1, 0x8004004c, 0, 0x00000380}, + {1, 0x80040050, 0, 0x00000000}, + {1, 0x80040054, 0, 0x08080808}, + {1, 0x80040058, 0, 0x000000e4}, + {0, 0x80040908, 0, 0x00000000}, + {1, 0x80040908, 0, 0x00000001}, + {0, 0x80040910, 0, 0x00000000}, + {1, 0x80040910, 0, 0x00000005}, + {0, 0x80040008, 0, 0x01000600}, + {1, 0x80040008, 0, 0x81000700}, + {0, 0x80040008, 0, 0x81000700}, + {0, 0, 0, 0x9}, /* hijack last entry value for total ddr size */ +#endif + +#ifdef CONFIG_BCM4912 + /* 2x4096Mbit DDR3 1067Mz */ + {1, 0x800400b8, 0, 0x12345678}, + {0, 0x800400b8, 0, 0x12345678}, + {0, 0x80040e88, 0, 0x00030003}, + {1, 0x80040e88, 0, 0x80030003}, + {0, 0x80040914, 0, 0x00000011}, + {0, 0x80040008, 0, 0x01000000}, + {1, 0x80040008, 0, 0x01000000}, + {1, 0x8004091c, 0, 0x00000307}, + {1, 0x80060364, 0, 0x00000001}, + {1, 0x80060228, 0, 0x00000000}, + {1, 0x8006022c, 0, 0x00000a0e}, + {1, 0x80060230, 0, 0x00000000}, + {1, 0x80060030, 0, 0x00000000}, + {1, 0x8006002c, 0, 0x00000000}, + {1, 0x80060014, 0, 0x00000003}, + {1, 0x80060018, 0, 0x00000000}, + {1, 0x80060020, 0, 0x00000032}, + {1, 0x80060024, 0, 0x02a99999}, + {1, 0x80060044, 0, 0x00000101}, + {1, 0x80060018, 0, 0x00000001}, + {0, 0x8006000c, 0, 0x00004001}, + {1, 0x80060018, 0, 0x00000003}, + {0, 0x80040008, 0, 0x01000000}, + {1, 0x80040008, 0, 0x01000000}, + {1, 0x80040008, 0, 0x01000200}, + {1, 0x8006002c, 0, 0x00000000}, + {0, 0x8006035c, 0, 0x00000011}, + {1, 0x8006035c, 0, 0x00000010}, + {1, 0x80060064, 0, 0x00072020}, + {0, 0x80060388, 0, 0x07f8f0f0}, + {1, 0x80060388, 0, 0x27f8f0f0}, + {0, 0x8006035c, 0, 0x00000010}, + {1, 0x8006035c, 0, 0x00000000}, + {1, 0x8006035c, 0, 0x00000008}, + {1, 0x8006034c, 0, 0x00000000}, + {1, 0x80060354, 0, 0x00000000}, + {1, 0x80060344, 0, 0x00000000}, + {1, 0x8006020c, 0, 0x00031bff}, + {1, 0x80060210, 0, 0x00031bff}, + {1, 0x80060078, 0, 0x00031bff}, + {1, 0x8006007c, 0, 0x00031bff}, + {1, 0x80060720, 0, 0x00031bff}, + {1, 0x80060724, 0, 0x00031bff}, + {1, 0x80060728, 0, 0x00031bff}, + {1, 0x80060920, 0, 0x00031bff}, + {1, 0x80060924, 0, 0x00031bff}, + {1, 0x80060928, 0, 0x00031bff}, + {1, 0x80060b20, 0, 0x00031bff}, + {1, 0x80060b24, 0, 0x00031bff}, + {1, 0x80060b28, 0, 0x00031bff}, + {1, 0x80060d20, 0, 0x00031bff}, + {1, 0x80060d24, 0, 0x00031bff}, + {1, 0x80060d28, 0, 0x00031bff}, + {0, 0x80060220, 0, 0x40000002}, + {1, 0x80060220, 0, 0x40000002}, + {0, 0x80060050, 0, 0x0000000c}, + {1, 0x80060050, 0, 0x0000000c}, + {0, 0x80060068, 0, 0x00180000}, + {1, 0x80060068, 0, 0x00180000}, + {1, 0x80060368, 0, 0x00001000}, + {0, 0x800606d0, 0, 0x00000000}, + {1, 0x80060734, 0, 0x0000083c}, + {0, 0x800608d0, 0, 0x00000000}, + {1, 0x80060934, 0, 0x0000083c}, + {0, 0x80060ad0, 0, 0x00000000}, + {1, 0x80060b34, 0, 0x0000083c}, + {0, 0x80060cd0, 0, 0x00000000}, + {1, 0x80060d34, 0, 0x0000083c}, + {1, 0x80060380, 0, 0x00000000}, + {1, 0x80060718, 0, 0x00000000}, + {1, 0x80060918, 0, 0x00000000}, + {1, 0x80060b18, 0, 0x00000000}, + {1, 0x80060d18, 0, 0x00000000}, + {0, 0x8006072c, 0, 0x00020000}, + {1, 0x8006072c, 0, 0x00020000}, + {1, 0x8006092c, 0, 0x00020000}, + {1, 0x80060b2c, 0, 0x00020000}, + {1, 0x80060d2c, 0, 0x00020000}, + {1, 0x80060730, 0, 0x001241c3}, + {1, 0x80060930, 0, 0x001241c3}, + {1, 0x80060b30, 0, 0x001241c3}, + {1, 0x80060d30, 0, 0x001241c3}, + {0, 0x8006071c, 0, 0x00c0000a}, + {1, 0x8006071c, 0, 0x0000000a}, + {1, 0x8006091c, 0, 0x0000000a}, + {1, 0x80060b1c, 0, 0x0000000a}, + {1, 0x80060d1c, 0, 0x0000000a}, + {0, 0x80060388, 0, 0x27f8f0f0}, + {1, 0x80060388, 0, 0x07f8f0f0}, + {1, 0x80060364, 0, 0x00000001}, + {0, 0x80060364, 0, 0x00000003}, + {0, 0x80060388, 0, 0x07f8f0f0}, + {1, 0x80060388, 0, 0x27f8f0f0}, + {0, 0x80060388, 0, 0x27f8f0f0}, + {1, 0x80060388, 0, 0x2ff8f0f0}, + {0, 0x8006038c, 0, 0x00000000}, + {1, 0x8006038c, 0, 0x00000040}, + {0, 0x80060304, 0, 0x00000000}, + {0, 0x80060304, 0, 0x00000000}, + {1, 0x800602d4, 0, 0xe0820228}, + {1, 0x800602e0, 0, 0x80820228}, + {1, 0x800602ec, 0, 0x60820228}, + {0, 0x80060304, 0, 0x00000002}, + {0, 0x80060304, 0, 0x00000002}, + {1, 0x80060304, 0, 0x00000002}, + {1, 0x800602d4, 0, 0xe0830000}, + {1, 0x800602e0, 0, 0x80830000}, + {1, 0x800602ec, 0, 0x60830000}, + {0, 0x80060304, 0, 0x00000002}, + {0, 0x80060304, 0, 0x00000002}, + {1, 0x80060304, 0, 0x00000002}, + {1, 0x800602d4, 0, 0xe0810006}, + {1, 0x800602e0, 0, 0x80810006}, + {1, 0x800602ec, 0, 0x60810006}, + {0, 0x80060304, 0, 0x00000002}, + {0, 0x80060304, 0, 0x00000002}, + {1, 0x80060304, 0, 0x00000002}, + {1, 0x800602d4, 0, 0xe0801124}, + {1, 0x800602e0, 0, 0x80801124}, + {1, 0x800602ec, 0, 0x60801124}, + {0, 0x80060304, 0, 0x00000002}, + {0, 0x80060304, 0, 0x00000002}, + {1, 0x80060304, 0, 0x00000002}, + {1, 0x800602d4, 0, 0xe0300400}, + {1, 0x800602e0, 0, 0x80300400}, + {1, 0x800602ec, 0, 0x60300400}, + {1, 0x80060364, 0, 0x00000000}, + {0, 0x80060364, 0, 0x00000000}, + {0, 0x80060308, 0, 0x00011124}, + {0, 0x8006030c, 0, 0x00010006}, + {0, 0x80060310, 0, 0x00010228}, + {0, 0x80060314, 0, 0x00010000}, + {1, 0x80040918, 0, 0x000000a1}, + {0, 0x80040008, 0, 0x01000200}, + {1, 0x80040008, 0, 0x01000600}, + {1, 0x800403a8, 0, 0x00000021}, + {1, 0x800403b8, 0, 0x0000000a}, + {1, 0x80040390, 0, 0x100f0e0d}, + {1, 0x8004038c, 0, 0x14131211}, + {1, 0x80040388, 0, 0x18171615}, + {1, 0x80040384, 0, 0x001b1a19}, + {1, 0x80040380, 0, 0x00000000}, + {1, 0x800403a4, 0, 0x000c0b0a}, + /* SKIP MEMC SRAM disable. Used by MMU table */ +#if 0 + {0, 0x80040310, 0, 0x80000001}, + {1, 0x80040310, 0, 0x00000001}, +#endif + {1, 0x8004092c, 0, 0x000e0a0e}, + {1, 0x80040930, 0, 0x00040007}, + {1, 0x80040934, 0, 0x00000000}, + {1, 0x80040938, 0, 0x26000e24}, + {1, 0x8004093c, 0, 0x00081000}, + {1, 0x80040940, 0, 0x00000000}, + {1, 0x80040944, 0, 0x00000408}, + {1, 0x80040948, 0, 0x0002000b}, + {1, 0x8004094c, 0, 0x01560056}, + {1, 0x80040954, 0, 0x40001100}, + {1, 0x80040958, 0, 0x008d0118}, + {0, 0x80040048, 0, 0x04100002}, + {1, 0x80040048, 0, 0x04100002}, + {1, 0x8004004c, 0, 0x00000380}, + {1, 0x80040050, 0, 0x00000000}, + {1, 0x80040054, 0, 0x08080808}, + {1, 0x80040058, 0, 0x000000e4}, + {0, 0x80040908, 0, 0x00000000}, + {1, 0x80040908, 0, 0x00000001}, + {0, 0x80040910, 0, 0x00000007}, + {1, 0x80040910, 0, 0x00000005}, + {0, 0x80040008, 0, 0x01000600}, + {1, 0x80040008, 0, 0x81000700}, + {0, 0x80040008, 0, 0x81000700}, + {0, 0, 0, 0xa}, /* 1GB hijack last entry value for total ddr size */ +#endif +}; + +static uint32_t run_reg_init(void) +{ + reg_entry* entry = ®_table[0]; + uint32_t value; + + while (entry->addr) { + switch(entry->op) { + case REG_OP_READ: + value = *((volatile uint32_t*)(uintptr_t)entry->addr); + /* printf("ddr_regs read32 : addr=0x00%08x, data=0x%08x\n", entry->addr, value); */ + break; + + case REG_OP_WRITE: + *((volatile uint32_t*)(uintptr_t)entry->addr) = entry->value; + /* printf("ddr_regs write32 : addr=0x00%08x, data=0x%08x\n", entry->addr, entry->value); */ + break; + + case REG_OP_POLL: + while ((value = *((volatile uint32_t*)(uintptr_t)entry->addr)) + != (entry->value&entry->mask)); + break; + } + entry++; + } + + return 1<<(entry->value); +} + +/* return 1 if there is alias, 0 no alias. memsize in MB */ +static int memc_alias_test(uint32_t memsize) +{ + int ret = 0; + volatile uint32_t *base_addr; + volatile uint32_t *test_addr; + uint64_t test_size, total_size; +#ifdef CONFIG_BCMBCA_IKOS + uint32_t data; +#endif + + + total_size = ((uint64_t) (memsize)) << 20; + base_addr = (volatile uint32_t *)((uintptr_t) CONFIG_SYS_SDRAM_BASE); + + for (test_size = 256; test_size < total_size; + test_size = test_size << 1) { + test_addr = + (volatile uint32_t *)((uintptr_t) base_addr + + (uintptr_t) test_size); +#if defined(PHYS_SDRAM_2) + /* if we are over the lower memory region from 0 to 2GB, we shift to the upper memory region */ + if (test_size >= PHYS_SDRAM_1_SIZE) + test_addr = + (volatile uint32_t *)((uintptr_t) test_addr + + PHYS_SDRAM_1_SIZE); +#endif +#ifdef CONFIG_BCMBCA_IKOS + data = *test_addr; +#endif + *base_addr = 0; + *test_addr = 0xaa55beef; + if (*base_addr == *test_addr) { + ret = 1; + break; + } +#ifdef CONFIG_BCMBCA_IKOS + *test_addr = data; +#endif + } + + return ret; +} + +/* return 1 if there is error, 0 no error. memsize in MB */ +static int memc_memory_test(uint32_t memsize) +{ + volatile uint32_t *temp; + volatile uint32_t *addr; + int i, ret = 0; + uint32_t data; + + addr = (volatile uint32_t *)CONFIG_SYS_SDRAM_BASE; + for (temp = addr, i = 0; i < 1024; i++) + *temp++ = i; + + for (temp = addr, i = 0; i < 1024; i++) { + data = *temp++; + if (data != i) + break; + } + + if (i == 1024) + printf("DDR test done successfully\n\r"); + else { + printf("DDR test failed i=%d\n\r", i); + ret = -2; + } + + return ret; +} + +int ddr_init_reg(ddr_init_param * ddrinit_params) +{ + int ret; + uint32_t ddr_size_MB; + + ddr_size_MB = run_reg_init(); + printf("ddr init done total size %dMB\n", ddr_size_MB); + + /* make sure configure register write are really carried over to target block */ + __asm__ __volatile__("dsb sy"); + __asm__ __volatile__("isb"); + + if (memc_alias_test(ddr_size_MB)) { + printf("\nMemory alias detected. Probably wrong memory size is specified or memory subsystem not working\n"); + return -3; + } + + if (ret = memc_memory_test(ddr_size_MB)) + return ret; + + if (ddrinit_params && ddrinit_params->ddr_size != NULL) + *ddrinit_params->ddr_size = ddr_size_MB; + + return ret; +} diff --git a/arch/arm/mach-bcmbca/dt_helper.c b/arch/arm/mach-bcmbca/dt_helper.c new file mode 100644 index 0000000000..e36e4c10e0 --- /dev/null +++ b/arch/arm/mach-bcmbca/dt_helper.c @@ -0,0 +1,358 @@ +#include +#include +#include + +#include "dt_helper.h" + +static int dtb_setprop(void *fdt, const char *node_path, const char *property, + uint32_t *val_array, int size) +{ + int offset = fdt_path_offset(fdt, node_path); + + if (offset == -FDT_ERR_NOTFOUND) + return -1; + + return fdt_setprop(fdt, offset, property, val_array, size); +} + +static const void *dtb_getprop(const void *fdt, const char *node_path, + const char *property, int *len) +{ + int offset = fdt_path_offset(fdt, node_path); + + if (offset == -FDT_ERR_NOTFOUND) + return NULL; + + return fdt_getprop(fdt, offset, property, len); +} + +static const int dtb_delnode(void *fdt, const char *node_path) +{ + int offset = fdt_path_offset(fdt, node_path); + + if (offset == -FDT_ERR_NOTFOUND) + return -1; + + return fdt_del_node(fdt, offset); +} +static void dtb_get_addr_size_cells(const char* dtb, + const char* node_path, + uint32_t* addr_cell_sz, + uint32_t* size_cell_sz) +{ + uint32_t* prop; + int len; + prop = (uint32_t*)dtb_getprop(dtb, node_path, "#address-cells", &len); + *addr_cell_sz = prop? cpu_to_fdt32(*prop):OF_NODE_ADDR_CELLS_DEFAULT; + prop = (uint32_t*)dtb_getprop(dtb, node_path, "#size-cells", &len); + *size_cell_sz = prop? cpu_to_fdt32(*prop):OF_NODE_SIZE_CELLS_DEFAULT; +} + +int dtb_set_reserved_memory(void *dtb_ptr, char* name, uint64_t addr, uint64_t size) +{ + const void* prop; + char node_name[96]; + uint32_t propval[4]; + int len; + uint32_t addr_cell_sz, size_cell_sz; + uint64_t temp; + + if (!dtb_ptr) { + return -1; + } + + dtb_get_addr_size_cells(dtb_ptr,"/reserved-memory", &addr_cell_sz, &size_cell_sz); + if (addr_cell_sz > 2 || size_cell_sz > 2) { + printf("%s Cells sizes are not supported %d %d \n", __func__, addr_cell_sz, size_cell_sz); + return -1; + } + + sprintf(node_name, "/reserved-memory/%s", name); + + /* assume address and size are 64 bit for 4908. need to read #address-cells and #size_cells + determine the actual size */ + prop = dtb_getprop(dtb_ptr, node_name, "reg", &len); + /* sanity check */ + if (prop && len == (size_cell_sz+addr_cell_sz)*sizeof(uint32_t) ) { + if (addr_cell_sz == 1) { + *propval = cpu_to_fdt32(addr); + } else { + temp = cpu_to_fdt64(addr); + memcpy((unsigned char*)propval, (unsigned char*)&temp, sizeof(uint64_t)); + } + + if (size_cell_sz == 1) { + *(propval+addr_cell_sz) = cpu_to_fdt32(size); + } else { + temp = cpu_to_fdt64(size); + memcpy((unsigned char*)(propval+addr_cell_sz), (unsigned char*)&temp, sizeof(uint64_t)); + } + /* setting only size of the memory e.g. size_cell of the 'reg' */ + memcpy((void*)prop, (char*)propval, len); + dtb_setprop(dtb_ptr, node_name, "reg", (uint32_t*)prop, len); + return 0; + } + printf("WARNING: Node's property %s is not defined\n",node_name); + + return -1; +} + +int dtb_del_cma_rsvmem_device(void *dtb_ptr) +{ + char dt_node_name[64]; + int ret; + + if (!dtb_ptr) { + return -1; + } + + /* del the cache device node first */ + sprintf(dt_node_name, "/%s", DT_CMA_CACHED_NODE_STR); + ret = dtb_delnode(dtb_ptr, dt_node_name); + + /* del the uncached device node */ + sprintf(dt_node_name, "/%s", DT_CMA_UNCACHED_NODE_STR); + ret |= dtb_delnode(dtb_ptr, dt_node_name); + + return ret; +} + + +const void *dtb_get_prop(void *dtb_ptr, const char *node_path, + const char *property, int *len) +{ + + return dtb_getprop(dtb_ptr, node_path, property, len); +} + + +int dtb_getprop_reg(void *dtb_ptr, + const char* node_name_par, + const char *node_name, + uint64_t* addr, + uint64_t* size) +{ + uint32_t addr_cell_sz, size_cell_sz; + const uint32_t* prop; + int len; + char node_path[96]; + uint64_t temp; + + if (!dtb_ptr) { + return -1; + } + sprintf(node_path, "/%s", node_name_par); + dtb_get_addr_size_cells(dtb_ptr, node_path, &addr_cell_sz, &size_cell_sz); + if (addr_cell_sz > 2 || size_cell_sz > 2) { + printf("%s Cells sizes are not supported %d %d \n", __func__, addr_cell_sz, size_cell_sz); + return -1; + } + sprintf(node_path, "/%s/%s", node_name_par, node_name); + prop = (const uint32_t*)dtb_getprop(dtb_ptr, node_path, "reg", &len); + if (prop && len == (size_cell_sz+addr_cell_sz)*sizeof(uint32_t) ) { + if (size_cell_sz == 1) { + *size = (uint64_t)fdt32_to_cpu(*(prop+addr_cell_sz)); + } else { + memcpy((unsigned char*)&temp, (unsigned char*)(prop+addr_cell_sz), sizeof(uint64_t)); + *size = fdt64_to_cpu(temp); + } + + if (addr_cell_sz == 1) { + *addr = (uint64_t)fdt32_to_cpu(*prop); + } else { + memcpy((unsigned char*)&temp, (unsigned char*)prop, sizeof(uint64_t)); + *addr = fdt64_to_cpu(temp); + } + return 0; + } + return -1; +} + +static int _dtb_getprop_cma_rsv_param(const void* dtb_ptr, char *node_name, const char *name, uint64_t* param) +{ + const uint32_t* prop; + int len; + + prop = (const uint32_t*)dtb_getprop(dtb_ptr, node_name, name, &len); + if (prop && len == sizeof(uint32_t) ) { + *param = (uint64_t)fdt32_to_cpu(*prop); + return 0; + } + + return -1; +} + +static int _dtb_getprop_cma_rsvmem_size(const void* dtb_ptr, char *node_name, uint64_t* size) +{ + const uint32_t* prop; + int len; + + prop = (const uint32_t*)dtb_getprop(dtb_ptr, node_name, DT_CMA_RSVSIZE_PROP_STR, &len); + if (prop && len == sizeof(uint32_t) ) { + *size = (uint64_t)fdt32_to_cpu(*prop); + return 0; + } + + return -1; +} + +static int _dtb_setprop_cma_rsvmem_size(void* dtb_ptr, char *node_name, uint64_t size) +{ + const uint32_t* prop; + int len; + uint32_t propval; + + prop = (const uint32_t*)dtb_getprop(dtb_ptr, node_name, DT_CMA_RSVSIZE_PROP_STR, &len); + if (prop && len == sizeof(uint32_t) ) { + propval = cpu_to_fdt32(size); + + memcpy((void*)prop, (char*)&propval, len); + dtb_setprop(dtb_ptr, node_name, DT_CMA_RSVSIZE_PROP_STR, (uint32_t*)prop, len); + + return 0; + } + + return -1; +} + +static int _dtb_del_cma_rsvmem(void* dtb_ptr, char *node_name) +{ + return dtb_delnode(dtb_ptr, node_name); +} + +int dtb_getprop_cma_rsv_param(void *dtb_ptr, const char *node_suffix, const char *name, uint64_t* param) +{ + char dt_node_name[64]; + int ret; + + if (!dtb_ptr) { + return -1; + } + + /* try the cache node first */ + sprintf(dt_node_name, "/%s/%s%s", DT_CMA_CACHED_NODE_STR, DT_RSVD_PREFIX_STR, node_suffix); + ret = _dtb_getprop_cma_rsv_param(dtb_ptr, dt_node_name, name, param); + if (ret != 0) { + /* try the uncached node */ + sprintf(dt_node_name, "/%s/%s%s", DT_CMA_UNCACHED_NODE_STR, DT_RSVD_PREFIX_STR, node_suffix); + ret = _dtb_getprop_cma_rsv_param(dtb_ptr, dt_node_name, name, param); + } + + return ret; +} + +int dtb_getprop_cma_rsvmem_size(void *dtb_ptr, const char *name, uint64_t* size) +{ + return dtb_getprop_cma_rsv_param(dtb_ptr, name, DT_CMA_RSVSIZE_PROP_STR, size); +} + + +int dtb_setprop_cma_rsvmem_size(char* dtb_ptr, const char *name, uint64_t size) +{ + char dt_node_name[64]; + int ret; + + if (!dtb_ptr) { + return -1; + } + + /* try the cache node first */ + sprintf(dt_node_name, "/%s/%s%s", DT_CMA_CACHED_NODE_STR, DT_RSVD_PREFIX_STR, name); + ret = _dtb_setprop_cma_rsvmem_size(dtb_ptr, dt_node_name, size); + if (ret != 0) { + /* try the uncached node */ + sprintf(dt_node_name, "/%s/%s%s", DT_CMA_UNCACHED_NODE_STR, DT_RSVD_PREFIX_STR, name); + ret = _dtb_setprop_cma_rsvmem_size(dtb_ptr, dt_node_name, size); + } + + return ret; +} + +int dtb_del_cma_rsvmem(void* dtb_ptr, const char *name) +{ + char dt_node_name[64]; + int ret; + + if (!dtb_ptr) { + return -1; + } + + /* try the cache node first */ + sprintf(dt_node_name, "/%s/%s%s", DT_CMA_CACHED_NODE_STR, DT_RSVD_PREFIX_STR, name); + ret = _dtb_del_cma_rsvmem(dtb_ptr, dt_node_name); + if (ret != 0) { + /* try the uncached node */ + sprintf(dt_node_name, "/%s/%s%s", DT_CMA_UNCACHED_NODE_STR, DT_RSVD_PREFIX_STR, name); + ret = _dtb_del_cma_rsvmem(dtb_ptr, dt_node_name); + } + + return ret; +} + +int dtb_del_reserved_memory(void* dtb_ptr, char* name) +{ + char node_name[96]; + sprintf(node_name, "/reserved-memory/%s", name); + return dtb_delnode(dtb_ptr, node_name); +} + + +int dtb_set_bootargs(void *fdt, char* bootargs, int append ) +{ + const void *propdata =NULL; + int nodeoffset, res = -1,proplen = 0; + + char *node = NULL,*prop=NULL,**err_msg = &prop, *new_bootargs = NULL; + if (!fdt) { + return res; + } + node = malloc(sizeof(DT_CHOSEN_NODE)+sizeof(DT_ROOT_NODE)); + if (!node) { + goto err_out; + } + sprintf(node,"%s%s",DT_ROOT_NODE,DT_CHOSEN_NODE); + nodeoffset = fdt_path_offset(fdt, node); + if (nodeoffset == -FDT_ERR_NOTFOUND) { + *err_msg = node; + goto err_out; + } + prop = DT_BOOTARGS_PROP; + propdata = fdt_getprop(fdt, nodeoffset, prop, &proplen); + + /* edit this to include mmc device root node in DT_BOOTARGS */ + new_bootargs = malloc(DT_BOOTARGS_MAX_SIZE); + if (!new_bootargs) { + goto err_out; + } + memset(new_bootargs, 0x0, DT_BOOTARGS_MAX_SIZE); + if (append) { + if (proplen+strlen(bootargs)+1 > DT_BOOTARGS_MAX_SIZE) { + printf("Not enough space to append boot arg %s\n", bootargs); + goto err_out; + } + + strncpy(new_bootargs, bootargs, DT_BOOTARGS_MAX_SIZE); + strncat(new_bootargs, " ", DT_BOOTARGS_MAX_SIZE); + if (propdata) { + strncat(new_bootargs, propdata, DT_BOOTARGS_MAX_SIZE); + } + } else { + strncpy(new_bootargs, bootargs, DT_BOOTARGS_MAX_SIZE); + } + + res = fdt_setprop_string(fdt, nodeoffset, prop, new_bootargs); + if (res) { + goto err_out; + } + + res = 0; +err_out: + free(node); + if (new_bootargs) { + free(new_bootargs); + } + if (res && *err_msg) { + printf("Error accessing %s\n",*err_msg); + } + return res; +} diff --git a/arch/arm/mach-bcmbca/include/bca_common.h b/arch/arm/mach-bcmbca/include/bca_common.h new file mode 100644 index 0000000000..cd4f807798 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/bca_common.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _BCMBCA_COMMON_H +#define _BCMBCA_COMMON_H + +int suffix2shift(char suffix); + +int parse_env_string_plus_nums(const char *buffer, char **name, const int maxargs, unsigned long *args, char *suffixes); +int parse_env_nums(const char *buffer, const int maxargs, unsigned long *args, char *suffixes); +int bcmbca_get_boot_device(void); + +void print_chipinfo(void); +void boost_cpu_clock(void); +int set_cpu_freq(int freqMHz); + +int bcm_board_boot_fit_fdt_fixup(void* fdt); +int bcm_board_boot_fdt_fixup(void* fdt); +void init_cli_cb_arr(void); +void register_cli_job_cb(unsigned long time_period, void (*job_cb)(void)); +void unregister_cli_job_cb(void (*job_cb)(void)); +void run_cli_jobs(void); + +#define BRCM_ROOTFS_SHA256_PROP "brcm_rootfs_sha256" +#define BRCM_ROOTFS_IMGLEN_PROP "brcm_rootfs_imglen" + +#endif diff --git a/arch/arm/mach-bcmbca/include/bca_sdk.h b/arch/arm/mach-bcmbca/include/bca_sdk.h new file mode 100644 index 0000000000..38198aa723 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/bca_sdk.h @@ -0,0 +1,82 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _BCMBCA_SDK_H +#define _BCMBCA_SDK_H + +#include +#include "boot_flash.h" + +/* volume ID assignments for UBI volumes + * 1 - metadata_copy1 + * 2 - metadata_copy2 + * 3 - bootfs_1 + * 4 - rootfs_1 + * 5 - bootfs_2 + * 6 - rootfs_2 + * 7-9 RESERVED + * 10 - data + * 11 - defaults (it is possible that uboot will need to access data and defaults during provisioning) + * Volume numbers > 11 would not need to be accessed by number and can be assigned at will + */ + +#define METADATA_SIZE 256 +#define MAX_METADATA_SIZE 2048 + +#define ACTIVE_IMGIDX_BOOTSTRAP 0 +#define ACTIVE_IMGIDX_1 1 +#define ACTIVE_IMGIDX_2 2 +#define ACTIVE_IMGIDX_MAX ACTIVE_IMGIDX_2 + +/* UBI volumes defines */ +#define IMAGE_VOL_ID_1 3 +#define IMAGE_VOL_ID_2 5 +#define METADATA_VOL_ID_1 1 +#define METADATA_VOL_ID_2 2 + +/* GPT Partitions defines */ +#define IMAGE_PART_ID_1 IMAGE_VOL_ID_1 +#define IMAGE_PART_ID_2 IMAGE_VOL_ID_2 +#define METADATA_PART_ID_1 METADATA_VOL_ID_1 +#define METADATA_PART_ID_2 METADATA_VOL_ID_2 + +#define BOOT_MAGIC_MAGIC 0x75456e76 + +enum boot_device { + BCA_DEV_NAND, + BCA_DEV_SPINAND, + BCA_DEV_MMC, + BCA_DEV_NOR, + BCA_DEV_NETBOOT, + BCA_DEV_UNKNOWN = 0 +}; + +struct bcasdk_ctx { + enum boot_device boot_device; + enum boot_device image_device; + struct ubispl_info *ubispl; + struct mmc *mmc; + struct blk_desc *mmcboot_blk; + int active_image; + int last_reset_reason; + /* FIXME -- What is the "handle" for the GPT table where we find the image partitions? */ +}; + +/*Define the partition name for spi nor flash*/ +#define LOADER_PART "loader" +/*partition name for fitimage*/ +#define BOOTFS_PART "bootfs" +#define ROOTFS_PART "rootfs" +#define DATA_PART "data" + +int get_img_index_for_upgrade(int flag); +int flash_upgrade_img_bundle( ulong bundle_addr , int img_index, const char * conf_name); +int commit_image ( int img_index ); + +int env_override_import(void *ep); + +#endif + + diff --git a/arch/arm/mach-bcmbca/include/bcm_otp.h b/arch/arm/mach-bcmbca/include/bcm_otp.h new file mode 100644 index 0000000000..ec9a132365 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/bcm_otp.h @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +/* + * + */ + +#ifndef __BCM_OTP_H__ +#define __BCM_OTP_H__ + +#include "otp_map.h" +#include "otp_map_cmn.h" + +typedef enum { + BCM_OTP_MAP, + BCM_SOTP_MAP, + BCM_MAP_MAX, +} otp_map_t; + +typedef struct bcm_otp { + otp_map_cmn_t* map[BCM_MAP_MAX]; +} bcm_otp_t; + + +otp_map_cmn_t* bcm_otp(otp_map_t); + +otp_map_cmn_err_t bcm_otp_read(otp_map_feat_t, u32**, u32*); +otp_map_cmn_err_t bcm_otp_write(otp_map_feat_t, const u32*, u32); +otp_map_cmn_err_t bcm_otp_ctl(otp_map_t id, otp_hw_cmn_ctl_cmd_t *cmd, u32 *res); +int bcm_otp_init(void); + +/* helper functions */ +otp_map_cmn_err_t bcm_sotp_ctl_perm( otp_hw_cmn_ctl_t ctl, u32 data, u32* res); + +/* short hand for reading/writing just a u32 val*/ +otp_map_cmn_err_t bcm_otp_get(otp_map_feat_t, u32*); + +#define bcm_otp_set(_feat, data) bcm_otp_write(_feat, data, sizeof(u32) + +int bcm_otp_get_cpu_clk(unsigned int* val); +int bcm_otp_get_chipid(unsigned int* val); +int bcm_otp_get_nr_cpus(u32* val); +#endif diff --git a/arch/arm/mach-bcmbca/include/bcm_rng.h b/arch/arm/mach-bcmbca/include/bcm_rng.h new file mode 100644 index 0000000000..18505a1e29 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/bcm_rng.h @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2017 Broadcom + */ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +/* + * + */ + +#ifndef __BCM_RNG_H__ +#define __BCM_RNG_H__ + +#include +int rng_pac_lock(uint32_t mode); + +#endif diff --git a/arch/arm/mach-bcmbca/include/bcm_secure.h b/arch/arm/mach-bcmbca/include/bcm_secure.h new file mode 100644 index 0000000000..135ac06059 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/bcm_secure.h @@ -0,0 +1,238 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ + +#ifndef _BCM_SECURE_H +#define _BCM_SECURE_H +#include +#define BCM_RSA "rsa2048" +#define BCM_PADDING "emsa_pss" +#define BCM_CHECKSUM "sha256" +/*Sizes in bytes*/ +#define BCM_SECBT_RSA_PUBEXP 65537 +#define BCM_SECBT_RSA2048_MOD_LEN 256 +#define BCM_SECBT_AES_CBC128_EK_LEN 16 +#define BCM_SECBT_AES_CBC128_IV_LEN 16 +#define BCM_SEC_BOOTROM_CRED_ADDR +#define BCM_SECBT_CRED (bcm_secbt_args()) +#define BCM_SECBT_CRED_MOD BCM_SECBT_CRED->auth.manu +#define BCM_SECBT_CRED_AES BCM_SECBT_CRED->encr.bek +#define BCM_SECBT_CRED_AES_IV BCM_SECBT_CRED->encr.biv + +#ifdef CONFIG_BCMBCA_EARLY_ABORT_JTAG_UNLOCK +#define BCM_SEC_UNLOCK_JTAG BROM_GEN_JTAG_UNLOCK +#else +#define BCM_SEC_UNLOCK_JTAG +#endif + +#include "image.h" + +#define FIT_AES1 "fit-aes1" +#define FIT_AES2 "fit-aes2" + +struct bcm_secbt_auth_args { + uint8_t manu[BCM_SECBT_RSA2048_MOD_LEN] __attribute__ ((aligned (4))); + uint8_t oper[BCM_SECBT_RSA2048_MOD_LEN] __attribute__ ((aligned (4))); +}; + +struct bcm_secbt_encr_args { + uint8_t bek[BCM_SECBT_AES_CBC128_EK_LEN]; + uint8_t iek[BCM_SECBT_AES_CBC128_EK_LEN]; + uint8_t biv[BCM_SECBT_AES_CBC128_IV_LEN]; + uint8_t iiv[BCM_SECBT_AES_CBC128_IV_LEN]; +}; + +typedef struct __bcm_secbt_args{ + struct bcm_secbt_auth_args auth __attribute__ ((aligned (4))); + struct bcm_secbt_encr_args encr; +} bcm_secbt_args_t; + +typedef struct _bcm_sec_key_aes_arg { + u8 key[BCM_SECBT_AES_CBC128_EK_LEN*2]; + char id[64]; +} bcm_sec_key_aes_arg_t; + +typedef struct _bcm_sec_enc_key_arg { + char * name; + char * perm; + char * algo; + u8 * data; + u32 size; + u32 size_enc; + u64 load_addr; +} bcm_sec_enc_key_arg_t; + +typedef struct _bcm_sec_export_item_arg { + char * id; + char * name; + u32 salt; + char * algo; + u8 * value; + u8 exp_flag; + u32 len; +} bcm_sec_export_item_t; + +typedef struct _bcm_sek_key_arg { + int len; + void* arg; + union { + bcm_sec_enc_key_arg_t * enc_key; + bcm_sec_export_item_t * item; + bcm_sec_key_aes_arg_t * aes; + }; +} bcm_sec_key_arg_t; + +typedef struct _bcm_sec_key_ { + uint8_t rsa_pub[BCM_SECBT_RSA2048_MOD_LEN]; + uint8_t aes_ek[BCM_SECBT_AES_CBC128_EK_LEN*2]; + u8* pub; + union { + u8* ek; + void* ch_ek; + }; +} bcm_sec_key_t; + + +static inline volatile bcm_secbt_args_t * bcm_secbt_args(void) { + return (volatile bcm_secbt_args_t*)(CONFIG_SYS_SEC_CRED_ADDR); +} + +typedef enum _bcm_sec_states { + SEC_STATE_UNSEC = 0, + SEC_STATE_GEN3_MFG = 0x1, + SEC_STATE_GEN3_FLD = 0x2 +} bcm_sec_state_t; + +#define SEC_STATE_SECURE (SEC_STATE_GEN3_MFG|SEC_STATE_GEN3_FLD) + +/* Security runtime context */ +typedef enum _bcm_sec_ctx { + SEC_NONE = 0x0, + SEC_INIT = 0x1, /* various initializations if any */ + SEC_SET = 0x2, /* commits various parameters for keys and sotp permissions*/ + SEC_SET_SCHED = 0x100, /* Schedules multiple parameters to be set(run) + later by invoking SEC_SET*/ + SEC_SCHED_CLR = 0x200, /* clears the schedule mask; */ +} bcm_sec_ctx_t; + +typedef enum _bcm_sec_ctrl { + SEC_CTRL_NONE = 0, + SEC_CTRL_FIT_AUTH, /* verify signature */ + SEC_CTRL_FIT_SEC, /* FIT secure header process */ + SEC_CTRL_DT_CHAIN_SHA, /* verify signature */ + SEC_CTRL_SOTP_LOCK_ALL, /*default - everything is open */ + SEC_CTRL_SOTP_UNLOCK_SOTP , /* */ + SEC_CTRL_SOTP_UNLOCK_SOTP_UNSEC, /* */ + SEC_CTRL_SOTP_UNLOCK_SOTP_UNSEC_PROV, /* */ + SEC_CTRL_SOTP_UNLOCK_SOTP_SEC, /* */ + SEC_CTRL_SOTP_JTAG_UNLOCK, /* */ + SEC_CTRL_KEY_GET, + SEC_CTRL_KEY_CHAIN_RSA, + SEC_CTRL_KEY_CHAIN_AES, + SEC_CTRL_KEY_CHAIN_ENCKEY, + SEC_CTRL_KEY_EXPORT_ITEM, + SEC_CTRL_KEY_CLEAN_SEC_MEM, + SEC_CTRL_KEY_CLEAN_ALL, + SEC_CTRL_RNG_LOCK_ALL, /*default - everything is open */ + SEC_CTRL_RNG_UNLOCK_RNG , /* */ + SEC_CTRL_RNG_UNLOCK_RNG_UNSEC, /* */ + SEC_CTRL_RNG_UNLOCK_RNG_SEC, /* */ + SEC_CTRL_MAX +} bcm_sec_ctrl_t; + +typedef struct _sec_ctrl_arg { + /* an array with SEC_CTRL_RUN_ORDER_MAX + * represents order in which each corresponding + * value is processed + * */ + bcm_sec_ctrl_t ctrl; + void* ctrl_arg; +} bcm_sec_ctrl_arg_t; + +typedef struct _bcm_sec_ bcm_sec_t; + +#define SEC_CTRL_RUN_ORDER_MAX 10 +typedef struct _bcm_sec_cb_arg { + bcm_sec_ctrl_arg_t arg[SEC_CTRL_RUN_ORDER_MAX]; +} bcm_sec_cb_arg_t; + +/*Handlers xxxx_cb*/ +typedef struct _bcm_sec_ctrl_cb_ { + int (*cb)(bcm_sec_t*, bcm_sec_ctrl_t, void *); + bcm_sec_ctrl_arg_t arg[SEC_CTRL_RUN_ORDER_MAX]; +} bcm_sec_ctrl_cb_t; + +typedef enum _ctrl_args { + SEC_CTRL_ARG_MAIN = 0, + SEC_CTRL_ARG_KEY, + SEC_CTRL_ARG_SOTP, + SEC_CTRL_ARG_RNG, + SEC_CTRL_ARG_MAX, +} bcm_sec_ctrl_arg_num_t; + + +typedef struct { + u32 delg_id; + u32 max_antirollback; + u8* sec_policy_fit; + u8 rsa_pub[BCM_SECBT_RSA2048_MOD_LEN]; + u8 aes_ek[BCM_SECBT_AES_CBC128_EK_LEN*2]; +} bcm_sec_delg_cfg; + +struct _bcm_sec_ { + bcm_sec_key_t key; + bcm_sec_delg_cfg * delg_cfg_obj; + bcm_sec_state_t state; + bcm_sec_ctx_t curr_ctx; + bcm_sec_ctx_t sched_ctx; + bcm_sec_ctrl_cb_t cb[SEC_CTRL_ARG_MAX]; + bcm_sec_ctrl_arg_num_t ord[SEC_CTRL_ARG_MAX]; +}; + +int bcm_sec_set_sec_ser_num( char * ser_num, u32 ser_num_size); +int bcm_sec_get_sec_ser_num( char * ser_num, u32 ser_num_size); +int bcm_sec_set_dev_spec_key( char * dev_spec_key, u32 dev_spec_key_size); +int bcm_sec_get_dev_spec_key( char * dev_spec_key, u32 dev_spec_key_size); +int bcm_sec_get_antirollback_lvl( u32 * lvl); +int bcm_sec_set_antirollback_lvl( u32 lvl); +void bcm_sec_abort(void); +bcm_sec_t* bcm_sec(void); +bcm_sec_state_t bcm_sec_state(void); + +/* returns ek + iv in the 'aes' pointer */ +void bcm_sec_get_active_aes_key(u8** key); +/* pass pointer to ek+iv*/ +void bcm_sec_set_active_aes_key(u8* key); + +u8* bcm_sec_get_active_pub_key(void); +u8* bcm_sec_set_active_pub_key(u8 * key); + +u8* bcm_sec_get_root_pub_key(void); +void bcm_sec_get_root_aes_key(u8** key); +int bcm_sec_delg_process_sdr( u8 * psdr, u8 * hdr_end, u32 * sdr_plus_sig_size); +int bcm_sec_delg_process_sec_node(u8 * fit); +bcm_sec_delg_cfg * bcm_sec_get_delg_cfg(void); + +int bcm_sec_update_ctrl_arg(bcm_sec_ctrl_arg_t* k, + bcm_sec_ctrl_arg_num_t ctrl); +void bcm_sec_clean_keys(bcm_sec_t* sec); +void bcm_sec_init(void); +int bcm_sec_do(bcm_sec_ctx_t, bcm_sec_cb_arg_t args[SEC_CTRL_ARG_MAX]); +ulong bcm_sec_get_reqd_load_size( void * fit ); +int bcm_sec_validate_fit(void*, uint32_t); +void bcm_sec_digest(const u8 *data, u32 len, u8* digest, char* algo); +int bcm_sec_rsa_verify(const u8 *obj, + u32 obj_len, const u8* sig, + u32 sig_len, const u8 *pub, + struct image_sign_info *im ); +void bcm_sec_deinit(void); +int bcm_sec_sec_fit(void* fit); +int bcm_sec_btrm_key_info(bcm_sec_t* sec); +void bcm_sec_aes_cbc128(u8 *key, u8 *iv, u8* txt, u32 length, u32 flag); + +/* TODO:must be moved or replaced by common primitives*/ +u8* bcm_util_env_var2bin(const char* id, u32 data_len ); +u8* bcm_util_get_fdt_prop_data(void* fdt, char* path, char *prop, int* len); +int bcm_util_hex2u32(const char* s, u8* d); +#endif diff --git a/arch/arm/mach-bcmbca/include/bcm_ubus4.h b/arch/arm/mach-bcmbca/include/bcm_ubus4.h new file mode 100644 index 0000000000..c4518e8a81 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/bcm_ubus4.h @@ -0,0 +1,418 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2017 Broadcom + */ +/* + * + */ + +#ifndef __BCM_UBUS4_H__ +#define __BCM_UBUS4_H__ + +#ifndef IS_BCMCHIP +#define IS_BCMCHIP(num) (defined(_BCM9##num##_)||defined(CONFIG_BCM9##num)|| defined(CONFIG_BCM##num)) +#endif + +typedef struct ub_mst_addr_map_t { + int port_id; + unsigned long base; +} ub_mst_addr_map_t; + +#if IS_BCMCHIP(6858) +#define UCB_NODE_ID_SLV_SYS 0 +#define UCB_NODE_ID_MST_PCIE0 3 +#define UCB_NODE_ID_SLV_PCIE0 4 +#define UCB_NODE_ID_MST_PCIE2 5 +#define UCB_NODE_ID_SLV_PCIE2 6 +#define UCB_NODE_ID_MST_SATA UCB_NODE_ID_MST_PCIE2 +#define UCB_NODE_ID_SLV_SATA UCB_NODE_ID_SLV_PCIE2 +#define UCB_NODE_ID_MST_USB 14 +#define UCB_NODE_ID_SLV_USB 15 +#define UCB_NODE_ID_SLV_LPORT 19 +#define UCB_NODE_ID_SLV_WAN 21 + +int ubus_master_set_rte_addr(int master_port_id, int port, int val); +#endif + + +#if IS_BCMCHIP(6856) +#define UCB_NODE_ID_SLV_SYS 0 +#define UCB_NODE_ID_MST_PCIE0 3 +#define UCB_NODE_ID_SLV_PCIE0 4 +#define UCB_NODE_ID_MST_USB 14 +#define UCB_NODE_ID_SLV_USB 15 +#define UCB_NODE_ID_SLV_MEMC 16 +#elif IS_BCMCHIP(6846) +#define UCB_NODE_ID_MST_PCIE0 3 +#define UCB_NODE_ID_SLV_PCIE0 4 +#define UCB_NODE_ID_MST_USB 14 +#define UCB_NODE_ID_SLV_USB 15 +#define UCB_NODE_ID_SLV_MEMC 16 +#endif + + +#if IS_BCMCHIP(6846) || IS_BCMCHIP(6856) +extern unsigned int g_board_size_power_of_2; +#endif + +#if IS_BCMCHIP(63158) + +#define UBUS_MAX_PORT_NUM 32 +#define UBUS_NUM_OF_MST_PORTS 17 +#define UBUS_PORT_ID_LAST_SYSTOP 13 + +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_DMA0 24 +#define UBUS_PORT_ID_DQM 23 +#define UBUS_PORT_ID_DSLCPU 11 +#define UBUS_PORT_ID_DSL 6 +#define UBUS_PORT_ID_FPM 21 +#define UBUS_PORT_ID_MEMC 1 +#define UBUS_PORT_ID_NATC 26 +#define UBUS_PORT_ID_PCIE0 8 +#define UBUS_PORT_ID_PCIE2 9 +#define UBUS_PORT_ID_PCIE3 10 +#define UBUS_PORT_ID_PERDMA 7 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_PMC 13 +#define UBUS_PORT_ID_PSRAM 16 +#define UBUS_PORT_ID_QM 22 +#define UBUS_PORT_ID_RQ0 32 +#define UBUS_PORT_ID_SPU 5 +#define UBUS_PORT_ID_SWH 14 +#define UBUS_PORT_ID_SYS 31 +#define UBUS_PORT_ID_SYSXRDP 27 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_VPB 20 +#define UBUS_PORT_ID_WAN 12 + +#elif IS_BCMCHIP(63146) +#define UBUS_MAX_PORT_NUM 17 +#define UBUS_NUM_OF_MST_PORTS 12 +#define UBUS_PORT_ID_LAST_SYSTOP 0 + +#define UBUS_PORT_ID_MEMC 1 +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_DSL 5 +#define UBUS_PORT_ID_DSLCPU 6 +#define UBUS_PORT_ID_ETHPHY 7 +#define UBUS_PORT_ID_PCIE0 8 +#define UBUS_PORT_ID_PCIE1 9 +#define UBUS_PORT_ID_PCIE2 10 +#define UBUS_PORT_ID_PSRAM 11 +#define UBUS_PORT_ID_DMA0 12 +#define UBUS_PORT_ID_DMA1 13 +#define UBUS_PORT_ID_RQ0 14 +#define UBUS_PORT_ID_QM 15 +#define UBUS_PORT_ID_VPB 16 + +#elif IS_BCMCHIP(4912) +#define UBUS_MAX_PORT_NUM 24 +#define UBUS_NUM_OF_MST_PORTS 16 +#define UBUS_PORT_ID_LAST_SYSTOP 0 + +#define UBUS_PORT_ID_MEMC 1 +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_ETHPHY 5 +#define UBUS_PORT_ID_PCIE0 8 +#define UBUS_PORT_ID_PCIE1 9 +#define UBUS_PORT_ID_PCIE2 10 +#define UBUS_PORT_ID_PCIE3 11 +#define UBUS_PORT_ID_SPU 12 +#define UBUS_PORT_ID_VPB 14 +#define UBUS_PORT_ID_MPM 15 +#define UBUS_PORT_ID_DMA0 16 +#define UBUS_PORT_ID_DMA1 17 +#define UBUS_PORT_ID_DMA2 18 +#define UBUS_PORT_ID_QM 19 +#define UBUS_PORT_ID_RQ0 20 +#define UBUS_PORT_ID_RQ1 21 +#define UBUS_PORT_ID_PSRAM 22 +#define UBUS_PORT_ID_PSRAM1 23 + +#elif IS_BCMCHIP(6858) +#define UBUS_MAX_PORT_NUM 35 +#define UBUS_NUM_OF_MST_PORTS 19 +#define UBUS_PORT_ID_LAST_SYSTOP 15 + +#define UBUS_PORT_ID_MEMC 1 +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_PERDMA 5 +#define UBUS_PORT_ID_SPU 6 +#define UBUS_PORT_ID_PCIE0 8 +#define UBUS_PORT_ID_PCIE2 9 +#define UBUS_PORT_ID_PMC 15 +#define UBUS_PORT_ID_XRDP_VPB 20 +#define UBUS_PORT_ID_QM 22 +#define UBUS_PORT_ID_DQM 23 +#define UBUS_PORT_ID_DMA0 24 +#define UBUS_PORT_ID_DMA1 25 +#define UBUS_PORT_ID_NATC 26 +#define UBUS_PORT_ID_TOP_BUFF 28 +#define UBUS_PORT_ID_XRDP_BUFF 29 +#define UBUS_PORT_ID_RQ0 32 +#define UBUS_PORT_ID_RQ1 33 +#define UBUS_PORT_ID_RQ2 34 +#define UBUS_PORT_ID_RQ3 35 + +#elif IS_BCMCHIP(6846) +#define UBUS_MAX_PORT_NUM 15 +#define UBUS_NUM_OF_MST_PORTS 9 +#define UBUS_PORT_ID_LAST_SYSTOP 7 + +#define UBUS_PORT_ID_MEMC 1 +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_PCIE0 7 +#define UBUS_PORT_ID_QM 11 +#define UBUS_PORT_ID_DQM 12 +#define UBUS_PORT_ID_DMA0 13 +#define UBUS_PORT_ID_NATC 14 +#define UBUS_PORT_ID_RQ0 15 + +#elif IS_BCMCHIP(6878) +#define UBUS_PORT_ID_MEMC 1 +#define UBUS_MAX_PORT_NUM 14 +#define UBUS_NUM_OF_MST_PORTS 8 +#define UBUS_PORT_ID_LAST_SYSTOP 7 + +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_WIFI 6 +#define UBUS_PORT_ID_PCIE0 7 +#define UBUS_PORT_ID_QM 11 +#define UBUS_PORT_ID_DMA0 13 +#define UBUS_PORT_ID_RQ0 14 + +#define UBUS_PORT_ID_VPB 9 + +#elif IS_BCMCHIP(6855) +#define UBUS_MAX_PORT_NUM 21 +#define UBUS_NUM_OF_MST_PORTS 11 +#define UBUS_PORT_ID_LAST_SYSTOP 12 + +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_PCIE0 10 +#define UBUS_PORT_ID_WIFI 12 +#define UBUS_PORT_ID_DMA0 16 +#define UBUS_PORT_ID_DMA1 17 +#define UBUS_PORT_ID_DMA2 18 +#define UBUS_PORT_ID_QM 19 +#define UBUS_PORT_ID_RQ0 20 +#define UBUS_PORT_ID_RQ1 21 + +#elif IS_BCMCHIP(63178) +#define UBUS_MAX_PORT_NUM 11 +#define UBUS_NUM_OF_MST_PORTS 9 +#define UBUS_PORT_ID_LAST_SYSTOP 0 + +#define UBUS_PORT_ID_SYS 0 +#define UBUS_PORT_ID_MEMC 1 +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_DSL 5 +#define UBUS_PORT_ID_DSLCPU 6 +#define UBUS_PORT_ID_PMC 7 +#define UBUS_PORT_ID_SWH 8 +#define UBUS_PORT_ID_PCIE0 10 +#define UBUS_PORT_ID_WIFI 12 + +#elif IS_BCMCHIP(47622) +#define UBUS_MAX_PORT_NUM 12 +#define UBUS_NUM_OF_MST_PORTS 10 +#define UBUS_PORT_ID_LAST_SYSTOP 0 + +#define UBUS_PORT_ID_SYS 0 +#define UBUS_PORT_ID_MEMC 1 +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_PMC 7 +#define UBUS_PORT_ID_SYSPORT 8 +#define UBUS_PORT_ID_SYSPORT1 9 +#define UBUS_PORT_ID_PCIE0 10 +#define UBUS_PORT_ID_SPU 11 +#define UBUS_PORT_ID_WIFI 13 +#define UBUS_PORT_ID_WIFI1 14 + +#elif IS_BCMCHIP(6856) +#define UBUS_MAX_PORT_NUM 19 +#define UBUS_NUM_OF_MST_PORTS 12 +#define UBUS_PORT_ID_LAST_SYSTOP 7 + +#define UBUS_PORT_ID_MEMC 1 +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_PCIE2 6 +#define UBUS_PORT_ID_PCIE0 7 +#define UBUS_PORT_ID_QM 11 +#define UBUS_PORT_ID_DQM 12 +#define UBUS_PORT_ID_DMA0 13 +#define UBUS_PORT_ID_NATC 14 +#define UBUS_PORT_ID_DMA1 17 +#define UBUS_PORT_ID_RQ0 18 +#define UBUS_PORT_ID_RQ1 19 + +#elif IS_BCMCHIP(6756) +#define UBUS_MAX_PORT_NUM 12 +#define UBUS_NUM_OF_MST_PORTS 10 +#define UBUS_PORT_ID_LAST_SYSTOP 0 + +#define UBUS_PORT_ID_SYS 0 +#define UBUS_PORT_ID_MEMC 1 +#define UBUS_PORT_ID_BIU 2 +#define UBUS_PORT_ID_PER 3 +#define UBUS_PORT_ID_USB 4 +#define UBUS_PORT_ID_PMC 7 +#define UBUS_PORT_ID_SWH 8 +#define UBUS_PORT_ID_MPM 9 +#define UBUS_PORT_ID_PCIE0 10 +#define UBUS_PORT_ID_SPU 11 +#define UBUS_PORT_ID_WIFI 13 +#define UBUS_PORT_ID_WIFI1 14 +#endif + +#ifdef CONFIG_BCM_GLB_COHERENCY +#define IS_DDR_COHERENT 1 +#else +#define IS_DDR_COHERENT 0 +#endif + +#define DECODE_CFG_SIZE_MASK 0xff00 +#define DECODE_CFG_SIZE_SHIFT 8 +#define DECODE_CFG_ENABLE_MASK 0x60000 +#define DECODE_CFG_ENABLE_SHIFT 17 +#define DECODE_CFG_CACHE_BITS_MASK 0x380000 +#define DECODE_CFG_CACHE_BITS_SHIFT 19 +#define DECODE_CFG_CMD_DTA_MASK 0x10000 +#define DECODE_CFG_CMD_DTA_SHIFT 16 +#define DECODE_CFG_STRICT_MASK 0x400000 +#define DECODE_CFG_STRICT_SHIFT 22 +#define DECODE_CFG_PORT_ID_MASK 0xff +#define DECODE_CFG_PORT_ID_SHIFT 0 +#define DECODE_CFG_CTRL_CACHE_SEL_SHIFT 4 +#define DECODE_CFG_CTRL_CACHE_SEL_MASK (0x3<> f##_SHIFT) + +typedef struct +{ + uint32_t base_addr; + uint32_t remap_addr; + uint32_t attributes; +}DecodeCfgMstWndRegs; + +/* BIU Registers */ + +typedef struct +{ + uint32_t ctrl; + uint32_t cache_cfg; + uint32_t reserved[2]; + DecodeCfgMstWndRegs window[20]; +} DecodeCfgRegs; + +typedef struct +{ +#define AXI_CFG_AWCACHE_BYPASS (0x1<<5) + uint32_t cfg; + uint32_t bufsize; +} AXICfgRegs; + +#if IS_BCMCHIP(63146) || IS_BCMCHIP(4912) + +#define ROUTE_ADDR_SIZE 0x400 +#define TOKEN_SIZE 0x400 +typedef struct +{ + uint32_t port_cfg[12]; /* 0x0 */ +#define DCM_UBUS_CONGESTION_THRESHOLD 3 + uint32_t reserved1[52]; /* 0x30 */ + uint32_t loopback[20]; /* 0x100 */ + uint32_t reserved2[556]; /* 0x150 */ + DecodeCfgRegs decode_cfg; /* 0xA00 */ + uint32_t reserved3[128]; /* 0xB00 */ + AXICfgRegs axi_cfg; /* 0xD00 */ + uint32_t reserved4[190]; /* 0xD08 */ + uint32_t routing_addr[ROUTE_ADDR_SIZE]; /* 0x1000 */ + uint32_t token[TOKEN_SIZE]; /* 0x2000 */ +} MstPortNode; + +#else + +#if IS_BCMCHIP(63178) || IS_BCMCHIP(47622) || IS_BCMCHIP(6878) || IS_BCMCHIP(6756) +#define ROUTE_ADDR_SIZE 0x100 +#define TOKEN_SIZE 0x100 +#else +#define ROUTE_ADDR_SIZE 0x80 +#define TOKEN_SIZE 0x80 +#endif + +typedef struct +{ + uint32_t port_cfg[8]; +#define DCM_UBUS_CONGESTION_THRESHOLD 3 + uint32_t reserved1[56]; + uint32_t loopback[20]; + uint32_t reserved2[44]; + uint32_t routing_addr[ROUTE_ADDR_SIZE]; + uint32_t token[TOKEN_SIZE]; + DecodeCfgRegs decode_cfg; + uint8_t rsvd1[512]; + AXICfgRegs axi_cfg; +} MstPortNode; + +#endif + +typedef struct ubus_credit_cfg { + int port_id; + int credit; +}ubus_credit_cfg_t; + +void ubus_master_port_init(void); +void bcm_ubus_config(void); +void ubus_cong_threshold_wr(int port_id, unsigned int val); +int ubus_master_remap_port(int master_port_id); +int log2_32 (unsigned int value); +int ubus_master_set_token_credits(int master_port_id, int token, int credits); +void ubus_deregister_port(int ucbid); +void ubus_register_port(int ucbid); +#if IS_BCMCHIP(63158) || IS_BCMCHIP(6858) +void apply_ubus_credit_each_master(int master); +#endif +#if IS_BCMCHIP(6858) +void ubus_master_rte_cfg(void); +#endif +#if IS_BCMCHIP(63178) +void configure_ubus_sar_reg_decode(void); +#endif +void ubus_master_cpu_enable_axi_write_cache(int enable); + +#endif diff --git a/arch/arm/mach-bcmbca/include/bcmbca-dtsetup.h b/arch/arm/mach-bcmbca/include/bcmbca-dtsetup.h new file mode 100644 index 0000000000..9ac1f3bbf0 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/bcmbca-dtsetup.h @@ -0,0 +1,21 @@ +#include +#include +#include +#include +#include "tpl_params.h" + +void update_uboot_fdt(void *fdt_addr, tpl_params *tplp); +void ft_update_cpu_nodes(void* dtb_ptr, bd_t *bd); + +#define ENV_RDP1 PARAM1_BASE_ADDR_STR +#define ENV_RDP2 PARAM2_BASE_ADDR_STR +#define ENV_DHD1 DHD_BASE_ADDR_STR +#define ENV_DHD2 DHD_BASE_ADDR_STR_1 +#define ENV_DHD3 DHD_BASE_ADDR_STR_2 +#define ENV_BUFMEM BUFMEM_BASE_ADDR_STR +#define ENV_RNRMEM RNRMEM_BASE_ADDR_STR + +#define QUAD_CPUS 4 +#define DUAL_CPUS 2 +#define ONE_CPU 1 + diff --git a/arch/arm/mach-bcmbca/include/bcmbca_button.h b/arch/arm/mach-bcmbca/include/bcmbca_button.h new file mode 100644 index 0000000000..20f73161c2 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/bcmbca_button.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 Broadcom Ltd. + */ + +#ifndef _BCMBCA_BUTTON_H +#define _BCMBCA_BUTTON_H + +typedef void (*buttonNotifyHook_t)(unsigned long timeInMs, void *param); +int register_button_action(const char *button_name, const char *action_name, + buttonNotifyHook_t hook); +int register_button_action_for_event(const char *button_name, const char* event_name, + const char *action_name, buttonNotifyHook_t hook); +void bcmbca_button_init(void); +void btn_poll_block(void); +int btn_poll(void); + +#endif diff --git a/arch/arm/mach-bcmbca/include/bcmbca_nand_spl.h b/arch/arm/mach-bcmbca/include/bcmbca_nand_spl.h new file mode 100644 index 0000000000..32d3e20528 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/bcmbca_nand_spl.h @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 Broadcom Ltd. + */ + +#ifndef _BCMBCA_NAND_SPL_H +#define _BCMBCA_NAND_SPL_H + +u32 nand_spl_get_blk_size(void); +u32 nand_spl_get_page_size(void); +u64 nand_spl_get_total_size(void); + +#endif diff --git a/arch/arm/mach-bcmbca/include/boot_blob.h b/arch/arm/mach-bcmbca/include/boot_blob.h new file mode 100644 index 0000000000..50f07724c5 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/boot_blob.h @@ -0,0 +1,62 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _BOOT_BLOB_H +#define _BOOT_BLOB_H + +#define BOOT_BLOB_SUCCESS 0 +#define BOOT_BLOB_NOT_IN_HASTTBL -1 +#define BOOT_BLOB_INVALID_PARAM -2 +#define BOOT_BLOB_MAGIC_NOT_FOUND -3 +#define BOOT_BLOB_VERIFICATION_FAIL -4 + +#define DPFE_MAGIC_MASK 0xffffff00 +#define MCB_TABLE_MAGIC 0x00CB00CB +#define DDR3_TABLE_MAGIC 0x64447233 +#define DDR4_TABLE_MAGIC 0x64447234 +#define DPFE_DDR3_TABLE_MAGIC 0x64503300 +#define DPFE_DDR4_TABLE_MAGIC 0x64503400 +#define UBOOT_ENV_MAGIC 0x75456e76 +#define TPL_TABLE_MAGIC 0x74506c21 + +#define IS_DPFE_DDR3_MAGIC(magic) \ + (((magic)&DPFE_MAGIC_MASK) == DPFE_DDR3_TABLE_MAGIC) +#define IS_DPFE_DDR4_MAGIC(magic) \ + (((magic)&DPFE_MAGIC_MASK) == DPFE_DDR4_TABLE_MAGIC) +#define IS_DPFE_MAGIC(magic) \ + (IS_DPFE_DDR3_MAGIC(magic) || IS_DPFE_DDR4_MAGIC(magic)) + +#define BOOT_BLOB_MAX_MAGIC_SEARCH 6 +#define BOOT_BLOB_MAX_MAGIC_NUMS 6 +#define BOOT_BLOB_SEARCH_START_ADDR 0x0 +#define BOOT_BLOB_SEARCH_END_ADDR 0x200000 +#define BOOT_BLOB_SEARCH_BOUNDARY 0x1000 +#define BOOT_BLOB_MAX_ENV_SIZE 0x10000 + +#if defined(CONFIG_BCM6846) || defined(CONFIG_BCM6878) +#define BOOT_BLOB_MAX_DDR_SIZE 0x8000 +#else +#define BOOT_BLOB_MAX_DDR_SIZE 0x10000 +#endif + +struct overlays { + uint32_t ovltype; + uint32_t selector; + uint32_t offset; + uint32_t size; + uint8_t sha[32]; +}; + +typedef struct _boot_blob_hdr { + uint32_t magic; + uint32_t length; + uint32_t crc; +}boot_blob_hdr; + +int load_boot_blob(uint32_t magic, uint32_t sel, void *data, int* len); +void *load_spl_env(void *buffer); +struct overlays* get_boot_blob_hash_entry(int i); + +#endif diff --git a/arch/arm/mach-bcmbca/include/boot_flash.h b/arch/arm/mach-bcmbca/include/boot_flash.h new file mode 100644 index 0000000000..9a31eaf45f --- /dev/null +++ b/arch/arm/mach-bcmbca/include/boot_flash.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _BOOT_FLASH_H +#define _BOOT_FLASH_H + +#define NOR_XIP_BASE_ADDR 0xffd00000 + +#define FLASH_DEV_STR_NAND "NAND" +#define FLASH_DEV_STR_SPINOR "SPINOR" +#define FLASH_DEV_STR_EMMC "EMMC" + +#define SPIFLASH_MTDNAME "nor0" + +int boot_flash_init(void); +int read_boot_device(uint32_t address, void *data, int len); + +#endif diff --git a/arch/arm/mach-bcmbca/include/brcmnand_spl.h b/arch/arm/mach-bcmbca/include/brcmnand_spl.h new file mode 100644 index 0000000000..fce102848a --- /dev/null +++ b/arch/arm/mach-bcmbca/include/brcmnand_spl.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _BRCM_NAND_SPL_H +#define _BRCM_NAND_SPL_H + +void brcmnand_init(void); +uint32_t brcmnand_get_block_size(void); +uint32_t brcmnand_get_page_size(void); +uint64_t brcmnand_get_total_size(void); +int brcmnand_read_buf(int block, int offset, u8 *dst, u32 len); +int brcmnand_is_bad_block(int block); + +#endif diff --git a/arch/arm/mach-bcmbca/include/ddrinit_dpfe.h b/arch/arm/mach-bcmbca/include/ddrinit_dpfe.h new file mode 100644 index 0000000000..ddeb3cab19 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/ddrinit_dpfe.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _DDRINIT_DPFE_H +#define _DDRINIT_DPFE_H + +#define DPFE_OPTION_SAFEMODE 0x1 +#define DPFE_OPTION_SEG_FIRST 0x2 +#define DPFE_OPTION_SEG_LAST 0x4 +#define DPFE_OPTION_SEG_MASK (DPFE_OPTION_SEG_FIRST|DPFE_OPTION_SEG_LAST) + +typedef struct _dpfe_seg_param { + uint8_t* seg_buf; + uint32_t buf_size; + int seg_id; + uint32_t mcb_sel; +}dpfe_seg_param; + +typedef struct _dpfe_param { + dpfe_seg_param* seg_param; + uint32_t* mcb; +#ifdef CONFIG_BCMBCA_DDRC_SCRAMBLER + uint32_t *seed; +#endif + uint32_t* ddr_size; + uint32_t dpfe_option; +}dpfe_param; + +typedef int (*dpfe_func) (dpfe_param* params); + +#endif diff --git a/arch/arm/mach-bcmbca/include/dt_helper.h b/arch/arm/mach-bcmbca/include/dt_helper.h new file mode 100644 index 0000000000..1c6808e673 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/dt_helper.h @@ -0,0 +1,46 @@ +#define ADSL_BASE_ADDR_STR "adsl" +#define PARAM1_BASE_ADDR_STR "rdp1" +#define PARAM2_BASE_ADDR_STR "rdp2" +#define DHD_BASE_ADDR_STR "dhd0" +#define DHD_BASE_ADDR_STR_1 "dhd1" +#define DHD_BASE_ADDR_STR_2 "dhd2" +#define PLC_BASE_ADDR_STR "plc" +#define OPTEE_BASE_ADDR_STR "optee" +#define TZIOC_BASE_ADDR_STR "tzioc" +#define CMA_BASE_ADDR_STR "cma" +#define CMA_PAD_BASE_ADDR_STR "pad0" +#define BUFMEM_BASE_ADDR_STR "bufmem" +#define RNRMEM_BASE_ADDR_STR "rnrmem" +#define B15_MEGA_BARRIER "b15_mega_br" +#define DT_RSVD_PREFIX_STR "dt_reserved_" +#define DT_RSVD_NODE_STR "reserved-memory" +#define DT_CMA_CACHED_NODE_STR "plat_rsvmem_cached_device" +#define DT_CMA_UNCACHED_NODE_STR "plat_rsvmem_uncached_device" +#define DT_CMA_RSVSIZE_PROP_STR "rsvd-size" +#define DT_ROOT_NODE "/" +#define DT_MEMORY_NODE "memory" +#define OF_NODE_ADDR_CELLS_DEFAULT 0x2 +#define OF_NODE_SIZE_CELLS_DEFAULT 0x1 + +#define DT_CHOSEN_NODE "chosen" + +#define DT_BOOTARGS_PROP "bootargs" +#define DT_BOOTARGS_MAX_SIZE 1024 + + + +int dtb_set_reserved_memory(void *dtb_ptr, char* name, uint64_t addr, uint64_t size); +int dtb_del_cma_rsvmem_device(void *dtb_ptr); +const void *dtb_get_prop(void *dtb_ptr, const char *node_path, + const char *property, int *len); +int dtb_getprop_reg(void *dtb_ptr, + const char* node_name_par, + const char *node_name, + uint64_t* addr, + uint64_t* size); +int dtb_getprop_cma_rsv_param(void *dtb_ptr, const char *node_suffix, const char *name, uint64_t* param); +int dtb_getprop_cma_rsvmem_size(void *dtb_ptr, const char *name, uint64_t* size); +int dtb_setprop_cma_rsvmem_size(char* dtb_ptr, const char *name, uint64_t size); +int dtb_del_cma_rsvmem(void* dtb_ptr, const char *name); +int dtb_del_reserved_memory(void* dtb_ptr, char* name); +int dtb_set_bootargs(void *fdt, char* bootargs, int append); diff --git a/arch/arm/mach-bcmbca/include/early_abort.h b/arch/arm/mach-bcmbca/include/early_abort.h new file mode 100644 index 0000000000..e578bd6eda --- /dev/null +++ b/arch/arm/mach-bcmbca/include/early_abort.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef _EARLY_ABORT_H +#define _EARLY_ABORT_H +typedef enum _spl_ea_status_e { + SPL_EA_NONE = 0x0, + SPL_EA_DDR3_SAFE_MODE = 0x1, + SPL_EA_DDR4_SAFE_MODE = 0x2, + SPL_EA_DDR_MCB_SEL = 0x4, + SPL_EA_IMAGE_RECOV = 0x8, + SPL_EA_IMAGE_FB = 0x10, + SPL_EA_IGNORE_BOARDID = 0x20, + SPL_EA_JTAG_UNLOCK = 0x40, +} spl_ea_status_t; + + +typedef struct e_abort_s { + spl_ea_status_t status; + uint32_t data; +} early_abort_t; + +void early_abort(void); +early_abort_t* early_abort_info(void); +#define SPL_EA_TM_MS 60000 +#define SPL_EA_CATCH_TM_MS 200 +#endif diff --git a/arch/arm/mach-bcmbca/include/mmu_map_v7.h b/arch/arm/mach-bcmbca/include/mmu_map_v7.h new file mode 100644 index 0000000000..bc72d67ee0 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/mmu_map_v7.h @@ -0,0 +1,76 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#ifndef MMU_MAP_V7_H +#define MMU_MAP_V7_H + + +/* MMU and TT (Translation Tables) definitions + + WBWA == Write-Back, Write-Allocate + WBNWA == Write-Back, No Write-Allocate + WTNWA == Write-Through, No Write-Allocate + NC == Non-Cacheable + SO == Strongly-Ordered + SD == Sharable-Device + NSD == Non-Sharable-Device +*/ + +#define DESC_DOMAIN(x) ((x << 5) & 0x000001E0) + +// section descriptor definitions +#define SECTION_AP 0xc00 +#define SECTION_XN 0x10 +#define SECTION_PXN 0x1 +#if defined(CONFIG_BCM63138) +/* A9 does not support PXN */ +#define SECTION_XN_ALL (SECTION_XN) +#else +#define SECTION_XN_ALL (SECTION_XN|SECTION_PXN) +#endif +#define SECTION_SHAREABLE (1 << 16) +#define SECTION_SUPER_DESC (1 << 18) +#define SECTION_DESC_NS (1 << 19) +// TEX[2] = 1 +#define SECTION_OUTER_NC_INNER_WBWA 0x00004006 +#define SECTION_OUTER_WBNWA_INNER_WBWA 0x00007006 +#define SECTION_OUTER_WTNWA_INNER_WBWA 0x00006006 +#define SECTION_OUTER_WBWA_INNER_NC 0x00005002 +// TEX[2] = 0, OUTER & INNER are same all the time +#define SECTION_OUTER_WBWA_INNER_WBWA 0x0000100E +#define SECTION_OUTER_NSD_INNER_NSD 0x00002002 +#define SECTION_OUTER_NC_INNER_NC 0x00001002 +#define SECTION_OUTER_WTNWA_INNER_WTNWA 0x0000000A +#define SECTION_OUTER_WBNWA_INNER_WBNWA 0x0000000E +#define SECTION_OUTER_SO_INNER_SO 0x00000002 +#define SECTION_OUTER_SD_INNER_SD 0x00000006 + +// definition for common section attribute +#define SECTION_ATTR_INVALID 0x0 +#define SECTION_ATTR_CACHED_MEM \ + (SECTION_OUTER_WBWA_INNER_WBWA|SECTION_AP|DESC_DOMAIN(0)) +#define SECTION_ATTR_NONCACHED_MEM \ + (SECTION_OUTER_NC_INNER_NC|SECTION_AP|DESC_DOMAIN(0)) +#define SECTION_ATTR_DEVICE \ + (SECTION_OUTER_NSD_INNER_NSD|SECTION_AP|SECTION_XN_ALL|DESC_DOMAIN(0)) +#define SECTION_ATTR_DEVICE_EXEC \ + (SECTION_OUTER_NSD_INNER_NSD|SECTION_AP|DESC_DOMAIN(0)) +#define SECTION_SET(__PA__,__ATTR__) ((__PA__&0xfff00000)|(__ATTR__&0xfffff)) + +struct mm_region { + phys_addr_t phys; +#ifdef CONFIG_ARMV7_LPAE + uint64_t virt; + uint64_t attrs; +#else + uint32_t virt; + uint32_t attrs; +#endif + uint32_t size; +}; + +extern struct mm_region *mem_map; + +#endif diff --git a/arch/arm/mach-bcmbca/include/otp_hw.h b/arch/arm/mach-bcmbca/include/otp_hw.h new file mode 100644 index 0000000000..8964c745d0 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/otp_hw.h @@ -0,0 +1,90 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ + +#ifndef _OTP_HW_H +#define _OTP_HW_H + +#include "otp_hw_map.h" + +/* + * includes common OTP controller offsets + * */ + +#define OTP_STATUS_CMD_DONE_TMO_CNT 65536 +#define OTP_CPU_LOCK_TMO_CNT 65536 + + +#if defined (CONFIG_OTP_V1) +/* 40nm SoC */ + +#define OTP_CTRL0_ACCESS_MODE (0x2 << 22) +#define OTP_CTRL0_PROG_EN (0x1 << 21) +#define OTP_CTRL0_START (0x1 << 0) +#define OTP_CTRL0_CMD_OTP_PROG_EN (0x2 << 1) +#define OTP_CTRL0_CMD_PROG (0xA << 1) +#define OTP_CTRL0_CMD_PROG_LOCK (0x19 << 1) + +#define OTP_CTRL0_PROG_MODE_ENABLE (OTP_CTRL0_START|OTP_CTRL0_PROG_EN|OTP_CTRL0_CMD_OTP_PROG_EN) +#define OTP_CTRL0_PROG_CMD_START (OTP_CTRL0_START|OTP_CTRL0_CMD_PROG|OTP_CTRL0_ACCESS_MODE|OTP_CTRL0_PROG_EN) + +#define OTP_CTRL0_OFFSET 0x0 + +#define OTP_CTRL1_CPU_MODE (1 << 0) +#define OTP_CTRL1_OFFSET 0x4 +#define OTP_CTRL2_OFFSET 0x8 +#define OTP_CTRL3_OFFSET 0xC + +#define OTP_STATUS0_OFFSET 0x14 + +#define OTP_STATUS1_PROG_OK (1 << 2) +#define OTP_STATUS1_CMD_DONE (1 << 1) +#define OTP_STATUS1_OFFSET 0x18 + +#elif defined(CONFIG_OTP_V2) || defined(CONFIG_OTP_V3) + +/* 28-16nm SoC */ +#define OTP_CTRL0_START (0x1 << 0) +#define OTP_CTRL0_CMD_OTP_PROG_EN (0x2 << 1) +#define OTP_CTRL0_CMD_PROG (0xA << 1) +#define OTP_CTRL0_CMD_PROG_LOCK (0x19 << 1) +#define OTP_CTRL0_PROG_MODE_ENABLE (OTP_CTRL0_START|OTP_CTRL0_CMD_OTP_PROG_EN) +#define OTP_CTRL0_PROG_CMD_START (OTP_CTRL0_START|OTP_CTRL0_CMD_PROG) +#define OTP_CTRL0_OFFSET 0x0 + +#define OTP_CTRL1_CPU_MODE (1 << 0) +#define OTP_CTRL1_OFFSET 0x4 +#define OTP_CTRL2_OFFSET 0x8 +#define OTP_CTRL2_HI_OFFSET 0xC +#define OTP_CTRL3_OFFSET 0x10 + +#define OTP_STATUS0_OFFSET 0x18 +#define OTP_STATUS0_HI_OFFSET 0x1C + +#define OTP_STATUS1_PROG_OK (1 << 2) +#define OTP_STATUS1_CMD_DONE (1 << 1) +#define OTP_STATUS1_OFFSET 0x20 + + +#define OTP_CPU_LOCK_SHIFT 0x0 +#define OTP_CPU_LOCK_MASK 0x1 + + +#if defined(CONFIG_OTP_LOCK) + +#if defined(CONFIG_OTP_V3) +/* 16nm SoC*/ +#define OTP_CPU_LOCK_OFFSET 0x54 +#else +#define OTP_CPU_LOCK_OFFSET 0x70 +#endif + +#endif +#else + +#error OTP controller is not defined + +#endif + +#endif diff --git a/arch/arm/mach-bcmbca/include/otp_hw_cmn.h b/arch/arm/mach-bcmbca/include/otp_hw_cmn.h new file mode 100644 index 0000000000..e7f0287275 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/otp_hw_cmn.h @@ -0,0 +1,191 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +#ifndef _OTP_HW_CMN_H_ +#define _OTP_HW_CMN_H_ + + +/* Generic OTP controller Interface */ + +typedef struct otp_hw_cmn_s otp_hw_cmn_t; + +typedef enum otp_hw_cmn_err_e{ + OTP_HW_CMN_OK = 0, + OTP_HW_CMN_ERR_FAIL = -1, + OTP_HW_CMN_ERR_UNSP = -2, + OTP_HW_CMN_ERR_KEY_EMPTY = -3, + OTP_HW_CMN_ERR_DESC_ECC = -4, + OTP_HW_CMN_ERR_DATA_ECC = -5, + OTP_HW_CMN_ERR_TMO = -6, + OTP_HW_CMN_ERR_INVAL = -7, + OTP_HW_CMN_ERR_BAD_PARAM = -8, + OTP_HW_CMN_ERR_WRITE_FAIL= -9, +} otp_hw_cmn_err_t; + + + + +/*status command to use in control function*/ +/* + * (N)SRD - (Non)Secure Master Read + * (N)SW - (Non)Secure Master Write + * S - Secure + * PAC - peripheral access control either block or registers + * - Secure Master Write + * */ +typedef enum otp_hw_cmn_status_e{ + OTP_HW_CMN_STATUS_UNLOCKED = 0x0, + OTP_HW_CMN_STATUS_SRD_LOCKED = 0x1, + OTP_HW_CMN_STATUS_SW_LOCKED = 0x2, + OTP_HW_CMN_STATUS_NSRD_LOCKED = 0x4, + OTP_HW_CMN_STATUS_NSW_LOCKED = 0x8, + OTP_HW_CMN_STATUS_SW_PAC_LOCKED = 0x10, + OTP_HW_CMN_STATUS_NSW_PAC_LOCKED = 0x20, + OTP_HW_CMN_STATUS_SRD_PAC_LOCKED = 0x40, + OTP_HW_CMN_STATUS_NSRD_PAC_LOCKED = 0x80, + OTP_HW_CMN_STATUS_NS_LOCKED = 0x100, + OTP_HW_CMN_STATUS_S_LOCKED = 0x200, + OTP_HW_CMN_STATUS_ROW_W_LOCKED = 0x400, + OTP_HW_CMN_STATUS_ROW_RD_LOCKED = 0x800, + OTP_HW_CMN_STATUS_ROW_DATA_VALID = 0x1000 +} otp_hw_cmn_status_t; + +/*generic lock command to use in control function*/ +/* + * (N)SRD - (Non)Secure Master Read + * (N)SW - (Non)Secure Master Write + * S - Secure + * PAC - peripheral access control either block or registers + * - Secure Master Write + * */ +typedef enum otp_hw_cmn_perm_e{ + OTP_HW_CMN_CTL_LOCK_NONE = 0x0, + OTP_HW_CMN_CTL_LOCK_PAC_SW = 0x1, + OTP_HW_CMN_CTL_LOCK_PAC_NSW = 0x2, + OTP_HW_CMN_CTL_LOCK_PAC_NSRD = 0x4, + OTP_HW_CMN_CTL_LOCK_PAC_SRD = 0x8, + OTP_HW_CMN_CTL_LOCK_SRD = 0x10, + OTP_HW_CMN_CTL_LOCK_NSRD = 0x20, + OTP_HW_CMN_CTL_LOCK_SW = 0x40, + OTP_HW_CMN_CTL_LOCK_NSW = 0x80, + OTP_HW_CMN_CTL_LOCK_ALL = 0x100, + OTP_HW_CMN_CTL_LOCK_NS = 0x200, + OTP_HW_CMN_CTL_LOCK_NS_PROV = 0x400, + OTP_HW_CMN_CTL_LOCK_S = 0x800, + OTP_HW_CMN_CTL_LOCK_ROW_RD = 0x1000, + OTP_HW_CMN_CTL_LOCK_ROW_W = 0x2000, +} otp_hw_cmn_perm_t; +/* container for the control call*/ +typedef struct _otp_hw_ctl_data_s { + u32 addr; + union { + otp_hw_cmn_perm_t perm; + otp_hw_cmn_status_t status; + }; +} otp_hw_ctl_data_t; + +/* generic OTP command options*/ +typedef enum otp_hw_cmn_ctl_e { + OTP_HW_CMN_CTL_NONE = 0x0, + OTP_HW_CMN_CTL_STATUS = 0x1, + OTP_HW_CMN_CTL_LOCK = 0x2, + OTP_HW_CMN_CTL_UNLOCK = 0x4, + OTP_HW_CMN_CTL_OTPCMD_AUTH_PROG = 0x8, + OTP_HW_CMN_CTL_OTPCMD_AUTH_PROG_DONE = 0x10, + OTP_HW_CMN_CTL_OTPCMD_ECC = 0x20, + OTP_HW_CMN_CTL_OTPCMD_ECC_WREAD = 0x40, + OTP_HW_CMN_CTL_OTPCMD_PROG_LOCK = 0x80, + OTP_HW_CMN_CTL_CONF = 0x100 +} otp_hw_cmn_ctl_t; + +/* generic row id*/ +typedef enum otp_hw_cmn_row_addr_type_e{ + OTP_HW_CMN_ROW_ADDR_NONE = 0x0, + OTP_HW_CMN_ROW_ADDR_ROW, +} otp_hw_cmn_row_addr_type_t; + + +/* a control functions argument */ +typedef struct _otp_hw_ctl_data_ { + otp_hw_cmn_ctl_t ctl; + uintptr_t data; + u32 size; +} otp_hw_cmn_ctl_cmd_t; + +/* a row configuration container */ +typedef struct otp_hw_row_conf_s { + otp_hw_cmn_ctl_t op_type; + otp_hw_cmn_row_addr_type_t addr_type; + ulong perm; + uintptr_t arg; +} otp_hw_cmn_row_conf_t; + +/* a row data container with map to feature name*/ +typedef struct otp_hw_cmn_row_s { + otp_map_feat_t feat; + u32 addr; + u32 mask; + u32 shift; + u32 range; + otp_hw_cmn_row_conf_t conf; + union { + u8* pdata; + u32 data; + }; + u32 valid; +} otp_hw_cmn_row_t; + +/* otp hw object */ +struct otp_hw_cmn_s { + //Driver which is implemented elsewhere + otp_hw_cmn_t *drv_ext; + uintptr_t mm; + otp_hw_cmn_row_t *rows; + u32 row_max; + otp_hw_cmn_row_conf_t row_conf; + otp_hw_cmn_ctl_cmd_t ctl_cmd; + /* reads one or more rows from the device*/ + otp_hw_cmn_err_t (*read)(otp_hw_cmn_t *dev, + u32 addr, + u32 *, + u32); + + /* writes one or more rows to the device*/ + otp_hw_cmn_err_t (*write)(otp_hw_cmn_t *, + u32 addr, + const u32 *, + u32 ); + /* reads one or more rows from the device based on otp_hw_cmn_row_conf_t - does not require + * feature map + * */ + otp_hw_cmn_err_t (*read_ex)(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_row_conf_t *, + u32 *, + u32); + /* writes one or more rows to the device based on otp_hw_cmn_row_conf_t + * - does not require + * feature map + * */ + otp_hw_cmn_err_t (*write_ex)(otp_hw_cmn_t *, + u32 addr, + otp_hw_cmn_row_conf_t *, + const u32 *, + u32 ); + + /* control various device functions such as: + * -lock + * -status + * based on otp_hw_cmdn_ctl_cmd_t content + * */ + otp_hw_cmn_err_t (*ctl)(otp_hw_cmn_t *dev, + const otp_hw_cmn_ctl_cmd_t *cmd, + u32* res); +}; +/* on init pointer */ +typedef otp_hw_cmn_err_t (*otp_hw_cmn_init_t)(otp_hw_cmn_t* ); + +#endif + + diff --git a/arch/arm/mach-bcmbca/include/otp_hw_map.h b/arch/arm/mach-bcmbca/include/otp_hw_map.h new file mode 100644 index 0000000000..370f42aab4 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/otp_hw_map.h @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ + +#ifndef _OTP_HW_MAP_H +#define _OTP_HW_MAP_H + +/* + * includes common OTP map rows for JTAG password + * */ +#if defined (CONFIG_OTP_V1) + +#define OTP_JTAG_SER_NUM_ROW_1 19 // Row19[25:20] = CSEC_CHIPID[5:0] +#define OTP_JTAG_SER_NUM_MASK_1 0x0000003F +#define OTP_JTAG_SER_NUM_REG_SHIFT_1 20 +#define OTP_JTAG_SER_NUM_ROW_2 20 // Row20[25:0] = CSEC_CHIPID[31:6] +#define OTP_JTAG_SER_NUM_MASK_2 0x03FFFFFF +#define OTP_JTAG_SER_NUM_SHIFT_2 6 +#define OTP_JTAG_PWD_ROW_1 21 // Row21[25:0] = CSEC_PWD[25:0] +#define OTP_JTAG_PWD_ROW_2 22 // Row22[25:0] = CSEC_PWD[51:26] +#define OTP_JTAG_PWD_ROW_3 23 // Row23[11:0] = CSEC_PWD[63:52] +#define OTP_JTAG_PWD_MASK_1 0x03FFFFFF +#define OTP_JTAG_PWD_MASK_2 0x03FFFFFF +#define OTP_JTAG_PWD_MASK_3 0x00000FFF +#define OTP_JTAG_PWD_SHIFT_1 0 +#define OTP_JTAG_PWD_SHIFT_2 26 +#define OTP_JTAG_PWD_SHIFT_3 52 +#define OTP_JTAG_PWD_RDLOCK_ROW 23 +#define OTP_JTAG_PWD_RDLOCK_REG_SHIFT 25 // Row23[25] + +#define OTP_JTAG_MODE_ROW 18 +#define OTP_JTAG_MODE_REG_SHIFT 9 +#define OTP_JTAG_MODE_LOCK 0x38 +#define OTP_JTAG_MODE_PERMALOCK 0x3F +#define OTP_JTAG_MODE_MASK 0x3F + +#define OTP_JTAG_CUST_LOCK_ROW 6 +#define OTP_JTAG_CUST_LOCK_VAL 0x1F +#define OTP_JTAG_CUST_LOCK_REG_SHIFT 25 + + + +#elif defined (CONFIG_OTP_V2) + + +#define OTP_JTAG_MODE_ROW 18 +#define OTP_JTAG_MODE_REG_SHIFT 9 +#define OTP_JTAG_MODE_LOCK 0x38 +#define OTP_JTAG_MODE_PERMALOCK 0x3F +#define OTP_JTAG_MODE_MASK 0x3F + +#define OTP_JTAG_SER_NUM_ROW 20 // Row20 = CSEC_CHIPID +#define OTP_JTAG_SER_NUM_SHIFT 0x0 +#define OTP_JTAG_SER_NUM_MASK 0xFFFFFFFF + +#define OTP_JTAG_PWD_ROW_1 21 // Row21 = CSEC_JTAGPWD[31:0] +#define OTP_JTAG_PWD_SHIFT_1 0 +#define OTP_JTAG_PWD_MASK_1 0xFFFFFFFF + +#define OTP_JTAG_PWD_ROW_2 22 // ROW22 = CSEC_JTAGPWD[63:32] +#define OTP_JTAG_PWD_MASK_2 0xFFFFFFFF +#define OTP_JTAG_PWD_SHIFT_2 0x0 //was 31 why? + +/* row 19 */ +#define OTP_JTAG_PWD_RDLOCK_ROW 19 // ROW19[31] +#define OTP_JTAG_PWD_RDLOCK_SHIFT 31 +#define OTP_JTAG_PWD_RDLOCK_MASK 0x1 + +/* row 6 */ +/* This is a section LOCKING row - whole section getting locked + * either CUSTomer( USER2) + * rows 18-25 are locked + * + * */ +#define OTP_JTAG_CUST_LOCK_ROW 6 +#define OTP_JTAG_CUST_LOCK_SHIFT 25 +#define OTP_JTAG_CUST_LOCK_MASK 0x1F +#define OTP_JTAG_CUST_LOCK_VAL 0x1F + + +#elif defined (CONFIG_OTP_V3) + + +/* row 14 */ +#define OTP_JTAG_MODE_ROW 14 /* 0 -fully open; 2 - pwd protected; 3 fully closed*/ +#define OTP_JTAG_MODE_SHIFT 16 +#define OTP_JTAG_MODE_MASK 0x3 +#define OTP_JTAG_MODE_LOCK 0x2 +#define OTP_JTAG_MODE_PERMALOCK 0x3 + +/* row 26 */ +#define OTP_JTAG_SER_NUM_ROW 26 // Row26 = CSEC_JTAGID[31:0] (formerly CSEC_CHIPID) +#define OTP_JTAG_SER_NUM_SHIFT 0x0 +#define OTP_JTAG_SER_NUM_MASK 0xFFFFFFFF + +/* row 27 */ +#define OTP_JTAG_PWD_ROW_1 27 // Row27 = CSEC_JTAGPWD[31:0] +#define OTP_JTAG_PWD_SHIFT_1 0 +#define OTP_JTAG_PWD_MASK_1 0xFFFFFFFF + +/* row 28 */ +#define OTP_JTAG_PWD_ROW_2 28 // ROW28 = CSEC_JTAGPWD[63:32] +#define OTP_JTAG_PWD_SHIFT_1 0 +#define OTP_JTAG_PWD_MASK_2 0xFFFFFFFF + +/* row 14 */ +#define OTP_JTAG_PWD_RDLOCK_ROW 14 // ROW14[25] (formerly CSEC_READLOCK) +#define OTP_JTAG_PWD_RDLOCK_SHIFT 25 +#define OTP_JTAG_PWD_RDLOCK_MASK 0x1 + + +#else + +#error OTP MAP is not defined + +#endif + +#endif diff --git a/arch/arm/mach-bcmbca/include/otp_map.h b/arch/arm/mach-bcmbca/include/otp_map.h new file mode 100644 index 0000000000..891d3abace --- /dev/null +++ b/arch/arm/mach-bcmbca/include/otp_map.h @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +#ifndef _OTP_MAP_H +#define _OTP_MAP_H +/* + * OTP feature map. + * An OTP field named in the corresponding SoC e.g 63138-63146 or 6858-6855 is being assigned a feature name + * OTP map feature name closely resembles a specific OTP map row name. Other entries server as delimiters. + * This allows to unify access to OTP map across all SoCs + * Whenever new otp field is needed to be read or fused it neets to be declared here and subsequently mapped in + * the driver initilizer function to the feature name + * Example: + * OTP_MAP_LDO_TRIM -feature name + * OTP_MAP_LDO_TRIM_ROW - as defined in otp specific arch + * + * */ +typedef enum otp_map_feat { + OTP_MAP_INVALID = 0, + OTP_MAP_SEC_CHIPVAR, + OTP_MAP_LDO_TRIM, + OTP_MAP_CPU_CLOCK_FREQ, + OTP_MAP_PMC_BOOT, + OTP_MAP_PCM_DISABLE, + OTP_MAP_CPU_CORE_CFG, + OTP_MAP_SGMII_DISABLE, + OTP_MAP_SATA_DISABLE, + OTP_MAP_BRCM_BTRM_BOOT_ENABLE, + OTP_MAP_CUST_BTRM_BOOT_ENABLE, + OTP_MAP_BRCM_ENFORCE_BINIT, + OTP_MAP_CUST_MFG_MRKTID, + OTP_MAP_BRCM_PRODUCTION_MODE, + OTP_MAP_CUST_OP_INUSE, + SOTP_MAP_INVALID, + SOTP_MAP_FLD_ROE, + SOTP_MAP_FLD_HMID, + SOTP_MAP_KEY_DEV_SPECIFIC, + SOTP_MAP_SER_NUM, + SOTP_MAP_KEY_SECT_1, + SOTP_MAP_KEY_SECT_2, + SOTP_MAP_KEY_SECT_3, + SOTP_MAP_KEY_SECT_4, + SOTP_MAP_KEY_SECT_5, + SOTP_MAP_ANTI_ROLLBACK, + SOTP_MAP_UNUSED_1, + SOTP_MAP_UNUSED_2, + SOTP_MAP_UNUSED_3, + SOTP_MAP_UNUSED_4, + SOTP_MAP_UNUSED_5, + SOTP_MAP_UNUSED_6, + SOTP_MAP_UNUSED_7, + OTP_MAP_MAX +} otp_map_feat_t; + + + + +#endif diff --git a/arch/arm/mach-bcmbca/include/otp_map_cmn.h b/arch/arm/mach-bcmbca/include/otp_map_cmn.h new file mode 100644 index 0000000000..bff6c8da15 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/otp_map_cmn.h @@ -0,0 +1,45 @@ +#ifndef __OTP_MAP_CMN_H +#define __OTP_MAP_CMN_H + +#include "otp_map.h" +#include "otp_hw_cmn.h" + +/* Generic OTP MAP Interface */ +typedef struct _otp_map_cmn otp_map_cmn_t; + +typedef enum _otp_map_cmn_err_ { + OTP_MAP_CMN_OK = 0, + OTP_MAP_CMN_ERR_FAIL = -1, + OTP_MAP_CMN_ERR_UNSP = -2, + OTP_MAP_CMN_ERR_INVAL= -3, +} otp_map_cmn_err_t; + + +struct _otp_map_cmn { + otp_hw_cmn_t dev; + otp_hw_cmn_init_t dev_init; + /* + * fuse/write feature. Feed with data aray of u32 and size + * */ + otp_map_cmn_err_t (*write)(otp_map_cmn_t*, u32, const u32*, u32); + /* + * reads feature content. Return data pointer and its size + * */ + otp_map_cmn_err_t (*read)(otp_map_cmn_t*, u32, u32**, u32*); + /* control various functions such as: + * -lock + * -status + * based on otp_hw_cmd_ctl_cmd_t content + * */ + otp_map_cmn_err_t (*ctl)(otp_map_cmn_t*, otp_hw_cmn_ctl_cmd_t*, u32*); +}; +/* An initializer for otp_map_cmnt_t obj. + * Accept external driver object with an initializer function */ +otp_map_cmn_err_t otp_map_cmn_init(otp_map_cmn_t* map, + otp_hw_cmn_init_t hw_init, + otp_hw_cmn_t* ext_drv); + +otp_hw_cmn_err_t otp_hw_cmn_init(otp_hw_cmn_t* dev); +otp_hw_cmn_err_t sotp_hw_cmn_init(otp_hw_cmn_t* dev); + +#endif diff --git a/arch/arm/mach-bcmbca/include/pinctrl.h b/arch/arm/mach-bcmbca/include/pinctrl.h new file mode 100644 index 0000000000..122ea4462c --- /dev/null +++ b/arch/arm/mach-bcmbca/include/pinctrl.h @@ -0,0 +1,25 @@ +#include + + +#define PINMUX_ADDR_SHIFT 0 +#define PINMUX_ADDR_MASK (0xfff< + +#if defined(CONFIG_BCMBCA_IKOS) && !defined(CONFIG_BRCM_IKOS) +#define CONFIG_BRCM_IKOS +#endif + +#ifndef EXPORT_SYMBOL +#define EXPORT_SYMBOL(a) +#endif + +#ifndef IS_BCMCHIP +#define IS_BCMCHIP(num) (defined(_BCM9##num##_) || \ + defined(CONFIG_BCM9##num) || defined(CONFIG_BCM##num)) +#endif + +#if defined(__ASSEMBLER__) && !defined(_LANGUAGE_ASSEMBLY) +#define _LANGUAGE_ASSEMBLY +#endif + +#include +#include +#include + +#define MAX_PMC_ROM_SIZE 0x8000 +#define MAX_PMC_LOG_SIZE 0x8000 + +/* PMC reserved area. + **NOTE**: Please make sure it matches with + shared/opensource/include/bcm963xx/bcm_mem_reserve.h +*/ +#define PMC_RESERVED_MEM_START 0x000C0000 +#define PMC_RESERVED_MEM_SIZE 0x00040000 // Total PMC reserved memory size 256KB +#define CFG_BOOT_PMC_LOG_SIZE 0x00010000 // Leave 64K reserved memory for PMC log + + +#define CFG_BOOT_PMC_ADDR (PMC_RESERVED_MEM_START) +#define CFG_BOOT_PMC_SIZE (PMC_RESERVED_MEM_SIZE - CFG_BOOT_PMC_LOG_SIZE) // Memory reserved for PMC firmware +#define CFG_BOOT_PMC_LOG_ADDR (PMC_RESERVED_MEM_START + CFG_BOOT_PMC_SIZE) + +#if MAX_PMC_ROM_SIZE + MAX_PMC_LOG_SIZE > CFG_BOOT_PMC_SIZE +#error ROM and LOG buffer size needs to be re-adjusted +#endif + +#ifndef _LANGUAGE_ASSEMBLY +#define pmc_spin_lock(...) do { } while (0) +#define pmc_spin_unlock(...) do { } while (0) + +extern int getAVSConfig(void); +extern int is_pmcfw_code_loaded(void); +extern int is_pmcfw_data_loaded(void); + +#define cache_to_uncache(va) (va) + +#define console_status serial_tstc + +#ifndef phys_to_virt +#define phys_to_virt(a) (a) +#endif + +#endif // #ifndef _LANGUAGE_ASSEMBLY + +#ifndef PMC_IN_MAIN_LOOP + #define PMC_IN_MAIN_LOOP 6 +#endif + +#ifndef PMC_BOOT_TMO_SECONDS + #define PMC_BOOT_TMO_SECONDS 0 +#endif + +/* there are 32 DQM, since REPLY DQM will always be one after the REQUEST + * DQM, we should use use 0 to 30 for REQ DQM, so RPL DQM will be 1 to 31 */ +/* 63138 has pair of DQM#0+DQM#1, #2+#3, #4+#5, and #6+#7. We will use + * DQM#0+DQM#1 pair */ +#define PMC_DQM_REQ_NUM 0 + +#define PMC_DQM_RPL_NUM (PMC_DQM_REQ_NUM + 1) +#define PMC_DQM_RPL_STS (1 << PMC_DQM_RPL_NUM) + +#define PMC_MODE_DQM 0 +#define PMC_MODE_PMB_DIRECT 1 +#ifdef PMC_IMPL_3_X +#define PMC_ACCESS_BPCM_DIRECT 1 +#else +#define PMC_ACCESS_BPCM_DIRECT 0 +#endif + +#ifndef _LANGUAGE_ASSEMBLY +// ---------------------------- Returned error codes -------------------------- +enum { + // 0..15 may come from either the interface or from the PMC command handler + // 256 or greater only come from the interface + kPMC_NO_ERROR, + kPMC_INVALID_ISLAND, + kPMC_INVALID_DEVICE, + kPMC_INVALID_ZONE, + kPMC_INVALID_STATE, + kPMC_INVALID_COMMAND, + kPMC_LOG_EMPTY, + kPMC_INVALID_PARAM, + kPMC_BPCM_READ_TIMEOUT, + kPMC_INVALID_BUS, + kPMC_INVALID_QUEUE_NUMBER, + kPMC_QUEUE_NOT_AVAILABLE, + kPMC_INVALID_TOKEN_SIZE, + kPMC_INVALID_WATERMARKS, + kPMC_INSUFFICIENT_QSM_MEMORY, + kPMC_INVALID_BOOT_COMMAND, + kPMC_BOOT_FAILED, + kPMC_COMMAND_TIMEOUT = 256, + kPMC_MESSAGE_ID_MISMATCH, +}; + +// ---------------------------- Returned log entry structure -------------------------- +typedef struct { + uint8_t reserved; + uint8_t logMsgID; + uint8_t errorCode; + uint8_t logCmdID; + uint8_t srcPort; + uint8_t e_msgID; + uint8_t e_errorCode; + uint8_t e_cmdID; + struct { + uint32_t logReplyNum:8; + uint32_t e_Island:4; + uint32_t e_Bus:2; + uint32_t e_DevAddr:8; + uint32_t e_Zone:10; + } s; + uint32_t e_Data0; +} TErrorLogEntry; + +// ---------------------------- Power states -------------------------- +enum { + kPMCPowerState_Unknown, + kPMCPowerState_NoPower, + kPMCPowerState_LowPower, + kPMCPowerState_FullPower, +}; + +// PMC run-state: +enum { + kPMCRunStateExecutingBootROM = 0, + kPMCRunStateWaitingBMUComplete, + kPMCRunStateAVSCompleteWaitingForImage, + kPMCRunStateAuthenticatingImage, + kPMCRunStateAuthenticationFailed, + kPMCRunStateReserved, + kPMCRunStateStalled, + kPMCRunStateRunning +}; + +// the only valid "gear" values for "SetClockGear" function +enum { + kClockGearLow, + kClockGearHigh, + kClockGearDynamic, + kClockGearBypass +}; + +// PMC Boot options ( parameter for pmc_boot function ) +enum { + kPMCBootDefault = 0, + kPMCBootAVSDisable, + kPMCBootAVSTrackDisable, + kPMCBootLogBuffer, + kPMCBootLogSize +}; + +// int TuneRunner(void); +// int GetSelect0(void); +// int GetSelect3(void); +int pmc_init(void); +void pmc_reset(void); +void pmc_initmode(void); +// int get_pmc_boot_param(unsigned boot_option, unsigned *boot_param); +void pmc_log(int log_type); +void pmc_save_log_item(void); +void pmc_show_log_item(void); +int read_bpcm_reg_direct(int devAddr, int wordOffset, uint32_t * value); +int write_bpcm_reg_direct(int devAddr, int wordOffset, uint32_t value); +int GetRevision(unsigned int *change, unsigned int *revision); +int GetPVT(int sel, int island, int *value); +int GetRCalSetting(int resistor, int *rcal); +int GetDevPresence(int devAddr, int *value); +int GetSWStrap(int devAddr, int *value); +int GetHWRev(int devAddr, int *value); +int GetNumZones(int devAddr, int *value); +int GetAvsDisableState(int island, int *state); +int Ping(void); +int GetErrorLogEntry(TErrorLogEntry * logEntry); +int SetClockHighGear(int devAddr, int zone, int clkN); +int SetClockLowGear(int devAddr, int zone, int clkN); +int SetClockGear(int devAddr, int zone, int gear); +int SetRunState(int island, int state); +int SetPowerState(int island, int state); +#if !defined(PMC_ON_HOSTCPU) +void BootPmcNoRom(unsigned long physAddr); +#endif +int ReadBPCMRegister(int devAddr, int wordOffset, uint32_t * value); +int WriteBPCMRegister(int devAddr, int wordOffset, uint32_t value); +int ReadZoneRegister(int devAddr, int zone, int wordOffset, uint32_t * value); +int WriteZoneRegister(int devAddr, int zone, int wordOffset, uint32_t value); +int PowerOnDevice(int devAddr); +int PowerOffDevice(int devAddr, int repower); +int PowerOnZone(int devAddr, int zone); +int PowerOffZone(int devAddr, int zone); +int ResetDevice(int devAddr); +int ResetZone(int devAddr, int zone); +int CloseAVS(int island, unsigned short margin_mv_slow, + unsigned short margin_mv_fast, unsigned short maximum_mv, + unsigned short minimum_mv); +int RecloseAVS(int iscold); +void WaitPmc(int runState, void* pmc_log); +int StallPmc(void); +int UnstallPmc(void); +int GetAllROs(void *shmem); + +enum pvtctl_sel { + kTEMPERATURE = 0, + kV_0p85_0 = 1, + kV_0p85_1 = 2, + kV_VIN = 3, + kV_1p00_1 = 4, + kV_1p80 = 5, + kV_3p30 = 6, + kTEST = 7, +}; +int pmc_convert_pvtmon(int sel, int value); +int pmc_get_tracktemp(int *status); +int pmc_set_tracktemp(int enable); +#endif //_LANGUAGE_ASSEMBLY + +#endif // PMC_DRV_H diff --git a/arch/arm/mach-bcmbca/include/sko.h b/arch/arm/mach-bcmbca/include/sko.h new file mode 100755 index 0000000000..d64ae045d1 --- /dev/null +++ b/arch/arm/mach-bcmbca/include/sko.h @@ -0,0 +1,116 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +#ifndef _SKO_H +#define _SKO_H + +/* SECURE KEY OBJECT - SKO */ + + +#define SKO_BASE 0xff804000 + + +#define SKO_KEYN_PAC_CNTRL_SHIFT 0x0 +#define SKO_KEYN_PAC_CNTRL_MASK 0xffffffff +#define SKO_KEYN_PAC_CTRL_OFFSET 0x00 + +#define SKO_KEYN_STATUS_SHIFT 31 +#define SKO_KEYN_STATUS_MASK 1 +#define SKO_KEYN_STATUS_OFFSET 0x04 + +#define SKO_KEYN_CONTROL_SHIFT 31 +#define SKO_KEYN_CONTROL_MASK 1 +#define SKO_KEYN_CTRL_OFFSET 0x0C + +#define SKO_KEYN_DATA_SHIFT 0x0 +#define SKO_KEYN_DATA_MASK 0xffffffff +#define SKO_KEYN_DATA_OFFSET 0x10 + +#define SKO_SIZE 0x40 + +#define SKO_KEY_DATA_GOOD(_R_) ((_R_ >> SKO_KEYN_STATUS_SHIFT)&SKO_KEYN_STATUS_MASK) + +#define SKO_ROW_SHIFT 0 +#define SKO_ROW_MASK 0xffffffff + +#define SKO_0_DESC_CONF 0x9b009000 +#define SKO_0_CTL_CONF 0x80000000 +#define SKO_0_DESC_ROW 42 +#define SKO_0_CTL_ROW 46 +#define SKO_0_DATA_ROW 47 +#define SKO_0_CRC_ROW 55 + +#define SKO_1_DESC_CONF 0x9b01300a +#define SKO_1_CTL_CONF 0x80000000 +#define SKO_1_DESC_ROW 43 +#define SKO_1_CTL_ROW 56 +#define SKO_1_DATA_ROW 57 +#define SKO_1_CRC_ROW 65 + +/*Block bits are sticky until reset */ +#define SKO_PAC_MASK 0xff +#define SKO_PERM_PAC_KEY_SHIFT 0x4 +#define SKO_PERM_PAC_SHIFT 0x0 +#define SKO_PAC_PERM_MASK 0xf + +#define SKO_PAC_LOCK_MASK 0x1 + +#define SKO_PAC_KEY_SW_LOCK_SHIFT 7 +#define SKO_PAC_KEY_SR_LOCK_SHIFT 6 +#define SKO_PAC_KEY_NSW_LOCK_SHIFT 5 +#define SKO_PAC_KEY_NSR_LOCK_SHIFT 4 +#define SKO_PAC_PERM_SW_LOCK_SHIFT 3 +#define SKO_PAC_PERM_SR_LOCK_SHIFT 2 +#define SKO_PAC_PERM_NSW_LOCK_SHIFT 1 +#define SKO_PAC_PERM_NSR_LOCK_SHIFT 0 + +#define SKO_PERM_LOCK_ALL 0xf0 + +#define SKO_PERM_KEY_SR_LOCK (0x1<>KSR_RD_DESC_DGOOD_SHIFT)&KSR_RD_DESC_DGOOD_MASK) + +#define KSR_PORTAL_VALID(_V_) ( ((_V_>>KSR_STATUS_KEY_LOADED_SHIFT)&KSR_STATUS_KEY_LOADED_MASK) &\ + ((_V_>>KSR_STATUS_READY_SHIFT)&KSR_STATUS_READY_MASK) &\ + ((_V_>>KSR_STATUS_DESC_VALID_SHIFT)&KSR_STATUS_DESC_VALID_MASK) ) + +#define KSR_STATUS_ECC_DATA_SHIFT 23 +#define KSR_STATUS_ECC_DATA_MASK 0x1 +#define KSR_STATUS_ECC_DESC_SHIFT 22 +#define KSR_STATUS_ECC_DESC_MASK 0x1 +#define KSR_PORTAL_ECC_DATA_ERR(_V_) ((_V_>>KSR_STATUS_ECC_DATA_SHIFT)&KSR_STATUS_ECC_DATA_MASK) +#define KSR_PORTAL_ECC_DESC_ERR(_V_) ((_V_>>KSR_STATUS_ECC_DESC_SHIFT)&KSR_STATUS_ECC_DESC_MASK) +#define KSR_PORTAL_KEY_LOADED(_V_) ((_V_>>KSR_STATUS_KEY_LOADED_SHIFT)&KSR_STATUS_KEY_LOADED_MASK) + + +#define KSR_PORTAL_OTP_PGM_DESC_VALID_SHIFT 31 +#define KSR_PORTAL_OTP_PGM_DESC_VALID_MASK 0x1 + +#define KSR_PORTAL_PGM_DESC_PERM_SHIFT 0 +#define KSR_PORTAL_PGM_DESC_PERM_MASK 0xf + +#define KSR_PORTAL_PGM_DESC_LOCK_MASK 0x1 + +#define KSR_PORTAL_PGM_DESC_BLK_SW_LOCK_SHIFT 7 +#define KSR_PORTAL_PGM_DESC_BLK_SR_LOCK_SHIFT 6 +#define KSR_PORTAL_PGM_DESC_BLK_NSW_LOCK_SHIFT 5 +#define KSR_PORTAL_PGM_DESC_BLK_NSR_LOCK_SHIFT 4 +#define KSR_PORTAL_PGM_DESC_PERM_SW_LOCK_SHIFT 3 +#define KSR_PORTAL_PGM_DESC_PERM_SR_LOCK_SHIFT 2 +#define KSR_PORTAL_PGM_DESC_PERM_NSW_LOCK_SHIFT 1 +#define KSR_PORTAL_PGM_DESC_PERM_NSR_LOCK_SHIFT 0 + +#define KSR_PERM_BLK_SR_LOCK (0x1<>KSR_OTP_STATUS_CMD_ACTIVE_SHIFT)&KSR_OTP_STATUS_CMD_ACTIVE_MASK) +#define KSR_OTP_STATUS_OPCODE_SHIFT 16 +#define KSR_OTP_STATUS_OPCODE_MASK 0xf +#define KSR_OTP_STATUS_CMD_ERR_SHIFT 0x0 +#define KSR_OTP_STATUS_CMD_ERR_MASK 0xff + +#define KSR_OTP_STATUS_CMD_ERROR(_V_) \ + ((_V_>>KSR_OTP_STATUS_CMD_ERR_SHIFT)&KSR_OTP_STATUS_CMD_ERR_MASK) + + +#define KSR_PAC_OFFSET 0x00 +#define KSR_OTP_CMD_OFFSET 0x04 +#define KSR_OTP_STATUS_OFFSET 0x08 +#define KSR_RD_DESC_OFFSET 0x0c +#define KSR_PGM_DESC_OFFSET 0x10 +#define KSR_PORTAL_STATUS_OFFSET 0x14 +#define KSR_DATA_OFFSET 0x20 + +#define KSR_SIZE 0x80 +#define KSR_OFFSET 0x0 +#define KSR_START_ROW_ADDR 0 +#define KSR_MAX_ROW_ADDR (KSR_START_ROW_ADDR+6) + + +/* FSR defs */ +#define FSR_BASE 0xff805300 + +#define FSR_PORTAL_OTP_CMD_READ_DATA 0x2 +#define FSR_PORTAL_OTP_CMD_READ_DESC 0x3 +#define FSR_PORTAL_OTP_CMD_WRITE_DATA 0x4 +#define FSR_PORTAL_OTP_CMD_WRITE_DATA_ECC 0x5 +#define FSR_PORTAL_OTP_CMD_WRITE_DESC 0x8 +#define FSR_PORTAL_OTP_CMD_WRITE_DESC_ECC 0x9 +#define FSR_PORTAL_OTP_CMD_RELOAD_DATA 0xc +#define FSR_PORTAL_OTP_CMD_RELOAD_DESC 0xd + +#define FSR_PORTAL_OTP_CMD_WORD_SEL_MASK 0xfff +#define FSR_PORTAL_OTP_CMD_WORD_SEL_SHIFT 0x4 + +#define FSR_PORTAL_OTP_CMD_MASK 0xf +#define FSR_PORTAL_OTP_CMD_SHIFT 0x0 + + +#define FSR_OTP_CMD_READ_DATA ((FSR_PORTAL_OTP_CMD_MASK&FSR_PORTAL_OTP_CMD_READ_DATA)<> FSR_PORTAL_STATUS_RLOCK_SHIFT)&\ + FSR_PORTAL_STATUS_RLOCK_MASK) ) + +#define FSR_PORTAL_ECC_DIS(_V_) ( ((_V_>> FSR_PORTAL_STATUS_ECC_PGM_DIS_SHIFT)&\ + FSR_PORTAL_STATUS_ECC_PGM_DIS_MASK) ) + +#define FSR_PORTAL_VALID(_V_) ( ((_V_>> FSR_PORTAL_STATUS_READY_SHIFT)&\ + FSR_PORTAL_STATUS_READY_MASK) &\ + ((_V_>> FSR_PORTAL_STATUS_DESC_VALID_SHIFT)&\ + FSR_PORTAL_STATUS_DESC_VALID_MASK) ) + +#define FSR_RD_DESC_VALID_SHIFT 31 +#define FSR_RD_DESC_VALID_MASK 0x1 +#define FSR_RD_DESC_ECC_PGM_DIS_SHIFT 29 +#define FSR_RD_DESC_ECC_PGM_DIS_MASK 0x1 +#define FSR_RD_DESC_RLOCK_SHIFT 28 +#define FSR_RD_DESC_RLOCK_MASK 0x1 +#define FSR_RD_DESC_SIZE_SHIFT 12 +#define FSR_RD_DESC_SIZE_MASK 0xfff + +#define FSR_RD_DDATA_SIZE(_V_) ((_V_>>FSR_RD_DESC_SIZE_SHIFT)&FSR_RD_DESC_SIZE_MASK) +#define FSR_RD_DGOOD(_V_) ((_V_>>FSR_RD_DESC_VALID_SHIFT)&FSR_RD_DESC_VALID_MASK) + +#define FSR_OTP_STATUS_CMD_ACTIVE_SHIFT 31 +#define FSR_OTP_STATUS_CMD_ACTIVE_MASK 0x1 +#define FSR_OTP_STATUS_OPCODE_SHIFT 16 +#define FSR_OTP_STATUS_OPCODE_MASK 0xf +#define FSR_OTP_STATUS_CMD_ERR_SHIFT 0x0 +#define FSR_OTP_STATUS_CMD_ERR_MASK 0xff + +#define FSR_OTP_STATUS_ACTIVE(_V_) \ + ((_V_>>FSR_OTP_STATUS_CMD_ACTIVE_SHIFT)&FSR_OTP_STATUS_CMD_ACTIVE_MASK) +#define FSR_OTP_STATUS_CMD_ERROR(_V_) \ + ((_V_>>FSR_OTP_STATUS_CMD_ERR_SHIFT)&FSR_OTP_STATUS_CMD_ERR_MASK) + +#define FSR_PORTAL_RD_ECC_MASK 0x3ff + +#define FSR_PORTAL_PGM_BLK_SW_LOCK_SHIFT 7 +#define FSR_PORTAL_PGM_BLK_SR_LOCK_SHIFT 6 +#define FSR_PORTAL_PGM_BLK_NSW_LOCK_SHIFT 5 +#define FSR_PORTAL_PGM_BLK_NSR_LOCK_SHIFT 4 +#define FSR_PORTAL_PGM_PERM_SW_LOCK_SHIFT 3 +#define FSR_PORTAL_PGM_PERM_SR_LOCK_SHIFT 2 +#define FSR_PORTAL_PGM_PERM_NSW_LOCK_SHIFT 1 +#define FSR_PORTAL_PGM_PERM_NSR_LOCK_SHIFT 0 + +#define FSR_PERM_BLK_SR_LOCK (0x1< +#include + +#ifndef CONFIG_TPL_BUILD +.align 8 +.global boot_params +boot_params: + .word 0x0 + +.global save_boot_params +save_boot_params: + +#ifdef CONFIG_ARM64 + ldr x10, =0xd0deed + cmp x9, x10 + bne 1f + adr x8, boot_params + ldr w9, [x8] + orr w9, w9, #0x1 + str w9, [x8] +#else + ldr r10,=0xd0deed + cmp r9, r10 + bne 1f + ldr r9, boot_params + orr r9, r9, #0x1 + str r9, boot_params +#endif + +1: + /* Returns */ + b save_boot_params_ret +#endif + +#if defined(CONFIG_TPL_ATF) && defined(CONFIG_ARM64) +/* + * Called by armv8_switch_to_el2 to switch from el2 to el1 + * aarch32. When ATF support this switch, we can remove + * this function + */ +ENTRY(armv8_el2_to_aarch32) + armv8_switch_to_el1_m x4, x5, x6 +ENDPROC(armv8_el2_to_aarch32) +#endif diff --git a/arch/arm/mach-bcmbca/mmu_setup.c b/arch/arm/mach-bcmbca/mmu_setup.c new file mode 100644 index 0000000000..71ef0f9336 --- /dev/null +++ b/arch/arm/mach-bcmbca/mmu_setup.c @@ -0,0 +1,118 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#ifdef CONFIG_CPU_V7A +#include "mmu_map_v7.h" +#else +#include +#endif + +#if !(CONFIG_IS_ENABLED(SYS_DCACHE_OFF)) + +DECLARE_GLOBAL_DATA_PTR; + +#ifdef CONFIG_CPU_V7A +int __attribute__((section(".data"))) reg_mmu_init = 0; + +void arm_init_domains(void) +{ + /* Set the access control to client so AP is checked with tlb entry */ + asm volatile("mcr p15, 0, %0, c3, c0, 0" + : : "r" (0x55555555)); +} + +/* + * Override the weak dram_bank_mmu_setup to setup not only dram but + * entire mmu based on the mem_map list. This function is called by mmu_setup + */ +void dram_bank_mmu_setup(int bank) +{ + + bd_t *bd = gd->bd; + int i, j, section, num_sec; + uint32_t *page_table = (u32 *)gd->arch.tlb_addr; + uint32_t pgt_size = gd->arch.tlb_size; + uint32_t virt; + + /* zereod out the entire table so undefined region is not accessible */ + if (reg_mmu_init == 0) + memset((void*)page_table, 0x0, pgt_size); + + if (bd && bd->bi_dram[bank].size) { + for (i = bd->bi_dram[bank].start >> MMU_SECTION_SHIFT; + i < (bd->bi_dram[bank].start >> MMU_SECTION_SHIFT) + + (bd->bi_dram[bank].size >> MMU_SECTION_SHIFT); + i++) { + set_section_attr(i, i<> MMU_SECTION_SHIFT; + num_sec = mem_map[i].size >> MMU_SECTION_SHIFT; + virt = mem_map[i].virt >> MMU_SECTION_SHIFT; + for( j = 0; j < num_sec; j++) + set_section_attr(section+j, (virt+j)<arch.tlb_addr; + u64 tlb_size = gd->arch.tlb_size; + + /* Reset the fill ptr */ + gd->arch.tlb_fillptr = tlb_addr; + + /* Create normal system page tables */ + setup_pgtables(); + +#if !defined(CONFIG_SPL_BUILD) + /* Create emergency page tables */ + gd->arch.tlb_size -= (uintptr_t)gd->arch.tlb_fillptr - + (uintptr_t)gd->arch.tlb_addr; + gd->arch.tlb_addr = gd->arch.tlb_fillptr; + setup_pgtables(); + gd->arch.tlb_emerg = gd->arch.tlb_addr; +#endif + + gd->arch.tlb_addr = tlb_addr; + gd->arch.tlb_size = tlb_size; +} + +void mmu_setup(void) +{ + int el; + + /* Set up page tables only once */ + if (!gd->arch.tlb_fillptr) + bcm_setup_pgtables(); + + el = current_el(); + set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(el, NULL, NULL), + MEMORY_ATTRIBUTES); + + /* enable the mmu */ + set_sctlr(get_sctlr() | CR_M); +} +#endif +#endif + +void enable_caches(void) +{ + icache_enable(); +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) + dcache_enable(); +#endif +} + diff --git a/arch/arm/mach-bcmbca/otp/Makefile b/arch/arm/mach-bcmbca/otp/Makefile new file mode 100644 index 0000000000..10f2b93f53 --- /dev/null +++ b/arch/arm/mach-bcmbca/otp/Makefile @@ -0,0 +1,8 @@ +obj-$(CONFIG_BCMBCA_OTP) += bcm_otp.o +obj-$(CONFIG_BCMBCA_OTP) += otp_map_cmn.o +obj-$(CONFIG_BCMBCA_OTP) += otp_hw.o +obj-$(CONFIG_OTP_SOTP) += sotp_hw.o +obj-$(CONFIG_OTP_LOCK) += otp_hw_cpu_lock.o +obj-$(CONFIG_OTP_V2) += otp_hw_ecc.o +obj-$(CONFIG_OTP_SKP) += skp_hw.o +obj-$(CONFIG_OTP_SKO) += sko_hw.o diff --git a/arch/arm/mach-bcmbca/otp/bcm_otp.c b/arch/arm/mach-bcmbca/otp/bcm_otp.c new file mode 100644 index 0000000000..611f4f3ed0 --- /dev/null +++ b/arch/arm/mach-bcmbca/otp/bcm_otp.c @@ -0,0 +1,197 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +#include +#include +#include +#include "linux/printk.h" +#include +#include +#include +#include "bcm_secure.h" +#include "bcm_otp.h" + +/* global and static reserved in data section will not be nuked by bss clean loop*/ +static bcm_otp_t *s_bcm_otp __attribute__((section(".data"))) = NULL; + +__weak otp_hw_cmn_err_t otp_hw_cmn_init(otp_hw_cmn_t* dev) +{ + return OTP_HW_CMN_ERR_UNSP; +} +__weak otp_hw_cmn_err_t sotp_hw_cmn_init(otp_hw_cmn_t* dev) +{ + return OTP_HW_CMN_ERR_UNSP; +} + +static otp_map_cmn_t* _get_map(otp_map_feat_t feat) +{ + if ((int)feat <= OTP_MAP_INVALID || + (int) feat == SOTP_MAP_INVALID || + (int) feat >= OTP_MAP_MAX) { + return NULL; + } + return bcm_otp( feat < SOTP_MAP_INVALID? BCM_OTP_MAP : BCM_SOTP_MAP); +} + +int bcm_otp_init() +{ + otp_map_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + static otp_map_cmn_t s_map_obj[BCM_MAP_MAX] __attribute__((section(".data"))); + static bcm_otp_t s_otp_obj __attribute__((section(".data"))); + if (s_bcm_otp) { + printf ("%s ERROR: BCM_OTP - not reentrant\n", __FUNCTION__); + goto err; + } +/* + * malloc if desired here + * */ + memset(s_map_obj, 0, sizeof(s_map_obj)); + memset(&s_otp_obj, 0, sizeof(s_otp_obj)); + + rc = otp_map_cmn_init(&s_map_obj[BCM_OTP_MAP], otp_hw_cmn_init, NULL); + if (rc) { + printf ("%s ERROR: BCM_OTP unable to initialize OTP\n", __FUNCTION__); + goto err; + } + + s_otp_obj.map[BCM_OTP_MAP] = &s_map_obj[BCM_OTP_MAP]; + + rc = otp_map_cmn_init(&s_map_obj[BCM_SOTP_MAP], + sotp_hw_cmn_init, &s_otp_obj.map[BCM_OTP_MAP]->dev); + if (rc) { + if (rc != OTP_MAP_CMN_ERR_UNSP) { + printf ("%s ERROR: BCM_OTP unable to initialize SOTP\n", __FUNCTION__); + goto err; + } + s_otp_obj.map[BCM_SOTP_MAP] = NULL; + } else { + s_otp_obj.map[BCM_SOTP_MAP] = &s_map_obj[BCM_SOTP_MAP]; + } + + s_bcm_otp = &s_otp_obj; + rc = OTP_MAP_CMN_OK; +err: + return rc; +} + +otp_map_cmn_t* bcm_otp(otp_map_t id) +{ + return (id < BCM_OTP_MAP || id >= BCM_MAP_MAX || !s_bcm_otp)? NULL : s_bcm_otp->map[id]; +} + +otp_map_cmn_err_t bcm_otp_read(otp_map_feat_t otp_feat, u32** data, u32* size) +{ + otp_map_cmn_t* obj = _get_map(otp_feat); + if (!obj ) { + return OTP_MAP_CMN_ERR_FAIL; + } + return obj->read(obj, otp_feat, data, size); +} + +otp_map_cmn_err_t bcm_otp_get(otp_map_feat_t otp_feat, u32* data) +{ + otp_map_cmn_err_t rc = OTP_MAP_CMN_ERR_FAIL; + u32 size = 0; + u32* p = NULL; + rc = bcm_otp_read(otp_feat, &p, &size); + if (rc) { + goto err; + } + if (size > sizeof(u32)) { + rc = OTP_MAP_CMN_ERR_INVAL; + goto err; + } + memcpy(data, p ,sizeof(u32)); + rc = OTP_MAP_CMN_OK; +err: + return rc; +} + + +otp_map_cmn_err_t bcm_otp_write(otp_map_feat_t otp_feat, const u32* data, u32 size) +{ + otp_map_cmn_t* obj = _get_map(otp_feat); + if (!obj ) { + return OTP_MAP_CMN_ERR_FAIL; + } + return obj->write(obj, otp_feat, data, size); +} + +otp_map_cmn_err_t bcm_otp_ctl(otp_map_t id, + otp_hw_cmn_ctl_cmd_t *cmd, u32 *res) +{ + otp_map_cmn_t* obj = bcm_otp(id); + if (!obj) { + return OTP_MAP_CMN_ERR_FAIL; + } + return obj->ctl(obj, cmd, res); +} + +/* an SOTP helper*/ +otp_map_cmn_err_t bcm_sotp_ctl_perm( otp_hw_cmn_ctl_t ctl, + u32 data, u32* res) +{ + otp_map_cmn_err_t rc = OTP_MAP_CMN_ERR_INVAL; + u32 stat = 0; + otp_hw_ctl_data_t ctl_data = {0} ; + otp_hw_cmn_ctl_cmd_t cmd = { + .ctl = ctl, + .data = (uintptr_t)&ctl_data, + .size = sizeof(ctl_data) + }; + otp_map_cmn_t* obj = bcm_otp(BCM_SOTP_MAP); + if (!obj) { + return rc; + } + switch(cmd.ctl) { + case OTP_HW_CMN_CTL_STATUS: { + if (!res) { + goto err; + } + ctl_data.status = (otp_hw_cmn_status_t) data; + break; + } + case OTP_HW_CMN_CTL_LOCK: + case OTP_HW_CMN_CTL_UNLOCK: + ctl_data.perm = (otp_hw_cmn_perm_t) data; + break; + default: + rc = OTP_MAP_CMN_ERR_UNSP; + goto err; + } + rc = obj->ctl(obj, &cmd, &stat); + if (rc) { + goto err; + } + if (res) { + *res = stat; + } + +err: + return rc; +} + +int bcm_otp_get_ldo_trim(unsigned int* val) +{ + return bcm_otp_get(OTP_MAP_LDO_TRIM, val); +} + +int bcm_otp_get_cpu_clk(unsigned int* val) +{ + return bcm_otp_get(OTP_MAP_CPU_CLOCK_FREQ, val); +} + +int bcm_otp_get_chipid(unsigned int* val) +{ + return bcm_otp_get(OTP_MAP_SEC_CHIPVAR, val); +} + +int bcm_otp_get_nr_cpus(u32* val) +{ + return bcm_otp_get(OTP_MAP_CPU_CORE_CFG, val); +} + + + + diff --git a/arch/arm/mach-bcmbca/otp/otp_hw.c b/arch/arm/mach-bcmbca/otp/otp_hw.c new file mode 100644 index 0000000000..3d5ebda01a --- /dev/null +++ b/arch/arm/mach-bcmbca/otp/otp_hw.c @@ -0,0 +1,357 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ + +/********************************************************************** + * + * OTP controller driver + * + ********************************************************************* + */ +#include +#include +#include +#include "linux/printk.h" +#include +#include +#include "otp_hw.h" +#include "otp_map_cmn.h" + +//#define OTP_DRY_RUN +//#define DBG_OTP +#ifdef DBG_OTP +#define _ETR(__p__) printf("%s ERROR: \n\t\t\t\t -> %s:%d code %d\n",__FILE__,__FUNCTION__,__LINE__,__p__) +#define _TR(__p__) printf("%s \n\t\t\t\t -> %s:%d %d (0x%x)\n",__FILE__,__FUNCTION__,__LINE__,__p__,__p__) +#define _DPRT(...) printf(__VA_ARGS__) +#else +#define _ETR(__p__) +#define _TR(__p__) +#define _DPRT(...) +#endif + +__weak void otp_hw_writel(void* dev, u32 offset, u32 data) +{ + otp_hw_cmn_t* otp_hw = (otp_hw_cmn_t*)dev; + writel(data, otp_hw->mm + offset); +} + +__weak u32 otp_hw_readl(void* dev, u32 offset) +{ + otp_hw_cmn_t* otp_hw = (otp_hw_cmn_t*)dev; + return readl(otp_hw->mm+offset); +} + +__weak otp_hw_cmn_err_t otp_hw_cpu_lock(otp_hw_cmn_t* dev) +{ + return OTP_HW_CMN_OK; +} + +__weak void otp_hw_cpu_unlock(otp_hw_cmn_t* dev) +{ + /* Release hardware spinlock for OTP */ +} + +__weak otp_hw_cmn_err_t otp_hw_set_ecc(otp_hw_cmn_t* dev, u32 ecc) +{ + return OTP_HW_CMN_ERR_UNSP; +} + +__weak u32 otp_hw_get_ecc(otp_hw_cmn_t* dev, u32* ecc) +{ + return OTP_HW_CMN_ERR_UNSP; +} + +static int otp_wait_cmd_done(otp_hw_cmn_t *dev) +{ + long to = OTP_STATUS_CMD_DONE_TMO_CNT; + while (to && !(otp_hw_readl(dev, OTP_STATUS1_OFFSET)&OTP_STATUS1_CMD_DONE)) { + udelay(1); + to--; + } + return (!to); +} + +static int otp_wait_cmd_ready(otp_hw_cmn_t *dev) +{ + int to = OTP_STATUS_CMD_DONE_TMO_CNT; + do { + if (((otp_hw_readl(dev, OTP_STATUS1_OFFSET))&OTP_STATUS1_CMD_DONE) != 0) { + break; + } + udelay(1); + to--; + } while (to); + return (!to); +} + +/*Enables OTP programming mode*/ +static otp_hw_cmn_err_t otp_auth_prog_mode(otp_hw_cmn_t *dev) +{ + int i = 0; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_TMO; + u32 authVal[ ] = {0xf, 0x4, 0x8, 0xd}; + if(otp_hw_cpu_lock(dev)) { + _ETR(rc); + goto err; + } + + otp_hw_writel(dev, OTP_CTRL0_OFFSET, 0x0); + /* Enable CPU side programming of OTP */ + otp_hw_writel(dev, OTP_CTRL1_OFFSET, + (otp_hw_readl(dev, OTP_CTRL1_OFFSET)|OTP_CTRL1_CPU_MODE)); + /* Clear row register. A non-empty row register results in a failed prog-enable sequence on some SoCs */ + otp_hw_writel(dev, OTP_CTRL3_OFFSET, 0x0); + /* Put OTP in program mode --> prog-enable sequence */ + for (i = 0; i < sizeof(authVal)/sizeof(u32); i++) { + otp_hw_writel(dev, OTP_CTRL2_OFFSET, authVal[i]); + otp_hw_writel(dev, OTP_CTRL0_OFFSET, OTP_CTRL0_PROG_MODE_ENABLE); + if ( otp_wait_cmd_done(dev)) { + _ETR(rc); + printf("%s: ERROR! Timed out waiting for Program Mode; status:0x%08x\n", + __FUNCTION__, otp_hw_readl(dev, OTP_STATUS1_OFFSET)); + goto err; + } + otp_hw_writel(dev, OTP_CTRL0_OFFSET, 0x0); + } + udelay(300); + if ((otp_hw_readl(dev, OTP_STATUS1_OFFSET) & OTP_STATUS1_PROG_OK) != OTP_STATUS1_PROG_OK) { + _ETR(rc); + printf("%s: ERROR: Unable to set OTP program mode OTP\n",__FUNCTION__); + goto err; + } + rc = OTP_HW_CMN_OK; +err: + if (rc) { + otp_hw_cpu_unlock(dev); + } + return rc; +} + +static otp_hw_cmn_err_t otp_auth_prog_mode_done(otp_hw_cmn_t *dev) +{ + otp_hw_writel(dev, OTP_CTRL0_OFFSET, 0x0); + otp_hw_writel(dev, OTP_CTRL1_OFFSET, + (otp_hw_readl(dev, OTP_CTRL1_OFFSET)&(~OTP_CTRL1_CPU_MODE))); + otp_hw_cpu_unlock(dev); + return OTP_HW_CMN_OK; +} + +__weak otp_hw_cmn_err_t otp_hw_cmn_ctl(otp_hw_cmn_t *dev, + const otp_hw_cmn_ctl_cmd_t *cmd, + u32* res) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_UNSP; + switch ((u32)cmd->ctl) { + case OTP_HW_CMN_CTL_OTPCMD_AUTH_PROG: + rc = otp_auth_prog_mode(dev); + break; + case OTP_HW_CMN_CTL_OTPCMD_AUTH_PROG_DONE: + rc =otp_auth_prog_mode_done(dev); + break; + case OTP_HW_CMN_CTL_CONF: + memcpy(&dev->row_conf, + (otp_hw_cmn_row_conf_t*)cmd->data, + cmd->size); + + dev->ctl_cmd.ctl |= cmd->ctl; + rc = OTP_HW_CMN_OK; + break; + case (~((u32)OTP_HW_CMN_CTL_CONF)): + dev->ctl_cmd.ctl &= ~cmd->ctl; + rc = OTP_HW_CMN_OK; + break; + default : + break; + } + return rc; + +} + +/************************************************************ + * int bcm_otp_hw_write + * Input parameters: + * addr - Row address + * Return value: + ***********************************************************/ +__weak otp_hw_cmn_err_t otp_hw_write(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_row_conf_t* row_conf, + const u32* data, + u32 size) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_TMO; + if (size < sizeof(u32)) { + rc = OTP_HW_CMN_ERR_INVAL; + _ETR(rc); + goto err; + } + if (row_conf && (row_conf->op_type & OTP_HW_CMN_CTL_OTPCMD_ECC)) { + if (size < sizeof(u32)*2) { + rc = OTP_HW_CMN_ERR_INVAL; + _ETR(rc); + goto err; + } + } + _DPRT("%s:%d DEBUG: fusing data 0x%x at 0x%x\n",__FUNCTION__,__LINE__, *data, addr); + rc = otp_auth_prog_mode(dev); + if (rc) { + _ETR(rc); + goto err; + } + +#ifndef OTP_DRY_RUN + otp_hw_writel(dev, OTP_CTRL2_OFFSET, *data); +#endif + if ( row_conf && (row_conf->op_type&OTP_HW_CMN_CTL_OTPCMD_ECC) ) { + otp_hw_set_ecc(dev, *(data + 1)); + } +#ifndef OTP_DRY_RUN + otp_hw_writel(dev, OTP_CTRL3_OFFSET, addr); +#endif + if (row_conf && (row_conf->op_type & OTP_HW_CMN_CTL_OTPCMD_PROG_LOCK)) { + otp_hw_writel(dev, OTP_CTRL0_OFFSET, (OTP_CTRL0_PROG_CMD_START|OTP_CTRL0_CMD_PROG_LOCK)); + } else { + otp_hw_writel(dev, OTP_CTRL0_OFFSET, OTP_CTRL0_PROG_CMD_START); + } + +#ifndef OTP_DRY_RUN + if (otp_wait_cmd_done(dev)) { + printf("%s: ERROR! Timed out waiting for OTP command completion (WRITE)! status: 0x%08x\n", + __FUNCTION__, otp_hw_readl(dev, OTP_STATUS1_OFFSET)); + goto err; + } +#endif + _DPRT("%s:%d Fused: 0x%x \n", __FUNCTION__,__LINE__,*data); + rc = OTP_HW_CMN_OK; +err: + otp_auth_prog_mode_done(dev); + return rc; +} + +/*********************************************************** + * otp_hw_cmn_err_t otp_hw_read + * Input parameters: + * addr - Row address + * Return value: + * returns 0 if successful, value in *value + ***********************************************************/ +__weak otp_hw_cmn_err_t otp_hw_read(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_row_conf_t* row_conf, + u32* data, + u32 size) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_TMO; + if (size < sizeof(u32)) { + rc = OTP_HW_CMN_ERR_FAIL; + _ETR(rc); + goto err; + } + if (row_conf && (row_conf->op_type & OTP_HW_CMN_CTL_OTPCMD_ECC)) { + if (size < sizeof(u32)*2) { + rc = OTP_HW_CMN_ERR_INVAL; + _ETR(rc); + goto err; + } + } + + rc = otp_hw_cpu_lock(dev); + if (rc) { + _ETR(rc); + goto err; + } + + if ((otp_hw_readl(dev, OTP_STATUS1_OFFSET)&OTP_STATUS1_CMD_DONE) == 0){ + _DPRT("%s 1 CMD done was not set\n", __FUNCTION__); + } + /* turn on cpu mode, set up row addr, activate read word */ + otp_hw_writel(dev, OTP_CTRL1_OFFSET, + (otp_hw_readl(dev, OTP_CTRL1_OFFSET)|OTP_CTRL1_CPU_MODE)); + otp_hw_writel(dev, OTP_CTRL3_OFFSET, addr); + otp_hw_writel(dev, OTP_CTRL0_OFFSET, OTP_CTRL0_START); + + /* Wait for low CMD_DONE (current operation has begun), reset countdown, wait for retrieval to complete + * Redundant; can't be always caught + * */ + otp_wait_cmd_ready(dev); + /* Wait for high CMD_DONE */ + if (otp_wait_cmd_done(dev)) { + _ETR(rc); + printf("%s: ERROR! Timed out waiting for OTP command completion (READ)! status: 0x%08x\n", + __FUNCTION__, otp_hw_readl(dev, OTP_STATUS1_OFFSET)); + goto err; + } + + /* If read was successful, retrieve data */ + + *data = otp_hw_readl(dev, OTP_STATUS0_OFFSET); + _DPRT("DEBUG: got 0x%x from otp\n", *data); + if (row_conf && (row_conf->op_type & OTP_HW_CMN_CTL_OTPCMD_ECC)) { + otp_hw_get_ecc(dev, data + 1); + } + + rc = OTP_HW_CMN_OK; + /* zero out the ctrl_0 reg, turn off cpu mode, return results */ +err: + otp_hw_writel(dev, OTP_CTRL0_OFFSET, 0x0); + otp_hw_writel(dev, OTP_CTRL1_OFFSET, + (otp_hw_readl(dev, OTP_CTRL1_OFFSET)&(~OTP_CTRL1_CPU_MODE))); + otp_hw_cpu_unlock(dev); + return rc; +} + +static otp_hw_cmn_err_t write(otp_hw_cmn_t* dev, + u32 addr, + const u32* data, + u32 size) +{ + otp_hw_cmn_row_conf_t *cfg = + (dev->ctl_cmd.ctl&OTP_HW_CMN_CTL_CONF)? &dev->row_conf : NULL; + return dev->write_ex? + dev->write_ex(dev, addr, cfg, data, size) : OTP_HW_CMN_ERR_UNSP; +} + +static otp_hw_cmn_err_t read(otp_hw_cmn_t *dev, + u32 addr, + u32 *data, + u32 size) +{ + otp_hw_cmn_row_conf_t *cfg = + (dev->ctl_cmd.ctl&OTP_HW_CMN_CTL_CONF)? + &dev->row_conf : NULL; + return dev->read_ex? + dev->read_ex(dev, addr, cfg, data, size):OTP_HW_CMN_ERR_UNSP; + +} +__weak otp_hw_cmn_err_t otp_hw_dev_mmap(otp_hw_cmn_t* dev) +{ + dev->mm = JTAG_OTP_BASE; + return OTP_HW_CMN_OK; +} + +__weak otp_hw_cmn_err_t otp_hw_init(otp_hw_cmn_t* dev) +{ + DEFINE_OTP_MAP_ROW_INITLR(rows); + if (otp_hw_dev_mmap(dev)) { + return OTP_HW_CMN_ERR_FAIL; + } + dev->rows = rows; + dev->row_max = sizeof(rows)/sizeof(otp_hw_cmn_row_t); + return OTP_HW_CMN_OK; +} + + +otp_hw_cmn_err_t otp_hw_cmn_init(otp_hw_cmn_t* dev) +{ + if (otp_hw_init(dev)) { + return OTP_HW_CMN_ERR_FAIL; + } + dev->read = read; + dev->write = write; + dev->read_ex = otp_hw_read; + dev->write_ex = otp_hw_write; + dev->ctl = otp_hw_cmn_ctl; + return OTP_HW_CMN_OK; +} + diff --git a/arch/arm/mach-bcmbca/otp/otp_hw_cpu_lock.c b/arch/arm/mach-bcmbca/otp/otp_hw_cpu_lock.c new file mode 100644 index 0000000000..a3762c258e --- /dev/null +++ b/arch/arm/mach-bcmbca/otp/otp_hw_cpu_lock.c @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ + + +/********************************************************************** + * + * OTP HW CPU lock semaphore + * + ********************************************************************* + */ +#include +#include +#include +#include "linux/printk.h" +#include +#include +#include "otp_hw.h" +#include "otp_map_cmn.h" + + +otp_hw_cmn_err_t otp_hw_cpu_lock(otp_hw_cmn_t* dev) +{ + /* HW Lock the OTP controller + * Until lock is obtained the HW will NOT PERMIT the CPU to access + * OTP control registers + **/ + int to = OTP_CPU_LOCK_TMO_CNT; + writel(0x1, dev->mm + OTP_CPU_LOCK_OFFSET); + while( to && + !((readl(dev->mm + OTP_CPU_LOCK_OFFSET)>>OTP_CPU_LOCK_SHIFT) & OTP_CPU_LOCK_MASK)) { + udelay(1); + to--; + } + if ( to < 1) { + printf("%s: Error! Timed out waiting for OTP_CPU_LOCK!\n", __FUNCTION__); + return OTP_HW_CMN_ERR_TMO; + } + return OTP_HW_CMN_OK; +} + +void otp_hw_cpu_unlock(otp_hw_cmn_t* dev) +{ + /* Release hardware spinlock for OTP */ + writel(0x0, dev->mm + OTP_CPU_LOCK_OFFSET); +} + diff --git a/arch/arm/mach-bcmbca/otp/otp_hw_ecc.c b/arch/arm/mach-bcmbca/otp/otp_hw_ecc.c new file mode 100644 index 0000000000..0fed7987e6 --- /dev/null +++ b/arch/arm/mach-bcmbca/otp/otp_hw_ecc.c @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ + +/********************************************************************** + * + * OTP hw ecc function + * + * + ******************************************************************** + */ +#include +#include +#include "linux/io.h" +#include "linux/printk.h" +#include +#include +#include "otp_hw.h" +#include "otp_map_cmn.h" + +//#define OTP_DRY_RUN + +otp_hw_cmn_err_t otp_hw_set_ecc(otp_hw_cmn_t* dev, u32 ecc) +{ + //printf("%s FUSE ECC 0x%x \n", __FUNCTION__,ecc); +#ifndef OTP_DRY_RUN + writel(ecc, dev->mm + OTP_CTRL2_HI_OFFSET); +#endif + return OTP_HW_CMN_OK; +} + +otp_hw_cmn_err_t otp_hw_get_ecc(otp_hw_cmn_t* dev, u32* ecc) +{ + *ecc = readl(dev->mm + OTP_STATUS0_HI_OFFSET); + return OTP_HW_CMN_OK; +} diff --git a/arch/arm/mach-bcmbca/otp/otp_map_cmn.c b/arch/arm/mach-bcmbca/otp/otp_map_cmn.c new file mode 100644 index 0000000000..52c7737b5d --- /dev/null +++ b/arch/arm/mach-bcmbca/otp/otp_map_cmn.c @@ -0,0 +1,282 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +#include +#include +#include +#include "linux/printk.h" +#include +#include +#include +#include "bcm_secure.h" +#include "otp_map_cmn.h" + +//#define DBG_OTP + +#ifdef DBG_OTP +#define _ETR(__p__) printf("%s \n\t\t\t\t -> %s:%d code %d\n",__FILE__, __FUNCTION__,__LINE__,__p__) +#define _DPRT(...) printf(__VA_ARGS__) +#else +#define _ETR(__p__) +#define _DPRT(...) +#endif +/* address finder */ +static otp_map_cmn_err_t __get_addr(otp_map_cmn_t *obj, + otp_map_feat_t ft, + u32* idx) +{ + int i ; + otp_hw_cmn_t* dev = &obj->dev; + otp_hw_cmn_row_t* rows = dev->rows; + for (i = 0; i < dev->row_max; i++ ) { + if (ft > OTP_MAP_INVALID && ft < OTP_MAP_MAX) { + if (ft == rows[i].feat) { + *idx = i; + _DPRT("%s:%d id %d \n",__FUNCTION__,__LINE__, i); + return OTP_MAP_CMN_OK; + } + } + } + _DPRT("%s:%d feat %d \n",__FUNCTION__,__LINE__, ft); + return OTP_MAP_CMN_ERR_UNSP; +} + +/* redirects to device base control function. */ +static otp_map_cmn_err_t otp_map_cmn_ctl(otp_map_cmn_t *obj, + otp_hw_cmn_ctl_cmd_t* cmd, u32* res) +{ + otp_map_cmn_err_t rc = OTP_MAP_CMN_ERR_FAIL; + otp_hw_cmn_t* dev = &obj->dev; + otp_hw_cmn_row_t* rows = dev->rows; + u32 id = 0; + _DPRT("control 0x%x \n",cmd->ctl); + if (cmd->ctl == OTP_HW_CMN_CTL_LOCK || + cmd->ctl == OTP_HW_CMN_CTL_STATUS) { + otp_hw_ctl_data_t* ctl_data = (otp_hw_ctl_data_t*)cmd->data; + /*convert: from feature to row*/ + rc = __get_addr(obj, ctl_data->addr, &id); + if (rc) { + _ETR(rc); + goto err; + } + ctl_data->addr = rows[id].addr; + } + + rc = dev->ctl(dev, cmd, res); + if (rc) { + _ETR(rc); + goto err; + } + rc = OTP_MAP_CMN_OK; +err: + return rc; +} + +/* fuse/write either one a feature mapped row or set of rows depending on + * underlying ROW intializer (otp_hw_cmn_row_t) + * otp row mask and shift are also applied here + * */ +static otp_map_cmn_err_t otp_map_cmn_write(otp_map_cmn_t *obj, + u32 feat, const u32* data, u32 size) +{ + int i; + u32 range = 1, write_sz; + otp_hw_cmn_t* dev = &obj->dev; + otp_map_cmn_err_t rc = OTP_MAP_CMN_ERR_FAIL; + otp_hw_cmn_row_t* rows = dev->rows; + u32 id = 0; + u32 *row_data; + if (__get_addr(obj, feat, &id)) { + _ETR(rc); + goto err; + } + if (id >= dev->row_max || + size > rows[id].range*sizeof(u32)) { + _ETR(OTP_MAP_CMN_ERR_INVAL); + return OTP_MAP_CMN_ERR_INVAL; + } + row_data = malloc(size); + if (!row_data) { + _ETR(rc); + goto err; + } + memcpy(row_data, data, size); + if (rows[id].mask) { + for (i = 0; i < rows[id].range ;i++ ) { + row_data[i] = ((data[i]&rows[id].mask)<write(dev, rows[id].addr + i, &row_data[i], write_sz)) { + _ETR(rc); + /* Commit failed, invalidate cached data */ + rows[id].valid = 0; + goto err; + } + } + rc = OTP_MAP_CMN_OK; +err: + free(row_data); + return rc; +} + +/* read either a feature mapped row or set of rows depending on + * underlying ROW intializer (otp_hw_cmn_row_t) + * otp row mask and shift are also applied here + * An objec is returned with size. Second read on the same feature will return + * it's cached copy + * */ +static otp_map_cmn_err_t otp_map_cmn_read(otp_map_cmn_t *obj, + u32 feat, + u32** data, u32* size) +{ + int i; + otp_map_cmn_err_t rc = OTP_MAP_CMN_ERR_FAIL; + otp_hw_cmn_t* dev = &obj->dev; + otp_hw_cmn_row_t* rows = dev->rows; + u32* p; + u32 id = 0; + if (!data) { + rc = OTP_MAP_CMN_ERR_INVAL; + _ETR(rc); + goto err; + } + rc = __get_addr(obj, feat, &id); + if (rc) { + _ETR(rc); + goto err; + } + _DPRT("%s: id:%d, range:%d, addr_type:%d, op_type:%d\n", __FUNCTION__, id, rows[id].range, rows[id].conf.addr_type, rows[id].conf.op_type); + p = rows[id].range > 1? + (u32*)(rows[id].pdata) : &rows[id].data; + if (!rows[id].valid) { + u32 range; + u32 read_sz; + if (rows[id].conf.addr_type == OTP_HW_CMN_ROW_ADDR_ROW) { + range = rows[id].range; + read_sz = sizeof(u32); + } else { + range = 1; + read_sz = sizeof(u32)*rows[id].range; + } + + for (i = 0; i < range; i++) { + rc = dev->read(dev, rows[id].addr+i, + &p[i], read_sz); + if (rc) { + _ETR(rc); + goto err; + } + } + if (rows[id].mask) { + for (i = 0; i < rows[id].range ;i++ ) { + p[i] = ((p[i] >> rows[id].shift)&rows[id].mask); + } + } + rows[id].valid = 1; + } + + *data = p; + if (size) { + *size = rows[id].range*sizeof(u32); + } + rc = OTP_MAP_CMN_OK; +err: + return rc; +} +#if defined BCM_OTP_READ_MAP +static inline otp_map_cmn_err_t otp_map_cmn_read_map(otp_map_cmn_t* map) +{ + u32 i, size = 0, *val; + otp_hw_cmn_t* dev = &map->dev; + otp_hw_cmn_row_t* rows = dev->rows; + otp_map_cmn_err_t rc = OTP_MAP_CMN_ERR_FAIL; + for( i = 0; i < dev->row_max; i++ ) { + if (!rows[i].feat) { + continue; + } + rc = map->read(map, rows[i].feat, + &val, &size); + if (rc) { + _ETR(rc); + } else { + _DPRT("%s:%d Got feat %d val 0x%x size 0x%x \n", __FUNCTION__,__LINE__,rows[i].feat, *val, size); + } + } + rc = OTP_MAP_CMN_OK; + return rc; +} +#endif +__weak void* otp_map_cmn_malloc(size_t sz) +{ + return malloc(sz); +} + +static inline otp_map_cmn_err_t initialize(otp_map_cmn_t* obj) +{ + u32 i; + otp_hw_cmn_row_t* rows = obj->dev.rows; + otp_map_cmn_err_t rc = OTP_MAP_CMN_ERR_FAIL; + for (i = 0; i < obj->dev.row_max; i++ ) { + if (rows[i].range > 1) { + u8* p = otp_map_cmn_malloc(rows[i].range*sizeof(u32)); + if (!p) { + _ETR(rc); + goto err; + } + rows[i].pdata = p; + } + } + rc = OTP_MAP_CMN_OK; +err: + return rc; +} + + +otp_map_cmn_err_t otp_map_cmn_init(otp_map_cmn_t *map, + otp_hw_cmn_init_t hw_init, + otp_hw_cmn_t* ext_drv) +{ + otp_map_cmn_err_t rc = OTP_MAP_CMN_ERR_FAIL; + if (!hw_init ) { + goto err; + } + rc = hw_init(&map->dev); + if (rc) { + if (rc == OTP_HW_CMN_ERR_UNSP) { + rc = OTP_MAP_CMN_ERR_UNSP; + } + _ETR(rc); + goto err; + } + if (ext_drv) { + map->dev.drv_ext = ext_drv; + } + if (initialize(map)) { + _ETR(rc); + goto err; + } + map->ctl = otp_map_cmn_ctl; + map->write = otp_map_cmn_write; + map->read = otp_map_cmn_read; + +#if defined BCM_OTP_READ_MAP + if(otp_map_cmn_read_map(map)) { + _ETR(rc); + /*goto err;*/ + } +#endif + rc = OTP_MAP_CMN_OK; +err: + return rc; +} diff --git a/arch/arm/mach-bcmbca/otp/sko_hw.c b/arch/arm/mach-bcmbca/otp/sko_hw.c new file mode 100644 index 0000000000..bc3c3c6e92 --- /dev/null +++ b/arch/arm/mach-bcmbca/otp/sko_hw.c @@ -0,0 +1,485 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ + +/********************************************************************** + * + * sko_hw.c + * Includes both secure and non-secure otp operations + * + * + ********************************************************************* + */ + +#include +#include +#include +#include "linux/printk.h" +#include +#include "otp_map_cmn.h" +#include "sko.h" + + +//#define DBG_OTP + +#ifdef DBG_OTP +#define _ETR(__p__) printf("%s \n\t\t\t\t -> %s:%d error code %d\n",__FILE__,__FUNCTION__,__LINE__,__p__) +#define _TR(__p__) printf("%s \n\t\t\t\t -> %s:%d %d / 0x%x\n",__FILE__,__FUNCTION__,__LINE__,__p__,__p__) +#define _DPRT(...) printf(__VA_ARGS__) +#else +#define _ETR(__p__) +#define _TR(__p__) +#define _DPRT(...) +#endif +/* Descriptor fields for SKO objects +Row:42 SKO_0 + desc=0x9B009000 :(ecc which calculated at run-time) + 7-bit_ECC=0x46, VALID=1, Rsvd=2'b0, WLOCK=1, + RLOCK=1, SEND_ECC=0, ECC_EN=1, FOUT=1, + 12-bit_LAST_PTR=0x9, 12-bit_FIRST_PTR=0x0 +Row 46 CRC +*/ +/* + * This a debug SKO_1 if needed for the test +Row:43 SKO_1 +* desc=0x9B01300A : 7-bit_ECC=0x4E, VALID=1, Rsvd=2'b0, +* WLOCK=1, RLOCK=1, +* SEND_ECC=0, ECC_EN=1, FOUT=1, +* 12-bit_LAST_PTR=0x13,12-bit_FIRST_PTR=0xA +* +* +* {{43, 0x0, 0xffffffff, 0, 1, 0, (void*)0x8101300A}, +* {56, 0x0, 0xffffffff, 0, 1, 0, (void*)0x80000000}} +*/ +__weak u32 sko_hw_readl(void* dev, u32 offs) +{ + otp_hw_cmn_t* hw_dev = (otp_hw_cmn_t*)dev; + return readl(hw_dev->mm+offs); +} + +__weak void sko_hw_writel(void* dev, u32 offs, u32 data) +{ + otp_hw_cmn_t* hw_dev = (otp_hw_cmn_t*)dev; + _DPRT("0x%x < 0x%x\n",hw_dev->mm+offs, data); + writel(data, hw_dev->mm + offs); +} +/* + * locates row id + * */ +static otp_hw_cmn_err_t lookup_row(otp_hw_cmn_t* dev, + u32 addr, + otp_hw_cmn_row_t** row) +{ + u32 i; + otp_hw_cmn_row_t* rows = dev->rows; + for (i = 0; i < dev->row_max; i++) { + if (rows[i].addr == addr) { + *row = &rows[i]; + return OTP_HW_CMN_OK; + } + } + return OTP_HW_CMN_ERR_UNSP; +} +#if !defined(CONFIG_SPL_BUILD) || defined (CONFIG_BCMBCA_BOARD_TK_PROG) +static inline u32 _bit(u32 v, u32 no) { + return ((v >> no)&0x1); +} +static inline u8 ecc7(u32 v) +{ + return (u8) ((_bit(v,0) ^ _bit(v,1) ^ _bit(v,2) ^ _bit(v,3) ^ _bit(v,4) ^ _bit(v,5) ^ _bit(v,6) ^ _bit(v,7) ^ _bit(v,14) ^ _bit(v,19) ^ _bit(v,22) ^ _bit(v,24) ^ _bit(v,30) ^ _bit(v,31) ) | + ((_bit(v,4) ^ _bit(v,7) ^ _bit(v,8) ^ _bit(v,9) ^ _bit(v,10) ^ _bit(v,11) ^ _bit(v,12) ^ _bit(v,13) ^ _bit(v,14) ^ _bit(v,15) ^ _bit(v,18) ^ _bit(v,21) ^ _bit(v,24) ^ _bit(v,29))<<0x1) | + ((_bit(v,3) ^ _bit(v,11) ^ _bit(v,16) ^ _bit(v,17) ^ _bit(v,18) ^ _bit(v,19) ^ _bit(v,20) ^ _bit(v,21) ^ _bit(v,22) ^ _bit(v,23) ^ _bit(v,26) ^ _bit(v,27) ^ _bit(v,29) ^ _bit(v,30))<<0x2) | + ((_bit(v,2) ^ _bit(v,6) ^ _bit(v,10) ^ _bit(v,13) ^ _bit(v,15) ^ _bit(v,16) ^ _bit(v,24) ^ _bit(v,25) ^ _bit(v,26) ^ _bit(v,27) ^ _bit(v,28) ^ _bit(v,29) ^ _bit(v,30) ^ _bit(v,31))<<0x3) | + ((_bit(v,1) ^ _bit(v,2) ^ _bit(v,5) ^ _bit(v,7) ^ _bit(v,9) ^ _bit(v,12) ^ _bit(v,15) ^ _bit(v,20) ^ _bit(v,21) ^ _bit(v,22) ^ _bit(v,23) ^ _bit(v,25) ^ _bit(v,26) ^ _bit(v,28))<<0x4) | + ((_bit(v,0) ^ _bit(v,5) ^ _bit(v,6) ^ _bit(v,8) ^ _bit(v,12) ^ _bit(v,13) ^ _bit(v,14) ^ _bit(v,16) ^ _bit(v,17) ^ _bit(v,18) ^ _bit(v,19) ^ _bit(v,20) ^ _bit(v,28))<<0x5) | + ((_bit(v,0) ^ _bit(v,1) ^ _bit(v,3) ^ _bit(v,4) ^ _bit(v,8) ^ _bit(v,9) ^ _bit(v,10) ^ _bit(v,11) ^ _bit(v,17) ^ _bit(v,23) ^ _bit(v,25) ^ _bit(v,27) ^ _bit(v,31))<<0x6)); +}; + + +/* writes row with ecc. Calls for an external driver + * to do the job + * */ +static inline int write_row(otp_hw_cmn_t* dev, + u32 addr, + otp_hw_cmn_row_conf_t* row_conf, + u32 data) +{ + u32 d[2] = {data, 0}; + u32 size = sizeof(u32); + if (row_conf->op_type == OTP_HW_CMN_CTL_OTPCMD_ECC) { + d[1] = ecc7(d[0]); + size *= 2; + } + _DPRT("row: %d data: 0x%x ecc: 0x%x\n", addr, d[0], d[1]); + return dev->drv_ext->write_ex(dev->drv_ext, + addr, row_conf, (const u32*)d, size); +} + +static inline u32 get_crc32(u32 v, u32 crc) +{ + v = ntohl(v); + /* uboot crc32 negates results this however implemented assuming otherwise*/ + if (crc == 0) { + crc = 0xffffffff; + } + /* for this implementation chosen no complement crc32 as exepcted by crc calc for + * sko object + * */ + return crc32_no_comp(crc, (u8*)&v, sizeof(u32)); +} + +/* Writes full or partial key object at once*/ + +static otp_hw_cmn_err_t sko_hw_write(otp_hw_cmn_t* dev, + u32 addr, + const u32* data, + u32 size) +{ + int i; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + u32 *d = (u32*)data; + u32 crc = 0; + otp_hw_cmn_row_t *row, *row_ctl, *row_desc; + rc = lookup_row(dev, addr, &row); + if (rc) { + goto err; + } + + u32 sko_sect = SKO_ADDR2SECT(row->addr); + if (sko_sect == SKO_NON_SECT) { + int i; + if (size > (row->range*sizeof(u32)) || + !dev->drv_ext->write_ex) { + rc = OTP_HW_CMN_ERR_UNSP; + goto err; + } + for (i = 0; i < size/sizeof(u32); i++) { + rc = dev->drv_ext->write_ex(dev->drv_ext, + addr+i, &row->conf, (const u32*)&d[i], sizeof(u32)); + if (rc) { + goto err; + } + } + return rc; + } + + rc = lookup_row(dev, row->conf.arg, &row_ctl); + if (rc) { + goto err; + } + row_desc = row_ctl + 1; + + /* order is important; */ + /* 1. Fuse a control data for the SKO */ + rc = write_row(dev, row_ctl->addr, + &row_ctl->conf, row_ctl->conf.arg); + if (rc){ + goto err; + } + + crc = get_crc32((u32)row_ctl->conf.arg, 0); + /* otp data*/ + for (i = 0; i < row->range; i++) { + rc = write_row(dev, row->addr + i, + &row->conf, d[i]); + if (rc){ + goto err; + } + crc = get_crc32(d[i], crc); + } + crc = (~crc); + /* crc over ctl and data - fuse */ + rc = write_row(dev, row->addr + i, + &row->conf, crc); + if (rc) { + goto err; + } + _DPRT ("final crc 0x%x\n",crc); + /* descriptor; must be written at last; + *it can have config with enabled data ecc and WR LOCK */ + rc = write_row(dev, row_desc->addr, + &row_desc->conf, row_desc->conf.arg); + if (rc) { + goto err; + } + rc = OTP_HW_CMN_OK; +err: + return rc; +} +#else +static otp_hw_cmn_err_t sko_hw_write(otp_hw_cmn_t* dev, + u32 addr, + const u32* data, + u32 size) +{ + return OTP_HW_CMN_OK; +} +#endif + +static otp_hw_cmn_err_t sko_hw_read(otp_hw_cmn_t *dev, + u32 addr, + u32 *data, + u32 size) +{ + otp_hw_cmn_row_t *row; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + u32 sko_sect, sko_offs; + int i; + rc = lookup_row(dev, addr, &row); + if (rc) { + _ETR(addr); + goto err; + } + + sko_sect = SKO_ADDR2SECT(row->addr); + _TR(sko_sect); + _TR(row->addr); + if ( sko_sect >= SKO_SECT_MAX ) { + int i; + if (size > row->range*sizeof(u32)) { + rc = OTP_HW_CMN_ERR_INVAL; + goto err; + } + if (sko_sect != SKO_NON_SECT || + !dev->drv_ext->read ) { + rc = OTP_HW_CMN_ERR_UNSP; + _ETR(addr); + goto err; + } + for (i = 0; i < size/sizeof(u32); i++) { + rc = dev->drv_ext->read(dev->drv_ext, + row->addr+i, &data[i], size); + if (rc) { + goto err; + } + } + return rc; + } + sko_offs = sko_sect*SKO_SIZE; + _DPRT("0x%x status 0x%x\n",sko, sko_hw_readl(dev, sko_hw_readl(dev, SKO_KEYN_STATUS_OFFSET + sko_offs))); + if ( !SKO_KEY_DATA_GOOD(sko_hw_readl(dev, SKO_KEYN_STATUS_OFFSET + sko_offs))) { + goto err; + } + for (i = 0; i < size/sizeof(u32); i ++) { + data[i] = sko_hw_readl(dev, sko_offs + SKO_KEYN_DATA_OFFSET + i*sizeof(u32)); + _DPRT(" 0x%x\n", data[i]); + } + rc = OTP_HW_CMN_OK; +err: + return rc; +} + +/* return status of the key object - valid or not + * + * Various PAC lock modes if selected + * */ +static otp_hw_cmn_err_t status(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_status_t status, + u32* res) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_UNSP; + u32 sko_sect,sko_offs; + otp_hw_cmn_row_t *row = NULL; + u32 perm_mask = 0; + if ( lookup_row(dev, addr, &row)) { + _ETR(addr); + goto err; + } + + sko_sect = SKO_ADDR2SECT(row->addr); + _DPRT("%s sect %d row %d \n",__FUNCTION__,sko_sect,row->addr); + if ( sko_sect >= SKO_SECT_MAX) { + if (sko_sect == SKO_NON_SECT) { + u32 data = 0; + if (!(status & OTP_HW_CMN_STATUS_ROW_DATA_VALID) || + !dev->drv_ext->read) { + _ETR(addr); + goto err; + } + rc = dev->drv_ext->read(dev->drv_ext, + row->addr, &data, sizeof(u32)); + if (rc) { + _ETR(addr); + goto err; + } + _TR(data); + if (!data) { + status &= ~OTP_HW_CMN_STATUS_ROW_DATA_VALID; + } + *res = status; + return OTP_HW_CMN_OK; + } else { + rc = OTP_HW_CMN_ERR_INVAL; + _ETR(sko_sect); + goto err; + } + } + + sko_offs = sko_sect*SKO_SIZE; + perm_mask = (sko_hw_readl(dev, SKO_KEYN_PAC_CTRL_OFFSET+sko_offs)&SKO_PAC_MASK); + + /*for an SKO PERM_PAC bit if set means unlocked(enabled) */ + /* clearing bit OTP_HW_CMN_STATUS_NSRD_PAC_LOCKED if was requested*/ + if (perm_mask & SKO_PERM_PAC_NSR_LOCK) { + status &= ~OTP_HW_CMN_STATUS_NSRD_PAC_LOCKED; + } + if (perm_mask & SKO_PERM_PAC_SR_LOCK) { + status &= ~OTP_HW_CMN_STATUS_SRD_PAC_LOCKED; + } + if (perm_mask & SKO_PERM_PAC_NSW_LOCK) { + status &= ~OTP_HW_CMN_STATUS_NSW_PAC_LOCKED; + } + if (perm_mask & SKO_PERM_PAC_SW_LOCK) { + status &= ~OTP_HW_CMN_STATUS_SW_PAC_LOCKED; + } + /*for an SKO PERM_KEY bit if set means locked(disabled) */ + if (!(perm_mask & SKO_PERM_KEY_SR_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_SRD_LOCKED; + } + if (!(perm_mask & SKO_PERM_KEY_NSR_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_NSRD_LOCKED; + } + if (!(perm_mask & SKO_PERM_KEY_SW_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_SW_LOCKED; + } + if (!(perm_mask & SKO_PERM_KEY_NSW_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_NSW_LOCKED; + } + if ( !SKO_KEY_DATA_GOOD(sko_hw_readl(dev, SKO_KEYN_STATUS_OFFSET+sko_offs))) { + status &= ~OTP_HW_CMN_STATUS_ROW_DATA_VALID; + } + *res = status; + rc = OTP_HW_CMN_OK; +err: + return rc; +} + +static otp_hw_cmn_err_t lock_all(otp_hw_cmn_t *dev) +{ + int i; + for (i = 1; i < SKO_SECT_MAX; i++) { + sko_hw_writel(dev, + SKO_KEYN_PAC_CTRL_OFFSET+i*SKO_SIZE, SKO_PERM_LOCK_ALL); + } + return OTP_HW_CMN_OK; + +} + +static otp_hw_cmn_err_t lock(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_perm_t perm) +{ + + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + u32 sko_sect; + otp_hw_cmn_row_t *row; + u32 perm_mask = 0; + if (perm & OTP_HW_CMN_CTL_LOCK_ALL) { + return lock_all(dev); + } + + if ( lookup_row(dev, addr, &row)) { + rc = OTP_HW_CMN_ERR_UNSP; + _ETR(rc); + goto err; + } + sko_sect = SKO_ADDR2SECT(row->addr); + if ( sko_sect >= SKO_SECT_MAX) { + rc = OTP_HW_CMN_ERR_INVAL; + goto err; + } + if (perm & OTP_HW_CMN_CTL_LOCK_PAC_NSRD) { + SKO_PERM_PAC_LOCK_SET(perm_mask, SKO_PERM_PAC_NSR_LOCK); + } + if (perm & OTP_HW_CMN_CTL_LOCK_PAC_SRD) { + SKO_PERM_PAC_LOCK_SET(perm_mask, SKO_PERM_PAC_SR_LOCK); + } + if (perm & OTP_HW_CMN_CTL_LOCK_PAC_NSW) { + SKO_PERM_PAC_LOCK_SET(perm_mask, SKO_PERM_PAC_NSW_LOCK); + } + if (perm & OTP_HW_CMN_CTL_LOCK_PAC_SW) { + SKO_PERM_PAC_LOCK_SET(perm_mask, SKO_PERM_PAC_SW_LOCK); + } + if (perm & OTP_HW_CMN_CTL_LOCK_SRD) { + SKO_PERM_KEY_LOCK_SET(perm_mask, SKO_PERM_KEY_SR_LOCK); + } + if (perm & OTP_HW_CMN_CTL_LOCK_NSRD) { + SKO_PERM_KEY_LOCK_SET(perm_mask, SKO_PERM_KEY_NSR_LOCK); + } + if (perm & OTP_HW_CMN_CTL_LOCK_SW) { + SKO_PERM_KEY_LOCK_SET(perm_mask, SKO_PERM_KEY_SW_LOCK); + } + if (perm & OTP_HW_CMN_CTL_LOCK_NSW) { + SKO_PERM_KEY_LOCK_SET(perm_mask, SKO_PERM_KEY_NSW_LOCK); + } + sko_hw_writel(dev, SKO_KEYN_PAC_CTRL_OFFSET+sko_sect*SKO_SIZE, perm_mask); + rc = OTP_HW_CMN_OK; +err: + return rc; + +} + +__weak otp_hw_cmn_err_t sotp_hw_cmn_ctl(otp_hw_cmn_t *dev, + const otp_hw_cmn_ctl_cmd_t *cmd, + u32* res) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_UNSP; + switch ((u32)(cmd->ctl)) { + case OTP_HW_CMN_CTL_CONF: + memcpy(&dev->row_conf, + (otp_hw_cmn_row_conf_t*)cmd->data, + cmd->size); + + dev->ctl_cmd.ctl |= cmd->ctl; + rc = OTP_HW_CMN_OK; + break; + case (~((u32)OTP_HW_CMN_CTL_CONF)): + dev->ctl_cmd.ctl &= ~cmd->ctl; + rc = OTP_HW_CMN_OK; + break; + case OTP_HW_CMN_CTL_LOCK: { + otp_hw_ctl_data_t* ctl_data = (otp_hw_ctl_data_t*)cmd->data; + rc = lock(dev, ctl_data->addr, ctl_data->perm); + } + break; + case OTP_HW_CMN_CTL_STATUS: { + otp_hw_ctl_data_t* ctl_data = (otp_hw_ctl_data_t*)cmd->data; + rc = status(dev, ctl_data->addr, ctl_data->status, res); + } + break; + default : + break; + } + return rc; +} + +__weak otp_hw_cmn_err_t sotp_hw_dev_mmap(otp_hw_cmn_t* dev) +{ + dev->mm = SKO_BASE; + return OTP_HW_CMN_OK; +} + +__weak otp_hw_cmn_err_t sotp_hw_init(otp_hw_cmn_t* dev) +{ + DEFINE_SOTP_MAP_ROW_INITLR(rows); + if (sotp_hw_dev_mmap(dev)) { + return OTP_HW_CMN_ERR_FAIL; + } + dev->rows = rows; + dev->row_max = sizeof(rows)/sizeof(otp_hw_cmn_row_t); + return OTP_HW_CMN_OK; +} + + +otp_hw_cmn_err_t sotp_hw_cmn_init(otp_hw_cmn_t* dev) +{ + if (sotp_hw_init(dev)) { + return OTP_HW_CMN_ERR_FAIL; + } + dev->read = sko_hw_read; + dev->write = sko_hw_write; + dev->ctl = sotp_hw_cmn_ctl; + return OTP_HW_CMN_OK; +} diff --git a/arch/arm/mach-bcmbca/otp/skp_hw.c b/arch/arm/mach-bcmbca/otp/skp_hw.c new file mode 100644 index 0000000000..9e1ea044e1 --- /dev/null +++ b/arch/arm/mach-bcmbca/otp/skp_hw.c @@ -0,0 +1,955 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +/********************************************************************** + * + * sko_hw.c + * Includes both secure and non-secure otp operations + * + * + ********************************************************************* + */ + +#include +#include +#include +#include "linux/printk.h" +#include +#include "otp_map_cmn.h" +#include "skp.h" + +//#define DBG_OTP + +#ifdef DBG_OTP +#define _ETR(__p__) printf("%s \n\t\t\t\t -> :%s :%d code %d / 0x%x\n",__FILE__,__FUNCTION__,__LINE__,__p__,__p__) +#define _DPRT(...) printf(__VA_ARGS__) +#else +#define _ETR(__p__) +#define _DPRT(...) +#endif + +static otp_hw_cmn_err_t lookup_row(otp_hw_cmn_t* dev, + u32 addr, + otp_hw_cmn_row_t** row) +{ + u32 i; + otp_hw_cmn_row_t* rows = dev->rows; + for (i = 0; i < dev->row_max; i++) { + if (rows[i].addr == addr) { + *row = &rows[i]; + return OTP_HW_CMN_OK; + } + } + _ETR(OTP_HW_CMN_ERR_UNSP); + return OTP_HW_CMN_ERR_UNSP; +} + +/******************** FSR ACCESS FUNCTIONS ********************/ +__weak u32 fsr_hw_readl(void* dev, u32 offs) +{ + u32 val; + otp_hw_cmn_t* hw_dev = (otp_hw_cmn_t*)dev; + val = readl(hw_dev->mm+FSR_OFFSET+offs); + _DPRT("0x%p > 0x%x\n",(void*)(hw_dev->mm+offs+FSR_OFFSET), val); + return val; +} + +__weak void fsr_hw_writel(void* dev, u32 offs, u32 data) +{ + otp_hw_cmn_t* hw_dev = (otp_hw_cmn_t*)dev; + _DPRT("0x%p < 0x%x\n",(void*)(hw_dev->mm+offs+FSR_OFFSET), data); + writel(data, hw_dev->mm+FSR_OFFSET+offs); +} + +static otp_hw_cmn_err_t fsr_poll_otp_status(otp_hw_cmn_t* dev, + u32 fsr_offs) +{ + int to = 10000, errc = 0; + + do { + u32 st = fsr_hw_readl(dev, FSR_OTP_STATUS_OFFSET+fsr_offs); + _DPRT("Fsr status 0x%x\n",st); + if (!FSR_OTP_STATUS_ACTIVE(fsr_hw_readl(dev, FSR_OTP_STATUS_OFFSET+fsr_offs) )) { + break; + } + udelay(1); + to--; + } while(to); + + errc = FSR_OTP_STATUS_CMD_ERROR(fsr_hw_readl(dev,FSR_OTP_STATUS_OFFSET+fsr_offs)); + if (errc) { + _DPRT("%s: ERROR: otp status err 0x%x\n", + __FUNCTION__, fsr_hw_readl(dev, FSR_OTP_STATUS_OFFSET+fsr_offs)); + } + return (!to || errc); +} + +static otp_hw_cmn_err_t fsr_read(otp_hw_cmn_t* dev, + otp_hw_cmn_row_t *row, + otp_hw_cmn_row_conf_t* row_conf, + u32 *data, + u32 size) +{ + int i; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + u32 fsr_offs; + u32 raw_read = 0; + u32 desc = 0; + + fsr_offs = FSR_SIZE*(row->addr-FSR_START_ROW_ADDR); + if (row_conf && row_conf->op_type != OTP_HW_CMN_CTL_OTPCMD_ECC) { + _DPRT("%s %d \n\t\t\t\t Raw read!\n", + __FUNCTION__,__LINE__); + raw_read = 1; + } + + /* 1 - Check portal status */ + /* Issue RELOAD_DESC command to FSR_PORTAL_FP0_OTP_COMMAND */ + fsr_hw_writel(dev, FSR_OTP_CMD_OFFSET+fsr_offs,FSR_OTP_CMD_RELOAD_DESC); + /* Check cmd complete,FSR_PORTAL_FP0_OTP_STATUS active(31)=0 cmd_err(7:0)=0 */ + if (fsr_poll_otp_status(dev, fsr_offs)) { + rc = OTP_HW_CMN_ERR_TMO; + _ETR(rc); + goto err; + } + + /* Check valid(20)==1, ready(21)==1 */ + if (!FSR_PORTAL_VALID(fsr_hw_readl(dev, FSR_PORTAL_STATUS_OFFSET+fsr_offs))) { + /* Portal is empty --> return zeroed data */ + _DPRT("%s %d \n\t\t\t\t Empty Portal! portal_status 0x%x\n", + __FUNCTION__,__LINE__, + fsr_hw_readl(dev, FSR_PORTAL_STATUS_OFFSET+fsr_offs)); + memset(data, 0x0, size); + rc = OTP_HW_CMN_OK; + goto err; + } + + /* DESC status is in FSR_PORTAL_FP0_PORTAL_STATUS */ + /* RLOCK = 1 --> Cant read */ + if( FSR_PORTAL_RLOCK(fsr_hw_readl(dev, FSR_PORTAL_STATUS_OFFSET+fsr_offs)) ) { + rc = OTP_HW_CMN_ERR_FAIL; + _DPRT("%s %d \n\t\t\t\t Cant Read! RLOCK is set!\n", + __FUNCTION__,__LINE__); + _ETR(rc); + goto err; + } + + /* RAW and ECC_PGM_DIS = 0 --> Cant raw read */ + if( raw_read && !FSR_PORTAL_ECC_DIS(fsr_hw_readl(dev, FSR_PORTAL_STATUS_OFFSET+fsr_offs))){ + rc = OTP_HW_CMN_ERR_FAIL; + _DPRT("%s %d \n\t\t\t\t Cant Read RAW! ECC_DIS is NOT set!\n", + __FUNCTION__,__LINE__); + _ETR(rc); + goto err; + } + + /* 2 - Read Decriptor to determine portal size */ + /* Issue READ_DESC command to FSR_PORTAL_FP0_OTP_COMMAND */ + fsr_hw_writel(dev, FSR_OTP_CMD_OFFSET+fsr_offs,FSR_OTP_CMD_READ_DESC); + /* Check command complete */ + if (fsr_poll_otp_status(dev, fsr_offs)) { + rc = OTP_HW_CMN_ERR_TMO; + _ETR(rc); + goto err; + } + /* DESC is in FSR_PORTAL_FP0_DATA */ + /* Check valid(31)==1 , this should succeed as PORTAL status is good*/ + desc = fsr_hw_readl(dev, FSR_DATA_OFFSET+fsr_offs); + if(!FSR_RD_DGOOD(desc)) { + _ETR(rc); + _DPRT("%s %d \n\t\t\t\t desc 0x%x\n", + __FUNCTION__,__LINE__, + fsr_hw_readl(dev, FSR_DATA_OFFSET+fsr_offs)); + rc = OTP_HW_CMN_ERR_FAIL; + goto err; + } + /* Check if requested data fits inside this FSR, check SIZE(23:12) */ + if(size/sizeof(u32) > FSR_RD_DDATA_SIZE(desc)) { + _ETR(rc); + _DPRT("%s %d \n\t\t\t\t size 0x%x > 0x%0x\n", + __FUNCTION__,__LINE__, size/sizeof(u32), FSR_RD_DDATA_SIZE(desc)); + rc = OTP_HW_CMN_ERR_BAD_PARAM; + goto err; + } + + /* 3 - Read data */ + for (i = 0; i < size/sizeof(u32); i++ ) { + /* Issue READ_DATA command - Set WORD SEL(15:4) to pick word# */ + fsr_hw_writel(dev, FSR_OTP_CMD_OFFSET+fsr_offs, + (i<drv_ext; + + fsr_offs = FSR_SIZE*(row->addr-FSR_START_ROW_ADDR); + if (row_conf && row_conf->op_type != OTP_HW_CMN_CTL_OTPCMD_ECC) { + _DPRT("%s %d \n\t\t\t\t Raw write!\n", + __FUNCTION__,__LINE__); + raw_write = 1; + } + + /* 1 - Place OTP in program mode */ + rc = ext_drv->ctl(ext_drv, &ctl, &res); + if (rc) { + _ETR(rc); + goto err; + } + ctl.ctl = OTP_HW_CMN_CTL_OTPCMD_AUTH_PROG_DONE; + rc = ext_drv->ctl(ext_drv, &ctl, &res); + if (rc) { + _ETR(rc); + goto err; + } + + /* 2 - Check portal status */ + /* Issue RELOAD_DESC command to FSR_PORTAL_FP0_OTP_COMMAND */ + fsr_hw_writel(dev, FSR_OTP_CMD_OFFSET+fsr_offs,FSR_OTP_CMD_RELOAD_DESC); + /* Check cmd complete,FSR_PORTAL_FP0_OTP_STATUS active(31)=0 cmd_err(7:0)=0 */ + if (fsr_poll_otp_status(dev, fsr_offs)) { + rc = OTP_HW_CMN_ERR_TMO; + _ETR(rc); + goto err; + } + + /* Check valid(20)==1, ready(21)==1*/ + if (!FSR_PORTAL_VALID(fsr_hw_readl(dev, FSR_PORTAL_STATUS_OFFSET+fsr_offs))) { + /* If Portal DESC is not valid ---> empty!, program it */ + /* Set VALID = 1 and RLOCK = 0 */ + desc = FSR_RD_DESC_VALID_MASK< Cant write */ + if( FSR_PORTAL_RLOCK(fsr_hw_readl(dev, FSR_PORTAL_STATUS_OFFSET+fsr_offs)) ) { + rc = OTP_HW_CMN_ERR_WRITE_FAIL; + _DPRT("%s %d \n\t\t\t\t Cant Write! RLOCK is set!\n", + __FUNCTION__,__LINE__); + _ETR(rc); + goto err; + } + + /* RAW and ECC_PGM_DIS = 0 --> Cant raw write */ + if( raw_write && !FSR_PORTAL_ECC_DIS(fsr_hw_readl(dev, + FSR_PORTAL_STATUS_OFFSET+fsr_offs))) { + rc = OTP_HW_CMN_ERR_WRITE_FAIL; + _DPRT("%s %d \n\t\t\t\t Cant Write RAW! ECC_DIS is NOT set!\n", + __FUNCTION__,__LINE__); + _ETR(rc); + goto err; + } + + /* NOT RAW and ECC_PGM_DIS = 1 --> Cant non-raw write without ECC */ + if( !raw_write && FSR_PORTAL_ECC_DIS(fsr_hw_readl(dev, + FSR_PORTAL_STATUS_OFFSET+fsr_offs))) { + rc = OTP_HW_CMN_ERR_WRITE_FAIL; + _DPRT("%s %d \n\t\t\t\t Cant Write Non-raw! ECC_DIS is set!\n", + __FUNCTION__,__LINE__); + _ETR(rc); + goto err; + } + } + + + /* 3 - Read Decriptor to determine portal size */ + /* Issue READ_DESC command to FSR_PORTAL_FP0_OTP_COMMAND */ + fsr_hw_writel(dev, FSR_OTP_CMD_OFFSET+fsr_offs,FSR_OTP_CMD_READ_DESC); + /* Check command complete */ + if (fsr_poll_otp_status(dev, fsr_offs)) { + rc = OTP_HW_CMN_ERR_TMO; + _ETR(rc); + goto err; + } + /* Read and check if descriptor is valid(31) */ + desc = fsr_hw_readl(dev, FSR_DATA_OFFSET+fsr_offs); + if(!FSR_RD_DGOOD(desc)) { + _ETR(rc); + _DPRT("%s %d \n\t\t\t\t desc 0x%x\n", + __FUNCTION__,__LINE__, + fsr_hw_readl(dev, FSR_DATA_OFFSET+fsr_offs)); + rc = OTP_HW_CMN_ERR_FAIL; + goto err; + } + /* Check if requested data fits inside this FSR, check SIZE(23:12) */ + if(size/sizeof(u32) > FSR_RD_DDATA_SIZE(desc)) { + _ETR(rc); + _DPRT("%s %d \n\t\t\t\t size 0x%x > 0x%0x\n", + __FUNCTION__,__LINE__, size/sizeof(u32), FSR_RD_DDATA_SIZE(desc)); + rc = OTP_HW_CMN_ERR_BAD_PARAM; + goto err; + } + /* If not a raw_write, check if portal has been written to */ + if( !raw_write ) { + for (i = 0; i < size/sizeof(u32); i++ ) { + /* Issue READ_DATA command - Set WORD SEL(15:4) to pick word# */ + fsr_hw_writel(dev, FSR_OTP_CMD_OFFSET+fsr_offs, + (i<mm+KSR_OFFSET+offs); +} + +__weak void ksr_hw_writel(void* dev, u32 offs, u32 data) +{ + otp_hw_cmn_t* hw_dev = (otp_hw_cmn_t*)dev; + _DPRT("0x%x < 0x%x\n",hw_dev->mm+offs, data); + writel(data, hw_dev->mm+KSR_OFFSET+offs); +} + +static otp_hw_cmn_err_t ksr_poll_otp_status(otp_hw_cmn_t* dev, + u32 ksr_offs) +{ + int to = 10000, errc = 0; + + do { + u32 st = ksr_hw_readl(dev, KSR_OTP_STATUS_OFFSET+ksr_offs); + _DPRT("Ksr status 0x%x\n",st); + if (!KSR_OTP_STATUS_ACTIVE(ksr_hw_readl(dev, KSR_OTP_STATUS_OFFSET+ksr_offs) )) { + break; + } + udelay(1); + to--; + } while(to); + + errc = KSR_OTP_STATUS_CMD_ERROR(ksr_hw_readl(dev,KSR_OTP_STATUS_OFFSET+ksr_offs)); + if (errc) { + printf("%s: ERROR: otp status err 0x%x\n", + __FUNCTION__, ksr_hw_readl(dev, KSR_OTP_STATUS_OFFSET+ksr_offs)); + } + return (!to || errc); +} + +static otp_hw_cmn_err_t ksr_read(otp_hw_cmn_t* dev, + otp_hw_cmn_row_t *row, + otp_hw_cmn_row_conf_t* row_conf, + u32 *data, + u32 size) +{ + int i; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + u32 ksr_offs; + ksr_offs = KSR_SIZE*(row->addr-KSR_START_ROW_ADDR); + if ( !KSR_PORTAL_VALID(ksr_hw_readl(dev, KSR_PORTAL_STATUS_OFFSET+ksr_offs)) || + !KSR_RD_DGOOD(ksr_hw_readl(dev, KSR_RD_DESC_OFFSET+ksr_offs))) { + _ETR(rc); + _DPRT("%s %d \n\t\t\t\t portal_status 0x%x rd_desc 0x%x\n", + __FUNCTION__,__LINE__,ksr_hw_readl(dev, KSR_PORTAL_STATUS_OFFSET+ksr_offs), ksr_hw_readl(dev, KSR_RD_DESC_OFFSET+ksr_offs)); + rc = OTP_HW_CMN_ERR_KEY_EMPTY; + goto err; + } + for (i = 0; i < size/sizeof(u32); i++ ) { + data[i] = ksr_hw_readl(dev, KSR_DATA_OFFSET+i*sizeof(u32)+ksr_offs); + _DPRT("%s %d \n\t\t\t\t data[%d] 0x%x \n", + __FUNCTION__,__LINE__, i, data[i]); + } + rc = OTP_HW_CMN_OK; +err: + return rc; + +} + +static otp_hw_cmn_err_t ksr_write(otp_hw_cmn_t* dev, + otp_hw_cmn_row_t *row, + otp_hw_cmn_row_conf_t* row_conf, + u32 *data, + u32 size) +{ + int i; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + u32 ksr_offs; + otp_hw_cmn_ctl_cmd_t ctl = {.ctl = OTP_HW_CMN_CTL_OTPCMD_AUTH_PROG}; + u32 res = 0; + otp_hw_cmn_t *ext_drv = dev->drv_ext; + ksr_offs = KSR_SIZE*(row->addr-KSR_START_ROW_ADDR); + +/* + 1) Set OTP in program mode using classic CPU access as mentioned in Sec3. + 2) Write bit[31] (valid) to “1” and bit[7:0] PAC fields as required (refer RDB for definition) into KEY_PORTAL_KP0_PGM_DESCRIPTOR + 3) Issue PGM_DESCRIPTOR_WORD command, write bit[3:0] CMD field to “0x8” in KEY_PORTAL_KP0_OTP_COMMAND, + this command programs into the OTP Macro one 32-bit Descriptor word. The data to be written comes from the KP_PGM_DESCRIPTOR register. + 4) Wait/Check for command_active to be low which indicates that the command issued is completed. + Poll for the register bit “command_active(bit [31])” in KEY_PORTAL_KP0_OTP_STATUS. + Once command is completed. Check for the bits[7:0] CMD_ERR (refer RDB for definition of the bits). + 5) Issue PGM_DESCRIPTOR_ECC command, write bit[3:0] CMD field to “0x9” in KEY_PORTAL_KP0_OTP_COMMAND, + this command programs into the OTP Macro just the 10 ECC bits for the Descriptor row, + which the OTP Controller automatically calculates based on the OTP data already programmed in this row. + 6) Wait/Check for command_active to be low which indicates that the command issued is completed. + Poll for the register bit “command_active(bit [31])” in KEY_PORTAL_KP0_OTP_STATUS. + Once command is completed. Check for the bits[7:0] CMD_ERR (refer RDB for definition of the bits). + 7) Write all the 8 Keys into KEY_PORTAL_KP0_DATA_0, KEY_PORTAL_KP0_DATA_1, KEY_PORTAL_KP0_DATA_2, KEY_PORTAL_KP0_DATA_3, + KEY_PORTAL_KP0_DATA_4, KEY_PORTAL_KP0_DATA_5, KEY_PORTAL_KP0_DATA_6, KEY_PORTAL_KP0_DATA_7 respectively. + 8) Issue PGM_KEY command, write bit[3:0] CMD field to “0x2” in KEY_PORTAL_KP0_OTP_COMMAND, + this command programs (in the OTP Array) the entire key (including the CRC value) for this Key Portal. + The hardware internally calculates the CRC value for the key and programs it into the CRC OTP field for this key. + 9) Wait/Check for command_active to be low which indicates that the command issued is completed. + Poll for the register bit “command_active(bit [31])” in KEY_PORTAL_KP0_OTP_STATUS. + Once command is completed. Check for the bits[7:0] CMD_ERR (refer RDB for definition of the bits). + 10) Issue chip reset. + +4.3 KSR PORTAL CPU READ ACCESS: + +KSR sectioned region thru portal can be accessed only in secure-boot mode, i.e. bit 2 in Row13 and bit 28 in Row 14 should be “1”. + +All 6 Key portals can be accessed in any order. Below sequence is explained by considering Key portal0 as an example same applies for other 5 Key portals as well. + + 1) Upon chip reboot, design loads the KSR descriptor, checks for its validity, + and loads the keys into the registers once they are good. + 2) Read KEY_PORTAL_KP0_RD_DESCRIPTOR, check for bit[29] DGOOD, this should be “1” which indicates descriptor + validity checks passed and the also all 8 Keys are good with no CRC/ECC errors. + a. If DGOOD is “0”, all 8 keys read in Step(3) will be zeroes, KEY_PORTAL_KP0_PORTAL_STATUS + register will have more status info bits like Descriptor validity, Desc ECC error, Data ECC error, Keys loaded (Refer RDB). + 3) Read KEY_PORTAL_KP0_PAC register, this register initially gets loaded with the PAC values + from OTP but later can also be programmed, based on the PAC permissions Key portal registers can be accessed. Please refer RDB for more information. + 4) Read all the 8 Keys which are loaded in KEY_PORTAL_KP0_DATA_0, KEY_PORTAL_KP0_DATA_1, KEY_PORTAL_KP0_DATA_2, KEY_PORTAL_KP0_DATA_3, KEY_PORTAL_KP0_DATA_4, KEY_PORTAL_KP0_DATA_5, KEY_PORTAL_KP0_DATA_6, KEY_PORTAL_KP0_DATA_7 respectively. + +*/ + rc = ext_drv->ctl(ext_drv, &ctl, &res); + if (rc) { + _ETR(rc); + goto err; + } + + ctl.ctl = OTP_HW_CMN_CTL_OTPCMD_AUTH_PROG_DONE; + rc = ext_drv->ctl(ext_drv, &ctl, &res); + if (rc) { + _ETR(rc); + goto err; + } + + _ETR((u32)row_conf->perm); + _ETR(KSR_PORTAL_PGM_DESC_SRW_PERM); + if (ksr_poll_otp_status(dev, ksr_offs)) { + rc = OTP_HW_CMN_ERR_TMO; + _ETR(rc); + goto err; + } + ksr_hw_writel(dev, KSR_PGM_DESC_OFFSET + ksr_offs, (u32)row_conf->perm); + _ETR(ksr_hw_readl(dev, KSR_PGM_DESC_OFFSET+ksr_offs)); + ksr_hw_writel(dev, KSR_OTP_CMD_OFFSET + ksr_offs, KSR_PORTAL_OTP_CMD_PGM_DESC_WORD); + if (ksr_poll_otp_status(dev, ksr_offs)) { + rc = OTP_HW_CMN_ERR_TMO; + _ETR(rc); + goto err; + } + _ETR(KSR_PORTAL_OTP_CMD_PGM_DESC_WORD); + if ((row_conf->op_type&OTP_HW_CMN_CTL_OTPCMD_ECC)) { + ksr_hw_writel(dev, KSR_OTP_CMD_OFFSET+ksr_offs,KSR_PORTAL_OTP_CMD_PGM_DESC_ECC); + if (ksr_poll_otp_status(dev,ksr_offs)) { + rc = OTP_HW_CMN_ERR_TMO; + _ETR(rc); + goto err; + } + _ETR(KSR_PORTAL_OTP_CMD_PGM_DESC_ECC); + } + for (i = 0 ; i < size/sizeof(u32); i++) { + ksr_hw_writel(dev, KSR_DATA_OFFSET+ksr_offs+i*sizeof(u32), data[i]); + } + ksr_hw_writel(dev, KSR_OTP_CMD_OFFSET + ksr_offs, KSR_PORTAL_OTP_CMD_PGM_KEY); + _ETR(ksr_hw_readl(dev, KSR_OTP_CMD_OFFSET+ksr_offs)); + if (ksr_poll_otp_status(dev, ksr_offs)) { + rc = OTP_HW_CMN_ERR_TMO; + _ETR(rc); + goto err; + } + + _DPRT("Fused KSR rows as expected \n"); + rc = OTP_HW_CMN_OK; +err: + return rc; +} + +static otp_hw_cmn_err_t ksr_set_populated_pacs(otp_hw_cmn_t *dev, u32 pac_val) +{ + int i; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + /* First 2 KSR Portals have their PACS fused via their descriptors -- ignore */ + for (i = 2; i < KSR_MAX_ROW_ADDR; i++) { + /* If portal is valid and descriptor is good, we have valid data so lock NS */ + if ( KSR_PORTAL_VALID(ksr_hw_readl(dev, KSR_PORTAL_STATUS_OFFSET+i*KSR_SIZE)) && + KSR_RD_DGOOD(ksr_hw_readl(dev, KSR_RD_DESC_OFFSET+i*KSR_SIZE))) { + ksr_hw_writel(dev, KSR_PAC_OFFSET+i*KSR_SIZE, pac_val); + } + } + rc = OTP_HW_CMN_OK; + return rc; +} + +static otp_hw_cmn_err_t ksr_set_all_pacs(otp_hw_cmn_t *dev, u32 pac_val) +{ + int i; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + /* First 2 KSR Portals have their PACS fused via their descriptors -- ignore */ + for (i = 2; i < KSR_MAX_ROW_ADDR; i++) { + ksr_hw_writel(dev, KSR_PAC_OFFSET+i*KSR_SIZE, pac_val); + } + rc = OTP_HW_CMN_OK; + return rc; + +} + +static otp_hw_cmn_err_t ksr_portal_lock(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_perm_t perm, + u8 lock) +{ + otp_hw_cmn_row_t *row; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + u32 curr_perm_mask = 0; + u32 perm_mask = 0; + if ( lookup_row(dev, addr, &row)) { + rc = OTP_HW_CMN_ERR_UNSP; + _ETR(rc); + goto err; + } + if (perm & OTP_HW_CMN_CTL_LOCK_PAC_NSRD) { + perm_mask |= KSR_PERM_PAC_NSR_LOCK; + } + if (perm & OTP_HW_CMN_CTL_LOCK_PAC_SRD) { + perm_mask |= KSR_PERM_PAC_SR_LOCK; + } + if (perm & OTP_HW_CMN_CTL_LOCK_PAC_NSW) { + perm_mask |= KSR_PERM_PAC_NSW_LOCK; + } + if (perm & OTP_HW_CMN_CTL_LOCK_PAC_SW) { + perm_mask |= KSR_PERM_PAC_SW_LOCK; + } + if (perm & OTP_HW_CMN_CTL_LOCK_SRD) { + perm_mask |= KSR_PERM_BLK_SR_LOCK; + } + if (perm & OTP_HW_CMN_CTL_LOCK_NSRD) { + perm_mask |= KSR_PERM_BLK_NSR_LOCK; + } + if (perm & OTP_HW_CMN_CTL_LOCK_SW) { + perm_mask |= KSR_PERM_BLK_SW_LOCK; + } + if (perm & OTP_HW_CMN_CTL_LOCK_NSW) { + perm_mask |= KSR_PERM_BLK_NSW_LOCK; + } + if (perm_mask) { + curr_perm_mask = ksr_hw_readl(dev, KSR_PAC_OFFSET + row->addr*KSR_SIZE); + if( lock ) { + ksr_hw_writel(dev, KSR_PAC_OFFSET + row->addr*KSR_SIZE, + curr_perm_mask|perm_mask); + } else { + ksr_hw_writel(dev, KSR_PAC_OFFSET + row->addr*KSR_SIZE, + curr_perm_mask&(~perm_mask)); + } + + rc = OTP_HW_CMN_OK; + } +err: + return rc; +} + +static otp_hw_cmn_err_t ksr_multi_portal_lock(otp_hw_cmn_t *dev, + otp_hw_cmn_perm_t perm, + u8 lock) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + if( lock ) { + if (perm & OTP_HW_CMN_CTL_LOCK_NS) { + rc = ksr_set_all_pacs(dev, KSR_PERM_LOCK_NS); + } else if (perm & OTP_HW_CMN_CTL_LOCK_ALL) { + rc = ksr_set_all_pacs(dev, KSR_PERM_LOCK_ALL); + } else if (perm & OTP_HW_CMN_CTL_LOCK_S) { + rc = ksr_set_all_pacs(dev, KSR_PERM_LOCK_S); + } + } else { + if (perm & OTP_HW_CMN_CTL_LOCK_NS || perm & OTP_HW_CMN_CTL_LOCK_NS_PROV ) { + rc = ksr_set_all_pacs(dev, KSR_PERM_UNLOCK_NS); + if( perm & OTP_HW_CMN_CTL_LOCK_NS_PROV) { + /* LOCK NS access for keys that are populated */ + rc = ksr_set_populated_pacs(dev, KSR_PERM_LOCK_NS); + } + } else if (perm & OTP_HW_CMN_CTL_LOCK_S) { + rc = ksr_set_all_pacs(dev, KSR_PERM_UNLOCK_S); + } else if (perm & OTP_HW_CMN_CTL_LOCK_ALL) { + rc = ksr_set_all_pacs(dev, KSR_PERM_UNLOCK_ALL); + } + } + return rc; +} + +static otp_hw_cmn_err_t ksr_portal_status(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_status_t status, + u32* res) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + u32 perm_mask = 0,ksr_offs; + otp_hw_cmn_row_t *row = NULL; + + if ( lookup_row(dev, addr, &row)) { + rc = OTP_HW_CMN_ERR_UNSP; + _ETR(rc); + goto err; + } + + ksr_offs = KSR_SIZE*(row->addr-KSR_START_ROW_ADDR); + perm_mask = ksr_hw_readl(dev, KSR_PAC_OFFSET+ksr_offs); + + if (!(perm_mask & KSR_PERM_PAC_NSR_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_NSRD_PAC_LOCKED; + } + if (!(perm_mask & KSR_PERM_PAC_SR_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_SRD_PAC_LOCKED; + } + if (!(perm_mask & KSR_PERM_PAC_NSW_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_NSW_PAC_LOCKED; + } + if (!(perm_mask & KSR_PERM_PAC_SW_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_SW_PAC_LOCKED; + } + if (!(perm_mask & KSR_PERM_BLK_SR_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_SRD_LOCKED; + } + if (!(perm_mask & KSR_PERM_BLK_NSR_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_NSRD_LOCKED; + } + if (!(perm_mask & KSR_PERM_BLK_SW_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_SW_LOCKED; + } + if (!(perm_mask & KSR_PERM_BLK_NSW_LOCK)) { + status &= ~OTP_HW_CMN_STATUS_NSW_LOCKED; + } + if ( !KSR_PORTAL_VALID(ksr_hw_readl(dev, KSR_PORTAL_STATUS_OFFSET+ksr_offs)) || + !KSR_RD_DGOOD(ksr_hw_readl(dev, KSR_RD_DESC_OFFSET+ksr_offs))) { + status &= ~OTP_HW_CMN_STATUS_ROW_DATA_VALID; + } + *res = status; + rc = OTP_HW_CMN_OK; +err: + return rc; +} + + +/******************** SKP ACCESS FUNCTIONS ********************/ +static otp_hw_cmn_err_t skp_write(otp_hw_cmn_t* dev, + u32 addr, + otp_hw_cmn_row_conf_t* conf, + const u32* data, + u32 size) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + otp_hw_cmn_row_t *row; + otp_hw_cmn_row_conf_t* row_conf; + if (!dev->drv_ext) { + rc = OTP_HW_CMN_ERR_INVAL; + _ETR(rc); + goto err; + } + if (lookup_row(dev, addr, &row)) { + rc = OTP_HW_CMN_ERR_UNSP; + _ETR(rc); + goto err; + } + + if ((int)size <= 0 || (int)size > row->range*sizeof(u32) || (int)row->addr < 0) { + rc = OTP_HW_CMN_ERR_INVAL; + _ETR(rc); + goto err; + } + + row_conf = conf?conf:&row->conf; + if( (int)row->addr < KSR_MAX_ROW_ADDR ) { + rc = ksr_write( dev, row, row_conf, (u32*)data, size ); + } else if(((int)row->addr >=FSR_START_ROW_ADDR) && ((int)row->addr < FSR_MAX_ROW_ADDR)) { + rc = fsr_write( dev, row, row_conf, (u32*)data, size ); + } else { + rc = OTP_HW_CMN_ERR_INVAL; + _ETR(rc); + } +err: + _DPRT("%s: rc %d\n", __FUNCTION__, rc); + return rc; + +} + +static otp_hw_cmn_err_t skp_read(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_row_conf_t* conf, + u32 *data, + u32 size) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + otp_hw_cmn_row_t *row; + otp_hw_cmn_row_conf_t* row_conf; + if (!dev->drv_ext) { + rc = OTP_HW_CMN_ERR_INVAL; + _ETR(rc); + goto err; + } + if( lookup_row(dev, addr, &row)) { + rc = OTP_HW_CMN_ERR_UNSP; + _ETR(rc); + goto err; + } + if ((int)size <= 0 || (int)size > row->range*sizeof(u32) || (int)row->addr < 0) { + rc = OTP_HW_CMN_ERR_INVAL; + _ETR(rc); + goto err; + } + + row_conf = conf? conf : &row->conf; + if( (int)row->addr < KSR_MAX_ROW_ADDR ) { + rc = ksr_read( dev, row, row_conf, (u32*)data, size ); + } else if(((int)row->addr >=FSR_START_ROW_ADDR) && ((int)row->addr < FSR_MAX_ROW_ADDR)) { + rc = fsr_read( dev, row, row_conf, (u32*)data, size ); + } else { + rc = OTP_HW_CMN_ERR_INVAL; + _ETR(rc); + } +err: + _DPRT("%s: rc %d\n", __FUNCTION__, rc); + return rc; +} + +static otp_hw_cmn_err_t skp_hw_write(otp_hw_cmn_t* dev, + u32 addr, + const u32* data, + u32 size) +{ + otp_hw_cmn_row_conf_t *cfg = + !(dev->ctl_cmd.ctl&OTP_HW_CMN_CTL_CONF)? NULL: &dev->row_conf; + _ETR(dev->ctl_cmd.ctl); + return skp_write(dev, addr, cfg, data, size); +} + +static otp_hw_cmn_err_t skp_hw_read(otp_hw_cmn_t *dev, + u32 addr, + u32 *data, + u32 size) +{ + + otp_hw_cmn_row_conf_t *cfg = + !(dev->ctl_cmd.ctl&OTP_HW_CMN_CTL_CONF)? NULL : &dev->row_conf; + _ETR(dev->ctl_cmd.ctl); + return skp_read(dev, addr, cfg, data, size); + +} + +static otp_hw_cmn_err_t skp_hw_lock(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_perm_t perm, + u8 lock) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + switch ( perm ) { + case OTP_HW_CMN_CTL_LOCK_NS: + case OTP_HW_CMN_CTL_LOCK_NS_PROV: + case OTP_HW_CMN_CTL_LOCK_ALL: + case OTP_HW_CMN_CTL_LOCK_S: + /* TODO: Add FSR support */ + rc = ksr_multi_portal_lock(dev, perm, lock); + break; + default: + /* TODO: Add FSR support */ + rc = ksr_portal_lock(dev, addr, perm, lock); + } + return rc; +} + + +static otp_hw_cmn_err_t skp_hw_status(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_status_t status, + u32* res) +{ + + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + /* TODO: Add FSR support */ + rc = ksr_portal_status(dev, addr, status, res); + return rc; +} + +__weak otp_hw_cmn_err_t sotp_hw_cmn_ctl(otp_hw_cmn_t *dev, + const otp_hw_cmn_ctl_cmd_t *cmd, + u32* res) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_UNSP; + switch ((u32)(cmd->ctl)) { + case OTP_HW_CMN_CTL_CONF: + memcpy(&dev->row_conf, + (otp_hw_cmn_row_conf_t*)cmd->data, + cmd->size); + + dev->ctl_cmd.ctl |= cmd->ctl; + rc = OTP_HW_CMN_OK; + break; + case (~((u32)OTP_HW_CMN_CTL_CONF)): + dev->ctl_cmd.ctl &= ~cmd->ctl; + rc = OTP_HW_CMN_OK; + break; + case OTP_HW_CMN_CTL_UNLOCK: { + otp_hw_ctl_data_t* ctl_data = (otp_hw_ctl_data_t*)cmd->data; + rc = skp_hw_lock(dev, ctl_data->addr, ctl_data->perm, 0); + } + break; + case OTP_HW_CMN_CTL_LOCK: { + otp_hw_ctl_data_t* ctl_data = (otp_hw_ctl_data_t*)cmd->data; + rc = skp_hw_lock(dev, ctl_data->addr, ctl_data->perm, 1); + } + break; + case OTP_HW_CMN_CTL_STATUS: { + otp_hw_ctl_data_t* ctl_data = (otp_hw_ctl_data_t*)cmd->data; + rc = skp_hw_status(dev, ctl_data->addr, ctl_data->status, res); + } + break; + default : + break; + } + return rc; + +} + + +__weak otp_hw_cmn_err_t sotp_hw_dev_mmap(otp_hw_cmn_t* dev) +{ + dev->mm = KSR_BASE; + return OTP_HW_CMN_OK; +} + +__weak otp_hw_cmn_err_t sotp_hw_init(otp_hw_cmn_t* dev) +{ + DEFINE_SOTP_MAP_ROW_INITLR(rows); + if (sotp_hw_dev_mmap(dev)) { + return OTP_HW_CMN_ERR_FAIL; + } + dev->rows = rows; + dev->row_max = sizeof(rows)/sizeof(otp_hw_cmn_row_t); + return OTP_HW_CMN_OK; +} + + +otp_hw_cmn_err_t sotp_hw_cmn_init(otp_hw_cmn_t* dev) +{ + if (sotp_hw_init(dev)) { + _ETR(OTP_HW_CMN_ERR_FAIL); + return OTP_HW_CMN_ERR_FAIL; + } + dev->read = skp_hw_read; + dev->write = skp_hw_write; + dev->ctl = sotp_hw_cmn_ctl; + return OTP_HW_CMN_OK; +} diff --git a/arch/arm/mach-bcmbca/otp/sotp_hw.c b/arch/arm/mach-bcmbca/otp/sotp_hw.c new file mode 100644 index 0000000000..3d14f7834f --- /dev/null +++ b/arch/arm/mach-bcmbca/otp/sotp_hw.c @@ -0,0 +1,1679 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ + +/*************************************************************************** +* +* Description: Secure OTP accessor for SoCs: +* 6856,6858,6846,63158,4908,47622,63178,6756 + + +* write(fuse)/read key and rows for the SEC KEY section , read/write(fuse) status per region +* +* +***************************************************************************/ + +/* Includes. */ + +#include +#include +#include +#include "linux/printk.h" +#include + +#include "otp_map_cmn.h" +#include "sotp.h" + +//#define OTP_DRY_RUN +//#define DEBUG_SOTP + +#ifdef DEBUG_SOTP +#define SOTP_DBG(...) printf(__VA_ARGS__) +#define _ETR(__p__) printf("%s \n\t\t\t\t -> %s:%d ERROR code %d\n",__FILE__, __FUNCTION__,__LINE__,__p__) +#define _TR(__p__) printf("%s \n\t\t\t\t -> %s:%d code %d / 0x%x\n",__FILE__, __FUNCTION__,__LINE__,__p__,__p__) +#else +#define SOTP_DBG(...) +#define _ETR(__p__) +#define _TR(__p__) +#endif + +#define SOTP_ERR_PRINT printf + + +typedef enum __section_id { + SOTP_SECT_ID_RSVD = 0, + SOTP_SECT_ID_BLOCK_LOCK, + SOTP_SECT_ID_PROGLOCK, + SOTP_SECT_ID_DEVICE_CFG, + SOTP_SECT_ID_GENERAL_CFG_BCM, + SOTP_SECT_ID_GENERAL_CUST_ID, + SOTP_SECT_ID_GENERAL_VEND_ID, + SOTP_SECT_ID_SEC_KEY_1, + SOTP_SECT_ID_SEC_KEY_2, + SOTP_SECT_ID_SEC_KEY_3, + SOTP_SECT_ID_SEC_KEY_4, + SOTP_SECT_ID_SEC_KEY_5, + SOTP_SECT_ID_SEC_KEY_6, + SOTP_SECT_ID_SEC_KEY_7, + SOTP_SECT_ID_MAX, +} sotp_section_id_t; + +static int sectn_map[SOTP_SECT_ID_MAX] = + {8, 2, 2, 4, 4, 4, 4, 12, 12, 12, 12, 12, 12, 12 }; + + +/* + * locates row id + * */ +static otp_hw_cmn_err_t lookup_row(otp_hw_cmn_t* dev, + u32 addr, + otp_hw_cmn_row_t** row) +{ + u32 i; + otp_hw_cmn_row_t* rows = dev->rows; + for (i = 0; i < dev->row_max; i++) { + if ( (addr >= rows[i].addr) && (addr < (rows[i].addr + rows[i].range)) ) { + *row = &rows[i]; + return OTP_HW_CMN_OK; + } + } + _ETR(OTP_HW_CMN_ERR_UNSP); + return OTP_HW_CMN_ERR_UNSP; +} + +static u32 row2regn(u32 r) +{ + return (r/ROWS_PER_RGN); +} + +static int row2sect(int row, u32* sect) +{ + int i; + if (row < 0 || row > sect[SOTP_SECT_ID_MAX-1] - 1) { + return -1; + } + + for (i = 0; i < SOTP_SECT_ID_MAX; i++) { + if (row <= (int)sectn_map[i] - 1) { + *sect = i; + break; + } + } + SOTP_DBG("row %u --> sect %u\n",row, *sect); + return 0; +} + +/* +static inline int sect2row(otp_hw_cmn_section_id_t s, u32 row_range[2]) +{ + if (s >= SOTP_SECT_ID_RSVD && s < SOTP_SECT_ID_MAX) { + row_range[0] = !s ? 0 : sectn_map[s-1]; + row_range[1] = sectn_map[s] - row_range[0]; + return 0; + } + return -1; +} +*/ +static inline u32 sect2regn(u32 s, u32 regn_range[2]) +{ + if (s >= SOTP_SECT_ID_RSVD && s < SOTP_SECT_ID_MAX) { + regn_range[0] = !s ? 0 : sectn_map[s-1]/ROWS_PER_RGN ; + regn_range[1] = sectn_map[s]/ROWS_PER_RGN - regn_range[0]; + return 0; + } + return -1; +} + +#define sotp_hw_writel_or(__DEV__,__OFST__,__data) \ + sotp_hw_writel(__DEV__,__OFST__,(sotp_hw_readl(__DEV__,__OFST__)|__data)) + + +#define sotp_hw_writel_and(__DEV__,__OFST__,__data) \ + sotp_hw_writel(__DEV__,__OFST__,(sotp_hw_readl(__DEV__,__OFST__)&__data)) + +__weak u32 sotp_hw_readl(void* dev, u32 offs) +{ + otp_hw_cmn_t* hw_dev = (otp_hw_cmn_t*)dev; + return readl(hw_dev->mm+offs); +} + +__weak void sotp_hw_writel(void* dev, u32 offs, u32 data) +{ + otp_hw_cmn_t* hw_dev = (otp_hw_cmn_t*)dev; + writel(data, hw_dev->mm + offs); +} + +/*************************************************************************** +* Prototypes / Globals +***************************************************************************/ + +/*************************************************************************** +* SOTP functions +***************************************************************************/ + +/*************************************************************************** +// Function Name: getCrc32 +// Description : caculate the CRC 32 of the given data. +// Parameters : pdata - array of data. +// size - number of input data bytes. +// crc - either 0 or previous return value. +// Returns : crc. +****************************************************************************/ +static u32 getCrc32(u8 *pdata, u32 size, u32 crc) +{ + if (crc == 0) { + crc = 0xffffffff; + } + /* + * no complement crc32 is used for an SOTP controller + * + * */ + return crc32_no_comp(crc, pdata, size); +} + +/* ********************************************************************* + * static SotpRowStatus sotpPollForFDone(void) + * + * Input parameters: + * none + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM timeout + * from the SOTP block + * + ********************************************************************* */ +static SotpRowStatus sotpPollForFDone(otp_hw_cmn_t *dev) +{ + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + + u32 reg_rd_data; + u32 cntr = 0; + + reg_rd_data = sotp_hw_readl(dev,SOTP_SOTP_OUT_0_OFFSET); + while (( ! (reg_rd_data & SOTP_SOTP_OUT_0_SOTP_OTP_READY)) && (cntr < SOTP_MAX_CNTR)) + { + cntr++; + mdelay(1); + reg_rd_data = sotp_hw_readl(dev,SOTP_SOTP_OUT_0_OFFSET); + } + + if (cntr == SOTP_MAX_CNTR) + { + rval = SOTP_E_ROW_TIMEOUT; + SOTP_ERR_PRINT("\nTimeout waiting for FDONE. \n"); + } + + return rval; +} + +/* ********************************************************************* + * static SotpRowStatus sotpSetStartAndPollForCmdDone(void) + * + * Input parameters: + * none + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM timeout + * from the SOTP block + * + ********************************************************************* */ +static SotpRowStatus sotpSetStartAndPollForCmdDone(otp_hw_cmn_t *dev) +{ + + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + + u32 reg_rd_data; + u32 cntr = 0; + /* Set the start bit */ + sotp_hw_writel_or(dev, SOTP_OTP_CTRL_0_OFFSET, SOTP_OTP_CTRL_0_START); + + mdelay(1); + + /* Wait for the FSM to say it is done */ + reg_rd_data = sotp_hw_readl(dev, SOTP_OTP_STATUS_1_OFFSET); + while (( ! (reg_rd_data & SOTP_OTP_STATUS_1_CMD_DONE)) && (cntr < SOTP_MAX_CNTR)) { + cntr++; + mdelay(1); + reg_rd_data = sotp_hw_readl(dev, SOTP_OTP_STATUS_1_OFFSET); + } + if (cntr != SOTP_MAX_CNTR) + { + /* Clear the start bit */ + sotp_hw_writel_and(dev, SOTP_OTP_CTRL_0_OFFSET, (~SOTP_OTP_CTRL_0_START)); + } + else + { + rval = SOTP_E_ROW_TIMEOUT; + SOTP_ERR_PRINT("\nTimeout waiting for CMD_DONE. 0x%x timeout after %d ms\n",reg_rd_data, cntr); + } + + return rval; +} + +/* ********************************************************************* + * static SotpRowStatus sotpPrepForFusing(void) + * + * Input parameters: + * none + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM timeout + * from the SOTP block + * + ********************************************************************* */ +static SotpRowStatus sotpPrepForFusing(otp_hw_cmn_t *dev) +{ + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + int i; + u32 authVal[4] = {0xf,0x4,0x8,0xd}; + + /* Poll for FDONE bit before doing any access */ + if ((rval = sotpPollForFDone(dev)) == SOTP_E_ROW_TIMEOUT) { + _ETR(rval); + return rval; + } + /* turn on the cpu mode */ + sotp_hw_writel_or(dev, SOTP_OTP_PROG_CTRL_OFFSET , SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN); + + /* set up the OTP_CMD for OTP_ProgEnable */ + sotp_hw_writel(dev, SOTP_OTP_CTRL_0_OFFSET , SOTP_OTP_CTRL_0_OTP_CMD_OTP_PROG_ENABLE); + + /* Write F, 4, 8, D in sequence to BITSEL */ + for (i = 0; i < sizeof(authVal)/sizeof(u32); i++) { + sotp_hw_writel(dev, SOTP_OTP_WDATA_0_OFFSET , authVal[i]); + /* Start the state machine */ + rval = sotpSetStartAndPollForCmdDone(dev); + if (rval != SOTP_S_ROW_SUCCESS) { + _ETR(rval); + goto err; + } + /* Clear the CMD_DONE bit */ + sotp_hw_writel(dev, SOTP_OTP_STATUS_1_OFFSET , SOTP_OTP_STATUS_1_CMD_DONE); + + } + + /* By default, SOTP block state is "unprogrammed" which prevents writing to */ + /* rows 16-111. Set the state to ManuProg and SwNonAbDevice to allow programming */ + sotp_hw_writel_or(dev, SOTP_CHIP_CNTRL_OFFSET, (SOTP_CHIP_CTRL_SW_MANU_PROG | SOTP_CHIP_CTRL_SW_NON_AB_DEVICE | \ + SOTP_CHIP_CNTRL_SW_OVERRIDE_CHIP_STATES)); + + /* Poll for FDONE bit before doing any further access */ + rval = sotpPollForFDone(dev); +err: + /* return if prep is ok or not */ + return rval; +} + + + +/* ********************************************************************* + * static SotpRowStatus sotpFinishFusing(void) + * + * Input parameters: + * none + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM timeout + * from the SOTP block + * + ********************************************************************* */ +static SotpRowStatus sotpFinishFusing(otp_hw_cmn_t *dev) +{ + + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + + + /* set up the OTP_CMD for PROG */ +#ifndef OTP_DRY_RUN + sotp_hw_writel(dev, SOTP_OTP_CTRL_0_OFFSET , SOTP_OTP_CTRL_0_OTP_CMD_PROG); + /* Start the state machine */ + if ((rval = sotpSetStartAndPollForCmdDone(dev)) == SOTP_S_ROW_SUCCESS) + { + /* Clear the CMD_DONE bit */ + sotp_hw_writel(dev, SOTP_OTP_STATUS_1_OFFSET , SOTP_OTP_STATUS_1_CMD_DONE); + + /* turn off cpu mode */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN)); + } +#else + /* Clear the CMD_DONE bit */ + sotp_hw_writel(dev, SOTP_OTP_STATUS_1_OFFSET , SOTP_OTP_STATUS_1_CMD_DONE); + + /* turn off cpu mode */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN)); +#endif + return rval; +} + +/* ********************************************************************* + * static SotpRowStatus sotpReadNonEccRow(u32 row, u64 *pData) + * + * Input parameters: + * row - row in question + * pDst - pointer to where the data will be returned to + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM + * timeout from the SOTP block (pDst is invalid) + * + ********************************************************************* */ +static SotpRowStatus sotpReadNonEccRow(otp_hw_cmn_t *dev,u32 row, u64 *pDst) +{ + + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + + + /* Poll for FDONE bit before doing any access */ + if ((rval = sotpPollForFDone(dev)) == SOTP_E_ROW_TIMEOUT) + return rval; + + /* Clear ECC detect, ecc correct as well as command done bits */ + sotp_hw_writel(dev, SOTP_OTP_STATUS_1_OFFSET , (SOTP_OTP_STATUS_1_CMD_DONE | SOTP_OTP_STATUS_1_ECC_COR | SOTP_OTP_STATUS_1_ECC_DET)); + + /* zero out the regs_ecc_en bits, then turn on cpu mode, and set regs_ecc_en to disabled */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_REGS_ECC_EN_MASK)); + sotp_hw_writel_or(dev, SOTP_OTP_PROG_CTRL_OFFSET, ( SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN | SOTP_OTP_PROG_CTRL_OTP_DISABLE_ECC | \ + SOTP_OTP_PROG_CTRL_REGS_ECC_DIS )); + + /* Set OTP addr with the row to be read */ + sotp_hw_writel(dev, SOTP_OTP_ADDR_OFFSET , (row << SOTP_OTP_ADDR_OTP_ADDR_SHIFT)); + + /* set up the OTP_CMD for OTP_READ */ + sotp_hw_writel(dev, SOTP_OTP_CTRL_0_OFFSET , SOTP_OTP_CTRL_0_OTP_CMD_OTP_READ); + + /* Start the state machine */ + if ((rval = sotpSetStartAndPollForCmdDone(dev)) == SOTP_S_ROW_SUCCESS) + { + /* Data in row is valid. Pass it to return buffer */ + *pDst = (((u64)sotp_hw_readl(dev, SOTP_OTP_RDATA_1_OFFSET) << 32) | (sotp_hw_readl(dev,SOTP_OTP_RDATA_0_OFFSET))); + + /* Clear the CMD_DONE bit */ + sotp_hw_writel(dev, SOTP_OTP_STATUS_1_OFFSET , SOTP_OTP_STATUS_1_CMD_DONE); + + /* turn off cpu mode */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN)); + } + + return rval; +} + +/* ********************************************************************* + * static SotpRowStatus sotpFuseNonEccRow(u32 row, u64 src) + * + * Input parameters: + * row - row in question + * src - data bits to fuse (only the bottom 41 bits are relevant) + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM + * timeout from the SOTP block + * + ********************************************************************* */ +static SotpRowStatus sotpFuseNonEccRow(otp_hw_cmn_t *dev, u32 row, u64 src) +{ + + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + + + /* Prepare the SOTP FSM for fusing a row of data */ + if ((rval = sotpPrepForFusing(dev)) != SOTP_S_ROW_SUCCESS) + return rval; + + /* Disable ECC to be generated and fused by hardware */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_OTP_ECC_WREN)); + + /* Set OTP addr with the row to be fused */ + sotp_hw_writel(dev, SOTP_OTP_ADDR_OFFSET , (row << SOTP_OTP_ADDR_OTP_ADDR_SHIFT)); +#ifndef OTP_DRY_RUN + /* Set up the registers with the data to be written */ + sotp_hw_writel(dev, SOTP_OTP_WDATA_0_OFFSET , (u32)(src & 0xffffffff)); /* lower 32 bit data word */ + sotp_hw_writel(dev, SOTP_OTP_WDATA_1_OFFSET , (u32)(src >> 32)); /* upper 32 bit data word */ +#endif + /* ... and fuse */ + rval = sotpFinishFusing(dev); + + return rval; +} + +/* ********************************************************************* + * static SotpRowStatus sotpIsRegionFuseLocked(u32 region) + * + * Input parameters: + * row - rows 28 thru 111 reside in different regions that may be fuse-locked + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_FUSE_LOCK - The row in question is within a region that + * is permanently fuse-locked + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM + * timeout from the SOTP block + * + ********************************************************************* */ +static SotpRowStatus sotpIsRegionFuseLocked(otp_hw_cmn_t *dev,u32 region) +{ + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + u64 rowData; + + /* The locking of all the regions require two rows of OTP. Each row has 41 */ + /* bits. There are no ecc nor fail bits in these two rows. Hence, regions */ + /* 0 thru 19 lock bits are in SOTP row 8. Region 20 has a lock bit in each */ + /* row. Regions 21 thru 27 are all in row 9. Retrieve row 8 if required. If*/ + /* If either one of the two approp. bits are set, the region is fuse locked*/ + if (region < SOTP_NUM_REG_IN_FUSELOCK_ROW) + { + if ((rval = sotpReadNonEccRow(dev, SOTP_FIRST_FUSELOCK_ROW, &rowData)) != SOTP_S_ROW_SUCCESS) + return rval; + else + { + if (rowData & ( (u64)0x3 << (region * 2) )) + return SOTP_E_ROW_FUSE_LOCK; + } + } + + if (region >= (SOTP_NUM_REG_IN_FUSELOCK_ROW - 1)) + { + if ((rval = sotpReadNonEccRow(dev, (SOTP_FIRST_FUSELOCK_ROW + 1), &rowData)) != SOTP_S_ROW_SUCCESS) + return rval; + else + { + if ((region == (SOTP_NUM_REG_IN_FUSELOCK_ROW - 1)) && (rowData & 0x1)) + return SOTP_E_ROW_FUSE_LOCK; + else + { + if (rowData & ( (u64)0x3 << (((region-SOTP_NUM_REG_IN_FUSELOCK_ROW)*2)+1) )) + return SOTP_E_ROW_FUSE_LOCK; + } + } + } + + return rval; +} + + + +/* ********************************************************************* + * static SotpRowStatus sotpFuseLockRegion(u32 region) + * + * Description: PERMANENTLY WRITE LOCK regions + * + * Input parameters: + * row - rows 28 thru 111 reside in different regions that may be fuse-locked + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM + * timeout from the SOTP block + * + ********************************************************************* */ +static SotpRowStatus sotpFuseLockRegion(otp_hw_cmn_t *dev,u32 region) +{ + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + u64 bitsToFuse; + + /* The locking of all the regions require two rows of OTP. Each row has 41 */ + /* bits. There are no ecc nor fail bits in these two rows. Hence, regions */ + /* 0 thru 19 lock bits are in SOTP row 8. Region 20 has a lock bit in each */ + /* row. Regions 21 thru 27 are all in row 9. Retrieve row 8 if required. If*/ + /* If either one of the two approp. bits are set, the region is fuse locked*/ + if (region < SOTP_NUM_REG_IN_FUSELOCK_ROW) + { + // Figure out the bits to fuse (truncate to 41 bits) + bitsToFuse = ((u64)0x3 << (region * 2)) & 0x1ffffffffff; + + if ((rval = sotpFuseNonEccRow(dev, SOTP_FIRST_FUSELOCK_ROW, bitsToFuse)) != SOTP_S_ROW_SUCCESS) + return rval; + } + + if (region >= (SOTP_NUM_REG_IN_FUSELOCK_ROW - 1)) + { + // Figure out the bits to fuse (truncate to 41 bits) + if (region == (SOTP_NUM_REG_IN_FUSELOCK_ROW - 1)) + bitsToFuse = 0x1; + else + bitsToFuse = (u64)0x3 << (((region-SOTP_NUM_REG_IN_FUSELOCK_ROW)*2)+1); + + rval = sotpFuseNonEccRow(dev, (SOTP_FIRST_FUSELOCK_ROW + 1), bitsToFuse); + } + + return rval; +} + +/* ********************************************************************* + * static SotpRowStatus sotpWriteEccRow(u32 row, u32 src) + * + * Input parameters: + * row - SOTP has 112 rows total. This func is allowed to write to + * rows 28 thru 111 (first row is row 0) + * src - Each row has 41 bits. Rows 16 thru 111 have 2 fail bits, + * 7 ecc bits, and 32 data bits. This input parameter is + * the 32 data bits to be fused. + * raw_write - If set then ECC checks are skipped + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_FUSE_LOCK- The row is permanently locked from being changed + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM timeout + * from the SOTP block + * + ********************************************************************* */ +static SotpRowStatus sotpWriteEccRow(otp_hw_cmn_t *dev, u32 row, u32 src, u32 raw_write) +{ + + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + + SOTP_DBG("%s: row:%d data:0x%08x\n", __FUNCTION__, row, src); + + if( row < SOTP_FIRST_ECC_CONFIG_ROW || row > SOTP_NUM_ROWS-1 ) + { + SOTP_ERR_PRINT("%s: ECC Row %d out of bound! Min:%d Max:%d\n", __FUNCTION__, row, SOTP_FIRST_ECC_CONFIG_ROW, SOTP_NUM_ROWS-1); + return SOTP_E_ROW_ERROR; + } + + /* Check to see that the row in question is not fuse locked */ + if ((rval = sotpIsRegionFuseLocked(dev, row/SOTP_ROWS_IN_REGION)) == SOTP_E_ROW_FUSE_LOCK) + { + SOTP_ERR_PRINT("%s: Row %d is fuse locked. Cannot write row data.\n", __FUNCTION__, row); + return rval; + } + + /* Prepare the SOTP FSM for fusing a row of data */ + if ((rval = sotpPrepForFusing(dev)) != SOTP_S_ROW_SUCCESS) { + _ETR(rval); + return rval; + } + if( raw_write ) + { + /* Disable ECC computation and fusing by hardware */ + sotp_hw_writel_or(dev, SOTP_OTP_PROG_CTRL_OFFSET , SOTP_OTP_PROG_CTRL_OTP_DISABLE_ECC); + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_OTP_ECC_WREN)); + } + else + { + /* Enable ECC to be generated and fused by hardware */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_OTP_DISABLE_ECC)); + sotp_hw_writel_or(dev, SOTP_OTP_PROG_CTRL_OFFSET , SOTP_OTP_PROG_CTRL_OTP_ECC_WREN); + } +#ifndef OTP_DRY_RUN + /* Set OTP addr with the row to be fused */ + sotp_hw_writel(dev, SOTP_OTP_ADDR_OFFSET , (row << SOTP_OTP_ADDR_OTP_ADDR_SHIFT)); + + /* Set up the registers with the data to be written */ + sotp_hw_writel(dev, SOTP_OTP_WDATA_0_OFFSET , src); /* 32 bit data word */ + sotp_hw_writel(dev, SOTP_OTP_WDATA_1_OFFSET , 0); /* ensure the two fail bits are not fused */ +#endif + /* ... and fuse */ + rval = sotpFinishFusing(dev); + + return rval; +} + +/* ********************************************************************* + * static SotpRowStatus sotpFuseSecKeyRowFailBits(u32 row) + * + * Input parameters: + * row - This func is allowed to fuse fail bits in rows 28 thru 111 + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM + * timeout from the SOTP block + * SOTP_E_ROW_ERROR - The function experienced unexpected register + * ret value from SOTP block + * + ********************************************************************* */ +static SotpRowStatus sotpFuseSecKeyRowFailBits(otp_hw_cmn_t *dev, u32 row) +{ + + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + + + /* Prepare the SOTP FSM for fusing a row of data */ + if ((rval = sotpPrepForFusing(dev)) != SOTP_S_ROW_SUCCESS) + return rval; + + /* Enable ECC to be generated and fused by hardware */ + sotp_hw_writel_or(dev, SOTP_OTP_PROG_CTRL_OFFSET , SOTP_OTP_PROG_CTRL_OTP_ECC_WREN); +#ifndef OTP_DRY_RUN + /* Set OTP addr with the row to be fused */ + sotp_hw_writel(dev, SOTP_OTP_ADDR_OFFSET , (row << SOTP_OTP_ADDR_OTP_ADDR_SHIFT)); + + /* Set up the registers with the data to be written */ + sotp_hw_writel(dev, SOTP_OTP_WDATA_0_OFFSET , 0); /* 32 bit data word ... no change */ + sotp_hw_writel(dev, SOTP_OTP_WDATA_1_OFFSET , SOTP_OTP_WDATA_1_FAIL_MASK); /* ensure the two fail bits are fused */ +#endif + /* ... and fuse */ + rval = sotpFinishFusing(dev); + + return rval; +} + +/* ********************************************************************* + * static SotpRowStatus sotpRegionReadLockStatus(u32 region) + * + * Input parameters: + * row - regions 0 - 28 + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_READ_LOCK - The row in question is within a region that + * is read-locked until the next POR + * + ********************************************************************* */ +static SotpRowStatus sotpRegionReadLockStatus(otp_hw_cmn_t *dev, u32 region) +{ + + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + + /* Check to see if that region is locked */ + if ((sotp_hw_readl(dev, SOTP_OTP_RD_LOCK_OFFSET) & ( 0x1 << region )) ) + rval = SOTP_E_ROW_READ_LOCK; + + return rval; +} + +/* ********************************************************************* + * static SotpRowStatus sotpReadEccRow(u32 row, u32 *pDst) + * + * Input parameters: + * row - This func is allowed to read from rows 28 thru 111 + * pDst - A pointer to the location that the retrieved 32 data + * bits will be written to. + * raw_read - If set then ECC checks are skipped + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_S_ROW_ECC_COR - The function ecc corrected 1 bad bit when + * returning row data (pDst points to valid data) + * SOTP_E_ROW_ECC_DET - The function detected 2 or more uncorrectable + * bits within the row (pDst is invalid) + * SOTP_E_ROW_FAIL_SET - The function detected that 1 or both of + * the fail bits are set (pDst is invalid) + * SOTP_E_ROW_READ_LOCK - The row in question is within a region that + * is read-locked until the next POR + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM + * timeout from the SOTP block (pDst is invalid) + * SOTP_E_ROW_ERROR - The function experienced unexpected register + * ret value from SOTP block (pDst is invalid) + * + ********************************************************************* */ +static SotpRowStatus sotpReadEccRow(otp_hw_cmn_t *dev, u32 row, u32 *pDst, u32 raw_read) +{ + + SotpRowStatus rval; + + + SOTP_DBG("%s: row:%d bufp:%px\n", __FUNCTION__, row, pDst); + + if( row < SOTP_FIRST_ECC_CONFIG_ROW || row > SOTP_NUM_ROWS-1 ) + { + SOTP_DBG("%s: ECC Row %d out of bound! Min:%d Max:%d\n", __FUNCTION__, row, SOTP_FIRST_ECC_CONFIG_ROW, SOTP_NUM_ROWS-1); + return SOTP_E_ROW_ERROR; + } + + /* Check to see that the row in question is not readlocked until the next POR */ + if ((rval = sotpRegionReadLockStatus(dev, row/SOTP_ROWS_IN_REGION)) == SOTP_E_ROW_READ_LOCK) + { + SOTP_DBG("%s: Row %d is locked from reading. Returned key data is invalid\n", __FUNCTION__, row); + return SOTP_E_ROW_READ_LOCK; + } + + /* Poll for FDONE bit before doing any access */ + if ((rval = sotpPollForFDone(dev)) == SOTP_E_ROW_TIMEOUT) + { + SOTP_ERR_PRINT("%s: Row %d read timed out. \n", __FUNCTION__, row); + return SOTP_E_ROW_TIMEOUT; + } + + /* Clear ECC detect, ecc correct as well as command done bits */ + sotp_hw_writel(dev, SOTP_OTP_STATUS_1_OFFSET , + (SOTP_OTP_STATUS_1_CMD_DONE | SOTP_OTP_STATUS_1_ECC_COR | SOTP_OTP_STATUS_1_ECC_DET)); + + /* enable ecc checks (low), zero out the regs_ecc_en bits ... then turn on cpu mode, and set regs_ecc_en to enabled */ + /* expect Bug? When ecc=0 then programs 0x0, Reg says that it should be set to 4'b0101 : ECC check DISABLED */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~( SOTP_OTP_PROG_CTRL_OTP_DISABLE_ECC | SOTP_OTP_PROG_CTRL_REGS_ECC_EN_MASK ))); + + /* Disable ECC checks for raw reads */ + if( raw_read ) + sotp_hw_writel_or(dev, SOTP_OTP_PROG_CTRL_OFFSET , ( SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN | SOTP_OTP_PROG_CTRL_OTP_DISABLE_ECC | SOTP_OTP_PROG_CTRL_REGS_ECC_DIS )); + else + sotp_hw_writel_or(dev, SOTP_OTP_PROG_CTRL_OFFSET , ( SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN | SOTP_OTP_PROG_CTRL_REGS_ECC_EN )); + + /* Set OTP addr with the row to be read */ + sotp_hw_writel(dev, SOTP_OTP_ADDR_OFFSET , (row << SOTP_OTP_ADDR_OTP_ADDR_SHIFT)); + + /* set up the OTP_CMD for OTP_READ */ + sotp_hw_writel(dev, SOTP_OTP_CTRL_0_OFFSET , SOTP_OTP_CTRL_0_OTP_CMD_OTP_READ); + + /* Start the state machine */ + if ((rval = sotpSetStartAndPollForCmdDone(dev)) == SOTP_S_ROW_SUCCESS) + { + if( !raw_read ) + { + /* If the row is marked as failed, abort */ + if (sotp_hw_readl(dev, SOTP_OTP_RDATA_1_OFFSET) & SOTP_OTP_RDATA_1_FAIL_MASK ) + { + SOTP_ERR_PRINT("Row %d is marked as failed . \n", row); + return ( SOTP_E_ROW_FAIL_SET ); + } + + /* See if the data is bad and ecc correction was not possible */ + if (sotp_hw_readl(dev, SOTP_OTP_STATUS_1_OFFSET) & SOTP_OTP_STATUS_1_ECC_DET ) + { + SOTP_ERR_PRINT("Row data failed ecc with 2 or more bits . \n"); + return ( SOTP_E_ROW_ECC_DET ); + } + + /* See if the data is good but an ecc correction took place */ + if (sotp_hw_readl(dev, SOTP_OTP_STATUS_1_OFFSET) & SOTP_OTP_STATUS_1_ECC_COR ) + { + SOTP_ERR_PRINT("Row data valid, but ecc corrected 1 bit. \n"); + rval = SOTP_S_ROW_ECC_COR; + } + } + + /* Data in row is valid. Pass it to return buffer */ + *pDst = sotp_hw_readl(dev,SOTP_OTP_RDATA_0_OFFSET); + + /* Clear the CMD_DONE bit */ + sotp_hw_writel(dev, SOTP_OTP_STATUS_1_OFFSET , SOTP_OTP_STATUS_1_CMD_DONE); + + /* turn off cpu mode */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN)); + } + + return rval; +} + +/* ********************************************************************* + * extern SotpKeyStatus sotpReadKeyslotData(u32 section, u32 *pDst, u32 len) + * + * Description - Used by the bootrom or bootloader to read a key from SOTP + * + * Input parameters: + * section - Section that the key info should be read from + * (7 =< section =< 13) + * pDst - pointer to the buffer containing the key (chopped + * up into 32 bit words) + * len - The number of 32 bit words in the key to read in (len =< 8) + * + * Return value: + * SOTP_S_KEY_SUCCESS - The function has completed successfully, and + * pDst holds valid data + * SOTP_S_KEY_EMPTY - The function has completed successfully, but + * no credential is currently stored in this section + * SOTP_E_KEY_CRC_MIS - The function detected a CRC mismatch during the key read + * SOTP_E_KEY_UNDERRUN- The function ran out of rows within a section + * before reading the entire key and crc + * SOTP_E_KEY_ERROR - The function experienced an error in one of the + * rows of the section + * + ********************************************************************* */ +static SotpKeyStatus sotpReadKeyslotData(otp_hw_cmn_t *dev, u32 section, u32 *pDst, u32 len) +{ + u32 startRow, row, printRow, readCrc; + u32 calcCrc = 0; + + u32 i = 0; + SotpKeyStatus rval = SOTP_E_KEY_BADPARAM; + SotpRowStatus rowRval = SOTP_S_ROW_SUCCESS; + + SOTP_DBG("%s: section:%d bufp:%px len:%d\n", __FUNCTION__, section, pDst, len); + + /* perform checks of input params */ + if ((pDst == NULL) || (len == 0) || (len > SOTP_MAX_KEYLEN)) + return rval; + + if ((section < SOTP_MIN_KEYSLOT) || (section > SOTP_MAX_KEYSLOT)) + { + SOTP_ERR_PRINT("%s: keyslot section:%d out of bound! Min:%d Max:%d\n", __FUNCTION__, section, SOTP_MIN_KEYSLOT, SOTP_MAX_KEYSLOT); + return rval; + } + + /* Determine the starting row */ + startRow = ((section - SOTP_MIN_KEYSLOT) * SOTP_ROWS_IN_KEYSLOT) + SOTP_FIRST_KEYSLOT_ROW; + + /* Start reading the key and CRC */ + for ( row = startRow ; row < (startRow + SOTP_ROWS_IN_KEYSLOT); row++) + { + /* Determine the current row in a printable format for if something fails */ + printRow = row - startRow; + if (printRow >= 0xa) + printRow += (0x100 - 0xa); + + if (i < len) { + rowRval = sotpReadEccRow(dev, row, &pDst[i], 0); /* currently reading the key */ + _TR(pDst[i]); +} + + if (i == len) + rowRval = sotpReadEccRow(dev, row, &readCrc, 0); /* currently reading the crc */ + + switch(rowRval) + { + /* If success, just keep going */ + case SOTP_S_ROW_SUCCESS: + case SOTP_S_ROW_ECC_COR: + i++; + if (i > len) + { + /* done reading sotp. Perform crc validation */ + calcCrc = getCrc32((u8 *)pDst, (len*4), calcCrc); +_TR(calcCrc); +_TR(readCrc); + if (readCrc == calcCrc) + return SOTP_S_KEY_SUCCESS; /* Done. pDst buffer holds the key and is good */ + else + { + /* Either the section is empty, or a valid crc mismatch condition exists */ + for (i = 0; i < len; i++) + { + if (pDst[i] != 0) + { + SOTP_ERR_PRINT("\nCalculated crc did not match crc stored in row %d. Returned key data is invalid\n", row); + return SOTP_E_KEY_CRC_MIS; + } + } + return SOTP_S_KEY_EMPTY; + } + } + break; + + /* If fail bit(s) set, row has been marked bad during fusing ... ignore this row */ + case SOTP_E_ROW_FAIL_SET: + break; + + /* Read had 2 or more uncorrectable bits, AND the fail bits were NOT set */ + /* Row has failed over time in the field */ + case SOTP_E_ROW_ECC_DET: + SOTP_ERR_PRINT("\n2 or more Uncorrectable bits within row %d. Returned key data is invalid \n", row); + return SOTP_E_KEY_ERROR; + break; + + case SOTP_E_ROW_READ_LOCK: + SOTP_DBG("\nRow %d is locked from reading. Returned key data is invalid\n", row); + return SOTP_E_KEY_ERROR; + break; + + case SOTP_E_ROW_TIMEOUT: + SOTP_ERR_PRINT("\nUnexpected SOTP block timeout while reading row %d. Returned key data is invalid\n", row); + return SOTP_E_KEY_ERROR; + break; + + case SOTP_E_ROW_ERROR: + default: + SOTP_ERR_PRINT("\nUnknown condition in reading row %d. Returned key data is invalid\n", row); + return SOTP_E_KEY_ERROR; + break; + } + } + + /* If we make it here, we ran out of rows in the key slot ... returned data is not valid */ + SOTP_ERR_PRINT("\nRan out of rows in section %d before reading entire key and crc. Returned key data is invalid\n", section); + return SOTP_E_KEY_UNDERRUN; +} + +/* ********************************************************************* + * static SotpKeyStatus sotpLockSecKeyFuse(u32 section) + * + * Input parameters: + * section - There are 7 locations called sections that can hold + * up to 256 bits of key information. (7 =< section =< 13). + * This is the location that is to be PERMANENTLY locked down from + * future fusing. This is a permanent lockout even after POR. + * + * Return value: + * SOTP_S_KEY_SUCCESS - The function has completed successfully + * SOTP_E_KEY_BADPARAM - The function recieved a bad input parameter + * SOTP_E_KEY_ERROR - The function experienced unexpected register + * ret value from SOTP block + * + ********************************************************************* */ +static SotpKeyStatus sotpLockSecKeyFuse(otp_hw_cmn_t *dev, u32 section) +{ + SotpKeyStatus rval = SOTP_S_KEY_SUCCESS; + u32 region, startRegion; + + /* perform checks of input params */ + if ((section < SOTP_MIN_KEYSLOT) || (section > SOTP_MAX_KEYSLOT)) + return SOTP_E_KEY_BADPARAM; + + /* Figure out the start region, and then for each of the three regions */ + /* in the section, do the for loop */ + startRegion = SOTP_FIRST_KEYSLOT_REGION + ((section - SOTP_MIN_KEYSLOT) * SOTP_REGIONS_IN_KEYSLOT); + for (region = startRegion; region < (startRegion+3); region++) + { + if (sotpFuseLockRegion(dev, region) != SOTP_S_ROW_SUCCESS) + return SOTP_E_KEY_ERROR; + } + + return rval; +} + +/* ********************************************************************* + * static SotpRowStatus sotpLockRegion(u32 region) + * + * Description: TEMPORARILY READ/WRITE LOCK regions. Lock gets reset on POR + * + * Input parameters: + * row - rows 28 thru 111 reside in different regions that may be fuse-locked + * + * Return value: + * SOTP_S_ROW_SUCCESS - The function has completed successfully + * SOTP_E_ROW_TIMEOUT - The function experienced unexpected FSM + * timeout from the SOTP block + * + ********************************************************************* */ +static SotpKeyStatus sotpLockRegion(otp_hw_cmn_t *dev, u32 region_mask) +{ + if( region_mask ) + { + /* enable ecc checks (low), zero out the regs_ecc_en bits ... then turn on cpu mode, and set regs_ecc_en to enabled */ + /* expect Bug? When ecc=0 then programs 0x0, Reg says that it should be set to 4'b0101 : ECC check DISABLED */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_REGS_ECC_EN_MASK)); + sotp_hw_writel_or(dev, SOTP_OTP_PROG_CTRL_OFFSET , ( SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN | SOTP_OTP_PROG_CTRL_REGS_ECC_DIS )); + + /* wait a little */ + mdelay(1); + + /* The read/write lock register is a write-once register on a bit-for-bit bassis */ + /* so you don't have to worry about preserving bits that are already set to 1. */ + sotp_hw_writel_or(dev, SOTP_OTP_RD_LOCK_OFFSET , region_mask); + sotp_hw_writel_or(dev, SOTP_OTP_WR_LOCK_OFFSET , region_mask); + + /* wait a little */ + mdelay(1); + + /* turn off cpu mode */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN)); + } + + return SOTP_S_KEY_SUCCESS; +} + +static SotpKeyStatus sotpReadLockRegion(otp_hw_cmn_t *dev, u32 region) +{ + return sotpLockRegion(dev, (1 << region)); +} + + +/* ********************************************************************* + * extern SotpKeyStatus readLockKeyslot(u32 section) + * + * Description - After the bootrom or bootloader has read a key from + * SOTP, this function can be called so that no + * other sw can read this key at a later time. + * + * Input parameters: + * section - There are 7 locations called sections that can hold + * up to 256 bits of key information. (7 =< section =< 13) + * This is the location that is to be locked down from + * reading until the next power-on-reset. + * + * Return value: + * SOTP_S_KEY_SUCCESS - The function has completed successfully + * SOTP_E_KEY_BADPARAM - The function recieved a bad input parameter + * + ********************************************************************* */ +static SotpKeyStatus readLockKeyslot(otp_hw_cmn_t *dev, u32 section) +{ + u32 startRegion; + + /* perform checks of input params */ + if ((section < SOTP_MIN_KEYSLOT) || (section > SOTP_MAX_KEYSLOT)) + return SOTP_E_KEY_BADPARAM; + + /* Determine the starting region to lock */ + startRegion = SOTP_FIRST_KEYSLOT_REGION + + ((section - SOTP_MIN_KEYSLOT) * SOTP_REGIONS_IN_KEYSLOT); + + return (sotpLockRegion(dev, (SOTP_REGIONS_MASK_IN_KEYSLOT << startRegion))); +} + +static SotpKeyStatus sotpReadLockNonEmptyRegions(otp_hw_cmn_t *dev) +{ + int i,j; + u32 value; + u32 startRegion = SOTP_FIRST_FUSELOCK_ROW/SOTP_ROWS_IN_REGION + SOTP_REGIONS_IN_LOCK; + u32 regionMask = 0; + SotpRowStatus rval = SOTP_S_ROW_SUCCESS; + + /* readlock all regions before start region */ + if( startRegion ) + regionMask = ((1< SOTP_MAX_KEYSLOT)) + return SOTP_E_KEY_BADPARAM; + + /* enable ecc checks (low), zero out the regs_ecc_en bits ... then turn on cpu mode, and set regs_ecc_en to enabled */ + /* expect Bug? When ecc=0 then programs 0x0, Reg says that it should be set to 4'b0101 : ECC check DISABLED */ + sotp_hw_writel_and(dev, SOTP_OTP_PROG_CTRL_OFFSET , (~SOTP_OTP_PROG_CTRL_REGS_ECC_EN_MASK)); + sotp_hw_writel_or(dev, SOTP_OTP_PROG_CTRL_OFFSET , ( SOTP_OTP_PROG_CTRL_OTP_CPU_MODE_EN | SOTP_OTP_PROG_CTRL_REGS_ECC_DIS )); + + /* Determine the starting region to lock */ + startRegion = SOTP_FIRST_KEYSLOT_REGION + ((section - SOTP_MIN_KEYSLOT) * SOTP_REGIONS_IN_KEYSLOT); + + for( i=0; i SOTP_MAX_KEYLEN)) + return rval; + + if ((section < SOTP_MIN_KEYSLOT) || (section > SOTP_MAX_KEYSLOT)) + { + SOTP_ERR_PRINT("%s: keyslot section:%d out of bound! Min:%d Max:%d\n", __FUNCTION__, section, SOTP_MIN_KEYSLOT, SOTP_MAX_KEYSLOT); + return rval; + } + + /* Calculate the crc that is to be stored into the key slot */ + calcCrc = getCrc32((u8 *)pSrc, (len*4), 0 ); + + /* Determine the starting row to fuse */ + startRow = ((section - SOTP_MIN_KEYSLOT) * SOTP_ROWS_IN_KEYSLOT) + SOTP_FIRST_KEYSLOT_ROW; + + /* Determine starting region */ + startRegion = startRow / SOTP_ROWS_IN_REGION; + + /* Make sure that the regions we are writing to are not read-locked or fuse-locked */ + for( i = startRegion; i < startRegion + SOTP_REGIONS_IN_KEYSLOT; i++ ) + { + fuse_lock = sotpIsRegionFuseLocked(dev, i); + read_lock = sotpRegionReadLockStatus(dev, i); + if( fuse_lock || read_lock ) + { + SOTP_ERR_PRINT("%s: section:%d region:%d %s_locked! Abort keyslot programming!\n", __FUNCTION__, section, i, (fuse_lock?"fuse":"read")); + return rval; + } + } + + /* Make sure that entire keyslot is empty before attempting to program */ + for ( row = startRow ; row < (startRow + SOTP_ROWS_IN_KEYSLOT); row++) { + /* TODO: Add counter to allow certain amount of failiures ( 3 redundant ) */ + rowRval = sotpReadEccRow(dev, row, &rowData, 0); + if( rowRval != SOTP_S_ROW_SUCCESS ) + { + SOTP_ERR_PRINT("%s: Cant read keyslot section:%d row:%d! Abort keyslot programming!\n", __FUNCTION__, section, row); + return rval; + } + + if(rowData) + { + SOTP_ERR_PRINT("%s: keyslot section:%d row:%d not empty! Abort keyslot programming!\n", __FUNCTION__, section, row); + return rval; + } + } + + /* Start fusing the key and CRC */ + for ( row = startRow, i = 0 ; row < (startRow + SOTP_ROWS_IN_KEYSLOT); row++) + { + _TR(pSrc[i]); + if (i < len) + rowRval = sotpWriteEccRow(dev, row, pSrc[i], 0); /* currently writing the key */ + + if (i == len) { + _TR(calcCrc); + rowRval = sotpWriteEccRow(dev, row, calcCrc, 0); /* write the crc */ + } + _TR(pSrc[i]); + /* See if it was successful */ + switch(rowRval) + { + + case SOTP_S_ROW_SUCCESS: + { + /* Check the integrity of the row just fused */ + rowRval = sotpReadEccRow(dev, row, &rowData, 0); + + switch(rowRval) + { + case SOTP_S_ROW_SUCCESS: + case SOTP_S_ROW_ECC_COR: + { + if (i < len) + { + if (pSrc[i] == rowData) + i++; + else + { + SOTP_ERR_PRINT("\nWritten and read data didn't match within row %d. Section %d is unusable\n", row, section); + return SOTP_E_KEY_ERROR; + } + } + else + { + if (calcCrc == rowData) { +#ifdef DEBUG_SOTP + return SOTP_S_ROW_SUCCESS; +#else + return(sotpLockSecKeyFuse(dev, section)); /* key and crc fused. Lock section from further writes */ +#endif + } + else + { + SOTP_ERR_PRINT("\nCalculated and read crc didn't match within row %d. Section %d is unusable\n", row, section); + return SOTP_E_KEY_ERROR; + } + } + + break; + } + + case SOTP_E_ROW_ECC_DET: + { + /* row has 2 or more uncorrectable bits. Mark the row as failed */ + if ((rowRval = sotpFuseSecKeyRowFailBits(dev, row)) != SOTP_S_ROW_SUCCESS) + { + SOTP_ERR_PRINT("\nFailed to fuse fail bits within row %d. Section %d is unusable\n", row, section); + return SOTP_E_KEY_ERROR; + } + break; + } + + case SOTP_E_ROW_FAIL_SET: + { + SOTP_ERR_PRINT("\nFail bits have previously been fused within row %d. Section %d is unusable\n", row, section); + return SOTP_E_KEY_ERROR; + break; + } + + case SOTP_E_ROW_READ_LOCK: + { + SOTP_DBG("\nRow %d is locked from reading. Cannot verify. Section %d may be unusable\n", row, section); + return SOTP_E_KEY_ERROR; + break; + } + + default: + { + SOTP_ERR_PRINT("\nUnknown condition in reading row %d. Section %d may be unusable\n", row, section); + return SOTP_E_KEY_ERROR; + break; + } + } + + break; + } + + case SOTP_E_ROW_FUSE_LOCK: + { + SOTP_ERR_PRINT("\nRow %d is locked from fusing. Section %d may be unusable\n", row, section); + return SOTP_E_KEY_ERROR; + break; + } + + case SOTP_E_ROW_TIMEOUT: + { + SOTP_ERR_PRINT("\nUnexpected SOTP block timeout while fusing row %d. Section %d may be unusable\n", row, section); + return SOTP_E_KEY_ERROR; + break; + } + + case SOTP_E_ROW_ERROR: + default: + { + SOTP_ERR_PRINT("\nUnknown condition while fusing row %d. Section %d may be unusable\n", row, section); + return SOTP_E_KEY_ERROR; + break; + } + + } + } + + SOTP_ERR_PRINT("\nRan out of rows before fusing entire key and crc. Section %d is unusable \n", section); + return SOTP_E_KEY_OVERRUN; +} + +__weak otp_hw_cmn_err_t sotp_hw_read(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_row_conf_t *conf, + u32* data, + u32 size) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + int res = 0; + + if (conf && conf->addr_type == OTP_HW_CMN_ROW_ADDR_ROW) { + res = sotpReadEccRow(dev, addr, (u32*)data, + conf->op_type == OTP_HW_CMN_CTL_OTPCMD_ECC? 0:1); + if (res != SOTP_S_KEY_SUCCESS && res != SOTP_S_ROW_ECC_COR ) { + goto err; + } + } else { + u32 sect = 0; + if (row2sect(addr, §)) { + rc = OTP_HW_CMN_ERR_UNSP; + goto err; + } + res = sotpReadKeyslotData(dev, sect, (u32*)data, size/sizeof(u32)); + if (res != SOTP_S_KEY_SUCCESS && res != SOTP_S_ROW_ECC_COR ) { + goto err; + } + } + rc = OTP_HW_CMN_OK; +err: + return rc; +} + +static otp_hw_cmn_err_t dev_status(otp_hw_cmn_t *dev, + u32 sect, + otp_hw_cmn_status_t status, + u32* res) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + u32 perm_mask = sotp_hw_readl(dev, SOTP_PERM_OFFSET); + if ( status & OTP_HW_CMN_STATUS_ROW_DATA_VALID ) { + u32 tmp[8]; + if (sotpReadKeyslotData(dev, sect, tmp, 8) != SOTP_S_KEY_SUCCESS || + sotpKeySlotReadLockStatus(dev, sect) == SOTP_E_ROW_READ_LOCK) { + status &= ~OTP_HW_CMN_STATUS_ROW_DATA_VALID; + _TR(status); + } + } + if (status & OTP_HW_CMN_STATUS_ROW_W_LOCKED) { + u32 regn_range[2]; + if ( sect2regn(sect, regn_range) ) { + rc = OTP_HW_CMN_ERR_UNSP; + goto err; + } + if(sotpIsRegionFuseLocked(dev, sect) != SOTP_E_ROW_FUSE_LOCK) { + status &= ~OTP_HW_CMN_STATUS_ROW_W_LOCKED; + } + } + if ( status & OTP_HW_CMN_STATUS_ROW_RD_LOCKED ) { + if (sotpKeySlotReadLockStatus(dev, sect) != SOTP_E_ROW_READ_LOCK) { + status &= ~OTP_HW_CMN_STATUS_ROW_RD_LOCKED; + } + } + /* permission register access status*/ + if ( !(perm_mask & SOTP_PERM_NSEC_R) ) { + status &= ~OTP_HW_CMN_STATUS_NSRD_PAC_LOCKED; + } + if ( !(perm_mask & SOTP_PERM_SEC_R) ) { + status &= ~OTP_HW_CMN_STATUS_SRD_PAC_LOCKED; + } + if ( !(perm_mask & SOTP_PERM_NSEC_W) ) { + status &= ~OTP_HW_CMN_STATUS_NSW_PAC_LOCKED; + } + if ( !( perm_mask & SOTP_PERM_SEC_W) ) { + status &= ~OTP_HW_CMN_STATUS_SW_PAC_LOCKED; + } + if ( !(perm_mask & (SOTP_PERM_BLK_SEC_R<addr_type == OTP_HW_CMN_ROW_ADDR_ROW) { + u32 raw_write = 1; + if (conf->op_type == OTP_HW_CMN_CTL_OTPCMD_ECC) { + u32 ecc = 0; + if (sotpReadEccRow(dev, addr, &ecc, 0) != SOTP_S_ROW_SUCCESS) { + goto err; + } + if (ecc) { + rc = OTP_HW_CMN_ERR_DATA_ECC; + SOTP_ERR_PRINT("%s: Row already has valid data! Not writing SOTP row\n", + __FUNCTION__); + goto err; + } + raw_write = 0; + } + if ( sotpWriteEccRow(dev, addr, *(u32*)data, raw_write) != SOTP_S_ROW_SUCCESS) { + goto err; + } + } else { + u32 sect = 0; + if (row2sect(addr, §)) { + goto err; + } + if (sotpWriteKeyslotData(dev, sect, (u32*)data, + size/sizeof(u32)) != SOTP_S_KEY_SUCCESS) { + goto err; + } + } + /* Non ecc raw row write + * case OTP_HW_CMN_ADDR_TYPE_ROW: { + if ( sotpWriteEccRow(dev, addr, *(u32*)data, 1) != SOTP_S_ROW_SUCCESS) { + goto err; + } + break; + }*/ + rc = OTP_HW_CMN_OK; +err: + return rc; +} + +__weak otp_hw_cmn_err_t sotp_hw_ctl(otp_hw_cmn_t *dev, + const otp_hw_cmn_ctl_cmd_t *cmd, + u32* res) +{ + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + u32 clear_lock = 0; + switch((u32)cmd->ctl) { + case OTP_HW_CMN_CTL_CONF: + memcpy(&dev->row_conf, + (otp_hw_cmn_row_conf_t*)cmd->data, + cmd->size); + + dev->ctl_cmd.ctl |= cmd->ctl; + rc = OTP_HW_CMN_OK; + break; + case (~((u32)OTP_HW_CMN_CTL_CONF)): + dev->ctl_cmd.ctl &= ~cmd->ctl; + rc = OTP_HW_CMN_OK; + break; + case OTP_HW_CMN_CTL_STATUS: { + u32 sect; + otp_hw_ctl_data_t* ctl_data = (otp_hw_ctl_data_t*)cmd->data; + _TR(ctl_data->addr); + if (row2sect(ctl_data->addr, §)) { + rc = OTP_HW_CMN_ERR_UNSP; + return rc; + } + rc = dev_status(dev, sect, + ctl_data->perm, res); + break; + } + case OTP_HW_CMN_CTL_UNLOCK: + clear_lock = 1; + case OTP_HW_CMN_CTL_LOCK: { + u32 sect; + otp_hw_ctl_data_t* ctl_data = (otp_hw_ctl_data_t*)cmd->data; + if (row2sect(ctl_data->addr, §)) { + rc = OTP_HW_CMN_ERR_UNSP; + return rc; + } + rc = sotp_hw_lock(dev, sect, ctl_data->perm, clear_lock); + break; + } + default: + rc = OTP_HW_CMN_ERR_UNSP; + break; + } + return rc; +} + +static otp_hw_cmn_err_t sotp_hw_write_dev(otp_hw_cmn_t* dev, + u32 addr, + const u32* data, + u32 size) +{ + otp_hw_cmn_row_t *row; + otp_hw_cmn_row_conf_t *cfg; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + rc = lookup_row(dev, addr, &row); + + if( dev->ctl_cmd.ctl&OTP_HW_CMN_CTL_CONF ) + cfg = &dev->row_conf; + else if (rc == 0) + cfg = &row->conf; + else + cfg = NULL; + + SOTP_DBG("%s: ctl_cmd.ctl:%d rc:%d\n", __FUNCTION__, dev->ctl_cmd.ctl, rc); + + return dev->write_ex? + dev->write_ex(dev, addr, cfg, data, size) : OTP_HW_CMN_ERR_UNSP; +} + +static otp_hw_cmn_err_t sotp_hw_read_dev(otp_hw_cmn_t *dev, + u32 addr, + u32 *data, + u32 size) +{ + otp_hw_cmn_row_t *row; + otp_hw_cmn_row_conf_t *cfg; + otp_hw_cmn_err_t rc = OTP_HW_CMN_ERR_FAIL; + rc = lookup_row(dev, addr, &row); + + if( dev->ctl_cmd.ctl&OTP_HW_CMN_CTL_CONF ) + cfg = &dev->row_conf; + else if (rc == 0) + cfg = &row->conf; + else + cfg = NULL; + + SOTP_DBG("%s: ctl_cmd.ctl:%d rc:%d\n", __FUNCTION__, dev->ctl_cmd.ctl, rc); + + return dev->read_ex? + dev->read_ex(dev, addr, cfg, data, size):OTP_HW_CMN_ERR_UNSP; + +} + +__weak otp_hw_cmn_err_t sotp_hw_dev_mmap(otp_hw_cmn_t* dev) +{ + dev->mm = SOTP_BASE; + return OTP_HW_CMN_OK; +} + +__weak otp_hw_cmn_err_t sotp_hw_init (otp_hw_cmn_t *dev) +{ + int i = 0; + int *m = sectn_map; + DEFINE_SOTP_MAP_ROW_INITLR(rows); + if (sotp_hw_dev_mmap(dev)) { + return OTP_HW_CMN_ERR_FAIL; + } + dev->rows = rows; + dev->row_max = sizeof(rows)/sizeof(otp_hw_cmn_row_t); + /* map for a section to a row count */ + for (i = 1 ; i < SOTP_SECT_ID_MAX; i++) { + m[i] += m[i-1]; + } + return OTP_HW_CMN_OK; +} + +otp_hw_cmn_err_t sotp_hw_cmn_init (otp_hw_cmn_t *dev) +{ + if (sotp_hw_init(dev)) { + return OTP_HW_CMN_ERR_FAIL; + } + dev->write_ex = sotp_hw_write; + dev->write = sotp_hw_write_dev; + dev->read_ex = sotp_hw_read; + dev->read = sotp_hw_read_dev; + dev->ctl = sotp_hw_ctl; + return OTP_HW_CMN_OK; +} + + diff --git a/arch/arm/mach-bcmbca/otp_tk/Makefile b/arch/arm/mach-bcmbca/otp_tk/Makefile new file mode 100644 index 0000000000..fd9425ced2 --- /dev/null +++ b/arch/arm/mach-bcmbca/otp_tk/Makefile @@ -0,0 +1 @@ +obj-y += sec_tk.o tk_ks.o diff --git a/arch/arm/mach-bcmbca/otp_tk/sec_tk.c b/arch/arm/mach-bcmbca/otp_tk/sec_tk.c new file mode 100644 index 0000000000..13bf807d8c --- /dev/null +++ b/arch/arm/mach-bcmbca/otp_tk/sec_tk.c @@ -0,0 +1,265 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +#include +#include +#include +#include "linux/printk.h" +#include +#include "bcm_otp.h" +#include +#include +#include +#include "bcm_secure.h" +#include "tk_ks.h" + +//#define DRY_RUN + +#define TM_SAMPLE_RATE 10 + +static char _get_char(void) +{ + return tstc() ? getc():'\0'; +} + +static inline int sec_tk_check_abort(int sec) +{ + char str[8],ch; + sec *= TM_SAMPLE_RATE; + while (sec > 0) { + ch = _get_char(); + if (ch == 'c' || ch == 'C') { + break; + } + if (!(sec%TM_SAMPLE_RATE)) { + sprintf(str,"%3d",sec/TM_SAMPLE_RATE); + } + puts(str); + putc('\r'); + memset(str, 0, 8); + mdelay(1000/TM_SAMPLE_RATE); + sec--; + } + return sec; +} + + +static inline void ntohl_array(u32* a, u32 length) +{ + int i; + for (i = 0;i < length; i++) { + a[i] = ntohl(a[i]); + } +} + + +static int sec_tk_fuse_verify(otp_map_feat_t id, + const u8* data, + u32 size) +{ + u32 *data_verify = NULL, + size_verify = 0; + otp_map_cmn_err_t rc = OTP_MAP_CMN_OK; + rc = bcm_otp_read(id, &data_verify, &size_verify); + if (rc) { + if (rc != OTP_HW_CMN_ERR_KEY_EMPTY) { + goto err; + } + rc = OTP_MAP_CMN_OK; + } +#ifndef DRY_RUN + if (!data || !(*data)) { + printf("EINV\n"); + goto err; + } + rc = bcm_otp_write(id, data, size); + if (rc) { + printf("EFSD\n"); + goto err; + } +#else + do{ + int i; + printf("Fusing with size %d data: \n\t",size); + for (i = 0; i < size; i++) { + printf(" 0x%x ",data[i]); + } + printf("\n"); + }while(0); +#endif +err: + return rc; +} + +static inline int sec_tk_commit_req(ks_req_state_t req_state, + bcm_sec_state_t cur_state) +{ + int res, rc = 0; + + switch(cur_state) { + case SEC_STATE_UNSEC: + if (req_state == KS_REQ_TRANSIT_FLD || + req_state == KS_REQ_TRANSIT_MFG){ + printf("MFG\n"); + u32 val = 0x1, size = 4; + if (sec_tk_fuse_verify(OTP_MAP_BRCM_BTRM_BOOT_ENABLE, &val, size )) { + goto err; + } + val = 0x7; + if (sec_tk_fuse_verify(OTP_MAP_CUST_BTRM_BOOT_ENABLE, &val, size )) { + goto err; + } + } + break; + case SEC_STATE_GEN3_MFG: + if (req_state == KS_REQ_TRANSIT_FLD) { + int res; + /*program otp bits accordingly */ + u8 ek_iv[KS_AES_128_CBC_SZ+KS_AES_128_CBC_SZ], + hash[KS_HASH_SZ]; + u32 mid; + + if (ks_get_data_info(KS_DATA_TYPE_KEY_AES_CBC_128_EK, + KS_DATA_STATE_FLD_ENCR, ek_iv) != KS_ERR_SUCC) { + goto err; + } + if (ks_get_data_info(KS_DATA_TYPE_KEY_AES_CBC_128_IV, + KS_DATA_STATE_FLD_ENCR, ek_iv+KS_AES_128_CBC_SZ) != KS_ERR_SUCC) { + goto err; + } + if (ks_get_data_info(KS_DATA_TYPE_HASH, + KS_DATA_STATE_RAW, hash) != KS_ERR_SUCC) { + goto err; + } + if (ks_get_data_info(KS_DATA_TYPE_MID, + KS_DATA_STATE_RAW, &mid) != KS_ERR_SUCC) { + goto err; + } + printf("FLD\n"); + /* + since sotp interface dealing with 32 bit integers - assumption is + that raw byte data from keystore are always honoring big endian + */ + mid = ntohl(mid); + ntohl_array((u32*)ek_iv,(KS_AES_128_CBC_SZ*2)/sizeof(u32)); + ntohl_array((u32*)hash,(KS_HASH_SZ)/sizeof(u32)); + rc = sec_tk_fuse_verify(OTP_MAP_CUST_MFG_MRKTID, &mid, sizeof(u32)); + if (rc) { + goto err; + } + rc = sec_tk_fuse_verify(SOTP_MAP_FLD_HMID, hash, KS_HASH_SZ); + if (rc) { + goto err; + } + rc = sec_tk_fuse_verify(SOTP_MAP_FLD_ROE, ek_iv, KS_AES_128_CBC_SZ*2); + if (rc) { + goto err; + } + } + break; + default: + goto err; + } + return 0; +err: + return -1; +} + + +static inline int sec_tk_do_req(u32 sec_arch, + bcm_sec_state_t sec_state, + ks_req_info_t *req_info) +{ + /* + if (ks_get_req_info(&req_info) != KS_ERR_SUCC) { + goto err; + }*/ + + switch(sec_arch) { + case SEC_ARCH_GEN3: + sec_tk_commit_req(req_info->state, sec_state); + break; + case SEC_ARCH_GEN2: + case SEC_ARCH_NONE: + case SEC_ARCH_GEN1: + default: + goto err; + } + return 0; +err: + printf("EREQ\n"); + return -1; +} + +static int sec_tk_allow_req(bcm_sec_state_t sec_state, + ks_req_state_t req_state) +{ + switch (sec_state) { + case SEC_STATE_UNSEC: + if (req_state == KS_REQ_TRANSIT_MFG || + req_state == KS_REQ_TRANSIT_FLD) { + return 1; + } + break; + case SEC_STATE_GEN3_MFG: + if (req_state == KS_REQ_TRANSIT_FLD) { + return 1; + } + break; + default: + break; + } + return 0; +} + +int sec_tk() +{ + char* msg = NULL; + u8* aes_key; + ks_req_info_t req_info; + bcm_sec_state_t state = bcm_sec()->state; + printf("SECE\n"); + printf("GEN3\n"); + bcm_sec_get_active_aes_key(&aes_key); + if (ks_init(state, + SEC_ARCH_GEN3, + bcm_sec_get_active_pub_key(), + aes_key) != KS_ERR_SUCC) { + goto err; + } + if (ks_get_req_info(&req_info) != KS_ERR_SUCC) { + goto err; + } + + if (!sec_tk_allow_req(state, req_info.state)) { + printf("FUSD\n"); + goto done; + } + switch (state) { + case SEC_STATE_UNSEC: + msg = "NSEC\n"; + break; + case SEC_STATE_GEN3_MFG: + msg = "MFG\n"; + break; + default: + goto err; + } + printf(msg); + printf("ABT?\n"); + if (sec_tk_check_abort(req_info.abort_delay)) { + + printf("CNCL\n"); + goto done; + } + if (sec_tk_do_req(SEC_ARCH_GEN3, state ,&req_info) == 0) { + printf("POR!\n"); + } +done: + return 0; +err: + printf("SERR\n"); + return -1; +} + diff --git a/arch/arm/mach-bcmbca/otp_tk/tk_ks.c b/arch/arm/mach-bcmbca/otp_tk/tk_ks.c new file mode 100644 index 0000000000..27b475f8cd --- /dev/null +++ b/arch/arm/mach-bcmbca/otp_tk/tk_ks.c @@ -0,0 +1,331 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +#include +#include +#include +#include "linux/printk.h" +#include +#include +#include +#include +#include +#include +#include +#include "u-boot/rsa-mod-exp.h" +#include +#include +#include +#include "bcm_secure.h" +#include "tk_ks.h" + +enum ks_obj_state { + KS_OBJ_INACTIVE = 0, + KS_OBJ_INVALID = -1, + KS_OBJ_OK = 1 +}; + +static struct ksobj { + ks_t *ks; + u32 ks_sz; + u32 sec_state; + enum ks_obj_state state; + /* data buffer allocated/set in gen_info call*/ + void* mem; + u8 *ek; + u8 *pub; +} ks_obj; + +static u8 keystore[KS_MAX_SZ] __attribute__((section(".data"))) ; + + +static inline int authenticate(const u8* sig, + u32 size, + const u8* pub_key) +{ + struct image_sign_info im; + im.checksum = image_get_checksum_algo("sha256,"); + if (bcm_sec_rsa_verify(sig + KS_SIG_SIZE, size , sig, KS_SIG_SIZE, pub_key, &im )) { + return -1; + } + return 0; +} + +/*in-place decrypt */ +static inline void aes_cbc128_decrypt(u32 *txt, + u32 size, u8 *key, u8 *iv) +{ + bcm_sec_aes_cbc128((u8*)key, (u8*)iv, (u8*)txt, size, 0); +} + +/* + * + * KS - short for key_store + * + * */ +static inline u32 get_crc32(u8 *v, u32 size, u32 crc) +{ + if (crc == 0) { + crc = 0xffffffff; + } + /* for this implementation chosen no complement crc32 as exepcted by crc calc for + * sko object + * */ + return crc32_no_comp(crc, v, size); +} + + + + + +static inline ks_err_t ks_type2size(ks_data_type_t data_type, u32 *size) +{ + u32 sz; + switch(data_type) { + case KS_DATA_TYPE_KEY_AES_CBC_128_IV: + case KS_DATA_TYPE_KEY_AES_CBC_128_EK: + sz = KS_AES_128_CBC_SZ; + break; + case KS_DATA_TYPE_KEY_AES_CBC_256_EK: + case KS_DATA_TYPE_KEY_AES_CBC_256_IV: + sz = KS_AES_256_CBC_SZ; + break; + case KS_DATA_TYPE_RSA_PUB: + case KS_DATA_TYPE_HASH: + sz = KS_HASH_SZ; + break; + case KS_DATA_TYPE_MID: + case KS_DATA_TYPE_OID: + sz = KS_MID_SZ; + break; + default: + return KS_ERR_INVALID; + } + *size = sz; + return KS_ERR_SUCC; +} + +static ks_err_t ks_verify(ks_t* ks, + u32 curr_sec_state, + const u8* pub_key + /*Sizeof of the object without signature*/ + ) +{ + ks_req_state_t sec_state_req = ks->hdr.req_info.state; + switch(sec_state_req) { + case KS_REQ_TRANSIT_FLD: + if (curr_sec_state == SEC_STATE_GEN3_MFG) { + if (authenticate(ks->key.sig, + ks->hdr.info_size - (sizeof(ks->key.crc) + KS_SIG_SIZE), + pub_key)) { + goto err_fatal; + } + printf("KATH\n"); + } else if (curr_sec_state == SEC_STATE_UNSEC) { + if (ks->hdr.info_size < sizeof(u32) || + ks->key.crc != get_crc32(((u8*)&ks->key.crc)+sizeof(ks->key.crc), + ks->hdr.info_size - sizeof(ks->key.crc), 0)) { + goto err; + } + } + break; + case KS_REQ_TRANSIT_MFG: + if (ks->hdr.info_size != 0 || curr_sec_state != SEC_STATE_UNSEC) { + goto err; + } + break; + default: + goto err; + } + return KS_ERR_SUCC; +err: + printf("EVER\n"); + return KS_ERR_INVALID; +err_fatal: + ks_reset(); + /* destroy hang, watchdog reset*/ + hang(); +} +/* copy keystore to an internal data array; + * on v7 if not copied it can be erased by + * BSS clean loop before int_r is called */ +void sec_tk_find_keystore() +{ + u8 *bdata = KS_OFFSET; + if (KS_IS_FDT(bdata)) { + bdata += KS_FDT_SIZE(bdata); + } + memcpy(keystore, bdata, KS_MAX_SZ); +} + +/* + Reads and verifies key store +*/ +ks_err_t ks_init(bcm_sec_state_t sec_state, + u32 sec_arch, + const u8* pub_key, + const u8* aes_key) +{ + /* + Read flash block at offset 724*1024 + Verify if valid header is valid + */ + ks_hdr_t *hdr = NULL; + u8 *mem = NULL, *bdata = NULL; + printf("KINI\n"); + /*BRKPT;*/ + if (ks_obj.state == KS_OBJ_OK) { + return KS_ERR_SUCC; + } + if (ks_obj.state == KS_OBJ_INVALID) { + return KS_ERR_INVALID; + } + + hdr = (ks_hdr_t*)keystore; + if (memcmp(hdr->magic, KS_MAGIC, + KS_MAGIC_SIZE)) { + printf("EMGC\n"); + goto err; + } + if (hdr->crc != get_crc32(keystore, + sizeof(ks_hdr_t) - sizeof((*hdr).crc), + 0)) { + printf("EHCR\n"); + goto err; + } + + if (hdr->info_size + sizeof(ks_hdr_t) > KS_MAX_SZ) { + printf("ESIZ\n"); + goto err; + } + + + + /* we've compiled in with predefined sec arch support + - GEN3 + */ + if (sec_arch != hdr->sec_arch) { + printf("EARC\n"); + goto err; + } + /* if booted in non-sec mode - verify data crc */ + if (ks_verify((ks_t*)keystore, sec_state, + bcm_sec_get_active_pub_key())) { + goto err; + } + ks_obj.mem = keystore; + ks_obj.ks = (ks_t*)keystore; + ks_obj.sec_state = sec_state; + ks_obj.pub = pub_key; + ks_obj.ek = aes_key; + ks_obj.state = KS_OBJ_OK; + return KS_ERR_SUCC; +err: + ks_obj.state = KS_OBJ_INVALID; + return KS_ERR_INVALID; +} + +static ks_err_t ks_get_data(ks_key_info_t* key_info, + u8* cbc128_ek, + void* data) +{ + /*Copy data to the destination*/ + ks_err_t rc = KS_ERR_INVALID; + u32 data_sz; + if (ks_type2size(KS_DATA_GET_TYPE(key_info->type_state), &data_sz)) { + printf("EKTP\n"); + goto err; + } + switch(KS_DATA_GET_STATE(key_info->type_state)) { + case KS_DATA_STATE_FLD_ENCR: + /*Decrypting + * key_info->size must be padded to u32 + * */ + if (!IS_ALIGNED(key_info->size, sizeof(u32))) { + printf("EKEY\n"); + goto err; + } + /*in place decryption encrypted - */ + aes_cbc128_decrypt( (u32*)&key_info->data[0],/*src*/ + key_info->size, /*data len*/ + cbc128_ek, /* key */ + cbc128_ek + BCM_SECBT_AES_CBC128_EK_LEN); /*iv*/ + /*key_sz is expected size of the key per type*/ + memcpy(data, (u32*)&key_info->data[0], data_sz); + break; + case KS_DATA_STATE_RAW: + memcpy(data, &key_info->data[0], data_sz); + break; + default: + goto err; + } + rc = KS_ERR_SUCC; +err: + return rc; +} +/* returned pointer must be released in non CFE_ROM mode and + keystore_data_release needs to be called when no more keys are not needed +*/ +ks_err_t ks_get_data_info(ks_data_type_t type, + ks_data_state_t state, + void* data) +{ + /*Copy data to the destination*/ + ks_err_t rc = KS_ERR_INVALID; + ks_hdr_t *hdr; + ks_key_info_t *key_info; + u8 *key_info_max; + if (ks_obj.state != KS_OBJ_OK) { + return KS_ERR_INVALID; + } + hdr = &ks_obj.ks->hdr; + key_info = &((ks_t*)ks_obj.mem)->key.info; + key_info_max = (u8*)key_info + hdr->info_size - (sizeof(u32) + KS_SIG_SIZE); + while ((u8*)key_info < key_info_max) { + if ( KS_DATA_GET_TYPE(key_info->type_state) == type && + KS_DATA_GET_STATE(key_info->type_state) == state) { + break; + } + key_info = (ks_key_info_t*)((uintptr_t)key_info+sizeof(ks_key_info_t)+key_info->size); + } + if ((u8*)key_info == key_info_max) { + goto err; + } + if (ks_get_data(key_info, + ks_obj.ek,data) != KS_ERR_SUCC) { + goto err; + } + rc = KS_ERR_SUCC; +err: + if (rc) { + printf("ERNF\n"); + } + return rc; +} + +ks_err_t ks_get_req_info(ks_req_info_t* req_info) +{ + if (ks_obj.state != KS_OBJ_OK) { + goto err; + } + memcpy(req_info, + &ks_obj.ks->hdr.req_info, + sizeof(ks_req_info_t)); + return KS_ERR_SUCC; +err: + return KS_ERR_INVALID; +} + +static void ks_data_release(void) +{ + +} +ks_err_t ks_reset() +{ + if (ks_obj.state == KS_OBJ_OK) { + ks_data_release(); + } + memset(&ks_obj, 0, sizeof(ks_obj)); + return KS_ERR_SUCC; +} diff --git a/arch/arm/mach-bcmbca/otp_tk/tk_ks.h b/arch/arm/mach-bcmbca/otp_tk/tk_ks.h new file mode 100644 index 0000000000..942ca5f85f --- /dev/null +++ b/arch/arm/mach-bcmbca/otp_tk/tk_ks.h @@ -0,0 +1,154 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +#ifndef __KS_H_ +#define __KS_H_ + +/* + * + * KS - Key Store + * + * */ + +#define KS_AES_256_CBC_SZ AES256_KEY_LENGTH +#define KS_AES_128_CBC_SZ AES128_KEY_LENGTH +#define KS_HASH_SZ SHA256_SUM_LEN +#define KS_MID_SZ 4 + +#define KS_MAGIC "BRCMKEYSTORE" +/*Adjusting for \0*/ +#define KS_MAGIC_SIZE (sizeof(KS_MAGIC)-sizeof(char)) +#define KS_MAGIC_LEN ALIGN(KS_MAGIC_SIZE, 4) + +#define KS_SIG_SIZE RSA2048_BYTES +#define KS_DEF_ABORT_DELAY 1 + +#define SEC_ARCH_NONE 0 +#define SEC_ARCH_GEN1 1 +#define SEC_ARCH_GEN2 2 +#define SEC_ARCH_GEN3 3 + +#define KS_MAX_KEYS 1 +#define KS_MAX_SZ ALIGN((sizeof(ks_t)+KS_MAX_KEYS*(sizeof(ks_key_info_t)+KS_AES_128_CBC_SZ*4+KS_HASH_SZ*2+KS_MID_SZ*2)),4) + + +#if defined (CONFIG_ARM64) +#define KS_OFFSET _image_binary_end +#else +#define KS_OFFSET __bss_end +#endif +#define KS_IS_FDT(_FDT_) (fdt_magic(_FDT_) == FDT_MAGIC) +#define KS_FDT_SIZE(_FDT_) (fdt_totalsize(_FDT_)) + +typedef enum _ks_err { + KS_ERR_SUCC, + KS_ERR_INVALID, + KS_ERR_KEY_NOT_FOUND +} ks_err_t; + +typedef enum _ks_req_state { + KS_REQ_NONE=0x0, + KS_REQ_TRANSIT_GEN2_BTRM, + KS_REQ_TRANSIT_GEN2_MFG, + KS_REQ_TRANSIT_GEN2_OP, + KS_REQ_TRANSIT_MFG, + KS_REQ_TRANSIT_FLD, +} ks_req_state_t; + +typedef enum _ks_data_type { + KS_DATA_TYPE_KEY_AES_CBC_128_EK=0x0, + KS_DATA_TYPE_KEY_AES_CBC_128_IV=0x1, + KS_DATA_TYPE_KEY_AES_CBC_256_EK=0x2, + KS_DATA_TYPE_KEY_AES_CBC_256_IV=0x3, + KS_DATA_TYPE_RSA_PUB=0x4, + KS_DATA_TYPE_RSA_PRIV=0x5, + KS_DATA_TYPE_HASH=0x6, + KS_DATA_TYPE_MID=0x7, + KS_DATA_TYPE_OID=0x8, + KS_DATA_TYPE_BROM_MODE=0x9, + KS_DATA_TYPE_CUST_BROM_MODE=0xa, + KS_DATA_TYPE_MAX=0xb +} ks_data_type_t; + +typedef enum _ks_data_state { + KS_DATA_STATE_RAW=0x0, + KS_DATA_STATE_MFG_ENCR=0x1, + KS_DATA_STATE_MFG_OEM_ENCR=0x2, + KS_DATA_STATE_FLD_ENCR=0x3, + KS_DATA_STATE_FLD_OEM_ENCR=0x4, + KS_DATA_STATE_MAX=0x5 +} ks_data_state_t; + +#define KS_STAT_MSK 0xff +#define KS_DATA_GET_TYPE(d) (d&KS_STAT_MSK) +#define KS_DATA_GET_STATE(d) ((d>>8)&KS_STAT_MSK) + +struct __attribute__((packed)) ks_req_info { + /*This what was requested by build*/ + /*ks_req_state_t*/ + u32 state; + u32 abort_delay; + /*sec_arch_info_t */ +}; + +typedef struct ks_req_info ks_req_info_t; + +struct __attribute__((packed)) ks_key_info { + u32 size; + u32 type_state; + /* must be multiple of u32*/ + u8 data[0]; +}; + +typedef struct ks_key_info ks_key_info_t; + +typedef struct __attribute__((packed)) ks_key { + /*crc of the data, sig and the key_info*/ + u32 crc; + u8 sig[KS_SIG_SIZE]; + ks_key_info_t info; +} ks_key_t; + +/* Dual purpose: +1. In non-secure mode (verifying via otp) if not-requested to enter to SEC mode + proceed to default cfe_rom path + -if requiested an MFG_FLD proceed to MFG enter + -if requiested an FLD proceed to FLD via MFG +2. If in secure MFG but requested MFG_FLD proceed to FLD +3. If in FLD mode proceed to secure boot +*/ +struct __attribute__((packed)) ks_hdr { + u8 magic[KS_MAGIC_SIZE]; + u32 sec_arch; + ks_req_info_t req_info; + u32 info_size; + /*header crc */ + u32 crc; +}; + +typedef struct ks_hdr ks_hdr_t; + +typedef struct __attribute__((packed)) ks { + ks_hdr_t hdr; + ks_key_t key; +} ks_t; + +/* + initializes and verifies a key store +*/ +ks_err_t ks_init(bcm_sec_state_t sec_state, + u32 sec_arch, + const u8* pub, + const u8* aes_cbc128); +ks_err_t ks_get_data_info(ks_data_type_t type, + ks_data_state_t state, + void* data); +ks_err_t ks_get_req_info(ks_req_info_t* req_info); +ks_err_t ks_reset(void); + + +#define BRKPT do { \ + *((volatile u32*)0xff800600)=0x6; \ + asm("1: b 1b"); }while(0) +#endif diff --git a/arch/arm/mach-bcmbca/pinmux.c b/arch/arm/mach-bcmbca/pinmux.c new file mode 100644 index 0000000000..07af8383fc --- /dev/null +++ b/arch/arm/mach-bcmbca/pinmux.c @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include "pinctrl.h" + +/* this function is intended to be shared in SPL / TPL / UBOOT */ +int bcmbca_pinmux_set (volatile struct pinctrl_reg *regp, int pin, int func) +{ + uint32_t data = 0; + + data |= pin; + data |= (func << PINMUX_DATA_SHIFT); + + debug("pinmux %d func %d\n", pin, func); + + regp->TestPortBlockDataMSB = 0; + regp->TestPortBlockDataLSB = data; + regp->TestPortCmd = LOAD_MUX_REG_CMD; + + return 0; +} + diff --git a/arch/arm/mach-bcmbca/pmc/Makefile b/arch/arm/mach-bcmbca/pmc/Makefile new file mode 100644 index 0000000000..fea337da65 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/Makefile @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +# Temperarily put the pmc impl in arch folder. Need to +# move to driver and could try to use the power-domain +# uclass but it is very simple form now and need to add +# the interface we need + +EXTRA_CFLAGS += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/ubus + +obj-y += \ + pmc_drv.o \ + pmc_drv_bootloader.o \ + clk_rst.o \ + +obj-$(CONFIG_BCMBCA_PMC_SWITCH) += pmc_switch.o +obj-$(CONFIG_BCMBCA_PMC_RDP) += pmc_rdp.o +obj-$(CONFIG_BCMBCA_PMC_XRDP) += pmc_xrdp.o +obj-$(CONFIG_BCMBCA_PMC_LPORT) += pmc_lport.o +obj-$(CONFIG_BCMBCA_PMC_SYSPORT) += pmc_sysport.o diff --git a/arch/arm/mach-bcmbca/pmc/clk_rst.c b/arch/arm/mach-bcmbca/pmc/clk_rst.c new file mode 100755 index 0000000000..16c8001a85 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/clk_rst.c @@ -0,0 +1,715 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#include "pmc_drv.h" +#include "clk_rst.h" +#include "asm/arch/BPCM.h" + +#define VCO0_FREQ 1200 +#define VCO2_FREQ 1600 + +#if IS_BCMCHIP(6855) +int pll_vco_config(unsigned int pll_addr, unsigned int ndivider, unsigned int pdivider) +{ + int ret = 0; + PLL_CTRL_REG pll_ctrl; + PLL_STAT_REG pll_stat; + PLL_NDIV_REG pll_ndiv; + PLL_PDIV_REG pll_pdiv; + + // reset pll + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(resets), &pll_ctrl.Reg32); + pll_ctrl.Bits.master_reset = 1; + WriteBPCMRegister(pll_addr, PLLBPCMRegOffset(resets), pll_ctrl.Reg32); + + // change ndiv and pdiv + ret = ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(pdiv), &pll_pdiv.Reg32); + pll_pdiv.Bits.pdiv = pdivider; + pll_pdiv.Bits.ndiv_pdiv_override = 1; + ret |= WriteBPCMRegister(pll_addr, PLLBPCMRegOffset(pdiv), pll_pdiv.Reg32); + + ret = ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ndiv), &pll_ndiv.Reg32); + pll_ndiv.Bits.ndiv_int = ndivider; + pll_ndiv.Bits.ndiv_override = 1; + ret |= WriteBPCMRegister(pll_addr, PLLBPCMRegOffset(ndiv), pll_ndiv.Reg32); + + // take pll out of reset + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(resets), &pll_ctrl.Reg32); + pll_ctrl.Bits.master_reset = 0; + WriteBPCMRegister(pll_addr, PLLBPCMRegOffset(resets), pll_ctrl.Reg32); + + // wait untill pll is locked + do { + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(stat), &pll_stat.Reg32); + } while (pll_stat.Bits.lock == 0); + + return ret; +} +#endif + +#if IS_BCMCHIP(6858) || IS_BCMCHIP(63158) || IS_BCMCHIP(6856) || \ + IS_BCMCHIP(6846) || IS_BCMCHIP(63178) || IS_BCMCHIP(47622) || \ + IS_BCMCHIP(6878) || IS_BCMCHIP(63146) || IS_BCMCHIP(4912) || \ + IS_BCMCHIP(6855) || IS_BCMCHIP(6756) +#define PLL_REFCLK 50 +int pll_vco_freq_get(unsigned int pll_addr, unsigned int *fvco) +{ + int ret = 0; + PLL_DECNDIV_REG pll_decndiv; + PLL_DECPDIV_REG pll_decpdiv; +#if IS_BCMCHIP(63158) || IS_BCMCHIP(63178) || IS_BCMCHIP(47622) || \ + IS_BCMCHIP(63146) || IS_BCMCHIP(4912) || IS_BCMCHIP(6855) || \ + IS_BCMCHIP(6756) + PLL_NDIV_REG ndiv_reg; + PLL_PDIV_REG pdiv_reg; +#endif + +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, PLLCLASSICBPCMRegOffset(decndiv), + &pll_decndiv.Reg32); + ret |= + ReadBPCMRegister(pll_addr, PLLCLASSICBPCMRegOffset(decpdiv), + &pll_decpdiv.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(decndiv), + &pll_decndiv.Reg32); + ret |= + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(decpdiv), + &pll_decpdiv.Reg32); +#endif + if (ret != 0) + return -1; + + // Let's ignore ndiv_frac, it is set to zero anyway by HW. + *fvco = + (PLL_REFCLK * (pll_decndiv.Bits.ndiv_int)) / pll_decpdiv.Bits.pdiv; + +#if IS_BCMCHIP(63158) || IS_BCMCHIP(63178) || IS_BCMCHIP(47622) || \ + IS_BCMCHIP(63146) || IS_BCMCHIP(4912) || IS_BCMCHIP(6855) || \ + IS_BCMCHIP(6756) + if (!ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(pdiv), &pdiv_reg.Reg32) + && pdiv_reg.Bits.ndiv_pdiv_override + && !ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ndiv), + &ndiv_reg.Reg32)) + *fvco = + (PLL_REFCLK * (ndiv_reg.Bits.ndiv_int)) / + pdiv_reg.Bits.pdiv; +#endif + + return 0; +} + +int pll_ch_freq_get(unsigned int pll_addr, unsigned int ch, unsigned int *freq) +{ + int ret; + unsigned int fvco, mdiv; + PLL_DECPDIV_REG pll_decpdiv; + PLL_DECCH25_REG pll_decch25; + PLL_CHCFG_REG ch_cfg; + + ret = pll_vco_freq_get(pll_addr, &fvco); + + if (ret != 0) + return -1; + + // The pll may include up to 6 channels. + switch (ch) { + case 0: +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(ch01_cfg), + &ch_cfg.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch01_cfg), + &ch_cfg.Reg32); +#endif + /* Check if default value is overitten */ + if (ch_cfg.Bits.mdiv_override0) + mdiv = ch_cfg.Bits.mdiv0; /* Use the new value */ + else { /* If not, read from the default */ + +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(decpdiv), + &pll_decpdiv.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, + PLLBPCMRegOffset(decpdiv), + &pll_decpdiv.Reg32); +#endif + mdiv = pll_decpdiv.Bits.mdiv0; + } + break; + case 1: +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(ch01_cfg), + &ch_cfg.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch01_cfg), + &ch_cfg.Reg32); +#endif + if (ch_cfg.Bits.mdiv_override1) + mdiv = ch_cfg.Bits.mdiv1; + else { +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(decpdiv), + &pll_decpdiv.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, + PLLBPCMRegOffset(decpdiv), + &pll_decpdiv.Reg32); +#endif + mdiv = pll_decpdiv.Bits.mdiv1; + } + break; + case 2: +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(ch23_cfg), + &ch_cfg.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch23_cfg), + &ch_cfg.Reg32); +#endif + if (ch_cfg.Bits.mdiv_override0) + mdiv = ch_cfg.Bits.mdiv0; + else { +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(decch25), + &pll_decch25.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, + PLLBPCMRegOffset(decch25), + &pll_decch25.Reg32); +#endif + mdiv = pll_decch25.Bits.mdiv2; + } + break; + case 3: +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(ch23_cfg), + &ch_cfg.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch23_cfg), + &ch_cfg.Reg32); +#endif + if (ch_cfg.Bits.mdiv_override1) + mdiv = ch_cfg.Bits.mdiv1; + else { +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(decch25), + &pll_decch25.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, + PLLBPCMRegOffset(decch25), + &pll_decch25.Reg32); +#endif + mdiv = pll_decch25.Bits.mdiv3; + } + break; + case 4: +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(ch45_cfg), + &ch_cfg.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch45_cfg), + &ch_cfg.Reg32); +#endif + if (ch_cfg.Bits.mdiv_override0) + mdiv = ch_cfg.Bits.mdiv0; + else { +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(decch25), + &pll_decch25.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, + PLLBPCMRegOffset(decch25), + &pll_decch25.Reg32); +#endif + mdiv = pll_decch25.Bits.mdiv4; + } + break; + case 5: +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(ch45_cfg), + &ch_cfg.Reg32); +#else + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch45_cfg), + &ch_cfg.Reg32); +#endif + if (ch_cfg.Bits.mdiv_override1) + mdiv = ch_cfg.Bits.mdiv1; + else { +#if IS_BCMCHIP(6856) + ret = + ReadBPCMRegister(pll_addr, + PLLCLASSICBPCMRegOffset(decch25), + &pll_decch25.Reg32); + mdiv = pll_decch25.Bits.mdiv5; +#elif IS_BCMCHIP(63146) || IS_BCMCHIP(4912) + ret = + ReadBPCMRegister(pll_addr, + PLLBPCMRegOffset(decpdiv), + &pll_decpdiv.Reg32); + mdiv = pll_decpdiv.Bits.mdiv5; +#else + ret = + ReadBPCMRegister(pll_addr, + PLLBPCMRegOffset(decch25), + &pll_decch25.Reg32); + mdiv = pll_decch25.Bits.mdiv5; +#endif + } + break; + default: + return -1; + }; + + if (ret != 0) + return -1; + + *freq = fvco / mdiv; + + return 0; +} +EXPORT_SYMBOL(pll_ch_freq_get); +#endif + +unsigned long get_rdp_freq(unsigned int *rdp_freq) +{ + int ret = -1; +#if IS_BCMCHIP(6878) + unsigned int fvco, mdiv; + PLL_DECNDIV_REG pll_decndiv; + PLL_DECPDIV_REG pll_decpdiv; + + ret = + ReadBPCMRegister(PMB_ADDR_SYSPLL, PLLCLASSICBPCMRegOffset(decndiv), + &pll_decndiv.Reg32); + ret |= + ReadBPCMRegister(PMB_ADDR_SYSPLL, PLLCLASSICBPCMRegOffset(decpdiv), + &pll_decpdiv.Reg32); + // Let's ignore ndiv_frac, it is set to zero anyway by HW. + fvco = + (PLL_REFCLK * (pll_decndiv.Bits.ndiv_int)) / pll_decpdiv.Bits.pdiv; + + // read mdiv of channel 0 + ret = + ReadBPCMRegister(PMB_ADDR_SYSPLL, PLLCLASSICBPCMRegOffset(decpdiv), + &pll_decpdiv.Reg32); + mdiv = pll_decpdiv.Bits.mdiv0; + + *rdp_freq = fvco / mdiv; + + +#elif IS_BCMCHIP(6858) || IS_BCMCHIP(63158) || IS_BCMCHIP(6856) || \ + IS_BCMCHIP(6846) + ret = + pll_ch_freq_get(PMB_ADDR_RDPPLL, XRDPPLL_RUNNER_CHANNEL, rdp_freq); +#if IS_BCMCHIP(6856) || IS_BCMCHIP(6846) + *rdp_freq /= 2; +#endif +#elif IS_BCMCHIP(6855) + + ret = pll_ch_freq_get(PMB_ADDR_SYSPLL, XRDPPLL_RUNNER_CHANNEL, rdp_freq); + +#elif IS_BCMCHIP(63138) || IS_BCMCHIP(63148) || IS_BCMCHIP(4908) +/* FIXME!! when knowing the real frequency info for 4908/62118 RDP */ + +#define RDP_PLL_REFCLK 50 /* 50 MHz for 63138 */ + +/* the formula here is + * F_vco = (1 / pdiv) * (ndiv_int + ndiv_frac / (2 ^ 20)) * F_ref + * F_clkout,n = (F_vco / mdiv_n) + * ch#0 connects to runner block + * ch#1 connects to test block + * ch#2 connects to ipsec & rng block + * + * default values are: + * ndiv_int = 0x8c (140) + * ndiv_frac = 0 + * pdiv = 2 + * mdiv[0] = 0x5 + * mdiv[1] = 0xa + * mdiv[2] = 0x23 (35). + * + * F_vco = 3500 MHz + * F_clkout,0 = 700 MHz -> runner + */ + + PLL_NDIV_REG pll_ndiv; + PLL_PDIV_REG pll_pdiv; + PLL_CHCFG_REG pll_ch01_cfg; + + ret = ReadBPCMRegister(PMB_ADDR_RDPPLL, PLLBPCMRegOffset(ndiv), + &pll_ndiv.Reg32); + ret |= ReadBPCMRegister(PMB_ADDR_RDPPLL, PLLBPCMRegOffset(pdiv), + &pll_pdiv.Reg32); + ret |= ReadBPCMRegister(PMB_ADDR_RDPPLL, PLLBPCMRegOffset(ch01_cfg), + &pll_ch01_cfg.Reg32); + if (ret != 0) + return -1; + + *rdp_freq = RDP_PLL_REFCLK * (pll_ndiv.Bits.ndiv_int); + // FIXME! for simplicity, ndiv_frac is taken out. Otherwise, the value + // will be in form of double. + *rdp_freq = *rdp_freq / pll_pdiv.Bits.pdiv / pll_ch01_cfg.Bits.mdiv0; + +#elif IS_BCMCHIP(63146) || IS_BCMCHIP(4912) + /* FIXME */ + /* Use RDPPLLBPCMRegOffset macro here. Its definitio is different than + the main PLL */ + ret = 0; + *rdp_freq = 1200; + +#endif + + return ret; +} +EXPORT_SYMBOL(get_rdp_freq); + +#if IS_BCMCHIP(6858) || IS_BCMCHIP(6856) || IS_BCMCHIP(6846) || \ + IS_BCMCHIP(63158) || IS_BCMCHIP(63178) || IS_BCMCHIP(47622) || \ + IS_BCMCHIP(6878) || IS_BCMCHIP(63146) || IS_BCMCHIP(4912) || \ + IS_BCMCHIP(6855) || IS_BCMCHIP(6756) +int pll_ch_reset(unsigned int pll_addr, unsigned int ch, unsigned int pll_reg_offset) +{ + int ret; + PLL_CHCFG_REG ch_cfg; + + // The pll may include up to 6 channels. + switch (ch) { + case 0: + case 2: + case 4: + ret = + ReadBPCMRegister(pll_addr, pll_reg_offset, + &ch_cfg.Reg32); + ch_cfg.Bits.mdiv0 = 0; + ch_cfg.Bits.mdiv_override0 = 0; + ret |= + WriteBPCMRegister(pll_addr, pll_reg_offset, + ch_cfg.Reg32); + break; + case 1: + case 3: + case 5: + ret = + ReadBPCMRegister(pll_addr, pll_reg_offset, + &ch_cfg.Reg32); + ch_cfg.Bits.mdiv1 = 0; + ch_cfg.Bits.mdiv_override1 = 0; + ret |= + WriteBPCMRegister(pll_addr, pll_reg_offset, + ch_cfg.Reg32); + break; + default: + return -1; + }; + + return ret; +} + +int pll_ch_freq_set_offs(unsigned int pll_addr, unsigned int ch, unsigned int mdiv, unsigned int offset) +{ + int ret; + PLL_CHCFG_REG ch_cfg; + + // The pll may include up to 6 channels. + switch (ch) { + case 0: + case 2: + case 4: + ret = ReadBPCMRegister(pll_addr, offset, &ch_cfg.Reg32); + ch_cfg.Bits.mdiv0 = mdiv; + ch_cfg.Bits.mdiv_override0 = 1; + ret |= WriteBPCMRegister(pll_addr, offset, ch_cfg.Reg32); + break; + case 1: + case 3: + case 5: + ret = ReadBPCMRegister(pll_addr, offset, &ch_cfg.Reg32); + ch_cfg.Bits.mdiv1 = mdiv; + ch_cfg.Bits.mdiv_override1 = 1; + ret |= WriteBPCMRegister(pll_addr, offset, ch_cfg.Reg32); + break; + default: + return -1; + }; + return ret; +} + +int pll_ch_freq_set(unsigned int pll_addr, unsigned int ch, unsigned int mdiv) +{ + int ret; + + // The pll may include up to 6 channels. + switch (ch) { + case 0: + case 1: + ret |= pll_ch_freq_set_offs( pll_addr, ch, mdiv, PLLBPCMRegOffset(ch01_cfg)); + break; + case 2: + case 3: + ret |= pll_ch_freq_set_offs( pll_addr, ch, mdiv, PLLBPCMRegOffset(ch23_cfg)); + break; + case 4: + case 5: + ret |= pll_ch_freq_set_offs( pll_addr, ch, mdiv, PLLBPCMRegOffset(ch45_cfg)); + break; + default: + return -1; + }; + + return ret; +} + +int pll_ch_freq_vco_set(unsigned int pll_addr, unsigned int ch, + unsigned int mdiv, unsigned int use_vco) +{ + int ret; + PLL_CHCFG_REG ch_cfg; + + // The pll may include up to 6 channels. + switch (ch) { + case 0: + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch01_cfg), + &ch_cfg.Reg32); + ch_cfg.Bits.mdiv0 = mdiv; + ch_cfg.Bits.mdiv_override0 = 1; + ch_cfg.Bits.reserved0 = use_vco ? 1 : 0; + ret |= + WriteBPCMRegister(pll_addr, PLLBPCMRegOffset(ch01_cfg), + ch_cfg.Reg32); + break; + case 1: + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch01_cfg), + &ch_cfg.Reg32); + ch_cfg.Bits.mdiv1 = mdiv; + ch_cfg.Bits.mdiv_override1 = 1; + ch_cfg.Bits.reserved1 = use_vco ? 1 : 0; + ret |= + WriteBPCMRegister(pll_addr, PLLBPCMRegOffset(ch01_cfg), + ch_cfg.Reg32); + break; + case 2: + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch23_cfg), + &ch_cfg.Reg32); + ch_cfg.Bits.mdiv0 = mdiv; + ch_cfg.Bits.mdiv_override0 = 1; + ch_cfg.Bits.reserved0 = use_vco ? 1 : 0; + ret |= + WriteBPCMRegister(pll_addr, PLLBPCMRegOffset(ch23_cfg), + ch_cfg.Reg32); + break; + case 3: + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch23_cfg), + &ch_cfg.Reg32); + ch_cfg.Bits.mdiv1 = mdiv; + ch_cfg.Bits.mdiv_override1 = 1; + ch_cfg.Bits.reserved1 = use_vco ? 1 : 0; + ret |= + WriteBPCMRegister(pll_addr, PLLBPCMRegOffset(ch23_cfg), + ch_cfg.Reg32); + break; + case 4: + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch45_cfg), + &ch_cfg.Reg32); + ch_cfg.Bits.mdiv0 = mdiv; + ch_cfg.Bits.mdiv_override0 = 1; + ch_cfg.Bits.reserved0 = use_vco ? 1 : 0; + ret |= + WriteBPCMRegister(pll_addr, PLLBPCMRegOffset(ch45_cfg), + ch_cfg.Reg32); + break; + case 5: + ret = + ReadBPCMRegister(pll_addr, PLLBPCMRegOffset(ch45_cfg), + &ch_cfg.Reg32); + ch_cfg.Bits.mdiv1 = mdiv; + ch_cfg.Bits.mdiv_override1 = 1; + ch_cfg.Bits.reserved1 = use_vco ? 1 : 0; + ret |= + WriteBPCMRegister(pll_addr, PLLBPCMRegOffset(ch45_cfg), + ch_cfg.Reg32); + break; + default: + return -1; + }; + + return ret; +} +#endif + +#if IS_BCMCHIP(6858) +int bcm_change_cpu_clk(BCM_CPU_CLK clock) +{ + int ret = 0; + PLL_CTRL_REG ctrl_reg; + + if (ReadBPCMRegister + (PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), &ctrl_reg.Reg32)) + return -1; + + if (clock == BCM_CPU_CLK_HIGH) + ctrl_reg.Bits.byp_wait = 0; + else if (clock == BCM_CPU_CLK_LOW) + ctrl_reg.Bits.byp_wait = 1; + else + ret = -1; + + ret = WriteBPCMRegister(PMB_ADDR_BIU_PLL, PLLBPCMRegOffset(resets), + ctrl_reg.Reg32); + + return ret; +} +#endif + +#if defined(__KERNEL__) && IS_BCMCHIP(63158) +void clk_divide_50mhz_to_25mhz(void) +{ + uint32_t data; + int ret; + + ret = ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(xtal_control), &data); + if (ret) { + printk("Failed to ReadBPCMRegister CHIP_CLKRST block " + "CLKRST_XTAL_CNTL. Error=%d\n", ret); + return; + } + + /* Divide clock by 2. From 50mhz to 25mhz */ + data |= (0x1 << 24); + + ret = + WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(xtal_control), data); + if (ret) + printk("Failed to writeBPCMRegister CHIP_CLKRST block " + "CLKRST_XTAL_CNTL. Error=%d\n", ret); +} +EXPORT_SYMBOL(clk_divide_50mhz_to_25mhz); +#endif + +#if defined(__KERNEL__) && (IS_BCMCHIP(6858) || IS_BCMCHIP(6846) || \ + IS_BCMCHIP(6856) || IS_BCMCHIP(6878)) +#if IS_BCMCHIP(6878) +#define PMD_CLOCK_REG pmd_xtal_cntl +#define CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV (2) +#define CLOCK_RESET_XTAL_CONTROL_BIT_PWRON (27) +#define PMD_CLOCK_REG2 pmd_xtal_cntl2 +#define CLOCK_RESET_XTAL_CONTROL2_BIT_PD (0) +#else +#define PMD_CLOCK_REG xtal_control +#define CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV (17) +#endif + +void disable_25mhz_clk_to_pmd(void) +{ + uint32_t data; + int ret; + + ret = ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(PMD_CLOCK_REG), &data); + if (ret) { + printk("Failed to ReadBPCMRegister CHIP_CLKRST block " + "CLKRST_XTAL_CNTL. Error=%d\n", ret); + return; + } + + data |= (0x1 << CLOCK_RESET_XTAL_CONTROL_BIT_PD_DRV); +#if IS_BCMCHIP(6878) + data &= ~(0x1 << CLOCK_RESET_XTAL_CONTROL_BIT_PWRON); +#endif + + ret = WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(PMD_CLOCK_REG), data); + if (ret) + printk("Failed to writeBPCMRegister CHIP_CLKRST block " + "CLKRST_XTAL_CNTL. Error=%d\n", ret); + +#if IS_BCMCHIP(6878) + ret = + ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(PMD_CLOCK_REG2), &data); + if (ret) { + printk("Failed to ReadBPCMRegister CHIP_CLKRST block " + "PMD_XTAL_CNTL2. Error=%d\n", ret); + return; + } + + data |= (0x1 << CLOCK_RESET_XTAL_CONTROL2_BIT_PD); + + ret = WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(PMD_CLOCK_REG2), data); + if (ret) + printk("Failed to writeBPCMRegister CHIP_CLKRST block " + "CLKRST_XTAL_CNTL2. Error=%d\n", ret); +#endif +} +EXPORT_SYMBOL(disable_25mhz_clk_to_pmd); +#endif + +void set_vreg_clk(void) +{ +#if IS_BCMCHIP(63178) || IS_BCMCHIP(63146) + int ret; + BPCM_CLKRST_VREG_CONTROL vreg_control_reg; + + vreg_control_reg.Bits.enable = 1; + vreg_control_reg.Bits.counter = 0x24; +#if IS_BCMCHIP(63146) + vreg_control_reg.Bits.counter = 0x32; +#endif + ret = WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(vreg_control), + vreg_control_reg.Reg32); + if (ret) + printk("Failed to writeBPCMRegister CHIP_CLKRST block " + "VREG_CONTROL. Error=%d\n", ret); +#endif +} +EXPORT_SYMBOL(set_vreg_clk); diff --git a/arch/arm/mach-bcmbca/pmc/clk_rst.h b/arch/arm/mach-bcmbca/pmc/clk_rst.h new file mode 100755 index 0000000000..77fc1424f6 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/clk_rst.h @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef CLK_RST_H +#define CLK_RST_H + +#ifndef IS_BCMCHIP +#define IS_BCMCHIP(num) (defined(_BCM9##num##_)||defined(CONFIG_BCM9##num)||\ + defined(CONFIG_BCM##num)) +#endif + +// pll dividers +struct PLL_DIVIDERS { + unsigned int pdiv; + unsigned int ndiv_int; + unsigned int ndiv_frac; + unsigned int ka; + unsigned int ki; + unsigned int kp; +}; + +int pll_vco_freq_set(unsigned int pll_addr, struct PLL_DIVIDERS *divs); +int pll_ch_reset(unsigned int pll_addr, unsigned int ch, unsigned int pll_reg_offset); +int pll_ch_freq_set(unsigned int pll_addr, unsigned int ch, unsigned int mdiv); +int pll_ch_freq_get(unsigned int pll_addr, unsigned int ch, unsigned int *freq); +int ddr_freq_set(unsigned long freq); +int viper_freq_set(unsigned long freq); +int rdp_freq_set(unsigned long freq); +unsigned long get_rdp_freq(unsigned int *rdp_freq); +#if IS_BCMCHIP(6858) || IS_BCMCHIP(6856) || IS_BCMCHIP(6878) || IS_BCMCHIP(6855) +int pll_vco_freq_get(unsigned int pll_addr, unsigned int *fvco); +int pll_ch_freq_vco_set(unsigned int pll_addr, unsigned int ch, + unsigned int mdiv, unsigned int use_vco); +#endif + +#if IS_BCMCHIP(6855) +int pll_vco_config(unsigned int pll_addr, unsigned int ndivider, unsigned int pdivider); +#endif + +void set_vreg_clk(void); + +#if IS_BCMCHIP(6858) + +typedef enum { + BCM_CPU_CLK_HIGH, + BCM_CPU_CLK_LOW +} BCM_CPU_CLK; + +int bcm_change_cpu_clk(BCM_CPU_CLK clock); + +#endif + +#if IS_BCMCHIP(6858) || IS_BCMCHIP(6855) +#define XRDPPLL_RUNNER_CHANNEL 0 +#endif +#if IS_BCMCHIP(6856) || IS_BCMCHIP(6846) +#define XRDPPLL_RUNNER_CHANNEL 1 +#endif +#if IS_BCMCHIP(6878) +#define SYSPLL_RUNNER_CHANNEL 0 +#endif +#if IS_BCMCHIP(63158) +/* TBD. Verify value. */ +#define XRDPPLL_RUNNER_CHANNEL 1 +#endif +#endif //#ifndef CLK_RST_H diff --git a/arch/arm/mach-bcmbca/pmc/command.h b/arch/arm/mach-bcmbca/pmc/command.h new file mode 100755 index 0000000000..5d770d5d9d --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/command.h @@ -0,0 +1,275 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef PMCCOMMAND_H +#define PMCCOMMAND_H + +#include "pmc_drv.h" + +typedef union { + struct { + uint32_t cmdID:8; + uint32_t error:8; + uint32_t msgID:8; + uint32_t srcPort:8; + } Bits; + uint32_t Reg32; +} TCommandWord0; + +#ifdef PMC_IMPL_3_X +typedef union { + struct { + uint32_t devAddr:16; // [15:00] bus in upper nibble (only values of 0-7 are allowed), device address in lower 12 bits (4096 devices = 0..4095) + uint32_t zoneIdx:10; // [25:16] maximum 1023 registers/zone (0..1022) + uint32_t island:4; // [27:26] maximum 15 power islands (0..15) (island 15 = ALL islands! + uint32_t reserved:2; // [31:28] + } Bits; + uint32_t Reg32; +} TCommandWord1; +#else +typedef union { + struct { + uint32_t zoneIdx:10; + uint32_t devAddr:10; + uint32_t island:4; + uint32_t logNum:8; + } Bits; + uint32_t Reg32; +} TCommandWord1; +#endif + +// Ping, GetNextLogEntry, GetRMON and Sigma +typedef struct { + uint32_t unused[2]; +} TCommandNoParams; + +typedef struct { + uint32_t params[2]; +} TCommandGenericParams; + +// PowerZoneOnOff, SetRunState, SetPowerState +typedef struct { +#if defined(PMC_CPU_BIG_ENDIAN) + uint8_t reserved[3]; + uint8_t state; +#else + uint8_t state; + uint8_t reserved[3]; +#endif + uint32_t unused; +} TCommandStateOnly; + +// PowerDevOnOff +typedef struct { +#if defined(PMC_CPU_BIG_ENDIAN) + uint8_t reserved[2]; + uint8_t restore; + uint8_t state; +#else + uint8_t state; + uint8_t restore; + uint8_t reserved[2]; +#endif + uint32_t unused; +} TCommandPowerDevice; + +// PowerOffIsland +typedef struct { +#if defined(PMC_CPU_BIG_ENDIAN) + uint8_t reserved[3]; + uint8_t restore; +#else + uint8_t restore; + uint8_t reserved[3]; +#endif + uint32_t unused; +} TCommandPowerIsland; + +// SetClockLowGear, SetClockHighGear +typedef struct { +#if defined(PMC_CPU_BIG_ENDIAN) + uint8_t reserved[3]; + uint8_t clkN; +#else + uint8_t clkN; + uint8_t reserved[3]; +#endif + uint32_t unused; +} TCommandSetClockN; + +// SetClockGear +typedef struct { +#if defined(PMC_CPU_BIG_ENDIAN) + uint8_t reserved[3]; + uint8_t gear; +#else + uint8_t gear; + uint8_t reserved[3]; +#endif + uint32_t unused; +} TCommandSetClockGear; + +typedef struct { +#if defined(PMC_CPU_BIG_ENDIAN) + uint8_t unused1; + uint8_t numTokens; + uint8_t tokenSize; + uint8_t queueNumber; + uint16_t unused2; + uint8_t high_watermark; + uint8_t low_watermark; +#else + uint8_t queueNumber; + uint8_t tokenSize; + uint8_t numTokens; + uint8_t unused1; + uint8_t low_watermark; + uint8_t high_watermark; + uint16_t unused2; +#endif +} TCommandAllocDQM; + +typedef struct { + uint32_t phy_src_addr; + uint32_t dest_addr; // lower 8 bits **may** be log2 window size +} TCommandJumpApp; + +typedef struct { +#if defined(PMC_IMPL_3_X) || IS_BCMCHIP(63158) + union { + uint32_t word2; + struct { + uint16_t margin_mv_slow; + uint16_t maximum_mv; + }; + }; + union { + uint32_t word3; + struct { + uint16_t margin_mv_fast; + uint16_t minimum_mv; + }; + }; +#else + uint32_t margin_mv_slow; + uint32_t margin_mv_fast; +#endif +} TCommandCloseAVS; + +typedef struct { + uint32_t word2; + uint32_t word3; +} TCommandResponse; + +typedef struct { + TCommandWord0 word0; + TCommandWord1 word1; + union { + TCommandNoParams cmdNoParams; + TCommandGenericParams cmdGenericParams; + TCommandStateOnly cmdStateOnlyParam; + TCommandPowerDevice cmdPowerDevice; + TCommandPowerIsland cmdPowerIsland; + TCommandSetClockN cmdSetClockN; + TCommandSetClockGear cmdSetClockGear; + TCommandAllocDQM cmdAllocDqm; + TCommandJumpApp cmdJumpApp; + TCommandCloseAVS cmdCloseAVS; + TCommandResponse cmdResponse; + } u; +} TCommand; + +// special values to select all devices/zones +#define ALL_DEVICES 0x3ff +#define ALL_ZONES 0x3ff + +// used in validate caller to prevent/allow restrictions on island, device and/or zone +#define ANY_ISLAND 998 +#define ANY_DEVICE 1024 +#define ANY_ZONE 1024 +#define NO_ISLAND 999 +#define NO_DEVICE 1025 +#define NO_ZONE 1025 + +// error codes +enum { + NO_ERROR = 0, + INVALID_ISLAND, + INVALID_DEVICE, + INVALID_ZONE, + INVALID_STATE, + INVALID_COMMAND, + LOG_EMPTY, + INVALID_PARAM, + BPCM_READ_TIMEOUT, + INVALID_BUS, + INVALID_QUEUE_NUMBER, + QUEUE_NOT_AVAILABLE, + INVALID_TOKEN_SIZE, + INVALID_WATERMARKS, + INSUFFIENT_QSM_MEMORY_AVAILABLE, + INVALID_BOOT_COMMAND, + BPCM_WRITE_TIMEOUT, + CMD_TABLE_FULL, + CMD_TABLE_LOCKED, +}; + +// command codes +enum { + // low-level commands + cmdReserved = 0, + cmdGetDevPresence, + cmdGetSWStrap, + cmdGetHWRev, + cmdGetNumZones, + cmdPing, + cmdGetNextLogEntry, + cmdGetRMON, + cmdSetClockHighGear, + cmdSetClockLowGear, + cmdSetClockGear, + cmdReadBpcmReg, + cmdReadZoneReg, + cmdWriteBpcmReg, + cmdWriteZoneReg, + // general-purpose high-level commands + cmdSetRunState, + cmdSetPowerState, + cmdShutdownAllowed, + cmdGetSelect0, + cmdGetSelect3, + cmdGetAvsDisableState, + cmdGetPVT, + // specific-purpose high-level commands + cmdPowerDevOnOff, + cmdPowerZoneOnOff, + cmdResetDevice, + cmdResetZone, + cmdAllocateG2UDQM, + cmdQSMAvailable, + cmdRevision, + cmdRegisterCmdHandler, + cmdFindUnusedCommand, + cmdLockCmdTable, + cmdJumpApp, + cmdStall, + cmdCloseAVS, + cmdReadROs, + cmdGetTrackTemp, + cmdSetTrackTemp, +#ifdef PMC_IMPL_3_X + cmdGetIslandStatus, + cmdGetTMON, + cmdSetTemperatureThresholds, + cmdResetTemperatureWarning, +#endif +}; + +extern void ProcessCommand(TCommand * cmd, TCommand * response); + +#endif // PMCCOMMAND_H diff --git a/arch/arm/mach-bcmbca/pmc/pmc_drv.c b/arch/arm/mach-bcmbca/pmc/pmc_drv.c new file mode 100755 index 0000000000..1c5c771206 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_drv.c @@ -0,0 +1,1135 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +/* + +*/ + +/***************************************************************************** + * Description: + * Common code for PMC Linux, U-Boot, and ATF drivers + *****************************************************************************/ + +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#include "command.h" + +#if IS_BCMCHIP(6858) || defined(PMC_IMPL_3_X) +// #include "bcm_otp.h" // TODO: add back this after implenting otp util +#include "clk_rst.h" +#endif + +int pmc_mode = PMC_MODE_DQM; + +#ifdef PMC_LOG_IN_DTCM +void pmc_show_log_item(void) +{ + unsigned short i, item_sz; + char * dtcm = (char *) PROCMON->dtcm; + + item_sz = PMC->ctrl.hostMboxOut >> 16; + + for (i = 0; i < item_sz; i++) + printk("%c", dtcm[i]); + + if (item_sz) // reset the item_sz to 0 + PMC->ctrl.hostMboxOut &= 0xffff; +} + +void pmc_save_log_item(void) +{ + char *buf = (char *) phys_to_virt(CFG_BOOT_PMC_LOG_ADDR); + unsigned short *plen = (unsigned short *) buf; + char *dst = buf + sizeof(*plen) + *plen; + unsigned short item_sz = PMC->ctrl.hostMboxOut >> 16; + char *dtcm = (char *) PROCMON->dtcm; + int i = 0; + + while (i < item_sz && *plen < CFG_BOOT_PMC_LOG_SIZE - sizeof(*plen)) { + dst[i] = dtcm[i]; + i++; + (*plen)++; + } + + if (item_sz) // reset the item_sz to 0 + PMC->ctrl.hostMboxOut &= 0xffff; +} +#endif // #ifdef PMC_LOG_IN_DTCM + +static int SendAndWait(TCommand * cmd, TCommand * rsp) +{ +#if defined(PMC_ON_HOSTCPU) + rsp->u.cmdGenericParams.params[0] = 0; + rsp->u.cmdGenericParams.params[1] = 0; + return 0; +#else +#if IS_BCMCHIP(63138) + /* translate new cmdID into old cmdID that the pmc will understand NB: + * requires cmdIDs below to be the new versions + */ + + static const unsigned char newToOldcmdIDMap[] = { + [cmdSetRunState] = 64, // cmdSetRunState, + [cmdSetPowerState] = 65, // cmdSetPowerState, + [cmdShutdownAllowed] = 66, // cmdShutdownAllowed, + [cmdGetSelect0] = 67, // cmdGetSelect0, + [cmdGetSelect3] = 68, // cmdGetSelect3, + [cmdGetAvsDisableState] = 69, // cmdGetAvsDisableState, + [cmdGetPVT] = 70, // cmdGetPVT, + [cmdPowerDevOnOff] = 129, // cmdPowerDevOnOff, + [cmdPowerZoneOnOff] = 130, // cmdPowerZoneOnOff, + [cmdResetDevice] = 131, // cmdResetDevice, + [cmdResetZone] = 132, // cmdResetZone, + [cmdAllocateG2UDQM] = 133, // cmdAllocateG2UDQM, + [cmdQSMAvailable] = 134, // cmdQSMAvailable, + [cmdRevision] = 135, // cmdRevision, + }; + + static int pmc_remap = 0; +#endif + static uint32_t reqdID = 1; + int status = kPMC_COMMAND_TIMEOUT; + TCommand dummy; + +#if defined(BOOT_MEMC_SRAM) + reqdID = 1; +#endif + pmc_spin_lock(); + + /* clear previous rsp data if any */ + while (PMC->dqm.notEmptySts & PMC_DQM_RPL_STS) { + if (!rsp) + rsp = &dummy; + + rsp->word0.Reg32 = PMC->dqmQData[PMC_DQM_RPL_NUM].word[0]; + rsp->word1.Reg32 = PMC->dqmQData[PMC_DQM_RPL_NUM].word[1]; + rsp->u.cmdGenericParams.params[0] = + PMC->dqmQData[PMC_DQM_RPL_NUM].word[2]; + rsp->u.cmdGenericParams.params[1] = + PMC->dqmQData[PMC_DQM_RPL_NUM].word[3]; + + printk + ("PMC reqdID=%d previous rsp.word[0-3]=0x[%08x %08x %08x %08x] status=%d\n", + reqdID, rsp->word0.Reg32, rsp->word1.Reg32, + rsp->u.cmdGenericParams.params[0], + rsp->u.cmdGenericParams.params[1], rsp->word0.Bits.error); + } + +#if IS_BCMCHIP(63138) + if (pmc_remap && cmd->word0.Bits.cmdID < sizeof newToOldcmdIDMap && + newToOldcmdIDMap[cmd->word0.Bits.cmdID]) + cmd->word0.Bits.cmdID = newToOldcmdIDMap[cmd->word0.Bits.cmdID]; +#endif + +#ifdef PMC_LOG_IN_DTCM + if (cmd->word0.Bits.cmdID == cmdCloseAVS) + PMC->ctrl.hostMboxOut = 1; // request sync dtcm log +#endif + + cmd->word0.Bits.msgID = reqdID; + + /* send the command */ + PMC->dqmQData[PMC_DQM_REQ_NUM].word[0] = cmd->word0.Reg32; + PMC->dqmQData[PMC_DQM_REQ_NUM].word[1] = cmd->word1.Reg32; + PMC->dqmQData[PMC_DQM_REQ_NUM].word[2] = + cmd->u.cmdGenericParams.params[0]; + PMC->dqmQData[PMC_DQM_REQ_NUM].word[3] = + cmd->u.cmdGenericParams.params[1]; + +#ifdef CONFIG_BRCM_IKOS + /* We do not enable PMC TIMER here for IKOS, or it will wait forever */ + while (!(PMC->dqm.notEmptySts & PMC_DQM_RPL_STS)) ; +#elif defined(PMC_IMPL_3_X) +#ifdef PMC_LOG_IN_DTCM + if (cmd->word0.Bits.cmdID == cmdCloseAVS) { + while (!(PMC->dqm.notEmptySts & PMC_DQM_RPL_STS)) + pmc_show_log_item(); + + PMC->ctrl.hostMboxOut = 0; // ignore dtcm log + } + else +#endif // #ifdef PMC_LOG_IN_DTCM + { + PMC->ctrl.gpTmr0Ctl = ((1 << 31) | (1 << 29) | + ((400000 << 1) & 0x1fffffff)); // 400ms + + while (!(PMC->dqm.notEmptySts & PMC_DQM_RPL_STS) && + (PMC->ctrl.gpTmr0Ctl & (1 << 31))) ; + } +#else + PMC->ctrl.gpTmr2Ctl = ((1 << 31) | (1 << 29) | 400000); // 400ms + + while (!(PMC->dqm.notEmptySts & PMC_DQM_RPL_STS) && + (PMC->ctrl.gpTmr2Ctl & (1 << 31))) { +#if (IS_BCMCHIP(63148) || IS_BCMCHIP(4908)) + /* Do not tight poll the PMC registers for longer command */ + if (cmd->word0.Bits.cmdID == cmdCloseAVS) + udelay(1000); +#endif + } +#endif /* CONFIG_BRCM_IKOS */ + + if (PMC->dqm.notEmptySts & PMC_DQM_RPL_STS) { + if (!rsp) + rsp = &dummy; + + /* command didn't timeout, fill in the response */ + rsp->word0.Reg32 = PMC->dqmQData[PMC_DQM_RPL_NUM].word[0]; + rsp->word1.Reg32 = PMC->dqmQData[PMC_DQM_RPL_NUM].word[1]; + rsp->u.cmdGenericParams.params[0] = + PMC->dqmQData[PMC_DQM_RPL_NUM].word[2]; + rsp->u.cmdGenericParams.params[1] = + PMC->dqmQData[PMC_DQM_RPL_NUM].word[3]; + + if (rsp->word0.Bits.msgID == reqdID) + status = rsp->word0.Bits.error; + else + status = kPMC_MESSAGE_ID_MISMATCH; + + if (status != kPMC_NO_ERROR) + printk + ("PMC reqdID=%d error=%d rsp.word[0-3]=0x[%08x %08x %08x %08x]\n", + reqdID, status, rsp->word0.Reg32, rsp->word1.Reg32, + rsp->u.cmdGenericParams.params[0], + rsp->u.cmdGenericParams.params[1]); + } + + reqdID = (reqdID + 1) & 0xff; + + pmc_spin_unlock(); + + return status; +#endif +} + +static int SendCmd(TCommand * cmd, int cmdID, int devAddr, int zone, int island, + TCommand * rsp) +{ + cmd->word0.Reg32 = 0; + cmd->word0.Bits.cmdID = cmdID; + cmd->word1.Reg32 = 0; + cmd->word1.Bits.devAddr = devAddr; + cmd->word1.Bits.zoneIdx = zone; + cmd->word1.Bits.island = island; + + return SendAndWait(cmd, rsp); +} + +int SendCommand(int cmdID, int devAddr, int zone, int island, uint32_t word2, + uint32_t word3, TCommand * rsp) +{ + TCommand cmd; + + cmd.u.cmdGenericParams.params[0] = word2; + cmd.u.cmdGenericParams.params[1] = word3; + + return SendCmd(&cmd, cmdID, devAddr, zone, island, rsp); +} + +int GetRevision(uint32_t * change, uint32_t * revision) +{ + if (pmc_mode == PMC_MODE_DQM) { + TCommand rsp; + int status = SendCommand(cmdRevision, 0, 0, 0, 0, 0, &rsp); + + if (status == kPMC_NO_ERROR) { + *change = rsp.u.cmdResponse.word2; + *revision = rsp.u.cmdResponse.word3; + } + + return status; + } else + return kPMC_INVALID_COMMAND; +} +EXPORT_SYMBOL(GetRevision); + +#if defined(PMC_IMPL_3_X) || defined(PMC_ON_HOSTCPU) +#define KEYHOLE_IDX 0 + +int read_bpcm_reg_direct(int devAddr, int wordOffset, uint32_t * value) +{ + int status = kPMC_NO_ERROR; + int bus = (devAddr >> PMB_BUS_ID_SHIFT) & 0x3; + uint32_t address, ctlSts; + volatile PMB_keyhole_reg *keyhole = &PMB->keyhole[KEYHOLE_IDX]; + + + address = + ((devAddr & 0xff) * + ((PMB-> + config >> PMB_NUM_REGS_SHIFT) & PMB_NUM_REGS_MASK)) | + (wordOffset); + + keyhole->control = + PMC_PMBM_START | (bus << PMC_PMBM_BUS_SHIFT) | (PMC_PMBM_Read) | + address; + ctlSts = keyhole->control; + while (ctlSts & PMC_PMBM_BUSY) + ctlSts = keyhole->control; /*wait for completion */ + + if (ctlSts & PMC_PMBM_TIMEOUT) + status = kPMC_COMMAND_TIMEOUT; + else + *value = keyhole->rd_data; + + return status; +} + +int write_bpcm_reg_direct(int devAddr, int wordOffset, uint32_t value) +{ + int status = kPMC_NO_ERROR; + int bus = (devAddr >> PMB_BUS_ID_SHIFT) & 0x3; + uint32_t address, ctlSts; + volatile PMB_keyhole_reg *keyhole = &PMB->keyhole[KEYHOLE_IDX]; + + address = + ((devAddr & 0xff) * + ((PMB-> + config >> PMB_NUM_REGS_SHIFT) & PMB_NUM_REGS_MASK)) | + (wordOffset); + keyhole->wr_data = value; + keyhole->control = + PMC_PMBM_START | (bus << PMC_PMBM_BUS_SHIFT) | (PMC_PMBM_Write) | + address; + + ctlSts = keyhole->control; + while (ctlSts & PMC_PMBM_BUSY) + ctlSts = keyhole->control; /*wait for completion */ + + if (ctlSts & PMC_PMBM_TIMEOUT) + status = kPMC_COMMAND_TIMEOUT; + + return status; +} + +static int is_pvtmon_enabled = 0; +static void pvtmon_enable(void) +{ + uint32_t index; + uint32_t target; +#define PVTCLKDIV (5 << 8) + + pmc_spin_lock(); + + // set up analog hardware to enable counting + target = PVTCLKDIV | 4; // 4 = clk_en|!pwr_dn|rstb + write_bpcm_reg_direct(PMB_ADDR_PVTMON, 17, target); + for (index = 0; index < 100000; index++) ; + target = PVTCLKDIV | 5; // 5 = clk_en|!pwr_dn|!rstb + write_bpcm_reg_direct(PMB_ADDR_PVTMON, 17, target); + + // set sample size of ALL counters except TEST (7) + // set enable bit for ONLY 0 (temperature and external) and V1p0<0> - these will be the only ones we use during Match and Closure + for (index = 0; index < 8; index++) { + target = (0x5 << 24) | 0x80000000; //pvtmon samples (32 [2^5]) + enable + write_bpcm_reg_direct(PMB_ADDR_PVTMON, 24 + index, target); + read_bpcm_reg_direct(PMB_ADDR_PVTMON, 24 + index, &target); // read once to clear valid bit + } + + // enable accumulation: + // 0x00000801 = skip_len = 8, enable accumulation + target = 0x00000801; + write_bpcm_reg_direct(PMB_ADDR_PVTMON, 20, target); + is_pvtmon_enabled = 1; + + pmc_spin_unlock(); +} + +#ifndef unlikely +#define unlikely(x) (x) +#endif +static int read_pvt_direct(int index, int *val) +{ + int status; + uint32_t target; + + // assuming PVTMON already enabled in DQM mode + if (unlikely((pmc_mode != PMC_MODE_DQM) && !is_pvtmon_enabled)) + pvtmon_enable(); + + status = read_bpcm_reg_direct(PMB_ADDR_PVTMON, 24 + index, &target); + if (unlikely(status)) + goto EXIT; + + while (!(target & (1 << 18))) { + // the value SHOULD be valid immediatly, but just in case... + status = + read_bpcm_reg_direct(PMB_ADDR_PVTMON, 24 + index, &target); + if (unlikely(status)) + goto EXIT; + } + + *val = target & 0x3ff; + +EXIT: + return status; +} + +int GetPVT(int sel, int island, int *value) +{ + return read_pvt_direct(sel, value); +} +#else // #if defined(PMC_IMPL_3_X) || defined(PMC_ON_HOSTCPU) +int read_bpcm_reg_direct(int devAddr, int wordOffset, uint32_t * value) +{ + int status = kPMC_NO_ERROR; + int bus = (devAddr >> PMB_BUS_ID_SHIFT) & 0x3; + volatile PMBMaster *pmbm_ptr; + + if (bus >= PMB_BUS_MAX) + return kPMC_INVALID_BUS; + + pmbm_ptr = &(PROCMON->PMBM[bus]); + + /* Make sure PMBM is not busy */ + + pmbm_ptr->ctrl = PMC_PMBM_START | PMC_PMBM_Read | + ((devAddr & 0xff) << 12) | wordOffset; + + while (pmbm_ptr->ctrl & PMC_PMBM_START) ; + + if (pmbm_ptr->ctrl & PMC_PMBM_TIMEOUT) + status = kPMC_COMMAND_TIMEOUT; + else + *value = pmbm_ptr->rd_data; + + return status; +} + +int write_bpcm_reg_direct(int devAddr, int wordOffset, uint32_t value) +{ + int bus = (devAddr >> PMB_BUS_ID_SHIFT) & 0x3; + int status = kPMC_NO_ERROR; + volatile PMBMaster *pmbm_ptr; + if (bus >= PMB_BUS_MAX) + return kPMC_INVALID_BUS; + + pmbm_ptr = &(PROCMON->PMBM[bus]); + + pmbm_ptr->wr_data = value; + pmbm_ptr->ctrl = PMC_PMBM_START | PMC_PMBM_Write | + ((devAddr & 0xff) << 12) | wordOffset; + + while (pmbm_ptr->ctrl & PMC_PMBM_START) ; + + if (pmbm_ptr->ctrl & PMC_PMBM_TIMEOUT) + status = kPMC_COMMAND_TIMEOUT; + + return status; +} + +int GetPVT(int sel, int island, int *value) +{ + if (pmc_mode == PMC_MODE_DQM) { + TCommand rsp; + int status = SendCommand(cmdGetPVT, 0, 0, island, sel, 0, &rsp); + + if (status == kPMC_NO_ERROR) + *value = rsp.u.cmdResponse.word2; + return status; + } else + return kPMC_INVALID_COMMAND; +} +#endif // #if defined(PMC_IMPL_3_X) || defined(PMC_ON_HOSTCPU) +EXPORT_SYMBOL(GetPVT); + +/* GetRCalSetting reads resistor value and calculates the calibration setting for the SGMII, PCIe, SATA + and USB HW blocks that requires resistor calibration to meet specification requirement. + The HW driver should call this function and write the value to calibration register during initialzation + + input param: resistor - the resistor type that specific HW calibration care about: + inout param: rcal - 4 bit RCAL value [0 -15] representing the increment or decrement to the internal resistor. + return: kPMC_NO_ERROR or kPMC_INVALID_COMMAND if error condition +*/ +int GetRCalSetting(int resistor, int *rcal) +{ +#if defined(PMC_GETRCAL_SUPPORT) + int res_int, res_ext, ratio, ratio1; + int rc = kPMC_NO_ERROR; + + if (pmc_mode == PMC_MODE_DQM) { +#if IS_BCMCHIP(63178) || IS_BCMCHIP(47622) || IS_BCMCHIP(6756) + TCommand rsp; + int status; + + /* make sure the resistor selection is valid */ + /* Not supporting the other resistors because there is no room in DQM RSP */ + if (resistor < RCAL_1UM_HORZ || resistor > RCAL_1UM_VERT) + return kPMC_INVALID_COMMAND; + + status = SendCommand(cmdGetRMON, 0, 0, 0, 0, 0, &rsp); + if (status != kPMC_NO_ERROR) + return kPMC_INVALID_COMMAND; + + /* make sure the resistor data is collected by PMC */ + if (!(rsp.u.cmdResponse.word3 & (1 << 16))) + return kPMC_INVALID_STATE; + + res_int = rsp.u.cmdResponse.word2; + res_ext = rsp.u.cmdResponse.word3 & 0xffff; +#else + /* make sure the resistor selection is valid */ + if (resistor < RCAL_0P25UM_HORZ || resistor > RCAL_1UM_VERT) + return kPMC_INVALID_COMMAND; + + /* make sure the resistor data is collected by PMC */ + if ((PROCMON->Misc. + misc[PMMISC_RMON_EXT_REG] & PMMISC_RMON_VALID_MASK) == 0) + return kPMC_INVALID_COMMAND; + + res_int = PROCMON->Misc.misc[resistor >> 1]; + res_ext = (PROCMON->Misc.misc[PMMISC_RMON_EXT_REG]) & 0xffff; +#endif + if (resistor % 2) + res_int >>= 16; + res_int &= 0xffff; + + /* Return error if the res_ext saturated such as + the ext resistor is not available */ + if (res_ext > 0x3a0) { + printk("%s:res_ext value 0x%x is saturated!\n", + __func__, res_ext); + return kPMC_INVALID_STATE; + } + + /* Ratio = CLAMP((INT) (128.0 * V(REXT)/V(RINT)), 0, 255) */ + ratio = (128 * res_ext) / res_int; + if (ratio > 255) + ratio = 255; + + /* Ratio1 = CLAMP(128 - (Ratio - 128) * 4, 0, 255) */ + ratio1 = (128 - (ratio - 128) * 4); + if (ratio1 < 0) + ratio1 = 0; + if (ratio1 > 255) + ratio1 = 255; + + /* convert to 4 bit rcal setting value */ + *rcal = (ratio1 >> 4) & 0xf; +#if 1 + printk + ("getrcal for res select %d, int %d, ext %d, ratio %d ratio1 %d, rcal %d\n", + resistor, res_int, res_ext, ratio, ratio1, *rcal); +#endif + } else { + /* not supported if PMC is not running for now. To support that, need to copy the PMC rom + code to read out resistor value manually */ + rc = kPMC_INVALID_COMMAND; + } + + return rc; +#else + return kPMC_INVALID_COMMAND; +#endif +} + +EXPORT_SYMBOL(GetRCalSetting); + +/* note: all the [Read|Write][BPCM|Zone]Register functions are different from + * how they are defined in firmware code. In the driver code, it takes in + * wordOffset as the argument, but in the firmware code, it uses byteOffset */ +int ReadBPCMRegister(int devAddr, int wordOffset, uint32_t * value) +{ + int status = kPMC_INVALID_STATE; + + if (PMC_ACCESS_BPCM_DIRECT || pmc_mode == PMC_MODE_PMB_DIRECT) { + pmc_spin_lock(); + status = read_bpcm_reg_direct(devAddr, wordOffset, value); + pmc_spin_unlock(); + } else if (pmc_mode == PMC_MODE_DQM) { + TCommand rsp; + status = + SendCommand(cmdReadBpcmReg, devAddr, 0, 0, wordOffset, 0, + &rsp); + + if (status == kPMC_NO_ERROR) + *value = rsp.u.cmdResponse.word2; + } + + return status; +} + +EXPORT_SYMBOL(ReadBPCMRegister); + +int ReadZoneRegister(int devAddr, int zone, int wordOffset, uint32_t * value) +{ + int status = kPMC_INVALID_STATE; + + if ((unsigned)wordOffset >= 4) + return kPMC_INVALID_PARAM; + + if (PMC_ACCESS_BPCM_DIRECT || pmc_mode == PMC_MODE_PMB_DIRECT) + return ReadBPCMRegister(devAddr, + BPCMRegOffset(zones[zone].control) + + wordOffset, value); + + if (pmc_mode == PMC_MODE_DQM) { + TCommand rsp; + + status = + SendCommand(cmdReadZoneReg, devAddr, zone, 0, wordOffset, 0, + &rsp); + if (status == kPMC_NO_ERROR) + *value = rsp.u.cmdResponse.word2; + } + + return status; +} + +EXPORT_SYMBOL(ReadZoneRegister); + +int WriteBPCMRegister(int devAddr, int wordOffset, uint32_t value) +{ + int status = kPMC_INVALID_STATE; + + if (PMC_ACCESS_BPCM_DIRECT || pmc_mode == PMC_MODE_PMB_DIRECT) { + pmc_spin_lock(); + status = write_bpcm_reg_direct(devAddr, wordOffset, value); + pmc_spin_unlock(); + } else if (pmc_mode == PMC_MODE_DQM) { + status = + SendCommand(cmdWriteBpcmReg, devAddr, 0, 0, wordOffset, + value, 0); + } + + return status; +} + +EXPORT_SYMBOL(WriteBPCMRegister); + +int WriteZoneRegister(int devAddr, int zone, int wordOffset, uint32_t value) +{ + if ((unsigned)wordOffset >= 4) + return kPMC_INVALID_PARAM; + + if (PMC_ACCESS_BPCM_DIRECT || pmc_mode == PMC_MODE_PMB_DIRECT) + return WriteBPCMRegister(devAddr, + BPCMRegOffset(zones[zone].control) + + wordOffset, value); + + if (pmc_mode == PMC_MODE_DQM) + return SendCommand(cmdWriteZoneReg, devAddr, zone, 0, + wordOffset, value, 0); + + return kPMC_INVALID_STATE; +} + +EXPORT_SYMBOL(WriteZoneRegister); + +int PowerOnDevice(int devAddr) +{ + if (PMC_ACCESS_BPCM_DIRECT || pmc_mode == PMC_MODE_PMB_DIRECT) { + int ix, status; + BPCM_CAPABILITES_REG capabilities; + + status = + ReadBPCMRegister(devAddr, BPCMRegOffset(capabilities), + &capabilities.Reg32); + for (ix = 0; + (ix < capabilities.Bits.num_zones) + && (status == kPMC_NO_ERROR); ix++) { + status = PowerOnZone(devAddr, ix); + } + + return status; + } + + if (pmc_mode == PMC_MODE_DQM) { + TCommand cmd = {0}; + cmd.u.cmdPowerDevice.state = 1; + return SendCmd(&cmd, cmdPowerDevOnOff, devAddr, 0, 0, 0); + } + + return kPMC_INVALID_STATE; +} + +EXPORT_SYMBOL(PowerOnDevice); + +int PowerOffDevice(int devAddr, int repower) +{ + if (PMC_ACCESS_BPCM_DIRECT || pmc_mode == PMC_MODE_PMB_DIRECT) { + /* we can power off the entire device by powering off the 0th zone. */ + BPCM_PWR_ZONE_N_CONTROL reg; + int status; + + status = + ReadBPCMRegister(devAddr, BPCMRegOffset(zones[0].control), + ®.Reg32); + + if (status == kPMC_NO_ERROR && reg.Bits.pwr_off_state == 0) { + reg.Bits.pwr_dn_req = 1; + WriteBPCMRegister(devAddr, + BPCMRegOffset(zones[0].control), + reg.Reg32); + } + + return status; + } + + if (pmc_mode == PMC_MODE_DQM) { + TCommand cmd = {0}; + cmd.u.cmdPowerDevice.state = 0; + cmd.u.cmdPowerDevice.restore = repower; + return SendCmd(&cmd, cmdPowerDevOnOff, devAddr, 0, 0, 0); + } + + return kPMC_INVALID_STATE; +} + +EXPORT_SYMBOL(PowerOffDevice); + +int PowerOnZone(int devAddr, int zone) +{ + BPCM_PWR_ZONE_N_CONTROL reg; + int status; + +#if IS_BCMCHIP(6858) + /* Do not use DQM command cmdPowerZoneOnOff for non 6858 because this command is only available if a + PMC application has been uploaded to expand the PMC boot rom functionality */ + if (pmc_mode == PMC_MODE_DQM) { + TCommand cmd = {0}; + cmd.u.cmdStateOnlyParam.state = 1; + return SendCmd(&cmd, cmdPowerZoneOnOff, devAddr, zone, 0, 0); + } +#endif + + status = + ReadBPCMRegister(devAddr, BPCMRegOffset(zones[zone].control), + ®.Reg32); + if (status == kPMC_NO_ERROR && reg.Bits.pwr_on_state == 0) { + reg.Bits.pwr_dn_req = 0; + reg.Bits.dpg_ctl_en = 1; + reg.Bits.pwr_up_req = 1; + reg.Bits.mem_pwr_ctl_en = 1; + reg.Bits.blk_reset_assert = 1; + status = + WriteBPCMRegister(devAddr, + BPCMRegOffset(zones[zone].control), + reg.Reg32); + } + return status; +} + +EXPORT_SYMBOL(PowerOnZone); + +int PowerOffZone(int devAddr, int zone) +{ + BPCM_PWR_ZONE_N_CONTROL reg; + int status; + +#if IS_BCMCHIP(6858) + /* Do not use DQM command cmdPowerZoneOnOff for non 6858 because this command is only available if a + PMC application has been uploaded to expand the PMC boot rom functionality */ + if (pmc_mode == PMC_MODE_DQM) { + TCommand cmd = {0}; + cmd.u.cmdStateOnlyParam.state = 0; + return SendCmd(&cmd, cmdPowerZoneOnOff, devAddr, zone, 0, 0); + } +#endif + + status = + ReadBPCMRegister(devAddr, BPCMRegOffset(zones[zone].control), + ®.Reg32); + if (status == kPMC_NO_ERROR) { + reg.Bits.pwr_dn_req = 1; + reg.Bits.pwr_up_req = 0; + status = + WriteBPCMRegister(devAddr, + BPCMRegOffset(zones[zone].control), + reg.Reg32); + } + return status; +} + +EXPORT_SYMBOL(PowerOffZone); + +int ResetDevice(int devAddr) +{ + /* all zones had their blk_reset_assert bits set at initial config time */ + BPCM_PWR_ZONE_N_CONTROL reg; + int status; + +#if IS_BCMCHIP(6858) + /* Do not use DQM command cmdResetDevice for non 6858 because this command is only available if a + PMC application has been uploaded to expand the PMC boot rom functionality */ + if (pmc_mode == PMC_MODE_DQM) + return SendCommand(cmdResetDevice, devAddr, 0, 0, 0, 0, 0); +#endif + + status = PowerOffDevice(devAddr, 0); + do { + status = + ReadBPCMRegister(devAddr, BPCMRegOffset(zones[0].control), + ®.Reg32); + } while ((reg.Bits.pwr_off_state != 1) && (status == kPMC_NO_ERROR)); + if (status == kPMC_NO_ERROR) + status = PowerOnDevice(devAddr); + return status; +} + +EXPORT_SYMBOL(ResetDevice); + +int ResetZone(int devAddr, int zone) +{ + BPCM_PWR_ZONE_N_CONTROL reg; + int status; + +#if IS_BCMCHIP(6858) + /* Do not use DQM command cmdResetZone for non 6858 because this command is only available if a + PMC application has been uploaded to expand the PMC boot rom functionality */ + if (pmc_mode == PMC_MODE_DQM) + return SendCommand(cmdResetZone, devAddr, zone, 0, 0, 0, 0); +#endif + + status = PowerOffZone(devAddr, zone); + do { + status = + ReadBPCMRegister(devAddr, + BPCMRegOffset(zones[zone].control), + ®.Reg32); + } while ((reg.Bits.pwr_off_state != 1) && (status == kPMC_NO_ERROR)); + if (status == kPMC_NO_ERROR) + status = PowerOnZone(devAddr, zone); + return status; +} + +EXPORT_SYMBOL(ResetZone); + +/* close AVS with margin slow, fast, max, min (mV) */ +int CloseAVS(int island, unsigned short margin_mv_slow, + unsigned short margin_mv_fast, unsigned short maximum_mv, + unsigned short minimum_mv) +{ + if (pmc_mode == PMC_MODE_DQM) { + TCommand rsp; + int status; + +#if defined(PMC_IMPL_3_X) || IS_BCMCHIP(63158) + TCommandCloseAVS ca; + + if (minimum_mv && maximum_mv && (minimum_mv > maximum_mv)) + return kPMC_INVALID_PARAM; + + ca.margin_mv_slow = margin_mv_slow; + ca.margin_mv_fast = margin_mv_fast; + ca.maximum_mv = maximum_mv; + ca.minimum_mv = minimum_mv; + + status = SendCommand(cmdCloseAVS, 0, 0, island, + ca.word2, ca.word3, &rsp); +#else + status = SendCommand(cmdCloseAVS, 0, 0, island, + margin_mv_slow, margin_mv_fast, &rsp); +#endif + + return status; + } else + return kPMC_INVALID_COMMAND; +} + +EXPORT_SYMBOL(CloseAVS); + +#if !defined(PMC_ON_HOSTCPU) +int PMCcmd(int arg[4]) +{ + TCommand *cmd = (TCommand *) arg; + + return SendAndWait(cmd, cmd); +} + +#if PMC_BOOT_TMO_SECONDS +static void pmc_dump_misc_block_regs(void) +{ + static const struct { + uint32_t *offset; + uint32_t count; + const char *name; + } regs[] = { + { (void*)&PROCMON->maestroReg.coreCtrl.coreEnable, + 1, "corectrl_core_enable" }, + { (void*)&PROCMON->maestroReg.coreCtrl.coreResetCause, + 1, "corectrl_core_reset_cause" }, + { (void*)&PROCMON->maestroReg.coreCtrl.sysFlg0Status, + 1, "corectrl_sys_flg0_status" }, + { (void*)&PROCMON->maestroReg.coreCtrl.usrFlg0Status, + 1, "corectrl_usr_flg0_status" }, + { (void*)&PROCMON->maestroReg.coreCtrl.resetVector, + 1, "corectrl_reset_vector" }, + { (void*)&PROCMON->maestroReg.coreState.sysMbx[0], + 8, "corestate_sys_mbx0..7" }, + { (void*)&PROCMON->maestroReg.coreState.usrMbx[0], + 8, "corestate_usr_mbx0..7" }, + { (void*)&PROCMON->maestroReg.profile.lastConfPcLo, + 1, "profile_last_conf_pc_lo" }, + { (void*)&PROCMON->maestroReg.profile.lastPcLo, + 1, "profile_last_pc_lo" }, + { (void*)&PMC->ctrl.scratch, + 1, "control_scratch" }, + }; + + int i, j; + + for (i = 0; i < sizeof(regs) / sizeof(regs[0]); i++) { + printk("\tmd.l 0x%p %x ## %s", + regs[i].offset, regs[i].count, regs[i].name); + for (j = 0; j < regs[i].count; j++) { + if (!(j%4)) printk("\n%p:", regs[i].offset+j); + printk(" %08x", *(regs[i].offset + j)); + } + printk("\n"); + } +} +#endif + +void WaitPmc(int runState, void *pmc_log) +{ + int cur, failed; +#ifdef PMC_IMPL_3_X + char *log_buffer_start = (char *)(pmc_log)+4; + char *log_buffer_itter = log_buffer_start; +#endif + + if (pmc_mode != PMC_MODE_DQM) + return; + + failed = 0; +#if PMC_BOOT_TMO_SECONDS + PMC->ctrl.gpTmr0Ctl = (1 << 31) | (1 << 29) | + (((PMC_BOOT_TMO_SECONDS * 1000000) << 1) & 0x1fffffff); +#endif + + do { +#ifdef PMC_LOG_IN_DTCM + pmc_save_log_item(); +#endif + cur = PMC->ctrl.hostMboxIn; +#ifdef PMC_IMPL_3_X +#define PMC_CHIP_NOT_VALID (0x7<<5) + if ((cur & PMC_CHIP_NOT_VALID) == PMC_CHIP_NOT_VALID) { + printk("**ERR**: PMC firmware is not compatible to this chip\n"); + failed = 1; + PROCMON->maestroReg.coreCtrl.coreEnable = 0; + break; + } + +#if PMC_BOOT_TMO_SECONDS + if (!PROCMON->maestroReg.coreCtrl.coreEnable) { + printk("**ERR**: PMC firmware crashed\n"); + failed = 1; + pmc_dump_misc_block_regs(); + break; + } + if (!(PMC->ctrl.gpTmr0Ctl & (1 << 31))) { + printk("**ERR**: %u seconds passed\n", PMC_BOOT_TMO_SECONDS); + failed = 1; + PROCMON->maestroReg.coreCtrl.coreEnable = 0; + pmc_dump_misc_block_regs(); + break; + } +#endif + + if (pmc_log) + { + if (*(unsigned int *)(log_buffer_start - 4) == 0xc0ffee55) + { + while(*log_buffer_itter && *log_buffer_itter != 0xff) + { + printf("%c", *log_buffer_itter); + log_buffer_itter++; + if(log_buffer_itter == (log_buffer_start + CFG_BOOT_PMC_LOG_SIZE)) + log_buffer_itter = log_buffer_start; + } + } + } + +#else /* #ifdef PMC_IMPL_3_X */ + cur >>= 24; + /* Check if PMC is failing */ + if ((cur & 7) == kPMCRunStateStalled) { + failed = 1; + /* Leave PMC in reset state */ + PMC->ctrl.softResets = 0x1; + break; + } +#endif /* #ifdef PMC_IMPL_3_X */ + } while ((cur & 7) != runState); + + if (!failed) return; + + printk("**ERR**: PMC firmware failed to boot\n" + "\tPress any key to continue ...\n"); + while (!console_status()) ; + /* PMC is now in direct mode */ + pmc_mode = PMC_MODE_PMB_DIRECT; +} + +void BootPmcNoRom(unsigned long physAddr) +{ + PMC->ctrl.addr1WndwMask = 0xffffc000; + PMC->ctrl.addr1WndwBaseIn = 0x1fc00000; + PMC->ctrl.addr1WndwBaseOut = physAddr; + + PMC->ctrl.softResets &= ~1; +} +#endif + +/* new pmc firmware implements stall command */ +/* state indicated by stalled bit in run status */ + +#define PMC_STALLED (1 << 30) + +/* return value doesn't appear to be used */ +int StallPmc(void) +{ +#if defined(PMC_STALL_SUPPORT) + TCommand rsp; + + /* ignore if pmc not booted from flash or already stalled */ + if (pmc_mode == PMC_MODE_PMB_DIRECT || +#if defined MISC_STRAP_BUS_PMC_BOOT_FLASH + (MISC->miscStrapBus & MISC_STRAP_BUS_PMC_BOOT_FLASH) == 0 || +#else + (MISC->miscStrapBus & MISC_STRAP_BUS_PMC_BOOT_FLASH_N) != 0 || +#endif + PMC->ctrl.hostMboxIn & PMC_STALLED) + return 0; + + /* return non-zero if stall command fails */ + return SendCommand(cmdStall, 0, 0, 0, 0, 0, &rsp); +#else + return kPMC_INVALID_COMMAND; +#endif +} + +EXPORT_SYMBOL(StallPmc); + +/* return value doesn't appear to be used */ +int UnstallPmc(void) +{ +#if defined(PMC_STALL_SUPPORT) + /* clear stalled bit if pmc booted from flash */ + if ((pmc_mode != PMC_MODE_PMB_DIRECT) && +#if defined MISC_STRAP_BUS_PMC_BOOT_FLASH + ((MISC->miscStrapBus & MISC_STRAP_BUS_PMC_BOOT_FLASH) != 0)) +#else + ((MISC->miscStrapBus & MISC_STRAP_BUS_PMC_BOOT_FLASH_N) == 0)) +#endif + PMC->ctrl.hostMboxIn &= ~PMC_STALLED; + +#endif + return 0; +} + +EXPORT_SYMBOL(UnstallPmc); + +// initalize pmc_mode (possibly) before printk available +void pmc_initmode(void) +{ +#if defined MISC_STRAP_BUS_PMC_ROM_BOOT + /* read the strap pin and based on the strap pin, choose the mode */ + if ((MISC->miscStrapBus & MISC_STRAP_BUS_PMC_ROM_BOOT) == 0) + pmc_mode = PMC_MODE_PMB_DIRECT; +#else // #if defined MISC_STRAP_BUS_PMC_ROM_BOOT + pmc_mode = PMC_MODE_PMB_DIRECT; +#ifdef CFG_RAMAPP +#if IS_BCMCHIP(63158) + /* MIPS based PMC */ + if (PMC->ctrl.softResets == 0) + pmc_mode = PMC_MODE_DQM; +#elif defined(PMC_IMPL_3_X) + /* Maestro based PMC) */ + if (PROCMON->maestroReg.coreCtrl.coreEnable == 1) + pmc_mode = PMC_MODE_DQM; +#endif // #if IS_BCMCHIP(63158) +#endif // #ifdef CFG_RAMAPP +#endif // #if defined MISC_STRAP_BUS_PMC_ROM_BOOT +} + +void pmc_reset(void) +{ +#if IS_BCMCHIP(63158) + // First, make sure PMC core is held in reset + PMC->ctrl.softResets = 0x1; + // Set PVTMON in non-AVS mode + PMC->pvtmon[0].cfg_lo = PMC->pvtmon[0].cfg_lo & ~(0x7 << 10); + PMC->pvtmon[1].cfg_lo = PMC->pvtmon[1].cfg_lo & ~(0x7 << 10); + // PMC now in direct mode + pmc_mode = PMC_MODE_PMB_DIRECT; +#endif +} + +int pmc_convert_pvtmon(int sel, int value) +{ +#if IS_BCMCHIP(63146) || IS_BCMCHIP(4912) + switch (sel) { + case kTEMPERATURE: // convert value to milli-degree Celsius + return (45000000 - 54956 * value) / 100; + case kV_0p85_0: // convert value to milli-voltage + case kV_0p85_1: + case kV_VIN: + case kV_1p00_1: + return 9442 * value / (8 * 1024); + case kV_1p80: + return 9442 * value / (4 * 1024); + case kV_3p30: + return 9442 * value / (2 * 1024); + case kTEST: + return 9442 * value / 1024; + } +#else // #if IS_BCMCHIP(63146) || IS_BCMCHIP(4912) + switch (sel) { + case kTEMPERATURE: // convert value to milli-degree Celsius +#if IS_BCMCHIP(63148) // pvt2 + return (38887551 - 466415 * value / 10) / 100; +#elif defined(PMC_IMPL_3_X) || IS_BCMCHIP(6878) || IS_BCMCHIP(6855) + return (41335000 - 49055 * value) / 100; +#else + return (41004000 - 48705 * value) / 100; +#endif + case kV_0p85_0: // convert value to milli-voltage + case kV_0p85_1: + return 880 * value * 10 / (10 * 1024); + case kV_VIN: + case kV_1p00_1: + return 880 * value * 10 / (7 * 1024); + case kV_1p80: + return 880 * value * 10 / (4 * 1024); + case kV_3p30: + return 880 * value * 10 / (2 * 1024); + case kTEST: + return 880 * value / 1024; + } +#endif // #if IS_BCMCHIP(63146) || IS_BCMCHIP(4912) + + return -1; +} + +EXPORT_SYMBOL(pmc_convert_pvtmon); + +int pmc_get_tracktemp(int *status) +{ + TCommand rsp; + int ret; + + if (pmc_mode != PMC_MODE_DQM) + return kPMC_INVALID_COMMAND; + + ret = SendCommand(cmdGetTrackTemp, 0, 0, 0, 0, 0, &rsp); + if (ret == kPMC_NO_ERROR) + *status = ! !rsp.u.cmdResponse.word2; + + return ret; +} + +int pmc_set_tracktemp(int enable) +{ + if (pmc_mode != PMC_MODE_DQM) + return kPMC_INVALID_COMMAND; + + return SendCommand(cmdSetTrackTemp, 0, 0, 0, ! !enable, 0, NULL); +} diff --git a/arch/arm/mach-bcmbca/pmc/pmc_drv_bootloader.c b/arch/arm/mach-bcmbca/pmc/pmc_drv_bootloader.c new file mode 100644 index 0000000000..a3af615f4f --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_drv_bootloader.c @@ -0,0 +1,539 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +/* + +*/ + +/***************************************************************************** + * Description: + * PMC driver code for bootloaders + *****************************************************************************/ +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" +#include "command.h" + +extern int pmc_mode; + +#if defined(PMC_RAM_BOOT) +/* Include the platform specific PMC boot code */ +#if IS_BCMCHIP(63178) +#include "pmc_firmware_63178.h" +#elif IS_BCMCHIP(47622) +#include "pmc_firmware_47622.h" +#elif IS_BCMCHIP(6756) +#include "pmc_firmware_6756.h" +#elif IS_BCMCHIP(63158) +#include "pmc_romdata_63158.h" +#elif IS_BCMCHIP(6846) +#include "pmc_firmware_68460.h" +#elif IS_BCMCHIP(6856) +#include "pmc_firmware_68560.h" +#elif IS_BCMCHIP(63146) +#include "pmc_firmware_63146.h" +#elif IS_BCMCHIP(4912) +#include "pmc_firmware_4912.h" +#endif + +#if IS_BCMCHIP(63158) +// PMC boot options and parameters +typedef struct PMCBootOption { + unsigned int option; // Boot option + unsigned int opt_param; // Parameter to boot option +} __attribute__ ((packed)) TPMCBootOption; + +typedef struct PMCBootParams { + unsigned int pmc_image_addr; // PMC image address + unsigned int pmc_image_size; // PMC image size + unsigned int pmc_image_max_size; // PMC max size + unsigned int pmc_boot_option_cnt; // Number of boot options +} __attribute__ ((packed)) TPMCBootParams; + +#define LOCATE_BOOT_OPTIONS(a) ((long)(a) + sizeof(TPMCBootParams)) + +typedef struct PMCBootLog { + int cfe_rd_idx; // PMC read index + int pmc_log_type; // PMC log type +} __attribute__ ((packed)) TPMCBootLog; + +TPMCBootParams *pmcBootParams = NULL; + +void set_pmc_boot_param(unsigned int boot_option, unsigned int boot_param) +{ + void *bootParamEnd = + (void *)pmcBootParams + sizeof(TPMCBootParams) + + (pmcBootParams->pmc_boot_option_cnt + 1) * sizeof(TPMCBootOption); + TPMCBootOption *bootOptions = NULL; + + // check boot parameters do not corss the boundary + if ((unsigned long)bootParamEnd > + pmcBootParams->pmc_image_addr + pmcBootParams->pmc_image_max_size) { + printk + ("Error: %s : Space not available for PMC boot parameter\n", + __func__); + return; + } + // Locate boot option area + bootOptions = (TPMCBootOption *) LOCATE_BOOT_OPTIONS(pmcBootParams); + // set boot options + switch (boot_option) { + case kPMCBootDefault: + pmcBootParams->pmc_boot_option_cnt = 0; + break; + case kPMCBootAVSDisable: + case kPMCBootAVSTrackDisable: + case kPMCBootLogBuffer: + case kPMCBootLogSize: + bootOptions[pmcBootParams->pmc_boot_option_cnt].option = + boot_option; + bootOptions[pmcBootParams->pmc_boot_option_cnt].opt_param = + boot_param; + pmcBootParams->pmc_boot_option_cnt++; + break; + default: + printk("Error: %s : Invalid PMC boot option\n", __func__); + } +} + +int get_pmc_boot_param(unsigned int boot_option, unsigned int *boot_param) +{ + TPMCBootOption *bootOptions; + int i; + // Locate boot option area + bootOptions = (TPMCBootOption *) LOCATE_BOOT_OPTIONS(pmcBootParams); + + for (i = 0; pmcBootParams && i < pmcBootParams->pmc_boot_option_cnt; + i++) { + if (bootOptions[i].option == boot_option) { + *boot_param = bootOptions[i].opt_param; + return 0; + } + } + return -1; +} + +void init_pmc_boot_param(long image_addr, int image_size, int max_size) +{ + // loacate boot parameter location at the end of image. + pmcBootParams = + (TPMCBootParams *) (image_addr + image_size - + sizeof(TPMCBootParams)); + // Set boot param related global variables + pmcBootParams->pmc_image_addr = image_addr; + pmcBootParams->pmc_image_size = image_size; + pmcBootParams->pmc_image_max_size = max_size; + // Set default option + set_pmc_boot_param(kPMCBootDefault, 0); + printk("Boot pmc_image_addr 0x%08X\n", pmcBootParams->pmc_image_addr); + printk("Boot pmc_image_size 0x%08X\n", pmcBootParams->pmc_image_size); + printk("Boot pmc_image_max_size 0x%08X\n", + pmcBootParams->pmc_image_max_size); +} +#endif + +#ifdef PMC_LOG_IN_DTCM +static void pmc_show_boot_log(void) +{ + int i; + + printk("\n---start of pmc firmware boot log---\n"); + + for (i = 0; i < *(unsigned short *) CFG_BOOT_PMC_LOG_ADDR; i++) + printk("%c", *(char *) (CFG_BOOT_PMC_LOG_ADDR + + sizeof(unsigned short) + i)); + + printk("\n====end of pmc firmware boot log====\n"); +} + +static void pmc_show_live_log(void) +{ + printk("start showing pmc firmware live log, " + "press any key to stop ...\n"); + PMC->ctrl.hostMboxOut = 1; // request sync dtcm log + while (!console_status()) + pmc_show_log_item(); + PMC->ctrl.hostMboxOut = 0; // ignore dtcm log + printk("\n... key pressed, stop showing pmc firmware live log.\n"); +} +#endif + +void pmc_log(int log_type) +{ +#if defined(PMC_SHARED_MEMORY) + static char cache_buffer[CFG_BOOT_PMC_LOG_SIZE]; + unsigned int log_location = 0; + unsigned int log_size = 0; + + /* Do log, only if log buffer and log buffer size is known */ + if ((get_pmc_boot_param(kPMCBootLogBuffer, &log_location) != -1) && + (get_pmc_boot_param(kPMCBootLogSize, &log_size) != -1)) { + TPMCBootLog *log_header = (TPMCBootLog *) PMC_SHARED_MEMORY; + char *log_buffer = (char *)cache_to_uncache(log_location); + char *format_str = NULL; + unsigned int value[10]; + + /* Let PMC know, CFE wants to read from the begining */ + log_header->cfe_rd_idx = 0; + log_header->pmc_log_type = log_type; + + /* Keep pumping out the log */ + while (1) { + int i = 0, fmt_cnt = 0, avl_to_process = 0; + int pmc_wr, cfe_rd; + + /* Wait until log is available in the buffer */ + do { + pmc_wr = PMC->ctrl.scratch; + cfe_rd = log_header->cfe_rd_idx; + /* Exit if key is pressed */ + if (console_status()) { + /* Let PMC know that CFE is not interested in reading log */ + log_header->cfe_rd_idx = -1; + return; + } + } while (pmc_wr == cfe_rd); + + avl_to_process = + (pmc_wr + log_size - cfe_rd) % log_size; + +#ifdef __UBOOT__ + flush_dcache_all(); +#endif + /* Read from the circular log buffer into the cache buffer */ + if (cfe_rd > pmc_wr) { + /* step 1: Copy from cfe_rd to the end of log_buffer */ + memcpy((void *)cache_buffer, + (void *)&log_buffer[cfe_rd], + log_size - cfe_rd); + /* step 2: Copy from the begining of the log_buffer to pmc_wr */ + memcpy((void *)(cache_buffer + log_size - + cfe_rd), (void *)&log_buffer[0], + pmc_wr); + } else + /* Copy everything between cfe_rd and pmc_wr */ + memcpy((void *)cache_buffer, + (void *)&log_buffer[cfe_rd], + pmc_wr - cfe_rd); + + /* Read is done. Let PMC know how far has been read */ + log_header->cfe_rd_idx = + (log_header->cfe_rd_idx + + avl_to_process) % log_size; + + /* Process all inside the cache_buffer that has been read */ + i = 0; + while (i < avl_to_process) { + format_str = &cache_buffer[i]; + /* Scan for format count inside the NULL terminated format string */ + fmt_cnt = 0; + while (cache_buffer[i]) { + if (cache_buffer[i] == '%') + fmt_cnt++; + i++; + } + /* collect the values after the format string, if there is any */ + i++; + if (fmt_cnt == 0) + continue; + memcpy((void *)value, (void *)&cache_buffer[i], + sizeof(unsigned int) * fmt_cnt); + printf(format_str, value[0], value[1], value[2], + value[3], value[4], value[5], value[6], + value[7], value[8], value[9]); + /* Look for next format string, inside the cache_buffer */ + i += fmt_cnt * sizeof(unsigned int); + } + } + } +#endif /* PMC_SHARED_MEMORY */ +#ifdef PMC_LOG_IN_DTCM + pmc_show_boot_log(); + pmc_show_live_log(); +#endif +} + +static void pmc_boot(void) +{ +#if !defined (PMC_IMPL_3_X) + volatile unsigned int dummy; +#endif + unsigned long physAddrPmc; + unsigned int len; + const unsigned char *pmccode = NULL; + void *pmc_log_start = NULL; +#ifdef PMC_LOG_IN_DTCM + unsigned int i; + + if (!is_pmcfw_data_loaded()) { + /* Copy PMC data into DTCM, needed to boot PMC */ + /* Copy to correct area */ + len = sizeof(pmcdata); + for (i = 0; i < len; i += 4) + PROCMON->dtcm[(i + PMC_DTCM_LOG_SIZE) >> 2] = + (pmcdata[i + 3] << 24) | (pmcdata[i + 2] << 16) | + (pmcdata[i + 1] << 8) | pmcdata[i]; + } + + /* set bootlog_len to 0 */ + * (unsigned short *) CFG_BOOT_PMC_LOG_ADDR = 0; + + if (getAVSConfig()) { + printk + ("%s: nvram opted to disable AVS, PMC firmware code not loaded\n", + __func__); + return; + } +#elif defined(CFG_BOOT_PMC3_DATA_ADDR) + + if (!is_pmcfw_data_loaded()) { + /* Copy PMC data into DTCM, needed to boot PMC */ + /* Copy to correct area */ + + len = sizeof(pmcdata); + memcpy((void *)CFG_BOOT_PMC3_DATA_ADDR, pmcdata, len); + if(env_get("print_avs_log")) + pmc_log_start = (void *)CFG_BOOT_PMC3_DATA_ADDR; + } +#endif + + // copy image to aligned address in pmc boot area + len = sizeof(pmcappdata); + pmccode = pmcappdata; +#ifdef PMC_FW_IN_ITCM + physAddrPmc = (unsigned long) PROCMON->itcm; +#elif defined(CFG_BOOT_PMC3_START_ADDR) + physAddrPmc = CFG_BOOT_PMC3_START_ADDR; +#else + physAddrPmc = CFG_BOOT_PMC_ADDR; +#endif + + if (len > PMC_RESERVED_MEM_SIZE +#ifdef PMC_FW_IN_ITCM + || len > sizeof(PROCMON->itcm) +#endif + ) { + printk + ("%s: ** ERROR ** PMC image is too big to fit in memory \n", + __func__); + pmc_mode = PMC_MODE_PMB_DIRECT; + return; + } + + if (!is_pmcfw_code_loaded()) + memcpy((void *)physAddrPmc, pmccode, len); + +#if IS_BCMCHIP(63158) + pmc_reset(); + + init_pmc_boot_param(physAddrPmc, len, CFG_BOOT_PMC_SIZE); + /* Setup PMC log buffer */ + set_pmc_boot_param(kPMCBootLogBuffer, CFG_BOOT_PMC_LOG_ADDR); + set_pmc_boot_param(kPMCBootLogSize, CFG_BOOT_PMC_LOG_SIZE); + + if (getAVSConfig() != 0) { + printk("Info: %s PMC opted to disable AVS\n", __func__); + set_pmc_boot_param(kPMCBootAVSDisable, 1); + } +#endif + /* Boot code and boot params are loaded. Time to flush the content */ +#ifdef __UBOOT__ + flush_dcache_all(); + invalidate_icache_all(); +#else + _cfe_flushcache(CFE_CACHE_FLUSH_D, 0, 0); +#endif + +#if defined(PMC_IMPL_3_X) + printf("Take PMC out of reset\n"); + // clear/reset fields of PVTMONRO_ACQ_TEMP_WARN_RESET + write_bpcm_reg_direct(PMB_ADDR_PVTMON, 0x54 >> 2, + (1 << 30) | (1 << 14)); +#ifdef PMC_LOG_IN_DTCM + PMC->ctrl.hostMboxOut = 1; // request sync dtcm log +#endif +#ifdef PMC_FW_IN_ITCM + PROCMON->maestroReg.coreCtrl.resetVector = 0; +#else + PROCMON->maestroReg.coreCtrl.resetVector = (uint32_t) physAddrPmc; +#endif + PROCMON->maestroReg.coreCtrl.coreEnable = 1; +#else /* defined(PMC_IMPL_3_X */ +#if IS_BCMCHIP(63158) + /* open window for the PMC to see peripheral address space */ + PMC->ctrl.addr2WndwMask = ~((1 << 16) - 1); + PMC->ctrl.addr2WndwBaseIn = 0x10000000; + PMC->ctrl.addr2WndwBaseOut = PERF_PHYS_BASE; + dummy = PMC->ctrl.addr2WndwBaseOut; // dummy, just for sync +#else + PMC->ctrl.addr2WndwMask = 0; + PMC->ctrl.addr2WndwBaseIn = 0; + PMC->ctrl.addr2WndwBaseOut = 0; +#endif + /* open window for the PMC to see DDR */ + PMC->ctrl.addr1WndwMask = ~(PMC_RESERVED_MEM_SIZE - 1); + PMC->ctrl.addr1WndwBaseIn = 0x1fc00000; + PMC->ctrl.addr1WndwBaseOut = (uint32_t) physAddrPmc; + + dummy = PMC->ctrl.addr1WndwBaseOut; // dummy, just for sync + dummy = dummy; + + printf("Take PMC out of reset\n"); + PMC->ctrl.softResets = 0x0; +#endif + + pmc_mode = PMC_MODE_DQM; + + printf("waiting for PMC finish booting\n"); + WaitPmc(PMC_IN_MAIN_LOOP, pmc_log_start); +#if defined(PMC_IMPL_3_X) + { + uint32_t change; + uint32_t revision; + if (!GetRevision(&change, &revision)) { + printf("PMC rev: %d.%d.%d.%d running\n", + (revision >> 28) & 0xf, (revision >> 20) & 0xff, + (revision & 0xfffff), change); + } +#ifdef PMC_LOG_IN_DTCM + PMC->ctrl.hostMboxOut = 0; // ignore dtcm log +#endif + } +#endif +} +#endif //defined(PMC_RAM_BOOT) + +#if IS_BCMCHIP(4908) && !defined _ATF_ +static void pmc_patch_4908(void) +{ + static const +#include "pmc_patch_4908.h" + // relocate to end of pmc shared memory + const unsigned linkaddr = (0xb6004800 - sizeof track_bin) & ~15; + TCommand rsp; + + memcpy((void *)&PMC->sharedMem[(linkaddr & 0x7ff) / 4], + track_bin, sizeof track_bin); + + // register command + if (SendCommand(cmdRegisterCmdHandler, 0, 0, 0, 96, linkaddr, &rsp) + || rsp.word0.Bits.error) + printk("%s:%d %d\n", __func__, + rsp.word0.Bits.cmdID, rsp.word0.Bits.error); + else { + // check sec_chipvar and send command + uint32_t cap = ((uint32_t *) JTAG_OTP_BASE)[12]; + uint32_t slow, fast; // margin + + if ((cap & 15) != 0) { + slow = 80, fast = 55; + } else { + slow = 100, fast = 100; + } + + if (SendCommand(96, 0, 0, 0, slow, fast, &rsp) + || rsp.word0.Bits.error) + printk("%s:%d %d %x %x %x\n", __func__, + rsp.word0.Bits.cmdID, rsp.word0.Bits.error, + rsp.word1.Reg32, rsp.u.cmdResponse.word2, + rsp.u.cmdResponse.word3); + } +} +#endif + +#if IS_BCMCHIP(6846) || IS_BCMCHIP(6856) || IS_BCMCHIP(6858) || IS_BCMCHIP(6878) +#define SWREG_ADJUSTMENT_SUPPORT + +unsigned int swr_read(unsigned int ps, unsigned int reg) +{ + unsigned int cmd = SWR_READ_CMD_P | SET_ADDR(ps, reg); + + PROCMON->SSBMaster.control = SWR_EN; + PROCMON->SSBMaster.control = cmd; + SR_TEST(22); + return PROCMON->SSBMaster.rd_data; +} + +static void dump_swregs(void) +{ + int i, j; + printf("Dump Current setting of SWREGs\n"); + for (i = SWR_FIRST; i < SWR_LAST; i++) + for (j = 0; j < 10; j++) { + printf("%s, reg=0x%02x, val=0x%04x\n", + (i == + 0 ? "1.0D" : (i == + 1 ? "1.8 " : (i == + 2 ? "1.5 " : + "1.0A"))), j, + swr_read(i, j)); + } +} +#endif + +#if IS_BCMCHIP(6856) +static void pmc_patch_6856(void) +{ + // Disable force bit on CLKRST BPCM to allow correct pinmuxing + uint32_t target; + + ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(clkrst_control), &target); + target &= 0xfffbffff; + WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(clkrst_control), target); +} +#endif + +#if IS_BCMCHIP(6878) +void swreg_clk_sync(void) +{ + uint32_t target; + /* Remove the force observe clock to allow of correct pinmuxing of GPIO_7 */ + + ReadBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(clkrst_ena_force), &target); + target |= 0xfffffffe; + WriteBPCMRegister(PMB_ADDR_CHIP_CLKRST, + CLKRSTBPCMRegOffset(clkrst_ena_force), target); +} +#endif + +int pmc_init(void) +{ + int rc = 0; + + pmc_initmode(); + +#if defined(SWREG_ADJUSTMENT_SUPPORT) + dump_swregs(); +#endif +#if IS_BCMCHIP(6856) + pmc_patch_6856(); +#endif +#if IS_BCMCHIP(6878) + swreg_clk_sync(); +#endif + +#if defined(PMC_RAM_BOOT) + pmc_boot(); +#endif + + printk("%s:PMC using %s mode\n", __func__, + pmc_mode == PMC_MODE_PMB_DIRECT ? "PMB_DIRECT" : "DQM"); + if (pmc_mode == PMC_MODE_PMB_DIRECT) + return 0; + +#if IS_BCMCHIP(4908) && !defined _ATF_ + if (getAVSConfig() == 0) { + pmc_patch_4908(); + } else + printk("%s:AVS disabled\n", __func__); +#endif + + return rc; +} diff --git a/arch/arm/mach-bcmbca/pmc/pmc_firmware_47622.h b/arch/arm/mach-bcmbca/pmc/pmc_firmware_47622.h new file mode 100644 index 0000000000..9cbc7bf792 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_firmware_47622.h @@ -0,0 +1,1385 @@ +/* + * * <:copyright-BRCM:2017:DUAL/GPL:standard + * * + * * Copyright (c) 2017 Broadcom + * * All Rights Reserved + * * + * * This program is free software; you can redistribute it and/or modify + * * it under the terms of the GNU General Public License, version 2, as published by + * * the Free Software Foundation (the "GPL"). + * * + * * This program is distributed in the hope that it will be useful, + * * but WITHOUT ANY WARRANTY; without even the implied warranty of + * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * * GNU General Public License for more details. + * * + * * + * * A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + * * writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * * Boston, MA 02111-1307, USA. + * * + * * :> + * */ + +#ifndef PMC_ROMDATA_47622_H +#define PMC_ROMDATA_47622_H +#define PMC_VER_IMPL 3 +#define PMC_VER_MAJOR 2 +#define PMC_VER_MINOR 2 +#define PMC_VER_CHANGELIST "$Change: 284027 $" +const unsigned char pmcappdata[] = { + 0x01, 0x00, 0x00, 0xbf, 0x03, 0xfe, 0x67, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0xe6, 0x05, + 0x00, 0x00, 0x00, 0x8c, 0x52, 0x04, 0x00, 0x66, 0x5a, 0x00, 0x60, 0x09, + 0x00, 0x00, 0x00, 0x92, 0x55, 0x05, 0x00, 0x00, 0x58, 0x7a, 0x64, 0x4c, + 0x00, 0x72, 0x05, 0x00, 0x00, 0x00, 0x8e, 0x55, 0x44, 0x00, 0x64, 0x09, + 0x00, 0x00, 0x44, 0x06, 0x81, 0x86, 0x41, 0x20, 0x39, 0x00, 0x00, 0xf4, + 0xcf, 0x62, 0x05, 0x00, 0x00, 0x00, 0x8e, 0x55, 0x86, 0x41, 0x20, 0x39, + 0x00, 0x00, 0xf8, 0xcb, 0x62, 0x48, 0x00, 0x64, 0x05, 0x00, 0x00, 0x84, + 0x09, 0x7f, 0x07, 0x0c, 0xe6, 0x03, 0x00, 0x80, 0x00, 0x3c, 0x23, 0x0c, + 0x88, 0x62, 0x38, 0x40, 0x55, 0xba, 0x4f, 0x00, 0x04, 0x00, 0x64, 0x4c, + 0x04, 0x72, 0xcd, 0xab, 0x89, 0xc8, 0x7b, 0x64, 0x45, 0x23, 0x01, 0xcc, + 0x59, 0x64, 0x05, 0x00, 0x00, 0x00, 0x8f, 0x64, 0x86, 0x43, 0x20, 0xec, + 0x83, 0x62, 0xbb, 0x63, 0x00, 0x80, 0x03, 0xe6, 0x04, 0x00, 0x64, 0x4c, + 0x04, 0x48, 0xc3, 0x07, 0xf6, 0x3b, 0x00, 0xf2, 0x87, 0xc2, 0xfe, 0x46, + 0x50, 0x07, 0x43, 0x78, 0xfe, 0x87, 0x04, 0xfe, 0x47, 0xc0, 0xf2, 0x44, + 0x0c, 0x31, 0x10, 0x04, 0xca, 0x08, 0x08, 0xe8, 0x00, 0x3c, 0x23, 0x03, + 0xc0, 0xf1, 0x02, 0x68, 0x00, 0x03, 0x40, 0xf2, 0x03, 0xc7, 0xf1, 0x02, + 0xfc, 0x00, 0x73, 0x40, 0xf2, 0x00, 0x3c, 0x23, 0x08, 0x00, 0x74, 0xc4, + 0x3f, 0x64, 0x50, 0x08, 0x1d, 0x18, 0x00, 0x64, 0x44, 0x37, 0x64, 0x84, + 0x09, 0x1e, 0x9b, 0x05, 0x00, 0x47, 0x44, 0x00, 0xec, 0xc7, 0x73, 0x84, + 0x03, 0x64, 0x0b, 0x07, 0xf2, 0x57, 0xc3, 0xfe, 0x9f, 0x11, 0xf2, 0xc7, + 0x11, 0xf2, 0xef, 0x11, 0xf2, 0x17, 0x12, 0xf2, 0x3f, 0x12, 0xf2, 0x67, + 0x12, 0xf2, 0xe7, 0x51, 0xf2, 0xff, 0x50, 0xf2, 0x87, 0x13, 0xf2, 0xcf, + 0x51, 0xf2, 0x44, 0x00, 0x64, 0x73, 0x06, 0xf2, 0x44, 0x00, 0x64, 0xf3, + 0x06, 0xf2, 0x8d, 0xd6, 0x92, 0x84, 0x28, 0x64, 0xc3, 0x46, 0xf2, 0xa7, + 0x01, 0xfe, 0x35, 0x0c, 0x00, 0x04, 0xb6, 0x64, 0xb3, 0x06, 0xf2, 0x35, + 0x0c, 0x00, 0x04, 0x9e, 0x64, 0xbb, 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x84, + 0x96, 0x64, 0xd3, 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x04, 0xaa, 0x64, 0xc3, + 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x44, 0x9d, 0x64, 0xdb, 0x06, 0xf2, 0x01, + 0x0c, 0x00, 0x04, 0xf2, 0x64, 0xcb, 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x44, + 0x7c, 0x64, 0xe3, 0x06, 0xf2, 0x67, 0xc3, 0xfe, 0xc4, 0xff, 0x64, 0x5b, + 0x06, 0xf2, 0x67, 0xc3, 0xfe, 0x87, 0xc2, 0xfe, 0x05, 0x00, 0x00, 0x46, + 0x40, 0x04, 0x43, 0x78, 0xfe, 0x84, 0x00, 0x64, 0x05, 0x10, 0x00, 0x44, + 0x86, 0x80, 0x01, 0xad, 0xde, 0x44, 0x00, 0x64, 0x4b, 0x04, 0x00, 0x4f, + 0x08, 0x00, 0x53, 0x0c, 0x00, 0x57, 0x10, 0x00, 0x5b, 0x14, 0x00, 0x5f, + 0x18, 0x00, 0x63, 0x1c, 0x00, 0x67, 0x20, 0x00, 0x6b, 0x24, 0x00, 0x6f, + 0x28, 0x00, 0x73, 0x2c, 0x00, 0x77, 0x30, 0x00, 0x7b, 0x34, 0x00, 0x7f, + 0x38, 0x00, 0x40, 0x60, 0x26, 0x40, 0xe0, 0x26, 0x00, 0x00, 0x23, 0x01, + 0x0c, 0x00, 0x88, 0x08, 0x64, 0x39, 0x0c, 0x00, 0x04, 0x78, 0x64, 0x1b, + 0x0b, 0xf2, 0x23, 0x07, 0xf2, 0x08, 0x53, 0x64, 0x05, 0x00, 0x00, 0x04, + 0x80, 0x64, 0x03, 0x48, 0xf2, 0x0b, 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, + 0xf9, 0x64, 0xfd, 0x1f, 0x00, 0x04, 0xf8, 0x64, 0x13, 0x48, 0xf2, 0x1b, + 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, 0xfb, 0x64, 0x05, 0x00, 0x00, 0x04, + 0x80, 0x64, 0x23, 0x48, 0xf2, 0x2b, 0x44, 0xf2, 0x08, 0x03, 0x64, 0x04, + 0x38, 0x64, 0x33, 0x48, 0xf2, 0x3b, 0x44, 0xf2, 0x05, 0x00, 0x00, 0x08, + 0x8b, 0x64, 0x0d, 0x00, 0x00, 0x04, 0xb8, 0x64, 0x43, 0x48, 0xf2, 0x4b, + 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, 0xfb, 0x64, 0xfd, 0x1f, 0x00, 0x04, + 0xf8, 0x64, 0x53, 0x48, 0xf2, 0x5b, 0x44, 0xf2, 0x05, 0x10, 0x00, 0x08, + 0x03, 0x64, 0x05, 0x10, 0x00, 0x04, 0x78, 0x64, 0x63, 0x48, 0xf2, 0x6b, + 0x44, 0xf2, 0x08, 0x41, 0x64, 0x04, 0x48, 0x64, 0x73, 0x48, 0xf2, 0x7b, + 0x44, 0xf2, 0xe7, 0x1c, 0xfe, 0x0f, 0x20, 0xe5, 0x00, 0x41, 0x64, 0xd8, + 0xd7, 0x63, 0x00, 0x00, 0x66, 0x8e, 0x00, 0x60, 0x14, 0x00, 0x64, 0x90, + 0x14, 0xc8, 0x18, 0x44, 0x64, 0x82, 0x41, 0x20, 0xfc, 0xd3, 0x63, 0x22, + 0x40, 0x20, 0x83, 0x11, 0x00, 0xf0, 0xd3, 0x63, 0xa3, 0x03, 0x90, 0x83, + 0x21, 0x00, 0xe4, 0xd3, 0x63, 0x87, 0x23, 0x80, 0x0a, 0x40, 0x20, 0x02, + 0x42, 0x20, 0xdf, 0x05, 0x00, 0xd8, 0x97, 0x62, 0x6c, 0x9d, 0x3a, 0x9b, + 0x31, 0x00, 0xc6, 0xff, 0x7f, 0xd4, 0x00, 0x64, 0x70, 0x14, 0xc8, 0x18, + 0x44, 0x74, 0x82, 0x41, 0x20, 0xf0, 0xcf, 0x63, 0x22, 0x40, 0x20, 0x83, + 0x11, 0x00, 0xe4, 0xcf, 0x63, 0x0a, 0x40, 0x20, 0x03, 0x02, 0x50, 0xf4, + 0x93, 0x62, 0xdf, 0x05, 0x00, 0x6c, 0x1d, 0x3a, 0x9b, 0x21, 0x00, 0xd6, + 0xbf, 0x7f, 0x00, 0x42, 0x64, 0xc0, 0xcf, 0x63, 0x22, 0x40, 0x20, 0x00, + 0x43, 0x64, 0xf4, 0xcb, 0x63, 0x1e, 0x40, 0x20, 0x01, 0x0c, 0x00, 0xc0, + 0x32, 0x64, 0x05, 0x00, 0x00, 0x14, 0x88, 0x55, 0x10, 0x00, 0xc8, 0xd0, + 0xd3, 0x63, 0xd4, 0x87, 0x62, 0x01, 0x0c, 0x00, 0x00, 0x08, 0x64, 0x20, + 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0xd0, 0xc3, 0x63, 0x00, + 0x00, 0x64, 0x18, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xcc, 0xbb, 0x62, 0x00, + 0x00, 0x64, 0x28, 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0xfd, + 0xf3, 0xff, 0xc4, 0xb7, 0x62, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0x31, + 0x00, 0x00, 0xd0, 0x93, 0x63, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x64, 0x18, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xd8, 0xaf, 0x62, 0x00, 0x00, 0x64, 0x98, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xe8, 0xab, 0x62, 0x00, 0x00, 0x64, 0x18, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xf8, 0xa7, 0x62, 0x0f, 0xc2, 0xf1, 0xd2, + 0x68, 0x00, 0x23, 0x50, 0xf2, 0x00, 0x00, 0x64, 0x10, 0x00, 0xc8, 0xe3, + 0x02, 0xf2, 0x35, 0x0c, 0x00, 0x00, 0xc2, 0x64, 0x10, 0x00, 0xc8, 0xcb, + 0x02, 0xf2, 0x67, 0xc3, 0xfe, 0x07, 0x04, 0xe0, 0x40, 0x00, 0x65, 0x5b, + 0x02, 0xf2, 0x01, 0x00, 0x82, 0x07, 0x00, 0x00, 0x33, 0x06, 0xf2, 0x48, + 0x00, 0x64, 0xe3, 0x09, 0xf2, 0x67, 0xc3, 0xfe, 0xa3, 0xbf, 0x7f, 0x88, + 0x08, 0x31, 0x18, 0x08, 0xca, 0x48, 0x10, 0x5a, 0x10, 0x08, 0x7a, 0x00, + 0x3c, 0x23, 0x0c, 0x00, 0x64, 0x4c, 0xcc, 0x1e, 0x84, 0x08, 0x31, 0x10, + 0x04, 0xca, 0x10, 0x0c, 0x7a, 0x00, 0x3c, 0x23, 0x05, 0x10, 0x00, 0x18, + 0x28, 0x64, 0x70, 0x18, 0xc8, 0x83, 0x41, 0x90, 0x93, 0x45, 0x90, 0xa3, + 0x79, 0x90, 0xb3, 0x7d, 0x90, 0x9f, 0xb7, 0xf1, 0xdc, 0xed, 0xa3, 0x83, + 0x1d, 0x90, 0x1f, 0x8c, 0xf1, 0x93, 0x1d, 0x90, 0x9f, 0x8c, 0xf1, 0xa3, + 0x1d, 0x90, 0x1f, 0xe0, 0xf1, 0xb3, 0x1d, 0x90, 0x18, 0x00, 0x64, 0x10, + 0x18, 0xc8, 0xc0, 0xdb, 0x1f, 0x31, 0x00, 0x00, 0xd7, 0x0d, 0xfe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xa2, 0x11, 0x10, 0x00, 0x04, 0x01, 0x80, 0x11, 0x10, 0x00, + 0x04, 0x06, 0x64, 0x4b, 0x20, 0x80, 0xbc, 0x7c, 0xb3, 0xfa, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, 0xaf, 0x1f, 0xfe, + 0x13, 0x00, 0xe0, 0x01, 0x12, 0x00, 0x10, 0x00, 0x64, 0x0f, 0x01, 0x84, + 0xa0, 0x03, 0xe7, 0xbc, 0x7c, 0xb3, 0x0d, 0x00, 0x00, 0x77, 0xa3, 0xf8, + 0xff, 0x28, 0x3a, 0x8f, 0x0c, 0x00, 0xcb, 0x88, 0xf9, 0x8f, 0x23, 0x80, + 0xc0, 0x43, 0x24, 0xbc, 0x08, 0x27, 0x03, 0xbc, 0xf2, 0xd3, 0x40, 0xd0, + 0xa3, 0x0f, 0x90, 0xbf, 0x23, 0x80, 0xc0, 0x3f, 0xa4, 0xa3, 0x03, 0x90, + 0x8f, 0x23, 0x80, 0xcf, 0x04, 0xda, 0xa3, 0x0f, 0x90, 0x87, 0x23, 0x80, + 0x48, 0x00, 0xa2, 0xa3, 0x0b, 0x90, 0xbf, 0x23, 0x80, 0x03, 0xbd, 0x94, + 0xa0, 0x03, 0xe7, 0x03, 0x81, 0x84, 0xa3, 0x03, 0x90, 0x8f, 0x23, 0x80, + 0xf0, 0xb4, 0x26, 0xf2, 0xff, 0x7f, 0x93, 0x23, 0x80, 0xc8, 0x04, 0x64, + 0x34, 0x15, 0x26, 0x16, 0x00, 0x40, 0x87, 0x23, 0x80, 0x78, 0x94, 0x26, + 0x1a, 0x40, 0x60, 0x08, 0x02, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x0b, 0x82, + 0x00, 0x00, 0x64, 0x17, 0x04, 0xe0, 0x01, 0x12, 0x00, 0x00, 0x4b, 0x55, + 0xf7, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x01, 0x12, 0x00, 0x18, 0x00, 0x64, + 0x93, 0x01, 0x84, 0xbf, 0x0c, 0x00, 0x0d, 0x00, 0x00, 0x77, 0xa3, 0xf8, + 0xbc, 0x7c, 0xb3, 0x93, 0x8d, 0x94, 0xcb, 0x8b, 0xf9, 0x0f, 0x29, 0x3a, + 0xc0, 0x40, 0x24, 0x90, 0x08, 0x27, 0x0f, 0x90, 0xf2, 0xfd, 0x0f, 0x00, + 0xc2, 0xbc, 0x1f, 0x0f, 0x04, 0xda, 0x04, 0x04, 0xa2, 0x83, 0x85, 0x94, + 0xbf, 0x81, 0x84, 0xf0, 0xb7, 0x26, 0xfa, 0xff, 0x7f, 0xf4, 0x17, 0x26, + 0xc8, 0x04, 0x64, 0x12, 0x00, 0x40, 0xf8, 0x97, 0x26, 0x12, 0x40, 0x60, + 0x08, 0x02, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x0b, 0x82, 0x0f, 0x0c, 0xe6, + 0x03, 0x00, 0x80, 0x4b, 0x00, 0x50, 0x07, 0x10, 0x35, 0x03, 0x24, 0x37, + 0x67, 0x1d, 0xfe, 0x13, 0x00, 0xe0, 0x03, 0x00, 0x80, 0xa0, 0x03, 0xe7, + 0x48, 0x88, 0x1d, 0x07, 0x10, 0x35, 0x03, 0x24, 0x37, 0xd8, 0xf7, 0x63, + 0x17, 0x04, 0xe0, 0x01, 0x12, 0x00, 0x08, 0x00, 0x64, 0x8f, 0x80, 0x81, + 0x46, 0xbc, 0x00, 0x63, 0x80, 0xd2, 0xd0, 0x40, 0x98, 0x83, 0x90, 0x91, + 0x8f, 0x80, 0x81, 0xd0, 0x30, 0x94, 0x0c, 0x21, 0x98, 0x83, 0x8c, 0x91, + 0x4e, 0xbc, 0x17, 0x93, 0x80, 0x81, 0x06, 0xfd, 0x1f, 0x43, 0x4c, 0xfb, + 0x83, 0x80, 0x91, 0x93, 0x80, 0x81, 0x0c, 0x81, 0x98, 0x83, 0x8c, 0x91, + 0x87, 0x80, 0x81, 0x40, 0x40, 0x98, 0x83, 0x80, 0x91, 0x93, 0x80, 0x81, + 0x0c, 0x01, 0x9a, 0x83, 0x8c, 0x91, 0x87, 0x80, 0x81, 0x7c, 0x30, 0x26, + 0xfa, 0xbf, 0x7f, 0x83, 0xa0, 0x81, 0x00, 0x3c, 0x23, 0x01, 0x12, 0x00, + 0x0c, 0x00, 0x64, 0xd3, 0x80, 0x81, 0x46, 0xbc, 0x00, 0x63, 0x80, 0xd2, + 0x10, 0x41, 0x98, 0xc3, 0x90, 0x91, 0xd3, 0x90, 0x81, 0x03, 0x49, 0xd0, + 0xd3, 0x90, 0x91, 0xcb, 0x80, 0x81, 0x90, 0x30, 0x94, 0x08, 0x11, 0x98, + 0xc3, 0x88, 0x91, 0x4a, 0xbc, 0x17, 0xd3, 0x80, 0x81, 0x06, 0xfd, 0x1f, + 0x43, 0x48, 0xfb, 0xc3, 0x80, 0x91, 0xd3, 0x80, 0x81, 0x08, 0x81, 0x98, + 0xc3, 0x88, 0x91, 0xc7, 0x80, 0x81, 0x40, 0x40, 0x98, 0xc3, 0x80, 0x91, + 0xd3, 0x80, 0x81, 0x08, 0x01, 0x9a, 0xc3, 0x88, 0x91, 0xc7, 0x80, 0x81, + 0x7c, 0x30, 0x26, 0xfa, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x4b, 0x08, 0xe6, + 0x1d, 0x10, 0x00, 0x04, 0x08, 0x55, 0x48, 0x40, 0x48, 0xa6, 0x00, 0x60, + 0x18, 0x10, 0x2b, 0x92, 0x41, 0x20, 0x01, 0x05, 0x01, 0x00, 0x01, 0x5b, + 0x90, 0x07, 0xe7, 0x0d, 0x00, 0x00, 0x77, 0xa3, 0xf8, 0x80, 0x07, 0xe7, + 0x07, 0x11, 0x80, 0x0f, 0x21, 0x80, 0x3f, 0x31, 0x80, 0xa3, 0x43, 0x90, + 0x88, 0x03, 0xd8, 0xb3, 0x47, 0x90, 0x83, 0x8f, 0x90, 0x93, 0xbf, 0x90, + 0xa4, 0x03, 0xe4, 0x3c, 0xfc, 0x3c, 0x0a, 0xbc, 0x07, 0x5a, 0x40, 0x60, + 0x0d, 0x00, 0x00, 0x10, 0x3e, 0x64, 0x13, 0x49, 0xf7, 0x90, 0x10, 0xc8, + 0x87, 0x23, 0x00, 0x83, 0xa3, 0x00, 0xc0, 0xd3, 0x1f, 0x0d, 0x00, 0x00, + 0x88, 0x1b, 0x4e, 0x8e, 0x41, 0x20, 0x87, 0x33, 0x80, 0x93, 0x43, 0x80, + 0xa7, 0x0b, 0xb0, 0x83, 0x53, 0x80, 0xbf, 0x23, 0x80, 0x01, 0x05, 0x01, + 0xc0, 0xfc, 0x7a, 0xd3, 0x04, 0x90, 0xe3, 0x10, 0x90, 0xf3, 0x00, 0x90, + 0x4f, 0x0c, 0xe6, 0x40, 0x01, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, + 0xbf, 0xbf, 0x7f, 0x03, 0x00, 0xe0, 0x09, 0x00, 0x00, 0xc0, 0xf0, 0x52, + 0x00, 0x00, 0x66, 0x3e, 0x00, 0x60, 0x11, 0x10, 0x00, 0x08, 0x0a, 0x52, + 0x09, 0x00, 0x00, 0x1f, 0x9e, 0xf8, 0x11, 0x10, 0x00, 0x10, 0x0a, 0x64, + 0x86, 0x5c, 0x00, 0x4e, 0x58, 0x22, 0x11, 0x10, 0x00, 0x44, 0x0d, 0x7e, + 0x3e, 0x01, 0xe0, 0xd8, 0xb3, 0x26, 0xfa, 0xff, 0x7f, 0x03, 0x09, 0xb0, + 0x00, 0x00, 0x64, 0xe8, 0xef, 0x63, 0x80, 0x00, 0x64, 0xe0, 0xef, 0x63, + 0x00, 0x01, 0x64, 0xd8, 0xef, 0x63, 0x80, 0x01, 0x64, 0x03, 0x04, 0xe0, + 0x9f, 0x1d, 0xfe, 0x0b, 0x08, 0xe6, 0x84, 0x00, 0x72, 0x54, 0x04, 0xba, + 0x3a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x18, 0xe1, 0x55, 0x44, 0x48, 0x2b, + 0x51, 0x01, 0x80, 0x4a, 0x44, 0x20, 0x83, 0x51, 0x52, 0xc8, 0xdb, 0x63, + 0x83, 0x81, 0x52, 0xec, 0xd7, 0x63, 0x00, 0x94, 0x26, 0xf6, 0xff, 0x7f, + 0x03, 0x3c, 0xfe, 0x0f, 0x0c, 0xe6, 0x00, 0x00, 0x64, 0xfb, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x1b, 0x10, 0x8e, + 0x08, 0x00, 0x64, 0x83, 0x51, 0x52, 0xcc, 0xd7, 0x63, 0x83, 0x81, 0x52, + 0x0b, 0x0c, 0xe6, 0x5f, 0x1a, 0xfe, 0x03, 0x00, 0xe0, 0x80, 0x00, 0x72, + 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x03, 0x10, 0x8e, 0x60, 0x00, 0xc8, + 0x05, 0x00, 0x00, 0x04, 0x8b, 0x55, 0x28, 0x04, 0xc8, 0x80, 0x01, 0x75, + 0xf4, 0xd3, 0x63, 0x00, 0x20, 0x28, 0x07, 0x04, 0xe0, 0x04, 0x12, 0x64, + 0xf0, 0xcf, 0x63, 0x02, 0xbc, 0x1f, 0xf3, 0xbf, 0x7f, 0x00, 0x00, 0x64, + 0xeb, 0xbf, 0x7f, 0x1b, 0x18, 0xe5, 0x5a, 0x40, 0x20, 0x58, 0x01, 0x72, + 0x09, 0x00, 0x00, 0x14, 0x9d, 0x64, 0x1f, 0x10, 0x02, 0x43, 0x5d, 0xf7, + 0x30, 0x01, 0xc8, 0x05, 0x00, 0x00, 0x00, 0x8b, 0x55, 0x74, 0x01, 0x72, + 0x01, 0x00, 0x00, 0x74, 0x70, 0xbb, 0x80, 0x0c, 0x64, 0x0e, 0x00, 0x40, + 0x58, 0xf3, 0x64, 0x0b, 0x00, 0x60, 0x8c, 0x01, 0x37, 0xc4, 0xaf, 0x64, + 0xb3, 0x1b, 0x90, 0xa3, 0x07, 0x90, 0x09, 0x00, 0x00, 0xfc, 0xaf, 0x63, + 0x05, 0x00, 0x00, 0x00, 0x8b, 0x55, 0xb0, 0x00, 0xc8, 0x80, 0x01, 0x75, + 0xe4, 0xcb, 0x63, 0x0f, 0x38, 0xfe, 0x88, 0x21, 0x2b, 0x8b, 0x4c, 0xfb, + 0x80, 0x01, 0x75, 0xc8, 0xd3, 0x63, 0x00, 0x00, 0x74, 0xc8, 0xcb, 0x63, + 0x1e, 0x48, 0x00, 0xca, 0x41, 0x20, 0x00, 0x00, 0x74, 0xf0, 0xcf, 0x63, + 0xca, 0x49, 0x20, 0x00, 0x00, 0x74, 0xe4, 0xcf, 0x63, 0xca, 0x41, 0x20, + 0x00, 0x00, 0x74, 0xd8, 0xcf, 0x63, 0x82, 0x41, 0x20, 0x1f, 0x1c, 0xe5, + 0x43, 0x5d, 0xf7, 0x04, 0x12, 0x64, 0xd8, 0xc3, 0x63, 0x2b, 0x18, 0xd0, + 0x0a, 0x40, 0x20, 0x43, 0x5d, 0xf7, 0x04, 0x12, 0x64, 0xd8, 0xc3, 0x63, + 0xdb, 0xbf, 0x7f, 0x40, 0xc0, 0xba, 0x00, 0x20, 0x64, 0x5e, 0xff, 0x5f, + 0x18, 0x40, 0x64, 0x5b, 0xbf, 0x7f, 0x03, 0x10, 0xe6, 0x28, 0x00, 0x72, + 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x1f, 0x10, 0x8e, 0x2c, 0x1c, 0x72, + 0x40, 0x00, 0x75, 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, 0x07, 0x14, 0xe6, + 0x5b, 0xa0, 0x00, 0x98, 0x09, 0x2b, 0xc0, 0x99, 0x1d, 0xf4, 0xbb, 0x63, + 0x08, 0x14, 0x26, 0xf6, 0xbf, 0x7f, 0x02, 0xbc, 0x1f, 0xe3, 0xbf, 0x7f, + 0x03, 0x00, 0xe0, 0xc4, 0x00, 0x64, 0xf0, 0xfb, 0x63, 0x07, 0x04, 0xe0, + 0x3b, 0x28, 0xe5, 0x16, 0x40, 0x20, 0x00, 0x00, 0x64, 0xdc, 0xe7, 0x63, + 0x1b, 0x3c, 0xfe, 0x00, 0x00, 0x64, 0xd8, 0xff, 0x63, 0x23, 0x3c, 0xfe, + 0x00, 0x00, 0x74, 0xc4, 0xfb, 0x63, 0x41, 0xff, 0xff, 0x44, 0x18, 0x64, + 0x00, 0x44, 0x24, 0xb9, 0x76, 0x02, 0x03, 0xa0, 0x06, 0x04, 0x19, 0x64, + 0x31, 0x00, 0x00, 0xe4, 0x9b, 0x62, 0x0d, 0x00, 0x00, 0x8c, 0x3c, 0x4e, + 0x1e, 0x42, 0x20, 0x04, 0x0e, 0x3a, 0x76, 0x00, 0x60, 0x0d, 0x00, 0x00, + 0x08, 0x3d, 0x4e, 0x84, 0xa0, 0x3a, 0x66, 0x40, 0x60, 0x5f, 0x99, 0xf2, + 0x21, 0x00, 0x00, 0x3c, 0x98, 0x64, 0x93, 0x43, 0x90, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x00, 0x7e, 0x24, 0xb3, 0x5f, 0x90, 0xa3, 0x57, 0x90, + 0x31, 0x00, 0x00, 0xc0, 0x8f, 0x62, 0x04, 0xc2, 0x64, 0x83, 0x43, 0x90, + 0xb3, 0x1b, 0x90, 0xa3, 0x07, 0x90, 0x09, 0x00, 0x00, 0xdc, 0xe3, 0x62, + 0xbc, 0x1d, 0x48, 0x42, 0x00, 0x60, 0xc3, 0x01, 0x40, 0xf8, 0xdf, 0x63, + 0x80, 0x07, 0x64, 0x3b, 0x2c, 0xe5, 0xff, 0x12, 0xfe, 0xc4, 0x1c, 0x3a, + 0x0e, 0x00, 0x60, 0x9f, 0x09, 0x00, 0x9b, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x10, 0x3d, 0x4e, 0xc4, 0x91, 0x3a, 0x9f, 0x49, 0x00, 0x9f, 0xdd, 0xf9, + 0x83, 0xbf, 0x7f, 0x3f, 0x2c, 0xe5, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xf0, 0xef, 0x63, 0x8f, 0x23, 0x80, 0x01, 0x12, 0x00, 0x04, 0x00, 0x55, + 0x03, 0x3c, 0xfe, 0x01, 0x00, 0x00, 0x20, 0x3c, 0xbb, 0xc8, 0x04, 0x2b, + 0x44, 0x88, 0x3e, 0x4e, 0x0c, 0x00, 0x52, 0x08, 0x00, 0x1a, 0x00, 0x60, + 0x2c, 0x10, 0x72, 0xfe, 0x48, 0x20, 0xec, 0xbc, 0x48, 0x1e, 0x40, 0x60, + 0x17, 0x04, 0xe0, 0x01, 0x00, 0x00, 0x04, 0x40, 0xb3, 0xf6, 0xbf, 0x7f, + 0xe0, 0xd3, 0xc9, 0x7e, 0x04, 0x00, 0x01, 0x12, 0x00, 0x0c, 0x00, 0x64, + 0xd3, 0x00, 0x80, 0xc0, 0x00, 0x64, 0x04, 0x88, 0x40, 0xc8, 0x8b, 0x40, + 0x13, 0x45, 0xfc, 0xc3, 0x10, 0x90, 0xc3, 0x00, 0x80, 0xbf, 0x40, 0xfb, + 0xc3, 0x3c, 0x90, 0xbf, 0xbf, 0x7f, 0x0f, 0x38, 0xe5, 0x11, 0x10, 0x00, + 0x00, 0x06, 0x55, 0x3c, 0x7c, 0xb3, 0x52, 0x01, 0x40, 0x0f, 0x3c, 0xe5, + 0x97, 0x90, 0x32, 0x8c, 0x15, 0x72, 0x82, 0xb8, 0x00, 0x08, 0x84, 0x92, + 0xba, 0x40, 0x60, 0x83, 0x81, 0x50, 0xd8, 0x9f, 0x63, 0x51, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x51, 0x00, 0x00, 0x40, 0x00, 0x86, 0x26, 0x40, 0x20, + 0x16, 0x40, 0x20, 0x9a, 0x00, 0x40, 0xa1, 0x00, 0x00, 0x00, 0x80, 0x8a, + 0x86, 0x40, 0x60, 0x83, 0xb1, 0x50, 0xe8, 0x9b, 0x63, 0x2a, 0x40, 0x20, + 0x83, 0xa1, 0x50, 0xdc, 0x9b, 0x63, 0x2e, 0x40, 0x20, 0x83, 0x91, 0x50, + 0xd0, 0x9b, 0x63, 0x84, 0x2e, 0x3a, 0xfe, 0x00, 0x60, 0x88, 0x42, 0x31, + 0xa4, 0x80, 0x3a, 0xf2, 0x40, 0x40, 0xec, 0x42, 0x31, 0xe4, 0x2a, 0x3a, + 0x16, 0x00, 0x60, 0x0c, 0x40, 0x31, 0xe4, 0x88, 0x3a, 0x0a, 0x40, 0x60, + 0xdf, 0x05, 0x00, 0x7c, 0x12, 0x26, 0x0a, 0x00, 0x60, 0x56, 0x42, 0x01, + 0x74, 0x91, 0x26, 0x0a, 0x40, 0x60, 0x56, 0xc1, 0x00, 0x4a, 0x41, 0x20, + 0x83, 0x81, 0x50, 0xd0, 0x97, 0x63, 0x4a, 0xc1, 0x21, 0x83, 0x81, 0x50, + 0xc4, 0x97, 0x63, 0x23, 0x06, 0x00, 0x9b, 0x11, 0x00, 0x8b, 0x01, 0x80, + 0x3d, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x3d, 0x00, 0x00, 0xc0, 0x00, 0x92, + 0x22, 0xbf, 0x7f, 0x00, 0x00, 0x64, 0xf8, 0xbb, 0x63, 0x0d, 0x00, 0x00, + 0x14, 0x25, 0x64, 0x18, 0x00, 0x64, 0x83, 0x01, 0x40, 0xd8, 0xb7, 0x63, + 0x50, 0x09, 0x58, 0x23, 0x06, 0x00, 0x0c, 0x90, 0x3a, 0x5a, 0x40, 0x60, + 0x7e, 0x29, 0xc1, 0xec, 0x03, 0x3a, 0x0a, 0x00, 0x60, 0xdf, 0x05, 0x00, + 0x9b, 0x05, 0x00, 0x98, 0x85, 0x92, 0xd2, 0xff, 0x7f, 0xfc, 0x21, 0x48, + 0x0e, 0x00, 0x40, 0x40, 0x00, 0x65, 0xe8, 0xd3, 0x63, 0x00, 0x00, 0x64, + 0x0b, 0x3c, 0xe5, 0x2f, 0x1c, 0xfe, 0x0d, 0x00, 0x00, 0x04, 0x1b, 0x52, + 0x40, 0x90, 0x26, 0xea, 0xff, 0x5f, 0x09, 0x00, 0x00, 0x18, 0x9f, 0x64, + 0x6f, 0xbf, 0x7f, 0x80, 0x00, 0x64, 0xd3, 0xbf, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x10, 0xe0, 0x03, 0x8f, 0xf1, 0x11, 0x10, 0x00, 0x24, 0x40, 0x80, + 0x07, 0xa5, 0xf1, 0x51, 0x10, 0x00, 0x3c, 0x1c, 0x64, 0xc3, 0x07, 0x90, + 0x03, 0xcf, 0xf1, 0xd3, 0x03, 0x90, 0x87, 0xce, 0xf1, 0xe3, 0x07, 0x90, + 0x03, 0xce, 0xf1, 0xf3, 0x03, 0x90, 0x03, 0x14, 0xe0, 0x3f, 0xc3, 0xfe, + 0x47, 0x44, 0x00, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x93, 0x03, 0xbc, 0xfd, + 0x03, 0x04, 0x00, 0x3c, 0xfc, 0xe4, 0xeb, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x08, 0x22, 0x55, 0x0d, 0x00, 0x00, 0x12, 0xbc, 0x1f, 0x03, 0x0c, 0x36, + 0x87, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x3d, 0x00, 0x00, + 0xc0, 0x00, 0x92, 0x12, 0x00, 0x60, 0x08, 0x00, 0x64, 0x82, 0x40, 0x20, + 0x00, 0x3c, 0x23, 0x4f, 0x24, 0x37, 0xec, 0x90, 0x48, 0x12, 0x40, 0x60, + 0x47, 0x10, 0x35, 0x7c, 0x00, 0x48, 0xe6, 0xbf, 0x7f, 0x8b, 0x10, 0x00, + 0xc3, 0xbf, 0x7f, 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, + 0x03, 0x10, 0x8e, 0x24, 0x00, 0x72, 0x40, 0x00, 0x75, 0x0d, 0x00, 0x00, + 0x74, 0x07, 0x82, 0x00, 0x3c, 0x23, 0x1b, 0x08, 0xe6, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x93, 0x1a, 0x40, 0x20, 0x1a, 0x00, 0x60, 0x03, 0x10, 0x80, + 0x01, 0x00, 0x3c, 0x00, 0x80, 0x8e, 0x40, 0x00, 0x64, 0x7e, 0x40, 0x60, + 0xfd, 0xff, 0xff, 0xb8, 0x7c, 0x87, 0x2e, 0x00, 0x60, 0x82, 0x11, 0xc0, + 0xfd, 0xff, 0xff, 0x3c, 0xfc, 0x85, 0x1e, 0x40, 0x60, 0xa3, 0x0f, 0x90, + 0xfc, 0xf3, 0x63, 0x8f, 0x23, 0x80, 0x24, 0x00, 0x72, 0x80, 0x00, 0x64, + 0x4b, 0x00, 0x60, 0x00, 0x00, 0x64, 0x88, 0x00, 0xc8, 0xfd, 0xff, 0xff, + 0xf8, 0x7c, 0x87, 0x3a, 0x00, 0x60, 0x87, 0x11, 0x80, 0x01, 0xff, 0x03, + 0x4a, 0x00, 0x00, 0x01, 0xff, 0x03, 0x80, 0x80, 0x86, 0x22, 0x40, 0x60, + 0x13, 0x00, 0x80, 0x4f, 0x28, 0x38, 0x00, 0x00, 0x64, 0x3f, 0xa1, 0x3b, + 0xc4, 0x3c, 0x3a, 0x02, 0x0c, 0x80, 0x1f, 0x0c, 0xe6, 0x00, 0x00, 0x64, + 0xfb, 0xbf, 0x7f, 0x00, 0x04, 0x92, 0x1e, 0x00, 0x60, 0x11, 0x10, 0x00, + 0x0c, 0x0a, 0x52, 0xcf, 0x04, 0xd0, 0x11, 0x10, 0x00, 0x44, 0x0d, 0x7e, + 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x03, 0x30, 0x03, 0x0a, 0x00, 0xe4, + 0x93, 0x04, 0xd0, 0x03, 0x08, 0xb2, 0x00, 0x3c, 0x23, 0x00, 0x04, 0x92, + 0x46, 0x0c, 0x00, 0x26, 0x00, 0x60, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, + 0x4c, 0x0c, 0x2b, 0x0a, 0xe0, 0x00, 0x93, 0x4c, 0xfb, 0x11, 0x10, 0x00, + 0x44, 0x11, 0x7e, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x03, 0x30, 0x03, + 0x0a, 0x00, 0xe4, 0x4c, 0x10, 0x2b, 0x92, 0xc0, 0x01, 0x07, 0x4d, 0xfb, + 0x03, 0x04, 0xb2, 0x00, 0x3c, 0x23, 0x13, 0x10, 0xe6, 0x47, 0x10, 0x00, + 0x58, 0x14, 0x2b, 0x86, 0x41, 0x20, 0x1e, 0x40, 0x20, 0xa3, 0x0b, 0x90, + 0xf9, 0xff, 0xff, 0xf0, 0xaf, 0x62, 0x8b, 0x23, 0x80, 0x00, 0x18, 0x94, + 0x80, 0x00, 0x92, 0x13, 0x00, 0xfd, 0x80, 0x80, 0x86, 0x04, 0x29, 0x2b, + 0x0f, 0x40, 0xfd, 0xd0, 0x24, 0x2b, 0x0b, 0x44, 0xfb, 0x8b, 0x50, 0xfb, + 0xc0, 0x99, 0x1d, 0x13, 0x14, 0xe6, 0xf9, 0xff, 0xff, 0x0f, 0x05, 0xfe, + 0x0f, 0x28, 0xe5, 0x1a, 0x40, 0x20, 0x20, 0x00, 0xc8, 0x03, 0x00, 0x80, + 0x00, 0x30, 0x26, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x74, 0x0b, 0x82, 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x04, 0x40, 0x55, + 0x0f, 0x10, 0x35, 0x4b, 0x0c, 0x32, 0xc0, 0x88, 0x3a, 0x72, 0x40, 0x60, + 0x48, 0x02, 0x64, 0xdb, 0xbf, 0x7f, 0x80, 0x9d, 0x1d, 0x08, 0x02, 0xe5, + 0xf9, 0xff, 0xff, 0xc0, 0x97, 0x62, 0x06, 0x0a, 0xc0, 0x40, 0x80, 0x90, + 0x26, 0x40, 0x60, 0x01, 0x00, 0x04, 0x00, 0x20, 0x8e, 0x1a, 0x00, 0x60, + 0x00, 0x74, 0x98, 0x08, 0x08, 0x94, 0x80, 0x9d, 0x1d, 0xf9, 0xff, 0xff, + 0xf8, 0x8f, 0x62, 0x57, 0x05, 0x00, 0xdf, 0x01, 0x01, 0x93, 0x01, 0x80, + 0x3f, 0xa1, 0x3b, 0xfc, 0x17, 0x3a, 0xb2, 0xbf, 0x7f, 0xc0, 0x2b, 0x64, + 0x0b, 0x2c, 0xe5, 0xf5, 0xff, 0xff, 0xef, 0x17, 0xfe, 0x1c, 0x20, 0x64, + 0x0d, 0x00, 0x00, 0x20, 0x1b, 0x64, 0xd7, 0xbf, 0x7f, 0x0b, 0x28, 0xe5, + 0x1a, 0x40, 0x20, 0x20, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x40, 0x30, 0x26, + 0x16, 0x00, 0x60, 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, + 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0x53, 0x10, 0x35, + 0x8f, 0x0c, 0x32, 0x00, 0x8d, 0x3a, 0x0e, 0x40, 0x60, 0x44, 0x02, 0x64, + 0xdb, 0xbf, 0x7f, 0x04, 0x20, 0x64, 0xf5, 0xff, 0xff, 0xd8, 0xf3, 0x63, + 0x0d, 0x00, 0x00, 0x84, 0x1b, 0x4e, 0x40, 0x00, 0x84, 0xc6, 0xbf, 0x5f, + 0x1c, 0xb0, 0x26, 0x76, 0x40, 0x60, 0x00, 0x10, 0x94, 0x0a, 0x40, 0x30, + 0x83, 0x01, 0x52, 0x0b, 0x2c, 0xe5, 0xf5, 0xff, 0xff, 0x8f, 0x1d, 0xfe, + 0x80, 0x9d, 0x1d, 0x08, 0x02, 0xe5, 0xf5, 0xff, 0xff, 0xd8, 0xe7, 0x63, + 0x0e, 0x0a, 0xc0, 0xc0, 0x80, 0x90, 0x26, 0x40, 0x60, 0x01, 0x00, 0x02, + 0x00, 0x20, 0x8e, 0x1a, 0x00, 0x60, 0x10, 0x10, 0x94, 0x0a, 0x41, 0x30, + 0x80, 0x9d, 0x1d, 0xf5, 0xff, 0xff, 0xd0, 0xe3, 0x63, 0x57, 0x05, 0x00, + 0xdf, 0x01, 0x01, 0xbf, 0x01, 0x80, 0xcb, 0xa3, 0x3b, 0xbc, 0x14, 0x3a, + 0xb2, 0xbf, 0x7f, 0x4f, 0xbf, 0x7f, 0x1c, 0x28, 0x64, 0x54, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x20, 0x1b, 0x64, 0xdf, 0xbf, 0x7f, 0x2c, 0x08, 0xc8, + 0x4c, 0x10, 0x5a, 0x8b, 0x50, 0x00, 0x10, 0x0c, 0x7a, 0xf3, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x3b, 0x88, 0xe5, 0x22, 0x40, 0x20, 0x5e, 0x40, 0x20, + 0xab, 0x23, 0x00, 0xc0, 0x89, 0x1d, 0xb3, 0x4f, 0x90, 0xa3, 0x4b, 0x90, + 0x77, 0x79, 0x60, 0x87, 0x43, 0x81, 0x8b, 0x23, 0x00, 0x03, 0x84, 0xf6, + 0x87, 0x63, 0x80, 0x84, 0x02, 0x78, 0xc2, 0x41, 0x20, 0x97, 0xca, 0xf2, + 0x53, 0x79, 0x60, 0xa6, 0x42, 0x20, 0x58, 0x81, 0x1d, 0x8b, 0x63, 0x80, + 0x8f, 0x73, 0x80, 0x84, 0xc3, 0x73, 0x58, 0x0c, 0xc8, 0xdc, 0x14, 0x3a, + 0x26, 0x00, 0x60, 0x9b, 0x23, 0x00, 0xbf, 0xe9, 0xf2, 0x10, 0x0c, 0x64, + 0xcf, 0x8f, 0xf2, 0x20, 0x0c, 0xca, 0x84, 0x12, 0x78, 0x83, 0x96, 0xf2, + 0x1b, 0xe4, 0xf2, 0x8b, 0x23, 0x00, 0xac, 0xa8, 0x48, 0x1e, 0x40, 0x40, + 0x87, 0x23, 0x00, 0x12, 0x42, 0x20, 0xbf, 0xc6, 0xf2, 0x18, 0x3c, 0xca, + 0x8c, 0xfe, 0x5c, 0x04, 0x0d, 0x78, 0x82, 0x41, 0x20, 0x3f, 0x8c, 0xe5, + 0x3b, 0x88, 0xe5, 0x22, 0x40, 0x20, 0x5e, 0x40, 0x20, 0xab, 0x23, 0x00, + 0xc0, 0x89, 0x1d, 0xb3, 0x4f, 0x90, 0xa3, 0x4b, 0x90, 0xcb, 0x78, 0x60, + 0x87, 0x43, 0x81, 0x8b, 0x23, 0x00, 0x03, 0x84, 0xf6, 0x87, 0x63, 0x80, + 0x84, 0x02, 0x78, 0xc2, 0x41, 0x20, 0x97, 0xca, 0xf2, 0xa7, 0x78, 0x60, + 0xa6, 0x42, 0x20, 0x58, 0x81, 0x1d, 0x8b, 0x63, 0x80, 0x8f, 0x73, 0x80, + 0x84, 0xc3, 0x73, 0x58, 0x0c, 0xc8, 0xdc, 0x14, 0x3a, 0x26, 0x00, 0x60, + 0x9b, 0x23, 0x00, 0xbf, 0xe9, 0xf2, 0x10, 0x0c, 0x64, 0xcf, 0x8f, 0xf2, + 0x20, 0x0c, 0xca, 0x84, 0x12, 0x78, 0x83, 0x96, 0xf2, 0x1b, 0xe4, 0xf2, + 0x8b, 0x23, 0x00, 0xac, 0xa8, 0x48, 0x1e, 0x40, 0x40, 0x87, 0x23, 0x00, + 0x12, 0x42, 0x20, 0xbf, 0xc6, 0xf2, 0x18, 0x3c, 0xca, 0x8c, 0xfe, 0x5c, + 0x04, 0x0d, 0x78, 0x82, 0x41, 0x20, 0x3f, 0x8c, 0xe5, 0x1f, 0x88, 0xe5, + 0x2e, 0x40, 0x20, 0xda, 0x42, 0x20, 0x82, 0x40, 0x20, 0x4a, 0x00, 0xe0, + 0x84, 0x00, 0x66, 0x12, 0x00, 0x60, 0x80, 0x01, 0xe4, 0x83, 0xed, 0xf2, + 0x1f, 0x8c, 0xe5, 0xa8, 0x90, 0x66, 0x5f, 0x04, 0x00, 0x12, 0x40, 0x60, + 0x84, 0x09, 0x78, 0xc6, 0x41, 0x20, 0xd7, 0xbf, 0x7f, 0x4e, 0x04, 0xe0, + 0xdc, 0x10, 0x66, 0x0a, 0x00, 0x60, 0x5f, 0x08, 0x00, 0xc6, 0x01, 0xe0, + 0x6c, 0x94, 0x66, 0x0a, 0x40, 0x60, 0xdf, 0x05, 0x00, 0x88, 0x02, 0x74, + 0xfe, 0x41, 0x20, 0xd4, 0x07, 0x5e, 0x53, 0xc1, 0x01, 0x0c, 0x05, 0x3b, + 0x1e, 0x00, 0x60, 0x70, 0x95, 0x66, 0x6e, 0x40, 0x40, 0xde, 0x43, 0x20, + 0x28, 0x00, 0x64, 0x94, 0x02, 0x64, 0x4b, 0x00, 0x60, 0xd2, 0x05, 0xe0, + 0x57, 0xc1, 0x01, 0xcf, 0x94, 0xf2, 0x1f, 0xc1, 0x01, 0xc8, 0x85, 0x3b, + 0x0a, 0x40, 0x60, 0xcc, 0x48, 0x24, 0xde, 0x43, 0x20, 0xb7, 0xbf, 0x7f, + 0xde, 0x05, 0xe0, 0x53, 0xc0, 0x01, 0xab, 0x92, 0xf2, 0xc7, 0xc1, 0x01, + 0x48, 0x04, 0x3b, 0x0a, 0x00, 0x60, 0xa8, 0x56, 0x24, 0xde, 0x43, 0x20, + 0xfe, 0x41, 0x20, 0xc4, 0x07, 0x5e, 0x4b, 0xc0, 0x01, 0x8c, 0x04, 0x3b, + 0xd2, 0xbf, 0x7f, 0xd2, 0x01, 0xe0, 0x3c, 0x00, 0x64, 0x24, 0xb5, 0x66, + 0x0e, 0x40, 0x60, 0xdf, 0x05, 0x00, 0x7c, 0x00, 0x64, 0xd6, 0x01, 0xe0, + 0x64, 0x35, 0x66, 0x0e, 0x00, 0x60, 0xdf, 0x05, 0x00, 0xff, 0x07, 0x00, + 0xca, 0x01, 0xe0, 0x98, 0xb0, 0x66, 0x52, 0x43, 0x60, 0x98, 0x30, 0x3b, + 0x6a, 0x00, 0x60, 0x80, 0xac, 0x66, 0x8e, 0x42, 0x60, 0x80, 0x2c, 0x3b, + 0x36, 0x00, 0x60, 0x88, 0xa4, 0x66, 0xaa, 0x40, 0x60, 0x80, 0xa8, 0x66, + 0x3e, 0x40, 0x40, 0x0c, 0x52, 0x64, 0x84, 0x28, 0x66, 0xc4, 0x04, 0x70, + 0x07, 0x00, 0x80, 0x17, 0x10, 0x00, 0xa3, 0x0f, 0x90, 0x0c, 0x02, 0x64, + 0x7f, 0x02, 0x60, 0x88, 0x30, 0x66, 0x7a, 0x01, 0x60, 0x88, 0xb0, 0x3b, + 0xae, 0x42, 0x60, 0x90, 0x2c, 0x66, 0xba, 0x02, 0x60, 0x83, 0x09, 0xb0, + 0x16, 0x40, 0x20, 0xf3, 0x02, 0x60, 0x98, 0x38, 0x66, 0xe2, 0x00, 0x60, + 0x98, 0xb8, 0x3b, 0x16, 0x40, 0x60, 0xa0, 0x30, 0x66, 0x96, 0x01, 0x60, + 0x80, 0xb8, 0x66, 0x9f, 0xbf, 0x7f, 0xb8, 0xb8, 0x66, 0x5a, 0x42, 0x60, + 0x80, 0x3c, 0x66, 0x02, 0x02, 0x60, 0xa8, 0xb8, 0x66, 0xc2, 0xff, 0x5f, + 0xc8, 0x03, 0x86, 0x08, 0x52, 0x64, 0xda, 0x01, 0x60, 0xa3, 0x0b, 0x90, + 0x17, 0x10, 0x00, 0x88, 0x02, 0x64, 0x07, 0x00, 0x80, 0x87, 0x00, 0x60, + 0x27, 0x00, 0x80, 0x20, 0x52, 0x64, 0x88, 0x02, 0x74, 0x17, 0x10, 0x00, + 0x46, 0x02, 0xe0, 0xa3, 0x23, 0x90, 0x82, 0x41, 0x20, 0xb4, 0x0b, 0x64, + 0xe4, 0xcb, 0x63, 0x83, 0x81, 0xf2, 0x03, 0x34, 0xb0, 0x33, 0x04, 0x00, + 0x88, 0x02, 0x74, 0x02, 0x43, 0x20, 0x46, 0x06, 0xe0, 0xa3, 0x23, 0x90, + 0xc4, 0xcb, 0x63, 0x0f, 0x83, 0xf2, 0xc3, 0x34, 0xb0, 0xdb, 0x04, 0x00, + 0x82, 0x41, 0x20, 0x88, 0x02, 0x74, 0x46, 0x0a, 0xe0, 0xa3, 0x23, 0x90, + 0xe4, 0xc7, 0x63, 0x87, 0x81, 0xf2, 0x43, 0x34, 0xb0, 0x5b, 0x04, 0x00, + 0x0c, 0x00, 0x64, 0x46, 0x0e, 0xe0, 0xa3, 0x23, 0x90, 0x88, 0x02, 0x64, + 0x82, 0x41, 0x20, 0xc0, 0xc7, 0x63, 0x33, 0x01, 0x60, 0x07, 0x00, 0x80, + 0xcb, 0x68, 0xfb, 0x17, 0x10, 0x00, 0x40, 0x80, 0x86, 0x42, 0x68, 0xab, + 0x86, 0x41, 0x20, 0x5c, 0x08, 0x72, 0x0c, 0x04, 0x5e, 0xc4, 0x80, 0x66, + 0x12, 0x40, 0x60, 0xdf, 0x05, 0x00, 0x42, 0x41, 0x20, 0x9b, 0xbd, 0x7f, + 0x84, 0x0d, 0x78, 0xe7, 0xbf, 0x7f, 0x44, 0x3c, 0x78, 0x0e, 0x41, 0x20, + 0x5a, 0x40, 0x20, 0xc0, 0xcf, 0xc9, 0x3c, 0x04, 0x5e, 0xd3, 0x44, 0x00, + 0xc4, 0x03, 0x66, 0xe6, 0xbf, 0x7f, 0x00, 0x08, 0x64, 0xce, 0x40, 0x20, + 0xd2, 0x40, 0x20, 0x10, 0x10, 0xca, 0x84, 0x01, 0x78, 0xbb, 0xbf, 0x7f, + 0x23, 0x00, 0x80, 0x17, 0x10, 0x00, 0x33, 0x16, 0x00, 0x24, 0x52, 0x64, + 0x04, 0x06, 0x5e, 0xa3, 0x27, 0x90, 0x08, 0x04, 0x64, 0x82, 0x41, 0x20, + 0x8c, 0x00, 0x64, 0xe0, 0xbb, 0x63, 0x8b, 0x81, 0xf2, 0x40, 0x0b, 0x64, + 0x83, 0x00, 0xb0, 0x2c, 0xa3, 0x48, 0x9b, 0x04, 0x00, 0xd2, 0xff, 0x7f, + 0x06, 0x03, 0xe0, 0xa3, 0x27, 0x90, 0x8c, 0x00, 0x64, 0xb3, 0x00, 0x60, + 0xc8, 0x83, 0x86, 0x30, 0x52, 0x64, 0x2a, 0x40, 0x60, 0x07, 0x00, 0x80, + 0x17, 0x10, 0x00, 0x7c, 0x7c, 0xbb, 0x12, 0x00, 0x60, 0x50, 0x0b, 0x64, + 0x84, 0x11, 0x78, 0x44, 0x00, 0x25, 0xa3, 0x33, 0x90, 0x03, 0xbf, 0x7f, + 0x27, 0x10, 0x80, 0x17, 0x20, 0x00, 0x23, 0x00, 0x80, 0x7c, 0xfe, 0xbb, + 0x16, 0x40, 0x60, 0x40, 0x0b, 0x75, 0x84, 0x05, 0x78, 0x20, 0x60, 0x49, + 0x24, 0x24, 0x6f, 0xa3, 0x33, 0x90, 0x88, 0x02, 0x64, 0x06, 0x42, 0x20, + 0x82, 0x41, 0x20, 0xfc, 0xbb, 0x63, 0x9b, 0x81, 0xf2, 0xfb, 0xbe, 0x7f, + 0xa3, 0x0b, 0x90, 0x17, 0x20, 0x00, 0x88, 0x02, 0x64, 0x07, 0x00, 0x80, + 0xe3, 0xbf, 0x7f, 0xc8, 0x83, 0x86, 0x10, 0x52, 0x64, 0x84, 0x2c, 0x66, + 0x26, 0x40, 0x60, 0x17, 0x10, 0x00, 0x07, 0x00, 0x80, 0x02, 0x41, 0x20, + 0x0a, 0x00, 0x40, 0x03, 0x85, 0x00, 0xa3, 0x03, 0x90, 0x08, 0x04, 0x64, + 0x83, 0xbe, 0x7f, 0x17, 0x20, 0x00, 0x07, 0x00, 0x80, 0x3e, 0x41, 0x20, + 0x0a, 0x00, 0x40, 0x3f, 0x85, 0x00, 0xa3, 0x3f, 0x90, 0x08, 0x04, 0x64, + 0x93, 0xbf, 0x7f, 0x0c, 0x52, 0x64, 0x06, 0x00, 0xc0, 0x17, 0x10, 0x00, + 0xa3, 0x0f, 0x90, 0x0c, 0x01, 0x64, 0xc7, 0xbf, 0x7f, 0x3c, 0x52, 0x64, + 0x06, 0x00, 0xe0, 0x17, 0x10, 0x00, 0xa3, 0x3f, 0x90, 0xff, 0xbe, 0x7f, + 0x16, 0x40, 0x20, 0x60, 0x21, 0x5a, 0x27, 0x10, 0x80, 0xb0, 0xe0, 0xc9, + 0x10, 0x52, 0x64, 0x44, 0x06, 0x5e, 0xa3, 0x13, 0x90, 0x82, 0x41, 0x20, + 0x8c, 0x00, 0x64, 0x08, 0x04, 0x64, 0xcc, 0xa7, 0x63, 0x9b, 0x81, 0xf2, + 0x23, 0x46, 0x00, 0xdb, 0xbf, 0x7f, 0x0b, 0x00, 0x80, 0x17, 0x10, 0x00, + 0x83, 0x09, 0xb0, 0x9b, 0x05, 0x00, 0x1f, 0xbe, 0x7f, 0x03, 0x00, 0xe0, + 0x87, 0x43, 0x80, 0x8b, 0x93, 0x00, 0xf4, 0xb7, 0x63, 0x07, 0x04, 0xe0, + 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, 0x00, 0x91, 0x55, 0x09, 0x00, 0x00, + 0x04, 0x02, 0x81, 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, 0x00, 0x90, 0x55, + 0x09, 0x00, 0x00, 0x24, 0x02, 0x81, 0x00, 0x3c, 0x23, 0x17, 0x81, 0xe6, + 0x05, 0x00, 0x00, 0x00, 0x89, 0x55, 0x38, 0x00, 0xc8, 0x00, 0x40, 0x64, + 0x05, 0x00, 0x00, 0x27, 0xf1, 0xf8, 0x18, 0x00, 0xca, 0x80, 0x01, 0xe4, + 0x9b, 0x05, 0x00, 0x05, 0x00, 0x00, 0x18, 0x8a, 0x55, 0x40, 0x5c, 0x64, + 0xa3, 0x03, 0x90, 0x83, 0x83, 0x00, 0xb3, 0x1b, 0x90, 0x9b, 0x05, 0x00, + 0xfc, 0xf7, 0x63, 0x87, 0xe3, 0x82, 0x8f, 0x83, 0x00, 0x8b, 0xb3, 0x05, + 0xc3, 0x80, 0xf2, 0x05, 0x00, 0x00, 0x44, 0x19, 0x81, 0xe0, 0xaf, 0x63, + 0x11, 0x10, 0x00, 0x08, 0x0b, 0x4e, 0x80, 0x00, 0x84, 0x3e, 0x00, 0x60, + 0x11, 0x10, 0x00, 0x10, 0x0b, 0x64, 0x32, 0x09, 0xc0, 0x00, 0x83, 0x90, + 0xfa, 0xff, 0x7f, 0xb3, 0x83, 0x00, 0x04, 0x00, 0x64, 0x3c, 0x07, 0x5e, + 0xc0, 0x03, 0x66, 0x0e, 0x00, 0x60, 0x40, 0xc0, 0x92, 0x12, 0x40, 0x60, + 0x11, 0x10, 0x00, 0x74, 0x05, 0x82, 0x17, 0x85, 0xe6, 0x44, 0x3c, 0x78, + 0xdf, 0xbf, 0x7f, 0x23, 0x00, 0xe0, 0x04, 0x5e, 0x64, 0xb3, 0x03, 0x90, + 0xa3, 0x07, 0x90, 0x83, 0x43, 0x90, 0xf4, 0xf3, 0x63, 0x11, 0x10, 0x00, + 0x00, 0x21, 0x55, 0x3c, 0x7c, 0xb3, 0x12, 0x00, 0x60, 0x8b, 0x43, 0x80, + 0x11, 0x10, 0x00, 0x24, 0x48, 0x80, 0x27, 0x04, 0xe0, 0x03, 0x00, 0xe0, + 0x03, 0xae, 0xf1, 0x09, 0x0c, 0x00, 0x00, 0xb8, 0x64, 0xe3, 0x02, 0xf2, + 0x01, 0x10, 0x00, 0x04, 0x00, 0x64, 0xfd, 0x1f, 0x00, 0xcc, 0xff, 0x64, + 0x4a, 0xfc, 0x00, 0xd2, 0xfc, 0x00, 0x86, 0x70, 0x20, 0x0b, 0x41, 0x01, + 0x14, 0x10, 0x72, 0x08, 0x00, 0x64, 0x80, 0x23, 0x64, 0xe7, 0x6d, 0x60, + 0x01, 0x80, 0xff, 0x08, 0x00, 0x64, 0x01, 0x80, 0xff, 0x04, 0x03, 0x64, + 0x00, 0x24, 0x64, 0x03, 0x04, 0xe0, 0xcb, 0x2d, 0x60, 0x0f, 0x3a, 0xe5, + 0x01, 0x12, 0x00, 0x04, 0x40, 0x64, 0x43, 0x00, 0x80, 0x3c, 0x7c, 0xb3, + 0xfa, 0xbf, 0x7f, 0x67, 0x00, 0x80, 0x83, 0x23, 0x00, 0x01, 0x12, 0x00, + 0x04, 0x80, 0x64, 0x09, 0x00, 0x00, 0x1c, 0x9f, 0x64, 0x67, 0x32, 0x34, + 0x4b, 0x06, 0x00, 0x4b, 0xf8, 0x7f, 0x0d, 0x00, 0x00, 0x77, 0xa3, 0xf8, + 0x40, 0x91, 0xb4, 0x92, 0x41, 0x60, 0x8b, 0x23, 0x00, 0x2f, 0x8a, 0xf6, + 0xc4, 0x02, 0x66, 0x82, 0x01, 0x40, 0xef, 0x46, 0x00, 0x08, 0x00, 0x74, + 0x00, 0xae, 0x1d, 0xf1, 0xff, 0xff, 0xf4, 0x9b, 0x62, 0x1a, 0x40, 0x20, + 0xc8, 0x02, 0xc8, 0x0d, 0x00, 0x00, 0x8c, 0x1b, 0x4e, 0xe0, 0x80, 0x84, + 0x56, 0x41, 0x60, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x0d, 0x00, 0x00, + 0x2a, 0xbc, 0x1f, 0x0b, 0x10, 0x38, 0x0c, 0x00, 0x64, 0x2e, 0x00, 0x40, + 0x4c, 0x00, 0x64, 0x08, 0x01, 0x64, 0x80, 0xae, 0x1d, 0xf1, 0xff, 0xff, + 0xdc, 0x8f, 0x62, 0x13, 0x10, 0x38, 0x04, 0x51, 0x2b, 0x98, 0xc1, 0x9f, + 0x9b, 0x45, 0xfb, 0x48, 0x00, 0x75, 0xbf, 0x11, 0x3a, 0x90, 0x14, 0x2b, + 0xc4, 0x07, 0x2b, 0x82, 0xbe, 0x0f, 0x08, 0x38, 0x2b, 0x7f, 0x50, 0xfb, + 0xee, 0x3e, 0x00, 0xd0, 0x2a, 0x2b, 0xc7, 0x4b, 0xfb, 0x43, 0x50, 0xfb, + 0x3e, 0x44, 0x20, 0xc8, 0x24, 0x2b, 0xef, 0x4b, 0xfb, 0xc3, 0x2d, 0x90, + 0x09, 0x00, 0x00, 0x93, 0x0e, 0xbf, 0x09, 0x00, 0x00, 0x2c, 0x9d, 0x64, + 0xc3, 0x01, 0x80, 0x12, 0xb8, 0x00, 0x08, 0x81, 0x92, 0x5e, 0x40, 0x60, + 0xc3, 0x11, 0x50, 0xf1, 0xff, 0xff, 0xf4, 0xb3, 0x62, 0xcf, 0x01, 0x80, + 0xe3, 0x80, 0xdb, 0xc3, 0x0d, 0x90, 0xe4, 0xb0, 0x26, 0x0e, 0x40, 0x40, + 0xc2, 0x41, 0x20, 0x37, 0x65, 0x60, 0x01, 0xf0, 0x00, 0xbe, 0x01, 0x00, + 0x01, 0x60, 0x00, 0xc0, 0x03, 0x92, 0x0d, 0x00, 0x00, 0x10, 0x1b, 0x64, + 0x92, 0x00, 0x60, 0x9b, 0x11, 0x38, 0x98, 0x18, 0xc8, 0x44, 0x00, 0x64, + 0x0b, 0x05, 0xa0, 0x4f, 0x00, 0x60, 0x08, 0x05, 0x86, 0x1a, 0x00, 0x60, + 0xc1, 0x7f, 0x00, 0x06, 0x00, 0x00, 0x41, 0x09, 0x00, 0x40, 0x80, 0x92, + 0x12, 0x40, 0x60, 0xc2, 0x41, 0x20, 0xe7, 0x64, 0x60, 0xaf, 0xbf, 0x7f, + 0x30, 0x01, 0x92, 0xa6, 0xbf, 0x7f, 0xc2, 0x41, 0x20, 0xef, 0x64, 0x60, + 0x9b, 0xbf, 0x7f, 0xc3, 0x42, 0x84, 0x6c, 0xc3, 0x73, 0xc3, 0x5e, 0x94, + 0x0e, 0x09, 0xc0, 0xc0, 0x00, 0x90, 0x0e, 0x00, 0x60, 0xdf, 0x11, 0x00, + 0x57, 0x05, 0x00, 0x23, 0x06, 0x00, 0x1c, 0xa6, 0x3a, 0x5e, 0xfe, 0x7f, + 0x4b, 0x3d, 0xfe, 0x80, 0x0c, 0xa8, 0xfc, 0xd7, 0x63, 0x0f, 0x3e, 0xe5, + 0x01, 0x90, 0xff, 0xc3, 0x03, 0x00, 0x01, 0xe0, 0xff, 0x00, 0x80, 0x8e, + 0xc2, 0xff, 0x7f, 0x84, 0x00, 0x64, 0x6b, 0xbf, 0x7f, 0x0b, 0x38, 0xe5, + 0x09, 0x00, 0x00, 0x18, 0x9d, 0x64, 0x15, 0x0c, 0x00, 0x40, 0x45, 0x64, + 0x83, 0x01, 0x90, 0x90, 0x01, 0xe7, 0xb4, 0x51, 0xe4, 0x54, 0x00, 0x65, + 0x11, 0x10, 0x00, 0x20, 0x1e, 0x64, 0x11, 0x10, 0x00, 0x24, 0x20, 0x64, + 0x0d, 0x00, 0x00, 0x1c, 0x1b, 0x64, 0x01, 0x00, 0xa0, 0x28, 0x00, 0x64, + 0xf5, 0xff, 0xff, 0xd8, 0x9b, 0x62, 0xf1, 0xff, 0xff, 0xf4, 0xd7, 0x62, + 0x93, 0x11, 0x80, 0xd8, 0xd3, 0xc9, 0x86, 0x35, 0xea, 0x90, 0x01, 0xe7, + 0x40, 0x00, 0x66, 0x36, 0x00, 0x60, 0x48, 0x85, 0x40, 0x03, 0x0a, 0x90, + 0x43, 0x12, 0x90, 0x11, 0x10, 0x00, 0xe7, 0xe3, 0xf8, 0xb4, 0x51, 0xe4, + 0x92, 0x42, 0x20, 0xc2, 0x41, 0x20, 0xc0, 0xd3, 0x1f, 0x68, 0xc3, 0xc9, + 0x0b, 0x53, 0x60, 0xaf, 0xbf, 0x7f, 0x11, 0x10, 0x00, 0xc7, 0xe3, 0xf8, + 0x11, 0x10, 0x00, 0x07, 0xe4, 0xf8, 0x11, 0x10, 0x00, 0xe7, 0xe3, 0xf8, + 0xd7, 0xbf, 0x7f, 0x46, 0x3c, 0x00, 0x50, 0x04, 0x2b, 0x13, 0x8d, 0xd2, + 0x8f, 0x23, 0x80, 0x8a, 0xbc, 0x0f, 0x84, 0x38, 0x2b, 0x13, 0x45, 0xfb, + 0xca, 0x3c, 0x00, 0x8c, 0x28, 0x2b, 0x07, 0x4d, 0xfb, 0x03, 0x04, 0x90, + 0x00, 0x3c, 0x23, 0x2b, 0x38, 0xe5, 0xe4, 0xcb, 0x63, 0x48, 0x62, 0x64, + 0x01, 0x80, 0xff, 0x1c, 0x00, 0x55, 0x80, 0x00, 0x64, 0xc4, 0x00, 0x64, + 0x11, 0x10, 0x00, 0x27, 0xe4, 0xf8, 0xa3, 0x0b, 0x90, 0xb3, 0x07, 0x90, + 0x93, 0x43, 0x90, 0x83, 0x43, 0x90, 0x54, 0x6b, 0x64, 0x60, 0x6e, 0x64, + 0xd8, 0x31, 0x31, 0xf8, 0xb7, 0x63, 0x10, 0x6f, 0x64, 0xcc, 0x66, 0x64, + 0xa3, 0x13, 0x90, 0xb3, 0x0f, 0x90, 0x24, 0x70, 0x64, 0x0d, 0x00, 0x00, + 0xea, 0xbd, 0x1f, 0x5c, 0x72, 0x64, 0xd4, 0xb7, 0x63, 0xb3, 0x17, 0x90, + 0xa3, 0x23, 0x90, 0x14, 0xaf, 0x64, 0x63, 0x3d, 0x04, 0xc0, 0xb7, 0x63, + 0xb3, 0x1b, 0x90, 0xa3, 0x27, 0x90, 0xfd, 0x0f, 0x00, 0x9a, 0x81, 0x1f, + 0xec, 0xb3, 0x63, 0xb3, 0x2b, 0x90, 0xa3, 0x1f, 0x90, 0x0d, 0x00, 0x00, + 0x1c, 0x1b, 0x64, 0x68, 0x00, 0x65, 0xd4, 0xb3, 0x63, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x64, 0xc0, 0xbf, 0x63, 0x11, 0x10, 0x00, 0x47, 0x81, 0xf8, + 0x11, 0x10, 0x00, 0x4f, 0x81, 0xf8, 0x11, 0x10, 0x00, 0x57, 0x81, 0xf8, + 0x11, 0x10, 0x00, 0x5f, 0x81, 0xf8, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, + 0x06, 0x5c, 0x00, 0x11, 0x10, 0x00, 0x44, 0x05, 0x7e, 0x01, 0x01, 0x00, + 0x40, 0x00, 0x64, 0xc0, 0xbb, 0x63, 0x75, 0x04, 0x00, 0x88, 0x88, 0x64, + 0x8c, 0x74, 0x64, 0xb3, 0x0b, 0x90, 0xa3, 0x0f, 0x90, 0x83, 0x5b, 0x90, + 0x09, 0x00, 0x00, 0x18, 0x9d, 0x64, 0xa7, 0x21, 0x00, 0xe0, 0xab, 0x63, + 0x9b, 0x63, 0x60, 0x01, 0x02, 0x00, 0x00, 0x00, 0x64, 0xc8, 0xb7, 0x63, + 0xc3, 0x31, 0x52, 0x8f, 0xf0, 0x7f, 0x83, 0xe1, 0x57, 0x87, 0xf0, 0x7f, + 0x50, 0x00, 0x64, 0xc7, 0x11, 0xb0, 0xc8, 0x01, 0xe5, 0xdb, 0x15, 0xa2, + 0xe3, 0x21, 0xa2, 0xf3, 0x65, 0x90, 0xab, 0x29, 0xa5, 0xb3, 0x11, 0xb5, + 0x3d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x80, 0x10, 0x64, 0x11, 0x10, 0x00, + 0x47, 0xe1, 0xf8, 0x10, 0x00, 0xca, 0x50, 0x06, 0x7a, 0x3c, 0x40, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x84, 0x64, 0x80, 0x00, 0x64, 0x0d, 0x0b, 0x07, + 0x48, 0x52, 0x64, 0x9b, 0x3d, 0xa5, 0xa3, 0x01, 0xb5, 0x93, 0x49, 0x94, + 0xa3, 0x55, 0xa4, 0x0d, 0x00, 0x00, 0xe8, 0x84, 0x64, 0x05, 0x00, 0x00, + 0xe0, 0xc2, 0x64, 0x0d, 0x00, 0x00, 0x64, 0x52, 0x64, 0x0c, 0x80, 0x64, + 0x93, 0x6b, 0x90, 0x83, 0x63, 0x90, 0xb3, 0x27, 0x90, 0xa3, 0x0f, 0x90, + 0xec, 0x9f, 0x63, 0x09, 0x00, 0x00, 0x50, 0xb8, 0x64, 0x09, 0x00, 0x00, + 0x07, 0x85, 0x01, 0x43, 0x48, 0x0b, 0x0b, 0x7c, 0x19, 0xab, 0x69, 0xa4, + 0xf9, 0xff, 0xff, 0xab, 0xa4, 0x17, 0x83, 0xa1, 0xa4, 0x2d, 0x00, 0x00, + 0xa3, 0x2e, 0x0b, 0xb3, 0x65, 0xa4, 0xf9, 0xff, 0xff, 0x27, 0x9e, 0x1b, + 0xf5, 0xff, 0xff, 0x4f, 0x3a, 0x1b, 0xa3, 0xa9, 0xa4, 0x05, 0x00, 0x00, + 0x6b, 0xa1, 0x02, 0xbb, 0x51, 0xa4, 0xab, 0xa1, 0xa4, 0xf1, 0xff, 0xff, + 0xd3, 0x94, 0x07, 0x11, 0x00, 0x00, 0xa3, 0xbe, 0x15, 0x8b, 0x85, 0xa4, + 0xb3, 0xa5, 0xa4, 0x0d, 0x00, 0x00, 0x07, 0x2d, 0x08, 0xf9, 0xff, 0xff, + 0x27, 0xba, 0x19, 0x93, 0x81, 0xa4, 0xbb, 0x8d, 0xa4, 0xf9, 0xff, 0xff, + 0x43, 0x18, 0x1b, 0xf9, 0xff, 0xff, 0x4f, 0x1e, 0x16, 0x9b, 0x89, 0xa4, + 0x83, 0xd1, 0xa4, 0xf9, 0xff, 0xff, 0x0b, 0xa0, 0x10, 0xf5, 0xff, 0xff, + 0xd3, 0x9c, 0x14, 0x8b, 0xc5, 0xa4, 0x05, 0x00, 0x00, 0x47, 0x9d, 0x1c, + 0x05, 0x00, 0x00, 0x57, 0x15, 0x06, 0x9b, 0xc9, 0xa4, 0xbb, 0xcd, 0xa4, + 0x83, 0x11, 0xa5, 0x8b, 0x05, 0xa5, 0x93, 0xc1, 0xa4, 0xa3, 0xe9, 0xa4, + 0xab, 0xe1, 0xa4, 0xb3, 0xe5, 0xa4, 0x93, 0x15, 0xa5, 0xff, 0x4f, 0x60, + 0x01, 0x03, 0x00, 0x00, 0x00, 0x64, 0xec, 0x9b, 0x63, 0xc0, 0xa7, 0x63, + 0x01, 0x04, 0x00, 0x00, 0x00, 0x64, 0xdc, 0x9b, 0x63, 0xdc, 0x87, 0x62, + 0x01, 0x05, 0x00, 0x00, 0x00, 0x64, 0xcc, 0x9b, 0x63, 0x00, 0x00, 0x64, + 0xe3, 0x61, 0x60, 0x01, 0x06, 0x00, 0x00, 0x00, 0x64, 0xf8, 0x97, 0x63, + 0x00, 0x00, 0x64, 0x4b, 0x61, 0x60, 0x01, 0x07, 0x00, 0x00, 0x00, 0x64, + 0xe4, 0x97, 0x63, 0x01, 0x08, 0x00, 0x00, 0x00, 0x64, 0xd8, 0x97, 0x63, + 0x00, 0x04, 0x64, 0x84, 0x01, 0x64, 0xdf, 0xef, 0x7f, 0x67, 0xf8, 0x7f, + 0xc2, 0x41, 0x20, 0xe8, 0xbf, 0x63, 0x01, 0x80, 0x00, 0x08, 0x00, 0x75, + 0x1d, 0x10, 0x00, 0x04, 0x0c, 0x80, 0xcc, 0x3f, 0x64, 0x1d, 0x10, 0x00, + 0xa4, 0x0d, 0x80, 0x70, 0x38, 0xc4, 0x92, 0x40, 0x20, 0x01, 0x04, 0x01, + 0x00, 0x01, 0x5b, 0x06, 0x4c, 0x20, 0x03, 0x05, 0x90, 0x03, 0x21, 0x80, + 0xfd, 0x00, 0xc0, 0x06, 0xbc, 0x1f, 0x40, 0x10, 0xa8, 0x23, 0x01, 0x90, + 0x07, 0x11, 0x80, 0x43, 0x3c, 0xfe, 0x04, 0x40, 0xa8, 0x13, 0x05, 0x90, + 0x03, 0x31, 0x80, 0xc1, 0xff, 0xff, 0x06, 0x00, 0x00, 0x42, 0x50, 0x20, + 0x33, 0x01, 0x90, 0x07, 0x21, 0x80, 0xc1, 0xff, 0xff, 0x42, 0x00, 0x00, + 0x23, 0x01, 0x90, 0x07, 0x11, 0x80, 0x43, 0x48, 0xd0, 0x13, 0x05, 0x90, + 0x8b, 0x80, 0x00, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x00, 0x1b, 0x64, + 0x75, 0x04, 0x00, 0x88, 0x88, 0x64, 0x63, 0x00, 0x90, 0x73, 0x08, 0x90, + 0x00, 0x3c, 0x23, 0x40, 0x01, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, + 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, 0x60, 0x00, 0xe7, 0xcc, 0x66, 0x64, + 0xc2, 0x40, 0x20, 0x0a, 0x00, 0xe0, 0xcf, 0x04, 0x00, 0x84, 0x00, 0x66, + 0xf2, 0xbf, 0x7f, 0x3f, 0x48, 0x00, 0x4c, 0x00, 0x64, 0x98, 0x02, 0x64, + 0xc4, 0x83, 0x86, 0x1e, 0x40, 0x60, 0xe1, 0xf5, 0x05, 0xfc, 0x3c, 0xba, + 0xd0, 0xff, 0x5c, 0x0e, 0x00, 0x60, 0x04, 0x91, 0x66, 0x16, 0x40, 0x60, + 0x01, 0x20, 0x30, 0xbc, 0x00, 0x64, 0x73, 0x3c, 0x90, 0x0f, 0x0c, 0xe6, + 0x02, 0x3d, 0x00, 0x53, 0x20, 0x80, 0x08, 0x4c, 0x24, 0xcc, 0x58, 0x24, + 0x03, 0x89, 0xf2, 0x63, 0x00, 0x90, 0xbb, 0xbf, 0x7f, 0x00, 0x3c, 0x23, + 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, + 0x08, 0x20, 0x55, 0x0d, 0x00, 0x00, 0x0c, 0x21, 0x55, 0x63, 0x08, 0x90, + 0x73, 0x0c, 0x90, 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, + 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, + 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x08, 0x1b, 0x52, 0x8e, 0x04, 0x00, + 0x63, 0x0c, 0x90, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x08, 0x3e, 0x75, + 0x00, 0x20, 0x64, 0x30, 0x00, 0xca, 0xd0, 0x10, 0x5a, 0x1c, 0x10, 0x72, + 0x63, 0x08, 0x90, 0x00, 0x3c, 0x23, 0x8b, 0x04, 0x00, 0x40, 0x04, 0x64, + 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, 0x00, 0x3c, 0x23, 0x40, 0x00, 0x64, + 0x09, 0x00, 0x00, 0x14, 0xc2, 0x7f, 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, + 0x84, 0xf0, 0x52, 0x40, 0x00, 0x66, 0x16, 0x00, 0x60, 0x90, 0x04, 0x64, + 0x0d, 0x00, 0x00, 0x74, 0x13, 0x82, 0x00, 0x3c, 0x23, 0x0b, 0x20, 0x80, + 0x0f, 0x30, 0x80, 0x80, 0x08, 0x2b, 0x0d, 0x00, 0x00, 0x23, 0xcc, 0x93, + 0x00, 0x3c, 0x23, 0x0b, 0x28, 0xe5, 0x0b, 0x20, 0x80, 0xc8, 0x09, 0xc8, + 0x0f, 0x30, 0x80, 0x10, 0x00, 0x64, 0xda, 0xfc, 0x07, 0x14, 0x18, 0xc4, + 0x97, 0x90, 0xf6, 0x3f, 0x99, 0xf2, 0x13, 0x05, 0x00, 0xc3, 0x17, 0xb0, + 0xfd, 0xff, 0x1f, 0xce, 0x00, 0x18, 0xdc, 0x80, 0xa2, 0xcf, 0x01, 0x80, + 0x1e, 0x30, 0xe0, 0x7c, 0x00, 0x64, 0xd0, 0x9f, 0x40, 0xec, 0x10, 0x3a, + 0x16, 0x00, 0x60, 0xdc, 0x04, 0x2b, 0x2c, 0x9d, 0x3a, 0x8b, 0x10, 0x00, + 0x8e, 0x40, 0x40, 0xc0, 0x01, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, + 0xab, 0x00, 0x60, 0x05, 0x00, 0x00, 0xc0, 0x00, 0xae, 0x92, 0x40, 0x20, + 0x2a, 0x00, 0x40, 0xa3, 0xc9, 0xf2, 0xde, 0x40, 0x20, 0x30, 0x1c, 0xca, + 0x16, 0x01, 0xe0, 0x3f, 0xa1, 0xf2, 0xcf, 0x44, 0x00, 0x13, 0x05, 0x00, + 0xc3, 0x17, 0xb0, 0x4b, 0x00, 0x60, 0x05, 0x00, 0x00, 0x10, 0x00, 0x64, + 0x1e, 0x41, 0x20, 0x50, 0x1c, 0xca, 0x05, 0x00, 0x00, 0xbf, 0x00, 0x00, + 0xe3, 0xd3, 0xf2, 0x26, 0x02, 0xe0, 0x05, 0x00, 0x00, 0x97, 0x01, 0x00, + 0x63, 0xd1, 0xf2, 0x13, 0x45, 0x00, 0x03, 0x26, 0xb0, 0xfd, 0xff, 0xff, + 0xcf, 0x00, 0x00, 0x5a, 0x41, 0x20, 0xca, 0x43, 0x20, 0x14, 0xcf, 0x73, + 0x09, 0x00, 0x00, 0x0c, 0x9d, 0x64, 0xff, 0x00, 0x80, 0x03, 0x30, 0x80, + 0x63, 0x3c, 0x90, 0xd3, 0x00, 0x90, 0xf7, 0x00, 0xb5, 0x20, 0x08, 0xc8, + 0x06, 0xfc, 0x07, 0xd3, 0x04, 0x90, 0x0f, 0x2c, 0xe5, 0xf4, 0x50, 0xe4, + 0xfb, 0xbf, 0x7f, 0x09, 0x00, 0x00, 0x80, 0xf0, 0x52, 0x00, 0x00, 0x66, + 0x16, 0x00, 0x60, 0x88, 0x04, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x0b, 0x82, + 0x00, 0x3c, 0x23, 0x44, 0x00, 0x64, 0x09, 0x00, 0x00, 0x1c, 0xc6, 0x7f, + 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, + 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, 0x00, 0x3c, 0x23, + 0x0d, 0x00, 0x00, 0x08, 0x3b, 0x52, 0x63, 0x08, 0x90, 0x00, 0x3c, 0x23, + 0x13, 0x00, 0xe0, 0x02, 0x10, 0xc0, 0xa3, 0x07, 0x90, 0x03, 0xeb, 0x7f, + 0x87, 0x23, 0x80, 0x2c, 0x00, 0x72, 0x8c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x74, 0x0f, 0x82, 0x17, 0x04, 0xe0, 0x03, 0x00, 0x80, 0x0b, 0xa0, 0x3b, + 0x63, 0x08, 0x90, 0xf3, 0xbf, 0x7f, 0x13, 0x00, 0xe0, 0x02, 0x10, 0xc0, + 0xa3, 0x07, 0x90, 0xcb, 0xea, 0x7f, 0x87, 0x23, 0x80, 0x2c, 0x00, 0x72, + 0x8c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x0f, 0x82, 0x17, 0x04, 0xe0, + 0x03, 0x00, 0x80, 0x0a, 0x04, 0x00, 0x63, 0x08, 0x90, 0xf3, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x02, 0x10, 0xc0, 0x5a, 0x40, 0x20, 0x93, 0xea, 0x7f, + 0x2c, 0x00, 0x72, 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, + 0x0f, 0x0c, 0xe6, 0x04, 0x00, 0x64, 0xe9, 0xff, 0xff, 0xd8, 0xfb, 0x62, + 0x00, 0x60, 0x31, 0xa3, 0x01, 0x90, 0xeb, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, + 0x02, 0x10, 0xc0, 0x5a, 0x40, 0x20, 0x57, 0xea, 0x7f, 0x2c, 0x00, 0x72, + 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, 0x0f, 0x0c, 0xe6, + 0x04, 0x00, 0x64, 0xe9, 0xff, 0xff, 0xe4, 0xef, 0x62, 0x00, 0x40, 0x31, + 0xa3, 0x01, 0x90, 0xeb, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x06, 0x10, 0xc0, + 0x1a, 0x40, 0x20, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, 0x1a, 0x00, 0x60, + 0x80, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, 0x00, 0x00, 0x64, + 0x0f, 0x0c, 0xe6, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x6b, 0xea, 0x7f, 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, 0x00, 0x80, 0x90, + 0xde, 0xff, 0x7f, 0x82, 0x11, 0xc0, 0x0b, 0x0c, 0xe6, 0xd3, 0xa9, 0x7f, + 0x03, 0x10, 0xe6, 0x0d, 0x00, 0x00, 0x5b, 0xb0, 0x41, 0xdc, 0xfb, 0x63, + 0x86, 0x09, 0xc0, 0x40, 0x00, 0x84, 0x5e, 0x00, 0x40, 0x0f, 0x00, 0x80, + 0xd2, 0xb8, 0x00, 0x3f, 0x79, 0x00, 0xfd, 0xff, 0xff, 0xf0, 0xff, 0x8f, + 0x02, 0x48, 0xa0, 0x88, 0x41, 0x6c, 0x3e, 0x40, 0x60, 0x04, 0x04, 0x64, + 0xe9, 0xff, 0xff, 0xe0, 0xcf, 0x62, 0x8a, 0x09, 0xc0, 0x80, 0x00, 0x90, + 0x26, 0x00, 0x60, 0x41, 0xff, 0xff, 0x44, 0x18, 0x64, 0x0c, 0x44, 0x24, + 0xb9, 0x76, 0x02, 0xc3, 0xa0, 0x06, 0x04, 0x19, 0x64, 0xb3, 0x66, 0x60, + 0xe3, 0x01, 0x90, 0x07, 0x14, 0xe6, 0x03, 0x10, 0xe6, 0x58, 0x80, 0x1d, + 0xe8, 0xf3, 0x63, 0x0d, 0x00, 0x00, 0x84, 0x1b, 0x4e, 0x40, 0x00, 0x90, + 0x1a, 0x00, 0x60, 0xcb, 0x21, 0x80, 0x84, 0x08, 0x2b, 0xe9, 0xff, 0xff, + 0xcc, 0xbf, 0x62, 0xa3, 0x01, 0x90, 0x07, 0x14, 0xe6, 0x03, 0x10, 0xe6, + 0x18, 0x84, 0x1d, 0xf4, 0xef, 0x63, 0x0d, 0x00, 0x00, 0x84, 0x1b, 0x4e, + 0x40, 0x00, 0x90, 0x2a, 0x00, 0x60, 0x8a, 0x19, 0xc0, 0xbf, 0x21, 0x80, + 0x8e, 0xbc, 0x1f, 0xd3, 0x10, 0x00, 0xc4, 0x53, 0x1f, 0x44, 0x08, 0x2b, + 0xe9, 0xff, 0xff, 0xc0, 0xb3, 0x62, 0xe3, 0x01, 0x90, 0x07, 0x14, 0xe6, + 0x0b, 0x08, 0xe6, 0x1a, 0x40, 0x20, 0xf0, 0xeb, 0x63, 0x0d, 0x00, 0x00, + 0x84, 0x1b, 0x4e, 0x40, 0x00, 0x90, 0x1e, 0x00, 0x60, 0x8f, 0x21, 0x80, + 0x8b, 0x31, 0x80, 0xc4, 0x08, 0x2b, 0x0b, 0x0c, 0xe6, 0xe9, 0xff, 0xff, + 0x17, 0x05, 0xfe, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, 0x1a, 0x40, 0x20, + 0xf8, 0xe7, 0x63, 0x0d, 0x00, 0x00, 0x84, 0x1b, 0x4e, 0x40, 0x00, 0x90, + 0x2e, 0x00, 0x60, 0x8a, 0x19, 0xc0, 0xbf, 0x21, 0x80, 0x8e, 0xbc, 0x1f, + 0x8b, 0x31, 0x80, 0xd3, 0x10, 0x00, 0xc4, 0x53, 0x1f, 0x44, 0x08, 0x2b, + 0x0b, 0x0c, 0xe6, 0xe9, 0xff, 0xff, 0x67, 0x03, 0xfe, 0x0f, 0x0c, 0xe6, + 0x0b, 0x28, 0xe5, 0x06, 0x10, 0xc0, 0x1e, 0x40, 0x20, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x74, 0x0b, 0x82, 0x0f, 0x2c, 0xe5, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, + 0x84, 0x00, 0x65, 0xa7, 0xe8, 0x7f, 0x0d, 0x00, 0x00, 0x20, 0x1b, 0x64, + 0x0b, 0x02, 0xa0, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, 0xc2, 0x21, 0xe0, + 0xcc, 0x01, 0x64, 0x1c, 0x00, 0x3b, 0x3e, 0x00, 0x40, 0xc2, 0x11, 0xc0, + 0xff, 0xe7, 0x7f, 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, + 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, + 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, + 0x4c, 0x02, 0x64, 0x0b, 0x0e, 0xa0, 0x8f, 0xbf, 0x7f, 0xc6, 0x19, 0xc0, + 0xda, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, + 0xe5, 0xff, 0xff, 0xc0, 0xf7, 0x63, 0x12, 0x0a, 0xc0, 0x00, 0x81, 0x90, + 0x66, 0xff, 0x7f, 0x88, 0x01, 0x3b, 0x0a, 0x5c, 0x00, 0x32, 0x00, 0x60, + 0x9a, 0x05, 0x00, 0x98, 0x05, 0x2b, 0x8b, 0x58, 0xfb, 0xc2, 0x19, 0xc0, + 0x3e, 0xbc, 0x1f, 0xc4, 0x17, 0x2b, 0x47, 0x30, 0x04, 0x42, 0x41, 0x20, + 0x0b, 0x2c, 0xe5, 0xe5, 0xff, 0xff, 0x67, 0x1d, 0xfe, 0x94, 0x81, 0x66, + 0x0e, 0x40, 0x60, 0x8a, 0x50, 0x20, 0xd7, 0xbf, 0x7f, 0x9c, 0x01, 0x66, + 0xce, 0xbf, 0x7f, 0x8a, 0x44, 0x20, 0xc7, 0xbf, 0x7f, 0x0b, 0x18, 0xe5, + 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, + 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x0b, 0x82, + 0x0f, 0x1c, 0xe5, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x8b, 0xe7, 0x7f, 0x0d, 0x00, 0x00, 0x1c, 0x1b, 0x64, 0xcb, 0x01, 0xa0, + 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, 0x82, 0x21, 0xe0, 0x3c, 0x00, 0x3b, + 0xc0, 0x01, 0x64, 0x3e, 0x00, 0x40, 0x82, 0x11, 0xc0, 0xe3, 0xe6, 0x7f, + 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, 0xc0, 0x90, 0x26, + 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0xff, 0x10, 0x35, + 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, 0x40, 0x02, 0x64, + 0xcb, 0x01, 0xa0, 0x8f, 0xbf, 0x7f, 0x86, 0x19, 0xc0, 0x4e, 0xbc, 0x1f, + 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, 0xe5, 0xff, 0xff, 0xf8, 0xbf, 0x63, + 0xd2, 0x09, 0xc0, 0x00, 0x81, 0x90, 0x6a, 0xff, 0x7f, 0x86, 0x19, 0xc0, + 0xbe, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, 0x0f, 0x3c, 0xd2, 0xd0, 0x14, 0x2b, + 0x0a, 0x40, 0x20, 0x07, 0x31, 0x04, 0x42, 0x41, 0x20, 0x0b, 0x1c, 0xe5, + 0xe5, 0xff, 0xff, 0x1f, 0x17, 0xfe, 0x0b, 0x18, 0xe5, 0x06, 0x10, 0xc0, + 0x1a, 0x40, 0x20, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, + 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x0b, 0x82, 0x0f, 0x1c, 0xe5, + 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x9f, 0xe6, 0x7f, + 0x0d, 0x00, 0x00, 0x1c, 0x1b, 0x64, 0xcb, 0x01, 0xa0, 0x00, 0x80, 0x90, + 0xde, 0xff, 0x7f, 0x82, 0x21, 0xe0, 0x3c, 0x00, 0x3b, 0xc0, 0x01, 0x64, + 0x3e, 0x00, 0x40, 0x82, 0x11, 0xc0, 0xf7, 0xe5, 0x7f, 0x16, 0x40, 0x20, + 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, + 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, + 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, 0x40, 0x02, 0x64, 0xcb, 0x01, 0xa0, + 0x8f, 0xbf, 0x7f, 0x86, 0x19, 0xc0, 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, + 0x87, 0x30, 0x04, 0xe5, 0xff, 0xff, 0xf4, 0x93, 0x63, 0xd2, 0x09, 0xc0, + 0x00, 0x81, 0x90, 0x6a, 0xff, 0x7f, 0x86, 0x19, 0xc0, 0xbe, 0x21, 0xe0, + 0x4e, 0xbc, 0x1f, 0x0f, 0xbc, 0xd3, 0xd0, 0x14, 0x2b, 0x0a, 0x40, 0x20, + 0x07, 0x31, 0x04, 0x42, 0x41, 0x20, 0x0b, 0x1c, 0xe5, 0xe5, 0xff, 0xff, + 0x97, 0x11, 0xfe, 0x03, 0x10, 0xe6, 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, + 0x44, 0x00, 0x65, 0x1e, 0x40, 0x20, 0x1a, 0x20, 0xe0, 0xcf, 0xe5, 0x7f, + 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, 0x00, 0x00, 0x90, 0x1e, 0x00, 0x60, + 0x87, 0x39, 0xfe, 0x7c, 0x80, 0xb2, 0x16, 0x40, 0x60, 0x04, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, 0x07, 0x14, 0xe6, 0xc3, 0x11, 0x80, + 0x03, 0x10, 0x3d, 0x03, 0x14, 0xe6, 0x3f, 0xa6, 0x7f, 0x03, 0x10, 0xe6, + 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, 0x44, 0x00, 0x65, 0x1e, 0x40, 0x20, + 0x1a, 0x20, 0xe0, 0x77, 0xe5, 0x7f, 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, + 0x00, 0x00, 0x90, 0x1e, 0x00, 0x60, 0x87, 0x39, 0xfe, 0x4c, 0x80, 0xb2, + 0x16, 0x40, 0x60, 0x04, 0x01, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, + 0x07, 0x14, 0xe6, 0xc3, 0x11, 0x80, 0x03, 0x10, 0x3d, 0x03, 0x14, 0xe6, + 0x1f, 0xa6, 0x7f, 0x0b, 0x08, 0xe6, 0x5a, 0x40, 0x20, 0x07, 0x10, 0x80, + 0x4b, 0x10, 0x3d, 0x28, 0x08, 0xc8, 0x4c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x74, 0x0f, 0x82, 0x0f, 0x0c, 0xe6, 0x07, 0x20, 0x80, 0x58, 0x00, 0xb6, + 0x1a, 0x00, 0x60, 0x00, 0x00, 0x64, 0xe9, 0xff, 0xff, 0xd0, 0xa3, 0x62, + 0xa3, 0x01, 0x90, 0xe3, 0xbf, 0x7f, 0xc0, 0x01, 0x64, 0x0d, 0x00, 0x00, + 0x74, 0x03, 0x82, 0xd9, 0xff, 0xff, 0x40, 0x3c, 0x64, 0xe7, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, + 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, + 0x0f, 0x0c, 0xe6, 0xc0, 0x00, 0x75, 0xe9, 0xff, 0xff, 0xe0, 0x93, 0x62, + 0x21, 0x00, 0x00, 0x08, 0x98, 0x64, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x00, 0x48, 0x24, 0x6b, 0x61, 0x60, 0xa3, 0x01, 0x90, 0xd7, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, + 0x28, 0x00, 0xc8, 0x4c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x0f, 0x82, + 0x0f, 0x0c, 0xe6, 0x00, 0x00, 0x74, 0xe9, 0xff, 0xff, 0xf0, 0x83, 0x62, + 0x41, 0xff, 0xff, 0x44, 0x18, 0x64, 0x08, 0x44, 0x24, 0xb9, 0x76, 0x02, + 0x83, 0xa0, 0x06, 0x04, 0x19, 0x64, 0x17, 0x61, 0x60, 0xa3, 0x01, 0x90, + 0xd3, 0xbf, 0x7f, 0x0b, 0x18, 0xe5, 0x18, 0x84, 0x1d, 0x03, 0x10, 0x80, + 0x03, 0x10, 0x3d, 0x03, 0xe4, 0x7f, 0x16, 0x40, 0x20, 0xb0, 0x00, 0xc8, + 0x04, 0x15, 0x64, 0xe5, 0xff, 0xff, 0xc4, 0xb3, 0x62, 0x87, 0x21, 0x80, + 0xf9, 0xff, 0xfb, 0x0e, 0xbc, 0x1f, 0x40, 0x00, 0x92, 0x0b, 0x00, 0xfd, + 0x98, 0x68, 0x2b, 0x90, 0x28, 0x2b, 0xc3, 0x58, 0xfb, 0x1b, 0x50, 0xfb, + 0x8a, 0x41, 0x20, 0x43, 0x51, 0x51, 0xe5, 0xff, 0xff, 0xe4, 0xab, 0x62, + 0x05, 0x00, 0x04, 0x9a, 0x01, 0x00, 0x80, 0x81, 0x92, 0x07, 0x40, 0xfd, + 0xe3, 0x05, 0x90, 0x0f, 0x1c, 0xe5, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, + 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, 0x8f, 0xe3, 0x7f, 0x48, 0x00, 0xc8, + 0x04, 0x15, 0x64, 0xe5, 0xff, 0xff, 0xf4, 0x9b, 0x62, 0x05, 0x00, 0x04, + 0x06, 0x00, 0x00, 0x40, 0x00, 0x92, 0x0b, 0x00, 0xfd, 0xa3, 0x09, 0x90, + 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, + 0x57, 0xe3, 0x7f, 0x1a, 0x40, 0x20, 0x48, 0x00, 0xc8, 0x04, 0x15, 0x64, + 0xe5, 0xff, 0xff, 0xc0, 0x93, 0x62, 0x08, 0x00, 0x99, 0x83, 0x51, 0x51, + 0x0b, 0x0c, 0xe6, 0xe5, 0xff, 0xff, 0x07, 0x02, 0xfe, 0x0f, 0x0c, 0xe6, + 0x1b, 0x28, 0xe5, 0x17, 0x10, 0x80, 0x1a, 0x40, 0x20, 0x57, 0x11, 0x3d, + 0x7c, 0x01, 0x86, 0x03, 0x00, 0xfd, 0xa3, 0x03, 0xb0, 0x26, 0x00, 0x60, + 0x28, 0x14, 0xc8, 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x3f, 0x82, + 0x1f, 0x2c, 0xe5, 0x00, 0x00, 0x64, 0xef, 0xe2, 0x7f, 0xd0, 0xc3, 0xc9, + 0x9f, 0x21, 0x80, 0x79, 0xfe, 0xff, 0x20, 0x58, 0x64, 0xc6, 0xbd, 0x07, + 0x48, 0x60, 0x24, 0xb9, 0x76, 0x02, 0x83, 0xa0, 0x06, 0xbd, 0x00, 0x00, + 0xc4, 0xe7, 0x64, 0xbb, 0x5f, 0x60, 0xd3, 0x21, 0x34, 0x0e, 0xbc, 0x1f, + 0x00, 0x61, 0x24, 0xbd, 0x00, 0x00, 0xc4, 0xe7, 0x64, 0xb9, 0x76, 0x02, + 0x03, 0xa0, 0x06, 0xd8, 0x40, 0x2b, 0x97, 0x5f, 0x60, 0x92, 0x23, 0xe0, + 0x06, 0xbc, 0x1f, 0x8b, 0x45, 0xfb, 0x42, 0x41, 0x20, 0x00, 0xe1, 0x26, + 0x45, 0x00, 0x44, 0x8e, 0x40, 0x20, 0x02, 0x40, 0xa0, 0xa3, 0x0f, 0x90, + 0x77, 0xe2, 0x7f, 0x8b, 0x23, 0x80, 0x04, 0x15, 0x64, 0x1b, 0x2c, 0xe5, + 0xe1, 0xff, 0xff, 0x3f, 0x1d, 0xfe, 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1a, 0x40, 0x20, 0x6f, 0xe2, 0x7f, + 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, 0x00, 0x00, 0x90, 0x42, 0x00, 0x60, + 0x82, 0x11, 0xc0, 0xdb, 0xe1, 0x7f, 0x1a, 0x40, 0x20, 0x48, 0x00, 0xc8, + 0x07, 0x00, 0x80, 0x4a, 0xbc, 0x00, 0x8c, 0x80, 0x92, 0x16, 0x40, 0x60, + 0x7f, 0xe4, 0x7f, 0x82, 0x41, 0x20, 0x0b, 0x0c, 0xe6, 0xb7, 0xa3, 0x7f, + 0x80, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, 0x0f, 0x0c, 0xe6, + 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x1a, 0x40, 0x20, 0x07, 0xe2, 0x7f, 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, + 0x00, 0x00, 0x84, 0x3e, 0x00, 0x40, 0x82, 0x11, 0xc0, 0x73, 0xe1, 0x7f, + 0x60, 0x00, 0xc8, 0x0b, 0x00, 0x80, 0x8e, 0xbc, 0x00, 0xcc, 0x80, 0x92, + 0x22, 0x40, 0x60, 0x92, 0x21, 0xe0, 0x0c, 0x01, 0x66, 0x0e, 0x00, 0x60, + 0x0b, 0x0c, 0xe6, 0x4f, 0xa3, 0x7f, 0x0b, 0x0c, 0xe6, 0x03, 0xa4, 0x7f, + 0x0f, 0x0c, 0xe6, 0x03, 0x10, 0xe6, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, + 0x84, 0x00, 0x65, 0x1e, 0x40, 0x20, 0xa3, 0xe1, 0x7f, 0x0d, 0x00, 0x00, + 0x74, 0x03, 0x82, 0x00, 0x00, 0x90, 0x5a, 0x00, 0x60, 0xc2, 0x11, 0xc0, + 0x0f, 0xe1, 0x7f, 0x1a, 0x40, 0x20, 0x78, 0x00, 0xc8, 0x07, 0x00, 0x80, + 0x4a, 0xbc, 0x00, 0x8c, 0x80, 0x92, 0x2e, 0x40, 0x60, 0xce, 0x19, 0xc0, + 0x08, 0x00, 0x64, 0xc6, 0xbc, 0x1f, 0x93, 0xe2, 0x7f, 0xd2, 0x19, 0xc0, + 0x48, 0x00, 0x64, 0x82, 0x41, 0x20, 0x06, 0xbd, 0x1f, 0x03, 0x14, 0xe6, + 0x7b, 0xa2, 0x7f, 0xc0, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, + 0x07, 0x14, 0xe6, 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, + 0x84, 0x00, 0x65, 0x1a, 0x40, 0x20, 0x23, 0xe1, 0x7f, 0x0d, 0x00, 0x00, + 0x74, 0x03, 0x82, 0x00, 0x00, 0x90, 0x42, 0x00, 0x60, 0x82, 0x11, 0xc0, + 0x8f, 0xe0, 0x7f, 0x50, 0x00, 0xc8, 0x0b, 0x00, 0x80, 0x8e, 0xbc, 0x00, + 0xcc, 0x80, 0x92, 0x1a, 0x40, 0x60, 0x92, 0x19, 0xc0, 0x8a, 0x21, 0xe0, + 0x06, 0xbd, 0x1f, 0x0b, 0x0c, 0xe6, 0x13, 0xa2, 0x7f, 0xc0, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x74, 0x03, 0x82, 0x0f, 0x0c, 0xe6, 0x4b, 0x28, 0xe5, + 0x1a, 0x28, 0xc0, 0x1e, 0x38, 0xc0, 0x0a, 0x30, 0xc0, 0x17, 0x10, 0x80, + 0x80, 0x01, 0x86, 0xc0, 0x81, 0x86, 0x05, 0x00, 0x00, 0x9a, 0x2d, 0xa0, + 0x01, 0x00, 0x00, 0xde, 0xf1, 0xba, 0x22, 0x20, 0xc0, 0x83, 0x8b, 0x90, + 0xeb, 0xe9, 0x7f, 0x40, 0x86, 0x64, 0xa3, 0x03, 0x90, 0x57, 0x11, 0x3d, + 0xef, 0xe9, 0x7f, 0x87, 0x83, 0x80, 0x0c, 0x93, 0x64, 0xb3, 0x5f, 0x90, + 0xa3, 0x5b, 0x90, 0x93, 0x47, 0x90, 0x83, 0x63, 0x90, 0xb3, 0x17, 0x90, + 0xa3, 0x0f, 0x90, 0xcb, 0xe9, 0x7f, 0x93, 0x83, 0x80, 0x7c, 0x00, 0x64, + 0x24, 0x14, 0x72, 0xdc, 0x19, 0x3a, 0x32, 0x00, 0x60, 0xfc, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0x74, 0x3f, 0x82, 0x0d, 0x00, 0x00, 0x88, 0x1b, 0x4e, + 0x40, 0xa1, 0x64, 0xa3, 0x03, 0x90, 0xb3, 0x0b, 0x90, 0x93, 0xe9, 0x7f, + 0x4b, 0x2c, 0xe5, 0x5f, 0xa9, 0x7f, 0x1d, 0x00, 0x00, 0x14, 0x00, 0x64, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0xc0, 0x55, 0x24, 0x83, 0x93, 0x90, + 0xdf, 0x5c, 0x60, 0x0d, 0x00, 0x00, 0x94, 0x43, 0x82, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x80, 0x55, 0x24, 0xc7, 0x5c, 0x60, 0x8b, 0x83, 0x80, + 0x0d, 0x00, 0x00, 0xa4, 0x43, 0x82, 0x03, 0x02, 0x40, 0x7b, 0x47, 0x60, + 0x9b, 0xbf, 0x7f, 0x07, 0x20, 0x80, 0x2c, 0x04, 0x72, 0xc4, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0x74, 0x07, 0x82, 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, + 0x03, 0x10, 0x3d, 0xe7, 0x08, 0xfe, 0x40, 0x01, 0x64, 0x0d, 0x00, 0x00, + 0x74, 0x03, 0x82, 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, 0x0d, 0x00, 0x00, + 0x18, 0x3e, 0x64, 0x40, 0x00, 0x64, 0x09, 0x00, 0x00, 0x14, 0xc2, 0x7f, + 0x83, 0x01, 0x58, 0xef, 0xde, 0x7f, 0x19, 0x0c, 0x00, 0x0c, 0xcc, 0x64, + 0xb3, 0x0d, 0x90, 0x1d, 0x0c, 0x00, 0x4c, 0x6d, 0x64, 0x19, 0x0c, 0x00, + 0x84, 0xc1, 0x64, 0x93, 0x8d, 0x90, 0x1d, 0x0c, 0x00, 0x0c, 0x20, 0x64, + 0x19, 0x0c, 0x00, 0x00, 0xb7, 0x64, 0x93, 0x05, 0x90, 0x93, 0xcd, 0x90, + 0x19, 0x0c, 0x00, 0x44, 0x44, 0x64, 0x1d, 0x0c, 0x00, 0x4c, 0xd6, 0x64, + 0x83, 0x41, 0x90, 0x93, 0x45, 0x90, 0x1d, 0x0c, 0x00, 0x00, 0x38, 0x64, + 0x1d, 0x0c, 0x00, 0x84, 0x09, 0x64, 0x83, 0x0d, 0x91, 0x21, 0x0c, 0x00, + 0x0c, 0x07, 0x64, 0x19, 0x0c, 0x00, 0x50, 0xd7, 0x64, 0xa3, 0x81, 0x90, + 0xb3, 0x85, 0x90, 0x1d, 0x0c, 0x00, 0x80, 0x2a, 0x64, 0x1d, 0x0c, 0x00, + 0xc4, 0xc5, 0x64, 0xa3, 0x0d, 0x91, 0x21, 0x0c, 0x00, 0x0c, 0x7c, 0x64, + 0x19, 0x0c, 0x00, 0x88, 0x25, 0x64, 0xa3, 0x11, 0x90, 0xa3, 0xc1, 0x90, + 0x1d, 0x0c, 0x00, 0x90, 0x99, 0x64, 0x1d, 0x0c, 0x00, 0x00, 0xf8, 0x64, + 0xb3, 0xc5, 0x90, 0xa3, 0x4d, 0x91, 0x19, 0x0c, 0x00, 0x84, 0x4f, 0x64, + 0x21, 0x0c, 0x00, 0xcc, 0x8e, 0x64, 0x83, 0x09, 0x90, 0x83, 0x91, 0x90, + 0x19, 0x0c, 0x00, 0xc8, 0x2a, 0x64, 0x1d, 0x0c, 0x00, 0x50, 0x13, 0x64, + 0xb3, 0x01, 0x91, 0x83, 0x45, 0x91, 0x21, 0x0c, 0x00, 0xc0, 0xa6, 0x64, + 0x21, 0x0c, 0x00, 0x84, 0x68, 0x64, 0x93, 0x8d, 0x91, 0x19, 0x0c, 0x00, + 0x4c, 0x65, 0x64, 0xa3, 0x49, 0x90, 0x83, 0xd1, 0x90, 0x93, 0x09, 0x91, + 0x1d, 0x0c, 0x00, 0xd0, 0xe6, 0x64, 0xb3, 0x41, 0x91, 0x83, 0x85, 0x91, + 0x19, 0x0c, 0x00, 0x80, 0x58, 0x64, 0x19, 0x0c, 0x00, 0x44, 0x62, 0x64, + 0xa3, 0x89, 0x91, 0xb3, 0x89, 0x91, 0x93, 0xcd, 0x91, 0x19, 0x0c, 0x00, + 0xc8, 0x2d, 0x64, 0x19, 0x0c, 0x00, 0xcc, 0xa5, 0x64, 0x93, 0x51, 0x91, + 0x83, 0xc9, 0x91, 0x21, 0x0c, 0x00, 0x50, 0xba, 0x64, 0x19, 0x0c, 0x00, + 0xc8, 0x6f, 0x64, 0xa3, 0xc1, 0x91, 0xb3, 0xc5, 0x91, 0x21, 0x0c, 0x00, + 0xc0, 0xe8, 0x64, 0x21, 0x0c, 0x00, 0x84, 0x2c, 0x64, 0x93, 0x0d, 0x92, + 0x19, 0x0c, 0x00, 0xcc, 0xae, 0x64, 0x83, 0x09, 0x92, 0xa3, 0x11, 0x92, + 0xb3, 0x01, 0x92, 0x83, 0x45, 0x92, 0x21, 0x0c, 0x00, 0xc8, 0x16, 0x64, + 0xa3, 0x4d, 0x92, 0x19, 0x0c, 0x00, 0x10, 0xf3, 0x64, 0x21, 0x0c, 0x00, + 0x00, 0x43, 0x64, 0x21, 0x0c, 0x00, 0xc4, 0x37, 0x64, 0x19, 0x0c, 0x00, + 0x0c, 0x45, 0x64, 0x93, 0x49, 0x92, 0xb3, 0x51, 0x92, 0x83, 0x81, 0x92, + 0x93, 0x85, 0x92, 0xb3, 0x4d, 0x90, 0x09, 0x00, 0x00, 0x17, 0x9e, 0xf8, + 0x0f, 0x0c, 0xe6, 0x0b, 0x28, 0xe5, 0x11, 0x00, 0x00, 0x23, 0x00, 0x40, + 0x40, 0x00, 0x86, 0x56, 0x40, 0x20, 0x41, 0x00, 0x00, 0x22, 0x02, 0x80, + 0x09, 0x00, 0x00, 0x18, 0x9f, 0x64, 0x5c, 0x00, 0x65, 0x83, 0x01, 0x80, + 0x3d, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40, 0x80, 0x92, + 0x0e, 0x40, 0x60, 0xc2, 0x41, 0x20, 0x0f, 0x2c, 0xe5, 0x48, 0x01, 0x92, + 0x6e, 0x00, 0x60, 0x3c, 0x7c, 0xbb, 0x5e, 0x00, 0x60, 0x0b, 0x90, 0x32, + 0xac, 0xa4, 0x48, 0x52, 0x40, 0x60, 0x0e, 0xb8, 0x00, 0xc8, 0x04, 0x92, + 0x46, 0x00, 0x60, 0x83, 0x81, 0x50, 0xdd, 0xff, 0xff, 0xe8, 0xe3, 0x63, + 0x83, 0x81, 0x50, 0xdd, 0xff, 0xff, 0xc4, 0xe3, 0x63, 0x0c, 0xa0, 0x48, + 0xf2, 0xff, 0x7f, 0x83, 0xb1, 0x50, 0xdd, 0xff, 0xff, 0xc8, 0xdf, 0x63, + 0x13, 0x40, 0x38, 0x40, 0x01, 0x92, 0x03, 0x81, 0xf9, 0xc4, 0x81, 0x3a, + 0xdf, 0xc1, 0xf9, 0x9b, 0x11, 0x00, 0x77, 0xbf, 0x7f, 0x44, 0x81, 0x92, + 0x9e, 0xff, 0x7f, 0x3c, 0x7c, 0xb3, 0x93, 0xbf, 0x7f, 0x13, 0x10, 0xe6, + 0x1a, 0x40, 0x20, 0x2c, 0x00, 0xc8, 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x74, 0x3f, 0x82, 0x17, 0x14, 0xe6, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, + 0x03, 0x10, 0x8e, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, 0x0d, 0x00, 0x00, + 0x1c, 0x1b, 0x64, 0xdd, 0xff, 0xff, 0xc0, 0xcf, 0x63, 0xce, 0x01, 0xe0, + 0x40, 0xac, 0x64, 0xa3, 0x03, 0x90, 0x44, 0x00, 0x64, 0x48, 0x98, 0x40, + 0x93, 0x4c, 0xfb, 0xc3, 0x11, 0xb0, 0xd7, 0xe5, 0x7f, 0xdb, 0x99, 0xf2, + 0xce, 0x01, 0xe0, 0x86, 0x01, 0xe4, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, + 0xc8, 0x00, 0x66, 0x4a, 0x40, 0x22, 0x13, 0x00, 0xfd, 0x83, 0x09, 0xb2, + 0x27, 0xd0, 0xd3, 0x11, 0x10, 0x00, 0x44, 0x01, 0x7e, 0x8b, 0xbf, 0x7f, + 0x3b, 0x38, 0xe5, 0x09, 0x00, 0x00, 0x1b, 0xf0, 0x49, 0x14, 0xb2, 0x64, + 0x20, 0xb4, 0x64, 0xcd, 0xee, 0xee, 0x24, 0x33, 0x64, 0x83, 0x01, 0x80, + 0x3d, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40, 0x00, 0x92, + 0x0a, 0x00, 0x60, 0x3f, 0x3c, 0xe5, 0x0b, 0x90, 0x32, 0xac, 0x9c, 0x48, + 0xae, 0x40, 0x60, 0x0e, 0xb8, 0x00, 0xc8, 0x04, 0x92, 0xa2, 0x00, 0x60, + 0x83, 0x81, 0x50, 0xdd, 0xff, 0xff, 0xf4, 0xa7, 0x63, 0x83, 0x81, 0x50, + 0xdd, 0xff, 0xff, 0xd0, 0xa7, 0x63, 0x51, 0x00, 0x00, 0x00, 0x80, 0x8a, + 0xee, 0xff, 0x7f, 0x83, 0xb1, 0x50, 0xdd, 0xff, 0xff, 0xc8, 0xa3, 0x63, + 0x2c, 0x40, 0x31, 0x24, 0x2c, 0x3a, 0x2a, 0x40, 0x20, 0x32, 0x00, 0x60, + 0x42, 0x42, 0x20, 0xc3, 0xe5, 0x7f, 0x93, 0x01, 0x80, 0x03, 0x25, 0x37, + 0x07, 0x11, 0x35, 0x08, 0x40, 0x2b, 0x83, 0x44, 0xfb, 0xab, 0xe5, 0x7f, + 0x8f, 0x01, 0x80, 0xd0, 0x00, 0xa2, 0x83, 0x11, 0x90, 0xbf, 0x01, 0x80, + 0xab, 0x3e, 0xfe, 0xa3, 0x6f, 0x90, 0x83, 0x6b, 0x90, 0xfc, 0xff, 0xb3, + 0xc3, 0x27, 0x37, 0x01, 0x00, 0x00, 0x4a, 0x71, 0x96, 0x93, 0x4b, 0x90, + 0xb3, 0x03, 0x90, 0xa3, 0x23, 0x90, 0xb7, 0xe4, 0x7f, 0x9b, 0x11, 0x00, + 0x2f, 0xbf, 0x7f, 0x0f, 0x28, 0xe5, 0x0d, 0x00, 0x00, 0x77, 0xa3, 0xf8, + 0x1e, 0x40, 0x20, 0x56, 0x40, 0x20, 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, + 0x09, 0x00, 0x00, 0x03, 0x10, 0x8e, 0x2c, 0x00, 0x72, 0x48, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x74, 0x0b, 0x82, 0x0f, 0x2c, 0xe5, 0x62, 0x40, 0x20, + 0xc0, 0x99, 0x1d, 0xe1, 0xff, 0xff, 0xdc, 0xc3, 0x62, 0x10, 0x02, 0x7a, + 0x9b, 0x05, 0x00, 0x9c, 0x01, 0x92, 0xea, 0xbf, 0x7f, 0xc2, 0x41, 0x20, + 0xdd, 0xff, 0xff, 0xd0, 0xfb, 0x63, 0x63, 0xa1, 0x00, 0x18, 0x00, 0x64, + 0xc0, 0x99, 0x1d, 0xdd, 0xff, 0xff, 0xf0, 0xe7, 0x63, 0x10, 0x42, 0x7a, + 0x9b, 0x05, 0x00, 0x90, 0x89, 0x92, 0xea, 0xff, 0x7f, 0x0d, 0x00, 0x00, + 0x1c, 0x22, 0x55, 0x60, 0x10, 0x64, 0xd8, 0x0a, 0x64, 0xcb, 0x01, 0x80, + 0x3d, 0x00, 0x00, 0x86, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40, 0x00, 0x92, + 0x4e, 0x00, 0x40, 0x8e, 0xbc, 0x00, 0xcc, 0x84, 0x92, 0x36, 0x40, 0x60, + 0xc3, 0xb1, 0x50, 0xdd, 0xff, 0xff, 0xd4, 0xe7, 0x62, 0x13, 0x3c, 0xfe, + 0x64, 0x99, 0x1f, 0x43, 0x12, 0x90, 0xc3, 0xb1, 0x50, 0x9b, 0x09, 0x00, + 0xdd, 0xff, 0xff, 0xc0, 0xe3, 0x62, 0x00, 0x40, 0x31, 0x53, 0x02, 0x90, + 0x23, 0x46, 0x00, 0xdf, 0x11, 0x00, 0x4c, 0xe3, 0x73, 0x58, 0x99, 0x1f, + 0xbc, 0x00, 0x65, 0x83, 0x3d, 0x90, 0x33, 0xbf, 0x7f, 0x2b, 0x38, 0xe5, + 0x1e, 0x40, 0x20, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x64, 0x4b, 0xe4, 0x7f, + 0xc2, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xfc, 0xdb, 0x63, 0x17, 0x3c, 0xfe, + 0xc4, 0x05, 0x2b, 0x0d, 0x00, 0x00, 0x43, 0xc0, 0xa1, 0x42, 0x41, 0x20, + 0x27, 0xe4, 0x7f, 0x00, 0x17, 0xc8, 0x0d, 0x00, 0x00, 0x40, 0x0d, 0x64, + 0x48, 0x41, 0x24, 0xdd, 0x06, 0x00, 0x83, 0x80, 0x0e, 0x04, 0xfa, 0x64, + 0xbf, 0x56, 0x60, 0x22, 0x40, 0x20, 0x01, 0xcc, 0x00, 0x40, 0x00, 0x64, + 0xf7, 0xe3, 0x7f, 0x02, 0x42, 0x20, 0xef, 0xe3, 0x7f, 0xc2, 0x41, 0x20, + 0xe1, 0xff, 0xff, 0xc0, 0x97, 0x62, 0x1b, 0x3c, 0xfe, 0x01, 0xcc, 0x00, + 0x80, 0x00, 0x64, 0xd3, 0xe3, 0x7f, 0x82, 0x41, 0x20, 0xcb, 0xe3, 0x7f, + 0x83, 0x63, 0x90, 0x21, 0x00, 0x00, 0x20, 0x98, 0x64, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x80, 0x61, 0x24, 0x67, 0x56, 0x60, 0xcc, 0xce, 0x64, + 0xa3, 0x0f, 0x90, 0xb3, 0x03, 0x90, 0x28, 0x04, 0x64, 0xe3, 0xe2, 0x7f, + 0x05, 0x00, 0x00, 0x10, 0x8b, 0x55, 0xc2, 0x41, 0x20, 0x00, 0x01, 0x92, + 0xa6, 0x02, 0x82, 0x47, 0xe5, 0xf2, 0xdd, 0xff, 0xff, 0xd4, 0xc7, 0x63, + 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, 0xe0, 0xef, 0x63, 0xc2, 0x41, 0x20, + 0xdd, 0xff, 0xff, 0xc0, 0xff, 0x63, 0x27, 0x3c, 0xfe, 0x01, 0xcc, 0x00, + 0xc0, 0x00, 0x64, 0x53, 0xe3, 0x7f, 0x42, 0x42, 0x20, 0x4b, 0xe3, 0x7f, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x40, 0x62, 0x24, 0xf3, 0x55, 0x60, + 0x44, 0xd7, 0x64, 0xa3, 0x07, 0x90, 0xb3, 0x03, 0x90, 0x73, 0xe2, 0x7f, + 0x01, 0xcc, 0x00, 0x00, 0x01, 0x64, 0x1f, 0xe3, 0x7f, 0x83, 0xe5, 0xf2, + 0x18, 0x60, 0x24, 0x1d, 0x00, 0x00, 0x83, 0x01, 0x50, 0xc3, 0x55, 0x60, + 0x22, 0x40, 0x20, 0x03, 0xe3, 0x7f, 0x05, 0x00, 0x00, 0x08, 0x8b, 0x55, + 0x50, 0xdc, 0x64, 0x83, 0x63, 0x90, 0xa3, 0x13, 0x90, 0x80, 0x80, 0x92, + 0x8e, 0x42, 0x82, 0xb3, 0x0f, 0x90, 0x27, 0xe2, 0x7f, 0x15, 0x01, 0x00, + 0xbc, 0x7d, 0xb3, 0x32, 0x00, 0x60, 0xc0, 0x95, 0x1d, 0xdd, 0xff, 0xff, + 0xf8, 0xa3, 0x63, 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, 0xc4, 0xcf, 0x63, + 0x01, 0xcc, 0x00, 0x40, 0x01, 0x64, 0xaf, 0xe2, 0x7f, 0x40, 0x00, 0x64, + 0x2f, 0x3c, 0xe5, 0x01, 0xcc, 0x00, 0xc0, 0x3f, 0x64, 0x9b, 0xe2, 0x7f, + 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, 0xc0, 0xc7, 0x63, 0x00, 0x00, 0x64, + 0xe3, 0xbf, 0x7f, 0x9f, 0x89, 0xe5, 0x1a, 0x40, 0x20, 0x0d, 0x00, 0x00, + 0x00, 0x1b, 0x64, 0xb3, 0x87, 0x92, 0x06, 0x00, 0xe0, 0x48, 0x58, 0x48, + 0x12, 0x00, 0x60, 0x04, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x9f, 0x8d, 0xe5, + 0x05, 0x00, 0x00, 0x0c, 0x8b, 0x55, 0xa3, 0xb3, 0x82, 0xa3, 0x4b, 0x92, + 0x1d, 0x00, 0x00, 0x1c, 0x00, 0x64, 0x8b, 0x09, 0x00, 0x27, 0x08, 0xf8, + 0xc0, 0x80, 0x86, 0x10, 0x10, 0x64, 0x00, 0x5e, 0x24, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x16, 0xc1, 0x80, 0xd7, 0x54, 0x60, 0xaf, 0x63, 0x82, + 0x93, 0xc3, 0x92, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x6b, 0xd6, 0xf2, + 0xb3, 0x6f, 0x92, 0xc0, 0x5e, 0x24, 0x97, 0x05, 0x00, 0x9c, 0x01, 0x64, + 0xaf, 0x54, 0x60, 0xa3, 0x43, 0x92, 0x83, 0xd3, 0x82, 0x0c, 0xfa, 0x64, + 0x60, 0x5d, 0x24, 0x87, 0x63, 0x82, 0x0d, 0x00, 0x00, 0x2f, 0x2a, 0x03, + 0x83, 0xef, 0x92, 0x0b, 0xc4, 0xf2, 0x84, 0x4c, 0x24, 0x80, 0x00, 0x64, + 0xb3, 0xc7, 0x92, 0xa3, 0xc3, 0x92, 0x8b, 0x73, 0x82, 0x80, 0xa5, 0x1d, + 0x83, 0x8b, 0x92, 0xdd, 0xff, 0xff, 0xf0, 0xef, 0x62, 0x80, 0x07, 0x64, + 0xd9, 0xff, 0xff, 0xfc, 0x97, 0x63, 0x82, 0x41, 0x20, 0xdd, 0xff, 0xff, + 0xdc, 0xa7, 0x63, 0x07, 0x3c, 0xfe, 0xb3, 0x47, 0x92, 0x21, 0x00, 0x00, + 0x0c, 0x98, 0x64, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x1c, 0x00, 0x64, + 0x8b, 0x73, 0x82, 0x80, 0x4c, 0x24, 0x27, 0x54, 0x60, 0x90, 0xe4, 0x64, + 0xa3, 0x13, 0x90, 0xb3, 0x03, 0x90, 0x2e, 0x40, 0x20, 0xa3, 0xe0, 0x7f, + 0x82, 0x41, 0x20, 0xfc, 0xaf, 0x63, 0x82, 0x41, 0x20, 0xdd, 0xff, 0xff, + 0xdc, 0xc7, 0x62, 0xa3, 0x83, 0x82, 0x83, 0xa3, 0x92, 0xc8, 0x01, 0xba, + 0x3a, 0x02, 0x60, 0x80, 0x9d, 0x1d, 0xfc, 0x97, 0x63, 0xbf, 0x83, 0x01, + 0xd4, 0x1f, 0x1f, 0x53, 0xc1, 0xa0, 0xdf, 0x05, 0x00, 0xe4, 0x85, 0x92, + 0xa3, 0x83, 0x82, 0xd6, 0xff, 0x7f, 0x80, 0xa9, 0x1d, 0x83, 0x23, 0x93, + 0xdd, 0xff, 0xff, 0xec, 0xcf, 0x62, 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, + 0xf8, 0xf7, 0x62, 0x82, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xd8, 0x87, 0x63, + 0x03, 0x3c, 0xfe, 0x83, 0x83, 0x92, 0x21, 0x00, 0x00, 0x0c, 0x98, 0x64, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x8b, 0x83, 0x82, 0x80, 0x4c, 0x24, + 0x7f, 0x53, 0x60, 0x93, 0x83, 0x92, 0x10, 0xec, 0x64, 0xa3, 0x13, 0x90, + 0x87, 0x93, 0x82, 0xb3, 0x07, 0x90, 0xf7, 0xdf, 0x7f, 0x82, 0x41, 0x20, + 0xd0, 0xa7, 0x63, 0x97, 0x73, 0x82, 0xa3, 0x83, 0x82, 0x8b, 0x03, 0x83, + 0x43, 0xe1, 0xf2, 0xa3, 0x83, 0x92, 0x14, 0x00, 0x64, 0x8f, 0xa3, 0x82, + 0xdc, 0x00, 0xb2, 0x32, 0x01, 0x60, 0x82, 0x41, 0x20, 0xdd, 0xff, 0xff, + 0xec, 0x9f, 0x62, 0x8b, 0x03, 0x83, 0x1c, 0x00, 0x64, 0x83, 0x0b, 0x93, + 0xc8, 0x81, 0xba, 0x7a, 0x41, 0x60, 0x80, 0x9d, 0x1d, 0xe8, 0x8b, 0x63, + 0xb3, 0x83, 0x01, 0x34, 0x1f, 0x1f, 0x43, 0x03, 0xa0, 0xdf, 0x05, 0x00, + 0xe4, 0x05, 0x92, 0x8b, 0x03, 0x83, 0xd6, 0xbf, 0x7f, 0x1c, 0x00, 0x64, + 0x34, 0x00, 0x64, 0xbf, 0x83, 0x01, 0xe3, 0xbd, 0xf7, 0x87, 0x13, 0x03, + 0x4f, 0x9c, 0xf7, 0x09, 0x00, 0x00, 0xf2, 0x21, 0xdc, 0x28, 0x82, 0xac, + 0x42, 0x41, 0x60, 0xd3, 0xe0, 0xf2, 0x08, 0x0d, 0xb2, 0x36, 0x01, 0x60, + 0xa3, 0x0b, 0x93, 0x87, 0xa3, 0x82, 0x83, 0x23, 0x93, 0x20, 0xfa, 0x64, + 0x00, 0x61, 0x24, 0xab, 0x52, 0x60, 0x87, 0x03, 0x83, 0x0f, 0xc7, 0xf2, + 0x93, 0x07, 0x93, 0x00, 0x80, 0x1d, 0x83, 0x03, 0x93, 0xc0, 0x60, 0x24, + 0x8f, 0x52, 0x60, 0x8b, 0x83, 0x82, 0x21, 0x00, 0x00, 0x10, 0x98, 0x64, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x23, 0x88, 0xf2, 0x00, 0x52, 0x24, + 0x6f, 0x52, 0x60, 0xc4, 0x05, 0x2b, 0x0d, 0x00, 0x00, 0x63, 0x00, 0x90, + 0x8b, 0x13, 0x83, 0xb3, 0x83, 0x90, 0x8f, 0x03, 0x83, 0x83, 0x93, 0x82, + 0x44, 0xf3, 0x64, 0x93, 0x4b, 0x90, 0xa3, 0xa7, 0x90, 0x93, 0xaf, 0x90, + 0x83, 0xab, 0x90, 0xb3, 0x43, 0x90, 0xa3, 0x4f, 0x90, 0x83, 0x73, 0x90, + 0xb3, 0x37, 0x90, 0xa3, 0x07, 0x90, 0xb7, 0xde, 0x7f, 0x8b, 0x23, 0x83, + 0x4c, 0x21, 0x37, 0x77, 0x07, 0x00, 0x64, 0x87, 0x92, 0xdf, 0x09, 0x00, + 0x26, 0xff, 0x7f, 0x83, 0x8b, 0x92, 0x21, 0x00, 0x00, 0x3c, 0x98, 0x64, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x40, 0x7d, 0x24, 0xf3, 0x51, 0x60, + 0x8e, 0x43, 0x20, 0x22, 0x40, 0x20, 0x09, 0x00, 0x00, 0xc0, 0xc0, 0x5b, + 0x8b, 0x83, 0x82, 0x08, 0x60, 0x7c, 0xc3, 0x00, 0x90, 0x0c, 0x15, 0x72, + 0x82, 0x41, 0x20, 0x9b, 0x8d, 0xe5, 0x4f, 0x10, 0xfe, 0x54, 0x00, 0x64, + 0xa3, 0xd7, 0x92, 0x4b, 0xbd, 0x7f, 0xc7, 0x4d, 0x00, 0x82, 0x41, 0x20, + 0xd9, 0xff, 0xff, 0xfc, 0xc7, 0x63, 0xc7, 0xbd, 0x7f, 0xc7, 0x4d, 0x00, + 0x82, 0x41, 0x20, 0xd9, 0xff, 0xff, 0xc0, 0xc7, 0x63, 0x87, 0xbe, 0x7f, + 0x83, 0x0b, 0x93, 0x8b, 0x93, 0x82, 0x93, 0x63, 0x90, 0x05, 0x00, 0x00, + 0x60, 0x0c, 0x64, 0xa3, 0xa7, 0x90, 0xa3, 0x4b, 0x90, 0x93, 0xaf, 0x90, + 0x83, 0x8f, 0x90, 0xb3, 0x6b, 0x90, 0x83, 0x73, 0x90, 0xb3, 0x37, 0x90, + 0xa3, 0x23, 0x90, 0xeb, 0xdd, 0x7f, 0x8b, 0x03, 0x83, 0x3b, 0xbf, 0x7f, + 0x0d, 0x00, 0x00, 0x34, 0x1b, 0x64, 0x72, 0x23, 0xc4, 0x6e, 0x1b, 0xc4, + 0x93, 0x63, 0x82, 0xbf, 0xd3, 0x82, 0x93, 0x8b, 0x92, 0x83, 0xf3, 0x82, + 0x1f, 0xef, 0xf2, 0xc7, 0x91, 0xf2, 0x47, 0xfc, 0xf2, 0x23, 0x51, 0x60, + 0x1e, 0x40, 0x20, 0x83, 0x63, 0x82, 0x04, 0xfa, 0x65, 0xcf, 0xc2, 0xf2, + 0xc0, 0x5c, 0x24, 0x0b, 0x51, 0x60, 0x8b, 0x63, 0x82, 0x04, 0xfa, 0x64, + 0x13, 0x88, 0xf2, 0x83, 0x93, 0x92, 0x40, 0x5d, 0x24, 0xf3, 0x50, 0x60, + 0x87, 0x83, 0x82, 0x5f, 0x80, 0xf2, 0x57, 0x9d, 0xf2, 0xfc, 0x16, 0x3a, + 0x83, 0x93, 0x82, 0x0e, 0x00, 0x60, 0x48, 0x31, 0x37, 0x6e, 0x41, 0x20, + 0x87, 0xa3, 0x82, 0x83, 0x03, 0x93, 0x93, 0x9f, 0x92, 0x7f, 0xea, 0xf2, + 0x25, 0x00, 0x00, 0x1c, 0xc4, 0x64, 0xc0, 0x5f, 0x24, 0xb3, 0x50, 0x60, + 0x8f, 0x73, 0x82, 0xc6, 0x41, 0x20, 0x21, 0x00, 0x00, 0x14, 0x98, 0x64, + 0x23, 0x3e, 0xfe, 0xcb, 0xce, 0xf2, 0x00, 0x48, 0x24, 0x93, 0x50, 0x60, + 0x1f, 0xa4, 0xf2, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xc0, 0x56, 0x24, + 0x7f, 0x50, 0x60, 0x0d, 0x00, 0x00, 0x50, 0x0d, 0x64, 0x83, 0x93, 0x92, + 0x2e, 0x40, 0x20, 0xc0, 0x51, 0x24, 0x04, 0xfa, 0x64, 0xdd, 0x06, 0x00, + 0x03, 0x80, 0x0e, 0x5f, 0x50, 0x60, 0xb3, 0x43, 0x92, 0x8f, 0x93, 0x82, + 0x93, 0xab, 0x90, 0x83, 0xa7, 0x90, 0x87, 0x73, 0x82, 0xc0, 0x54, 0x24, + 0xb3, 0x47, 0x90, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x33, 0x50, 0x60, + 0x05, 0x00, 0x00, 0x48, 0x22, 0x64, 0xa3, 0x43, 0x90, 0x83, 0x63, 0x90, + 0xa3, 0x0b, 0x90, 0x93, 0x6f, 0x90, 0xb3, 0x1f, 0x90, 0xa3, 0xdc, 0x7f, + 0x05, 0x00, 0x00, 0x10, 0x8b, 0x55, 0x00, 0x08, 0x64, 0xa3, 0xe3, 0x82, + 0x44, 0x1e, 0x37, 0x00, 0x81, 0x86, 0x06, 0x60, 0x80, 0x4f, 0x9c, 0xf2, + 0x80, 0x0e, 0x37, 0x04, 0x02, 0x92, 0x8b, 0x03, 0x83, 0x22, 0xbe, 0x7f, + 0xa3, 0x4b, 0x92, 0x87, 0x83, 0x82, 0x24, 0xfa, 0x64, 0xe8, 0x66, 0x24, + 0x21, 0xf9, 0xff, 0x83, 0x82, 0x11, 0xc7, 0x4f, 0x60, 0x93, 0x6f, 0x90, + 0xaf, 0x73, 0x82, 0x05, 0x00, 0x00, 0xd0, 0x39, 0x64, 0xa3, 0x13, 0x90, + 0xa3, 0x43, 0x90, 0x83, 0x6f, 0x90, 0xb3, 0x1f, 0x90, 0x05, 0x00, 0x00, + 0xa8, 0x4c, 0x64, 0x2b, 0xdc, 0x7f, 0x42, 0x1b, 0xc4, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x00, 0x54, 0x24, 0x87, 0x4f, 0x60, 0xb3, 0x43, 0x90, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x4e, 0x23, 0xc4, 0xc0, 0x54, 0x24, + 0x6f, 0x4f, 0x60, 0x8b, 0xb3, 0x82, 0xa3, 0x63, 0x82, 0xa3, 0x43, 0x90, + 0xa3, 0x2b, 0x90, 0x83, 0x4b, 0x90, 0x93, 0x63, 0x90, 0xb3, 0x1b, 0x90, + 0xa3, 0x09, 0x02, 0xdb, 0xdb, 0x7f, 0x80, 0x9d, 0x1d, 0xd9, 0xff, 0xff, + 0xf8, 0xf7, 0x62, 0x80, 0x07, 0x64, 0xd5, 0xff, 0xff, 0xc4, 0xa3, 0x63, + 0x83, 0x63, 0x82, 0x86, 0x33, 0xc5, 0x50, 0x23, 0x1f, 0x9f, 0x01, 0x02, + 0x03, 0x01, 0xa0, 0x6c, 0x1f, 0x1f, 0x82, 0x41, 0x20, 0xcb, 0x06, 0xa0, + 0xd9, 0xff, 0xff, 0xe8, 0xdb, 0x63, 0x4e, 0x1b, 0xc4, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x5f, 0x23, 0xf8, 0xea, 0x0a, 0xc0, 0xc0, 0x54, 0x24, + 0xef, 0x4e, 0x60, 0x76, 0x23, 0xc4, 0x8b, 0xde, 0xf2, 0x2e, 0x40, 0x20, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x40, 0x57, 0x24, 0xa4, 0x64, 0x24, + 0xcf, 0x4e, 0x60, 0x17, 0xec, 0xf2, 0x47, 0x9d, 0xf2, 0x47, 0xe8, 0xf2, + 0x42, 0x42, 0x20, 0xbb, 0x4e, 0x60, 0xe3, 0xde, 0xf2, 0x2a, 0x40, 0x20, + 0x04, 0xfa, 0x65, 0x00, 0x42, 0x24, 0x1d, 0xc7, 0x18, 0xe0, 0x23, 0x75, + 0x9f, 0x4e, 0x60, 0x93, 0xa7, 0x91, 0x19, 0x00, 0x00, 0x64, 0x95, 0x64, + 0xa3, 0xa7, 0xa1, 0x0d, 0x00, 0x00, 0x24, 0x02, 0x64, 0x17, 0x9c, 0xf2, + 0x5f, 0x42, 0x04, 0xa3, 0x5f, 0x92, 0x8f, 0x63, 0x82, 0x7c, 0x12, 0x5a, + 0x8b, 0x13, 0x03, 0xb7, 0x20, 0xf8, 0xdc, 0x08, 0x58, 0xc0, 0x6b, 0x24, + 0x04, 0xfa, 0x64, 0xa3, 0x4f, 0x92, 0x5b, 0x4e, 0x60, 0x2f, 0x94, 0xf2, + 0xd0, 0x76, 0x24, 0xb3, 0x53, 0x92, 0x03, 0xa1, 0x5f, 0x43, 0x4e, 0x60, + 0x8f, 0x73, 0x82, 0x84, 0x02, 0x64, 0xef, 0x81, 0xf2, 0x40, 0x47, 0x24, + 0x03, 0x8c, 0xf2, 0x04, 0xfa, 0x64, 0x27, 0x4e, 0x60, 0xdf, 0x81, 0xf2, + 0xcb, 0x3d, 0xfe, 0xef, 0x3e, 0xfe, 0x05, 0x00, 0x00, 0x74, 0x60, 0x64, + 0x93, 0x6f, 0x90, 0x83, 0x4b, 0x90, 0xb3, 0x23, 0x90, 0xa3, 0x37, 0x90, + 0xc3, 0x5e, 0xd8, 0x09, 0x00, 0x00, 0x1c, 0x9f, 0x64, 0x83, 0xda, 0x7f, + 0xff, 0x01, 0x80, 0x3d, 0x00, 0x00, 0xd2, 0x03, 0x00, 0x3d, 0x00, 0x00, + 0x00, 0x81, 0x92, 0xa6, 0x41, 0x60, 0x23, 0x06, 0x00, 0x0c, 0x02, 0x92, + 0x5a, 0xbf, 0x7f, 0x19, 0x00, 0x00, 0x58, 0x95, 0x64, 0xaf, 0xa9, 0x11, + 0xe7, 0x4e, 0x14, 0x47, 0x56, 0x0a, 0x0d, 0x00, 0x00, 0x43, 0x80, 0x0d, + 0x09, 0x00, 0x00, 0x0f, 0x1c, 0x01, 0xf1, 0xff, 0xff, 0xdf, 0x08, 0x1d, + 0xcb, 0xcd, 0x16, 0x55, 0x00, 0x00, 0xb7, 0x3c, 0x0a, 0x7f, 0xc7, 0x1e, + 0xed, 0xff, 0xff, 0xd3, 0x23, 0x19, 0xf9, 0xff, 0xff, 0x23, 0xa1, 0x01, + 0xab, 0x9b, 0xa1, 0x1b, 0x5a, 0x19, 0xb3, 0xaf, 0xa1, 0xaf, 0x95, 0x1c, + 0xbb, 0xa7, 0xa1, 0xf1, 0xff, 0xff, 0xe7, 0x82, 0x03, 0x83, 0xc7, 0xa1, + 0x47, 0xee, 0x1f, 0x8b, 0xc3, 0xa1, 0x31, 0x00, 0x00, 0x43, 0x20, 0x18, + 0x93, 0xcf, 0xa1, 0xf5, 0xff, 0xff, 0x0f, 0x18, 0x12, 0x9b, 0xdf, 0xa1, + 0xd5, 0xff, 0xff, 0xdf, 0x30, 0x1a, 0xa3, 0xcb, 0xa1, 0xcb, 0xc5, 0x16, + 0xab, 0xf7, 0xa1, 0xf1, 0xff, 0xff, 0xb7, 0x38, 0x1f, 0xb3, 0xff, 0xa1, + 0x8b, 0x1b, 0xa2, 0x7f, 0xeb, 0x1d, 0xbb, 0x1f, 0xa2, 0x0d, 0x00, 0x00, + 0x18, 0x04, 0x74, 0x83, 0x23, 0xa2, 0x9b, 0x27, 0xa2, 0xa3, 0x07, 0xa2, + 0xab, 0x03, 0xa2, 0xb3, 0x0f, 0xa2, 0x83, 0x4b, 0xa2, 0x93, 0x7f, 0xa2, + 0xa3, 0x5b, 0x92, 0xbb, 0xd3, 0xa1, 0x93, 0x2f, 0xa2, 0x8b, 0x77, 0xa2, + 0x93, 0x51, 0x04, 0xb7, 0x23, 0x03, 0x0d, 0x00, 0x00, 0xac, 0x24, 0x64, + 0xa3, 0x63, 0x82, 0x18, 0x09, 0x60, 0x64, 0x0b, 0x60, 0x04, 0xfa, 0x64, + 0x00, 0x12, 0x5b, 0x83, 0x93, 0x92, 0xa3, 0x63, 0x92, 0x80, 0x42, 0x24, + 0xb3, 0x4c, 0x60, 0x07, 0x94, 0xf2, 0x4c, 0x64, 0x24, 0xb3, 0x4f, 0x92, + 0xc3, 0xa0, 0x5f, 0x9b, 0x4c, 0x60, 0xa3, 0x81, 0xf2, 0x83, 0x73, 0x82, + 0xc8, 0x62, 0x7c, 0x88, 0x02, 0x64, 0x50, 0x4a, 0x24, 0x03, 0x81, 0xf2, + 0x04, 0xfa, 0x64, 0x7b, 0x4c, 0x60, 0x87, 0x81, 0xf2, 0xf3, 0x86, 0xa0, + 0x4f, 0x3c, 0xfe, 0x05, 0x00, 0x00, 0x08, 0x6a, 0x64, 0x23, 0x3e, 0xfe, + 0xb3, 0x1f, 0x90, 0x93, 0x63, 0x90, 0x83, 0x4f, 0x90, 0xa3, 0x0b, 0x90, + 0xdf, 0x05, 0x00, 0xdb, 0xd8, 0x7f, 0xd8, 0x85, 0x92, 0x93, 0x83, 0x82, + 0x72, 0xff, 0x7f, 0x2b, 0xb7, 0x7f, 0xf7, 0x93, 0x32, 0xac, 0x35, 0x48, + 0x4a, 0x00, 0x60, 0xfe, 0xbb, 0x00, 0xc8, 0x87, 0x92, 0x3e, 0x40, 0x60, + 0xc3, 0x81, 0x50, 0xd5, 0xff, 0xff, 0xd4, 0xcb, 0x62, 0x36, 0x40, 0x20, + 0x64, 0x20, 0x72, 0xca, 0x42, 0x20, 0xc3, 0xa1, 0x50, 0xd5, 0xff, 0xff, + 0xc8, 0xcb, 0x62, 0x76, 0xc3, 0x20, 0x4a, 0x43, 0x20, 0xc3, 0x81, 0x50, + 0xd5, 0xff, 0xff, 0xcc, 0xc7, 0x62, 0xdf, 0x11, 0x00, 0xf7, 0xbd, 0x7f, + 0x08, 0x02, 0x92, 0xc3, 0x01, 0x80, 0x26, 0x00, 0x60, 0x3c, 0x7c, 0xb3, + 0xda, 0xbf, 0x5f, 0xca, 0x42, 0x20, 0xc3, 0x91, 0x50, 0xd5, 0xff, 0xff, + 0xc8, 0xbf, 0x62, 0x76, 0x43, 0x21, 0xc3, 0xbf, 0x7f, 0x3c, 0xfc, 0xb3, + 0xe6, 0xff, 0x5f, 0xb7, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, + 0x88, 0xef, 0x4e, 0x84, 0x40, 0x2b, 0x4a, 0x7c, 0x26, 0x04, 0x08, 0x64, + 0xd5, 0xff, 0xff, 0x5f, 0x06, 0xfe, 0x0f, 0x28, 0xe5, 0x05, 0x00, 0x00, + 0x08, 0x41, 0x64, 0x04, 0x11, 0x64, 0x1e, 0x40, 0x20, 0xd5, 0xff, 0xff, + 0xd8, 0xaf, 0x62, 0x40, 0x00, 0x64, 0xd1, 0xff, 0xff, 0xd4, 0xeb, 0x63, + 0x05, 0x00, 0x00, 0x48, 0x41, 0x64, 0xc3, 0x11, 0x51, 0xd5, 0xff, 0xff, + 0xf8, 0xa7, 0x62, 0x14, 0x18, 0x64, 0x01, 0x00, 0x85, 0x20, 0x00, 0x64, + 0x01, 0x00, 0x05, 0x24, 0x00, 0x64, 0x20, 0x18, 0xc8, 0x8c, 0x01, 0x92, + 0x4a, 0x42, 0x20, 0x0a, 0x00, 0x60, 0x0a, 0x42, 0x20, 0xc0, 0x95, 0x1d, + 0xd5, 0xff, 0xff, 0xdc, 0x9f, 0x62, 0xc0, 0x95, 0x1d, 0xd5, 0xff, 0xff, + 0xfc, 0x97, 0x62, 0x9b, 0x05, 0x00, 0x9c, 0x81, 0x92, 0x57, 0x11, 0x00, + 0xca, 0xff, 0x7f, 0x09, 0x00, 0x00, 0x48, 0x00, 0x64, 0xc3, 0x41, 0x51, + 0x0b, 0x2c, 0xe5, 0xd5, 0xff, 0xff, 0x87, 0x02, 0xfe, 0x0f, 0x28, 0xe5, + 0xc8, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x1b, 0x10, 0x8e, + 0xa8, 0x18, 0xc8, 0x1c, 0x18, 0x64, 0x01, 0x00, 0x85, 0x20, 0x00, 0x64, + 0x80, 0x9d, 0x1d, 0x0a, 0x42, 0x20, 0xd5, 0xff, 0xff, 0xe4, 0x8b, 0x62, + 0x80, 0x9d, 0x1d, 0xd5, 0xff, 0xff, 0xc4, 0x87, 0x62, 0x57, 0x05, 0x00, + 0x5c, 0x01, 0x92, 0xdf, 0x11, 0x00, 0xda, 0xbf, 0x7f, 0x45, 0x3b, 0x46, + 0x48, 0x90, 0x64, 0x83, 0x51, 0x51, 0x0b, 0x2c, 0xe5, 0xd5, 0xff, 0xff, + 0x17, 0x00, 0xfe, 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x00, 0x40, 0x55, + 0x04, 0x00, 0xa1, 0x01, 0x12, 0x00, 0x04, 0x84, 0x80, 0x00, 0x3c, 0x23, + 0x2b, 0x88, 0xe5, 0x1a, 0x40, 0x20, 0x01, 0x05, 0x00, 0x40, 0x00, 0x64, + 0x97, 0xd7, 0x7f, 0x0d, 0x00, 0x00, 0x77, 0xa3, 0xf8, 0x98, 0x1a, 0x72, + 0x09, 0x00, 0x00, 0x20, 0x9d, 0x64, 0xa7, 0x11, 0x02, 0x03, 0x66, 0xf7, + 0x70, 0x02, 0xc8, 0x94, 0x11, 0x2b, 0x0d, 0x00, 0x00, 0x57, 0xa1, 0x03, + 0x40, 0x01, 0xe7, 0x50, 0x01, 0xe7, 0x60, 0x01, 0xe7, 0x70, 0x01, 0xe7, + 0x04, 0x10, 0x64, 0xd1, 0xff, 0xff, 0xe4, 0xe7, 0x63, 0x00, 0x70, 0x94, + 0x19, 0x00, 0x00, 0x1e, 0x40, 0x3c, 0x03, 0x66, 0xf7, 0xca, 0x41, 0x20, + 0x04, 0x10, 0x64, 0x20, 0x00, 0x64, 0xd1, 0xff, 0xff, 0xf4, 0xe3, 0x63, + 0x80, 0x25, 0x64, 0xd1, 0xff, 0xff, 0xf0, 0x9f, 0x63, 0x83, 0x01, 0x50, + 0xd5, 0xff, 0xff, 0xf8, 0x9f, 0x63, 0x33, 0x0c, 0x50, 0x42, 0x41, 0x20, + 0x09, 0x00, 0x00, 0x28, 0x9d, 0x64, 0xaf, 0x11, 0x02, 0x83, 0x43, 0x90, + 0x83, 0x6e, 0xf7, 0xcf, 0xa1, 0xd3, 0xca, 0x41, 0x20, 0x04, 0x10, 0x64, + 0xd1, 0xff, 0xff, 0xdc, 0xd7, 0x63, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, + 0xd8, 0x93, 0x63, 0x83, 0x01, 0x50, 0xd5, 0xff, 0xff, 0xe0, 0x93, 0x63, + 0x26, 0x40, 0x20, 0x83, 0x6e, 0xf7, 0x07, 0x06, 0x00, 0xcf, 0x85, 0xd3, + 0xca, 0x41, 0x20, 0x04, 0x10, 0x64, 0xd1, 0xff, 0xff, 0xf4, 0xcb, 0x63, + 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, 0xf0, 0x87, 0x63, 0x83, 0x01, 0x50, + 0xd5, 0xff, 0xff, 0xf8, 0x87, 0x63, 0x8f, 0x43, 0x80, 0x64, 0x42, 0x2b, + 0x0b, 0x64, 0xfb, 0x13, 0x0a, 0x00, 0xc2, 0x40, 0x20, 0x10, 0x08, 0x7a, + 0x77, 0x47, 0x00, 0x22, 0x1d, 0x00, 0xd4, 0xf6, 0x73, 0x30, 0x07, 0xa8, + 0x83, 0x6e, 0xf7, 0x73, 0x31, 0x90, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0xd1, 0xff, 0xff, 0xec, 0xbb, 0x63, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, + 0xe8, 0xf7, 0x62, 0x13, 0x00, 0x60, 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x74, 0x3f, 0x82, 0x01, 0x05, 0x00, 0x80, 0x00, 0x64, 0x2b, 0xd6, 0x7f, + 0x09, 0x00, 0x00, 0x20, 0x9d, 0x64, 0xa7, 0x11, 0x02, 0x80, 0x01, 0x92, + 0x07, 0x00, 0xfd, 0x03, 0x66, 0xf7, 0x83, 0x47, 0xb0, 0x70, 0x41, 0xc8, + 0x05, 0x00, 0x00, 0x00, 0x8b, 0x55, 0x28, 0x00, 0xc8, 0x82, 0x41, 0x20, + 0x9f, 0xf1, 0x7f, 0x05, 0x00, 0x00, 0x64, 0x01, 0x81, 0x05, 0x00, 0x00, + 0x00, 0x8b, 0x55, 0x0d, 0x00, 0x00, 0x14, 0x1b, 0x64, 0x64, 0x03, 0x72, + 0x03, 0x66, 0xf7, 0x11, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0x28, 0xdc, 0x64, 0xd1, 0xff, 0xff, 0xf0, 0x9f, 0x63, 0x80, 0x07, 0x64, + 0xd1, 0xff, 0xff, 0xec, 0xdb, 0x62, 0x83, 0x01, 0x50, 0xd5, 0xff, 0xff, + 0xf4, 0xdb, 0x62, 0x1e, 0x40, 0x20, 0x9f, 0xd5, 0x7f, 0xc8, 0x69, 0x24, + 0x8f, 0xbc, 0x1f, 0xbc, 0xfc, 0xb3, 0xd3, 0xc8, 0xf9, 0x00, 0x29, 0x27, + 0x05, 0x00, 0x00, 0x44, 0x64, 0x64, 0x6b, 0xc0, 0xf2, 0x08, 0xfa, 0x64, + 0x80, 0x4a, 0x24, 0x47, 0x5c, 0x07, 0x27, 0x48, 0x60, 0x4c, 0x19, 0x1f, + 0xd3, 0x00, 0xa0, 0x13, 0xdc, 0x0d, 0x0c, 0x69, 0xb6, 0x2a, 0x40, 0x20, + 0xe6, 0x01, 0x60, 0x80, 0x81, 0x1d, 0xd5, 0xff, 0xff, 0xc4, 0x9f, 0x62, + 0x03, 0x66, 0xf7, 0x05, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0xd1, 0xff, 0xff, 0xcc, 0x87, 0x63, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, + 0xc8, 0xc3, 0x62, 0x03, 0x66, 0xf7, 0x0d, 0x00, 0x00, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0xd1, 0xff, 0xff, 0xe0, 0xff, 0x62, 0x80, 0x07, 0x64, + 0xd1, 0xff, 0xff, 0xdc, 0xbb, 0x62, 0x82, 0x41, 0x20, 0xd5, 0xff, 0xff, + 0xfc, 0xc7, 0x62, 0x1f, 0x3c, 0xfe, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x64, + 0xe7, 0xd4, 0x7f, 0xc2, 0x41, 0x20, 0xdf, 0xd4, 0x7f, 0x05, 0x00, 0x00, + 0x2c, 0x8b, 0x55, 0x00, 0x10, 0x64, 0xc0, 0x82, 0x86, 0x06, 0xc0, 0x80, + 0x87, 0xc6, 0xf2, 0x82, 0x41, 0x20, 0xd5, 0xff, 0xff, 0xd4, 0x83, 0x62, + 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, 0xe0, 0xab, 0x62, 0x82, 0x41, 0x20, + 0xd5, 0xff, 0xff, 0xc0, 0xbb, 0x62, 0x2f, 0x3c, 0xfe, 0x01, 0x0c, 0x00, + 0x40, 0x00, 0x64, 0x93, 0xd4, 0x7f, 0xc2, 0x42, 0x20, 0x8b, 0xd4, 0x7f, + 0x01, 0x0c, 0x00, 0x80, 0x00, 0x64, 0x7f, 0xd4, 0x7f, 0xcb, 0xed, 0xf2, + 0x21, 0x00, 0x00, 0x0c, 0x98, 0x64, 0x9c, 0x4c, 0x24, 0x1d, 0x00, 0x00, + 0xc3, 0x01, 0x50, 0x1b, 0x47, 0x60, 0x5f, 0xd4, 0x7f, 0x15, 0x01, 0x00, + 0xfc, 0x7d, 0xb3, 0xe2, 0x00, 0x60, 0x80, 0xa9, 0x1d, 0xd1, 0xff, 0xff, + 0xf8, 0xeb, 0x63, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, 0xc4, 0x97, 0x62, + 0x01, 0x0c, 0x00, 0xc0, 0x00, 0x64, 0x2f, 0xd4, 0x7f, 0x1f, 0x66, 0xf7, + 0xfd, 0x3f, 0x00, 0xc8, 0xff, 0x64, 0xc3, 0x11, 0x52, 0xd1, 0xff, 0xff, + 0xf8, 0xcf, 0x62, 0xc3, 0x81, 0x52, 0x01, 0x00, 0xf4, 0x08, 0x00, 0x64, + 0xd1, 0xff, 0xff, 0xfc, 0xcb, 0x62, 0x01, 0x05, 0x00, 0xc0, 0x00, 0x64, + 0xf7, 0xd3, 0x7f, 0x05, 0x00, 0x00, 0xd0, 0x73, 0x64, 0xa3, 0x13, 0x90, + 0x2f, 0xd3, 0x7f, 0x82, 0x41, 0x20, 0x8b, 0xed, 0x7f, 0x01, 0x05, 0x00, + 0x00, 0x01, 0x64, 0xd3, 0xd3, 0x7f, 0x40, 0x19, 0x1f, 0x04, 0x14, 0x64, + 0x0b, 0x04, 0xa2, 0x08, 0x0a, 0x64, 0x54, 0x19, 0x1f, 0x01, 0x05, 0x00, + 0x40, 0x01, 0x64, 0x53, 0x09, 0xa2, 0xaf, 0xd3, 0x7f, 0x8e, 0x83, 0xe0, + 0xc0, 0xe0, 0x26, 0x0a, 0x40, 0x60, 0xbf, 0xd2, 0x7f, 0x83, 0x41, 0x51, + 0x08, 0x0a, 0x64, 0x13, 0xf1, 0x7f, 0x01, 0x05, 0x00, 0x80, 0x01, 0x64, + 0x87, 0xd3, 0x7f, 0x01, 0x05, 0x00, 0x00, 0x02, 0x64, 0x2b, 0x8c, 0xe5, + 0x77, 0x93, 0x7f, 0x01, 0x0c, 0x00, 0x00, 0x01, 0x64, 0x6b, 0xd3, 0x7f, + 0x82, 0x41, 0x20, 0x7b, 0xec, 0x7f, 0x80, 0x07, 0x64, 0xcd, 0xff, 0xff, + 0xd8, 0xeb, 0x63, 0xbe, 0x83, 0xe0, 0xc0, 0x63, 0x26, 0x0a, 0x00, 0x60, + 0x67, 0xd2, 0x7f, 0x82, 0x41, 0x20, 0x57, 0xec, 0x7f, 0x01, 0x05, 0x00, + 0xc0, 0x01, 0x64, 0xaf, 0xbf, 0x7f, 0x07, 0x10, 0xe5, 0x16, 0x40, 0x20, + 0x44, 0x00, 0x64, 0x9a, 0x05, 0x20, 0x9b, 0xc5, 0xfb, 0x1c, 0x18, 0x72, + 0x40, 0x00, 0x64, 0x17, 0x00, 0x60, 0x00, 0x00, 0x64, 0xc0, 0xd7, 0x1f, + 0x04, 0x00, 0x64, 0xc4, 0xc3, 0x73, 0x07, 0x14, 0xe5, 0x04, 0x03, 0x64, + 0x00, 0x44, 0x24, 0x05, 0x00, 0x00, 0x0b, 0x80, 0x11, 0x82, 0x04, 0xe0, + 0x00, 0x3c, 0x23, 0x04, 0x03, 0x64, 0x00, 0x44, 0x24, 0x05, 0x00, 0x00, + 0x0b, 0x80, 0x11, 0x8f, 0x10, 0x80, 0xc0, 0x00, 0x86, 0x03, 0x00, 0xfd, + 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, 0x05, 0x00, 0x00, 0x58, 0x7a, 0x64, + 0x14, 0x00, 0x72, 0x9b, 0x29, 0x00, 0x04, 0x00, 0x64, 0x28, 0x04, 0xc8, + 0xa3, 0x03, 0x90, 0xc9, 0xf3, 0xff, 0xc4, 0xbb, 0x63, 0x83, 0x23, 0x80, + 0x05, 0x00, 0x00, 0x3c, 0x8c, 0x64, 0x88, 0x01, 0xd0, 0xd3, 0x23, 0x80, + 0x00, 0x09, 0xd8, 0xd3, 0x03, 0x90, 0x40, 0x00, 0x64, 0xc7, 0x03, 0xb0, + 0x8a, 0x21, 0xc0, 0x23, 0x09, 0xa0, 0x0f, 0x0c, 0xe6, 0x03, 0x10, 0xe6, + 0x35, 0x0c, 0x00, 0x1b, 0x74, 0x53, 0xdc, 0xfb, 0x63, 0xc2, 0x41, 0x20, + 0xe8, 0xf3, 0x63, 0x00, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0x35, 0x0c, 0x00, + 0xc0, 0x3b, 0x64, 0xd4, 0xf3, 0x63, 0x09, 0x00, 0x00, 0x00, 0x93, 0x52, + 0x04, 0x80, 0x66, 0x0e, 0x40, 0x60, 0x82, 0x41, 0x20, 0xc8, 0xdb, 0x62, + 0xd4, 0x87, 0x62, 0x1b, 0x00, 0xe0, 0x0c, 0x00, 0x64, 0x38, 0x0c, 0xc8, + 0x83, 0x4b, 0x90, 0x88, 0x03, 0xd8, 0xc9, 0xf3, 0xff, 0xc8, 0x9f, 0x63, + 0x8b, 0x43, 0x80, 0x80, 0x0b, 0xd0, 0x8f, 0xd5, 0x7f, 0xd0, 0xfb, 0x63, + 0x40, 0x84, 0x62, 0x80, 0x00, 0x64, 0x1b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x83, 0xa0, 0xf1, 0x02, 0x48, 0x20, 0x0b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x07, 0x00, 0xfe, 0x5c, 0x80, 0x62, 0x43, 0xe0, 0xf1, 0xfd, 0xbf, 0xff, + 0x00, 0x00, 0x64, 0x07, 0x42, 0xf2, 0x67, 0xc3, 0xfe, 0x8f, 0x1f, 0xfe, + 0x83, 0xc2, 0xfe, 0x02, 0x78, 0x27, 0x03, 0x78, 0xfe, 0x00, 0x04, 0x23, + 0x0e, 0x40, 0x20, 0x10, 0x00, 0x64, 0x00, 0x10, 0x1e, 0x03, 0x04, 0x00, + 0x00, 0x08, 0x1e, 0xc0, 0x04, 0x1e, 0x00, 0x3c, 0x23, 0x57, 0xc3, 0xfe, + 0x05, 0x10, 0x00, 0x18, 0x28, 0x64, 0xe0, 0x18, 0xc8, 0x83, 0x41, 0x90, + 0x93, 0x45, 0x90, 0xa3, 0x79, 0x90, 0xb3, 0x7d, 0x90, 0x1f, 0xa5, 0xf1, + 0xdc, 0xe9, 0xa3, 0x83, 0x1d, 0x90, 0x1f, 0x8f, 0xf1, 0x93, 0x1d, 0x90, + 0x9f, 0x8f, 0xf1, 0xa3, 0x1d, 0x90, 0x1f, 0xe0, 0xf1, 0xb3, 0x1d, 0x90, + 0x1f, 0xa5, 0xf1, 0xd0, 0x31, 0x26, 0x2b, 0x00, 0xf3, 0x1f, 0xce, 0xf1, + 0xa3, 0x1d, 0x90, 0x9f, 0xce, 0xf1, 0xb3, 0x1d, 0x90, 0x1f, 0xa5, 0xf1, + 0xd4, 0x31, 0x26, 0x2b, 0x00, 0xf3, 0x1f, 0xdd, 0xf1, 0xa3, 0x1d, 0x90, + 0x9f, 0xdd, 0xf1, 0xb3, 0x1d, 0x90, 0x18, 0x00, 0x64, 0x10, 0x18, 0xc8, + 0xc0, 0xdb, 0x1f, 0x67, 0x1e, 0xfe, 0x73, 0x87, 0xf1, 0x76, 0x53, 0x20, + 0x77, 0x30, 0xf2, 0xb3, 0xc2, 0xfe, 0x32, 0x43, 0x04, 0x03, 0x7b, 0xfe, + 0x30, 0x80, 0x64, 0x6b, 0x32, 0xf2, 0x1f, 0x1e, 0xfe, 0x17, 0x1e, 0xfe, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, + 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, + 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, + 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0x80, 0x40, 0x74, 0xdc, 0x8f, 0x62, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, + 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, + 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, + 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0xc0, 0x40, 0x74, 0xdc, 0x8b, 0x62, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, + 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, + 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, + 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0x40, 0x40, 0x74, 0xdc, 0x87, 0x62, + 0x09, 0x00, 0x00, 0xc7, 0x50, 0xf9, 0x10, 0x00, 0x64, 0xc9, 0xf3, 0xff, + 0x7c, 0x53, 0x72, 0x93, 0xc2, 0xfe, 0x12, 0x41, 0x24, 0x03, 0x79, 0xfe, + 0x53, 0x87, 0xf1, 0x56, 0x41, 0x24, 0x77, 0x10, 0xf2, 0x10, 0x80, 0x64, + 0x5b, 0x12, 0xf2, 0x6b, 0x12, 0xf2, 0x67, 0xc3, 0xfe, 0x93, 0xc2, 0xfe, + 0x12, 0x41, 0x04, 0x03, 0x79, 0xfe, 0xff, 0x1b, 0xfe, 0x09, 0x00, 0x00, + 0x53, 0x4c, 0xf4, 0x33, 0xc3, 0xfe, 0x1b, 0x10, 0xe6, 0x09, 0x00, 0x00, + 0x44, 0x03, 0x81, 0x7d, 0x00, 0x00, 0x3c, 0x7c, 0xaf, 0x5e, 0x40, 0x20, + 0x0e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x64, 0x07, 0x81, 0x58, 0x00, 0x64, + 0xb3, 0x03, 0x90, 0xa3, 0x1b, 0x90, 0x07, 0x00, 0xfd, 0x83, 0x47, 0xb0, + 0x01, 0x00, 0xf0, 0x48, 0x04, 0x64, 0xc0, 0x00, 0x74, 0xc4, 0x87, 0x62, + 0x82, 0x83, 0xe0, 0x00, 0xe0, 0x26, 0x1a, 0x40, 0x60, 0x88, 0x1b, 0xd8, + 0x01, 0x00, 0xf0, 0x48, 0x01, 0x64, 0xc0, 0x00, 0x74, 0xe4, 0x83, 0x62, + 0x48, 0x00, 0x64, 0xa3, 0x0b, 0x90, 0x00, 0x00, 0x74, 0x01, 0x00, 0xf0, + 0x48, 0x00, 0x64, 0xcc, 0x83, 0x62, 0x40, 0x00, 0x64, 0xd0, 0xcf, 0x63, + 0x03, 0x80, 0xe5, 0x20, 0x84, 0x1d, 0x10, 0x7a, 0x31, 0xb3, 0x23, 0x00, + 0x4c, 0x0a, 0x2b, 0x3c, 0x02, 0xa7, 0x03, 0x33, 0x01, 0xd3, 0x50, 0xfb, + 0x9b, 0x23, 0x40, 0x06, 0x40, 0x20, 0x22, 0x41, 0x20, 0xd6, 0x43, 0x20, + 0x84, 0x14, 0x72, 0x87, 0x0d, 0x00, 0x4e, 0x4c, 0x00, 0xd3, 0x20, 0x00, + 0xbb, 0xd3, 0xf2, 0xcc, 0x01, 0x64, 0xa3, 0x0f, 0xb0, 0x87, 0x23, 0x00, + 0x47, 0x08, 0x90, 0x8f, 0x37, 0x00, 0x0c, 0x3d, 0x72, 0x03, 0xa3, 0x80, + 0x8b, 0x4d, 0x00, 0xf8, 0x97, 0x62, 0xfa, 0x41, 0x20, 0x07, 0x84, 0xe5, + 0x4e, 0x1d, 0x00, 0xcf, 0x44, 0x00, 0xcc, 0x00, 0xb6, 0x3a, 0x00, 0x60, + 0x64, 0x00, 0x64, 0x4c, 0x8e, 0x40, 0xd0, 0x80, 0xba, 0x60, 0x40, 0x70, + 0x0a, 0x40, 0x60, 0x47, 0x10, 0x00, 0x9b, 0x8d, 0xf2, 0x4c, 0x0d, 0x31, + 0x18, 0x0c, 0xc8, 0xd0, 0x90, 0x1d, 0x4e, 0x41, 0x20, 0xd0, 0x90, 0x1d, + 0x83, 0xbf, 0x7f, 0xd0, 0x80, 0x92, 0xe6, 0xff, 0x7f, 0x67, 0x00, 0x80, + 0x9b, 0x05, 0x00, 0x47, 0x10, 0x00, 0x4c, 0x06, 0x5e, 0x9b, 0x05, 0x00, + 0xc4, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0xc7, 0xbf, 0x7f, 0xca, 0x1f, 0x00, + 0x8b, 0x44, 0x00, 0x8c, 0x00, 0xb6, 0x4e, 0x00, 0x60, 0x50, 0x00, 0x64, + 0x08, 0x89, 0x40, 0x90, 0x80, 0xba, 0x32, 0x40, 0x60, 0x10, 0x10, 0x5a, + 0xc3, 0x10, 0x90, 0xcf, 0x88, 0xf2, 0xc8, 0x0f, 0x31, 0x20, 0x08, 0xc8, + 0x3e, 0x42, 0x20, 0xa2, 0x40, 0x20, 0xca, 0x43, 0x20, 0x3e, 0x42, 0x20, + 0xa2, 0x40, 0x20, 0x37, 0xbf, 0x7f, 0x10, 0x08, 0xf0, 0xc0, 0x10, 0xd8, + 0xd7, 0xbf, 0x7f, 0x90, 0x80, 0x92, 0xd2, 0xff, 0x7f, 0xc0, 0x00, 0xe4, + 0x03, 0x10, 0x00, 0xcf, 0x04, 0x00, 0x13, 0xf0, 0x8f, 0x08, 0x05, 0x5e, + 0xc4, 0x08, 0x78, 0x84, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0xaf, 0xbf, 0x7f, + 0x00, 0x7c, 0x31, 0x00, 0xfc, 0xa1, 0x00, 0x3c, 0x23, 0x03, 0x18, 0xe5, + 0x18, 0x84, 0x1d, 0x09, 0x00, 0x00, 0x00, 0x9c, 0x52, 0x96, 0x40, 0x20, + 0x00, 0x00, 0x66, 0x16, 0x00, 0x60, 0x4a, 0x41, 0x20, 0x80, 0x9d, 0x1d, + 0xd0, 0x93, 0x62, 0x07, 0x1c, 0xe5, 0x08, 0x00, 0x64, 0x00, 0x00, 0x74, + 0xc0, 0x93, 0x62, 0xfd, 0xff, 0xff, 0x3c, 0xfc, 0x87, 0x12, 0x40, 0x60, + 0x44, 0x00, 0x64, 0x09, 0x00, 0x00, 0x84, 0x07, 0x7f, 0x09, 0x00, 0x00, + 0x08, 0x9c, 0x52, 0x84, 0x00, 0x66, 0xc2, 0xbf, 0x7f, 0x4a, 0x41, 0x20, + 0x80, 0x9d, 0x1d, 0xcc, 0xfb, 0x63, 0xbf, 0xbf, 0x7f, 0x03, 0x00, 0xe0, + 0xcc, 0xfb, 0x63, 0x03, 0x60, 0x20, 0x07, 0x04, 0xe0, 0x37, 0x00, 0xfe, + 0x9f, 0x00, 0xfe, 0x03, 0x00, 0xe0, 0xc4, 0x87, 0x62, 0x40, 0x80, 0x1d, + 0x07, 0x04, 0xe0, 0x03, 0x10, 0xe5, 0x14, 0x7c, 0x27, 0x58, 0x7c, 0x27, + 0x03, 0xd4, 0xfa, 0x47, 0xd8, 0xfa, 0x03, 0xd4, 0xf2, 0x47, 0xd8, 0xf2, + 0xdc, 0x83, 0x62, 0x47, 0xd4, 0xfa, 0x47, 0xd4, 0xf2, 0x57, 0xd9, 0xfa, + 0x03, 0xd4, 0xfa, 0x03, 0xd4, 0xf2, 0x07, 0x14, 0xe5, 0x4b, 0x24, 0xfe, + 0x50, 0x04, 0xc8, 0x8a, 0x4c, 0x20, 0x8b, 0x04, 0x00, 0x52, 0x40, 0x20, + 0x04, 0x88, 0x3e, 0x8c, 0x80, 0x25, 0x00, 0x8c, 0x40, 0x10, 0x08, 0xca, + 0x00, 0x50, 0x1e, 0x00, 0x3c, 0x23, 0x04, 0x00, 0x64, 0xb0, 0xc7, 0xc9, + 0x47, 0x00, 0x80, 0xa0, 0xc7, 0xc9, 0x07, 0x00, 0xfe, 0x0e, 0x40, 0x20, + 0x48, 0x04, 0x5e, 0xc4, 0x08, 0x78, 0x84, 0x00, 0x66, 0xf6, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x8c, 0x00, 0x64, 0x01, 0x00, 0x00, 0xcf, 0x01, 0xfe, + 0x01, 0x04, 0x00, 0x8c, 0x05, 0x64, 0x01, 0x00, 0x00, 0x6f, 0x01, 0xfe, + 0x4b, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, 0x67, 0xc3, 0xfe, 0x8f, 0x03, 0x80, + 0x83, 0x13, 0x80, 0xbb, 0x23, 0x00, 0xc0, 0x00, 0x86, 0x02, 0xbc, 0x9f, + 0x00, 0x3c, 0x23, 0xa0, 0xcf, 0x7b, 0x67, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, + 0xa7, 0x1f, 0xfe, 0x10, 0x00, 0x64, 0xc5, 0xf3, 0xff, 0x14, 0x11, 0x73, + 0xcf, 0x1f, 0xfe +}; + +#define PMC_DTCM_LOG_SIZE 256 + +const unsigned char pmcdata[] = { + 0x3c, 0x0a, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x40, 0x0a, 0x00, 0x00, 0xb8, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x00, 0x28, 0x6e, + 0x75, 0x6c, 0x6c, 0x29, 0x00, 0x25, 0x30, 0x34, 0x75, 0x3a, 0x20, 0x00, + 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x20, 0x30, 0x78, 0x25, + 0x30, 0x38, 0x78, 0x0a, 0x00, 0x50, 0x4d, 0x43, 0x5f, 0x56, 0x45, 0x52, + 0x3a, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x0a, 0x00, 0x24, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x20, 0x32, 0x38, 0x34, 0x30, + 0x32, 0x37, 0x20, 0x24, 0x00, 0x32, 0x30, 0x30, 0x36, 0x32, 0x32, 0x5f, + 0x31, 0x31, 0x33, 0x30, 0x00, 0x54, 0x53, 0x3a, 0x25, 0x73, 0x0a, 0x00, + 0x43, 0x48, 0x49, 0x44, 0x3a, 0x25, 0x78, 0x0a, 0x00, 0x43, 0x52, 0x45, + 0x56, 0x3a, 0x25, 0x78, 0x0a, 0x00, 0x50, 0x41, 0x52, 0x54, 0x49, 0x44, + 0x3a, 0x25, 0x78, 0x20, 0x43, 0x46, 0x41, 0x4d, 0x3a, 0x25, 0x78, 0x20, + 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x20, 0x63, 0x68, 0x69, 0x70, + 0x20, 0x69, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x0a, 0x00, 0x52, 0x4f, 0x20, 0x53, 0x56, 0x54, 0x20, 0x25, + 0x64, 0x20, 0x48, 0x56, 0x54, 0x20, 0x25, 0x64, 0x20, 0x4c, 0x56, 0x54, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, + 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, 0x6f, 0x76, 0x65, + 0x72, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x65, + 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, + 0x56, 0x53, 0x20, 0x6c, 0x6f, 0x67, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, + 0x69, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x20, 0x73, 0x6c, + 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, + 0x64, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x69, 0x6e, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, + 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, 0x66, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x75, 0x0a, + 0x00, 0x41, 0x56, 0x53, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x0a, 0x00, 0x44, 0x41, 0x43, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x00, + 0x4c, 0x56, 0x54, 0x00, 0x48, 0x56, 0x54, 0x00, 0x64, 0x65, 0x76, 0x20, + 0x61, 0x64, 0x64, 0x72, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x52, 0x4f, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x53, 0x56, 0x54, 0x20, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x20, 0x25, 0x75, 0x20, 0x52, 0x4f, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x25, 0x73, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, + 0x25, 0x75, 0x0a, 0x00, 0x63, 0x75, 0x72, 0x5f, 0x64, 0x61, 0x63, 0x20, + 0x25, 0x75, 0x20, 0x63, 0x75, 0x72, 0x56, 0x20, 0x25, 0x75, 0x20, 0x63, + 0x75, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x20, 0x25, 0x75, 0x20, 0x64, 0x65, + 0x6c, 0x74, 0x61, 0x20, 0x25, 0x64, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x64, + 0x61, 0x63, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x56, 0x41, 0x44, 0x43, + 0x31, 0x20, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x25, + 0x75, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, + 0x64, 0x20, 0x4d, 0x56, 0x41, 0x44, 0x43, 0x32, 0x20, 0x25, 0x75, 0x0a, + 0x00, 0x4d, 0x56, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x20, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x20, 0x25, 0x75, 0x20, 0x4d, 0x56, 0x0a, 0x00, 0x44, 0x75, + 0x6d, 0x70, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, + 0x6f, 0x6e, 0x20, 0x76, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x6d, 0x76, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, 0x70, 0x20, 0x61, 0x6c, 0x6c, + 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x76, 0x6c, 0x6f, + 0x77, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x52, 0x4f, 0x5b, + 0x25, 0x64, 0x5d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, + 0x6f, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x6f, 0x20, + 0x25, 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x25, 0x64, 0x20, + 0x76, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, + 0x61, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, 0x76, 0x68, + 0x69, 0x67, 0x68, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, + 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x20, 0x25, 0x64, 0x20, 0x76, 0x6f, + 0x6c, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, + 0x00, 0x52, 0x4f, 0x5b, 0x25, 0x64, 0x5d, 0x20, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x5f, 0x72, 0x6f, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x77, + 0x5f, 0x72, 0x6f, 0x20, 0x25, 0x64, 0x20, 0x76, 0x6c, 0x6f, 0x77, 0x5f, + 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6c, 0x6f, + 0x77, 0x20, 0x25, 0x64, 0x20, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x72, 0x6f, + 0x20, 0x25, 0x64, 0x20, 0x76, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x6d, 0x76, + 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x61, 0x76, 0x73, 0x5f, 0x64, 0x61, 0x63, + 0x20, 0x25, 0x64, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, + 0x6d, 0x76, 0x20, 0x25, 0x75, 0x20, 0x61, 0x76, 0x73, 0x5f, 0x6d, 0x76, + 0x20, 0x25, 0x64, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x5f, 0x6d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x63, 0x61, + 0x6c, 0x63, 0x5f, 0x73, 0x77, 0x72, 0x65, 0x67, 0x5f, 0x6d, 0x76, 0x20, + 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x20, + 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, + 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x20, 0x25, 0x64, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x5f, 0x73, 0x77, + 0x72, 0x65, 0x67, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x63, + 0x61, 0x6c, 0x63, 0x5f, 0x73, 0x77, 0x72, 0x65, 0x67, 0x5f, 0x64, 0x61, + 0x63, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x69, 0x73, + 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x72, 0x67, + 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x25, + 0x64, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x5f, + 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, + 0x00, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x54, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x25, 0x64, 0x20, 0x68, 0x69, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x52, 0x34, 0x38, 0x5f, 0x25, 0x64, 0x20, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x68, 0x69, 0x20, 0x25, 0x64, 0x20, + 0x6c, 0x6f, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, 0x70, 0x20, + 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, 0x6e, 0x20, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x0a, 0x00, 0x40, 0x40, 0x40, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x00, 0x40, 0x40, 0x40, 0x50, 0x41, + 0x53, 0x53, 0x45, 0x44, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x74, 0xc4, 0xec, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x50, 0x0a, 0x00, 0x00 +}; +#endif //PMC_ROMDATA_47622_H diff --git a/arch/arm/mach-bcmbca/pmc/pmc_firmware_4912.h b/arch/arm/mach-bcmbca/pmc/pmc_firmware_4912.h new file mode 100644 index 0000000000..b0ae13b42f --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_firmware_4912.h @@ -0,0 +1,1430 @@ +/* + * * <:copyright-BRCM:2017:DUAL/GPL:standard + * * + * * Copyright (c) 2017 Broadcom + * * All Rights Reserved + * * + * * This program is free software; you can redistribute it and/or modify + * * it under the terms of the GNU General Public License, version 2, as published by + * * the Free Software Foundation (the "GPL"). + * * + * * This program is distributed in the hope that it will be useful, + * * but WITHOUT ANY WARRANTY; without even the implied warranty of + * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * * GNU General Public License for more details. + * * + * * + * * A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + * * writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * * Boston, MA 02111-1307, USA. + * * + * * :> + * */ + +#ifndef PMC_ROMDATA_4912_H +#define PMC_ROMDATA_4912_H +#define PMC_VER_IMPL 3 +#define PMC_VER_MAJOR 3 +#define PMC_VER_MINOR 4 +#define PMC_VER_CHANGELIST "$Change: 300027 $" +#ifndef DEVICE_TREE +const unsigned char pmcappdata[] = { + 0xeb, 0x42, 0xf2, 0x35, 0x00, 0x00, 0x87, 0x1a, 0xfe, 0x00, 0x00, 0x00, + 0x11, 0x10, 0x00, 0x04, 0x0b, 0x4e, 0x40, 0x00, 0x84, 0x07, 0xbc, 0xfd, + 0x11, 0x10, 0x00, 0x08, 0x0b, 0x64, 0x8e, 0x08, 0xc0, 0xc0, 0x80, 0x90, + 0xfa, 0xff, 0x7f, 0x04, 0x00, 0x64, 0x10, 0x04, 0x5e, 0x00, 0x01, 0x66, + 0x0e, 0x00, 0x60, 0x40, 0xc0, 0x92, 0x12, 0x40, 0x60, 0x11, 0x10, 0x00, + 0x74, 0x05, 0x82, 0x00, 0x3c, 0x23, 0x44, 0x10, 0x78, 0xdf, 0xbf, 0x7f, + 0x00, 0x80, 0xa2, 0x11, 0x10, 0x00, 0x04, 0x01, 0x80, 0x11, 0x10, 0x00, + 0x04, 0x06, 0x64, 0x4b, 0x20, 0x80, 0xbc, 0x7c, 0xb3, 0xfa, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, 0xaf, 0x1f, 0xfe, + 0x47, 0x44, 0x00, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x93, 0x03, 0xbc, 0xfd, + 0x03, 0x04, 0x00, 0x3c, 0xfc, 0xe4, 0xeb, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x08, 0x60, 0x55, 0x0d, 0x00, 0x00, 0x12, 0xbc, 0x1f, 0x03, 0x0c, 0x36, + 0x87, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x3d, 0x00, 0x00, + 0xc0, 0x00, 0x92, 0x12, 0x00, 0x60, 0x08, 0x00, 0x64, 0x82, 0x40, 0x20, + 0x00, 0x3c, 0x23, 0x4f, 0x24, 0x37, 0xec, 0x90, 0x48, 0x12, 0x40, 0x60, + 0x47, 0x10, 0x35, 0x7c, 0x00, 0x48, 0xe6, 0xbf, 0x7f, 0x8b, 0x10, 0x00, + 0xc3, 0xbf, 0x7f, 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x0d, 0x00, 0x00, + 0x03, 0xf0, 0x82, 0x24, 0x00, 0x72, 0x40, 0x00, 0x75, 0x0d, 0x00, 0x00, + 0x34, 0x87, 0x82, 0x00, 0x3c, 0x23, 0x1b, 0x08, 0xe6, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x93, 0x1a, 0x40, 0x20, 0x1a, 0x00, 0x60, 0x03, 0x10, 0x80, + 0x01, 0x00, 0x3c, 0x00, 0x80, 0x8e, 0x40, 0x00, 0x64, 0x7e, 0x40, 0x60, + 0xfd, 0xff, 0xff, 0xb8, 0x7c, 0x87, 0x2e, 0x00, 0x60, 0x82, 0x11, 0xc0, + 0xfd, 0xff, 0xff, 0x3c, 0xfc, 0x85, 0x1e, 0x40, 0x60, 0xa3, 0x0f, 0x90, + 0xfc, 0xf3, 0x63, 0x8f, 0x23, 0x80, 0x24, 0x00, 0x72, 0x80, 0x00, 0x64, + 0x4b, 0x00, 0x60, 0x00, 0x00, 0x64, 0x88, 0x00, 0xc8, 0xfd, 0xff, 0xff, + 0xf8, 0x7c, 0x87, 0x3a, 0x00, 0x60, 0x87, 0x11, 0x80, 0x01, 0xff, 0x03, + 0x4a, 0x00, 0x00, 0x01, 0xff, 0x03, 0x80, 0x80, 0x86, 0x22, 0x40, 0x60, + 0x13, 0x00, 0x80, 0x4f, 0x28, 0x38, 0x00, 0x00, 0x64, 0x3f, 0xa1, 0x3b, + 0xc4, 0x3c, 0x3a, 0x02, 0x0c, 0x80, 0x1f, 0x0c, 0xe6, 0x00, 0x00, 0x64, + 0xfb, 0xbf, 0x7f, 0x00, 0x04, 0x92, 0x1e, 0x00, 0x60, 0x11, 0x10, 0x00, + 0x0c, 0x0a, 0x52, 0xcf, 0x04, 0xd0, 0x11, 0x10, 0x00, 0x44, 0x0d, 0x7e, + 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x03, 0x10, 0x0b, 0x0a, 0x30, 0xe3, + 0x93, 0x04, 0xd0, 0x33, 0x88, 0xb1, 0x00, 0x3c, 0x23, 0x00, 0x04, 0x92, + 0x46, 0x0c, 0x00, 0x26, 0x00, 0x60, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, + 0x4c, 0x0c, 0x2b, 0x0a, 0xe0, 0x00, 0x93, 0x4c, 0xfb, 0x11, 0x10, 0x00, + 0x44, 0x11, 0x7e, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x03, 0x10, 0x0b, + 0x0a, 0x30, 0xe3, 0x4c, 0x10, 0x2b, 0x92, 0xc0, 0x01, 0x07, 0x4d, 0xfb, + 0x33, 0x84, 0xb1, 0x00, 0x3c, 0x23, 0x13, 0x00, 0xe0, 0x01, 0x12, 0x00, + 0x10, 0x00, 0x64, 0x0f, 0x01, 0x84, 0xa0, 0x03, 0xe7, 0xbc, 0x7c, 0xb3, + 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, 0xff, 0x28, 0x3a, 0x8f, 0x0c, 0x00, + 0xcb, 0x88, 0xf9, 0x8f, 0x23, 0x80, 0xc0, 0x43, 0x24, 0xbc, 0x08, 0x27, + 0x03, 0xbc, 0xf2, 0xd3, 0x40, 0xd0, 0xa3, 0x0f, 0x90, 0xbf, 0x23, 0x80, + 0xc0, 0x3f, 0xa4, 0xa3, 0x03, 0x90, 0x8f, 0x23, 0x80, 0xcf, 0x04, 0xda, + 0xa3, 0x0f, 0x90, 0x87, 0x23, 0x80, 0x48, 0x00, 0xa2, 0xa3, 0x0b, 0x90, + 0xbf, 0x23, 0x80, 0x03, 0xbd, 0x94, 0xa0, 0x03, 0xe7, 0x03, 0x81, 0x84, + 0xa3, 0x03, 0x90, 0x8f, 0x23, 0x80, 0xf0, 0xb4, 0x26, 0xf2, 0xff, 0x7f, + 0x93, 0x23, 0x80, 0xc8, 0x04, 0x64, 0x34, 0x15, 0x26, 0x16, 0x00, 0x40, + 0x87, 0x23, 0x80, 0x78, 0x94, 0x26, 0x1a, 0x40, 0x60, 0x08, 0x02, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x8b, 0x82, 0x00, 0x00, 0x64, 0x17, 0x04, 0xe0, + 0x01, 0x12, 0x00, 0x00, 0x4b, 0x55, 0xf7, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, + 0x01, 0x12, 0x00, 0x18, 0x00, 0x64, 0x93, 0x01, 0x84, 0xbf, 0x0c, 0x00, + 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, 0xbc, 0x7c, 0xb3, 0x93, 0x8d, 0x94, + 0xcb, 0x8b, 0xf9, 0x0f, 0x29, 0x3a, 0xc0, 0x40, 0x24, 0x90, 0x08, 0x27, + 0x0f, 0x90, 0xf2, 0xfd, 0x0f, 0x00, 0xc2, 0xbc, 0x1f, 0x0f, 0x04, 0xda, + 0x04, 0x04, 0xa2, 0x83, 0x85, 0x94, 0xbf, 0x81, 0x84, 0xf0, 0xb7, 0x26, + 0xfa, 0xff, 0x7f, 0xf4, 0x17, 0x26, 0xc8, 0x04, 0x64, 0x12, 0x00, 0x40, + 0xf8, 0x97, 0x26, 0x12, 0x40, 0x60, 0x08, 0x02, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x8b, 0x82, 0x0f, 0x0c, 0xe6, 0x03, 0x00, 0x80, 0x4b, 0x00, 0x50, + 0x07, 0x10, 0x35, 0x03, 0x24, 0x37, 0x67, 0x1d, 0xfe, 0x13, 0x00, 0xe0, + 0x03, 0x00, 0x80, 0xa0, 0x03, 0xe7, 0x48, 0x88, 0x1d, 0x07, 0x10, 0x35, + 0x03, 0x24, 0x37, 0xd8, 0xf7, 0x63, 0x17, 0x04, 0xe0, 0x13, 0x10, 0xe6, + 0x47, 0x10, 0x00, 0x58, 0x14, 0x2b, 0x86, 0x41, 0x20, 0x1e, 0x40, 0x20, + 0xa3, 0x0b, 0x90, 0xf4, 0xfb, 0x63, 0x8b, 0x23, 0x80, 0x00, 0x18, 0x94, + 0x80, 0x00, 0x92, 0x13, 0x00, 0xfd, 0x80, 0x80, 0x86, 0x04, 0x29, 0x2b, + 0x0f, 0x40, 0xfd, 0xd0, 0x24, 0x2b, 0x0b, 0x44, 0xfb, 0x8b, 0x50, 0xfb, + 0xc0, 0x99, 0x1d, 0x13, 0x14, 0xe6, 0x2f, 0x1f, 0xfe, 0x0f, 0x28, 0xe5, + 0x1a, 0x40, 0x20, 0x20, 0x00, 0xc8, 0x03, 0x00, 0x80, 0x00, 0x30, 0x26, + 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x8b, 0x82, + 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x04, 0x40, 0x55, 0x0f, 0x10, 0x35, + 0x4b, 0x0c, 0x32, 0xc0, 0x88, 0x3a, 0x66, 0x40, 0x60, 0x48, 0x02, 0x64, + 0xdb, 0xbf, 0x7f, 0x80, 0x9d, 0x1d, 0x08, 0x02, 0xe5, 0xec, 0xf3, 0x63, + 0x06, 0x0a, 0xc0, 0x40, 0x80, 0x90, 0x22, 0x40, 0x60, 0x01, 0x00, 0x04, + 0x00, 0x20, 0x8e, 0x16, 0x00, 0x60, 0x00, 0x74, 0x98, 0x08, 0x08, 0x94, + 0x80, 0x9d, 0x1d, 0xd8, 0xf3, 0x63, 0x57, 0x05, 0x00, 0xdf, 0x01, 0x01, + 0x93, 0x01, 0x80, 0x3f, 0xa1, 0x3b, 0xfc, 0x17, 0x3a, 0xba, 0xbf, 0x7f, + 0xc0, 0x2b, 0x64, 0x0b, 0x2c, 0xe5, 0x57, 0x17, 0xfe, 0x1c, 0x20, 0x64, + 0x0d, 0x00, 0x00, 0x20, 0x59, 0x64, 0xdb, 0xbf, 0x7f, 0x0b, 0x28, 0xe5, + 0x1a, 0x40, 0x20, 0x20, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x40, 0x30, 0x26, + 0x16, 0x00, 0x60, 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, + 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0x53, 0x10, 0x35, + 0x8f, 0x0c, 0x32, 0x00, 0x8d, 0x3a, 0x0e, 0x40, 0x60, 0x44, 0x02, 0x64, + 0xdb, 0xbf, 0x7f, 0x04, 0x20, 0x64, 0xc0, 0xeb, 0x63, 0x0d, 0x00, 0x00, + 0x84, 0x59, 0x4e, 0x40, 0x00, 0x84, 0xca, 0xbf, 0x5f, 0x1c, 0xb0, 0x26, + 0x6a, 0x40, 0x60, 0x00, 0x10, 0x94, 0x0a, 0x40, 0x30, 0x83, 0x01, 0x52, + 0x0b, 0x2c, 0xe5, 0xd7, 0x1c, 0xfe, 0x80, 0x9d, 0x1d, 0x08, 0x02, 0xe5, + 0xc8, 0xe7, 0x63, 0x0e, 0x0a, 0xc0, 0xc0, 0x80, 0x90, 0x22, 0x40, 0x60, + 0x01, 0x00, 0x02, 0x00, 0x20, 0x8e, 0x16, 0x00, 0x60, 0x10, 0x10, 0x94, + 0x0a, 0x41, 0x30, 0x80, 0x9d, 0x1d, 0xf4, 0xe3, 0x63, 0x57, 0x05, 0x00, + 0xdf, 0x01, 0x01, 0xbf, 0x01, 0x80, 0xcb, 0xa3, 0x3b, 0xbc, 0x14, 0x3a, + 0xba, 0xbf, 0x7f, 0x5f, 0xbf, 0x7f, 0x1c, 0x28, 0x64, 0x54, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x20, 0x59, 0x64, 0xdf, 0xbf, 0x7f, 0x2c, 0x08, 0xc8, + 0x4c, 0x10, 0x5a, 0x8b, 0x50, 0x00, 0x10, 0x0c, 0x7a, 0xf3, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x01, 0x12, 0x00, 0x08, 0x00, 0x64, 0x8f, 0x80, 0x81, + 0x46, 0xbc, 0x00, 0x63, 0x80, 0xd2, 0xd0, 0x40, 0x98, 0x83, 0x90, 0x91, + 0x8f, 0x80, 0x81, 0xd0, 0x30, 0x94, 0x0c, 0x21, 0x98, 0x83, 0x8c, 0x91, + 0x4e, 0xbc, 0x17, 0x93, 0x80, 0x81, 0x06, 0xfd, 0x1f, 0x43, 0x4c, 0xfb, + 0x83, 0x80, 0x91, 0x93, 0x80, 0x81, 0x0c, 0x81, 0x98, 0x83, 0x8c, 0x91, + 0x87, 0x80, 0x81, 0x40, 0x40, 0x98, 0x83, 0x80, 0x91, 0x93, 0x80, 0x81, + 0x0c, 0x01, 0x9a, 0x83, 0x8c, 0x91, 0x87, 0x80, 0x81, 0x7c, 0x30, 0x26, + 0xfa, 0xbf, 0x7f, 0x83, 0xa0, 0x81, 0x00, 0x3c, 0x23, 0x01, 0x12, 0x00, + 0x0c, 0x00, 0x64, 0xd3, 0x80, 0x81, 0x46, 0xbc, 0x00, 0x63, 0x80, 0xd2, + 0x10, 0x41, 0x98, 0xc3, 0x90, 0x91, 0xd3, 0x90, 0x81, 0x03, 0x49, 0xd0, + 0xd3, 0x90, 0x91, 0xcb, 0x80, 0x81, 0x90, 0x30, 0x94, 0x08, 0x11, 0x98, + 0xc3, 0x88, 0x91, 0x4a, 0xbc, 0x17, 0xd3, 0x80, 0x81, 0x06, 0xfd, 0x1f, + 0x43, 0x48, 0xfb, 0xc3, 0x80, 0x91, 0xd3, 0x80, 0x81, 0x08, 0x81, 0x98, + 0xc3, 0x88, 0x91, 0xc7, 0x80, 0x81, 0x40, 0x40, 0x98, 0xc3, 0x80, 0x91, + 0xd3, 0x80, 0x81, 0x08, 0x01, 0x9a, 0xc3, 0x88, 0x91, 0xc7, 0x80, 0x81, + 0x7c, 0x30, 0x26, 0xfa, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x3b, 0x88, 0xe5, + 0x22, 0x40, 0x20, 0x5e, 0x40, 0x20, 0xab, 0x23, 0x00, 0xc0, 0x89, 0x1d, + 0xb3, 0x4f, 0x90, 0xa3, 0x4b, 0x90, 0x03, 0xc2, 0x60, 0x87, 0x43, 0x81, + 0x8b, 0x23, 0x00, 0x03, 0x84, 0xf6, 0x87, 0x63, 0x80, 0x84, 0x02, 0x78, + 0xc2, 0x41, 0x20, 0x97, 0xca, 0xf2, 0xdf, 0xc1, 0x60, 0xa6, 0x42, 0x20, + 0x58, 0x81, 0x1d, 0x8b, 0x63, 0x80, 0x8f, 0x73, 0x80, 0x84, 0xc3, 0x73, + 0x58, 0x0c, 0xc8, 0xdc, 0x14, 0x3a, 0x26, 0x00, 0x60, 0x9b, 0x23, 0x00, + 0xbf, 0xe9, 0xf2, 0x10, 0x0c, 0x64, 0xcf, 0x8f, 0xf2, 0x20, 0x0c, 0xca, + 0x84, 0x12, 0x78, 0x83, 0x96, 0xf2, 0x1b, 0xe4, 0xf2, 0x8b, 0x23, 0x00, + 0xac, 0xa8, 0x48, 0x1e, 0x40, 0x40, 0x87, 0x23, 0x00, 0x12, 0x42, 0x20, + 0xbf, 0xc6, 0xf2, 0x18, 0x3c, 0xca, 0x8c, 0xfe, 0x5c, 0x04, 0x0d, 0x78, + 0x82, 0x41, 0x20, 0x3f, 0x8c, 0xe5, 0x3b, 0x88, 0xe5, 0x22, 0x40, 0x20, + 0x5e, 0x40, 0x20, 0xab, 0x23, 0x00, 0xc0, 0x89, 0x1d, 0xb3, 0x4f, 0x90, + 0xa3, 0x4b, 0x90, 0x57, 0xc1, 0x60, 0x87, 0x43, 0x81, 0x8b, 0x23, 0x00, + 0x03, 0x84, 0xf6, 0x87, 0x63, 0x80, 0x84, 0x02, 0x78, 0xc2, 0x41, 0x20, + 0x97, 0xca, 0xf2, 0x33, 0xc1, 0x60, 0xa6, 0x42, 0x20, 0x58, 0x81, 0x1d, + 0x8b, 0x63, 0x80, 0x8f, 0x73, 0x80, 0x84, 0xc3, 0x73, 0x58, 0x0c, 0xc8, + 0xdc, 0x14, 0x3a, 0x26, 0x00, 0x60, 0x9b, 0x23, 0x00, 0xbf, 0xe9, 0xf2, + 0x10, 0x0c, 0x64, 0xcf, 0x8f, 0xf2, 0x20, 0x0c, 0xca, 0x84, 0x12, 0x78, + 0x83, 0x96, 0xf2, 0x1b, 0xe4, 0xf2, 0x8b, 0x23, 0x00, 0xac, 0xa8, 0x48, + 0x1e, 0x40, 0x40, 0x87, 0x23, 0x00, 0x12, 0x42, 0x20, 0xbf, 0xc6, 0xf2, + 0x18, 0x3c, 0xca, 0x8c, 0xfe, 0x5c, 0x04, 0x0d, 0x78, 0x82, 0x41, 0x20, + 0x3f, 0x8c, 0xe5, 0x1f, 0x88, 0xe5, 0x2e, 0x40, 0x20, 0xda, 0x42, 0x20, + 0x82, 0x40, 0x20, 0x4a, 0x00, 0xe0, 0x84, 0x00, 0x66, 0x12, 0x00, 0x60, + 0x80, 0x01, 0xe4, 0x83, 0xed, 0xf2, 0x1f, 0x8c, 0xe5, 0xa8, 0x90, 0x66, + 0x5f, 0x04, 0x00, 0x12, 0x40, 0x60, 0x84, 0x09, 0x78, 0xc6, 0x41, 0x20, + 0xd7, 0xbf, 0x7f, 0x4e, 0x04, 0xe0, 0xdc, 0x10, 0x66, 0x0a, 0x00, 0x60, + 0x5f, 0x08, 0x00, 0xc6, 0x01, 0xe0, 0x6c, 0x94, 0x66, 0x0a, 0x40, 0x60, + 0xdf, 0x05, 0x00, 0x88, 0x02, 0x74, 0xfe, 0x41, 0x20, 0xd4, 0x07, 0x5e, + 0x53, 0xc1, 0x01, 0x0c, 0x05, 0x3b, 0x1e, 0x00, 0x60, 0x70, 0x95, 0x66, + 0x6e, 0x40, 0x40, 0xde, 0x43, 0x20, 0x28, 0x00, 0x64, 0x94, 0x02, 0x64, + 0x4b, 0x00, 0x60, 0xd2, 0x05, 0xe0, 0x57, 0xc1, 0x01, 0xcf, 0x94, 0xf2, + 0x1f, 0xc1, 0x01, 0xc8, 0x85, 0x3b, 0x0a, 0x40, 0x60, 0xcc, 0x48, 0x24, + 0xde, 0x43, 0x20, 0xb7, 0xbf, 0x7f, 0xde, 0x05, 0xe0, 0x53, 0xc0, 0x01, + 0xab, 0x92, 0xf2, 0xc7, 0xc1, 0x01, 0x48, 0x04, 0x3b, 0x0a, 0x00, 0x60, + 0xa8, 0x56, 0x24, 0xde, 0x43, 0x20, 0xfe, 0x41, 0x20, 0xc4, 0x07, 0x5e, + 0x4b, 0xc0, 0x01, 0x8c, 0x04, 0x3b, 0xd2, 0xbf, 0x7f, 0xd2, 0x01, 0xe0, + 0x3c, 0x00, 0x64, 0x24, 0xb5, 0x66, 0x0e, 0x40, 0x60, 0xdf, 0x05, 0x00, + 0x7c, 0x00, 0x64, 0xd6, 0x01, 0xe0, 0x64, 0x35, 0x66, 0x0e, 0x00, 0x60, + 0xdf, 0x05, 0x00, 0xff, 0x07, 0x00, 0xca, 0x01, 0xe0, 0x98, 0xb0, 0x66, + 0x52, 0x43, 0x60, 0x98, 0x30, 0x3b, 0x6a, 0x00, 0x60, 0x80, 0xac, 0x66, + 0x8e, 0x42, 0x60, 0x80, 0x2c, 0x3b, 0x36, 0x00, 0x60, 0x88, 0xa4, 0x66, + 0xaa, 0x40, 0x60, 0x80, 0xa8, 0x66, 0x3e, 0x40, 0x40, 0x0c, 0x4c, 0x64, + 0x84, 0x28, 0x66, 0xc4, 0x04, 0x70, 0x07, 0x00, 0x80, 0x17, 0x10, 0x00, + 0xa3, 0x0f, 0x90, 0x0c, 0x02, 0x64, 0x7f, 0x02, 0x60, 0x88, 0x30, 0x66, + 0x7a, 0x01, 0x60, 0x88, 0xb0, 0x3b, 0xae, 0x42, 0x60, 0x90, 0x2c, 0x66, + 0xba, 0x02, 0x60, 0x83, 0x09, 0xb0, 0x16, 0x40, 0x20, 0xf3, 0x02, 0x60, + 0x98, 0x38, 0x66, 0xe2, 0x00, 0x60, 0x98, 0xb8, 0x3b, 0x16, 0x40, 0x60, + 0xa0, 0x30, 0x66, 0x96, 0x01, 0x60, 0x80, 0xb8, 0x66, 0x9f, 0xbf, 0x7f, + 0xb8, 0xb8, 0x66, 0x5a, 0x42, 0x60, 0x80, 0x3c, 0x66, 0x02, 0x02, 0x60, + 0xa8, 0xb8, 0x66, 0xc2, 0xff, 0x5f, 0xc8, 0x03, 0x86, 0x08, 0x4c, 0x64, + 0xda, 0x01, 0x60, 0xa3, 0x0b, 0x90, 0x17, 0x10, 0x00, 0x88, 0x02, 0x64, + 0x07, 0x00, 0x80, 0x87, 0x00, 0x60, 0x27, 0x00, 0x80, 0x20, 0x4c, 0x64, + 0x88, 0x02, 0x74, 0x17, 0x10, 0x00, 0x46, 0x02, 0xe0, 0xa3, 0x23, 0x90, + 0x82, 0x41, 0x20, 0xb4, 0x0b, 0x64, 0xe4, 0xcb, 0x63, 0x83, 0x81, 0xf2, + 0x03, 0x34, 0xb0, 0x33, 0x04, 0x00, 0x88, 0x02, 0x74, 0x02, 0x43, 0x20, + 0x46, 0x06, 0xe0, 0xa3, 0x23, 0x90, 0xc4, 0xcb, 0x63, 0x0f, 0x83, 0xf2, + 0xc3, 0x34, 0xb0, 0xdb, 0x04, 0x00, 0x82, 0x41, 0x20, 0x88, 0x02, 0x74, + 0x46, 0x0a, 0xe0, 0xa3, 0x23, 0x90, 0xe4, 0xc7, 0x63, 0x87, 0x81, 0xf2, + 0x43, 0x34, 0xb0, 0x5b, 0x04, 0x00, 0x0c, 0x00, 0x64, 0x46, 0x0e, 0xe0, + 0xa3, 0x23, 0x90, 0x88, 0x02, 0x64, 0x82, 0x41, 0x20, 0xc0, 0xc7, 0x63, + 0x33, 0x01, 0x60, 0x07, 0x00, 0x80, 0xcb, 0x68, 0xfb, 0x17, 0x10, 0x00, + 0x40, 0x80, 0x86, 0x42, 0xc8, 0xaa, 0x86, 0x41, 0x20, 0x5c, 0x08, 0x72, + 0x0c, 0x04, 0x5e, 0xc4, 0x80, 0x66, 0x12, 0x40, 0x60, 0xdf, 0x05, 0x00, + 0x42, 0x41, 0x20, 0x9b, 0xbd, 0x7f, 0x84, 0x0d, 0x78, 0xe7, 0xbf, 0x7f, + 0x44, 0x3c, 0x78, 0x0e, 0x41, 0x20, 0x5a, 0x40, 0x20, 0xc0, 0xcf, 0xc9, + 0x3c, 0x04, 0x5e, 0xd3, 0x44, 0x00, 0xc4, 0x03, 0x66, 0xe6, 0xbf, 0x7f, + 0x00, 0x08, 0x64, 0xce, 0x40, 0x20, 0xd2, 0x40, 0x20, 0x10, 0x10, 0xca, + 0x84, 0x01, 0x78, 0xbb, 0xbf, 0x7f, 0x23, 0x00, 0x80, 0x17, 0x10, 0x00, + 0x33, 0x16, 0x00, 0x24, 0x4c, 0x64, 0x04, 0x06, 0x5e, 0xa3, 0x27, 0x90, + 0x08, 0x04, 0x64, 0x82, 0x41, 0x20, 0x8c, 0x00, 0x64, 0xe0, 0xbb, 0x63, + 0x8b, 0x81, 0xf2, 0x40, 0x0b, 0x64, 0x83, 0x00, 0xb0, 0x2c, 0xa3, 0x48, + 0x9b, 0x04, 0x00, 0xd2, 0xff, 0x7f, 0x06, 0x03, 0xe0, 0xa3, 0x27, 0x90, + 0x8c, 0x00, 0x64, 0xb3, 0x00, 0x60, 0xc8, 0x83, 0x86, 0x30, 0x4c, 0x64, + 0x2a, 0x40, 0x60, 0x07, 0x00, 0x80, 0x17, 0x10, 0x00, 0x7c, 0x7c, 0xbb, + 0x12, 0x00, 0x60, 0x50, 0x0b, 0x64, 0x84, 0x11, 0x78, 0x44, 0x00, 0x25, + 0xa3, 0x33, 0x90, 0x03, 0xbf, 0x7f, 0x27, 0x10, 0x80, 0x17, 0x20, 0x00, + 0x23, 0x00, 0x80, 0x7c, 0xfe, 0xbb, 0x16, 0x40, 0x60, 0x40, 0x0b, 0x75, + 0x84, 0x05, 0x78, 0x20, 0x60, 0x49, 0x24, 0x24, 0x6f, 0xa3, 0x33, 0x90, + 0x88, 0x02, 0x64, 0x06, 0x42, 0x20, 0x82, 0x41, 0x20, 0xfc, 0xbb, 0x63, + 0x9b, 0x81, 0xf2, 0xfb, 0xbe, 0x7f, 0xa3, 0x0b, 0x90, 0x17, 0x20, 0x00, + 0x88, 0x02, 0x64, 0x07, 0x00, 0x80, 0xe3, 0xbf, 0x7f, 0xc8, 0x83, 0x86, + 0x10, 0x4c, 0x64, 0x84, 0x2c, 0x66, 0x26, 0x40, 0x60, 0x17, 0x10, 0x00, + 0x07, 0x00, 0x80, 0x02, 0x41, 0x20, 0x0a, 0x00, 0x40, 0x03, 0x85, 0x00, + 0xa3, 0x03, 0x90, 0x08, 0x04, 0x64, 0x83, 0xbe, 0x7f, 0x17, 0x20, 0x00, + 0x07, 0x00, 0x80, 0x3e, 0x41, 0x20, 0x0a, 0x00, 0x40, 0x3f, 0x85, 0x00, + 0xa3, 0x3f, 0x90, 0x08, 0x04, 0x64, 0x93, 0xbf, 0x7f, 0x0c, 0x4c, 0x64, + 0x06, 0x00, 0xc0, 0x17, 0x10, 0x00, 0xa3, 0x0f, 0x90, 0x0c, 0x01, 0x64, + 0xc7, 0xbf, 0x7f, 0x3c, 0x4c, 0x64, 0x06, 0x00, 0xe0, 0x17, 0x10, 0x00, + 0xa3, 0x3f, 0x90, 0xff, 0xbe, 0x7f, 0x16, 0x40, 0x20, 0x60, 0x21, 0x5a, + 0x27, 0x10, 0x80, 0xb0, 0xe0, 0xc9, 0x10, 0x4c, 0x64, 0x44, 0x06, 0x5e, + 0xa3, 0x13, 0x90, 0x82, 0x41, 0x20, 0x8c, 0x00, 0x64, 0x08, 0x04, 0x64, + 0xcc, 0xa7, 0x63, 0x9b, 0x81, 0xf2, 0x23, 0x46, 0x00, 0xdb, 0xbf, 0x7f, + 0x0b, 0x00, 0x80, 0x17, 0x10, 0x00, 0x83, 0x09, 0xb0, 0x9b, 0x05, 0x00, + 0x1f, 0xbe, 0x7f, 0x03, 0x00, 0xe0, 0x87, 0x43, 0x80, 0x8b, 0x93, 0x00, + 0xf4, 0xb7, 0x63, 0x07, 0x04, 0xe0, 0x00, 0x3c, 0x23, 0x1f, 0x09, 0xe6, + 0x05, 0x00, 0x00, 0x00, 0xe1, 0x55, 0x38, 0x00, 0xc8, 0x00, 0x40, 0x64, + 0x05, 0x00, 0x00, 0x27, 0xfc, 0xf8, 0x18, 0x00, 0xca, 0x80, 0x01, 0xe4, + 0x9b, 0x05, 0x00, 0x05, 0x00, 0x00, 0x18, 0xe2, 0x55, 0x40, 0x56, 0x64, + 0xa3, 0x03, 0x90, 0x83, 0x83, 0x00, 0xb3, 0x1b, 0x90, 0x9b, 0x05, 0x00, + 0xe4, 0xfb, 0x63, 0x87, 0x83, 0x82, 0x8f, 0x83, 0x00, 0x8b, 0x13, 0x05, + 0xc3, 0x80, 0xf2, 0x05, 0x00, 0x00, 0x44, 0xd8, 0x81, 0xc8, 0xb3, 0x63, + 0x83, 0x83, 0x00, 0xff, 0xf2, 0x7f, 0x1f, 0x0d, 0xe6, 0x23, 0x00, 0xe0, + 0x04, 0x58, 0x64, 0xb3, 0x03, 0x90, 0xa3, 0x07, 0x90, 0x83, 0x43, 0x90, + 0xfc, 0xf7, 0x63, 0x11, 0x10, 0x00, 0x00, 0x21, 0x55, 0x3c, 0x7c, 0xb3, + 0x12, 0x00, 0x60, 0x8b, 0x43, 0x80, 0x11, 0x10, 0x00, 0x24, 0x48, 0x80, + 0x27, 0x04, 0xe0, 0x03, 0x01, 0xe0, 0x87, 0x43, 0x82, 0x8b, 0x93, 0x04, + 0x83, 0x23, 0x00, 0xf0, 0xab, 0x63, 0x83, 0x23, 0x00, 0xa7, 0xf2, 0x7f, + 0x07, 0x05, 0xe0, 0x01, 0x10, 0x00, 0x04, 0x00, 0x64, 0xfd, 0x1f, 0x00, + 0xc8, 0xff, 0x64, 0x42, 0xfc, 0x00, 0x8e, 0xfc, 0x00, 0x06, 0x70, 0x20, + 0xcb, 0x40, 0x01, 0x14, 0x0c, 0x72, 0x08, 0x00, 0x64, 0x80, 0x22, 0x64, + 0x67, 0x36, 0x60, 0x2f, 0x3a, 0xe5, 0x01, 0x12, 0x00, 0x04, 0x40, 0x64, + 0x43, 0x00, 0x80, 0x3c, 0x7c, 0xb3, 0xfa, 0xbf, 0x7f, 0x63, 0x00, 0x80, + 0x83, 0xa3, 0x00, 0x01, 0x12, 0x00, 0x04, 0x80, 0x64, 0x09, 0x00, 0x00, + 0x24, 0xed, 0x64, 0x23, 0x32, 0x34, 0x0b, 0x06, 0x00, 0xd3, 0xf7, 0x7f, + 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, 0xc0, 0x91, 0xb4, 0xbe, 0x41, 0x60, + 0x8b, 0xa3, 0x00, 0x6b, 0x89, 0xf6, 0x84, 0x02, 0x66, 0xae, 0x01, 0x40, + 0xab, 0x46, 0x00, 0x08, 0x00, 0x74, 0x40, 0xa9, 0x1d, 0x4f, 0xf4, 0x7f, + 0x1a, 0x40, 0x20, 0x28, 0x03, 0xc8, 0x0d, 0x00, 0x00, 0x8c, 0x59, 0x4e, + 0xe0, 0x80, 0x84, 0x86, 0x41, 0x60, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x8e, + 0x0d, 0x00, 0x00, 0x2e, 0xbc, 0x1f, 0x10, 0x00, 0x64, 0x2a, 0x00, 0x60, + 0xc0, 0xaa, 0x1d, 0x4c, 0x00, 0x64, 0x08, 0x01, 0x64, 0x0f, 0xf4, 0x7f, + 0x13, 0x10, 0x38, 0x04, 0x51, 0x2b, 0x98, 0xc1, 0x9f, 0x9b, 0x45, 0xfb, + 0x50, 0x00, 0x64, 0xbf, 0x11, 0x3a, 0xc2, 0xbe, 0x0f, 0xc8, 0x07, 0x2b, + 0x2c, 0x38, 0x2b, 0x8e, 0x3e, 0x00, 0xc4, 0x28, 0x2b, 0xbf, 0x6c, 0xfb, + 0xcb, 0x47, 0xfb, 0x84, 0x00, 0xa6, 0x43, 0x06, 0x90, 0xc1, 0x7f, 0x00, + 0xbe, 0xb8, 0x00, 0x41, 0x00, 0x00, 0xe8, 0x83, 0x92, 0x16, 0x40, 0x60, + 0x24, 0x28, 0x72, 0x4a, 0xf8, 0x00, 0x86, 0x50, 0x20, 0x43, 0x06, 0x90, + 0x7f, 0x02, 0x80, 0x10, 0x25, 0x2b, 0xca, 0x47, 0x20, 0x84, 0x08, 0x94, + 0x7f, 0x50, 0xfb, 0x43, 0x3e, 0x90, 0xca, 0xbb, 0x00, 0x88, 0x00, 0x92, + 0x5a, 0x00, 0x60, 0x43, 0x12, 0x50, 0xc3, 0xf4, 0x7f, 0x53, 0x02, 0x80, + 0x23, 0x81, 0xdb, 0x43, 0x12, 0x90, 0x24, 0xb1, 0x26, 0x0e, 0x40, 0x40, + 0x42, 0x42, 0x20, 0xd7, 0x6c, 0x60, 0x01, 0xf0, 0x00, 0xbe, 0x01, 0x00, + 0x01, 0x30, 0x00, 0xc0, 0x03, 0x92, 0x0d, 0x00, 0x00, 0x08, 0x59, 0x64, + 0xb6, 0x00, 0x60, 0x9b, 0x11, 0x38, 0xd0, 0x18, 0xc8, 0x40, 0x00, 0x64, + 0x8b, 0x00, 0xa0, 0x73, 0x00, 0x60, 0xa8, 0x80, 0x92, 0x2a, 0x40, 0x60, + 0x83, 0x4f, 0x90, 0x4c, 0x5c, 0x64, 0xb3, 0x03, 0x90, 0x90, 0x07, 0xe7, + 0xa3, 0x0f, 0x90, 0xe8, 0xd7, 0x63, 0x42, 0x42, 0x20, 0x83, 0x6c, 0x60, + 0xab, 0xbf, 0x7f, 0x98, 0x00, 0x92, 0xa2, 0xbf, 0x7f, 0xb3, 0x03, 0x90, + 0x40, 0x66, 0x64, 0xa3, 0x03, 0x90, 0x90, 0x07, 0xe7, 0x83, 0x4f, 0x90, + 0xfc, 0xd3, 0x63, 0x42, 0x42, 0x20, 0x97, 0x6c, 0x60, 0x7f, 0xbf, 0x7f, + 0x0d, 0x00, 0x00, 0x00, 0x2f, 0x55, 0x2c, 0xc3, 0x73, 0x0d, 0x00, 0x00, + 0xe4, 0x65, 0x80, 0x8e, 0x08, 0xc0, 0xc0, 0x00, 0x90, 0x0e, 0x00, 0x60, + 0x67, 0x12, 0x00, 0xdf, 0x05, 0x00, 0x57, 0x05, 0x00, 0x5c, 0xa1, 0x3a, + 0x32, 0xfe, 0x7f, 0xd3, 0x3d, 0xfe, 0x00, 0x0d, 0xa8, 0xe0, 0xd7, 0x63, + 0x2f, 0x3e, 0xe5, 0x01, 0x40, 0x00, 0xc0, 0x83, 0x92, 0xca, 0xff, 0x7f, + 0x80, 0x00, 0x64, 0x4f, 0xbf, 0x7f, 0x0b, 0x38, 0xe5, 0x09, 0x00, 0x00, + 0x18, 0xeb, 0x64, 0x09, 0x00, 0x00, 0x80, 0xf8, 0x64, 0x83, 0x01, 0x90, + 0x90, 0x01, 0xe7, 0xbc, 0x51, 0xe4, 0x54, 0x00, 0x65, 0x11, 0x10, 0x00, + 0x20, 0x1e, 0x64, 0x11, 0x10, 0x00, 0x24, 0x20, 0x64, 0x0d, 0x00, 0x00, + 0x1c, 0x59, 0x64, 0x01, 0x00, 0xa0, 0x28, 0x00, 0x64, 0x93, 0x5f, 0x60, + 0x8f, 0x48, 0x60, 0x93, 0x11, 0x80, 0xe8, 0xd3, 0xc9, 0x86, 0x3d, 0xea, + 0x90, 0x01, 0xe7, 0x40, 0x00, 0x66, 0x36, 0x00, 0x60, 0x48, 0x85, 0x40, + 0x03, 0x0a, 0x90, 0x43, 0x12, 0x90, 0x11, 0x10, 0x00, 0xe7, 0xe3, 0xf8, + 0xbc, 0x51, 0xe4, 0x92, 0x42, 0x20, 0xc2, 0x41, 0x20, 0xc0, 0xd3, 0x1f, + 0x78, 0xc3, 0xc9, 0x13, 0x57, 0x60, 0xb7, 0xbf, 0x7f, 0x11, 0x10, 0x00, + 0xc7, 0xe3, 0xf8, 0x11, 0x10, 0x00, 0x07, 0xe4, 0xf8, 0x11, 0x10, 0x00, + 0xe7, 0xe3, 0xf8, 0xd7, 0xbf, 0x7f, 0x33, 0x10, 0xe6, 0xe8, 0xcf, 0x63, + 0xc4, 0x00, 0x64, 0x08, 0x71, 0x64, 0x11, 0x10, 0x00, 0x27, 0xe4, 0xf8, + 0x00, 0x01, 0x64, 0xa3, 0x0b, 0x90, 0x83, 0x47, 0x90, 0xb3, 0x07, 0x90, + 0x93, 0x43, 0x90, 0x18, 0x7a, 0x64, 0x1c, 0x7d, 0x64, 0xf0, 0xbf, 0x63, + 0xd0, 0x7d, 0x64, 0x8c, 0x75, 0x64, 0xa3, 0x13, 0x90, 0xb3, 0x0f, 0x90, + 0xdc, 0xbf, 0x63, 0xb3, 0x1b, 0x90, 0xa3, 0x1f, 0x90, 0x0d, 0x00, 0x00, + 0x1c, 0x59, 0x64, 0x09, 0x00, 0x00, 0x18, 0xeb, 0x64, 0xc0, 0xbf, 0x63, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x64, 0xe4, 0xc3, 0x63, 0x11, 0x10, 0x00, + 0x47, 0x81, 0xf8, 0x11, 0x10, 0x00, 0x4f, 0x81, 0xf8, 0x11, 0x10, 0x00, + 0x57, 0x81, 0xf8, 0x11, 0x10, 0x00, 0x5f, 0x81, 0xf8, 0x11, 0x10, 0x00, + 0x00, 0x0a, 0x52, 0x06, 0x5c, 0x00, 0x11, 0x10, 0x00, 0x44, 0x05, 0x7e, + 0x01, 0x01, 0x00, 0x40, 0x00, 0x64, 0xe4, 0xbf, 0x63, 0x49, 0x00, 0x00, + 0x88, 0x44, 0x64, 0xcc, 0x7e, 0x64, 0xb3, 0x0b, 0x90, 0xa3, 0x0f, 0x90, + 0xdc, 0xb7, 0x63, 0xa7, 0x6b, 0x60, 0x01, 0x02, 0x00, 0x00, 0x00, 0x64, + 0xfc, 0xbb, 0x63, 0xc3, 0xe1, 0x51, 0x2b, 0xef, 0x7f, 0x83, 0xe1, 0x56, + 0x23, 0xef, 0x7f, 0x00, 0x9a, 0x64, 0x50, 0x00, 0x64, 0x07, 0xac, 0x02, + 0x8f, 0x21, 0x00, 0x48, 0x00, 0x65, 0xc7, 0x11, 0xb0, 0xcb, 0xc1, 0xa1, + 0xbb, 0x11, 0xb5, 0xc8, 0x01, 0xe5, 0xd3, 0xc5, 0xa1, 0xf3, 0x4d, 0x90, + 0xb3, 0x09, 0xa5, 0x3d, 0x00, 0x00, 0x10, 0x00, 0x64, 0x80, 0x10, 0x64, + 0x11, 0x10, 0x00, 0x47, 0xe1, 0xf8, 0x10, 0x00, 0xca, 0xd0, 0x10, 0x7a, + 0x15, 0xb0, 0x11, 0xfc, 0x05, 0x64, 0xf9, 0x2f, 0xfa, 0xc3, 0xaf, 0x0b, + 0xf9, 0x99, 0xfb, 0x07, 0x0c, 0x19, 0xfd, 0x72, 0x11, 0x4b, 0xb0, 0x02, + 0x21, 0xdf, 0x09, 0x8f, 0x30, 0x0e, 0xf1, 0xf8, 0xee, 0xd3, 0x10, 0x09, + 0x93, 0x7d, 0x94, 0xf5, 0x51, 0x02, 0x3f, 0x01, 0x1a, 0xa3, 0x41, 0x94, + 0x01, 0x7b, 0xf9, 0xc3, 0x3f, 0x13, 0xb3, 0x45, 0x94, 0xf9, 0x22, 0xfb, + 0x07, 0x80, 0x11, 0x83, 0x89, 0x94, 0xf9, 0x2f, 0x17, 0x4b, 0xa8, 0x1c, + 0x93, 0x8d, 0x94, 0x15, 0xeb, 0xf5, 0x8f, 0x24, 0x07, 0xa3, 0x91, 0x94, + 0xf5, 0x53, 0xf8, 0xd3, 0xb4, 0x15, 0xb3, 0xbd, 0x94, 0xf9, 0xdb, 0xf2, + 0x3f, 0xb5, 0x07, 0x83, 0xc1, 0x94, 0xf5, 0x03, 0x04, 0xc3, 0x17, 0x17, + 0x93, 0x3d, 0x95, 0xa3, 0xc9, 0x94, 0x83, 0x11, 0x95, 0xa3, 0x01, 0x95, + 0x93, 0xc5, 0x94, 0xb3, 0xcd, 0x94, 0x44, 0x88, 0x64, 0xfd, 0xfb, 0xfa, + 0x1b, 0x04, 0x1d, 0xa3, 0x07, 0x90, 0xb3, 0x1b, 0x90, 0xf0, 0xa3, 0x63, + 0x4c, 0x8c, 0x64, 0xa3, 0x0f, 0x90, 0xe4, 0xa3, 0x63, 0x09, 0x00, 0x00, + 0x48, 0xeb, 0x64, 0x93, 0x50, 0x16, 0x03, 0xe1, 0x1e, 0x1b, 0xcc, 0x09, + 0xc4, 0x9b, 0x64, 0xa3, 0x07, 0x90, 0xa3, 0x4b, 0x90, 0x93, 0x53, 0x90, + 0x83, 0x43, 0x90, 0xb3, 0x1b, 0x90, 0xd8, 0xa0, 0x64, 0xf0, 0x9f, 0x63, + 0x3d, 0x00, 0x00, 0xcc, 0x31, 0x64, 0xf1, 0xff, 0xff, 0xcb, 0xa0, 0x0c, + 0xe9, 0xff, 0xff, 0x93, 0x38, 0x14, 0xf9, 0xff, 0xff, 0x03, 0xa1, 0x10, + 0xa3, 0x4f, 0x90, 0x93, 0x4b, 0x90, 0x83, 0x53, 0x90, 0xb3, 0x03, 0x90, + 0xa3, 0x1b, 0x90, 0x39, 0x00, 0x00, 0x98, 0x35, 0x64, 0xf0, 0x9b, 0x63, + 0x39, 0x00, 0x00, 0x04, 0xfc, 0x64, 0xf1, 0xff, 0xff, 0x4f, 0x2c, 0x0e, + 0xf9, 0xff, 0xff, 0xcb, 0x08, 0x09, 0xf5, 0xff, 0xff, 0x93, 0x28, 0x16, + 0xc0, 0xa5, 0x64, 0xa3, 0x03, 0x90, 0xa3, 0x47, 0x90, 0x93, 0x4f, 0x90, + 0x83, 0x4b, 0x90, 0xb3, 0x13, 0x90, 0xf4, 0x97, 0x63, 0xf1, 0xff, 0xff, + 0x87, 0x1d, 0x14, 0xf5, 0xff, 0xff, 0x4f, 0x3c, 0x1b, 0xf5, 0xff, 0xff, + 0xcb, 0x04, 0x1e, 0xd0, 0xaa, 0x64, 0xa3, 0x13, 0x90, 0xa3, 0x5b, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x4f, 0x90, 0xb3, 0x0b, 0x90, 0xc0, 0x97, 0x63, + 0x3d, 0x00, 0x00, 0x80, 0x3c, 0x64, 0xf1, 0xff, 0xff, 0x1b, 0x38, 0x0c, + 0xe9, 0xff, 0xff, 0x87, 0x05, 0x0c, 0xf9, 0xff, 0xff, 0x4f, 0x80, 0x12, + 0xc8, 0xaf, 0x64, 0xa3, 0x0b, 0x90, 0xa3, 0x43, 0x90, 0x93, 0x5b, 0x90, + 0x83, 0x47, 0x90, 0xb3, 0x0f, 0x90, 0xc4, 0x93, 0x63, 0x45, 0x00, 0x00, + 0x10, 0xdc, 0x64, 0xed, 0xff, 0xff, 0x03, 0x85, 0x18, 0xd9, 0xff, 0xff, + 0x1b, 0x10, 0x1a, 0xf9, 0xff, 0xff, 0x87, 0x29, 0x1e, 0xcc, 0xb4, 0x64, + 0xa3, 0x0f, 0x90, 0xa3, 0x53, 0x90, 0x93, 0x43, 0x90, 0x83, 0x5b, 0x90, + 0xb3, 0x07, 0x90, 0xc8, 0x8f, 0x63, 0x3d, 0x00, 0x00, 0x48, 0xb6, 0x64, + 0xf1, 0xff, 0xff, 0x93, 0xa8, 0x08, 0xdd, 0xff, 0xff, 0x03, 0x39, 0x1a, + 0x1b, 0xf4, 0x1c, 0xc4, 0xb9, 0x64, 0xa3, 0x07, 0x90, 0xa3, 0x4b, 0x90, + 0x93, 0x53, 0x90, 0x83, 0x43, 0x90, 0xb3, 0x1b, 0x90, 0xd8, 0xbe, 0x64, + 0xcc, 0x8b, 0x63, 0x21, 0x00, 0x00, 0xcc, 0xd7, 0x64, 0xf5, 0xff, 0xff, + 0xcb, 0xb8, 0x1c, 0xf9, 0xff, 0xff, 0x93, 0xa8, 0x08, 0xf9, 0xff, 0xff, + 0x03, 0xb5, 0x19, 0xa3, 0x4f, 0x90, 0x93, 0x4b, 0x90, 0x83, 0x53, 0x90, + 0xb3, 0x03, 0x90, 0xa3, 0x1b, 0x90, 0x25, 0x00, 0x00, 0x98, 0x37, 0x64, + 0x4f, 0xf8, 0x7f, 0x1d, 0x00, 0x00, 0xc4, 0xf4, 0x64, 0xf9, 0xff, 0xff, + 0x4f, 0x94, 0x03, 0xf9, 0xff, 0xff, 0xcb, 0x20, 0x0b, 0xf9, 0xff, 0xff, + 0x93, 0x3c, 0x1e, 0xc0, 0xc3, 0x64, 0xa3, 0x03, 0x90, 0xa3, 0x47, 0x90, + 0x93, 0x4f, 0x90, 0x83, 0x4b, 0x90, 0xb3, 0x13, 0x90, 0x13, 0xf8, 0x7f, + 0xf5, 0xff, 0xff, 0x87, 0x0d, 0x1a, 0xf1, 0xff, 0xff, 0x4f, 0x84, 0x0b, + 0xcb, 0xdc, 0x19, 0xd0, 0xc8, 0x64, 0xa3, 0x13, 0x90, 0xa3, 0x5b, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x4f, 0x90, 0xb3, 0x0b, 0x90, 0xe3, 0xf7, 0x7f, + 0x1d, 0x00, 0x00, 0x40, 0xfe, 0x64, 0xf9, 0xff, 0xff, 0x1b, 0x30, 0x03, + 0xf1, 0xff, 0xff, 0x87, 0xad, 0x1b, 0x4f, 0xc0, 0x16, 0xc8, 0xcd, 0x64, + 0xa3, 0x0b, 0x90, 0xa3, 0x43, 0x90, 0x93, 0x5b, 0x90, 0x83, 0x47, 0x90, + 0xb3, 0x0f, 0x90, 0xab, 0xf7, 0x7f, 0x25, 0x00, 0x00, 0x50, 0x30, 0x64, + 0xf5, 0xff, 0xff, 0x03, 0x29, 0x1a, 0xed, 0xff, 0xff, 0x1b, 0x28, 0x05, + 0x87, 0xc1, 0x10, 0xcc, 0xd2, 0x64, 0xa3, 0x0f, 0x90, 0xa3, 0x53, 0x90, + 0x93, 0x43, 0x90, 0x83, 0x5b, 0x90, 0xb3, 0x07, 0x90, 0x73, 0xf7, 0x7f, + 0x1d, 0x00, 0x00, 0x48, 0xee, 0x64, 0xf9, 0xff, 0xff, 0x93, 0xac, 0x03, + 0xed, 0xff, 0xff, 0x03, 0x19, 0x1a, 0x1b, 0x54, 0x0e, 0xc4, 0xd7, 0x64, + 0xa3, 0x07, 0x90, 0xa3, 0x4b, 0x90, 0x93, 0x53, 0x90, 0x83, 0x43, 0x90, + 0xb3, 0x1b, 0x90, 0xd8, 0xdc, 0x64, 0x37, 0xf7, 0x7f, 0x35, 0x00, 0x00, + 0x4c, 0x8d, 0x64, 0xf1, 0xff, 0xff, 0xcb, 0x1c, 0x19, 0xf5, 0xff, 0xff, + 0x93, 0x24, 0x14, 0xf9, 0xff, 0xff, 0x03, 0x85, 0x03, 0xa3, 0x4f, 0x90, + 0x93, 0x4b, 0x90, 0x83, 0x53, 0x90, 0xb3, 0x03, 0x90, 0xa3, 0x1b, 0x90, + 0x39, 0x00, 0x00, 0x58, 0x61, 0x64, 0xf7, 0xf6, 0x7f, 0x31, 0x00, 0x00, + 0xc4, 0x6a, 0x64, 0xf5, 0xff, 0xff, 0x4f, 0xa8, 0x01, 0xf5, 0xff, 0xff, + 0xcb, 0xb8, 0x13, 0xf9, 0xff, 0xff, 0x93, 0x18, 0x0a, 0xc0, 0xe1, 0x64, + 0xa3, 0x03, 0x90, 0xa3, 0x47, 0x90, 0x93, 0x4f, 0x90, 0x83, 0x4b, 0x90, + 0xb3, 0x13, 0x90, 0xbb, 0xf6, 0x7f, 0xf1, 0xff, 0xff, 0x87, 0xb9, 0x12, + 0xe9, 0xff, 0xff, 0x4f, 0x34, 0x0f, 0xf9, 0xff, 0xff, 0xcb, 0x94, 0x16, + 0xd0, 0xe6, 0x64, 0xa3, 0x13, 0x90, 0xa3, 0x5b, 0x90, 0x93, 0x47, 0x90, + 0x83, 0x4f, 0x90, 0xb3, 0x0b, 0x90, 0x87, 0xf6, 0x7f, 0x31, 0x00, 0x00, + 0x40, 0xac, 0x64, 0xf1, 0xff, 0xff, 0x1b, 0xb0, 0x1f, 0xed, 0xff, 0xff, + 0x87, 0x8d, 0x03, 0xf9, 0xff, 0xff, 0x4f, 0xa0, 0x1b, 0xc8, 0xeb, 0x64, + 0xa3, 0x0b, 0x90, 0xa3, 0x43, 0x90, 0x93, 0x5b, 0x90, 0x83, 0x47, 0x90, + 0xb3, 0x0f, 0x90, 0x4b, 0xf6, 0x7f, 0x39, 0x00, 0x00, 0x10, 0xa4, 0x64, + 0xf1, 0xff, 0xff, 0x03, 0xb9, 0x10, 0xe1, 0xff, 0xff, 0x1b, 0x98, 0x0b, + 0xcc, 0xf0, 0x64, 0x87, 0xe9, 0x1a, 0xa3, 0x0f, 0x90, 0xa3, 0x53, 0x90, + 0x93, 0x43, 0x90, 0x83, 0x5b, 0x90, 0xb3, 0x07, 0x90, 0x13, 0xf6, 0x7f, + 0x31, 0x00, 0x00, 0x48, 0xb0, 0x64, 0xf1, 0xff, 0xff, 0x93, 0xa0, 0x1f, + 0xe5, 0xff, 0xff, 0x03, 0x11, 0x0b, 0xc4, 0xf5, 0x64, 0x1b, 0xfc, 0x16, + 0xa3, 0x4b, 0x90, 0x93, 0x53, 0x90, 0xa3, 0x07, 0x90, 0x83, 0x43, 0x90, + 0xb3, 0x1b, 0x90, 0xdb, 0xf5, 0x7f, 0x9f, 0x50, 0x60, 0x01, 0x03, 0x00, + 0x00, 0x00, 0x64, 0x3b, 0xf6, 0x7f, 0xbf, 0xf6, 0x7f, 0x01, 0x04, 0x00, + 0x00, 0x00, 0x64, 0x2b, 0xf6, 0x7f, 0xe4, 0x93, 0x62, 0x01, 0x05, 0x00, + 0x00, 0x00, 0x64, 0x1b, 0xf6, 0x7f, 0x00, 0x00, 0x64, 0x07, 0x66, 0x60, + 0x01, 0x06, 0x00, 0x00, 0x00, 0x64, 0x07, 0xf6, 0x7f, 0x00, 0x00, 0x64, + 0x7b, 0x65, 0x60, 0x01, 0x07, 0x00, 0x00, 0x00, 0x64, 0xf3, 0xf5, 0x7f, + 0x01, 0x08, 0x00, 0x00, 0x00, 0x64, 0xe7, 0xf5, 0x7f, 0x00, 0x04, 0x64, + 0x84, 0x01, 0x64, 0x93, 0xea, 0x7f, 0x63, 0xf5, 0x7f, 0xc2, 0x41, 0x20, + 0xc8, 0x8b, 0x63, 0x4b, 0x08, 0xe6, 0x1d, 0x10, 0x00, 0x04, 0x08, 0x55, + 0x48, 0x40, 0x48, 0xa6, 0x00, 0x60, 0x18, 0x10, 0x2b, 0x92, 0x41, 0x20, + 0x01, 0x05, 0x01, 0x00, 0x01, 0x5b, 0x90, 0x07, 0xe7, 0x0d, 0x00, 0x00, + 0x37, 0xab, 0xf8, 0x80, 0x07, 0xe7, 0x07, 0x11, 0x80, 0x0f, 0x21, 0x80, + 0x3f, 0x31, 0x80, 0xa3, 0x43, 0x90, 0x88, 0x03, 0xd8, 0xb3, 0x47, 0x90, + 0x83, 0x8f, 0x90, 0x93, 0xbf, 0x90, 0xa4, 0x03, 0xe4, 0x3c, 0xfc, 0x3c, + 0x0a, 0xbc, 0x07, 0x5a, 0x40, 0x60, 0x0d, 0x00, 0x00, 0x10, 0x77, 0x64, + 0x13, 0x49, 0xf7, 0x90, 0x10, 0xc8, 0x87, 0x23, 0x00, 0x83, 0xa3, 0x00, + 0xc0, 0xd3, 0x1f, 0x0d, 0x00, 0x00, 0x88, 0x59, 0x4e, 0x8e, 0x41, 0x20, + 0x87, 0x33, 0x80, 0x93, 0x43, 0x80, 0xa7, 0x0b, 0xb0, 0x83, 0x53, 0x80, + 0xbf, 0x23, 0x80, 0x01, 0x05, 0x01, 0xc0, 0xfc, 0x7a, 0xd3, 0x04, 0x90, + 0xe3, 0x10, 0x90, 0xf3, 0x00, 0x90, 0x4f, 0x0c, 0xe6, 0x40, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0xbf, 0xbf, 0x7f, 0x01, 0x80, 0x00, + 0x08, 0x00, 0x75, 0x1d, 0x10, 0x00, 0x04, 0x0c, 0x80, 0xcc, 0x3f, 0x64, + 0x1d, 0x10, 0x00, 0xa4, 0x0d, 0x80, 0x70, 0x38, 0xc4, 0x92, 0x40, 0x20, + 0x01, 0x04, 0x01, 0x00, 0x01, 0x5b, 0x06, 0x4c, 0x20, 0x03, 0x05, 0x90, + 0x03, 0x21, 0x80, 0xfd, 0x00, 0xc0, 0x06, 0xbc, 0x1f, 0x40, 0x10, 0xa8, + 0x23, 0x01, 0x90, 0x07, 0x11, 0x80, 0x43, 0x3c, 0xfe, 0x04, 0x40, 0xa8, + 0x13, 0x05, 0x90, 0x03, 0x31, 0x80, 0xc1, 0xff, 0xff, 0x06, 0x00, 0x00, + 0x42, 0x50, 0x20, 0x33, 0x01, 0x90, 0x07, 0x21, 0x80, 0xc1, 0xff, 0xff, + 0x42, 0x00, 0x00, 0x23, 0x01, 0x90, 0x07, 0x11, 0x80, 0x43, 0x48, 0xd0, + 0x13, 0x05, 0x90, 0x8b, 0x80, 0x00, 0x00, 0x3c, 0x23, 0x03, 0x00, 0xe0, + 0x0d, 0x00, 0x00, 0x40, 0x3f, 0x52, 0x00, 0x00, 0x66, 0x3e, 0x00, 0x60, + 0x11, 0x10, 0x00, 0x08, 0x0a, 0x52, 0x0d, 0x00, 0x00, 0xef, 0x87, 0xf8, + 0x11, 0x10, 0x00, 0x10, 0x0a, 0x64, 0x86, 0x5c, 0x00, 0x4e, 0x58, 0x22, + 0x11, 0x10, 0x00, 0x44, 0x0d, 0x7e, 0x3e, 0x01, 0xe0, 0xd8, 0xb3, 0x26, + 0xfa, 0xff, 0x7f, 0x03, 0x09, 0xb0, 0x00, 0x00, 0x64, 0xd8, 0xe7, 0x63, + 0x80, 0x00, 0x64, 0xd0, 0xe7, 0x63, 0x00, 0x01, 0x64, 0xc8, 0xe7, 0x63, + 0x80, 0x01, 0x64, 0x03, 0x04, 0xe0, 0x7f, 0x1c, 0xfe, 0x0d, 0x00, 0x00, + 0x00, 0x59, 0x64, 0x49, 0x00, 0x00, 0x88, 0x44, 0x64, 0x63, 0x00, 0x90, + 0x73, 0x08, 0x90, 0x00, 0x3c, 0x23, 0x40, 0x01, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x83, 0x82, 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, 0x60, 0x00, 0xe7, + 0x8c, 0x75, 0x64, 0xc2, 0x40, 0x20, 0x0a, 0x00, 0xe0, 0xcf, 0x04, 0x00, + 0x84, 0x00, 0x66, 0xf2, 0xbf, 0x7f, 0x3f, 0x48, 0x00, 0x4c, 0x00, 0x64, + 0x98, 0x02, 0x64, 0xc4, 0x83, 0x86, 0x1e, 0x40, 0x60, 0xe1, 0xf5, 0x05, + 0xfc, 0x3c, 0xba, 0xd0, 0xff, 0x5c, 0x0e, 0x00, 0x60, 0x04, 0x91, 0x66, + 0x16, 0x40, 0x60, 0x01, 0x30, 0x30, 0x3c, 0x01, 0x64, 0x73, 0x3c, 0x90, + 0x0f, 0x0c, 0xe6, 0x02, 0x3d, 0x00, 0x53, 0x20, 0x80, 0x08, 0x4c, 0x24, + 0xcc, 0x58, 0x24, 0x03, 0x89, 0xf2, 0x63, 0x00, 0x90, 0xbb, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, + 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, 0x00, 0x3c, 0x23, + 0x0d, 0x00, 0x00, 0x08, 0x5e, 0x55, 0x0d, 0x00, 0x00, 0x0c, 0x5f, 0x55, + 0x63, 0x08, 0x90, 0x73, 0x0c, 0x90, 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, + 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x87, 0x82, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x08, 0x59, 0x52, + 0x8e, 0x04, 0x00, 0x63, 0x0c, 0x90, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, + 0x08, 0x77, 0x75, 0x00, 0x20, 0x64, 0x30, 0x00, 0xca, 0xd0, 0x10, 0x5a, + 0x1c, 0x10, 0x72, 0x63, 0x08, 0x90, 0x00, 0x3c, 0x23, 0x8b, 0x04, 0x00, + 0x40, 0x04, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x00, 0x3c, 0x23, + 0x40, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xe4, 0x43, 0x7e, 0x00, 0x3c, 0x23, + 0x0d, 0x00, 0x00, 0x04, 0x3f, 0x52, 0x40, 0x00, 0x66, 0x16, 0x00, 0x60, + 0x90, 0x04, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x93, 0x82, 0x00, 0x3c, 0x23, + 0x0b, 0x20, 0x80, 0x0f, 0x30, 0x80, 0x80, 0x08, 0x2b, 0x0d, 0x00, 0x00, + 0x33, 0x4c, 0x97, 0x00, 0x3c, 0x23, 0x0b, 0x28, 0xe5, 0x0b, 0x20, 0x80, + 0xc8, 0x09, 0xc8, 0x0f, 0x30, 0x80, 0x10, 0x00, 0x64, 0xda, 0xfc, 0x07, + 0x14, 0x18, 0xc4, 0x97, 0x90, 0xf6, 0x3f, 0x99, 0xf2, 0x13, 0x05, 0x00, + 0xc3, 0x17, 0xb0, 0xfd, 0xff, 0x1f, 0xce, 0x00, 0x18, 0xdc, 0x80, 0xa2, + 0xcf, 0x01, 0x80, 0x1e, 0x30, 0xe0, 0x7c, 0x00, 0x64, 0xd0, 0x9f, 0x40, + 0xec, 0x10, 0x3a, 0x16, 0x00, 0x60, 0xdc, 0x04, 0x2b, 0x2c, 0x9d, 0x3a, + 0x8b, 0x10, 0x00, 0x8e, 0x40, 0x40, 0xc0, 0x01, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x83, 0x82, 0xab, 0x00, 0x60, 0x05, 0x00, 0x00, 0xc0, 0x00, 0xae, + 0x92, 0x40, 0x20, 0x2a, 0x00, 0x40, 0xa3, 0xc9, 0xf2, 0xde, 0x40, 0x20, + 0x30, 0x1c, 0xca, 0x16, 0x01, 0xe0, 0x3f, 0xa1, 0xf2, 0xcf, 0x44, 0x00, + 0x13, 0x05, 0x00, 0xc3, 0x17, 0xb0, 0x4b, 0x00, 0x60, 0x05, 0x00, 0x00, + 0x10, 0x00, 0x64, 0x1e, 0x41, 0x20, 0x50, 0x1c, 0xca, 0x05, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0xe3, 0xd3, 0xf2, 0x26, 0x02, 0xe0, 0x05, 0x00, 0x00, + 0x97, 0x01, 0x00, 0x63, 0xd1, 0xf2, 0x13, 0x45, 0x00, 0x03, 0x26, 0xb0, + 0xfd, 0xff, 0xff, 0xcf, 0x00, 0x00, 0x5a, 0x41, 0x20, 0xca, 0x43, 0x20, + 0x14, 0xcf, 0x73, 0x09, 0x00, 0x00, 0x0c, 0xeb, 0x64, 0xff, 0x00, 0x80, + 0x03, 0x30, 0x80, 0x63, 0x3c, 0x90, 0xd3, 0x00, 0x90, 0xff, 0x00, 0xb5, + 0x20, 0x08, 0xc8, 0x06, 0xfc, 0x07, 0xd3, 0x04, 0x90, 0x0f, 0x2c, 0xe5, + 0xfc, 0x50, 0xe4, 0xfb, 0xbf, 0x7f, 0x0d, 0x00, 0x00, 0x00, 0x3f, 0x52, + 0x00, 0x00, 0x66, 0x16, 0x00, 0x60, 0x88, 0x04, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x8b, 0x82, 0x00, 0x3c, 0x23, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xec, 0x47, 0x7e, 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, + 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, + 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x08, 0x74, 0x52, 0x63, 0x08, 0x90, + 0x00, 0x3c, 0x23, 0x13, 0x00, 0xe0, 0x02, 0x10, 0xc0, 0xa3, 0x07, 0x90, + 0x7f, 0xe4, 0x7f, 0x87, 0x23, 0x80, 0x2c, 0x00, 0x72, 0x8c, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x8f, 0x82, 0x17, 0x04, 0xe0, 0x03, 0x00, 0x80, + 0x0b, 0xa0, 0x3b, 0x63, 0x08, 0x90, 0xf3, 0xbf, 0x7f, 0x13, 0x00, 0xe0, + 0x02, 0x10, 0xc0, 0xa3, 0x07, 0x90, 0x47, 0xe4, 0x7f, 0x87, 0x23, 0x80, + 0x2c, 0x00, 0x72, 0x8c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x8f, 0x82, + 0x17, 0x04, 0xe0, 0x03, 0x00, 0x80, 0x0a, 0x04, 0x00, 0x63, 0x08, 0x90, + 0xf3, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x02, 0x10, 0xc0, 0x5a, 0x40, 0x20, + 0x0f, 0xe4, 0x7f, 0x2c, 0x00, 0x72, 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x87, 0x82, 0x0f, 0x0c, 0xe6, 0x04, 0x00, 0x64, 0xdf, 0xe6, 0x7f, + 0x00, 0x60, 0x31, 0xa3, 0x01, 0x90, 0xef, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, + 0x02, 0x10, 0xc0, 0x5a, 0x40, 0x20, 0xd7, 0xe3, 0x7f, 0x2c, 0x00, 0x72, + 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, 0x0f, 0x0c, 0xe6, + 0x04, 0x00, 0x64, 0xa7, 0xe6, 0x7f, 0x00, 0x40, 0x31, 0xa3, 0x01, 0x90, + 0xef, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, + 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, 0x1a, 0x00, 0x60, 0x80, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x00, 0x00, 0x64, 0x0f, 0x0c, 0xe6, + 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0xef, 0xe3, 0x7f, + 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, + 0x82, 0x11, 0xc0, 0x0b, 0x0c, 0xe6, 0x57, 0xa3, 0x7f, 0x03, 0x10, 0xe6, + 0x0d, 0x00, 0x00, 0x5b, 0x90, 0x45, 0xdc, 0xfb, 0x63, 0x86, 0x09, 0xc0, + 0x40, 0x00, 0x84, 0x52, 0x00, 0x40, 0x0f, 0x00, 0x80, 0xd2, 0xb8, 0x00, + 0x20, 0x81, 0x92, 0x02, 0x48, 0xa0, 0x88, 0x41, 0x6c, 0x3a, 0x40, 0x60, + 0x04, 0x04, 0x64, 0x07, 0xe6, 0x7f, 0x8a, 0x09, 0xc0, 0x80, 0x00, 0x90, + 0x26, 0x00, 0x60, 0x29, 0xff, 0xff, 0x3c, 0x55, 0x64, 0x0c, 0x7c, 0x24, + 0x04, 0x19, 0x64, 0xa5, 0xae, 0x02, 0xc3, 0x00, 0x0a, 0x17, 0x6b, 0x60, + 0xe3, 0x01, 0x90, 0x07, 0x14, 0xe6, 0x03, 0x10, 0xe6, 0x58, 0x80, 0x1d, + 0xf4, 0xf3, 0x63, 0x0d, 0x00, 0x00, 0x84, 0x59, 0x4e, 0x40, 0x00, 0x90, + 0x16, 0x00, 0x60, 0xcb, 0x21, 0x80, 0x84, 0x08, 0x2b, 0xaf, 0xe5, 0x7f, + 0xa3, 0x01, 0x90, 0x07, 0x14, 0xe6, 0x03, 0x10, 0xe6, 0x18, 0x84, 0x1d, + 0xc4, 0xf3, 0x63, 0x0d, 0x00, 0x00, 0x84, 0x59, 0x4e, 0x40, 0x00, 0x90, + 0x26, 0x00, 0x60, 0x8a, 0x19, 0xc0, 0xbf, 0x21, 0x80, 0x8e, 0xbc, 0x1f, + 0xd3, 0x10, 0x00, 0xc4, 0x53, 0x1f, 0x44, 0x08, 0x2b, 0x6f, 0xe5, 0x7f, + 0xe3, 0x01, 0x90, 0x07, 0x14, 0xe6, 0x0b, 0x08, 0xe6, 0x1a, 0x40, 0x20, + 0xc4, 0xef, 0x63, 0x0d, 0x00, 0x00, 0x84, 0x59, 0x4e, 0x40, 0x00, 0x90, + 0x1a, 0x00, 0x60, 0x8f, 0x21, 0x80, 0x8b, 0x31, 0x80, 0xc4, 0x08, 0x2b, + 0x0b, 0x0c, 0xe6, 0x4b, 0xa5, 0x7f, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, + 0x1a, 0x40, 0x20, 0xd0, 0xeb, 0x63, 0x0d, 0x00, 0x00, 0x84, 0x59, 0x4e, + 0x40, 0x00, 0x90, 0x2a, 0x00, 0x60, 0x8a, 0x19, 0xc0, 0xbf, 0x21, 0x80, + 0x8e, 0xbc, 0x1f, 0x8b, 0x31, 0x80, 0xd3, 0x10, 0x00, 0xc4, 0x53, 0x1f, + 0x44, 0x08, 0x2b, 0x0b, 0x0c, 0xe6, 0x07, 0xa5, 0x7f, 0x0f, 0x0c, 0xe6, + 0x0b, 0x28, 0xe5, 0x06, 0x10, 0xc0, 0x1e, 0x40, 0x20, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x8b, 0x82, 0x0f, 0x2c, 0xe5, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, + 0x84, 0x00, 0x65, 0x47, 0xe2, 0x7f, 0x0d, 0x00, 0x00, 0x20, 0x59, 0x64, + 0x0b, 0x02, 0xa0, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, 0xc2, 0x21, 0xe0, + 0xcc, 0x01, 0x64, 0x1c, 0x00, 0x3b, 0x3e, 0x00, 0x40, 0xc2, 0x11, 0xc0, + 0x9f, 0xe1, 0x7f, 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, + 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, + 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, + 0x4c, 0x02, 0x64, 0x0b, 0x0e, 0xa0, 0x8f, 0xbf, 0x7f, 0xc6, 0x19, 0xc0, + 0xda, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, + 0x3b, 0xe4, 0x7f, 0x12, 0x0a, 0xc0, 0x00, 0x81, 0x90, 0x6a, 0xff, 0x7f, + 0x88, 0x01, 0x3b, 0x0a, 0x5c, 0x00, 0x2e, 0x00, 0x60, 0x9a, 0x05, 0x00, + 0x98, 0x05, 0x2b, 0x8b, 0x58, 0xfb, 0xc2, 0x19, 0xc0, 0x3e, 0xbc, 0x1f, + 0xc4, 0x17, 0x2b, 0x47, 0x30, 0x04, 0x42, 0x41, 0x20, 0x0b, 0x2c, 0xe5, + 0x0f, 0xa4, 0x7f, 0x94, 0x81, 0x66, 0x0e, 0x40, 0x60, 0x8a, 0x50, 0x20, + 0xdb, 0xbf, 0x7f, 0x9c, 0x01, 0x66, 0xd2, 0xbf, 0x7f, 0x8a, 0x44, 0x20, + 0xcb, 0xbf, 0x7f, 0x0b, 0x18, 0xe5, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, + 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x8b, 0x82, 0x0f, 0x1c, 0xe5, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x33, 0xe1, 0x7f, 0x0d, 0x00, 0x00, + 0x1c, 0x59, 0x64, 0xcb, 0x01, 0xa0, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, + 0x82, 0x21, 0xe0, 0x3c, 0x00, 0x3b, 0xc0, 0x01, 0x64, 0x3e, 0x00, 0x40, + 0x82, 0x11, 0xc0, 0x8b, 0xe0, 0x7f, 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, + 0x0f, 0x00, 0x80, 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, + 0x08, 0x40, 0x55, 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, + 0x12, 0x00, 0x60, 0x40, 0x02, 0x64, 0xcb, 0x01, 0xa0, 0x8f, 0xbf, 0x7f, + 0x86, 0x19, 0xc0, 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, + 0x2b, 0xe3, 0x7f, 0xd2, 0x09, 0xc0, 0x00, 0x81, 0x90, 0x6e, 0xff, 0x7f, + 0x86, 0x19, 0xc0, 0xbe, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, 0x0f, 0x3c, 0xd2, + 0xd0, 0x14, 0x2b, 0x0a, 0x40, 0x20, 0x07, 0x31, 0x04, 0x42, 0x41, 0x20, + 0x0b, 0x1c, 0xe5, 0x0b, 0xa3, 0x7f, 0x0b, 0x18, 0xe5, 0x06, 0x10, 0xc0, + 0x1a, 0x40, 0x20, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, + 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x8b, 0x82, 0x0f, 0x1c, 0xe5, + 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x4f, 0xe0, 0x7f, + 0x0d, 0x00, 0x00, 0x1c, 0x59, 0x64, 0xcb, 0x01, 0xa0, 0x00, 0x80, 0x90, + 0xde, 0xff, 0x7f, 0x82, 0x21, 0xe0, 0x3c, 0x00, 0x3b, 0xc0, 0x01, 0x64, + 0x3e, 0x00, 0x40, 0x82, 0x11, 0xc0, 0xa7, 0xdf, 0x7f, 0x16, 0x40, 0x20, + 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, + 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, + 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, 0x40, 0x02, 0x64, 0xcb, 0x01, 0xa0, + 0x8f, 0xbf, 0x7f, 0x86, 0x19, 0xc0, 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, + 0x87, 0x30, 0x04, 0x47, 0xe2, 0x7f, 0xd2, 0x09, 0xc0, 0x00, 0x81, 0x90, + 0x6e, 0xff, 0x7f, 0x86, 0x19, 0xc0, 0xbe, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, + 0x0f, 0xbc, 0xd3, 0xd0, 0x14, 0x2b, 0x0a, 0x40, 0x20, 0x07, 0x31, 0x04, + 0x42, 0x41, 0x20, 0x0b, 0x1c, 0xe5, 0x27, 0xa2, 0x7f, 0x03, 0x10, 0xe6, + 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, 0x44, 0x00, 0x65, 0x1e, 0x40, 0x20, + 0x1a, 0x20, 0xe0, 0x87, 0xdf, 0x7f, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, + 0x00, 0x00, 0x90, 0x1e, 0x00, 0x60, 0x87, 0x39, 0xfe, 0x7c, 0x80, 0xb2, + 0x16, 0x40, 0x60, 0x04, 0x01, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, + 0x07, 0x14, 0xe6, 0xc3, 0x11, 0x80, 0x03, 0x10, 0x3d, 0x03, 0x14, 0xe6, + 0xf7, 0x9f, 0x7f, 0x03, 0x10, 0xe6, 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, + 0x44, 0x00, 0x65, 0x1e, 0x40, 0x20, 0x1a, 0x20, 0xe0, 0x2f, 0xdf, 0x7f, + 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x00, 0x00, 0x90, 0x1e, 0x00, 0x60, + 0x87, 0x39, 0xfe, 0x4c, 0x80, 0xb2, 0x16, 0x40, 0x60, 0x04, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, 0x07, 0x14, 0xe6, 0xc3, 0x11, 0x80, + 0x03, 0x10, 0x3d, 0x03, 0x14, 0xe6, 0xd7, 0x9f, 0x7f, 0x0b, 0x08, 0xe6, + 0x5a, 0x40, 0x20, 0x07, 0x10, 0x80, 0x4b, 0x10, 0x3d, 0x28, 0x08, 0xc8, + 0x4c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x8f, 0x82, 0x0f, 0x0c, 0xe6, + 0x07, 0x20, 0x80, 0x58, 0x00, 0xb6, 0x16, 0x00, 0x60, 0x00, 0x00, 0x64, + 0x13, 0x4a, 0x60, 0xa3, 0x01, 0x90, 0xe7, 0xbf, 0x7f, 0xc0, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0xd9, 0xff, 0xff, 0x40, 0x3c, 0x64, + 0xe7, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, 0x5a, 0x40, 0x20, + 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0xbf, 0x82, 0x0f, 0x0c, 0xe6, 0xc0, 0x00, 0x75, 0xc7, 0x49, 0x60, + 0x25, 0x00, 0x00, 0x84, 0x38, 0x64, 0x08, 0x44, 0x24, 0x1d, 0x00, 0x00, + 0x8f, 0xbc, 0x1f, 0xbc, 0x7c, 0xb3, 0xd3, 0x88, 0xf9, 0x00, 0x35, 0x27, + 0xa3, 0x01, 0x90, 0xd3, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, + 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x4c, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x8f, 0x82, 0x0f, 0x0c, 0xe6, 0x00, 0x00, 0x74, + 0x73, 0x49, 0x60, 0x29, 0xff, 0xff, 0x04, 0x55, 0x64, 0x08, 0x44, 0x24, + 0xa5, 0xae, 0x02, 0x83, 0x00, 0x0a, 0x04, 0x19, 0x64, 0xa7, 0x65, 0x60, + 0xa3, 0x01, 0x90, 0xd7, 0xbf, 0x7f, 0x0b, 0x18, 0xe5, 0x18, 0x84, 0x1d, + 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0xbf, 0xdd, 0x7f, 0x16, 0x40, 0x20, + 0xa0, 0x00, 0xc8, 0x04, 0x15, 0x64, 0x43, 0xe0, 0x7f, 0x87, 0x21, 0x80, + 0xf9, 0xff, 0xfb, 0x0e, 0xbc, 0x1f, 0x40, 0x00, 0x92, 0x0b, 0x00, 0xfd, + 0x98, 0x68, 0x2b, 0x90, 0x28, 0x2b, 0xc3, 0x58, 0xfb, 0x1b, 0x50, 0xfb, + 0x8a, 0x41, 0x20, 0x43, 0x51, 0x51, 0x27, 0xe0, 0x7f, 0x05, 0x00, 0x04, + 0x9a, 0x01, 0x00, 0x80, 0x81, 0x92, 0x07, 0x40, 0xfd, 0xe3, 0x05, 0x90, + 0x0f, 0x1c, 0xe5, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, 0x5a, 0x40, 0x20, + 0x03, 0x10, 0x3d, 0x53, 0xdd, 0x7f, 0x40, 0x00, 0xc8, 0x04, 0x15, 0x64, + 0xdb, 0xdf, 0x7f, 0x05, 0x00, 0x04, 0x06, 0x00, 0x00, 0x40, 0x00, 0x92, + 0x0b, 0x00, 0xfd, 0xa3, 0x09, 0x90, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, + 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0x1f, 0xdd, 0x7f, 0x1a, 0x40, 0x20, + 0x38, 0x00, 0xc8, 0x04, 0x15, 0x64, 0xa3, 0xdf, 0x7f, 0x08, 0x00, 0x99, + 0x83, 0x51, 0x51, 0x0b, 0x0c, 0xe6, 0xa7, 0x9f, 0x7f, 0x0f, 0x0c, 0xe6, + 0x1b, 0x28, 0xe5, 0x17, 0x10, 0x80, 0x1a, 0x40, 0x20, 0x57, 0x11, 0x3d, + 0x7c, 0x01, 0x86, 0x03, 0x00, 0xfd, 0xa3, 0x03, 0xb0, 0x26, 0x00, 0x60, + 0x28, 0x14, 0xc8, 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0xbf, 0x82, + 0x1f, 0x2c, 0xe5, 0x00, 0x00, 0x64, 0xbf, 0xdc, 0x7f, 0xd0, 0xc3, 0xc9, + 0x9f, 0x21, 0x80, 0x79, 0xfe, 0xff, 0x20, 0x58, 0x64, 0xc6, 0xbd, 0x07, + 0x48, 0x60, 0x24, 0xa5, 0xae, 0x02, 0x83, 0x00, 0x0a, 0xd5, 0x00, 0x00, + 0x04, 0xab, 0x64, 0x5f, 0x64, 0x60, 0xd3, 0x21, 0x34, 0x0e, 0xbc, 0x1f, + 0x00, 0x61, 0x24, 0xd5, 0x00, 0x00, 0x04, 0xab, 0x64, 0xa5, 0xae, 0x02, + 0x03, 0x00, 0x0a, 0xd8, 0x10, 0x99, 0x3b, 0x64, 0x60, 0x06, 0xbc, 0x1f, + 0x82, 0x23, 0xe0, 0x48, 0x40, 0x2b, 0x8f, 0x49, 0xfb, 0xd0, 0x10, 0xa1, + 0x00, 0xe0, 0x26, 0x42, 0x41, 0x20, 0x02, 0x40, 0xa0, 0xa3, 0x13, 0x90, + 0x47, 0xdc, 0x7f, 0x8b, 0x23, 0x80, 0x04, 0x15, 0x64, 0x1b, 0x2c, 0xe5, + 0xdf, 0x9e, 0x7f, 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, + 0x84, 0x00, 0x65, 0x1a, 0x40, 0x20, 0x43, 0xdc, 0x7f, 0x0d, 0x00, 0x00, + 0x34, 0x83, 0x82, 0x00, 0x00, 0x90, 0x42, 0x00, 0x60, 0x82, 0x11, 0xc0, + 0xaf, 0xdb, 0x7f, 0x1a, 0x40, 0x20, 0x48, 0x00, 0xc8, 0x07, 0x00, 0x80, + 0x4a, 0xbc, 0x00, 0x8c, 0x80, 0x92, 0x16, 0x40, 0x60, 0xb3, 0xdf, 0x7f, + 0x82, 0x41, 0x20, 0x0b, 0x0c, 0xe6, 0xf7, 0x9e, 0x7f, 0x80, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, + 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1a, 0x40, 0x20, + 0xdb, 0xdb, 0x7f, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x00, 0x00, 0x84, + 0x3e, 0x00, 0x40, 0x82, 0x11, 0xc0, 0x47, 0xdb, 0x7f, 0x60, 0x00, 0xc8, + 0x0b, 0x00, 0x80, 0x8e, 0xbc, 0x00, 0xcc, 0x80, 0x92, 0x22, 0x40, 0x60, + 0x92, 0x21, 0xe0, 0x0c, 0x01, 0x66, 0x0e, 0x00, 0x60, 0x0b, 0x0c, 0xe6, + 0x8f, 0x9e, 0x7f, 0x0b, 0x0c, 0xe6, 0x37, 0x9f, 0x7f, 0x0f, 0x0c, 0xe6, + 0x03, 0x10, 0xe6, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x1e, 0x40, 0x20, 0x77, 0xdb, 0x7f, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, + 0x00, 0x00, 0x90, 0x5a, 0x00, 0x60, 0xc2, 0x11, 0xc0, 0xe3, 0xda, 0x7f, + 0x1a, 0x40, 0x20, 0x78, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x4a, 0xbc, 0x00, + 0x8c, 0x80, 0x92, 0x2e, 0x40, 0x60, 0xce, 0x19, 0xc0, 0x08, 0x00, 0x64, + 0xc6, 0xbc, 0x1f, 0xdb, 0xdd, 0x7f, 0xd2, 0x19, 0xc0, 0x48, 0x00, 0x64, + 0x82, 0x41, 0x20, 0x06, 0xbd, 0x1f, 0x03, 0x14, 0xe6, 0xc3, 0x9d, 0x7f, + 0xc0, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x07, 0x14, 0xe6, + 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x1a, 0x40, 0x20, 0xf7, 0xda, 0x7f, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, + 0x00, 0x00, 0x90, 0x42, 0x00, 0x60, 0x82, 0x11, 0xc0, 0x63, 0xda, 0x7f, + 0x50, 0x00, 0xc8, 0x0b, 0x00, 0x80, 0x8e, 0xbc, 0x00, 0xcc, 0x80, 0x92, + 0x1a, 0x40, 0x60, 0x92, 0x19, 0xc0, 0x8a, 0x21, 0xe0, 0x06, 0xbd, 0x1f, + 0x0b, 0x0c, 0xe6, 0x5b, 0x9d, 0x7f, 0xc0, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x83, 0x82, 0x0f, 0x0c, 0xe6, 0x4b, 0x18, 0xe5, 0x0a, 0x70, 0xc0, + 0x1a, 0x28, 0xc0, 0x1f, 0x10, 0x80, 0x16, 0x60, 0xc0, 0x02, 0x38, 0xc0, + 0x80, 0x01, 0x86, 0x01, 0x00, 0x00, 0x9a, 0x3d, 0xb9, 0xcc, 0xfa, 0x64, + 0x00, 0x80, 0x86, 0x01, 0x00, 0x00, 0x06, 0x58, 0xb6, 0xdf, 0x11, 0x3d, + 0x93, 0x4b, 0x90, 0xb3, 0x47, 0x90, 0xa3, 0x5b, 0x90, 0x83, 0x57, 0x90, + 0xb3, 0x1f, 0x90, 0xa3, 0x0f, 0x90, 0x83, 0x8b, 0x90, 0x93, 0x87, 0x90, + 0xcf, 0xe5, 0x7f, 0x93, 0x83, 0x80, 0x8b, 0x93, 0x80, 0x7c, 0x00, 0x64, + 0x24, 0x1c, 0x72, 0x9c, 0x18, 0x3a, 0x16, 0x00, 0x60, 0xfc, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0xbf, 0x82, 0x4f, 0x1c, 0xe5, 0x80, 0x34, 0x2b, + 0x25, 0x00, 0x00, 0x84, 0x38, 0x64, 0x83, 0x93, 0x90, 0xb7, 0x61, 0x60, + 0x0d, 0x00, 0x00, 0xb4, 0xc2, 0x82, 0x25, 0x00, 0x00, 0x84, 0x38, 0x64, + 0x80, 0x35, 0x2b, 0x9f, 0x61, 0x60, 0x8b, 0x83, 0x80, 0x0d, 0x00, 0x00, + 0xc4, 0xc2, 0x82, 0x43, 0x01, 0x40, 0x4b, 0x1c, 0xe5, 0x03, 0x0c, 0x60, + 0x07, 0x20, 0x80, 0x2c, 0x04, 0x72, 0xc4, 0x01, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x87, 0x82, 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, + 0xc7, 0x0d, 0xfe, 0x0b, 0x08, 0xe6, 0x0d, 0x00, 0x00, 0x18, 0x77, 0x64, + 0x40, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xe4, 0x43, 0x7e, 0x83, 0x01, 0x58, + 0x03, 0xd9, 0x7f, 0x15, 0x00, 0x00, 0xcc, 0x5b, 0x64, 0xb3, 0x0d, 0x90, + 0x15, 0x00, 0x00, 0xcc, 0xf4, 0x64, 0x15, 0x00, 0x00, 0x44, 0x51, 0x64, + 0x93, 0x8d, 0x90, 0x15, 0x00, 0x00, 0x8c, 0xaa, 0x64, 0x15, 0x00, 0x00, + 0xc0, 0x46, 0x64, 0x93, 0x05, 0x90, 0x93, 0xcd, 0x90, 0x11, 0x00, 0x00, + 0x04, 0xd4, 0x64, 0x19, 0x00, 0x00, 0xcc, 0x5a, 0x64, 0x83, 0x41, 0x90, + 0x93, 0x45, 0x90, 0x15, 0x00, 0x00, 0x00, 0xc1, 0x64, 0x15, 0x00, 0x00, + 0x84, 0x95, 0x64, 0x83, 0x0d, 0x91, 0x19, 0x00, 0x00, 0x8c, 0x8b, 0x64, + 0x15, 0x00, 0x00, 0x50, 0x66, 0x64, 0xa3, 0x81, 0x90, 0xb3, 0x85, 0x90, + 0x15, 0x00, 0x00, 0x40, 0xb4, 0x64, 0x19, 0x00, 0x00, 0x44, 0x4a, 0x64, + 0xa3, 0x0d, 0x91, 0x19, 0x00, 0x00, 0x4c, 0xfb, 0x64, 0x11, 0x00, 0x00, + 0x48, 0xb5, 0x64, 0xa3, 0x11, 0x90, 0xa3, 0xc1, 0x90, 0x19, 0x00, 0x00, + 0x90, 0x1f, 0x64, 0x19, 0x00, 0x00, 0xc0, 0x7b, 0x64, 0xb3, 0xc5, 0x90, + 0xa3, 0x4d, 0x91, 0x11, 0x00, 0x00, 0x44, 0xdf, 0x64, 0x1d, 0x00, 0x00, + 0x0c, 0x0e, 0x64, 0x83, 0x09, 0x90, 0x83, 0x91, 0x90, 0x11, 0x00, 0x00, + 0x88, 0xba, 0x64, 0x15, 0x00, 0x00, 0x90, 0x9e, 0x64, 0xb3, 0x01, 0x91, + 0x83, 0x45, 0x91, 0x1d, 0x00, 0x00, 0x00, 0x26, 0x64, 0x19, 0x00, 0x00, + 0xc4, 0xe7, 0x64, 0x93, 0x8d, 0x91, 0x11, 0x00, 0x00, 0x0c, 0xf5, 0x64, + 0xa3, 0x49, 0x90, 0x83, 0xd1, 0x90, 0x93, 0x09, 0x91, 0x19, 0x00, 0x00, + 0x50, 0x6b, 0x64, 0xb3, 0x41, 0x91, 0x83, 0x85, 0x91, 0x11, 0x00, 0x00, + 0x40, 0xe8, 0x64, 0x11, 0x00, 0x00, 0x04, 0xf2, 0x64, 0xa3, 0x89, 0x91, + 0xb3, 0x89, 0x91, 0x93, 0xcd, 0x91, 0x11, 0x00, 0x00, 0x88, 0xbd, 0x64, + 0x15, 0x00, 0x00, 0x8c, 0x35, 0x64, 0x93, 0x51, 0x91, 0x83, 0xc9, 0x91, + 0x1d, 0x00, 0x00, 0x90, 0x39, 0x64, 0x11, 0x00, 0x00, 0x88, 0xff, 0x64, + 0xa3, 0xc1, 0x91, 0xb3, 0xc5, 0x91, 0x1d, 0x00, 0x00, 0x00, 0x5f, 0x64, + 0x19, 0x00, 0x00, 0xc4, 0xae, 0x64, 0x93, 0x0d, 0x92, 0x15, 0x00, 0x00, + 0x8c, 0x3e, 0x64, 0x83, 0x09, 0x92, 0xa3, 0x11, 0x92, 0xb3, 0x01, 0x92, + 0x83, 0x45, 0x92, 0x19, 0x00, 0x00, 0x88, 0x9a, 0x64, 0xa3, 0x4d, 0x92, + 0x15, 0x00, 0x00, 0x50, 0x81, 0x64, 0x19, 0x00, 0x00, 0x00, 0xc3, 0x64, + 0x19, 0x00, 0x00, 0x44, 0xb9, 0x64, 0x11, 0x00, 0x00, 0xcc, 0xd4, 0x64, + 0x93, 0x49, 0x92, 0xb3, 0x51, 0x92, 0x83, 0x81, 0x92, 0x93, 0x85, 0x92, + 0xb3, 0x4d, 0x90, 0x0d, 0x00, 0x00, 0xe7, 0x87, 0xf8, 0x0f, 0x0c, 0xe6, + 0x0b, 0x38, 0xe5, 0x44, 0x00, 0xb2, 0x22, 0x40, 0x20, 0x2c, 0x04, 0x64, + 0x12, 0x00, 0x60, 0x4c, 0x80, 0xb2, 0x2c, 0x08, 0x64, 0xee, 0xc2, 0x81, + 0x5e, 0x04, 0x00, 0xc0, 0x01, 0x92, 0x41, 0x00, 0x00, 0x14, 0x00, 0x64, + 0x11, 0x00, 0x00, 0x56, 0x01, 0x80, 0x09, 0x00, 0x00, 0x28, 0xed, 0x64, + 0x58, 0x00, 0x65, 0xe7, 0x32, 0x00, 0x83, 0x02, 0x80, 0x3d, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40, 0x80, 0x92, 0x0e, 0x40, 0x60, + 0x82, 0x41, 0x20, 0x0f, 0x3c, 0xe5, 0x0b, 0x90, 0x32, 0xac, 0x20, 0x48, + 0x3a, 0x00, 0x60, 0x0e, 0xb8, 0x00, 0xe8, 0x80, 0x92, 0x2e, 0x40, 0x60, + 0x80, 0xae, 0x1d, 0x97, 0xd9, 0x7f, 0x0c, 0x14, 0x48, 0xf6, 0xbf, 0x7f, + 0x80, 0xa6, 0x1d, 0x87, 0xd9, 0x7f, 0x10, 0x1c, 0xc8, 0x00, 0x40, 0x31, + 0x84, 0x81, 0x3a, 0x9b, 0xc1, 0xf9, 0xab, 0x12, 0x00, 0x9f, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x84, 0x00, 0x72, 0x4c, 0x04, 0x86, 0x3a, 0x00, 0x60, + 0x0d, 0x00, 0x00, 0x18, 0x2f, 0x55, 0x44, 0x48, 0x2b, 0x21, 0x01, 0x80, + 0x4a, 0x44, 0x20, 0x83, 0x71, 0x52, 0x57, 0xd9, 0x7f, 0x83, 0x81, 0x52, + 0x3b, 0xd9, 0x7f, 0x00, 0x94, 0x26, 0xf6, 0xff, 0x7f, 0x03, 0x3c, 0xfe, + 0x0f, 0x0c, 0xe6, 0x00, 0x00, 0x64, 0xfb, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, + 0x00, 0x08, 0x2b, 0x0d, 0x00, 0x00, 0x1b, 0xf0, 0x82, 0x08, 0x00, 0x64, + 0x83, 0x71, 0x52, 0x1b, 0xd9, 0x7f, 0x83, 0x81, 0x52, 0x0b, 0x0c, 0xe6, + 0xfb, 0x98, 0x7f, 0x13, 0x10, 0xe6, 0x1a, 0x40, 0x20, 0x2c, 0x00, 0xc8, + 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0xbf, 0x82, 0x17, 0x14, 0xe6, + 0x00, 0x08, 0x2b, 0x0d, 0x00, 0x00, 0x03, 0xf0, 0x82, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0x0d, 0x00, 0x00, 0x1c, 0x59, 0x64, 0xd3, 0xd8, 0x7f, + 0xce, 0x01, 0xe0, 0x05, 0x00, 0x00, 0x00, 0x0f, 0x64, 0xa3, 0x03, 0x90, + 0x44, 0x00, 0x64, 0x48, 0x98, 0x40, 0x93, 0x4c, 0xfb, 0xc3, 0x11, 0xb0, + 0xaf, 0xe1, 0x7f, 0xdb, 0x99, 0xf2, 0xce, 0x01, 0xe0, 0x86, 0x31, 0xe3, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, 0xc8, 0x00, 0x66, 0x4a, 0x40, 0x22, + 0x13, 0x00, 0xfd, 0xb3, 0x89, 0xb1, 0x27, 0xd0, 0xd3, 0x11, 0x10, 0x00, + 0x44, 0x01, 0x7e, 0x8b, 0xbf, 0x7f, 0x03, 0x00, 0xe0, 0x80, 0x00, 0x72, + 0x00, 0x08, 0x2b, 0x0d, 0x00, 0x00, 0x03, 0xf0, 0x82, 0x60, 0x00, 0xc8, + 0x05, 0x00, 0x00, 0x04, 0xe3, 0x55, 0x28, 0x04, 0xc8, 0x04, 0x12, 0x64, + 0x3b, 0xd8, 0x7f, 0x02, 0xbc, 0x1f, 0x07, 0x04, 0xe0, 0x80, 0x01, 0x75, + 0x57, 0xda, 0x7f, 0x00, 0x20, 0x28, 0xf3, 0xbf, 0x7f, 0x00, 0x00, 0x64, + 0xeb, 0xbf, 0x7f, 0x1b, 0x18, 0xe5, 0x5a, 0x40, 0x20, 0xa8, 0x01, 0x72, + 0x09, 0x00, 0x00, 0x14, 0xeb, 0x64, 0x1f, 0x10, 0x02, 0x43, 0x5d, 0xf7, + 0x80, 0x01, 0xc8, 0x05, 0x00, 0x00, 0x04, 0xe3, 0x55, 0x7c, 0x05, 0x72, + 0x80, 0x41, 0xba, 0x00, 0x20, 0x64, 0x6e, 0x00, 0x40, 0x18, 0x40, 0x64, + 0x05, 0x00, 0x00, 0x88, 0x12, 0x64, 0xa3, 0x0b, 0x90, 0xb3, 0x1b, 0x90, + 0xdf, 0xe0, 0x7f, 0x80, 0x01, 0x75, 0xef, 0xd9, 0x7f, 0x13, 0x38, 0xfe, + 0x8c, 0x21, 0x2b, 0xcb, 0x50, 0xfb, 0x80, 0x01, 0x75, 0x53, 0xda, 0x7f, + 0x00, 0x00, 0x74, 0xd3, 0xd9, 0x7f, 0x1e, 0x48, 0x00, 0xca, 0x41, 0x20, + 0x00, 0x00, 0x74, 0x3b, 0xda, 0x7f, 0xca, 0x49, 0x20, 0x00, 0x00, 0x74, + 0x2f, 0xda, 0x7f, 0xca, 0x41, 0x20, 0x00, 0x00, 0x74, 0x23, 0xda, 0x7f, + 0x43, 0x00, 0x60, 0x8c, 0x01, 0x37, 0x30, 0xc7, 0xc9, 0x05, 0x00, 0x00, + 0x7c, 0x13, 0x64, 0xa3, 0x3f, 0x90, 0xb3, 0x1b, 0x90, 0x73, 0xe0, 0x7f, + 0x43, 0x5d, 0xf7, 0x04, 0x12, 0x64, 0x53, 0xd7, 0x7f, 0x2b, 0x18, 0xd0, + 0x0a, 0x40, 0x20, 0x43, 0x5d, 0xf7, 0x04, 0x12, 0x64, 0x53, 0xd7, 0x7f, + 0x82, 0x41, 0x20, 0x1f, 0x1c, 0xe5, 0x01, 0x00, 0x00, 0x88, 0xd5, 0xbb, + 0x80, 0x5c, 0x64, 0xb2, 0xff, 0x5f, 0x98, 0xd4, 0x64, 0xb3, 0xbf, 0x7f, + 0x03, 0x10, 0xe6, 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x0d, 0x00, 0x00, + 0x1f, 0xf0, 0x82, 0x2c, 0x1c, 0x72, 0x40, 0x00, 0x75, 0x0d, 0x00, 0x00, + 0x34, 0x87, 0x82, 0x07, 0x14, 0xe6, 0x5b, 0xa0, 0x00, 0x98, 0x09, 0x2b, + 0xc0, 0x99, 0x1d, 0xe7, 0xd6, 0x7f, 0x08, 0x14, 0x26, 0xf6, 0xbf, 0x7f, + 0x02, 0xbc, 0x1f, 0xe3, 0xbf, 0x7f, 0x03, 0x00, 0xe0, 0xc4, 0x00, 0x64, + 0xf0, 0xfb, 0x63, 0x07, 0x04, 0xe0, 0x4b, 0x28, 0xe5, 0x22, 0x40, 0x20, + 0x00, 0x00, 0x64, 0xd4, 0xe7, 0x63, 0x1b, 0x3c, 0xfe, 0x00, 0x00, 0x64, + 0xd8, 0xff, 0x63, 0x17, 0x3c, 0xfe, 0x00, 0x00, 0x74, 0xc4, 0xfb, 0x63, + 0x29, 0xff, 0xff, 0x04, 0x55, 0x64, 0x00, 0x44, 0x24, 0xa5, 0xae, 0x02, + 0x03, 0x00, 0x0a, 0x04, 0x19, 0x64, 0xbb, 0x5b, 0x60, 0x0d, 0x00, 0x00, + 0x8c, 0x75, 0x4e, 0x5e, 0x41, 0x20, 0x44, 0x0d, 0x3a, 0x1a, 0x00, 0x60, + 0x0d, 0x00, 0x00, 0x08, 0x76, 0x4e, 0x3f, 0x9a, 0xf2, 0x84, 0x94, 0x3a, + 0x26, 0x40, 0x40, 0xc4, 0x1c, 0x3a, 0xbf, 0x09, 0x00, 0x1a, 0x00, 0x40, + 0x0d, 0x00, 0x00, 0x10, 0x76, 0x4e, 0xbf, 0x49, 0x00, 0xc4, 0x91, 0x3a, + 0xbf, 0xfd, 0xf9, 0x25, 0x00, 0x00, 0x84, 0x38, 0x64, 0x54, 0x45, 0x24, + 0x93, 0x43, 0x90, 0x54, 0x35, 0x31, 0x05, 0x00, 0x00, 0x80, 0x15, 0x64, + 0xb3, 0x7f, 0x90, 0xa3, 0x63, 0x90, 0x83, 0x57, 0x90, 0xb3, 0x1b, 0x90, + 0xa3, 0x03, 0x90, 0x83, 0xbf, 0x90, 0x17, 0xdf, 0x7f, 0x87, 0x83, 0x80, + 0xbc, 0x05, 0x48, 0x1a, 0x00, 0x60, 0x00, 0x00, 0x64, 0xd8, 0xdf, 0x63, + 0x80, 0x07, 0x64, 0x4b, 0x2c, 0xe5, 0xcf, 0x92, 0x7f, 0x4f, 0x2c, 0xe5, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xc0, 0xf3, 0x63, 0x8f, 0x23, 0x80, + 0x01, 0x12, 0x00, 0x04, 0x00, 0x55, 0x03, 0x3c, 0xfe, 0x01, 0x00, 0x00, + 0x28, 0x48, 0xbb, 0xc8, 0x04, 0x2b, 0x44, 0x88, 0x3e, 0x4e, 0x0c, 0x00, + 0x52, 0x08, 0x00, 0x1a, 0x00, 0x60, 0x2c, 0x10, 0x72, 0xfe, 0x48, 0x20, + 0xec, 0xbc, 0x48, 0x1e, 0x40, 0x60, 0x17, 0x04, 0xe0, 0x01, 0x00, 0x00, + 0x0c, 0x4c, 0xb3, 0xf6, 0xbf, 0x7f, 0xe0, 0xd3, 0xc9, 0x7e, 0x04, 0x00, + 0x01, 0x12, 0x00, 0x0c, 0x00, 0x64, 0xd3, 0x00, 0x80, 0xc0, 0x00, 0x64, + 0x04, 0x88, 0x40, 0xc8, 0x8b, 0x40, 0x13, 0x45, 0xfc, 0xc3, 0x10, 0x90, + 0xc3, 0x00, 0x80, 0xbf, 0x40, 0xfb, 0xc3, 0x3c, 0x90, 0xbf, 0xbf, 0x7f, + 0x1f, 0x88, 0xe5, 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, 0x1a, 0x40, 0x20, + 0x56, 0x40, 0x20, 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x0d, 0x00, 0x00, + 0x03, 0xf0, 0x82, 0x2c, 0x00, 0x72, 0x48, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x8b, 0x82, 0x1f, 0x8c, 0xe5, 0x62, 0x40, 0x20, 0x80, 0x9d, 0x1d, + 0xf0, 0xdf, 0x63, 0x10, 0x02, 0x7a, 0xdf, 0x05, 0x00, 0xdc, 0x01, 0x92, + 0xee, 0xbf, 0x7f, 0x82, 0x41, 0x20, 0xd4, 0xbf, 0x63, 0x63, 0xa1, 0x00, + 0x80, 0xa5, 0x1d, 0xfc, 0xb7, 0x63, 0x10, 0x42, 0x7a, 0x67, 0x06, 0x00, + 0x4c, 0x86, 0x92, 0xee, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0x2c, 0x60, 0x55, + 0x70, 0x10, 0x64, 0x9c, 0x06, 0x64, 0x11, 0x00, 0x00, 0x24, 0x00, 0x64, + 0x28, 0x0c, 0x64, 0xcb, 0x02, 0x80, 0x3d, 0x00, 0x00, 0x86, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x40, 0x00, 0x92, 0xa6, 0x00, 0x40, 0x8e, 0xbc, 0x00, + 0xec, 0x80, 0x92, 0x8e, 0x40, 0x60, 0x60, 0x9d, 0x1f, 0x18, 0x00, 0x64, + 0x34, 0x04, 0x64, 0x17, 0x00, 0x60, 0x84, 0x01, 0x86, 0xf6, 0xbf, 0x7f, + 0x8c, 0x81, 0xba, 0xb6, 0x42, 0x81, 0x80, 0x11, 0x26, 0x13, 0x00, 0xfd, + 0xa3, 0x13, 0xb0, 0x41, 0x00, 0x00, 0x4a, 0x02, 0x80, 0xc0, 0xb6, 0x1d, + 0xb3, 0x0b, 0x90, 0x57, 0xd4, 0x7f, 0x8b, 0x33, 0x80, 0x0c, 0x88, 0x48, + 0xee, 0xff, 0x7f, 0x47, 0x33, 0x00, 0xc2, 0x42, 0x20, 0x3f, 0xd4, 0x7f, + 0x8e, 0x23, 0xe0, 0x84, 0x09, 0x2b, 0x3c, 0x40, 0x31, 0xc0, 0x60, 0x26, + 0x0a, 0x00, 0x40, 0x3f, 0x3c, 0xfe, 0x03, 0x86, 0xf2, 0x03, 0x3c, 0x90, + 0x9b, 0x05, 0x00, 0x98, 0x81, 0x92, 0x92, 0xff, 0x7f, 0xdf, 0x19, 0x00, + 0x33, 0x47, 0x00, 0xef, 0x12, 0x00, 0x9c, 0xf2, 0x73, 0x5c, 0x9d, 0x1f, + 0x90, 0x00, 0x65, 0xc3, 0x11, 0x90, 0xdf, 0xbe, 0x7f, 0x3f, 0x88, 0xe5, + 0x11, 0x10, 0x00, 0x0c, 0x06, 0x55, 0x00, 0x04, 0x64, 0x04, 0x08, 0x64, + 0x08, 0x0c, 0x64, 0x88, 0x03, 0xd8, 0x83, 0x4b, 0x90, 0xfc, 0x7c, 0xb3, + 0xbe, 0x01, 0x60, 0x0d, 0x00, 0x00, 0x10, 0x59, 0x52, 0x00, 0xb1, 0x26, + 0x09, 0x00, 0x00, 0x9a, 0xd1, 0x9d, 0x92, 0x41, 0x60, 0xff, 0x00, 0x60, + 0x77, 0x91, 0x32, 0xe4, 0x35, 0x72, 0x42, 0xb9, 0x00, 0x28, 0x80, 0x92, + 0xe6, 0x40, 0x60, 0x34, 0x00, 0x64, 0xab, 0x23, 0x00, 0x97, 0x76, 0xf7, + 0x80, 0x95, 0x1d, 0x87, 0xd3, 0x7f, 0x51, 0x00, 0x00, 0x0a, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x80, 0x00, 0x92, 0x32, 0x40, 0x20, 0x2a, 0x40, 0x20, + 0xda, 0xbf, 0x7f, 0xa1, 0x00, 0x00, 0x00, 0x80, 0x8a, 0xef, 0x06, 0x00, + 0x9a, 0x40, 0x60, 0x47, 0x31, 0x00, 0x82, 0x41, 0x20, 0x4f, 0xd3, 0x7f, + 0xb3, 0x43, 0x90, 0x47, 0x21, 0x00, 0x82, 0x41, 0x20, 0x3f, 0xd3, 0x7f, + 0xa3, 0x43, 0x90, 0x47, 0x11, 0x00, 0x82, 0x41, 0x20, 0x2f, 0xd3, 0x7f, + 0x8f, 0x63, 0x80, 0x8b, 0x73, 0x80, 0x84, 0x0c, 0x3a, 0x0a, 0x01, 0x60, + 0x84, 0x40, 0x31, 0x44, 0x80, 0x3a, 0xfe, 0x40, 0x60, 0xfc, 0x40, 0x31, + 0xe4, 0x0b, 0x3a, 0x16, 0x00, 0x60, 0x00, 0x40, 0x31, 0x24, 0x84, 0x3a, + 0x0a, 0x40, 0x60, 0xdf, 0x05, 0x00, 0x3c, 0x13, 0x26, 0x0a, 0x00, 0x60, + 0x2a, 0x43, 0x01, 0xb4, 0x92, 0x26, 0x0a, 0x40, 0x60, 0xaa, 0xc2, 0x00, + 0x8a, 0x42, 0x20, 0x80, 0x95, 0x1d, 0xe7, 0xd2, 0x7f, 0x8a, 0xc2, 0x21, + 0x80, 0x95, 0x1d, 0xdb, 0xd2, 0x7f, 0x77, 0x07, 0x00, 0x4c, 0x03, 0x92, + 0x2a, 0xbf, 0x7f, 0x9b, 0x11, 0x00, 0x97, 0x01, 0x80, 0x3d, 0x00, 0x00, + 0x72, 0x01, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x03, 0x92, 0xf6, 0xbe, 0x7f, + 0x00, 0x00, 0x64, 0xf8, 0x97, 0x63, 0x0d, 0x00, 0x00, 0x14, 0x59, 0x64, + 0x18, 0x00, 0x64, 0xfd, 0x07, 0x00, 0xf0, 0xfe, 0x74, 0x8a, 0x41, 0x20, + 0x00, 0xb7, 0x1d, 0xc7, 0x57, 0x60, 0x22, 0x04, 0x00, 0x58, 0x20, 0xc8, + 0x83, 0x01, 0x40, 0xfc, 0x8f, 0x63, 0x46, 0x01, 0xc1, 0xef, 0x06, 0x00, + 0x0c, 0x84, 0x3a, 0x42, 0x40, 0x60, 0x7e, 0x19, 0xc2, 0xec, 0x03, 0x3a, + 0x0a, 0x00, 0x60, 0xdf, 0x05, 0x00, 0x9b, 0x05, 0x00, 0x8c, 0x85, 0x92, + 0x57, 0x09, 0x00, 0xba, 0xff, 0x7f, 0xfc, 0x2d, 0x48, 0x0e, 0x00, 0x40, + 0x40, 0x00, 0x65, 0xe4, 0xb7, 0x63, 0x00, 0x00, 0x64, 0x3b, 0x8c, 0xe5, + 0x87, 0x18, 0xfe, 0x80, 0x00, 0x64, 0xef, 0xbf, 0x7f, 0x3f, 0x8c, 0xe5, + 0x2b, 0x38, 0xe5, 0x16, 0x40, 0x20, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x64, + 0x7f, 0xdb, 0x7f, 0x42, 0x41, 0x20, 0xd0, 0x9b, 0x63, 0x23, 0x3c, 0xfe, + 0x44, 0x05, 0x2b, 0x0d, 0x00, 0x00, 0x63, 0x80, 0xa5, 0x02, 0x42, 0x20, + 0x5f, 0xdb, 0x7f, 0xd8, 0x22, 0xc8, 0x0d, 0x00, 0x00, 0x40, 0x0d, 0x64, + 0x08, 0x42, 0x24, 0xdd, 0x06, 0x00, 0x83, 0x80, 0x0e, 0x04, 0xfa, 0x64, + 0xf3, 0x56, 0x60, 0x1a, 0x40, 0x20, 0x01, 0xcc, 0x00, 0x40, 0x00, 0x64, + 0x2f, 0xdb, 0x7f, 0x82, 0x41, 0x20, 0x27, 0xdb, 0x7f, 0x42, 0x41, 0x20, + 0xc8, 0xaf, 0x63, 0x1f, 0x3c, 0xfe, 0x01, 0xcc, 0x00, 0x80, 0x00, 0x64, + 0x0f, 0xdb, 0x7f, 0xc2, 0x41, 0x20, 0x07, 0xdb, 0x7f, 0x25, 0x00, 0x00, + 0xa4, 0x38, 0x64, 0xcc, 0x65, 0x24, 0xd0, 0x34, 0x27, 0x05, 0x00, 0x00, + 0x68, 0x22, 0x64, 0xb3, 0x13, 0x90, 0x83, 0x5b, 0x90, 0xa3, 0x2b, 0x90, + 0x28, 0x10, 0x64, 0x6b, 0xda, 0x7f, 0x05, 0x00, 0x00, 0x04, 0xe3, 0x55, + 0x40, 0x00, 0x92, 0x82, 0x82, 0x80, 0x07, 0xc2, 0xf2, 0x42, 0x41, 0x20, + 0xe4, 0x93, 0x63, 0x80, 0x07, 0x64, 0x1f, 0xce, 0x7f, 0x42, 0x41, 0x20, + 0xd8, 0xa7, 0x63, 0x1b, 0x3c, 0xfe, 0x01, 0xcc, 0x00, 0xc0, 0x00, 0x64, + 0x9f, 0xda, 0x7f, 0x82, 0x41, 0x20, 0x97, 0xda, 0x7f, 0x88, 0x65, 0x24, + 0x8c, 0x34, 0x27, 0x05, 0x00, 0x00, 0xd0, 0x2a, 0x64, 0xb3, 0x0f, 0x90, + 0xa3, 0x13, 0x90, 0xdf, 0xd9, 0xf2, 0xd8, 0x65, 0x24, 0x03, 0xda, 0x7f, + 0x01, 0xcc, 0x00, 0x00, 0x01, 0x64, 0x67, 0xda, 0x7f, 0xbc, 0xfd, 0xb3, + 0x1d, 0x00, 0x00, 0x87, 0xbd, 0x1f, 0x43, 0xd8, 0xf9, 0x1c, 0x34, 0x27, + 0xc2, 0x41, 0x20, 0x4b, 0xda, 0x7f, 0x05, 0x00, 0x00, 0x08, 0xe3, 0x55, + 0x05, 0x00, 0x00, 0xd0, 0x2f, 0x64, 0x83, 0x5f, 0x90, 0xa3, 0x13, 0x90, + 0x80, 0x00, 0x92, 0x8e, 0x82, 0x80, 0xb3, 0x0f, 0x90, 0xb3, 0xd9, 0x7f, + 0x3d, 0x01, 0x00, 0xbc, 0xfd, 0xb3, 0x2a, 0x40, 0x60, 0x40, 0xa1, 0x1d, + 0x77, 0xf8, 0x7f, 0x80, 0x07, 0x64, 0x6f, 0xcd, 0x7f, 0x01, 0xcc, 0x00, + 0x40, 0x01, 0x64, 0xfb, 0xd9, 0x7f, 0x40, 0x00, 0x64, 0x2f, 0x3c, 0xe5, + 0x01, 0xcc, 0x00, 0xc0, 0x3f, 0x64, 0xe7, 0xd9, 0x7f, 0x80, 0x07, 0x64, + 0x47, 0xcd, 0x7f, 0x00, 0x00, 0x64, 0xe7, 0xbf, 0x7f, 0xdb, 0x89, 0xe5, + 0x0d, 0x00, 0x00, 0x1b, 0x90, 0x55, 0xc2, 0x01, 0xe0, 0x93, 0x87, 0x92, + 0xae, 0x40, 0x20, 0x08, 0x58, 0x48, 0x12, 0x00, 0x60, 0x00, 0x01, 0x64, + 0xcb, 0x01, 0xa0, 0xdf, 0x8d, 0xe5, 0x87, 0x93, 0x82, 0x83, 0x4b, 0x90, + 0x05, 0x00, 0x00, 0x08, 0x39, 0x64, 0xa3, 0x0b, 0x90, 0xb3, 0x07, 0x90, + 0x14, 0x04, 0x64, 0x1b, 0xd9, 0x7f, 0x05, 0x00, 0x00, 0x10, 0xe3, 0x55, + 0xb3, 0x93, 0x82, 0x8f, 0x09, 0x00, 0x25, 0x00, 0x00, 0x84, 0x38, 0x64, + 0x00, 0x81, 0x86, 0x00, 0x37, 0x2b, 0xeb, 0x0d, 0xf8, 0x5e, 0x41, 0x82, + 0x13, 0x55, 0x60, 0x93, 0xc3, 0x92, 0x25, 0x00, 0x00, 0x84, 0x38, 0x64, + 0xc0, 0x36, 0x2b, 0xff, 0x54, 0x60, 0x83, 0x83, 0x92, 0xb7, 0xd3, 0x82, + 0x94, 0x01, 0x64, 0x93, 0x05, 0x00, 0x83, 0x83, 0x82, 0xa7, 0xde, 0xf2, + 0x08, 0xfa, 0x64, 0x1c, 0x55, 0x24, 0x47, 0xc3, 0xf2, 0x4c, 0x48, 0x24, + 0x0d, 0x00, 0x00, 0xf3, 0x09, 0x0b, 0xa3, 0x4f, 0x93, 0xb3, 0xb3, 0x92, + 0x94, 0x00, 0x64, 0x80, 0xa9, 0x1d, 0xa3, 0xd7, 0x92, 0x6b, 0xf7, 0x7f, + 0x80, 0x07, 0x64, 0x63, 0xcc, 0x7f, 0x82, 0x41, 0x20, 0x9f, 0xf8, 0x7f, + 0x37, 0x3c, 0xfe, 0x82, 0x41, 0x20, 0x83, 0xf7, 0x92, 0x5e, 0x43, 0x20, + 0x3f, 0xf6, 0x7f, 0x14, 0x00, 0x64, 0x54, 0x01, 0xba, 0x3a, 0x02, 0x60, + 0x80, 0x95, 0x1d, 0x2f, 0xf5, 0x7f, 0xbf, 0xa3, 0x01, 0xc4, 0x17, 0x1f, + 0x53, 0xc0, 0xa0, 0x57, 0x05, 0x00, 0x64, 0x85, 0x92, 0xde, 0xff, 0x7f, + 0x80, 0xa5, 0x1d, 0x13, 0xf7, 0x7f, 0x80, 0x07, 0x64, 0x0b, 0xcc, 0x7f, + 0x82, 0x41, 0x20, 0x47, 0xf8, 0x7f, 0x8b, 0xc3, 0x82, 0x03, 0x3c, 0xfe, + 0x0f, 0x3c, 0xfe, 0xb3, 0xc3, 0x92, 0x93, 0xcc, 0xf2, 0xa3, 0x93, 0x92, + 0x16, 0x40, 0x20, 0x34, 0x00, 0x64, 0xb3, 0xa3, 0x82, 0x1c, 0x03, 0xb2, + 0xa2, 0x01, 0x60, 0x82, 0x41, 0x20, 0xc7, 0xf5, 0x7f, 0x20, 0x00, 0x64, + 0x14, 0x82, 0xba, 0xd2, 0x41, 0x60, 0x80, 0xa1, 0x1d, 0xb7, 0xf4, 0x7f, + 0xb7, 0xa3, 0x01, 0x7c, 0x23, 0x1f, 0xc3, 0x03, 0xa0, 0x23, 0x06, 0x00, + 0x24, 0x06, 0x92, 0xde, 0xbf, 0x7f, 0x25, 0x00, 0x00, 0xb0, 0x38, 0x74, + 0xdc, 0x71, 0x24, 0xc8, 0x35, 0x27, 0x93, 0x4b, 0x93, 0x44, 0x71, 0x24, + 0x54, 0x34, 0x27, 0x83, 0x57, 0x93, 0x1c, 0x00, 0x64, 0x14, 0x00, 0x64, + 0xd4, 0x81, 0xb2, 0x26, 0x40, 0x60, 0xcb, 0x59, 0x00, 0xfd, 0x07, 0x00, + 0xc0, 0xfe, 0x74, 0xc7, 0x53, 0x60, 0x02, 0x04, 0x00, 0x83, 0x03, 0x93, + 0x90, 0x33, 0xe7, 0x18, 0x02, 0xc8, 0xa3, 0xa3, 0x01, 0x63, 0xa1, 0xf7, + 0x28, 0x02, 0xac, 0xfe, 0x00, 0x60, 0x8f, 0x33, 0x03, 0xd3, 0x94, 0xf7, + 0x33, 0xe1, 0xf2, 0x08, 0x8f, 0xb2, 0xea, 0x40, 0x60, 0x87, 0xa3, 0x82, + 0x3c, 0xfa, 0x64, 0x00, 0x7f, 0x24, 0x93, 0xbf, 0x93, 0x67, 0x53, 0x60, + 0x0d, 0x00, 0x00, 0x46, 0x01, 0xc6, 0x8f, 0x93, 0x83, 0x0a, 0x40, 0x20, + 0xb3, 0x4b, 0x93, 0x43, 0xe0, 0xf2, 0x83, 0x87, 0x93, 0x00, 0x4c, 0x24, + 0x86, 0x40, 0x20, 0x3f, 0x53, 0x60, 0x93, 0xf3, 0x82, 0x25, 0x00, 0x00, + 0x88, 0x38, 0x64, 0xd4, 0x81, 0xba, 0x33, 0x90, 0xf2, 0x04, 0x4b, 0x24, + 0x1d, 0x00, 0x00, 0x43, 0xbc, 0x1f, 0x7c, 0x7c, 0xb3, 0x0f, 0x84, 0xf9, + 0xd0, 0x34, 0x27, 0xa3, 0x93, 0x93, 0x40, 0x05, 0x2b, 0x87, 0x73, 0x83, + 0x8f, 0x83, 0x83, 0x8b, 0xa3, 0x83, 0x0d, 0x00, 0x00, 0x03, 0x08, 0x94, + 0xda, 0x45, 0x60, 0x05, 0x00, 0x00, 0x13, 0x90, 0x80, 0xfe, 0x41, 0x20, + 0xb3, 0x73, 0x93, 0x83, 0x53, 0x83, 0xb3, 0xa3, 0x83, 0x8b, 0x43, 0x83, + 0xb3, 0x47, 0x90, 0x05, 0x00, 0x00, 0x44, 0x40, 0x64, 0x93, 0x4f, 0x90, + 0x83, 0xf3, 0x90, 0xb3, 0xab, 0x90, 0xa3, 0x83, 0x90, 0x93, 0xa7, 0x90, + 0x83, 0x8b, 0x90, 0xa3, 0x63, 0x90, 0x83, 0x7f, 0x90, 0xb3, 0x13, 0x90, + 0xa3, 0x07, 0x90, 0x7b, 0xd6, 0x7f, 0x8f, 0x73, 0x83, 0x4c, 0x0f, 0x37, + 0xdf, 0x05, 0x00, 0xe4, 0x05, 0x92, 0x57, 0x09, 0x00, 0xc6, 0xbe, 0x7f, + 0x83, 0xb3, 0x82, 0x25, 0x00, 0x00, 0xbc, 0x38, 0x64, 0x50, 0x7f, 0x24, + 0x30, 0x35, 0x27, 0x08, 0x70, 0x7c, 0xb3, 0x83, 0x92, 0x74, 0x34, 0x72, + 0x82, 0x41, 0x20, 0xdb, 0x8d, 0xe5, 0x2f, 0xb4, 0x7f, 0x54, 0x00, 0x64, + 0x97, 0xbd, 0x7f, 0x47, 0x59, 0x00, 0x82, 0x41, 0x20, 0xa7, 0xf3, 0x7f, + 0xcb, 0xbd, 0x7f, 0x07, 0x5a, 0x00, 0x82, 0x41, 0x20, 0x97, 0xf3, 0x7f, + 0x33, 0xbe, 0x7f, 0x0d, 0x00, 0x00, 0x20, 0x59, 0x64, 0x16, 0x92, 0xc3, + 0x1e, 0x8a, 0xc3, 0x8f, 0x83, 0x82, 0x93, 0xd3, 0x82, 0x83, 0x63, 0x83, + 0x47, 0xdd, 0xf2, 0x7f, 0x8c, 0xf2, 0xc7, 0xd3, 0xf2, 0x83, 0x57, 0x93, + 0x03, 0x52, 0x60, 0x0a, 0x40, 0x20, 0x83, 0x83, 0x82, 0x04, 0xfa, 0x65, + 0xb3, 0xcb, 0x92, 0xd7, 0xc1, 0xf2, 0x40, 0x49, 0x24, 0xe7, 0x51, 0x60, + 0x87, 0x83, 0x82, 0x8f, 0xf3, 0x82, 0x17, 0x84, 0xf2, 0x40, 0x4f, 0x24, + 0x04, 0xfa, 0x64, 0xcf, 0x51, 0x60, 0x57, 0x81, 0xf2, 0x77, 0x97, 0xf2, + 0xfc, 0xb5, 0x3a, 0x12, 0x40, 0x60, 0x9f, 0x43, 0x83, 0x48, 0x1f, 0x37, + 0x5e, 0x43, 0x20, 0x87, 0xa3, 0x82, 0xbf, 0xe6, 0xf2, 0x25, 0x00, 0x00, + 0x34, 0xc4, 0x64, 0xc0, 0x77, 0x24, 0x9b, 0x51, 0x60, 0x93, 0xc3, 0x82, + 0x46, 0x43, 0x20, 0x77, 0x7b, 0x11, 0xcb, 0xd1, 0xf2, 0x00, 0x48, 0x24, + 0x83, 0x51, 0x60, 0x4c, 0x75, 0x24, 0xfc, 0x7c, 0xb3, 0x1d, 0x00, 0x00, + 0xd7, 0xbc, 0x1f, 0x53, 0x8d, 0xf9, 0x07, 0xa8, 0xf2, 0xc0, 0x75, 0x24, + 0x08, 0x35, 0x27, 0x1c, 0x34, 0x27, 0x0f, 0x3f, 0xfe, 0xb3, 0x07, 0x90, + 0xa3, 0x87, 0x92, 0x05, 0x00, 0x00, 0x04, 0x5a, 0x64, 0x83, 0xa7, 0x90, + 0xb3, 0x6b, 0x90, 0xa3, 0x4b, 0x90, 0x83, 0x4f, 0x90, 0xa3, 0x07, 0x90, + 0x93, 0x5f, 0x90, 0x0b, 0xd5, 0x7f, 0x05, 0x00, 0x00, 0x10, 0xe3, 0x55, + 0x97, 0xa3, 0x82, 0x08, 0x02, 0x64, 0x87, 0xe3, 0x82, 0x00, 0x81, 0x86, + 0x82, 0x40, 0x81, 0x84, 0x16, 0x37, 0x0f, 0x94, 0xf2, 0x40, 0x0e, 0x37, + 0x44, 0x00, 0x92, 0xaa, 0xbe, 0x7f, 0x05, 0x00, 0x00, 0x64, 0x6d, 0x64, + 0x83, 0x5f, 0x90, 0xb3, 0x17, 0x90, 0xa3, 0x27, 0x90, 0x83, 0x97, 0x92, + 0xbf, 0xd4, 0x7f, 0x0d, 0x00, 0x00, 0x10, 0x76, 0x4e, 0x0d, 0x00, 0x00, + 0xa8, 0x75, 0x4e, 0x8f, 0x93, 0x82, 0x05, 0x00, 0x00, 0x44, 0x77, 0x64, + 0x08, 0x75, 0x24, 0x9c, 0x76, 0x24, 0x80, 0x34, 0x27, 0xd4, 0x35, 0x27, + 0x83, 0x4f, 0x90, 0xa3, 0x43, 0x90, 0xa3, 0x07, 0x90, 0xb3, 0x57, 0x90, + 0x93, 0x6f, 0x90, 0xb3, 0x1b, 0x90, 0x28, 0x20, 0x64, 0x14, 0x40, 0x64, + 0x6f, 0xd4, 0x7f, 0x05, 0x00, 0x00, 0x24, 0xe3, 0x55, 0x05, 0x00, 0x00, + 0x08, 0x8b, 0x64, 0xa3, 0x0b, 0x90, 0x40, 0x82, 0x86, 0x9e, 0xca, 0x8b, + 0x01, 0x00, 0x00, 0x52, 0xc9, 0x9a, 0x83, 0x53, 0x90, 0xb3, 0x1f, 0x90, + 0xab, 0xa1, 0x01, 0x3b, 0xd4, 0x7f, 0x87, 0x83, 0x82, 0x82, 0x41, 0x20, + 0x07, 0xf3, 0x7f, 0x80, 0x07, 0x64, 0xff, 0xc7, 0x7f, 0x8e, 0x13, 0xc5, + 0x83, 0x99, 0x01, 0x24, 0x02, 0x1f, 0x04, 0x2a, 0x1f, 0x82, 0x41, 0x20, + 0x4b, 0x0e, 0xa0, 0x43, 0x2c, 0xa0, 0x1b, 0xf5, 0x7f, 0x17, 0x6a, 0xf8, + 0x1e, 0x8a, 0xc3, 0x22, 0x92, 0xc3, 0x6e, 0x4a, 0xc0, 0xd0, 0x75, 0x24, + 0x34, 0x76, 0x24, 0x24, 0x35, 0x27, 0x48, 0x37, 0x27, 0x8f, 0xe4, 0xf2, + 0xeb, 0x94, 0xf2, 0x87, 0xee, 0xf2, 0xc3, 0xd6, 0xf2, 0x2c, 0xfa, 0x64, + 0x00, 0x6c, 0x24, 0xef, 0x4f, 0x60, 0x5f, 0xd6, 0xf2, 0x0d, 0x00, 0x00, + 0x2b, 0x00, 0x54, 0x04, 0xfa, 0x65, 0xc0, 0x41, 0x24, 0xd7, 0x4f, 0x60, + 0x03, 0x94, 0xf2, 0x21, 0xd3, 0x1f, 0xd4, 0xd7, 0x64, 0xb3, 0x97, 0x91, + 0x25, 0xf9, 0x1f, 0x90, 0x37, 0x74, 0x83, 0xd3, 0x91, 0xc7, 0x42, 0x02, + 0x25, 0xb9, 0x1f, 0x50, 0x30, 0x64, 0x83, 0x83, 0x92, 0x93, 0xd3, 0x91, + 0x93, 0x87, 0x92, 0xa3, 0x93, 0x82, 0xfc, 0x12, 0x5a, 0x04, 0xfa, 0x64, + 0xb7, 0x33, 0x03, 0x1c, 0x0a, 0x58, 0x80, 0x7e, 0x24, 0x67, 0x57, 0xf8, + 0x93, 0xa3, 0x92, 0x7f, 0x4f, 0x60, 0x8b, 0x83, 0x82, 0x0f, 0x88, 0xf2, + 0xe0, 0x64, 0x24, 0x03, 0xa2, 0x5f, 0x6b, 0x4f, 0x60, 0x84, 0x02, 0x64, + 0x50, 0x46, 0x24, 0xf7, 0x81, 0xf2, 0x04, 0xfa, 0x64, 0x03, 0xa1, 0xf2, + 0x53, 0x4f, 0x60, 0xc3, 0x81, 0xf2, 0x05, 0x00, 0x00, 0x64, 0x94, 0x64, + 0x5f, 0x3f, 0xfe, 0x37, 0x3c, 0xfe, 0xa3, 0x27, 0x90, 0x93, 0x5f, 0x90, + 0x83, 0x77, 0x90, 0xb3, 0x17, 0x90, 0x24, 0x04, 0x64, 0x03, 0xd3, 0x7f, + 0x44, 0x01, 0xb2, 0x12, 0x00, 0x60, 0x4c, 0x81, 0xba, 0x3c, 0x0c, 0x64, + 0xe6, 0x43, 0x81, 0x48, 0x43, 0x2b, 0xdf, 0x49, 0xfb, 0x09, 0x00, 0x00, + 0x34, 0xed, 0x64, 0x4f, 0x03, 0x80, 0x3d, 0x00, 0x00, 0xc6, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x40, 0x00, 0x92, 0x52, 0x01, 0x60, 0x57, 0x05, 0x00, + 0x58, 0x81, 0x92, 0x42, 0xff, 0x7f, 0x09, 0xc7, 0x3c, 0x50, 0xeb, 0x64, + 0x31, 0x85, 0x39, 0xd4, 0x6a, 0x64, 0xa3, 0xd3, 0x91, 0x93, 0x57, 0x92, + 0x31, 0x90, 0x3a, 0x50, 0xac, 0x74, 0x39, 0xd6, 0x38, 0x00, 0xfc, 0x64, + 0x3d, 0x5f, 0x23, 0x7c, 0xb6, 0x64, 0x1d, 0xde, 0x24, 0xc8, 0xf4, 0x64, + 0x1d, 0xc1, 0x24, 0x4c, 0xfe, 0x64, 0x1d, 0x35, 0x36, 0x44, 0xee, 0x64, + 0xa3, 0x53, 0x92, 0x31, 0x00, 0x00, 0x50, 0xb0, 0x64, 0xb3, 0xc3, 0x91, + 0x93, 0x3f, 0x92, 0xa3, 0x0b, 0x92, 0xb3, 0x0f, 0x92, 0x83, 0x47, 0x92, + 0xb3, 0x53, 0xa2, 0x3d, 0x70, 0x47, 0x9c, 0x3c, 0x64, 0x83, 0x1f, 0x92, + 0x1c, 0x00, 0x64, 0xca, 0x41, 0x20, 0xfd, 0x07, 0x00, 0xc0, 0xfe, 0x74, + 0x6b, 0x4e, 0x60, 0x02, 0x04, 0x00, 0xa3, 0x03, 0x93, 0xb0, 0x33, 0xe7, + 0x20, 0x02, 0xc8, 0x74, 0x05, 0x2b, 0x0d, 0x00, 0x00, 0x67, 0x63, 0x84, + 0xb3, 0xa3, 0x01, 0x04, 0xfa, 0x64, 0x2f, 0x97, 0xf2, 0x80, 0x66, 0x24, + 0x23, 0x4e, 0x60, 0x8b, 0x83, 0x82, 0xee, 0x42, 0xc2, 0x0d, 0x00, 0x00, + 0x5a, 0x31, 0xc6, 0x0d, 0x00, 0x00, 0x77, 0x11, 0x0c, 0x0f, 0x88, 0xf2, + 0xf0, 0x6c, 0x24, 0x03, 0xa3, 0x5f, 0xfb, 0x4d, 0x60, 0xa7, 0x81, 0xf2, + 0x43, 0x27, 0xa0, 0x84, 0x02, 0x64, 0xd0, 0x46, 0x24, 0x03, 0xb1, 0xf2, + 0x04, 0xfa, 0x64, 0xdf, 0x4d, 0x60, 0x83, 0x81, 0xf2, 0x5b, 0x83, 0xa0, + 0x67, 0x3e, 0xfe, 0x0b, 0x3c, 0xfe, 0x05, 0x00, 0x00, 0x0c, 0x9e, 0x64, + 0x93, 0x67, 0x90, 0x83, 0x4b, 0x90, 0xb3, 0x1f, 0x90, 0xa3, 0x0f, 0x90, + 0x8f, 0xd1, 0x7f, 0xdf, 0x05, 0x00, 0xcc, 0x05, 0x92, 0x57, 0x09, 0x00, + 0x46, 0xbf, 0x7f, 0x43, 0xb8, 0x7f, 0xc7, 0x90, 0x32, 0xac, 0x85, 0x48, + 0x46, 0x40, 0x60, 0xd2, 0xb8, 0x00, 0x28, 0x01, 0x92, 0x3a, 0x00, 0x60, + 0x40, 0xa7, 0x1d, 0x47, 0xc8, 0x7f, 0x40, 0x91, 0x26, 0x22, 0x40, 0x20, + 0xca, 0x41, 0x20, 0x2a, 0x40, 0x60, 0x47, 0x12, 0x00, 0x42, 0x43, 0x20, + 0x3f, 0xc8, 0x7f, 0x22, 0x42, 0x21, 0x0a, 0x42, 0x20, 0x40, 0xa7, 0x1d, + 0x2f, 0xc8, 0x7f, 0x77, 0x13, 0x00, 0x4f, 0xbe, 0x7f, 0x47, 0x22, 0x00, + 0x42, 0x43, 0x20, 0x1b, 0xc8, 0x7f, 0x22, 0xc2, 0x20, 0xdf, 0xbf, 0x7f, + 0x05, 0x00, 0x00, 0xfc, 0xa7, 0x64, 0xb3, 0x1f, 0x90, 0xa3, 0x3f, 0x90, + 0xff, 0xd0, 0x7f, 0x73, 0xbf, 0x7f, 0xff, 0x59, 0x00, 0x05, 0x00, 0x00, + 0x10, 0x38, 0x64, 0x2f, 0xba, 0x7f, 0x00, 0x3c, 0x23, 0x03, 0x10, 0xe6, + 0x0d, 0x00, 0x00, 0x18, 0x3e, 0x4e, 0x1e, 0x40, 0x20, 0x84, 0x41, 0x2b, + 0x5a, 0x7c, 0x26, 0x8a, 0x41, 0x20, 0x04, 0x04, 0x64, 0xc3, 0xc7, 0x7f, + 0x8a, 0x41, 0x20, 0xc3, 0x81, 0x50, 0xb7, 0xc7, 0x7f, 0x8a, 0x41, 0x20, + 0xc3, 0xc1, 0x50, 0x03, 0x14, 0xe6, 0xa7, 0x87, 0x7f, 0x0f, 0x28, 0xe5, + 0x05, 0x00, 0x00, 0x08, 0x41, 0x64, 0x04, 0x11, 0x64, 0x1e, 0x40, 0x20, + 0x8f, 0xc7, 0x7f, 0x40, 0x00, 0x64, 0x5f, 0xc4, 0x7f, 0x05, 0x00, 0x00, + 0x48, 0x41, 0x64, 0xc3, 0x11, 0x51, 0x77, 0xc7, 0x7f, 0x14, 0x18, 0x64, + 0x01, 0x00, 0x85, 0x20, 0x00, 0x64, 0x01, 0x00, 0x05, 0x24, 0x00, 0x64, + 0x20, 0x18, 0xc8, 0x8c, 0x01, 0x92, 0x4a, 0x42, 0x20, 0x0a, 0x00, 0x60, + 0x0a, 0x42, 0x20, 0xc0, 0x95, 0x1d, 0x47, 0xc7, 0x7f, 0xc0, 0x95, 0x1d, + 0x2b, 0xc7, 0x7f, 0x9b, 0x05, 0x00, 0x9c, 0x81, 0x92, 0x57, 0x11, 0x00, + 0xd2, 0xff, 0x7f, 0x09, 0x00, 0x00, 0x48, 0x00, 0x64, 0xc3, 0x41, 0x51, + 0x0b, 0x2c, 0xe5, 0x1b, 0x87, 0x7f, 0x0f, 0x28, 0xe5, 0xb0, 0x00, 0x72, + 0x00, 0x08, 0x2b, 0x0d, 0x00, 0x00, 0x1b, 0xf0, 0x82, 0x90, 0x18, 0xc8, + 0x1c, 0x18, 0x64, 0x01, 0x00, 0x85, 0x20, 0x00, 0x64, 0x80, 0x9d, 0x1d, + 0x0a, 0x42, 0x20, 0xeb, 0xc6, 0x7f, 0x80, 0x9d, 0x1d, 0xcf, 0xc6, 0x7f, + 0x57, 0x05, 0x00, 0x5c, 0x01, 0x92, 0xdf, 0x11, 0x00, 0xe2, 0xbf, 0x7f, + 0x45, 0x40, 0x46, 0x88, 0x91, 0x64, 0x83, 0x51, 0x51, 0x0b, 0x2c, 0xe5, + 0xbf, 0x86, 0x7f, 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x00, 0x40, 0x55, + 0x04, 0x00, 0xa1, 0x01, 0x12, 0x00, 0x04, 0x84, 0x80, 0x00, 0x3c, 0x23, + 0x6b, 0x88, 0xe5, 0x1a, 0x40, 0x20, 0x01, 0x05, 0x00, 0x40, 0x00, 0x64, + 0xff, 0xcf, 0x7f, 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, 0x38, 0x1a, 0x72, + 0x09, 0x00, 0x00, 0x20, 0xeb, 0x64, 0xa7, 0x11, 0x02, 0x03, 0x66, 0xf7, + 0x10, 0x02, 0xc8, 0x94, 0x11, 0x2b, 0x0d, 0x00, 0x00, 0x57, 0x81, 0x0b, + 0x40, 0x01, 0xe7, 0x50, 0x01, 0xe7, 0x60, 0x01, 0xe7, 0x70, 0x01, 0xe7, + 0x04, 0x10, 0x64, 0x37, 0xc6, 0x7f, 0x00, 0x70, 0x94, 0x19, 0x00, 0x00, + 0x1e, 0x40, 0x3c, 0x03, 0x66, 0xf7, 0xca, 0x41, 0x20, 0x04, 0x10, 0x64, + 0x20, 0x00, 0x64, 0x2b, 0xc6, 0x7f, 0x80, 0x25, 0x64, 0xfb, 0xc2, 0x7f, + 0x83, 0x01, 0x50, 0xef, 0xee, 0x7f, 0x33, 0x0c, 0x50, 0x4a, 0x41, 0x20, + 0x09, 0x00, 0x00, 0x28, 0xeb, 0x64, 0xaf, 0x11, 0x02, 0x83, 0x6e, 0xf7, + 0xcf, 0xa1, 0xd3, 0x04, 0x10, 0x64, 0x83, 0xcb, 0x90, 0xca, 0x41, 0x20, + 0xef, 0xc5, 0x7f, 0x80, 0x07, 0x64, 0xbf, 0xc2, 0x7f, 0x83, 0x01, 0x50, + 0xb3, 0xee, 0x7f, 0x26, 0x40, 0x20, 0x83, 0x6e, 0xf7, 0x07, 0x06, 0x00, + 0xcf, 0x85, 0xd3, 0xca, 0x41, 0x20, 0x04, 0x10, 0x64, 0xc3, 0xc5, 0x7f, + 0x80, 0x07, 0x64, 0x93, 0xc2, 0x7f, 0x83, 0x01, 0x50, 0x87, 0xee, 0x7f, + 0x8f, 0xc3, 0x80, 0x64, 0x42, 0x2b, 0x27, 0x64, 0xfb, 0x23, 0x0a, 0x00, + 0xca, 0x40, 0x20, 0x90, 0x24, 0x7a, 0x77, 0x47, 0x00, 0x22, 0x1e, 0x00, + 0x04, 0xf7, 0x73, 0x30, 0x07, 0xa8, 0x83, 0x6e, 0xf7, 0x73, 0x31, 0x90, + 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, 0x77, 0xc5, 0x7f, 0x80, 0x07, 0x64, + 0x47, 0xc2, 0x7f, 0x13, 0x00, 0x60, 0x50, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x93, 0x82, 0x01, 0x05, 0x00, 0x80, 0x00, 0x64, 0xc3, 0xce, 0x7f, + 0x09, 0x00, 0x00, 0x14, 0xeb, 0x64, 0xab, 0x11, 0x02, 0x43, 0x69, 0xf7, + 0xf8, 0x42, 0xc8, 0x05, 0x00, 0x00, 0x3c, 0xe3, 0x55, 0xf8, 0x3f, 0xc8, + 0x11, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, 0x23, 0xc5, 0x7f, + 0x80, 0x07, 0x64, 0xf3, 0xc1, 0x7f, 0x83, 0x01, 0x50, 0xe7, 0xed, 0x7f, + 0x1e, 0x40, 0x20, 0x25, 0x00, 0x00, 0xa4, 0x38, 0x64, 0x73, 0xce, 0x7f, + 0x29, 0x00, 0x00, 0x04, 0x00, 0x64, 0xc0, 0x65, 0x24, 0x17, 0x4a, 0x60, + 0x04, 0x64, 0x24, 0x1d, 0x00, 0x00, 0x4f, 0xbc, 0x1f, 0x7c, 0x7c, 0xb3, + 0xe3, 0x84, 0xf9, 0x08, 0x36, 0x27, 0xb3, 0x03, 0x90, 0x83, 0xc3, 0x90, + 0x05, 0x00, 0x00, 0xc0, 0xab, 0x64, 0x83, 0x4b, 0x90, 0xa3, 0x03, 0x90, + 0x20, 0xfa, 0x64, 0xbb, 0xcd, 0x7f, 0x87, 0xc3, 0x80, 0x05, 0x00, 0x00, + 0x50, 0x64, 0x64, 0x0f, 0xc5, 0xf2, 0xc0, 0x60, 0x24, 0x07, 0xe5, 0x06, + 0xc3, 0x49, 0x60, 0x88, 0x05, 0x2b, 0x0d, 0x00, 0x00, 0xa3, 0x80, 0xa5, + 0x22, 0x40, 0x20, 0x03, 0xc8, 0x0d, 0x38, 0xe4, 0xb6, 0x92, 0x42, 0x60, + 0x80, 0xa1, 0x1d, 0x53, 0xec, 0x7f, 0x43, 0x69, 0xf7, 0x05, 0x00, 0x00, + 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, 0x67, 0xc4, 0x7f, 0x80, 0x07, 0x64, + 0x37, 0xc1, 0x7f, 0x43, 0x69, 0xf7, 0x0d, 0x00, 0x00, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0x4b, 0xc4, 0x7f, 0x80, 0x07, 0x64, 0x1b, 0xc1, 0x7f, + 0x82, 0x41, 0x20, 0x57, 0xed, 0x7f, 0x1f, 0x3c, 0xfe, 0x01, 0x0c, 0x00, + 0x00, 0x00, 0x64, 0x9b, 0xcd, 0x7f, 0xc2, 0x41, 0x20, 0x93, 0xcd, 0x7f, + 0xec, 0x65, 0x24, 0xd0, 0x36, 0x27, 0x05, 0x00, 0x00, 0x44, 0xb4, 0x64, + 0x83, 0x53, 0x90, 0xb3, 0x1f, 0x90, 0xa3, 0x07, 0x90, 0x03, 0xcd, 0x7f, + 0x05, 0x00, 0x00, 0x0c, 0xe3, 0x55, 0x08, 0x10, 0x64, 0xc0, 0x00, 0x92, + 0x82, 0x80, 0x80, 0x07, 0xc2, 0xf2, 0x82, 0x41, 0x20, 0xbb, 0xeb, 0x7f, + 0x80, 0x07, 0x64, 0xb3, 0xc0, 0x7f, 0x82, 0x41, 0x20, 0xef, 0xec, 0x7f, + 0x2f, 0x3c, 0xfe, 0x01, 0x0c, 0x00, 0x40, 0x00, 0x64, 0x33, 0xcd, 0x7f, + 0xc2, 0x42, 0x20, 0x2b, 0xcd, 0x7f, 0xd0, 0x66, 0x24, 0x04, 0x35, 0x27, + 0x05, 0x00, 0x00, 0x0c, 0xbd, 0x64, 0x83, 0x47, 0x90, 0xa3, 0x0f, 0x90, + 0xb3, 0x2f, 0x90, 0xdf, 0xed, 0xf2, 0xdc, 0x65, 0x24, 0x93, 0xcc, 0x7f, + 0x01, 0x0c, 0x00, 0x80, 0x00, 0x64, 0xf7, 0xcc, 0x7f, 0x1d, 0x00, 0x00, + 0xcb, 0xbd, 0x1f, 0xfc, 0xfd, 0xb3, 0x83, 0xdc, 0xf9, 0x00, 0x34, 0x27, + 0xdf, 0xcc, 0x7f, 0x3d, 0x01, 0x00, 0xfc, 0x7d, 0xb3, 0x72, 0x01, 0x60, + 0x80, 0xa1, 0x1d, 0x33, 0xeb, 0x7f, 0x80, 0x07, 0x64, 0x2b, 0xc0, 0x7f, + 0x01, 0x0c, 0x00, 0xc0, 0x00, 0x64, 0xb7, 0xcc, 0x7f, 0x50, 0x00, 0x64, + 0x05, 0x00, 0x00, 0x64, 0xd0, 0x81, 0x05, 0x00, 0x00, 0x00, 0xe3, 0x55, + 0xc0, 0x02, 0xc8, 0x6b, 0x69, 0xf7, 0xfd, 0x07, 0x00, 0xc8, 0xff, 0x64, + 0x05, 0x00, 0x00, 0xe4, 0xc5, 0x64, 0x2c, 0x08, 0x64, 0x83, 0x12, 0x52, + 0x0f, 0xc3, 0x7f, 0x83, 0x82, 0x52, 0x01, 0x00, 0xf4, 0x08, 0x00, 0x64, + 0xff, 0xc2, 0x7f, 0x01, 0x05, 0x00, 0xc0, 0x00, 0x64, 0x63, 0xcc, 0x7f, + 0xa3, 0x27, 0x90, 0x28, 0x04, 0x64, 0x1c, 0x13, 0x64, 0x05, 0x00, 0x00, + 0x60, 0xcc, 0x64, 0xdb, 0xcb, 0x7f, 0x04, 0x0c, 0x64, 0x4c, 0x15, 0x64, + 0xc8, 0x14, 0x64, 0xb3, 0x87, 0x90, 0x83, 0x8f, 0xb0, 0x8b, 0x8b, 0xb0, + 0x93, 0xab, 0x90, 0xa3, 0xaf, 0x90, 0x87, 0x9f, 0xb0, 0xa7, 0x13, 0x01, + 0x5f, 0x21, 0x00, 0x05, 0x00, 0x00, 0xe8, 0xcf, 0x64, 0x6c, 0x9b, 0x64, + 0xd7, 0x01, 0x80, 0x3d, 0x00, 0x00, 0x7e, 0x01, 0x00, 0x3d, 0x00, 0x00, + 0xc0, 0x83, 0x92, 0xde, 0x40, 0x60, 0x82, 0x41, 0x20, 0x53, 0xe9, 0x7f, + 0x1c, 0x00, 0x64, 0x05, 0x00, 0x00, 0xa0, 0xd5, 0x64, 0x80, 0x9d, 0x1d, + 0xf3, 0xe8, 0x7f, 0x83, 0x43, 0x90, 0xb3, 0x1f, 0x90, 0xa3, 0x23, 0x90, + 0xdf, 0x05, 0x00, 0x5b, 0xcb, 0x7f, 0xcc, 0x05, 0x92, 0xe2, 0xbf, 0x7f, + 0x0d, 0x00, 0x00, 0x14, 0x59, 0x64, 0x83, 0x99, 0x01, 0xa3, 0xa1, 0x01, + 0x90, 0x11, 0x64, 0x5c, 0x01, 0x1f, 0x44, 0x21, 0x1f, 0x01, 0x05, 0x00, + 0x00, 0x01, 0x64, 0x43, 0x10, 0xa0, 0xcb, 0x11, 0xa0, 0x93, 0xcb, 0x7f, + 0x4b, 0x61, 0xf8, 0xc6, 0x49, 0xc0, 0x82, 0x41, 0x20, 0xb3, 0xf1, 0x7f, + 0x01, 0x05, 0x00, 0x40, 0x01, 0x64, 0x77, 0xcb, 0x7f, 0x01, 0x05, 0x00, + 0xc0, 0x01, 0x64, 0x6b, 0x8c, 0xe5, 0x67, 0x8b, 0x7f, 0x01, 0x0c, 0x00, + 0x00, 0x01, 0x64, 0x5b, 0xcb, 0x7f, 0x82, 0x41, 0x20, 0xdb, 0xe8, 0x7f, + 0x80, 0x07, 0x64, 0xb3, 0x7e, 0x7f, 0x10, 0x00, 0x64, 0x97, 0xbe, 0x7f, + 0x82, 0x41, 0x20, 0xaf, 0xef, 0x7f, 0x3c, 0xc1, 0x73, 0x82, 0x41, 0x20, + 0xb7, 0xe8, 0x7f, 0x01, 0x05, 0x00, 0x80, 0x01, 0x64, 0xaf, 0xbf, 0x7f, + 0x4f, 0x91, 0x32, 0xac, 0x8d, 0x48, 0x8e, 0x40, 0x60, 0x4a, 0xb9, 0x00, + 0xa8, 0x00, 0x92, 0x82, 0x00, 0x60, 0x77, 0x25, 0x37, 0xb3, 0x37, 0x90, + 0xa3, 0x23, 0x90, 0x14, 0x00, 0x64, 0x87, 0xca, 0x7f, 0x77, 0x56, 0xf7, + 0xc0, 0xb5, 0x1d, 0x67, 0xc1, 0x7f, 0x51, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x80, 0x92, 0xe6, 0xff, 0x7f, 0x47, 0x33, 0x00, + 0xc2, 0x41, 0x20, 0x47, 0xc1, 0x7f, 0x93, 0x03, 0x01, 0x47, 0x91, 0xf6, + 0x0c, 0x40, 0x31, 0x0b, 0x3c, 0xfe, 0xa3, 0x4f, 0x90, 0x93, 0x47, 0x90, + 0x83, 0x4b, 0x90, 0xb3, 0x07, 0x90, 0xa3, 0x2b, 0x90, 0x57, 0x05, 0x00, + 0xd7, 0xca, 0x7f, 0x4c, 0x01, 0x92, 0xa6, 0xbf, 0x7f, 0xa3, 0x2f, 0x90, + 0xc7, 0xca, 0x7f, 0xdf, 0x11, 0x00, 0x7b, 0xbe, 0x7f, 0x03, 0x08, 0xe6, + 0x04, 0x00, 0x64, 0x1a, 0x40, 0x20, 0x18, 0x04, 0xc8, 0xcd, 0xff, 0xff, + 0xfc, 0xff, 0x62, 0x82, 0x41, 0x20, 0xf0, 0x8b, 0x62, 0x82, 0x41, 0x20, + 0xe0, 0xef, 0x62, 0x83, 0xc2, 0xfe, 0x0a, 0x48, 0x20, 0x83, 0x78, 0xfe, + 0x4c, 0x00, 0x64, 0x9b, 0x0d, 0xf2, 0x93, 0x0d, 0xf2, 0x0d, 0x00, 0x00, + 0xc3, 0xbc, 0x1f, 0xf8, 0x8b, 0x62, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x4f, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x82, 0x41, 0x20, + 0xec, 0x83, 0x62, 0xe4, 0x8b, 0x62, 0x0b, 0x00, 0xe0, 0x04, 0x00, 0x64, + 0x28, 0x04, 0xc8, 0xa3, 0x03, 0x90, 0xcd, 0xff, 0xff, 0xf8, 0xdf, 0x62, + 0x83, 0x23, 0x80, 0xf8, 0xf3, 0x63, 0x00, 0x3c, 0x23, 0x00, 0x3c, 0x23, + 0x1b, 0x00, 0xe0, 0x0c, 0x00, 0x64, 0x38, 0x0c, 0xc8, 0x83, 0x4b, 0x90, + 0x88, 0x03, 0xd8, 0xcd, 0xff, 0xff, 0xf4, 0xd7, 0x62, 0x8b, 0x43, 0x80, + 0x80, 0x0b, 0xd0, 0xf7, 0xcc, 0x7f, 0xf0, 0xfb, 0x63, 0x4b, 0xe0, 0xf1, + 0x08, 0x08, 0x49, 0xc4, 0x00, 0x70, 0x0f, 0x4a, 0xf2, 0x67, 0xc3, 0xfe, + 0x00, 0x3c, 0x23, 0x83, 0xc2, 0xfe, 0x02, 0x78, 0x27, 0x03, 0x78, 0xfe, + 0x00, 0x04, 0x23, 0x70, 0xfc, 0x63, 0x80, 0x00, 0x64, 0x1b, 0x02, 0xf2, + 0x67, 0xc3, 0xfe, 0x83, 0xa0, 0xf1, 0x02, 0x48, 0x20, 0x0b, 0x02, 0xf2, + 0x67, 0xc3, 0xfe, 0x07, 0x00, 0xfe, 0x4c, 0xfc, 0x63, 0x43, 0xe0, 0xf1, + 0xfd, 0xbf, 0xff, 0x00, 0x00, 0x64, 0x07, 0x42, 0xf2, 0x67, 0xc3, 0xfe, + 0x8f, 0x1f, 0xfe, 0x0e, 0x40, 0x20, 0x10, 0x00, 0x64, 0x00, 0x10, 0x1e, + 0x03, 0x04, 0x00, 0x00, 0x08, 0x1e, 0xc0, 0x04, 0x1e, 0x00, 0x3c, 0x23, + 0x57, 0xc3, 0xfe, 0x88, 0x81, 0x62, 0x1f, 0x08, 0xfe, 0x48, 0x89, 0x62, + 0x0f, 0xa5, 0xf1, 0xd0, 0xe8, 0xa3, 0x83, 0x10, 0x90, 0x13, 0x8f, 0xf1, + 0x93, 0x10, 0x90, 0x93, 0x8f, 0xf1, 0xa3, 0x10, 0x90, 0xe4, 0x30, 0x26, + 0x1b, 0x00, 0xf3, 0x53, 0x87, 0xf1, 0xb3, 0x14, 0x90, 0xd0, 0x30, 0x26, + 0x2b, 0x00, 0xf3, 0x13, 0xce, 0xf1, 0xa3, 0x10, 0x90, 0x93, 0xce, 0xf1, + 0xb3, 0x10, 0x90, 0xd4, 0x30, 0x26, 0x2b, 0x00, 0xf3, 0x0f, 0xdd, 0xf1, + 0xa3, 0x0c, 0x90, 0x8f, 0xdd, 0xf1, 0xb3, 0x0c, 0x90, 0x00, 0x18, 0x23, + 0x64, 0x81, 0x62, 0x01, 0x00, 0xfb, 0x0c, 0x00, 0x64, 0x83, 0x0c, 0x90, + 0x0f, 0x8c, 0xf1, 0x93, 0x0c, 0x90, 0x8f, 0x8c, 0xf1, 0xa3, 0x0c, 0x90, + 0x00, 0x18, 0x23, 0x05, 0x10, 0x00, 0x08, 0x28, 0x64, 0x40, 0x08, 0xc8, + 0x0f, 0xe0, 0xf1, 0xb3, 0x0c, 0x90, 0x83, 0x40, 0x90, 0x93, 0x44, 0x90, + 0xa3, 0x78, 0x90, 0xb3, 0x7c, 0x90, 0x00, 0x14, 0x23, 0x00, 0x18, 0x23, + 0x73, 0x87, 0xf1, 0x76, 0x53, 0x20, 0x77, 0x30, 0xf2, 0xb3, 0xc2, 0xfe, + 0x32, 0x43, 0x04, 0x03, 0x7b, 0xfe, 0x30, 0x80, 0x64, 0x6b, 0x32, 0xf2, + 0x67, 0xc3, 0xfe, 0xcf, 0x1d, 0xfe, 0x57, 0xc3, 0xfe, 0x58, 0x00, 0x64, + 0x10, 0x18, 0xc8, 0x98, 0xf1, 0x63, 0x3f, 0x06, 0xfe, 0x9f, 0x1d, 0xfe, + 0x05, 0x00, 0x00, 0x27, 0x43, 0xf9, 0x83, 0x9d, 0xf1, 0x07, 0x9e, 0xf1, + 0x03, 0xc4, 0xfb, 0x02, 0x04, 0x00, 0x68, 0x00, 0xc8, 0xeb, 0x01, 0xf2, + 0x83, 0xc2, 0xfe, 0x02, 0x40, 0x24, 0x03, 0x78, 0xfe, 0x43, 0x87, 0xf1, + 0x46, 0x60, 0x20, 0x77, 0x00, 0xf2, 0x00, 0x80, 0x64, 0x6b, 0x02, 0xf2, + 0x05, 0x00, 0x00, 0x43, 0x72, 0xf4, 0x2b, 0xc3, 0xfe, 0x05, 0x00, 0x00, + 0x43, 0x72, 0xf4, 0xef, 0x1c, 0xfe, 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, + 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, + 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, + 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, + 0x80, 0x40, 0x74, 0xd8, 0x8b, 0x62, 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, + 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, + 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, + 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, + 0x40, 0x40, 0x74, 0xd8, 0x87, 0x62, 0x09, 0x00, 0x00, 0x37, 0x53, 0xf9, + 0x10, 0x00, 0x64, 0xc9, 0xff, 0xff, 0xec, 0x93, 0x73, 0x93, 0xc2, 0xfe, + 0x12, 0x41, 0x24, 0x03, 0x79, 0xfe, 0x53, 0x87, 0xf1, 0x56, 0x41, 0x24, + 0x77, 0x10, 0xf2, 0x10, 0x80, 0x64, 0x5b, 0x12, 0xf2, 0x6b, 0x12, 0xf2, + 0x93, 0x8c, 0xf1, 0x12, 0x41, 0x04, 0xcb, 0x10, 0xf2, 0x67, 0xc3, 0xfe, + 0x09, 0x00, 0x00, 0x53, 0x73, 0xf4, 0x33, 0xc3, 0xfe, 0x1b, 0x10, 0xe6, + 0x09, 0x00, 0x00, 0x04, 0xc1, 0x81, 0x7d, 0x00, 0x00, 0x3c, 0x7c, 0xaf, + 0x5e, 0x40, 0x20, 0x0e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x24, 0xc5, 0x81, + 0x58, 0x00, 0x64, 0xb3, 0x03, 0x90, 0xa3, 0x1b, 0x90, 0x07, 0x00, 0xfd, + 0x83, 0x47, 0xb0, 0x01, 0x00, 0xf0, 0x48, 0x04, 0x64, 0xc0, 0x00, 0x74, + 0xc4, 0x87, 0x62, 0x82, 0x83, 0xe0, 0x00, 0xe0, 0x26, 0x1a, 0x40, 0x60, + 0x88, 0x1b, 0xd8, 0x01, 0x00, 0xf0, 0x48, 0x01, 0x64, 0xc0, 0x00, 0x74, + 0xe4, 0x83, 0x62, 0x48, 0x00, 0x64, 0xa3, 0x0b, 0x90, 0x00, 0x00, 0x74, + 0x01, 0x00, 0xf0, 0x48, 0x00, 0x64, 0xcc, 0x83, 0x62, 0x40, 0x00, 0x64, + 0xf8, 0xc7, 0x63, 0x03, 0x80, 0xe5, 0x20, 0x84, 0x1d, 0x10, 0x7a, 0x31, + 0xb3, 0x23, 0x00, 0x4c, 0x0a, 0x2b, 0x3c, 0x02, 0xa7, 0x03, 0x33, 0x01, + 0xd3, 0x50, 0xfb, 0x9b, 0x23, 0x40, 0x06, 0x40, 0x20, 0x22, 0x41, 0x20, + 0xd6, 0x43, 0x20, 0x84, 0x14, 0x72, 0x87, 0x0d, 0x00, 0x4e, 0x4c, 0x00, + 0xd3, 0x20, 0x00, 0xbb, 0xd3, 0xf2, 0xcc, 0x01, 0x64, 0xa3, 0x0f, 0xb0, + 0x87, 0x23, 0x00, 0x47, 0x08, 0x90, 0x8f, 0x37, 0x00, 0x0c, 0x3d, 0x72, + 0x03, 0xa3, 0x80, 0x8b, 0x4d, 0x00, 0xc8, 0x9b, 0x62, 0xfa, 0x41, 0x20, + 0x07, 0x84, 0xe5, 0x4e, 0x1d, 0x00, 0xcf, 0x44, 0x00, 0xcc, 0x00, 0xb6, + 0x3a, 0x00, 0x60, 0x64, 0x00, 0x64, 0x4c, 0x8e, 0x40, 0xd0, 0x80, 0xba, + 0x60, 0x40, 0x70, 0x0a, 0x40, 0x60, 0x47, 0x10, 0x00, 0x9b, 0x8d, 0xf2, + 0x4c, 0x0d, 0x31, 0x18, 0x0c, 0xc8, 0xd0, 0x90, 0x1d, 0x4e, 0x41, 0x20, + 0xd0, 0x90, 0x1d, 0x83, 0xbf, 0x7f, 0xd0, 0x80, 0x92, 0xe6, 0xff, 0x7f, + 0x67, 0x00, 0x80, 0x9b, 0x05, 0x00, 0x47, 0x10, 0x00, 0x4c, 0x06, 0x5e, + 0x9b, 0x05, 0x00, 0xc4, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0xc7, 0xbf, 0x7f, + 0xca, 0x1f, 0x00, 0x8b, 0x44, 0x00, 0x8c, 0x00, 0xb6, 0x4e, 0x00, 0x60, + 0x50, 0x00, 0x64, 0x08, 0x89, 0x40, 0x90, 0x80, 0xba, 0x32, 0x40, 0x60, + 0x10, 0x10, 0x5a, 0xc3, 0x10, 0x90, 0xcf, 0x88, 0xf2, 0xc8, 0x0f, 0x31, + 0x20, 0x08, 0xc8, 0x3e, 0x42, 0x20, 0xa2, 0x40, 0x20, 0xca, 0x43, 0x20, + 0x3e, 0x42, 0x20, 0xa2, 0x40, 0x20, 0x37, 0xbf, 0x7f, 0x10, 0x08, 0xf0, + 0xc0, 0x10, 0xd8, 0xd7, 0xbf, 0x7f, 0x90, 0x80, 0x92, 0xd2, 0xff, 0x7f, + 0xc0, 0x00, 0xe4, 0x03, 0x10, 0x00, 0xcf, 0x04, 0x00, 0x13, 0xf0, 0x8f, + 0x08, 0x05, 0x5e, 0xc4, 0x08, 0x78, 0x84, 0x00, 0x66, 0xf6, 0xbf, 0x7f, + 0xaf, 0xbf, 0x7f, 0x18, 0x00, 0x64, 0x10, 0x18, 0xc8, 0xc0, 0xdb, 0x1f, + 0x57, 0x17, 0xfe, 0x00, 0x7c, 0x31, 0x00, 0xfc, 0xa1, 0x00, 0x3c, 0x23, + 0x03, 0x18, 0xe5, 0x18, 0x84, 0x1d, 0x09, 0x00, 0x00, 0x00, 0xea, 0x52, + 0x96, 0x40, 0x20, 0x00, 0x00, 0x66, 0x16, 0x00, 0x60, 0x4a, 0x41, 0x20, + 0x80, 0x9d, 0x1d, 0xf8, 0x93, 0x62, 0x07, 0x1c, 0xe5, 0x08, 0x00, 0x64, + 0x00, 0x00, 0x74, 0xe8, 0x93, 0x62, 0xfd, 0xff, 0xff, 0x3c, 0xfc, 0x87, + 0x12, 0x40, 0x60, 0x44, 0x00, 0x64, 0x09, 0x00, 0x00, 0x44, 0xc5, 0x7f, + 0x09, 0x00, 0x00, 0x08, 0xea, 0x52, 0x84, 0x00, 0x66, 0xc2, 0xbf, 0x7f, + 0x4a, 0x41, 0x20, 0x80, 0x9d, 0x1d, 0xcc, 0xfb, 0x63, 0xbf, 0xbf, 0x7f, + 0x03, 0x00, 0xe0, 0xcc, 0xfb, 0x63, 0x03, 0x60, 0x20, 0x07, 0x04, 0xe0, + 0xb7, 0x00, 0xfe, 0x1f, 0x01, 0xfe, 0x03, 0x00, 0xe0, 0xc4, 0x8b, 0x62, + 0x40, 0x80, 0x1d, 0x07, 0x04, 0xe0, 0x03, 0x18, 0xe5, 0x10, 0x84, 0x1d, + 0x60, 0x08, 0xc8, 0x00, 0x08, 0x64, 0x03, 0xc8, 0xf2, 0x18, 0x00, 0x74, + 0x0c, 0x00, 0x25, 0x58, 0x8d, 0x3e, 0x2c, 0x00, 0xc8, 0x5c, 0x89, 0x3e, + 0x44, 0x81, 0x40, 0x08, 0x89, 0x3e, 0x9b, 0x44, 0xfb, 0x90, 0x9d, 0x1d, + 0x00, 0x95, 0x1d, 0x07, 0x1c, 0xe5, 0x03, 0x10, 0xe5, 0x14, 0x7c, 0x27, + 0x58, 0x7c, 0x27, 0x03, 0xd4, 0xfa, 0x47, 0xd8, 0xfa, 0x03, 0xd4, 0xf2, + 0x47, 0xd8, 0xf2, 0xdc, 0x83, 0x62, 0x47, 0xd4, 0xfa, 0x47, 0xd4, 0xf2, + 0x57, 0xd9, 0xfa, 0x03, 0xd4, 0xfa, 0x03, 0xd4, 0xf2, 0x07, 0x14, 0xe5, + 0x4b, 0x24, 0xfe, 0x50, 0x04, 0xc8, 0x8a, 0x4c, 0x20, 0x8b, 0x04, 0x00, + 0x52, 0x40, 0x20, 0x04, 0x88, 0x3e, 0x8c, 0x80, 0x25, 0x00, 0x8c, 0x40, + 0x10, 0x08, 0xca, 0x00, 0x50, 0x1e, 0x00, 0x3c, 0x23, 0x04, 0x00, 0x64, + 0xb0, 0xc7, 0xc9, 0x47, 0x00, 0x80, 0xa0, 0xc7, 0xc9, 0x07, 0x00, 0xfe, + 0x8c, 0x00, 0x64, 0x01, 0x00, 0x00, 0x5f, 0x1a, 0xfe, 0x01, 0x04, 0x00, + 0x8c, 0x05, 0x64, 0x01, 0x00, 0x00, 0xff, 0x19, 0xfe, 0x03, 0x00, 0x80, + 0x00, 0x3c, 0x23, 0x30, 0x84, 0x62, 0x38, 0x40, 0x55, 0xba, 0x4f, 0x00, + 0x04, 0x00, 0x64, 0x4c, 0x04, 0x72, 0xcd, 0xab, 0x89, 0xc8, 0x7b, 0x64, + 0x45, 0x23, 0x01, 0xcc, 0x59, 0x64, 0x05, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x86, 0x43, 0x20, 0xec, 0x83, 0x62, 0xbb, 0x63, 0x00, 0x80, 0x03, 0xe6, + 0x04, 0x00, 0x64, 0x4c, 0x04, 0x48, 0xc3, 0x07, 0xf6, 0x3b, 0x00, 0xf2, + 0x87, 0xc2, 0xfe, 0x46, 0x50, 0x07, 0x43, 0x78, 0xfe, 0x97, 0x03, 0xfe, + 0x47, 0xc0, 0xf2, 0x44, 0x0c, 0x31, 0x10, 0x04, 0xca, 0x08, 0x08, 0xe8, + 0x00, 0x3c, 0x23, 0x08, 0x00, 0x74, 0xc4, 0x3f, 0x64, 0x50, 0x08, 0x1d, + 0x18, 0x00, 0x64, 0x44, 0x37, 0x64, 0x84, 0x09, 0x1e, 0x9b, 0x05, 0x00, + 0x47, 0x44, 0x00, 0xec, 0xc7, 0x73, 0x84, 0x03, 0x64, 0x0b, 0x07, 0xf2, + 0x57, 0xc3, 0xfe, 0x9f, 0x11, 0xf2, 0xc7, 0x11, 0xf2, 0xef, 0x11, 0xf2, + 0x17, 0x12, 0xf2, 0x3f, 0x12, 0xf2, 0x67, 0x12, 0xf2, 0xe7, 0x51, 0xf2, + 0xff, 0x50, 0xf2, 0xcf, 0x51, 0xf2, 0x44, 0x00, 0x64, 0xf3, 0x06, 0xf2, + 0x8d, 0xd6, 0x92, 0x84, 0x28, 0x64, 0xc3, 0x46, 0xf2, 0xb7, 0x01, 0xfe, + 0x35, 0x00, 0x00, 0x84, 0x12, 0x64, 0xb3, 0x06, 0xf2, 0x35, 0x00, 0x00, + 0x84, 0x06, 0x64, 0xbb, 0x06, 0xf2, 0x31, 0x00, 0x00, 0x04, 0xea, 0x64, + 0xd3, 0x06, 0xf2, 0x31, 0x00, 0x00, 0x04, 0xf6, 0x64, 0xc3, 0x06, 0xf2, + 0x31, 0x00, 0x00, 0x44, 0xf5, 0x64, 0xdb, 0x06, 0xf2, 0x39, 0x00, 0x00, + 0x84, 0x95, 0x64, 0xcb, 0x06, 0xf2, 0x31, 0x00, 0x00, 0x04, 0xc6, 0x64, + 0xe3, 0x06, 0xf2, 0x67, 0xc3, 0xfe, 0xc4, 0xff, 0x64, 0x5b, 0x06, 0xf2, + 0x44, 0x00, 0x64, 0xe3, 0x05, 0xf2, 0x67, 0xc3, 0xfe, 0x87, 0xc2, 0xfe, + 0x05, 0x00, 0x00, 0x46, 0x50, 0x04, 0x43, 0x78, 0xfe, 0x84, 0x00, 0x64, + 0x05, 0x10, 0x00, 0x44, 0x86, 0x80, 0x01, 0xad, 0xde, 0x44, 0x00, 0x64, + 0x4b, 0x04, 0x00, 0x4f, 0x08, 0x00, 0x53, 0x0c, 0x00, 0x57, 0x10, 0x00, + 0x5b, 0x14, 0x00, 0x5f, 0x18, 0x00, 0x63, 0x1c, 0x00, 0x67, 0x20, 0x00, + 0x6b, 0x24, 0x00, 0x6f, 0x28, 0x00, 0x73, 0x2c, 0x00, 0x77, 0x30, 0x00, + 0x7b, 0x34, 0x00, 0x7f, 0x38, 0x00, 0x40, 0x60, 0x26, 0x40, 0xe0, 0x26, + 0x00, 0x00, 0x23, 0x08, 0x41, 0x64, 0x05, 0x00, 0x00, 0x04, 0xd8, 0x64, + 0x03, 0x48, 0xf2, 0x0b, 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, 0xfb, 0x64, + 0x05, 0x00, 0x00, 0x04, 0xd8, 0x64, 0x13, 0x48, 0xf2, 0x1b, 0x44, 0xf2, + 0x08, 0x03, 0x64, 0x04, 0x38, 0x64, 0x23, 0x48, 0xf2, 0x2b, 0x44, 0xf2, + 0x05, 0x00, 0x00, 0x08, 0xe3, 0x64, 0x0d, 0x00, 0x00, 0x04, 0xf0, 0x64, + 0x33, 0x48, 0xf2, 0x3b, 0x44, 0xf2, 0x05, 0x10, 0x00, 0x08, 0x03, 0x64, + 0x05, 0x10, 0x00, 0x04, 0x78, 0x64, 0x43, 0x48, 0xf2, 0x4b, 0x44, 0xf2, + 0x87, 0x1d, 0xfe, 0x0f, 0x20, 0xe5, 0x00, 0x41, 0x64, 0xfd, 0xff, 0xff, + 0xf0, 0x97, 0x63, 0x00, 0x00, 0x66, 0xa2, 0x00, 0x60, 0x14, 0x00, 0x64, + 0xa8, 0x14, 0xc8, 0x18, 0x44, 0x64, 0x82, 0x41, 0x20, 0xfd, 0xff, 0xff, + 0xd0, 0x93, 0x63, 0x22, 0x40, 0x20, 0x83, 0x11, 0x00, 0xfd, 0xff, 0xff, + 0xe0, 0x8f, 0x63, 0xa3, 0x03, 0x90, 0x83, 0x21, 0x00, 0xfd, 0xff, 0xff, + 0xf0, 0x8b, 0x63, 0x87, 0x23, 0x80, 0x0a, 0x40, 0x20, 0x02, 0x42, 0x20, + 0xdf, 0x05, 0x00, 0xd8, 0x97, 0x62, 0x6c, 0x9d, 0x3a, 0x9b, 0x31, 0x00, + 0xba, 0xff, 0x7f, 0xd4, 0x00, 0x64, 0x80, 0x14, 0xc8, 0x18, 0x44, 0x74, + 0x82, 0x41, 0x20, 0xfd, 0xff, 0xff, 0xc8, 0x83, 0x63, 0x22, 0x40, 0x20, + 0x83, 0x11, 0x00, 0xfd, 0xff, 0xff, 0xd8, 0xff, 0x62, 0x0a, 0x40, 0x20, + 0x03, 0x02, 0x50, 0xec, 0x93, 0x62, 0xdf, 0x05, 0x00, 0x6c, 0x1d, 0x3a, + 0x9b, 0x21, 0x00, 0xce, 0xbf, 0x7f, 0x00, 0x42, 0x64, 0xfd, 0xff, 0xff, + 0xe0, 0xf7, 0x62, 0x22, 0x40, 0x20, 0x00, 0x43, 0x64, 0xfd, 0xff, 0xff, + 0xf0, 0xf3, 0x62, 0x1e, 0x40, 0x20, 0x00, 0x00, 0x64, 0x05, 0x00, 0x00, + 0x14, 0xe0, 0x55, 0x18, 0x00, 0xc8, 0xc5, 0xff, 0xff, 0xe8, 0x9b, 0x63, + 0xd0, 0x87, 0x62, 0x00, 0x00, 0x64, 0x28, 0x00, 0xc8, 0x4a, 0x41, 0x20, + 0x00, 0x9e, 0x1d, 0xc5, 0xff, 0xff, 0xd4, 0x97, 0x63, 0x00, 0x00, 0x64, + 0x18, 0x00, 0xc8, 0xc5, 0xff, 0xff, 0xe4, 0x93, 0x63, 0x00, 0x00, 0x64, + 0x28, 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0xc5, 0xff, 0xff, + 0xdc, 0x8f, 0x63, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0x57, 0xf6, 0x7f, + 0x03, 0x00, 0xe0, 0x00, 0x00, 0x64, 0x18, 0x00, 0xc8, 0xc5, 0xff, 0xff, + 0xfc, 0x87, 0x63, 0x00, 0x00, 0x64, 0x90, 0x00, 0xc8, 0xc5, 0xff, 0xff, + 0xcc, 0x87, 0x63, 0x00, 0x00, 0x64, 0x18, 0x00, 0xc8, 0xc5, 0xff, 0xff, + 0xdc, 0x83, 0x63, 0x0b, 0xc1, 0xf1, 0x8e, 0x68, 0x00, 0x13, 0x4c, 0xf2, + 0x31, 0x00, 0x00, 0x90, 0xf1, 0x64, 0xe3, 0x12, 0xf2, 0x35, 0x00, 0x00, + 0xbc, 0x1e, 0x64, 0xcb, 0x3e, 0xf2, 0x67, 0xc3, 0xfe, 0x07, 0x04, 0xe0, + 0x40, 0x00, 0x65, 0x5b, 0x02, 0xf2, 0x01, 0x00, 0x82, 0x07, 0x00, 0x00, + 0x33, 0x06, 0xf2, 0x67, 0xc3, 0xfe, 0xaf, 0xbf, 0x7f, 0x88, 0x08, 0x31, + 0x18, 0x08, 0xca, 0x48, 0x10, 0x5a, 0x10, 0x08, 0x7a, 0x00, 0x3c, 0x23, + 0x0c, 0x00, 0x64, 0x4c, 0xcc, 0x1e, 0x84, 0x08, 0x31, 0x10, 0x04, 0xca, + 0x10, 0x0c, 0x7a, 0x00, 0x3c, 0x23, 0xf9, 0xff, 0xff, 0x98, 0xc5, 0x62, + 0xcf, 0x14, 0xfe, 0x4b, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, 0x67, 0xc3, 0xfe, + 0x8f, 0x03, 0x80, 0x83, 0x13, 0x80, 0xbb, 0x23, 0x00, 0xc0, 0x00, 0x86, + 0x02, 0xbc, 0x9f, 0x00, 0x3c, 0x23, 0xa0, 0xcf, 0x7b, 0x67, 0xc3, 0xfe, + 0x63, 0xc3, 0xfe, 0xa7, 0x1f, 0xfe, 0x10, 0x00, 0x64, 0xc5, 0xff, 0xff, + 0xbc, 0x93, 0x72, 0xcf, 0x1f, 0xfe +}; + +#define PMC_DTCM_LOG_SIZE 256 + +const unsigned char pmcdata[] = { + 0x98, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x01, 0x00, 0x00, 0x98, 0x0b, 0x00, 0x00, 0x44, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x00, 0x28, 0x6e, + 0x75, 0x6c, 0x6c, 0x29, 0x00, 0x25, 0x30, 0x34, 0x75, 0x3a, 0x20, 0x00, + 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x20, 0x30, 0x78, 0x25, + 0x30, 0x38, 0x78, 0x0a, 0x00, 0x50, 0x4d, 0x42, 0x5f, 0x41, 0x52, 0x53, + 0x20, 0x61, 0x74, 0x20, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x3d, + 0x25, 0x64, 0x20, 0x62, 0x75, 0x73, 0x20, 0x25, 0x64, 0x20, 0x69, 0x73, + 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x50, 0x4d, 0x42, + 0x5f, 0x50, 0x56, 0x54, 0x4d, 0x4f, 0x4e, 0x20, 0x61, 0x74, 0x20, 0x44, + 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x3d, 0x25, 0x64, 0x20, 0x62, 0x75, + 0x73, 0x20, 0x25, 0x64, 0x20, 0x69, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x50, 0x4d, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x3a, + 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x0a, 0x00, 0x24, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x20, 0x33, 0x30, 0x30, 0x30, 0x32, + 0x37, 0x20, 0x24, 0x00, 0x32, 0x30, 0x31, 0x30, 0x30, 0x32, 0x5f, 0x30, + 0x39, 0x33, 0x34, 0x00, 0x54, 0x53, 0x3a, 0x25, 0x73, 0x0a, 0x00, 0x50, + 0x41, 0x52, 0x54, 0x49, 0x44, 0x3a, 0x25, 0x78, 0x20, 0x73, 0x6b, 0x69, + 0x70, 0x70, 0x65, 0x64, 0x20, 0x63, 0x68, 0x69, 0x70, 0x20, 0x69, 0x64, + 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, + 0x00, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x5f, 0x4d, 0x56, + 0x20, 0x25, 0x75, 0x0a, 0x00, 0x52, 0x34, 0x38, 0x20, 0x49, 0x44, 0x2c, + 0x20, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x28, 0x4b, 0x48, 0x7a, + 0x29, 0x2c, 0x20, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x28, 0x43, + 0x6e, 0x74, 0x29, 0x2c, 0x20, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x28, + 0x4b, 0x48, 0x7a, 0x29, 0x2c, 0x20, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x20, + 0x28, 0x43, 0x6e, 0x74, 0x29, 0x0a, 0x00, 0x30, 0x30, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x30, 0x31, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, + 0x32, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, 0x33, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x30, 0x34, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, + 0x35, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, 0x36, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x30, 0x37, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, + 0x38, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, 0x39, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x31, 0x30, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, + 0x31, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, 0x32, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x31, 0x33, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, + 0x34, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, 0x35, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x31, 0x36, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, + 0x37, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, 0x38, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6c, 0x6f, + 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, 0x69, 0x73, 0x6c, 0x61, 0x6e, + 0x64, 0x20, 0x25, 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x25, 0x64, + 0x20, 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x78, + 0x20, 0x25, 0x64, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x25, 0x64, 0x0a, 0x00, + 0x62, 0x07, 0x00, 0x00, 0x66, 0x07, 0x00, 0x00, 0x6a, 0x07, 0x00, 0x00, + 0x6e, 0x07, 0x00, 0x00, 0x72, 0x07, 0x00, 0x00, 0x76, 0x07, 0x00, 0x00, + 0x41, 0x56, 0x53, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x0a, 0x00, 0x53, 0x57, 0x5f, 0x44, 0x41, 0x43, 0x3a, 0x20, 0x25, 0x64, + 0x0a, 0x00, 0x63, 0x75, 0x72, 0x5f, 0x64, 0x61, 0x63, 0x20, 0x25, 0x75, + 0x20, 0x63, 0x75, 0x72, 0x56, 0x20, 0x25, 0x75, 0x20, 0x63, 0x75, 0x72, + 0x54, 0x65, 0x6d, 0x70, 0x20, 0x25, 0x75, 0x20, 0x64, 0x65, 0x6c, 0x74, + 0x61, 0x20, 0x25, 0x64, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x64, 0x61, 0x63, + 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x56, 0x41, 0x44, 0x43, 0x31, 0x20, + 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x25, 0x75, 0x20, + 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x25, + 0x75, 0x0a, 0x00, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, + 0x4d, 0x56, 0x41, 0x44, 0x43, 0x32, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, + 0x56, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, + 0x20, 0x25, 0x75, 0x20, 0x4d, 0x56, 0x0a, 0x00, 0x52, 0x34, 0x38, 0x00, + 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x73, 0x20, 0x73, 0x6c, 0x6f, 0x77, + 0x20, 0x25, 0x64, 0x6d, 0x56, 0x20, 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, + 0x64, 0x6d, 0x56, 0x0a, 0x00, 0x52, 0x4f, 0x5b, 0x25, 0x73, 0x3a, 0x25, + 0x64, 0x5d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x6f, + 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x6f, 0x20, 0x25, + 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x25, 0x64, 0x20, 0x76, + 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, + 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, 0x76, 0x68, 0x69, + 0x67, 0x68, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, + 0x5f, 0x68, 0x69, 0x67, 0x68, 0x20, 0x25, 0x64, 0x20, 0x76, 0x6f, 0x6c, + 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, 0x00, + 0x61, 0x76, 0x73, 0x5f, 0x64, 0x61, 0x63, 0x20, 0x25, 0x64, 0x20, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x75, + 0x20, 0x61, 0x76, 0x73, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x63, + 0x61, 0x6c, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, + 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x68, 0x69, 0x67, + 0x68, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6c, 0x6f, 0x77, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x20, 0x25, 0x64, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, + 0x20, 0x69, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x20, 0x6d, + 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x5f, 0x73, 0x6c, 0x6f, + 0x77, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, + 0x6d, 0x76, 0x5f, 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, + 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, + 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x76, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x4d, 0x49, 0x4e, 0x5f, + 0x44, 0x41, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x20, 0x25, 0x64, 0x20, + 0x4d, 0x41, 0x58, 0x5f, 0x44, 0x41, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x25, 0x64, 0x20, 0x68, 0x69, 0x20, 0x25, 0x64, + 0x20, 0x6c, 0x6f, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x52, 0x34, 0x38, 0x5f, 0x25, 0x64, 0x20, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x68, 0x69, + 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x52, + 0x34, 0x38, 0x5f, 0x25, 0x64, 0x20, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, + 0x64, 0x0a, 0x00, 0x56, 0x41, 0x44, 0x43, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x56, 0x54, 0x20, + 0x30, 0x78, 0x25, 0x78, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x6d, 0x56, 0x0a, + 0x00, 0x56, 0x41, 0x44, 0x43, 0x31, 0x20, 0x72, 0x65, 0x61, 0x64, 0x65, + 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x56, 0x49, 0x4e, 0x20, 0x30, + 0x78, 0x25, 0x78, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x6d, 0x56, 0x0a, 0x00, + 0x56, 0x41, 0x44, 0x43, 0x32, 0x20, 0x72, 0x65, 0x61, 0x64, 0x65, 0x64, + 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x56, 0x49, 0x4e, 0x20, 0x30, 0x78, + 0x25, 0x78, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x6d, 0x56, 0x0a, 0x00, 0x44, + 0x75, 0x6d, 0x70, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, + 0x20, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x0a, + 0x00, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x20, 0x3a, 0x20, 0x25, + 0x64, 0x20, 0x00, 0x25, 0x63, 0x31, 0x36, 0x3a, 0x20, 0x25, 0x64, 0x20, + 0x20, 0x20, 0x25, 0x63, 0x32, 0x30, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x20, + 0x20, 0x00, 0x52, 0x34, 0x38, 0x5f, 0x25, 0x64, 0x3a, 0x20, 0x25, 0x75, + 0x0a, 0x00, 0x55, 0x31, 0x36, 0x00, 0x55, 0x32, 0x30, 0x00, 0x4c, 0x31, + 0x36, 0x00, 0x4c, 0x32, 0x30, 0x00, 0x53, 0x31, 0x36, 0x00, 0x53, 0x32, + 0x30, 0x00, 0x00, 0x00, 0xce, 0xb0, 0x5c, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif //DEVICE_TREE +#endif //PMC_ROMDATA_4912_H diff --git a/arch/arm/mach-bcmbca/pmc/pmc_firmware_63146.h b/arch/arm/mach-bcmbca/pmc/pmc_firmware_63146.h new file mode 100644 index 0000000000..8853ae32a9 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_firmware_63146.h @@ -0,0 +1,1427 @@ +/* + * * <:copyright-BRCM:2017:DUAL/GPL:standard + * * + * * Copyright (c) 2017 Broadcom + * * All Rights Reserved + * * + * * This program is free software; you can redistribute it and/or modify + * * it under the terms of the GNU General Public License, version 2, as published by + * * the Free Software Foundation (the "GPL"). + * * + * * This program is distributed in the hope that it will be useful, + * * but WITHOUT ANY WARRANTY; without even the implied warranty of + * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * * GNU General Public License for more details. + * * + * * + * * A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + * * writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * * Boston, MA 02111-1307, USA. + * * + * * :> + * */ + +#ifndef PMC_ROMDATA_63146_H +#define PMC_ROMDATA_63146_H +#define PMC_VER_IMPL 3 +#define PMC_VER_MAJOR 3 +#define PMC_VER_MINOR 4 +#define PMC_VER_CHANGELIST "$Change: 300027 $" +#ifndef DEVICE_TREE +const unsigned char pmcappdata[] = { + 0xeb, 0x42, 0xf2, 0x35, 0x00, 0x00, 0x4f, 0x19, 0xfe, 0x00, 0x00, 0x00, + 0x11, 0x10, 0x00, 0x04, 0x0b, 0x4e, 0x40, 0x00, 0x84, 0x07, 0xbc, 0xfd, + 0x11, 0x10, 0x00, 0x08, 0x0b, 0x64, 0x8e, 0x08, 0xc0, 0xc0, 0x80, 0x90, + 0xfa, 0xff, 0x7f, 0x04, 0x00, 0x64, 0x10, 0x04, 0x5e, 0x00, 0x01, 0x66, + 0x0e, 0x00, 0x60, 0x40, 0xc0, 0x92, 0x12, 0x40, 0x60, 0x11, 0x10, 0x00, + 0x74, 0x05, 0x82, 0x00, 0x3c, 0x23, 0x44, 0x10, 0x78, 0xdf, 0xbf, 0x7f, + 0x00, 0x80, 0xa2, 0x11, 0x10, 0x00, 0x04, 0x01, 0x80, 0x11, 0x10, 0x00, + 0x04, 0x06, 0x64, 0x4b, 0x20, 0x80, 0xbc, 0x7c, 0xb3, 0xfa, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, 0xaf, 0x1f, 0xfe, + 0x47, 0x44, 0x00, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x93, 0x03, 0xbc, 0xfd, + 0x03, 0x04, 0x00, 0x3c, 0xfc, 0xe4, 0xeb, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x08, 0x60, 0x55, 0x0d, 0x00, 0x00, 0x12, 0xbc, 0x1f, 0x03, 0x0c, 0x36, + 0x87, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x3d, 0x00, 0x00, + 0xc0, 0x00, 0x92, 0x12, 0x00, 0x60, 0x08, 0x00, 0x64, 0x82, 0x40, 0x20, + 0x00, 0x3c, 0x23, 0x4f, 0x24, 0x37, 0xec, 0x90, 0x48, 0x12, 0x40, 0x60, + 0x47, 0x10, 0x35, 0x7c, 0x00, 0x48, 0xe6, 0xbf, 0x7f, 0x8b, 0x10, 0x00, + 0xc3, 0xbf, 0x7f, 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x0d, 0x00, 0x00, + 0x03, 0xf0, 0x82, 0x24, 0x00, 0x72, 0x40, 0x00, 0x75, 0x0d, 0x00, 0x00, + 0x34, 0x87, 0x82, 0x00, 0x3c, 0x23, 0x1b, 0x08, 0xe6, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x93, 0x1a, 0x40, 0x20, 0x1a, 0x00, 0x60, 0x03, 0x10, 0x80, + 0x01, 0x00, 0x3c, 0x00, 0x80, 0x8e, 0x40, 0x00, 0x64, 0x7e, 0x40, 0x60, + 0xfd, 0xff, 0xff, 0xb8, 0x7c, 0x87, 0x2e, 0x00, 0x60, 0x82, 0x11, 0xc0, + 0xfd, 0xff, 0xff, 0x3c, 0xfc, 0x85, 0x1e, 0x40, 0x60, 0xa3, 0x0f, 0x90, + 0xfc, 0xf3, 0x63, 0x8f, 0x23, 0x80, 0x24, 0x00, 0x72, 0x80, 0x00, 0x64, + 0x4b, 0x00, 0x60, 0x00, 0x00, 0x64, 0x88, 0x00, 0xc8, 0xfd, 0xff, 0xff, + 0xf8, 0x7c, 0x87, 0x3a, 0x00, 0x60, 0x87, 0x11, 0x80, 0x01, 0xff, 0x03, + 0x4a, 0x00, 0x00, 0x01, 0xff, 0x03, 0x80, 0x80, 0x86, 0x22, 0x40, 0x60, + 0x13, 0x00, 0x80, 0x4f, 0x28, 0x38, 0x00, 0x00, 0x64, 0x3f, 0xa1, 0x3b, + 0xc4, 0x3c, 0x3a, 0x02, 0x0c, 0x80, 0x1f, 0x0c, 0xe6, 0x00, 0x00, 0x64, + 0xfb, 0xbf, 0x7f, 0x00, 0x04, 0x92, 0x1e, 0x00, 0x60, 0x11, 0x10, 0x00, + 0x0c, 0x0a, 0x52, 0xcf, 0x04, 0xd0, 0x11, 0x10, 0x00, 0x44, 0x0d, 0x7e, + 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x03, 0x10, 0x0b, 0x0a, 0x30, 0xe3, + 0x93, 0x04, 0xd0, 0x33, 0x88, 0xb1, 0x00, 0x3c, 0x23, 0x00, 0x04, 0x92, + 0x46, 0x0c, 0x00, 0x26, 0x00, 0x60, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, + 0x4c, 0x0c, 0x2b, 0x0a, 0xe0, 0x00, 0x93, 0x4c, 0xfb, 0x11, 0x10, 0x00, + 0x44, 0x11, 0x7e, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x03, 0x10, 0x0b, + 0x0a, 0x30, 0xe3, 0x4c, 0x10, 0x2b, 0x92, 0xc0, 0x01, 0x07, 0x4d, 0xfb, + 0x33, 0x84, 0xb1, 0x00, 0x3c, 0x23, 0x13, 0x00, 0xe0, 0x01, 0x12, 0x00, + 0x10, 0x00, 0x64, 0x0f, 0x01, 0x84, 0xa0, 0x03, 0xe7, 0xbc, 0x7c, 0xb3, + 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, 0xff, 0x28, 0x3a, 0x8f, 0x0c, 0x00, + 0xcb, 0x88, 0xf9, 0x8f, 0x23, 0x80, 0xc0, 0x43, 0x24, 0xbc, 0x08, 0x27, + 0x03, 0xbc, 0xf2, 0xd3, 0x40, 0xd0, 0xa3, 0x0f, 0x90, 0xbf, 0x23, 0x80, + 0xc0, 0x3f, 0xa4, 0xa3, 0x03, 0x90, 0x8f, 0x23, 0x80, 0xcf, 0x04, 0xda, + 0xa3, 0x0f, 0x90, 0x87, 0x23, 0x80, 0x48, 0x00, 0xa2, 0xa3, 0x0b, 0x90, + 0xbf, 0x23, 0x80, 0x03, 0xbd, 0x94, 0xa0, 0x03, 0xe7, 0x03, 0x81, 0x84, + 0xa3, 0x03, 0x90, 0x8f, 0x23, 0x80, 0xf0, 0xb4, 0x26, 0xf2, 0xff, 0x7f, + 0x93, 0x23, 0x80, 0xc8, 0x04, 0x64, 0x34, 0x15, 0x26, 0x16, 0x00, 0x40, + 0x87, 0x23, 0x80, 0x78, 0x94, 0x26, 0x1a, 0x40, 0x60, 0x08, 0x02, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x8b, 0x82, 0x00, 0x00, 0x64, 0x17, 0x04, 0xe0, + 0x01, 0x12, 0x00, 0x00, 0x4b, 0x55, 0xf7, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, + 0x01, 0x12, 0x00, 0x18, 0x00, 0x64, 0x93, 0x01, 0x84, 0xbf, 0x0c, 0x00, + 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, 0xbc, 0x7c, 0xb3, 0x93, 0x8d, 0x94, + 0xcb, 0x8b, 0xf9, 0x0f, 0x29, 0x3a, 0xc0, 0x40, 0x24, 0x90, 0x08, 0x27, + 0x0f, 0x90, 0xf2, 0xfd, 0x0f, 0x00, 0xc2, 0xbc, 0x1f, 0x0f, 0x04, 0xda, + 0x04, 0x04, 0xa2, 0x83, 0x85, 0x94, 0xbf, 0x81, 0x84, 0xf0, 0xb7, 0x26, + 0xfa, 0xff, 0x7f, 0xf4, 0x17, 0x26, 0xc8, 0x04, 0x64, 0x12, 0x00, 0x40, + 0xf8, 0x97, 0x26, 0x12, 0x40, 0x60, 0x08, 0x02, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x8b, 0x82, 0x0f, 0x0c, 0xe6, 0x03, 0x00, 0x80, 0x4b, 0x00, 0x50, + 0x07, 0x10, 0x35, 0x03, 0x24, 0x37, 0x67, 0x1d, 0xfe, 0x13, 0x00, 0xe0, + 0x03, 0x00, 0x80, 0xa0, 0x03, 0xe7, 0x48, 0x88, 0x1d, 0x07, 0x10, 0x35, + 0x03, 0x24, 0x37, 0xd8, 0xf7, 0x63, 0x17, 0x04, 0xe0, 0x13, 0x10, 0xe6, + 0x47, 0x10, 0x00, 0x58, 0x14, 0x2b, 0x86, 0x41, 0x20, 0x1e, 0x40, 0x20, + 0xa3, 0x0b, 0x90, 0xf4, 0xfb, 0x63, 0x8b, 0x23, 0x80, 0x00, 0x18, 0x94, + 0x80, 0x00, 0x92, 0x13, 0x00, 0xfd, 0x80, 0x80, 0x86, 0x04, 0x29, 0x2b, + 0x0f, 0x40, 0xfd, 0xd0, 0x24, 0x2b, 0x0b, 0x44, 0xfb, 0x8b, 0x50, 0xfb, + 0xc0, 0x99, 0x1d, 0x13, 0x14, 0xe6, 0x2f, 0x1f, 0xfe, 0x0f, 0x28, 0xe5, + 0x1a, 0x40, 0x20, 0x20, 0x00, 0xc8, 0x03, 0x00, 0x80, 0x00, 0x30, 0x26, + 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x8b, 0x82, + 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x04, 0x40, 0x55, 0x0f, 0x10, 0x35, + 0x4b, 0x0c, 0x32, 0xc0, 0x88, 0x3a, 0x66, 0x40, 0x60, 0x48, 0x02, 0x64, + 0xdb, 0xbf, 0x7f, 0x80, 0x9d, 0x1d, 0x08, 0x02, 0xe5, 0xec, 0xf3, 0x63, + 0x06, 0x0a, 0xc0, 0x40, 0x80, 0x90, 0x22, 0x40, 0x60, 0x01, 0x00, 0x04, + 0x00, 0x20, 0x8e, 0x16, 0x00, 0x60, 0x00, 0x74, 0x98, 0x08, 0x08, 0x94, + 0x80, 0x9d, 0x1d, 0xd8, 0xf3, 0x63, 0x57, 0x05, 0x00, 0xdf, 0x01, 0x01, + 0x93, 0x01, 0x80, 0x3f, 0xa1, 0x3b, 0xfc, 0x17, 0x3a, 0xba, 0xbf, 0x7f, + 0xc0, 0x2b, 0x64, 0x0b, 0x2c, 0xe5, 0x57, 0x17, 0xfe, 0x1c, 0x20, 0x64, + 0x0d, 0x00, 0x00, 0x20, 0x59, 0x64, 0xdb, 0xbf, 0x7f, 0x0b, 0x28, 0xe5, + 0x1a, 0x40, 0x20, 0x20, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x40, 0x30, 0x26, + 0x16, 0x00, 0x60, 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, + 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0x53, 0x10, 0x35, + 0x8f, 0x0c, 0x32, 0x00, 0x8d, 0x3a, 0x0e, 0x40, 0x60, 0x44, 0x02, 0x64, + 0xdb, 0xbf, 0x7f, 0x04, 0x20, 0x64, 0xc0, 0xeb, 0x63, 0x0d, 0x00, 0x00, + 0x84, 0x59, 0x4e, 0x40, 0x00, 0x84, 0xca, 0xbf, 0x5f, 0x1c, 0xb0, 0x26, + 0x6a, 0x40, 0x60, 0x00, 0x10, 0x94, 0x0a, 0x40, 0x30, 0x83, 0x01, 0x52, + 0x0b, 0x2c, 0xe5, 0xd7, 0x1c, 0xfe, 0x80, 0x9d, 0x1d, 0x08, 0x02, 0xe5, + 0xc8, 0xe7, 0x63, 0x0e, 0x0a, 0xc0, 0xc0, 0x80, 0x90, 0x22, 0x40, 0x60, + 0x01, 0x00, 0x02, 0x00, 0x20, 0x8e, 0x16, 0x00, 0x60, 0x10, 0x10, 0x94, + 0x0a, 0x41, 0x30, 0x80, 0x9d, 0x1d, 0xf4, 0xe3, 0x63, 0x57, 0x05, 0x00, + 0xdf, 0x01, 0x01, 0xbf, 0x01, 0x80, 0xcb, 0xa3, 0x3b, 0xbc, 0x14, 0x3a, + 0xba, 0xbf, 0x7f, 0x5f, 0xbf, 0x7f, 0x1c, 0x28, 0x64, 0x54, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x20, 0x59, 0x64, 0xdf, 0xbf, 0x7f, 0x2c, 0x08, 0xc8, + 0x4c, 0x10, 0x5a, 0x8b, 0x50, 0x00, 0x10, 0x0c, 0x7a, 0xf3, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x01, 0x12, 0x00, 0x08, 0x00, 0x64, 0x8f, 0x80, 0x81, + 0x46, 0xbc, 0x00, 0x63, 0x80, 0xd2, 0xd0, 0x40, 0x98, 0x83, 0x90, 0x91, + 0x8f, 0x80, 0x81, 0xd0, 0x30, 0x94, 0x0c, 0x21, 0x98, 0x83, 0x8c, 0x91, + 0x4e, 0xbc, 0x17, 0x93, 0x80, 0x81, 0x06, 0xfd, 0x1f, 0x43, 0x4c, 0xfb, + 0x83, 0x80, 0x91, 0x93, 0x80, 0x81, 0x0c, 0x81, 0x98, 0x83, 0x8c, 0x91, + 0x87, 0x80, 0x81, 0x40, 0x40, 0x98, 0x83, 0x80, 0x91, 0x93, 0x80, 0x81, + 0x0c, 0x01, 0x9a, 0x83, 0x8c, 0x91, 0x87, 0x80, 0x81, 0x7c, 0x30, 0x26, + 0xfa, 0xbf, 0x7f, 0x83, 0xa0, 0x81, 0x00, 0x3c, 0x23, 0x01, 0x12, 0x00, + 0x0c, 0x00, 0x64, 0xd3, 0x80, 0x81, 0x46, 0xbc, 0x00, 0x63, 0x80, 0xd2, + 0x10, 0x41, 0x98, 0xc3, 0x90, 0x91, 0xd3, 0x90, 0x81, 0x03, 0x49, 0xd0, + 0xd3, 0x90, 0x91, 0xcb, 0x80, 0x81, 0x90, 0x30, 0x94, 0x08, 0x11, 0x98, + 0xc3, 0x88, 0x91, 0x4a, 0xbc, 0x17, 0xd3, 0x80, 0x81, 0x06, 0xfd, 0x1f, + 0x43, 0x48, 0xfb, 0xc3, 0x80, 0x91, 0xd3, 0x80, 0x81, 0x08, 0x81, 0x98, + 0xc3, 0x88, 0x91, 0xc7, 0x80, 0x81, 0x40, 0x40, 0x98, 0xc3, 0x80, 0x91, + 0xd3, 0x80, 0x81, 0x08, 0x01, 0x9a, 0xc3, 0x88, 0x91, 0xc7, 0x80, 0x81, + 0x7c, 0x30, 0x26, 0xfa, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x3b, 0x88, 0xe5, + 0x22, 0x40, 0x20, 0x5e, 0x40, 0x20, 0xab, 0x23, 0x00, 0xc0, 0x89, 0x1d, + 0xb3, 0x4f, 0x90, 0xa3, 0x4b, 0x90, 0xcf, 0xc1, 0x60, 0x87, 0x43, 0x81, + 0x8b, 0x23, 0x00, 0x03, 0x84, 0xf6, 0x87, 0x63, 0x80, 0x84, 0x02, 0x78, + 0xc2, 0x41, 0x20, 0x97, 0xca, 0xf2, 0xab, 0xc1, 0x60, 0xa6, 0x42, 0x20, + 0x58, 0x81, 0x1d, 0x8b, 0x63, 0x80, 0x8f, 0x73, 0x80, 0x84, 0xc3, 0x73, + 0x58, 0x0c, 0xc8, 0xdc, 0x14, 0x3a, 0x26, 0x00, 0x60, 0x9b, 0x23, 0x00, + 0xbf, 0xe9, 0xf2, 0x10, 0x0c, 0x64, 0xcf, 0x8f, 0xf2, 0x20, 0x0c, 0xca, + 0x84, 0x12, 0x78, 0x83, 0x96, 0xf2, 0x1b, 0xe4, 0xf2, 0x8b, 0x23, 0x00, + 0xac, 0xa8, 0x48, 0x1e, 0x40, 0x40, 0x87, 0x23, 0x00, 0x12, 0x42, 0x20, + 0xbf, 0xc6, 0xf2, 0x18, 0x3c, 0xca, 0x8c, 0xfe, 0x5c, 0x04, 0x0d, 0x78, + 0x82, 0x41, 0x20, 0x3f, 0x8c, 0xe5, 0x3b, 0x88, 0xe5, 0x22, 0x40, 0x20, + 0x5e, 0x40, 0x20, 0xab, 0x23, 0x00, 0xc0, 0x89, 0x1d, 0xb3, 0x4f, 0x90, + 0xa3, 0x4b, 0x90, 0x23, 0xc1, 0x60, 0x87, 0x43, 0x81, 0x8b, 0x23, 0x00, + 0x03, 0x84, 0xf6, 0x87, 0x63, 0x80, 0x84, 0x02, 0x78, 0xc2, 0x41, 0x20, + 0x97, 0xca, 0xf2, 0xff, 0xc0, 0x60, 0xa6, 0x42, 0x20, 0x58, 0x81, 0x1d, + 0x8b, 0x63, 0x80, 0x8f, 0x73, 0x80, 0x84, 0xc3, 0x73, 0x58, 0x0c, 0xc8, + 0xdc, 0x14, 0x3a, 0x26, 0x00, 0x60, 0x9b, 0x23, 0x00, 0xbf, 0xe9, 0xf2, + 0x10, 0x0c, 0x64, 0xcf, 0x8f, 0xf2, 0x20, 0x0c, 0xca, 0x84, 0x12, 0x78, + 0x83, 0x96, 0xf2, 0x1b, 0xe4, 0xf2, 0x8b, 0x23, 0x00, 0xac, 0xa8, 0x48, + 0x1e, 0x40, 0x40, 0x87, 0x23, 0x00, 0x12, 0x42, 0x20, 0xbf, 0xc6, 0xf2, + 0x18, 0x3c, 0xca, 0x8c, 0xfe, 0x5c, 0x04, 0x0d, 0x78, 0x82, 0x41, 0x20, + 0x3f, 0x8c, 0xe5, 0x1f, 0x88, 0xe5, 0x2e, 0x40, 0x20, 0xda, 0x42, 0x20, + 0x82, 0x40, 0x20, 0x4a, 0x00, 0xe0, 0x84, 0x00, 0x66, 0x12, 0x00, 0x60, + 0x80, 0x01, 0xe4, 0x83, 0xed, 0xf2, 0x1f, 0x8c, 0xe5, 0xa8, 0x90, 0x66, + 0x5f, 0x04, 0x00, 0x12, 0x40, 0x60, 0x84, 0x09, 0x78, 0xc6, 0x41, 0x20, + 0xd7, 0xbf, 0x7f, 0x4e, 0x04, 0xe0, 0xdc, 0x10, 0x66, 0x0a, 0x00, 0x60, + 0x5f, 0x08, 0x00, 0xc6, 0x01, 0xe0, 0x6c, 0x94, 0x66, 0x0a, 0x40, 0x60, + 0xdf, 0x05, 0x00, 0x88, 0x02, 0x74, 0xfe, 0x41, 0x20, 0xd4, 0x07, 0x5e, + 0x53, 0xc1, 0x01, 0x0c, 0x05, 0x3b, 0x1e, 0x00, 0x60, 0x70, 0x95, 0x66, + 0x6e, 0x40, 0x40, 0xde, 0x43, 0x20, 0x28, 0x00, 0x64, 0x94, 0x02, 0x64, + 0x4b, 0x00, 0x60, 0xd2, 0x05, 0xe0, 0x57, 0xc1, 0x01, 0xcf, 0x94, 0xf2, + 0x1f, 0xc1, 0x01, 0xc8, 0x85, 0x3b, 0x0a, 0x40, 0x60, 0xcc, 0x48, 0x24, + 0xde, 0x43, 0x20, 0xb7, 0xbf, 0x7f, 0xde, 0x05, 0xe0, 0x53, 0xc0, 0x01, + 0xab, 0x92, 0xf2, 0xc7, 0xc1, 0x01, 0x48, 0x04, 0x3b, 0x0a, 0x00, 0x60, + 0xa8, 0x56, 0x24, 0xde, 0x43, 0x20, 0xfe, 0x41, 0x20, 0xc4, 0x07, 0x5e, + 0x4b, 0xc0, 0x01, 0x8c, 0x04, 0x3b, 0xd2, 0xbf, 0x7f, 0xd2, 0x01, 0xe0, + 0x3c, 0x00, 0x64, 0x24, 0xb5, 0x66, 0x0e, 0x40, 0x60, 0xdf, 0x05, 0x00, + 0x7c, 0x00, 0x64, 0xd6, 0x01, 0xe0, 0x64, 0x35, 0x66, 0x0e, 0x00, 0x60, + 0xdf, 0x05, 0x00, 0xff, 0x07, 0x00, 0xca, 0x01, 0xe0, 0x98, 0xb0, 0x66, + 0x52, 0x43, 0x60, 0x98, 0x30, 0x3b, 0x6a, 0x00, 0x60, 0x80, 0xac, 0x66, + 0x8e, 0x42, 0x60, 0x80, 0x2c, 0x3b, 0x36, 0x00, 0x60, 0x88, 0xa4, 0x66, + 0xaa, 0x40, 0x60, 0x80, 0xa8, 0x66, 0x3e, 0x40, 0x40, 0x0c, 0x4c, 0x64, + 0x84, 0x28, 0x66, 0xc4, 0x04, 0x70, 0x07, 0x00, 0x80, 0x17, 0x10, 0x00, + 0xa3, 0x0f, 0x90, 0x0c, 0x02, 0x64, 0x7f, 0x02, 0x60, 0x88, 0x30, 0x66, + 0x7a, 0x01, 0x60, 0x88, 0xb0, 0x3b, 0xae, 0x42, 0x60, 0x90, 0x2c, 0x66, + 0xba, 0x02, 0x60, 0x83, 0x09, 0xb0, 0x16, 0x40, 0x20, 0xf3, 0x02, 0x60, + 0x98, 0x38, 0x66, 0xe2, 0x00, 0x60, 0x98, 0xb8, 0x3b, 0x16, 0x40, 0x60, + 0xa0, 0x30, 0x66, 0x96, 0x01, 0x60, 0x80, 0xb8, 0x66, 0x9f, 0xbf, 0x7f, + 0xb8, 0xb8, 0x66, 0x5a, 0x42, 0x60, 0x80, 0x3c, 0x66, 0x02, 0x02, 0x60, + 0xa8, 0xb8, 0x66, 0xc2, 0xff, 0x5f, 0xc8, 0x03, 0x86, 0x08, 0x4c, 0x64, + 0xda, 0x01, 0x60, 0xa3, 0x0b, 0x90, 0x17, 0x10, 0x00, 0x88, 0x02, 0x64, + 0x07, 0x00, 0x80, 0x87, 0x00, 0x60, 0x27, 0x00, 0x80, 0x20, 0x4c, 0x64, + 0x88, 0x02, 0x74, 0x17, 0x10, 0x00, 0x46, 0x02, 0xe0, 0xa3, 0x23, 0x90, + 0x82, 0x41, 0x20, 0xb4, 0x0b, 0x64, 0xe4, 0xcb, 0x63, 0x83, 0x81, 0xf2, + 0x03, 0x34, 0xb0, 0x33, 0x04, 0x00, 0x88, 0x02, 0x74, 0x02, 0x43, 0x20, + 0x46, 0x06, 0xe0, 0xa3, 0x23, 0x90, 0xc4, 0xcb, 0x63, 0x0f, 0x83, 0xf2, + 0xc3, 0x34, 0xb0, 0xdb, 0x04, 0x00, 0x82, 0x41, 0x20, 0x88, 0x02, 0x74, + 0x46, 0x0a, 0xe0, 0xa3, 0x23, 0x90, 0xe4, 0xc7, 0x63, 0x87, 0x81, 0xf2, + 0x43, 0x34, 0xb0, 0x5b, 0x04, 0x00, 0x0c, 0x00, 0x64, 0x46, 0x0e, 0xe0, + 0xa3, 0x23, 0x90, 0x88, 0x02, 0x64, 0x82, 0x41, 0x20, 0xc0, 0xc7, 0x63, + 0x33, 0x01, 0x60, 0x07, 0x00, 0x80, 0xcb, 0x68, 0xfb, 0x17, 0x10, 0x00, + 0x40, 0x80, 0x86, 0x42, 0xc8, 0xaa, 0x86, 0x41, 0x20, 0x5c, 0x08, 0x72, + 0x0c, 0x04, 0x5e, 0xc4, 0x80, 0x66, 0x12, 0x40, 0x60, 0xdf, 0x05, 0x00, + 0x42, 0x41, 0x20, 0x9b, 0xbd, 0x7f, 0x84, 0x0d, 0x78, 0xe7, 0xbf, 0x7f, + 0x44, 0x3c, 0x78, 0x0e, 0x41, 0x20, 0x5a, 0x40, 0x20, 0xc0, 0xcf, 0xc9, + 0x3c, 0x04, 0x5e, 0xd3, 0x44, 0x00, 0xc4, 0x03, 0x66, 0xe6, 0xbf, 0x7f, + 0x00, 0x08, 0x64, 0xce, 0x40, 0x20, 0xd2, 0x40, 0x20, 0x10, 0x10, 0xca, + 0x84, 0x01, 0x78, 0xbb, 0xbf, 0x7f, 0x23, 0x00, 0x80, 0x17, 0x10, 0x00, + 0x33, 0x16, 0x00, 0x24, 0x4c, 0x64, 0x04, 0x06, 0x5e, 0xa3, 0x27, 0x90, + 0x08, 0x04, 0x64, 0x82, 0x41, 0x20, 0x8c, 0x00, 0x64, 0xe0, 0xbb, 0x63, + 0x8b, 0x81, 0xf2, 0x40, 0x0b, 0x64, 0x83, 0x00, 0xb0, 0x2c, 0xa3, 0x48, + 0x9b, 0x04, 0x00, 0xd2, 0xff, 0x7f, 0x06, 0x03, 0xe0, 0xa3, 0x27, 0x90, + 0x8c, 0x00, 0x64, 0xb3, 0x00, 0x60, 0xc8, 0x83, 0x86, 0x30, 0x4c, 0x64, + 0x2a, 0x40, 0x60, 0x07, 0x00, 0x80, 0x17, 0x10, 0x00, 0x7c, 0x7c, 0xbb, + 0x12, 0x00, 0x60, 0x50, 0x0b, 0x64, 0x84, 0x11, 0x78, 0x44, 0x00, 0x25, + 0xa3, 0x33, 0x90, 0x03, 0xbf, 0x7f, 0x27, 0x10, 0x80, 0x17, 0x20, 0x00, + 0x23, 0x00, 0x80, 0x7c, 0xfe, 0xbb, 0x16, 0x40, 0x60, 0x40, 0x0b, 0x75, + 0x84, 0x05, 0x78, 0x20, 0x60, 0x49, 0x24, 0x24, 0x6f, 0xa3, 0x33, 0x90, + 0x88, 0x02, 0x64, 0x06, 0x42, 0x20, 0x82, 0x41, 0x20, 0xfc, 0xbb, 0x63, + 0x9b, 0x81, 0xf2, 0xfb, 0xbe, 0x7f, 0xa3, 0x0b, 0x90, 0x17, 0x20, 0x00, + 0x88, 0x02, 0x64, 0x07, 0x00, 0x80, 0xe3, 0xbf, 0x7f, 0xc8, 0x83, 0x86, + 0x10, 0x4c, 0x64, 0x84, 0x2c, 0x66, 0x26, 0x40, 0x60, 0x17, 0x10, 0x00, + 0x07, 0x00, 0x80, 0x02, 0x41, 0x20, 0x0a, 0x00, 0x40, 0x03, 0x85, 0x00, + 0xa3, 0x03, 0x90, 0x08, 0x04, 0x64, 0x83, 0xbe, 0x7f, 0x17, 0x20, 0x00, + 0x07, 0x00, 0x80, 0x3e, 0x41, 0x20, 0x0a, 0x00, 0x40, 0x3f, 0x85, 0x00, + 0xa3, 0x3f, 0x90, 0x08, 0x04, 0x64, 0x93, 0xbf, 0x7f, 0x0c, 0x4c, 0x64, + 0x06, 0x00, 0xc0, 0x17, 0x10, 0x00, 0xa3, 0x0f, 0x90, 0x0c, 0x01, 0x64, + 0xc7, 0xbf, 0x7f, 0x3c, 0x4c, 0x64, 0x06, 0x00, 0xe0, 0x17, 0x10, 0x00, + 0xa3, 0x3f, 0x90, 0xff, 0xbe, 0x7f, 0x16, 0x40, 0x20, 0x60, 0x21, 0x5a, + 0x27, 0x10, 0x80, 0xb0, 0xe0, 0xc9, 0x10, 0x4c, 0x64, 0x44, 0x06, 0x5e, + 0xa3, 0x13, 0x90, 0x82, 0x41, 0x20, 0x8c, 0x00, 0x64, 0x08, 0x04, 0x64, + 0xcc, 0xa7, 0x63, 0x9b, 0x81, 0xf2, 0x23, 0x46, 0x00, 0xdb, 0xbf, 0x7f, + 0x0b, 0x00, 0x80, 0x17, 0x10, 0x00, 0x83, 0x09, 0xb0, 0x9b, 0x05, 0x00, + 0x1f, 0xbe, 0x7f, 0x03, 0x00, 0xe0, 0x87, 0x43, 0x80, 0x8b, 0x93, 0x00, + 0xf4, 0xb7, 0x63, 0x07, 0x04, 0xe0, 0x00, 0x3c, 0x23, 0x1f, 0x09, 0xe6, + 0x05, 0x00, 0x00, 0x00, 0xe1, 0x55, 0x38, 0x00, 0xc8, 0x00, 0x40, 0x64, + 0x05, 0x00, 0x00, 0x27, 0xfc, 0xf8, 0x18, 0x00, 0xca, 0x80, 0x01, 0xe4, + 0x9b, 0x05, 0x00, 0x05, 0x00, 0x00, 0x18, 0xe2, 0x55, 0x40, 0x56, 0x64, + 0xa3, 0x03, 0x90, 0x83, 0x83, 0x00, 0xb3, 0x1b, 0x90, 0x9b, 0x05, 0x00, + 0xe4, 0xfb, 0x63, 0x87, 0x83, 0x82, 0x8f, 0x83, 0x00, 0x8b, 0x13, 0x05, + 0xc3, 0x80, 0xf2, 0x05, 0x00, 0x00, 0x44, 0xd8, 0x81, 0xc8, 0xb3, 0x63, + 0x83, 0x83, 0x00, 0xff, 0xf2, 0x7f, 0x1f, 0x0d, 0xe6, 0x23, 0x00, 0xe0, + 0x04, 0x58, 0x64, 0xb3, 0x03, 0x90, 0xa3, 0x07, 0x90, 0x83, 0x43, 0x90, + 0xfc, 0xf7, 0x63, 0x11, 0x10, 0x00, 0x00, 0x21, 0x55, 0x3c, 0x7c, 0xb3, + 0x12, 0x00, 0x60, 0x8b, 0x43, 0x80, 0x11, 0x10, 0x00, 0x24, 0x48, 0x80, + 0x27, 0x04, 0xe0, 0x03, 0x01, 0xe0, 0x87, 0x43, 0x82, 0x8b, 0x93, 0x04, + 0x83, 0x23, 0x00, 0xf0, 0xab, 0x63, 0x83, 0x23, 0x00, 0xa7, 0xf2, 0x7f, + 0x07, 0x05, 0xe0, 0x01, 0x10, 0x00, 0x04, 0x00, 0x64, 0xfd, 0x1f, 0x00, + 0xc8, 0xff, 0x64, 0x42, 0xfc, 0x00, 0x8e, 0xfc, 0x00, 0x06, 0x70, 0x20, + 0xcb, 0x40, 0x01, 0x14, 0x0c, 0x72, 0x08, 0x00, 0x64, 0x80, 0x22, 0x64, + 0x33, 0x36, 0x60, 0x2f, 0x3a, 0xe5, 0x01, 0x12, 0x00, 0x04, 0x40, 0x64, + 0x43, 0x00, 0x80, 0x3c, 0x7c, 0xb3, 0xfa, 0xbf, 0x7f, 0x67, 0x00, 0x80, + 0x83, 0xa3, 0x00, 0x01, 0x12, 0x00, 0x04, 0x80, 0x64, 0x09, 0x00, 0x00, + 0x1c, 0xed, 0x64, 0x67, 0x32, 0x34, 0x4b, 0x06, 0x00, 0xd3, 0xf7, 0x7f, + 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, 0x40, 0x91, 0xb4, 0x8a, 0x41, 0x60, + 0x8b, 0xa3, 0x00, 0x2b, 0x8a, 0xf6, 0x84, 0x02, 0x66, 0x7a, 0x01, 0x40, + 0xab, 0x46, 0x00, 0x08, 0x00, 0x74, 0x00, 0xaa, 0x1d, 0x4f, 0xf4, 0x7f, + 0x1a, 0x40, 0x20, 0xc0, 0x02, 0xc8, 0x0d, 0x00, 0x00, 0x8c, 0x59, 0x4e, + 0xe0, 0x80, 0x84, 0x52, 0x41, 0x60, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x8e, + 0x0d, 0x00, 0x00, 0x2e, 0xbc, 0x1f, 0x04, 0x00, 0x64, 0x2a, 0x00, 0x60, + 0xc0, 0xaa, 0x1d, 0x4c, 0x00, 0x64, 0x08, 0x01, 0x64, 0x0f, 0xf4, 0x7f, + 0x13, 0x10, 0x38, 0x04, 0x51, 0x2b, 0x98, 0xc1, 0x9f, 0x9b, 0x45, 0xfb, + 0x44, 0x00, 0x64, 0xbf, 0x11, 0x3a, 0xc2, 0xbe, 0x0f, 0x10, 0x38, 0x2b, + 0xc8, 0x07, 0x2b, 0xaa, 0x3e, 0x00, 0xbf, 0x50, 0xfb, 0x8c, 0x2a, 0x2b, + 0xd3, 0x4f, 0xfb, 0x44, 0x24, 0x2b, 0x0a, 0x45, 0x20, 0x8f, 0x44, 0xfb, + 0xc3, 0x0d, 0x90, 0xfe, 0xb8, 0x00, 0xc8, 0x83, 0x92, 0x5a, 0x40, 0x60, + 0xc3, 0x11, 0x50, 0xf7, 0xf4, 0x7f, 0xc7, 0x01, 0x80, 0x63, 0x80, 0xdb, + 0xc3, 0x05, 0x90, 0x64, 0x30, 0x26, 0x0e, 0x00, 0x40, 0xc2, 0x41, 0x20, + 0xd7, 0x6c, 0x60, 0x01, 0xf0, 0x00, 0x8a, 0x01, 0x00, 0x01, 0x30, 0x00, + 0x80, 0x80, 0x92, 0x0d, 0x00, 0x00, 0x0c, 0x59, 0x64, 0xb6, 0x40, 0x60, + 0x9b, 0x11, 0x38, 0xd0, 0x18, 0xc8, 0x7c, 0x00, 0x64, 0xcb, 0x3c, 0xa0, + 0x73, 0x00, 0x60, 0xe8, 0x03, 0x92, 0x2a, 0x00, 0x60, 0x50, 0x5c, 0x64, + 0xb3, 0x03, 0x90, 0x90, 0x07, 0xe7, 0x83, 0x6b, 0x90, 0xa3, 0x13, 0x90, + 0xdc, 0xdb, 0x63, 0xc2, 0x41, 0x20, 0x83, 0x6c, 0x60, 0xab, 0xbf, 0x7f, + 0xd8, 0x83, 0x92, 0xa2, 0xff, 0x7f, 0xb3, 0x03, 0x90, 0x40, 0x66, 0x64, + 0xa3, 0x03, 0x90, 0x90, 0x07, 0xe7, 0x83, 0x6b, 0x90, 0xf0, 0xd7, 0x63, + 0xc2, 0x41, 0x20, 0x97, 0x6c, 0x60, 0x7f, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x00, 0x2f, 0x55, 0x2c, 0xc3, 0x73, 0x0d, 0x00, 0x00, 0xe4, 0x5d, 0x80, + 0xc2, 0x08, 0xc0, 0x00, 0x80, 0x90, 0x0e, 0x40, 0x60, 0xdf, 0x11, 0x00, + 0x57, 0x05, 0x00, 0x23, 0x06, 0x00, 0x1c, 0x26, 0x3a, 0x66, 0xbe, 0x7f, + 0x53, 0x3d, 0xfe, 0x00, 0x0d, 0xa8, 0xd4, 0xdb, 0x63, 0x2f, 0x3e, 0xe5, + 0x01, 0x40, 0x00, 0x80, 0x00, 0x92, 0xca, 0xbf, 0x7f, 0xbc, 0x00, 0x64, + 0x4f, 0xbf, 0x7f, 0x0b, 0x38, 0xe5, 0x09, 0x00, 0x00, 0x18, 0xeb, 0x64, + 0x09, 0x00, 0x00, 0xc0, 0xee, 0x64, 0x83, 0x01, 0x90, 0x90, 0x01, 0xe7, + 0xbc, 0x51, 0xe4, 0x54, 0x00, 0x65, 0x11, 0x10, 0x00, 0x20, 0x1e, 0x64, + 0x11, 0x10, 0x00, 0x24, 0x20, 0x64, 0x0d, 0x00, 0x00, 0x1c, 0x59, 0x64, + 0x01, 0x00, 0xa0, 0x28, 0x00, 0x64, 0x93, 0x5f, 0x60, 0x8f, 0x48, 0x60, + 0x93, 0x11, 0x80, 0xe8, 0xd3, 0xc9, 0x86, 0x3d, 0xea, 0x90, 0x01, 0xe7, + 0x40, 0x00, 0x66, 0x36, 0x00, 0x60, 0x48, 0x85, 0x40, 0x03, 0x0a, 0x90, + 0x43, 0x12, 0x90, 0x11, 0x10, 0x00, 0xe7, 0xe3, 0xf8, 0xbc, 0x51, 0xe4, + 0x92, 0x42, 0x20, 0xc2, 0x41, 0x20, 0xc0, 0xd3, 0x1f, 0x78, 0xc3, 0xc9, + 0x13, 0x57, 0x60, 0xb7, 0xbf, 0x7f, 0x11, 0x10, 0x00, 0xc7, 0xe3, 0xf8, + 0x11, 0x10, 0x00, 0x07, 0xe4, 0xf8, 0x11, 0x10, 0x00, 0xe7, 0xe3, 0xf8, + 0xd7, 0xbf, 0x7f, 0x33, 0x10, 0xe6, 0xdc, 0xd3, 0x63, 0xc4, 0x00, 0x64, + 0x08, 0x71, 0x64, 0x11, 0x10, 0x00, 0x27, 0xe4, 0xf8, 0x00, 0x01, 0x64, + 0xa3, 0x0b, 0x90, 0x83, 0x47, 0x90, 0xb3, 0x07, 0x90, 0x93, 0x43, 0x90, + 0x18, 0x7a, 0x64, 0x1c, 0x7d, 0x64, 0xe4, 0xc3, 0x63, 0xd0, 0x7d, 0x64, + 0x8c, 0x75, 0x64, 0xa3, 0x13, 0x90, 0xb3, 0x0f, 0x90, 0xd0, 0xc3, 0x63, + 0xb3, 0x1b, 0x90, 0xa3, 0x1f, 0x90, 0x0d, 0x00, 0x00, 0x1c, 0x59, 0x64, + 0x09, 0x00, 0x00, 0x18, 0xeb, 0x64, 0xf4, 0xbf, 0x63, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x64, 0xd8, 0xc7, 0x63, 0x11, 0x10, 0x00, 0x47, 0x81, 0xf8, + 0x11, 0x10, 0x00, 0x4f, 0x81, 0xf8, 0x11, 0x10, 0x00, 0x57, 0x81, 0xf8, + 0x11, 0x10, 0x00, 0x5f, 0x81, 0xf8, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, + 0x06, 0x5c, 0x00, 0x11, 0x10, 0x00, 0x44, 0x05, 0x7e, 0x01, 0x01, 0x00, + 0x40, 0x00, 0x64, 0xd8, 0xc3, 0x63, 0x31, 0x06, 0x00, 0x88, 0x51, 0x64, + 0xcc, 0x7e, 0x64, 0xb3, 0x0b, 0x90, 0xa3, 0x0f, 0x90, 0xd0, 0xbb, 0x63, + 0xa7, 0x6b, 0x60, 0x01, 0x02, 0x00, 0x00, 0x00, 0x64, 0xf0, 0xbf, 0x63, + 0xc3, 0xe1, 0x51, 0x5f, 0xef, 0x7f, 0x83, 0xe1, 0x56, 0x57, 0xef, 0x7f, + 0x00, 0x9a, 0x64, 0x50, 0x00, 0x64, 0x07, 0xac, 0x02, 0x8f, 0x21, 0x00, + 0x48, 0x00, 0x65, 0xc7, 0x11, 0xb0, 0xcb, 0xc1, 0xa1, 0xbb, 0x11, 0xb5, + 0xc8, 0x01, 0xe5, 0xd3, 0xc5, 0xa1, 0xf3, 0x4d, 0x90, 0xb3, 0x09, 0xa5, + 0x3d, 0x00, 0x00, 0x10, 0x00, 0x64, 0x80, 0x10, 0x64, 0x11, 0x10, 0x00, + 0x47, 0xe1, 0xf8, 0x10, 0x00, 0xca, 0xd0, 0x10, 0x7a, 0x15, 0xb0, 0x11, + 0xfc, 0x05, 0x64, 0xf9, 0x2f, 0xfa, 0xc3, 0xaf, 0x0b, 0xf9, 0x99, 0xfb, + 0x07, 0x0c, 0x19, 0xfd, 0x72, 0x11, 0x4b, 0xb0, 0x02, 0x21, 0xdf, 0x09, + 0x8f, 0x30, 0x0e, 0xf1, 0xf8, 0xee, 0xd3, 0x10, 0x09, 0x93, 0x7d, 0x94, + 0xf5, 0x51, 0x02, 0x3f, 0x01, 0x1a, 0xa3, 0x41, 0x94, 0x01, 0x7b, 0xf9, + 0xc3, 0x3f, 0x13, 0xb3, 0x45, 0x94, 0xf9, 0x22, 0xfb, 0x07, 0x80, 0x11, + 0x83, 0x89, 0x94, 0xf9, 0x2f, 0x17, 0x4b, 0xa8, 0x1c, 0x93, 0x8d, 0x94, + 0x15, 0xeb, 0xf5, 0x8f, 0x24, 0x07, 0xa3, 0x91, 0x94, 0xf5, 0x53, 0xf8, + 0xd3, 0xb4, 0x15, 0xb3, 0xbd, 0x94, 0xf9, 0xdb, 0xf2, 0x3f, 0xb5, 0x07, + 0x83, 0xc1, 0x94, 0xf5, 0x03, 0x04, 0xc3, 0x17, 0x17, 0x93, 0x3d, 0x95, + 0xa3, 0xc9, 0x94, 0x83, 0x11, 0x95, 0xa3, 0x01, 0x95, 0x93, 0xc5, 0x94, + 0xb3, 0xcd, 0x94, 0x44, 0x88, 0x64, 0xfd, 0xfb, 0xfa, 0x1b, 0x04, 0x1d, + 0xa3, 0x07, 0x90, 0xb3, 0x1b, 0x90, 0xe4, 0xa7, 0x63, 0x4c, 0x8c, 0x64, + 0xa3, 0x0f, 0x90, 0xd8, 0xa7, 0x63, 0x09, 0x00, 0x00, 0x48, 0xeb, 0x64, + 0x93, 0x50, 0x16, 0x03, 0xe1, 0x1e, 0x1b, 0xcc, 0x09, 0xc4, 0x9b, 0x64, + 0xa3, 0x07, 0x90, 0xa3, 0x4b, 0x90, 0x93, 0x53, 0x90, 0x83, 0x43, 0x90, + 0xb3, 0x1b, 0x90, 0xd8, 0xa0, 0x64, 0xe4, 0xa3, 0x63, 0x3d, 0x00, 0x00, + 0xcc, 0x31, 0x64, 0xf1, 0xff, 0xff, 0xcb, 0xa0, 0x0c, 0xe9, 0xff, 0xff, + 0x93, 0x38, 0x14, 0xf9, 0xff, 0xff, 0x03, 0xa1, 0x10, 0xa3, 0x4f, 0x90, + 0x93, 0x4b, 0x90, 0x83, 0x53, 0x90, 0xb3, 0x03, 0x90, 0xa3, 0x1b, 0x90, + 0x39, 0x00, 0x00, 0x98, 0x35, 0x64, 0xe4, 0x9f, 0x63, 0x39, 0x00, 0x00, + 0x04, 0xfc, 0x64, 0xf1, 0xff, 0xff, 0x4f, 0x2c, 0x0e, 0xf9, 0xff, 0xff, + 0xcb, 0x08, 0x09, 0xf5, 0xff, 0xff, 0x93, 0x28, 0x16, 0xc0, 0xa5, 0x64, + 0xa3, 0x03, 0x90, 0xa3, 0x47, 0x90, 0x93, 0x4f, 0x90, 0x83, 0x4b, 0x90, + 0xb3, 0x13, 0x90, 0xe8, 0x9b, 0x63, 0xf1, 0xff, 0xff, 0x87, 0x1d, 0x14, + 0xf5, 0xff, 0xff, 0x4f, 0x3c, 0x1b, 0xf5, 0xff, 0xff, 0xcb, 0x04, 0x1e, + 0xd0, 0xaa, 0x64, 0xa3, 0x13, 0x90, 0xa3, 0x5b, 0x90, 0x93, 0x47, 0x90, + 0x83, 0x4f, 0x90, 0xb3, 0x0b, 0x90, 0xf4, 0x97, 0x63, 0x3d, 0x00, 0x00, + 0x80, 0x3c, 0x64, 0xf1, 0xff, 0xff, 0x1b, 0x38, 0x0c, 0xe9, 0xff, 0xff, + 0x87, 0x05, 0x0c, 0xf9, 0xff, 0xff, 0x4f, 0x80, 0x12, 0xc8, 0xaf, 0x64, + 0xa3, 0x0b, 0x90, 0xa3, 0x43, 0x90, 0x93, 0x5b, 0x90, 0x83, 0x47, 0x90, + 0xb3, 0x0f, 0x90, 0xf8, 0x93, 0x63, 0x45, 0x00, 0x00, 0x10, 0xdc, 0x64, + 0xed, 0xff, 0xff, 0x03, 0x85, 0x18, 0xd9, 0xff, 0xff, 0x1b, 0x10, 0x1a, + 0xf9, 0xff, 0xff, 0x87, 0x29, 0x1e, 0xcc, 0xb4, 0x64, 0xa3, 0x0f, 0x90, + 0xa3, 0x53, 0x90, 0x93, 0x43, 0x90, 0x83, 0x5b, 0x90, 0xb3, 0x07, 0x90, + 0xfc, 0x8f, 0x63, 0x3d, 0x00, 0x00, 0x48, 0xb6, 0x64, 0xf1, 0xff, 0xff, + 0x93, 0xa8, 0x08, 0xdd, 0xff, 0xff, 0x03, 0x39, 0x1a, 0x1b, 0xf4, 0x1c, + 0xc4, 0xb9, 0x64, 0xa3, 0x07, 0x90, 0xa3, 0x4b, 0x90, 0x93, 0x53, 0x90, + 0x83, 0x43, 0x90, 0xb3, 0x1b, 0x90, 0xd8, 0xbe, 0x64, 0xc0, 0x8f, 0x63, + 0x21, 0x00, 0x00, 0xcc, 0xd7, 0x64, 0xf5, 0xff, 0xff, 0xcb, 0xb8, 0x1c, + 0xf9, 0xff, 0xff, 0x93, 0xa8, 0x08, 0xf9, 0xff, 0xff, 0x03, 0xb5, 0x19, + 0xa3, 0x4f, 0x90, 0x93, 0x4b, 0x90, 0x83, 0x53, 0x90, 0xb3, 0x03, 0x90, + 0xa3, 0x1b, 0x90, 0x25, 0x00, 0x00, 0x98, 0x37, 0x64, 0xc0, 0x8b, 0x63, + 0x1d, 0x00, 0x00, 0xc4, 0xf4, 0x64, 0xf9, 0xff, 0xff, 0x4f, 0x94, 0x03, + 0xf9, 0xff, 0xff, 0xcb, 0x20, 0x0b, 0xf9, 0xff, 0xff, 0x93, 0x3c, 0x1e, + 0xc0, 0xc3, 0x64, 0xa3, 0x03, 0x90, 0xa3, 0x47, 0x90, 0x93, 0x4f, 0x90, + 0x83, 0x4b, 0x90, 0xb3, 0x13, 0x90, 0x47, 0xf8, 0x7f, 0xf5, 0xff, 0xff, + 0x87, 0x0d, 0x1a, 0xf1, 0xff, 0xff, 0x4f, 0x84, 0x0b, 0xcb, 0xdc, 0x19, + 0xd0, 0xc8, 0x64, 0xa3, 0x13, 0x90, 0xa3, 0x5b, 0x90, 0x93, 0x47, 0x90, + 0x83, 0x4f, 0x90, 0xb3, 0x0b, 0x90, 0x17, 0xf8, 0x7f, 0x1d, 0x00, 0x00, + 0x40, 0xfe, 0x64, 0xf9, 0xff, 0xff, 0x1b, 0x30, 0x03, 0xf1, 0xff, 0xff, + 0x87, 0xad, 0x1b, 0x4f, 0xc0, 0x16, 0xc8, 0xcd, 0x64, 0xa3, 0x0b, 0x90, + 0xa3, 0x43, 0x90, 0x93, 0x5b, 0x90, 0x83, 0x47, 0x90, 0xb3, 0x0f, 0x90, + 0xdf, 0xf7, 0x7f, 0x25, 0x00, 0x00, 0x50, 0x30, 0x64, 0xf5, 0xff, 0xff, + 0x03, 0x29, 0x1a, 0xed, 0xff, 0xff, 0x1b, 0x28, 0x05, 0x87, 0xc1, 0x10, + 0xcc, 0xd2, 0x64, 0xa3, 0x0f, 0x90, 0xa3, 0x53, 0x90, 0x93, 0x43, 0x90, + 0x83, 0x5b, 0x90, 0xb3, 0x07, 0x90, 0xa7, 0xf7, 0x7f, 0x1d, 0x00, 0x00, + 0x48, 0xee, 0x64, 0xf9, 0xff, 0xff, 0x93, 0xac, 0x03, 0xed, 0xff, 0xff, + 0x03, 0x19, 0x1a, 0x1b, 0x54, 0x0e, 0xc4, 0xd7, 0x64, 0xa3, 0x07, 0x90, + 0xa3, 0x4b, 0x90, 0x93, 0x53, 0x90, 0x83, 0x43, 0x90, 0xb3, 0x1b, 0x90, + 0xd8, 0xdc, 0x64, 0x6b, 0xf7, 0x7f, 0x35, 0x00, 0x00, 0x4c, 0x8d, 0x64, + 0xf1, 0xff, 0xff, 0xcb, 0x1c, 0x19, 0xf5, 0xff, 0xff, 0x93, 0x24, 0x14, + 0xf9, 0xff, 0xff, 0x03, 0x85, 0x03, 0xa3, 0x4f, 0x90, 0x93, 0x4b, 0x90, + 0x83, 0x53, 0x90, 0xb3, 0x03, 0x90, 0xa3, 0x1b, 0x90, 0x39, 0x00, 0x00, + 0x58, 0x61, 0x64, 0x2b, 0xf7, 0x7f, 0x31, 0x00, 0x00, 0xc4, 0x6a, 0x64, + 0xf5, 0xff, 0xff, 0x4f, 0xa8, 0x01, 0xf5, 0xff, 0xff, 0xcb, 0xb8, 0x13, + 0xf9, 0xff, 0xff, 0x93, 0x18, 0x0a, 0xc0, 0xe1, 0x64, 0xa3, 0x03, 0x90, + 0xa3, 0x47, 0x90, 0x93, 0x4f, 0x90, 0x83, 0x4b, 0x90, 0xb3, 0x13, 0x90, + 0xef, 0xf6, 0x7f, 0xf1, 0xff, 0xff, 0x87, 0xb9, 0x12, 0xe9, 0xff, 0xff, + 0x4f, 0x34, 0x0f, 0xf9, 0xff, 0xff, 0xcb, 0x94, 0x16, 0xd0, 0xe6, 0x64, + 0xa3, 0x13, 0x90, 0xa3, 0x5b, 0x90, 0x93, 0x47, 0x90, 0x83, 0x4f, 0x90, + 0xb3, 0x0b, 0x90, 0xbb, 0xf6, 0x7f, 0x31, 0x00, 0x00, 0x40, 0xac, 0x64, + 0xf1, 0xff, 0xff, 0x1b, 0xb0, 0x1f, 0xed, 0xff, 0xff, 0x87, 0x8d, 0x03, + 0xf9, 0xff, 0xff, 0x4f, 0xa0, 0x1b, 0xc8, 0xeb, 0x64, 0xa3, 0x0b, 0x90, + 0xa3, 0x43, 0x90, 0x93, 0x5b, 0x90, 0x83, 0x47, 0x90, 0xb3, 0x0f, 0x90, + 0x7f, 0xf6, 0x7f, 0x39, 0x00, 0x00, 0x10, 0xa4, 0x64, 0xf1, 0xff, 0xff, + 0x03, 0xb9, 0x10, 0xe1, 0xff, 0xff, 0x1b, 0x98, 0x0b, 0xcc, 0xf0, 0x64, + 0x87, 0xe9, 0x1a, 0xa3, 0x0f, 0x90, 0xa3, 0x53, 0x90, 0x93, 0x43, 0x90, + 0x83, 0x5b, 0x90, 0xb3, 0x07, 0x90, 0x47, 0xf6, 0x7f, 0x31, 0x00, 0x00, + 0x48, 0xb0, 0x64, 0xf1, 0xff, 0xff, 0x93, 0xa0, 0x1f, 0xe5, 0xff, 0xff, + 0x03, 0x11, 0x0b, 0xc4, 0xf5, 0x64, 0x1b, 0xfc, 0x16, 0xa3, 0x4b, 0x90, + 0x93, 0x53, 0x90, 0xa3, 0x07, 0x90, 0x83, 0x43, 0x90, 0xb3, 0x1b, 0x90, + 0x0f, 0xf6, 0x7f, 0x9f, 0x50, 0x60, 0x01, 0x03, 0x00, 0x00, 0x00, 0x64, + 0x6f, 0xf6, 0x7f, 0xf3, 0xf6, 0x7f, 0x01, 0x04, 0x00, 0x00, 0x00, 0x64, + 0x5f, 0xf6, 0x7f, 0xe4, 0x93, 0x62, 0x01, 0x05, 0x00, 0x00, 0x00, 0x64, + 0x4f, 0xf6, 0x7f, 0x00, 0x00, 0x64, 0x07, 0x66, 0x60, 0x01, 0x06, 0x00, + 0x00, 0x00, 0x64, 0x3b, 0xf6, 0x7f, 0x00, 0x00, 0x64, 0x7b, 0x65, 0x60, + 0x01, 0x07, 0x00, 0x00, 0x00, 0x64, 0x27, 0xf6, 0x7f, 0x01, 0x08, 0x00, + 0x00, 0x00, 0x64, 0x1b, 0xf6, 0x7f, 0x00, 0x04, 0x64, 0x84, 0x01, 0x64, + 0xc7, 0xea, 0x7f, 0x97, 0xf5, 0x7f, 0xc2, 0x41, 0x20, 0xc8, 0x8b, 0x63, + 0x4b, 0x08, 0xe6, 0x1d, 0x10, 0x00, 0x04, 0x08, 0x55, 0x48, 0x40, 0x48, + 0xa6, 0x00, 0x60, 0x18, 0x10, 0x2b, 0x92, 0x41, 0x20, 0x01, 0x05, 0x01, + 0x00, 0x01, 0x5b, 0x90, 0x07, 0xe7, 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, + 0x80, 0x07, 0xe7, 0x07, 0x11, 0x80, 0x0f, 0x21, 0x80, 0x3f, 0x31, 0x80, + 0xa3, 0x43, 0x90, 0x88, 0x03, 0xd8, 0xb3, 0x47, 0x90, 0x83, 0x8f, 0x90, + 0x93, 0xbf, 0x90, 0xa4, 0x03, 0xe4, 0x3c, 0xfc, 0x3c, 0x0a, 0xbc, 0x07, + 0x5a, 0x40, 0x60, 0x0d, 0x00, 0x00, 0x10, 0x77, 0x64, 0x13, 0x49, 0xf7, + 0x90, 0x10, 0xc8, 0x87, 0x23, 0x00, 0x83, 0xa3, 0x00, 0xc0, 0xd3, 0x1f, + 0x0d, 0x00, 0x00, 0x88, 0x59, 0x4e, 0x8e, 0x41, 0x20, 0x87, 0x33, 0x80, + 0x93, 0x43, 0x80, 0xa7, 0x0b, 0xb0, 0x83, 0x53, 0x80, 0xbf, 0x23, 0x80, + 0x01, 0x05, 0x01, 0xc0, 0xfc, 0x7a, 0xd3, 0x04, 0x90, 0xe3, 0x10, 0x90, + 0xf3, 0x00, 0x90, 0x4f, 0x0c, 0xe6, 0x40, 0x01, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x83, 0x82, 0xbf, 0xbf, 0x7f, 0x01, 0x80, 0x00, 0x08, 0x00, 0x75, + 0x1d, 0x10, 0x00, 0x04, 0x0c, 0x80, 0xcc, 0x3f, 0x64, 0x1d, 0x10, 0x00, + 0xa4, 0x0d, 0x80, 0x70, 0x38, 0xc4, 0x92, 0x40, 0x20, 0x01, 0x04, 0x01, + 0x00, 0x01, 0x5b, 0x06, 0x4c, 0x20, 0x03, 0x05, 0x90, 0x03, 0x21, 0x80, + 0xfd, 0x00, 0xc0, 0x06, 0xbc, 0x1f, 0x40, 0x10, 0xa8, 0x23, 0x01, 0x90, + 0x07, 0x11, 0x80, 0x43, 0x3c, 0xfe, 0x04, 0x40, 0xa8, 0x13, 0x05, 0x90, + 0x03, 0x31, 0x80, 0xc1, 0xff, 0xff, 0x06, 0x00, 0x00, 0x42, 0x50, 0x20, + 0x33, 0x01, 0x90, 0x07, 0x21, 0x80, 0xc1, 0xff, 0xff, 0x42, 0x00, 0x00, + 0x23, 0x01, 0x90, 0x07, 0x11, 0x80, 0x43, 0x48, 0xd0, 0x13, 0x05, 0x90, + 0x8b, 0x80, 0x00, 0x00, 0x3c, 0x23, 0x03, 0x00, 0xe0, 0x0d, 0x00, 0x00, + 0x40, 0x3f, 0x52, 0x00, 0x00, 0x66, 0x3e, 0x00, 0x60, 0x11, 0x10, 0x00, + 0x08, 0x0a, 0x52, 0x0d, 0x00, 0x00, 0xef, 0x87, 0xf8, 0x11, 0x10, 0x00, + 0x10, 0x0a, 0x64, 0x86, 0x5c, 0x00, 0x4e, 0x58, 0x22, 0x11, 0x10, 0x00, + 0x44, 0x0d, 0x7e, 0x3e, 0x01, 0xe0, 0xd8, 0xb3, 0x26, 0xfa, 0xff, 0x7f, + 0x03, 0x09, 0xb0, 0x00, 0x00, 0x64, 0xd8, 0xe7, 0x63, 0x80, 0x00, 0x64, + 0xd0, 0xe7, 0x63, 0x00, 0x01, 0x64, 0xc8, 0xe7, 0x63, 0x80, 0x01, 0x64, + 0x03, 0x04, 0xe0, 0x7f, 0x1c, 0xfe, 0x0d, 0x00, 0x00, 0x00, 0x59, 0x64, + 0x31, 0x06, 0x00, 0x88, 0x51, 0x64, 0x63, 0x00, 0x90, 0x73, 0x08, 0x90, + 0x00, 0x3c, 0x23, 0x40, 0x01, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, + 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, 0x60, 0x00, 0xe7, 0x8c, 0x75, 0x64, + 0xc2, 0x40, 0x20, 0x0a, 0x00, 0xe0, 0xcf, 0x04, 0x00, 0x84, 0x00, 0x66, + 0xf2, 0xbf, 0x7f, 0x3f, 0x48, 0x00, 0x4c, 0x00, 0x64, 0x98, 0x02, 0x64, + 0xc4, 0x83, 0x86, 0x1e, 0x40, 0x60, 0xe1, 0xf5, 0x05, 0xfc, 0x3c, 0xba, + 0xd0, 0xff, 0x5c, 0x0e, 0x00, 0x60, 0x04, 0x91, 0x66, 0x16, 0x40, 0x60, + 0x01, 0x30, 0x30, 0x3c, 0x01, 0x64, 0x73, 0x3c, 0x90, 0x0f, 0x0c, 0xe6, + 0x02, 0x3d, 0x00, 0x53, 0x20, 0x80, 0x08, 0x4c, 0x24, 0xcc, 0x58, 0x24, + 0x03, 0x89, 0xf2, 0x63, 0x00, 0x90, 0xbb, 0xbf, 0x7f, 0x00, 0x3c, 0x23, + 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, + 0x08, 0x5e, 0x55, 0x0d, 0x00, 0x00, 0x0c, 0x5f, 0x55, 0x63, 0x08, 0x90, + 0x73, 0x0c, 0x90, 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, + 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, + 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x08, 0x59, 0x52, 0x8e, 0x04, 0x00, + 0x63, 0x0c, 0x90, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x08, 0x77, 0x75, + 0x00, 0x20, 0x64, 0x30, 0x00, 0xca, 0xd0, 0x10, 0x5a, 0x1c, 0x10, 0x72, + 0x63, 0x08, 0x90, 0x00, 0x3c, 0x23, 0x8b, 0x04, 0x00, 0x40, 0x04, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x00, 0x3c, 0x23, 0x40, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xe4, 0x43, 0x7e, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, + 0x04, 0x3f, 0x52, 0x40, 0x00, 0x66, 0x16, 0x00, 0x60, 0x90, 0x04, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x93, 0x82, 0x00, 0x3c, 0x23, 0x0b, 0x20, 0x80, + 0x0f, 0x30, 0x80, 0x80, 0x08, 0x2b, 0x0d, 0x00, 0x00, 0x33, 0x4c, 0x97, + 0x00, 0x3c, 0x23, 0x0b, 0x28, 0xe5, 0x0b, 0x20, 0x80, 0xc8, 0x09, 0xc8, + 0x0f, 0x30, 0x80, 0x10, 0x00, 0x64, 0xda, 0xfc, 0x07, 0x14, 0x18, 0xc4, + 0x97, 0x90, 0xf6, 0x3f, 0x99, 0xf2, 0x13, 0x05, 0x00, 0xc3, 0x17, 0xb0, + 0xfd, 0xff, 0x1f, 0xce, 0x00, 0x18, 0xdc, 0x80, 0xa2, 0xcf, 0x01, 0x80, + 0x1e, 0x30, 0xe0, 0x7c, 0x00, 0x64, 0xd0, 0x9f, 0x40, 0xec, 0x10, 0x3a, + 0x16, 0x00, 0x60, 0xdc, 0x04, 0x2b, 0x2c, 0x9d, 0x3a, 0x8b, 0x10, 0x00, + 0x8e, 0x40, 0x40, 0xc0, 0x01, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, + 0xab, 0x00, 0x60, 0x05, 0x00, 0x00, 0xc0, 0x00, 0xae, 0x92, 0x40, 0x20, + 0x2a, 0x00, 0x40, 0xa3, 0xc9, 0xf2, 0xde, 0x40, 0x20, 0x30, 0x1c, 0xca, + 0x16, 0x01, 0xe0, 0x3f, 0xa1, 0xf2, 0xcf, 0x44, 0x00, 0x13, 0x05, 0x00, + 0xc3, 0x17, 0xb0, 0x4b, 0x00, 0x60, 0x05, 0x00, 0x00, 0x10, 0x00, 0x64, + 0x1e, 0x41, 0x20, 0x50, 0x1c, 0xca, 0x05, 0x00, 0x00, 0xbf, 0x00, 0x00, + 0xe3, 0xd3, 0xf2, 0x26, 0x02, 0xe0, 0x05, 0x00, 0x00, 0x97, 0x01, 0x00, + 0x63, 0xd1, 0xf2, 0x13, 0x45, 0x00, 0x03, 0x26, 0xb0, 0xfd, 0xff, 0xff, + 0xcf, 0x00, 0x00, 0x5a, 0x41, 0x20, 0xca, 0x43, 0x20, 0x14, 0xcf, 0x73, + 0x09, 0x00, 0x00, 0x0c, 0xeb, 0x64, 0xff, 0x00, 0x80, 0x03, 0x30, 0x80, + 0x63, 0x3c, 0x90, 0xd3, 0x00, 0x90, 0xff, 0x00, 0xb5, 0x20, 0x08, 0xc8, + 0x06, 0xfc, 0x07, 0xd3, 0x04, 0x90, 0x0f, 0x2c, 0xe5, 0xfc, 0x50, 0xe4, + 0xfb, 0xbf, 0x7f, 0x0d, 0x00, 0x00, 0x00, 0x3f, 0x52, 0x00, 0x00, 0x66, + 0x16, 0x00, 0x60, 0x88, 0x04, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x8b, 0x82, + 0x00, 0x3c, 0x23, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xec, 0x47, 0x7e, + 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, + 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, 0x00, 0x3c, 0x23, + 0x0d, 0x00, 0x00, 0x08, 0x74, 0x52, 0x63, 0x08, 0x90, 0x00, 0x3c, 0x23, + 0x13, 0x00, 0xe0, 0x02, 0x10, 0xc0, 0xa3, 0x07, 0x90, 0xb3, 0xe4, 0x7f, + 0x87, 0x23, 0x80, 0x2c, 0x00, 0x72, 0x8c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x8f, 0x82, 0x17, 0x04, 0xe0, 0x03, 0x00, 0x80, 0x0b, 0xa0, 0x3b, + 0x63, 0x08, 0x90, 0xf3, 0xbf, 0x7f, 0x13, 0x00, 0xe0, 0x02, 0x10, 0xc0, + 0xa3, 0x07, 0x90, 0x7b, 0xe4, 0x7f, 0x87, 0x23, 0x80, 0x2c, 0x00, 0x72, + 0x8c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x8f, 0x82, 0x17, 0x04, 0xe0, + 0x03, 0x00, 0x80, 0x0a, 0x04, 0x00, 0x63, 0x08, 0x90, 0xf3, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x02, 0x10, 0xc0, 0x5a, 0x40, 0x20, 0x43, 0xe4, 0x7f, + 0x2c, 0x00, 0x72, 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, + 0x0f, 0x0c, 0xe6, 0x04, 0x00, 0x64, 0x13, 0xe7, 0x7f, 0x00, 0x60, 0x31, + 0xa3, 0x01, 0x90, 0xef, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x02, 0x10, 0xc0, + 0x5a, 0x40, 0x20, 0x0b, 0xe4, 0x7f, 0x2c, 0x00, 0x72, 0x84, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, 0x0f, 0x0c, 0xe6, 0x04, 0x00, 0x64, + 0xdb, 0xe6, 0x7f, 0x00, 0x40, 0x31, 0xa3, 0x01, 0x90, 0xef, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x91, 0x1a, 0x00, 0x60, 0x80, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x83, 0x82, 0x00, 0x00, 0x64, 0x0f, 0x0c, 0xe6, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x23, 0xe4, 0x7f, 0x0d, 0x00, 0x00, + 0x34, 0x83, 0x82, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, 0x82, 0x11, 0xc0, + 0x0b, 0x0c, 0xe6, 0x8b, 0xa3, 0x7f, 0x03, 0x10, 0xe6, 0x0d, 0x00, 0x00, + 0x5b, 0x90, 0x45, 0xdc, 0xfb, 0x63, 0x86, 0x09, 0xc0, 0x40, 0x00, 0x84, + 0x52, 0x00, 0x40, 0x0f, 0x00, 0x80, 0xd2, 0xb8, 0x00, 0x20, 0x81, 0x92, + 0x02, 0x48, 0xa0, 0x88, 0x41, 0x6c, 0x3a, 0x40, 0x60, 0x04, 0x04, 0x64, + 0x3b, 0xe6, 0x7f, 0x8a, 0x09, 0xc0, 0x80, 0x00, 0x90, 0x26, 0x00, 0x60, + 0x29, 0xff, 0xff, 0x3c, 0x55, 0x64, 0x0c, 0x7c, 0x24, 0x04, 0x19, 0x64, + 0xa5, 0xae, 0x02, 0xc3, 0x00, 0x0a, 0x17, 0x6b, 0x60, 0xe3, 0x01, 0x90, + 0x07, 0x14, 0xe6, 0x03, 0x10, 0xe6, 0x58, 0x80, 0x1d, 0xf4, 0xf3, 0x63, + 0x0d, 0x00, 0x00, 0x84, 0x59, 0x4e, 0x40, 0x00, 0x90, 0x16, 0x00, 0x60, + 0xcb, 0x21, 0x80, 0x84, 0x08, 0x2b, 0xe3, 0xe5, 0x7f, 0xa3, 0x01, 0x90, + 0x07, 0x14, 0xe6, 0x03, 0x10, 0xe6, 0x18, 0x84, 0x1d, 0xc4, 0xf3, 0x63, + 0x0d, 0x00, 0x00, 0x84, 0x59, 0x4e, 0x40, 0x00, 0x90, 0x26, 0x00, 0x60, + 0x8a, 0x19, 0xc0, 0xbf, 0x21, 0x80, 0x8e, 0xbc, 0x1f, 0xd3, 0x10, 0x00, + 0xc4, 0x53, 0x1f, 0x44, 0x08, 0x2b, 0xa3, 0xe5, 0x7f, 0xe3, 0x01, 0x90, + 0x07, 0x14, 0xe6, 0x0b, 0x08, 0xe6, 0x1a, 0x40, 0x20, 0xc4, 0xef, 0x63, + 0x0d, 0x00, 0x00, 0x84, 0x59, 0x4e, 0x40, 0x00, 0x90, 0x1a, 0x00, 0x60, + 0x8f, 0x21, 0x80, 0x8b, 0x31, 0x80, 0xc4, 0x08, 0x2b, 0x0b, 0x0c, 0xe6, + 0x7f, 0xa5, 0x7f, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, 0x1a, 0x40, 0x20, + 0xd0, 0xeb, 0x63, 0x0d, 0x00, 0x00, 0x84, 0x59, 0x4e, 0x40, 0x00, 0x90, + 0x2a, 0x00, 0x60, 0x8a, 0x19, 0xc0, 0xbf, 0x21, 0x80, 0x8e, 0xbc, 0x1f, + 0x8b, 0x31, 0x80, 0xd3, 0x10, 0x00, 0xc4, 0x53, 0x1f, 0x44, 0x08, 0x2b, + 0x0b, 0x0c, 0xe6, 0x3b, 0xa5, 0x7f, 0x0f, 0x0c, 0xe6, 0x0b, 0x28, 0xe5, + 0x06, 0x10, 0xc0, 0x1e, 0x40, 0x20, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, + 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x8b, 0x82, + 0x0f, 0x2c, 0xe5, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x7b, 0xe2, 0x7f, 0x0d, 0x00, 0x00, 0x20, 0x59, 0x64, 0x0b, 0x02, 0xa0, + 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, 0xc2, 0x21, 0xe0, 0xcc, 0x01, 0x64, + 0x1c, 0x00, 0x3b, 0x3e, 0x00, 0x40, 0xc2, 0x11, 0xc0, 0xd3, 0xe1, 0x7f, + 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, 0xc0, 0x90, 0x26, + 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0xff, 0x10, 0x35, + 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, 0x4c, 0x02, 0x64, + 0x0b, 0x0e, 0xa0, 0x8f, 0xbf, 0x7f, 0xc6, 0x19, 0xc0, 0xda, 0x21, 0xe0, + 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, 0x6f, 0xe4, 0x7f, + 0x12, 0x0a, 0xc0, 0x00, 0x81, 0x90, 0x6a, 0xff, 0x7f, 0x88, 0x01, 0x3b, + 0x0a, 0x5c, 0x00, 0x2e, 0x00, 0x60, 0x9a, 0x05, 0x00, 0x98, 0x05, 0x2b, + 0x8b, 0x58, 0xfb, 0xc2, 0x19, 0xc0, 0x3e, 0xbc, 0x1f, 0xc4, 0x17, 0x2b, + 0x47, 0x30, 0x04, 0x42, 0x41, 0x20, 0x0b, 0x2c, 0xe5, 0x43, 0xa4, 0x7f, + 0x94, 0x81, 0x66, 0x0e, 0x40, 0x60, 0x8a, 0x50, 0x20, 0xdb, 0xbf, 0x7f, + 0x9c, 0x01, 0x66, 0xd2, 0xbf, 0x7f, 0x8a, 0x44, 0x20, 0xcb, 0xbf, 0x7f, + 0x0b, 0x18, 0xe5, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x8b, 0x82, 0x0f, 0x1c, 0xe5, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, + 0x84, 0x00, 0x65, 0x67, 0xe1, 0x7f, 0x0d, 0x00, 0x00, 0x1c, 0x59, 0x64, + 0xcb, 0x01, 0xa0, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, 0x82, 0x21, 0xe0, + 0x3c, 0x00, 0x3b, 0xc0, 0x01, 0x64, 0x3e, 0x00, 0x40, 0x82, 0x11, 0xc0, + 0xbf, 0xe0, 0x7f, 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, + 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, + 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, + 0x40, 0x02, 0x64, 0xcb, 0x01, 0xa0, 0x8f, 0xbf, 0x7f, 0x86, 0x19, 0xc0, + 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, 0x5f, 0xe3, 0x7f, + 0xd2, 0x09, 0xc0, 0x00, 0x81, 0x90, 0x6e, 0xff, 0x7f, 0x86, 0x19, 0xc0, + 0xbe, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, 0x0f, 0x3c, 0xd2, 0xd0, 0x14, 0x2b, + 0x0a, 0x40, 0x20, 0x07, 0x31, 0x04, 0x42, 0x41, 0x20, 0x0b, 0x1c, 0xe5, + 0x3f, 0xa3, 0x7f, 0x0b, 0x18, 0xe5, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, + 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x8b, 0x82, 0x0f, 0x1c, 0xe5, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x83, 0xe0, 0x7f, 0x0d, 0x00, 0x00, + 0x1c, 0x59, 0x64, 0xcb, 0x01, 0xa0, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, + 0x82, 0x21, 0xe0, 0x3c, 0x00, 0x3b, 0xc0, 0x01, 0x64, 0x3e, 0x00, 0x40, + 0x82, 0x11, 0xc0, 0xdb, 0xdf, 0x7f, 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, + 0x0f, 0x00, 0x80, 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, + 0x08, 0x40, 0x55, 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, + 0x12, 0x00, 0x60, 0x40, 0x02, 0x64, 0xcb, 0x01, 0xa0, 0x8f, 0xbf, 0x7f, + 0x86, 0x19, 0xc0, 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, + 0x7b, 0xe2, 0x7f, 0xd2, 0x09, 0xc0, 0x00, 0x81, 0x90, 0x6e, 0xff, 0x7f, + 0x86, 0x19, 0xc0, 0xbe, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, 0x0f, 0xbc, 0xd3, + 0xd0, 0x14, 0x2b, 0x0a, 0x40, 0x20, 0x07, 0x31, 0x04, 0x42, 0x41, 0x20, + 0x0b, 0x1c, 0xe5, 0x5b, 0xa2, 0x7f, 0x03, 0x10, 0xe6, 0x8c, 0x00, 0x65, + 0x88, 0x00, 0x65, 0x44, 0x00, 0x65, 0x1e, 0x40, 0x20, 0x1a, 0x20, 0xe0, + 0xbb, 0xdf, 0x7f, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x00, 0x00, 0x90, + 0x1e, 0x00, 0x60, 0x87, 0x39, 0xfe, 0x7c, 0x80, 0xb2, 0x16, 0x40, 0x60, + 0x04, 0x01, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, 0x07, 0x14, 0xe6, + 0xc3, 0x11, 0x80, 0x03, 0x10, 0x3d, 0x03, 0x14, 0xe6, 0x2b, 0xa0, 0x7f, + 0x03, 0x10, 0xe6, 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, 0x44, 0x00, 0x65, + 0x1e, 0x40, 0x20, 0x1a, 0x20, 0xe0, 0x63, 0xdf, 0x7f, 0x0d, 0x00, 0x00, + 0x34, 0x83, 0x82, 0x00, 0x00, 0x90, 0x1e, 0x00, 0x60, 0x87, 0x39, 0xfe, + 0x4c, 0x80, 0xb2, 0x16, 0x40, 0x60, 0x04, 0x01, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x87, 0x82, 0x07, 0x14, 0xe6, 0xc3, 0x11, 0x80, 0x03, 0x10, 0x3d, + 0x03, 0x14, 0xe6, 0x0b, 0xa0, 0x7f, 0x0b, 0x08, 0xe6, 0x5a, 0x40, 0x20, + 0x07, 0x10, 0x80, 0x4b, 0x10, 0x3d, 0x28, 0x08, 0xc8, 0x4c, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x8f, 0x82, 0x0f, 0x0c, 0xe6, 0x07, 0x20, 0x80, + 0x58, 0x00, 0xb6, 0x16, 0x00, 0x60, 0x00, 0x00, 0x64, 0x13, 0x4a, 0x60, + 0xa3, 0x01, 0x90, 0xe7, 0xbf, 0x7f, 0xc0, 0x01, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x83, 0x82, 0xd9, 0xff, 0xff, 0x40, 0x3c, 0x64, 0xe7, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, + 0x28, 0x00, 0xc8, 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0xbf, 0x82, + 0x0f, 0x0c, 0xe6, 0xc0, 0x00, 0x75, 0xc7, 0x49, 0x60, 0x25, 0x00, 0x00, + 0x84, 0x38, 0x64, 0x08, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x8f, 0xbc, 0x1f, + 0xbc, 0x7c, 0xb3, 0xd3, 0x88, 0xf9, 0x00, 0x35, 0x27, 0xa3, 0x01, 0x90, + 0xd3, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, 0x5a, 0x40, 0x20, + 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x4c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x8f, 0x82, 0x0f, 0x0c, 0xe6, 0x00, 0x00, 0x74, 0x73, 0x49, 0x60, + 0x29, 0xff, 0xff, 0x04, 0x55, 0x64, 0x08, 0x44, 0x24, 0xa5, 0xae, 0x02, + 0x83, 0x00, 0x0a, 0x04, 0x19, 0x64, 0xa7, 0x65, 0x60, 0xa3, 0x01, 0x90, + 0xd7, 0xbf, 0x7f, 0x0b, 0x18, 0xe5, 0x18, 0x84, 0x1d, 0x03, 0x10, 0x80, + 0x03, 0x10, 0x3d, 0xf3, 0xdd, 0x7f, 0x16, 0x40, 0x20, 0xa0, 0x00, 0xc8, + 0x04, 0x15, 0x64, 0x77, 0xe0, 0x7f, 0x87, 0x21, 0x80, 0xf9, 0xff, 0xfb, + 0x0e, 0xbc, 0x1f, 0x40, 0x00, 0x92, 0x0b, 0x00, 0xfd, 0x98, 0x68, 0x2b, + 0x90, 0x28, 0x2b, 0xc3, 0x58, 0xfb, 0x1b, 0x50, 0xfb, 0x8a, 0x41, 0x20, + 0x43, 0x51, 0x51, 0x5b, 0xe0, 0x7f, 0x05, 0x00, 0x04, 0x9a, 0x01, 0x00, + 0x80, 0x81, 0x92, 0x07, 0x40, 0xfd, 0xe3, 0x05, 0x90, 0x0f, 0x1c, 0xe5, + 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, + 0x87, 0xdd, 0x7f, 0x40, 0x00, 0xc8, 0x04, 0x15, 0x64, 0x0f, 0xe0, 0x7f, + 0x05, 0x00, 0x04, 0x06, 0x00, 0x00, 0x40, 0x00, 0x92, 0x0b, 0x00, 0xfd, + 0xa3, 0x09, 0x90, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, + 0x03, 0x10, 0x3d, 0x53, 0xdd, 0x7f, 0x1a, 0x40, 0x20, 0x38, 0x00, 0xc8, + 0x04, 0x15, 0x64, 0xd7, 0xdf, 0x7f, 0x08, 0x00, 0x99, 0x83, 0x51, 0x51, + 0x0b, 0x0c, 0xe6, 0xdb, 0x9f, 0x7f, 0x0f, 0x0c, 0xe6, 0x1b, 0x28, 0xe5, + 0x17, 0x10, 0x80, 0x1a, 0x40, 0x20, 0x57, 0x11, 0x3d, 0x7c, 0x01, 0x86, + 0x03, 0x00, 0xfd, 0xa3, 0x03, 0xb0, 0x26, 0x00, 0x60, 0x28, 0x14, 0xc8, + 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0xbf, 0x82, 0x1f, 0x2c, 0xe5, + 0x00, 0x00, 0x64, 0xf3, 0xdc, 0x7f, 0xd0, 0xc3, 0xc9, 0x9f, 0x21, 0x80, + 0x79, 0xfe, 0xff, 0x20, 0x58, 0x64, 0xc6, 0xbd, 0x07, 0x48, 0x60, 0x24, + 0xa5, 0xae, 0x02, 0x83, 0x00, 0x0a, 0xd5, 0x00, 0x00, 0x04, 0xab, 0x64, + 0x5f, 0x64, 0x60, 0xd3, 0x21, 0x34, 0x0e, 0xbc, 0x1f, 0x00, 0x61, 0x24, + 0xd5, 0x00, 0x00, 0x04, 0xab, 0x64, 0xa5, 0xae, 0x02, 0x03, 0x00, 0x0a, + 0xd8, 0x10, 0x99, 0x3b, 0x64, 0x60, 0x06, 0xbc, 0x1f, 0x82, 0x23, 0xe0, + 0x48, 0x40, 0x2b, 0x8f, 0x49, 0xfb, 0xd0, 0x10, 0xa1, 0x00, 0xe0, 0x26, + 0x42, 0x41, 0x20, 0x02, 0x40, 0xa0, 0xa3, 0x13, 0x90, 0x7b, 0xdc, 0x7f, + 0x8b, 0x23, 0x80, 0x04, 0x15, 0x64, 0x1b, 0x2c, 0xe5, 0x13, 0x9f, 0x7f, + 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x1a, 0x40, 0x20, 0x77, 0xdc, 0x7f, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, + 0x00, 0x00, 0x90, 0x42, 0x00, 0x60, 0x82, 0x11, 0xc0, 0xe3, 0xdb, 0x7f, + 0x1a, 0x40, 0x20, 0x48, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x4a, 0xbc, 0x00, + 0x8c, 0x80, 0x92, 0x16, 0x40, 0x60, 0xe7, 0xdf, 0x7f, 0x82, 0x41, 0x20, + 0x0b, 0x0c, 0xe6, 0x2b, 0x9f, 0x7f, 0x80, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0x83, 0x82, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1a, 0x40, 0x20, 0x0f, 0xdc, 0x7f, + 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x00, 0x00, 0x84, 0x3e, 0x00, 0x40, + 0x82, 0x11, 0xc0, 0x7b, 0xdb, 0x7f, 0x60, 0x00, 0xc8, 0x0b, 0x00, 0x80, + 0x8e, 0xbc, 0x00, 0xcc, 0x80, 0x92, 0x22, 0x40, 0x60, 0x92, 0x21, 0xe0, + 0x0c, 0x01, 0x66, 0x0e, 0x00, 0x60, 0x0b, 0x0c, 0xe6, 0xc3, 0x9e, 0x7f, + 0x0b, 0x0c, 0xe6, 0x6b, 0x9f, 0x7f, 0x0f, 0x0c, 0xe6, 0x03, 0x10, 0xe6, + 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1e, 0x40, 0x20, + 0xab, 0xdb, 0x7f, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x00, 0x00, 0x90, + 0x5a, 0x00, 0x60, 0xc2, 0x11, 0xc0, 0x17, 0xdb, 0x7f, 0x1a, 0x40, 0x20, + 0x78, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x4a, 0xbc, 0x00, 0x8c, 0x80, 0x92, + 0x2e, 0x40, 0x60, 0xce, 0x19, 0xc0, 0x08, 0x00, 0x64, 0xc6, 0xbc, 0x1f, + 0x0f, 0xde, 0x7f, 0xd2, 0x19, 0xc0, 0x48, 0x00, 0x64, 0x82, 0x41, 0x20, + 0x06, 0xbd, 0x1f, 0x03, 0x14, 0xe6, 0xf7, 0x9d, 0x7f, 0xc0, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x07, 0x14, 0xe6, 0x0b, 0x08, 0xe6, + 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1a, 0x40, 0x20, + 0x2b, 0xdb, 0x7f, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, 0x00, 0x00, 0x90, + 0x42, 0x00, 0x60, 0x82, 0x11, 0xc0, 0x97, 0xda, 0x7f, 0x50, 0x00, 0xc8, + 0x0b, 0x00, 0x80, 0x8e, 0xbc, 0x00, 0xcc, 0x80, 0x92, 0x1a, 0x40, 0x60, + 0x92, 0x19, 0xc0, 0x8a, 0x21, 0xe0, 0x06, 0xbd, 0x1f, 0x0b, 0x0c, 0xe6, + 0x8f, 0x9d, 0x7f, 0xc0, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x83, 0x82, + 0x0f, 0x0c, 0xe6, 0x4b, 0x18, 0xe5, 0x0a, 0x70, 0xc0, 0x1a, 0x28, 0xc0, + 0x1f, 0x10, 0x80, 0x16, 0x60, 0xc0, 0x02, 0x38, 0xc0, 0x80, 0x01, 0x86, + 0x01, 0x00, 0x00, 0x9a, 0x3d, 0xb9, 0xcc, 0xfa, 0x64, 0x00, 0x80, 0x86, + 0x01, 0x00, 0x00, 0x06, 0x58, 0xb6, 0xdf, 0x11, 0x3d, 0x93, 0x4b, 0x90, + 0xb3, 0x47, 0x90, 0xa3, 0x5b, 0x90, 0x83, 0x57, 0x90, 0xb3, 0x1f, 0x90, + 0xa3, 0x0f, 0x90, 0x83, 0x8b, 0x90, 0x93, 0x87, 0x90, 0x03, 0xe6, 0x7f, + 0x93, 0x83, 0x80, 0x8b, 0x93, 0x80, 0x7c, 0x00, 0x64, 0x24, 0x1c, 0x72, + 0x9c, 0x18, 0x3a, 0x16, 0x00, 0x60, 0xfc, 0x01, 0x64, 0x0d, 0x00, 0x00, + 0x34, 0xbf, 0x82, 0x4f, 0x1c, 0xe5, 0x80, 0x34, 0x2b, 0x25, 0x00, 0x00, + 0x84, 0x38, 0x64, 0x83, 0x93, 0x90, 0xb7, 0x61, 0x60, 0x0d, 0x00, 0x00, + 0xb4, 0xc2, 0x82, 0x25, 0x00, 0x00, 0x84, 0x38, 0x64, 0x80, 0x35, 0x2b, + 0x9f, 0x61, 0x60, 0x8b, 0x83, 0x80, 0x0d, 0x00, 0x00, 0xc4, 0xc2, 0x82, + 0x43, 0x01, 0x40, 0x4b, 0x1c, 0xe5, 0x03, 0x0c, 0x60, 0x07, 0x20, 0x80, + 0x2c, 0x04, 0x72, 0xc4, 0x01, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, + 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0xc7, 0x0d, 0xfe, + 0x0b, 0x08, 0xe6, 0x0d, 0x00, 0x00, 0x18, 0x77, 0x64, 0x40, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xe4, 0x43, 0x7e, 0x83, 0x01, 0x58, 0x37, 0xd9, 0x7f, + 0x15, 0x00, 0x00, 0x0c, 0x52, 0x64, 0xb3, 0x0d, 0x90, 0x15, 0x00, 0x00, + 0x0c, 0xeb, 0x64, 0x15, 0x00, 0x00, 0x84, 0x47, 0x64, 0x93, 0x8d, 0x90, + 0x15, 0x00, 0x00, 0xcc, 0xa0, 0x64, 0x15, 0x00, 0x00, 0x00, 0x3d, 0x64, + 0x93, 0x05, 0x90, 0x93, 0xcd, 0x90, 0x11, 0x00, 0x00, 0x44, 0xca, 0x64, + 0x19, 0x00, 0x00, 0x0c, 0x51, 0x64, 0x83, 0x41, 0x90, 0x93, 0x45, 0x90, + 0x15, 0x00, 0x00, 0x40, 0xb7, 0x64, 0x15, 0x00, 0x00, 0xc4, 0x8b, 0x64, + 0x83, 0x0d, 0x91, 0x19, 0x00, 0x00, 0xcc, 0x81, 0x64, 0x15, 0x00, 0x00, + 0x90, 0x5c, 0x64, 0xa3, 0x81, 0x90, 0xb3, 0x85, 0x90, 0x15, 0x00, 0x00, + 0x80, 0xaa, 0x64, 0x19, 0x00, 0x00, 0x84, 0x40, 0x64, 0xa3, 0x0d, 0x91, + 0x19, 0x00, 0x00, 0x8c, 0xf1, 0x64, 0x11, 0x00, 0x00, 0x88, 0xab, 0x64, + 0xa3, 0x11, 0x90, 0xa3, 0xc1, 0x90, 0x19, 0x00, 0x00, 0xd0, 0x15, 0x64, + 0x19, 0x00, 0x00, 0x00, 0x72, 0x64, 0xb3, 0xc5, 0x90, 0xa3, 0x4d, 0x91, + 0x11, 0x00, 0x00, 0x84, 0xd5, 0x64, 0x1d, 0x00, 0x00, 0x4c, 0x04, 0x64, + 0x83, 0x09, 0x90, 0x83, 0x91, 0x90, 0x11, 0x00, 0x00, 0xc8, 0xb0, 0x64, + 0x15, 0x00, 0x00, 0xd0, 0x94, 0x64, 0xb3, 0x01, 0x91, 0x83, 0x45, 0x91, + 0x1d, 0x00, 0x00, 0x40, 0x1c, 0x64, 0x19, 0x00, 0x00, 0x04, 0xde, 0x64, + 0x93, 0x8d, 0x91, 0x11, 0x00, 0x00, 0x4c, 0xeb, 0x64, 0xa3, 0x49, 0x90, + 0x83, 0xd1, 0x90, 0x93, 0x09, 0x91, 0x19, 0x00, 0x00, 0x90, 0x61, 0x64, + 0xb3, 0x41, 0x91, 0x83, 0x85, 0x91, 0x11, 0x00, 0x00, 0x80, 0xde, 0x64, + 0x11, 0x00, 0x00, 0x44, 0xe8, 0x64, 0xa3, 0x89, 0x91, 0xb3, 0x89, 0x91, + 0x93, 0xcd, 0x91, 0x11, 0x00, 0x00, 0xc8, 0xb3, 0x64, 0x15, 0x00, 0x00, + 0xcc, 0x2b, 0x64, 0x93, 0x51, 0x91, 0x83, 0xc9, 0x91, 0x1d, 0x00, 0x00, + 0xd0, 0x2f, 0x64, 0x11, 0x00, 0x00, 0xc8, 0xf5, 0x64, 0xa3, 0xc1, 0x91, + 0xb3, 0xc5, 0x91, 0x1d, 0x00, 0x00, 0x40, 0x55, 0x64, 0x19, 0x00, 0x00, + 0x04, 0xa5, 0x64, 0x93, 0x0d, 0x92, 0x15, 0x00, 0x00, 0xcc, 0x34, 0x64, + 0x83, 0x09, 0x92, 0xa3, 0x11, 0x92, 0xb3, 0x01, 0x92, 0x83, 0x45, 0x92, + 0x19, 0x00, 0x00, 0xc8, 0x90, 0x64, 0xa3, 0x4d, 0x92, 0x15, 0x00, 0x00, + 0x90, 0x77, 0x64, 0x19, 0x00, 0x00, 0x40, 0xb9, 0x64, 0x19, 0x00, 0x00, + 0x84, 0xaf, 0x64, 0x11, 0x00, 0x00, 0x0c, 0xcb, 0x64, 0x93, 0x49, 0x92, + 0xb3, 0x51, 0x92, 0x83, 0x81, 0x92, 0x93, 0x85, 0x92, 0xb3, 0x4d, 0x90, + 0x0d, 0x00, 0x00, 0xe7, 0x87, 0xf8, 0x0f, 0x0c, 0xe6, 0x0b, 0x38, 0xe5, + 0x44, 0x00, 0xb2, 0x22, 0x40, 0x20, 0x2c, 0x04, 0x64, 0x12, 0x00, 0x60, + 0x4c, 0x80, 0xb2, 0x2c, 0x08, 0x64, 0xee, 0xc2, 0x81, 0x5e, 0x04, 0x00, + 0xc0, 0x01, 0x92, 0x41, 0x00, 0x00, 0x14, 0x00, 0x64, 0x11, 0x00, 0x00, + 0x56, 0x01, 0x80, 0x09, 0x00, 0x00, 0x28, 0xed, 0x64, 0x58, 0x00, 0x65, + 0xe7, 0x32, 0x00, 0x83, 0x02, 0x80, 0x3d, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x40, 0x80, 0x92, 0x0e, 0x40, 0x60, 0x82, 0x41, 0x20, + 0x0f, 0x3c, 0xe5, 0x0b, 0x90, 0x32, 0xac, 0x20, 0x48, 0x3a, 0x00, 0x60, + 0x0e, 0xb8, 0x00, 0xe8, 0x80, 0x92, 0x2e, 0x40, 0x60, 0x80, 0xae, 0x1d, + 0xcb, 0xd9, 0x7f, 0x0c, 0x14, 0x48, 0xf6, 0xbf, 0x7f, 0x80, 0xa6, 0x1d, + 0xbb, 0xd9, 0x7f, 0x10, 0x1c, 0xc8, 0x00, 0x40, 0x31, 0x84, 0x81, 0x3a, + 0x9b, 0xc1, 0xf9, 0xab, 0x12, 0x00, 0x9f, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, + 0x84, 0x00, 0x72, 0x4c, 0x04, 0x86, 0x3a, 0x00, 0x60, 0x0d, 0x00, 0x00, + 0x18, 0x2f, 0x55, 0x44, 0x48, 0x2b, 0x21, 0x01, 0x80, 0x4a, 0x44, 0x20, + 0x83, 0x71, 0x52, 0x8b, 0xd9, 0x7f, 0x83, 0x81, 0x52, 0x6f, 0xd9, 0x7f, + 0x00, 0x94, 0x26, 0xf6, 0xff, 0x7f, 0x03, 0x3c, 0xfe, 0x0f, 0x0c, 0xe6, + 0x00, 0x00, 0x64, 0xfb, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x00, 0x08, 0x2b, + 0x0d, 0x00, 0x00, 0x1b, 0xf0, 0x82, 0x08, 0x00, 0x64, 0x83, 0x71, 0x52, + 0x4f, 0xd9, 0x7f, 0x83, 0x81, 0x52, 0x0b, 0x0c, 0xe6, 0x2f, 0x99, 0x7f, + 0x13, 0x10, 0xe6, 0x1a, 0x40, 0x20, 0x2c, 0x00, 0xc8, 0x7c, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x34, 0xbf, 0x82, 0x17, 0x14, 0xe6, 0x00, 0x08, 0x2b, + 0x0d, 0x00, 0x00, 0x03, 0xf0, 0x82, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0x0d, 0x00, 0x00, 0x1c, 0x59, 0x64, 0x07, 0xd9, 0x7f, 0xce, 0x01, 0xe0, + 0x05, 0x00, 0x00, 0x00, 0x0f, 0x64, 0xa3, 0x03, 0x90, 0x44, 0x00, 0x64, + 0x48, 0x98, 0x40, 0x93, 0x4c, 0xfb, 0xc3, 0x11, 0xb0, 0xe3, 0xe1, 0x7f, + 0xdb, 0x99, 0xf2, 0xce, 0x01, 0xe0, 0x86, 0x31, 0xe3, 0x11, 0x10, 0x00, + 0x00, 0x0a, 0x52, 0xc8, 0x00, 0x66, 0x4a, 0x40, 0x22, 0x13, 0x00, 0xfd, + 0xb3, 0x89, 0xb1, 0x27, 0xd0, 0xd3, 0x11, 0x10, 0x00, 0x44, 0x01, 0x7e, + 0x8b, 0xbf, 0x7f, 0x03, 0x00, 0xe0, 0x80, 0x00, 0x72, 0x00, 0x08, 0x2b, + 0x0d, 0x00, 0x00, 0x03, 0xf0, 0x82, 0x60, 0x00, 0xc8, 0x05, 0x00, 0x00, + 0x04, 0xe3, 0x55, 0x28, 0x04, 0xc8, 0x04, 0x12, 0x64, 0x6f, 0xd8, 0x7f, + 0x02, 0xbc, 0x1f, 0x07, 0x04, 0xe0, 0x80, 0x01, 0x75, 0x8b, 0xda, 0x7f, + 0x00, 0x20, 0x28, 0xf3, 0xbf, 0x7f, 0x00, 0x00, 0x64, 0xeb, 0xbf, 0x7f, + 0x1b, 0x18, 0xe5, 0x5a, 0x40, 0x20, 0xa8, 0x01, 0x72, 0x09, 0x00, 0x00, + 0x14, 0xeb, 0x64, 0x1f, 0x10, 0x02, 0x43, 0x5d, 0xf7, 0x80, 0x01, 0xc8, + 0x05, 0x00, 0x00, 0x04, 0xe3, 0x55, 0x7c, 0x05, 0x72, 0x80, 0x41, 0xba, + 0x00, 0x20, 0x64, 0x6e, 0x00, 0x40, 0x18, 0x40, 0x64, 0x05, 0x00, 0x00, + 0x88, 0x12, 0x64, 0xa3, 0x0b, 0x90, 0xb3, 0x1b, 0x90, 0x13, 0xe1, 0x7f, + 0x80, 0x01, 0x75, 0x23, 0xda, 0x7f, 0x13, 0x38, 0xfe, 0x8c, 0x21, 0x2b, + 0xcb, 0x50, 0xfb, 0x80, 0x01, 0x75, 0x87, 0xda, 0x7f, 0x00, 0x00, 0x74, + 0x07, 0xda, 0x7f, 0x1e, 0x48, 0x00, 0xca, 0x41, 0x20, 0x00, 0x00, 0x74, + 0x6f, 0xda, 0x7f, 0xca, 0x49, 0x20, 0x00, 0x00, 0x74, 0x63, 0xda, 0x7f, + 0xca, 0x41, 0x20, 0x00, 0x00, 0x74, 0x57, 0xda, 0x7f, 0x43, 0x00, 0x60, + 0x8c, 0x01, 0x37, 0x30, 0xc7, 0xc9, 0x05, 0x00, 0x00, 0x7c, 0x13, 0x64, + 0xa3, 0x3f, 0x90, 0xb3, 0x1b, 0x90, 0xa7, 0xe0, 0x7f, 0x43, 0x5d, 0xf7, + 0x04, 0x12, 0x64, 0x87, 0xd7, 0x7f, 0x2b, 0x18, 0xd0, 0x0a, 0x40, 0x20, + 0x43, 0x5d, 0xf7, 0x04, 0x12, 0x64, 0x87, 0xd7, 0x7f, 0x82, 0x41, 0x20, + 0x1f, 0x1c, 0xe5, 0x01, 0x00, 0x00, 0x88, 0xd5, 0xbb, 0x80, 0x5c, 0x64, + 0xb2, 0xff, 0x5f, 0x98, 0xd4, 0x64, 0xb3, 0xbf, 0x7f, 0x03, 0x10, 0xe6, + 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x0d, 0x00, 0x00, 0x1f, 0xf0, 0x82, + 0x2c, 0x1c, 0x72, 0x40, 0x00, 0x75, 0x0d, 0x00, 0x00, 0x34, 0x87, 0x82, + 0x07, 0x14, 0xe6, 0x5b, 0xa0, 0x00, 0x98, 0x09, 0x2b, 0xc0, 0x99, 0x1d, + 0x1b, 0xd7, 0x7f, 0x08, 0x14, 0x26, 0xf6, 0xbf, 0x7f, 0x02, 0xbc, 0x1f, + 0xe3, 0xbf, 0x7f, 0x03, 0x00, 0xe0, 0xc4, 0x00, 0x64, 0xf0, 0xfb, 0x63, + 0x07, 0x04, 0xe0, 0x4b, 0x28, 0xe5, 0x22, 0x40, 0x20, 0x00, 0x00, 0x64, + 0xd4, 0xe7, 0x63, 0x1b, 0x3c, 0xfe, 0x00, 0x00, 0x64, 0xd8, 0xff, 0x63, + 0x17, 0x3c, 0xfe, 0x00, 0x00, 0x74, 0xc4, 0xfb, 0x63, 0x29, 0xff, 0xff, + 0x04, 0x55, 0x64, 0x00, 0x44, 0x24, 0xa5, 0xae, 0x02, 0x03, 0x00, 0x0a, + 0x04, 0x19, 0x64, 0xbb, 0x5b, 0x60, 0x0d, 0x00, 0x00, 0x8c, 0x75, 0x4e, + 0x5e, 0x41, 0x20, 0x44, 0x0d, 0x3a, 0x1a, 0x00, 0x60, 0x0d, 0x00, 0x00, + 0x08, 0x76, 0x4e, 0x3f, 0x9a, 0xf2, 0x84, 0x94, 0x3a, 0x26, 0x40, 0x40, + 0xc4, 0x1c, 0x3a, 0xbf, 0x09, 0x00, 0x1a, 0x00, 0x40, 0x0d, 0x00, 0x00, + 0x10, 0x76, 0x4e, 0xbf, 0x49, 0x00, 0xc4, 0x91, 0x3a, 0xbf, 0xfd, 0xf9, + 0x25, 0x00, 0x00, 0x84, 0x38, 0x64, 0x54, 0x45, 0x24, 0x93, 0x43, 0x90, + 0x54, 0x35, 0x31, 0x05, 0x00, 0x00, 0x80, 0x15, 0x64, 0xb3, 0x7f, 0x90, + 0xa3, 0x63, 0x90, 0x83, 0x57, 0x90, 0xb3, 0x1b, 0x90, 0xa3, 0x03, 0x90, + 0x83, 0xbf, 0x90, 0x4b, 0xdf, 0x7f, 0x87, 0x83, 0x80, 0xbc, 0x05, 0x48, + 0x1a, 0x00, 0x60, 0x00, 0x00, 0x64, 0xd8, 0xdf, 0x63, 0x80, 0x07, 0x64, + 0x4b, 0x2c, 0xe5, 0x03, 0x93, 0x7f, 0x4f, 0x2c, 0xe5, 0x13, 0x00, 0xe0, + 0xa3, 0x03, 0x90, 0xc0, 0xf3, 0x63, 0x8f, 0x23, 0x80, 0x01, 0x12, 0x00, + 0x04, 0x00, 0x55, 0x03, 0x3c, 0xfe, 0x01, 0x00, 0x00, 0x28, 0x48, 0xbb, + 0xc8, 0x04, 0x2b, 0x44, 0x88, 0x3e, 0x4e, 0x0c, 0x00, 0x52, 0x08, 0x00, + 0x1a, 0x00, 0x60, 0x2c, 0x10, 0x72, 0xfe, 0x48, 0x20, 0xec, 0xbc, 0x48, + 0x1e, 0x40, 0x60, 0x17, 0x04, 0xe0, 0x01, 0x00, 0x00, 0x0c, 0x4c, 0xb3, + 0xf6, 0xbf, 0x7f, 0xe0, 0xd3, 0xc9, 0x7e, 0x04, 0x00, 0x01, 0x12, 0x00, + 0x0c, 0x00, 0x64, 0xd3, 0x00, 0x80, 0xc0, 0x00, 0x64, 0x04, 0x88, 0x40, + 0xc8, 0x8b, 0x40, 0x13, 0x45, 0xfc, 0xc3, 0x10, 0x90, 0xc3, 0x00, 0x80, + 0xbf, 0x40, 0xfb, 0xc3, 0x3c, 0x90, 0xbf, 0xbf, 0x7f, 0x1f, 0x88, 0xe5, + 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, 0x1a, 0x40, 0x20, 0x56, 0x40, 0x20, + 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x0d, 0x00, 0x00, 0x03, 0xf0, 0x82, + 0x2c, 0x00, 0x72, 0x48, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x8b, 0x82, + 0x1f, 0x8c, 0xe5, 0x62, 0x40, 0x20, 0x80, 0x9d, 0x1d, 0xf0, 0xdf, 0x63, + 0x10, 0x02, 0x7a, 0xdf, 0x05, 0x00, 0xdc, 0x01, 0x92, 0xee, 0xbf, 0x7f, + 0x82, 0x41, 0x20, 0xd4, 0xbf, 0x63, 0x63, 0xa1, 0x00, 0x80, 0xa5, 0x1d, + 0xfc, 0xb7, 0x63, 0x10, 0x42, 0x7a, 0x67, 0x06, 0x00, 0x4c, 0x86, 0x92, + 0xee, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0x2c, 0x60, 0x55, 0x70, 0x10, 0x64, + 0x9c, 0x06, 0x64, 0x11, 0x00, 0x00, 0x24, 0x00, 0x64, 0x28, 0x0c, 0x64, + 0xcb, 0x02, 0x80, 0x3d, 0x00, 0x00, 0x86, 0x00, 0x00, 0x3d, 0x00, 0x00, + 0x40, 0x00, 0x92, 0xa6, 0x00, 0x40, 0x8e, 0xbc, 0x00, 0xec, 0x80, 0x92, + 0x8e, 0x40, 0x60, 0x60, 0x9d, 0x1f, 0x18, 0x00, 0x64, 0x34, 0x04, 0x64, + 0x17, 0x00, 0x60, 0x84, 0x01, 0x86, 0xf6, 0xbf, 0x7f, 0x8c, 0x81, 0xba, + 0xb6, 0x42, 0x81, 0x80, 0x11, 0x26, 0x13, 0x00, 0xfd, 0xa3, 0x13, 0xb0, + 0x41, 0x00, 0x00, 0x4a, 0x02, 0x80, 0xc0, 0xb6, 0x1d, 0xb3, 0x0b, 0x90, + 0x8b, 0xd4, 0x7f, 0x8b, 0x33, 0x80, 0x0c, 0x88, 0x48, 0xee, 0xff, 0x7f, + 0x47, 0x33, 0x00, 0xc2, 0x42, 0x20, 0x73, 0xd4, 0x7f, 0x8e, 0x23, 0xe0, + 0x84, 0x09, 0x2b, 0x3c, 0x40, 0x31, 0xc0, 0x60, 0x26, 0x0a, 0x00, 0x40, + 0x3f, 0x3c, 0xfe, 0x03, 0x86, 0xf2, 0x03, 0x3c, 0x90, 0x9b, 0x05, 0x00, + 0x98, 0x81, 0x92, 0x92, 0xff, 0x7f, 0xdf, 0x19, 0x00, 0x33, 0x47, 0x00, + 0xef, 0x12, 0x00, 0x9c, 0xf2, 0x73, 0x5c, 0x9d, 0x1f, 0x90, 0x00, 0x65, + 0xc3, 0x11, 0x90, 0xdf, 0xbe, 0x7f, 0x3f, 0x88, 0xe5, 0x11, 0x10, 0x00, + 0x0c, 0x06, 0x55, 0x00, 0x04, 0x64, 0x04, 0x08, 0x64, 0x08, 0x0c, 0x64, + 0x88, 0x03, 0xd8, 0x83, 0x4b, 0x90, 0xfc, 0x7c, 0xb3, 0xbe, 0x01, 0x60, + 0x0d, 0x00, 0x00, 0x10, 0x59, 0x52, 0x00, 0xb1, 0x26, 0x09, 0x00, 0x00, + 0x9a, 0xd1, 0x9d, 0x92, 0x41, 0x60, 0xff, 0x00, 0x60, 0x77, 0x91, 0x32, + 0xe4, 0x35, 0x72, 0x42, 0xb9, 0x00, 0x28, 0x80, 0x92, 0xe6, 0x40, 0x60, + 0x34, 0x00, 0x64, 0xab, 0x23, 0x00, 0x97, 0x76, 0xf7, 0x80, 0x95, 0x1d, + 0xbb, 0xd3, 0x7f, 0x51, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x51, 0x00, 0x00, + 0x80, 0x00, 0x92, 0x32, 0x40, 0x20, 0x2a, 0x40, 0x20, 0xda, 0xbf, 0x7f, + 0xa1, 0x00, 0x00, 0x00, 0x80, 0x8a, 0xef, 0x06, 0x00, 0x9a, 0x40, 0x60, + 0x47, 0x31, 0x00, 0x82, 0x41, 0x20, 0x83, 0xd3, 0x7f, 0xb3, 0x43, 0x90, + 0x47, 0x21, 0x00, 0x82, 0x41, 0x20, 0x73, 0xd3, 0x7f, 0xa3, 0x43, 0x90, + 0x47, 0x11, 0x00, 0x82, 0x41, 0x20, 0x63, 0xd3, 0x7f, 0x8f, 0x63, 0x80, + 0x8b, 0x73, 0x80, 0x84, 0x0c, 0x3a, 0x0a, 0x01, 0x60, 0x84, 0x40, 0x31, + 0x44, 0x80, 0x3a, 0xfe, 0x40, 0x60, 0xfc, 0x40, 0x31, 0xe4, 0x0b, 0x3a, + 0x16, 0x00, 0x60, 0x00, 0x40, 0x31, 0x24, 0x84, 0x3a, 0x0a, 0x40, 0x60, + 0xdf, 0x05, 0x00, 0x3c, 0x13, 0x26, 0x0a, 0x00, 0x60, 0x2a, 0x43, 0x01, + 0xb4, 0x92, 0x26, 0x0a, 0x40, 0x60, 0xaa, 0xc2, 0x00, 0x8a, 0x42, 0x20, + 0x80, 0x95, 0x1d, 0x1b, 0xd3, 0x7f, 0x8a, 0xc2, 0x21, 0x80, 0x95, 0x1d, + 0x0f, 0xd3, 0x7f, 0x77, 0x07, 0x00, 0x4c, 0x03, 0x92, 0x2a, 0xbf, 0x7f, + 0x9b, 0x11, 0x00, 0x97, 0x01, 0x80, 0x3d, 0x00, 0x00, 0x72, 0x01, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x03, 0x92, 0xf6, 0xbe, 0x7f, 0x00, 0x00, 0x64, + 0xf8, 0x97, 0x63, 0x0d, 0x00, 0x00, 0x14, 0x59, 0x64, 0x18, 0x00, 0x64, + 0xfd, 0x07, 0x00, 0xf0, 0xfe, 0x74, 0x8a, 0x41, 0x20, 0x00, 0xb7, 0x1d, + 0xc7, 0x57, 0x60, 0x22, 0x04, 0x00, 0x58, 0x20, 0xc8, 0x83, 0x01, 0x40, + 0xfc, 0x8f, 0x63, 0x46, 0x01, 0xc1, 0xef, 0x06, 0x00, 0x0c, 0x84, 0x3a, + 0x42, 0x40, 0x60, 0x7e, 0x19, 0xc2, 0xec, 0x03, 0x3a, 0x0a, 0x00, 0x60, + 0xdf, 0x05, 0x00, 0x9b, 0x05, 0x00, 0x8c, 0x85, 0x92, 0x57, 0x09, 0x00, + 0xba, 0xff, 0x7f, 0xfc, 0x2d, 0x48, 0x0e, 0x00, 0x40, 0x40, 0x00, 0x65, + 0xe4, 0xb7, 0x63, 0x00, 0x00, 0x64, 0x3b, 0x8c, 0xe5, 0x87, 0x18, 0xfe, + 0x80, 0x00, 0x64, 0xef, 0xbf, 0x7f, 0x3f, 0x8c, 0xe5, 0x2b, 0x38, 0xe5, + 0x16, 0x40, 0x20, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x64, 0xb3, 0xdb, 0x7f, + 0x42, 0x41, 0x20, 0xd0, 0x9b, 0x63, 0x23, 0x3c, 0xfe, 0x44, 0x05, 0x2b, + 0x0d, 0x00, 0x00, 0x63, 0x80, 0xa5, 0x02, 0x42, 0x20, 0x93, 0xdb, 0x7f, + 0xd8, 0x22, 0xc8, 0x0d, 0x00, 0x00, 0x40, 0x0d, 0x64, 0x08, 0x42, 0x24, + 0xdd, 0x06, 0x00, 0x83, 0x80, 0x0e, 0x04, 0xfa, 0x64, 0xf3, 0x56, 0x60, + 0x1a, 0x40, 0x20, 0x01, 0xcc, 0x00, 0x40, 0x00, 0x64, 0x63, 0xdb, 0x7f, + 0x82, 0x41, 0x20, 0x5b, 0xdb, 0x7f, 0x42, 0x41, 0x20, 0xc8, 0xaf, 0x63, + 0x1f, 0x3c, 0xfe, 0x01, 0xcc, 0x00, 0x80, 0x00, 0x64, 0x43, 0xdb, 0x7f, + 0xc2, 0x41, 0x20, 0x3b, 0xdb, 0x7f, 0x25, 0x00, 0x00, 0xa4, 0x38, 0x64, + 0xcc, 0x65, 0x24, 0xd0, 0x34, 0x27, 0x05, 0x00, 0x00, 0x68, 0x22, 0x64, + 0xb3, 0x13, 0x90, 0x83, 0x5b, 0x90, 0xa3, 0x2b, 0x90, 0x28, 0x10, 0x64, + 0x9f, 0xda, 0x7f, 0x05, 0x00, 0x00, 0x04, 0xe3, 0x55, 0x40, 0x00, 0x92, + 0x82, 0x82, 0x80, 0x07, 0xc2, 0xf2, 0x42, 0x41, 0x20, 0xe4, 0x93, 0x63, + 0x80, 0x07, 0x64, 0x53, 0xce, 0x7f, 0x42, 0x41, 0x20, 0xd8, 0xa7, 0x63, + 0x1b, 0x3c, 0xfe, 0x01, 0xcc, 0x00, 0xc0, 0x00, 0x64, 0xd3, 0xda, 0x7f, + 0x82, 0x41, 0x20, 0xcb, 0xda, 0x7f, 0x88, 0x65, 0x24, 0x8c, 0x34, 0x27, + 0x05, 0x00, 0x00, 0xd0, 0x2a, 0x64, 0xb3, 0x0f, 0x90, 0xa3, 0x13, 0x90, + 0xdf, 0xd9, 0xf2, 0xd8, 0x65, 0x24, 0x37, 0xda, 0x7f, 0x01, 0xcc, 0x00, + 0x00, 0x01, 0x64, 0x9b, 0xda, 0x7f, 0xbc, 0xfd, 0xb3, 0x1d, 0x00, 0x00, + 0x87, 0xbd, 0x1f, 0x43, 0xd8, 0xf9, 0x1c, 0x34, 0x27, 0xc2, 0x41, 0x20, + 0x7f, 0xda, 0x7f, 0x05, 0x00, 0x00, 0x08, 0xe3, 0x55, 0x05, 0x00, 0x00, + 0xd0, 0x2f, 0x64, 0x83, 0x5f, 0x90, 0xa3, 0x13, 0x90, 0x80, 0x00, 0x92, + 0x8e, 0x82, 0x80, 0xb3, 0x0f, 0x90, 0xe7, 0xd9, 0x7f, 0x3d, 0x01, 0x00, + 0xbc, 0xfd, 0xb3, 0x2a, 0x40, 0x60, 0x40, 0xa1, 0x1d, 0x77, 0xf8, 0x7f, + 0x80, 0x07, 0x64, 0xa3, 0xcd, 0x7f, 0x01, 0xcc, 0x00, 0x40, 0x01, 0x64, + 0x2f, 0xda, 0x7f, 0x40, 0x00, 0x64, 0x2f, 0x3c, 0xe5, 0x01, 0xcc, 0x00, + 0xc0, 0x3f, 0x64, 0x1b, 0xda, 0x7f, 0x80, 0x07, 0x64, 0x7b, 0xcd, 0x7f, + 0x00, 0x00, 0x64, 0xe7, 0xbf, 0x7f, 0xdb, 0x89, 0xe5, 0x0d, 0x00, 0x00, + 0x1b, 0x90, 0x55, 0xc2, 0x01, 0xe0, 0x93, 0x87, 0x92, 0xae, 0x40, 0x20, + 0x08, 0x58, 0x48, 0x12, 0x00, 0x60, 0x00, 0x01, 0x64, 0xcb, 0x01, 0xa0, + 0xdf, 0x8d, 0xe5, 0x87, 0x93, 0x82, 0x83, 0x4b, 0x90, 0x05, 0x00, 0x00, + 0x08, 0x39, 0x64, 0xa3, 0x0b, 0x90, 0xb3, 0x07, 0x90, 0x14, 0x04, 0x64, + 0x4f, 0xd9, 0x7f, 0x05, 0x00, 0x00, 0x10, 0xe3, 0x55, 0xb3, 0x93, 0x82, + 0x8f, 0x09, 0x00, 0x25, 0x00, 0x00, 0x84, 0x38, 0x64, 0x00, 0x81, 0x86, + 0x00, 0x37, 0x2b, 0xeb, 0x0d, 0xf8, 0x5e, 0x41, 0x82, 0x13, 0x55, 0x60, + 0x93, 0xc3, 0x92, 0x25, 0x00, 0x00, 0x84, 0x38, 0x64, 0xc0, 0x36, 0x2b, + 0xff, 0x54, 0x60, 0x83, 0x83, 0x92, 0xb7, 0xd3, 0x82, 0x94, 0x01, 0x64, + 0x93, 0x05, 0x00, 0x83, 0x83, 0x82, 0xa7, 0xde, 0xf2, 0x08, 0xfa, 0x64, + 0x1c, 0x55, 0x24, 0x47, 0xc3, 0xf2, 0x4c, 0x48, 0x24, 0x0d, 0x00, 0x00, + 0xf3, 0x09, 0x0b, 0xa3, 0x4f, 0x93, 0xb3, 0xb3, 0x92, 0x94, 0x00, 0x64, + 0x80, 0xa9, 0x1d, 0xa3, 0xd7, 0x92, 0x6b, 0xf7, 0x7f, 0x80, 0x07, 0x64, + 0x97, 0xcc, 0x7f, 0x82, 0x41, 0x20, 0x9f, 0xf8, 0x7f, 0x37, 0x3c, 0xfe, + 0x82, 0x41, 0x20, 0x83, 0xf7, 0x92, 0x5e, 0x43, 0x20, 0x3f, 0xf6, 0x7f, + 0x14, 0x00, 0x64, 0x54, 0x01, 0xba, 0x3a, 0x02, 0x60, 0x80, 0x95, 0x1d, + 0x2f, 0xf5, 0x7f, 0xbf, 0xa3, 0x01, 0xc4, 0x17, 0x1f, 0x53, 0xc0, 0xa0, + 0x57, 0x05, 0x00, 0x64, 0x85, 0x92, 0xde, 0xff, 0x7f, 0x80, 0xa5, 0x1d, + 0x13, 0xf7, 0x7f, 0x80, 0x07, 0x64, 0x3f, 0xcc, 0x7f, 0x82, 0x41, 0x20, + 0x47, 0xf8, 0x7f, 0x8b, 0xc3, 0x82, 0x03, 0x3c, 0xfe, 0x0f, 0x3c, 0xfe, + 0xb3, 0xc3, 0x92, 0x93, 0xcc, 0xf2, 0xa3, 0x93, 0x92, 0x16, 0x40, 0x20, + 0x34, 0x00, 0x64, 0xb3, 0xa3, 0x82, 0x1c, 0x03, 0xb2, 0xa2, 0x01, 0x60, + 0x82, 0x41, 0x20, 0xc7, 0xf5, 0x7f, 0x20, 0x00, 0x64, 0x14, 0x82, 0xba, + 0xd2, 0x41, 0x60, 0x80, 0xa1, 0x1d, 0xb7, 0xf4, 0x7f, 0xb7, 0xa3, 0x01, + 0x7c, 0x23, 0x1f, 0xc3, 0x03, 0xa0, 0x23, 0x06, 0x00, 0x24, 0x06, 0x92, + 0xde, 0xbf, 0x7f, 0x25, 0x00, 0x00, 0xb0, 0x38, 0x74, 0xdc, 0x71, 0x24, + 0xc8, 0x35, 0x27, 0x93, 0x4b, 0x93, 0x44, 0x71, 0x24, 0x54, 0x34, 0x27, + 0x83, 0x57, 0x93, 0x1c, 0x00, 0x64, 0x14, 0x00, 0x64, 0xd4, 0x81, 0xb2, + 0x26, 0x40, 0x60, 0xcb, 0x59, 0x00, 0xfd, 0x07, 0x00, 0xc0, 0xfe, 0x74, + 0xc7, 0x53, 0x60, 0x02, 0x04, 0x00, 0x83, 0x03, 0x93, 0x90, 0x33, 0xe7, + 0x18, 0x02, 0xc8, 0xa3, 0xa3, 0x01, 0x63, 0xa1, 0xf7, 0x28, 0x02, 0xac, + 0xfe, 0x00, 0x60, 0x8f, 0x33, 0x03, 0xd3, 0x94, 0xf7, 0x33, 0xe1, 0xf2, + 0x08, 0x8f, 0xb2, 0xea, 0x40, 0x60, 0x87, 0xa3, 0x82, 0x3c, 0xfa, 0x64, + 0x00, 0x7f, 0x24, 0x93, 0xbf, 0x93, 0x67, 0x53, 0x60, 0x0d, 0x00, 0x00, + 0x46, 0x01, 0xc6, 0x8f, 0x93, 0x83, 0x0a, 0x40, 0x20, 0xb3, 0x4b, 0x93, + 0x43, 0xe0, 0xf2, 0x83, 0x87, 0x93, 0x00, 0x4c, 0x24, 0x86, 0x40, 0x20, + 0x3f, 0x53, 0x60, 0x93, 0xf3, 0x82, 0x25, 0x00, 0x00, 0x88, 0x38, 0x64, + 0xd4, 0x81, 0xba, 0x33, 0x90, 0xf2, 0x04, 0x4b, 0x24, 0x1d, 0x00, 0x00, + 0x43, 0xbc, 0x1f, 0x7c, 0x7c, 0xb3, 0x0f, 0x84, 0xf9, 0xd0, 0x34, 0x27, + 0xa3, 0x93, 0x93, 0x40, 0x05, 0x2b, 0x87, 0x73, 0x83, 0x8f, 0x83, 0x83, + 0x8b, 0xa3, 0x83, 0x0d, 0x00, 0x00, 0x03, 0x08, 0x94, 0xda, 0x45, 0x60, + 0x05, 0x00, 0x00, 0x13, 0x90, 0x80, 0xfe, 0x41, 0x20, 0xb3, 0x73, 0x93, + 0x83, 0x53, 0x83, 0xb3, 0xa3, 0x83, 0x8b, 0x43, 0x83, 0xb3, 0x47, 0x90, + 0x05, 0x00, 0x00, 0x44, 0x40, 0x64, 0x93, 0x4f, 0x90, 0x83, 0xf3, 0x90, + 0xb3, 0xab, 0x90, 0xa3, 0x83, 0x90, 0x93, 0xa7, 0x90, 0x83, 0x8b, 0x90, + 0xa3, 0x63, 0x90, 0x83, 0x7f, 0x90, 0xb3, 0x13, 0x90, 0xa3, 0x07, 0x90, + 0xaf, 0xd6, 0x7f, 0x8f, 0x73, 0x83, 0x4c, 0x0f, 0x37, 0xdf, 0x05, 0x00, + 0xe4, 0x05, 0x92, 0x57, 0x09, 0x00, 0xc6, 0xbe, 0x7f, 0x83, 0xb3, 0x82, + 0x25, 0x00, 0x00, 0xbc, 0x38, 0x64, 0x50, 0x7f, 0x24, 0x30, 0x35, 0x27, + 0x08, 0x70, 0x7c, 0xb3, 0x83, 0x92, 0x74, 0x34, 0x72, 0x82, 0x41, 0x20, + 0xdb, 0x8d, 0xe5, 0x2f, 0xb4, 0x7f, 0x54, 0x00, 0x64, 0x97, 0xbd, 0x7f, + 0x47, 0x59, 0x00, 0x82, 0x41, 0x20, 0xa7, 0xf3, 0x7f, 0xcb, 0xbd, 0x7f, + 0x07, 0x5a, 0x00, 0x82, 0x41, 0x20, 0x97, 0xf3, 0x7f, 0x33, 0xbe, 0x7f, + 0x0d, 0x00, 0x00, 0x20, 0x59, 0x64, 0x16, 0x92, 0xc3, 0x1e, 0x8a, 0xc3, + 0x8f, 0x83, 0x82, 0x93, 0xd3, 0x82, 0x83, 0x63, 0x83, 0x47, 0xdd, 0xf2, + 0x7f, 0x8c, 0xf2, 0xc7, 0xd3, 0xf2, 0x83, 0x57, 0x93, 0x03, 0x52, 0x60, + 0x0a, 0x40, 0x20, 0x83, 0x83, 0x82, 0x04, 0xfa, 0x65, 0xb3, 0xcb, 0x92, + 0xd7, 0xc1, 0xf2, 0x40, 0x49, 0x24, 0xe7, 0x51, 0x60, 0x87, 0x83, 0x82, + 0x8f, 0xf3, 0x82, 0x17, 0x84, 0xf2, 0x40, 0x4f, 0x24, 0x04, 0xfa, 0x64, + 0xcf, 0x51, 0x60, 0x57, 0x81, 0xf2, 0x77, 0x97, 0xf2, 0xfc, 0xb5, 0x3a, + 0x12, 0x40, 0x60, 0x9f, 0x43, 0x83, 0x48, 0x1f, 0x37, 0x5e, 0x43, 0x20, + 0x87, 0xa3, 0x82, 0xbf, 0xe6, 0xf2, 0x25, 0x00, 0x00, 0x34, 0xc4, 0x64, + 0xc0, 0x77, 0x24, 0x9b, 0x51, 0x60, 0x93, 0xc3, 0x82, 0x46, 0x43, 0x20, + 0x77, 0x7b, 0x11, 0xcb, 0xd1, 0xf2, 0x00, 0x48, 0x24, 0x83, 0x51, 0x60, + 0x4c, 0x75, 0x24, 0xfc, 0x7c, 0xb3, 0x1d, 0x00, 0x00, 0xd7, 0xbc, 0x1f, + 0x53, 0x8d, 0xf9, 0x07, 0xa8, 0xf2, 0xc0, 0x75, 0x24, 0x08, 0x35, 0x27, + 0x1c, 0x34, 0x27, 0x0f, 0x3f, 0xfe, 0xb3, 0x07, 0x90, 0xa3, 0x87, 0x92, + 0x05, 0x00, 0x00, 0x04, 0x5a, 0x64, 0x83, 0xa7, 0x90, 0xb3, 0x6b, 0x90, + 0xa3, 0x4b, 0x90, 0x83, 0x4f, 0x90, 0xa3, 0x07, 0x90, 0x93, 0x5f, 0x90, + 0x3f, 0xd5, 0x7f, 0x05, 0x00, 0x00, 0x10, 0xe3, 0x55, 0x97, 0xa3, 0x82, + 0x08, 0x02, 0x64, 0x87, 0xe3, 0x82, 0x00, 0x81, 0x86, 0x82, 0x40, 0x81, + 0x84, 0x16, 0x37, 0x0f, 0x94, 0xf2, 0x40, 0x0e, 0x37, 0x44, 0x00, 0x92, + 0xaa, 0xbe, 0x7f, 0x05, 0x00, 0x00, 0x64, 0x6d, 0x64, 0x83, 0x5f, 0x90, + 0xb3, 0x17, 0x90, 0xa3, 0x27, 0x90, 0x83, 0x97, 0x92, 0xf3, 0xd4, 0x7f, + 0x0d, 0x00, 0x00, 0x10, 0x76, 0x4e, 0x0d, 0x00, 0x00, 0xa8, 0x75, 0x4e, + 0x8f, 0x93, 0x82, 0x05, 0x00, 0x00, 0x44, 0x77, 0x64, 0x08, 0x75, 0x24, + 0x9c, 0x76, 0x24, 0x80, 0x34, 0x27, 0xd4, 0x35, 0x27, 0x83, 0x4f, 0x90, + 0xa3, 0x43, 0x90, 0xa3, 0x07, 0x90, 0xb3, 0x57, 0x90, 0x93, 0x6f, 0x90, + 0xb3, 0x1b, 0x90, 0x28, 0x20, 0x64, 0x14, 0x40, 0x64, 0xa3, 0xd4, 0x7f, + 0x05, 0x00, 0x00, 0x24, 0xe3, 0x55, 0x05, 0x00, 0x00, 0x08, 0x8b, 0x64, + 0xa3, 0x0b, 0x90, 0x40, 0x82, 0x86, 0x9e, 0xca, 0x8b, 0x01, 0x00, 0x00, + 0x52, 0xc9, 0x9a, 0x83, 0x53, 0x90, 0xb3, 0x1f, 0x90, 0xab, 0xa1, 0x01, + 0x6f, 0xd4, 0x7f, 0x87, 0x83, 0x82, 0x82, 0x41, 0x20, 0x07, 0xf3, 0x7f, + 0x80, 0x07, 0x64, 0x33, 0xc8, 0x7f, 0x8e, 0x13, 0xc5, 0x83, 0x99, 0x01, + 0x24, 0x02, 0x1f, 0x04, 0x2a, 0x1f, 0x82, 0x41, 0x20, 0x4b, 0x0e, 0xa0, + 0x43, 0x2c, 0xa0, 0x1b, 0xf5, 0x7f, 0x17, 0x6a, 0xf8, 0x1e, 0x8a, 0xc3, + 0x22, 0x92, 0xc3, 0x6e, 0x4a, 0xc0, 0xd0, 0x75, 0x24, 0x34, 0x76, 0x24, + 0x24, 0x35, 0x27, 0x48, 0x37, 0x27, 0x8f, 0xe4, 0xf2, 0xeb, 0x94, 0xf2, + 0x87, 0xee, 0xf2, 0xc3, 0xd6, 0xf2, 0x2c, 0xfa, 0x64, 0x00, 0x6c, 0x24, + 0xef, 0x4f, 0x60, 0x5f, 0xd6, 0xf2, 0x0d, 0x00, 0x00, 0x2b, 0x00, 0x54, + 0x04, 0xfa, 0x65, 0xc0, 0x41, 0x24, 0xd7, 0x4f, 0x60, 0x03, 0x94, 0xf2, + 0x21, 0xd3, 0x1f, 0xd4, 0xd7, 0x64, 0xb3, 0x97, 0x91, 0x25, 0xf9, 0x1f, + 0x90, 0x37, 0x74, 0x83, 0xd3, 0x91, 0xc7, 0x42, 0x02, 0x25, 0xb9, 0x1f, + 0x50, 0x30, 0x64, 0x83, 0x83, 0x92, 0x93, 0xd3, 0x91, 0x93, 0x87, 0x92, + 0xa3, 0x93, 0x82, 0xfc, 0x12, 0x5a, 0x04, 0xfa, 0x64, 0xb7, 0x33, 0x03, + 0x1c, 0x0a, 0x58, 0x80, 0x7e, 0x24, 0x67, 0x57, 0xf8, 0x93, 0xa3, 0x92, + 0x7f, 0x4f, 0x60, 0x8b, 0x83, 0x82, 0x0f, 0x88, 0xf2, 0xe0, 0x64, 0x24, + 0x03, 0xa2, 0x5f, 0x6b, 0x4f, 0x60, 0x84, 0x02, 0x64, 0x50, 0x46, 0x24, + 0xf7, 0x81, 0xf2, 0x04, 0xfa, 0x64, 0x03, 0xa1, 0xf2, 0x53, 0x4f, 0x60, + 0xc3, 0x81, 0xf2, 0x05, 0x00, 0x00, 0x64, 0x94, 0x64, 0x5f, 0x3f, 0xfe, + 0x37, 0x3c, 0xfe, 0xa3, 0x27, 0x90, 0x93, 0x5f, 0x90, 0x83, 0x77, 0x90, + 0xb3, 0x17, 0x90, 0x24, 0x04, 0x64, 0x37, 0xd3, 0x7f, 0x44, 0x01, 0xb2, + 0x12, 0x00, 0x60, 0x4c, 0x81, 0xba, 0x3c, 0x0c, 0x64, 0xe6, 0x43, 0x81, + 0x48, 0x43, 0x2b, 0xdf, 0x49, 0xfb, 0x09, 0x00, 0x00, 0x34, 0xed, 0x64, + 0x4f, 0x03, 0x80, 0x3d, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x3d, 0x00, 0x00, + 0x40, 0x00, 0x92, 0x52, 0x01, 0x60, 0x57, 0x05, 0x00, 0x58, 0x81, 0x92, + 0x42, 0xff, 0x7f, 0x09, 0xc7, 0x3c, 0x50, 0xeb, 0x64, 0x31, 0x85, 0x39, + 0xd4, 0x6a, 0x64, 0xa3, 0xd3, 0x91, 0x93, 0x57, 0x92, 0x31, 0x90, 0x3a, + 0x50, 0xac, 0x74, 0x39, 0xd6, 0x38, 0x00, 0xfc, 0x64, 0x3d, 0x5f, 0x23, + 0x7c, 0xb6, 0x64, 0x1d, 0xde, 0x24, 0xc8, 0xf4, 0x64, 0x1d, 0xc1, 0x24, + 0x4c, 0xfe, 0x64, 0x1d, 0x35, 0x36, 0x44, 0xee, 0x64, 0xa3, 0x53, 0x92, + 0x31, 0x00, 0x00, 0x50, 0xb0, 0x64, 0xb3, 0xc3, 0x91, 0x93, 0x3f, 0x92, + 0xa3, 0x0b, 0x92, 0xb3, 0x0f, 0x92, 0x83, 0x47, 0x92, 0xb3, 0x53, 0xa2, + 0x3d, 0x70, 0x47, 0x9c, 0x3c, 0x64, 0x83, 0x1f, 0x92, 0x1c, 0x00, 0x64, + 0xca, 0x41, 0x20, 0xfd, 0x07, 0x00, 0xc0, 0xfe, 0x74, 0x6b, 0x4e, 0x60, + 0x02, 0x04, 0x00, 0xa3, 0x03, 0x93, 0xb0, 0x33, 0xe7, 0x20, 0x02, 0xc8, + 0x74, 0x05, 0x2b, 0x0d, 0x00, 0x00, 0x67, 0x63, 0x84, 0xb3, 0xa3, 0x01, + 0x04, 0xfa, 0x64, 0x2f, 0x97, 0xf2, 0x80, 0x66, 0x24, 0x23, 0x4e, 0x60, + 0x8b, 0x83, 0x82, 0xee, 0x42, 0xc2, 0x0d, 0x00, 0x00, 0x5a, 0x31, 0xc6, + 0x0d, 0x00, 0x00, 0x77, 0x11, 0x0c, 0x0f, 0x88, 0xf2, 0xf0, 0x6c, 0x24, + 0x03, 0xa3, 0x5f, 0xfb, 0x4d, 0x60, 0xa7, 0x81, 0xf2, 0x43, 0x27, 0xa0, + 0x84, 0x02, 0x64, 0xd0, 0x46, 0x24, 0x03, 0xb1, 0xf2, 0x04, 0xfa, 0x64, + 0xdf, 0x4d, 0x60, 0x83, 0x81, 0xf2, 0x5b, 0x83, 0xa0, 0x67, 0x3e, 0xfe, + 0x0b, 0x3c, 0xfe, 0x05, 0x00, 0x00, 0x0c, 0x9e, 0x64, 0x93, 0x67, 0x90, + 0x83, 0x4b, 0x90, 0xb3, 0x1f, 0x90, 0xa3, 0x0f, 0x90, 0xc3, 0xd1, 0x7f, + 0xdf, 0x05, 0x00, 0xcc, 0x05, 0x92, 0x57, 0x09, 0x00, 0x46, 0xbf, 0x7f, + 0x43, 0xb8, 0x7f, 0xc7, 0x90, 0x32, 0xac, 0x85, 0x48, 0x46, 0x40, 0x60, + 0xd2, 0xb8, 0x00, 0x28, 0x01, 0x92, 0x3a, 0x00, 0x60, 0x40, 0xa7, 0x1d, + 0x7b, 0xc8, 0x7f, 0x40, 0x91, 0x26, 0x22, 0x40, 0x20, 0xca, 0x41, 0x20, + 0x2a, 0x40, 0x60, 0x47, 0x12, 0x00, 0x42, 0x43, 0x20, 0x73, 0xc8, 0x7f, + 0x22, 0x42, 0x21, 0x0a, 0x42, 0x20, 0x40, 0xa7, 0x1d, 0x63, 0xc8, 0x7f, + 0x77, 0x13, 0x00, 0x4f, 0xbe, 0x7f, 0x47, 0x22, 0x00, 0x42, 0x43, 0x20, + 0x4f, 0xc8, 0x7f, 0x22, 0xc2, 0x20, 0xdf, 0xbf, 0x7f, 0x05, 0x00, 0x00, + 0xfc, 0xa7, 0x64, 0xb3, 0x1f, 0x90, 0xa3, 0x3f, 0x90, 0x33, 0xd1, 0x7f, + 0x73, 0xbf, 0x7f, 0xff, 0x59, 0x00, 0x05, 0x00, 0x00, 0x10, 0x38, 0x64, + 0x2f, 0xba, 0x7f, 0x00, 0x3c, 0x23, 0x03, 0x10, 0xe6, 0x0d, 0x00, 0x00, + 0x18, 0x3e, 0x4e, 0x1e, 0x40, 0x20, 0x84, 0x41, 0x2b, 0x5a, 0x7c, 0x26, + 0x8a, 0x41, 0x20, 0x04, 0x04, 0x64, 0xf7, 0xc7, 0x7f, 0x8a, 0x41, 0x20, + 0xc3, 0x81, 0x50, 0xeb, 0xc7, 0x7f, 0x8a, 0x41, 0x20, 0xc3, 0xc1, 0x50, + 0x03, 0x14, 0xe6, 0xdb, 0x87, 0x7f, 0x0f, 0x28, 0xe5, 0x05, 0x00, 0x00, + 0x08, 0x41, 0x64, 0x04, 0x11, 0x64, 0x1e, 0x40, 0x20, 0xc3, 0xc7, 0x7f, + 0x40, 0x00, 0x64, 0x93, 0xc4, 0x7f, 0x05, 0x00, 0x00, 0x48, 0x41, 0x64, + 0xc3, 0x11, 0x51, 0xab, 0xc7, 0x7f, 0x14, 0x18, 0x64, 0x01, 0x00, 0x85, + 0x20, 0x00, 0x64, 0x01, 0x00, 0x05, 0x24, 0x00, 0x64, 0x20, 0x18, 0xc8, + 0x8c, 0x01, 0x92, 0x4a, 0x42, 0x20, 0x0a, 0x00, 0x60, 0x0a, 0x42, 0x20, + 0xc0, 0x95, 0x1d, 0x7b, 0xc7, 0x7f, 0xc0, 0x95, 0x1d, 0x5f, 0xc7, 0x7f, + 0x9b, 0x05, 0x00, 0x9c, 0x81, 0x92, 0x57, 0x11, 0x00, 0xd2, 0xff, 0x7f, + 0x09, 0x00, 0x00, 0x48, 0x00, 0x64, 0xc3, 0x41, 0x51, 0x0b, 0x2c, 0xe5, + 0x4f, 0x87, 0x7f, 0x0f, 0x28, 0xe5, 0xb0, 0x00, 0x72, 0x00, 0x08, 0x2b, + 0x0d, 0x00, 0x00, 0x1b, 0xf0, 0x82, 0x90, 0x18, 0xc8, 0x1c, 0x18, 0x64, + 0x01, 0x00, 0x85, 0x20, 0x00, 0x64, 0x80, 0x9d, 0x1d, 0x0a, 0x42, 0x20, + 0x1f, 0xc7, 0x7f, 0x80, 0x9d, 0x1d, 0x03, 0xc7, 0x7f, 0x57, 0x05, 0x00, + 0x5c, 0x01, 0x92, 0xdf, 0x11, 0x00, 0xe2, 0xbf, 0x7f, 0x45, 0x40, 0x46, + 0x88, 0x91, 0x64, 0x83, 0x51, 0x51, 0x0b, 0x2c, 0xe5, 0xf3, 0x86, 0x7f, + 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x00, 0x40, 0x55, 0x04, 0x00, 0xa1, + 0x01, 0x12, 0x00, 0x04, 0x84, 0x80, 0x00, 0x3c, 0x23, 0x6b, 0x88, 0xe5, + 0x1a, 0x40, 0x20, 0x01, 0x05, 0x00, 0x40, 0x00, 0x64, 0x33, 0xd0, 0x7f, + 0x0d, 0x00, 0x00, 0x37, 0xab, 0xf8, 0x38, 0x1a, 0x72, 0x09, 0x00, 0x00, + 0x20, 0xeb, 0x64, 0xa7, 0x11, 0x02, 0x03, 0x66, 0xf7, 0x10, 0x02, 0xc8, + 0x94, 0x11, 0x2b, 0x0d, 0x00, 0x00, 0x57, 0x81, 0x0b, 0x40, 0x01, 0xe7, + 0x50, 0x01, 0xe7, 0x60, 0x01, 0xe7, 0x70, 0x01, 0xe7, 0x04, 0x10, 0x64, + 0x6b, 0xc6, 0x7f, 0x00, 0x70, 0x94, 0x19, 0x00, 0x00, 0x1e, 0x40, 0x3c, + 0x03, 0x66, 0xf7, 0xca, 0x41, 0x20, 0x04, 0x10, 0x64, 0x20, 0x00, 0x64, + 0x5f, 0xc6, 0x7f, 0x80, 0x25, 0x64, 0x2f, 0xc3, 0x7f, 0x83, 0x01, 0x50, + 0xef, 0xee, 0x7f, 0x33, 0x0c, 0x50, 0x4a, 0x41, 0x20, 0x09, 0x00, 0x00, + 0x28, 0xeb, 0x64, 0xaf, 0x11, 0x02, 0x83, 0x6e, 0xf7, 0xcf, 0xa1, 0xd3, + 0x04, 0x10, 0x64, 0x83, 0xcb, 0x90, 0xca, 0x41, 0x20, 0x23, 0xc6, 0x7f, + 0x80, 0x07, 0x64, 0xf3, 0xc2, 0x7f, 0x83, 0x01, 0x50, 0xb3, 0xee, 0x7f, + 0x26, 0x40, 0x20, 0x83, 0x6e, 0xf7, 0x07, 0x06, 0x00, 0xcf, 0x85, 0xd3, + 0xca, 0x41, 0x20, 0x04, 0x10, 0x64, 0xf7, 0xc5, 0x7f, 0x80, 0x07, 0x64, + 0xc7, 0xc2, 0x7f, 0x83, 0x01, 0x50, 0x87, 0xee, 0x7f, 0x8f, 0xc3, 0x80, + 0x64, 0x42, 0x2b, 0x27, 0x64, 0xfb, 0x23, 0x0a, 0x00, 0xca, 0x40, 0x20, + 0x90, 0x24, 0x7a, 0x77, 0x47, 0x00, 0x22, 0x1e, 0x00, 0x04, 0xf7, 0x73, + 0x30, 0x07, 0xa8, 0x83, 0x6e, 0xf7, 0x73, 0x31, 0x90, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0xab, 0xc5, 0x7f, 0x80, 0x07, 0x64, 0x7b, 0xc2, 0x7f, + 0x13, 0x00, 0x60, 0x50, 0x00, 0x64, 0x0d, 0x00, 0x00, 0x34, 0x93, 0x82, + 0x01, 0x05, 0x00, 0x80, 0x00, 0x64, 0xf7, 0xce, 0x7f, 0x09, 0x00, 0x00, + 0x14, 0xeb, 0x64, 0xab, 0x11, 0x02, 0x43, 0x69, 0xf7, 0xf8, 0x42, 0xc8, + 0x05, 0x00, 0x00, 0x3c, 0xe3, 0x55, 0xf8, 0x3f, 0xc8, 0x11, 0x00, 0x00, + 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, 0x57, 0xc5, 0x7f, 0x80, 0x07, 0x64, + 0x27, 0xc2, 0x7f, 0x83, 0x01, 0x50, 0xe7, 0xed, 0x7f, 0x1e, 0x40, 0x20, + 0x25, 0x00, 0x00, 0xa4, 0x38, 0x64, 0xa7, 0xce, 0x7f, 0x29, 0x00, 0x00, + 0x04, 0x00, 0x64, 0xc0, 0x65, 0x24, 0x17, 0x4a, 0x60, 0x04, 0x64, 0x24, + 0x1d, 0x00, 0x00, 0x4f, 0xbc, 0x1f, 0x7c, 0x7c, 0xb3, 0xe3, 0x84, 0xf9, + 0x08, 0x36, 0x27, 0xb3, 0x03, 0x90, 0x83, 0xc3, 0x90, 0x05, 0x00, 0x00, + 0xc0, 0xab, 0x64, 0x83, 0x4b, 0x90, 0xa3, 0x03, 0x90, 0x20, 0xfa, 0x64, + 0xef, 0xcd, 0x7f, 0x87, 0xc3, 0x80, 0x05, 0x00, 0x00, 0x50, 0x64, 0x64, + 0x0f, 0xc5, 0xf2, 0xc0, 0x60, 0x24, 0x07, 0xe5, 0x06, 0xc3, 0x49, 0x60, + 0x88, 0x05, 0x2b, 0x0d, 0x00, 0x00, 0xa3, 0x80, 0xa5, 0x22, 0x40, 0x20, + 0x03, 0xc8, 0x0d, 0x38, 0xe4, 0xb6, 0x92, 0x42, 0x60, 0x80, 0xa1, 0x1d, + 0x53, 0xec, 0x7f, 0x43, 0x69, 0xf7, 0x05, 0x00, 0x00, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0x9b, 0xc4, 0x7f, 0x80, 0x07, 0x64, 0x6b, 0xc1, 0x7f, + 0x43, 0x69, 0xf7, 0x0d, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0x7f, 0xc4, 0x7f, 0x80, 0x07, 0x64, 0x4f, 0xc1, 0x7f, 0x82, 0x41, 0x20, + 0x57, 0xed, 0x7f, 0x1f, 0x3c, 0xfe, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x64, + 0xcf, 0xcd, 0x7f, 0xc2, 0x41, 0x20, 0xc7, 0xcd, 0x7f, 0xec, 0x65, 0x24, + 0xd0, 0x36, 0x27, 0x05, 0x00, 0x00, 0x44, 0xb4, 0x64, 0x83, 0x53, 0x90, + 0xb3, 0x1f, 0x90, 0xa3, 0x07, 0x90, 0x37, 0xcd, 0x7f, 0x05, 0x00, 0x00, + 0x0c, 0xe3, 0x55, 0x08, 0x10, 0x64, 0xc0, 0x00, 0x92, 0x82, 0x80, 0x80, + 0x07, 0xc2, 0xf2, 0x82, 0x41, 0x20, 0xbb, 0xeb, 0x7f, 0x80, 0x07, 0x64, + 0xe7, 0xc0, 0x7f, 0x82, 0x41, 0x20, 0xef, 0xec, 0x7f, 0x2f, 0x3c, 0xfe, + 0x01, 0x0c, 0x00, 0x40, 0x00, 0x64, 0x67, 0xcd, 0x7f, 0xc2, 0x42, 0x20, + 0x5f, 0xcd, 0x7f, 0xd0, 0x66, 0x24, 0x04, 0x35, 0x27, 0x05, 0x00, 0x00, + 0x0c, 0xbd, 0x64, 0x83, 0x47, 0x90, 0xa3, 0x0f, 0x90, 0xb3, 0x2f, 0x90, + 0xdf, 0xed, 0xf2, 0xdc, 0x65, 0x24, 0xc7, 0xcc, 0x7f, 0x01, 0x0c, 0x00, + 0x80, 0x00, 0x64, 0x2b, 0xcd, 0x7f, 0x1d, 0x00, 0x00, 0xcb, 0xbd, 0x1f, + 0xfc, 0xfd, 0xb3, 0x83, 0xdc, 0xf9, 0x00, 0x34, 0x27, 0x13, 0xcd, 0x7f, + 0x3d, 0x01, 0x00, 0xfc, 0x7d, 0xb3, 0x72, 0x01, 0x60, 0x80, 0xa1, 0x1d, + 0x33, 0xeb, 0x7f, 0x80, 0x07, 0x64, 0x5f, 0xc0, 0x7f, 0x01, 0x0c, 0x00, + 0xc0, 0x00, 0x64, 0xeb, 0xcc, 0x7f, 0x50, 0x00, 0x64, 0x05, 0x00, 0x00, + 0x64, 0xd0, 0x81, 0x05, 0x00, 0x00, 0x00, 0xe3, 0x55, 0xc0, 0x02, 0xc8, + 0x6b, 0x69, 0xf7, 0xfd, 0x07, 0x00, 0xc8, 0xff, 0x64, 0x05, 0x00, 0x00, + 0xe4, 0xc5, 0x64, 0x2c, 0x08, 0x64, 0x83, 0x12, 0x52, 0x43, 0xc3, 0x7f, + 0x83, 0x82, 0x52, 0x01, 0x00, 0xf4, 0x08, 0x00, 0x64, 0x33, 0xc3, 0x7f, + 0x01, 0x05, 0x00, 0xc0, 0x00, 0x64, 0x97, 0xcc, 0x7f, 0xa3, 0x27, 0x90, + 0x28, 0x04, 0x64, 0x1c, 0x13, 0x64, 0x05, 0x00, 0x00, 0x60, 0xcc, 0x64, + 0x0f, 0xcc, 0x7f, 0x04, 0x0c, 0x64, 0x4c, 0x15, 0x64, 0xc8, 0x14, 0x64, + 0xb3, 0x87, 0x90, 0x83, 0x8f, 0xb0, 0x8b, 0x8b, 0xb0, 0x93, 0xab, 0x90, + 0xa3, 0xaf, 0x90, 0x87, 0x9f, 0xb0, 0xa7, 0x13, 0x01, 0x5f, 0x21, 0x00, + 0x05, 0x00, 0x00, 0xe8, 0xcf, 0x64, 0x6c, 0x9b, 0x64, 0xd7, 0x01, 0x80, + 0x3d, 0x00, 0x00, 0x7e, 0x01, 0x00, 0x3d, 0x00, 0x00, 0xc0, 0x83, 0x92, + 0xde, 0x40, 0x60, 0x82, 0x41, 0x20, 0x53, 0xe9, 0x7f, 0x1c, 0x00, 0x64, + 0x05, 0x00, 0x00, 0xa0, 0xd5, 0x64, 0x80, 0x9d, 0x1d, 0xf3, 0xe8, 0x7f, + 0x83, 0x43, 0x90, 0xb3, 0x1f, 0x90, 0xa3, 0x23, 0x90, 0xdf, 0x05, 0x00, + 0x8f, 0xcb, 0x7f, 0xcc, 0x05, 0x92, 0xe2, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x14, 0x59, 0x64, 0x83, 0x99, 0x01, 0xa3, 0xa1, 0x01, 0x90, 0x0c, 0x64, + 0x5c, 0x01, 0x1f, 0x44, 0x21, 0x1f, 0x01, 0x05, 0x00, 0x00, 0x01, 0x64, + 0x43, 0x10, 0xa0, 0xcb, 0x11, 0xa0, 0xc7, 0xcb, 0x7f, 0x4b, 0x61, 0xf8, + 0xc6, 0x49, 0xc0, 0x82, 0x41, 0x20, 0xb3, 0xf1, 0x7f, 0x01, 0x05, 0x00, + 0x40, 0x01, 0x64, 0xab, 0xcb, 0x7f, 0x01, 0x05, 0x00, 0xc0, 0x01, 0x64, + 0x6b, 0x8c, 0xe5, 0x9b, 0x8b, 0x7f, 0x01, 0x0c, 0x00, 0x00, 0x01, 0x64, + 0x8f, 0xcb, 0x7f, 0x82, 0x41, 0x20, 0xdb, 0xe8, 0x7f, 0x80, 0x07, 0x64, + 0xe7, 0x7e, 0x7f, 0x10, 0x00, 0x64, 0x97, 0xbe, 0x7f, 0x82, 0x41, 0x20, + 0xaf, 0xef, 0x7f, 0x3c, 0xc1, 0x73, 0x82, 0x41, 0x20, 0xb7, 0xe8, 0x7f, + 0x01, 0x05, 0x00, 0x80, 0x01, 0x64, 0xaf, 0xbf, 0x7f, 0x4f, 0x91, 0x32, + 0xac, 0x8d, 0x48, 0x8e, 0x40, 0x60, 0x4a, 0xb9, 0x00, 0xa8, 0x00, 0x92, + 0x82, 0x00, 0x60, 0x77, 0x25, 0x37, 0xb3, 0x37, 0x90, 0xa3, 0x23, 0x90, + 0x14, 0x00, 0x64, 0xbb, 0xca, 0x7f, 0x77, 0x56, 0xf7, 0xc0, 0xb5, 0x1d, + 0x9b, 0xc1, 0x7f, 0x51, 0x00, 0x00, 0x02, 0x00, 0x00, 0x51, 0x00, 0x00, + 0x00, 0x80, 0x92, 0xe6, 0xff, 0x7f, 0x47, 0x33, 0x00, 0xc2, 0x41, 0x20, + 0x7b, 0xc1, 0x7f, 0x93, 0x03, 0x01, 0x47, 0x91, 0xf6, 0x0c, 0x40, 0x31, + 0x0b, 0x3c, 0xfe, 0xa3, 0x4f, 0x90, 0x93, 0x47, 0x90, 0x83, 0x4b, 0x90, + 0xb3, 0x07, 0x90, 0xa3, 0x2b, 0x90, 0x57, 0x05, 0x00, 0x0b, 0xcb, 0x7f, + 0x4c, 0x01, 0x92, 0xa6, 0xbf, 0x7f, 0xa3, 0x2f, 0x90, 0xfb, 0xca, 0x7f, + 0xdf, 0x11, 0x00, 0x7b, 0xbe, 0x7f, 0x03, 0x08, 0xe6, 0x04, 0x00, 0x64, + 0x1a, 0x40, 0x20, 0x18, 0x04, 0xc8, 0xcd, 0xff, 0xff, 0xd8, 0x8b, 0x63, + 0x82, 0x41, 0x20, 0xf0, 0x8b, 0x62, 0x82, 0x41, 0x20, 0xe0, 0xef, 0x62, + 0x83, 0xc2, 0xfe, 0x0a, 0x48, 0x20, 0x83, 0x78, 0xfe, 0x4c, 0x00, 0x64, + 0x9b, 0x0d, 0xf2, 0x93, 0x0d, 0xf2, 0x0d, 0x00, 0x00, 0xc3, 0xbc, 0x1f, + 0xf8, 0x8b, 0x62, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4f, 0xc3, 0xfe, + 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x82, 0x41, 0x20, 0xec, 0x83, 0x62, + 0xe4, 0x8b, 0x62, 0x0b, 0x00, 0xe0, 0x04, 0x00, 0x64, 0x28, 0x04, 0xc8, + 0xa3, 0x03, 0x90, 0xcd, 0xff, 0xff, 0xd4, 0xeb, 0x62, 0x83, 0x23, 0x80, + 0xf8, 0xf3, 0x63, 0x00, 0x3c, 0x23, 0x00, 0x3c, 0x23, 0x1b, 0x00, 0xe0, + 0x0c, 0x00, 0x64, 0x38, 0x0c, 0xc8, 0x83, 0x4b, 0x90, 0x88, 0x03, 0xd8, + 0xcd, 0xff, 0xff, 0xd0, 0xe3, 0x62, 0x8b, 0x43, 0x80, 0x80, 0x0b, 0xd0, + 0xf7, 0xcc, 0x7f, 0xf0, 0xfb, 0x63, 0x4b, 0xe0, 0xf1, 0x08, 0x08, 0x49, + 0xc4, 0x00, 0x70, 0x0f, 0x4a, 0xf2, 0x67, 0xc3, 0xfe, 0x00, 0x3c, 0x23, + 0x83, 0xc2, 0xfe, 0x02, 0x78, 0x27, 0x03, 0x78, 0xfe, 0x00, 0x04, 0x23, + 0x70, 0xfc, 0x63, 0x80, 0x00, 0x64, 0x1b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x83, 0xa0, 0xf1, 0x02, 0x48, 0x20, 0x0b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x07, 0x00, 0xfe, 0x4c, 0xfc, 0x63, 0x43, 0xe0, 0xf1, 0xfd, 0xbf, 0xff, + 0x00, 0x00, 0x64, 0x07, 0x42, 0xf2, 0x67, 0xc3, 0xfe, 0x8f, 0x1f, 0xfe, + 0x0e, 0x40, 0x20, 0x10, 0x00, 0x64, 0x00, 0x10, 0x1e, 0x03, 0x04, 0x00, + 0x00, 0x08, 0x1e, 0xc0, 0x04, 0x1e, 0x00, 0x3c, 0x23, 0x57, 0xc3, 0xfe, + 0x88, 0x81, 0x62, 0x1f, 0x08, 0xfe, 0x48, 0x89, 0x62, 0x0f, 0xa5, 0xf1, + 0xd0, 0xe8, 0xa3, 0x83, 0x10, 0x90, 0x13, 0x8f, 0xf1, 0x93, 0x10, 0x90, + 0x93, 0x8f, 0xf1, 0xa3, 0x10, 0x90, 0xe4, 0x30, 0x26, 0x1b, 0x00, 0xf3, + 0x53, 0x87, 0xf1, 0xb3, 0x14, 0x90, 0xd0, 0x30, 0x26, 0x2b, 0x00, 0xf3, + 0x13, 0xce, 0xf1, 0xa3, 0x10, 0x90, 0x93, 0xce, 0xf1, 0xb3, 0x10, 0x90, + 0xd4, 0x30, 0x26, 0x2b, 0x00, 0xf3, 0x0f, 0xdd, 0xf1, 0xa3, 0x0c, 0x90, + 0x8f, 0xdd, 0xf1, 0xb3, 0x0c, 0x90, 0x00, 0x18, 0x23, 0x64, 0x81, 0x62, + 0x01, 0x00, 0xfb, 0x0c, 0x00, 0x64, 0x83, 0x0c, 0x90, 0x0f, 0x8c, 0xf1, + 0x93, 0x0c, 0x90, 0x8f, 0x8c, 0xf1, 0xa3, 0x0c, 0x90, 0x00, 0x18, 0x23, + 0x05, 0x10, 0x00, 0x08, 0x28, 0x64, 0x40, 0x08, 0xc8, 0x0f, 0xe0, 0xf1, + 0xb3, 0x0c, 0x90, 0x83, 0x40, 0x90, 0x93, 0x44, 0x90, 0xa3, 0x78, 0x90, + 0xb3, 0x7c, 0x90, 0x00, 0x14, 0x23, 0x00, 0x18, 0x23, 0x73, 0x87, 0xf1, + 0x76, 0x53, 0x20, 0x77, 0x30, 0xf2, 0xb3, 0xc2, 0xfe, 0x32, 0x43, 0x04, + 0x03, 0x7b, 0xfe, 0x30, 0x80, 0x64, 0x6b, 0x32, 0xf2, 0x67, 0xc3, 0xfe, + 0xcf, 0x1d, 0xfe, 0x57, 0xc3, 0xfe, 0x58, 0x00, 0x64, 0x10, 0x18, 0xc8, + 0x98, 0xf1, 0x63, 0x3f, 0x06, 0xfe, 0x9f, 0x1d, 0xfe, 0x05, 0x00, 0x00, + 0x27, 0x43, 0xf9, 0x83, 0x9d, 0xf1, 0x07, 0x9e, 0xf1, 0x03, 0xc4, 0xfb, + 0x02, 0x04, 0x00, 0x68, 0x00, 0xc8, 0xeb, 0x01, 0xf2, 0x83, 0xc2, 0xfe, + 0x02, 0x40, 0x24, 0x03, 0x78, 0xfe, 0x43, 0x87, 0xf1, 0x46, 0x60, 0x20, + 0x77, 0x00, 0xf2, 0x00, 0x80, 0x64, 0x6b, 0x02, 0xf2, 0x05, 0x00, 0x00, + 0x43, 0x72, 0xf4, 0x2b, 0xc3, 0xfe, 0x05, 0x00, 0x00, 0x43, 0x72, 0xf4, + 0xef, 0x1c, 0xfe, 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, + 0xa3, 0x7f, 0x90, 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, + 0xa3, 0x07, 0x90, 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, + 0x83, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0x80, 0x40, 0x74, + 0xd8, 0x8b, 0x62, 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, + 0xa3, 0x7f, 0x90, 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, + 0xa3, 0x07, 0x90, 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, + 0x83, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0x40, 0x40, 0x74, + 0xd8, 0x87, 0x62, 0x09, 0x00, 0x00, 0x37, 0x53, 0xf9, 0x10, 0x00, 0x64, + 0xc9, 0xff, 0xff, 0x24, 0xd1, 0x73, 0x93, 0xc2, 0xfe, 0x12, 0x41, 0x24, + 0x03, 0x79, 0xfe, 0x53, 0x87, 0xf1, 0x56, 0x41, 0x24, 0x77, 0x10, 0xf2, + 0x10, 0x80, 0x64, 0x5b, 0x12, 0xf2, 0x6b, 0x12, 0xf2, 0x93, 0x8c, 0xf1, + 0x12, 0x41, 0x04, 0xcb, 0x10, 0xf2, 0x67, 0xc3, 0xfe, 0x09, 0x00, 0x00, + 0x53, 0x73, 0xf4, 0x33, 0xc3, 0xfe, 0x1b, 0x10, 0xe6, 0x09, 0x00, 0x00, + 0x04, 0xc1, 0x81, 0x7d, 0x00, 0x00, 0x3c, 0x7c, 0xaf, 0x5e, 0x40, 0x20, + 0x0e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x24, 0xc5, 0x81, 0x58, 0x00, 0x64, + 0xb3, 0x03, 0x90, 0xa3, 0x1b, 0x90, 0x07, 0x00, 0xfd, 0x83, 0x47, 0xb0, + 0x01, 0x00, 0xf0, 0x48, 0x04, 0x64, 0xc0, 0x00, 0x74, 0xc4, 0x87, 0x62, + 0x82, 0x83, 0xe0, 0x00, 0xe0, 0x26, 0x1a, 0x40, 0x60, 0x88, 0x1b, 0xd8, + 0x01, 0x00, 0xf0, 0x48, 0x01, 0x64, 0xc0, 0x00, 0x74, 0xe4, 0x83, 0x62, + 0x48, 0x00, 0x64, 0xa3, 0x0b, 0x90, 0x00, 0x00, 0x74, 0x01, 0x00, 0xf0, + 0x48, 0x00, 0x64, 0xcc, 0x83, 0x62, 0x40, 0x00, 0x64, 0xf8, 0xc7, 0x63, + 0x03, 0x80, 0xe5, 0x20, 0x84, 0x1d, 0x10, 0x7a, 0x31, 0xb3, 0x23, 0x00, + 0x4c, 0x0a, 0x2b, 0x3c, 0x02, 0xa7, 0x03, 0x33, 0x01, 0xd3, 0x50, 0xfb, + 0x9b, 0x23, 0x40, 0x06, 0x40, 0x20, 0x22, 0x41, 0x20, 0xd6, 0x43, 0x20, + 0x84, 0x14, 0x72, 0x87, 0x0d, 0x00, 0x4e, 0x4c, 0x00, 0xd3, 0x20, 0x00, + 0xbb, 0xd3, 0xf2, 0xcc, 0x01, 0x64, 0xa3, 0x0f, 0xb0, 0x87, 0x23, 0x00, + 0x47, 0x08, 0x90, 0x8f, 0x37, 0x00, 0x0c, 0x3d, 0x72, 0x03, 0xa3, 0x80, + 0x8b, 0x4d, 0x00, 0xc8, 0x9b, 0x62, 0xfa, 0x41, 0x20, 0x07, 0x84, 0xe5, + 0x4e, 0x1d, 0x00, 0xcf, 0x44, 0x00, 0xcc, 0x00, 0xb6, 0x3a, 0x00, 0x60, + 0x64, 0x00, 0x64, 0x4c, 0x8e, 0x40, 0xd0, 0x80, 0xba, 0x60, 0x40, 0x70, + 0x0a, 0x40, 0x60, 0x47, 0x10, 0x00, 0x9b, 0x8d, 0xf2, 0x4c, 0x0d, 0x31, + 0x18, 0x0c, 0xc8, 0xd0, 0x90, 0x1d, 0x4e, 0x41, 0x20, 0xd0, 0x90, 0x1d, + 0x83, 0xbf, 0x7f, 0xd0, 0x80, 0x92, 0xe6, 0xff, 0x7f, 0x67, 0x00, 0x80, + 0x9b, 0x05, 0x00, 0x47, 0x10, 0x00, 0x4c, 0x06, 0x5e, 0x9b, 0x05, 0x00, + 0xc4, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0xc7, 0xbf, 0x7f, 0xca, 0x1f, 0x00, + 0x8b, 0x44, 0x00, 0x8c, 0x00, 0xb6, 0x4e, 0x00, 0x60, 0x50, 0x00, 0x64, + 0x08, 0x89, 0x40, 0x90, 0x80, 0xba, 0x32, 0x40, 0x60, 0x10, 0x10, 0x5a, + 0xc3, 0x10, 0x90, 0xcf, 0x88, 0xf2, 0xc8, 0x0f, 0x31, 0x20, 0x08, 0xc8, + 0x3e, 0x42, 0x20, 0xa2, 0x40, 0x20, 0xca, 0x43, 0x20, 0x3e, 0x42, 0x20, + 0xa2, 0x40, 0x20, 0x37, 0xbf, 0x7f, 0x10, 0x08, 0xf0, 0xc0, 0x10, 0xd8, + 0xd7, 0xbf, 0x7f, 0x90, 0x80, 0x92, 0xd2, 0xff, 0x7f, 0xc0, 0x00, 0xe4, + 0x03, 0x10, 0x00, 0xcf, 0x04, 0x00, 0x13, 0xf0, 0x8f, 0x08, 0x05, 0x5e, + 0xc4, 0x08, 0x78, 0x84, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0xaf, 0xbf, 0x7f, + 0x18, 0x00, 0x64, 0x10, 0x18, 0xc8, 0xc0, 0xdb, 0x1f, 0x57, 0x17, 0xfe, + 0x00, 0x7c, 0x31, 0x00, 0xfc, 0xa1, 0x00, 0x3c, 0x23, 0x03, 0x18, 0xe5, + 0x18, 0x84, 0x1d, 0x09, 0x00, 0x00, 0x00, 0xea, 0x52, 0x96, 0x40, 0x20, + 0x00, 0x00, 0x66, 0x16, 0x00, 0x60, 0x4a, 0x41, 0x20, 0x80, 0x9d, 0x1d, + 0xf8, 0x93, 0x62, 0x07, 0x1c, 0xe5, 0x08, 0x00, 0x64, 0x00, 0x00, 0x74, + 0xe8, 0x93, 0x62, 0xfd, 0xff, 0xff, 0x3c, 0xfc, 0x87, 0x12, 0x40, 0x60, + 0x44, 0x00, 0x64, 0x09, 0x00, 0x00, 0x44, 0xc5, 0x7f, 0x09, 0x00, 0x00, + 0x08, 0xea, 0x52, 0x84, 0x00, 0x66, 0xc2, 0xbf, 0x7f, 0x4a, 0x41, 0x20, + 0x80, 0x9d, 0x1d, 0xcc, 0xfb, 0x63, 0xbf, 0xbf, 0x7f, 0x03, 0x00, 0xe0, + 0xcc, 0xfb, 0x63, 0x03, 0x60, 0x20, 0x07, 0x04, 0xe0, 0xb7, 0x00, 0xfe, + 0x1f, 0x01, 0xfe, 0x03, 0x00, 0xe0, 0xc4, 0x8b, 0x62, 0x40, 0x80, 0x1d, + 0x07, 0x04, 0xe0, 0x03, 0x18, 0xe5, 0x10, 0x84, 0x1d, 0x60, 0x08, 0xc8, + 0x00, 0x08, 0x64, 0x03, 0xc8, 0xf2, 0x18, 0x00, 0x74, 0x0c, 0x00, 0x25, + 0x58, 0x8d, 0x3e, 0x2c, 0x00, 0xc8, 0x5c, 0x89, 0x3e, 0x44, 0x81, 0x40, + 0x08, 0x89, 0x3e, 0x9b, 0x44, 0xfb, 0x90, 0x9d, 0x1d, 0x00, 0x95, 0x1d, + 0x07, 0x1c, 0xe5, 0x03, 0x10, 0xe5, 0x14, 0x7c, 0x27, 0x58, 0x7c, 0x27, + 0x03, 0xd4, 0xfa, 0x47, 0xd8, 0xfa, 0x03, 0xd4, 0xf2, 0x47, 0xd8, 0xf2, + 0xdc, 0x83, 0x62, 0x47, 0xd4, 0xfa, 0x47, 0xd4, 0xf2, 0x57, 0xd9, 0xfa, + 0x03, 0xd4, 0xfa, 0x03, 0xd4, 0xf2, 0x07, 0x14, 0xe5, 0x4b, 0x24, 0xfe, + 0x50, 0x04, 0xc8, 0x8a, 0x4c, 0x20, 0x8b, 0x04, 0x00, 0x52, 0x40, 0x20, + 0x04, 0x88, 0x3e, 0x8c, 0x80, 0x25, 0x00, 0x8c, 0x40, 0x10, 0x08, 0xca, + 0x00, 0x50, 0x1e, 0x00, 0x3c, 0x23, 0x04, 0x00, 0x64, 0xb0, 0xc7, 0xc9, + 0x47, 0x00, 0x80, 0xa0, 0xc7, 0xc9, 0x07, 0x00, 0xfe, 0x8c, 0x00, 0x64, + 0x01, 0x00, 0x00, 0x5f, 0x1a, 0xfe, 0x01, 0x04, 0x00, 0x8c, 0x05, 0x64, + 0x01, 0x00, 0x00, 0xff, 0x19, 0xfe, 0x03, 0x00, 0x80, 0x00, 0x3c, 0x23, + 0x30, 0x84, 0x62, 0x38, 0x40, 0x55, 0xba, 0x4f, 0x00, 0x04, 0x00, 0x64, + 0x4c, 0x04, 0x72, 0xcd, 0xab, 0x89, 0xc8, 0x7b, 0x64, 0x45, 0x23, 0x01, + 0xcc, 0x59, 0x64, 0x05, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x86, 0x43, 0x20, + 0xec, 0x83, 0x62, 0xbb, 0x63, 0x00, 0x80, 0x03, 0xe6, 0x04, 0x00, 0x64, + 0x4c, 0x04, 0x48, 0xc3, 0x07, 0xf6, 0x3b, 0x00, 0xf2, 0x87, 0xc2, 0xfe, + 0x46, 0x50, 0x07, 0x43, 0x78, 0xfe, 0x97, 0x03, 0xfe, 0x47, 0xc0, 0xf2, + 0x44, 0x0c, 0x31, 0x10, 0x04, 0xca, 0x08, 0x08, 0xe8, 0x00, 0x3c, 0x23, + 0x08, 0x00, 0x74, 0xc4, 0x3f, 0x64, 0x50, 0x08, 0x1d, 0x18, 0x00, 0x64, + 0x44, 0x37, 0x64, 0x84, 0x09, 0x1e, 0x9b, 0x05, 0x00, 0x47, 0x44, 0x00, + 0xec, 0xc7, 0x73, 0x84, 0x03, 0x64, 0x0b, 0x07, 0xf2, 0x57, 0xc3, 0xfe, + 0x9f, 0x11, 0xf2, 0xc7, 0x11, 0xf2, 0xef, 0x11, 0xf2, 0x17, 0x12, 0xf2, + 0x3f, 0x12, 0xf2, 0x67, 0x12, 0xf2, 0xe7, 0x51, 0xf2, 0xff, 0x50, 0xf2, + 0xcf, 0x51, 0xf2, 0x44, 0x00, 0x64, 0xf3, 0x06, 0xf2, 0x8d, 0xd6, 0x92, + 0x84, 0x28, 0x64, 0xc3, 0x46, 0xf2, 0xb7, 0x01, 0xfe, 0x35, 0x00, 0x00, + 0xc4, 0x08, 0x64, 0xb3, 0x06, 0xf2, 0x31, 0x00, 0x00, 0xc4, 0xfc, 0x64, + 0xbb, 0x06, 0xf2, 0x31, 0x00, 0x00, 0x44, 0xe0, 0x64, 0xd3, 0x06, 0xf2, + 0x31, 0x00, 0x00, 0x44, 0xec, 0x64, 0xc3, 0x06, 0xf2, 0x31, 0x00, 0x00, + 0x84, 0xeb, 0x64, 0xdb, 0x06, 0xf2, 0x39, 0x00, 0x00, 0xc4, 0x8b, 0x64, + 0xcb, 0x06, 0xf2, 0x31, 0x00, 0x00, 0x44, 0xbc, 0x64, 0xe3, 0x06, 0xf2, + 0x67, 0xc3, 0xfe, 0xc4, 0xff, 0x64, 0x5b, 0x06, 0xf2, 0x44, 0x00, 0x64, + 0xe3, 0x05, 0xf2, 0x67, 0xc3, 0xfe, 0x87, 0xc2, 0xfe, 0x05, 0x00, 0x00, + 0x46, 0x50, 0x04, 0x43, 0x78, 0xfe, 0x84, 0x00, 0x64, 0x05, 0x10, 0x00, + 0x44, 0x86, 0x80, 0x01, 0xad, 0xde, 0x44, 0x00, 0x64, 0x4b, 0x04, 0x00, + 0x4f, 0x08, 0x00, 0x53, 0x0c, 0x00, 0x57, 0x10, 0x00, 0x5b, 0x14, 0x00, + 0x5f, 0x18, 0x00, 0x63, 0x1c, 0x00, 0x67, 0x20, 0x00, 0x6b, 0x24, 0x00, + 0x6f, 0x28, 0x00, 0x73, 0x2c, 0x00, 0x77, 0x30, 0x00, 0x7b, 0x34, 0x00, + 0x7f, 0x38, 0x00, 0x40, 0x60, 0x26, 0x40, 0xe0, 0x26, 0x00, 0x00, 0x23, + 0x08, 0x41, 0x64, 0x05, 0x00, 0x00, 0x04, 0xd8, 0x64, 0x03, 0x48, 0xf2, + 0x0b, 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, 0xfb, 0x64, 0x05, 0x00, 0x00, + 0x04, 0xd8, 0x64, 0x13, 0x48, 0xf2, 0x1b, 0x44, 0xf2, 0x08, 0x03, 0x64, + 0x04, 0x38, 0x64, 0x23, 0x48, 0xf2, 0x2b, 0x44, 0xf2, 0x05, 0x00, 0x00, + 0x08, 0xe3, 0x64, 0x0d, 0x00, 0x00, 0x04, 0xf0, 0x64, 0x33, 0x48, 0xf2, + 0x3b, 0x44, 0xf2, 0x05, 0x10, 0x00, 0x08, 0x03, 0x64, 0x05, 0x10, 0x00, + 0x04, 0x78, 0x64, 0x43, 0x48, 0xf2, 0x4b, 0x44, 0xf2, 0x87, 0x1d, 0xfe, + 0x0f, 0x20, 0xe5, 0x00, 0x41, 0x64, 0xfd, 0xff, 0xff, 0xf0, 0x97, 0x63, + 0x00, 0x00, 0x66, 0xa2, 0x00, 0x60, 0x14, 0x00, 0x64, 0xa8, 0x14, 0xc8, + 0x18, 0x44, 0x64, 0x82, 0x41, 0x20, 0xfd, 0xff, 0xff, 0xd0, 0x93, 0x63, + 0x22, 0x40, 0x20, 0x83, 0x11, 0x00, 0xfd, 0xff, 0xff, 0xe0, 0x8f, 0x63, + 0xa3, 0x03, 0x90, 0x83, 0x21, 0x00, 0xfd, 0xff, 0xff, 0xf0, 0x8b, 0x63, + 0x87, 0x23, 0x80, 0x0a, 0x40, 0x20, 0x02, 0x42, 0x20, 0xdf, 0x05, 0x00, + 0xd8, 0x97, 0x62, 0x6c, 0x9d, 0x3a, 0x9b, 0x31, 0x00, 0xba, 0xff, 0x7f, + 0xd4, 0x00, 0x64, 0x80, 0x14, 0xc8, 0x18, 0x44, 0x74, 0x82, 0x41, 0x20, + 0xfd, 0xff, 0xff, 0xc8, 0x83, 0x63, 0x22, 0x40, 0x20, 0x83, 0x11, 0x00, + 0xfd, 0xff, 0xff, 0xd8, 0xff, 0x62, 0x0a, 0x40, 0x20, 0x03, 0x02, 0x50, + 0xec, 0x93, 0x62, 0xdf, 0x05, 0x00, 0x6c, 0x1d, 0x3a, 0x9b, 0x21, 0x00, + 0xce, 0xbf, 0x7f, 0x00, 0x42, 0x64, 0xfd, 0xff, 0xff, 0xe0, 0xf7, 0x62, + 0x22, 0x40, 0x20, 0x00, 0x43, 0x64, 0xfd, 0xff, 0xff, 0xf0, 0xf3, 0x62, + 0x1e, 0x40, 0x20, 0x00, 0x00, 0x64, 0x05, 0x00, 0x00, 0x14, 0xe0, 0x55, + 0x18, 0x00, 0xc8, 0xc5, 0xff, 0xff, 0xc4, 0xa7, 0x63, 0xd0, 0x87, 0x62, + 0x00, 0x00, 0x64, 0x28, 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, + 0xc5, 0xff, 0xff, 0xf0, 0x9f, 0x63, 0x00, 0x00, 0x64, 0x18, 0x00, 0xc8, + 0xc5, 0xff, 0xff, 0xc0, 0x9f, 0x63, 0x00, 0x00, 0x64, 0x28, 0x00, 0xc8, + 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0xc5, 0xff, 0xff, 0xf8, 0x97, 0x63, + 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0x57, 0xf6, 0x7f, 0x03, 0x00, 0xe0, + 0x00, 0x00, 0x64, 0x18, 0x00, 0xc8, 0xc5, 0xff, 0xff, 0xd8, 0x93, 0x63, + 0x00, 0x00, 0x64, 0x90, 0x00, 0xc8, 0xc5, 0xff, 0xff, 0xe8, 0x8f, 0x63, + 0x00, 0x00, 0x64, 0x18, 0x00, 0xc8, 0xc5, 0xff, 0xff, 0xf8, 0x8b, 0x63, + 0x0b, 0xc1, 0xf1, 0x8e, 0x68, 0x00, 0x13, 0x4c, 0xf2, 0x31, 0x00, 0x00, + 0xd0, 0xe7, 0x64, 0xe3, 0x12, 0xf2, 0x35, 0x00, 0x00, 0xfc, 0x14, 0x64, + 0xcb, 0x3e, 0xf2, 0x67, 0xc3, 0xfe, 0x07, 0x04, 0xe0, 0x40, 0x00, 0x65, + 0x5b, 0x02, 0xf2, 0x01, 0x00, 0x82, 0x07, 0x00, 0x00, 0x33, 0x06, 0xf2, + 0x67, 0xc3, 0xfe, 0xaf, 0xbf, 0x7f, 0x88, 0x08, 0x31, 0x18, 0x08, 0xca, + 0x48, 0x10, 0x5a, 0x10, 0x08, 0x7a, 0x00, 0x3c, 0x23, 0x0c, 0x00, 0x64, + 0x4c, 0xcc, 0x1e, 0x84, 0x08, 0x31, 0x10, 0x04, 0xca, 0x10, 0x0c, 0x7a, + 0x00, 0x3c, 0x23, 0xf9, 0xff, 0xff, 0x98, 0xc5, 0x62, 0xcf, 0x14, 0xfe, + 0x4b, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, 0x67, 0xc3, 0xfe, 0x8f, 0x03, 0x80, + 0x83, 0x13, 0x80, 0xbb, 0x23, 0x00, 0xc0, 0x00, 0x86, 0x02, 0xbc, 0x9f, + 0x00, 0x3c, 0x23, 0xa0, 0xcf, 0x7b, 0x67, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, + 0xa7, 0x1f, 0xfe, 0x10, 0x00, 0x64, 0xc5, 0xff, 0xff, 0xf4, 0xd0, 0x72, + 0xcf, 0x1f, 0xfe +}; + +#define PMC_DTCM_LOG_SIZE 256 + +const unsigned char pmcdata[] = { + 0x98, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x01, 0x00, 0x00, 0x98, 0x0b, 0x00, 0x00, 0x44, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x00, 0x28, 0x6e, + 0x75, 0x6c, 0x6c, 0x29, 0x00, 0x25, 0x30, 0x34, 0x75, 0x3a, 0x20, 0x00, + 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x20, 0x30, 0x78, 0x25, + 0x30, 0x38, 0x78, 0x0a, 0x00, 0x50, 0x4d, 0x42, 0x5f, 0x41, 0x52, 0x53, + 0x20, 0x61, 0x74, 0x20, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x3d, + 0x25, 0x64, 0x20, 0x62, 0x75, 0x73, 0x20, 0x25, 0x64, 0x20, 0x69, 0x73, + 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x50, 0x4d, 0x42, + 0x5f, 0x50, 0x56, 0x54, 0x4d, 0x4f, 0x4e, 0x20, 0x61, 0x74, 0x20, 0x44, + 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x3d, 0x25, 0x64, 0x20, 0x62, 0x75, + 0x73, 0x20, 0x25, 0x64, 0x20, 0x69, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x50, 0x4d, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x3a, + 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x0a, 0x00, 0x24, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x20, 0x33, 0x30, 0x30, 0x30, 0x32, + 0x37, 0x20, 0x24, 0x00, 0x32, 0x30, 0x31, 0x30, 0x30, 0x32, 0x5f, 0x30, + 0x39, 0x33, 0x34, 0x00, 0x54, 0x53, 0x3a, 0x25, 0x73, 0x0a, 0x00, 0x50, + 0x41, 0x52, 0x54, 0x49, 0x44, 0x3a, 0x25, 0x78, 0x20, 0x73, 0x6b, 0x69, + 0x70, 0x70, 0x65, 0x64, 0x20, 0x63, 0x68, 0x69, 0x70, 0x20, 0x69, 0x64, + 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, + 0x00, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x5f, 0x4d, 0x56, + 0x20, 0x25, 0x75, 0x0a, 0x00, 0x52, 0x34, 0x38, 0x20, 0x49, 0x44, 0x2c, + 0x20, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x28, 0x4b, 0x48, 0x7a, + 0x29, 0x2c, 0x20, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x28, 0x43, + 0x6e, 0x74, 0x29, 0x2c, 0x20, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x28, + 0x4b, 0x48, 0x7a, 0x29, 0x2c, 0x20, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x20, + 0x28, 0x43, 0x6e, 0x74, 0x29, 0x0a, 0x00, 0x30, 0x30, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x30, 0x31, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, + 0x32, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, 0x33, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x30, 0x34, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, + 0x35, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, 0x36, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x30, 0x37, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, + 0x38, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x30, 0x39, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x31, 0x30, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, + 0x31, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, 0x32, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x31, 0x33, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, + 0x34, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, 0x35, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x31, 0x36, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, + 0x37, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x31, 0x38, 0x2c, 0x20, 0x25, + 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6c, 0x6f, + 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, 0x69, 0x73, 0x6c, 0x61, 0x6e, + 0x64, 0x20, 0x25, 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x25, 0x64, + 0x20, 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x78, + 0x20, 0x25, 0x64, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x25, 0x64, 0x0a, 0x00, + 0x62, 0x07, 0x00, 0x00, 0x66, 0x07, 0x00, 0x00, 0x6a, 0x07, 0x00, 0x00, + 0x6e, 0x07, 0x00, 0x00, 0x72, 0x07, 0x00, 0x00, 0x76, 0x07, 0x00, 0x00, + 0x41, 0x56, 0x53, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x0a, 0x00, 0x53, 0x57, 0x5f, 0x44, 0x41, 0x43, 0x3a, 0x20, 0x25, 0x64, + 0x0a, 0x00, 0x63, 0x75, 0x72, 0x5f, 0x64, 0x61, 0x63, 0x20, 0x25, 0x75, + 0x20, 0x63, 0x75, 0x72, 0x56, 0x20, 0x25, 0x75, 0x20, 0x63, 0x75, 0x72, + 0x54, 0x65, 0x6d, 0x70, 0x20, 0x25, 0x75, 0x20, 0x64, 0x65, 0x6c, 0x74, + 0x61, 0x20, 0x25, 0x64, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x64, 0x61, 0x63, + 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x56, 0x41, 0x44, 0x43, 0x31, 0x20, + 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x25, 0x75, 0x20, + 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x25, + 0x75, 0x0a, 0x00, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, + 0x4d, 0x56, 0x41, 0x44, 0x43, 0x32, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, + 0x56, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, + 0x20, 0x25, 0x75, 0x20, 0x4d, 0x56, 0x0a, 0x00, 0x52, 0x34, 0x38, 0x00, + 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x73, 0x20, 0x73, 0x6c, 0x6f, 0x77, + 0x20, 0x25, 0x64, 0x6d, 0x56, 0x20, 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, + 0x64, 0x6d, 0x56, 0x0a, 0x00, 0x52, 0x4f, 0x5b, 0x25, 0x73, 0x3a, 0x25, + 0x64, 0x5d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x6f, + 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x6f, 0x20, 0x25, + 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x25, 0x64, 0x20, 0x76, + 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, + 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, 0x76, 0x68, 0x69, + 0x67, 0x68, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, + 0x5f, 0x68, 0x69, 0x67, 0x68, 0x20, 0x25, 0x64, 0x20, 0x76, 0x6f, 0x6c, + 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, 0x00, + 0x61, 0x76, 0x73, 0x5f, 0x64, 0x61, 0x63, 0x20, 0x25, 0x64, 0x20, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x75, + 0x20, 0x61, 0x76, 0x73, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x63, + 0x61, 0x6c, 0x63, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, + 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x68, 0x69, 0x67, + 0x68, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6c, 0x6f, 0x77, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x20, 0x25, 0x64, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, + 0x20, 0x69, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x20, 0x6d, + 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x5f, 0x73, 0x6c, 0x6f, + 0x77, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, + 0x6d, 0x76, 0x5f, 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, + 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, + 0x20, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x76, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x4d, 0x49, 0x4e, 0x5f, + 0x44, 0x41, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x20, 0x25, 0x64, 0x20, + 0x4d, 0x41, 0x58, 0x5f, 0x44, 0x41, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x25, 0x64, 0x20, 0x68, 0x69, 0x20, 0x25, 0x64, + 0x20, 0x6c, 0x6f, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x52, 0x34, 0x38, 0x5f, 0x25, 0x64, 0x20, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x68, 0x69, + 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x52, + 0x34, 0x38, 0x5f, 0x25, 0x64, 0x20, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, + 0x64, 0x0a, 0x00, 0x56, 0x41, 0x44, 0x43, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x56, 0x54, 0x20, + 0x30, 0x78, 0x25, 0x78, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x6d, 0x56, 0x0a, + 0x00, 0x56, 0x41, 0x44, 0x43, 0x31, 0x20, 0x72, 0x65, 0x61, 0x64, 0x65, + 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x56, 0x49, 0x4e, 0x20, 0x30, + 0x78, 0x25, 0x78, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x6d, 0x56, 0x0a, 0x00, + 0x56, 0x41, 0x44, 0x43, 0x32, 0x20, 0x72, 0x65, 0x61, 0x64, 0x65, 0x64, + 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x56, 0x49, 0x4e, 0x20, 0x30, 0x78, + 0x25, 0x78, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x6d, 0x56, 0x0a, 0x00, 0x44, + 0x75, 0x6d, 0x70, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, + 0x20, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x0a, + 0x00, 0x44, 0x65, 0x76, 0x41, 0x64, 0x64, 0x72, 0x20, 0x3a, 0x20, 0x25, + 0x64, 0x20, 0x00, 0x25, 0x63, 0x31, 0x36, 0x3a, 0x20, 0x25, 0x64, 0x20, + 0x20, 0x20, 0x25, 0x63, 0x32, 0x30, 0x3a, 0x20, 0x25, 0x64, 0x20, 0x20, + 0x20, 0x00, 0x52, 0x34, 0x38, 0x5f, 0x25, 0x64, 0x3a, 0x20, 0x25, 0x75, + 0x0a, 0x00, 0x55, 0x31, 0x36, 0x00, 0x55, 0x32, 0x30, 0x00, 0x4c, 0x31, + 0x36, 0x00, 0x4c, 0x32, 0x30, 0x00, 0x53, 0x31, 0x36, 0x00, 0x53, 0x32, + 0x30, 0x00, 0x00, 0x00, 0xdb, 0xea, 0x31, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +#endif //DEVICE_TREE +#endif //PMC_ROMDATA_63146_H diff --git a/arch/arm/mach-bcmbca/pmc/pmc_firmware_63178.h b/arch/arm/mach-bcmbca/pmc/pmc_firmware_63178.h new file mode 100644 index 0000000000..f0a5d75e5f --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_firmware_63178.h @@ -0,0 +1,1388 @@ +/* + * * <:copyright-BRCM:2017:DUAL/GPL:standard + * * + * * Copyright (c) 2017 Broadcom + * * All Rights Reserved + * * + * * This program is free software; you can redistribute it and/or modify + * * it under the terms of the GNU General Public License, version 2, as published by + * * the Free Software Foundation (the "GPL"). + * * + * * This program is distributed in the hope that it will be useful, + * * but WITHOUT ANY WARRANTY; without even the implied warranty of + * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * * GNU General Public License for more details. + * * + * * + * * A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + * * writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * * Boston, MA 02111-1307, USA. + * * + * * :> + * */ + +#ifndef PMC_ROMDATA_63178_H +#define PMC_ROMDATA_63178_H +#define PMC_VER_IMPL 3 +#define PMC_VER_MAJOR 2 +#define PMC_VER_MINOR 2 +#define PMC_VER_CHANGELIST "$Change: 284027 $" +const unsigned char pmcappdata[] = { + 0x01, 0x00, 0x00, 0xbf, 0x03, 0xfe, 0x67, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0xe6, 0x05, + 0x00, 0x00, 0x00, 0x8c, 0x52, 0x04, 0x00, 0x66, 0x5a, 0x00, 0x60, 0x09, + 0x00, 0x00, 0x00, 0x92, 0x55, 0x05, 0x00, 0x00, 0x58, 0x7a, 0x64, 0x4c, + 0x00, 0x72, 0x05, 0x00, 0x00, 0x00, 0x8e, 0x55, 0x44, 0x00, 0x64, 0x09, + 0x00, 0x00, 0x44, 0x06, 0x81, 0x86, 0x41, 0x20, 0x39, 0x00, 0x00, 0xc4, + 0xdb, 0x62, 0x05, 0x00, 0x00, 0x00, 0x8e, 0x55, 0x86, 0x41, 0x20, 0x39, + 0x00, 0x00, 0xc8, 0xd7, 0x62, 0x48, 0x00, 0x64, 0x05, 0x00, 0x00, 0x84, + 0x09, 0x7f, 0x07, 0x0c, 0xe6, 0x03, 0x00, 0x80, 0x00, 0x3c, 0x23, 0x0c, + 0x88, 0x62, 0x38, 0x40, 0x55, 0xba, 0x4f, 0x00, 0x04, 0x00, 0x64, 0x4c, + 0x04, 0x72, 0xcd, 0xab, 0x89, 0xc8, 0x7b, 0x64, 0x45, 0x23, 0x01, 0xcc, + 0x59, 0x64, 0x05, 0x00, 0x00, 0x00, 0x8f, 0x64, 0x86, 0x43, 0x20, 0xec, + 0x83, 0x62, 0xbb, 0x63, 0x00, 0x80, 0x03, 0xe6, 0x04, 0x00, 0x64, 0x4c, + 0x04, 0x48, 0xc3, 0x07, 0xf6, 0x3b, 0x00, 0xf2, 0x87, 0xc2, 0xfe, 0x46, + 0x50, 0x07, 0x43, 0x78, 0xfe, 0x87, 0x04, 0xfe, 0x47, 0xc0, 0xf2, 0x44, + 0x0c, 0x31, 0x10, 0x04, 0xca, 0x08, 0x08, 0xe8, 0x00, 0x3c, 0x23, 0x03, + 0xc0, 0xf1, 0x02, 0x68, 0x00, 0x03, 0x40, 0xf2, 0x03, 0xc7, 0xf1, 0x02, + 0xfc, 0x00, 0x73, 0x40, 0xf2, 0x00, 0x3c, 0x23, 0x08, 0x00, 0x74, 0xc4, + 0x3f, 0x64, 0x50, 0x08, 0x1d, 0x18, 0x00, 0x64, 0x44, 0x37, 0x64, 0x84, + 0x09, 0x1e, 0x9b, 0x05, 0x00, 0x47, 0x44, 0x00, 0xec, 0xc7, 0x73, 0x84, + 0x03, 0x64, 0x0b, 0x07, 0xf2, 0x57, 0xc3, 0xfe, 0x9f, 0x11, 0xf2, 0xc7, + 0x11, 0xf2, 0xef, 0x11, 0xf2, 0x17, 0x12, 0xf2, 0x3f, 0x12, 0xf2, 0x67, + 0x12, 0xf2, 0xe7, 0x51, 0xf2, 0xff, 0x50, 0xf2, 0x87, 0x13, 0xf2, 0xcf, + 0x51, 0xf2, 0x44, 0x00, 0x64, 0x73, 0x06, 0xf2, 0x44, 0x00, 0x64, 0xf3, + 0x06, 0xf2, 0x8d, 0xd6, 0x92, 0x84, 0x28, 0x64, 0xc3, 0x46, 0xf2, 0xa7, + 0x01, 0xfe, 0x35, 0x0c, 0x00, 0x04, 0xbf, 0x64, 0xb3, 0x06, 0xf2, 0x35, + 0x0c, 0x00, 0x04, 0xa7, 0x64, 0xbb, 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x84, + 0x9f, 0x64, 0xd3, 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x04, 0xb3, 0x64, 0xc3, + 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x44, 0xa6, 0x64, 0xdb, 0x06, 0xf2, 0x01, + 0x0c, 0x00, 0x04, 0xf2, 0x64, 0xcb, 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x44, + 0x85, 0x64, 0xe3, 0x06, 0xf2, 0x67, 0xc3, 0xfe, 0xc4, 0xff, 0x64, 0x5b, + 0x06, 0xf2, 0x67, 0xc3, 0xfe, 0x87, 0xc2, 0xfe, 0x05, 0x00, 0x00, 0x46, + 0x40, 0x04, 0x43, 0x78, 0xfe, 0x84, 0x00, 0x64, 0x05, 0x10, 0x00, 0x44, + 0x86, 0x80, 0x01, 0xad, 0xde, 0x44, 0x00, 0x64, 0x4b, 0x04, 0x00, 0x4f, + 0x08, 0x00, 0x53, 0x0c, 0x00, 0x57, 0x10, 0x00, 0x5b, 0x14, 0x00, 0x5f, + 0x18, 0x00, 0x63, 0x1c, 0x00, 0x67, 0x20, 0x00, 0x6b, 0x24, 0x00, 0x6f, + 0x28, 0x00, 0x73, 0x2c, 0x00, 0x77, 0x30, 0x00, 0x7b, 0x34, 0x00, 0x7f, + 0x38, 0x00, 0x40, 0x60, 0x26, 0x40, 0xe0, 0x26, 0x00, 0x00, 0x23, 0x01, + 0x0c, 0x00, 0x88, 0x08, 0x64, 0x39, 0x0c, 0x00, 0x04, 0x80, 0x64, 0x1b, + 0x0b, 0xf2, 0x23, 0x07, 0xf2, 0x08, 0x53, 0x64, 0x05, 0x00, 0x00, 0x04, + 0x80, 0x64, 0x03, 0x48, 0xf2, 0x0b, 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, + 0xf9, 0x64, 0xfd, 0x1f, 0x00, 0x04, 0xf8, 0x64, 0x13, 0x48, 0xf2, 0x1b, + 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, 0xfb, 0x64, 0x05, 0x00, 0x00, 0x04, + 0x80, 0x64, 0x23, 0x48, 0xf2, 0x2b, 0x44, 0xf2, 0x08, 0x03, 0x64, 0x04, + 0x38, 0x64, 0x33, 0x48, 0xf2, 0x3b, 0x44, 0xf2, 0x05, 0x00, 0x00, 0x08, + 0x8b, 0x64, 0x0d, 0x00, 0x00, 0x04, 0xc0, 0x64, 0x43, 0x48, 0xf2, 0x4b, + 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, 0xfb, 0x64, 0xfd, 0x1f, 0x00, 0x04, + 0xf8, 0x64, 0x53, 0x48, 0xf2, 0x5b, 0x44, 0xf2, 0x05, 0x10, 0x00, 0x08, + 0x03, 0x64, 0x05, 0x10, 0x00, 0x04, 0x78, 0x64, 0x63, 0x48, 0xf2, 0x6b, + 0x44, 0xf2, 0x08, 0x41, 0x64, 0x04, 0x48, 0x64, 0x73, 0x48, 0xf2, 0x7b, + 0x44, 0xf2, 0xe7, 0x1c, 0xfe, 0x0f, 0x20, 0xe5, 0x00, 0x41, 0x64, 0xd8, + 0xd7, 0x63, 0x00, 0x00, 0x66, 0x8e, 0x00, 0x60, 0x14, 0x00, 0x64, 0x90, + 0x14, 0xc8, 0x18, 0x44, 0x64, 0x82, 0x41, 0x20, 0xfc, 0xd3, 0x63, 0x22, + 0x40, 0x20, 0x83, 0x11, 0x00, 0xf0, 0xd3, 0x63, 0xa3, 0x03, 0x90, 0x83, + 0x21, 0x00, 0xe4, 0xd3, 0x63, 0x87, 0x23, 0x80, 0x0a, 0x40, 0x20, 0x02, + 0x42, 0x20, 0xdf, 0x05, 0x00, 0xd8, 0x97, 0x62, 0x6c, 0x9d, 0x3a, 0x9b, + 0x31, 0x00, 0xc6, 0xff, 0x7f, 0xd4, 0x00, 0x64, 0x70, 0x14, 0xc8, 0x18, + 0x44, 0x74, 0x82, 0x41, 0x20, 0xf0, 0xcf, 0x63, 0x22, 0x40, 0x20, 0x83, + 0x11, 0x00, 0xe4, 0xcf, 0x63, 0x0a, 0x40, 0x20, 0x03, 0x02, 0x50, 0xf4, + 0x93, 0x62, 0xdf, 0x05, 0x00, 0x6c, 0x1d, 0x3a, 0x9b, 0x21, 0x00, 0xd6, + 0xbf, 0x7f, 0x00, 0x42, 0x64, 0xc0, 0xcf, 0x63, 0x22, 0x40, 0x20, 0x00, + 0x43, 0x64, 0xf4, 0xcb, 0x63, 0x1e, 0x40, 0x20, 0x01, 0x0c, 0x00, 0xc0, + 0x32, 0x64, 0x05, 0x00, 0x00, 0x14, 0x88, 0x55, 0x10, 0x00, 0xc8, 0xd0, + 0xd3, 0x63, 0xd4, 0x87, 0x62, 0x01, 0x0c, 0x00, 0x00, 0x08, 0x64, 0x20, + 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0xd0, 0xc3, 0x63, 0x00, + 0x00, 0x64, 0x18, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xcc, 0xbb, 0x62, 0x00, + 0x00, 0x64, 0x28, 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0xfd, + 0xf3, 0xff, 0xc4, 0xb7, 0x62, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0x31, + 0x00, 0x00, 0xe0, 0x9b, 0x63, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x64, 0x18, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xd8, 0xaf, 0x62, 0x00, 0x00, 0x64, 0x98, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xe8, 0xab, 0x62, 0x00, 0x00, 0x64, 0x18, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xf8, 0xa7, 0x62, 0x0f, 0xc2, 0xf1, 0xd2, + 0x68, 0x00, 0x23, 0x50, 0xf2, 0x00, 0x00, 0x64, 0x10, 0x00, 0xc8, 0xe3, + 0x02, 0xf2, 0x35, 0x0c, 0x00, 0x00, 0xcb, 0x64, 0x10, 0x00, 0xc8, 0xcb, + 0x02, 0xf2, 0x67, 0xc3, 0xfe, 0x07, 0x04, 0xe0, 0x40, 0x00, 0x65, 0x5b, + 0x02, 0xf2, 0x01, 0x00, 0x82, 0x07, 0x00, 0x00, 0x33, 0x06, 0xf2, 0x48, + 0x00, 0x64, 0xe3, 0x09, 0xf2, 0x67, 0xc3, 0xfe, 0xa3, 0xbf, 0x7f, 0x88, + 0x08, 0x31, 0x18, 0x08, 0xca, 0x48, 0x10, 0x5a, 0x10, 0x08, 0x7a, 0x00, + 0x3c, 0x23, 0x0c, 0x00, 0x64, 0x4c, 0xcc, 0x1e, 0x84, 0x08, 0x31, 0x10, + 0x04, 0xca, 0x10, 0x0c, 0x7a, 0x00, 0x3c, 0x23, 0x05, 0x10, 0x00, 0x18, + 0x28, 0x64, 0x70, 0x18, 0xc8, 0x83, 0x41, 0x90, 0x93, 0x45, 0x90, 0xa3, + 0x79, 0x90, 0xb3, 0x7d, 0x90, 0x9f, 0xb7, 0xf1, 0xdc, 0xed, 0xa3, 0x83, + 0x1d, 0x90, 0x1f, 0x8c, 0xf1, 0x93, 0x1d, 0x90, 0x9f, 0x8c, 0xf1, 0xa3, + 0x1d, 0x90, 0x1f, 0xe0, 0xf1, 0xb3, 0x1d, 0x90, 0x18, 0x00, 0x64, 0x10, + 0x18, 0xc8, 0xc0, 0xdb, 0x1f, 0x31, 0x00, 0x00, 0xf7, 0x0e, 0xfe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xa2, 0x11, 0x10, 0x00, 0x04, 0x01, 0x80, 0x11, 0x10, 0x00, + 0x04, 0x06, 0x64, 0x4b, 0x20, 0x80, 0xbc, 0x7c, 0xb3, 0xfa, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, 0xaf, 0x1f, 0xfe, + 0x13, 0x00, 0xe0, 0x01, 0x12, 0x00, 0x10, 0x00, 0x64, 0x0f, 0x01, 0x84, + 0xa0, 0x03, 0xe7, 0xbc, 0x7c, 0xb3, 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, + 0xff, 0x28, 0x3a, 0x8f, 0x0c, 0x00, 0xcb, 0x88, 0xf9, 0x8f, 0x23, 0x80, + 0xc0, 0x43, 0x24, 0xbc, 0x08, 0x27, 0x03, 0xbc, 0xf2, 0xd3, 0x40, 0xd0, + 0xa3, 0x0f, 0x90, 0xbf, 0x23, 0x80, 0xc0, 0x3f, 0xa4, 0xa3, 0x03, 0x90, + 0x8f, 0x23, 0x80, 0xcf, 0x04, 0xda, 0xa3, 0x0f, 0x90, 0x87, 0x23, 0x80, + 0x48, 0x00, 0xa2, 0xa3, 0x0b, 0x90, 0xbf, 0x23, 0x80, 0x03, 0xbd, 0x94, + 0xa0, 0x03, 0xe7, 0x03, 0x81, 0x84, 0xa3, 0x03, 0x90, 0x8f, 0x23, 0x80, + 0xf0, 0xb4, 0x26, 0xf2, 0xff, 0x7f, 0x93, 0x23, 0x80, 0xc8, 0x04, 0x64, + 0x34, 0x15, 0x26, 0x16, 0x00, 0x40, 0x87, 0x23, 0x80, 0x78, 0x94, 0x26, + 0x1a, 0x40, 0x60, 0x08, 0x02, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, + 0x00, 0x00, 0x64, 0x17, 0x04, 0xe0, 0x01, 0x12, 0x00, 0x00, 0x4b, 0x55, + 0xf7, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x01, 0x12, 0x00, 0x18, 0x00, 0x64, + 0x93, 0x01, 0x84, 0xbf, 0x0c, 0x00, 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, + 0xbc, 0x7c, 0xb3, 0x93, 0x8d, 0x94, 0xcb, 0x8b, 0xf9, 0x0f, 0x29, 0x3a, + 0xc0, 0x40, 0x24, 0x90, 0x08, 0x27, 0x0f, 0x90, 0xf2, 0xfd, 0x0f, 0x00, + 0xc2, 0xbc, 0x1f, 0x0f, 0x04, 0xda, 0x04, 0x04, 0xa2, 0x83, 0x85, 0x94, + 0xbf, 0x81, 0x84, 0xf0, 0xb7, 0x26, 0xfa, 0xff, 0x7f, 0xf4, 0x17, 0x26, + 0xc8, 0x04, 0x64, 0x12, 0x00, 0x40, 0xf8, 0x97, 0x26, 0x12, 0x40, 0x60, + 0x08, 0x02, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, 0x0f, 0x0c, 0xe6, + 0x03, 0x00, 0x80, 0x4b, 0x00, 0x50, 0x07, 0x10, 0x35, 0x03, 0x24, 0x37, + 0x67, 0x1d, 0xfe, 0x13, 0x00, 0xe0, 0x03, 0x00, 0x80, 0xa0, 0x03, 0xe7, + 0x48, 0x88, 0x1d, 0x07, 0x10, 0x35, 0x03, 0x24, 0x37, 0xd8, 0xf7, 0x63, + 0x17, 0x04, 0xe0, 0x01, 0x12, 0x00, 0x08, 0x00, 0x64, 0x8f, 0x80, 0x81, + 0x46, 0xbc, 0x00, 0x63, 0x80, 0xd2, 0xd0, 0x40, 0x98, 0x83, 0x90, 0x91, + 0x8f, 0x80, 0x81, 0xd0, 0x30, 0x94, 0x0c, 0x21, 0x98, 0x83, 0x8c, 0x91, + 0x4e, 0xbc, 0x17, 0x93, 0x80, 0x81, 0x06, 0xfd, 0x1f, 0x43, 0x4c, 0xfb, + 0x83, 0x80, 0x91, 0x93, 0x80, 0x81, 0x0c, 0x81, 0x98, 0x83, 0x8c, 0x91, + 0x87, 0x80, 0x81, 0x40, 0x40, 0x98, 0x83, 0x80, 0x91, 0x93, 0x80, 0x81, + 0x0c, 0x01, 0x9a, 0x83, 0x8c, 0x91, 0x87, 0x80, 0x81, 0x7c, 0x30, 0x26, + 0xfa, 0xbf, 0x7f, 0x83, 0xa0, 0x81, 0x00, 0x3c, 0x23, 0x01, 0x12, 0x00, + 0x0c, 0x00, 0x64, 0xd3, 0x80, 0x81, 0x46, 0xbc, 0x00, 0x63, 0x80, 0xd2, + 0x10, 0x41, 0x98, 0xc3, 0x90, 0x91, 0xd3, 0x90, 0x81, 0x03, 0x49, 0xd0, + 0xd3, 0x90, 0x91, 0xcb, 0x80, 0x81, 0x90, 0x30, 0x94, 0x08, 0x11, 0x98, + 0xc3, 0x88, 0x91, 0x4a, 0xbc, 0x17, 0xd3, 0x80, 0x81, 0x06, 0xfd, 0x1f, + 0x43, 0x48, 0xfb, 0xc3, 0x80, 0x91, 0xd3, 0x80, 0x81, 0x08, 0x81, 0x98, + 0xc3, 0x88, 0x91, 0xc7, 0x80, 0x81, 0x40, 0x40, 0x98, 0xc3, 0x80, 0x91, + 0xd3, 0x80, 0x81, 0x08, 0x01, 0x9a, 0xc3, 0x88, 0x91, 0xc7, 0x80, 0x81, + 0x7c, 0x30, 0x26, 0xfa, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x4b, 0x08, 0xe6, + 0x1d, 0x10, 0x00, 0x04, 0x08, 0x55, 0x48, 0x40, 0x48, 0xa6, 0x00, 0x60, + 0x18, 0x10, 0x2b, 0x92, 0x41, 0x20, 0x01, 0x05, 0x01, 0x00, 0x01, 0x5b, + 0x90, 0x07, 0xe7, 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, 0x80, 0x07, 0xe7, + 0x07, 0x11, 0x80, 0x0f, 0x21, 0x80, 0x3f, 0x31, 0x80, 0xa3, 0x43, 0x90, + 0x88, 0x03, 0xd8, 0xb3, 0x47, 0x90, 0x83, 0x8f, 0x90, 0x93, 0xbf, 0x90, + 0xa4, 0x03, 0xe4, 0x3c, 0xfc, 0x3c, 0x0a, 0xbc, 0x07, 0x5a, 0x40, 0x60, + 0x0d, 0x00, 0x00, 0x10, 0x43, 0x64, 0x13, 0x49, 0xf7, 0x90, 0x10, 0xc8, + 0x87, 0x23, 0x00, 0x83, 0xa3, 0x00, 0xc0, 0xd3, 0x1f, 0x0d, 0x00, 0x00, + 0x88, 0x1e, 0x4e, 0x8e, 0x41, 0x20, 0x87, 0x33, 0x80, 0x93, 0x43, 0x80, + 0xa7, 0x0b, 0xb0, 0x83, 0x53, 0x80, 0xbf, 0x23, 0x80, 0x01, 0x05, 0x01, + 0xc0, 0xfc, 0x7a, 0xd3, 0x04, 0x90, 0xe3, 0x10, 0x90, 0xf3, 0x00, 0x90, + 0x4f, 0x0c, 0xe6, 0x40, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, + 0xbf, 0xbf, 0x7f, 0x03, 0x00, 0xe0, 0x09, 0x00, 0x00, 0xc0, 0xf1, 0x52, + 0x00, 0x00, 0x66, 0x3e, 0x00, 0x60, 0x11, 0x10, 0x00, 0x08, 0x0a, 0x52, + 0x09, 0x00, 0x00, 0x3f, 0x9e, 0xf8, 0x11, 0x10, 0x00, 0x10, 0x0a, 0x64, + 0x86, 0x5c, 0x00, 0x4e, 0x58, 0x22, 0x11, 0x10, 0x00, 0x44, 0x0d, 0x7e, + 0x3e, 0x01, 0xe0, 0xd8, 0xb3, 0x26, 0xfa, 0xff, 0x7f, 0x03, 0x09, 0xb0, + 0x00, 0x00, 0x64, 0xe8, 0xef, 0x63, 0x80, 0x00, 0x64, 0xe0, 0xef, 0x63, + 0x00, 0x01, 0x64, 0xd8, 0xef, 0x63, 0x80, 0x01, 0x64, 0x03, 0x04, 0xe0, + 0x9f, 0x1d, 0xfe, 0x0b, 0x08, 0xe6, 0x84, 0x00, 0x72, 0x5c, 0x04, 0xba, + 0x3a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x18, 0xe1, 0x55, 0x44, 0x48, 0x2b, + 0x71, 0x01, 0x80, 0x4a, 0x44, 0x20, 0x83, 0x51, 0x52, 0xc8, 0xdb, 0x63, + 0x83, 0x81, 0x52, 0xec, 0xd7, 0x63, 0x00, 0x94, 0x26, 0xf6, 0xff, 0x7f, + 0x03, 0x3c, 0xfe, 0x0f, 0x0c, 0xe6, 0x00, 0x00, 0x64, 0xfb, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x1b, 0x10, 0x8e, + 0x08, 0x00, 0x64, 0x83, 0x51, 0x52, 0xcc, 0xd7, 0x63, 0x83, 0x81, 0x52, + 0x0b, 0x0c, 0xe6, 0x5f, 0x1a, 0xfe, 0x03, 0x00, 0xe0, 0x80, 0x00, 0x72, + 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x03, 0x10, 0x8e, 0x60, 0x00, 0xc8, + 0x05, 0x00, 0x00, 0x04, 0x8b, 0x55, 0x28, 0x04, 0xc8, 0x80, 0x01, 0x75, + 0xf4, 0xd3, 0x63, 0x00, 0x20, 0x28, 0x07, 0x04, 0xe0, 0x04, 0x12, 0x64, + 0xf0, 0xcf, 0x63, 0x02, 0xbc, 0x1f, 0xf3, 0xbf, 0x7f, 0x00, 0x00, 0x64, + 0xeb, 0xbf, 0x7f, 0x1b, 0x18, 0xe5, 0x5a, 0x40, 0x20, 0x58, 0x01, 0x72, + 0x09, 0x00, 0x00, 0x14, 0x9d, 0x64, 0x1f, 0x10, 0x02, 0x43, 0x5d, 0xf7, + 0x30, 0x01, 0xc8, 0x05, 0x00, 0x00, 0x00, 0x8b, 0x55, 0x74, 0x01, 0x72, + 0x01, 0x00, 0x00, 0x74, 0x70, 0xbb, 0x80, 0x0c, 0x64, 0x0e, 0x00, 0x40, + 0x58, 0xf3, 0x64, 0x0b, 0x00, 0x60, 0x8c, 0x01, 0x37, 0xc4, 0xaf, 0x64, + 0xb3, 0x1b, 0x90, 0xa3, 0x07, 0x90, 0x09, 0x00, 0x00, 0xfc, 0xaf, 0x63, + 0x05, 0x00, 0x00, 0x00, 0x8b, 0x55, 0xb0, 0x00, 0xc8, 0x80, 0x01, 0x75, + 0xe4, 0xcb, 0x63, 0x0f, 0x38, 0xfe, 0x88, 0x21, 0x2b, 0x8b, 0x4c, 0xfb, + 0x80, 0x01, 0x75, 0xc8, 0xd3, 0x63, 0x00, 0x00, 0x74, 0xc8, 0xcb, 0x63, + 0x1e, 0x48, 0x00, 0xca, 0x41, 0x20, 0x00, 0x00, 0x74, 0xf0, 0xcf, 0x63, + 0xca, 0x49, 0x20, 0x00, 0x00, 0x74, 0xe4, 0xcf, 0x63, 0xca, 0x41, 0x20, + 0x00, 0x00, 0x74, 0xd8, 0xcf, 0x63, 0x82, 0x41, 0x20, 0x1f, 0x1c, 0xe5, + 0x43, 0x5d, 0xf7, 0x04, 0x12, 0x64, 0xd8, 0xc3, 0x63, 0x2b, 0x18, 0xd0, + 0x0a, 0x40, 0x20, 0x43, 0x5d, 0xf7, 0x04, 0x12, 0x64, 0xd8, 0xc3, 0x63, + 0xdb, 0xbf, 0x7f, 0x40, 0xc0, 0xba, 0x00, 0x20, 0x64, 0x5e, 0xff, 0x5f, + 0x18, 0x40, 0x64, 0x5b, 0xbf, 0x7f, 0x03, 0x10, 0xe6, 0x28, 0x00, 0x72, + 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x1f, 0x10, 0x8e, 0x2c, 0x1c, 0x72, + 0x40, 0x00, 0x75, 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, 0x07, 0x14, 0xe6, + 0x5b, 0xa0, 0x00, 0x98, 0x09, 0x2b, 0xc0, 0x99, 0x1d, 0xf4, 0xbb, 0x63, + 0x08, 0x14, 0x26, 0xf6, 0xbf, 0x7f, 0x02, 0xbc, 0x1f, 0xe3, 0xbf, 0x7f, + 0x03, 0x00, 0xe0, 0xc4, 0x00, 0x64, 0xf0, 0xfb, 0x63, 0x07, 0x04, 0xe0, + 0x3b, 0x28, 0xe5, 0x16, 0x40, 0x20, 0x00, 0x00, 0x64, 0xdc, 0xe7, 0x63, + 0x1b, 0x3c, 0xfe, 0x00, 0x00, 0x64, 0xd8, 0xff, 0x63, 0x23, 0x3c, 0xfe, + 0x00, 0x00, 0x74, 0xc4, 0xfb, 0x63, 0x41, 0xff, 0xff, 0x44, 0x18, 0x64, + 0x00, 0x44, 0x24, 0xb9, 0x76, 0x02, 0x03, 0xa0, 0x06, 0x04, 0x19, 0x64, + 0x31, 0x00, 0x00, 0xf4, 0xa3, 0x62, 0x0d, 0x00, 0x00, 0x8c, 0x41, 0x4e, + 0x1e, 0x42, 0x20, 0x04, 0x0e, 0x3a, 0x76, 0x00, 0x60, 0x0d, 0x00, 0x00, + 0x08, 0x42, 0x4e, 0x84, 0xa0, 0x3a, 0x66, 0x40, 0x60, 0x5f, 0x99, 0xf2, + 0x21, 0x00, 0x00, 0x3c, 0x98, 0x64, 0x93, 0x43, 0x90, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x00, 0x7e, 0x24, 0xb3, 0x5f, 0x90, 0xa3, 0x57, 0x90, + 0x31, 0x00, 0x00, 0xd0, 0x97, 0x62, 0x04, 0xc2, 0x64, 0x83, 0x43, 0x90, + 0xb3, 0x1b, 0x90, 0xa3, 0x07, 0x90, 0x09, 0x00, 0x00, 0xdc, 0xe3, 0x62, + 0xbc, 0x1d, 0x48, 0x42, 0x00, 0x60, 0xc3, 0x01, 0x40, 0xf8, 0xdf, 0x63, + 0x80, 0x07, 0x64, 0x3b, 0x2c, 0xe5, 0xff, 0x12, 0xfe, 0xc4, 0x1c, 0x3a, + 0x0e, 0x00, 0x60, 0x9f, 0x09, 0x00, 0x9b, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x10, 0x42, 0x4e, 0xc4, 0x91, 0x3a, 0x9f, 0x49, 0x00, 0x9f, 0xdd, 0xf9, + 0x83, 0xbf, 0x7f, 0x3f, 0x2c, 0xe5, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xf0, 0xef, 0x63, 0x8f, 0x23, 0x80, 0x01, 0x12, 0x00, 0x04, 0x00, 0x55, + 0x03, 0x3c, 0xfe, 0x01, 0x00, 0x00, 0x20, 0x3c, 0xbb, 0xc8, 0x04, 0x2b, + 0x44, 0x88, 0x3e, 0x4e, 0x0c, 0x00, 0x52, 0x08, 0x00, 0x1a, 0x00, 0x60, + 0x2c, 0x10, 0x72, 0xfe, 0x48, 0x20, 0xec, 0xbc, 0x48, 0x1e, 0x40, 0x60, + 0x17, 0x04, 0xe0, 0x01, 0x00, 0x00, 0x04, 0x40, 0xb3, 0xf6, 0xbf, 0x7f, + 0xe0, 0xd3, 0xc9, 0x7e, 0x04, 0x00, 0x01, 0x12, 0x00, 0x0c, 0x00, 0x64, + 0xd3, 0x00, 0x80, 0xc0, 0x00, 0x64, 0x04, 0x88, 0x40, 0xc8, 0x8b, 0x40, + 0x13, 0x45, 0xfc, 0xc3, 0x10, 0x90, 0xc3, 0x00, 0x80, 0xbf, 0x40, 0xfb, + 0xc3, 0x3c, 0x90, 0xbf, 0xbf, 0x7f, 0x0f, 0x38, 0xe5, 0x11, 0x10, 0x00, + 0x00, 0x06, 0x55, 0x3c, 0x7c, 0xb3, 0x52, 0x01, 0x40, 0x0f, 0x3c, 0xe5, + 0x97, 0x90, 0x32, 0x8c, 0x15, 0x72, 0x82, 0xb8, 0x00, 0x08, 0x84, 0x92, + 0xba, 0x40, 0x60, 0x83, 0x81, 0x50, 0xd8, 0x9f, 0x63, 0x51, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x51, 0x00, 0x00, 0x40, 0x00, 0x86, 0x26, 0x40, 0x20, + 0x16, 0x40, 0x20, 0x9a, 0x00, 0x40, 0xa1, 0x00, 0x00, 0x00, 0x80, 0x8a, + 0x86, 0x40, 0x60, 0x83, 0xb1, 0x50, 0xe8, 0x9b, 0x63, 0x2a, 0x40, 0x20, + 0x83, 0xa1, 0x50, 0xdc, 0x9b, 0x63, 0x2e, 0x40, 0x20, 0x83, 0x91, 0x50, + 0xd0, 0x9b, 0x63, 0x84, 0x2e, 0x3a, 0xfe, 0x00, 0x60, 0x88, 0x42, 0x31, + 0xa4, 0x80, 0x3a, 0xf2, 0x40, 0x40, 0xec, 0x42, 0x31, 0xe4, 0x2a, 0x3a, + 0x16, 0x00, 0x60, 0x0c, 0x40, 0x31, 0xe4, 0x88, 0x3a, 0x0a, 0x40, 0x60, + 0xdf, 0x05, 0x00, 0x7c, 0x12, 0x26, 0x0a, 0x00, 0x60, 0x56, 0x42, 0x01, + 0x74, 0x91, 0x26, 0x0a, 0x40, 0x60, 0x56, 0xc1, 0x00, 0x4a, 0x41, 0x20, + 0x83, 0x81, 0x50, 0xd0, 0x97, 0x63, 0x4a, 0xc1, 0x21, 0x83, 0x81, 0x50, + 0xc4, 0x97, 0x63, 0x23, 0x06, 0x00, 0x9b, 0x11, 0x00, 0x8b, 0x01, 0x80, + 0x3d, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x3d, 0x00, 0x00, 0xc0, 0x00, 0x92, + 0x22, 0xbf, 0x7f, 0x00, 0x00, 0x64, 0xf8, 0xbb, 0x63, 0x0d, 0x00, 0x00, + 0x14, 0x28, 0x64, 0x18, 0x00, 0x64, 0x83, 0x01, 0x40, 0xd8, 0xb7, 0x63, + 0x50, 0x09, 0x58, 0x23, 0x06, 0x00, 0x0c, 0x90, 0x3a, 0x5a, 0x40, 0x60, + 0x7e, 0x39, 0xc1, 0xec, 0x03, 0x3a, 0x0a, 0x00, 0x60, 0xdf, 0x05, 0x00, + 0x9b, 0x05, 0x00, 0xa0, 0x85, 0x92, 0xd2, 0xff, 0x7f, 0xfc, 0x21, 0x48, + 0x0e, 0x00, 0x40, 0x40, 0x00, 0x65, 0xe8, 0xd3, 0x63, 0x00, 0x00, 0x64, + 0x0b, 0x3c, 0xe5, 0x2f, 0x1c, 0xfe, 0x0d, 0x00, 0x00, 0x04, 0x1e, 0x52, + 0x40, 0x90, 0x26, 0xea, 0xff, 0x5f, 0x09, 0x00, 0x00, 0x18, 0x9f, 0x64, + 0x6f, 0xbf, 0x7f, 0x80, 0x00, 0x64, 0xd3, 0xbf, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x10, 0xe0, 0x03, 0x8f, 0xf1, 0x11, 0x10, 0x00, 0x24, 0x40, 0x80, + 0x07, 0xa5, 0xf1, 0x51, 0x10, 0x00, 0x3c, 0x1c, 0x64, 0xc3, 0x07, 0x90, + 0x03, 0xcf, 0xf1, 0xd3, 0x03, 0x90, 0x87, 0xce, 0xf1, 0xe3, 0x07, 0x90, + 0x03, 0xce, 0xf1, 0xf3, 0x03, 0x90, 0x03, 0x14, 0xe0, 0x3f, 0xc3, 0xfe, + 0x47, 0x44, 0x00, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x93, 0x03, 0xbc, 0xfd, + 0x03, 0x04, 0x00, 0x3c, 0xfc, 0xe4, 0xeb, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x08, 0x25, 0x55, 0x0d, 0x00, 0x00, 0x12, 0xbc, 0x1f, 0x03, 0x0c, 0x36, + 0x87, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x3d, 0x00, 0x00, + 0xc0, 0x00, 0x92, 0x12, 0x00, 0x60, 0x08, 0x00, 0x64, 0x82, 0x40, 0x20, + 0x00, 0x3c, 0x23, 0x4f, 0x24, 0x37, 0xec, 0x90, 0x48, 0x12, 0x40, 0x60, + 0x47, 0x10, 0x35, 0x7c, 0x00, 0x48, 0xe6, 0xbf, 0x7f, 0x8b, 0x10, 0x00, + 0xc3, 0xbf, 0x7f, 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, + 0x03, 0x10, 0x8e, 0x24, 0x00, 0x72, 0x40, 0x00, 0x75, 0x0d, 0x00, 0x00, + 0xd4, 0x07, 0x82, 0x00, 0x3c, 0x23, 0x1b, 0x08, 0xe6, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x93, 0x1a, 0x40, 0x20, 0x1a, 0x00, 0x60, 0x03, 0x10, 0x80, + 0x01, 0x00, 0x3c, 0x00, 0x80, 0x8e, 0x40, 0x00, 0x64, 0x7e, 0x40, 0x60, + 0xfd, 0xff, 0xff, 0xb8, 0x7c, 0x87, 0x2e, 0x00, 0x60, 0x82, 0x11, 0xc0, + 0xfd, 0xff, 0xff, 0x3c, 0xfc, 0x85, 0x1e, 0x40, 0x60, 0xa3, 0x0f, 0x90, + 0xfc, 0xf3, 0x63, 0x8f, 0x23, 0x80, 0x24, 0x00, 0x72, 0x80, 0x00, 0x64, + 0x4b, 0x00, 0x60, 0x00, 0x00, 0x64, 0x88, 0x00, 0xc8, 0xfd, 0xff, 0xff, + 0xf8, 0x7c, 0x87, 0x3a, 0x00, 0x60, 0x87, 0x11, 0x80, 0x01, 0xff, 0x03, + 0x4a, 0x00, 0x00, 0x01, 0xff, 0x03, 0x80, 0x80, 0x86, 0x22, 0x40, 0x60, + 0x13, 0x00, 0x80, 0x4f, 0x28, 0x38, 0x00, 0x00, 0x64, 0x3f, 0xa1, 0x3b, + 0xc4, 0x3c, 0x3a, 0x02, 0x0c, 0x80, 0x1f, 0x0c, 0xe6, 0x00, 0x00, 0x64, + 0xfb, 0xbf, 0x7f, 0x00, 0x04, 0x92, 0x1e, 0x00, 0x60, 0x11, 0x10, 0x00, + 0x0c, 0x0a, 0x52, 0xcf, 0x04, 0xd0, 0x11, 0x10, 0x00, 0x44, 0x0d, 0x7e, + 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x03, 0xa0, 0x03, 0x0a, 0x20, 0xe4, + 0x93, 0x04, 0xd0, 0x23, 0x08, 0xb2, 0x00, 0x3c, 0x23, 0x00, 0x04, 0x92, + 0x46, 0x0c, 0x00, 0x26, 0x00, 0x60, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, + 0x4c, 0x0c, 0x2b, 0x0a, 0xe0, 0x00, 0x93, 0x4c, 0xfb, 0x11, 0x10, 0x00, + 0x44, 0x11, 0x7e, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x03, 0xa0, 0x03, + 0x0a, 0x20, 0xe4, 0x4c, 0x10, 0x2b, 0x92, 0xc0, 0x01, 0x07, 0x4d, 0xfb, + 0x23, 0x04, 0xb2, 0x00, 0x3c, 0x23, 0x13, 0x10, 0xe6, 0x47, 0x10, 0x00, + 0x58, 0x14, 0x2b, 0x86, 0x41, 0x20, 0x1e, 0x40, 0x20, 0xa3, 0x0b, 0x90, + 0xf9, 0xff, 0xff, 0xf0, 0xaf, 0x62, 0x8b, 0x23, 0x80, 0x00, 0x18, 0x94, + 0x80, 0x00, 0x92, 0x13, 0x00, 0xfd, 0x80, 0x80, 0x86, 0x04, 0x29, 0x2b, + 0x0f, 0x40, 0xfd, 0xd0, 0x24, 0x2b, 0x0b, 0x44, 0xfb, 0x8b, 0x50, 0xfb, + 0xc0, 0x99, 0x1d, 0x13, 0x14, 0xe6, 0xf9, 0xff, 0xff, 0x0f, 0x05, 0xfe, + 0x0f, 0x28, 0xe5, 0x1a, 0x40, 0x20, 0x20, 0x00, 0xc8, 0x03, 0x00, 0x80, + 0x00, 0x30, 0x26, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x0b, 0x82, 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x04, 0x40, 0x55, + 0x0f, 0x10, 0x35, 0x4b, 0x0c, 0x32, 0xc0, 0x88, 0x3a, 0x72, 0x40, 0x60, + 0x48, 0x02, 0x64, 0xdb, 0xbf, 0x7f, 0x80, 0x9d, 0x1d, 0x08, 0x02, 0xe5, + 0xf9, 0xff, 0xff, 0xc0, 0x97, 0x62, 0x06, 0x0a, 0xc0, 0x40, 0x80, 0x90, + 0x26, 0x40, 0x60, 0x01, 0x00, 0x04, 0x00, 0x20, 0x8e, 0x1a, 0x00, 0x60, + 0x00, 0x74, 0x98, 0x08, 0x08, 0x94, 0x80, 0x9d, 0x1d, 0xf9, 0xff, 0xff, + 0xf8, 0x8f, 0x62, 0x57, 0x05, 0x00, 0xdf, 0x01, 0x01, 0x93, 0x01, 0x80, + 0x3f, 0xa1, 0x3b, 0xfc, 0x17, 0x3a, 0xb2, 0xbf, 0x7f, 0xc0, 0x2b, 0x64, + 0x0b, 0x2c, 0xe5, 0xf5, 0xff, 0xff, 0xef, 0x17, 0xfe, 0x1c, 0x20, 0x64, + 0x0d, 0x00, 0x00, 0x20, 0x1e, 0x64, 0xd7, 0xbf, 0x7f, 0x0b, 0x28, 0xe5, + 0x1a, 0x40, 0x20, 0x20, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x40, 0x30, 0x26, + 0x16, 0x00, 0x60, 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, + 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0x53, 0x10, 0x35, + 0x8f, 0x0c, 0x32, 0x00, 0x8d, 0x3a, 0x0e, 0x40, 0x60, 0x44, 0x02, 0x64, + 0xdb, 0xbf, 0x7f, 0x04, 0x20, 0x64, 0xf5, 0xff, 0xff, 0xd8, 0xf3, 0x63, + 0x0d, 0x00, 0x00, 0x84, 0x1e, 0x4e, 0x40, 0x00, 0x84, 0xc6, 0xbf, 0x5f, + 0x1c, 0xb0, 0x26, 0x76, 0x40, 0x60, 0x00, 0x10, 0x94, 0x0a, 0x40, 0x30, + 0x83, 0x01, 0x52, 0x0b, 0x2c, 0xe5, 0xf5, 0xff, 0xff, 0x8f, 0x1d, 0xfe, + 0x80, 0x9d, 0x1d, 0x08, 0x02, 0xe5, 0xf5, 0xff, 0xff, 0xd8, 0xe7, 0x63, + 0x0e, 0x0a, 0xc0, 0xc0, 0x80, 0x90, 0x26, 0x40, 0x60, 0x01, 0x00, 0x02, + 0x00, 0x20, 0x8e, 0x1a, 0x00, 0x60, 0x10, 0x10, 0x94, 0x0a, 0x41, 0x30, + 0x80, 0x9d, 0x1d, 0xf5, 0xff, 0xff, 0xd0, 0xe3, 0x63, 0x57, 0x05, 0x00, + 0xdf, 0x01, 0x01, 0xbf, 0x01, 0x80, 0xcb, 0xa3, 0x3b, 0xbc, 0x14, 0x3a, + 0xb2, 0xbf, 0x7f, 0x4f, 0xbf, 0x7f, 0x1c, 0x28, 0x64, 0x54, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x20, 0x1e, 0x64, 0xdf, 0xbf, 0x7f, 0x2c, 0x08, 0xc8, + 0x4c, 0x10, 0x5a, 0x8b, 0x50, 0x00, 0x10, 0x0c, 0x7a, 0xf3, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x3b, 0x88, 0xe5, 0x22, 0x40, 0x20, 0x5e, 0x40, 0x20, + 0xab, 0x23, 0x00, 0xc0, 0x89, 0x1d, 0xb3, 0x4f, 0x90, 0xa3, 0x4b, 0x90, + 0xa7, 0x79, 0x60, 0x87, 0x43, 0x81, 0x8b, 0x23, 0x00, 0x03, 0x84, 0xf6, + 0x87, 0x63, 0x80, 0x84, 0x02, 0x78, 0xc2, 0x41, 0x20, 0x97, 0xca, 0xf2, + 0x83, 0x79, 0x60, 0xa6, 0x42, 0x20, 0x58, 0x81, 0x1d, 0x8b, 0x63, 0x80, + 0x8f, 0x73, 0x80, 0x84, 0xc3, 0x73, 0x58, 0x0c, 0xc8, 0xdc, 0x14, 0x3a, + 0x26, 0x00, 0x60, 0x9b, 0x23, 0x00, 0xbf, 0xe9, 0xf2, 0x10, 0x0c, 0x64, + 0xcf, 0x8f, 0xf2, 0x20, 0x0c, 0xca, 0x84, 0x12, 0x78, 0x83, 0x96, 0xf2, + 0x1b, 0xe4, 0xf2, 0x8b, 0x23, 0x00, 0xac, 0xa8, 0x48, 0x1e, 0x40, 0x40, + 0x87, 0x23, 0x00, 0x12, 0x42, 0x20, 0xbf, 0xc6, 0xf2, 0x18, 0x3c, 0xca, + 0x8c, 0xfe, 0x5c, 0x04, 0x0d, 0x78, 0x82, 0x41, 0x20, 0x3f, 0x8c, 0xe5, + 0x3b, 0x88, 0xe5, 0x22, 0x40, 0x20, 0x5e, 0x40, 0x20, 0xab, 0x23, 0x00, + 0xc0, 0x89, 0x1d, 0xb3, 0x4f, 0x90, 0xa3, 0x4b, 0x90, 0xfb, 0x78, 0x60, + 0x87, 0x43, 0x81, 0x8b, 0x23, 0x00, 0x03, 0x84, 0xf6, 0x87, 0x63, 0x80, + 0x84, 0x02, 0x78, 0xc2, 0x41, 0x20, 0x97, 0xca, 0xf2, 0xd7, 0x78, 0x60, + 0xa6, 0x42, 0x20, 0x58, 0x81, 0x1d, 0x8b, 0x63, 0x80, 0x8f, 0x73, 0x80, + 0x84, 0xc3, 0x73, 0x58, 0x0c, 0xc8, 0xdc, 0x14, 0x3a, 0x26, 0x00, 0x60, + 0x9b, 0x23, 0x00, 0xbf, 0xe9, 0xf2, 0x10, 0x0c, 0x64, 0xcf, 0x8f, 0xf2, + 0x20, 0x0c, 0xca, 0x84, 0x12, 0x78, 0x83, 0x96, 0xf2, 0x1b, 0xe4, 0xf2, + 0x8b, 0x23, 0x00, 0xac, 0xa8, 0x48, 0x1e, 0x40, 0x40, 0x87, 0x23, 0x00, + 0x12, 0x42, 0x20, 0xbf, 0xc6, 0xf2, 0x18, 0x3c, 0xca, 0x8c, 0xfe, 0x5c, + 0x04, 0x0d, 0x78, 0x82, 0x41, 0x20, 0x3f, 0x8c, 0xe5, 0x1f, 0x88, 0xe5, + 0x2e, 0x40, 0x20, 0xda, 0x42, 0x20, 0x82, 0x40, 0x20, 0x4a, 0x00, 0xe0, + 0x84, 0x00, 0x66, 0x12, 0x00, 0x60, 0x80, 0x01, 0xe4, 0x83, 0xed, 0xf2, + 0x1f, 0x8c, 0xe5, 0xa8, 0x90, 0x66, 0x5f, 0x04, 0x00, 0x12, 0x40, 0x60, + 0x84, 0x09, 0x78, 0xc6, 0x41, 0x20, 0xd7, 0xbf, 0x7f, 0x4e, 0x04, 0xe0, + 0xdc, 0x10, 0x66, 0x0a, 0x00, 0x60, 0x5f, 0x08, 0x00, 0xc6, 0x01, 0xe0, + 0x6c, 0x94, 0x66, 0x0a, 0x40, 0x60, 0xdf, 0x05, 0x00, 0x88, 0x02, 0x74, + 0xfe, 0x41, 0x20, 0xd4, 0x07, 0x5e, 0x53, 0xc1, 0x01, 0x0c, 0x05, 0x3b, + 0x1e, 0x00, 0x60, 0x70, 0x95, 0x66, 0x6e, 0x40, 0x40, 0xde, 0x43, 0x20, + 0x28, 0x00, 0x64, 0x94, 0x02, 0x64, 0x4b, 0x00, 0x60, 0xd2, 0x05, 0xe0, + 0x57, 0xc1, 0x01, 0xcf, 0x94, 0xf2, 0x1f, 0xc1, 0x01, 0xc8, 0x85, 0x3b, + 0x0a, 0x40, 0x60, 0xcc, 0x48, 0x24, 0xde, 0x43, 0x20, 0xb7, 0xbf, 0x7f, + 0xde, 0x05, 0xe0, 0x53, 0xc0, 0x01, 0xab, 0x92, 0xf2, 0xc7, 0xc1, 0x01, + 0x48, 0x04, 0x3b, 0x0a, 0x00, 0x60, 0xa8, 0x56, 0x24, 0xde, 0x43, 0x20, + 0xfe, 0x41, 0x20, 0xc4, 0x07, 0x5e, 0x4b, 0xc0, 0x01, 0x8c, 0x04, 0x3b, + 0xd2, 0xbf, 0x7f, 0xd2, 0x01, 0xe0, 0x3c, 0x00, 0x64, 0x24, 0xb5, 0x66, + 0x0e, 0x40, 0x60, 0xdf, 0x05, 0x00, 0x7c, 0x00, 0x64, 0xd6, 0x01, 0xe0, + 0x64, 0x35, 0x66, 0x0e, 0x00, 0x60, 0xdf, 0x05, 0x00, 0xff, 0x07, 0x00, + 0xca, 0x01, 0xe0, 0x98, 0xb0, 0x66, 0x52, 0x43, 0x60, 0x98, 0x30, 0x3b, + 0x6a, 0x00, 0x60, 0x80, 0xac, 0x66, 0x8e, 0x42, 0x60, 0x80, 0x2c, 0x3b, + 0x36, 0x00, 0x60, 0x88, 0xa4, 0x66, 0xaa, 0x40, 0x60, 0x80, 0xa8, 0x66, + 0x3e, 0x40, 0x40, 0x0c, 0x52, 0x64, 0x84, 0x28, 0x66, 0xc4, 0x04, 0x70, + 0x07, 0x00, 0x80, 0x17, 0x10, 0x00, 0xa3, 0x0f, 0x90, 0x0c, 0x02, 0x64, + 0x7f, 0x02, 0x60, 0x88, 0x30, 0x66, 0x7a, 0x01, 0x60, 0x88, 0xb0, 0x3b, + 0xae, 0x42, 0x60, 0x90, 0x2c, 0x66, 0xba, 0x02, 0x60, 0x83, 0x09, 0xb0, + 0x16, 0x40, 0x20, 0xf3, 0x02, 0x60, 0x98, 0x38, 0x66, 0xe2, 0x00, 0x60, + 0x98, 0xb8, 0x3b, 0x16, 0x40, 0x60, 0xa0, 0x30, 0x66, 0x96, 0x01, 0x60, + 0x80, 0xb8, 0x66, 0x9f, 0xbf, 0x7f, 0xb8, 0xb8, 0x66, 0x5a, 0x42, 0x60, + 0x80, 0x3c, 0x66, 0x02, 0x02, 0x60, 0xa8, 0xb8, 0x66, 0xc2, 0xff, 0x5f, + 0xc8, 0x03, 0x86, 0x08, 0x52, 0x64, 0xda, 0x01, 0x60, 0xa3, 0x0b, 0x90, + 0x17, 0x10, 0x00, 0x88, 0x02, 0x64, 0x07, 0x00, 0x80, 0x87, 0x00, 0x60, + 0x27, 0x00, 0x80, 0x20, 0x52, 0x64, 0x88, 0x02, 0x74, 0x17, 0x10, 0x00, + 0x46, 0x02, 0xe0, 0xa3, 0x23, 0x90, 0x82, 0x41, 0x20, 0xb4, 0x0b, 0x64, + 0xe4, 0xcb, 0x63, 0x83, 0x81, 0xf2, 0x03, 0x34, 0xb0, 0x33, 0x04, 0x00, + 0x88, 0x02, 0x74, 0x02, 0x43, 0x20, 0x46, 0x06, 0xe0, 0xa3, 0x23, 0x90, + 0xc4, 0xcb, 0x63, 0x0f, 0x83, 0xf2, 0xc3, 0x34, 0xb0, 0xdb, 0x04, 0x00, + 0x82, 0x41, 0x20, 0x88, 0x02, 0x74, 0x46, 0x0a, 0xe0, 0xa3, 0x23, 0x90, + 0xe4, 0xc7, 0x63, 0x87, 0x81, 0xf2, 0x43, 0x34, 0xb0, 0x5b, 0x04, 0x00, + 0x0c, 0x00, 0x64, 0x46, 0x0e, 0xe0, 0xa3, 0x23, 0x90, 0x88, 0x02, 0x64, + 0x82, 0x41, 0x20, 0xc0, 0xc7, 0x63, 0x33, 0x01, 0x60, 0x07, 0x00, 0x80, + 0xcb, 0x68, 0xfb, 0x17, 0x10, 0x00, 0x40, 0x80, 0x86, 0x42, 0x68, 0xab, + 0x86, 0x41, 0x20, 0x5c, 0x08, 0x72, 0x0c, 0x04, 0x5e, 0xc4, 0x80, 0x66, + 0x12, 0x40, 0x60, 0xdf, 0x05, 0x00, 0x42, 0x41, 0x20, 0x9b, 0xbd, 0x7f, + 0x84, 0x0d, 0x78, 0xe7, 0xbf, 0x7f, 0x44, 0x3c, 0x78, 0x0e, 0x41, 0x20, + 0x5a, 0x40, 0x20, 0xc0, 0xcf, 0xc9, 0x3c, 0x04, 0x5e, 0xd3, 0x44, 0x00, + 0xc4, 0x03, 0x66, 0xe6, 0xbf, 0x7f, 0x00, 0x08, 0x64, 0xce, 0x40, 0x20, + 0xd2, 0x40, 0x20, 0x10, 0x10, 0xca, 0x84, 0x01, 0x78, 0xbb, 0xbf, 0x7f, + 0x23, 0x00, 0x80, 0x17, 0x10, 0x00, 0x33, 0x16, 0x00, 0x24, 0x52, 0x64, + 0x04, 0x06, 0x5e, 0xa3, 0x27, 0x90, 0x08, 0x04, 0x64, 0x82, 0x41, 0x20, + 0x8c, 0x00, 0x64, 0xe0, 0xbb, 0x63, 0x8b, 0x81, 0xf2, 0x40, 0x0b, 0x64, + 0x83, 0x00, 0xb0, 0x2c, 0xa3, 0x48, 0x9b, 0x04, 0x00, 0xd2, 0xff, 0x7f, + 0x06, 0x03, 0xe0, 0xa3, 0x27, 0x90, 0x8c, 0x00, 0x64, 0xb3, 0x00, 0x60, + 0xc8, 0x83, 0x86, 0x30, 0x52, 0x64, 0x2a, 0x40, 0x60, 0x07, 0x00, 0x80, + 0x17, 0x10, 0x00, 0x7c, 0x7c, 0xbb, 0x12, 0x00, 0x60, 0x50, 0x0b, 0x64, + 0x84, 0x11, 0x78, 0x44, 0x00, 0x25, 0xa3, 0x33, 0x90, 0x03, 0xbf, 0x7f, + 0x27, 0x10, 0x80, 0x17, 0x20, 0x00, 0x23, 0x00, 0x80, 0x7c, 0xfe, 0xbb, + 0x16, 0x40, 0x60, 0x40, 0x0b, 0x75, 0x84, 0x05, 0x78, 0x20, 0x60, 0x49, + 0x24, 0x24, 0x6f, 0xa3, 0x33, 0x90, 0x88, 0x02, 0x64, 0x06, 0x42, 0x20, + 0x82, 0x41, 0x20, 0xfc, 0xbb, 0x63, 0x9b, 0x81, 0xf2, 0xfb, 0xbe, 0x7f, + 0xa3, 0x0b, 0x90, 0x17, 0x20, 0x00, 0x88, 0x02, 0x64, 0x07, 0x00, 0x80, + 0xe3, 0xbf, 0x7f, 0xc8, 0x83, 0x86, 0x10, 0x52, 0x64, 0x84, 0x2c, 0x66, + 0x26, 0x40, 0x60, 0x17, 0x10, 0x00, 0x07, 0x00, 0x80, 0x02, 0x41, 0x20, + 0x0a, 0x00, 0x40, 0x03, 0x85, 0x00, 0xa3, 0x03, 0x90, 0x08, 0x04, 0x64, + 0x83, 0xbe, 0x7f, 0x17, 0x20, 0x00, 0x07, 0x00, 0x80, 0x3e, 0x41, 0x20, + 0x0a, 0x00, 0x40, 0x3f, 0x85, 0x00, 0xa3, 0x3f, 0x90, 0x08, 0x04, 0x64, + 0x93, 0xbf, 0x7f, 0x0c, 0x52, 0x64, 0x06, 0x00, 0xc0, 0x17, 0x10, 0x00, + 0xa3, 0x0f, 0x90, 0x0c, 0x01, 0x64, 0xc7, 0xbf, 0x7f, 0x3c, 0x52, 0x64, + 0x06, 0x00, 0xe0, 0x17, 0x10, 0x00, 0xa3, 0x3f, 0x90, 0xff, 0xbe, 0x7f, + 0x16, 0x40, 0x20, 0x60, 0x21, 0x5a, 0x27, 0x10, 0x80, 0xb0, 0xe0, 0xc9, + 0x10, 0x52, 0x64, 0x44, 0x06, 0x5e, 0xa3, 0x13, 0x90, 0x82, 0x41, 0x20, + 0x8c, 0x00, 0x64, 0x08, 0x04, 0x64, 0xcc, 0xa7, 0x63, 0x9b, 0x81, 0xf2, + 0x23, 0x46, 0x00, 0xdb, 0xbf, 0x7f, 0x0b, 0x00, 0x80, 0x17, 0x10, 0x00, + 0x83, 0x09, 0xb0, 0x9b, 0x05, 0x00, 0x1f, 0xbe, 0x7f, 0x03, 0x00, 0xe0, + 0x87, 0x43, 0x80, 0x8b, 0x93, 0x00, 0xf4, 0xb7, 0x63, 0x07, 0x04, 0xe0, + 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, 0x00, 0x91, 0x55, 0x09, 0x00, 0x00, + 0x04, 0x02, 0x81, 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, 0x00, 0x90, 0x55, + 0x09, 0x00, 0x00, 0x24, 0x02, 0x81, 0x00, 0x3c, 0x23, 0x17, 0x81, 0xe6, + 0x05, 0x00, 0x00, 0x00, 0x89, 0x55, 0x38, 0x00, 0xc8, 0x00, 0x40, 0x64, + 0x05, 0x00, 0x00, 0x27, 0xf1, 0xf8, 0x18, 0x00, 0xca, 0x80, 0x01, 0xe4, + 0x9b, 0x05, 0x00, 0x05, 0x00, 0x00, 0x18, 0x8a, 0x55, 0x40, 0x5c, 0x64, + 0xa3, 0x03, 0x90, 0x83, 0x83, 0x00, 0xb3, 0x1b, 0x90, 0x9b, 0x05, 0x00, + 0xfc, 0xf7, 0x63, 0x87, 0xe3, 0x82, 0x8f, 0x83, 0x00, 0x8b, 0xb3, 0x05, + 0xc3, 0x80, 0xf2, 0x05, 0x00, 0x00, 0x44, 0x19, 0x81, 0xe0, 0xaf, 0x63, + 0x11, 0x10, 0x00, 0x08, 0x0b, 0x4e, 0x80, 0x00, 0x84, 0x3e, 0x00, 0x60, + 0x11, 0x10, 0x00, 0x10, 0x0b, 0x64, 0x32, 0x09, 0xc0, 0x00, 0x83, 0x90, + 0xfa, 0xff, 0x7f, 0xb3, 0x83, 0x00, 0x04, 0x00, 0x64, 0x3c, 0x07, 0x5e, + 0xc0, 0x03, 0x66, 0x0e, 0x00, 0x60, 0x40, 0xc0, 0x92, 0x12, 0x40, 0x60, + 0x11, 0x10, 0x00, 0x74, 0x05, 0x82, 0x17, 0x85, 0xe6, 0x44, 0x3c, 0x78, + 0xdf, 0xbf, 0x7f, 0x23, 0x00, 0xe0, 0x04, 0x5e, 0x64, 0xb3, 0x03, 0x90, + 0xa3, 0x07, 0x90, 0x83, 0x43, 0x90, 0xf4, 0xf3, 0x63, 0x11, 0x10, 0x00, + 0x00, 0x21, 0x55, 0x3c, 0x7c, 0xb3, 0x12, 0x00, 0x60, 0x8b, 0x43, 0x80, + 0x11, 0x10, 0x00, 0x24, 0x48, 0x80, 0x27, 0x04, 0xe0, 0x03, 0x00, 0xe0, + 0x03, 0xae, 0xf1, 0x09, 0x0c, 0x00, 0x00, 0xb8, 0x64, 0xe3, 0x02, 0xf2, + 0x01, 0x10, 0x00, 0x04, 0x00, 0x64, 0xfd, 0x1f, 0x00, 0xcc, 0xff, 0x64, + 0x4a, 0xfc, 0x00, 0xd2, 0xfc, 0x00, 0x86, 0x70, 0x20, 0x0b, 0x41, 0x01, + 0x14, 0x10, 0x72, 0x08, 0x00, 0x64, 0x80, 0x23, 0x64, 0x17, 0x6e, 0x60, + 0x01, 0x80, 0xff, 0x08, 0x00, 0x64, 0x01, 0x80, 0xff, 0x04, 0x03, 0x64, + 0x00, 0x24, 0x64, 0x03, 0x04, 0xe0, 0xfb, 0x2d, 0x60, 0x0f, 0x3a, 0xe5, + 0x01, 0x12, 0x00, 0x04, 0x40, 0x64, 0x43, 0x00, 0x80, 0x3c, 0x7c, 0xb3, + 0xfa, 0xbf, 0x7f, 0x67, 0x00, 0x80, 0x83, 0x23, 0x00, 0x01, 0x12, 0x00, + 0x04, 0x80, 0x64, 0x09, 0x00, 0x00, 0x1c, 0x9f, 0x64, 0x67, 0x32, 0x34, + 0x4b, 0x06, 0x00, 0x4b, 0xf8, 0x7f, 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, + 0x40, 0x91, 0xb4, 0x92, 0x41, 0x60, 0x8b, 0x23, 0x00, 0x2f, 0x8a, 0xf6, + 0xc4, 0x02, 0x66, 0x82, 0x01, 0x40, 0xef, 0x46, 0x00, 0x08, 0x00, 0x74, + 0x00, 0xae, 0x1d, 0xf1, 0xff, 0xff, 0xf4, 0x9b, 0x62, 0x1a, 0x40, 0x20, + 0xc8, 0x02, 0xc8, 0x0d, 0x00, 0x00, 0x8c, 0x1e, 0x4e, 0xe0, 0x80, 0x84, + 0x56, 0x41, 0x60, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x0d, 0x00, 0x00, + 0x2a, 0xbc, 0x1f, 0x0b, 0x10, 0x38, 0x0c, 0x00, 0x64, 0x2e, 0x00, 0x40, + 0x4c, 0x00, 0x64, 0x08, 0x01, 0x64, 0x80, 0xae, 0x1d, 0xf1, 0xff, 0xff, + 0xdc, 0x8f, 0x62, 0x13, 0x10, 0x38, 0x04, 0x51, 0x2b, 0x98, 0xc1, 0x9f, + 0x9b, 0x45, 0xfb, 0x48, 0x00, 0x75, 0xbf, 0x11, 0x3a, 0x90, 0x14, 0x2b, + 0xc4, 0x07, 0x2b, 0x82, 0xbe, 0x0f, 0x08, 0x38, 0x2b, 0x7f, 0x50, 0xfb, + 0xee, 0x3e, 0x00, 0xd0, 0x2a, 0x2b, 0xc7, 0x4b, 0xfb, 0x43, 0x50, 0xfb, + 0x3e, 0x44, 0x20, 0xc8, 0x24, 0x2b, 0xef, 0x4b, 0xfb, 0xc3, 0x2d, 0x90, + 0x09, 0x00, 0x00, 0xa3, 0x0e, 0xbf, 0x09, 0x00, 0x00, 0x2c, 0x9d, 0x64, + 0xc3, 0x01, 0x80, 0x12, 0xb8, 0x00, 0x08, 0x81, 0x92, 0x5e, 0x40, 0x60, + 0xc3, 0x11, 0x50, 0xf1, 0xff, 0xff, 0xf4, 0xb3, 0x62, 0xcf, 0x01, 0x80, + 0xe3, 0x80, 0xdb, 0xc3, 0x0d, 0x90, 0xe4, 0xb0, 0x26, 0x0e, 0x40, 0x40, + 0xc2, 0x41, 0x20, 0x67, 0x65, 0x60, 0x01, 0xf0, 0x00, 0xbe, 0x01, 0x00, + 0x01, 0x60, 0x00, 0xc0, 0x03, 0x92, 0x0d, 0x00, 0x00, 0x10, 0x1e, 0x64, + 0x92, 0x00, 0x60, 0x9b, 0x11, 0x38, 0x98, 0x18, 0xc8, 0x44, 0x00, 0x64, + 0x0b, 0x05, 0xa0, 0x4f, 0x00, 0x60, 0x08, 0x05, 0x86, 0x1a, 0x00, 0x60, + 0xc1, 0x7f, 0x00, 0x06, 0x00, 0x00, 0x41, 0x09, 0x00, 0x40, 0x80, 0x92, + 0x12, 0x40, 0x60, 0xc2, 0x41, 0x20, 0x17, 0x65, 0x60, 0xaf, 0xbf, 0x7f, + 0x30, 0x01, 0x92, 0xa6, 0xbf, 0x7f, 0xc2, 0x41, 0x20, 0x1f, 0x65, 0x60, + 0x9b, 0xbf, 0x7f, 0xc3, 0x42, 0x84, 0x6c, 0xc3, 0x73, 0xc3, 0x5e, 0x94, + 0x0e, 0x09, 0xc0, 0xc0, 0x00, 0x90, 0x0e, 0x00, 0x60, 0xdf, 0x11, 0x00, + 0x57, 0x05, 0x00, 0x23, 0x06, 0x00, 0x1c, 0xa6, 0x3a, 0x5e, 0xfe, 0x7f, + 0x4b, 0x3d, 0xfe, 0x80, 0x0c, 0xa8, 0xfc, 0xd7, 0x63, 0x0f, 0x3e, 0xe5, + 0x01, 0x90, 0xff, 0xc3, 0x03, 0x00, 0x01, 0xe0, 0xff, 0x00, 0x80, 0x8e, + 0xc2, 0xff, 0x7f, 0x84, 0x00, 0x64, 0x6b, 0xbf, 0x7f, 0x0b, 0x38, 0xe5, + 0x09, 0x00, 0x00, 0x18, 0x9d, 0x64, 0x15, 0x0c, 0x00, 0x40, 0x45, 0x64, + 0x83, 0x01, 0x90, 0x90, 0x01, 0xe7, 0x84, 0x55, 0xe4, 0x54, 0x00, 0x65, + 0x11, 0x10, 0x00, 0x20, 0x1e, 0x64, 0x11, 0x10, 0x00, 0x24, 0x20, 0x64, + 0x0d, 0x00, 0x00, 0x1c, 0x1e, 0x64, 0x01, 0x00, 0xa0, 0x28, 0x00, 0x64, + 0xf5, 0xff, 0xff, 0xd8, 0x9b, 0x62, 0xf1, 0xff, 0xff, 0xf4, 0xd7, 0x62, + 0x93, 0x11, 0x80, 0xd8, 0xd3, 0xc9, 0x86, 0x85, 0xea, 0x90, 0x01, 0xe7, + 0x40, 0x00, 0x66, 0x36, 0x00, 0x60, 0x48, 0x85, 0x40, 0x03, 0x0a, 0x90, + 0x43, 0x12, 0x90, 0x11, 0x10, 0x00, 0xe7, 0xe3, 0xf8, 0x84, 0x55, 0xe4, + 0x92, 0x42, 0x20, 0xc2, 0x41, 0x20, 0xc0, 0xd3, 0x1f, 0x68, 0xc3, 0xc9, + 0x23, 0x53, 0x60, 0xaf, 0xbf, 0x7f, 0x11, 0x10, 0x00, 0xc7, 0xe3, 0xf8, + 0x11, 0x10, 0x00, 0x07, 0xe4, 0xf8, 0x11, 0x10, 0x00, 0xe7, 0xe3, 0xf8, + 0xd7, 0xbf, 0x7f, 0x46, 0x3c, 0x00, 0x50, 0x04, 0x2b, 0x13, 0x8d, 0xd2, + 0x8f, 0x23, 0x80, 0x8a, 0xbc, 0x0f, 0x84, 0x38, 0x2b, 0x13, 0x45, 0xfb, + 0xca, 0x3c, 0x00, 0x8c, 0x28, 0x2b, 0x07, 0x4d, 0xfb, 0x03, 0x04, 0x90, + 0x00, 0x3c, 0x23, 0x2b, 0x38, 0xe5, 0xe4, 0xcb, 0x63, 0x48, 0x62, 0x64, + 0x01, 0x80, 0xff, 0x1c, 0x00, 0x55, 0x80, 0x00, 0x64, 0xc4, 0x00, 0x64, + 0x11, 0x10, 0x00, 0x27, 0xe4, 0xf8, 0xa3, 0x0b, 0x90, 0xb3, 0x07, 0x90, + 0x93, 0x43, 0x90, 0x83, 0x43, 0x90, 0x54, 0x6b, 0x64, 0x60, 0x6e, 0x64, + 0xd8, 0x31, 0x31, 0xf8, 0xb7, 0x63, 0x10, 0x6f, 0x64, 0xcc, 0x66, 0x64, + 0xa3, 0x13, 0x90, 0xb3, 0x0f, 0x90, 0x24, 0x70, 0x64, 0x0d, 0x00, 0x00, + 0xea, 0xbd, 0x1f, 0x5c, 0x72, 0x64, 0xd4, 0xb7, 0x63, 0xb3, 0x17, 0x90, + 0xa3, 0x23, 0x90, 0x14, 0xaf, 0x64, 0x63, 0x3d, 0x04, 0xc0, 0xb7, 0x63, + 0xb3, 0x1b, 0x90, 0xa3, 0x27, 0x90, 0xfd, 0x0f, 0x00, 0x9a, 0x81, 0x1f, + 0xec, 0xb3, 0x63, 0xb3, 0x2b, 0x90, 0xa3, 0x1f, 0x90, 0x0d, 0x00, 0x00, + 0x1c, 0x1e, 0x64, 0x68, 0x00, 0x65, 0xd4, 0xb3, 0x63, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x64, 0xc0, 0xbf, 0x63, 0x11, 0x10, 0x00, 0x47, 0x81, 0xf8, + 0x11, 0x10, 0x00, 0x4f, 0x81, 0xf8, 0x11, 0x10, 0x00, 0x57, 0x81, 0xf8, + 0x11, 0x10, 0x00, 0x5f, 0x81, 0xf8, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, + 0x06, 0x5c, 0x00, 0x11, 0x10, 0x00, 0x44, 0x05, 0x7e, 0x01, 0x01, 0x00, + 0x40, 0x00, 0x64, 0xc0, 0xbb, 0x63, 0x31, 0x06, 0x00, 0x08, 0x5e, 0x64, + 0x8c, 0x74, 0x64, 0xb3, 0x0b, 0x90, 0xa3, 0x0f, 0x90, 0x83, 0x5b, 0x90, + 0x09, 0x00, 0x00, 0x18, 0x9d, 0x64, 0xa7, 0x21, 0x00, 0xe0, 0xab, 0x63, + 0xcb, 0x63, 0x60, 0x01, 0x02, 0x00, 0x00, 0x00, 0x64, 0xc8, 0xb7, 0x63, + 0xc3, 0x51, 0x52, 0x8f, 0xf0, 0x7f, 0x83, 0x11, 0x58, 0x87, 0xf0, 0x7f, + 0x50, 0x00, 0x64, 0xc7, 0x11, 0xb0, 0xc8, 0x01, 0xe5, 0xfb, 0x15, 0xa2, + 0xc3, 0x61, 0xa2, 0xf3, 0x65, 0x90, 0xbb, 0x29, 0xa5, 0x83, 0x51, 0xb5, + 0x3d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x80, 0x10, 0x64, 0x11, 0x10, 0x00, + 0x47, 0xe1, 0xf8, 0x10, 0x00, 0xca, 0x50, 0x06, 0x7a, 0x3c, 0x40, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x84, 0x64, 0x80, 0x00, 0x64, 0x0d, 0x0b, 0x07, + 0x48, 0x52, 0x64, 0xab, 0x3d, 0xa5, 0xb3, 0x01, 0xb5, 0x93, 0x49, 0x94, + 0xa3, 0x55, 0xa4, 0x0d, 0x00, 0x00, 0xe8, 0x84, 0x64, 0x05, 0x00, 0x00, + 0xe0, 0xc2, 0x64, 0x0d, 0x00, 0x00, 0x64, 0x52, 0x64, 0x0c, 0x80, 0x64, + 0x93, 0x6b, 0x90, 0x83, 0x63, 0x90, 0xb3, 0x27, 0x90, 0xa3, 0x0f, 0x90, + 0xec, 0x9f, 0x63, 0x09, 0x00, 0x00, 0x50, 0xb8, 0x64, 0x09, 0x00, 0x00, + 0x07, 0x85, 0x01, 0x43, 0x48, 0x0b, 0x0b, 0x7c, 0x19, 0xab, 0x69, 0xa4, + 0xf9, 0xff, 0xff, 0xab, 0xa4, 0x17, 0x83, 0xa1, 0xa4, 0x2d, 0x00, 0x00, + 0xa3, 0x2e, 0x0b, 0xb3, 0x65, 0xa4, 0xf9, 0xff, 0xff, 0x27, 0x9e, 0x1b, + 0xf5, 0xff, 0xff, 0x4f, 0x3a, 0x1b, 0xbb, 0x51, 0xa4, 0xa3, 0xa9, 0xa4, + 0xf1, 0xff, 0xff, 0xd3, 0x94, 0x07, 0x05, 0x00, 0x00, 0x6b, 0xa1, 0x02, + 0x8b, 0x85, 0xa4, 0xab, 0xa1, 0xa4, 0x0d, 0x00, 0x00, 0x07, 0x2d, 0x08, + 0x11, 0x00, 0x00, 0xa3, 0xbe, 0x15, 0x93, 0x81, 0xa4, 0xb3, 0xa5, 0xa4, + 0xf9, 0xff, 0xff, 0x43, 0x18, 0x1b, 0x8b, 0xc5, 0xa4, 0xf9, 0xff, 0xff, + 0x27, 0xba, 0x19, 0x05, 0x00, 0x00, 0x47, 0x9d, 0x1c, 0x9b, 0x89, 0xa4, + 0xbb, 0x8d, 0xa4, 0xf9, 0xff, 0xff, 0x0b, 0xa0, 0x10, 0xf9, 0xff, 0xff, + 0x4f, 0x1e, 0x16, 0x93, 0xc1, 0xa4, 0xf9, 0xff, 0xff, 0x43, 0xa0, 0x12, + 0x83, 0xd1, 0xa4, 0x9b, 0xc9, 0xa4, 0xf5, 0xff, 0xff, 0xd3, 0x9c, 0x14, + 0xf9, 0xff, 0xff, 0x0b, 0x3c, 0x11, 0x05, 0x00, 0x00, 0x57, 0x15, 0x06, + 0xbb, 0xcd, 0xa4, 0x83, 0x11, 0xa5, 0xa3, 0x09, 0xa5, 0x8b, 0x05, 0xa5, + 0x9b, 0x01, 0xa5, 0xa3, 0xe9, 0xa4, 0xab, 0xe1, 0xa4, 0xb3, 0xe5, 0xa4, + 0x93, 0x15, 0xa5, 0xff, 0x4f, 0x60, 0x01, 0x03, 0x00, 0x00, 0x00, 0x64, + 0xd4, 0x9b, 0x63, 0xe8, 0xa3, 0x63, 0x01, 0x04, 0x00, 0x00, 0x00, 0x64, + 0xc4, 0x9b, 0x63, 0xdc, 0x87, 0x62, 0x01, 0x05, 0x00, 0x00, 0x00, 0x64, + 0xf4, 0x97, 0x63, 0x00, 0x00, 0x64, 0xfb, 0x61, 0x60, 0x01, 0x06, 0x00, + 0x00, 0x00, 0x64, 0xe0, 0x97, 0x63, 0x00, 0x00, 0x64, 0x63, 0x61, 0x60, + 0x01, 0x07, 0x00, 0x00, 0x00, 0x64, 0xcc, 0x97, 0x63, 0x01, 0x08, 0x00, + 0x00, 0x00, 0x64, 0xc0, 0x97, 0x63, 0x00, 0x04, 0x64, 0x84, 0x01, 0x64, + 0xc7, 0xef, 0x7f, 0x4f, 0xf8, 0x7f, 0xc2, 0x41, 0x20, 0xd0, 0xbf, 0x63, + 0x01, 0x80, 0x00, 0x08, 0x00, 0x75, 0x1d, 0x10, 0x00, 0x04, 0x0c, 0x80, + 0xcc, 0x3f, 0x64, 0x1d, 0x10, 0x00, 0xa4, 0x0d, 0x80, 0x70, 0x38, 0xc4, + 0x92, 0x40, 0x20, 0x01, 0x04, 0x01, 0x00, 0x01, 0x5b, 0x06, 0x4c, 0x20, + 0x03, 0x05, 0x90, 0x03, 0x21, 0x80, 0xfd, 0x00, 0xc0, 0x06, 0xbc, 0x1f, + 0x40, 0x10, 0xa8, 0x23, 0x01, 0x90, 0x07, 0x11, 0x80, 0x43, 0x3c, 0xfe, + 0x04, 0x40, 0xa8, 0x13, 0x05, 0x90, 0x03, 0x31, 0x80, 0xc1, 0xff, 0xff, + 0x06, 0x00, 0x00, 0x42, 0x50, 0x20, 0x33, 0x01, 0x90, 0x07, 0x21, 0x80, + 0xc1, 0xff, 0xff, 0x42, 0x00, 0x00, 0x23, 0x01, 0x90, 0x07, 0x11, 0x80, + 0x43, 0x48, 0xd0, 0x13, 0x05, 0x90, 0x8b, 0x80, 0x00, 0x00, 0x3c, 0x23, + 0x0d, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x31, 0x06, 0x00, 0x08, 0x5e, 0x64, + 0x63, 0x00, 0x90, 0x73, 0x08, 0x90, 0x00, 0x3c, 0x23, 0x40, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, + 0x60, 0x00, 0xe7, 0xcc, 0x66, 0x64, 0xc2, 0x40, 0x20, 0x0a, 0x00, 0xe0, + 0xcf, 0x04, 0x00, 0x84, 0x00, 0x66, 0xf2, 0xbf, 0x7f, 0x3f, 0x48, 0x00, + 0x4c, 0x00, 0x64, 0x98, 0x02, 0x64, 0xc4, 0x83, 0x86, 0x1e, 0x40, 0x60, + 0xe1, 0xf5, 0x05, 0xfc, 0x3c, 0xba, 0xd0, 0xff, 0x5c, 0x0e, 0x00, 0x60, + 0x04, 0x91, 0x66, 0x16, 0x40, 0x60, 0x01, 0x20, 0x30, 0xbc, 0x00, 0x64, + 0x73, 0x3c, 0x90, 0x0f, 0x0c, 0xe6, 0x02, 0x3d, 0x00, 0x53, 0x20, 0x80, + 0x08, 0x4c, 0x24, 0xcc, 0x58, 0x24, 0x03, 0x89, 0xf2, 0x63, 0x00, 0x90, + 0xbb, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, + 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, + 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x08, 0x23, 0x55, 0x0d, 0x00, 0x00, + 0x0c, 0x24, 0x55, 0x63, 0x08, 0x90, 0x73, 0x0c, 0x90, 0x00, 0x3c, 0x23, + 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, + 0x08, 0x1e, 0x52, 0x8e, 0x04, 0x00, 0x63, 0x0c, 0x90, 0x00, 0x3c, 0x23, + 0x0d, 0x00, 0x00, 0x08, 0x43, 0x75, 0x00, 0x20, 0x64, 0x30, 0x00, 0xca, + 0xd0, 0x10, 0x5a, 0x1c, 0x10, 0x72, 0x63, 0x08, 0x90, 0x00, 0x3c, 0x23, + 0x8b, 0x04, 0x00, 0x40, 0x04, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, + 0x00, 0x3c, 0x23, 0x40, 0x00, 0x64, 0x09, 0x00, 0x00, 0x34, 0xc2, 0x7f, + 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, 0x84, 0xf1, 0x52, 0x40, 0x00, 0x66, + 0x16, 0x00, 0x60, 0x90, 0x04, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x13, 0x82, + 0x00, 0x3c, 0x23, 0x0b, 0x20, 0x80, 0x0f, 0x30, 0x80, 0x80, 0x08, 0x2b, + 0x0d, 0x00, 0x00, 0x33, 0x0c, 0x94, 0x00, 0x3c, 0x23, 0x0b, 0x28, 0xe5, + 0x0b, 0x20, 0x80, 0xc8, 0x09, 0xc8, 0x0f, 0x30, 0x80, 0x10, 0x00, 0x64, + 0xda, 0xfc, 0x07, 0x14, 0x18, 0xc4, 0x97, 0x90, 0xf6, 0x3f, 0x99, 0xf2, + 0x13, 0x05, 0x00, 0xc3, 0x17, 0xb0, 0xfd, 0xff, 0x1f, 0xce, 0x00, 0x18, + 0xdc, 0x80, 0xa2, 0xcf, 0x01, 0x80, 0x1e, 0x30, 0xe0, 0x7c, 0x00, 0x64, + 0xd0, 0x9f, 0x40, 0xec, 0x10, 0x3a, 0x16, 0x00, 0x60, 0xdc, 0x04, 0x2b, + 0x2c, 0x9d, 0x3a, 0x8b, 0x10, 0x00, 0x8e, 0x40, 0x40, 0xc0, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0xab, 0x00, 0x60, 0x05, 0x00, 0x00, + 0xc0, 0x00, 0xae, 0x92, 0x40, 0x20, 0x2a, 0x00, 0x40, 0xa3, 0xc9, 0xf2, + 0xde, 0x40, 0x20, 0x30, 0x1c, 0xca, 0x16, 0x01, 0xe0, 0x3f, 0xa1, 0xf2, + 0xcf, 0x44, 0x00, 0x13, 0x05, 0x00, 0xc3, 0x17, 0xb0, 0x4b, 0x00, 0x60, + 0x05, 0x00, 0x00, 0x10, 0x00, 0x64, 0x1e, 0x41, 0x20, 0x50, 0x1c, 0xca, + 0x05, 0x00, 0x00, 0xbf, 0x00, 0x00, 0xe3, 0xd3, 0xf2, 0x26, 0x02, 0xe0, + 0x05, 0x00, 0x00, 0x97, 0x01, 0x00, 0x63, 0xd1, 0xf2, 0x13, 0x45, 0x00, + 0x03, 0x26, 0xb0, 0xfd, 0xff, 0xff, 0xcf, 0x00, 0x00, 0x5a, 0x41, 0x20, + 0xca, 0x43, 0x20, 0x14, 0xcf, 0x73, 0x09, 0x00, 0x00, 0x0c, 0x9d, 0x64, + 0xff, 0x00, 0x80, 0x03, 0x30, 0x80, 0x63, 0x3c, 0x90, 0xd3, 0x00, 0x90, + 0xc7, 0x40, 0xb5, 0x20, 0x08, 0xc8, 0x06, 0xfc, 0x07, 0xd3, 0x04, 0x90, + 0x0f, 0x2c, 0xe5, 0xc4, 0x54, 0xe4, 0xfb, 0xbf, 0x7f, 0x09, 0x00, 0x00, + 0x80, 0xf1, 0x52, 0x00, 0x00, 0x66, 0x16, 0x00, 0x60, 0x88, 0x04, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, 0x00, 0x3c, 0x23, 0x44, 0x00, 0x64, + 0x09, 0x00, 0x00, 0x3c, 0xc6, 0x7f, 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, + 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x07, 0x82, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x08, 0x40, 0x52, + 0x63, 0x08, 0x90, 0x00, 0x3c, 0x23, 0x13, 0x00, 0xe0, 0x02, 0x10, 0xc0, + 0xa3, 0x07, 0x90, 0xeb, 0xea, 0x7f, 0x87, 0x23, 0x80, 0x2c, 0x00, 0x72, + 0x8c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0f, 0x82, 0x17, 0x04, 0xe0, + 0x03, 0x00, 0x80, 0x0b, 0xa0, 0x3b, 0x63, 0x08, 0x90, 0xf3, 0xbf, 0x7f, + 0x13, 0x00, 0xe0, 0x02, 0x10, 0xc0, 0xa3, 0x07, 0x90, 0xb3, 0xea, 0x7f, + 0x87, 0x23, 0x80, 0x2c, 0x00, 0x72, 0x8c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x0f, 0x82, 0x17, 0x04, 0xe0, 0x03, 0x00, 0x80, 0x0a, 0x04, 0x00, + 0x63, 0x08, 0x90, 0xf3, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x02, 0x10, 0xc0, + 0x5a, 0x40, 0x20, 0x7b, 0xea, 0x7f, 0x2c, 0x00, 0x72, 0x84, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, 0x0f, 0x0c, 0xe6, 0x04, 0x00, 0x64, + 0xe9, 0xff, 0xff, 0xd0, 0xf7, 0x62, 0x00, 0x60, 0x31, 0xa3, 0x01, 0x90, + 0xeb, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x02, 0x10, 0xc0, 0x5a, 0x40, 0x20, + 0x3f, 0xea, 0x7f, 0x2c, 0x00, 0x72, 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x07, 0x82, 0x0f, 0x0c, 0xe6, 0x04, 0x00, 0x64, 0xe9, 0xff, 0xff, + 0xdc, 0xeb, 0x62, 0x00, 0x40, 0x31, 0xa3, 0x01, 0x90, 0xeb, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x91, 0x1a, 0x00, 0x60, 0x80, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x03, 0x82, 0x00, 0x00, 0x64, 0x0f, 0x0c, 0xe6, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x53, 0xea, 0x7f, 0x0d, 0x00, 0x00, + 0xd4, 0x03, 0x82, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, 0x82, 0x11, 0xc0, + 0x0b, 0x0c, 0xe6, 0xbb, 0xa9, 0x7f, 0x03, 0x10, 0xe6, 0x0d, 0x00, 0x00, + 0x5b, 0xe0, 0x41, 0xdc, 0xfb, 0x63, 0x86, 0x09, 0xc0, 0x40, 0x00, 0x84, + 0x5e, 0x00, 0x40, 0x0f, 0x00, 0x80, 0xd2, 0xb8, 0x00, 0x3f, 0x79, 0x00, + 0xfd, 0xff, 0xff, 0xf0, 0xff, 0x8f, 0x02, 0x48, 0xa0, 0x88, 0x41, 0x6c, + 0x3e, 0x40, 0x60, 0x04, 0x04, 0x64, 0xe9, 0xff, 0xff, 0xd8, 0xcb, 0x62, + 0x8a, 0x09, 0xc0, 0x80, 0x00, 0x90, 0x26, 0x00, 0x60, 0x41, 0xff, 0xff, + 0x44, 0x18, 0x64, 0x0c, 0x44, 0x24, 0xb9, 0x76, 0x02, 0xc3, 0xa0, 0x06, + 0x04, 0x19, 0x64, 0xcb, 0x66, 0x60, 0xe3, 0x01, 0x90, 0x07, 0x14, 0xe6, + 0x03, 0x10, 0xe6, 0x58, 0x80, 0x1d, 0xe8, 0xf3, 0x63, 0x0d, 0x00, 0x00, + 0x84, 0x1e, 0x4e, 0x40, 0x00, 0x90, 0x1a, 0x00, 0x60, 0xcb, 0x21, 0x80, + 0x84, 0x08, 0x2b, 0xe9, 0xff, 0xff, 0xc4, 0xbb, 0x62, 0xa3, 0x01, 0x90, + 0x07, 0x14, 0xe6, 0x03, 0x10, 0xe6, 0x18, 0x84, 0x1d, 0xf4, 0xef, 0x63, + 0x0d, 0x00, 0x00, 0x84, 0x1e, 0x4e, 0x40, 0x00, 0x90, 0x2a, 0x00, 0x60, + 0x8a, 0x19, 0xc0, 0xbf, 0x21, 0x80, 0x8e, 0xbc, 0x1f, 0xd3, 0x10, 0x00, + 0xc4, 0x53, 0x1f, 0x44, 0x08, 0x2b, 0xe9, 0xff, 0xff, 0xf8, 0xab, 0x62, + 0xe3, 0x01, 0x90, 0x07, 0x14, 0xe6, 0x0b, 0x08, 0xe6, 0x1a, 0x40, 0x20, + 0xf0, 0xeb, 0x63, 0x0d, 0x00, 0x00, 0x84, 0x1e, 0x4e, 0x40, 0x00, 0x90, + 0x1e, 0x00, 0x60, 0x8f, 0x21, 0x80, 0x8b, 0x31, 0x80, 0xc4, 0x08, 0x2b, + 0x0b, 0x0c, 0xe6, 0xe9, 0xff, 0xff, 0x87, 0x04, 0xfe, 0x0f, 0x0c, 0xe6, + 0x0b, 0x08, 0xe6, 0x1a, 0x40, 0x20, 0xf8, 0xe7, 0x63, 0x0d, 0x00, 0x00, + 0x84, 0x1e, 0x4e, 0x40, 0x00, 0x90, 0x2e, 0x00, 0x60, 0x8a, 0x19, 0xc0, + 0xbf, 0x21, 0x80, 0x8e, 0xbc, 0x1f, 0x8b, 0x31, 0x80, 0xd3, 0x10, 0x00, + 0xc4, 0x53, 0x1f, 0x44, 0x08, 0x2b, 0x0b, 0x0c, 0xe6, 0xe9, 0xff, 0xff, + 0xd7, 0x02, 0xfe, 0x0f, 0x0c, 0xe6, 0x0b, 0x28, 0xe5, 0x06, 0x10, 0xc0, + 0x1e, 0x40, 0x20, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, + 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, 0x0f, 0x2c, 0xe5, + 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x8f, 0xe8, 0x7f, + 0x0d, 0x00, 0x00, 0x20, 0x1e, 0x64, 0x0b, 0x02, 0xa0, 0x00, 0x80, 0x90, + 0xde, 0xff, 0x7f, 0xc2, 0x21, 0xe0, 0xcc, 0x01, 0x64, 0x1c, 0x00, 0x3b, + 0x3e, 0x00, 0x40, 0xc2, 0x11, 0xc0, 0xe7, 0xe7, 0x7f, 0x16, 0x40, 0x20, + 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, + 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, + 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, 0x4c, 0x02, 0x64, 0x0b, 0x0e, 0xa0, + 0x8f, 0xbf, 0x7f, 0xc6, 0x19, 0xc0, 0xda, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, + 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, 0xe5, 0xff, 0xff, 0xf8, 0xef, 0x63, + 0x12, 0x0a, 0xc0, 0x00, 0x81, 0x90, 0x66, 0xff, 0x7f, 0x88, 0x01, 0x3b, + 0x0a, 0x5c, 0x00, 0x32, 0x00, 0x60, 0x9a, 0x05, 0x00, 0x98, 0x05, 0x2b, + 0x8b, 0x58, 0xfb, 0xc2, 0x19, 0xc0, 0x3e, 0xbc, 0x1f, 0xc4, 0x17, 0x2b, + 0x47, 0x30, 0x04, 0x42, 0x41, 0x20, 0x0b, 0x2c, 0xe5, 0xe5, 0xff, 0xff, + 0xd7, 0x1c, 0xfe, 0x94, 0x81, 0x66, 0x0e, 0x40, 0x60, 0x8a, 0x50, 0x20, + 0xd7, 0xbf, 0x7f, 0x9c, 0x01, 0x66, 0xce, 0xbf, 0x7f, 0x8a, 0x44, 0x20, + 0xc7, 0xbf, 0x7f, 0x0b, 0x18, 0xe5, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, + 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, 0x0f, 0x1c, 0xe5, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x73, 0xe7, 0x7f, 0x0d, 0x00, 0x00, + 0x1c, 0x1e, 0x64, 0xcb, 0x01, 0xa0, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, + 0x82, 0x21, 0xe0, 0x3c, 0x00, 0x3b, 0xc0, 0x01, 0x64, 0x3e, 0x00, 0x40, + 0x82, 0x11, 0xc0, 0xcb, 0xe6, 0x7f, 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, + 0x0f, 0x00, 0x80, 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, + 0x08, 0x40, 0x55, 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, + 0x12, 0x00, 0x60, 0x40, 0x02, 0x64, 0xcb, 0x01, 0xa0, 0x8f, 0xbf, 0x7f, + 0x86, 0x19, 0xc0, 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, + 0xe5, 0xff, 0xff, 0xf0, 0xbb, 0x63, 0xd2, 0x09, 0xc0, 0x00, 0x81, 0x90, + 0x6a, 0xff, 0x7f, 0x86, 0x19, 0xc0, 0xbe, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, + 0x0f, 0x3c, 0xd2, 0xd0, 0x14, 0x2b, 0x0a, 0x40, 0x20, 0x07, 0x31, 0x04, + 0x42, 0x41, 0x20, 0x0b, 0x1c, 0xe5, 0xe5, 0xff, 0xff, 0x8f, 0x16, 0xfe, + 0x0b, 0x18, 0xe5, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x0b, 0x82, 0x0f, 0x1c, 0xe5, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, + 0x84, 0x00, 0x65, 0x87, 0xe6, 0x7f, 0x0d, 0x00, 0x00, 0x1c, 0x1e, 0x64, + 0xcb, 0x01, 0xa0, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, 0x82, 0x21, 0xe0, + 0x3c, 0x00, 0x3b, 0xc0, 0x01, 0x64, 0x3e, 0x00, 0x40, 0x82, 0x11, 0xc0, + 0xdf, 0xe5, 0x7f, 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, + 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, + 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, + 0x40, 0x02, 0x64, 0xcb, 0x01, 0xa0, 0x8f, 0xbf, 0x7f, 0x86, 0x19, 0xc0, + 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, 0xe5, 0xff, 0xff, + 0xec, 0x8f, 0x63, 0xd2, 0x09, 0xc0, 0x00, 0x81, 0x90, 0x6a, 0xff, 0x7f, + 0x86, 0x19, 0xc0, 0xbe, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, 0x0f, 0xbc, 0xd3, + 0xd0, 0x14, 0x2b, 0x0a, 0x40, 0x20, 0x07, 0x31, 0x04, 0x42, 0x41, 0x20, + 0x0b, 0x1c, 0xe5, 0xe5, 0xff, 0xff, 0x07, 0x11, 0xfe, 0x03, 0x10, 0xe6, + 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, 0x44, 0x00, 0x65, 0x1e, 0x40, 0x20, + 0x1a, 0x20, 0xe0, 0xb7, 0xe5, 0x7f, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, + 0x00, 0x00, 0x90, 0x1e, 0x00, 0x60, 0x87, 0x39, 0xfe, 0x7c, 0x80, 0xb2, + 0x16, 0x40, 0x60, 0x04, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, + 0x07, 0x14, 0xe6, 0xc3, 0x11, 0x80, 0x03, 0x10, 0x3d, 0x03, 0x14, 0xe6, + 0x27, 0xa6, 0x7f, 0x03, 0x10, 0xe6, 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, + 0x44, 0x00, 0x65, 0x1e, 0x40, 0x20, 0x1a, 0x20, 0xe0, 0x5f, 0xe5, 0x7f, + 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x00, 0x90, 0x1e, 0x00, 0x60, + 0x87, 0x39, 0xfe, 0x4c, 0x80, 0xb2, 0x16, 0x40, 0x60, 0x04, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, 0x07, 0x14, 0xe6, 0xc3, 0x11, 0x80, + 0x03, 0x10, 0x3d, 0x03, 0x14, 0xe6, 0x07, 0xa6, 0x7f, 0x0b, 0x08, 0xe6, + 0x5a, 0x40, 0x20, 0x07, 0x10, 0x80, 0x4b, 0x10, 0x3d, 0x28, 0x08, 0xc8, + 0x4c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0f, 0x82, 0x0f, 0x0c, 0xe6, + 0x07, 0x20, 0x80, 0x58, 0x00, 0xb6, 0x1a, 0x00, 0x60, 0x00, 0x00, 0x64, + 0xe9, 0xff, 0xff, 0xc8, 0x9f, 0x62, 0xa3, 0x01, 0x90, 0xe3, 0xbf, 0x7f, + 0xc0, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0xd9, 0xff, 0xff, + 0x40, 0x3c, 0x64, 0xe7, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, + 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, 0x0f, 0x0c, 0xe6, 0xc0, 0x00, 0x75, + 0xe9, 0xff, 0xff, 0xd8, 0x8f, 0x62, 0x21, 0x00, 0x00, 0x08, 0x98, 0x64, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x00, 0x48, 0x24, 0x83, 0x61, 0x60, + 0xa3, 0x01, 0x90, 0xd7, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, + 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x4c, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x0f, 0x82, 0x0f, 0x0c, 0xe6, 0x00, 0x00, 0x74, + 0xe5, 0xff, 0xff, 0xe8, 0xff, 0x63, 0x41, 0xff, 0xff, 0x44, 0x18, 0x64, + 0x08, 0x44, 0x24, 0xb9, 0x76, 0x02, 0x83, 0xa0, 0x06, 0x04, 0x19, 0x64, + 0x2f, 0x61, 0x60, 0xa3, 0x01, 0x90, 0xd3, 0xbf, 0x7f, 0x0b, 0x18, 0xe5, + 0x18, 0x84, 0x1d, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0xeb, 0xe3, 0x7f, + 0x16, 0x40, 0x20, 0xb0, 0x00, 0xc8, 0x04, 0x15, 0x64, 0xe5, 0xff, 0xff, + 0xfc, 0xab, 0x62, 0x87, 0x21, 0x80, 0xf9, 0xff, 0xfb, 0x0e, 0xbc, 0x1f, + 0x40, 0x00, 0x92, 0x0b, 0x00, 0xfd, 0x98, 0x68, 0x2b, 0x90, 0x28, 0x2b, + 0xc3, 0x58, 0xfb, 0x1b, 0x50, 0xfb, 0x8a, 0x41, 0x20, 0x43, 0x51, 0x51, + 0xe5, 0xff, 0xff, 0xdc, 0xa7, 0x62, 0x05, 0x00, 0x04, 0x9a, 0x01, 0x00, + 0x80, 0x81, 0x92, 0x07, 0x40, 0xfd, 0xe3, 0x05, 0x90, 0x0f, 0x1c, 0xe5, + 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, + 0x77, 0xe3, 0x7f, 0x48, 0x00, 0xc8, 0x04, 0x15, 0x64, 0xe5, 0xff, 0xff, + 0xec, 0x97, 0x62, 0x05, 0x00, 0x04, 0x06, 0x00, 0x00, 0x40, 0x00, 0x92, + 0x0b, 0x00, 0xfd, 0xa3, 0x09, 0x90, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, + 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0x3f, 0xe3, 0x7f, 0x1a, 0x40, 0x20, + 0x48, 0x00, 0xc8, 0x04, 0x15, 0x64, 0xe5, 0xff, 0xff, 0xf8, 0x8b, 0x62, + 0x08, 0x00, 0x99, 0x83, 0x51, 0x51, 0x0b, 0x0c, 0xe6, 0xe5, 0xff, 0xff, + 0x77, 0x01, 0xfe, 0x0f, 0x0c, 0xe6, 0x1b, 0x28, 0xe5, 0x17, 0x10, 0x80, + 0x1a, 0x40, 0x20, 0x57, 0x11, 0x3d, 0x7c, 0x01, 0x86, 0x03, 0x00, 0xfd, + 0xa3, 0x03, 0xb0, 0x26, 0x00, 0x60, 0x28, 0x14, 0xc8, 0x7c, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x3f, 0x82, 0x1f, 0x2c, 0xe5, 0x00, 0x00, 0x64, + 0xd7, 0xe2, 0x7f, 0xd0, 0xc3, 0xc9, 0x9f, 0x21, 0x80, 0x79, 0xfe, 0xff, + 0x20, 0x58, 0x64, 0xc6, 0xbd, 0x07, 0x48, 0x60, 0x24, 0xb9, 0x76, 0x02, + 0x83, 0xa0, 0x06, 0xbd, 0x00, 0x00, 0xc4, 0xe7, 0x64, 0xd3, 0x5f, 0x60, + 0xd3, 0x21, 0x34, 0x0e, 0xbc, 0x1f, 0x00, 0x61, 0x24, 0xbd, 0x00, 0x00, + 0xc4, 0xe7, 0x64, 0xb9, 0x76, 0x02, 0x03, 0xa0, 0x06, 0xd8, 0x40, 0x2b, + 0xaf, 0x5f, 0x60, 0x92, 0x23, 0xe0, 0x06, 0xbc, 0x1f, 0x8b, 0x45, 0xfb, + 0x42, 0x41, 0x20, 0x00, 0xe1, 0x26, 0x45, 0x00, 0x44, 0x8e, 0x40, 0x20, + 0x02, 0x40, 0xa0, 0xa3, 0x0f, 0x90, 0x5f, 0xe2, 0x7f, 0x8b, 0x23, 0x80, + 0x04, 0x15, 0x64, 0x1b, 0x2c, 0xe5, 0xe1, 0xff, 0xff, 0xaf, 0x1c, 0xfe, + 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x1a, 0x40, 0x20, 0x57, 0xe2, 0x7f, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, + 0x00, 0x00, 0x90, 0x42, 0x00, 0x60, 0x82, 0x11, 0xc0, 0xc3, 0xe1, 0x7f, + 0x1a, 0x40, 0x20, 0x48, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x4a, 0xbc, 0x00, + 0x8c, 0x80, 0x92, 0x16, 0x40, 0x60, 0x67, 0xe4, 0x7f, 0x82, 0x41, 0x20, + 0x0b, 0x0c, 0xe6, 0x9f, 0xa3, 0x7f, 0x80, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x03, 0x82, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1a, 0x40, 0x20, 0xef, 0xe1, 0x7f, + 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x00, 0x84, 0x3e, 0x00, 0x40, + 0x82, 0x11, 0xc0, 0x5b, 0xe1, 0x7f, 0x60, 0x00, 0xc8, 0x0b, 0x00, 0x80, + 0x8e, 0xbc, 0x00, 0xcc, 0x80, 0x92, 0x22, 0x40, 0x60, 0x92, 0x21, 0xe0, + 0x0c, 0x01, 0x66, 0x0e, 0x00, 0x60, 0x0b, 0x0c, 0xe6, 0x37, 0xa3, 0x7f, + 0x0b, 0x0c, 0xe6, 0xeb, 0xa3, 0x7f, 0x0f, 0x0c, 0xe6, 0x03, 0x10, 0xe6, + 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1e, 0x40, 0x20, + 0x8b, 0xe1, 0x7f, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x00, 0x90, + 0x5a, 0x00, 0x60, 0xc2, 0x11, 0xc0, 0xf7, 0xe0, 0x7f, 0x1a, 0x40, 0x20, + 0x78, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x4a, 0xbc, 0x00, 0x8c, 0x80, 0x92, + 0x2e, 0x40, 0x60, 0xce, 0x19, 0xc0, 0x08, 0x00, 0x64, 0xc6, 0xbc, 0x1f, + 0x7b, 0xe2, 0x7f, 0xd2, 0x19, 0xc0, 0x48, 0x00, 0x64, 0x82, 0x41, 0x20, + 0x06, 0xbd, 0x1f, 0x03, 0x14, 0xe6, 0x63, 0xa2, 0x7f, 0xc0, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x07, 0x14, 0xe6, 0x0b, 0x08, 0xe6, + 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1a, 0x40, 0x20, + 0x0b, 0xe1, 0x7f, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x00, 0x90, + 0x42, 0x00, 0x60, 0x82, 0x11, 0xc0, 0x77, 0xe0, 0x7f, 0x50, 0x00, 0xc8, + 0x0b, 0x00, 0x80, 0x8e, 0xbc, 0x00, 0xcc, 0x80, 0x92, 0x1a, 0x40, 0x60, + 0x92, 0x19, 0xc0, 0x8a, 0x21, 0xe0, 0x06, 0xbd, 0x1f, 0x0b, 0x0c, 0xe6, + 0xfb, 0xa1, 0x7f, 0xc0, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, + 0x0f, 0x0c, 0xe6, 0x4b, 0x28, 0xe5, 0x1a, 0x28, 0xc0, 0x1e, 0x38, 0xc0, + 0x0a, 0x30, 0xc0, 0x17, 0x10, 0x80, 0x80, 0x01, 0x86, 0xc0, 0x81, 0x86, + 0x05, 0x00, 0x00, 0x9a, 0x2d, 0xa0, 0x01, 0x00, 0x00, 0xde, 0xf1, 0xba, + 0x22, 0x20, 0xc0, 0x83, 0x8b, 0x90, 0xd3, 0xe9, 0x7f, 0x40, 0x86, 0x64, + 0xa3, 0x03, 0x90, 0x57, 0x11, 0x3d, 0xd7, 0xe9, 0x7f, 0x87, 0x83, 0x80, + 0x0c, 0x93, 0x64, 0xb3, 0x5f, 0x90, 0xa3, 0x5b, 0x90, 0x93, 0x47, 0x90, + 0x83, 0x63, 0x90, 0xb3, 0x17, 0x90, 0xa3, 0x0f, 0x90, 0xb3, 0xe9, 0x7f, + 0x93, 0x83, 0x80, 0x7c, 0x00, 0x64, 0x24, 0x14, 0x72, 0xdc, 0x19, 0x3a, + 0x32, 0x00, 0x60, 0xfc, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x3f, 0x82, + 0x0d, 0x00, 0x00, 0x88, 0x1e, 0x4e, 0x40, 0xa1, 0x64, 0xa3, 0x03, 0x90, + 0xb3, 0x0b, 0x90, 0x7b, 0xe9, 0x7f, 0x4b, 0x2c, 0xe5, 0x47, 0xa9, 0x7f, + 0x1d, 0x00, 0x00, 0x14, 0x00, 0x64, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0xc0, 0x55, 0x24, 0x83, 0x93, 0x90, 0xf7, 0x5c, 0x60, 0x0d, 0x00, 0x00, + 0x34, 0x80, 0x82, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x80, 0x55, 0x24, + 0xdf, 0x5c, 0x60, 0x8b, 0x83, 0x80, 0x0d, 0x00, 0x00, 0x44, 0x80, 0x82, + 0x03, 0x02, 0x40, 0x7b, 0x47, 0x60, 0x9b, 0xbf, 0x7f, 0x07, 0x20, 0x80, + 0x2c, 0x04, 0x72, 0xc4, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, + 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0xe7, 0x08, 0xfe, + 0x40, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x3c, 0x23, + 0x0b, 0x08, 0xe6, 0x0d, 0x00, 0x00, 0x18, 0x43, 0x64, 0x40, 0x00, 0x64, + 0x09, 0x00, 0x00, 0x34, 0xc2, 0x7f, 0x83, 0x01, 0x58, 0xd7, 0xde, 0x7f, + 0x19, 0x0c, 0x00, 0x8c, 0xd0, 0x64, 0xb3, 0x0d, 0x90, 0x1d, 0x0c, 0x00, + 0xcc, 0x71, 0x64, 0x19, 0x0c, 0x00, 0x04, 0xc6, 0x64, 0x93, 0x8d, 0x90, + 0x1d, 0x0c, 0x00, 0x8c, 0x24, 0x64, 0x19, 0x0c, 0x00, 0x80, 0xbb, 0x64, + 0x93, 0x05, 0x90, 0x93, 0xcd, 0x90, 0x19, 0x0c, 0x00, 0xc4, 0x48, 0x64, + 0x1d, 0x0c, 0x00, 0xcc, 0xda, 0x64, 0x83, 0x41, 0x90, 0x93, 0x45, 0x90, + 0x1d, 0x0c, 0x00, 0x80, 0x3c, 0x64, 0x1d, 0x0c, 0x00, 0x04, 0x0e, 0x64, + 0x83, 0x0d, 0x91, 0x21, 0x0c, 0x00, 0x8c, 0x0b, 0x64, 0x19, 0x0c, 0x00, + 0xd0, 0xdb, 0x64, 0xa3, 0x81, 0x90, 0xb3, 0x85, 0x90, 0x1d, 0x0c, 0x00, + 0x00, 0x2f, 0x64, 0x1d, 0x0c, 0x00, 0x44, 0xca, 0x64, 0xa3, 0x0d, 0x91, + 0x21, 0x0c, 0x00, 0x8c, 0x80, 0x64, 0x19, 0x0c, 0x00, 0x08, 0x2a, 0x64, + 0xa3, 0x11, 0x90, 0xa3, 0xc1, 0x90, 0x1d, 0x0c, 0x00, 0x10, 0x9e, 0x64, + 0x1d, 0x0c, 0x00, 0x80, 0xfc, 0x64, 0xb3, 0xc5, 0x90, 0xa3, 0x4d, 0x91, + 0x19, 0x0c, 0x00, 0x04, 0x54, 0x64, 0x21, 0x0c, 0x00, 0x4c, 0x93, 0x64, + 0x83, 0x09, 0x90, 0x83, 0x91, 0x90, 0x19, 0x0c, 0x00, 0x48, 0x2f, 0x64, + 0x1d, 0x0c, 0x00, 0xd0, 0x17, 0x64, 0xb3, 0x01, 0x91, 0x83, 0x45, 0x91, + 0x21, 0x0c, 0x00, 0x40, 0xab, 0x64, 0x21, 0x0c, 0x00, 0x04, 0x6d, 0x64, + 0x93, 0x8d, 0x91, 0x19, 0x0c, 0x00, 0xcc, 0x69, 0x64, 0xa3, 0x49, 0x90, + 0x83, 0xd1, 0x90, 0x93, 0x09, 0x91, 0x1d, 0x0c, 0x00, 0x50, 0xeb, 0x64, + 0xb3, 0x41, 0x91, 0x83, 0x85, 0x91, 0x19, 0x0c, 0x00, 0x00, 0x5d, 0x64, + 0x19, 0x0c, 0x00, 0xc4, 0x66, 0x64, 0xa3, 0x89, 0x91, 0xb3, 0x89, 0x91, + 0x93, 0xcd, 0x91, 0x19, 0x0c, 0x00, 0x48, 0x32, 0x64, 0x19, 0x0c, 0x00, + 0x4c, 0xaa, 0x64, 0x93, 0x51, 0x91, 0x83, 0xc9, 0x91, 0x21, 0x0c, 0x00, + 0xd0, 0xbe, 0x64, 0x19, 0x0c, 0x00, 0x48, 0x74, 0x64, 0xa3, 0xc1, 0x91, + 0xb3, 0xc5, 0x91, 0x21, 0x0c, 0x00, 0x40, 0xed, 0x64, 0x21, 0x0c, 0x00, + 0x04, 0x31, 0x64, 0x93, 0x0d, 0x92, 0x19, 0x0c, 0x00, 0x4c, 0xb3, 0x64, + 0x83, 0x09, 0x92, 0xa3, 0x11, 0x92, 0xb3, 0x01, 0x92, 0x83, 0x45, 0x92, + 0x21, 0x0c, 0x00, 0x48, 0x1b, 0x64, 0xa3, 0x4d, 0x92, 0x19, 0x0c, 0x00, + 0x90, 0xf7, 0x64, 0x21, 0x0c, 0x00, 0x80, 0x47, 0x64, 0x21, 0x0c, 0x00, + 0x44, 0x3c, 0x64, 0x19, 0x0c, 0x00, 0x8c, 0x49, 0x64, 0x93, 0x49, 0x92, + 0xb3, 0x51, 0x92, 0x83, 0x81, 0x92, 0x93, 0x85, 0x92, 0xb3, 0x4d, 0x90, + 0x09, 0x00, 0x00, 0x37, 0x9e, 0xf8, 0x0f, 0x0c, 0xe6, 0x0b, 0x28, 0xe5, + 0x11, 0x00, 0x00, 0x23, 0x00, 0x40, 0x40, 0x00, 0x86, 0x56, 0x40, 0x20, + 0x41, 0x00, 0x00, 0x22, 0x02, 0x80, 0x09, 0x00, 0x00, 0x18, 0x9f, 0x64, + 0x5c, 0x00, 0x65, 0x83, 0x01, 0x80, 0x3d, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x40, 0x80, 0x92, 0x0e, 0x40, 0x60, 0xc2, 0x41, 0x20, + 0x0f, 0x2c, 0xe5, 0x48, 0x01, 0x92, 0x6e, 0x00, 0x60, 0x3c, 0x7c, 0xbb, + 0x5e, 0x00, 0x60, 0x0b, 0x90, 0x32, 0xac, 0xa4, 0x48, 0x52, 0x40, 0x60, + 0x0e, 0xb8, 0x00, 0xc8, 0x04, 0x92, 0x46, 0x00, 0x60, 0x83, 0x81, 0x50, + 0xdd, 0xff, 0xff, 0xe0, 0xdf, 0x63, 0x83, 0x81, 0x50, 0xdd, 0xff, 0xff, + 0xfc, 0xdb, 0x63, 0x0c, 0xa0, 0x48, 0xf2, 0xff, 0x7f, 0x83, 0xb1, 0x50, + 0xdd, 0xff, 0xff, 0xc0, 0xdb, 0x63, 0x13, 0x40, 0x38, 0x40, 0x01, 0x92, + 0x03, 0x81, 0xf9, 0xc4, 0x81, 0x3a, 0xdf, 0xc1, 0xf9, 0x9b, 0x11, 0x00, + 0x77, 0xbf, 0x7f, 0x44, 0x81, 0x92, 0x9e, 0xff, 0x7f, 0x3c, 0x7c, 0xb3, + 0x93, 0xbf, 0x7f, 0x13, 0x10, 0xe6, 0x1a, 0x40, 0x20, 0x2c, 0x00, 0xc8, + 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x3f, 0x82, 0x17, 0x14, 0xe6, + 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x03, 0x10, 0x8e, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0x0d, 0x00, 0x00, 0x1c, 0x1e, 0x64, 0xdd, 0xff, 0xff, + 0xf8, 0xc7, 0x63, 0xce, 0x01, 0xe0, 0x40, 0xac, 0x64, 0xa3, 0x03, 0x90, + 0x44, 0x00, 0x64, 0x48, 0x98, 0x40, 0x93, 0x4c, 0xfb, 0xc3, 0x11, 0xb0, + 0xbf, 0xe5, 0x7f, 0xdb, 0x99, 0xf2, 0xce, 0x01, 0xe0, 0x86, 0x21, 0xe4, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, 0xc8, 0x00, 0x66, 0x4a, 0x40, 0x22, + 0x13, 0x00, 0xfd, 0xa3, 0x09, 0xb2, 0x27, 0xd0, 0xd3, 0x11, 0x10, 0x00, + 0x44, 0x01, 0x7e, 0x8b, 0xbf, 0x7f, 0x3b, 0x38, 0xe5, 0x09, 0x00, 0x00, + 0x1b, 0xf0, 0x49, 0x14, 0xb2, 0x64, 0x20, 0xb4, 0x64, 0xcd, 0xee, 0xee, + 0x24, 0x33, 0x64, 0x83, 0x01, 0x80, 0x3d, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x40, 0x00, 0x92, 0x0a, 0x00, 0x60, 0x3f, 0x3c, 0xe5, + 0x0b, 0x90, 0x32, 0xac, 0x9c, 0x48, 0xae, 0x40, 0x60, 0x0e, 0xb8, 0x00, + 0xc8, 0x04, 0x92, 0xa2, 0x00, 0x60, 0x83, 0x81, 0x50, 0xdd, 0xff, 0xff, + 0xec, 0xa3, 0x63, 0x83, 0x81, 0x50, 0xdd, 0xff, 0xff, 0xc8, 0xa3, 0x63, + 0x51, 0x00, 0x00, 0x00, 0x80, 0x8a, 0xee, 0xff, 0x7f, 0x83, 0xb1, 0x50, + 0xdd, 0xff, 0xff, 0xc0, 0x9f, 0x63, 0x2c, 0x40, 0x31, 0x24, 0x2c, 0x3a, + 0x2a, 0x40, 0x20, 0x32, 0x00, 0x60, 0x42, 0x42, 0x20, 0xab, 0xe5, 0x7f, + 0x93, 0x01, 0x80, 0x03, 0x25, 0x37, 0x07, 0x11, 0x35, 0x08, 0x40, 0x2b, + 0x83, 0x44, 0xfb, 0x93, 0xe5, 0x7f, 0x8f, 0x01, 0x80, 0xd0, 0x00, 0xa2, + 0x83, 0x11, 0x90, 0xbf, 0x01, 0x80, 0xab, 0x3e, 0xfe, 0xa3, 0x6f, 0x90, + 0x83, 0x6b, 0x90, 0xfc, 0xff, 0xb3, 0xc3, 0x27, 0x37, 0x01, 0x00, 0x00, + 0x4a, 0x71, 0x96, 0x93, 0x4b, 0x90, 0xb3, 0x03, 0x90, 0xa3, 0x23, 0x90, + 0x9f, 0xe4, 0x7f, 0x9b, 0x11, 0x00, 0x2f, 0xbf, 0x7f, 0x0f, 0x28, 0xe5, + 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, 0x1e, 0x40, 0x20, 0x56, 0x40, 0x20, + 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x03, 0x10, 0x8e, + 0x2c, 0x00, 0x72, 0x48, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, + 0x0f, 0x2c, 0xe5, 0x62, 0x40, 0x20, 0xc0, 0x99, 0x1d, 0xe1, 0xff, 0xff, + 0xd4, 0xbf, 0x62, 0x10, 0x02, 0x7a, 0x9b, 0x05, 0x00, 0x9c, 0x01, 0x92, + 0xea, 0xbf, 0x7f, 0xc2, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xc8, 0xf7, 0x63, + 0x63, 0xa1, 0x00, 0x18, 0x00, 0x64, 0xc0, 0x99, 0x1d, 0xdd, 0xff, 0xff, + 0xe8, 0xe3, 0x63, 0x10, 0x42, 0x7a, 0x9b, 0x05, 0x00, 0x90, 0x89, 0x92, + 0xea, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0x1c, 0x25, 0x55, 0x60, 0x10, 0x64, + 0xd8, 0x0a, 0x64, 0xcb, 0x01, 0x80, 0x3d, 0x00, 0x00, 0x86, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x40, 0x00, 0x92, 0x4e, 0x00, 0x40, 0x8e, 0xbc, 0x00, + 0xcc, 0x84, 0x92, 0x36, 0x40, 0x60, 0xc3, 0xb1, 0x50, 0xdd, 0xff, 0xff, + 0xcc, 0xe3, 0x62, 0x13, 0x3c, 0xfe, 0x64, 0x99, 0x1f, 0x43, 0x12, 0x90, + 0xc3, 0xb1, 0x50, 0x9b, 0x09, 0x00, 0xdd, 0xff, 0xff, 0xf8, 0xdb, 0x62, + 0x00, 0x40, 0x31, 0x53, 0x02, 0x90, 0x23, 0x46, 0x00, 0xdf, 0x11, 0x00, + 0x4c, 0xe3, 0x73, 0x58, 0x99, 0x1f, 0xbc, 0x00, 0x65, 0x83, 0x3d, 0x90, + 0x33, 0xbf, 0x7f, 0x2b, 0x38, 0xe5, 0x1e, 0x40, 0x20, 0x01, 0xcc, 0x00, + 0x00, 0x00, 0x64, 0x33, 0xe4, 0x7f, 0xc2, 0x41, 0x20, 0xdd, 0xff, 0xff, + 0xf4, 0xd7, 0x63, 0x17, 0x3c, 0xfe, 0xc4, 0x05, 0x2b, 0x0d, 0x00, 0x00, + 0x73, 0xc0, 0xa1, 0x42, 0x41, 0x20, 0x0f, 0xe4, 0x7f, 0x00, 0x17, 0xc8, + 0x0d, 0x00, 0x00, 0x40, 0x0d, 0x64, 0x48, 0x41, 0x24, 0xdd, 0x06, 0x00, + 0x83, 0x80, 0x0e, 0x04, 0xfa, 0x64, 0xd7, 0x56, 0x60, 0x22, 0x40, 0x20, + 0x01, 0xcc, 0x00, 0x40, 0x00, 0x64, 0xdf, 0xe3, 0x7f, 0x02, 0x42, 0x20, + 0xd7, 0xe3, 0x7f, 0xc2, 0x41, 0x20, 0xe1, 0xff, 0xff, 0xf8, 0x8f, 0x62, + 0x1b, 0x3c, 0xfe, 0x01, 0xcc, 0x00, 0x80, 0x00, 0x64, 0xbb, 0xe3, 0x7f, + 0x82, 0x41, 0x20, 0xb3, 0xe3, 0x7f, 0x83, 0x63, 0x90, 0x21, 0x00, 0x00, + 0x20, 0x98, 0x64, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x80, 0x61, 0x24, + 0x7f, 0x56, 0x60, 0xcc, 0xce, 0x64, 0xa3, 0x0f, 0x90, 0xb3, 0x03, 0x90, + 0x28, 0x04, 0x64, 0xcb, 0xe2, 0x7f, 0x05, 0x00, 0x00, 0x10, 0x8b, 0x55, + 0xc2, 0x41, 0x20, 0x00, 0x01, 0x92, 0xa6, 0x02, 0x82, 0x47, 0xe5, 0xf2, + 0xdd, 0xff, 0xff, 0xcc, 0xc3, 0x63, 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, + 0xd8, 0xeb, 0x63, 0xc2, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xf8, 0xf7, 0x63, + 0x27, 0x3c, 0xfe, 0x01, 0xcc, 0x00, 0xc0, 0x00, 0x64, 0x3b, 0xe3, 0x7f, + 0x42, 0x42, 0x20, 0x33, 0xe3, 0x7f, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x40, 0x62, 0x24, 0x0b, 0x56, 0x60, 0x44, 0xd7, 0x64, 0xa3, 0x07, 0x90, + 0xb3, 0x03, 0x90, 0x5b, 0xe2, 0x7f, 0x01, 0xcc, 0x00, 0x00, 0x01, 0x64, + 0x07, 0xe3, 0x7f, 0x83, 0xe5, 0xf2, 0x18, 0x60, 0x24, 0x1d, 0x00, 0x00, + 0x83, 0x01, 0x50, 0xdb, 0x55, 0x60, 0x22, 0x40, 0x20, 0xeb, 0xe2, 0x7f, + 0x05, 0x00, 0x00, 0x08, 0x8b, 0x55, 0x50, 0xdc, 0x64, 0x83, 0x63, 0x90, + 0xa3, 0x13, 0x90, 0x80, 0x80, 0x92, 0x8e, 0x42, 0x82, 0xb3, 0x0f, 0x90, + 0x0f, 0xe2, 0x7f, 0x15, 0x01, 0x00, 0xbc, 0x7d, 0xb3, 0x32, 0x00, 0x60, + 0xc0, 0x95, 0x1d, 0xdd, 0xff, 0xff, 0xf0, 0x9f, 0x63, 0x80, 0x07, 0x64, + 0xd9, 0xff, 0xff, 0xfc, 0xc7, 0x63, 0x01, 0xcc, 0x00, 0x40, 0x01, 0x64, + 0x97, 0xe2, 0x7f, 0x40, 0x00, 0x64, 0x2f, 0x3c, 0xe5, 0x01, 0xcc, 0x00, + 0xc0, 0x3f, 0x64, 0x83, 0xe2, 0x7f, 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, + 0xf8, 0xbf, 0x63, 0x00, 0x00, 0x64, 0xe3, 0xbf, 0x7f, 0xaf, 0x89, 0xe5, + 0x1a, 0x40, 0x20, 0x0d, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x93, 0xc7, 0x92, + 0x06, 0x00, 0xe0, 0x48, 0x58, 0x48, 0x12, 0x00, 0x60, 0x04, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0xaf, 0x8d, 0xe5, 0x05, 0x00, 0x00, 0x0c, 0x8b, 0x55, + 0xa3, 0xd3, 0x82, 0x83, 0x8b, 0x92, 0x1d, 0x00, 0x00, 0x1c, 0x00, 0x64, + 0x8b, 0x09, 0x00, 0x27, 0x08, 0xf8, 0xc0, 0x80, 0x86, 0x10, 0x10, 0x64, + 0x00, 0x5e, 0x24, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x16, 0xc1, 0x80, + 0xef, 0x54, 0x60, 0xaf, 0x83, 0x82, 0xb3, 0xc3, 0x92, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x6b, 0xd6, 0xf2, 0x93, 0xaf, 0x92, 0xc0, 0x5e, 0x24, + 0x94, 0x01, 0x64, 0xcb, 0x54, 0x60, 0x83, 0x83, 0x92, 0xb7, 0xf3, 0x82, + 0x93, 0x05, 0x00, 0x08, 0xfa, 0x64, 0x83, 0x83, 0x82, 0x1c, 0x55, 0x24, + 0x0d, 0x00, 0x00, 0xe3, 0x99, 0x03, 0xa3, 0xe3, 0x92, 0x47, 0xc3, 0xf2, + 0x4c, 0x48, 0x24, 0x88, 0x00, 0x64, 0x93, 0x0f, 0x93, 0x83, 0x0b, 0x93, + 0x93, 0x93, 0x82, 0x80, 0xa5, 0x1d, 0xa3, 0x93, 0x92, 0xdd, 0xff, 0xff, + 0xe8, 0xeb, 0x62, 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, 0xf4, 0x93, 0x63, + 0x82, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xd4, 0xa3, 0x63, 0x37, 0x3c, 0xfe, + 0x93, 0xb7, 0x92, 0x21, 0x00, 0x00, 0x00, 0x98, 0x64, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x1c, 0x00, 0x64, 0x8b, 0x93, 0x82, 0x80, 0x40, 0x24, + 0x3f, 0x54, 0x60, 0x84, 0xe4, 0x64, 0xa3, 0x07, 0x90, 0xb3, 0x03, 0x90, + 0x2e, 0x40, 0x20, 0x8b, 0xe0, 0x7f, 0x82, 0x41, 0x20, 0xfc, 0xaf, 0x63, + 0x82, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xd4, 0xc3, 0x62, 0x93, 0xa3, 0x82, + 0xa3, 0x93, 0x92, 0xc8, 0x01, 0xba, 0x3e, 0x02, 0x60, 0x80, 0x9d, 0x1d, + 0xfc, 0x97, 0x63, 0xbf, 0x83, 0x01, 0xcc, 0x1f, 0x1f, 0xe3, 0xc0, 0xa0, + 0xdf, 0x05, 0x00, 0xec, 0x85, 0x92, 0x93, 0xa3, 0x82, 0xd6, 0xff, 0x7f, + 0x80, 0xa9, 0x1d, 0x83, 0xd3, 0x92, 0xdd, 0xff, 0xff, 0xe4, 0xcb, 0x62, + 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, 0xf0, 0xf3, 0x62, 0x82, 0x41, 0x20, + 0xdd, 0xff, 0xff, 0xd0, 0x83, 0x63, 0x37, 0x3c, 0xfe, 0x21, 0x00, 0x00, + 0x14, 0x98, 0x64, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x40, 0x57, 0x24, + 0x9f, 0x53, 0x60, 0xa3, 0x83, 0x92, 0x00, 0xec, 0x64, 0xa3, 0x03, 0x90, + 0x14, 0x00, 0x64, 0xa3, 0xa3, 0x82, 0xb3, 0x23, 0x90, 0xe3, 0xdf, 0x7f, + 0x82, 0x41, 0x20, 0xd4, 0xa7, 0x63, 0x8b, 0x93, 0x82, 0xa3, 0xc3, 0x82, + 0x87, 0xf4, 0xf2, 0xb3, 0x87, 0x92, 0x8f, 0xb3, 0x82, 0xdc, 0x00, 0xb2, + 0x42, 0x01, 0x60, 0x82, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xc8, 0x9f, 0x62, + 0xa3, 0xc3, 0x82, 0x1c, 0x00, 0x64, 0x83, 0xe3, 0x92, 0xc8, 0x81, 0xba, + 0x8a, 0x41, 0x60, 0x80, 0x9d, 0x1d, 0xf4, 0x8b, 0x63, 0xb3, 0x83, 0x01, + 0x3c, 0x1f, 0x1f, 0xc3, 0x03, 0xa0, 0xdf, 0x05, 0x00, 0xec, 0x05, 0x92, + 0xa3, 0xc3, 0x82, 0xd6, 0xbf, 0x7f, 0x09, 0x00, 0x00, 0x10, 0xe2, 0x64, + 0x83, 0xd3, 0x92, 0x1c, 0x00, 0x64, 0x93, 0xc3, 0x82, 0x83, 0x83, 0x01, + 0x0b, 0x1c, 0xf8, 0x87, 0x23, 0x03, 0x30, 0x09, 0x58, 0x47, 0x1c, 0xf8, + 0xa8, 0x80, 0xac, 0x83, 0xd3, 0x92, 0x46, 0x41, 0x60, 0x7f, 0xc8, 0xf2, + 0xc8, 0x0f, 0xb2, 0x3a, 0x01, 0x60, 0x87, 0xb3, 0x82, 0xa3, 0x0b, 0x93, + 0x83, 0x63, 0x93, 0x20, 0xfa, 0x64, 0xc0, 0x63, 0x24, 0xc3, 0x52, 0x60, + 0x8f, 0x23, 0x83, 0x12, 0x40, 0x20, 0xa3, 0x13, 0x93, 0x06, 0x41, 0x20, + 0xb3, 0x0f, 0x93, 0x03, 0xcf, 0xf2, 0x00, 0x60, 0x24, 0xa3, 0x52, 0x60, + 0x23, 0xb4, 0xf2, 0x21, 0x00, 0x00, 0x08, 0x98, 0x64, 0x00, 0x4a, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x87, 0x52, 0x60, 0x93, 0xc3, 0x82, + 0x8b, 0x23, 0x83, 0x04, 0x05, 0x2b, 0x09, 0x00, 0x00, 0x4f, 0xd0, 0x13, + 0xf3, 0x80, 0x9d, 0xb3, 0x83, 0x90, 0x93, 0x33, 0x83, 0x83, 0xa3, 0x82, + 0x4c, 0xf3, 0x64, 0xa3, 0xa7, 0x90, 0x93, 0xaf, 0x90, 0x83, 0xab, 0x90, + 0xb3, 0x43, 0x90, 0xa3, 0x4b, 0x90, 0x93, 0x53, 0x90, 0x83, 0x73, 0x90, + 0xb3, 0x1f, 0x90, 0xa3, 0x0f, 0x90, 0x97, 0xde, 0x7f, 0x4c, 0x21, 0x37, + 0xa3, 0x43, 0x83, 0xdf, 0x05, 0x00, 0xec, 0x85, 0x92, 0x1e, 0xff, 0x7f, + 0xa3, 0xa3, 0x92, 0x21, 0x00, 0x00, 0x3c, 0x98, 0x64, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x40, 0x7d, 0x24, 0x07, 0x52, 0x60, 0x8a, 0x43, 0x20, + 0x22, 0x40, 0x20, 0x09, 0x00, 0x00, 0x80, 0xe0, 0x5b, 0x93, 0xa3, 0x82, + 0x08, 0x60, 0x7c, 0x83, 0x00, 0x90, 0x0c, 0x15, 0x72, 0x82, 0x41, 0x20, + 0xab, 0x8d, 0xe5, 0x47, 0x10, 0xfe, 0x54, 0x00, 0x64, 0x83, 0x17, 0x93, + 0x47, 0xbd, 0x7f, 0xc7, 0x4d, 0x00, 0x82, 0x41, 0x20, 0xd9, 0xff, 0xff, + 0xe8, 0xc3, 0x63, 0xc3, 0xbd, 0x7f, 0xc7, 0x4d, 0x00, 0x82, 0x41, 0x20, + 0xd9, 0xff, 0xff, 0xec, 0xbf, 0x63, 0x77, 0xbe, 0x7f, 0xa3, 0x23, 0x93, + 0xa3, 0xa3, 0x82, 0x93, 0x4b, 0x90, 0x05, 0x00, 0x00, 0x48, 0x0c, 0x64, + 0xa3, 0xa7, 0x90, 0xa3, 0x63, 0x90, 0x93, 0xaf, 0x90, 0x83, 0x87, 0x90, + 0xb3, 0x6b, 0x90, 0x83, 0x73, 0x90, 0xb3, 0x1f, 0x90, 0xa3, 0x0b, 0x90, + 0xcf, 0xdd, 0x7f, 0xa3, 0x23, 0x83, 0x3f, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x34, 0x1e, 0x64, 0x72, 0x83, 0xc4, 0x6e, 0x3b, 0xc4, 0x87, 0x83, 0x82, + 0xbf, 0xf3, 0x82, 0x83, 0xd3, 0x92, 0x83, 0x13, 0x83, 0x1f, 0xef, 0xf2, + 0xcf, 0x85, 0xf2, 0xc7, 0xfc, 0xf2, 0x37, 0x51, 0x60, 0x1e, 0x40, 0x20, + 0x83, 0x83, 0x82, 0x04, 0xfa, 0x65, 0xcb, 0xc2, 0xf2, 0x80, 0x5c, 0x24, + 0x1f, 0x51, 0x60, 0x93, 0x83, 0x82, 0x07, 0x90, 0xf2, 0xa3, 0x87, 0x92, + 0x40, 0x5d, 0x24, 0x04, 0xfa, 0x64, 0x07, 0x51, 0x60, 0x8f, 0xa3, 0x82, + 0xdf, 0x80, 0xf2, 0x57, 0x9d, 0xf2, 0xfc, 0x16, 0x3a, 0x83, 0xc3, 0x82, + 0x0e, 0x00, 0x60, 0x48, 0x31, 0x37, 0x6e, 0x41, 0x20, 0x87, 0xb3, 0x82, + 0xa3, 0x03, 0x93, 0x83, 0xdf, 0x92, 0x7f, 0xea, 0xf2, 0x25, 0x00, 0x00, + 0x1c, 0xc4, 0x64, 0xc0, 0x5f, 0x24, 0xc7, 0x50, 0x60, 0x8b, 0x93, 0x82, + 0xc6, 0x41, 0x20, 0x21, 0x00, 0x00, 0x14, 0x98, 0x64, 0x23, 0x3e, 0xfe, + 0xd3, 0xca, 0xf2, 0x00, 0x50, 0x24, 0xa7, 0x50, 0x60, 0x1f, 0xa4, 0xf2, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xc0, 0x56, 0x24, 0x93, 0x50, 0x60, + 0x0d, 0x00, 0x00, 0x44, 0x0d, 0x64, 0xa3, 0x87, 0x92, 0xcc, 0x45, 0x24, + 0x2e, 0x40, 0x20, 0x04, 0xfa, 0x64, 0xdd, 0x06, 0x00, 0xc3, 0x80, 0x0e, + 0x73, 0x50, 0x60, 0x93, 0x83, 0x92, 0x8b, 0xc3, 0x82, 0x93, 0xab, 0x90, + 0x83, 0xa7, 0x90, 0x83, 0x93, 0x82, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0xb3, 0x43, 0x90, 0x80, 0x54, 0x24, 0x47, 0x50, 0x60, 0x05, 0x00, 0x00, + 0x50, 0x22, 0x64, 0xa3, 0x43, 0x90, 0x83, 0x63, 0x90, 0xa3, 0x13, 0x90, + 0x93, 0x6f, 0x90, 0xb3, 0x1f, 0x90, 0x87, 0xdc, 0x7f, 0x05, 0x00, 0x00, + 0x04, 0x8b, 0x55, 0x0c, 0x08, 0x64, 0xa3, 0x03, 0x83, 0x44, 0x1e, 0x37, + 0x40, 0x80, 0x86, 0xc2, 0x60, 0x80, 0x0b, 0x9c, 0xf2, 0x80, 0x0a, 0x37, + 0x04, 0x02, 0x92, 0x93, 0x23, 0x83, 0x22, 0xbe, 0x7f, 0x83, 0x93, 0x92, + 0x87, 0xa3, 0x82, 0x24, 0xfa, 0x64, 0xe8, 0x66, 0x24, 0x21, 0xf9, 0xff, + 0x83, 0x82, 0x11, 0xdb, 0x4f, 0x60, 0x93, 0x6f, 0x90, 0xaf, 0x93, 0x82, + 0x05, 0x00, 0x00, 0xcc, 0x39, 0x64, 0xa3, 0x0f, 0x90, 0xa3, 0x43, 0x90, + 0x83, 0x6f, 0x90, 0xb3, 0x1f, 0x90, 0x05, 0x00, 0x00, 0xa8, 0x4c, 0x64, + 0x0f, 0xdc, 0x7f, 0x42, 0x3b, 0xc4, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x00, 0x54, 0x24, 0x9b, 0x4f, 0x60, 0xb3, 0x43, 0x90, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x4a, 0x83, 0xc4, 0x80, 0x54, 0x24, 0x83, 0x4f, 0x60, + 0x93, 0xd3, 0x82, 0xa3, 0x83, 0x82, 0xa3, 0x43, 0x90, 0xa3, 0x2b, 0x90, + 0x83, 0x53, 0x90, 0x93, 0x63, 0x90, 0xb3, 0x1b, 0x90, 0xa3, 0x19, 0x02, + 0xbf, 0xdb, 0x7f, 0x80, 0x9d, 0x1d, 0xd9, 0xff, 0xff, 0xe4, 0xf3, 0x62, + 0x80, 0x07, 0x64, 0xd5, 0xff, 0xff, 0xf0, 0x9b, 0x63, 0x83, 0x83, 0x82, + 0x86, 0x93, 0xc5, 0x4c, 0x23, 0x1f, 0x9f, 0x11, 0x02, 0xc3, 0x00, 0xa0, + 0x6c, 0x1f, 0x1f, 0x82, 0x41, 0x20, 0xcb, 0x06, 0xa0, 0xd9, 0xff, 0xff, + 0xd4, 0xd7, 0x63, 0x4a, 0x3b, 0xc4, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x5f, 0x23, 0xf8, 0xea, 0x0a, 0xc0, 0x80, 0x54, 0x24, 0x03, 0x4f, 0x60, + 0x76, 0x83, 0xc4, 0x93, 0xde, 0xf2, 0x2e, 0x40, 0x20, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x40, 0x57, 0x24, 0x24, 0x65, 0x24, 0xe3, 0x4e, 0x60, + 0x17, 0xec, 0xf2, 0x47, 0x9d, 0xf2, 0x47, 0xe8, 0xf2, 0x42, 0x42, 0x20, + 0xcf, 0x4e, 0x60, 0xe3, 0xde, 0xf2, 0x2a, 0x40, 0x20, 0x04, 0xfa, 0x65, + 0x00, 0x42, 0x24, 0x1d, 0xc7, 0x18, 0xe0, 0x23, 0x75, 0xb3, 0x4e, 0x60, + 0xa3, 0xa7, 0x91, 0x19, 0x00, 0x00, 0x64, 0x95, 0x64, 0xb3, 0xa7, 0xa1, + 0x0d, 0x00, 0x00, 0x24, 0x03, 0x64, 0x17, 0x9c, 0xf2, 0x5f, 0x52, 0x04, + 0x83, 0x9f, 0x92, 0x8b, 0x83, 0x82, 0x7c, 0x12, 0x5a, 0x93, 0x23, 0x03, + 0x37, 0x21, 0xf8, 0x9c, 0x08, 0x58, 0xc0, 0x6b, 0x24, 0x04, 0xfa, 0x64, + 0x83, 0x8b, 0x92, 0x6f, 0x4e, 0x60, 0x2f, 0x94, 0xf2, 0xcc, 0x76, 0x24, + 0x93, 0x8f, 0x92, 0xc3, 0xa0, 0x5f, 0x57, 0x4e, 0x60, 0x8b, 0x93, 0x82, + 0x84, 0x02, 0x64, 0xef, 0x81, 0xf2, 0x40, 0x47, 0x24, 0x03, 0x88, 0xf2, + 0x04, 0xfa, 0x64, 0x3b, 0x4e, 0x60, 0xdf, 0x81, 0xf2, 0xd3, 0x3d, 0xfe, + 0xef, 0x3e, 0xfe, 0x05, 0x00, 0x00, 0x74, 0x60, 0x64, 0x93, 0x6f, 0x90, + 0x83, 0x53, 0x90, 0xb3, 0x23, 0x90, 0xa3, 0x37, 0x90, 0xc3, 0x5e, 0xd8, + 0x09, 0x00, 0x00, 0x1c, 0x9f, 0x64, 0x67, 0xda, 0x7f, 0xff, 0x01, 0x80, + 0x3d, 0x00, 0x00, 0xce, 0x03, 0x00, 0x3d, 0x00, 0x00, 0xc0, 0x80, 0x92, + 0xba, 0x41, 0x60, 0x23, 0x06, 0x00, 0x0c, 0x02, 0x92, 0x5a, 0xbf, 0x7f, + 0x19, 0x00, 0x00, 0x58, 0x95, 0x64, 0xaf, 0xa9, 0x11, 0xe7, 0x4e, 0x14, + 0x47, 0x56, 0x0a, 0x0d, 0x00, 0x00, 0x43, 0x80, 0x0d, 0x09, 0x00, 0x00, + 0x0b, 0x1c, 0x01, 0xf1, 0xff, 0xff, 0x9f, 0x08, 0x1d, 0xd3, 0xcd, 0x16, + 0x55, 0x00, 0x00, 0x37, 0x3d, 0x0a, 0x7f, 0xc7, 0x1e, 0xed, 0xff, 0xff, + 0xcf, 0x23, 0x19, 0xf9, 0xff, 0xff, 0xe3, 0xa0, 0x01, 0xbb, 0x9b, 0xa1, + 0x1b, 0x5a, 0x19, 0x83, 0xef, 0xa1, 0xaf, 0x95, 0x1c, 0x8b, 0xe7, 0xa1, + 0xf1, 0xff, 0xff, 0xe7, 0x82, 0x03, 0x93, 0xc7, 0xa1, 0x47, 0xee, 0x1f, + 0x9b, 0xc3, 0xa1, 0x31, 0x00, 0x00, 0x43, 0x20, 0x18, 0xa3, 0xcb, 0xa1, + 0xf5, 0xff, 0xff, 0x0b, 0x18, 0x12, 0xab, 0xdf, 0xa1, 0xd5, 0xff, 0xff, + 0x9f, 0x30, 0x1a, 0xb3, 0xd3, 0xa1, 0xd3, 0xc5, 0x16, 0xbb, 0xf7, 0xa1, + 0xf1, 0xff, 0xff, 0x37, 0x39, 0x1f, 0x83, 0x3f, 0xa2, 0x7f, 0xeb, 0x1d, + 0x8b, 0x0f, 0xa2, 0xf1, 0xff, 0xff, 0xcf, 0x23, 0x0e, 0x93, 0x23, 0xa2, + 0x9b, 0x1b, 0xa2, 0x8b, 0x5f, 0xa2, 0xe3, 0x70, 0x18, 0x0d, 0x00, 0x00, + 0x18, 0x05, 0x74, 0xab, 0x27, 0xa2, 0xb3, 0x07, 0xa2, 0x83, 0x4b, 0xa2, + 0x93, 0x53, 0xa2, 0xa3, 0x7f, 0xa2, 0xab, 0x4f, 0xa2, 0xb3, 0x63, 0xa2, + 0x83, 0x9b, 0x92, 0xa3, 0x2f, 0xa2, 0xbb, 0x03, 0xa2, 0x9b, 0x77, 0xa2, + 0x83, 0x61, 0x04, 0xb7, 0x33, 0x03, 0x0d, 0x00, 0x00, 0xac, 0x27, 0x64, + 0x18, 0x08, 0x60, 0x87, 0x83, 0x82, 0x64, 0x0b, 0x60, 0xa3, 0x83, 0x92, + 0x40, 0x10, 0x5b, 0x83, 0x87, 0x92, 0x80, 0x42, 0x24, 0x04, 0xfa, 0x64, + 0xb3, 0x4c, 0x60, 0x0b, 0x94, 0xf2, 0x90, 0x64, 0x24, 0x93, 0x93, 0x92, + 0x03, 0xa1, 0x5f, 0x9b, 0x4c, 0x60, 0xa3, 0x81, 0xf2, 0x8b, 0x93, 0x82, + 0xc8, 0x62, 0x7c, 0x8c, 0x02, 0x64, 0x40, 0x4e, 0x24, 0x04, 0xfa, 0x64, + 0x03, 0x88, 0xf2, 0x7b, 0x4c, 0x60, 0x87, 0x81, 0xf2, 0xc3, 0xc6, 0xa0, + 0x53, 0x3c, 0xfe, 0x05, 0x00, 0x00, 0x0c, 0x6a, 0x64, 0x23, 0x3e, 0xfe, + 0xb3, 0x1f, 0x90, 0x93, 0x63, 0x90, 0x83, 0x53, 0x90, 0xa3, 0x0f, 0x90, + 0xdf, 0x05, 0x00, 0xab, 0xd8, 0x7f, 0xe0, 0x85, 0x92, 0x83, 0xa3, 0x82, + 0x72, 0xff, 0x7f, 0x13, 0xb7, 0x7f, 0xf7, 0x93, 0x32, 0xac, 0x35, 0x48, + 0x4a, 0x00, 0x60, 0xfe, 0xbb, 0x00, 0xc8, 0x87, 0x92, 0x3e, 0x40, 0x60, + 0xc3, 0x81, 0x50, 0xd5, 0xff, 0xff, 0xc4, 0xc3, 0x62, 0x36, 0x40, 0x20, + 0x64, 0x20, 0x72, 0xca, 0x42, 0x20, 0xc3, 0xa1, 0x50, 0xd5, 0xff, 0xff, + 0xf8, 0xbf, 0x62, 0x76, 0xc3, 0x20, 0x4a, 0x43, 0x20, 0xc3, 0x81, 0x50, + 0xd5, 0xff, 0xff, 0xfc, 0xbb, 0x62, 0xdf, 0x11, 0x00, 0xe3, 0xbd, 0x7f, + 0x08, 0x02, 0x92, 0xcb, 0x01, 0x80, 0x26, 0x00, 0x60, 0xbc, 0x7c, 0xb3, + 0xda, 0xbf, 0x5f, 0xca, 0x42, 0x20, 0xc3, 0x91, 0x50, 0xd5, 0xff, 0xff, + 0xf8, 0xb3, 0x62, 0x76, 0x43, 0x21, 0xc3, 0xbf, 0x7f, 0xbc, 0xfc, 0xb3, + 0xe6, 0xff, 0x5f, 0xb7, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, + 0x88, 0xf0, 0x4e, 0x84, 0x40, 0x2b, 0x4a, 0x7c, 0x26, 0x04, 0x08, 0x64, + 0xd5, 0xff, 0xff, 0x3f, 0x05, 0xfe, 0x0f, 0x28, 0xe5, 0x05, 0x00, 0x00, + 0x08, 0x41, 0x64, 0x04, 0x11, 0x64, 0x1e, 0x40, 0x20, 0xd5, 0xff, 0xff, + 0xc8, 0xa7, 0x62, 0x40, 0x00, 0x64, 0xd1, 0xff, 0xff, 0xc4, 0xe3, 0x63, + 0x05, 0x00, 0x00, 0x48, 0x41, 0x64, 0xc3, 0x11, 0x51, 0xd5, 0xff, 0xff, + 0xe8, 0x9f, 0x62, 0x14, 0x18, 0x64, 0x01, 0x00, 0x85, 0x20, 0x00, 0x64, + 0x01, 0x00, 0x05, 0x24, 0x00, 0x64, 0x20, 0x18, 0xc8, 0x8c, 0x01, 0x92, + 0x4a, 0x42, 0x20, 0x0a, 0x00, 0x60, 0x0a, 0x42, 0x20, 0xc0, 0x95, 0x1d, + 0xd5, 0xff, 0xff, 0xcc, 0x97, 0x62, 0xc0, 0x95, 0x1d, 0xd5, 0xff, 0xff, + 0xec, 0x8f, 0x62, 0x9b, 0x05, 0x00, 0x9c, 0x81, 0x92, 0x57, 0x11, 0x00, + 0xca, 0xff, 0x7f, 0x09, 0x00, 0x00, 0x48, 0x00, 0x64, 0xc3, 0x41, 0x51, + 0x0b, 0x2c, 0xe5, 0xd5, 0xff, 0xff, 0x67, 0x01, 0xfe, 0x0f, 0x28, 0xe5, + 0xc8, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x1b, 0x10, 0x8e, + 0xa8, 0x18, 0xc8, 0x1c, 0x18, 0x64, 0x01, 0x00, 0x85, 0x20, 0x00, 0x64, + 0x80, 0x9d, 0x1d, 0x0a, 0x42, 0x20, 0xd5, 0xff, 0xff, 0xd4, 0x83, 0x62, + 0x80, 0x9d, 0x1d, 0xd1, 0xff, 0xff, 0xf4, 0xfb, 0x63, 0x57, 0x05, 0x00, + 0x5c, 0x01, 0x92, 0xdf, 0x11, 0x00, 0xda, 0xbf, 0x7f, 0x45, 0x3b, 0x46, + 0x48, 0x90, 0x64, 0x83, 0x51, 0x51, 0x0b, 0x2c, 0xe5, 0xd1, 0xff, 0xff, + 0xf7, 0x1e, 0xfe, 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x00, 0x40, 0x55, + 0x04, 0x00, 0xa1, 0x01, 0x12, 0x00, 0x04, 0x84, 0x80, 0x00, 0x3c, 0x23, + 0x2b, 0x88, 0xe5, 0x1a, 0x40, 0x20, 0x01, 0x05, 0x00, 0x40, 0x00, 0x64, + 0x67, 0xd7, 0x7f, 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, 0x98, 0x1a, 0x72, + 0x09, 0x00, 0x00, 0x20, 0x9d, 0x64, 0xa7, 0x11, 0x02, 0x03, 0x66, 0xf7, + 0x70, 0x02, 0xc8, 0x94, 0x11, 0x2b, 0x0d, 0x00, 0x00, 0x57, 0x11, 0x04, + 0x40, 0x01, 0xe7, 0x50, 0x01, 0xe7, 0x60, 0x01, 0xe7, 0x70, 0x01, 0xe7, + 0x04, 0x10, 0x64, 0xd1, 0xff, 0xff, 0xd4, 0xdf, 0x63, 0x00, 0x70, 0x94, + 0x19, 0x00, 0x00, 0x1e, 0x40, 0x3c, 0x03, 0x66, 0xf7, 0xca, 0x41, 0x20, + 0x04, 0x10, 0x64, 0x20, 0x00, 0x64, 0xd1, 0xff, 0xff, 0xe4, 0xdb, 0x63, + 0x80, 0x25, 0x64, 0xd1, 0xff, 0xff, 0xe0, 0x97, 0x63, 0x83, 0x01, 0x50, + 0xd5, 0xff, 0xff, 0xe8, 0x97, 0x63, 0x33, 0x0c, 0x50, 0x52, 0x41, 0x20, + 0x09, 0x00, 0x00, 0x28, 0x9d, 0x64, 0xaf, 0x11, 0x02, 0x83, 0x6e, 0xf7, + 0xcf, 0xa1, 0xd3, 0xca, 0x41, 0x20, 0x04, 0x10, 0x64, 0x83, 0x53, 0x90, + 0xd1, 0xff, 0xff, 0xcc, 0xcf, 0x63, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, + 0xc8, 0x8b, 0x63, 0x83, 0x01, 0x50, 0xd5, 0xff, 0xff, 0xd0, 0x8b, 0x63, + 0x26, 0x40, 0x20, 0x83, 0x6e, 0xf7, 0x07, 0x06, 0x00, 0xcf, 0x85, 0xd3, + 0xca, 0x41, 0x20, 0x04, 0x10, 0x64, 0xd1, 0xff, 0xff, 0xe4, 0xc3, 0x63, + 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, 0xe0, 0xff, 0x62, 0x83, 0x01, 0x50, + 0xd5, 0xff, 0xff, 0xe8, 0xff, 0x62, 0x8f, 0x43, 0x80, 0x64, 0x42, 0x2b, + 0x0b, 0x64, 0xfb, 0x23, 0x0a, 0x00, 0xd2, 0x40, 0x20, 0x10, 0x09, 0x7a, + 0x77, 0x47, 0x00, 0x22, 0x1e, 0x00, 0xd4, 0xf6, 0x73, 0x30, 0x07, 0xa8, + 0x83, 0x6e, 0xf7, 0x73, 0x31, 0x90, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0xd1, 0xff, 0xff, 0xdc, 0xb3, 0x63, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, + 0xd8, 0xef, 0x62, 0x13, 0x00, 0x60, 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x3f, 0x82, 0x01, 0x05, 0x00, 0x80, 0x00, 0x64, 0xfb, 0xd5, 0x7f, + 0x09, 0x00, 0x00, 0x24, 0x9d, 0x64, 0x97, 0x11, 0x02, 0x80, 0x01, 0x92, + 0x07, 0x00, 0xfd, 0x43, 0x56, 0xf7, 0x83, 0x47, 0xb0, 0x70, 0x41, 0xc8, + 0x05, 0x00, 0x00, 0x00, 0x8b, 0x55, 0x28, 0x00, 0xc8, 0x82, 0x41, 0x20, + 0x87, 0xf1, 0x7f, 0x05, 0x00, 0x00, 0x64, 0x01, 0x81, 0x05, 0x00, 0x00, + 0x00, 0x8b, 0x55, 0x0d, 0x00, 0x00, 0x20, 0x1e, 0x64, 0x64, 0x03, 0x72, + 0x43, 0x56, 0xf7, 0x11, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0x28, 0xdc, 0x64, 0xd1, 0xff, 0xff, 0xe0, 0x97, 0x63, 0x80, 0x07, 0x64, + 0xd1, 0xff, 0xff, 0xdc, 0xd3, 0x62, 0x83, 0x01, 0x50, 0xd5, 0xff, 0xff, + 0xe4, 0xd3, 0x62, 0x1e, 0x40, 0x20, 0x6f, 0xd5, 0x7f, 0xc0, 0x69, 0x24, + 0x0b, 0xbc, 0x1f, 0x3c, 0xfc, 0xb3, 0x8f, 0xc0, 0xf9, 0xd0, 0x28, 0x27, + 0x05, 0x00, 0x00, 0x44, 0x64, 0x64, 0x6b, 0xd0, 0xf2, 0x00, 0xfa, 0x64, + 0x80, 0x42, 0x24, 0x47, 0x5c, 0x07, 0x27, 0x48, 0x60, 0x08, 0x1a, 0x1f, + 0x93, 0x00, 0xa0, 0x0f, 0xdc, 0x0d, 0xcc, 0x68, 0xb6, 0x2a, 0x40, 0x20, + 0xe6, 0x01, 0x60, 0x80, 0x81, 0x1d, 0xd5, 0xff, 0xff, 0xf4, 0x93, 0x62, + 0x43, 0x56, 0xf7, 0x05, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0xd1, 0xff, 0xff, 0xfc, 0xfb, 0x62, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, + 0xf8, 0xb7, 0x62, 0x43, 0x56, 0xf7, 0x0d, 0x00, 0x00, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0xd1, 0xff, 0xff, 0xd0, 0xf7, 0x62, 0x80, 0x07, 0x64, + 0xd1, 0xff, 0xff, 0xcc, 0xb3, 0x62, 0x82, 0x41, 0x20, 0xd5, 0xff, 0xff, + 0xec, 0xbf, 0x62, 0x1f, 0x3c, 0xfe, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x64, + 0xb7, 0xd4, 0x7f, 0xc2, 0x41, 0x20, 0xaf, 0xd4, 0x7f, 0x05, 0x00, 0x00, + 0x2c, 0x8b, 0x55, 0x10, 0x10, 0x64, 0x82, 0x41, 0x20, 0xc0, 0x82, 0x86, + 0x06, 0xc1, 0x80, 0x87, 0xc6, 0xf2, 0xd1, 0xff, 0xff, 0xc4, 0xfb, 0x63, + 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, 0xd0, 0xa3, 0x62, 0x82, 0x41, 0x20, + 0xd5, 0xff, 0xff, 0xf0, 0xaf, 0x62, 0x2f, 0x3c, 0xfe, 0x01, 0x0c, 0x00, + 0x40, 0x00, 0x64, 0x63, 0xd4, 0x7f, 0xc2, 0x42, 0x20, 0x5b, 0xd4, 0x7f, + 0x01, 0x0c, 0x00, 0x80, 0x00, 0x64, 0x4f, 0xd4, 0x7f, 0xcb, 0xed, 0xf2, + 0x21, 0x00, 0x00, 0x00, 0x98, 0x64, 0x9c, 0x40, 0x24, 0x1d, 0x00, 0x00, + 0xc3, 0x01, 0x50, 0x1b, 0x47, 0x60, 0x2f, 0xd4, 0x7f, 0x15, 0x01, 0x00, + 0xfc, 0x7d, 0xb3, 0xe2, 0x00, 0x60, 0x80, 0xa9, 0x1d, 0xd1, 0xff, 0xff, + 0xe8, 0xe3, 0x63, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, 0xf4, 0x8b, 0x62, + 0x01, 0x0c, 0x00, 0xc0, 0x00, 0x64, 0xff, 0xd3, 0x7f, 0x5f, 0x56, 0xf7, + 0xfd, 0xff, 0x00, 0xc8, 0xff, 0x64, 0x14, 0x16, 0x1f, 0x20, 0x1a, 0x1f, + 0xc3, 0x11, 0x52, 0xd1, 0xff, 0xff, 0xd0, 0xc7, 0x62, 0x01, 0x00, 0xf4, + 0x08, 0x00, 0x64, 0xc3, 0x81, 0x52, 0xd1, 0xff, 0xff, 0xd4, 0xc3, 0x62, + 0x01, 0x05, 0x00, 0xc0, 0x00, 0x64, 0xbf, 0xd3, 0x7f, 0x05, 0x00, 0x00, + 0xcc, 0x73, 0x64, 0xa3, 0x0f, 0x90, 0xf7, 0xd2, 0x7f, 0x82, 0x41, 0x20, + 0x6b, 0xed, 0x7f, 0x01, 0x05, 0x00, 0x00, 0x01, 0x64, 0x9b, 0xd3, 0x7f, + 0xd0, 0x12, 0x64, 0x84, 0x0c, 0x64, 0x01, 0x05, 0x00, 0x40, 0x01, 0x64, + 0x4b, 0x11, 0xa0, 0x33, 0x06, 0xa2, 0x7f, 0xd3, 0x7f, 0x8a, 0x83, 0xe0, + 0x80, 0xe0, 0x26, 0x0a, 0x40, 0x60, 0x8f, 0xd2, 0x7f, 0x83, 0x2d, 0x51, + 0x88, 0x0c, 0x64, 0xfb, 0xf0, 0x7f, 0x01, 0x05, 0x00, 0x80, 0x01, 0x64, + 0x57, 0xd3, 0x7f, 0x01, 0x05, 0x00, 0x00, 0x02, 0x64, 0x2b, 0x8c, 0xe5, + 0x47, 0x93, 0x7f, 0x01, 0x0c, 0x00, 0x00, 0x01, 0x64, 0x3b, 0xd3, 0x7f, + 0x82, 0x41, 0x20, 0x63, 0xec, 0x7f, 0x80, 0x07, 0x64, 0xcd, 0xff, 0xff, + 0xc8, 0xe3, 0x63, 0xbe, 0x83, 0xe0, 0xc0, 0x63, 0x26, 0x0a, 0x00, 0x60, + 0x37, 0xd2, 0x7f, 0x82, 0x41, 0x20, 0x3f, 0xec, 0x7f, 0x01, 0x05, 0x00, + 0xc0, 0x01, 0x64, 0xaf, 0xbf, 0x7f, 0x07, 0x10, 0xe5, 0x16, 0x40, 0x20, + 0x44, 0x00, 0x64, 0x9a, 0x05, 0x20, 0x9b, 0xc5, 0xfb, 0x1c, 0x18, 0x72, + 0x40, 0x00, 0x64, 0x17, 0x00, 0x60, 0x00, 0x00, 0x64, 0xc0, 0xd7, 0x1f, + 0x04, 0x00, 0x64, 0xc4, 0xc3, 0x73, 0x07, 0x14, 0xe5, 0x04, 0x03, 0x64, + 0x00, 0x44, 0x24, 0x05, 0x00, 0x00, 0x0b, 0x80, 0x11, 0x82, 0x04, 0xe0, + 0x00, 0x3c, 0x23, 0x04, 0x03, 0x64, 0x00, 0x44, 0x24, 0x05, 0x00, 0x00, + 0x0b, 0x80, 0x11, 0x8f, 0x10, 0x80, 0xc0, 0x00, 0x86, 0x03, 0x00, 0xfd, + 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, 0x05, 0x00, 0x00, 0x58, 0x7a, 0x64, + 0x14, 0x00, 0x72, 0x9b, 0x29, 0x00, 0x04, 0x00, 0x64, 0x28, 0x04, 0xc8, + 0xa3, 0x03, 0x90, 0xc9, 0xf3, 0xff, 0xf4, 0xaf, 0x63, 0x83, 0x23, 0x80, + 0x05, 0x00, 0x00, 0x3c, 0x8c, 0x64, 0x88, 0x01, 0xd0, 0xd3, 0x23, 0x80, + 0x00, 0x09, 0xd8, 0xd3, 0x03, 0x90, 0x40, 0x00, 0x64, 0xc7, 0x03, 0xb0, + 0x8a, 0x21, 0xc0, 0x23, 0x09, 0xa0, 0x0f, 0x0c, 0xe6, 0x03, 0x10, 0xe6, + 0x35, 0x0c, 0x00, 0x1b, 0x04, 0x54, 0xdc, 0xfb, 0x63, 0xc2, 0x41, 0x20, + 0xe8, 0xf3, 0x63, 0x00, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0x35, 0x0c, 0x00, + 0xc0, 0x44, 0x64, 0xd4, 0xf3, 0x63, 0x09, 0x00, 0x00, 0x00, 0x93, 0x52, + 0x04, 0x80, 0x66, 0x0e, 0x40, 0x60, 0x82, 0x41, 0x20, 0xc8, 0xdb, 0x62, + 0xd4, 0x87, 0x62, 0x1b, 0x00, 0xe0, 0x0c, 0x00, 0x64, 0x38, 0x0c, 0xc8, + 0x83, 0x4b, 0x90, 0x88, 0x03, 0xd8, 0xc9, 0xf3, 0xff, 0xf8, 0x93, 0x63, + 0x8b, 0x43, 0x80, 0x80, 0x0b, 0xd0, 0x5f, 0xd5, 0x7f, 0xd0, 0xfb, 0x63, + 0x40, 0x84, 0x62, 0x80, 0x00, 0x64, 0x1b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x83, 0xa0, 0xf1, 0x02, 0x48, 0x20, 0x0b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x07, 0x00, 0xfe, 0x5c, 0x80, 0x62, 0x43, 0xe0, 0xf1, 0xfd, 0xbf, 0xff, + 0x00, 0x00, 0x64, 0x07, 0x42, 0xf2, 0x67, 0xc3, 0xfe, 0x8f, 0x1f, 0xfe, + 0x83, 0xc2, 0xfe, 0x02, 0x78, 0x27, 0x03, 0x78, 0xfe, 0x00, 0x04, 0x23, + 0x0e, 0x40, 0x20, 0x10, 0x00, 0x64, 0x00, 0x10, 0x1e, 0x03, 0x04, 0x00, + 0x00, 0x08, 0x1e, 0xc0, 0x04, 0x1e, 0x00, 0x3c, 0x23, 0x57, 0xc3, 0xfe, + 0x05, 0x10, 0x00, 0x18, 0x28, 0x64, 0xe0, 0x18, 0xc8, 0x83, 0x41, 0x90, + 0x93, 0x45, 0x90, 0xa3, 0x79, 0x90, 0xb3, 0x7d, 0x90, 0x1f, 0xa5, 0xf1, + 0xdc, 0xe9, 0xa3, 0x83, 0x1d, 0x90, 0x1f, 0x8f, 0xf1, 0x93, 0x1d, 0x90, + 0x9f, 0x8f, 0xf1, 0xa3, 0x1d, 0x90, 0x1f, 0xe0, 0xf1, 0xb3, 0x1d, 0x90, + 0x1f, 0xa5, 0xf1, 0xd0, 0x31, 0x26, 0x2b, 0x00, 0xf3, 0x1f, 0xce, 0xf1, + 0xa3, 0x1d, 0x90, 0x9f, 0xce, 0xf1, 0xb3, 0x1d, 0x90, 0x1f, 0xa5, 0xf1, + 0xd4, 0x31, 0x26, 0x2b, 0x00, 0xf3, 0x1f, 0xdd, 0xf1, 0xa3, 0x1d, 0x90, + 0x9f, 0xdd, 0xf1, 0xb3, 0x1d, 0x90, 0x18, 0x00, 0x64, 0x10, 0x18, 0xc8, + 0xc0, 0xdb, 0x1f, 0x67, 0x1e, 0xfe, 0x73, 0x87, 0xf1, 0x76, 0x53, 0x20, + 0x77, 0x30, 0xf2, 0xb3, 0xc2, 0xfe, 0x32, 0x43, 0x04, 0x03, 0x7b, 0xfe, + 0x30, 0x80, 0x64, 0x6b, 0x32, 0xf2, 0x1f, 0x1e, 0xfe, 0x17, 0x1e, 0xfe, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, + 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, + 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, + 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0x80, 0x40, 0x74, 0xdc, 0x8f, 0x62, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, + 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, + 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, + 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0xc0, 0x40, 0x74, 0xdc, 0x8b, 0x62, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, + 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, + 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, + 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0x40, 0x40, 0x74, 0xdc, 0x87, 0x62, + 0x09, 0x00, 0x00, 0xc7, 0x50, 0xf9, 0x10, 0x00, 0x64, 0xc9, 0xf3, 0xff, + 0x5c, 0x52, 0x72, 0x93, 0xc2, 0xfe, 0x12, 0x41, 0x24, 0x03, 0x79, 0xfe, + 0x53, 0x87, 0xf1, 0x56, 0x41, 0x24, 0x77, 0x10, 0xf2, 0x10, 0x80, 0x64, + 0x5b, 0x12, 0xf2, 0x6b, 0x12, 0xf2, 0x67, 0xc3, 0xfe, 0x93, 0xc2, 0xfe, + 0x12, 0x41, 0x04, 0x03, 0x79, 0xfe, 0xff, 0x1b, 0xfe, 0x09, 0x00, 0x00, + 0x53, 0x4c, 0xf4, 0x33, 0xc3, 0xfe, 0x1b, 0x10, 0xe6, 0x09, 0x00, 0x00, + 0x44, 0x03, 0x81, 0x7d, 0x00, 0x00, 0x3c, 0x7c, 0xaf, 0x5e, 0x40, 0x20, + 0x0e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x64, 0x07, 0x81, 0x58, 0x00, 0x64, + 0xb3, 0x03, 0x90, 0xa3, 0x1b, 0x90, 0x07, 0x00, 0xfd, 0x83, 0x47, 0xb0, + 0x01, 0x00, 0xf0, 0x48, 0x04, 0x64, 0xc0, 0x00, 0x74, 0xc4, 0x87, 0x62, + 0x82, 0x83, 0xe0, 0x00, 0xe0, 0x26, 0x1a, 0x40, 0x60, 0x88, 0x1b, 0xd8, + 0x01, 0x00, 0xf0, 0x48, 0x01, 0x64, 0xc0, 0x00, 0x74, 0xe4, 0x83, 0x62, + 0x48, 0x00, 0x64, 0xa3, 0x0b, 0x90, 0x00, 0x00, 0x74, 0x01, 0x00, 0xf0, + 0x48, 0x00, 0x64, 0xcc, 0x83, 0x62, 0x40, 0x00, 0x64, 0xd0, 0xcf, 0x63, + 0x03, 0x80, 0xe5, 0x20, 0x84, 0x1d, 0x10, 0x7a, 0x31, 0xb3, 0x23, 0x00, + 0x4c, 0x0a, 0x2b, 0x3c, 0x02, 0xa7, 0x03, 0x33, 0x01, 0xd3, 0x50, 0xfb, + 0x9b, 0x23, 0x40, 0x06, 0x40, 0x20, 0x22, 0x41, 0x20, 0xd6, 0x43, 0x20, + 0x84, 0x14, 0x72, 0x87, 0x0d, 0x00, 0x4e, 0x4c, 0x00, 0xd3, 0x20, 0x00, + 0xbb, 0xd3, 0xf2, 0xcc, 0x01, 0x64, 0xa3, 0x0f, 0xb0, 0x87, 0x23, 0x00, + 0x47, 0x08, 0x90, 0x8f, 0x37, 0x00, 0x0c, 0x3d, 0x72, 0x03, 0xa3, 0x80, + 0x8b, 0x4d, 0x00, 0xf8, 0x97, 0x62, 0xfa, 0x41, 0x20, 0x07, 0x84, 0xe5, + 0x4e, 0x1d, 0x00, 0xcf, 0x44, 0x00, 0xcc, 0x00, 0xb6, 0x3a, 0x00, 0x60, + 0x64, 0x00, 0x64, 0x4c, 0x8e, 0x40, 0xd0, 0x80, 0xba, 0x60, 0x40, 0x70, + 0x0a, 0x40, 0x60, 0x47, 0x10, 0x00, 0x9b, 0x8d, 0xf2, 0x4c, 0x0d, 0x31, + 0x18, 0x0c, 0xc8, 0xd0, 0x90, 0x1d, 0x4e, 0x41, 0x20, 0xd0, 0x90, 0x1d, + 0x83, 0xbf, 0x7f, 0xd0, 0x80, 0x92, 0xe6, 0xff, 0x7f, 0x67, 0x00, 0x80, + 0x9b, 0x05, 0x00, 0x47, 0x10, 0x00, 0x4c, 0x06, 0x5e, 0x9b, 0x05, 0x00, + 0xc4, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0xc7, 0xbf, 0x7f, 0xca, 0x1f, 0x00, + 0x8b, 0x44, 0x00, 0x8c, 0x00, 0xb6, 0x4e, 0x00, 0x60, 0x50, 0x00, 0x64, + 0x08, 0x89, 0x40, 0x90, 0x80, 0xba, 0x32, 0x40, 0x60, 0x10, 0x10, 0x5a, + 0xc3, 0x10, 0x90, 0xcf, 0x88, 0xf2, 0xc8, 0x0f, 0x31, 0x20, 0x08, 0xc8, + 0x3e, 0x42, 0x20, 0xa2, 0x40, 0x20, 0xca, 0x43, 0x20, 0x3e, 0x42, 0x20, + 0xa2, 0x40, 0x20, 0x37, 0xbf, 0x7f, 0x10, 0x08, 0xf0, 0xc0, 0x10, 0xd8, + 0xd7, 0xbf, 0x7f, 0x90, 0x80, 0x92, 0xd2, 0xff, 0x7f, 0xc0, 0x00, 0xe4, + 0x03, 0x10, 0x00, 0xcf, 0x04, 0x00, 0x13, 0xf0, 0x8f, 0x08, 0x05, 0x5e, + 0xc4, 0x08, 0x78, 0x84, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0xaf, 0xbf, 0x7f, + 0x00, 0x7c, 0x31, 0x00, 0xfc, 0xa1, 0x00, 0x3c, 0x23, 0x03, 0x18, 0xe5, + 0x18, 0x84, 0x1d, 0x09, 0x00, 0x00, 0x00, 0x9c, 0x52, 0x96, 0x40, 0x20, + 0x00, 0x00, 0x66, 0x16, 0x00, 0x60, 0x4a, 0x41, 0x20, 0x80, 0x9d, 0x1d, + 0xd0, 0x93, 0x62, 0x07, 0x1c, 0xe5, 0x08, 0x00, 0x64, 0x00, 0x00, 0x74, + 0xc0, 0x93, 0x62, 0xfd, 0xff, 0xff, 0x3c, 0xfc, 0x87, 0x12, 0x40, 0x60, + 0x44, 0x00, 0x64, 0x09, 0x00, 0x00, 0x84, 0x07, 0x7f, 0x09, 0x00, 0x00, + 0x08, 0x9c, 0x52, 0x84, 0x00, 0x66, 0xc2, 0xbf, 0x7f, 0x4a, 0x41, 0x20, + 0x80, 0x9d, 0x1d, 0xcc, 0xfb, 0x63, 0xbf, 0xbf, 0x7f, 0x03, 0x00, 0xe0, + 0xcc, 0xfb, 0x63, 0x03, 0x60, 0x20, 0x07, 0x04, 0xe0, 0x37, 0x00, 0xfe, + 0x9f, 0x00, 0xfe, 0x03, 0x00, 0xe0, 0xc4, 0x87, 0x62, 0x40, 0x80, 0x1d, + 0x07, 0x04, 0xe0, 0x03, 0x10, 0xe5, 0x14, 0x7c, 0x27, 0x58, 0x7c, 0x27, + 0x03, 0xd4, 0xfa, 0x47, 0xd8, 0xfa, 0x03, 0xd4, 0xf2, 0x47, 0xd8, 0xf2, + 0xdc, 0x83, 0x62, 0x47, 0xd4, 0xfa, 0x47, 0xd4, 0xf2, 0x57, 0xd9, 0xfa, + 0x03, 0xd4, 0xfa, 0x03, 0xd4, 0xf2, 0x07, 0x14, 0xe5, 0x4b, 0x24, 0xfe, + 0x50, 0x04, 0xc8, 0x8a, 0x4c, 0x20, 0x8b, 0x04, 0x00, 0x52, 0x40, 0x20, + 0x04, 0x88, 0x3e, 0x8c, 0x80, 0x25, 0x00, 0x8c, 0x40, 0x10, 0x08, 0xca, + 0x00, 0x50, 0x1e, 0x00, 0x3c, 0x23, 0x04, 0x00, 0x64, 0xb0, 0xc7, 0xc9, + 0x47, 0x00, 0x80, 0xa0, 0xc7, 0xc9, 0x07, 0x00, 0xfe, 0x0e, 0x40, 0x20, + 0x48, 0x04, 0x5e, 0xc4, 0x08, 0x78, 0x84, 0x00, 0x66, 0xf6, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x8c, 0x00, 0x64, 0x01, 0x00, 0x00, 0xcf, 0x01, 0xfe, + 0x01, 0x04, 0x00, 0x8c, 0x05, 0x64, 0x01, 0x00, 0x00, 0x6f, 0x01, 0xfe, + 0x4b, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, 0x67, 0xc3, 0xfe, 0x8f, 0x03, 0x80, + 0x83, 0x13, 0x80, 0xbb, 0x23, 0x00, 0xc0, 0x00, 0x86, 0x02, 0xbc, 0x9f, + 0x00, 0x3c, 0x23, 0xa0, 0xcf, 0x7b, 0x67, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, + 0xa7, 0x1f, 0xfe, 0x10, 0x00, 0x64, 0xc5, 0xf3, 0xff, 0xf4, 0xd3, 0x72, + 0xcf, 0x1f, 0xfe +}; + +#define PMC_DTCM_LOG_SIZE 256 + +const unsigned char pmcdata[] = { + 0x3c, 0x0a, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x40, 0x0a, 0x00, 0x00, 0xcc, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x00, 0x28, 0x6e, + 0x75, 0x6c, 0x6c, 0x29, 0x00, 0x25, 0x30, 0x34, 0x75, 0x3a, 0x20, 0x00, + 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x20, 0x30, 0x78, 0x25, + 0x30, 0x38, 0x78, 0x0a, 0x00, 0x50, 0x4d, 0x43, 0x5f, 0x56, 0x45, 0x52, + 0x3a, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x0a, 0x00, 0x24, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x20, 0x32, 0x38, 0x34, 0x30, + 0x32, 0x37, 0x20, 0x24, 0x00, 0x32, 0x30, 0x30, 0x36, 0x32, 0x32, 0x5f, + 0x31, 0x31, 0x33, 0x30, 0x00, 0x54, 0x53, 0x3a, 0x25, 0x73, 0x0a, 0x00, + 0x43, 0x48, 0x49, 0x44, 0x3a, 0x25, 0x78, 0x0a, 0x00, 0x43, 0x52, 0x45, + 0x56, 0x3a, 0x25, 0x78, 0x0a, 0x00, 0x50, 0x41, 0x52, 0x54, 0x49, 0x44, + 0x3a, 0x25, 0x78, 0x20, 0x43, 0x46, 0x41, 0x4d, 0x3a, 0x25, 0x78, 0x20, + 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x20, 0x63, 0x68, 0x69, 0x70, + 0x20, 0x69, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x0a, 0x00, 0x52, 0x4f, 0x20, 0x53, 0x56, 0x54, 0x20, 0x25, + 0x64, 0x20, 0x48, 0x56, 0x54, 0x20, 0x25, 0x64, 0x20, 0x4c, 0x56, 0x54, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, + 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, 0x6f, 0x76, 0x65, + 0x72, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x65, + 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, + 0x56, 0x53, 0x20, 0x6c, 0x6f, 0x67, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, + 0x69, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x20, 0x73, 0x6c, + 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, + 0x64, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x69, 0x6e, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, + 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, 0x66, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x75, 0x0a, + 0x00, 0x41, 0x56, 0x53, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x0a, 0x00, 0x44, 0x41, 0x43, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x00, + 0x4c, 0x56, 0x54, 0x00, 0x48, 0x56, 0x54, 0x00, 0x64, 0x65, 0x76, 0x20, + 0x61, 0x64, 0x64, 0x72, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x52, 0x4f, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x53, 0x56, 0x54, 0x20, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x20, 0x25, 0x75, 0x20, 0x52, 0x4f, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x25, 0x73, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, + 0x25, 0x75, 0x0a, 0x00, 0x63, 0x75, 0x72, 0x5f, 0x64, 0x61, 0x63, 0x20, + 0x25, 0x75, 0x20, 0x63, 0x75, 0x72, 0x56, 0x20, 0x25, 0x75, 0x20, 0x63, + 0x75, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x20, 0x25, 0x75, 0x20, 0x64, 0x65, + 0x6c, 0x74, 0x61, 0x20, 0x25, 0x64, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x64, + 0x61, 0x63, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x56, 0x41, 0x44, 0x43, + 0x31, 0x20, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x25, + 0x75, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, + 0x64, 0x20, 0x4d, 0x56, 0x41, 0x44, 0x43, 0x32, 0x20, 0x25, 0x75, 0x0a, + 0x00, 0x4d, 0x56, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x20, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x20, 0x25, 0x75, 0x20, 0x4d, 0x56, 0x0a, 0x00, 0x44, 0x75, + 0x6d, 0x70, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, + 0x6f, 0x6e, 0x20, 0x76, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x6d, 0x76, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, 0x70, 0x20, 0x61, 0x6c, 0x6c, + 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x76, 0x6c, 0x6f, + 0x77, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x52, 0x4f, 0x5b, + 0x25, 0x64, 0x5d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, + 0x6f, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x6f, 0x20, + 0x25, 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x25, 0x64, 0x20, + 0x76, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, + 0x61, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, 0x76, 0x68, + 0x69, 0x67, 0x68, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, + 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x20, 0x25, 0x64, 0x20, 0x76, 0x6f, + 0x6c, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, + 0x00, 0x52, 0x4f, 0x5b, 0x25, 0x64, 0x5d, 0x20, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x5f, 0x72, 0x6f, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x77, + 0x5f, 0x72, 0x6f, 0x20, 0x25, 0x64, 0x20, 0x76, 0x6c, 0x6f, 0x77, 0x5f, + 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6c, 0x6f, + 0x77, 0x20, 0x25, 0x64, 0x20, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x72, 0x6f, + 0x20, 0x25, 0x64, 0x20, 0x76, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x6d, 0x76, + 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x61, 0x76, 0x73, 0x5f, 0x64, 0x61, 0x63, + 0x20, 0x25, 0x64, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, + 0x6d, 0x76, 0x20, 0x25, 0x75, 0x20, 0x61, 0x76, 0x73, 0x5f, 0x6d, 0x76, + 0x20, 0x25, 0x64, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x5f, 0x6d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x63, 0x61, + 0x6c, 0x63, 0x5f, 0x73, 0x77, 0x72, 0x65, 0x67, 0x5f, 0x6d, 0x76, 0x20, + 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x20, + 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, + 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x20, 0x25, 0x64, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x5f, 0x73, 0x77, + 0x72, 0x65, 0x67, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x63, + 0x61, 0x6c, 0x63, 0x5f, 0x73, 0x77, 0x72, 0x65, 0x67, 0x5f, 0x64, 0x61, + 0x63, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x69, 0x73, + 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x72, 0x67, + 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x25, + 0x64, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x5f, + 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, + 0x00, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x54, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x25, 0x64, 0x20, 0x68, 0x69, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x52, 0x34, 0x38, 0x5f, 0x25, 0x64, 0x20, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x68, 0x69, 0x20, 0x25, 0x64, 0x20, + 0x6c, 0x6f, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, 0x70, 0x20, + 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, 0x6e, 0x20, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x0a, 0x00, 0x40, 0x40, 0x40, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x00, 0x40, 0x40, 0x40, 0x50, 0x41, + 0x53, 0x53, 0x45, 0x44, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xd0, 0xc0, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x50, 0x0a, 0x00, 0x00 +}; +#endif //PMC_ROMDATA_63178_H diff --git a/arch/arm/mach-bcmbca/pmc/pmc_firmware_6756.h b/arch/arm/mach-bcmbca/pmc/pmc_firmware_6756.h new file mode 100644 index 0000000000..b87c14f57d --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_firmware_6756.h @@ -0,0 +1,1388 @@ +/* + * * <:copyright-BRCM:2017:DUAL/GPL:standard + * * + * * Copyright (c) 2017 Broadcom + * * All Rights Reserved + * * + * * This program is free software; you can redistribute it and/or modify + * * it under the terms of the GNU General Public License, version 2, as published by + * * the Free Software Foundation (the "GPL"). + * * + * * This program is distributed in the hope that it will be useful, + * * but WITHOUT ANY WARRANTY; without even the implied warranty of + * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * * GNU General Public License for more details. + * * + * * + * * A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + * * writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * * Boston, MA 02111-1307, USA. + * * + * * :> + * */ + +#ifndef PMC_ROMDATA_6756_H +#define PMC_ROMDATA_6756_H +#define PMC_VER_IMPL 3 +#define PMC_VER_MAJOR 2 +#define PMC_VER_MINOR 2 +#define PMC_VER_CHANGELIST "$Change: 284027 $" +const unsigned char pmcappdata[] = { + 0x01, 0x00, 0x00, 0xbf, 0x03, 0xfe, 0x67, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0xe6, 0x05, + 0x00, 0x00, 0x00, 0x8c, 0x52, 0x04, 0x00, 0x66, 0x5a, 0x00, 0x60, 0x09, + 0x00, 0x00, 0x00, 0x92, 0x55, 0x05, 0x00, 0x00, 0x58, 0x7a, 0x64, 0x4c, + 0x00, 0x72, 0x05, 0x00, 0x00, 0x00, 0x8e, 0x55, 0x44, 0x00, 0x64, 0x09, + 0x00, 0x00, 0x44, 0x06, 0x81, 0x86, 0x41, 0x20, 0x39, 0x00, 0x00, 0xc4, + 0xdb, 0x62, 0x05, 0x00, 0x00, 0x00, 0x8e, 0x55, 0x86, 0x41, 0x20, 0x39, + 0x00, 0x00, 0xc8, 0xd7, 0x62, 0x48, 0x00, 0x64, 0x05, 0x00, 0x00, 0x84, + 0x09, 0x7f, 0x07, 0x0c, 0xe6, 0x03, 0x00, 0x80, 0x00, 0x3c, 0x23, 0x0c, + 0x88, 0x62, 0x38, 0x40, 0x55, 0xba, 0x4f, 0x00, 0x04, 0x00, 0x64, 0x4c, + 0x04, 0x72, 0xcd, 0xab, 0x89, 0xc8, 0x7b, 0x64, 0x45, 0x23, 0x01, 0xcc, + 0x59, 0x64, 0x05, 0x00, 0x00, 0x00, 0x8f, 0x64, 0x86, 0x43, 0x20, 0xec, + 0x83, 0x62, 0xbb, 0x63, 0x00, 0x80, 0x03, 0xe6, 0x04, 0x00, 0x64, 0x4c, + 0x04, 0x48, 0xc3, 0x07, 0xf6, 0x3b, 0x00, 0xf2, 0x87, 0xc2, 0xfe, 0x46, + 0x50, 0x07, 0x43, 0x78, 0xfe, 0x87, 0x04, 0xfe, 0x47, 0xc0, 0xf2, 0x44, + 0x0c, 0x31, 0x10, 0x04, 0xca, 0x08, 0x08, 0xe8, 0x00, 0x3c, 0x23, 0x03, + 0xc0, 0xf1, 0x02, 0x68, 0x00, 0x03, 0x40, 0xf2, 0x03, 0xc7, 0xf1, 0x02, + 0xfc, 0x00, 0x73, 0x40, 0xf2, 0x00, 0x3c, 0x23, 0x08, 0x00, 0x74, 0xc4, + 0x3f, 0x64, 0x50, 0x08, 0x1d, 0x18, 0x00, 0x64, 0x44, 0x37, 0x64, 0x84, + 0x09, 0x1e, 0x9b, 0x05, 0x00, 0x47, 0x44, 0x00, 0xec, 0xc7, 0x73, 0x84, + 0x03, 0x64, 0x0b, 0x07, 0xf2, 0x57, 0xc3, 0xfe, 0x9f, 0x11, 0xf2, 0xc7, + 0x11, 0xf2, 0xef, 0x11, 0xf2, 0x17, 0x12, 0xf2, 0x3f, 0x12, 0xf2, 0x67, + 0x12, 0xf2, 0xe7, 0x51, 0xf2, 0xff, 0x50, 0xf2, 0x87, 0x13, 0xf2, 0xcf, + 0x51, 0xf2, 0x44, 0x00, 0x64, 0x73, 0x06, 0xf2, 0x44, 0x00, 0x64, 0xf3, + 0x06, 0xf2, 0x8d, 0xd6, 0x92, 0x84, 0x28, 0x64, 0xc3, 0x46, 0xf2, 0xa7, + 0x01, 0xfe, 0x35, 0x0c, 0x00, 0x04, 0xbf, 0x64, 0xb3, 0x06, 0xf2, 0x35, + 0x0c, 0x00, 0x04, 0xa7, 0x64, 0xbb, 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x84, + 0x9f, 0x64, 0xd3, 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x04, 0xb3, 0x64, 0xc3, + 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x44, 0xa6, 0x64, 0xdb, 0x06, 0xf2, 0x01, + 0x0c, 0x00, 0x04, 0xf2, 0x64, 0xcb, 0x06, 0xf2, 0x35, 0x0c, 0x00, 0x44, + 0x85, 0x64, 0xe3, 0x06, 0xf2, 0x67, 0xc3, 0xfe, 0xc4, 0xff, 0x64, 0x5b, + 0x06, 0xf2, 0x67, 0xc3, 0xfe, 0x87, 0xc2, 0xfe, 0x05, 0x00, 0x00, 0x46, + 0x40, 0x04, 0x43, 0x78, 0xfe, 0x84, 0x00, 0x64, 0x05, 0x10, 0x00, 0x44, + 0x86, 0x80, 0x01, 0xad, 0xde, 0x44, 0x00, 0x64, 0x4b, 0x04, 0x00, 0x4f, + 0x08, 0x00, 0x53, 0x0c, 0x00, 0x57, 0x10, 0x00, 0x5b, 0x14, 0x00, 0x5f, + 0x18, 0x00, 0x63, 0x1c, 0x00, 0x67, 0x20, 0x00, 0x6b, 0x24, 0x00, 0x6f, + 0x28, 0x00, 0x73, 0x2c, 0x00, 0x77, 0x30, 0x00, 0x7b, 0x34, 0x00, 0x7f, + 0x38, 0x00, 0x40, 0x60, 0x26, 0x40, 0xe0, 0x26, 0x00, 0x00, 0x23, 0x01, + 0x0c, 0x00, 0x88, 0x08, 0x64, 0x39, 0x0c, 0x00, 0x04, 0x80, 0x64, 0x1b, + 0x0b, 0xf2, 0x23, 0x07, 0xf2, 0x08, 0x53, 0x64, 0x05, 0x00, 0x00, 0x04, + 0x80, 0x64, 0x03, 0x48, 0xf2, 0x0b, 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, + 0xf9, 0x64, 0xfd, 0x1f, 0x00, 0x04, 0xf8, 0x64, 0x13, 0x48, 0xf2, 0x1b, + 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, 0xfb, 0x64, 0x05, 0x00, 0x00, 0x04, + 0x80, 0x64, 0x23, 0x48, 0xf2, 0x2b, 0x44, 0xf2, 0x08, 0x03, 0x64, 0x04, + 0x38, 0x64, 0x33, 0x48, 0xf2, 0x3b, 0x44, 0xf2, 0x05, 0x00, 0x00, 0x08, + 0x8b, 0x64, 0x0d, 0x00, 0x00, 0x04, 0xc0, 0x64, 0x43, 0x48, 0xf2, 0x4b, + 0x44, 0xf2, 0xfd, 0xff, 0xff, 0x08, 0xfb, 0x64, 0xfd, 0x1f, 0x00, 0x04, + 0xf8, 0x64, 0x53, 0x48, 0xf2, 0x5b, 0x44, 0xf2, 0x05, 0x10, 0x00, 0x08, + 0x03, 0x64, 0x05, 0x10, 0x00, 0x04, 0x78, 0x64, 0x63, 0x48, 0xf2, 0x6b, + 0x44, 0xf2, 0x08, 0x41, 0x64, 0x04, 0x48, 0x64, 0x73, 0x48, 0xf2, 0x7b, + 0x44, 0xf2, 0xe7, 0x1c, 0xfe, 0x0f, 0x20, 0xe5, 0x00, 0x41, 0x64, 0xd8, + 0xd7, 0x63, 0x00, 0x00, 0x66, 0x8e, 0x00, 0x60, 0x14, 0x00, 0x64, 0x90, + 0x14, 0xc8, 0x18, 0x44, 0x64, 0x82, 0x41, 0x20, 0xfc, 0xd3, 0x63, 0x22, + 0x40, 0x20, 0x83, 0x11, 0x00, 0xf0, 0xd3, 0x63, 0xa3, 0x03, 0x90, 0x83, + 0x21, 0x00, 0xe4, 0xd3, 0x63, 0x87, 0x23, 0x80, 0x0a, 0x40, 0x20, 0x02, + 0x42, 0x20, 0xdf, 0x05, 0x00, 0xd8, 0x97, 0x62, 0x6c, 0x9d, 0x3a, 0x9b, + 0x31, 0x00, 0xc6, 0xff, 0x7f, 0xd4, 0x00, 0x64, 0x70, 0x14, 0xc8, 0x18, + 0x44, 0x74, 0x82, 0x41, 0x20, 0xf0, 0xcf, 0x63, 0x22, 0x40, 0x20, 0x83, + 0x11, 0x00, 0xe4, 0xcf, 0x63, 0x0a, 0x40, 0x20, 0x03, 0x02, 0x50, 0xf4, + 0x93, 0x62, 0xdf, 0x05, 0x00, 0x6c, 0x1d, 0x3a, 0x9b, 0x21, 0x00, 0xd6, + 0xbf, 0x7f, 0x00, 0x42, 0x64, 0xc0, 0xcf, 0x63, 0x22, 0x40, 0x20, 0x00, + 0x43, 0x64, 0xf4, 0xcb, 0x63, 0x1e, 0x40, 0x20, 0x01, 0x0c, 0x00, 0xc0, + 0x32, 0x64, 0x05, 0x00, 0x00, 0x14, 0x88, 0x55, 0x10, 0x00, 0xc8, 0xd0, + 0xd3, 0x63, 0xd4, 0x87, 0x62, 0x01, 0x0c, 0x00, 0x00, 0x08, 0x64, 0x20, + 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0xd0, 0xc3, 0x63, 0x00, + 0x00, 0x64, 0x18, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xcc, 0xbb, 0x62, 0x00, + 0x00, 0x64, 0x28, 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0xfd, + 0xf3, 0xff, 0xc4, 0xb7, 0x62, 0x4a, 0x41, 0x20, 0x00, 0x9e, 0x1d, 0x31, + 0x00, 0x00, 0xe0, 0x9b, 0x63, 0x03, 0x00, 0xe0, 0x00, 0x00, 0x64, 0x18, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xd8, 0xaf, 0x62, 0x00, 0x00, 0x64, 0x98, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xe8, 0xab, 0x62, 0x00, 0x00, 0x64, 0x18, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xf8, 0xa7, 0x62, 0x0f, 0xc2, 0xf1, 0xd2, + 0x68, 0x00, 0x23, 0x50, 0xf2, 0x00, 0x00, 0x64, 0x10, 0x00, 0xc8, 0xe3, + 0x02, 0xf2, 0x35, 0x0c, 0x00, 0x00, 0xcb, 0x64, 0x10, 0x00, 0xc8, 0xcb, + 0x02, 0xf2, 0x67, 0xc3, 0xfe, 0x07, 0x04, 0xe0, 0x40, 0x00, 0x65, 0x5b, + 0x02, 0xf2, 0x01, 0x00, 0x82, 0x07, 0x00, 0x00, 0x33, 0x06, 0xf2, 0x48, + 0x00, 0x64, 0xe3, 0x09, 0xf2, 0x67, 0xc3, 0xfe, 0xa3, 0xbf, 0x7f, 0x88, + 0x08, 0x31, 0x18, 0x08, 0xca, 0x48, 0x10, 0x5a, 0x10, 0x08, 0x7a, 0x00, + 0x3c, 0x23, 0x0c, 0x00, 0x64, 0x4c, 0xcc, 0x1e, 0x84, 0x08, 0x31, 0x10, + 0x04, 0xca, 0x10, 0x0c, 0x7a, 0x00, 0x3c, 0x23, 0x05, 0x10, 0x00, 0x18, + 0x28, 0x64, 0x70, 0x18, 0xc8, 0x83, 0x41, 0x90, 0x93, 0x45, 0x90, 0xa3, + 0x79, 0x90, 0xb3, 0x7d, 0x90, 0x9f, 0xb7, 0xf1, 0xdc, 0xed, 0xa3, 0x83, + 0x1d, 0x90, 0x1f, 0x8c, 0xf1, 0x93, 0x1d, 0x90, 0x9f, 0x8c, 0xf1, 0xa3, + 0x1d, 0x90, 0x1f, 0xe0, 0xf1, 0xb3, 0x1d, 0x90, 0x18, 0x00, 0x64, 0x10, + 0x18, 0xc8, 0xc0, 0xdb, 0x1f, 0x31, 0x00, 0x00, 0xf7, 0x0e, 0xfe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xa2, 0x11, 0x10, 0x00, 0x04, 0x01, 0x80, 0x11, 0x10, 0x00, + 0x04, 0x06, 0x64, 0x4b, 0x20, 0x80, 0xbc, 0x7c, 0xb3, 0xfa, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, 0xaf, 0x1f, 0xfe, + 0x13, 0x00, 0xe0, 0x01, 0x12, 0x00, 0x10, 0x00, 0x64, 0x0f, 0x01, 0x84, + 0xa0, 0x03, 0xe7, 0xbc, 0x7c, 0xb3, 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, + 0xff, 0x28, 0x3a, 0x8f, 0x0c, 0x00, 0xcb, 0x88, 0xf9, 0x8f, 0x23, 0x80, + 0xc0, 0x43, 0x24, 0xbc, 0x08, 0x27, 0x03, 0xbc, 0xf2, 0xd3, 0x40, 0xd0, + 0xa3, 0x0f, 0x90, 0xbf, 0x23, 0x80, 0xc0, 0x3f, 0xa4, 0xa3, 0x03, 0x90, + 0x8f, 0x23, 0x80, 0xcf, 0x04, 0xda, 0xa3, 0x0f, 0x90, 0x87, 0x23, 0x80, + 0x48, 0x00, 0xa2, 0xa3, 0x0b, 0x90, 0xbf, 0x23, 0x80, 0x03, 0xbd, 0x94, + 0xa0, 0x03, 0xe7, 0x03, 0x81, 0x84, 0xa3, 0x03, 0x90, 0x8f, 0x23, 0x80, + 0xf0, 0xb4, 0x26, 0xf2, 0xff, 0x7f, 0x93, 0x23, 0x80, 0xc8, 0x04, 0x64, + 0x34, 0x15, 0x26, 0x16, 0x00, 0x40, 0x87, 0x23, 0x80, 0x78, 0x94, 0x26, + 0x1a, 0x40, 0x60, 0x08, 0x02, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, + 0x00, 0x00, 0x64, 0x17, 0x04, 0xe0, 0x01, 0x12, 0x00, 0x00, 0x4b, 0x55, + 0xf7, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x01, 0x12, 0x00, 0x18, 0x00, 0x64, + 0x93, 0x01, 0x84, 0xbf, 0x0c, 0x00, 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, + 0xbc, 0x7c, 0xb3, 0x93, 0x8d, 0x94, 0xcb, 0x8b, 0xf9, 0x0f, 0x29, 0x3a, + 0xc0, 0x40, 0x24, 0x90, 0x08, 0x27, 0x0f, 0x90, 0xf2, 0xfd, 0x0f, 0x00, + 0xc2, 0xbc, 0x1f, 0x0f, 0x04, 0xda, 0x04, 0x04, 0xa2, 0x83, 0x85, 0x94, + 0xbf, 0x81, 0x84, 0xf0, 0xb7, 0x26, 0xfa, 0xff, 0x7f, 0xf4, 0x17, 0x26, + 0xc8, 0x04, 0x64, 0x12, 0x00, 0x40, 0xf8, 0x97, 0x26, 0x12, 0x40, 0x60, + 0x08, 0x02, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, 0x0f, 0x0c, 0xe6, + 0x03, 0x00, 0x80, 0x4b, 0x00, 0x50, 0x07, 0x10, 0x35, 0x03, 0x24, 0x37, + 0x67, 0x1d, 0xfe, 0x13, 0x00, 0xe0, 0x03, 0x00, 0x80, 0xa0, 0x03, 0xe7, + 0x48, 0x88, 0x1d, 0x07, 0x10, 0x35, 0x03, 0x24, 0x37, 0xd8, 0xf7, 0x63, + 0x17, 0x04, 0xe0, 0x01, 0x12, 0x00, 0x08, 0x00, 0x64, 0x8f, 0x80, 0x81, + 0x46, 0xbc, 0x00, 0x63, 0x80, 0xd2, 0xd0, 0x40, 0x98, 0x83, 0x90, 0x91, + 0x8f, 0x80, 0x81, 0xd0, 0x30, 0x94, 0x0c, 0x21, 0x98, 0x83, 0x8c, 0x91, + 0x4e, 0xbc, 0x17, 0x93, 0x80, 0x81, 0x06, 0xfd, 0x1f, 0x43, 0x4c, 0xfb, + 0x83, 0x80, 0x91, 0x93, 0x80, 0x81, 0x0c, 0x81, 0x98, 0x83, 0x8c, 0x91, + 0x87, 0x80, 0x81, 0x40, 0x40, 0x98, 0x83, 0x80, 0x91, 0x93, 0x80, 0x81, + 0x0c, 0x01, 0x9a, 0x83, 0x8c, 0x91, 0x87, 0x80, 0x81, 0x7c, 0x30, 0x26, + 0xfa, 0xbf, 0x7f, 0x83, 0xa0, 0x81, 0x00, 0x3c, 0x23, 0x01, 0x12, 0x00, + 0x0c, 0x00, 0x64, 0xd3, 0x80, 0x81, 0x46, 0xbc, 0x00, 0x63, 0x80, 0xd2, + 0x10, 0x41, 0x98, 0xc3, 0x90, 0x91, 0xd3, 0x90, 0x81, 0x03, 0x49, 0xd0, + 0xd3, 0x90, 0x91, 0xcb, 0x80, 0x81, 0x90, 0x30, 0x94, 0x08, 0x11, 0x98, + 0xc3, 0x88, 0x91, 0x4a, 0xbc, 0x17, 0xd3, 0x80, 0x81, 0x06, 0xfd, 0x1f, + 0x43, 0x48, 0xfb, 0xc3, 0x80, 0x91, 0xd3, 0x80, 0x81, 0x08, 0x81, 0x98, + 0xc3, 0x88, 0x91, 0xc7, 0x80, 0x81, 0x40, 0x40, 0x98, 0xc3, 0x80, 0x91, + 0xd3, 0x80, 0x81, 0x08, 0x01, 0x9a, 0xc3, 0x88, 0x91, 0xc7, 0x80, 0x81, + 0x7c, 0x30, 0x26, 0xfa, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x4b, 0x08, 0xe6, + 0x1d, 0x10, 0x00, 0x04, 0x08, 0x55, 0x48, 0x40, 0x48, 0xa6, 0x00, 0x60, + 0x18, 0x10, 0x2b, 0x92, 0x41, 0x20, 0x01, 0x05, 0x01, 0x00, 0x01, 0x5b, + 0x90, 0x07, 0xe7, 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, 0x80, 0x07, 0xe7, + 0x07, 0x11, 0x80, 0x0f, 0x21, 0x80, 0x3f, 0x31, 0x80, 0xa3, 0x43, 0x90, + 0x88, 0x03, 0xd8, 0xb3, 0x47, 0x90, 0x83, 0x8f, 0x90, 0x93, 0xbf, 0x90, + 0xa4, 0x03, 0xe4, 0x3c, 0xfc, 0x3c, 0x0a, 0xbc, 0x07, 0x5a, 0x40, 0x60, + 0x0d, 0x00, 0x00, 0x10, 0x43, 0x64, 0x13, 0x49, 0xf7, 0x90, 0x10, 0xc8, + 0x87, 0x23, 0x00, 0x83, 0xa3, 0x00, 0xc0, 0xd3, 0x1f, 0x0d, 0x00, 0x00, + 0x88, 0x1e, 0x4e, 0x8e, 0x41, 0x20, 0x87, 0x33, 0x80, 0x93, 0x43, 0x80, + 0xa7, 0x0b, 0xb0, 0x83, 0x53, 0x80, 0xbf, 0x23, 0x80, 0x01, 0x05, 0x01, + 0xc0, 0xfc, 0x7a, 0xd3, 0x04, 0x90, 0xe3, 0x10, 0x90, 0xf3, 0x00, 0x90, + 0x4f, 0x0c, 0xe6, 0x40, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, + 0xbf, 0xbf, 0x7f, 0x03, 0x00, 0xe0, 0x09, 0x00, 0x00, 0xc0, 0xf1, 0x52, + 0x00, 0x00, 0x66, 0x3e, 0x00, 0x60, 0x11, 0x10, 0x00, 0x08, 0x0a, 0x52, + 0x09, 0x00, 0x00, 0x3f, 0x9e, 0xf8, 0x11, 0x10, 0x00, 0x10, 0x0a, 0x64, + 0x86, 0x5c, 0x00, 0x4e, 0x58, 0x22, 0x11, 0x10, 0x00, 0x44, 0x0d, 0x7e, + 0x3e, 0x01, 0xe0, 0xd8, 0xb3, 0x26, 0xfa, 0xff, 0x7f, 0x03, 0x09, 0xb0, + 0x00, 0x00, 0x64, 0xe8, 0xef, 0x63, 0x80, 0x00, 0x64, 0xe0, 0xef, 0x63, + 0x00, 0x01, 0x64, 0xd8, 0xef, 0x63, 0x80, 0x01, 0x64, 0x03, 0x04, 0xe0, + 0x9f, 0x1d, 0xfe, 0x0b, 0x08, 0xe6, 0x84, 0x00, 0x72, 0x5c, 0x04, 0xba, + 0x3a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x18, 0xe1, 0x55, 0x44, 0x48, 0x2b, + 0x71, 0x01, 0x80, 0x4a, 0x44, 0x20, 0x83, 0x51, 0x52, 0xc8, 0xdb, 0x63, + 0x83, 0x81, 0x52, 0xec, 0xd7, 0x63, 0x00, 0x94, 0x26, 0xf6, 0xff, 0x7f, + 0x03, 0x3c, 0xfe, 0x0f, 0x0c, 0xe6, 0x00, 0x00, 0x64, 0xfb, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x1b, 0x10, 0x8e, + 0x08, 0x00, 0x64, 0x83, 0x51, 0x52, 0xcc, 0xd7, 0x63, 0x83, 0x81, 0x52, + 0x0b, 0x0c, 0xe6, 0x5f, 0x1a, 0xfe, 0x03, 0x00, 0xe0, 0x80, 0x00, 0x72, + 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x03, 0x10, 0x8e, 0x60, 0x00, 0xc8, + 0x05, 0x00, 0x00, 0x04, 0x8b, 0x55, 0x28, 0x04, 0xc8, 0x80, 0x01, 0x75, + 0xf4, 0xd3, 0x63, 0x00, 0x20, 0x28, 0x07, 0x04, 0xe0, 0x04, 0x12, 0x64, + 0xf0, 0xcf, 0x63, 0x02, 0xbc, 0x1f, 0xf3, 0xbf, 0x7f, 0x00, 0x00, 0x64, + 0xeb, 0xbf, 0x7f, 0x1b, 0x18, 0xe5, 0x5a, 0x40, 0x20, 0x58, 0x01, 0x72, + 0x09, 0x00, 0x00, 0x14, 0x9d, 0x64, 0x1f, 0x10, 0x02, 0x43, 0x5d, 0xf7, + 0x30, 0x01, 0xc8, 0x05, 0x00, 0x00, 0x00, 0x8b, 0x55, 0x74, 0x01, 0x72, + 0x01, 0x00, 0x00, 0x74, 0x70, 0xbb, 0x80, 0x0c, 0x64, 0x0e, 0x00, 0x40, + 0x58, 0xf3, 0x64, 0x0b, 0x00, 0x60, 0x8c, 0x01, 0x37, 0xc4, 0xaf, 0x64, + 0xb3, 0x1b, 0x90, 0xa3, 0x07, 0x90, 0x09, 0x00, 0x00, 0xfc, 0xaf, 0x63, + 0x05, 0x00, 0x00, 0x00, 0x8b, 0x55, 0xb0, 0x00, 0xc8, 0x80, 0x01, 0x75, + 0xe4, 0xcb, 0x63, 0x0f, 0x38, 0xfe, 0x88, 0x21, 0x2b, 0x8b, 0x4c, 0xfb, + 0x80, 0x01, 0x75, 0xc8, 0xd3, 0x63, 0x00, 0x00, 0x74, 0xc8, 0xcb, 0x63, + 0x1e, 0x48, 0x00, 0xca, 0x41, 0x20, 0x00, 0x00, 0x74, 0xf0, 0xcf, 0x63, + 0xca, 0x49, 0x20, 0x00, 0x00, 0x74, 0xe4, 0xcf, 0x63, 0xca, 0x41, 0x20, + 0x00, 0x00, 0x74, 0xd8, 0xcf, 0x63, 0x82, 0x41, 0x20, 0x1f, 0x1c, 0xe5, + 0x43, 0x5d, 0xf7, 0x04, 0x12, 0x64, 0xd8, 0xc3, 0x63, 0x2b, 0x18, 0xd0, + 0x0a, 0x40, 0x20, 0x43, 0x5d, 0xf7, 0x04, 0x12, 0x64, 0xd8, 0xc3, 0x63, + 0xdb, 0xbf, 0x7f, 0x40, 0xc0, 0xba, 0x00, 0x20, 0x64, 0x5e, 0xff, 0x5f, + 0x18, 0x40, 0x64, 0x5b, 0xbf, 0x7f, 0x03, 0x10, 0xe6, 0x28, 0x00, 0x72, + 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x1f, 0x10, 0x8e, 0x2c, 0x1c, 0x72, + 0x40, 0x00, 0x75, 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, 0x07, 0x14, 0xe6, + 0x5b, 0xa0, 0x00, 0x98, 0x09, 0x2b, 0xc0, 0x99, 0x1d, 0xf4, 0xbb, 0x63, + 0x08, 0x14, 0x26, 0xf6, 0xbf, 0x7f, 0x02, 0xbc, 0x1f, 0xe3, 0xbf, 0x7f, + 0x03, 0x00, 0xe0, 0xc4, 0x00, 0x64, 0xf0, 0xfb, 0x63, 0x07, 0x04, 0xe0, + 0x3b, 0x28, 0xe5, 0x16, 0x40, 0x20, 0x00, 0x00, 0x64, 0xdc, 0xe7, 0x63, + 0x1b, 0x3c, 0xfe, 0x00, 0x00, 0x64, 0xd8, 0xff, 0x63, 0x23, 0x3c, 0xfe, + 0x00, 0x00, 0x74, 0xc4, 0xfb, 0x63, 0x41, 0xff, 0xff, 0x44, 0x18, 0x64, + 0x00, 0x44, 0x24, 0xb9, 0x76, 0x02, 0x03, 0xa0, 0x06, 0x04, 0x19, 0x64, + 0x31, 0x00, 0x00, 0xf4, 0xa3, 0x62, 0x0d, 0x00, 0x00, 0x8c, 0x41, 0x4e, + 0x1e, 0x42, 0x20, 0x04, 0x0e, 0x3a, 0x76, 0x00, 0x60, 0x0d, 0x00, 0x00, + 0x08, 0x42, 0x4e, 0x84, 0xa0, 0x3a, 0x66, 0x40, 0x60, 0x5f, 0x99, 0xf2, + 0x21, 0x00, 0x00, 0x3c, 0x98, 0x64, 0x93, 0x43, 0x90, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x00, 0x7e, 0x24, 0xb3, 0x5f, 0x90, 0xa3, 0x57, 0x90, + 0x31, 0x00, 0x00, 0xd0, 0x97, 0x62, 0x04, 0xc2, 0x64, 0x83, 0x43, 0x90, + 0xb3, 0x1b, 0x90, 0xa3, 0x07, 0x90, 0x09, 0x00, 0x00, 0xdc, 0xe3, 0x62, + 0xbc, 0x1d, 0x48, 0x42, 0x00, 0x60, 0xc3, 0x01, 0x40, 0xf8, 0xdf, 0x63, + 0x80, 0x07, 0x64, 0x3b, 0x2c, 0xe5, 0xff, 0x12, 0xfe, 0xc4, 0x1c, 0x3a, + 0x0e, 0x00, 0x60, 0x9f, 0x09, 0x00, 0x9b, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x10, 0x42, 0x4e, 0xc4, 0x91, 0x3a, 0x9f, 0x49, 0x00, 0x9f, 0xdd, 0xf9, + 0x83, 0xbf, 0x7f, 0x3f, 0x2c, 0xe5, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xf0, 0xef, 0x63, 0x8f, 0x23, 0x80, 0x01, 0x12, 0x00, 0x04, 0x00, 0x55, + 0x03, 0x3c, 0xfe, 0x01, 0x00, 0x00, 0x20, 0x3c, 0xbb, 0xc8, 0x04, 0x2b, + 0x44, 0x88, 0x3e, 0x4e, 0x0c, 0x00, 0x52, 0x08, 0x00, 0x1a, 0x00, 0x60, + 0x2c, 0x10, 0x72, 0xfe, 0x48, 0x20, 0xec, 0xbc, 0x48, 0x1e, 0x40, 0x60, + 0x17, 0x04, 0xe0, 0x01, 0x00, 0x00, 0x04, 0x40, 0xb3, 0xf6, 0xbf, 0x7f, + 0xe0, 0xd3, 0xc9, 0x7e, 0x04, 0x00, 0x01, 0x12, 0x00, 0x0c, 0x00, 0x64, + 0xd3, 0x00, 0x80, 0xc0, 0x00, 0x64, 0x04, 0x88, 0x40, 0xc8, 0x8b, 0x40, + 0x13, 0x45, 0xfc, 0xc3, 0x10, 0x90, 0xc3, 0x00, 0x80, 0xbf, 0x40, 0xfb, + 0xc3, 0x3c, 0x90, 0xbf, 0xbf, 0x7f, 0x0f, 0x38, 0xe5, 0x11, 0x10, 0x00, + 0x00, 0x06, 0x55, 0x3c, 0x7c, 0xb3, 0x52, 0x01, 0x40, 0x0f, 0x3c, 0xe5, + 0x97, 0x90, 0x32, 0x8c, 0x15, 0x72, 0x82, 0xb8, 0x00, 0x08, 0x84, 0x92, + 0xba, 0x40, 0x60, 0x83, 0x81, 0x50, 0xd8, 0x9f, 0x63, 0x51, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x51, 0x00, 0x00, 0x40, 0x00, 0x86, 0x26, 0x40, 0x20, + 0x16, 0x40, 0x20, 0x9a, 0x00, 0x40, 0xa1, 0x00, 0x00, 0x00, 0x80, 0x8a, + 0x86, 0x40, 0x60, 0x83, 0xb1, 0x50, 0xe8, 0x9b, 0x63, 0x2a, 0x40, 0x20, + 0x83, 0xa1, 0x50, 0xdc, 0x9b, 0x63, 0x2e, 0x40, 0x20, 0x83, 0x91, 0x50, + 0xd0, 0x9b, 0x63, 0x84, 0x2e, 0x3a, 0xfe, 0x00, 0x60, 0x88, 0x42, 0x31, + 0xa4, 0x80, 0x3a, 0xf2, 0x40, 0x40, 0xec, 0x42, 0x31, 0xe4, 0x2a, 0x3a, + 0x16, 0x00, 0x60, 0x0c, 0x40, 0x31, 0xe4, 0x88, 0x3a, 0x0a, 0x40, 0x60, + 0xdf, 0x05, 0x00, 0x7c, 0x12, 0x26, 0x0a, 0x00, 0x60, 0x56, 0x42, 0x01, + 0x74, 0x91, 0x26, 0x0a, 0x40, 0x60, 0x56, 0xc1, 0x00, 0x4a, 0x41, 0x20, + 0x83, 0x81, 0x50, 0xd0, 0x97, 0x63, 0x4a, 0xc1, 0x21, 0x83, 0x81, 0x50, + 0xc4, 0x97, 0x63, 0x23, 0x06, 0x00, 0x9b, 0x11, 0x00, 0x8b, 0x01, 0x80, + 0x3d, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x3d, 0x00, 0x00, 0xc0, 0x00, 0x92, + 0x22, 0xbf, 0x7f, 0x00, 0x00, 0x64, 0xf8, 0xbb, 0x63, 0x0d, 0x00, 0x00, + 0x14, 0x28, 0x64, 0x18, 0x00, 0x64, 0x83, 0x01, 0x40, 0xd8, 0xb7, 0x63, + 0x50, 0x09, 0x58, 0x23, 0x06, 0x00, 0x0c, 0x90, 0x3a, 0x5a, 0x40, 0x60, + 0x7e, 0x39, 0xc1, 0xec, 0x03, 0x3a, 0x0a, 0x00, 0x60, 0xdf, 0x05, 0x00, + 0x9b, 0x05, 0x00, 0xa0, 0x85, 0x92, 0xd2, 0xff, 0x7f, 0xfc, 0x21, 0x48, + 0x0e, 0x00, 0x40, 0x40, 0x00, 0x65, 0xe8, 0xd3, 0x63, 0x00, 0x00, 0x64, + 0x0b, 0x3c, 0xe5, 0x2f, 0x1c, 0xfe, 0x0d, 0x00, 0x00, 0x04, 0x1e, 0x52, + 0x40, 0x90, 0x26, 0xea, 0xff, 0x5f, 0x09, 0x00, 0x00, 0x18, 0x9f, 0x64, + 0x6f, 0xbf, 0x7f, 0x80, 0x00, 0x64, 0xd3, 0xbf, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x10, 0xe0, 0x03, 0x8f, 0xf1, 0x11, 0x10, 0x00, 0x24, 0x40, 0x80, + 0x07, 0xa5, 0xf1, 0x51, 0x10, 0x00, 0x3c, 0x1c, 0x64, 0xc3, 0x07, 0x90, + 0x03, 0xcf, 0xf1, 0xd3, 0x03, 0x90, 0x87, 0xce, 0xf1, 0xe3, 0x07, 0x90, + 0x03, 0xce, 0xf1, 0xf3, 0x03, 0x90, 0x03, 0x14, 0xe0, 0x3f, 0xc3, 0xfe, + 0x47, 0x44, 0x00, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x93, 0x03, 0xbc, 0xfd, + 0x03, 0x04, 0x00, 0x3c, 0xfc, 0xe4, 0xeb, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x08, 0x25, 0x55, 0x0d, 0x00, 0x00, 0x12, 0xbc, 0x1f, 0x03, 0x0c, 0x36, + 0x87, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x3d, 0x00, 0x00, + 0xc0, 0x00, 0x92, 0x12, 0x00, 0x60, 0x08, 0x00, 0x64, 0x82, 0x40, 0x20, + 0x00, 0x3c, 0x23, 0x4f, 0x24, 0x37, 0xec, 0x90, 0x48, 0x12, 0x40, 0x60, + 0x47, 0x10, 0x35, 0x7c, 0x00, 0x48, 0xe6, 0xbf, 0x7f, 0x8b, 0x10, 0x00, + 0xc3, 0xbf, 0x7f, 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, + 0x03, 0x10, 0x8e, 0x24, 0x00, 0x72, 0x40, 0x00, 0x75, 0x0d, 0x00, 0x00, + 0xd4, 0x07, 0x82, 0x00, 0x3c, 0x23, 0x1b, 0x08, 0xe6, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x93, 0x1a, 0x40, 0x20, 0x1a, 0x00, 0x60, 0x03, 0x10, 0x80, + 0x01, 0x00, 0x3c, 0x00, 0x80, 0x8e, 0x40, 0x00, 0x64, 0x7e, 0x40, 0x60, + 0xfd, 0xff, 0xff, 0xb8, 0x7c, 0x87, 0x2e, 0x00, 0x60, 0x82, 0x11, 0xc0, + 0xfd, 0xff, 0xff, 0x3c, 0xfc, 0x85, 0x1e, 0x40, 0x60, 0xa3, 0x0f, 0x90, + 0xfc, 0xf3, 0x63, 0x8f, 0x23, 0x80, 0x24, 0x00, 0x72, 0x80, 0x00, 0x64, + 0x4b, 0x00, 0x60, 0x00, 0x00, 0x64, 0x88, 0x00, 0xc8, 0xfd, 0xff, 0xff, + 0xf8, 0x7c, 0x87, 0x3a, 0x00, 0x60, 0x87, 0x11, 0x80, 0x01, 0xff, 0x03, + 0x4a, 0x00, 0x00, 0x01, 0xff, 0x03, 0x80, 0x80, 0x86, 0x22, 0x40, 0x60, + 0x13, 0x00, 0x80, 0x4f, 0x28, 0x38, 0x00, 0x00, 0x64, 0x3f, 0xa1, 0x3b, + 0xc4, 0x3c, 0x3a, 0x02, 0x0c, 0x80, 0x1f, 0x0c, 0xe6, 0x00, 0x00, 0x64, + 0xfb, 0xbf, 0x7f, 0x00, 0x04, 0x92, 0x1e, 0x00, 0x60, 0x11, 0x10, 0x00, + 0x0c, 0x0a, 0x52, 0xcf, 0x04, 0xd0, 0x11, 0x10, 0x00, 0x44, 0x0d, 0x7e, + 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x03, 0xa0, 0x03, 0x0a, 0x20, 0xe4, + 0x93, 0x04, 0xd0, 0x23, 0x08, 0xb2, 0x00, 0x3c, 0x23, 0x00, 0x04, 0x92, + 0x46, 0x0c, 0x00, 0x26, 0x00, 0x60, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, + 0x4c, 0x0c, 0x2b, 0x0a, 0xe0, 0x00, 0x93, 0x4c, 0xfb, 0x11, 0x10, 0x00, + 0x44, 0x11, 0x7e, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x03, 0xa0, 0x03, + 0x0a, 0x20, 0xe4, 0x4c, 0x10, 0x2b, 0x92, 0xc0, 0x01, 0x07, 0x4d, 0xfb, + 0x23, 0x04, 0xb2, 0x00, 0x3c, 0x23, 0x13, 0x10, 0xe6, 0x47, 0x10, 0x00, + 0x58, 0x14, 0x2b, 0x86, 0x41, 0x20, 0x1e, 0x40, 0x20, 0xa3, 0x0b, 0x90, + 0xf9, 0xff, 0xff, 0xf0, 0xaf, 0x62, 0x8b, 0x23, 0x80, 0x00, 0x18, 0x94, + 0x80, 0x00, 0x92, 0x13, 0x00, 0xfd, 0x80, 0x80, 0x86, 0x04, 0x29, 0x2b, + 0x0f, 0x40, 0xfd, 0xd0, 0x24, 0x2b, 0x0b, 0x44, 0xfb, 0x8b, 0x50, 0xfb, + 0xc0, 0x99, 0x1d, 0x13, 0x14, 0xe6, 0xf9, 0xff, 0xff, 0x0f, 0x05, 0xfe, + 0x0f, 0x28, 0xe5, 0x1a, 0x40, 0x20, 0x20, 0x00, 0xc8, 0x03, 0x00, 0x80, + 0x00, 0x30, 0x26, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x0b, 0x82, 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x04, 0x40, 0x55, + 0x0f, 0x10, 0x35, 0x4b, 0x0c, 0x32, 0xc0, 0x88, 0x3a, 0x72, 0x40, 0x60, + 0x48, 0x02, 0x64, 0xdb, 0xbf, 0x7f, 0x80, 0x9d, 0x1d, 0x08, 0x02, 0xe5, + 0xf9, 0xff, 0xff, 0xc0, 0x97, 0x62, 0x06, 0x0a, 0xc0, 0x40, 0x80, 0x90, + 0x26, 0x40, 0x60, 0x01, 0x00, 0x04, 0x00, 0x20, 0x8e, 0x1a, 0x00, 0x60, + 0x00, 0x74, 0x98, 0x08, 0x08, 0x94, 0x80, 0x9d, 0x1d, 0xf9, 0xff, 0xff, + 0xf8, 0x8f, 0x62, 0x57, 0x05, 0x00, 0xdf, 0x01, 0x01, 0x93, 0x01, 0x80, + 0x3f, 0xa1, 0x3b, 0xfc, 0x17, 0x3a, 0xb2, 0xbf, 0x7f, 0xc0, 0x2b, 0x64, + 0x0b, 0x2c, 0xe5, 0xf5, 0xff, 0xff, 0xef, 0x17, 0xfe, 0x1c, 0x20, 0x64, + 0x0d, 0x00, 0x00, 0x20, 0x1e, 0x64, 0xd7, 0xbf, 0x7f, 0x0b, 0x28, 0xe5, + 0x1a, 0x40, 0x20, 0x20, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x40, 0x30, 0x26, + 0x16, 0x00, 0x60, 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, + 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0x53, 0x10, 0x35, + 0x8f, 0x0c, 0x32, 0x00, 0x8d, 0x3a, 0x0e, 0x40, 0x60, 0x44, 0x02, 0x64, + 0xdb, 0xbf, 0x7f, 0x04, 0x20, 0x64, 0xf5, 0xff, 0xff, 0xd8, 0xf3, 0x63, + 0x0d, 0x00, 0x00, 0x84, 0x1e, 0x4e, 0x40, 0x00, 0x84, 0xc6, 0xbf, 0x5f, + 0x1c, 0xb0, 0x26, 0x76, 0x40, 0x60, 0x00, 0x10, 0x94, 0x0a, 0x40, 0x30, + 0x83, 0x01, 0x52, 0x0b, 0x2c, 0xe5, 0xf5, 0xff, 0xff, 0x8f, 0x1d, 0xfe, + 0x80, 0x9d, 0x1d, 0x08, 0x02, 0xe5, 0xf5, 0xff, 0xff, 0xd8, 0xe7, 0x63, + 0x0e, 0x0a, 0xc0, 0xc0, 0x80, 0x90, 0x26, 0x40, 0x60, 0x01, 0x00, 0x02, + 0x00, 0x20, 0x8e, 0x1a, 0x00, 0x60, 0x10, 0x10, 0x94, 0x0a, 0x41, 0x30, + 0x80, 0x9d, 0x1d, 0xf5, 0xff, 0xff, 0xd0, 0xe3, 0x63, 0x57, 0x05, 0x00, + 0xdf, 0x01, 0x01, 0xbf, 0x01, 0x80, 0xcb, 0xa3, 0x3b, 0xbc, 0x14, 0x3a, + 0xb2, 0xbf, 0x7f, 0x4f, 0xbf, 0x7f, 0x1c, 0x28, 0x64, 0x54, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0x20, 0x1e, 0x64, 0xdf, 0xbf, 0x7f, 0x2c, 0x08, 0xc8, + 0x4c, 0x10, 0x5a, 0x8b, 0x50, 0x00, 0x10, 0x0c, 0x7a, 0xf3, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x3b, 0x88, 0xe5, 0x22, 0x40, 0x20, 0x5e, 0x40, 0x20, + 0xab, 0x23, 0x00, 0xc0, 0x89, 0x1d, 0xb3, 0x4f, 0x90, 0xa3, 0x4b, 0x90, + 0xa7, 0x79, 0x60, 0x87, 0x43, 0x81, 0x8b, 0x23, 0x00, 0x03, 0x84, 0xf6, + 0x87, 0x63, 0x80, 0x84, 0x02, 0x78, 0xc2, 0x41, 0x20, 0x97, 0xca, 0xf2, + 0x83, 0x79, 0x60, 0xa6, 0x42, 0x20, 0x58, 0x81, 0x1d, 0x8b, 0x63, 0x80, + 0x8f, 0x73, 0x80, 0x84, 0xc3, 0x73, 0x58, 0x0c, 0xc8, 0xdc, 0x14, 0x3a, + 0x26, 0x00, 0x60, 0x9b, 0x23, 0x00, 0xbf, 0xe9, 0xf2, 0x10, 0x0c, 0x64, + 0xcf, 0x8f, 0xf2, 0x20, 0x0c, 0xca, 0x84, 0x12, 0x78, 0x83, 0x96, 0xf2, + 0x1b, 0xe4, 0xf2, 0x8b, 0x23, 0x00, 0xac, 0xa8, 0x48, 0x1e, 0x40, 0x40, + 0x87, 0x23, 0x00, 0x12, 0x42, 0x20, 0xbf, 0xc6, 0xf2, 0x18, 0x3c, 0xca, + 0x8c, 0xfe, 0x5c, 0x04, 0x0d, 0x78, 0x82, 0x41, 0x20, 0x3f, 0x8c, 0xe5, + 0x3b, 0x88, 0xe5, 0x22, 0x40, 0x20, 0x5e, 0x40, 0x20, 0xab, 0x23, 0x00, + 0xc0, 0x89, 0x1d, 0xb3, 0x4f, 0x90, 0xa3, 0x4b, 0x90, 0xfb, 0x78, 0x60, + 0x87, 0x43, 0x81, 0x8b, 0x23, 0x00, 0x03, 0x84, 0xf6, 0x87, 0x63, 0x80, + 0x84, 0x02, 0x78, 0xc2, 0x41, 0x20, 0x97, 0xca, 0xf2, 0xd7, 0x78, 0x60, + 0xa6, 0x42, 0x20, 0x58, 0x81, 0x1d, 0x8b, 0x63, 0x80, 0x8f, 0x73, 0x80, + 0x84, 0xc3, 0x73, 0x58, 0x0c, 0xc8, 0xdc, 0x14, 0x3a, 0x26, 0x00, 0x60, + 0x9b, 0x23, 0x00, 0xbf, 0xe9, 0xf2, 0x10, 0x0c, 0x64, 0xcf, 0x8f, 0xf2, + 0x20, 0x0c, 0xca, 0x84, 0x12, 0x78, 0x83, 0x96, 0xf2, 0x1b, 0xe4, 0xf2, + 0x8b, 0x23, 0x00, 0xac, 0xa8, 0x48, 0x1e, 0x40, 0x40, 0x87, 0x23, 0x00, + 0x12, 0x42, 0x20, 0xbf, 0xc6, 0xf2, 0x18, 0x3c, 0xca, 0x8c, 0xfe, 0x5c, + 0x04, 0x0d, 0x78, 0x82, 0x41, 0x20, 0x3f, 0x8c, 0xe5, 0x1f, 0x88, 0xe5, + 0x2e, 0x40, 0x20, 0xda, 0x42, 0x20, 0x82, 0x40, 0x20, 0x4a, 0x00, 0xe0, + 0x84, 0x00, 0x66, 0x12, 0x00, 0x60, 0x80, 0x01, 0xe4, 0x83, 0xed, 0xf2, + 0x1f, 0x8c, 0xe5, 0xa8, 0x90, 0x66, 0x5f, 0x04, 0x00, 0x12, 0x40, 0x60, + 0x84, 0x09, 0x78, 0xc6, 0x41, 0x20, 0xd7, 0xbf, 0x7f, 0x4e, 0x04, 0xe0, + 0xdc, 0x10, 0x66, 0x0a, 0x00, 0x60, 0x5f, 0x08, 0x00, 0xc6, 0x01, 0xe0, + 0x6c, 0x94, 0x66, 0x0a, 0x40, 0x60, 0xdf, 0x05, 0x00, 0x88, 0x02, 0x74, + 0xfe, 0x41, 0x20, 0xd4, 0x07, 0x5e, 0x53, 0xc1, 0x01, 0x0c, 0x05, 0x3b, + 0x1e, 0x00, 0x60, 0x70, 0x95, 0x66, 0x6e, 0x40, 0x40, 0xde, 0x43, 0x20, + 0x28, 0x00, 0x64, 0x94, 0x02, 0x64, 0x4b, 0x00, 0x60, 0xd2, 0x05, 0xe0, + 0x57, 0xc1, 0x01, 0xcf, 0x94, 0xf2, 0x1f, 0xc1, 0x01, 0xc8, 0x85, 0x3b, + 0x0a, 0x40, 0x60, 0xcc, 0x48, 0x24, 0xde, 0x43, 0x20, 0xb7, 0xbf, 0x7f, + 0xde, 0x05, 0xe0, 0x53, 0xc0, 0x01, 0xab, 0x92, 0xf2, 0xc7, 0xc1, 0x01, + 0x48, 0x04, 0x3b, 0x0a, 0x00, 0x60, 0xa8, 0x56, 0x24, 0xde, 0x43, 0x20, + 0xfe, 0x41, 0x20, 0xc4, 0x07, 0x5e, 0x4b, 0xc0, 0x01, 0x8c, 0x04, 0x3b, + 0xd2, 0xbf, 0x7f, 0xd2, 0x01, 0xe0, 0x3c, 0x00, 0x64, 0x24, 0xb5, 0x66, + 0x0e, 0x40, 0x60, 0xdf, 0x05, 0x00, 0x7c, 0x00, 0x64, 0xd6, 0x01, 0xe0, + 0x64, 0x35, 0x66, 0x0e, 0x00, 0x60, 0xdf, 0x05, 0x00, 0xff, 0x07, 0x00, + 0xca, 0x01, 0xe0, 0x98, 0xb0, 0x66, 0x52, 0x43, 0x60, 0x98, 0x30, 0x3b, + 0x6a, 0x00, 0x60, 0x80, 0xac, 0x66, 0x8e, 0x42, 0x60, 0x80, 0x2c, 0x3b, + 0x36, 0x00, 0x60, 0x88, 0xa4, 0x66, 0xaa, 0x40, 0x60, 0x80, 0xa8, 0x66, + 0x3e, 0x40, 0x40, 0x0c, 0x52, 0x64, 0x84, 0x28, 0x66, 0xc4, 0x04, 0x70, + 0x07, 0x00, 0x80, 0x17, 0x10, 0x00, 0xa3, 0x0f, 0x90, 0x0c, 0x02, 0x64, + 0x7f, 0x02, 0x60, 0x88, 0x30, 0x66, 0x7a, 0x01, 0x60, 0x88, 0xb0, 0x3b, + 0xae, 0x42, 0x60, 0x90, 0x2c, 0x66, 0xba, 0x02, 0x60, 0x83, 0x09, 0xb0, + 0x16, 0x40, 0x20, 0xf3, 0x02, 0x60, 0x98, 0x38, 0x66, 0xe2, 0x00, 0x60, + 0x98, 0xb8, 0x3b, 0x16, 0x40, 0x60, 0xa0, 0x30, 0x66, 0x96, 0x01, 0x60, + 0x80, 0xb8, 0x66, 0x9f, 0xbf, 0x7f, 0xb8, 0xb8, 0x66, 0x5a, 0x42, 0x60, + 0x80, 0x3c, 0x66, 0x02, 0x02, 0x60, 0xa8, 0xb8, 0x66, 0xc2, 0xff, 0x5f, + 0xc8, 0x03, 0x86, 0x08, 0x52, 0x64, 0xda, 0x01, 0x60, 0xa3, 0x0b, 0x90, + 0x17, 0x10, 0x00, 0x88, 0x02, 0x64, 0x07, 0x00, 0x80, 0x87, 0x00, 0x60, + 0x27, 0x00, 0x80, 0x20, 0x52, 0x64, 0x88, 0x02, 0x74, 0x17, 0x10, 0x00, + 0x46, 0x02, 0xe0, 0xa3, 0x23, 0x90, 0x82, 0x41, 0x20, 0xb4, 0x0b, 0x64, + 0xe4, 0xcb, 0x63, 0x83, 0x81, 0xf2, 0x03, 0x34, 0xb0, 0x33, 0x04, 0x00, + 0x88, 0x02, 0x74, 0x02, 0x43, 0x20, 0x46, 0x06, 0xe0, 0xa3, 0x23, 0x90, + 0xc4, 0xcb, 0x63, 0x0f, 0x83, 0xf2, 0xc3, 0x34, 0xb0, 0xdb, 0x04, 0x00, + 0x82, 0x41, 0x20, 0x88, 0x02, 0x74, 0x46, 0x0a, 0xe0, 0xa3, 0x23, 0x90, + 0xe4, 0xc7, 0x63, 0x87, 0x81, 0xf2, 0x43, 0x34, 0xb0, 0x5b, 0x04, 0x00, + 0x0c, 0x00, 0x64, 0x46, 0x0e, 0xe0, 0xa3, 0x23, 0x90, 0x88, 0x02, 0x64, + 0x82, 0x41, 0x20, 0xc0, 0xc7, 0x63, 0x33, 0x01, 0x60, 0x07, 0x00, 0x80, + 0xcb, 0x68, 0xfb, 0x17, 0x10, 0x00, 0x40, 0x80, 0x86, 0x42, 0x68, 0xab, + 0x86, 0x41, 0x20, 0x5c, 0x08, 0x72, 0x0c, 0x04, 0x5e, 0xc4, 0x80, 0x66, + 0x12, 0x40, 0x60, 0xdf, 0x05, 0x00, 0x42, 0x41, 0x20, 0x9b, 0xbd, 0x7f, + 0x84, 0x0d, 0x78, 0xe7, 0xbf, 0x7f, 0x44, 0x3c, 0x78, 0x0e, 0x41, 0x20, + 0x5a, 0x40, 0x20, 0xc0, 0xcf, 0xc9, 0x3c, 0x04, 0x5e, 0xd3, 0x44, 0x00, + 0xc4, 0x03, 0x66, 0xe6, 0xbf, 0x7f, 0x00, 0x08, 0x64, 0xce, 0x40, 0x20, + 0xd2, 0x40, 0x20, 0x10, 0x10, 0xca, 0x84, 0x01, 0x78, 0xbb, 0xbf, 0x7f, + 0x23, 0x00, 0x80, 0x17, 0x10, 0x00, 0x33, 0x16, 0x00, 0x24, 0x52, 0x64, + 0x04, 0x06, 0x5e, 0xa3, 0x27, 0x90, 0x08, 0x04, 0x64, 0x82, 0x41, 0x20, + 0x8c, 0x00, 0x64, 0xe0, 0xbb, 0x63, 0x8b, 0x81, 0xf2, 0x40, 0x0b, 0x64, + 0x83, 0x00, 0xb0, 0x2c, 0xa3, 0x48, 0x9b, 0x04, 0x00, 0xd2, 0xff, 0x7f, + 0x06, 0x03, 0xe0, 0xa3, 0x27, 0x90, 0x8c, 0x00, 0x64, 0xb3, 0x00, 0x60, + 0xc8, 0x83, 0x86, 0x30, 0x52, 0x64, 0x2a, 0x40, 0x60, 0x07, 0x00, 0x80, + 0x17, 0x10, 0x00, 0x7c, 0x7c, 0xbb, 0x12, 0x00, 0x60, 0x50, 0x0b, 0x64, + 0x84, 0x11, 0x78, 0x44, 0x00, 0x25, 0xa3, 0x33, 0x90, 0x03, 0xbf, 0x7f, + 0x27, 0x10, 0x80, 0x17, 0x20, 0x00, 0x23, 0x00, 0x80, 0x7c, 0xfe, 0xbb, + 0x16, 0x40, 0x60, 0x40, 0x0b, 0x75, 0x84, 0x05, 0x78, 0x20, 0x60, 0x49, + 0x24, 0x24, 0x6f, 0xa3, 0x33, 0x90, 0x88, 0x02, 0x64, 0x06, 0x42, 0x20, + 0x82, 0x41, 0x20, 0xfc, 0xbb, 0x63, 0x9b, 0x81, 0xf2, 0xfb, 0xbe, 0x7f, + 0xa3, 0x0b, 0x90, 0x17, 0x20, 0x00, 0x88, 0x02, 0x64, 0x07, 0x00, 0x80, + 0xe3, 0xbf, 0x7f, 0xc8, 0x83, 0x86, 0x10, 0x52, 0x64, 0x84, 0x2c, 0x66, + 0x26, 0x40, 0x60, 0x17, 0x10, 0x00, 0x07, 0x00, 0x80, 0x02, 0x41, 0x20, + 0x0a, 0x00, 0x40, 0x03, 0x85, 0x00, 0xa3, 0x03, 0x90, 0x08, 0x04, 0x64, + 0x83, 0xbe, 0x7f, 0x17, 0x20, 0x00, 0x07, 0x00, 0x80, 0x3e, 0x41, 0x20, + 0x0a, 0x00, 0x40, 0x3f, 0x85, 0x00, 0xa3, 0x3f, 0x90, 0x08, 0x04, 0x64, + 0x93, 0xbf, 0x7f, 0x0c, 0x52, 0x64, 0x06, 0x00, 0xc0, 0x17, 0x10, 0x00, + 0xa3, 0x0f, 0x90, 0x0c, 0x01, 0x64, 0xc7, 0xbf, 0x7f, 0x3c, 0x52, 0x64, + 0x06, 0x00, 0xe0, 0x17, 0x10, 0x00, 0xa3, 0x3f, 0x90, 0xff, 0xbe, 0x7f, + 0x16, 0x40, 0x20, 0x60, 0x21, 0x5a, 0x27, 0x10, 0x80, 0xb0, 0xe0, 0xc9, + 0x10, 0x52, 0x64, 0x44, 0x06, 0x5e, 0xa3, 0x13, 0x90, 0x82, 0x41, 0x20, + 0x8c, 0x00, 0x64, 0x08, 0x04, 0x64, 0xcc, 0xa7, 0x63, 0x9b, 0x81, 0xf2, + 0x23, 0x46, 0x00, 0xdb, 0xbf, 0x7f, 0x0b, 0x00, 0x80, 0x17, 0x10, 0x00, + 0x83, 0x09, 0xb0, 0x9b, 0x05, 0x00, 0x1f, 0xbe, 0x7f, 0x03, 0x00, 0xe0, + 0x87, 0x43, 0x80, 0x8b, 0x93, 0x00, 0xf4, 0xb7, 0x63, 0x07, 0x04, 0xe0, + 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, 0x00, 0x91, 0x55, 0x09, 0x00, 0x00, + 0x04, 0x02, 0x81, 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, 0x00, 0x90, 0x55, + 0x09, 0x00, 0x00, 0x24, 0x02, 0x81, 0x00, 0x3c, 0x23, 0x17, 0x81, 0xe6, + 0x05, 0x00, 0x00, 0x00, 0x89, 0x55, 0x38, 0x00, 0xc8, 0x00, 0x40, 0x64, + 0x05, 0x00, 0x00, 0x27, 0xf1, 0xf8, 0x18, 0x00, 0xca, 0x80, 0x01, 0xe4, + 0x9b, 0x05, 0x00, 0x05, 0x00, 0x00, 0x18, 0x8a, 0x55, 0x40, 0x5c, 0x64, + 0xa3, 0x03, 0x90, 0x83, 0x83, 0x00, 0xb3, 0x1b, 0x90, 0x9b, 0x05, 0x00, + 0xfc, 0xf7, 0x63, 0x87, 0xe3, 0x82, 0x8f, 0x83, 0x00, 0x8b, 0xb3, 0x05, + 0xc3, 0x80, 0xf2, 0x05, 0x00, 0x00, 0x44, 0x19, 0x81, 0xe0, 0xaf, 0x63, + 0x11, 0x10, 0x00, 0x08, 0x0b, 0x4e, 0x80, 0x00, 0x84, 0x3e, 0x00, 0x60, + 0x11, 0x10, 0x00, 0x10, 0x0b, 0x64, 0x32, 0x09, 0xc0, 0x00, 0x83, 0x90, + 0xfa, 0xff, 0x7f, 0xb3, 0x83, 0x00, 0x04, 0x00, 0x64, 0x3c, 0x07, 0x5e, + 0xc0, 0x03, 0x66, 0x0e, 0x00, 0x60, 0x40, 0xc0, 0x92, 0x12, 0x40, 0x60, + 0x11, 0x10, 0x00, 0x74, 0x05, 0x82, 0x17, 0x85, 0xe6, 0x44, 0x3c, 0x78, + 0xdf, 0xbf, 0x7f, 0x23, 0x00, 0xe0, 0x04, 0x5e, 0x64, 0xb3, 0x03, 0x90, + 0xa3, 0x07, 0x90, 0x83, 0x43, 0x90, 0xf4, 0xf3, 0x63, 0x11, 0x10, 0x00, + 0x00, 0x21, 0x55, 0x3c, 0x7c, 0xb3, 0x12, 0x00, 0x60, 0x8b, 0x43, 0x80, + 0x11, 0x10, 0x00, 0x24, 0x48, 0x80, 0x27, 0x04, 0xe0, 0x03, 0x00, 0xe0, + 0x03, 0xae, 0xf1, 0x09, 0x0c, 0x00, 0x00, 0xb8, 0x64, 0xe3, 0x02, 0xf2, + 0x01, 0x10, 0x00, 0x04, 0x00, 0x64, 0xfd, 0x1f, 0x00, 0xcc, 0xff, 0x64, + 0x4a, 0xfc, 0x00, 0xd2, 0xfc, 0x00, 0x86, 0x70, 0x20, 0x0b, 0x41, 0x01, + 0x14, 0x10, 0x72, 0x08, 0x00, 0x64, 0x80, 0x23, 0x64, 0x17, 0x6e, 0x60, + 0x01, 0x80, 0xff, 0x08, 0x00, 0x64, 0x01, 0x80, 0xff, 0x04, 0x03, 0x64, + 0x00, 0x24, 0x64, 0x03, 0x04, 0xe0, 0xfb, 0x2d, 0x60, 0x0f, 0x3a, 0xe5, + 0x01, 0x12, 0x00, 0x04, 0x40, 0x64, 0x43, 0x00, 0x80, 0x3c, 0x7c, 0xb3, + 0xfa, 0xbf, 0x7f, 0x67, 0x00, 0x80, 0x83, 0x23, 0x00, 0x01, 0x12, 0x00, + 0x04, 0x80, 0x64, 0x09, 0x00, 0x00, 0x1c, 0x9f, 0x64, 0x67, 0x32, 0x34, + 0x4b, 0x06, 0x00, 0x4b, 0xf8, 0x7f, 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, + 0x40, 0x91, 0xb4, 0x92, 0x41, 0x60, 0x8b, 0x23, 0x00, 0x2f, 0x8a, 0xf6, + 0xc4, 0x02, 0x66, 0x82, 0x01, 0x40, 0xef, 0x46, 0x00, 0x08, 0x00, 0x74, + 0x00, 0xae, 0x1d, 0xf1, 0xff, 0xff, 0xf4, 0x9b, 0x62, 0x1a, 0x40, 0x20, + 0xc8, 0x02, 0xc8, 0x0d, 0x00, 0x00, 0x8c, 0x1e, 0x4e, 0xe0, 0x80, 0x84, + 0x56, 0x41, 0x60, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x0d, 0x00, 0x00, + 0x2a, 0xbc, 0x1f, 0x0b, 0x10, 0x38, 0x0c, 0x00, 0x64, 0x2e, 0x00, 0x40, + 0x4c, 0x00, 0x64, 0x08, 0x01, 0x64, 0x80, 0xae, 0x1d, 0xf1, 0xff, 0xff, + 0xdc, 0x8f, 0x62, 0x13, 0x10, 0x38, 0x04, 0x51, 0x2b, 0x98, 0xc1, 0x9f, + 0x9b, 0x45, 0xfb, 0x48, 0x00, 0x75, 0xbf, 0x11, 0x3a, 0x90, 0x14, 0x2b, + 0xc4, 0x07, 0x2b, 0x82, 0xbe, 0x0f, 0x08, 0x38, 0x2b, 0x7f, 0x50, 0xfb, + 0xee, 0x3e, 0x00, 0xd0, 0x2a, 0x2b, 0xc7, 0x4b, 0xfb, 0x43, 0x50, 0xfb, + 0x3e, 0x44, 0x20, 0xc8, 0x24, 0x2b, 0xef, 0x4b, 0xfb, 0xc3, 0x2d, 0x90, + 0x09, 0x00, 0x00, 0xa3, 0x0e, 0xbf, 0x09, 0x00, 0x00, 0x2c, 0x9d, 0x64, + 0xc3, 0x01, 0x80, 0x12, 0xb8, 0x00, 0x08, 0x81, 0x92, 0x5e, 0x40, 0x60, + 0xc3, 0x11, 0x50, 0xf1, 0xff, 0xff, 0xf4, 0xb3, 0x62, 0xcf, 0x01, 0x80, + 0xe3, 0x80, 0xdb, 0xc3, 0x0d, 0x90, 0xe4, 0xb0, 0x26, 0x0e, 0x40, 0x40, + 0xc2, 0x41, 0x20, 0x67, 0x65, 0x60, 0x01, 0xf0, 0x00, 0xbe, 0x01, 0x00, + 0x01, 0x60, 0x00, 0xc0, 0x03, 0x92, 0x0d, 0x00, 0x00, 0x10, 0x1e, 0x64, + 0x92, 0x00, 0x60, 0x9b, 0x11, 0x38, 0x98, 0x18, 0xc8, 0x44, 0x00, 0x64, + 0x0b, 0x05, 0xa0, 0x4f, 0x00, 0x60, 0x08, 0x05, 0x86, 0x1a, 0x00, 0x60, + 0xc1, 0x7f, 0x00, 0x06, 0x00, 0x00, 0x41, 0x09, 0x00, 0x40, 0x80, 0x92, + 0x12, 0x40, 0x60, 0xc2, 0x41, 0x20, 0x17, 0x65, 0x60, 0xaf, 0xbf, 0x7f, + 0x30, 0x01, 0x92, 0xa6, 0xbf, 0x7f, 0xc2, 0x41, 0x20, 0x1f, 0x65, 0x60, + 0x9b, 0xbf, 0x7f, 0xc3, 0x42, 0x84, 0x6c, 0xc3, 0x73, 0xc3, 0x5e, 0x94, + 0x0e, 0x09, 0xc0, 0xc0, 0x00, 0x90, 0x0e, 0x00, 0x60, 0xdf, 0x11, 0x00, + 0x57, 0x05, 0x00, 0x23, 0x06, 0x00, 0x1c, 0xa6, 0x3a, 0x5e, 0xfe, 0x7f, + 0x4b, 0x3d, 0xfe, 0x80, 0x0c, 0xa8, 0xfc, 0xd7, 0x63, 0x0f, 0x3e, 0xe5, + 0x01, 0x90, 0xff, 0xc3, 0x03, 0x00, 0x01, 0xe0, 0xff, 0x00, 0x80, 0x8e, + 0xc2, 0xff, 0x7f, 0x84, 0x00, 0x64, 0x6b, 0xbf, 0x7f, 0x0b, 0x38, 0xe5, + 0x09, 0x00, 0x00, 0x18, 0x9d, 0x64, 0x15, 0x0c, 0x00, 0x40, 0x45, 0x64, + 0x83, 0x01, 0x90, 0x90, 0x01, 0xe7, 0x84, 0x55, 0xe4, 0x54, 0x00, 0x65, + 0x11, 0x10, 0x00, 0x20, 0x1e, 0x64, 0x11, 0x10, 0x00, 0x24, 0x20, 0x64, + 0x0d, 0x00, 0x00, 0x1c, 0x1e, 0x64, 0x01, 0x00, 0xa0, 0x28, 0x00, 0x64, + 0xf5, 0xff, 0xff, 0xd8, 0x9b, 0x62, 0xf1, 0xff, 0xff, 0xf4, 0xd7, 0x62, + 0x93, 0x11, 0x80, 0xd8, 0xd3, 0xc9, 0x86, 0x85, 0xea, 0x90, 0x01, 0xe7, + 0x40, 0x00, 0x66, 0x36, 0x00, 0x60, 0x48, 0x85, 0x40, 0x03, 0x0a, 0x90, + 0x43, 0x12, 0x90, 0x11, 0x10, 0x00, 0xe7, 0xe3, 0xf8, 0x84, 0x55, 0xe4, + 0x92, 0x42, 0x20, 0xc2, 0x41, 0x20, 0xc0, 0xd3, 0x1f, 0x68, 0xc3, 0xc9, + 0x23, 0x53, 0x60, 0xaf, 0xbf, 0x7f, 0x11, 0x10, 0x00, 0xc7, 0xe3, 0xf8, + 0x11, 0x10, 0x00, 0x07, 0xe4, 0xf8, 0x11, 0x10, 0x00, 0xe7, 0xe3, 0xf8, + 0xd7, 0xbf, 0x7f, 0x46, 0x3c, 0x00, 0x50, 0x04, 0x2b, 0x13, 0x8d, 0xd2, + 0x8f, 0x23, 0x80, 0x8a, 0xbc, 0x0f, 0x84, 0x38, 0x2b, 0x13, 0x45, 0xfb, + 0xca, 0x3c, 0x00, 0x8c, 0x28, 0x2b, 0x07, 0x4d, 0xfb, 0x03, 0x04, 0x90, + 0x00, 0x3c, 0x23, 0x2b, 0x38, 0xe5, 0xe4, 0xcb, 0x63, 0x48, 0x62, 0x64, + 0x01, 0x80, 0xff, 0x1c, 0x00, 0x55, 0x80, 0x00, 0x64, 0xc4, 0x00, 0x64, + 0x11, 0x10, 0x00, 0x27, 0xe4, 0xf8, 0xa3, 0x0b, 0x90, 0xb3, 0x07, 0x90, + 0x93, 0x43, 0x90, 0x83, 0x43, 0x90, 0x54, 0x6b, 0x64, 0x60, 0x6e, 0x64, + 0xd8, 0x31, 0x31, 0xf8, 0xb7, 0x63, 0x10, 0x6f, 0x64, 0xcc, 0x66, 0x64, + 0xa3, 0x13, 0x90, 0xb3, 0x0f, 0x90, 0x24, 0x70, 0x64, 0x0d, 0x00, 0x00, + 0xea, 0xbd, 0x1f, 0x5c, 0x72, 0x64, 0xd4, 0xb7, 0x63, 0xb3, 0x17, 0x90, + 0xa3, 0x23, 0x90, 0x14, 0xaf, 0x64, 0x63, 0x3d, 0x04, 0xc0, 0xb7, 0x63, + 0xb3, 0x1b, 0x90, 0xa3, 0x27, 0x90, 0xfd, 0x0f, 0x00, 0x9a, 0x81, 0x1f, + 0xec, 0xb3, 0x63, 0xb3, 0x2b, 0x90, 0xa3, 0x1f, 0x90, 0x0d, 0x00, 0x00, + 0x1c, 0x1e, 0x64, 0x68, 0x00, 0x65, 0xd4, 0xb3, 0x63, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x64, 0xc0, 0xbf, 0x63, 0x11, 0x10, 0x00, 0x47, 0x81, 0xf8, + 0x11, 0x10, 0x00, 0x4f, 0x81, 0xf8, 0x11, 0x10, 0x00, 0x57, 0x81, 0xf8, + 0x11, 0x10, 0x00, 0x5f, 0x81, 0xf8, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, + 0x06, 0x5c, 0x00, 0x11, 0x10, 0x00, 0x44, 0x05, 0x7e, 0x01, 0x01, 0x00, + 0x40, 0x00, 0x64, 0xc0, 0xbb, 0x63, 0x65, 0x00, 0x00, 0x88, 0xd5, 0x64, + 0x8c, 0x74, 0x64, 0xb3, 0x0b, 0x90, 0xa3, 0x0f, 0x90, 0x83, 0x5b, 0x90, + 0x09, 0x00, 0x00, 0x18, 0x9d, 0x64, 0xa7, 0x21, 0x00, 0xe0, 0xab, 0x63, + 0xcb, 0x63, 0x60, 0x01, 0x02, 0x00, 0x00, 0x00, 0x64, 0xc8, 0xb7, 0x63, + 0xc3, 0x51, 0x52, 0x8f, 0xf0, 0x7f, 0x83, 0x11, 0x58, 0x87, 0xf0, 0x7f, + 0x50, 0x00, 0x64, 0xc7, 0x11, 0xb0, 0xc8, 0x01, 0xe5, 0xfb, 0x15, 0xa2, + 0xc3, 0x61, 0xa2, 0xf3, 0x65, 0x90, 0xbb, 0x29, 0xa5, 0x83, 0x51, 0xb5, + 0x3d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x80, 0x10, 0x64, 0x11, 0x10, 0x00, + 0x47, 0xe1, 0xf8, 0x10, 0x00, 0xca, 0x50, 0x06, 0x7a, 0x3c, 0x40, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x84, 0x64, 0x80, 0x00, 0x64, 0x0d, 0x0b, 0x07, + 0x48, 0x52, 0x64, 0xab, 0x3d, 0xa5, 0xb3, 0x01, 0xb5, 0x93, 0x49, 0x94, + 0xa3, 0x55, 0xa4, 0x0d, 0x00, 0x00, 0xe8, 0x84, 0x64, 0x05, 0x00, 0x00, + 0xe0, 0xc2, 0x64, 0x0d, 0x00, 0x00, 0x64, 0x52, 0x64, 0x0c, 0x80, 0x64, + 0x93, 0x6b, 0x90, 0x83, 0x63, 0x90, 0xb3, 0x27, 0x90, 0xa3, 0x0f, 0x90, + 0xec, 0x9f, 0x63, 0x09, 0x00, 0x00, 0x50, 0xb8, 0x64, 0x09, 0x00, 0x00, + 0x07, 0x85, 0x01, 0x43, 0x48, 0x0b, 0x0b, 0x7c, 0x19, 0xab, 0x69, 0xa4, + 0xf9, 0xff, 0xff, 0xab, 0xa4, 0x17, 0x83, 0xa1, 0xa4, 0x2d, 0x00, 0x00, + 0xa3, 0x2e, 0x0b, 0xb3, 0x65, 0xa4, 0xf9, 0xff, 0xff, 0x27, 0x9e, 0x1b, + 0xf5, 0xff, 0xff, 0x4f, 0x3a, 0x1b, 0xbb, 0x51, 0xa4, 0xa3, 0xa9, 0xa4, + 0xf1, 0xff, 0xff, 0xd3, 0x94, 0x07, 0x05, 0x00, 0x00, 0x6b, 0xa1, 0x02, + 0x8b, 0x85, 0xa4, 0xab, 0xa1, 0xa4, 0x0d, 0x00, 0x00, 0x07, 0x2d, 0x08, + 0x11, 0x00, 0x00, 0xa3, 0xbe, 0x15, 0x93, 0x81, 0xa4, 0xb3, 0xa5, 0xa4, + 0xf9, 0xff, 0xff, 0x43, 0x18, 0x1b, 0x8b, 0xc5, 0xa4, 0xf9, 0xff, 0xff, + 0x27, 0xba, 0x19, 0x05, 0x00, 0x00, 0x47, 0x9d, 0x1c, 0x9b, 0x89, 0xa4, + 0xbb, 0x8d, 0xa4, 0xf9, 0xff, 0xff, 0x0b, 0xa0, 0x10, 0xf9, 0xff, 0xff, + 0x4f, 0x1e, 0x16, 0x93, 0xc1, 0xa4, 0xf9, 0xff, 0xff, 0x43, 0xa0, 0x12, + 0x83, 0xd1, 0xa4, 0x9b, 0xc9, 0xa4, 0xf5, 0xff, 0xff, 0xd3, 0x9c, 0x14, + 0xf9, 0xff, 0xff, 0x0b, 0x3c, 0x11, 0x05, 0x00, 0x00, 0x57, 0x15, 0x06, + 0xbb, 0xcd, 0xa4, 0x83, 0x11, 0xa5, 0xa3, 0x09, 0xa5, 0x8b, 0x05, 0xa5, + 0x9b, 0x01, 0xa5, 0xa3, 0xe9, 0xa4, 0xab, 0xe1, 0xa4, 0xb3, 0xe5, 0xa4, + 0x93, 0x15, 0xa5, 0xff, 0x4f, 0x60, 0x01, 0x03, 0x00, 0x00, 0x00, 0x64, + 0xd4, 0x9b, 0x63, 0xe8, 0xa3, 0x63, 0x01, 0x04, 0x00, 0x00, 0x00, 0x64, + 0xc4, 0x9b, 0x63, 0xdc, 0x87, 0x62, 0x01, 0x05, 0x00, 0x00, 0x00, 0x64, + 0xf4, 0x97, 0x63, 0x00, 0x00, 0x64, 0xfb, 0x61, 0x60, 0x01, 0x06, 0x00, + 0x00, 0x00, 0x64, 0xe0, 0x97, 0x63, 0x00, 0x00, 0x64, 0x63, 0x61, 0x60, + 0x01, 0x07, 0x00, 0x00, 0x00, 0x64, 0xcc, 0x97, 0x63, 0x01, 0x08, 0x00, + 0x00, 0x00, 0x64, 0xc0, 0x97, 0x63, 0x00, 0x04, 0x64, 0x84, 0x01, 0x64, + 0xc7, 0xef, 0x7f, 0x4f, 0xf8, 0x7f, 0xc2, 0x41, 0x20, 0xd0, 0xbf, 0x63, + 0x01, 0x80, 0x00, 0x08, 0x00, 0x75, 0x1d, 0x10, 0x00, 0x04, 0x0c, 0x80, + 0xcc, 0x3f, 0x64, 0x1d, 0x10, 0x00, 0xa4, 0x0d, 0x80, 0x70, 0x38, 0xc4, + 0x92, 0x40, 0x20, 0x01, 0x04, 0x01, 0x00, 0x01, 0x5b, 0x06, 0x4c, 0x20, + 0x03, 0x05, 0x90, 0x03, 0x21, 0x80, 0xfd, 0x00, 0xc0, 0x06, 0xbc, 0x1f, + 0x40, 0x10, 0xa8, 0x23, 0x01, 0x90, 0x07, 0x11, 0x80, 0x43, 0x3c, 0xfe, + 0x04, 0x40, 0xa8, 0x13, 0x05, 0x90, 0x03, 0x31, 0x80, 0xc1, 0xff, 0xff, + 0x06, 0x00, 0x00, 0x42, 0x50, 0x20, 0x33, 0x01, 0x90, 0x07, 0x21, 0x80, + 0xc1, 0xff, 0xff, 0x42, 0x00, 0x00, 0x23, 0x01, 0x90, 0x07, 0x11, 0x80, + 0x43, 0x48, 0xd0, 0x13, 0x05, 0x90, 0x8b, 0x80, 0x00, 0x00, 0x3c, 0x23, + 0x0d, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x65, 0x00, 0x00, 0x88, 0xd5, 0x64, + 0x63, 0x00, 0x90, 0x73, 0x08, 0x90, 0x00, 0x3c, 0x23, 0x40, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, + 0x60, 0x00, 0xe7, 0xcc, 0x66, 0x64, 0xc2, 0x40, 0x20, 0x0a, 0x00, 0xe0, + 0xcf, 0x04, 0x00, 0x84, 0x00, 0x66, 0xf2, 0xbf, 0x7f, 0x3f, 0x48, 0x00, + 0x4c, 0x00, 0x64, 0x98, 0x02, 0x64, 0xc4, 0x83, 0x86, 0x1e, 0x40, 0x60, + 0xe1, 0xf5, 0x05, 0xfc, 0x3c, 0xba, 0xd0, 0xff, 0x5c, 0x0e, 0x00, 0x60, + 0x04, 0x91, 0x66, 0x16, 0x40, 0x60, 0x01, 0x20, 0x30, 0xbc, 0x00, 0x64, + 0x73, 0x3c, 0x90, 0x0f, 0x0c, 0xe6, 0x02, 0x3d, 0x00, 0x53, 0x20, 0x80, + 0x08, 0x4c, 0x24, 0xcc, 0x58, 0x24, 0x03, 0x89, 0xf2, 0x63, 0x00, 0x90, + 0xbb, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, + 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, + 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x08, 0x23, 0x55, 0x0d, 0x00, 0x00, + 0x0c, 0x24, 0x55, 0x63, 0x08, 0x90, 0x73, 0x0c, 0x90, 0x00, 0x3c, 0x23, + 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, + 0x08, 0x1e, 0x52, 0x8e, 0x04, 0x00, 0x63, 0x0c, 0x90, 0x00, 0x3c, 0x23, + 0x0d, 0x00, 0x00, 0x08, 0x43, 0x75, 0x00, 0x20, 0x64, 0x30, 0x00, 0xca, + 0xd0, 0x10, 0x5a, 0x1c, 0x10, 0x72, 0x63, 0x08, 0x90, 0x00, 0x3c, 0x23, + 0x8b, 0x04, 0x00, 0x40, 0x04, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, + 0x00, 0x3c, 0x23, 0x40, 0x00, 0x64, 0x09, 0x00, 0x00, 0x34, 0xc2, 0x7f, + 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, 0x84, 0xf1, 0x52, 0x40, 0x00, 0x66, + 0x16, 0x00, 0x60, 0x90, 0x04, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x13, 0x82, + 0x00, 0x3c, 0x23, 0x0b, 0x20, 0x80, 0x0f, 0x30, 0x80, 0x80, 0x08, 0x2b, + 0x0d, 0x00, 0x00, 0x33, 0x0c, 0x94, 0x00, 0x3c, 0x23, 0x0b, 0x28, 0xe5, + 0x0b, 0x20, 0x80, 0xc8, 0x09, 0xc8, 0x0f, 0x30, 0x80, 0x10, 0x00, 0x64, + 0xda, 0xfc, 0x07, 0x14, 0x18, 0xc4, 0x97, 0x90, 0xf6, 0x3f, 0x99, 0xf2, + 0x13, 0x05, 0x00, 0xc3, 0x17, 0xb0, 0xfd, 0xff, 0x1f, 0xce, 0x00, 0x18, + 0xdc, 0x80, 0xa2, 0xcf, 0x01, 0x80, 0x1e, 0x30, 0xe0, 0x7c, 0x00, 0x64, + 0xd0, 0x9f, 0x40, 0xec, 0x10, 0x3a, 0x16, 0x00, 0x60, 0xdc, 0x04, 0x2b, + 0x2c, 0x9d, 0x3a, 0x8b, 0x10, 0x00, 0x8e, 0x40, 0x40, 0xc0, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0xab, 0x00, 0x60, 0x05, 0x00, 0x00, + 0xc0, 0x00, 0xae, 0x92, 0x40, 0x20, 0x2a, 0x00, 0x40, 0xa3, 0xc9, 0xf2, + 0xde, 0x40, 0x20, 0x30, 0x1c, 0xca, 0x16, 0x01, 0xe0, 0x3f, 0xa1, 0xf2, + 0xcf, 0x44, 0x00, 0x13, 0x05, 0x00, 0xc3, 0x17, 0xb0, 0x4b, 0x00, 0x60, + 0x05, 0x00, 0x00, 0x10, 0x00, 0x64, 0x1e, 0x41, 0x20, 0x50, 0x1c, 0xca, + 0x05, 0x00, 0x00, 0xbf, 0x00, 0x00, 0xe3, 0xd3, 0xf2, 0x26, 0x02, 0xe0, + 0x05, 0x00, 0x00, 0x97, 0x01, 0x00, 0x63, 0xd1, 0xf2, 0x13, 0x45, 0x00, + 0x03, 0x26, 0xb0, 0xfd, 0xff, 0xff, 0xcf, 0x00, 0x00, 0x5a, 0x41, 0x20, + 0xca, 0x43, 0x20, 0x14, 0xcf, 0x73, 0x09, 0x00, 0x00, 0x0c, 0x9d, 0x64, + 0xff, 0x00, 0x80, 0x03, 0x30, 0x80, 0x63, 0x3c, 0x90, 0xd3, 0x00, 0x90, + 0xc7, 0x40, 0xb5, 0x20, 0x08, 0xc8, 0x06, 0xfc, 0x07, 0xd3, 0x04, 0x90, + 0x0f, 0x2c, 0xe5, 0xc4, 0x54, 0xe4, 0xfb, 0xbf, 0x7f, 0x09, 0x00, 0x00, + 0x80, 0xf1, 0x52, 0x00, 0x00, 0x66, 0x16, 0x00, 0x60, 0x88, 0x04, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, 0x00, 0x3c, 0x23, 0x44, 0x00, 0x64, + 0x09, 0x00, 0x00, 0x3c, 0xc6, 0x7f, 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, + 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x07, 0x82, 0x00, 0x3c, 0x23, 0x0d, 0x00, 0x00, 0x08, 0x40, 0x52, + 0x63, 0x08, 0x90, 0x00, 0x3c, 0x23, 0x13, 0x00, 0xe0, 0x02, 0x10, 0xc0, + 0xa3, 0x07, 0x90, 0xeb, 0xea, 0x7f, 0x87, 0x23, 0x80, 0x2c, 0x00, 0x72, + 0x8c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0f, 0x82, 0x17, 0x04, 0xe0, + 0x03, 0x00, 0x80, 0x0b, 0xa0, 0x3b, 0x63, 0x08, 0x90, 0xf3, 0xbf, 0x7f, + 0x13, 0x00, 0xe0, 0x02, 0x10, 0xc0, 0xa3, 0x07, 0x90, 0xb3, 0xea, 0x7f, + 0x87, 0x23, 0x80, 0x2c, 0x00, 0x72, 0x8c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x0f, 0x82, 0x17, 0x04, 0xe0, 0x03, 0x00, 0x80, 0x0a, 0x04, 0x00, + 0x63, 0x08, 0x90, 0xf3, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x02, 0x10, 0xc0, + 0x5a, 0x40, 0x20, 0x7b, 0xea, 0x7f, 0x2c, 0x00, 0x72, 0x84, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, 0x0f, 0x0c, 0xe6, 0x04, 0x00, 0x64, + 0xe9, 0xff, 0xff, 0xd0, 0xf7, 0x62, 0x00, 0x60, 0x31, 0xa3, 0x01, 0x90, + 0xeb, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x02, 0x10, 0xc0, 0x5a, 0x40, 0x20, + 0x3f, 0xea, 0x7f, 0x2c, 0x00, 0x72, 0x84, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x07, 0x82, 0x0f, 0x0c, 0xe6, 0x04, 0x00, 0x64, 0xe9, 0xff, 0xff, + 0xdc, 0xeb, 0x62, 0x00, 0x40, 0x31, 0xa3, 0x01, 0x90, 0xeb, 0xbf, 0x7f, + 0x0b, 0x08, 0xe6, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x91, 0x1a, 0x00, 0x60, 0x80, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x03, 0x82, 0x00, 0x00, 0x64, 0x0f, 0x0c, 0xe6, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x53, 0xea, 0x7f, 0x0d, 0x00, 0x00, + 0xd4, 0x03, 0x82, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, 0x82, 0x11, 0xc0, + 0x0b, 0x0c, 0xe6, 0xbb, 0xa9, 0x7f, 0x03, 0x10, 0xe6, 0x0d, 0x00, 0x00, + 0x5b, 0xe0, 0x41, 0xdc, 0xfb, 0x63, 0x86, 0x09, 0xc0, 0x40, 0x00, 0x84, + 0x5e, 0x00, 0x40, 0x0f, 0x00, 0x80, 0xd2, 0xb8, 0x00, 0x3f, 0x79, 0x00, + 0xfd, 0xff, 0xff, 0xf0, 0xff, 0x8f, 0x02, 0x48, 0xa0, 0x88, 0x41, 0x6c, + 0x3e, 0x40, 0x60, 0x04, 0x04, 0x64, 0xe9, 0xff, 0xff, 0xd8, 0xcb, 0x62, + 0x8a, 0x09, 0xc0, 0x80, 0x00, 0x90, 0x26, 0x00, 0x60, 0x41, 0xff, 0xff, + 0x44, 0x18, 0x64, 0x0c, 0x44, 0x24, 0xb9, 0x76, 0x02, 0xc3, 0xa0, 0x06, + 0x04, 0x19, 0x64, 0xcb, 0x66, 0x60, 0xe3, 0x01, 0x90, 0x07, 0x14, 0xe6, + 0x03, 0x10, 0xe6, 0x58, 0x80, 0x1d, 0xe8, 0xf3, 0x63, 0x0d, 0x00, 0x00, + 0x84, 0x1e, 0x4e, 0x40, 0x00, 0x90, 0x1a, 0x00, 0x60, 0xcb, 0x21, 0x80, + 0x84, 0x08, 0x2b, 0xe9, 0xff, 0xff, 0xc4, 0xbb, 0x62, 0xa3, 0x01, 0x90, + 0x07, 0x14, 0xe6, 0x03, 0x10, 0xe6, 0x18, 0x84, 0x1d, 0xf4, 0xef, 0x63, + 0x0d, 0x00, 0x00, 0x84, 0x1e, 0x4e, 0x40, 0x00, 0x90, 0x2a, 0x00, 0x60, + 0x8a, 0x19, 0xc0, 0xbf, 0x21, 0x80, 0x8e, 0xbc, 0x1f, 0xd3, 0x10, 0x00, + 0xc4, 0x53, 0x1f, 0x44, 0x08, 0x2b, 0xe9, 0xff, 0xff, 0xf8, 0xab, 0x62, + 0xe3, 0x01, 0x90, 0x07, 0x14, 0xe6, 0x0b, 0x08, 0xe6, 0x1a, 0x40, 0x20, + 0xf0, 0xeb, 0x63, 0x0d, 0x00, 0x00, 0x84, 0x1e, 0x4e, 0x40, 0x00, 0x90, + 0x1e, 0x00, 0x60, 0x8f, 0x21, 0x80, 0x8b, 0x31, 0x80, 0xc4, 0x08, 0x2b, + 0x0b, 0x0c, 0xe6, 0xe9, 0xff, 0xff, 0x87, 0x04, 0xfe, 0x0f, 0x0c, 0xe6, + 0x0b, 0x08, 0xe6, 0x1a, 0x40, 0x20, 0xf8, 0xe7, 0x63, 0x0d, 0x00, 0x00, + 0x84, 0x1e, 0x4e, 0x40, 0x00, 0x90, 0x2e, 0x00, 0x60, 0x8a, 0x19, 0xc0, + 0xbf, 0x21, 0x80, 0x8e, 0xbc, 0x1f, 0x8b, 0x31, 0x80, 0xd3, 0x10, 0x00, + 0xc4, 0x53, 0x1f, 0x44, 0x08, 0x2b, 0x0b, 0x0c, 0xe6, 0xe9, 0xff, 0xff, + 0xd7, 0x02, 0xfe, 0x0f, 0x0c, 0xe6, 0x0b, 0x28, 0xe5, 0x06, 0x10, 0xc0, + 0x1e, 0x40, 0x20, 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, + 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, 0x0f, 0x2c, 0xe5, + 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x8f, 0xe8, 0x7f, + 0x0d, 0x00, 0x00, 0x20, 0x1e, 0x64, 0x0b, 0x02, 0xa0, 0x00, 0x80, 0x90, + 0xde, 0xff, 0x7f, 0xc2, 0x21, 0xe0, 0xcc, 0x01, 0x64, 0x1c, 0x00, 0x3b, + 0x3e, 0x00, 0x40, 0xc2, 0x11, 0xc0, 0xe7, 0xe7, 0x7f, 0x16, 0x40, 0x20, + 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, + 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, + 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, 0x4c, 0x02, 0x64, 0x0b, 0x0e, 0xa0, + 0x8f, 0xbf, 0x7f, 0xc6, 0x19, 0xc0, 0xda, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, + 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, 0xe5, 0xff, 0xff, 0xf8, 0xef, 0x63, + 0x12, 0x0a, 0xc0, 0x00, 0x81, 0x90, 0x66, 0xff, 0x7f, 0x88, 0x01, 0x3b, + 0x0a, 0x5c, 0x00, 0x32, 0x00, 0x60, 0x9a, 0x05, 0x00, 0x98, 0x05, 0x2b, + 0x8b, 0x58, 0xfb, 0xc2, 0x19, 0xc0, 0x3e, 0xbc, 0x1f, 0xc4, 0x17, 0x2b, + 0x47, 0x30, 0x04, 0x42, 0x41, 0x20, 0x0b, 0x2c, 0xe5, 0xe5, 0xff, 0xff, + 0xd7, 0x1c, 0xfe, 0x94, 0x81, 0x66, 0x0e, 0x40, 0x60, 0x8a, 0x50, 0x20, + 0xd7, 0xbf, 0x7f, 0x9c, 0x01, 0x66, 0xce, 0xbf, 0x7f, 0x8a, 0x44, 0x20, + 0xc7, 0xbf, 0x7f, 0x0b, 0x18, 0xe5, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, + 0xfd, 0xff, 0xff, 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, 0x0f, 0x1c, 0xe5, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x73, 0xe7, 0x7f, 0x0d, 0x00, 0x00, + 0x1c, 0x1e, 0x64, 0xcb, 0x01, 0xa0, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, + 0x82, 0x21, 0xe0, 0x3c, 0x00, 0x3b, 0xc0, 0x01, 0x64, 0x3e, 0x00, 0x40, + 0x82, 0x11, 0xc0, 0xcb, 0xe6, 0x7f, 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, + 0x0f, 0x00, 0x80, 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, + 0x08, 0x40, 0x55, 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, + 0x12, 0x00, 0x60, 0x40, 0x02, 0x64, 0xcb, 0x01, 0xa0, 0x8f, 0xbf, 0x7f, + 0x86, 0x19, 0xc0, 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, + 0xe5, 0xff, 0xff, 0xf0, 0xbb, 0x63, 0xd2, 0x09, 0xc0, 0x00, 0x81, 0x90, + 0x6a, 0xff, 0x7f, 0x86, 0x19, 0xc0, 0xbe, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, + 0x0f, 0x3c, 0xd2, 0xd0, 0x14, 0x2b, 0x0a, 0x40, 0x20, 0x07, 0x31, 0x04, + 0x42, 0x41, 0x20, 0x0b, 0x1c, 0xe5, 0xe5, 0xff, 0xff, 0x8f, 0x16, 0xfe, + 0x0b, 0x18, 0xe5, 0x06, 0x10, 0xc0, 0x1a, 0x40, 0x20, 0xfd, 0xff, 0xff, + 0x7c, 0x7c, 0x91, 0x16, 0x00, 0x60, 0x88, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x0b, 0x82, 0x0f, 0x1c, 0xe5, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, + 0x84, 0x00, 0x65, 0x87, 0xe6, 0x7f, 0x0d, 0x00, 0x00, 0x1c, 0x1e, 0x64, + 0xcb, 0x01, 0xa0, 0x00, 0x80, 0x90, 0xde, 0xff, 0x7f, 0x82, 0x21, 0xe0, + 0x3c, 0x00, 0x3b, 0xc0, 0x01, 0x64, 0x3e, 0x00, 0x40, 0x82, 0x11, 0xc0, + 0xdf, 0xe5, 0x7f, 0x16, 0x40, 0x20, 0x60, 0xc3, 0xc9, 0x0f, 0x00, 0x80, + 0xc0, 0x90, 0x26, 0xa6, 0xff, 0x7f, 0x01, 0x12, 0x00, 0x08, 0x40, 0x55, + 0xff, 0x10, 0x35, 0x93, 0x0c, 0x32, 0xc0, 0x13, 0x3a, 0x12, 0x00, 0x60, + 0x40, 0x02, 0x64, 0xcb, 0x01, 0xa0, 0x8f, 0xbf, 0x7f, 0x86, 0x19, 0xc0, + 0x4e, 0xbc, 0x1f, 0xc8, 0x14, 0x2b, 0x87, 0x30, 0x04, 0xe5, 0xff, 0xff, + 0xec, 0x8f, 0x63, 0xd2, 0x09, 0xc0, 0x00, 0x81, 0x90, 0x6a, 0xff, 0x7f, + 0x86, 0x19, 0xc0, 0xbe, 0x21, 0xe0, 0x4e, 0xbc, 0x1f, 0x0f, 0xbc, 0xd3, + 0xd0, 0x14, 0x2b, 0x0a, 0x40, 0x20, 0x07, 0x31, 0x04, 0x42, 0x41, 0x20, + 0x0b, 0x1c, 0xe5, 0xe5, 0xff, 0xff, 0x07, 0x11, 0xfe, 0x03, 0x10, 0xe6, + 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, 0x44, 0x00, 0x65, 0x1e, 0x40, 0x20, + 0x1a, 0x20, 0xe0, 0xb7, 0xe5, 0x7f, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, + 0x00, 0x00, 0x90, 0x1e, 0x00, 0x60, 0x87, 0x39, 0xfe, 0x7c, 0x80, 0xb2, + 0x16, 0x40, 0x60, 0x04, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, + 0x07, 0x14, 0xe6, 0xc3, 0x11, 0x80, 0x03, 0x10, 0x3d, 0x03, 0x14, 0xe6, + 0x27, 0xa6, 0x7f, 0x03, 0x10, 0xe6, 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, + 0x44, 0x00, 0x65, 0x1e, 0x40, 0x20, 0x1a, 0x20, 0xe0, 0x5f, 0xe5, 0x7f, + 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x00, 0x90, 0x1e, 0x00, 0x60, + 0x87, 0x39, 0xfe, 0x4c, 0x80, 0xb2, 0x16, 0x40, 0x60, 0x04, 0x01, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, 0x07, 0x14, 0xe6, 0xc3, 0x11, 0x80, + 0x03, 0x10, 0x3d, 0x03, 0x14, 0xe6, 0x07, 0xa6, 0x7f, 0x0b, 0x08, 0xe6, + 0x5a, 0x40, 0x20, 0x07, 0x10, 0x80, 0x4b, 0x10, 0x3d, 0x28, 0x08, 0xc8, + 0x4c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0f, 0x82, 0x0f, 0x0c, 0xe6, + 0x07, 0x20, 0x80, 0x58, 0x00, 0xb6, 0x1a, 0x00, 0x60, 0x00, 0x00, 0x64, + 0xe9, 0xff, 0xff, 0xc8, 0x9f, 0x62, 0xa3, 0x01, 0x90, 0xe3, 0xbf, 0x7f, + 0xc0, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0xd9, 0xff, 0xff, + 0x40, 0x3c, 0x64, 0xe7, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, + 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x44, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, 0x0f, 0x0c, 0xe6, 0xc0, 0x00, 0x75, + 0xe9, 0xff, 0xff, 0xd8, 0x8f, 0x62, 0x21, 0x00, 0x00, 0x08, 0x98, 0x64, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x00, 0x48, 0x24, 0x83, 0x61, 0x60, + 0xa3, 0x01, 0x90, 0xd7, 0xbf, 0x7f, 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, + 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, 0x28, 0x00, 0xc8, 0x4c, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x0f, 0x82, 0x0f, 0x0c, 0xe6, 0x00, 0x00, 0x74, + 0xe5, 0xff, 0xff, 0xe8, 0xff, 0x63, 0x41, 0xff, 0xff, 0x44, 0x18, 0x64, + 0x08, 0x44, 0x24, 0xb9, 0x76, 0x02, 0x83, 0xa0, 0x06, 0x04, 0x19, 0x64, + 0x2f, 0x61, 0x60, 0xa3, 0x01, 0x90, 0xd3, 0xbf, 0x7f, 0x0b, 0x18, 0xe5, + 0x18, 0x84, 0x1d, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0xeb, 0xe3, 0x7f, + 0x16, 0x40, 0x20, 0xb0, 0x00, 0xc8, 0x04, 0x15, 0x64, 0xe5, 0xff, 0xff, + 0xfc, 0xab, 0x62, 0x87, 0x21, 0x80, 0xf9, 0xff, 0xfb, 0x0e, 0xbc, 0x1f, + 0x40, 0x00, 0x92, 0x0b, 0x00, 0xfd, 0x98, 0x68, 0x2b, 0x90, 0x28, 0x2b, + 0xc3, 0x58, 0xfb, 0x1b, 0x50, 0xfb, 0x8a, 0x41, 0x20, 0x43, 0x51, 0x51, + 0xe5, 0xff, 0xff, 0xdc, 0xa7, 0x62, 0x05, 0x00, 0x04, 0x9a, 0x01, 0x00, + 0x80, 0x81, 0x92, 0x07, 0x40, 0xfd, 0xe3, 0x05, 0x90, 0x0f, 0x1c, 0xe5, + 0x0b, 0x08, 0xe6, 0x03, 0x10, 0x80, 0x5a, 0x40, 0x20, 0x03, 0x10, 0x3d, + 0x77, 0xe3, 0x7f, 0x48, 0x00, 0xc8, 0x04, 0x15, 0x64, 0xe5, 0xff, 0xff, + 0xec, 0x97, 0x62, 0x05, 0x00, 0x04, 0x06, 0x00, 0x00, 0x40, 0x00, 0x92, + 0x0b, 0x00, 0xfd, 0xa3, 0x09, 0x90, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, + 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0x3f, 0xe3, 0x7f, 0x1a, 0x40, 0x20, + 0x48, 0x00, 0xc8, 0x04, 0x15, 0x64, 0xe5, 0xff, 0xff, 0xf8, 0x8b, 0x62, + 0x08, 0x00, 0x99, 0x83, 0x51, 0x51, 0x0b, 0x0c, 0xe6, 0xe5, 0xff, 0xff, + 0x77, 0x01, 0xfe, 0x0f, 0x0c, 0xe6, 0x1b, 0x28, 0xe5, 0x17, 0x10, 0x80, + 0x1a, 0x40, 0x20, 0x57, 0x11, 0x3d, 0x7c, 0x01, 0x86, 0x03, 0x00, 0xfd, + 0xa3, 0x03, 0xb0, 0x26, 0x00, 0x60, 0x28, 0x14, 0xc8, 0x7c, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x3f, 0x82, 0x1f, 0x2c, 0xe5, 0x00, 0x00, 0x64, + 0xd7, 0xe2, 0x7f, 0xd0, 0xc3, 0xc9, 0x9f, 0x21, 0x80, 0x79, 0xfe, 0xff, + 0x20, 0x58, 0x64, 0xc6, 0xbd, 0x07, 0x48, 0x60, 0x24, 0xb9, 0x76, 0x02, + 0x83, 0xa0, 0x06, 0xbd, 0x00, 0x00, 0xc4, 0xe7, 0x64, 0xd3, 0x5f, 0x60, + 0xd3, 0x21, 0x34, 0x0e, 0xbc, 0x1f, 0x00, 0x61, 0x24, 0xbd, 0x00, 0x00, + 0xc4, 0xe7, 0x64, 0xb9, 0x76, 0x02, 0x03, 0xa0, 0x06, 0xd8, 0x40, 0x2b, + 0xaf, 0x5f, 0x60, 0x92, 0x23, 0xe0, 0x06, 0xbc, 0x1f, 0x8b, 0x45, 0xfb, + 0x42, 0x41, 0x20, 0x00, 0xe1, 0x26, 0x45, 0x00, 0x44, 0x8e, 0x40, 0x20, + 0x02, 0x40, 0xa0, 0xa3, 0x0f, 0x90, 0x5f, 0xe2, 0x7f, 0x8b, 0x23, 0x80, + 0x04, 0x15, 0x64, 0x1b, 0x2c, 0xe5, 0xe1, 0xff, 0xff, 0xaf, 0x1c, 0xfe, + 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x1a, 0x40, 0x20, 0x57, 0xe2, 0x7f, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, + 0x00, 0x00, 0x90, 0x42, 0x00, 0x60, 0x82, 0x11, 0xc0, 0xc3, 0xe1, 0x7f, + 0x1a, 0x40, 0x20, 0x48, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x4a, 0xbc, 0x00, + 0x8c, 0x80, 0x92, 0x16, 0x40, 0x60, 0x67, 0xe4, 0x7f, 0x82, 0x41, 0x20, + 0x0b, 0x0c, 0xe6, 0x9f, 0xa3, 0x7f, 0x80, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x03, 0x82, 0x0f, 0x0c, 0xe6, 0x0b, 0x08, 0xe6, 0x8c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1a, 0x40, 0x20, 0xef, 0xe1, 0x7f, + 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x00, 0x84, 0x3e, 0x00, 0x40, + 0x82, 0x11, 0xc0, 0x5b, 0xe1, 0x7f, 0x60, 0x00, 0xc8, 0x0b, 0x00, 0x80, + 0x8e, 0xbc, 0x00, 0xcc, 0x80, 0x92, 0x22, 0x40, 0x60, 0x92, 0x21, 0xe0, + 0x0c, 0x01, 0x66, 0x0e, 0x00, 0x60, 0x0b, 0x0c, 0xe6, 0x37, 0xa3, 0x7f, + 0x0b, 0x0c, 0xe6, 0xeb, 0xa3, 0x7f, 0x0f, 0x0c, 0xe6, 0x03, 0x10, 0xe6, + 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1e, 0x40, 0x20, + 0x8b, 0xe1, 0x7f, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x00, 0x90, + 0x5a, 0x00, 0x60, 0xc2, 0x11, 0xc0, 0xf7, 0xe0, 0x7f, 0x1a, 0x40, 0x20, + 0x78, 0x00, 0xc8, 0x07, 0x00, 0x80, 0x4a, 0xbc, 0x00, 0x8c, 0x80, 0x92, + 0x2e, 0x40, 0x60, 0xce, 0x19, 0xc0, 0x08, 0x00, 0x64, 0xc6, 0xbc, 0x1f, + 0x7b, 0xe2, 0x7f, 0xd2, 0x19, 0xc0, 0x48, 0x00, 0x64, 0x82, 0x41, 0x20, + 0x06, 0xbd, 0x1f, 0x03, 0x14, 0xe6, 0x63, 0xa2, 0x7f, 0xc0, 0x00, 0x64, + 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x07, 0x14, 0xe6, 0x0b, 0x08, 0xe6, + 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x1a, 0x40, 0x20, + 0x0b, 0xe1, 0x7f, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x00, 0x90, + 0x42, 0x00, 0x60, 0x82, 0x11, 0xc0, 0x77, 0xe0, 0x7f, 0x50, 0x00, 0xc8, + 0x0b, 0x00, 0x80, 0x8e, 0xbc, 0x00, 0xcc, 0x80, 0x92, 0x1a, 0x40, 0x60, + 0x92, 0x19, 0xc0, 0x8a, 0x21, 0xe0, 0x06, 0xbd, 0x1f, 0x0b, 0x0c, 0xe6, + 0xfb, 0xa1, 0x7f, 0xc0, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, + 0x0f, 0x0c, 0xe6, 0x4b, 0x28, 0xe5, 0x1a, 0x28, 0xc0, 0x1e, 0x38, 0xc0, + 0x0a, 0x30, 0xc0, 0x17, 0x10, 0x80, 0x80, 0x01, 0x86, 0xc0, 0x81, 0x86, + 0x05, 0x00, 0x00, 0x9a, 0x2d, 0xa0, 0x01, 0x00, 0x00, 0xde, 0xf1, 0xba, + 0x22, 0x20, 0xc0, 0x83, 0x8b, 0x90, 0xd3, 0xe9, 0x7f, 0x40, 0x86, 0x64, + 0xa3, 0x03, 0x90, 0x57, 0x11, 0x3d, 0xd7, 0xe9, 0x7f, 0x87, 0x83, 0x80, + 0x0c, 0x93, 0x64, 0xb3, 0x5f, 0x90, 0xa3, 0x5b, 0x90, 0x93, 0x47, 0x90, + 0x83, 0x63, 0x90, 0xb3, 0x17, 0x90, 0xa3, 0x0f, 0x90, 0xb3, 0xe9, 0x7f, + 0x93, 0x83, 0x80, 0x7c, 0x00, 0x64, 0x24, 0x14, 0x72, 0xdc, 0x19, 0x3a, + 0x32, 0x00, 0x60, 0xfc, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x3f, 0x82, + 0x0d, 0x00, 0x00, 0x88, 0x1e, 0x4e, 0x40, 0xa1, 0x64, 0xa3, 0x03, 0x90, + 0xb3, 0x0b, 0x90, 0x7b, 0xe9, 0x7f, 0x4b, 0x2c, 0xe5, 0x47, 0xa9, 0x7f, + 0x1d, 0x00, 0x00, 0x14, 0x00, 0x64, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0xc0, 0x55, 0x24, 0x83, 0x93, 0x90, 0xf7, 0x5c, 0x60, 0x0d, 0x00, 0x00, + 0x34, 0x80, 0x82, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x80, 0x55, 0x24, + 0xdf, 0x5c, 0x60, 0x8b, 0x83, 0x80, 0x0d, 0x00, 0x00, 0x44, 0x80, 0x82, + 0x03, 0x02, 0x40, 0x7b, 0x47, 0x60, 0x9b, 0xbf, 0x7f, 0x07, 0x20, 0x80, + 0x2c, 0x04, 0x72, 0xc4, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x07, 0x82, + 0x00, 0x3c, 0x23, 0x03, 0x10, 0x80, 0x03, 0x10, 0x3d, 0xe7, 0x08, 0xfe, + 0x40, 0x01, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x03, 0x82, 0x00, 0x3c, 0x23, + 0x0b, 0x08, 0xe6, 0x0d, 0x00, 0x00, 0x18, 0x43, 0x64, 0x40, 0x00, 0x64, + 0x09, 0x00, 0x00, 0x34, 0xc2, 0x7f, 0x83, 0x01, 0x58, 0xd7, 0xde, 0x7f, + 0x19, 0x0c, 0x00, 0x8c, 0xd0, 0x64, 0xb3, 0x0d, 0x90, 0x1d, 0x0c, 0x00, + 0xcc, 0x71, 0x64, 0x19, 0x0c, 0x00, 0x04, 0xc6, 0x64, 0x93, 0x8d, 0x90, + 0x1d, 0x0c, 0x00, 0x8c, 0x24, 0x64, 0x19, 0x0c, 0x00, 0x80, 0xbb, 0x64, + 0x93, 0x05, 0x90, 0x93, 0xcd, 0x90, 0x19, 0x0c, 0x00, 0xc4, 0x48, 0x64, + 0x1d, 0x0c, 0x00, 0xcc, 0xda, 0x64, 0x83, 0x41, 0x90, 0x93, 0x45, 0x90, + 0x1d, 0x0c, 0x00, 0x80, 0x3c, 0x64, 0x1d, 0x0c, 0x00, 0x04, 0x0e, 0x64, + 0x83, 0x0d, 0x91, 0x21, 0x0c, 0x00, 0x8c, 0x0b, 0x64, 0x19, 0x0c, 0x00, + 0xd0, 0xdb, 0x64, 0xa3, 0x81, 0x90, 0xb3, 0x85, 0x90, 0x1d, 0x0c, 0x00, + 0x00, 0x2f, 0x64, 0x1d, 0x0c, 0x00, 0x44, 0xca, 0x64, 0xa3, 0x0d, 0x91, + 0x21, 0x0c, 0x00, 0x8c, 0x80, 0x64, 0x19, 0x0c, 0x00, 0x08, 0x2a, 0x64, + 0xa3, 0x11, 0x90, 0xa3, 0xc1, 0x90, 0x1d, 0x0c, 0x00, 0x10, 0x9e, 0x64, + 0x1d, 0x0c, 0x00, 0x80, 0xfc, 0x64, 0xb3, 0xc5, 0x90, 0xa3, 0x4d, 0x91, + 0x19, 0x0c, 0x00, 0x04, 0x54, 0x64, 0x21, 0x0c, 0x00, 0x4c, 0x93, 0x64, + 0x83, 0x09, 0x90, 0x83, 0x91, 0x90, 0x19, 0x0c, 0x00, 0x48, 0x2f, 0x64, + 0x1d, 0x0c, 0x00, 0xd0, 0x17, 0x64, 0xb3, 0x01, 0x91, 0x83, 0x45, 0x91, + 0x21, 0x0c, 0x00, 0x40, 0xab, 0x64, 0x21, 0x0c, 0x00, 0x04, 0x6d, 0x64, + 0x93, 0x8d, 0x91, 0x19, 0x0c, 0x00, 0xcc, 0x69, 0x64, 0xa3, 0x49, 0x90, + 0x83, 0xd1, 0x90, 0x93, 0x09, 0x91, 0x1d, 0x0c, 0x00, 0x50, 0xeb, 0x64, + 0xb3, 0x41, 0x91, 0x83, 0x85, 0x91, 0x19, 0x0c, 0x00, 0x00, 0x5d, 0x64, + 0x19, 0x0c, 0x00, 0xc4, 0x66, 0x64, 0xa3, 0x89, 0x91, 0xb3, 0x89, 0x91, + 0x93, 0xcd, 0x91, 0x19, 0x0c, 0x00, 0x48, 0x32, 0x64, 0x19, 0x0c, 0x00, + 0x4c, 0xaa, 0x64, 0x93, 0x51, 0x91, 0x83, 0xc9, 0x91, 0x21, 0x0c, 0x00, + 0xd0, 0xbe, 0x64, 0x19, 0x0c, 0x00, 0x48, 0x74, 0x64, 0xa3, 0xc1, 0x91, + 0xb3, 0xc5, 0x91, 0x21, 0x0c, 0x00, 0x40, 0xed, 0x64, 0x21, 0x0c, 0x00, + 0x04, 0x31, 0x64, 0x93, 0x0d, 0x92, 0x19, 0x0c, 0x00, 0x4c, 0xb3, 0x64, + 0x83, 0x09, 0x92, 0xa3, 0x11, 0x92, 0xb3, 0x01, 0x92, 0x83, 0x45, 0x92, + 0x21, 0x0c, 0x00, 0x48, 0x1b, 0x64, 0xa3, 0x4d, 0x92, 0x19, 0x0c, 0x00, + 0x90, 0xf7, 0x64, 0x21, 0x0c, 0x00, 0x80, 0x47, 0x64, 0x21, 0x0c, 0x00, + 0x44, 0x3c, 0x64, 0x19, 0x0c, 0x00, 0x8c, 0x49, 0x64, 0x93, 0x49, 0x92, + 0xb3, 0x51, 0x92, 0x83, 0x81, 0x92, 0x93, 0x85, 0x92, 0xb3, 0x4d, 0x90, + 0x09, 0x00, 0x00, 0x37, 0x9e, 0xf8, 0x0f, 0x0c, 0xe6, 0x0b, 0x28, 0xe5, + 0x11, 0x00, 0x00, 0x23, 0x00, 0x40, 0x40, 0x00, 0x86, 0x56, 0x40, 0x20, + 0x41, 0x00, 0x00, 0x22, 0x02, 0x80, 0x09, 0x00, 0x00, 0x18, 0x9f, 0x64, + 0x5c, 0x00, 0x65, 0x83, 0x01, 0x80, 0x3d, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x40, 0x80, 0x92, 0x0e, 0x40, 0x60, 0xc2, 0x41, 0x20, + 0x0f, 0x2c, 0xe5, 0x48, 0x01, 0x92, 0x6e, 0x00, 0x60, 0x3c, 0x7c, 0xbb, + 0x5e, 0x00, 0x60, 0x0b, 0x90, 0x32, 0xac, 0xa4, 0x48, 0x52, 0x40, 0x60, + 0x0e, 0xb8, 0x00, 0xc8, 0x04, 0x92, 0x46, 0x00, 0x60, 0x83, 0x81, 0x50, + 0xdd, 0xff, 0xff, 0xe0, 0xdf, 0x63, 0x83, 0x81, 0x50, 0xdd, 0xff, 0xff, + 0xfc, 0xdb, 0x63, 0x0c, 0xa0, 0x48, 0xf2, 0xff, 0x7f, 0x83, 0xb1, 0x50, + 0xdd, 0xff, 0xff, 0xc0, 0xdb, 0x63, 0x13, 0x40, 0x38, 0x40, 0x01, 0x92, + 0x03, 0x81, 0xf9, 0xc4, 0x81, 0x3a, 0xdf, 0xc1, 0xf9, 0x9b, 0x11, 0x00, + 0x77, 0xbf, 0x7f, 0x44, 0x81, 0x92, 0x9e, 0xff, 0x7f, 0x3c, 0x7c, 0xb3, + 0x93, 0xbf, 0x7f, 0x13, 0x10, 0xe6, 0x1a, 0x40, 0x20, 0x2c, 0x00, 0xc8, + 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x3f, 0x82, 0x17, 0x14, 0xe6, + 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x03, 0x10, 0x8e, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0x0d, 0x00, 0x00, 0x1c, 0x1e, 0x64, 0xdd, 0xff, 0xff, + 0xf8, 0xc7, 0x63, 0xce, 0x01, 0xe0, 0x40, 0xac, 0x64, 0xa3, 0x03, 0x90, + 0x44, 0x00, 0x64, 0x48, 0x98, 0x40, 0x93, 0x4c, 0xfb, 0xc3, 0x11, 0xb0, + 0xbf, 0xe5, 0x7f, 0xdb, 0x99, 0xf2, 0xce, 0x01, 0xe0, 0x86, 0x21, 0xe4, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x52, 0xc8, 0x00, 0x66, 0x4a, 0x40, 0x22, + 0x13, 0x00, 0xfd, 0xa3, 0x09, 0xb2, 0x27, 0xd0, 0xd3, 0x11, 0x10, 0x00, + 0x44, 0x01, 0x7e, 0x8b, 0xbf, 0x7f, 0x3b, 0x38, 0xe5, 0x09, 0x00, 0x00, + 0x1b, 0xf0, 0x49, 0x14, 0xb2, 0x64, 0x20, 0xb4, 0x64, 0xcd, 0xee, 0xee, + 0x24, 0x33, 0x64, 0x83, 0x01, 0x80, 0x3d, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x40, 0x00, 0x92, 0x0a, 0x00, 0x60, 0x3f, 0x3c, 0xe5, + 0x0b, 0x90, 0x32, 0xac, 0x9c, 0x48, 0xae, 0x40, 0x60, 0x0e, 0xb8, 0x00, + 0xc8, 0x04, 0x92, 0xa2, 0x00, 0x60, 0x83, 0x81, 0x50, 0xdd, 0xff, 0xff, + 0xec, 0xa3, 0x63, 0x83, 0x81, 0x50, 0xdd, 0xff, 0xff, 0xc8, 0xa3, 0x63, + 0x51, 0x00, 0x00, 0x00, 0x80, 0x8a, 0xee, 0xff, 0x7f, 0x83, 0xb1, 0x50, + 0xdd, 0xff, 0xff, 0xc0, 0x9f, 0x63, 0x2c, 0x40, 0x31, 0x24, 0x2c, 0x3a, + 0x2a, 0x40, 0x20, 0x32, 0x00, 0x60, 0x42, 0x42, 0x20, 0xab, 0xe5, 0x7f, + 0x93, 0x01, 0x80, 0x03, 0x25, 0x37, 0x07, 0x11, 0x35, 0x08, 0x40, 0x2b, + 0x83, 0x44, 0xfb, 0x93, 0xe5, 0x7f, 0x8f, 0x01, 0x80, 0xd0, 0x00, 0xa2, + 0x83, 0x11, 0x90, 0xbf, 0x01, 0x80, 0xab, 0x3e, 0xfe, 0xa3, 0x6f, 0x90, + 0x83, 0x6b, 0x90, 0xfc, 0xff, 0xb3, 0xc3, 0x27, 0x37, 0x01, 0x00, 0x00, + 0x4a, 0x71, 0x96, 0x93, 0x4b, 0x90, 0xb3, 0x03, 0x90, 0xa3, 0x23, 0x90, + 0x9f, 0xe4, 0x7f, 0x9b, 0x11, 0x00, 0x2f, 0xbf, 0x7f, 0x0f, 0x28, 0xe5, + 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, 0x1e, 0x40, 0x20, 0x56, 0x40, 0x20, + 0x28, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x03, 0x10, 0x8e, + 0x2c, 0x00, 0x72, 0x48, 0x00, 0x64, 0x0d, 0x00, 0x00, 0xd4, 0x0b, 0x82, + 0x0f, 0x2c, 0xe5, 0x62, 0x40, 0x20, 0xc0, 0x99, 0x1d, 0xe1, 0xff, 0xff, + 0xd4, 0xbf, 0x62, 0x10, 0x02, 0x7a, 0x9b, 0x05, 0x00, 0x9c, 0x01, 0x92, + 0xea, 0xbf, 0x7f, 0xc2, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xc8, 0xf7, 0x63, + 0x63, 0xa1, 0x00, 0x18, 0x00, 0x64, 0xc0, 0x99, 0x1d, 0xdd, 0xff, 0xff, + 0xe8, 0xe3, 0x63, 0x10, 0x42, 0x7a, 0x9b, 0x05, 0x00, 0x90, 0x89, 0x92, + 0xea, 0xff, 0x7f, 0x0d, 0x00, 0x00, 0x1c, 0x25, 0x55, 0x60, 0x10, 0x64, + 0xd8, 0x0a, 0x64, 0xcb, 0x01, 0x80, 0x3d, 0x00, 0x00, 0x86, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x40, 0x00, 0x92, 0x4e, 0x00, 0x40, 0x8e, 0xbc, 0x00, + 0xcc, 0x84, 0x92, 0x36, 0x40, 0x60, 0xc3, 0xb1, 0x50, 0xdd, 0xff, 0xff, + 0xcc, 0xe3, 0x62, 0x13, 0x3c, 0xfe, 0x64, 0x99, 0x1f, 0x43, 0x12, 0x90, + 0xc3, 0xb1, 0x50, 0x9b, 0x09, 0x00, 0xdd, 0xff, 0xff, 0xf8, 0xdb, 0x62, + 0x00, 0x40, 0x31, 0x53, 0x02, 0x90, 0x23, 0x46, 0x00, 0xdf, 0x11, 0x00, + 0x4c, 0xe3, 0x73, 0x58, 0x99, 0x1f, 0xbc, 0x00, 0x65, 0x83, 0x3d, 0x90, + 0x33, 0xbf, 0x7f, 0x2b, 0x38, 0xe5, 0x1e, 0x40, 0x20, 0x01, 0xcc, 0x00, + 0x00, 0x00, 0x64, 0x33, 0xe4, 0x7f, 0xc2, 0x41, 0x20, 0xdd, 0xff, 0xff, + 0xf4, 0xd7, 0x63, 0x17, 0x3c, 0xfe, 0xc4, 0x05, 0x2b, 0x0d, 0x00, 0x00, + 0x73, 0xc0, 0xa1, 0x42, 0x41, 0x20, 0x0f, 0xe4, 0x7f, 0x00, 0x17, 0xc8, + 0x0d, 0x00, 0x00, 0x40, 0x0d, 0x64, 0x48, 0x41, 0x24, 0xdd, 0x06, 0x00, + 0x83, 0x80, 0x0e, 0x04, 0xfa, 0x64, 0xd7, 0x56, 0x60, 0x22, 0x40, 0x20, + 0x01, 0xcc, 0x00, 0x40, 0x00, 0x64, 0xdf, 0xe3, 0x7f, 0x02, 0x42, 0x20, + 0xd7, 0xe3, 0x7f, 0xc2, 0x41, 0x20, 0xe1, 0xff, 0xff, 0xf8, 0x8f, 0x62, + 0x1b, 0x3c, 0xfe, 0x01, 0xcc, 0x00, 0x80, 0x00, 0x64, 0xbb, 0xe3, 0x7f, + 0x82, 0x41, 0x20, 0xb3, 0xe3, 0x7f, 0x83, 0x63, 0x90, 0x21, 0x00, 0x00, + 0x20, 0x98, 0x64, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x80, 0x61, 0x24, + 0x7f, 0x56, 0x60, 0xcc, 0xce, 0x64, 0xa3, 0x0f, 0x90, 0xb3, 0x03, 0x90, + 0x28, 0x04, 0x64, 0xcb, 0xe2, 0x7f, 0x05, 0x00, 0x00, 0x10, 0x8b, 0x55, + 0xc2, 0x41, 0x20, 0x00, 0x01, 0x92, 0xa6, 0x02, 0x82, 0x47, 0xe5, 0xf2, + 0xdd, 0xff, 0xff, 0xcc, 0xc3, 0x63, 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, + 0xd8, 0xeb, 0x63, 0xc2, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xf8, 0xf7, 0x63, + 0x27, 0x3c, 0xfe, 0x01, 0xcc, 0x00, 0xc0, 0x00, 0x64, 0x3b, 0xe3, 0x7f, + 0x42, 0x42, 0x20, 0x33, 0xe3, 0x7f, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x40, 0x62, 0x24, 0x0b, 0x56, 0x60, 0x44, 0xd7, 0x64, 0xa3, 0x07, 0x90, + 0xb3, 0x03, 0x90, 0x5b, 0xe2, 0x7f, 0x01, 0xcc, 0x00, 0x00, 0x01, 0x64, + 0x07, 0xe3, 0x7f, 0x83, 0xe5, 0xf2, 0x18, 0x60, 0x24, 0x1d, 0x00, 0x00, + 0x83, 0x01, 0x50, 0xdb, 0x55, 0x60, 0x22, 0x40, 0x20, 0xeb, 0xe2, 0x7f, + 0x05, 0x00, 0x00, 0x08, 0x8b, 0x55, 0x50, 0xdc, 0x64, 0x83, 0x63, 0x90, + 0xa3, 0x13, 0x90, 0x80, 0x80, 0x92, 0x8e, 0x42, 0x82, 0xb3, 0x0f, 0x90, + 0x0f, 0xe2, 0x7f, 0x15, 0x01, 0x00, 0xbc, 0x7d, 0xb3, 0x32, 0x00, 0x60, + 0xc0, 0x95, 0x1d, 0xdd, 0xff, 0xff, 0xf0, 0x9f, 0x63, 0x80, 0x07, 0x64, + 0xd9, 0xff, 0xff, 0xfc, 0xc7, 0x63, 0x01, 0xcc, 0x00, 0x40, 0x01, 0x64, + 0x97, 0xe2, 0x7f, 0x40, 0x00, 0x64, 0x2f, 0x3c, 0xe5, 0x01, 0xcc, 0x00, + 0xc0, 0x3f, 0x64, 0x83, 0xe2, 0x7f, 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, + 0xf8, 0xbf, 0x63, 0x00, 0x00, 0x64, 0xe3, 0xbf, 0x7f, 0xaf, 0x89, 0xe5, + 0x1a, 0x40, 0x20, 0x0d, 0x00, 0x00, 0x00, 0x1e, 0x64, 0x93, 0xc7, 0x92, + 0x06, 0x00, 0xe0, 0x48, 0x58, 0x48, 0x12, 0x00, 0x60, 0x04, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0xaf, 0x8d, 0xe5, 0x05, 0x00, 0x00, 0x0c, 0x8b, 0x55, + 0xa3, 0xd3, 0x82, 0x83, 0x8b, 0x92, 0x1d, 0x00, 0x00, 0x1c, 0x00, 0x64, + 0x8b, 0x09, 0x00, 0x27, 0x08, 0xf8, 0xc0, 0x80, 0x86, 0x10, 0x10, 0x64, + 0x00, 0x5e, 0x24, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x16, 0xc1, 0x80, + 0xef, 0x54, 0x60, 0xaf, 0x83, 0x82, 0xb3, 0xc3, 0x92, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x6b, 0xd6, 0xf2, 0x93, 0xaf, 0x92, 0xc0, 0x5e, 0x24, + 0x94, 0x01, 0x64, 0xcb, 0x54, 0x60, 0x83, 0x83, 0x92, 0xb7, 0xf3, 0x82, + 0x93, 0x05, 0x00, 0x08, 0xfa, 0x64, 0x83, 0x83, 0x82, 0x1c, 0x55, 0x24, + 0x0d, 0x00, 0x00, 0xe3, 0x99, 0x03, 0xa3, 0xe3, 0x92, 0x47, 0xc3, 0xf2, + 0x4c, 0x48, 0x24, 0x88, 0x00, 0x64, 0x93, 0x0f, 0x93, 0x83, 0x0b, 0x93, + 0x93, 0x93, 0x82, 0x80, 0xa5, 0x1d, 0xa3, 0x93, 0x92, 0xdd, 0xff, 0xff, + 0xe8, 0xeb, 0x62, 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, 0xf4, 0x93, 0x63, + 0x82, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xd4, 0xa3, 0x63, 0x37, 0x3c, 0xfe, + 0x93, 0xb7, 0x92, 0x21, 0x00, 0x00, 0x00, 0x98, 0x64, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x1c, 0x00, 0x64, 0x8b, 0x93, 0x82, 0x80, 0x40, 0x24, + 0x3f, 0x54, 0x60, 0x84, 0xe4, 0x64, 0xa3, 0x07, 0x90, 0xb3, 0x03, 0x90, + 0x2e, 0x40, 0x20, 0x8b, 0xe0, 0x7f, 0x82, 0x41, 0x20, 0xfc, 0xaf, 0x63, + 0x82, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xd4, 0xc3, 0x62, 0x93, 0xa3, 0x82, + 0xa3, 0x93, 0x92, 0xc8, 0x01, 0xba, 0x3e, 0x02, 0x60, 0x80, 0x9d, 0x1d, + 0xfc, 0x97, 0x63, 0xbf, 0x83, 0x01, 0xcc, 0x1f, 0x1f, 0xe3, 0xc0, 0xa0, + 0xdf, 0x05, 0x00, 0xec, 0x85, 0x92, 0x93, 0xa3, 0x82, 0xd6, 0xff, 0x7f, + 0x80, 0xa9, 0x1d, 0x83, 0xd3, 0x92, 0xdd, 0xff, 0xff, 0xe4, 0xcb, 0x62, + 0x80, 0x07, 0x64, 0xd9, 0xff, 0xff, 0xf0, 0xf3, 0x62, 0x82, 0x41, 0x20, + 0xdd, 0xff, 0xff, 0xd0, 0x83, 0x63, 0x37, 0x3c, 0xfe, 0x21, 0x00, 0x00, + 0x14, 0x98, 0x64, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x40, 0x57, 0x24, + 0x9f, 0x53, 0x60, 0xa3, 0x83, 0x92, 0x00, 0xec, 0x64, 0xa3, 0x03, 0x90, + 0x14, 0x00, 0x64, 0xa3, 0xa3, 0x82, 0xb3, 0x23, 0x90, 0xe3, 0xdf, 0x7f, + 0x82, 0x41, 0x20, 0xd4, 0xa7, 0x63, 0x8b, 0x93, 0x82, 0xa3, 0xc3, 0x82, + 0x87, 0xf4, 0xf2, 0xb3, 0x87, 0x92, 0x8f, 0xb3, 0x82, 0xdc, 0x00, 0xb2, + 0x42, 0x01, 0x60, 0x82, 0x41, 0x20, 0xdd, 0xff, 0xff, 0xc8, 0x9f, 0x62, + 0xa3, 0xc3, 0x82, 0x1c, 0x00, 0x64, 0x83, 0xe3, 0x92, 0xc8, 0x81, 0xba, + 0x8a, 0x41, 0x60, 0x80, 0x9d, 0x1d, 0xf4, 0x8b, 0x63, 0xb3, 0x83, 0x01, + 0x3c, 0x1f, 0x1f, 0xc3, 0x03, 0xa0, 0xdf, 0x05, 0x00, 0xec, 0x05, 0x92, + 0xa3, 0xc3, 0x82, 0xd6, 0xbf, 0x7f, 0x09, 0x00, 0x00, 0x10, 0xe2, 0x64, + 0x83, 0xd3, 0x92, 0x1c, 0x00, 0x64, 0x93, 0xc3, 0x82, 0x83, 0x83, 0x01, + 0x0b, 0x1c, 0xf8, 0x87, 0x23, 0x03, 0x30, 0x09, 0x58, 0x47, 0x1c, 0xf8, + 0xa8, 0x80, 0xac, 0x83, 0xd3, 0x92, 0x46, 0x41, 0x60, 0x7f, 0xc8, 0xf2, + 0xc8, 0x0f, 0xb2, 0x3a, 0x01, 0x60, 0x87, 0xb3, 0x82, 0xa3, 0x0b, 0x93, + 0x83, 0x63, 0x93, 0x20, 0xfa, 0x64, 0xc0, 0x63, 0x24, 0xc3, 0x52, 0x60, + 0x8f, 0x23, 0x83, 0x12, 0x40, 0x20, 0xa3, 0x13, 0x93, 0x06, 0x41, 0x20, + 0xb3, 0x0f, 0x93, 0x03, 0xcf, 0xf2, 0x00, 0x60, 0x24, 0xa3, 0x52, 0x60, + 0x23, 0xb4, 0xf2, 0x21, 0x00, 0x00, 0x08, 0x98, 0x64, 0x00, 0x4a, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x87, 0x52, 0x60, 0x93, 0xc3, 0x82, + 0x8b, 0x23, 0x83, 0x04, 0x05, 0x2b, 0x09, 0x00, 0x00, 0x4f, 0xd0, 0x13, + 0xf3, 0x80, 0x9d, 0xb3, 0x83, 0x90, 0x93, 0x33, 0x83, 0x83, 0xa3, 0x82, + 0x4c, 0xf3, 0x64, 0xa3, 0xa7, 0x90, 0x93, 0xaf, 0x90, 0x83, 0xab, 0x90, + 0xb3, 0x43, 0x90, 0xa3, 0x4b, 0x90, 0x93, 0x53, 0x90, 0x83, 0x73, 0x90, + 0xb3, 0x1f, 0x90, 0xa3, 0x0f, 0x90, 0x97, 0xde, 0x7f, 0x4c, 0x21, 0x37, + 0xa3, 0x43, 0x83, 0xdf, 0x05, 0x00, 0xec, 0x85, 0x92, 0x1e, 0xff, 0x7f, + 0xa3, 0xa3, 0x92, 0x21, 0x00, 0x00, 0x3c, 0x98, 0x64, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x40, 0x7d, 0x24, 0x07, 0x52, 0x60, 0x8a, 0x43, 0x20, + 0x22, 0x40, 0x20, 0x09, 0x00, 0x00, 0x80, 0xe0, 0x5b, 0x93, 0xa3, 0x82, + 0x08, 0x60, 0x7c, 0x83, 0x00, 0x90, 0x0c, 0x15, 0x72, 0x82, 0x41, 0x20, + 0xab, 0x8d, 0xe5, 0x47, 0x10, 0xfe, 0x54, 0x00, 0x64, 0x83, 0x17, 0x93, + 0x47, 0xbd, 0x7f, 0xc7, 0x4d, 0x00, 0x82, 0x41, 0x20, 0xd9, 0xff, 0xff, + 0xe8, 0xc3, 0x63, 0xc3, 0xbd, 0x7f, 0xc7, 0x4d, 0x00, 0x82, 0x41, 0x20, + 0xd9, 0xff, 0xff, 0xec, 0xbf, 0x63, 0x77, 0xbe, 0x7f, 0xa3, 0x23, 0x93, + 0xa3, 0xa3, 0x82, 0x93, 0x4b, 0x90, 0x05, 0x00, 0x00, 0x48, 0x0c, 0x64, + 0xa3, 0xa7, 0x90, 0xa3, 0x63, 0x90, 0x93, 0xaf, 0x90, 0x83, 0x87, 0x90, + 0xb3, 0x6b, 0x90, 0x83, 0x73, 0x90, 0xb3, 0x1f, 0x90, 0xa3, 0x0b, 0x90, + 0xcf, 0xdd, 0x7f, 0xa3, 0x23, 0x83, 0x3f, 0xbf, 0x7f, 0x0d, 0x00, 0x00, + 0x34, 0x1e, 0x64, 0x72, 0x83, 0xc4, 0x6e, 0x3b, 0xc4, 0x87, 0x83, 0x82, + 0xbf, 0xf3, 0x82, 0x83, 0xd3, 0x92, 0x83, 0x13, 0x83, 0x1f, 0xef, 0xf2, + 0xcf, 0x85, 0xf2, 0xc7, 0xfc, 0xf2, 0x37, 0x51, 0x60, 0x1e, 0x40, 0x20, + 0x83, 0x83, 0x82, 0x04, 0xfa, 0x65, 0xcb, 0xc2, 0xf2, 0x80, 0x5c, 0x24, + 0x1f, 0x51, 0x60, 0x93, 0x83, 0x82, 0x07, 0x90, 0xf2, 0xa3, 0x87, 0x92, + 0x40, 0x5d, 0x24, 0x04, 0xfa, 0x64, 0x07, 0x51, 0x60, 0x8f, 0xa3, 0x82, + 0xdf, 0x80, 0xf2, 0x57, 0x9d, 0xf2, 0xfc, 0x16, 0x3a, 0x83, 0xc3, 0x82, + 0x0e, 0x00, 0x60, 0x48, 0x31, 0x37, 0x6e, 0x41, 0x20, 0x87, 0xb3, 0x82, + 0xa3, 0x03, 0x93, 0x83, 0xdf, 0x92, 0x7f, 0xea, 0xf2, 0x25, 0x00, 0x00, + 0x1c, 0xc4, 0x64, 0xc0, 0x5f, 0x24, 0xc7, 0x50, 0x60, 0x8b, 0x93, 0x82, + 0xc6, 0x41, 0x20, 0x21, 0x00, 0x00, 0x14, 0x98, 0x64, 0x23, 0x3e, 0xfe, + 0xd3, 0xca, 0xf2, 0x00, 0x50, 0x24, 0xa7, 0x50, 0x60, 0x1f, 0xa4, 0xf2, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xc0, 0x56, 0x24, 0x93, 0x50, 0x60, + 0x0d, 0x00, 0x00, 0x44, 0x0d, 0x64, 0xa3, 0x87, 0x92, 0xcc, 0x45, 0x24, + 0x2e, 0x40, 0x20, 0x04, 0xfa, 0x64, 0xdd, 0x06, 0x00, 0xc3, 0x80, 0x0e, + 0x73, 0x50, 0x60, 0x93, 0x83, 0x92, 0x8b, 0xc3, 0x82, 0x93, 0xab, 0x90, + 0x83, 0xa7, 0x90, 0x83, 0x93, 0x82, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0xb3, 0x43, 0x90, 0x80, 0x54, 0x24, 0x47, 0x50, 0x60, 0x05, 0x00, 0x00, + 0x50, 0x22, 0x64, 0xa3, 0x43, 0x90, 0x83, 0x63, 0x90, 0xa3, 0x13, 0x90, + 0x93, 0x6f, 0x90, 0xb3, 0x1f, 0x90, 0x87, 0xdc, 0x7f, 0x05, 0x00, 0x00, + 0x04, 0x8b, 0x55, 0x0c, 0x08, 0x64, 0xa3, 0x03, 0x83, 0x44, 0x1e, 0x37, + 0x40, 0x80, 0x86, 0xc2, 0x60, 0x80, 0x0b, 0x9c, 0xf2, 0x80, 0x0a, 0x37, + 0x04, 0x02, 0x92, 0x93, 0x23, 0x83, 0x22, 0xbe, 0x7f, 0x83, 0x93, 0x92, + 0x87, 0xa3, 0x82, 0x24, 0xfa, 0x64, 0xe8, 0x66, 0x24, 0x21, 0xf9, 0xff, + 0x83, 0x82, 0x11, 0xdb, 0x4f, 0x60, 0x93, 0x6f, 0x90, 0xaf, 0x93, 0x82, + 0x05, 0x00, 0x00, 0xcc, 0x39, 0x64, 0xa3, 0x0f, 0x90, 0xa3, 0x43, 0x90, + 0x83, 0x6f, 0x90, 0xb3, 0x1f, 0x90, 0x05, 0x00, 0x00, 0xa8, 0x4c, 0x64, + 0x0f, 0xdc, 0x7f, 0x42, 0x3b, 0xc4, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x00, 0x54, 0x24, 0x9b, 0x4f, 0x60, 0xb3, 0x43, 0x90, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x4a, 0x83, 0xc4, 0x80, 0x54, 0x24, 0x83, 0x4f, 0x60, + 0x93, 0xd3, 0x82, 0xa3, 0x83, 0x82, 0xa3, 0x43, 0x90, 0xa3, 0x2b, 0x90, + 0x83, 0x53, 0x90, 0x93, 0x63, 0x90, 0xb3, 0x1b, 0x90, 0xa3, 0x19, 0x02, + 0xbf, 0xdb, 0x7f, 0x80, 0x9d, 0x1d, 0xd9, 0xff, 0xff, 0xe4, 0xf3, 0x62, + 0x80, 0x07, 0x64, 0xd5, 0xff, 0xff, 0xf0, 0x9b, 0x63, 0x83, 0x83, 0x82, + 0x86, 0x93, 0xc5, 0x4c, 0x23, 0x1f, 0x9f, 0x11, 0x02, 0xc3, 0x00, 0xa0, + 0x6c, 0x1f, 0x1f, 0x82, 0x41, 0x20, 0xcb, 0x06, 0xa0, 0xd9, 0xff, 0xff, + 0xd4, 0xd7, 0x63, 0x4a, 0x3b, 0xc4, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x5f, 0x23, 0xf8, 0xea, 0x0a, 0xc0, 0x80, 0x54, 0x24, 0x03, 0x4f, 0x60, + 0x76, 0x83, 0xc4, 0x93, 0xde, 0xf2, 0x2e, 0x40, 0x20, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x40, 0x57, 0x24, 0x24, 0x65, 0x24, 0xe3, 0x4e, 0x60, + 0x17, 0xec, 0xf2, 0x47, 0x9d, 0xf2, 0x47, 0xe8, 0xf2, 0x42, 0x42, 0x20, + 0xcf, 0x4e, 0x60, 0xe3, 0xde, 0xf2, 0x2a, 0x40, 0x20, 0x04, 0xfa, 0x65, + 0x00, 0x42, 0x24, 0x1d, 0xc7, 0x18, 0xe0, 0x23, 0x75, 0xb3, 0x4e, 0x60, + 0xa3, 0xa7, 0x91, 0x19, 0x00, 0x00, 0x64, 0x95, 0x64, 0xb3, 0xa7, 0xa1, + 0x0d, 0x00, 0x00, 0x24, 0x03, 0x64, 0x17, 0x9c, 0xf2, 0x5f, 0x52, 0x04, + 0x83, 0x9f, 0x92, 0x8b, 0x83, 0x82, 0x7c, 0x12, 0x5a, 0x93, 0x23, 0x03, + 0x37, 0x21, 0xf8, 0x9c, 0x08, 0x58, 0xc0, 0x6b, 0x24, 0x04, 0xfa, 0x64, + 0x83, 0x8b, 0x92, 0x6f, 0x4e, 0x60, 0x2f, 0x94, 0xf2, 0xcc, 0x76, 0x24, + 0x93, 0x8f, 0x92, 0xc3, 0xa0, 0x5f, 0x57, 0x4e, 0x60, 0x8b, 0x93, 0x82, + 0x84, 0x02, 0x64, 0xef, 0x81, 0xf2, 0x40, 0x47, 0x24, 0x03, 0x88, 0xf2, + 0x04, 0xfa, 0x64, 0x3b, 0x4e, 0x60, 0xdf, 0x81, 0xf2, 0xd3, 0x3d, 0xfe, + 0xef, 0x3e, 0xfe, 0x05, 0x00, 0x00, 0x74, 0x60, 0x64, 0x93, 0x6f, 0x90, + 0x83, 0x53, 0x90, 0xb3, 0x23, 0x90, 0xa3, 0x37, 0x90, 0xc3, 0x5e, 0xd8, + 0x09, 0x00, 0x00, 0x1c, 0x9f, 0x64, 0x67, 0xda, 0x7f, 0xff, 0x01, 0x80, + 0x3d, 0x00, 0x00, 0xce, 0x03, 0x00, 0x3d, 0x00, 0x00, 0xc0, 0x80, 0x92, + 0xba, 0x41, 0x60, 0x23, 0x06, 0x00, 0x0c, 0x02, 0x92, 0x5a, 0xbf, 0x7f, + 0x19, 0x00, 0x00, 0x58, 0x95, 0x64, 0xaf, 0xa9, 0x11, 0xe7, 0x4e, 0x14, + 0x47, 0x56, 0x0a, 0x0d, 0x00, 0x00, 0x43, 0x80, 0x0d, 0x09, 0x00, 0x00, + 0x0b, 0x1c, 0x01, 0xf1, 0xff, 0xff, 0x9f, 0x08, 0x1d, 0xd3, 0xcd, 0x16, + 0x55, 0x00, 0x00, 0x37, 0x3d, 0x0a, 0x7f, 0xc7, 0x1e, 0xed, 0xff, 0xff, + 0xcf, 0x23, 0x19, 0xf9, 0xff, 0xff, 0xe3, 0xa0, 0x01, 0xbb, 0x9b, 0xa1, + 0x1b, 0x5a, 0x19, 0x83, 0xef, 0xa1, 0xaf, 0x95, 0x1c, 0x8b, 0xe7, 0xa1, + 0xf1, 0xff, 0xff, 0xe7, 0x82, 0x03, 0x93, 0xc7, 0xa1, 0x47, 0xee, 0x1f, + 0x9b, 0xc3, 0xa1, 0x31, 0x00, 0x00, 0x43, 0x20, 0x18, 0xa3, 0xcb, 0xa1, + 0xf5, 0xff, 0xff, 0x0b, 0x18, 0x12, 0xab, 0xdf, 0xa1, 0xd5, 0xff, 0xff, + 0x9f, 0x30, 0x1a, 0xb3, 0xd3, 0xa1, 0xd3, 0xc5, 0x16, 0xbb, 0xf7, 0xa1, + 0xf1, 0xff, 0xff, 0x37, 0x39, 0x1f, 0x83, 0x3f, 0xa2, 0x7f, 0xeb, 0x1d, + 0x8b, 0x0f, 0xa2, 0xf1, 0xff, 0xff, 0xcf, 0x23, 0x0e, 0x93, 0x23, 0xa2, + 0x9b, 0x1b, 0xa2, 0x8b, 0x5f, 0xa2, 0xe3, 0x70, 0x18, 0x0d, 0x00, 0x00, + 0x18, 0x05, 0x74, 0xab, 0x27, 0xa2, 0xb3, 0x07, 0xa2, 0x83, 0x4b, 0xa2, + 0x93, 0x53, 0xa2, 0xa3, 0x7f, 0xa2, 0xab, 0x4f, 0xa2, 0xb3, 0x63, 0xa2, + 0x83, 0x9b, 0x92, 0xa3, 0x2f, 0xa2, 0xbb, 0x03, 0xa2, 0x9b, 0x77, 0xa2, + 0x83, 0x61, 0x04, 0xb7, 0x33, 0x03, 0x0d, 0x00, 0x00, 0xac, 0x27, 0x64, + 0x18, 0x08, 0x60, 0x87, 0x83, 0x82, 0x64, 0x0b, 0x60, 0xa3, 0x83, 0x92, + 0x40, 0x10, 0x5b, 0x83, 0x87, 0x92, 0x80, 0x42, 0x24, 0x04, 0xfa, 0x64, + 0xb3, 0x4c, 0x60, 0x0b, 0x94, 0xf2, 0x90, 0x64, 0x24, 0x93, 0x93, 0x92, + 0x03, 0xa1, 0x5f, 0x9b, 0x4c, 0x60, 0xa3, 0x81, 0xf2, 0x8b, 0x93, 0x82, + 0xc8, 0x62, 0x7c, 0x8c, 0x02, 0x64, 0x40, 0x4e, 0x24, 0x04, 0xfa, 0x64, + 0x03, 0x88, 0xf2, 0x7b, 0x4c, 0x60, 0x87, 0x81, 0xf2, 0xc3, 0xc6, 0xa0, + 0x53, 0x3c, 0xfe, 0x05, 0x00, 0x00, 0x0c, 0x6a, 0x64, 0x23, 0x3e, 0xfe, + 0xb3, 0x1f, 0x90, 0x93, 0x63, 0x90, 0x83, 0x53, 0x90, 0xa3, 0x0f, 0x90, + 0xdf, 0x05, 0x00, 0xab, 0xd8, 0x7f, 0xe0, 0x85, 0x92, 0x83, 0xa3, 0x82, + 0x72, 0xff, 0x7f, 0x13, 0xb7, 0x7f, 0xf7, 0x93, 0x32, 0xac, 0x35, 0x48, + 0x4a, 0x00, 0x60, 0xfe, 0xbb, 0x00, 0xc8, 0x87, 0x92, 0x3e, 0x40, 0x60, + 0xc3, 0x81, 0x50, 0xd5, 0xff, 0xff, 0xc4, 0xc3, 0x62, 0x36, 0x40, 0x20, + 0x64, 0x20, 0x72, 0xca, 0x42, 0x20, 0xc3, 0xa1, 0x50, 0xd5, 0xff, 0xff, + 0xf8, 0xbf, 0x62, 0x76, 0xc3, 0x20, 0x4a, 0x43, 0x20, 0xc3, 0x81, 0x50, + 0xd5, 0xff, 0xff, 0xfc, 0xbb, 0x62, 0xdf, 0x11, 0x00, 0xe3, 0xbd, 0x7f, + 0x08, 0x02, 0x92, 0xcb, 0x01, 0x80, 0x26, 0x00, 0x60, 0xbc, 0x7c, 0xb3, + 0xda, 0xbf, 0x5f, 0xca, 0x42, 0x20, 0xc3, 0x91, 0x50, 0xd5, 0xff, 0xff, + 0xf8, 0xb3, 0x62, 0x76, 0x43, 0x21, 0xc3, 0xbf, 0x7f, 0xbc, 0xfc, 0xb3, + 0xe6, 0xff, 0x5f, 0xb7, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x09, 0x00, 0x00, + 0x88, 0xf0, 0x4e, 0x84, 0x40, 0x2b, 0x4a, 0x7c, 0x26, 0x04, 0x08, 0x64, + 0xd5, 0xff, 0xff, 0x3f, 0x05, 0xfe, 0x0f, 0x28, 0xe5, 0x05, 0x00, 0x00, + 0x08, 0x41, 0x64, 0x04, 0x11, 0x64, 0x1e, 0x40, 0x20, 0xd5, 0xff, 0xff, + 0xc8, 0xa7, 0x62, 0x40, 0x00, 0x64, 0xd1, 0xff, 0xff, 0xc4, 0xe3, 0x63, + 0x05, 0x00, 0x00, 0x48, 0x41, 0x64, 0xc3, 0x11, 0x51, 0xd5, 0xff, 0xff, + 0xe8, 0x9f, 0x62, 0x14, 0x18, 0x64, 0x01, 0x00, 0x85, 0x20, 0x00, 0x64, + 0x01, 0x00, 0x05, 0x24, 0x00, 0x64, 0x20, 0x18, 0xc8, 0x8c, 0x01, 0x92, + 0x4a, 0x42, 0x20, 0x0a, 0x00, 0x60, 0x0a, 0x42, 0x20, 0xc0, 0x95, 0x1d, + 0xd5, 0xff, 0xff, 0xcc, 0x97, 0x62, 0xc0, 0x95, 0x1d, 0xd5, 0xff, 0xff, + 0xec, 0x8f, 0x62, 0x9b, 0x05, 0x00, 0x9c, 0x81, 0x92, 0x57, 0x11, 0x00, + 0xca, 0xff, 0x7f, 0x09, 0x00, 0x00, 0x48, 0x00, 0x64, 0xc3, 0x41, 0x51, + 0x0b, 0x2c, 0xe5, 0xd5, 0xff, 0xff, 0x67, 0x01, 0xfe, 0x0f, 0x28, 0xe5, + 0xc8, 0x00, 0x72, 0x00, 0x08, 0x2b, 0x09, 0x00, 0x00, 0x1b, 0x10, 0x8e, + 0xa8, 0x18, 0xc8, 0x1c, 0x18, 0x64, 0x01, 0x00, 0x85, 0x20, 0x00, 0x64, + 0x80, 0x9d, 0x1d, 0x0a, 0x42, 0x20, 0xd5, 0xff, 0xff, 0xd4, 0x83, 0x62, + 0x80, 0x9d, 0x1d, 0xd1, 0xff, 0xff, 0xf4, 0xfb, 0x63, 0x57, 0x05, 0x00, + 0x5c, 0x01, 0x92, 0xdf, 0x11, 0x00, 0xda, 0xbf, 0x7f, 0x45, 0x3b, 0x46, + 0x48, 0x90, 0x64, 0x83, 0x51, 0x51, 0x0b, 0x2c, 0xe5, 0xd1, 0xff, 0xff, + 0xf7, 0x1e, 0xfe, 0x0f, 0x2c, 0xe5, 0x01, 0x12, 0x00, 0x00, 0x40, 0x55, + 0x04, 0x00, 0xa1, 0x01, 0x12, 0x00, 0x04, 0x84, 0x80, 0x00, 0x3c, 0x23, + 0x2b, 0x88, 0xe5, 0x1a, 0x40, 0x20, 0x01, 0x05, 0x00, 0x40, 0x00, 0x64, + 0x67, 0xd7, 0x7f, 0x0d, 0x00, 0x00, 0xd7, 0xa3, 0xf8, 0x98, 0x1a, 0x72, + 0x09, 0x00, 0x00, 0x20, 0x9d, 0x64, 0xa7, 0x11, 0x02, 0x03, 0x66, 0xf7, + 0x70, 0x02, 0xc8, 0x94, 0x11, 0x2b, 0x0d, 0x00, 0x00, 0x57, 0x11, 0x04, + 0x40, 0x01, 0xe7, 0x50, 0x01, 0xe7, 0x60, 0x01, 0xe7, 0x70, 0x01, 0xe7, + 0x04, 0x10, 0x64, 0xd1, 0xff, 0xff, 0xd4, 0xdf, 0x63, 0x00, 0x70, 0x94, + 0x19, 0x00, 0x00, 0x1e, 0x40, 0x3c, 0x03, 0x66, 0xf7, 0xca, 0x41, 0x20, + 0x04, 0x10, 0x64, 0x20, 0x00, 0x64, 0xd1, 0xff, 0xff, 0xe4, 0xdb, 0x63, + 0x80, 0x25, 0x64, 0xd1, 0xff, 0xff, 0xe0, 0x97, 0x63, 0x83, 0x01, 0x50, + 0xd5, 0xff, 0xff, 0xe8, 0x97, 0x63, 0x33, 0x0c, 0x50, 0x52, 0x41, 0x20, + 0x09, 0x00, 0x00, 0x28, 0x9d, 0x64, 0xaf, 0x11, 0x02, 0x83, 0x6e, 0xf7, + 0xcf, 0xa1, 0xd3, 0xca, 0x41, 0x20, 0x04, 0x10, 0x64, 0x83, 0x53, 0x90, + 0xd1, 0xff, 0xff, 0xcc, 0xcf, 0x63, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, + 0xc8, 0x8b, 0x63, 0x83, 0x01, 0x50, 0xd5, 0xff, 0xff, 0xd0, 0x8b, 0x63, + 0x26, 0x40, 0x20, 0x83, 0x6e, 0xf7, 0x07, 0x06, 0x00, 0xcf, 0x85, 0xd3, + 0xca, 0x41, 0x20, 0x04, 0x10, 0x64, 0xd1, 0xff, 0xff, 0xe4, 0xc3, 0x63, + 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, 0xe0, 0xff, 0x62, 0x83, 0x01, 0x50, + 0xd5, 0xff, 0xff, 0xe8, 0xff, 0x62, 0x8f, 0x43, 0x80, 0x64, 0x42, 0x2b, + 0x0b, 0x64, 0xfb, 0x23, 0x0a, 0x00, 0xd2, 0x40, 0x20, 0x10, 0x09, 0x7a, + 0x77, 0x47, 0x00, 0x22, 0x1e, 0x00, 0xd4, 0xf6, 0x73, 0x30, 0x07, 0xa8, + 0x83, 0x6e, 0xf7, 0x73, 0x31, 0x90, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0xd1, 0xff, 0xff, 0xdc, 0xb3, 0x63, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, + 0xd8, 0xef, 0x62, 0x13, 0x00, 0x60, 0x7c, 0x00, 0x64, 0x0d, 0x00, 0x00, + 0xd4, 0x3f, 0x82, 0x01, 0x05, 0x00, 0x80, 0x00, 0x64, 0xfb, 0xd5, 0x7f, + 0x09, 0x00, 0x00, 0x24, 0x9d, 0x64, 0x97, 0x11, 0x02, 0x80, 0x01, 0x92, + 0x07, 0x00, 0xfd, 0x43, 0x56, 0xf7, 0x83, 0x47, 0xb0, 0x70, 0x41, 0xc8, + 0x05, 0x00, 0x00, 0x00, 0x8b, 0x55, 0x28, 0x00, 0xc8, 0x82, 0x41, 0x20, + 0x87, 0xf1, 0x7f, 0x05, 0x00, 0x00, 0x64, 0x01, 0x81, 0x05, 0x00, 0x00, + 0x00, 0x8b, 0x55, 0x0d, 0x00, 0x00, 0x20, 0x1e, 0x64, 0x64, 0x03, 0x72, + 0x43, 0x56, 0xf7, 0x11, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0x28, 0xdc, 0x64, 0xd1, 0xff, 0xff, 0xe0, 0x97, 0x63, 0x80, 0x07, 0x64, + 0xd1, 0xff, 0xff, 0xdc, 0xd3, 0x62, 0x83, 0x01, 0x50, 0xd5, 0xff, 0xff, + 0xe4, 0xd3, 0x62, 0x1e, 0x40, 0x20, 0x6f, 0xd5, 0x7f, 0xc0, 0x69, 0x24, + 0x0b, 0xbc, 0x1f, 0x3c, 0xfc, 0xb3, 0x8f, 0xc0, 0xf9, 0xd0, 0x28, 0x27, + 0x05, 0x00, 0x00, 0x44, 0x64, 0x64, 0x6b, 0xd0, 0xf2, 0x00, 0xfa, 0x64, + 0x80, 0x42, 0x24, 0x47, 0x5c, 0x07, 0x27, 0x48, 0x60, 0x08, 0x1a, 0x1f, + 0x93, 0x00, 0xa0, 0x0f, 0xdc, 0x0d, 0xcc, 0x68, 0xb6, 0x2a, 0x40, 0x20, + 0xe6, 0x01, 0x60, 0x80, 0x81, 0x1d, 0xd5, 0xff, 0xff, 0xf4, 0x93, 0x62, + 0x43, 0x56, 0xf7, 0x05, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0xd1, 0xff, 0xff, 0xfc, 0xfb, 0x62, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, + 0xf8, 0xb7, 0x62, 0x43, 0x56, 0xf7, 0x0d, 0x00, 0x00, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0xd1, 0xff, 0xff, 0xd0, 0xf7, 0x62, 0x80, 0x07, 0x64, + 0xd1, 0xff, 0xff, 0xcc, 0xb3, 0x62, 0x82, 0x41, 0x20, 0xd5, 0xff, 0xff, + 0xec, 0xbf, 0x62, 0x1f, 0x3c, 0xfe, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x64, + 0xb7, 0xd4, 0x7f, 0xc2, 0x41, 0x20, 0xaf, 0xd4, 0x7f, 0x05, 0x00, 0x00, + 0x2c, 0x8b, 0x55, 0x10, 0x10, 0x64, 0x82, 0x41, 0x20, 0xc0, 0x82, 0x86, + 0x06, 0xc1, 0x80, 0x87, 0xc6, 0xf2, 0xd1, 0xff, 0xff, 0xc4, 0xfb, 0x63, + 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, 0xd0, 0xa3, 0x62, 0x82, 0x41, 0x20, + 0xd5, 0xff, 0xff, 0xf0, 0xaf, 0x62, 0x2f, 0x3c, 0xfe, 0x01, 0x0c, 0x00, + 0x40, 0x00, 0x64, 0x63, 0xd4, 0x7f, 0xc2, 0x42, 0x20, 0x5b, 0xd4, 0x7f, + 0x01, 0x0c, 0x00, 0x80, 0x00, 0x64, 0x4f, 0xd4, 0x7f, 0xcb, 0xed, 0xf2, + 0x21, 0x00, 0x00, 0x00, 0x98, 0x64, 0x9c, 0x40, 0x24, 0x1d, 0x00, 0x00, + 0xc3, 0x01, 0x50, 0x1b, 0x47, 0x60, 0x2f, 0xd4, 0x7f, 0x15, 0x01, 0x00, + 0xfc, 0x7d, 0xb3, 0xe2, 0x00, 0x60, 0x80, 0xa9, 0x1d, 0xd1, 0xff, 0xff, + 0xe8, 0xe3, 0x63, 0x80, 0x07, 0x64, 0xd1, 0xff, 0xff, 0xf4, 0x8b, 0x62, + 0x01, 0x0c, 0x00, 0xc0, 0x00, 0x64, 0xff, 0xd3, 0x7f, 0x5f, 0x56, 0xf7, + 0xfd, 0xff, 0x00, 0xc8, 0xff, 0x64, 0x14, 0x16, 0x1f, 0x20, 0x1a, 0x1f, + 0xc3, 0x11, 0x52, 0xd1, 0xff, 0xff, 0xd0, 0xc7, 0x62, 0x01, 0x00, 0xf4, + 0x08, 0x00, 0x64, 0xc3, 0x81, 0x52, 0xd1, 0xff, 0xff, 0xd4, 0xc3, 0x62, + 0x01, 0x05, 0x00, 0xc0, 0x00, 0x64, 0xbf, 0xd3, 0x7f, 0x05, 0x00, 0x00, + 0xcc, 0x73, 0x64, 0xa3, 0x0f, 0x90, 0xf7, 0xd2, 0x7f, 0x82, 0x41, 0x20, + 0x6b, 0xed, 0x7f, 0x01, 0x05, 0x00, 0x00, 0x01, 0x64, 0x9b, 0xd3, 0x7f, + 0xd0, 0x12, 0x64, 0x84, 0x0c, 0x64, 0x01, 0x05, 0x00, 0x40, 0x01, 0x64, + 0x4b, 0x11, 0xa0, 0x33, 0x06, 0xa2, 0x7f, 0xd3, 0x7f, 0x8a, 0x83, 0xe0, + 0x80, 0xe0, 0x26, 0x0a, 0x40, 0x60, 0x8f, 0xd2, 0x7f, 0x83, 0x2d, 0x51, + 0x88, 0x0c, 0x64, 0xfb, 0xf0, 0x7f, 0x01, 0x05, 0x00, 0x80, 0x01, 0x64, + 0x57, 0xd3, 0x7f, 0x01, 0x05, 0x00, 0x00, 0x02, 0x64, 0x2b, 0x8c, 0xe5, + 0x47, 0x93, 0x7f, 0x01, 0x0c, 0x00, 0x00, 0x01, 0x64, 0x3b, 0xd3, 0x7f, + 0x82, 0x41, 0x20, 0x63, 0xec, 0x7f, 0x80, 0x07, 0x64, 0xcd, 0xff, 0xff, + 0xc8, 0xe3, 0x63, 0xbe, 0x83, 0xe0, 0xc0, 0x63, 0x26, 0x0a, 0x00, 0x60, + 0x37, 0xd2, 0x7f, 0x82, 0x41, 0x20, 0x3f, 0xec, 0x7f, 0x01, 0x05, 0x00, + 0xc0, 0x01, 0x64, 0xaf, 0xbf, 0x7f, 0x07, 0x10, 0xe5, 0x16, 0x40, 0x20, + 0x44, 0x00, 0x64, 0x9a, 0x05, 0x20, 0x9b, 0xc5, 0xfb, 0x1c, 0x18, 0x72, + 0x40, 0x00, 0x64, 0x17, 0x00, 0x60, 0x00, 0x00, 0x64, 0xc0, 0xd7, 0x1f, + 0x04, 0x00, 0x64, 0xc4, 0xc3, 0x73, 0x07, 0x14, 0xe5, 0x04, 0x03, 0x64, + 0x00, 0x44, 0x24, 0x05, 0x00, 0x00, 0x0b, 0x80, 0x11, 0x82, 0x04, 0xe0, + 0x00, 0x3c, 0x23, 0x04, 0x03, 0x64, 0x00, 0x44, 0x24, 0x05, 0x00, 0x00, + 0x0b, 0x80, 0x11, 0x8f, 0x10, 0x80, 0xc0, 0x00, 0x86, 0x03, 0x00, 0xfd, + 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, 0x05, 0x00, 0x00, 0x58, 0x7a, 0x64, + 0x14, 0x00, 0x72, 0x9b, 0x29, 0x00, 0x04, 0x00, 0x64, 0x28, 0x04, 0xc8, + 0xa3, 0x03, 0x90, 0xc9, 0xf3, 0xff, 0xf4, 0xaf, 0x63, 0x83, 0x23, 0x80, + 0x05, 0x00, 0x00, 0x3c, 0x8c, 0x64, 0x88, 0x01, 0xd0, 0xd3, 0x23, 0x80, + 0x00, 0x09, 0xd8, 0xd3, 0x03, 0x90, 0x40, 0x00, 0x64, 0xc7, 0x03, 0xb0, + 0x8a, 0x21, 0xc0, 0x23, 0x09, 0xa0, 0x0f, 0x0c, 0xe6, 0x03, 0x10, 0xe6, + 0x35, 0x0c, 0x00, 0x1b, 0x04, 0x54, 0xdc, 0xfb, 0x63, 0xc2, 0x41, 0x20, + 0xe8, 0xf3, 0x63, 0x00, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0x35, 0x0c, 0x00, + 0xc0, 0x44, 0x64, 0xd4, 0xf3, 0x63, 0x09, 0x00, 0x00, 0x00, 0x93, 0x52, + 0x04, 0x80, 0x66, 0x0e, 0x40, 0x60, 0x82, 0x41, 0x20, 0xc8, 0xdb, 0x62, + 0xd4, 0x87, 0x62, 0x1b, 0x00, 0xe0, 0x0c, 0x00, 0x64, 0x38, 0x0c, 0xc8, + 0x83, 0x4b, 0x90, 0x88, 0x03, 0xd8, 0xc9, 0xf3, 0xff, 0xf8, 0x93, 0x63, + 0x8b, 0x43, 0x80, 0x80, 0x0b, 0xd0, 0x5f, 0xd5, 0x7f, 0xd0, 0xfb, 0x63, + 0x40, 0x84, 0x62, 0x80, 0x00, 0x64, 0x1b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x83, 0xa0, 0xf1, 0x02, 0x48, 0x20, 0x0b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x07, 0x00, 0xfe, 0x5c, 0x80, 0x62, 0x43, 0xe0, 0xf1, 0xfd, 0xbf, 0xff, + 0x00, 0x00, 0x64, 0x07, 0x42, 0xf2, 0x67, 0xc3, 0xfe, 0x8f, 0x1f, 0xfe, + 0x83, 0xc2, 0xfe, 0x02, 0x78, 0x27, 0x03, 0x78, 0xfe, 0x00, 0x04, 0x23, + 0x0e, 0x40, 0x20, 0x10, 0x00, 0x64, 0x00, 0x10, 0x1e, 0x03, 0x04, 0x00, + 0x00, 0x08, 0x1e, 0xc0, 0x04, 0x1e, 0x00, 0x3c, 0x23, 0x57, 0xc3, 0xfe, + 0x05, 0x10, 0x00, 0x18, 0x28, 0x64, 0xe0, 0x18, 0xc8, 0x83, 0x41, 0x90, + 0x93, 0x45, 0x90, 0xa3, 0x79, 0x90, 0xb3, 0x7d, 0x90, 0x1f, 0xa5, 0xf1, + 0xdc, 0xe9, 0xa3, 0x83, 0x1d, 0x90, 0x1f, 0x8f, 0xf1, 0x93, 0x1d, 0x90, + 0x9f, 0x8f, 0xf1, 0xa3, 0x1d, 0x90, 0x1f, 0xe0, 0xf1, 0xb3, 0x1d, 0x90, + 0x1f, 0xa5, 0xf1, 0xd0, 0x31, 0x26, 0x2b, 0x00, 0xf3, 0x1f, 0xce, 0xf1, + 0xa3, 0x1d, 0x90, 0x9f, 0xce, 0xf1, 0xb3, 0x1d, 0x90, 0x1f, 0xa5, 0xf1, + 0xd4, 0x31, 0x26, 0x2b, 0x00, 0xf3, 0x1f, 0xdd, 0xf1, 0xa3, 0x1d, 0x90, + 0x9f, 0xdd, 0xf1, 0xb3, 0x1d, 0x90, 0x18, 0x00, 0x64, 0x10, 0x18, 0xc8, + 0xc0, 0xdb, 0x1f, 0x67, 0x1e, 0xfe, 0x73, 0x87, 0xf1, 0x76, 0x53, 0x20, + 0x77, 0x30, 0xf2, 0xb3, 0xc2, 0xfe, 0x32, 0x43, 0x04, 0x03, 0x7b, 0xfe, + 0x30, 0x80, 0x64, 0x6b, 0x32, 0xf2, 0x1f, 0x1e, 0xfe, 0x17, 0x1e, 0xfe, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, + 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, + 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, + 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0x80, 0x40, 0x74, 0xdc, 0x8f, 0x62, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, + 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, + 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, + 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0xc0, 0x40, 0x74, 0xdc, 0x8b, 0x62, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0x03, 0x40, 0xfd, 0xa3, 0x7f, 0x90, + 0x93, 0x43, 0x90, 0x67, 0xc3, 0xfe, 0x07, 0xa9, 0xf1, 0xa3, 0x07, 0x90, + 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x03, 0xaa, 0xf1, 0x83, 0x43, 0x90, + 0x67, 0xc3, 0xfe, 0x19, 0x00, 0x00, 0x40, 0x40, 0x74, 0xdc, 0x87, 0x62, + 0x09, 0x00, 0x00, 0xc7, 0x50, 0xf9, 0x10, 0x00, 0x64, 0xc9, 0xf3, 0xff, + 0x5c, 0x52, 0x72, 0x93, 0xc2, 0xfe, 0x12, 0x41, 0x24, 0x03, 0x79, 0xfe, + 0x53, 0x87, 0xf1, 0x56, 0x41, 0x24, 0x77, 0x10, 0xf2, 0x10, 0x80, 0x64, + 0x5b, 0x12, 0xf2, 0x6b, 0x12, 0xf2, 0x67, 0xc3, 0xfe, 0x93, 0xc2, 0xfe, + 0x12, 0x41, 0x04, 0x03, 0x79, 0xfe, 0xff, 0x1b, 0xfe, 0x09, 0x00, 0x00, + 0x53, 0x4c, 0xf4, 0x33, 0xc3, 0xfe, 0x1b, 0x10, 0xe6, 0x09, 0x00, 0x00, + 0x44, 0x03, 0x81, 0x7d, 0x00, 0x00, 0x3c, 0x7c, 0xaf, 0x5e, 0x40, 0x20, + 0x0e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x64, 0x07, 0x81, 0x58, 0x00, 0x64, + 0xb3, 0x03, 0x90, 0xa3, 0x1b, 0x90, 0x07, 0x00, 0xfd, 0x83, 0x47, 0xb0, + 0x01, 0x00, 0xf0, 0x48, 0x04, 0x64, 0xc0, 0x00, 0x74, 0xc4, 0x87, 0x62, + 0x82, 0x83, 0xe0, 0x00, 0xe0, 0x26, 0x1a, 0x40, 0x60, 0x88, 0x1b, 0xd8, + 0x01, 0x00, 0xf0, 0x48, 0x01, 0x64, 0xc0, 0x00, 0x74, 0xe4, 0x83, 0x62, + 0x48, 0x00, 0x64, 0xa3, 0x0b, 0x90, 0x00, 0x00, 0x74, 0x01, 0x00, 0xf0, + 0x48, 0x00, 0x64, 0xcc, 0x83, 0x62, 0x40, 0x00, 0x64, 0xd0, 0xcf, 0x63, + 0x03, 0x80, 0xe5, 0x20, 0x84, 0x1d, 0x10, 0x7a, 0x31, 0xb3, 0x23, 0x00, + 0x4c, 0x0a, 0x2b, 0x3c, 0x02, 0xa7, 0x03, 0x33, 0x01, 0xd3, 0x50, 0xfb, + 0x9b, 0x23, 0x40, 0x06, 0x40, 0x20, 0x22, 0x41, 0x20, 0xd6, 0x43, 0x20, + 0x84, 0x14, 0x72, 0x87, 0x0d, 0x00, 0x4e, 0x4c, 0x00, 0xd3, 0x20, 0x00, + 0xbb, 0xd3, 0xf2, 0xcc, 0x01, 0x64, 0xa3, 0x0f, 0xb0, 0x87, 0x23, 0x00, + 0x47, 0x08, 0x90, 0x8f, 0x37, 0x00, 0x0c, 0x3d, 0x72, 0x03, 0xa3, 0x80, + 0x8b, 0x4d, 0x00, 0xf8, 0x97, 0x62, 0xfa, 0x41, 0x20, 0x07, 0x84, 0xe5, + 0x4e, 0x1d, 0x00, 0xcf, 0x44, 0x00, 0xcc, 0x00, 0xb6, 0x3a, 0x00, 0x60, + 0x64, 0x00, 0x64, 0x4c, 0x8e, 0x40, 0xd0, 0x80, 0xba, 0x60, 0x40, 0x70, + 0x0a, 0x40, 0x60, 0x47, 0x10, 0x00, 0x9b, 0x8d, 0xf2, 0x4c, 0x0d, 0x31, + 0x18, 0x0c, 0xc8, 0xd0, 0x90, 0x1d, 0x4e, 0x41, 0x20, 0xd0, 0x90, 0x1d, + 0x83, 0xbf, 0x7f, 0xd0, 0x80, 0x92, 0xe6, 0xff, 0x7f, 0x67, 0x00, 0x80, + 0x9b, 0x05, 0x00, 0x47, 0x10, 0x00, 0x4c, 0x06, 0x5e, 0x9b, 0x05, 0x00, + 0xc4, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0xc7, 0xbf, 0x7f, 0xca, 0x1f, 0x00, + 0x8b, 0x44, 0x00, 0x8c, 0x00, 0xb6, 0x4e, 0x00, 0x60, 0x50, 0x00, 0x64, + 0x08, 0x89, 0x40, 0x90, 0x80, 0xba, 0x32, 0x40, 0x60, 0x10, 0x10, 0x5a, + 0xc3, 0x10, 0x90, 0xcf, 0x88, 0xf2, 0xc8, 0x0f, 0x31, 0x20, 0x08, 0xc8, + 0x3e, 0x42, 0x20, 0xa2, 0x40, 0x20, 0xca, 0x43, 0x20, 0x3e, 0x42, 0x20, + 0xa2, 0x40, 0x20, 0x37, 0xbf, 0x7f, 0x10, 0x08, 0xf0, 0xc0, 0x10, 0xd8, + 0xd7, 0xbf, 0x7f, 0x90, 0x80, 0x92, 0xd2, 0xff, 0x7f, 0xc0, 0x00, 0xe4, + 0x03, 0x10, 0x00, 0xcf, 0x04, 0x00, 0x13, 0xf0, 0x8f, 0x08, 0x05, 0x5e, + 0xc4, 0x08, 0x78, 0x84, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0xaf, 0xbf, 0x7f, + 0x00, 0x7c, 0x31, 0x00, 0xfc, 0xa1, 0x00, 0x3c, 0x23, 0x03, 0x18, 0xe5, + 0x18, 0x84, 0x1d, 0x09, 0x00, 0x00, 0x00, 0x9c, 0x52, 0x96, 0x40, 0x20, + 0x00, 0x00, 0x66, 0x16, 0x00, 0x60, 0x4a, 0x41, 0x20, 0x80, 0x9d, 0x1d, + 0xd0, 0x93, 0x62, 0x07, 0x1c, 0xe5, 0x08, 0x00, 0x64, 0x00, 0x00, 0x74, + 0xc0, 0x93, 0x62, 0xfd, 0xff, 0xff, 0x3c, 0xfc, 0x87, 0x12, 0x40, 0x60, + 0x44, 0x00, 0x64, 0x09, 0x00, 0x00, 0x84, 0x07, 0x7f, 0x09, 0x00, 0x00, + 0x08, 0x9c, 0x52, 0x84, 0x00, 0x66, 0xc2, 0xbf, 0x7f, 0x4a, 0x41, 0x20, + 0x80, 0x9d, 0x1d, 0xcc, 0xfb, 0x63, 0xbf, 0xbf, 0x7f, 0x03, 0x00, 0xe0, + 0xcc, 0xfb, 0x63, 0x03, 0x60, 0x20, 0x07, 0x04, 0xe0, 0x37, 0x00, 0xfe, + 0x9f, 0x00, 0xfe, 0x03, 0x00, 0xe0, 0xc4, 0x87, 0x62, 0x40, 0x80, 0x1d, + 0x07, 0x04, 0xe0, 0x03, 0x10, 0xe5, 0x14, 0x7c, 0x27, 0x58, 0x7c, 0x27, + 0x03, 0xd4, 0xfa, 0x47, 0xd8, 0xfa, 0x03, 0xd4, 0xf2, 0x47, 0xd8, 0xf2, + 0xdc, 0x83, 0x62, 0x47, 0xd4, 0xfa, 0x47, 0xd4, 0xf2, 0x57, 0xd9, 0xfa, + 0x03, 0xd4, 0xfa, 0x03, 0xd4, 0xf2, 0x07, 0x14, 0xe5, 0x4b, 0x24, 0xfe, + 0x50, 0x04, 0xc8, 0x8a, 0x4c, 0x20, 0x8b, 0x04, 0x00, 0x52, 0x40, 0x20, + 0x04, 0x88, 0x3e, 0x8c, 0x80, 0x25, 0x00, 0x8c, 0x40, 0x10, 0x08, 0xca, + 0x00, 0x50, 0x1e, 0x00, 0x3c, 0x23, 0x04, 0x00, 0x64, 0xb0, 0xc7, 0xc9, + 0x47, 0x00, 0x80, 0xa0, 0xc7, 0xc9, 0x07, 0x00, 0xfe, 0x0e, 0x40, 0x20, + 0x48, 0x04, 0x5e, 0xc4, 0x08, 0x78, 0x84, 0x00, 0x66, 0xf6, 0xbf, 0x7f, + 0x00, 0x3c, 0x23, 0x8c, 0x00, 0x64, 0x01, 0x00, 0x00, 0xcf, 0x01, 0xfe, + 0x01, 0x04, 0x00, 0x8c, 0x05, 0x64, 0x01, 0x00, 0x00, 0x6f, 0x01, 0xfe, + 0x4b, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, 0x67, 0xc3, 0xfe, 0x8f, 0x03, 0x80, + 0x83, 0x13, 0x80, 0xbb, 0x23, 0x00, 0xc0, 0x00, 0x86, 0x02, 0xbc, 0x9f, + 0x00, 0x3c, 0x23, 0xa0, 0xcf, 0x7b, 0x67, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, + 0xa7, 0x1f, 0xfe, 0x10, 0x00, 0x64, 0xc5, 0xf3, 0xff, 0xf4, 0xd3, 0x72, + 0xcf, 0x1f, 0xfe +}; + +#define PMC_DTCM_LOG_SIZE 256 + +const unsigned char pmcdata[] = { + 0x3c, 0x0a, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x40, 0x0a, 0x00, 0x00, 0xcc, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x00, 0x28, 0x6e, + 0x75, 0x6c, 0x6c, 0x29, 0x00, 0x25, 0x30, 0x34, 0x75, 0x3a, 0x20, 0x00, + 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x20, 0x30, 0x78, 0x25, + 0x30, 0x38, 0x78, 0x0a, 0x00, 0x50, 0x4d, 0x43, 0x5f, 0x56, 0x45, 0x52, + 0x3a, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x0a, 0x00, 0x24, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x20, 0x32, 0x38, 0x34, 0x30, + 0x32, 0x37, 0x20, 0x24, 0x00, 0x32, 0x30, 0x31, 0x31, 0x30, 0x36, 0x5f, + 0x31, 0x32, 0x32, 0x39, 0x00, 0x54, 0x53, 0x3a, 0x25, 0x73, 0x0a, 0x00, + 0x43, 0x48, 0x49, 0x44, 0x3a, 0x25, 0x78, 0x0a, 0x00, 0x43, 0x52, 0x45, + 0x56, 0x3a, 0x25, 0x78, 0x0a, 0x00, 0x50, 0x41, 0x52, 0x54, 0x49, 0x44, + 0x3a, 0x25, 0x78, 0x20, 0x43, 0x46, 0x41, 0x4d, 0x3a, 0x25, 0x78, 0x20, + 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x20, 0x63, 0x68, 0x69, 0x70, + 0x20, 0x69, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x0a, 0x00, 0x52, 0x4f, 0x20, 0x53, 0x56, 0x54, 0x20, 0x25, + 0x64, 0x20, 0x48, 0x56, 0x54, 0x20, 0x25, 0x64, 0x20, 0x4c, 0x56, 0x54, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, + 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, 0x6f, 0x76, 0x65, + 0x72, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x65, + 0x76, 0x69, 0x6f, 0x75, 0x73, 0x20, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, + 0x56, 0x53, 0x20, 0x6c, 0x6f, 0x67, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, + 0x69, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x20, 0x73, 0x6c, + 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, + 0x64, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x69, 0x6e, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, + 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, 0x66, 0x69, 0x6e, + 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x75, 0x0a, + 0x00, 0x41, 0x56, 0x53, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x0a, 0x00, 0x44, 0x41, 0x43, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x00, + 0x4c, 0x56, 0x54, 0x00, 0x48, 0x56, 0x54, 0x00, 0x64, 0x65, 0x76, 0x20, + 0x61, 0x64, 0x64, 0x72, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x52, 0x4f, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x53, 0x56, 0x54, 0x20, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x20, 0x25, 0x75, 0x20, 0x52, 0x4f, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x25, 0x73, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, + 0x25, 0x75, 0x0a, 0x00, 0x63, 0x75, 0x72, 0x5f, 0x64, 0x61, 0x63, 0x20, + 0x25, 0x75, 0x20, 0x63, 0x75, 0x72, 0x56, 0x20, 0x25, 0x75, 0x20, 0x63, + 0x75, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x20, 0x25, 0x75, 0x20, 0x64, 0x65, + 0x6c, 0x74, 0x61, 0x20, 0x25, 0x64, 0x20, 0x6e, 0x65, 0x77, 0x5f, 0x64, + 0x61, 0x63, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x56, 0x41, 0x44, 0x43, + 0x31, 0x20, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x25, + 0x75, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, + 0x64, 0x20, 0x4d, 0x56, 0x41, 0x44, 0x43, 0x32, 0x20, 0x25, 0x75, 0x0a, + 0x00, 0x4d, 0x56, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x20, 0x64, 0x65, 0x6c, + 0x74, 0x61, 0x20, 0x25, 0x75, 0x20, 0x4d, 0x56, 0x0a, 0x00, 0x44, 0x75, + 0x6d, 0x70, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, + 0x6f, 0x6e, 0x20, 0x76, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x6d, 0x76, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, 0x70, 0x20, 0x61, 0x6c, 0x6c, + 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x76, 0x6c, 0x6f, + 0x77, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x52, 0x4f, 0x5b, + 0x25, 0x64, 0x5d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, + 0x6f, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x6f, 0x20, + 0x25, 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x25, 0x64, 0x20, + 0x76, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, + 0x61, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, 0x76, 0x68, + 0x69, 0x67, 0x68, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, + 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x20, 0x25, 0x64, 0x20, 0x76, 0x6f, + 0x6c, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, + 0x00, 0x52, 0x4f, 0x5b, 0x25, 0x64, 0x5d, 0x20, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x5f, 0x72, 0x6f, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x77, + 0x5f, 0x72, 0x6f, 0x20, 0x25, 0x64, 0x20, 0x76, 0x6c, 0x6f, 0x77, 0x5f, + 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6c, 0x6f, + 0x77, 0x20, 0x25, 0x64, 0x20, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x72, 0x6f, + 0x20, 0x25, 0x64, 0x20, 0x76, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x6d, 0x76, + 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x61, 0x76, 0x73, 0x5f, 0x64, 0x61, 0x63, + 0x20, 0x25, 0x64, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, + 0x6d, 0x76, 0x20, 0x25, 0x75, 0x20, 0x61, 0x76, 0x73, 0x5f, 0x6d, 0x76, + 0x20, 0x25, 0x64, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x5f, 0x6d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x63, 0x61, + 0x6c, 0x63, 0x5f, 0x73, 0x77, 0x72, 0x65, 0x67, 0x5f, 0x6d, 0x76, 0x20, + 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x20, + 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6c, 0x6f, 0x77, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, + 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x20, 0x25, 0x64, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x5f, 0x73, 0x77, + 0x72, 0x65, 0x67, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x63, + 0x61, 0x6c, 0x63, 0x5f, 0x73, 0x77, 0x72, 0x65, 0x67, 0x5f, 0x64, 0x61, + 0x63, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x69, 0x73, + 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x72, 0x67, + 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x25, + 0x64, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x76, 0x5f, + 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x76, 0x20, 0x25, 0x64, 0x0a, + 0x00, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x54, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x25, 0x64, 0x20, 0x68, 0x69, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x52, 0x34, 0x38, 0x5f, 0x25, 0x64, 0x20, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x68, 0x69, 0x20, 0x25, 0x64, 0x20, + 0x6c, 0x6f, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, 0x70, 0x20, + 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, 0x6e, 0x20, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x0a, 0x00, 0x40, 0x40, 0x40, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x00, 0x40, 0x40, 0x40, 0x50, 0x41, + 0x53, 0x53, 0x45, 0x44, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x0d, 0x27, 0x81, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x50, 0x0a, 0x00, 0x00 +}; +#endif //PMC_ROMDATA_6756_H diff --git a/arch/arm/mach-bcmbca/pmc/pmc_firmware_68460.h b/arch/arm/mach-bcmbca/pmc/pmc_firmware_68460.h new file mode 100644 index 0000000000..418167338f --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_firmware_68460.h @@ -0,0 +1,2468 @@ +/* + * * <:copyright-BRCM:2017:DUAL/GPL:standard + * * + * * Copyright (c) 2017 Broadcom + * * All Rights Reserved + * * + * * This program is free software; you can redistribute it and/or modify + * * it under the terms of the GNU General Public License, version 2, as published by + * * the Free Software Foundation (the "GPL"). + * * + * * This program is distributed in the hope that it will be useful, + * * but WITHOUT ANY WARRANTY; without even the implied warranty of + * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * * GNU General Public License for more details. + * * + * * + * * A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + * * writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * * Boston, MA 02111-1307, USA. + * * + * * :> + * */ + +#ifndef PMC_ROMDATA_68460_H +#define PMC_ROMDATA_68460_H +#define CFG_BOOT_PMC3_START_ADDR 0xc0000 +#define CFG_BOOT_PMC3_DATA_ADDR 0x4000000 +#define PMC_VER_IMPL 3 +#define PMC_VER_MAJOR 4 +#define PMC_VER_MINOR 1 +const unsigned char pmcappdata[] = { + 0x01, 0x00, 0x00, 0x07, 0x12, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0xe5, 0x00, + 0x00, 0x64, 0x18, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xdc, 0xf7, 0x63, 0x00, + 0x00, 0x64, 0x20, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xec, 0xf3, 0x63, 0x1f, + 0x00, 0x60, 0x40, 0x00, 0x65, 0x5b, 0x02, 0xf2, 0xfd, 0xff, 0x81, 0xc0, + 0xff, 0x64, 0x33, 0x02, 0xf2, 0x67, 0xc3, 0xfe, 0x00, 0x00, 0x64, 0x18, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xe8, 0xeb, 0x63, 0xfd, 0xff, 0x00, 0xd4, + 0xff, 0x64, 0x55, 0xd5, 0xff, 0x4b, 0x55, 0x45, 0xc8, 0xc8, 0xfc, 0x01, + 0x00, 0x00, 0xcc, 0xeb, 0x63, 0x00, 0x00, 0x64, 0x20, 0x00, 0xc8, 0x03, + 0x0c, 0xe5, 0xfd, 0xf3, 0xff, 0x37, 0x1c, 0xfe, 0x07, 0x0c, 0xe5, 0x03, + 0x00, 0x80, 0x00, 0x3c, 0x23, 0x0f, 0x20, 0xe5, 0x08, 0x00, 0x64, 0x04, + 0x04, 0x64, 0x00, 0x0c, 0x64, 0x01, 0x00, 0x00, 0xcc, 0x8b, 0x63, 0x01, + 0x00, 0x04, 0x00, 0x01, 0x64, 0xd8, 0xff, 0x63, 0x04, 0x00, 0x66, 0x2e, + 0x00, 0x60, 0x00, 0x0c, 0x64, 0x08, 0x00, 0x64, 0x04, 0x08, 0x64, 0x01, + 0x00, 0x00, 0xd4, 0x83, 0x63, 0x01, 0x0c, 0x00, 0x00, 0x08, 0x64, 0x50, + 0x01, 0xc8, 0xe8, 0xf3, 0x63, 0xa3, 0x00, 0x60, 0xd4, 0x00, 0x64, 0x01, + 0x00, 0x04, 0x18, 0x04, 0x64, 0x34, 0x14, 0x72, 0x14, 0x01, 0x64, 0x01, + 0x00, 0x04, 0x18, 0x0d, 0x74, 0x9c, 0x14, 0x72, 0xbb, 0xbf, 0x7f, 0x82, + 0x41, 0x20, 0xfc, 0xf7, 0x63, 0x22, 0x40, 0x20, 0x83, 0x11, 0x00, 0xf0, + 0xf7, 0x63, 0xa3, 0x03, 0x90, 0x83, 0x21, 0x00, 0xe4, 0xf7, 0x63, 0x87, + 0x23, 0x80, 0x0a, 0x40, 0x20, 0x02, 0x42, 0x20, 0xdf, 0x05, 0x00, 0xfc, + 0x8f, 0x62, 0x6c, 0x1d, 0x3a, 0x9b, 0x31, 0x00, 0xc6, 0xbf, 0x7f, 0xaf, + 0xbf, 0x7f, 0x82, 0x41, 0x20, 0xf8, 0xf3, 0x63, 0x22, 0x40, 0x20, 0x83, + 0x11, 0x00, 0xec, 0xf3, 0x63, 0x0a, 0x40, 0x20, 0x03, 0x02, 0x50, 0xe0, + 0x8f, 0x62, 0xdf, 0x05, 0x00, 0x6c, 0x1d, 0x3a, 0x9b, 0x21, 0x00, 0xd6, + 0xbf, 0x7f, 0x43, 0xbf, 0x7f, 0x01, 0x00, 0x04, 0x00, 0x02, 0x64, 0xc0, + 0xf3, 0x63, 0x1a, 0x40, 0x20, 0x01, 0x00, 0x04, 0x00, 0x03, 0x64, 0xf0, + 0xef, 0x63, 0x1e, 0x40, 0x20, 0x08, 0x00, 0x64, 0x00, 0x0c, 0x64, 0x04, + 0x0c, 0x64, 0x05, 0x00, 0x00, 0x14, 0x60, 0x55, 0x01, 0x00, 0x00, 0xd0, + 0xd7, 0x62, 0x01, 0x0c, 0x00, 0x40, 0x79, 0x64, 0x20, 0x00, 0xc8, 0x4a, + 0x41, 0x20, 0x80, 0x9d, 0x1d, 0xd0, 0x8b, 0x62, 0x00, 0x0c, 0x64, 0x08, + 0x00, 0x64, 0x04, 0x0e, 0x64, 0x01, 0x00, 0x00, 0xcc, 0xcf, 0x62, 0x00, + 0x00, 0x64, 0x18, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xfc, 0x9b, 0x63, 0x00, + 0x0c, 0x64, 0x8a, 0x41, 0x20, 0x04, 0x10, 0x64, 0x01, 0x00, 0x00, 0xe0, + 0xc7, 0x62, 0x00, 0x00, 0x64, 0x28, 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x80, + 0x9d, 0x1d, 0xfd, 0xf3, 0xff, 0xf8, 0x93, 0x63, 0x4a, 0x41, 0x20, 0x80, + 0x9d, 0x1d, 0x01, 0x00, 0x00, 0xc8, 0xc7, 0x62, 0x88, 0x08, 0x31, 0x18, + 0x08, 0xca, 0x48, 0x10, 0x5a, 0x10, 0x08, 0x7a, 0x00, 0x3c, 0x23, 0x0c, + 0x00, 0x64, 0x4c, 0xcc, 0x1e, 0x84, 0x08, 0x31, 0x10, 0x04, 0xca, 0x10, + 0x0c, 0x7a, 0x00, 0x3c, 0x23, 0x03, 0x08, 0xe6, 0x05, 0x00, 0x00, 0x00, + 0x62, 0x52, 0x04, 0x00, 0x66, 0x52, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, + 0x70, 0x55, 0x18, 0x05, 0x64, 0x44, 0x00, 0x72, 0x83, 0x05, 0x40, 0x09, + 0x00, 0x00, 0x04, 0xc2, 0x80, 0x05, 0x00, 0x00, 0x00, 0x64, 0x55, 0x69, + 0x00, 0x00, 0xf4, 0xff, 0x62, 0x05, 0x00, 0x00, 0x00, 0x64, 0x55, 0x86, + 0x41, 0x20, 0x69, 0x00, 0x00, 0xf8, 0xfb, 0x62, 0x40, 0x00, 0x64, 0x05, + 0x00, 0x00, 0x44, 0xc0, 0x7e, 0x07, 0x0c, 0xe6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xdc, 0x93, 0x62, 0x00, 0x04, 0x64, 0x04, 0x04, 0x64, 0x08, 0x00, 0x64, + 0x93, 0x40, 0x60, 0x01, 0x00, 0x04, 0x38, 0x00, 0x55, 0xba, 0x4f, 0x00, + 0xcd, 0xab, 0x89, 0xc8, 0x7b, 0x64, 0x45, 0x23, 0x01, 0xcc, 0x59, 0x64, + 0x05, 0x00, 0x00, 0x00, 0x6c, 0x64, 0x86, 0x43, 0x20, 0xd0, 0x87, 0x62, + 0xbb, 0x63, 0x00, 0x80, 0x03, 0xe6, 0x00, 0x04, 0x64, 0x04, 0x06, 0x64, + 0x08, 0x00, 0x64, 0x4f, 0x40, 0x60, 0x04, 0x00, 0x64, 0x4c, 0x04, 0x48, + 0xc3, 0x07, 0xf6, 0x3b, 0x00, 0xf2, 0x00, 0x04, 0x64, 0x04, 0x08, 0x64, + 0x08, 0x00, 0x64, 0x2f, 0x40, 0x60, 0x83, 0xc2, 0xfe, 0x02, 0x60, 0x07, + 0x03, 0x78, 0xfe, 0xfd, 0xff, 0xff, 0x37, 0x0f, 0xfe, 0x47, 0xc0, 0xf2, + 0x44, 0x0c, 0x31, 0x10, 0x04, 0xca, 0x08, 0x08, 0xe8, 0x00, 0x3c, 0x23, + 0x00, 0x20, 0x2b, 0x03, 0x44, 0xfb, 0x83, 0x40, 0xf1, 0x09, 0x00, 0x00, + 0x84, 0xc1, 0x80, 0x05, 0x12, 0x00, 0x84, 0x40, 0x80, 0x00, 0x3c, 0x23, + 0x03, 0x18, 0xe5, 0x18, 0x84, 0x1d, 0x96, 0x40, 0x20, 0x00, 0x0c, 0x64, + 0x08, 0x00, 0x64, 0x04, 0x14, 0x64, 0xc8, 0xff, 0x63, 0x00, 0x00, 0x64, + 0x18, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xd4, 0xc7, 0x62, 0x8a, 0x41, 0x20, + 0x00, 0x14, 0x74, 0xec, 0xfb, 0x63, 0x80, 0x9d, 0x1d, 0x4a, 0x41, 0x20, + 0xa3, 0x6c, 0x60, 0x1a, 0x40, 0x20, 0x0a, 0x40, 0x20, 0x00, 0x1c, 0x74, + 0xd0, 0xfb, 0x63, 0x82, 0x41, 0x20, 0xe4, 0xdf, 0x62, 0x08, 0x00, 0x74, + 0xc0, 0x3f, 0x64, 0x00, 0x08, 0x1d, 0x14, 0x00, 0x64, 0x50, 0x37, 0x64, + 0x44, 0x09, 0x1e, 0x57, 0x05, 0x00, 0x13, 0x45, 0x00, 0xec, 0xd3, 0x73, + 0x88, 0x03, 0x64, 0x0b, 0x0b, 0xf2, 0x9f, 0x01, 0xf2, 0xc7, 0x01, 0xf2, + 0xef, 0x01, 0xf2, 0x17, 0x02, 0xf2, 0x3f, 0x02, 0xf2, 0x67, 0x02, 0xf2, + 0xe7, 0x41, 0xf2, 0xff, 0x40, 0xf2, 0x87, 0x03, 0xf2, 0xcf, 0x41, 0xf2, + 0x48, 0x00, 0x64, 0x73, 0x0a, 0xf2, 0x48, 0x00, 0x64, 0xf3, 0x0a, 0xf2, + 0x88, 0xc4, 0x64, 0xc3, 0x4a, 0xf2, 0x05, 0x0c, 0x00, 0x08, 0x29, 0x64, + 0xb3, 0x0a, 0xf2, 0x05, 0x0c, 0x00, 0x08, 0x14, 0x64, 0xbb, 0x0a, 0xf2, + 0x05, 0x0c, 0x00, 0x88, 0x1e, 0x64, 0xc3, 0x0a, 0xf2, 0x05, 0x0c, 0x00, + 0x88, 0x33, 0x64, 0xcb, 0x0a, 0xf2, 0x05, 0x0c, 0x00, 0x08, 0x3e, 0x64, + 0xd3, 0x0a, 0xf2, 0x05, 0x0c, 0x00, 0x88, 0x54, 0x64, 0xdb, 0x0a, 0xf2, + 0x05, 0x0c, 0x00, 0x48, 0x55, 0x64, 0xe3, 0x0a, 0xf2, 0x01, 0x0c, 0x00, + 0x8c, 0x08, 0x64, 0x6d, 0x0c, 0x00, 0x08, 0x10, 0x64, 0x1b, 0x0f, 0xf2, + 0x23, 0x0b, 0xf2, 0xfd, 0xff, 0xff, 0xc8, 0xff, 0x64, 0xfd, 0xff, 0x00, + 0xcc, 0xff, 0x64, 0xcf, 0x48, 0xf2, 0xdf, 0x40, 0xf2, 0x67, 0xc3, 0xfe, + 0x83, 0xc2, 0xfe, 0x00, 0x10, 0x94, 0x03, 0x78, 0xfe, 0x01, 0xad, 0xde, + 0x00, 0x00, 0x64, 0x07, 0x04, 0x00, 0x0b, 0x08, 0x00, 0x0f, 0x0c, 0x00, + 0x13, 0x10, 0x00, 0x17, 0x14, 0x00, 0x1b, 0x18, 0x00, 0x1f, 0x1c, 0x00, + 0x23, 0x20, 0x00, 0x27, 0x24, 0x00, 0x2b, 0x28, 0x00, 0x2f, 0x2c, 0x00, + 0x33, 0x30, 0x00, 0x37, 0x34, 0x00, 0x3b, 0x38, 0x00, 0x00, 0x60, 0x26, + 0x00, 0xe0, 0x26, 0x00, 0x3c, 0x23, 0x8b, 0xc2, 0xfe, 0x82, 0x48, 0x20, + 0x03, 0x78, 0xfe, 0xfd, 0xff, 0xff, 0xc0, 0xff, 0x64, 0xfd, 0xff, 0x00, + 0xc4, 0xff, 0x64, 0xc0, 0xc0, 0xfc, 0x47, 0x80, 0xf8, 0x83, 0x78, 0xfe, + 0xcf, 0x40, 0xf2, 0x00, 0x3c, 0x23, 0x03, 0x08, 0xe0, 0x8e, 0x1c, 0x00, + 0x90, 0x0c, 0x31, 0x10, 0x0c, 0xca, 0x04, 0x04, 0x78, 0x08, 0x00, 0x64, + 0x48, 0x08, 0x1d, 0x10, 0x10, 0xca, 0x08, 0x08, 0xe8, 0x07, 0x0c, 0xe0, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0xa3, 0x7f, 0x90, 0x3f, 0x40, 0xfd, + 0x93, 0x7f, 0x90, 0x3f, 0xa9, 0xf1, 0xa3, 0x3f, 0x90, 0xbf, 0xa9, 0xf1, + 0xb3, 0x3f, 0x90, 0x3f, 0xaa, 0xf1, 0x19, 0x00, 0x00, 0x80, 0x40, 0x74, + 0x83, 0x7f, 0x90, 0xec, 0x93, 0x62, 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, + 0xa3, 0x7f, 0x90, 0x3f, 0x40, 0xfd, 0x93, 0x7f, 0x90, 0x3f, 0xa9, 0xf1, + 0xa3, 0x3f, 0x90, 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x3f, 0xaa, 0xf1, + 0x19, 0x00, 0x00, 0xc0, 0x40, 0x74, 0x83, 0x7f, 0x90, 0xf4, 0x8f, 0x62, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0xa3, 0x7f, 0x90, 0x3f, 0x40, 0xfd, + 0x93, 0x7f, 0x90, 0x3f, 0xa9, 0xf1, 0xa3, 0x3f, 0x90, 0xbf, 0xa9, 0xf1, + 0xb3, 0x3f, 0x90, 0x3f, 0xaa, 0xf1, 0x19, 0x00, 0x00, 0x40, 0x40, 0x74, + 0x83, 0x7f, 0x90, 0xfc, 0x8b, 0x62, 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, + 0xa3, 0x7f, 0x90, 0x3f, 0x40, 0xfd, 0x93, 0x7f, 0x90, 0x3f, 0xa9, 0xf1, + 0xa3, 0x3f, 0x90, 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x3f, 0xaa, 0xf1, + 0x19, 0x00, 0x00, 0x80, 0x41, 0x74, 0x83, 0x7f, 0x90, 0xc4, 0x8b, 0x62, + 0x27, 0x00, 0xf2, 0x2f, 0x08, 0xf2, 0x00, 0x00, 0x55, 0x8b, 0xa0, 0xf1, + 0x07, 0xa0, 0xf1, 0x87, 0xc4, 0xfb, 0x46, 0x08, 0x00, 0xb0, 0x04, 0xc8, + 0xfd, 0xff, 0xff, 0xc8, 0xff, 0x64, 0xfd, 0xff, 0x00, 0xcc, 0xff, 0x64, + 0xc8, 0xc8, 0xfc, 0x03, 0x44, 0x00, 0x04, 0x00, 0x80, 0x40, 0x00, 0xc8, + 0xcf, 0x48, 0xf2, 0x80, 0x00, 0x64, 0x13, 0x02, 0xf2, 0x43, 0x82, 0xf1, + 0xcb, 0x82, 0xf1, 0x67, 0xc3, 0xfe, 0x37, 0xc3, 0xfe, 0x04, 0x01, 0x55, + 0x00, 0x02, 0x52, 0x04, 0x04, 0x80, 0x44, 0x00, 0x65, 0x44, 0x04, 0x7e, + 0xa0, 0xc3, 0xc9, 0xe7, 0x01, 0xfe, 0xdf, 0x01, 0xfe, 0xd7, 0x01, 0xfe, + 0x1b, 0x80, 0xe5, 0x09, 0x00, 0x00, 0xc4, 0xc1, 0x82, 0x3c, 0x7c, 0xb9, + 0xb3, 0x23, 0x00, 0x57, 0x3c, 0xfe, 0x0e, 0x00, 0x60, 0x09, 0x00, 0x00, + 0xd4, 0xd5, 0x82, 0x07, 0x00, 0xfd, 0x9b, 0x1f, 0x40, 0xbb, 0xd3, 0x00, + 0x23, 0x07, 0xb0, 0xa3, 0x1b, 0xb0, 0x87, 0x23, 0x00, 0x01, 0x00, 0xf0, + 0x48, 0x00, 0x64, 0x47, 0x08, 0x90, 0x03, 0x3c, 0xfe, 0xb7, 0x03, 0x90, + 0x48, 0x02, 0x64, 0x40, 0x00, 0x64, 0xec, 0x93, 0x62, 0x06, 0x23, 0xe0, + 0xfa, 0x41, 0x20, 0x40, 0x60, 0x26, 0x32, 0x00, 0x60, 0xbb, 0xd3, 0x00, + 0x87, 0x23, 0x00, 0xa3, 0x1b, 0xb0, 0x01, 0x00, 0xf0, 0x40, 0x08, 0x64, + 0x47, 0x00, 0x90, 0xb7, 0x17, 0x90, 0x48, 0x02, 0x64, 0x40, 0x00, 0x64, + 0xf4, 0x8f, 0x62, 0xfa, 0x41, 0x20, 0x03, 0x1f, 0x40, 0x03, 0x03, 0xb0, + 0x01, 0x00, 0xf0, 0x40, 0x0b, 0x64, 0x07, 0x03, 0x90, 0x48, 0x01, 0x64, + 0x40, 0x00, 0x64, 0xd0, 0x8f, 0x62, 0x40, 0x00, 0x64, 0xe0, 0xa3, 0x62, + 0x40, 0x84, 0x62, 0x80, 0x00, 0x64, 0x1b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x83, 0xa0, 0xf1, 0x02, 0x48, 0x20, 0x0b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x07, 0x00, 0xfe, 0x5c, 0x80, 0x62, 0x43, 0xe0, 0xf1, 0xf1, 0xbf, 0xff, + 0x00, 0x00, 0x64, 0x07, 0x42, 0xf2, 0x67, 0xc3, 0xfe, 0x8f, 0x1f, 0xfe, + 0x83, 0xc2, 0xfe, 0x02, 0x78, 0x27, 0x03, 0x78, 0xfe, 0x00, 0x04, 0x23, + 0x00, 0x7c, 0x31, 0x00, 0xfc, 0xa1, 0x00, 0x3c, 0x23, 0x03, 0x18, 0xe5, + 0x18, 0x84, 0x1d, 0x09, 0x00, 0x00, 0x00, 0x6f, 0x55, 0x96, 0x40, 0x20, + 0x28, 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x80, 0x9d, 0x1d, 0xdb, 0x47, 0x61, + 0x43, 0x00, 0x60, 0x08, 0x00, 0x64, 0x00, 0x00, 0x74, 0xcb, 0x47, 0x61, + 0xfd, 0xff, 0xff, 0x3c, 0x7c, 0x87, 0x12, 0x00, 0x60, 0x40, 0x00, 0x64, + 0x09, 0x00, 0x00, 0xe4, 0xc1, 0x80, 0x09, 0x00, 0x00, 0x00, 0x6f, 0x55, + 0x8c, 0xc3, 0x73, 0x4a, 0x41, 0x20, 0x80, 0x9d, 0x1d, 0xd4, 0xfb, 0x63, + 0x07, 0x1c, 0xe5, 0x03, 0x00, 0xe0, 0xcc, 0x01, 0x64, 0x43, 0x0c, 0xb0, + 0xcc, 0xfb, 0x63, 0x03, 0x60, 0x20, 0x07, 0x04, 0xe0, 0x07, 0x10, 0xe5, + 0x16, 0x40, 0x20, 0x44, 0x00, 0x64, 0x9a, 0x05, 0x20, 0x9b, 0xc5, 0xfb, + 0x30, 0x18, 0xc8, 0x00, 0x00, 0x64, 0xc0, 0xd7, 0x1f, 0x04, 0x00, 0x64, + 0xd4, 0xc3, 0x73, 0x0b, 0x00, 0x60, 0x40, 0x00, 0x64, 0x07, 0x14, 0xe5, + 0x04, 0x03, 0x64, 0x00, 0x44, 0x24, 0x05, 0x00, 0x00, 0x03, 0x20, 0x0c, + 0x02, 0x04, 0xe0, 0x00, 0x3c, 0x23, 0x04, 0x03, 0x64, 0x00, 0x44, 0x24, + 0x05, 0x00, 0x00, 0x03, 0x20, 0x0c, 0x03, 0x10, 0x80, 0x00, 0x00, 0x86, + 0x03, 0x00, 0xfd, 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, 0x18, 0x05, 0x64, + 0x87, 0x29, 0x00, 0x00, 0x00, 0x92, 0x9b, 0x85, 0xf9, 0x04, 0x00, 0x64, + 0x28, 0x04, 0xc8, 0xa3, 0x03, 0x90, 0xf9, 0xf3, 0xff, 0xe8, 0xc3, 0x62, + 0x83, 0x23, 0x80, 0x88, 0x01, 0xd0, 0x05, 0x00, 0x00, 0x04, 0x64, 0x55, + 0x40, 0x08, 0xd8, 0x05, 0x00, 0x00, 0x64, 0xc0, 0x80, 0x40, 0x00, 0x64, + 0x05, 0x00, 0x00, 0x4c, 0xc0, 0x7e, 0x8a, 0x21, 0xc0, 0x63, 0x08, 0xa0, + 0x0f, 0x0c, 0xe6, 0x03, 0x10, 0xe6, 0x05, 0x0c, 0x00, 0x1b, 0xd0, 0x5a, + 0x0a, 0x40, 0x20, 0x04, 0x24, 0x64, 0xc0, 0x3f, 0x64, 0xc4, 0xa3, 0x63, + 0x82, 0x41, 0x20, 0xc4, 0xfb, 0x63, 0xc2, 0x41, 0x20, 0xd0, 0xf3, 0x63, + 0x00, 0x00, 0x66, 0x0e, 0x00, 0x40, 0xf0, 0xbb, 0x63, 0xef, 0xbf, 0x7f, + 0x05, 0x0c, 0x00, 0x80, 0xb1, 0x64, 0xf4, 0xef, 0x63, 0xc0, 0x3f, 0x64, + 0x8a, 0x41, 0x20, 0x04, 0x25, 0x64, 0xc8, 0x9f, 0x63, 0x09, 0x00, 0x00, + 0x00, 0x71, 0x52, 0x04, 0x00, 0x66, 0x0e, 0x00, 0x60, 0x82, 0x41, 0x20, + 0x3b, 0x46, 0x61, 0xf4, 0xb7, 0x63, 0xff, 0xbf, 0x7f, 0x03, 0x00, 0xe0, + 0x05, 0x00, 0x00, 0x10, 0x61, 0x55, 0xc0, 0xd3, 0x1f, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x80, 0xa2, 0xa3, 0x03, 0x90, + 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x87, 0x23, 0x80, 0x03, 0x20, 0x00, + 0x03, 0x04, 0x90, 0x1f, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x76, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0a, 0x00, 0x60, 0x0b, 0x6c, 0x60, + 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x03, 0x20, 0x80, 0x3c, 0x7c, 0xb3, + 0xda, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, + 0xcc, 0xfb, 0x63, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0xa3, 0x03, 0x90, + 0x1b, 0x00, 0x60, 0x83, 0x23, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x07, 0x90, + 0x04, 0x00, 0x64, 0x03, 0x04, 0xb0, 0x83, 0x53, 0x80, 0x07, 0x44, 0x00, + 0x93, 0x47, 0x90, 0x00, 0x00, 0x92, 0xde, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x03, 0xb0, 0x80, 0xa3, 0x03, 0x90, 0x83, 0x63, 0x80, + 0x0d, 0x00, 0x00, 0x02, 0xbc, 0x1f, 0xb3, 0x03, 0x90, 0x83, 0x63, 0x80, + 0x00, 0x30, 0x27, 0x02, 0x1c, 0x00, 0x83, 0x43, 0x90, 0x5b, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, + 0x07, 0x3c, 0xfe, 0x83, 0x33, 0x80, 0x6c, 0x00, 0x48, 0x2e, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x83, 0x43, 0x80, 0x6c, 0x00, 0x48, 0x0e, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x33, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x3d, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, 0x96, 0xbf, 0x7f, + 0x00, 0x00, 0x64, 0x37, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0xba, 0x22, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x83, 0x23, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, + 0x00, 0x00, 0x92, 0x1e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x00, 0x00, 0x64, 0x1b, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x23, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x17, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0xa3, 0x4b, 0x90, 0xb3, 0x4f, 0x90, 0x00, 0x00, 0x64, + 0xa3, 0x03, 0x90, 0x83, 0x53, 0x80, 0xfd, 0xff, 0xff, 0x3c, 0x7c, 0x93, + 0x2a, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0x00, 0x00, 0xb2, 0x0e, 0x00, 0x60, + 0x40, 0x00, 0x64, 0xc7, 0x00, 0x60, 0x83, 0x63, 0x80, 0xfd, 0xff, 0xff, + 0x38, 0x7c, 0x87, 0x42, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, + 0xfd, 0xff, 0xff, 0x3c, 0x7c, 0x85, 0x2e, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0xec, 0xe7, 0x63, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, 0x0e, 0x00, 0x60, 0x80, 0x00, 0x64, + 0x7b, 0x00, 0x60, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x6a, 0x00, 0x60, + 0x83, 0x73, 0x80, 0xfd, 0xff, 0xff, 0x38, 0x7c, 0x87, 0x5a, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x01, 0xff, 0x03, 0x02, 0x00, 0x00, + 0x01, 0xff, 0x03, 0x00, 0x00, 0x86, 0x3e, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x07, 0x3c, 0xfe, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x5c, 0x31, 0x02, 0x40, 0x00, + 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, 0x0e, 0x00, 0x60, 0xc0, 0x00, 0x64, + 0x0b, 0x00, 0x60, 0x00, 0x00, 0x64, 0x37, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x83, 0x23, 0x80, 0x00, 0x04, 0x92, + 0x36, 0x00, 0x60, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x87, 0x33, 0x80, + 0x46, 0x1c, 0x00, 0x4e, 0x1c, 0x00, 0x06, 0x00, 0xe0, 0x46, 0x5c, 0x00, + 0x4a, 0x40, 0x20, 0xc6, 0x40, 0x20, 0x87, 0x44, 0xfb, 0x03, 0x04, 0xb0, + 0x43, 0x00, 0x60, 0x83, 0x33, 0x80, 0x02, 0x3c, 0x00, 0x0a, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x23, 0x80, 0x43, 0x80, 0xf2, + 0x03, 0xa0, 0x01, 0x8e, 0x3c, 0x00, 0x06, 0x00, 0xe0, 0x46, 0x7c, 0x00, + 0x4a, 0x40, 0x20, 0xc6, 0x40, 0x20, 0x87, 0x44, 0xfb, 0x03, 0x04, 0xb0, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xb3, 0x07, 0x90, 0x83, 0x23, 0x80, 0x00, 0x04, 0x92, 0x3a, 0x00, 0x60, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x87, 0x33, 0x80, 0x46, 0x0c, 0x00, + 0x46, 0x0c, 0x00, 0x4c, 0x0c, 0x2b, 0x06, 0x00, 0xe0, 0x46, 0xe0, 0x00, + 0x4a, 0x40, 0x20, 0xc6, 0x40, 0x20, 0x87, 0x44, 0xfb, 0x03, 0x04, 0xb0, + 0x47, 0x00, 0x60, 0x83, 0x33, 0x80, 0x02, 0x0c, 0x00, 0x0a, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x23, 0x80, 0x43, 0x80, 0xf2, + 0x03, 0xa0, 0x01, 0x86, 0x0c, 0x00, 0x4c, 0x10, 0x2b, 0x06, 0x00, 0xe0, + 0x46, 0xc0, 0x01, 0x4a, 0x40, 0x20, 0xc6, 0x40, 0x20, 0x87, 0x44, 0xfb, + 0x03, 0x04, 0xb0, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x33, 0x00, 0xe0, + 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, 0x83, 0x43, 0x90, 0x00, 0x0a, 0x64, + 0xa3, 0x03, 0x90, 0xa3, 0x58, 0x60, 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, + 0x03, 0xb0, 0x81, 0x3c, 0x7c, 0xb3, 0x1a, 0x00, 0x60, 0x11, 0x10, 0x00, + 0x00, 0x06, 0x64, 0x87, 0x63, 0x80, 0x03, 0x30, 0x03, 0x03, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x43, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0xb3, 0x47, 0x90, 0x83, 0x8b, 0x90, 0x93, 0x8f, 0x90, 0x00, 0x00, 0x64, + 0xa3, 0x03, 0x90, 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, 0x00, 0x50, 0x31, 0x02, 0xbc, 0x1f, + 0x07, 0x3c, 0xfe, 0x83, 0x63, 0x80, 0x44, 0x40, 0x24, 0x83, 0x83, 0x80, + 0x0b, 0x0c, 0x00, 0x3c, 0x7c, 0xb3, 0x83, 0x80, 0xf9, 0x00, 0x08, 0x27, + 0x43, 0x80, 0xf2, 0x83, 0x43, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x04, 0x00, 0x64, 0x83, 0x93, 0x00, + 0x03, 0x04, 0x90, 0x83, 0x43, 0x80, 0xfd, 0x0f, 0x00, 0x02, 0xbc, 0x1f, + 0xfd, 0x0f, 0x00, 0x02, 0xbc, 0x1f, 0x87, 0x53, 0x80, 0x01, 0xf0, 0xff, + 0x46, 0x00, 0x00, 0x47, 0x40, 0xfb, 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, + 0x83, 0x53, 0x80, 0x04, 0x3c, 0xa4, 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, + 0x83, 0x73, 0x80, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x02, 0x1c, 0x00, + 0x00, 0x50, 0x2b, 0x87, 0x53, 0x80, 0x44, 0xc0, 0x9d, 0x47, 0x40, 0xfb, + 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, 0x83, 0x53, 0x80, 0x04, 0x00, 0xa2, + 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x87, 0x53, 0x80, 0x03, 0x00, 0x09, 0x03, 0x04, 0x90, 0x04, 0x00, 0x64, + 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x07, 0x80, 0x84, 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, 0x27, 0x00, 0x60, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x84, 0x83, 0x93, 0x00, + 0x03, 0x04, 0x90, 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, + 0x83, 0x53, 0x80, 0x00, 0x70, 0x31, 0x02, 0x04, 0x00, 0x04, 0x00, 0x66, + 0xd2, 0xbf, 0x7f, 0x83, 0x53, 0x80, 0x00, 0x74, 0x31, 0x02, 0x04, 0x00, + 0x00, 0x00, 0x66, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0xc4, 0x04, 0x64, 0x0b, 0x04, 0xa0, 0x3f, 0x00, 0x60, 0x83, 0x53, 0x80, + 0x00, 0x78, 0x31, 0x02, 0x04, 0x00, 0x00, 0x00, 0x66, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x02, 0x64, 0x0b, 0x04, 0xa0, + 0x17, 0x00, 0x60, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0xb0, 0x84, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x47, 0x04, 0xe0, 0x33, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0xa3, 0x4b, 0x90, 0xb3, 0x4f, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, 0x00, 0x50, 0x31, + 0x02, 0xbc, 0x1f, 0x07, 0x3c, 0xfe, 0x83, 0x43, 0x80, 0x44, 0x40, 0x24, + 0x83, 0x63, 0x80, 0x0b, 0x0c, 0x00, 0x3c, 0x7c, 0xb3, 0x83, 0x80, 0xf9, + 0x00, 0x08, 0x27, 0x43, 0x80, 0xf2, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x87, 0x73, 0x80, 0x03, 0x10, 0x09, 0x03, 0x04, 0x90, + 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, 0xfd, 0x0f, 0x00, + 0x02, 0xbc, 0x1f, 0xfd, 0x0f, 0x00, 0x02, 0xbc, 0x1f, 0x87, 0x33, 0x80, + 0x01, 0xf0, 0xff, 0x46, 0x00, 0x00, 0x43, 0x40, 0xfb, 0xb3, 0x03, 0x90, + 0x83, 0x33, 0x80, 0x00, 0x3c, 0xa4, 0x00, 0x04, 0xa0, 0xb3, 0x03, 0x90, + 0x83, 0x53, 0x80, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x02, 0x1c, 0x00, + 0x00, 0x50, 0x2b, 0x87, 0x33, 0x80, 0x44, 0xc0, 0x9d, 0x43, 0x40, 0xfb, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x00, 0x00, 0xa2, 0xb3, 0x03, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x87, 0x33, 0x80, 0x03, 0x00, 0x09, + 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x80, 0x84, + 0xb3, 0x03, 0x90, 0x17, 0x00, 0x60, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x03, 0x80, 0x84, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x01, 0x00, 0x10, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x92, 0xe2, 0xbf, 0x7f, 0x83, 0x33, 0x80, + 0x01, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc4, 0x04, 0x64, 0x0b, 0x04, 0xa0, + 0x2b, 0x00, 0x60, 0x83, 0x33, 0x80, 0x01, 0x00, 0x40, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x16, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x04, 0x02, 0x64, 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, 0x13, 0x3c, 0xfe, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x03, 0x38, 0xfe, 0x0c, 0x00, 0x64, 0x8b, 0x33, 0x80, 0x06, 0x40, 0x20, + 0x02, 0x41, 0x20, 0xf4, 0xc7, 0x63, 0x17, 0x04, 0xe0, 0x33, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0xa3, 0x4b, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, 0x13, 0x3c, 0xfe, + 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x03, 0x38, 0xfe, 0x04, 0x00, 0x64, 0xa3, 0x07, 0x90, 0x8f, 0x63, 0x80, + 0x8b, 0x53, 0x80, 0x06, 0x40, 0x20, 0x02, 0x41, 0x20, 0xe0, 0xdf, 0x63, + 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0xa3, 0x4b, 0x90, 0x83, 0x53, 0x80, 0x00, 0x14, 0x2b, + 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x43, 0x80, 0xf4, 0xf3, 0x63, + 0xa3, 0x03, 0x90, 0x83, 0x63, 0x80, 0x00, 0x00, 0x92, 0x03, 0x00, 0xfd, + 0x02, 0x04, 0x00, 0x03, 0x38, 0xfe, 0x02, 0x04, 0x00, 0x00, 0x28, 0x2b, + 0x87, 0x23, 0x80, 0x44, 0x10, 0x94, 0x43, 0x40, 0xfb, 0xa3, 0x03, 0x90, + 0x83, 0x63, 0x80, 0x00, 0x00, 0x86, 0x03, 0x00, 0xfd, 0x02, 0x04, 0x00, + 0x03, 0x38, 0xfe, 0x02, 0x04, 0x00, 0x00, 0x24, 0x2b, 0x87, 0x23, 0x80, + 0x44, 0x08, 0x94, 0x43, 0x40, 0xfb, 0xa3, 0x03, 0x90, 0x83, 0x53, 0x80, + 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0x0a, 0x40, 0x20, 0x83, 0x43, 0x80, 0xc4, 0xf3, 0x63, 0x4b, 0xc3, 0xfe, + 0x37, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, + 0x02, 0x04, 0x00, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x4f, 0x01, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, + 0x00, 0x10, 0x31, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x02, 0x64, + 0x0b, 0x04, 0xa0, 0x07, 0x01, 0x60, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0xd3, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x83, 0x23, 0x80, 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, + 0x06, 0x40, 0x20, 0x83, 0x43, 0x80, 0xf8, 0xdf, 0x63, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x86, 0x00, 0x60, 0x83, 0x33, 0x80, 0x02, 0x00, 0x04, 0x00, 0x00, 0x92, + 0x76, 0x00, 0x60, 0x83, 0x33, 0x80, 0x01, 0x00, 0x04, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x92, 0x62, 0x00, 0x60, 0x83, 0x33, 0x80, 0x00, 0x20, 0x98, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x00, 0x40, 0x98, 0xb3, 0x03, 0x90, + 0x83, 0x33, 0x80, 0x02, 0x40, 0x28, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x00, 0x10, 0x98, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x00, 0x08, 0x94, + 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, + 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, 0x83, 0x43, 0x80, + 0xec, 0xdb, 0x63, 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x00, 0x5c, 0x31, 0x02, 0x40, 0x00, + 0x07, 0x38, 0xfe, 0x83, 0x23, 0x80, 0x7c, 0x00, 0x3a, 0x1a, 0xbf, 0x7f, + 0xc0, 0x2b, 0x64, 0x8b, 0xf5, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x00, 0x86, + 0x1a, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, + 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x87, 0x01, 0x60, 0x83, 0x43, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, 0x00, 0x10, 0x31, + 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x02, 0x64, 0x0b, 0x04, 0xa0, + 0x3f, 0x01, 0x60, 0x04, 0x20, 0x64, 0x83, 0x43, 0x80, 0xd4, 0xcb, 0x63, + 0xb3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, + 0x00, 0x00, 0x90, 0x1a, 0x01, 0x60, 0x83, 0x33, 0x80, 0x02, 0x00, 0x04, + 0x00, 0x00, 0x86, 0xde, 0x00, 0x60, 0x40, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0xaf, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x83, 0x23, 0x80, 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, + 0x06, 0x40, 0x20, 0x83, 0x43, 0x80, 0xf8, 0xc3, 0x63, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x62, 0x00, 0x60, 0x83, 0x33, 0x80, 0x02, 0x00, 0x04, 0x00, 0x00, 0x92, + 0x52, 0x00, 0x60, 0x83, 0x33, 0x80, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x92, 0x3e, 0x00, 0x60, 0x83, 0x33, 0x80, 0x00, 0x10, 0x94, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x02, 0x40, 0x30, 0xb3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, + 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, 0x83, 0x43, 0x80, 0xd0, 0xc3, 0x63, + 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x5c, 0x31, 0x02, 0x40, 0x00, 0x07, 0x38, 0xfe, + 0x83, 0x23, 0x80, 0x7c, 0x00, 0x3a, 0x3e, 0xbf, 0x7f, 0x33, 0x00, 0x60, + 0x83, 0x33, 0x80, 0x00, 0x10, 0x94, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x02, 0x40, 0x30, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, + 0x04, 0x20, 0x64, 0x83, 0x43, 0x80, 0xf4, 0xbb, 0x63, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, + 0xa3, 0x4b, 0x90, 0x83, 0x43, 0x80, 0xa3, 0x03, 0x90, 0x83, 0x53, 0x80, + 0xb3, 0x03, 0x90, 0x3b, 0x00, 0x60, 0x83, 0x33, 0x80, 0x07, 0x00, 0x80, + 0x83, 0x23, 0x80, 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x03, 0x10, 0x00, 0xb3, 0x03, 0x90, + 0x83, 0x63, 0x80, 0x03, 0x50, 0x00, 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, + 0x00, 0x00, 0xba, 0xc6, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0xb0, 0xa7, 0x07, 0xb0, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x40, 0x98, 0x03, 0x00, 0x03, + 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, + 0x44, 0x30, 0x94, 0x44, 0x20, 0x98, 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x86, 0x23, 0xe0, 0x44, 0x14, 0x2b, + 0x4a, 0x40, 0x20, 0x86, 0x27, 0xe0, 0x46, 0xbc, 0x00, 0x87, 0x44, 0xfb, + 0x46, 0xbc, 0x1f, 0x46, 0xbc, 0x17, 0x47, 0x3c, 0xfe, 0x46, 0xbc, 0x1f, + 0x0b, 0x80, 0x81, 0xfd, 0xff, 0xff, 0x8a, 0x00, 0x00, 0x87, 0x44, 0xfb, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x07, 0x80, 0x81, 0x44, 0x80, 0x98, 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x40, 0x98, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x07, 0x80, 0x81, 0x44, 0x00, 0x9a, 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x80, 0x81, + 0x00, 0x3c, 0x31, 0x02, 0x04, 0x00, 0x04, 0x00, 0x66, 0xea, 0xbf, 0x7f, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x02, 0x20, 0xc3, 0x17, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0xb0, 0xa7, 0x07, 0xb0, 0xab, 0x0b, 0xa0, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x40, 0x98, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x86, 0x2b, 0xc0, 0x03, 0x10, 0x03, 0x03, 0x04, 0xa0, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x30, 0x94, 0x44, 0x10, 0x98, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x86, 0x23, 0xe0, 0x44, 0x14, 0x2b, 0x4a, 0x40, 0x20, 0x86, 0x27, 0xe0, + 0x46, 0xbc, 0x00, 0x87, 0x44, 0xfb, 0x46, 0xbc, 0x1f, 0x46, 0xbc, 0x17, + 0x47, 0x3c, 0xfe, 0x46, 0xbc, 0x1f, 0x0b, 0x80, 0x81, 0xfd, 0xff, 0xff, + 0x8a, 0x00, 0x00, 0x87, 0x44, 0xfb, 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x80, 0x98, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x07, 0x80, 0x81, 0x44, 0x40, 0x98, 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x00, 0x9a, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x80, 0x81, 0x00, 0x3c, 0x31, 0x02, 0x04, 0x00, + 0x04, 0x00, 0x66, 0xea, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x53, 0x10, 0xe6, 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, 0xa3, 0x8b, 0x90, + 0xb3, 0x8f, 0x90, 0x83, 0x83, 0x00, 0xa3, 0x03, 0x90, 0x00, 0x00, 0x64, + 0xb3, 0x03, 0x90, 0x9b, 0x23, 0x80, 0x83, 0x05, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x93, 0x80, 0x87, 0xa3, 0x80, 0x93, 0xec, 0x60, 0x06, 0x40, 0x20, + 0x83, 0x03, 0x81, 0x03, 0x84, 0xf2, 0x02, 0x00, 0xe0, 0x83, 0x01, 0xb0, + 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x87, 0xa3, 0x80, + 0x83, 0x93, 0x80, 0x63, 0xec, 0x60, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x00, 0x00, 0x92, 0xb2, 0xbf, 0x7f, 0x83, 0xb3, 0x80, 0x00, 0x00, 0x86, + 0x8a, 0x00, 0x60, 0x87, 0xb3, 0x80, 0x83, 0x33, 0x80, 0x5c, 0x00, 0x3a, + 0x7a, 0x00, 0x60, 0x87, 0xb3, 0x80, 0x83, 0x33, 0x80, 0x43, 0xc0, 0xf2, + 0xb3, 0x83, 0x90, 0x33, 0x00, 0x60, 0x83, 0x23, 0x80, 0x07, 0x04, 0x00, + 0xa3, 0x07, 0x90, 0x04, 0x0c, 0x64, 0x03, 0x04, 0xb0, 0x83, 0x33, 0x80, + 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x83, 0xb3, 0x80, 0x03, 0x44, 0x00, + 0xb3, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, 0xce, 0xbf, 0x7f, + 0x2b, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x44, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x87, 0x23, 0x80, + 0x46, 0x00, 0xe0, 0x03, 0x04, 0xb0, 0x83, 0x83, 0x00, 0x87, 0x23, 0x80, + 0x6c, 0x00, 0x48, 0xd2, 0xbf, 0x7f, 0x83, 0x33, 0x80, 0x57, 0x14, 0xe6, + 0x5b, 0x18, 0xe5, 0x83, 0x83, 0x90, 0xa8, 0x0b, 0xd8, 0x83, 0x83, 0x00, + 0xa3, 0x03, 0x90, 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x9b, 0x23, 0x80, + 0x83, 0x05, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x81, 0x0b, 0x60, 0xfe, + 0x90, 0x2b, 0xd0, 0x00, 0x95, 0x1d, 0x6f, 0xf0, 0x60, 0x08, 0x84, 0x1d, + 0x86, 0x40, 0x20, 0x83, 0x63, 0x81, 0x03, 0x84, 0xf2, 0x02, 0x00, 0xe0, + 0x83, 0x01, 0xb0, 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, + 0x83, 0x23, 0x81, 0x0b, 0x60, 0xfe, 0x80, 0x2b, 0xd0, 0x4f, 0xeb, 0x60, + 0x08, 0x84, 0x1d, 0xa8, 0x0b, 0xd8, 0x83, 0xa3, 0x80, 0x87, 0xb3, 0x80, + 0x03, 0x44, 0xfb, 0x00, 0x00, 0x92, 0x96, 0xbf, 0x7f, 0x83, 0x43, 0x81, + 0x00, 0x00, 0x86, 0x8a, 0x00, 0x60, 0x87, 0x43, 0x81, 0x83, 0x33, 0x80, + 0x5c, 0x00, 0x3a, 0x7a, 0x00, 0x60, 0x87, 0x43, 0x81, 0x83, 0x33, 0x80, + 0x43, 0xc0, 0xf2, 0x83, 0x43, 0x91, 0x33, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x07, 0x04, 0x00, 0xa3, 0x07, 0x90, 0x04, 0x0c, 0x64, 0x03, 0x04, 0xb0, + 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x83, 0x43, 0x81, + 0x03, 0x44, 0x00, 0x83, 0x43, 0x91, 0x83, 0x43, 0x81, 0x00, 0x00, 0x92, + 0xce, 0xbf, 0x7f, 0x2b, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x44, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, + 0x87, 0x23, 0x80, 0x46, 0x00, 0xe0, 0x03, 0x04, 0xb0, 0x83, 0x83, 0x00, + 0x87, 0x23, 0x80, 0x6c, 0x00, 0x48, 0xd2, 0xbf, 0x7f, 0x83, 0x33, 0x80, + 0x5f, 0x1c, 0xe5, 0xcb, 0x18, 0xe5, 0xa3, 0x43, 0x91, 0xb3, 0x47, 0x91, + 0x83, 0x8b, 0x91, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x91, 0x83, 0x63, 0x81, + 0x83, 0x83, 0x90, 0x83, 0x73, 0x81, 0x93, 0x83, 0x90, 0x27, 0x0a, 0x60, + 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x28, 0x10, 0x66, 0x2a, 0x00, 0x60, + 0x87, 0x83, 0x80, 0x43, 0x04, 0x00, 0x83, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x0b, 0x04, 0x00, 0x93, 0x8b, 0x90, 0x02, 0x00, 0xe0, 0x43, 0x00, 0xb0, + 0xf3, 0x09, 0x60, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, + 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x1c, 0x10, 0x66, 0x12, 0x00, 0x60, + 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x2c, 0x14, 0x66, 0x12, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, 0x00, 0x00, 0x64, 0x93, 0x03, 0x91, + 0x67, 0x00, 0x60, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x03, 0x38, 0xfe, + 0x03, 0xc0, 0x01, 0x87, 0x13, 0x81, 0x43, 0x80, 0xf2, 0x93, 0x03, 0x91, + 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x3c, 0x14, 0x3b, 0x2e, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x08, 0x1c, 0x3b, 0x1e, 0x00, 0x60, 0x87, 0x13, 0x81, + 0x42, 0x40, 0x20, 0x00, 0x08, 0x2b, 0x03, 0x84, 0xf2, 0x00, 0x04, 0x2b, + 0x93, 0x03, 0x91, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x66, + 0x26, 0x00, 0x60, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x3c, 0x14, 0x3b, + 0x16, 0x00, 0x60, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x0c, 0x1c, 0x3b, + 0x76, 0xbf, 0x7f, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x34, 0x14, 0x66, + 0xae, 0x00, 0x60, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, + 0x00, 0x00, 0x64, 0xa3, 0x03, 0x91, 0x67, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x03, 0x38, 0xfe, 0x03, 0xc0, 0x01, 0x87, 0x23, 0x81, + 0x43, 0x80, 0xf2, 0xa3, 0x03, 0x91, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, + 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x3c, 0x14, 0x3b, + 0x2e, 0x00, 0x60, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x08, 0x1c, 0x3b, + 0x1e, 0x00, 0x60, 0x87, 0x23, 0x81, 0x42, 0x40, 0x20, 0x00, 0x08, 0x2b, + 0x03, 0x84, 0xf2, 0x00, 0x04, 0x2b, 0xa3, 0x03, 0x91, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x00, 0x00, 0x66, 0x26, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x3c, 0x14, 0x3b, 0x16, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x0c, 0x1c, 0x3b, 0x76, 0xbf, 0x7f, 0x00, 0x00, 0x64, + 0x83, 0x03, 0x91, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x24, 0x34, 0x66, + 0x1e, 0x00, 0x60, 0x83, 0x03, 0x81, 0x03, 0x04, 0x00, 0x83, 0x03, 0x91, + 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x24, 0x34, 0x66, 0x1e, 0x00, 0x60, 0x83, 0x03, 0x81, + 0x03, 0x04, 0x00, 0x83, 0x03, 0x91, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, + 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, + 0x43, 0x64, 0x02, 0x60, 0x10, 0xba, 0x07, 0x00, 0xfd, 0x8b, 0x13, 0x03, + 0x83, 0x04, 0xb0, 0xc4, 0x0b, 0x64, 0x8b, 0x13, 0x03, 0x8a, 0x00, 0xe0, + 0x80, 0x60, 0x26, 0x14, 0x04, 0x34, 0x07, 0x00, 0xfd, 0x8b, 0x13, 0x03, + 0x83, 0x04, 0xb0, 0x87, 0x13, 0x03, 0x46, 0x00, 0xe0, 0x40, 0x00, 0x66, + 0x76, 0x07, 0x60, 0x04, 0x19, 0x64, 0x43, 0x40, 0xf7, 0x00, 0x00, 0x23, + 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, + 0xa3, 0x83, 0x90, 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, + 0x0c, 0x00, 0x64, 0x88, 0x02, 0x64, 0x83, 0x83, 0x80, 0xc4, 0xaf, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x84, 0x0b, 0x64, + 0x03, 0x04, 0xb0, 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, + 0x0c, 0x00, 0x64, 0x88, 0x02, 0x64, 0x83, 0x83, 0x80, 0xf4, 0xa7, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x84, 0x0b, 0x64, + 0x03, 0x04, 0xb0, 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, + 0x0c, 0x00, 0x64, 0x88, 0x02, 0x64, 0x83, 0x83, 0x80, 0xe4, 0xa3, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x84, 0x0b, 0x64, + 0x03, 0x04, 0xb0, 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, + 0x0c, 0x00, 0x64, 0x88, 0x02, 0x64, 0x83, 0x83, 0x80, 0xd4, 0x9f, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x57, 0x06, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xa3, 0x83, 0x90, 0x83, 0xa3, 0x80, 0x00, 0x00, 0x92, + 0x0e, 0x00, 0x60, 0xc0, 0x16, 0x64, 0xa3, 0x83, 0x90, 0x83, 0x13, 0x81, + 0x00, 0x00, 0x86, 0x07, 0x00, 0xfd, 0x83, 0x23, 0x81, 0x00, 0x00, 0x86, + 0x03, 0x00, 0xfd, 0x43, 0xc0, 0xfb, 0x00, 0x00, 0x86, 0x6a, 0x00, 0x60, + 0x27, 0x00, 0x60, 0x87, 0x83, 0x80, 0x43, 0x04, 0x00, 0x83, 0x83, 0x90, + 0x83, 0xa3, 0x80, 0x0b, 0x04, 0x00, 0xa3, 0x8b, 0x90, 0x02, 0x00, 0xe0, + 0x43, 0x00, 0xb0, 0x83, 0xa3, 0x80, 0x02, 0x00, 0xe0, 0x04, 0x00, 0x66, + 0xd6, 0xbf, 0x7f, 0xd3, 0x05, 0x60, 0x87, 0x83, 0x80, 0x43, 0x04, 0x00, + 0x83, 0x83, 0x90, 0x83, 0xa3, 0x80, 0x0b, 0x04, 0x00, 0xa3, 0x8b, 0x90, + 0x02, 0x00, 0xe0, 0x43, 0x00, 0xb0, 0x83, 0x13, 0x81, 0x03, 0x44, 0x00, + 0x93, 0x03, 0x91, 0x83, 0x13, 0x81, 0x00, 0x00, 0x86, 0x3a, 0x00, 0x60, + 0x83, 0xa3, 0x80, 0x02, 0x00, 0xe0, 0x04, 0x00, 0x66, 0xbe, 0xbf, 0x7f, + 0x27, 0x00, 0x60, 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, + 0x04, 0x08, 0x64, 0x03, 0x04, 0xb0, 0x83, 0x13, 0x81, 0x03, 0x44, 0x00, + 0x93, 0x03, 0x91, 0x83, 0x13, 0x81, 0x00, 0x00, 0x92, 0xda, 0xbf, 0x7f, + 0x57, 0x05, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xa3, 0x83, 0x90, 0x00, 0x00, 0x64, 0xb3, 0x83, 0x90, + 0x63, 0x00, 0x60, 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, + 0x8c, 0x00, 0x64, 0x08, 0x04, 0x64, 0x83, 0x83, 0x80, 0xf4, 0x87, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x44, 0x0b, 0x64, + 0x03, 0x04, 0xb0, 0x83, 0xb3, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x83, 0x90, + 0x83, 0xb3, 0x80, 0x10, 0x00, 0xae, 0x9e, 0xbf, 0x7f, 0x83, 0xa3, 0x80, + 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, + 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x8c, 0x00, 0x64, 0x08, 0x04, 0x64, + 0x83, 0x83, 0x80, 0xcc, 0x83, 0x63, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, + 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x8f, 0x04, 0x60, 0x83, 0x03, 0x81, + 0x3c, 0x7c, 0xb3, 0x6e, 0x04, 0x60, 0x04, 0x00, 0xb2, 0x12, 0x00, 0x60, + 0x08, 0x00, 0x86, 0x7a, 0x00, 0x60, 0x5b, 0x04, 0x60, 0x83, 0x83, 0x81, + 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, 0x83, 0xc3, 0x90, + 0x83, 0xc3, 0x80, 0x3c, 0x7c, 0xbb, 0x26, 0x00, 0x60, 0x83, 0x83, 0x80, + 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x44, 0x0b, 0x64, 0x03, 0x04, 0xb0, + 0x83, 0xc3, 0x80, 0x00, 0x00, 0x25, 0x83, 0xc3, 0x90, 0x87, 0xc3, 0x80, + 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x8f, 0x13, 0x81, 0x88, 0x02, 0x64, + 0x83, 0x83, 0x80, 0x7f, 0xf7, 0x7f, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, + 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x87, 0x00, 0x60, 0x83, 0x83, 0x81, + 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, 0x08, 0x00, 0xd0, 0xb8, 0x0b, 0xd8, + 0x83, 0xf3, 0x80, 0x3c, 0x7c, 0xbb, 0x2e, 0x00, 0x60, 0x83, 0x83, 0x80, + 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x44, 0x0b, 0x64, 0x03, 0x04, 0xb0, + 0x10, 0x00, 0x74, 0x88, 0x3b, 0xd0, 0x18, 0x49, 0x49, 0x5c, 0x0d, 0x6f, + 0xb8, 0x1b, 0xd8, 0x88, 0x3b, 0xd0, 0x40, 0x0e, 0x64, 0xa3, 0x43, 0x90, + 0x83, 0x13, 0x81, 0x83, 0x43, 0x90, 0x80, 0x02, 0x64, 0xa3, 0x03, 0x90, + 0x83, 0x83, 0x80, 0xdc, 0x83, 0x63, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, + 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x4b, 0xc3, 0xfe, 0x67, 0x03, 0x60, + 0x83, 0x03, 0x81, 0x3c, 0x7c, 0xb3, 0x62, 0x03, 0x60, 0x04, 0x00, 0xb2, + 0x12, 0x00, 0x60, 0x08, 0x00, 0x86, 0x4e, 0x00, 0x60, 0x4f, 0x03, 0x60, + 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, + 0xb3, 0x83, 0x90, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x8f, 0x13, 0x81, + 0x88, 0x02, 0x64, 0x87, 0xb3, 0x80, 0x83, 0x83, 0x80, 0x97, 0xf6, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x53, 0x00, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x08, 0x00, 0xd0, 0x90, 0x4b, 0xd8, 0x40, 0x0e, 0x64, 0xa3, 0x43, 0x90, + 0x83, 0x13, 0x81, 0x83, 0x43, 0x90, 0x80, 0x02, 0x64, 0xa3, 0x03, 0x90, + 0x88, 0x53, 0xd0, 0x83, 0x83, 0x80, 0x6b, 0xf7, 0x7f, 0x06, 0x40, 0x20, + 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x4b, 0xc3, 0xfe, + 0xbb, 0x02, 0x60, 0x83, 0x03, 0x81, 0x3c, 0x7c, 0xb3, 0xb6, 0x02, 0x60, + 0x04, 0x00, 0xb2, 0x12, 0x00, 0x60, 0x08, 0x00, 0x86, 0x66, 0x00, 0x60, + 0xa3, 0x02, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, + 0x04, 0x2c, 0x66, 0x0e, 0x00, 0x60, 0x40, 0x0e, 0x64, 0x0b, 0x00, 0x60, + 0x80, 0x12, 0x64, 0xa3, 0x03, 0x90, 0x8f, 0x13, 0x81, 0x08, 0x04, 0x64, + 0x87, 0xb3, 0x80, 0x83, 0x83, 0x80, 0xcb, 0xf5, 0x7f, 0x06, 0x40, 0x20, + 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x6b, 0x00, 0x60, + 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, 0x08, 0x00, 0xd0, + 0x90, 0x4b, 0xd8, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x04, 0x2c, 0x66, + 0x0e, 0x00, 0x60, 0x40, 0x0e, 0x64, 0x0b, 0x00, 0x60, 0x80, 0x12, 0x64, + 0xa3, 0x43, 0x90, 0x83, 0x13, 0x81, 0x83, 0x43, 0x90, 0x00, 0x04, 0x64, + 0xa3, 0x03, 0x90, 0x88, 0x53, 0xd0, 0x83, 0x83, 0x80, 0x87, 0xf6, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x4b, 0xc3, 0xfe, 0xdf, 0x01, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, + 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x04, 0x28, 0x66, 0x0e, 0x00, 0x60, 0x40, 0x0e, 0x64, + 0x0b, 0x00, 0x60, 0x80, 0x12, 0x64, 0xa3, 0x03, 0x90, 0x0c, 0x02, 0x64, + 0x08, 0x04, 0x64, 0x87, 0xb3, 0x80, 0x83, 0x83, 0x80, 0x07, 0xf5, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x87, 0x01, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x03, 0x3c, 0xfe, + 0xb3, 0x83, 0x90, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x0c, 0x01, 0x64, + 0x08, 0x04, 0x64, 0x87, 0xb3, 0x80, 0x83, 0x83, 0x80, 0xb7, 0xf4, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x37, 0x01, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x02, 0xbc, 0x07, + 0xb3, 0x83, 0x90, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x8c, 0x00, 0x64, + 0x08, 0x04, 0x64, 0x87, 0xb3, 0x80, 0x83, 0x83, 0x80, 0x67, 0xf4, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0xe7, 0x00, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, + 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, 0xa3, 0x83, 0x90, 0x4f, 0x00, 0x60, + 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, 0x02, 0x00, 0xe0, + 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x8c, 0x00, 0x64, + 0x08, 0x04, 0x64, 0x83, 0x83, 0x80, 0xfb, 0xf3, 0x7f, 0x06, 0x40, 0x20, + 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x83, 0xb3, 0x80, + 0x03, 0x44, 0x00, 0xb3, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, + 0xb2, 0xbf, 0x7f, 0x63, 0x00, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, + 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0x83, 0x80, + 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x87, 0xb3, 0x80, 0x03, 0x04, 0xb0, + 0x37, 0x00, 0x60, 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, + 0x87, 0x93, 0x80, 0x46, 0x00, 0xe0, 0x03, 0x04, 0xb0, 0x1b, 0x00, 0x60, + 0x4b, 0xc3, 0xfe, 0x13, 0x00, 0x60, 0x4b, 0xc3, 0xfe, 0x0b, 0x00, 0x60, + 0x4b, 0xc3, 0xfe, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, + 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x04, 0x00, 0x66, 0xd6, 0xb5, 0x7f, + 0x83, 0x83, 0x80, 0x04, 0x00, 0x64, 0x03, 0x04, 0xb0, 0x87, 0x83, 0x80, + 0x83, 0x63, 0x81, 0x43, 0xc0, 0xf2, 0xcf, 0x1c, 0xe5, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x83, 0x23, 0x01, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x0a, 0x40, 0x20, 0x87, 0x83, 0x80, 0x83, 0x43, 0x80, 0x6b, 0xf5, 0x7f, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0x97, 0x00, 0x60, + 0x05, 0x00, 0x00, 0x00, 0x67, 0x64, 0x07, 0x00, 0x80, 0x05, 0x00, 0x00, + 0x00, 0x66, 0x64, 0x03, 0x00, 0x80, 0x43, 0x80, 0xf2, 0xa3, 0x03, 0x90, + 0x83, 0x43, 0x80, 0x06, 0x00, 0xe0, 0x83, 0x23, 0x80, 0x03, 0x04, 0xb0, + 0x83, 0x43, 0x80, 0x03, 0x04, 0x00, 0x83, 0x43, 0x90, 0x05, 0x00, 0x00, + 0x00, 0x66, 0x64, 0x03, 0x00, 0x80, 0x03, 0x04, 0x00, 0x05, 0x00, 0x00, + 0x04, 0x66, 0x64, 0x43, 0x00, 0x90, 0x05, 0x00, 0x00, 0x00, 0x66, 0x64, + 0x07, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x68, 0x64, 0x03, 0x00, 0x80, + 0x6c, 0x00, 0x48, 0x1e, 0x00, 0x60, 0x05, 0x00, 0x00, 0x00, 0x65, 0x64, + 0x03, 0x00, 0x80, 0x05, 0x00, 0x00, 0x04, 0x66, 0x64, 0x43, 0x00, 0x90, + 0x83, 0x43, 0x80, 0x02, 0x00, 0xe0, 0x04, 0x00, 0x66, 0x66, 0xbf, 0x7f, + 0x05, 0x00, 0x00, 0x00, 0x67, 0x64, 0x07, 0x00, 0x80, 0x05, 0x00, 0x00, + 0x00, 0x66, 0x64, 0x03, 0x00, 0x80, 0x43, 0x80, 0xf2, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0xc4, 0x3f, 0x64, 0x03, 0x04, 0xb0, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x05, 0x00, 0x00, 0x00, 0x66, 0x64, 0x03, 0x00, 0x80, + 0x05, 0x00, 0x00, 0x04, 0x65, 0x64, 0x43, 0x00, 0x90, 0x4b, 0xc3, 0xfe, + 0x00, 0x3c, 0x23, 0x33, 0x01, 0xe0, 0x83, 0xb3, 0x00, 0x04, 0x20, 0x64, + 0x4a, 0x40, 0x20, 0x04, 0x00, 0x64, 0xb3, 0xde, 0x7f, 0x00, 0x00, 0x64, + 0xa3, 0x43, 0x90, 0x09, 0x00, 0x00, 0x00, 0x77, 0x64, 0x03, 0x00, 0x80, + 0x00, 0x00, 0x86, 0xde, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x69, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x56, 0x00, 0x60, 0x05, 0x00, 0x00, + 0x00, 0x69, 0x64, 0x04, 0x00, 0x64, 0x03, 0x04, 0x90, 0x05, 0x00, 0x00, + 0x00, 0x67, 0x64, 0x0f, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x68, 0x64, + 0x03, 0x00, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x00, 0x64, 0xc2, 0x40, 0x20, + 0x4b, 0xde, 0x7f, 0x05, 0x00, 0x00, 0x00, 0x67, 0x64, 0x03, 0x00, 0x80, + 0xed, 0xff, 0xc0, 0x44, 0x95, 0x64, 0x03, 0x04, 0x90, 0x05, 0x00, 0x00, + 0x00, 0x6a, 0x64, 0x03, 0x00, 0x80, 0x87, 0xb3, 0x00, 0x83, 0x43, 0x90, + 0x00, 0x49, 0x64, 0xa3, 0x03, 0x90, 0x42, 0x40, 0x20, 0xd0, 0xe3, 0x63, + 0xa3, 0x43, 0x90, 0x05, 0x00, 0x00, 0x00, 0x6a, 0x64, 0x03, 0x00, 0x80, + 0x03, 0x04, 0x00, 0x05, 0x00, 0x00, 0x04, 0x6a, 0x64, 0x43, 0x00, 0x90, + 0x83, 0x83, 0x05, 0xb3, 0x43, 0x92, 0x87, 0xb3, 0x00, 0x83, 0x63, 0x80, + 0x43, 0x80, 0xf2, 0x87, 0x73, 0x82, 0x4a, 0x40, 0x20, 0x87, 0xa3, 0x82, + 0x57, 0xf3, 0x7f, 0x83, 0xb3, 0x00, 0xf4, 0xdf, 0x63, 0x0b, 0x00, 0x60, + 0x4b, 0xc3, 0xfe, 0x37, 0x05, 0xe0, 0x53, 0x00, 0xe0, 0x04, 0x11, 0x64, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x97, 0xe2, 0x7f, 0x04, 0x5d, 0x64, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x87, 0xe2, 0x7f, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x07, 0x04, 0xb0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x04, 0xaf, 0x64, 0x3b, 0xc4, 0xa0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc4, 0xd2, 0x64, 0x03, 0x04, 0xa1, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x09, 0x00, 0x00, 0x04, 0x7a, 0x64, 0x33, 0x84, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x44, 0x00, 0x65, 0x3b, 0x44, 0xa4, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x44, 0x00, 0x64, 0x03, 0x84, 0xb4, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x04, 0x00, 0x64, 0x03, 0x04, 0x90, + 0x11, 0x10, 0x00, 0x00, 0x0b, 0x64, 0x04, 0x00, 0x64, 0x03, 0x04, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, 0xa3, 0x83, 0x90, 0x00, 0x00, 0x64, + 0xb3, 0x83, 0x90, 0x3b, 0x00, 0x60, 0xc0, 0x03, 0x64, 0xa3, 0x03, 0x90, + 0x0c, 0x00, 0x64, 0x08, 0x00, 0x64, 0x04, 0x00, 0x64, 0x83, 0xa3, 0x80, + 0xd0, 0x8f, 0x62, 0x83, 0xb3, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x83, 0x90, + 0x83, 0xa3, 0x80, 0x03, 0x10, 0x00, 0xa3, 0x83, 0x90, 0x83, 0xb3, 0x80, + 0x04, 0x10, 0xb2, 0xc6, 0xbf, 0x7f, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x04, 0x00, 0x64, 0x2b, 0x44, 0xb4, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x44, 0x00, 0x64, 0x2f, 0x44, 0xb4, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x84, 0x00, 0x64, 0x33, 0x44, 0xb4, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x0d, 0x00, 0x00, 0x44, 0x52, 0x64, 0x13, 0x44, 0xa4, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x05, 0x00, 0x00, 0xc4, 0xc2, 0x64, 0x1b, 0x44, 0xa4, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x0d, 0x00, 0x00, 0xc4, 0x84, 0x64, + 0x23, 0x44, 0xa4, 0x0d, 0x00, 0x00, 0xc0, 0x84, 0x64, 0x83, 0x83, 0x90, + 0x05, 0x00, 0x00, 0xc0, 0xc2, 0x64, 0xa3, 0x43, 0x90, 0x0d, 0x00, 0x00, + 0x40, 0x52, 0x64, 0x83, 0x43, 0x90, 0xc0, 0x4a, 0x64, 0xa3, 0x03, 0x90, + 0xc4, 0xd7, 0x63, 0xa3, 0x68, 0x60, 0x4b, 0xc3, 0xfe, 0x57, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x83, 0x4b, 0x90, + 0x93, 0x4f, 0x90, 0x83, 0x23, 0x80, 0x04, 0x00, 0x64, 0x03, 0x04, 0x90, + 0x83, 0x33, 0x80, 0x02, 0x3c, 0x00, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0x47, 0x38, 0xfe, 0x46, 0x3c, 0x00, 0x44, 0x04, 0x2b, 0x0b, 0x00, 0x80, + 0x8a, 0xf8, 0x00, 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x83, 0x53, 0x80, + 0x02, 0x3c, 0x00, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x47, 0x38, 0xfe, + 0x46, 0x3c, 0x00, 0x44, 0x14, 0x2b, 0x0b, 0x00, 0x80, 0x8a, 0x40, 0x0f, + 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x83, 0x43, 0x80, 0x02, 0xbc, 0x0f, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x47, 0x3c, 0xfe, 0x46, 0xbc, 0x0f, + 0x44, 0x38, 0x2b, 0x0b, 0x00, 0x80, 0x3d, 0x80, 0xff, 0x8a, 0xbc, 0x1f, + 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x83, 0x83, 0x80, 0x02, 0x3c, 0x00, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x47, 0x38, 0xfe, 0x46, 0x3c, 0x00, + 0x44, 0x28, 0x2b, 0x0b, 0x00, 0x80, 0x88, 0xf0, 0x94, 0x87, 0x44, 0xfb, + 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x07, 0x00, 0x80, 0x44, 0x00, 0xa6, + 0x03, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x03, 0x10, 0x80, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, 0x13, 0x04, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x02, 0x04, 0xe9, 0x00, 0x00, 0x66, + 0x76, 0x00, 0x60, 0x11, 0x10, 0x00, 0x08, 0x06, 0x64, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x02, 0x04, 0xe9, 0x03, 0x38, 0xfe, 0x44, 0x00, 0x65, + 0x44, 0x80, 0x40, 0x83, 0x00, 0x03, 0x03, 0x04, 0x90, 0x11, 0x10, 0x00, + 0x00, 0x06, 0x64, 0x87, 0x33, 0x80, 0x03, 0x20, 0x03, 0x03, 0x04, 0x90, + 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x04, 0x00, 0x64, 0x03, 0x10, 0x03, + 0x03, 0x04, 0x90, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, + 0x07, 0x84, 0xb4, 0x01, 0x00, 0xa0, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0x4b, 0x00, 0x60, 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x04, 0x00, 0x64, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, + 0x04, 0x00, 0x64, 0x03, 0x20, 0x03, 0x03, 0x04, 0x90, 0x11, 0x10, 0x00, + 0x00, 0x06, 0x64, 0x04, 0x00, 0x64, 0x03, 0x10, 0x03, 0x03, 0x04, 0x90, + 0x83, 0x33, 0x80, 0xa3, 0x03, 0x90, 0x93, 0x23, 0x80, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc0, 0xd3, 0x1f, 0x00, 0x00, 0x86, 0x0a, 0x00, 0x60, + 0xa7, 0x66, 0x60, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x53, 0x00, 0xe0, + 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, 0xa3, 0x8b, 0x90, 0x00, 0x00, 0x64, + 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, 0x93, 0x43, 0x90, 0x83, 0x93, 0x80, + 0x03, 0x00, 0x80, 0xf1, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, + 0x22, 0x00, 0x60, 0x83, 0x93, 0x80, 0x03, 0x00, 0x80, 0x00, 0x40, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0x83, 0x43, 0x90, 0x67, 0x00, 0x60, + 0x83, 0x93, 0x80, 0x03, 0x00, 0x80, 0x0d, 0x00, 0x00, 0x02, 0xbc, 0x1f, + 0x03, 0x3c, 0xfe, 0x4c, 0x00, 0x64, 0x08, 0x01, 0x64, 0x87, 0xa3, 0x80, + 0x5b, 0xe2, 0x7f, 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, 0x00, 0x40, 0x31, + 0x02, 0x3c, 0x00, 0x06, 0x40, 0x20, 0x83, 0x93, 0x80, 0x47, 0x38, 0xfe, + 0x46, 0x3c, 0x00, 0x44, 0x50, 0x2b, 0x0b, 0x00, 0x80, 0x88, 0xc0, 0x9f, + 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x40, 0x00, 0x64, 0x93, 0x43, 0x90, + 0x83, 0x93, 0x80, 0x03, 0x00, 0x80, 0x00, 0x50, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x83, 0x93, 0x80, 0x03, 0x00, 0x80, 0x0d, 0x00, 0x00, + 0x02, 0xbc, 0x1f, 0x0b, 0x3c, 0xfe, 0x83, 0xa3, 0x80, 0xa3, 0x03, 0x90, + 0x8f, 0x43, 0x80, 0x83, 0x83, 0x80, 0xd8, 0xd3, 0x63, 0x83, 0x83, 0x80, + 0x07, 0x00, 0x80, 0x46, 0x44, 0x20, 0x03, 0x04, 0x90, 0x83, 0x53, 0x80, + 0x02, 0x04, 0x00, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x47, 0x38, 0xfe, + 0x46, 0x04, 0x00, 0x44, 0x24, 0x2b, 0x0b, 0x00, 0x80, 0x88, 0x08, 0x94, + 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x83, 0x93, 0x80, 0x03, 0x00, 0x80, + 0x0d, 0x00, 0x00, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x87, 0x53, 0x80, + 0x4a, 0x40, 0x20, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x43, 0x80, 0xf2, + 0x13, 0x88, 0xb4, 0x83, 0x83, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, + 0x08, 0x00, 0x92, 0x5a, 0x00, 0x60, 0x04, 0x01, 0x64, 0x83, 0x83, 0x80, + 0xa3, 0xe4, 0x7f, 0xb3, 0x43, 0x90, 0x86, 0xb3, 0xe0, 0x83, 0x83, 0x80, + 0x47, 0x38, 0xfe, 0x44, 0x5c, 0x2b, 0x0b, 0x00, 0x80, 0xfd, 0x7f, 0x80, + 0x8a, 0xbc, 0x1f, 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x83, 0x83, 0x80, + 0x03, 0x00, 0x80, 0x02, 0x00, 0x10, 0x00, 0x00, 0x86, 0x6a, 0x00, 0x60, + 0x83, 0x83, 0x80, 0x6f, 0xd4, 0x60, 0x5f, 0x00, 0x60, 0x83, 0x83, 0x80, + 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x04, 0x86, 0x22, 0x00, 0x60, + 0x83, 0x83, 0x80, 0x03, 0x00, 0x80, 0xc1, 0x7f, 0x00, 0x02, 0x00, 0x00, + 0x41, 0x09, 0x00, 0x00, 0x00, 0x92, 0x12, 0x00, 0x60, 0x83, 0x83, 0x80, + 0xa3, 0xd4, 0x60, 0x23, 0x00, 0x60, 0x83, 0x83, 0x80, 0x03, 0x00, 0x80, + 0x02, 0xb8, 0x00, 0x30, 0x00, 0x92, 0x0e, 0x00, 0x60, 0x83, 0x83, 0x80, + 0xbb, 0xd4, 0x60, 0x4b, 0xc3, 0xfe, 0x57, 0x04, 0xe0, 0x53, 0x02, 0xe0, + 0x00, 0x00, 0x64, 0xa3, 0x03, 0xa0, 0x00, 0x00, 0x64, 0x93, 0x43, 0xa0, + 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, 0x83, 0x43, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xbc, 0x64, 0xa3, 0x43, 0x90, 0x01, 0x12, 0x00, 0x00, 0x40, 0x64, + 0xb3, 0x43, 0x90, 0x4b, 0xc3, 0xfe, 0x83, 0x73, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x7c, 0x31, 0x04, 0x00, 0x66, 0xf2, 0xbf, 0x7f, 0x83, 0x73, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x20, 0x31, 0x0d, 0x00, 0x00, 0x02, 0xbc, 0x1f, + 0x83, 0x83, 0xa0, 0x83, 0x73, 0x80, 0x07, 0x00, 0x08, 0x82, 0x03, 0xc1, + 0x0b, 0x04, 0x00, 0x83, 0x33, 0x01, 0x1f, 0xe8, 0x7f, 0x00, 0x00, 0x64, + 0xb3, 0x03, 0x90, 0xbb, 0x01, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x82, 0x23, 0xc0, 0x00, 0x10, 0xb4, + 0x92, 0x01, 0x60, 0x87, 0x33, 0x01, 0x83, 0x33, 0x80, 0x43, 0x80, 0xf2, + 0x02, 0x00, 0xe0, 0x04, 0x00, 0x66, 0x76, 0x01, 0x40, 0x87, 0x33, 0x01, + 0x83, 0x33, 0x80, 0x43, 0x80, 0xf2, 0x02, 0x00, 0xe0, 0x03, 0x38, 0xfe, + 0x03, 0x44, 0x00, 0x93, 0x83, 0x90, 0x0c, 0x00, 0x64, 0x08, 0x00, 0x64, + 0x87, 0x93, 0x80, 0x83, 0x33, 0x80, 0xc3, 0xdf, 0x7f, 0xb3, 0x83, 0x94, + 0x83, 0xb3, 0x84, 0x00, 0x00, 0x86, 0x3a, 0x01, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x20, 0x00, 0x84, 0x26, 0x01, 0x60, + 0x83, 0x33, 0x09, 0x8b, 0x93, 0x80, 0x06, 0x40, 0x20, 0x83, 0x43, 0x80, + 0xfc, 0xcb, 0x63, 0x83, 0xb3, 0x84, 0x01, 0xf0, 0x00, 0x02, 0x00, 0x00, + 0x01, 0x60, 0x00, 0x00, 0x00, 0x92, 0x86, 0x00, 0x60, 0x83, 0xb3, 0x84, + 0x00, 0x40, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0xa3, 0x83, 0x90, + 0x83, 0xa3, 0x80, 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x93, 0x00, 0x60, + 0x83, 0xa3, 0x80, 0x00, 0x08, 0x2b, 0x87, 0x63, 0x80, 0x43, 0x80, 0xf2, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x92, 0x22, 0x00, 0x60, 0x83, 0xa3, 0x80, + 0x00, 0x08, 0x2b, 0x87, 0x63, 0x80, 0x43, 0x80, 0xf2, 0x87, 0x43, 0x80, + 0x03, 0x04, 0x90, 0x5b, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x47, 0x00, 0x60, 0x83, 0xb3, 0x84, + 0x01, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x01, 0x70, 0x00, 0x00, 0x00, 0x86, + 0x1e, 0x00, 0x60, 0x83, 0xb3, 0x84, 0x01, 0xf0, 0x00, 0x02, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x92, 0x16, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x26, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x00, 0x83, 0x43, 0x90, 0x82, 0x23, 0xc0, + 0x03, 0x04, 0x00, 0xa3, 0x03, 0xa0, 0x0b, 0x00, 0x60, 0x4b, 0xc3, 0xfe, + 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x86, 0x03, 0xc1, + 0x83, 0x33, 0x80, 0x1c, 0x04, 0x3a, 0x42, 0xbe, 0x7f, 0x82, 0x23, 0xc0, + 0x00, 0x0c, 0xa8, 0x0b, 0xde, 0x7f, 0x4b, 0xc3, 0xfe, 0x57, 0x06, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0x25, 0x0c, 0x00, 0x04, 0x06, 0x64, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x03, 0x04, 0x90, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, 0x13, 0x04, 0x90, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, 0x07, 0x84, 0xb4, 0x09, 0x00, 0x00, + 0x00, 0x76, 0x64, 0x44, 0x00, 0x64, 0x03, 0x04, 0x90, 0x09, 0x00, 0x00, + 0x00, 0x77, 0x64, 0x44, 0x00, 0x64, 0x03, 0x04, 0x90, 0x97, 0x70, 0x60, + 0xd4, 0xdf, 0x62, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x03, 0x10, 0x80, + 0x00, 0x00, 0x86, 0xea, 0xbf, 0x7f, 0xf4, 0x9f, 0x63, 0xe3, 0xbf, 0x7f, + 0x73, 0x00, 0xe0, 0x01, 0x80, 0xff, 0x00, 0x00, 0x64, 0x03, 0x00, 0x80, + 0xb3, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x00, 0x30, 0x31, 0x83, 0xc3, 0x90, + 0x83, 0xb3, 0x80, 0x0d, 0x00, 0x00, 0x02, 0xbc, 0x1f, 0x93, 0xc3, 0x90, + 0x83, 0xc3, 0x80, 0xfd, 0x0f, 0x00, 0x02, 0x80, 0x1f, 0xa3, 0xc3, 0x90, + 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x04, 0x00, 0x64, 0x03, 0x30, 0x03, + 0x03, 0x04, 0x90, 0x40, 0x00, 0x64, 0x83, 0x83, 0x90, 0x00, 0x01, 0x64, + 0xa3, 0x43, 0x90, 0xc0, 0x00, 0x64, 0x83, 0x43, 0x90, 0x00, 0x51, 0x64, + 0xa3, 0x03, 0x90, 0xc3, 0xf5, 0x7f, 0x80, 0x55, 0x64, 0x83, 0x43, 0x90, + 0x80, 0x58, 0x64, 0xa3, 0x03, 0x90, 0xaf, 0xf5, 0x7f, 0x83, 0xc3, 0x80, + 0x83, 0x43, 0x90, 0x40, 0x5a, 0x64, 0xa3, 0x03, 0x90, 0x9b, 0xf5, 0x7f, + 0x83, 0xd3, 0x80, 0x83, 0x43, 0x90, 0x80, 0x5c, 0x64, 0xa3, 0x03, 0x90, + 0x87, 0xf5, 0x7f, 0x01, 0x01, 0x00, 0x00, 0x00, 0x64, 0xc3, 0xdc, 0x7f, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x04, 0x00, 0x64, 0x03, 0x04, 0xb0, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x04, 0x00, 0x64, 0x03, 0x04, 0x00, + 0x03, 0x04, 0xb0, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x04, 0x00, 0x64, + 0x03, 0x08, 0x00, 0x03, 0x04, 0xb0, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, + 0x04, 0x00, 0x64, 0x03, 0x0c, 0x00, 0x03, 0x04, 0xb0, 0x11, 0x10, 0x00, + 0x00, 0x0a, 0x64, 0x06, 0x00, 0xe0, 0x46, 0x5c, 0x00, 0x03, 0x04, 0xb0, + 0x01, 0x01, 0x00, 0x40, 0x00, 0x64, 0x57, 0xdc, 0x7f, 0x83, 0xe3, 0x80, + 0x85, 0x06, 0x00, 0x00, 0x18, 0x86, 0xce, 0x00, 0x40, 0x83, 0xd3, 0x80, + 0x00, 0x28, 0xb6, 0xca, 0x00, 0x40, 0x9b, 0xd2, 0x60, 0x01, 0x02, 0x00, + 0x00, 0x00, 0x64, 0x2b, 0xdc, 0x7f, 0xf3, 0xf5, 0x7f, 0x01, 0x03, 0x00, + 0x00, 0x00, 0x64, 0x1b, 0xdc, 0x7f, 0xf4, 0xbb, 0x63, 0x01, 0x04, 0x00, + 0x00, 0x00, 0x64, 0x0b, 0xdc, 0x7f, 0xec, 0x8f, 0x62, 0x01, 0x05, 0x00, + 0x00, 0x00, 0x64, 0xfb, 0xdb, 0x7f, 0x00, 0x00, 0x64, 0xa3, 0x83, 0x90, + 0x3b, 0x00, 0x60, 0x83, 0xa3, 0x80, 0x87, 0xd2, 0x60, 0x01, 0x06, 0x00, + 0x00, 0x00, 0x64, 0xdb, 0xdb, 0x7f, 0x83, 0xa3, 0x80, 0x03, 0xd1, 0x60, + 0x01, 0x07, 0x00, 0x00, 0x00, 0x64, 0xc7, 0xdb, 0x7f, 0x83, 0xa3, 0x80, + 0x03, 0x04, 0x00, 0xa3, 0x83, 0x90, 0x83, 0xa3, 0x80, 0x00, 0x00, 0xb2, + 0xc6, 0xbf, 0x7f, 0x01, 0x08, 0x00, 0x00, 0x00, 0x64, 0xa3, 0xdb, 0x7f, + 0x84, 0x01, 0x64, 0x00, 0x04, 0x64, 0x77, 0xda, 0x7f, 0x2b, 0xf4, 0x7f, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc8, 0xdb, 0x63, 0x00, 0x00, 0x64, + 0x63, 0x00, 0x60, 0x4b, 0xc3, 0xfe, 0x0b, 0x00, 0x60, 0x4b, 0xc3, 0xfe, + 0xc0, 0x5e, 0x64, 0xa3, 0x03, 0x90, 0x1f, 0xf4, 0x7f, 0x11, 0x10, 0x00, + 0x00, 0x0a, 0x64, 0x06, 0x00, 0xe0, 0x46, 0x40, 0x21, 0x03, 0x04, 0xb0, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x06, 0x00, 0xe0, 0x46, 0x40, 0x22, + 0x03, 0x04, 0xb0, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x06, 0x00, 0xe0, + 0xfd, 0xff, 0xff, 0x46, 0x40, 0x3c, 0x03, 0x04, 0xb0, 0x00, 0x00, 0x64, + 0x77, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0x1d, 0x10, 0x00, 0x00, 0x00, 0x64, + 0x01, 0x80, 0x00, 0x04, 0x00, 0x64, 0x03, 0x04, 0x90, 0x1d, 0x10, 0x00, + 0x00, 0x00, 0x64, 0xc4, 0x3f, 0x64, 0x03, 0x90, 0x01, 0x03, 0x04, 0x90, + 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0xdf, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x00, 0x10, 0x2b, 0x41, 0x10, 0x00, 0x03, 0x00, 0x00, 0x07, 0x00, 0x80, + 0x46, 0x4c, 0x20, 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, + 0x41, 0x10, 0x00, 0x03, 0x00, 0x00, 0x07, 0x20, 0x80, 0xfd, 0x00, 0xc0, + 0x46, 0xbc, 0x1f, 0x44, 0x10, 0xa8, 0x03, 0x20, 0x00, 0x03, 0x04, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x41, 0x10, 0x00, 0x03, 0x00, 0x00, + 0x04, 0x04, 0x64, 0x03, 0x18, 0x00, 0x03, 0x04, 0xa0, 0x83, 0x23, 0x80, + 0x00, 0x10, 0x2b, 0x41, 0x10, 0x00, 0x03, 0x00, 0x00, 0x07, 0x30, 0x80, + 0xc1, 0xff, 0xff, 0x46, 0x00, 0x00, 0x46, 0x50, 0x20, 0x03, 0x30, 0x00, + 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x41, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x07, 0x20, 0x80, 0xc1, 0xff, 0xff, 0x46, 0x00, 0x00, + 0x03, 0x20, 0x00, 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, + 0x41, 0x10, 0x00, 0x03, 0x00, 0x00, 0x87, 0x23, 0x80, 0x44, 0x10, 0x2b, + 0x03, 0x10, 0x00, 0x03, 0x04, 0xa0, 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x1c, 0x00, 0xb2, 0x22, 0xbf, 0x7f, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xb3, 0x07, 0x90, 0x1d, 0x10, 0x00, 0x00, 0x00, 0x64, 0x03, 0x80, 0x80, + 0x48, 0x00, 0x64, 0x87, 0x23, 0x80, 0x84, 0x84, 0x40, 0x03, 0xc4, 0xfb, + 0x00, 0x00, 0x86, 0x7e, 0x00, 0x60, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, + 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, 0x07, 0x00, 0x80, 0x83, 0x33, 0x80, + 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x07, 0x10, 0x80, 0x83, 0x33, 0x80, 0x13, 0x04, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, + 0x07, 0x20, 0x80, 0x83, 0x33, 0x80, 0x23, 0x04, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, 0x07, 0x30, 0x80, + 0x83, 0x33, 0x80, 0x33, 0x04, 0x90, 0x40, 0x00, 0x64, 0x0b, 0x00, 0x60, + 0x00, 0x00, 0x64, 0x17, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, + 0x87, 0x53, 0x80, 0x47, 0x00, 0x80, 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, 0x87, 0x53, 0x80, + 0x47, 0x10, 0x80, 0x03, 0x10, 0x00, 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, 0x87, 0x53, 0x80, + 0x47, 0x20, 0x80, 0x03, 0x20, 0x00, 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, 0x87, 0x53, 0x80, + 0x47, 0x30, 0x80, 0x03, 0x30, 0x00, 0x03, 0x04, 0x90, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x63, 0x00, 0xe0, 0x83, 0xc3, 0x90, 0x83, 0x33, 0x00, + 0x06, 0x40, 0x20, 0x83, 0xc3, 0x80, 0xe0, 0xeb, 0x63, 0x00, 0x00, 0x86, + 0xbe, 0x00, 0x60, 0x82, 0x33, 0xe0, 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, + 0x83, 0x33, 0x80, 0xb3, 0x43, 0x90, 0x83, 0x43, 0x80, 0x83, 0x83, 0x90, + 0x00, 0x00, 0x64, 0xa3, 0x83, 0x90, 0x83, 0xa3, 0x80, 0x93, 0x83, 0x90, + 0x00, 0x00, 0x64, 0xb7, 0x43, 0xb0, 0x83, 0x23, 0x80, 0x3c, 0x1c, 0xb6, + 0x3e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0xe6, 0x64, 0x83, 0x23, 0x80, + 0x43, 0x40, 0xf7, 0x00, 0x00, 0x86, 0x26, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x04, 0xe6, 0x64, 0x83, 0x23, 0x80, 0x53, 0x40, 0xf7, 0x87, 0xb3, 0x00, + 0x83, 0x33, 0x00, 0xc0, 0xd3, 0x1f, 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0xb7, 0x43, 0xb0, 0x83, 0xb3, 0x00, + 0x06, 0x40, 0x20, 0x83, 0xc3, 0x80, 0xd0, 0xeb, 0x63, 0x4b, 0xc3, 0xfe, + 0x67, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x02, 0x0c, 0xe9, 0x00, 0x00, 0x66, 0x8a, 0x00, 0x60, 0x11, 0x10, 0x00, + 0x00, 0x0a, 0x64, 0x02, 0x00, 0xe0, 0xa3, 0x03, 0xb0, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, 0x0f, 0x84, 0xb4, 0x82, 0x23, 0xe0, + 0xa7, 0x03, 0xb0, 0x82, 0x27, 0xe0, 0x02, 0x5c, 0x00, 0x02, 0x58, 0x20, + 0xa7, 0x03, 0xb0, 0x82, 0x27, 0xe0, 0x02, 0x40, 0x22, 0xa7, 0x03, 0xb0, + 0x11, 0x10, 0x00, 0x04, 0x0a, 0x64, 0x82, 0x27, 0xe0, 0x43, 0x00, 0xb0, + 0x4b, 0xc3, 0xfe, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x02, 0x00, 0xe0, + 0x00, 0x18, 0x2e, 0x02, 0x04, 0x00, 0x04, 0x00, 0x66, 0xea, 0xbf, 0x7f, + 0x11, 0x10, 0x00, 0x04, 0x0a, 0x64, 0x82, 0x23, 0xe0, 0x43, 0x00, 0xb0, + 0x00, 0x00, 0x64, 0xc0, 0xeb, 0x63, 0x80, 0x00, 0x64, 0xf8, 0xe7, 0x63, + 0x00, 0x01, 0x64, 0xf0, 0xe7, 0x63, 0x80, 0x01, 0x64, 0xe8, 0xe7, 0x63, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xb3, 0x07, 0x90, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x33, 0x80, + 0x23, 0x04, 0x90, 0x83, 0x33, 0x80, 0x04, 0x00, 0x64, 0x33, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xb3, 0x07, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x83, 0x33, 0x80, 0x85, 0x06, 0x00, + 0x04, 0x18, 0x64, 0x23, 0x04, 0x90, 0x83, 0x33, 0x80, 0x01, 0x40, 0x30, + 0x44, 0x00, 0x64, 0x33, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0x1f, 0xd3, 0x7f, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x1f, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, 0x07, 0x38, 0xfe, + 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0xbf, 0xd2, 0x7f, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x27, 0x00, 0x60, + 0x04, 0x00, 0x64, 0x83, 0x23, 0x80, 0x6b, 0xd9, 0x7f, 0xb3, 0x03, 0x90, + 0x82, 0x3b, 0xc0, 0x07, 0x3c, 0xfe, 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, + 0x57, 0xd2, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x27, 0x00, 0x60, 0x04, 0x00, 0x64, 0x83, 0x23, 0x80, + 0x03, 0xd9, 0x7f, 0xb3, 0x03, 0x90, 0x82, 0x3f, 0xe0, 0x07, 0x38, 0xfe, + 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0xef, 0xd1, 0x7f, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x23, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x5c, 0x31, 0x02, 0x40, 0x00, + 0x07, 0x38, 0xfe, 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x43, 0x00, 0xe0, 0x83, 0x83, 0x90, + 0x93, 0x87, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0x83, 0x83, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x10, 0x2b, 0x03, 0xa0, 0x00, + 0x09, 0x00, 0x00, 0x03, 0x90, 0x1a, 0x03, 0x10, 0x00, 0x93, 0x43, 0x90, + 0x83, 0x53, 0x80, 0x03, 0x30, 0x00, 0x03, 0x00, 0x80, 0x03, 0x3c, 0xfe, + 0xa3, 0x43, 0x90, 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x4f, 0x00, 0x60, + 0x83, 0x33, 0x80, 0x00, 0x08, 0x2b, 0x87, 0x53, 0x80, 0x43, 0x80, 0xf2, + 0x03, 0x00, 0x80, 0xb3, 0x43, 0x90, 0x83, 0x73, 0x80, 0x04, 0x40, 0x31, + 0x83, 0x73, 0x80, 0x03, 0x3c, 0xfe, 0x43, 0x80, 0xf2, 0x00, 0x04, 0x31, + 0x87, 0x23, 0x80, 0x43, 0x80, 0xf2, 0xa3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x08, 0x00, 0xb2, + 0xb2, 0xbf, 0x7f, 0x83, 0x23, 0x80, 0xc4, 0x00, 0x64, 0x8b, 0xcb, 0x60, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, + 0x87, 0x63, 0x80, 0x73, 0xcb, 0x60, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, + 0x04, 0xd5, 0x64, 0x83, 0x43, 0x80, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, + 0x02, 0x18, 0xc0, 0x03, 0x44, 0xfe, 0x04, 0x40, 0x2b, 0x83, 0x23, 0x80, + 0x03, 0x3c, 0xfe, 0x47, 0x40, 0xfb, 0x83, 0x93, 0x80, 0x23, 0x04, 0x90, + 0x09, 0x00, 0x00, 0x08, 0xd5, 0x64, 0x87, 0x43, 0x80, 0x42, 0x40, 0x20, + 0x00, 0x04, 0x2b, 0x03, 0x84, 0xf2, 0x00, 0x04, 0x2b, 0x83, 0x80, 0xf2, + 0x03, 0x90, 0x00, 0x02, 0x00, 0xc0, 0x0b, 0x3c, 0xfe, 0x09, 0x00, 0x00, + 0x0c, 0xd5, 0x64, 0x87, 0x43, 0x80, 0x42, 0x40, 0x20, 0x00, 0x04, 0x2b, + 0x03, 0x84, 0xf2, 0x00, 0x04, 0x2b, 0xc3, 0x80, 0xf2, 0x03, 0x98, 0x00, + 0x02, 0x00, 0xc0, 0x03, 0x3c, 0xfe, 0x00, 0x40, 0x2b, 0x87, 0x40, 0xfb, + 0x83, 0x93, 0x80, 0x33, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x47, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0xfd, 0xff, 0xff, 0x3c, 0x7c, 0x91, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, + 0x93, 0x01, 0x60, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x83, 0x43, 0x80, 0xd7, 0xd0, 0x7f, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x5a, 0x01, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x20, 0xe0, 0x3c, 0x00, 0x3b, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x37, 0x01, 0x60, + 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0x6b, 0xcf, 0x7f, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, 0x00, 0x00, 0x92, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0xef, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, 0x00, 0x10, 0x31, 0x02, 0x1c, 0x00, + 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x02, 0x64, 0x0b, 0x04, 0xa0, 0xa7, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, + 0x03, 0x3c, 0xfe, 0x00, 0x14, 0x2b, 0x03, 0x30, 0x00, 0x03, 0x00, 0x04, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x9b, 0xd5, 0x7f, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x62, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x20, 0xe0, 0x02, 0x1c, 0x00, + 0x03, 0x38, 0xfe, 0x02, 0x1c, 0x00, 0x00, 0x1c, 0x2b, 0x87, 0x33, 0x80, + 0x46, 0x40, 0x1c, 0x43, 0x40, 0xfb, 0xb3, 0x03, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, + 0x00, 0x14, 0x2b, 0x03, 0x30, 0x00, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, + 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, 0x83, 0x23, 0x80, 0x73, 0xd5, 0x7f, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0xfd, 0xff, 0xff, + 0x3c, 0x7c, 0x91, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x93, 0x01, 0x60, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x83, 0x43, 0x80, 0x0f, 0xcf, 0x7f, + 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x5a, 0x01, 0x60, 0x83, 0x43, 0x80, 0x02, 0x20, 0xe0, 0x3c, 0x00, 0x3b, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0x37, 0x01, 0x60, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, + 0x03, 0x3c, 0xfe, 0xa3, 0xcd, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x02, 0x04, 0x00, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0xef, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, + 0x00, 0x10, 0x31, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x02, 0x64, + 0x0b, 0x04, 0xa0, 0xa7, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, + 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x00, 0x14, 0x2b, + 0x03, 0x30, 0x00, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0xd3, 0xd3, 0x7f, 0xb3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x62, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x20, 0xe0, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x02, 0x1c, 0x00, + 0x00, 0x10, 0x2b, 0x87, 0x33, 0x80, 0x46, 0xc0, 0x03, 0x43, 0x40, 0xfb, + 0xb3, 0x03, 0x90, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, + 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x00, 0x14, 0x2b, 0x03, 0x30, 0x00, + 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, + 0x83, 0x23, 0x80, 0xab, 0xd3, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, 0x83, 0x63, 0x80, + 0x02, 0x10, 0xc0, 0xfd, 0xff, 0xff, 0x3c, 0x7c, 0x91, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, + 0xfb, 0x01, 0x60, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x83, 0x63, 0x80, 0x47, 0xcd, 0x7f, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0xc2, 0x01, 0x60, 0x83, 0x63, 0x80, + 0x02, 0x20, 0xe0, 0x1c, 0x00, 0x3b, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x9f, 0x01, 0x60, + 0x83, 0x63, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0xdb, 0xcb, 0x7f, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, 0x00, 0x00, 0x92, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x57, 0x01, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, 0x00, 0x10, 0x31, 0x02, 0x1c, 0x00, + 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x02, 0x64, 0x0b, 0x04, 0xa0, 0x0f, 0x01, 0x60, + 0x83, 0x63, 0x80, 0x02, 0x20, 0xe0, 0x03, 0x38, 0xfe, 0xb3, 0x03, 0x90, + 0x83, 0x63, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, + 0x03, 0x3c, 0xfe, 0x00, 0x14, 0x2b, 0x03, 0x30, 0x00, 0x03, 0x00, 0x04, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0xfb, 0xd1, 0x7f, 0x83, 0x43, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0xba, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x5c, 0x00, 0x83, 0x43, 0x90, + 0x83, 0x33, 0x80, 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, 0x83, 0x33, 0x80, + 0x04, 0x00, 0x92, 0x2e, 0x00, 0x60, 0x83, 0x33, 0x80, 0x02, 0x04, 0x00, + 0x03, 0x38, 0xfe, 0x02, 0x04, 0x00, 0x00, 0x04, 0x2b, 0x87, 0x43, 0x80, + 0x46, 0x48, 0x00, 0x43, 0x40, 0xfb, 0x83, 0x43, 0x90, 0x3b, 0x00, 0x60, + 0x83, 0x33, 0x80, 0x08, 0x00, 0x92, 0x16, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x50, 0x20, 0x83, 0x43, 0x90, 0x1f, 0x00, 0x60, 0x83, 0x33, 0x80, + 0x0c, 0x00, 0x92, 0x12, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x44, 0x20, + 0x83, 0x43, 0x90, 0x83, 0x63, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, + 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x00, 0x14, 0x2b, 0x03, 0x30, 0x00, + 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x43, 0x80, 0x0a, 0x40, 0x20, + 0x83, 0x23, 0x80, 0x7b, 0xd1, 0x7f, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x02, 0x20, 0xe0, 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, 0x8c, 0x00, 0x65, + 0x88, 0x00, 0x65, 0x44, 0x00, 0x65, 0x83, 0x43, 0x80, 0x2f, 0xcb, 0x7f, + 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x42, 0x00, 0x60, 0x83, 0x23, 0x80, 0x3c, 0x00, 0xb2, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x01, 0x64, 0x0b, 0x04, 0xa0, + 0x23, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0x87, 0x23, 0x80, 0xe3, 0xcb, 0x7f, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x02, 0x20, 0xe0, 0x03, 0x38, 0xfe, + 0xa3, 0x03, 0x90, 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, 0x44, 0x00, 0x65, + 0x83, 0x43, 0x80, 0x97, 0xca, 0x7f, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x42, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x0c, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x04, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x23, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, + 0x87, 0x23, 0x80, 0xd7, 0xcb, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, + 0x37, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x00, 0xe0, + 0x07, 0x38, 0xfe, 0x83, 0x23, 0x80, 0x40, 0x80, 0x3f, 0x02, 0x04, 0x00, + 0x00, 0x00, 0x92, 0x03, 0x00, 0xfd, 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, + 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0xfd, 0xff, 0xff, 0x3c, 0x7c, 0x91, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, + 0x53, 0x00, 0x60, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x83, 0x43, 0x80, 0x67, 0xc9, 0x7f, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x1a, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0x1f, 0xc8, 0x7f, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0xb3, 0x47, 0x90, 0x83, 0x63, 0x80, 0xe4, 0xf7, 0x63, 0xa3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x66, 0x00, 0x60, 0x83, 0x63, 0x80, 0x03, 0x20, 0x80, 0xb3, 0x03, 0x90, + 0x83, 0x63, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, + 0x03, 0x3c, 0xfe, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x14, 0x2b, + 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, 0x00, 0x08, 0x2b, + 0x43, 0x80, 0xf2, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0x06, 0x40, 0x20, + 0x83, 0x23, 0x80, 0x6f, 0xce, 0x7f, 0x06, 0x40, 0x20, 0x83, 0x73, 0x80, + 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x43, 0x00, 0xe0, + 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, 0x83, 0x83, 0x80, 0xd0, 0xef, 0x63, + 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, + 0x00, 0x00, 0x90, 0x6a, 0x00, 0x60, 0x83, 0x83, 0x80, 0x03, 0x20, 0x80, + 0xb3, 0x03, 0x90, 0x83, 0x83, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, + 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, + 0x00, 0x08, 0x2b, 0x43, 0x80, 0xf2, 0x93, 0x43, 0x90, 0x83, 0x83, 0x80, + 0x03, 0x30, 0x80, 0xa3, 0x43, 0x90, 0x83, 0x53, 0x80, 0x8b, 0x63, 0x80, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x17, 0xce, 0x7f, 0x4b, 0xc3, 0xfe, + 0x47, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, + 0x83, 0x43, 0x80, 0xf8, 0xe3, 0x63, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x32, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x20, 0x80, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x00, 0x08, 0x2b, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x77, 0xcd, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, + 0x83, 0x63, 0x80, 0xd8, 0xdf, 0x63, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x36, 0x00, 0x60, + 0x83, 0x63, 0x80, 0x03, 0x20, 0x80, 0xb3, 0x03, 0x90, 0x83, 0x63, 0x80, + 0x03, 0x30, 0x80, 0x83, 0x43, 0x90, 0x83, 0x33, 0x80, 0x00, 0x08, 0x2b, + 0x8b, 0x43, 0x80, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x53, 0xcd, 0x7f, + 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x47, 0x00, 0x60, 0x04, 0x00, 0x64, + 0x83, 0x23, 0x80, 0x77, 0x54, 0x60, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x41, 0xff, 0xff, 0xc4, 0x6f, 0x64, 0x00, 0x44, 0x24, 0xa9, 0x71, 0x02, + 0x03, 0x00, 0x1f, 0x04, 0x19, 0x64, 0x6b, 0xc0, 0x60, 0xb3, 0x03, 0x90, + 0x87, 0x33, 0x80, 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, + 0x83, 0x43, 0x80, 0xe8, 0xcf, 0x63, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x9e, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x38, 0x00, 0x86, + 0x1a, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, + 0x00, 0x04, 0x92, 0x5e, 0x00, 0x60, 0x04, 0x04, 0x64, 0x83, 0x23, 0x80, + 0x13, 0xcc, 0x7f, 0xb3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x4e, 0x00, 0x60, 0x83, 0x33, 0x80, + 0x41, 0xff, 0xff, 0xc4, 0x6f, 0x64, 0x00, 0x44, 0x24, 0xa9, 0x71, 0x02, + 0x03, 0x00, 0x1f, 0x04, 0x19, 0x64, 0xbb, 0x7f, 0x60, 0xb3, 0x03, 0x90, + 0x87, 0x33, 0x80, 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, 0x1b, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, + 0x0b, 0x00, 0x60, 0x4b, 0xc3, 0xfe, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x53, 0x00, 0xe0, 0xa3, 0x83, 0x90, 0xb3, 0x87, 0x90, 0x83, 0xa3, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x3c, 0x00, 0x86, 0x36, 0x00, 0x60, + 0x83, 0x33, 0x80, 0x00, 0x00, 0xba, 0x16, 0x00, 0x60, 0x83, 0x33, 0x80, + 0x3b, 0xc5, 0x7f, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x63, 0x01, 0x60, + 0x83, 0xa3, 0x80, 0x03, 0x20, 0x80, 0x02, 0xbc, 0x07, 0x83, 0x43, 0x90, + 0x83, 0xa3, 0x80, 0x03, 0x20, 0x80, 0x00, 0x20, 0x31, 0x02, 0xbc, 0x07, + 0x93, 0x43, 0x90, 0x00, 0x00, 0x64, 0x83, 0x83, 0x90, 0x83, 0x43, 0x80, + 0x79, 0xfe, 0xff, 0x04, 0x58, 0x64, 0x00, 0x44, 0x24, 0xa9, 0x71, 0x02, + 0x03, 0x00, 0x1f, 0xbd, 0x00, 0x00, 0x44, 0x90, 0x64, 0xd7, 0x7e, 0x60, + 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x02, 0xbc, 0x1f, 0x00, 0x40, 0x2b, + 0x87, 0x83, 0x80, 0xfd, 0x00, 0xfc, 0x46, 0xbc, 0x1f, 0x43, 0x40, 0xfb, + 0x83, 0x83, 0x90, 0x83, 0x53, 0x80, 0x79, 0xfe, 0xff, 0x04, 0x58, 0x64, + 0x00, 0x44, 0x24, 0xa9, 0x71, 0x02, 0x03, 0x00, 0x1f, 0xbd, 0x00, 0x00, + 0x44, 0x90, 0x64, 0x8f, 0x7e, 0x60, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, + 0x02, 0xbc, 0x1f, 0x87, 0x83, 0x80, 0xfd, 0xff, 0xff, 0x46, 0x00, 0x00, + 0x43, 0x40, 0xfb, 0x83, 0x83, 0x90, 0x83, 0x83, 0x80, 0x00, 0x00, 0xa1, + 0x83, 0x83, 0x90, 0x83, 0x83, 0x80, 0x00, 0x00, 0x99, 0x83, 0x83, 0x90, + 0x83, 0x83, 0x80, 0x00, 0x10, 0xa0, 0x83, 0x83, 0x90, 0x83, 0x83, 0x80, + 0x00, 0x10, 0x98, 0x83, 0x83, 0x90, 0x83, 0x33, 0x80, 0x3c, 0x00, 0x86, + 0x2a, 0x00, 0x60, 0x83, 0x33, 0x80, 0x23, 0xc4, 0x7f, 0xb3, 0x43, 0x90, + 0x83, 0x83, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x15, 0x64, 0x83, 0x73, 0x80, + 0x7f, 0xca, 0x7f, 0x4b, 0x00, 0x60, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0x33, 0x00, 0x60, 0x83, 0x23, 0x80, 0xf3, 0xc3, 0x7f, 0xa3, 0x43, 0x90, + 0x83, 0x83, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x15, 0x64, 0x83, 0x63, 0x80, + 0x4f, 0xca, 0x7f, 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0xb2, 0xce, 0xbf, 0x7f, 0x57, 0x04, 0xe0, + 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, 0x83, 0x63, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x93, 0xc3, 0x7f, 0xb3, 0x03, 0x90, + 0x83, 0x33, 0x80, 0x00, 0x00, 0x86, 0x36, 0x00, 0x60, 0x04, 0x15, 0x64, + 0x83, 0x33, 0x80, 0x9f, 0xc9, 0x7f, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x00, 0x00, 0x99, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x0a, 0x40, 0x20, + 0x04, 0x15, 0x64, 0x83, 0x33, 0x80, 0xc7, 0xc9, 0x7f, 0x4b, 0xc3, 0xfe, + 0x37, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, + 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0xb2, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x43, 0x00, 0x60, 0xc4, 0x00, 0x64, 0x83, 0x23, 0x80, + 0xeb, 0x50, 0x60, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0xe3, 0x7c, 0x60, 0xb3, 0x03, 0x90, 0x87, 0x33, 0x80, 0x83, 0x53, 0x80, + 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, + 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, 0x83, 0x63, 0x80, 0x03, 0x10, 0x80, + 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0xb3, 0x03, 0x90, + 0x83, 0x33, 0x80, 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x67, 0x00, 0x60, + 0x83, 0x63, 0x80, 0x03, 0x20, 0x80, 0x83, 0x43, 0x90, 0xd9, 0xff, 0xff, + 0x40, 0x3c, 0x64, 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, 0x3c, 0x7c, 0xb3, + 0x26, 0x00, 0x60, 0x83, 0x43, 0x80, 0x18, 0x00, 0xba, 0x1a, 0x00, 0x60, + 0x87, 0x43, 0x80, 0x83, 0x33, 0x80, 0x33, 0x50, 0x60, 0xa3, 0x03, 0x90, + 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0x87, 0x23, 0x80, 0x83, 0x73, 0x80, 0x23, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x83, 0x43, 0x80, 0x57, 0xc2, 0x7f, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x72, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0x0f, 0xc1, 0x7f, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x52, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, 0x00, 0x00, 0x86, 0x3e, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x00, 0x92, + 0x2a, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x20, 0xe0, 0x0c, 0x00, 0x66, + 0x12, 0x00, 0x60, 0x83, 0x23, 0x80, 0xef, 0xc8, 0x7f, 0x0f, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x6f, 0xca, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x8c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x83, 0x43, 0x80, 0x9f, 0xc1, 0x7f, + 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x8e, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, + 0x57, 0xc0, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, + 0x5e, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, + 0x00, 0x00, 0x86, 0x4a, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x02, 0xb8, 0x00, 0x08, 0x00, 0x92, 0x36, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x07, 0x3c, 0xfe, + 0x83, 0x43, 0x80, 0x02, 0x20, 0xe0, 0x03, 0x38, 0xfe, 0x0a, 0x40, 0x20, + 0x83, 0x23, 0x80, 0x77, 0xc7, 0x7f, 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc4, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, + 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x83, 0x43, 0x80, + 0xcb, 0xc0, 0x7f, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, + 0x00, 0x00, 0x90, 0x72, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, + 0x03, 0x3c, 0xfe, 0x83, 0x7f, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0x86, 0x42, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x02, 0x04, 0x00, 0x00, 0x00, 0x86, 0x2e, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x00, 0x92, 0x1a, 0x00, 0x60, + 0x83, 0x23, 0x80, 0xff, 0xc8, 0x7f, 0x83, 0x23, 0x80, 0x6b, 0xc7, 0x7f, + 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, + 0x84, 0x00, 0x65, 0x83, 0x43, 0x80, 0x13, 0xc0, 0x7f, 0x06, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0xaa, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0xcb, 0x7e, 0x7f, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x7a, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, 0x00, 0x00, 0x86, + 0x66, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, + 0x08, 0x00, 0x92, 0x52, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, + 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x08, 0x00, 0x64, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0xf3, 0xc5, 0x7f, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, + 0x48, 0x00, 0x64, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0xcf, 0xc5, 0x7f, + 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc4, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0x3b, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0xe6, 0x64, 0x83, 0x23, 0x80, + 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, 0x16, 0x00, 0x60, 0x83, 0x53, 0x80, + 0x87, 0x23, 0x80, 0x23, 0x04, 0x90, 0x2f, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x3c, 0x1c, 0xae, + 0xc6, 0xbf, 0x7f, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x04, 0x64, + 0x0b, 0x04, 0xa0, 0x27, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xb3, 0x07, 0x90, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x44, 0x00, 0x64, + 0x0b, 0x84, 0xb4, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x02, 0x08, 0xe9, 0x00, 0x00, 0x66, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x04, 0x64, 0x0b, 0x04, 0xa0, 0x37, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x20, 0x80, 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x30, 0x80, 0x0a, 0x40, 0x20, 0x09, 0x00, 0x00, 0x04, 0xe6, 0x64, + 0x83, 0x23, 0x80, 0x00, 0x08, 0x2b, 0x43, 0x80, 0xf2, 0x03, 0x08, 0x90, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x43, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0xb3, 0x47, 0x90, 0x83, 0x8b, 0x90, 0x83, 0x73, 0x80, 0xa3, 0x03, 0x90, + 0x83, 0x63, 0x80, 0xb3, 0x03, 0x90, 0x83, 0x83, 0x80, 0x83, 0x43, 0x90, + 0x3b, 0x00, 0x60, 0x83, 0x23, 0x80, 0x06, 0x00, 0xe0, 0x83, 0x33, 0x80, + 0x03, 0x04, 0xb0, 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x44, 0x00, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x00, 0x92, + 0xc6, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, 0x47, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x83, 0x23, 0x80, 0x08, 0x01, 0x64, + 0x87, 0x33, 0x80, 0xf4, 0xf7, 0x63, 0x10, 0x00, 0x92, 0x0e, 0x00, 0x60, + 0x40, 0x00, 0x64, 0x0b, 0x00, 0x60, 0x00, 0x00, 0x64, 0x17, 0x04, 0xe0, + 0x43, 0x00, 0xe0, 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, 0x83, 0x83, 0x80, + 0x03, 0x20, 0x80, 0xa3, 0x03, 0x90, 0x83, 0x83, 0x80, 0x03, 0x30, 0x80, + 0x02, 0xfc, 0x07, 0xb3, 0x03, 0x90, 0x40, 0x00, 0x64, 0x83, 0x43, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x56, 0x01, 0x60, 0x83, 0x33, 0x80, + 0xa3, 0x43, 0x90, 0x87, 0x23, 0x80, 0x83, 0x63, 0x80, 0xc0, 0xfb, 0x63, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x00, 0x86, 0x32, 0x01, 0x60, + 0x83, 0x63, 0x80, 0x00, 0x80, 0xa7, 0x00, 0x80, 0xa2, 0xa3, 0x43, 0x90, + 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x63, 0x80, + 0x03, 0x00, 0x80, 0x93, 0x43, 0x90, 0x83, 0x83, 0x80, 0x03, 0x30, 0x80, + 0x02, 0xbc, 0x07, 0x44, 0x00, 0x64, 0x40, 0x80, 0x40, 0x06, 0x40, 0x20, + 0x83, 0x53, 0x80, 0x2c, 0x04, 0x3a, 0x2e, 0x00, 0x60, 0x83, 0x83, 0x80, + 0x03, 0x30, 0x80, 0x02, 0xbc, 0x07, 0x44, 0x00, 0x64, 0x40, 0x80, 0x40, + 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, 0x00, 0x04, 0x2b, 0x4c, 0x00, 0x3a, + 0xa6, 0x00, 0x60, 0x00, 0x00, 0x64, 0x83, 0x43, 0x90, 0x9b, 0x00, 0x60, + 0x83, 0x53, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0xae, 0x5e, 0x00, 0x60, + 0x05, 0x00, 0x00, 0x08, 0x00, 0x64, 0x87, 0x23, 0x80, 0x83, 0x33, 0x80, + 0xd8, 0xe7, 0x63, 0x05, 0x00, 0x00, 0x00, 0x00, 0x86, 0x03, 0x00, 0xfd, + 0x83, 0x43, 0x90, 0x83, 0x33, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, + 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x53, 0x80, 0xfd, 0xff, 0xff, 0x03, 0x00, 0x00, + 0x93, 0x43, 0x90, 0x33, 0x00, 0x60, 0x8b, 0x53, 0x80, 0x87, 0x23, 0x80, + 0x83, 0x33, 0x80, 0xc4, 0xe3, 0x63, 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, + 0x7c, 0x00, 0x48, 0x03, 0x00, 0xfd, 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, + 0x93, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, + 0x83, 0x53, 0x80, 0x00, 0x00, 0x92, 0x5a, 0xbf, 0x7f, 0x83, 0x43, 0x80, + 0x00, 0x00, 0x86, 0x8a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x07, 0x00, 0x80, 0x83, 0x93, 0x80, 0x23, 0x04, 0x90, 0x83, 0x83, 0x80, + 0x03, 0x30, 0x80, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x53, 0x00, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x03, 0x10, 0x80, 0x06, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x07, 0x84, 0xb4, 0x83, 0x23, 0x80, + 0x00, 0x00, 0x86, 0x26, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x03, 0x10, 0x80, 0x02, 0xfc, 0x07, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x53, 0x00, 0x90, 0x2b, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x04, 0x00, 0x64, 0x07, 0x84, 0xb4, 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, + 0x47, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x02, 0x08, 0xe9, 0x00, 0x00, 0x66, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x04, 0x64, + 0x0b, 0x04, 0xa0, 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x44, 0x00, 0x64, 0x0f, 0x84, 0xb4, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, 0x83, 0x63, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, + 0x2f, 0x00, 0x60, 0x83, 0x63, 0x80, 0x03, 0x20, 0x80, 0xb3, 0x03, 0x90, + 0x83, 0x63, 0x80, 0x03, 0x30, 0x80, 0x83, 0x43, 0x90, 0x8b, 0x43, 0x80, + 0x87, 0x33, 0x80, 0x83, 0x23, 0x80, 0x33, 0x6c, 0x60, 0x4b, 0xc3, 0xfe, + 0x37, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, + 0x83, 0x43, 0x80, 0x03, 0x20, 0x80, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0xc4, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x23, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, + 0x87, 0x23, 0x80, 0x47, 0x4d, 0x60, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, + 0x2b, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x23, 0x80, + 0x43, 0x80, 0xf2, 0x03, 0xa0, 0x01, 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, + 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, + 0x17, 0x04, 0xe0, 0x03, 0x00, 0xe0, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x44, 0x00, 0x64, 0x0b, 0x84, 0xb4, 0x04, 0x80, 0x64, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x3b, 0x78, 0x7f, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x29, 0x0c, 0x00, 0x84, 0x54, 0x64, 0x03, 0x04, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0x04, 0x6e, 0x64, 0x13, 0x04, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0x04, 0x80, 0x64, + 0x23, 0x04, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, + 0x84, 0x93, 0x64, 0x33, 0x04, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x29, 0x0c, 0x00, 0x04, 0xa7, 0x64, 0x03, 0x44, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0xc4, 0xb9, 0x64, 0x13, 0x44, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0x84, 0x5d, 0x64, + 0x23, 0x44, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, + 0x84, 0xbd, 0x64, 0x33, 0x44, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x2d, 0x0c, 0x00, 0x04, 0x07, 0x64, 0x03, 0x84, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x2d, 0x0c, 0x00, 0x84, 0x5c, 0x64, 0x13, 0x84, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x2d, 0x0c, 0x00, 0x04, 0xb2, 0x64, + 0x23, 0x84, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, + 0xc4, 0xbd, 0x64, 0x33, 0x84, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x31, 0x0c, 0x00, 0x84, 0x85, 0x64, 0x03, 0xc4, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, 0xc4, 0xcf, 0x64, 0x13, 0xc4, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, 0x44, 0xa1, 0x64, + 0x23, 0xc4, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, + 0x04, 0x1b, 0x64, 0x33, 0xc4, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x31, 0x0c, 0x00, 0x84, 0x37, 0x64, 0x03, 0x04, 0x91, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0x84, 0x5d, 0x64, 0x13, 0x04, 0x91, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, 0x84, 0xe2, 0x64, + 0x23, 0x04, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, + 0xc4, 0x8c, 0x64, 0x33, 0x04, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x31, 0x0c, 0x00, 0x04, 0x54, 0x64, 0x03, 0x44, 0x91, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, 0x44, 0xa6, 0x64, 0x13, 0x44, 0x91, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, 0x84, 0xc6, 0x64, + 0x23, 0x44, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, + 0x04, 0xe9, 0x64, 0x33, 0x44, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x39, 0x0c, 0x00, 0xc4, 0x10, 0x64, 0x03, 0x84, 0x91, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x39, 0x0c, 0x00, 0x44, 0x33, 0x64, 0x13, 0x84, 0x91, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0x84, 0x5d, 0x64, + 0x23, 0x84, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, + 0x84, 0x5d, 0x64, 0x33, 0x84, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x29, 0x0c, 0x00, 0x44, 0x64, 0x64, 0x03, 0xc4, 0x91, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x39, 0x0c, 0x00, 0x44, 0x7b, 0x64, 0x13, 0xc4, 0x91, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x39, 0x0c, 0x00, 0x44, 0x60, 0x64, + 0x23, 0xc4, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x39, 0x0c, 0x00, + 0x84, 0x74, 0x64, 0x33, 0xc4, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x39, 0x0c, 0x00, 0x04, 0xaf, 0x64, 0x03, 0x04, 0x92, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x3d, 0x0c, 0x00, 0xc4, 0x18, 0x64, 0x13, 0x04, 0x92, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x3d, 0x0c, 0x00, 0x04, 0x27, 0x64, + 0x23, 0x04, 0x92, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x3d, 0x0c, 0x00, + 0xc4, 0x3c, 0x64, 0x33, 0x04, 0x92, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x3d, 0x0c, 0x00, 0x04, 0x4e, 0x64, 0x13, 0x44, 0x92, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, 0xc4, 0xfc, 0x64, 0x23, 0x44, 0x92, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, 0x04, 0x23, 0x64, + 0x33, 0x44, 0x92, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, + 0x04, 0x77, 0x64, 0x03, 0x84, 0x92, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x04, 0x00, 0x64, 0x0b, 0x84, 0xb4, 0x4b, 0xc3, 0xfe, 0x07, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x04, 0x00, 0x64, 0x83, 0x43, 0x80, + 0xd8, 0xbf, 0x62, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x41, 0xff, 0xff, + 0xc4, 0x6f, 0x64, 0x00, 0x44, 0x24, 0xa9, 0x71, 0x02, 0x03, 0x00, 0x1f, + 0x04, 0x19, 0x64, 0xcf, 0x6f, 0x60, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x00, 0x00, 0xba, 0x22, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, + 0x0e, 0x00, 0x60, 0x00, 0x00, 0x64, 0x5f, 0x00, 0x60, 0x05, 0x00, 0x00, + 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x22, 0x00, 0x60, + 0x84, 0x01, 0x64, 0x00, 0x00, 0x64, 0x9b, 0xc0, 0x7f, 0xa3, 0x03, 0xa0, + 0x82, 0x23, 0xc0, 0x00, 0x20, 0x28, 0x2f, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, + 0x04, 0x12, 0x64, 0x5f, 0x7b, 0x7f, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x02, 0xbc, 0x1f, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0xa0, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, + 0x00, 0x00, 0x86, 0xb2, 0x00, 0x60, 0x84, 0x01, 0x64, 0x00, 0x00, 0x64, + 0x33, 0xc0, 0x7f, 0xa3, 0x03, 0xa0, 0x82, 0x23, 0xc0, 0x02, 0xbc, 0x07, + 0xa3, 0x03, 0xa0, 0x82, 0x93, 0xc0, 0x00, 0x20, 0x2b, 0x06, 0x40, 0x20, + 0x82, 0x23, 0xc0, 0x43, 0x40, 0xfb, 0xa3, 0x03, 0xa0, 0x8a, 0x23, 0xc0, + 0x84, 0x01, 0x64, 0x00, 0x00, 0x64, 0xfb, 0xc0, 0x7f, 0x04, 0x00, 0x64, + 0x00, 0x00, 0x64, 0xef, 0x7f, 0x7f, 0xa3, 0x03, 0xa0, 0x82, 0x23, 0xc0, + 0x02, 0x48, 0x00, 0xa3, 0x03, 0xa0, 0x8a, 0x23, 0xc0, 0x04, 0x00, 0x64, + 0x00, 0x00, 0x64, 0xcf, 0xc0, 0x7f, 0x82, 0x23, 0xc0, 0x02, 0x48, 0x20, + 0xa3, 0x03, 0xa0, 0x8a, 0x23, 0xc0, 0x04, 0x00, 0x64, 0x00, 0x00, 0x64, + 0xb3, 0xc0, 0x7f, 0x82, 0x23, 0xc0, 0x02, 0x48, 0x00, 0xa3, 0x03, 0xa0, + 0x8a, 0x23, 0xc0, 0x04, 0x00, 0x64, 0x00, 0x00, 0x64, 0x97, 0xc0, 0x7f, + 0x6f, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x04, 0x12, 0x64, 0x67, 0x7a, 0x7f, + 0xb3, 0x03, 0x90, 0x82, 0x93, 0xc0, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, + 0x02, 0xbc, 0x1f, 0x87, 0x33, 0x80, 0xfd, 0xff, 0xff, 0x46, 0x00, 0x00, + 0x43, 0x40, 0xfb, 0xb3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x87, 0x33, 0x80, + 0x4a, 0x40, 0x20, 0x04, 0x12, 0x64, 0x67, 0x7a, 0x7f, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x43, 0x00, 0xe0, 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, + 0x83, 0x83, 0x80, 0xe0, 0xe3, 0x63, 0xa3, 0x43, 0xa0, 0x83, 0x83, 0x80, + 0x00, 0x00, 0xba, 0x22, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x83, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, + 0x0e, 0x00, 0x60, 0x83, 0x93, 0x80, 0x8f, 0x01, 0x60, 0x05, 0x00, 0x00, + 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, + 0x00, 0x40, 0x64, 0x0b, 0x00, 0x60, 0x40, 0xf3, 0x64, 0x87, 0x93, 0x80, + 0x5c, 0x00, 0x3a, 0x2e, 0x00, 0x60, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x00, 0x40, 0x64, + 0x0b, 0x00, 0x60, 0x40, 0xf3, 0x64, 0x93, 0x83, 0x90, 0x57, 0x00, 0x60, + 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, + 0x0e, 0x00, 0x60, 0x00, 0x20, 0x64, 0x0b, 0x00, 0x60, 0x80, 0x0c, 0x64, + 0x87, 0x93, 0x80, 0x1c, 0x04, 0x3a, 0x2a, 0x00, 0x60, 0x05, 0x00, 0x00, + 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, + 0x00, 0x20, 0x64, 0x0b, 0x00, 0x60, 0x80, 0x0c, 0x64, 0x93, 0x83, 0x90, + 0x83, 0x93, 0x80, 0x83, 0x43, 0x90, 0x80, 0x68, 0x64, 0xa3, 0x03, 0x90, + 0x37, 0xce, 0x7f, 0x86, 0xa3, 0xc0, 0x83, 0x93, 0x80, 0x1c, 0x04, 0x3a, + 0x12, 0x00, 0x60, 0xc0, 0x00, 0x64, 0xb3, 0x43, 0x90, 0x4f, 0x00, 0x60, + 0xc0, 0x00, 0x65, 0xb3, 0x43, 0x90, 0x43, 0x00, 0x60, 0x83, 0x73, 0x80, + 0x06, 0x40, 0x20, 0x82, 0xa3, 0xc0, 0x03, 0x84, 0xf2, 0xa3, 0x43, 0xa0, + 0x82, 0xa3, 0xc0, 0x83, 0x43, 0x90, 0xc0, 0x6a, 0x64, 0xa3, 0x03, 0x90, + 0xe7, 0xcd, 0x7f, 0x86, 0xa3, 0xc0, 0x83, 0x83, 0x80, 0xec, 0xd7, 0x63, + 0x40, 0x01, 0x64, 0x6b, 0x71, 0x7f, 0x82, 0xa3, 0xc0, 0x87, 0x93, 0x80, + 0x47, 0xc0, 0xf2, 0x40, 0x7c, 0x27, 0x07, 0xc4, 0xfa, 0x47, 0xc0, 0xf2, + 0x83, 0x73, 0x80, 0x08, 0x7c, 0x27, 0x83, 0x73, 0x80, 0x83, 0xc0, 0xfa, + 0x03, 0xc8, 0xf2, 0x1c, 0x04, 0x3a, 0x96, 0xbf, 0x7f, 0x86, 0xa3, 0xc0, + 0x83, 0x93, 0x80, 0x7c, 0x00, 0x48, 0x2a, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x83, 0x43, 0x90, 0xc0, 0x6a, 0x64, 0xa3, 0x03, 0x90, 0x7b, 0xcd, 0x7f, + 0x83, 0x93, 0x80, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0xfc, 0xcf, 0x63, + 0x83, 0x93, 0x80, 0x47, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x00, 0x00, 0xba, 0x22, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, 0x1e, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x00, 0x00, 0x64, + 0x7b, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0xa3, 0x03, 0x90, 0x83, 0x53, 0x80, + 0x00, 0x08, 0x2b, 0x03, 0x00, 0x03, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0xc3, 0x77, 0x7f, 0xb3, 0x03, 0x90, 0x23, 0x00, 0x60, 0x83, 0x53, 0x80, + 0x00, 0x08, 0x2b, 0x03, 0x00, 0x03, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0xa3, 0x77, 0x7f, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x01, 0x04, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0xd6, 0xbf, 0x7f, 0x83, 0x33, 0x80, + 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, + 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, 0xf0, 0xeb, 0x62, 0x03, 0x3c, 0xfe, + 0xb3, 0x03, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x00, 0x80, + 0x83, 0x63, 0x80, 0x00, 0x04, 0x2b, 0x40, 0x80, 0x3e, 0x02, 0x0c, 0x00, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, + 0x02, 0x08, 0x00, 0x93, 0x43, 0x90, 0x83, 0x33, 0x80, 0x01, 0x00, 0x00, + 0x20, 0x3c, 0xbb, 0x22, 0x00, 0x60, 0x83, 0x53, 0x80, 0x00, 0x00, 0x92, + 0x16, 0x00, 0x60, 0x83, 0x23, 0x80, 0x02, 0x48, 0x20, 0xa3, 0x03, 0x90, + 0x2f, 0x00, 0x60, 0x83, 0x33, 0x80, 0x01, 0x00, 0x00, 0x04, 0x40, 0xb3, + 0x1e, 0x00, 0x60, 0x83, 0x53, 0x80, 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x02, 0x48, 0x00, 0xa3, 0x03, 0x90, 0x87, 0x23, 0x80, + 0x83, 0x43, 0x80, 0x7c, 0x00, 0x48, 0x62, 0x00, 0x60, 0x01, 0x12, 0x00, + 0x08, 0x00, 0x64, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x80, + 0x87, 0x63, 0x80, 0x44, 0x04, 0x2b, 0xcc, 0x00, 0x64, 0xc4, 0x84, 0x40, + 0x47, 0x50, 0xfe, 0x03, 0xc4, 0xfb, 0x83, 0x00, 0x90, 0x01, 0x12, 0x00, + 0x0c, 0x00, 0x64, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x80, + 0x87, 0x63, 0x80, 0x44, 0x04, 0x2b, 0x8b, 0x23, 0x80, 0x84, 0x84, 0x40, + 0x03, 0x44, 0xfb, 0xc3, 0x00, 0x90, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, + 0x93, 0x00, 0xe0, 0xa3, 0x03, 0x91, 0xb3, 0x07, 0x91, 0x83, 0x23, 0x81, + 0xf4, 0xa7, 0x63, 0x03, 0x3c, 0xfe, 0xb3, 0xc3, 0x90, 0x83, 0xf3, 0x80, + 0xa3, 0xc3, 0x90, 0x83, 0x23, 0x81, 0xc0, 0xdb, 0x62, 0x03, 0x3c, 0xfe, + 0x83, 0x03, 0x91, 0x83, 0x23, 0x81, 0xc8, 0xa3, 0x63, 0x93, 0x03, 0x91, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0xb8, 0xc1, 0x07, 0x44, 0xfe, + 0x83, 0x03, 0x81, 0x0c, 0x04, 0x3a, 0x36, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x00, 0xc2, 0x07, 0x44, 0xfe, 0x83, 0x03, 0x81, + 0x4c, 0x00, 0x3a, 0x1a, 0x00, 0x60, 0x83, 0x33, 0x81, 0x87, 0xf3, 0x80, + 0x43, 0x80, 0xf2, 0xa3, 0xc3, 0x90, 0x5b, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0xb8, 0xc1, 0x07, 0x44, 0xfe, 0x83, 0x03, 0x81, + 0x4c, 0x00, 0x3a, 0x16, 0x00, 0x60, 0x83, 0xf3, 0x80, 0x03, 0x08, 0x00, + 0xa3, 0xc3, 0x90, 0x2f, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x00, 0xc2, 0x07, 0x44, 0xfe, 0x83, 0x03, 0x81, 0x0c, 0x04, 0x3a, + 0x12, 0x00, 0x60, 0x83, 0xf3, 0x80, 0x03, 0x48, 0x00, 0xa3, 0xc3, 0x90, + 0x83, 0x03, 0x81, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x4f, 0x69, 0x60, 0x06, 0x40, 0x20, + 0x83, 0xe3, 0x80, 0x83, 0xc3, 0x90, 0x83, 0x33, 0x81, 0xa3, 0x83, 0x90, + 0x83, 0x13, 0x81, 0x83, 0x83, 0x90, 0xa3, 0x47, 0x90, 0x83, 0xf3, 0x80, + 0x83, 0x43, 0x90, 0xc0, 0x6f, 0x64, 0xa3, 0x03, 0x90, 0x5b, 0xca, 0x7f, + 0x87, 0xe3, 0x80, 0x83, 0xf3, 0x80, 0x7c, 0x00, 0x48, 0x1e, 0x00, 0x60, + 0x83, 0xe3, 0x80, 0x06, 0x40, 0x20, 0x83, 0x23, 0x81, 0xc8, 0xb3, 0x63, + 0x80, 0x07, 0x64, 0xcb, 0x6d, 0x7f, 0x4b, 0xc3, 0xfe, 0x97, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x00, 0xb2, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0xcb, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0x0b, 0x75, 0x7f, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x00, 0xe0, 0x0a, 0x40, 0x20, 0x44, 0x00, 0x64, 0x83, 0x43, 0x80, + 0x40, 0x80, 0x40, 0x83, 0x40, 0xfb, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x03, 0x04, 0xb0, 0x80, 0x7c, 0x64, 0xa3, 0x03, 0x90, + 0xa7, 0xc9, 0x7f, 0x83, 0x43, 0x80, 0x00, 0x00, 0xba, 0x26, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x43, 0x80, 0x43, 0x80, 0xf2, + 0x03, 0xa0, 0x01, 0x06, 0x00, 0xe0, 0x46, 0x40, 0x22, 0x03, 0x04, 0xb0, + 0x11, 0x10, 0x00, 0x04, 0x0a, 0x64, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x00, 0xe0, 0x08, 0x00, 0x66, 0x03, 0x00, 0xfd, 0x02, 0x04, 0x00, + 0x0c, 0x1c, 0x2b, 0x42, 0x00, 0xe0, 0x02, 0xbc, 0x03, 0x0a, 0x40, 0x20, + 0xc2, 0x40, 0x20, 0x83, 0x40, 0xfb, 0x43, 0x00, 0xb0, 0x27, 0x04, 0xe0, + 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x83, 0x63, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, + 0xa3, 0x03, 0x90, 0x83, 0x73, 0x80, 0x3c, 0x04, 0xba, 0x36, 0x00, 0x60, + 0x08, 0x00, 0x64, 0x04, 0x23, 0x64, 0x83, 0x23, 0x80, 0x23, 0x74, 0x7f, + 0x44, 0x00, 0x64, 0x83, 0x73, 0x80, 0x40, 0x80, 0x40, 0x0a, 0x40, 0x20, + 0x04, 0x21, 0x64, 0x83, 0x23, 0x80, 0x07, 0x74, 0x7f, 0x3b, 0x00, 0x60, + 0x08, 0x00, 0x64, 0x04, 0x24, 0x64, 0x83, 0x23, 0x80, 0xf3, 0x73, 0x7f, + 0xc4, 0x08, 0x64, 0x83, 0x73, 0x80, 0x43, 0xc0, 0xf2, 0x44, 0x00, 0x64, + 0x40, 0x80, 0x40, 0x0a, 0x40, 0x20, 0x04, 0x22, 0x64, 0x83, 0x23, 0x80, + 0xcf, 0x73, 0x7f, 0x83, 0x73, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x20, 0x64, + 0x83, 0x23, 0x80, 0xbb, 0x73, 0x7f, 0x01, 0x00, 0xf4, 0x08, 0x00, 0x64, + 0x04, 0x28, 0x64, 0x83, 0x23, 0x80, 0xa7, 0x73, 0x7f, 0x04, 0x28, 0x64, + 0x83, 0x23, 0x80, 0x4f, 0x73, 0x7f, 0x83, 0x43, 0x90, 0x17, 0x00, 0x60, + 0x04, 0x28, 0x64, 0x83, 0x23, 0x80, 0x3b, 0x73, 0x7f, 0x83, 0x43, 0x90, + 0x83, 0x43, 0x80, 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, + 0xe2, 0xbf, 0x7f, 0x82, 0x83, 0xc0, 0x03, 0x3c, 0xfe, 0xb3, 0x03, 0x90, + 0x83, 0x73, 0x80, 0x3c, 0x04, 0xba, 0x1a, 0x00, 0x60, 0x08, 0x00, 0x64, + 0x04, 0x21, 0x64, 0x83, 0x23, 0x80, 0x47, 0x73, 0x7f, 0x17, 0x00, 0x60, + 0x08, 0x00, 0x64, 0x04, 0x22, 0x64, 0x83, 0x23, 0x80, 0x33, 0x73, 0x7f, + 0x83, 0x33, 0x80, 0x37, 0x04, 0xe0, 0x43, 0x10, 0xe6, 0x83, 0x83, 0x90, + 0x93, 0x87, 0x90, 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x00, 0x00, 0x64, + 0x83, 0x43, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x83, 0x83, 0x80, 0x00, 0x00, 0xba, 0x22, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x83, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0xbb, 0x01, 0x60, + 0x00, 0x00, 0x64, 0x83, 0x43, 0x90, 0x37, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x00, 0x08, 0x2b, 0x87, 0x93, 0x80, 0x5b, 0x80, 0xf2, 0x83, 0x43, 0x80, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0xd0, 0xa3, 0x63, 0x83, 0x01, 0x90, + 0x83, 0x43, 0x80, 0x03, 0x04, 0x00, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x18, 0x00, 0xae, 0xca, 0xbf, 0x7f, 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, + 0x3f, 0x00, 0x60, 0x83, 0x43, 0x80, 0x07, 0x04, 0x00, 0x83, 0x47, 0x90, + 0x00, 0x08, 0x2b, 0x87, 0x93, 0x80, 0x5b, 0x80, 0xf2, 0x83, 0x33, 0x80, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0xe8, 0xdf, 0x63, 0x83, 0x01, 0x90, + 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x0c, 0x08, 0xae, 0xc2, 0xbf, 0x7f, 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x03, 0xb0, 0x80, 0xa3, 0x03, 0x90, + 0xbf, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, + 0x08, 0x04, 0x92, 0x92, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x02, 0x04, 0x00, 0x00, 0x00, 0x86, 0x7e, 0x00, 0x60, 0x00, 0x00, 0x64, + 0x93, 0x43, 0x90, 0x67, 0x00, 0x60, 0x83, 0x53, 0x80, 0x00, 0x00, 0x92, + 0x0e, 0x00, 0x60, 0x00, 0x00, 0x64, 0x0b, 0x00, 0x60, 0x00, 0x04, 0x64, + 0xa3, 0x43, 0x90, 0x83, 0x43, 0x80, 0x07, 0x04, 0x00, 0x83, 0x47, 0x90, + 0x00, 0x08, 0x2b, 0x87, 0x93, 0x80, 0x5b, 0x80, 0xf2, 0x04, 0x0b, 0x64, + 0x83, 0x23, 0x80, 0x4f, 0x71, 0x7f, 0x06, 0x40, 0x20, 0x83, 0x63, 0x80, + 0x40, 0x80, 0x3e, 0x03, 0x3c, 0xfe, 0x83, 0x01, 0x90, 0x83, 0x53, 0x80, + 0x03, 0x04, 0x00, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0x04, 0x00, 0xb2, + 0x9a, 0xbf, 0x7f, 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x00, 0x10, 0xb6, 0x22, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x3d, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, + 0x26, 0xbf, 0x7f, 0x83, 0x43, 0x80, 0x07, 0x04, 0x00, 0x83, 0x47, 0x90, + 0x00, 0x08, 0x2b, 0x87, 0x93, 0x80, 0x43, 0x80, 0xf2, 0x84, 0x00, 0x65, + 0x03, 0x04, 0x90, 0x47, 0x14, 0xe6, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xc4, 0x00, 0x64, 0x83, 0x23, 0x80, 0xf0, 0x87, 0x63, 0x17, 0x04, 0xe0, + 0x53, 0x00, 0xe0, 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x03, 0x00, 0x80, + 0x3c, 0x7c, 0xbb, 0x8e, 0x02, 0x40, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0x73, 0x02, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x00, 0xe0, + 0x07, 0x38, 0xfe, 0x83, 0x23, 0x80, 0x40, 0x80, 0x3f, 0x02, 0x04, 0x00, + 0x00, 0x00, 0x92, 0x3a, 0x02, 0x60, 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, + 0xb3, 0x03, 0x90, 0x00, 0x00, 0x64, 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, + 0x93, 0x43, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x43, 0x90, 0xbf, 0x01, 0x60, + 0x83, 0x33, 0x80, 0x03, 0x00, 0x80, 0x00, 0x14, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x83, 0x23, 0x80, 0x6c, 0x00, 0x48, 0x92, 0x01, 0x60, + 0x83, 0x33, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x04, 0x92, + 0x7e, 0x01, 0x60, 0x04, 0x08, 0x64, 0x83, 0x33, 0x80, 0xf7, 0x6f, 0x7f, + 0xb3, 0x43, 0x90, 0x83, 0x73, 0x80, 0x41, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x66, 0x01, 0x60, 0x83, 0x73, 0x80, 0x11, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x92, 0x0a, 0x00, 0x60, 0x4f, 0x01, 0x60, + 0x83, 0x63, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x43, 0x90, 0x83, 0x73, 0x80, + 0x21, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, + 0x83, 0x73, 0x80, 0x81, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, + 0x0e, 0x01, 0x60, 0x04, 0x0b, 0x64, 0x83, 0x33, 0x80, 0x87, 0x6f, 0x7f, + 0x83, 0x83, 0x90, 0x04, 0x0a, 0x64, 0x83, 0x33, 0x80, 0x77, 0x6f, 0x7f, + 0x93, 0x83, 0x90, 0x04, 0x09, 0x64, 0x83, 0x33, 0x80, 0x67, 0x6f, 0x7f, + 0xa3, 0x83, 0x90, 0x86, 0x03, 0xc1, 0x82, 0x13, 0xc1, 0x44, 0x00, 0x3a, + 0x16, 0x00, 0x60, 0x86, 0x0b, 0xc1, 0x82, 0x23, 0xc1, 0x64, 0x00, 0x3a, + 0x12, 0x00, 0x60, 0x40, 0x00, 0x64, 0x93, 0x43, 0x90, 0xdb, 0x00, 0x60, + 0x86, 0x03, 0xc1, 0x82, 0x1b, 0xc1, 0x24, 0x04, 0x3a, 0x22, 0x00, 0x60, + 0x86, 0x0b, 0xc1, 0x82, 0x2b, 0xc1, 0x24, 0x04, 0x3a, 0x12, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x04, 0x00, 0x83, 0x43, 0x90, 0x83, 0x73, 0x80, + 0x81, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, + 0x83, 0x73, 0x80, 0x02, 0x40, 0x01, 0xb3, 0x43, 0x90, 0x83, 0x73, 0x80, + 0x21, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, + 0x83, 0x73, 0x80, 0x02, 0xc0, 0x00, 0xb3, 0x43, 0x90, 0x83, 0x73, 0x80, + 0x0a, 0x40, 0x20, 0x04, 0x08, 0x64, 0x83, 0x33, 0x80, 0x03, 0x6f, 0x7f, + 0x83, 0x73, 0x80, 0x02, 0xc0, 0x20, 0xb3, 0x43, 0x90, 0x83, 0x73, 0x80, + 0x02, 0x40, 0x21, 0xb3, 0x43, 0x90, 0x83, 0x73, 0x80, 0x0a, 0x40, 0x20, + 0x04, 0x08, 0x64, 0x83, 0x33, 0x80, 0xd7, 0x6e, 0x7f, 0x83, 0x33, 0x80, + 0x03, 0x10, 0x00, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x03, 0x00, 0x80, + 0x3d, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, + 0x32, 0xbe, 0x7f, 0x83, 0x53, 0x80, 0x00, 0x00, 0x86, 0x16, 0x00, 0x60, + 0x84, 0x00, 0x64, 0x83, 0x23, 0x80, 0xeb, 0xf7, 0x7f, 0x23, 0x00, 0x60, + 0x87, 0x43, 0x80, 0x83, 0x63, 0x80, 0x6c, 0x00, 0x48, 0x12, 0x00, 0x60, + 0x44, 0x00, 0x65, 0x83, 0x23, 0x80, 0xcb, 0xf7, 0x7f, 0x83, 0x23, 0x80, + 0xaf, 0xf6, 0x7f, 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0xb2, 0x8e, 0xbd, 0x7f, 0x0b, 0x00, 0x60, + 0x4b, 0xc3, 0xfe, 0x57, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x23, 0x80, 0x03, 0xb0, 0x00, + 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0xc4, 0x12, 0x64, 0x0b, 0x04, 0xa0, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x23, 0x80, 0x03, 0xb0, 0x00, + 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x84, 0x0c, 0x64, 0x13, 0x04, 0xa0, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x63, 0x10, 0xe6, 0x83, 0xc3, 0x90, + 0x01, 0xcc, 0x00, 0x00, 0x00, 0x64, 0x07, 0x6a, 0x7f, 0x83, 0xc3, 0x80, + 0xb7, 0xf1, 0x7f, 0x03, 0x3c, 0xfe, 0x83, 0x83, 0x90, 0x83, 0x83, 0x80, + 0x0a, 0x40, 0x20, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0xc3, 0x80, + 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x13, 0x08, 0xa0, 0x83, 0x83, 0x80, + 0xcf, 0x69, 0x7f, 0x83, 0x83, 0x80, 0x00, 0x00, 0x92, 0xfe, 0x01, 0x40, + 0x83, 0x83, 0x80, 0x0d, 0x00, 0x00, 0x44, 0x0d, 0x64, 0x00, 0x44, 0x24, + 0xdd, 0x06, 0x00, 0x03, 0x80, 0x0e, 0x04, 0xfa, 0x64, 0x17, 0x61, 0x60, + 0x93, 0x83, 0x90, 0x01, 0xcc, 0x00, 0x40, 0x00, 0x64, 0x93, 0x69, 0x7f, + 0x83, 0x93, 0x80, 0x8b, 0x69, 0x7f, 0x83, 0xc3, 0x80, 0xdc, 0xc7, 0x63, + 0x03, 0x3c, 0xfe, 0xa3, 0x83, 0x90, 0x01, 0xcc, 0x00, 0x80, 0x00, 0x64, + 0x6f, 0x69, 0x7f, 0x83, 0xa3, 0x80, 0x67, 0x69, 0x7f, 0x83, 0xa3, 0x80, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0xbf, 0x60, 0x60, 0x06, 0x40, 0x20, 0x83, 0x93, 0x80, + 0xa3, 0x43, 0x90, 0x83, 0x47, 0x90, 0x00, 0x80, 0x64, 0xa3, 0x03, 0x90, + 0xe7, 0xc1, 0x7f, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, + 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x00, 0x04, 0x64, 0x0b, 0x00, 0x60, + 0x00, 0x10, 0x64, 0x87, 0x83, 0x80, 0x43, 0xc0, 0xf2, 0x06, 0x40, 0x20, + 0x83, 0xc3, 0x80, 0x83, 0xf2, 0x7f, 0x80, 0x07, 0x64, 0x43, 0x65, 0x7f, + 0x83, 0xc3, 0x80, 0xc4, 0xbf, 0x63, 0x03, 0x3c, 0xfe, 0xb3, 0x83, 0x90, + 0x01, 0xcc, 0x00, 0xc0, 0x00, 0x64, 0xd7, 0x68, 0x7f, 0x83, 0xb3, 0x80, + 0xcf, 0x68, 0x7f, 0x83, 0xb3, 0x80, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x27, 0x60, 0x60, + 0x83, 0x43, 0x90, 0x80, 0x88, 0x64, 0xa3, 0x03, 0x90, 0x5b, 0xc1, 0x7f, + 0x01, 0xcc, 0x00, 0x00, 0x01, 0x64, 0x97, 0x68, 0x7f, 0x87, 0xa3, 0x80, + 0x83, 0xb3, 0x80, 0x43, 0xc0, 0xf2, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xe7, 0x5f, 0x60, + 0x6f, 0x68, 0x7f, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, + 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x18, 0x04, 0x64, 0x0b, 0x00, 0x60, + 0x18, 0x10, 0x64, 0x87, 0xa3, 0x80, 0x83, 0xb3, 0x80, 0x43, 0xc0, 0xf2, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x9f, 0x5f, 0x60, 0xa3, 0x43, 0x90, 0x83, 0x5b, 0x90, + 0x80, 0x8d, 0x64, 0xa3, 0x03, 0x90, 0xcf, 0xc0, 0x7f, 0x87, 0xa3, 0x80, + 0x83, 0xb3, 0x80, 0x43, 0xc0, 0xf2, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x00, 0x44, 0x24, 0x15, 0x01, 0x00, 0x3c, 0x7c, 0xb3, 0x32, 0x00, 0x60, + 0x87, 0x83, 0x80, 0x83, 0xc3, 0x80, 0x6f, 0xf1, 0x7f, 0x80, 0x07, 0x64, + 0x2f, 0x64, 0x7f, 0x01, 0xcc, 0x00, 0x40, 0x01, 0x64, 0xd3, 0x67, 0x7f, + 0x40, 0x00, 0x64, 0x23, 0x00, 0x60, 0x4b, 0xc3, 0xfe, 0x01, 0xcc, 0x00, + 0xc0, 0x3f, 0x64, 0xbb, 0x67, 0x7f, 0x80, 0x07, 0x64, 0x03, 0x64, 0x7f, + 0x00, 0x00, 0x64, 0x67, 0x14, 0xe6, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x63, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x11, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0x5f, 0x6b, 0x7f, 0x80, 0x07, 0x64, 0xc7, 0x63, 0x7f, 0x04, 0x00, 0x64, + 0x83, 0x63, 0x80, 0xc7, 0xf2, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x5f, 0x67, 0x7f, 0x83, 0x23, 0x80, 0x04, 0xdc, 0x64, 0x00, 0x44, 0x24, + 0x07, 0xbc, 0x1f, 0x3c, 0x7c, 0xb3, 0x43, 0x80, 0xf9, 0x00, 0x28, 0x27, + 0xb3, 0x03, 0x90, 0x05, 0x00, 0x00, 0x44, 0x64, 0x64, 0x83, 0x33, 0x80, + 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, 0x05, 0x00, 0x00, + 0x84, 0x2a, 0x64, 0x8f, 0x5e, 0x60, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x0a, 0x40, 0x20, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x63, 0x80, + 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x13, 0x08, 0xa0, 0x83, 0x23, 0x80, + 0x18, 0x6c, 0xb2, 0x7e, 0x01, 0x60, 0x83, 0x23, 0x80, 0x01, 0x00, 0x00, + 0x28, 0x54, 0xbb, 0x6e, 0x01, 0x60, 0x87, 0x23, 0x80, 0x83, 0x63, 0x80, + 0x57, 0xf0, 0x7f, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x63, 0x80, + 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x05, 0x00, 0x00, 0x48, 0x00, 0x64, + 0x04, 0x10, 0x64, 0x8b, 0x6a, 0x7f, 0x80, 0x07, 0x64, 0xf3, 0x62, 0x7f, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x63, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x0d, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, + 0x5f, 0x6a, 0x7f, 0x80, 0x07, 0x64, 0xc7, 0x62, 0x7f, 0x83, 0x63, 0x80, + 0xc8, 0x97, 0x63, 0x03, 0x3c, 0xfe, 0xb3, 0x03, 0x90, 0x01, 0x0c, 0x00, + 0x00, 0x00, 0x64, 0x5b, 0x66, 0x7f, 0x83, 0x33, 0x80, 0x53, 0x66, 0x7f, + 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, + 0x0e, 0x00, 0x60, 0x00, 0x04, 0x64, 0x0b, 0x00, 0x60, 0x00, 0x10, 0x64, + 0x87, 0x23, 0x80, 0x43, 0xc0, 0xf2, 0x06, 0x40, 0x20, 0x83, 0x63, 0x80, + 0xa7, 0xef, 0x7f, 0x80, 0x07, 0x64, 0x67, 0x62, 0x7f, 0x83, 0x63, 0x80, + 0xe8, 0x8f, 0x63, 0x03, 0x3c, 0xfe, 0x83, 0x43, 0x90, 0x01, 0x0c, 0x00, + 0x40, 0x00, 0x64, 0xfb, 0x65, 0x7f, 0x83, 0x43, 0x80, 0xf3, 0x65, 0x7f, + 0x01, 0x0c, 0x00, 0x80, 0x00, 0x64, 0xe7, 0x65, 0x7f, 0x87, 0x33, 0x80, + 0x83, 0x43, 0x80, 0x43, 0xc0, 0xf2, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x37, 0x5d, 0x60, + 0xbf, 0x65, 0x7f, 0x87, 0x33, 0x80, 0x83, 0x43, 0x80, 0x43, 0xc0, 0xf2, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x15, 0x01, 0x00, + 0x3c, 0x7c, 0xb3, 0x2e, 0x00, 0x60, 0x87, 0x23, 0x80, 0x83, 0x63, 0x80, + 0x17, 0xef, 0x7f, 0x80, 0x07, 0x64, 0xd7, 0x61, 0x7f, 0x01, 0x0c, 0x00, + 0xc0, 0x00, 0x64, 0x7b, 0x65, 0x7f, 0x40, 0x00, 0x64, 0x27, 0x00, 0x60, + 0x01, 0x0c, 0x00, 0x00, 0x01, 0x64, 0x67, 0x65, 0x7f, 0x83, 0x63, 0x80, + 0xf3, 0xf3, 0x7f, 0x80, 0x07, 0x64, 0xa7, 0x61, 0x7f, 0x00, 0x00, 0x64, + 0x37, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x83, 0x23, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, + 0x00, 0x00, 0x92, 0x0e, 0x00, 0x60, 0x00, 0x00, 0x64, 0x57, 0x00, 0x60, + 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, + 0x1e, 0x00, 0x60, 0x83, 0x23, 0x80, 0xf0, 0xaf, 0x63, 0x06, 0x40, 0x20, + 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x04, 0x90, 0x05, 0x00, 0x00, + 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x92, 0x12, 0x00, 0x60, + 0x83, 0x23, 0x80, 0xf4, 0xd3, 0x63, 0x0b, 0x00, 0x60, 0x40, 0x00, 0x64, + 0x17, 0x04, 0xe0, 0x93, 0x00, 0xe0, 0xa3, 0x03, 0x91, 0x09, 0x00, 0x00, + 0x00, 0x7a, 0x64, 0x83, 0xc3, 0x90, 0x7f, 0x01, 0x60, 0x00, 0x00, 0x64, + 0x93, 0xc3, 0x90, 0x51, 0x00, 0x00, 0x00, 0x00, 0x64, 0xa3, 0xc3, 0x90, + 0x83, 0xc3, 0x80, 0x03, 0x00, 0x80, 0x00, 0x14, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x83, 0x23, 0x81, 0x6c, 0x00, 0x48, 0x3e, 0x01, 0x60, + 0x83, 0xc3, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x04, 0x92, + 0x2a, 0x01, 0x60, 0x04, 0x08, 0x64, 0x83, 0xc3, 0x80, 0xf7, 0x67, 0x7f, + 0x2f, 0x00, 0x60, 0x04, 0x08, 0x64, 0x83, 0xc3, 0x80, 0xe7, 0x67, 0x7f, + 0x83, 0x03, 0x91, 0x87, 0x03, 0x81, 0x83, 0xe3, 0x80, 0x43, 0xc0, 0xfb, + 0x00, 0x00, 0x92, 0x03, 0x00, 0xfd, 0x93, 0xc3, 0x90, 0x83, 0xd3, 0x80, + 0x00, 0x00, 0x86, 0xd2, 0xbf, 0x7f, 0x04, 0x0b, 0x64, 0x83, 0xc3, 0x80, + 0xb3, 0x67, 0x7f, 0x93, 0x03, 0x91, 0x82, 0x13, 0xc2, 0xb3, 0xc3, 0xa0, + 0x82, 0x1b, 0xc2, 0xbb, 0xc3, 0xa0, 0x86, 0xbb, 0xc1, 0x82, 0xb3, 0xc1, + 0x24, 0x04, 0x3a, 0x5a, 0x00, 0x60, 0xcd, 0xee, 0xee, 0x00, 0x33, 0x64, + 0xef, 0x63, 0x7f, 0x83, 0xc3, 0x80, 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, + 0x02, 0xbc, 0x0f, 0x03, 0x3c, 0xfe, 0x00, 0x40, 0x2b, 0x06, 0x40, 0x20, + 0x83, 0xc3, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x03, 0x38, 0xfe, 0x43, 0x40, 0xfb, 0xb7, 0x63, 0x7f, 0x83, 0xc3, 0x80, + 0x07, 0x00, 0x80, 0x44, 0x00, 0xa2, 0x03, 0x04, 0x90, 0x83, 0xc3, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, 0x07, 0x3c, 0xfe, + 0x8a, 0xb3, 0xc1, 0x83, 0xc3, 0x80, 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0xc0, 0x95, 0x64, + 0x0b, 0x00, 0x60, 0xc0, 0x96, 0x64, 0x8e, 0xbb, 0xc1, 0xa3, 0x8f, 0x90, + 0x83, 0x83, 0x90, 0xa3, 0x4b, 0x90, 0x83, 0x47, 0x90, 0xc0, 0x97, 0x64, + 0xa3, 0x03, 0x90, 0x03, 0x7c, 0x7f, 0x83, 0xc3, 0x80, 0x03, 0x10, 0x00, + 0x83, 0xc3, 0x90, 0x83, 0xc3, 0x80, 0x03, 0x00, 0x80, 0x3d, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, 0x72, 0xbe, 0x7f, + 0x4b, 0xc3, 0xfe, 0x97, 0x04, 0xe0, 0x53, 0x00, 0xe0, 0xa3, 0x83, 0x90, + 0xb3, 0x87, 0x90, 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, 0xa3, 0x03, 0x90, + 0x40, 0x00, 0x65, 0xb3, 0x03, 0xa0, 0x5b, 0x01, 0x60, 0x00, 0x00, 0x64, + 0x83, 0x43, 0x90, 0x40, 0x00, 0x65, 0x93, 0x43, 0xa0, 0x83, 0xb3, 0x80, + 0x08, 0x00, 0x92, 0x1e, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x2a, 0x00, 0x60, + 0x83, 0xb3, 0x80, 0x04, 0x00, 0x92, 0x2e, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, + 0x16, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, 0xa3, 0x03, 0x90, + 0xf3, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x14, 0x31, + 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, 0x83, 0xa3, 0x80, 0x6c, 0x00, 0x48, + 0xc6, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, + 0x08, 0x04, 0x92, 0xb2, 0x00, 0x60, 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, + 0x12, 0x00, 0x60, 0x11, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0f, 0x00, 0x60, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x64, 0xa3, 0x43, 0x90, 0x04, 0x08, 0x64, + 0x83, 0x23, 0x80, 0xbf, 0x65, 0x7f, 0x2f, 0x00, 0x60, 0x04, 0x08, 0x64, + 0x83, 0x23, 0x80, 0xaf, 0x65, 0x7f, 0xb3, 0x43, 0x90, 0x87, 0x73, 0x80, + 0x83, 0x63, 0x80, 0x43, 0xc0, 0xfb, 0x00, 0x00, 0x92, 0x03, 0x00, 0xfd, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x00, 0x86, 0xd2, 0xbf, 0x7f, + 0x04, 0x0b, 0x64, 0x83, 0x23, 0x80, 0x7b, 0x65, 0x7f, 0x83, 0x83, 0x90, + 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, 0x0e, 0x00, 0x60, 0x82, 0x03, 0xc1, + 0x0b, 0x00, 0x60, 0x82, 0x0b, 0xc1, 0x93, 0x43, 0xa0, 0x86, 0x93, 0xc0, + 0x82, 0x33, 0xc0, 0x04, 0x04, 0x3a, 0x0e, 0x00, 0x60, 0x82, 0x93, 0xc0, + 0xb3, 0x03, 0xa0, 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, 0x96, 0xbe, 0x7f, 0x82, 0x33, 0xc0, + 0x57, 0x04, 0xe0, 0x53, 0x00, 0xe0, 0xa3, 0x83, 0x90, 0xb3, 0x87, 0x90, + 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, + 0x00, 0x00, 0x64, 0xa3, 0x43, 0x90, 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, + 0x83, 0x43, 0x90, 0x53, 0x01, 0x60, 0x00, 0x00, 0x64, 0x93, 0x43, 0x90, + 0x83, 0xb3, 0x80, 0x08, 0x00, 0x92, 0x1e, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, + 0x2a, 0x00, 0x60, 0x83, 0xb3, 0x80, 0x04, 0x00, 0x92, 0x2e, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x16, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x10, 0x00, + 0x83, 0x43, 0x90, 0xf3, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x14, 0x31, 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, 0x83, 0xa3, 0x80, + 0x6c, 0x00, 0x48, 0xc6, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, + 0x02, 0xb8, 0x00, 0x08, 0x04, 0x92, 0xb2, 0x00, 0x60, 0x83, 0xb3, 0x80, + 0x00, 0x00, 0x92, 0x12, 0x00, 0x60, 0x11, 0x00, 0x00, 0x00, 0x00, 0x64, + 0x0f, 0x00, 0x60, 0x41, 0x00, 0x00, 0x00, 0x00, 0x64, 0xb3, 0x43, 0x90, + 0x2f, 0x00, 0x60, 0x04, 0x08, 0x64, 0x83, 0x43, 0x80, 0x17, 0x64, 0x7f, + 0x83, 0x83, 0x90, 0x87, 0x83, 0x80, 0x83, 0x73, 0x80, 0x43, 0xc0, 0xfb, + 0x00, 0x00, 0x92, 0x03, 0x00, 0xfd, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, + 0x00, 0x00, 0x86, 0xd2, 0xbf, 0x7f, 0x04, 0x0b, 0x64, 0x83, 0x43, 0x80, + 0xe3, 0x63, 0x7f, 0x93, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, + 0x12, 0x00, 0x60, 0x82, 0x13, 0xc1, 0x03, 0x3c, 0xfe, 0x0f, 0x00, 0x60, + 0x82, 0x1b, 0xc1, 0x03, 0x3c, 0xfe, 0xa3, 0x43, 0x90, 0x87, 0x33, 0x80, + 0x83, 0x63, 0x80, 0x43, 0x80, 0xf2, 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, 0x03, 0x10, 0x00, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x3d, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, 0x9e, 0xbe, 0x7f, + 0x83, 0x23, 0x80, 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, 0x4b, 0x57, 0x60, + 0x57, 0x04, 0xe0, 0x53, 0x00, 0xe0, 0xa3, 0x83, 0x90, 0xb3, 0x87, 0x90, + 0x87, 0xb3, 0x80, 0x42, 0x40, 0x20, 0x00, 0x0c, 0x2b, 0x03, 0xc4, 0xf2, + 0x00, 0x28, 0x2b, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x17, 0x57, 0x60, + 0x83, 0x43, 0x90, 0x01, 0x00, 0xe0, 0x00, 0x00, 0x64, 0x93, 0x5f, 0x7f, + 0x83, 0xa3, 0x80, 0x43, 0xe7, 0x7f, 0x03, 0x3c, 0xfe, 0x93, 0x43, 0x90, + 0x01, 0x00, 0xe0, 0x40, 0x00, 0x64, 0x77, 0x5f, 0x7f, 0x83, 0xa3, 0x80, + 0x4b, 0xf2, 0x7f, 0x03, 0x3c, 0xfe, 0xa3, 0x43, 0x90, 0x01, 0x00, 0xe0, + 0x80, 0x00, 0x64, 0x5b, 0x5f, 0x7f, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x00, 0x04, 0x64, + 0x0b, 0x00, 0x60, 0x00, 0x10, 0x64, 0x87, 0x53, 0x80, 0x43, 0xc0, 0xf2, + 0xb3, 0x43, 0x90, 0x87, 0x73, 0x80, 0x83, 0xa3, 0x80, 0xab, 0xe8, 0x7f, + 0x80, 0x07, 0x64, 0x6b, 0x5b, 0x7f, 0x01, 0x00, 0xe0, 0xc0, 0x00, 0x64, + 0x0f, 0x5f, 0x7f, 0x83, 0xa3, 0x80, 0xe3, 0xf1, 0x7f, 0x03, 0x3c, 0xfe, + 0xb3, 0x03, 0x90, 0x01, 0x00, 0xe0, 0x00, 0x01, 0x64, 0xf3, 0x5e, 0x7f, + 0x87, 0x53, 0x80, 0x83, 0x73, 0x80, 0x43, 0xc0, 0xf2, 0x25, 0x00, 0x00, + 0x04, 0xc4, 0x64, 0x08, 0x44, 0x24, 0x87, 0x63, 0x80, 0x83, 0x33, 0x80, + 0x43, 0xc0, 0xf2, 0x06, 0x40, 0x20, 0x82, 0x40, 0x20, 0x37, 0x56, 0x60, + 0x83, 0x83, 0x90, 0x87, 0x43, 0x80, 0x83, 0x63, 0x80, 0x47, 0xc0, 0xf2, + 0x83, 0x83, 0x80, 0x40, 0x40, 0x24, 0x25, 0x00, 0x00, 0x04, 0xc4, 0x64, + 0x13, 0x56, 0x60, 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, 0x43, 0x80, 0xf2, + 0xa3, 0x03, 0x90, 0x87, 0x23, 0x80, 0x83, 0xa3, 0x80, 0x0b, 0xe8, 0x7f, + 0x80, 0x07, 0x64, 0xcb, 0x5a, 0x7f, 0x01, 0x00, 0xe0, 0x40, 0x01, 0x64, + 0x6f, 0x5e, 0x7f, 0x83, 0xa3, 0x80, 0x43, 0xf1, 0x7f, 0x03, 0x3c, 0xfe, + 0xb3, 0x03, 0x90, 0x01, 0x00, 0xe0, 0x80, 0x01, 0x64, 0x53, 0x5e, 0x7f, + 0x7b, 0x00, 0x60, 0x01, 0x00, 0xe0, 0xc0, 0x01, 0x64, 0x43, 0x5e, 0x7f, + 0x87, 0x33, 0x80, 0x83, 0x43, 0x80, 0x43, 0xc0, 0xf2, 0x3c, 0x7c, 0xbb, + 0x0e, 0x00, 0x60, 0x40, 0x00, 0x65, 0x0b, 0x00, 0x60, 0x40, 0x00, 0x64, + 0x87, 0x23, 0x80, 0x43, 0xc0, 0xf2, 0xa3, 0x03, 0x90, 0x87, 0x23, 0x80, + 0x83, 0xa3, 0x80, 0x93, 0xe7, 0x7f, 0x80, 0x07, 0x64, 0x53, 0x5a, 0x7f, + 0x01, 0x00, 0xe0, 0x00, 0x02, 0x64, 0xf7, 0x5d, 0x7f, 0x83, 0xa3, 0x80, + 0xcb, 0xf0, 0x7f, 0x03, 0x3c, 0xfe, 0xb3, 0x03, 0x90, 0x01, 0x00, 0xe0, + 0x40, 0x02, 0x64, 0xdb, 0x5d, 0x7f, 0x87, 0x33, 0x80, 0x83, 0x43, 0x80, + 0x43, 0xc0, 0xf2, 0x04, 0x7c, 0x27, 0x43, 0xc0, 0xfa, 0x03, 0xc4, 0xf2, + 0x10, 0x00, 0xba, 0x72, 0xbf, 0x7f, 0x01, 0x00, 0xe0, 0x00, 0x04, 0x64, + 0xaf, 0x5d, 0x7f, 0x4b, 0xc3, 0xfe, 0x57, 0x04, 0xe0, 0x93, 0x00, 0xe0, + 0xa3, 0x03, 0x91, 0x00, 0x00, 0x64, 0x83, 0x83, 0x90, 0x00, 0x00, 0x64, + 0xa3, 0x83, 0x90, 0x00, 0x00, 0x64, 0xb3, 0x83, 0x90, 0x01, 0x00, 0xd0, + 0x00, 0x00, 0x64, 0x7b, 0x5d, 0x7f, 0x05, 0x00, 0x00, 0x44, 0x00, 0x64, + 0x83, 0x23, 0x81, 0xe0, 0xdb, 0x63, 0x01, 0x00, 0xd0, 0x40, 0x00, 0x64, + 0x5f, 0x5d, 0x7f, 0x83, 0x23, 0x81, 0xcb, 0xe4, 0x7f, 0x04, 0xfa, 0x64, + 0xc3, 0x54, 0x60, 0x93, 0xc3, 0x90, 0x01, 0x00, 0xd0, 0x80, 0x00, 0x64, + 0x3f, 0x5d, 0x7f, 0x83, 0xd3, 0x80, 0x00, 0x40, 0xa3, 0x33, 0x5d, 0x7f, + 0x87, 0xd3, 0x80, 0x83, 0xd3, 0x80, 0x40, 0x40, 0x24, 0xa3, 0xc3, 0x90, + 0x00, 0x00, 0x64, 0x93, 0x83, 0x90, 0x57, 0x02, 0x60, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x02, 0xb8, 0xc8, 0x07, 0x3c, 0xfe, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x02, 0x00, 0xe9, 0x03, 0x38, 0xfe, 0x40, 0x40, 0x24, + 0xb3, 0xc3, 0x90, 0x00, 0x00, 0x64, 0x83, 0xc3, 0x90, 0x83, 0x93, 0x80, + 0x00, 0x40, 0x2b, 0x01, 0x00, 0xd0, 0x02, 0x4c, 0x20, 0xd3, 0x5c, 0x7f, + 0x87, 0x93, 0x80, 0x83, 0x23, 0x81, 0xcc, 0xb7, 0x63, 0x03, 0x3c, 0xfe, + 0x83, 0x03, 0x91, 0x83, 0x93, 0x80, 0x00, 0x40, 0x2b, 0x01, 0x00, 0xd0, + 0x02, 0x50, 0x20, 0xab, 0x5c, 0x7f, 0x83, 0x03, 0x81, 0xc1, 0x00, 0x00, + 0x04, 0xd4, 0x64, 0x00, 0x44, 0x24, 0x83, 0x03, 0x91, 0x83, 0x93, 0x80, + 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, 0x04, 0x00, 0x86, 0x9e, 0x00, 0x60, + 0xb3, 0x01, 0x60, 0x83, 0xe3, 0x80, 0xed, 0xff, 0xff, 0x04, 0xc5, 0x64, + 0x04, 0x44, 0x24, 0x83, 0xd3, 0x80, 0x4d, 0xf4, 0xff, 0x08, 0xdb, 0x64, + 0x00, 0x48, 0x24, 0x43, 0x80, 0xf2, 0x25, 0x00, 0x00, 0x04, 0xc4, 0x64, + 0xc3, 0x53, 0x60, 0xb1, 0x03, 0x00, 0x03, 0x20, 0x04, 0x04, 0xfa, 0x64, + 0xb3, 0x53, 0x60, 0x83, 0x83, 0x90, 0x83, 0xe3, 0x80, 0xf9, 0xff, 0xff, + 0x44, 0x73, 0x64, 0x04, 0x44, 0x24, 0x83, 0xd3, 0x80, 0xbd, 0xfe, 0xff, + 0x88, 0x8f, 0x64, 0x00, 0x48, 0x24, 0x43, 0x80, 0xf2, 0x04, 0xfa, 0x64, + 0x83, 0x53, 0x60, 0x21, 0x3a, 0x00, 0x03, 0xb0, 0x06, 0x04, 0xfa, 0x64, + 0x73, 0x53, 0x60, 0x83, 0xc3, 0x90, 0x83, 0xb3, 0x80, 0x03, 0x04, 0x00, + 0xb3, 0x83, 0x90, 0x9b, 0x00, 0x60, 0x83, 0xe3, 0x80, 0x0d, 0x00, 0x00, + 0x04, 0x92, 0x64, 0x04, 0x44, 0x24, 0x83, 0xd3, 0x80, 0x61, 0xfc, 0xff, + 0x08, 0x8e, 0x64, 0x00, 0x48, 0x24, 0x43, 0x80, 0xf2, 0x25, 0x00, 0x00, + 0x04, 0xc4, 0x64, 0x2f, 0x53, 0x60, 0x6d, 0x02, 0x00, 0x03, 0x10, 0x12, + 0x04, 0xfa, 0x64, 0x1f, 0x53, 0x60, 0x83, 0x83, 0x90, 0x83, 0xe3, 0x80, + 0xf9, 0xff, 0xff, 0xc4, 0xec, 0x64, 0x04, 0x44, 0x24, 0x83, 0xd3, 0x80, + 0x9d, 0x05, 0x00, 0x08, 0x60, 0x64, 0x00, 0x48, 0x24, 0x43, 0x80, 0xf2, + 0x04, 0xfa, 0x64, 0xef, 0x52, 0x60, 0x55, 0x22, 0x00, 0x03, 0x10, 0x18, + 0x04, 0xfa, 0x64, 0xdf, 0x52, 0x60, 0x83, 0xc3, 0x90, 0x83, 0xb3, 0x80, + 0x03, 0x04, 0x00, 0xb3, 0x83, 0x90, 0x4b, 0xc3, 0xfe, 0x87, 0xf3, 0x80, + 0x83, 0x03, 0x81, 0xbf, 0x52, 0x60, 0x06, 0x40, 0x20, 0x83, 0xc3, 0x80, + 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, 0x87, 0x83, 0x80, + 0xa3, 0x52, 0x60, 0x83, 0x03, 0x91, 0x09, 0x00, 0x00, 0x08, 0xd5, 0x64, + 0x87, 0x23, 0x81, 0x42, 0x40, 0x20, 0x00, 0x04, 0x2b, 0x03, 0x84, 0xf2, + 0x87, 0x93, 0x80, 0x03, 0x84, 0xf2, 0x03, 0x08, 0x00, 0x87, 0x03, 0x81, + 0x00, 0x08, 0x2b, 0x83, 0x80, 0xf2, 0x03, 0x04, 0x90, 0x87, 0xa3, 0x80, + 0x83, 0x03, 0x81, 0x43, 0x80, 0xf2, 0xa3, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x00, 0x40, 0x2b, 0x01, 0x00, 0xd0, 0x02, 0x54, 0x20, 0xd3, 0x5a, 0x7f, + 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x08, 0x00, 0xb2, 0xaa, 0xbd, 0x7f, 0x83, 0xa3, 0x80, 0x87, 0xb3, 0x80, + 0x27, 0x52, 0x60, 0xa3, 0x83, 0x90, 0x01, 0x00, 0xd0, 0x80, 0x01, 0x64, + 0x9f, 0x5a, 0x7f, 0x83, 0xa3, 0x80, 0x00, 0x40, 0xa3, 0x93, 0x5a, 0x7f, + 0x00, 0x00, 0x64, 0x93, 0x83, 0x90, 0x8f, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x00, 0x00, 0x86, 0x36, 0x00, 0x60, 0x83, 0x93, 0x80, 0x04, 0x00, 0x86, + 0x22, 0x00, 0x60, 0x83, 0x93, 0x80, 0x08, 0x00, 0x92, 0x0e, 0x00, 0x60, + 0xc4, 0x95, 0x64, 0x1b, 0x00, 0x60, 0xc4, 0xa5, 0x64, 0x13, 0x00, 0x60, + 0xc4, 0x96, 0x64, 0x0b, 0x00, 0x60, 0xc4, 0xa7, 0x64, 0x09, 0x00, 0x00, + 0x0c, 0xd5, 0x64, 0x8b, 0x23, 0x81, 0x82, 0x40, 0x20, 0x00, 0x04, 0x2b, + 0x03, 0x88, 0xf2, 0x8b, 0x93, 0x80, 0x03, 0x88, 0xf2, 0x03, 0x08, 0x00, + 0xc3, 0x40, 0xf7, 0xa3, 0x43, 0x90, 0x83, 0x47, 0x90, 0xc0, 0xa8, 0x64, + 0xa3, 0x03, 0x90, 0xc3, 0x72, 0x7f, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, + 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, 0x08, 0x00, 0xb2, 0x72, 0xbf, 0x7f, + 0x83, 0xa3, 0x80, 0x97, 0x04, 0xe0, 0x43, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0xb3, 0x47, 0x90, 0x83, 0x8b, 0xa0, 0x8b, 0x8f, 0xa0, 0x09, 0x00, 0x00, + 0x00, 0x7a, 0x64, 0xa3, 0x03, 0x90, 0x82, 0x0b, 0xc1, 0xbb, 0x03, 0xa0, + 0x82, 0x03, 0xc1, 0xb3, 0x03, 0xa0, 0x03, 0x01, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x14, 0x31, 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, + 0x83, 0x63, 0x80, 0x6c, 0x00, 0x48, 0xd6, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x04, 0x92, 0xc2, 0x00, 0x60, + 0x04, 0x08, 0x64, 0x83, 0x23, 0x80, 0x0b, 0x5d, 0x7f, 0x83, 0x43, 0x90, + 0x83, 0x73, 0x80, 0x00, 0x00, 0x92, 0x2a, 0x00, 0x60, 0x83, 0x33, 0x80, + 0x0a, 0x40, 0x20, 0x04, 0x0a, 0x64, 0x83, 0x23, 0x80, 0x33, 0x5d, 0x7f, + 0x83, 0x43, 0x80, 0x02, 0xc0, 0x20, 0x83, 0x43, 0x90, 0x6f, 0x00, 0x60, + 0x83, 0x73, 0x80, 0x08, 0x00, 0x92, 0x1e, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x92, + 0x2a, 0x00, 0x60, 0x83, 0x73, 0x80, 0x04, 0x00, 0x92, 0x3e, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x92, 0x26, 0x00, 0x60, 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, + 0x04, 0x09, 0x64, 0x83, 0x23, 0x80, 0xc7, 0x5c, 0x7f, 0x83, 0x43, 0x80, + 0x02, 0x40, 0x21, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x0a, 0x40, 0x20, + 0x04, 0x08, 0x64, 0x83, 0x23, 0x80, 0xa7, 0x5c, 0x7f, 0x83, 0x23, 0x80, + 0x03, 0x10, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x3d, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, + 0xee, 0xbe, 0x7f, 0x4b, 0xc3, 0xfe, 0x47, 0x04, 0xe0, 0xa3, 0x10, 0xe6, + 0x83, 0x43, 0x91, 0x1d, 0x00, 0x00, 0xc0, 0x23, 0x64, 0xa3, 0x03, 0xa1, + 0x19, 0x00, 0x00, 0xc0, 0x31, 0x64, 0xab, 0x03, 0xa1, 0x19, 0x00, 0x00, + 0x40, 0x95, 0x64, 0xb3, 0x03, 0xa1, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, + 0x83, 0x43, 0x81, 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, + 0x02, 0x08, 0xc0, 0x07, 0x44, 0xfe, 0x09, 0x00, 0x00, 0x08, 0xd5, 0x64, + 0x83, 0x43, 0x81, 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, 0x83, 0x80, 0xf2, + 0x02, 0x10, 0xc0, 0x03, 0x44, 0xfe, 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, + 0x0c, 0x44, 0x24, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x43, 0x81, + 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, + 0x07, 0x44, 0xfe, 0x09, 0x00, 0x00, 0x08, 0xd5, 0x64, 0x83, 0x43, 0x81, + 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, 0x83, 0x80, 0xf2, 0x02, 0x08, 0xc0, + 0x03, 0x44, 0xfe, 0x43, 0xc0, 0xf2, 0x03, 0x3c, 0x05, 0x06, 0x40, 0x20, + 0xc2, 0x40, 0x20, 0x3f, 0x4f, 0x60, 0xb3, 0x83, 0x90, 0x09, 0x00, 0x00, + 0x04, 0xd5, 0x64, 0x83, 0x43, 0x81, 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, + 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, 0x1b, 0x44, 0xfe, 0x09, 0x00, 0x00, + 0x04, 0xd5, 0x64, 0x83, 0x43, 0x81, 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, + 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, 0x03, 0x44, 0xfe, 0x04, 0xd7, 0x64, + 0x47, 0xc0, 0xf2, 0x83, 0xb3, 0x80, 0x40, 0x40, 0x24, 0x04, 0xfa, 0x65, + 0xe3, 0x4e, 0x60, 0x83, 0x81, 0xf2, 0x83, 0xc3, 0x90, 0x00, 0x00, 0x64, + 0xa3, 0x83, 0x90, 0x93, 0x01, 0x60, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0xa3, 0x80, 0x03, 0xa8, 0x02, 0x47, 0x40, 0xf7, 0x83, 0xb3, 0x80, + 0x40, 0x40, 0x24, 0x04, 0xfa, 0x64, 0xaf, 0x4e, 0x60, 0x06, 0x40, 0x20, + 0x83, 0xc3, 0x80, 0x43, 0x80, 0xf2, 0x93, 0xc3, 0x90, 0x83, 0xd3, 0x80, + 0x03, 0x28, 0x00, 0xa3, 0xc3, 0x90, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0xa3, 0x80, 0x03, 0x20, 0x04, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, + 0x1a, 0x10, 0xc0, 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, 0x87, 0x23, 0x01, + 0x43, 0x80, 0xf2, 0x02, 0x00, 0xc1, 0x07, 0x3c, 0xfe, 0x83, 0xd3, 0x80, + 0x40, 0x40, 0x24, 0x04, 0xfa, 0x64, 0x4b, 0x4e, 0x60, 0x87, 0x81, 0xf2, + 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, 0x8b, 0x23, 0x01, 0x83, 0x80, 0xf2, + 0x13, 0x44, 0xa0, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0xa3, 0x80, + 0x03, 0x20, 0x04, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x1a, 0x10, 0xc0, + 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, 0x87, 0x23, 0x01, 0x43, 0x80, 0xf2, + 0x02, 0x00, 0xc1, 0x07, 0x3c, 0xfe, 0x83, 0xe3, 0x80, 0x40, 0x40, 0x24, + 0x04, 0xfa, 0x64, 0xef, 0x4d, 0x60, 0x87, 0x81, 0xf2, 0x83, 0xa3, 0x80, + 0x00, 0x04, 0x2b, 0x8b, 0x23, 0x01, 0x83, 0x80, 0xf2, 0x2b, 0x44, 0xa0, + 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, 0x87, 0x23, 0x01, 0x43, 0x80, 0xf2, + 0x02, 0xa8, 0xc0, 0x07, 0x3c, 0xfe, 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, + 0x8b, 0x23, 0x01, 0x83, 0x80, 0xf2, 0x02, 0x90, 0xc0, 0x03, 0x3c, 0xfe, + 0x83, 0x83, 0x90, 0xa3, 0x47, 0x90, 0x83, 0xa3, 0x80, 0x83, 0x43, 0x90, + 0xc0, 0xb0, 0x64, 0xa3, 0x03, 0x90, 0xcf, 0x6e, 0x7f, 0x83, 0xa3, 0x80, + 0x00, 0x04, 0x2b, 0x87, 0x23, 0x01, 0x43, 0x80, 0xf2, 0x06, 0x90, 0xc0, + 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, 0x8b, 0x23, 0x01, 0x83, 0x80, 0xf2, + 0x02, 0xa8, 0xc0, 0x0e, 0x40, 0x20, 0x4a, 0x40, 0x20, 0x87, 0xa3, 0x80, + 0x83, 0x43, 0x81, 0xf4, 0xbf, 0x63, 0x83, 0xa3, 0x80, 0x03, 0x04, 0x00, + 0xa3, 0x83, 0x90, 0x83, 0xa3, 0x80, 0x08, 0x00, 0xb2, 0x6e, 0xbe, 0x7f, + 0x4b, 0xc3, 0xfe, 0xa7, 0x14, 0xe6, 0x0b, 0x29, 0xe5, 0xa3, 0xc3, 0x91, + 0xb3, 0xc7, 0x91, 0x83, 0x0b, 0x92, 0x93, 0x0f, 0x92, 0x00, 0x00, 0x64, + 0xa3, 0x43, 0x91, 0x83, 0x03, 0x82, 0x06, 0x40, 0x20, 0x83, 0xe3, 0x81, + 0x17, 0xdf, 0x7f, 0x80, 0x07, 0x64, 0xd7, 0x51, 0x7f, 0x83, 0xe3, 0x81, + 0x5b, 0xe8, 0x7f, 0x07, 0x3c, 0xfe, 0x83, 0xa3, 0x82, 0x03, 0x04, 0x90, + 0x83, 0xa3, 0x82, 0x03, 0x00, 0x80, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xc7, 0x4c, 0x60, + 0x83, 0x43, 0x90, 0x40, 0xba, 0x64, 0xa3, 0x03, 0x90, 0xfb, 0x6d, 0x7f, + 0x83, 0xe3, 0x81, 0x73, 0xf0, 0x7f, 0x00, 0x00, 0x64, 0xb3, 0x43, 0x91, + 0x37, 0x00, 0x60, 0x87, 0x73, 0x81, 0x83, 0xe3, 0x81, 0x0f, 0xf2, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, 0x8b, 0xa3, 0x02, + 0x83, 0x80, 0xf2, 0x1b, 0x44, 0xa0, 0x83, 0x73, 0x81, 0x03, 0x04, 0x00, + 0xb3, 0x43, 0x91, 0x83, 0x73, 0x81, 0x08, 0x00, 0xb2, 0xca, 0xbf, 0x7f, + 0x83, 0xf3, 0x81, 0x06, 0x40, 0x20, 0x83, 0xe3, 0x81, 0x6b, 0xde, 0x7f, + 0x80, 0x07, 0x64, 0x2b, 0x51, 0x7f, 0x83, 0xe3, 0x81, 0xaf, 0xe7, 0x7f, + 0x07, 0x3c, 0xfe, 0x83, 0x13, 0x82, 0x03, 0x04, 0x90, 0x83, 0x13, 0x82, + 0x03, 0x00, 0x80, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x1b, 0x4c, 0x60, 0x83, 0x43, 0x90, + 0x40, 0xc1, 0x64, 0xa3, 0x03, 0x90, 0x4f, 0x6d, 0x7f, 0x83, 0xe3, 0x81, + 0xc7, 0xef, 0x7f, 0x00, 0x00, 0x64, 0xb3, 0x43, 0x91, 0x37, 0x00, 0x60, + 0x87, 0x73, 0x81, 0x83, 0xe3, 0x81, 0x63, 0xf1, 0x7f, 0x06, 0x40, 0x20, + 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, 0x8b, 0xa3, 0x02, 0x83, 0x80, 0xf2, + 0x03, 0x44, 0xa0, 0x83, 0x73, 0x81, 0x03, 0x04, 0x00, 0xb3, 0x43, 0x91, + 0x83, 0x73, 0x81, 0x08, 0x00, 0xb2, 0xca, 0xbf, 0x7f, 0x00, 0x00, 0x64, + 0xb3, 0x43, 0x91, 0x5b, 0x02, 0x60, 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, + 0x87, 0xa3, 0x02, 0x43, 0x80, 0xf2, 0x02, 0x80, 0xc0, 0x28, 0x00, 0xac, + 0x32, 0x02, 0x60, 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, 0x87, 0xa3, 0x02, + 0x43, 0x80, 0xf2, 0x02, 0x98, 0xc0, 0x07, 0x3c, 0xfe, 0x83, 0x73, 0x81, + 0x00, 0x04, 0x2b, 0x8b, 0xa3, 0x02, 0x83, 0x80, 0xf2, 0x02, 0x80, 0xc0, + 0x03, 0x3c, 0xfe, 0x43, 0xc0, 0xf2, 0x08, 0x0c, 0xb2, 0xf6, 0x01, 0x60, + 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, 0x87, 0xa3, 0x02, 0x43, 0x80, 0xf2, + 0x02, 0x98, 0xc0, 0x07, 0x3c, 0xfe, 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, + 0x8b, 0xa3, 0x02, 0x83, 0x80, 0xf2, 0x02, 0x80, 0xc0, 0x03, 0x3c, 0xfe, + 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, 0x08, 0x44, 0x24, 0x83, 0xa3, 0x82, + 0x07, 0x00, 0x80, 0x83, 0x13, 0x82, 0x03, 0x00, 0x80, 0x43, 0xc0, 0xf2, + 0x06, 0x40, 0x20, 0x82, 0x40, 0x20, 0xfb, 0x4a, 0x60, 0x83, 0x83, 0x91, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x73, 0x81, 0x03, 0x20, 0x04, + 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, 0x07, 0x3c, 0xfe, + 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, 0x8b, 0xa3, 0x02, 0x83, 0x80, 0xf2, + 0x02, 0x80, 0xc0, 0x03, 0x3c, 0xfe, 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, + 0x00, 0x44, 0x24, 0x87, 0x83, 0x81, 0xab, 0x4a, 0x60, 0x06, 0x40, 0x20, + 0x83, 0x13, 0x82, 0x03, 0x00, 0x80, 0x43, 0x80, 0xf2, 0x93, 0x83, 0x91, + 0x83, 0x93, 0x81, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x7b, 0x4a, 0x60, 0x0a, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x73, 0x81, 0x03, 0xa8, 0x02, + 0x00, 0x08, 0x2b, 0x43, 0x80, 0xf2, 0x03, 0x08, 0x90, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x83, 0x73, 0x81, 0x03, 0x20, 0x04, 0x00, 0x04, 0x2b, + 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, 0x1b, 0x3c, 0xfe, 0x83, 0x73, 0x81, + 0x00, 0x04, 0x2b, 0x87, 0xa3, 0x02, 0x43, 0x80, 0xf2, 0x02, 0x80, 0xc0, + 0x1f, 0x3c, 0xfe, 0x83, 0x13, 0x82, 0x03, 0x00, 0x80, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x03, 0x4a, 0x60, 0x22, 0x40, 0x20, 0x83, 0xa3, 0x82, 0x03, 0x00, 0x80, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0xdf, 0x49, 0x60, 0x16, 0x40, 0x20, 0x87, 0x93, 0x81, + 0x21, 0x00, 0x00, 0x00, 0x98, 0x64, 0x40, 0x40, 0x24, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0xbf, 0x49, 0x60, 0x83, 0x43, 0x91, 0x83, 0x03, 0x82, + 0xa3, 0x03, 0x91, 0x83, 0x17, 0x91, 0x83, 0xf3, 0x81, 0xa3, 0xc3, 0x90, + 0x83, 0xe3, 0x90, 0x83, 0x83, 0x81, 0xa3, 0x83, 0x90, 0x83, 0x9f, 0x90, + 0xa3, 0x5b, 0x90, 0x83, 0x73, 0x81, 0x83, 0x43, 0x90, 0x00, 0xc8, 0x64, + 0xa3, 0x03, 0x90, 0xc3, 0x6a, 0x7f, 0x87, 0x93, 0x81, 0x83, 0x63, 0x81, + 0x5c, 0x00, 0x3a, 0x0e, 0x00, 0x60, 0x83, 0x93, 0x81, 0xa3, 0x43, 0x91, + 0x83, 0x73, 0x81, 0x03, 0x04, 0x00, 0xb3, 0x43, 0x91, 0x83, 0x73, 0x81, + 0x08, 0x00, 0xb2, 0xa6, 0xbd, 0x7f, 0x83, 0x63, 0x81, 0x0f, 0x2d, 0xe5, + 0x53, 0x00, 0xe0, 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, 0xa3, 0x8b, 0x90, + 0xb3, 0x8f, 0x90, 0x87, 0xa3, 0x80, 0x42, 0x40, 0x20, 0x00, 0x0c, 0x2b, + 0x03, 0xc4, 0xf2, 0x00, 0x28, 0x2b, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x13, 0x49, 0x60, 0xa3, 0x03, 0x90, 0x87, 0xb3, 0x80, 0x42, 0x40, 0x20, + 0x00, 0x0c, 0x2b, 0x03, 0xc4, 0xf2, 0x00, 0x28, 0x2b, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0xef, 0x48, 0x60, 0xb3, 0x03, 0x90, 0x87, 0x23, 0x80, + 0x83, 0x33, 0x80, 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, 0x0c, 0x44, 0x24, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x00, 0xc2, 0x07, 0x44, 0xfe, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0xb8, 0xc1, 0x03, 0x44, 0xfe, + 0x47, 0xc0, 0xf2, 0x8b, 0x33, 0x80, 0x83, 0x23, 0x80, 0x83, 0xc0, 0xf2, + 0x43, 0x80, 0xf2, 0x06, 0x40, 0x20, 0xc2, 0x40, 0x20, 0x97, 0x48, 0x60, + 0x83, 0x43, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0xb8, 0xc1, + 0x07, 0x44, 0xfe, 0x83, 0x33, 0x80, 0x47, 0xc0, 0xf2, 0x83, 0x43, 0x80, + 0x40, 0x40, 0x24, 0x04, 0xfa, 0x65, 0x6b, 0x48, 0x60, 0x06, 0x40, 0x20, + 0x83, 0x33, 0x80, 0x43, 0x80, 0xf2, 0x93, 0x43, 0x90, 0x87, 0x43, 0x80, + 0x83, 0x93, 0x80, 0x40, 0x40, 0x24, 0x04, 0xfa, 0x64, 0x47, 0x48, 0x60, + 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, 0x43, 0x80, 0xf2, 0xa3, 0x43, 0x90, + 0x83, 0x63, 0x80, 0x57, 0x04, 0xe0, 0xe3, 0x10, 0xe6, 0xa3, 0x83, 0x91, + 0xb3, 0x87, 0x91, 0x83, 0xcb, 0x91, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x83, 0xa3, 0x81, 0x40, 0x80, 0x3f, + 0x02, 0x04, 0x00, 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x04, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x13, 0x04, 0x60, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0xa3, 0x81, 0x00, 0x04, 0x2b, + 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0xb3, 0x03, 0x91, + 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, + 0x0e, 0x00, 0x60, 0x00, 0x04, 0x64, 0x0b, 0x00, 0x60, 0x00, 0x10, 0x64, + 0x87, 0x33, 0x81, 0x43, 0xc0, 0xf2, 0xa3, 0x03, 0x91, 0x00, 0x00, 0x64, + 0x83, 0x03, 0x91, 0x9f, 0x02, 0x60, 0x87, 0xb3, 0x02, 0x83, 0x03, 0x03, + 0xa3, 0x03, 0x90, 0x4e, 0x40, 0x20, 0x8b, 0x33, 0x81, 0x87, 0x23, 0x81, + 0x83, 0xa3, 0x81, 0xc4, 0xa7, 0x63, 0x93, 0x03, 0x91, 0x83, 0x13, 0x81, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x4f, 0x47, 0x60, 0x0e, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x08, 0xd5, 0x64, 0x87, 0xa3, 0x81, 0x42, 0x40, 0x20, 0x00, 0x04, 0x2b, + 0x03, 0x84, 0xf2, 0x87, 0x03, 0x81, 0x03, 0x84, 0xf2, 0x03, 0x20, 0x00, + 0x00, 0x04, 0x2b, 0x83, 0x80, 0xf2, 0x13, 0x0c, 0xa0, 0x83, 0x13, 0x81, + 0x00, 0x00, 0x92, 0x12, 0x00, 0x60, 0x83, 0xa3, 0x81, 0x27, 0xde, 0x7f, + 0x2f, 0x03, 0x60, 0x8f, 0xc3, 0x81, 0x8b, 0xb3, 0x81, 0x87, 0x13, 0x81, + 0x83, 0xa3, 0x81, 0xec, 0xdb, 0x63, 0x93, 0x43, 0x91, 0x87, 0x13, 0x81, + 0x83, 0x53, 0x81, 0x43, 0x80, 0xf2, 0x93, 0x03, 0x91, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0xb8, 0xc1, 0x07, 0x44, 0xfe, 0x83, 0x13, 0x81, + 0x5c, 0x00, 0x3a, 0x1e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0xb8, 0xc1, 0x03, 0x44, 0xfe, 0x93, 0x03, 0x91, 0x37, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x00, 0xc2, 0x07, 0x44, 0xfe, + 0x83, 0x13, 0x81, 0x1c, 0x04, 0x3a, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x00, 0xc2, 0x03, 0x44, 0xfe, 0x93, 0x03, 0x91, + 0x87, 0x33, 0x81, 0x83, 0x23, 0x81, 0x43, 0xc0, 0xf2, 0x06, 0x40, 0x20, + 0x25, 0x00, 0x00, 0x00, 0xc4, 0x64, 0x48, 0x40, 0x24, 0x87, 0x83, 0x81, + 0x83, 0x73, 0x81, 0x43, 0xc0, 0xf2, 0x06, 0x40, 0x20, 0x82, 0x40, 0x20, + 0x43, 0x46, 0x60, 0xa3, 0x43, 0x91, 0x83, 0x83, 0x81, 0x87, 0x13, 0x81, + 0x47, 0xc0, 0xf2, 0x83, 0x63, 0x81, 0x40, 0x40, 0x24, 0x25, 0x00, 0x00, + 0x04, 0xc4, 0x64, 0x1f, 0x46, 0x60, 0x06, 0x40, 0x20, 0x83, 0x33, 0x81, + 0x43, 0x80, 0xf2, 0x83, 0x43, 0x91, 0x83, 0x13, 0x81, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0xf3, 0x45, 0x60, 0x1a, 0x40, 0x20, 0x83, 0x53, 0x81, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0xd3, 0x45, 0x60, 0x1e, 0x40, 0x20, 0x83, 0x43, 0x81, 0x0d, 0x00, 0x00, + 0x44, 0x0d, 0x64, 0x00, 0x44, 0x24, 0xdd, 0x06, 0x00, 0x03, 0x80, 0x0e, + 0x04, 0xfa, 0x64, 0xb3, 0x45, 0x60, 0x06, 0x40, 0x20, 0x83, 0x23, 0x81, + 0xa3, 0xc3, 0x90, 0x83, 0x33, 0x81, 0x83, 0xc3, 0x90, 0xa3, 0x87, 0x90, + 0x83, 0x9f, 0x90, 0xa3, 0x5b, 0x90, 0x83, 0x43, 0x81, 0x83, 0x43, 0x90, + 0x40, 0xdc, 0x64, 0xa3, 0x03, 0x90, 0xbf, 0x66, 0x7f, 0x87, 0x43, 0x81, + 0x83, 0x33, 0x81, 0x4c, 0x00, 0x3a, 0x0e, 0x00, 0x60, 0x83, 0x43, 0x81, + 0xb3, 0x03, 0x91, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, + 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x00, 0x02, 0x64, 0x0b, 0x00, 0x60, + 0x00, 0x08, 0x64, 0x87, 0x43, 0x81, 0x07, 0x84, 0xf2, 0x83, 0x23, 0x81, + 0x0c, 0x04, 0x3a, 0x32, 0x00, 0x60, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x00, 0x02, 0x64, + 0x0b, 0x00, 0x60, 0x00, 0x08, 0x64, 0x87, 0x43, 0x81, 0x03, 0x84, 0xf2, + 0xa3, 0x03, 0x91, 0x83, 0x03, 0x81, 0x03, 0x04, 0x00, 0x83, 0x03, 0x91, + 0x83, 0x03, 0x81, 0x04, 0x00, 0xae, 0x62, 0xbd, 0x7f, 0x83, 0x43, 0x81, + 0x0d, 0x00, 0x00, 0x44, 0x0d, 0x64, 0x00, 0x44, 0x24, 0xdd, 0x06, 0x00, + 0x03, 0x80, 0x0e, 0x04, 0xfa, 0x64, 0xcf, 0x44, 0x60, 0x1a, 0x40, 0x20, + 0x83, 0x13, 0x81, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xab, 0x44, 0x60, 0x1e, 0x40, 0x20, + 0x83, 0x13, 0x81, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x8b, 0x44, 0x60, 0x06, 0x40, 0x20, + 0x00, 0xfa, 0x64, 0x40, 0x40, 0x24, 0x21, 0xf9, 0xff, 0x03, 0x80, 0x11, + 0x0d, 0x00, 0x00, 0x44, 0x0d, 0x64, 0x6b, 0x44, 0x60, 0xa3, 0x83, 0x90, + 0x83, 0x9f, 0x90, 0xa3, 0x5b, 0x90, 0x83, 0x43, 0x81, 0x83, 0x43, 0x90, + 0x80, 0xf0, 0x64, 0xa3, 0x03, 0x90, 0x8f, 0x65, 0x7f, 0x83, 0x43, 0x81, + 0x06, 0x40, 0x20, 0x83, 0xa3, 0x81, 0x4f, 0xd6, 0x7f, 0x80, 0x07, 0x64, + 0x0f, 0x49, 0x7f, 0x83, 0xb3, 0x81, 0x0a, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x04, 0xd5, 0x64, 0x83, 0xa3, 0x81, 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, + 0x43, 0x80, 0xf2, 0x0b, 0x08, 0xa0, 0x83, 0xc3, 0x81, 0x0a, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0xa3, 0x81, 0x03, 0xb0, 0x00, + 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x13, 0x08, 0xa0, 0x83, 0xa3, 0x81, + 0x8f, 0xd8, 0x7f, 0x83, 0xa3, 0x81, 0xd7, 0xf3, 0x7f, 0xe7, 0x14, 0xe6, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, 0x03, 0x3c, 0xfe, 0x3c, 0x04, 0xba, + 0x4a, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, + 0x02, 0xbc, 0x0f, 0x03, 0x3c, 0xfe, 0x3c, 0x08, 0xb2, 0x2e, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x02, 0xb8, 0xc8, 0x03, 0x3c, 0xfe, + 0x00, 0x40, 0x2b, 0x02, 0x7c, 0x26, 0x0a, 0x40, 0x20, 0x04, 0x04, 0x64, + 0x83, 0x23, 0x80, 0xdb, 0x4f, 0x7f, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x02, 0xb8, 0xc8, 0x03, 0x3c, 0xfe, 0x00, 0x40, 0x2b, 0x02, 0x7c, 0x26, + 0x0a, 0x40, 0x20, 0x04, 0x08, 0x64, 0x83, 0x23, 0x80, 0xa3, 0x4f, 0x7f, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0x01, 0x00, 0x05, 0x00, 0x00, 0x64, 0x83, 0x43, 0x90, 0x05, 0x00, 0x00, + 0x08, 0x41, 0x64, 0x04, 0x11, 0x64, 0x83, 0x63, 0x80, 0x73, 0x4f, 0x7f, + 0x40, 0x00, 0x64, 0xdb, 0x47, 0x7f, 0x05, 0x00, 0x00, 0x48, 0x41, 0x64, + 0x04, 0x11, 0x64, 0x83, 0x63, 0x80, 0x57, 0x4f, 0x7f, 0x00, 0x00, 0x64, + 0xa3, 0x03, 0x90, 0x73, 0x00, 0x60, 0x83, 0x43, 0x80, 0xb3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x0c, 0x00, 0x92, 0x12, 0x00, 0x60, 0x83, 0x33, 0x80, 0x00, 0x00, 0xa2, + 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x08, 0x2b, 0x03, 0x00, 0x03, + 0x8b, 0x33, 0x80, 0x06, 0x40, 0x20, 0x83, 0x63, 0x80, 0x03, 0x4f, 0x7f, + 0x83, 0x23, 0x80, 0x00, 0x08, 0x2b, 0x03, 0x00, 0x03, 0x06, 0x40, 0x20, + 0x83, 0x63, 0x80, 0x9f, 0x4e, 0x7f, 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x18, 0x00, 0xb2, 0x8e, 0xbf, 0x7f, + 0x09, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x14, 0x64, 0x83, 0x63, 0x80, + 0xbf, 0x4e, 0x7f, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x33, 0x00, 0xe0, + 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, 0x00, 0x00, 0xba, 0x1e, 0x01, 0x60, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x63, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x00, 0x00, 0x86, 0x02, 0x01, 0x60, 0x01, 0x00, 0x05, + 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x63, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x83, 0x43, 0x90, + 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0x4f, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x00, 0x08, 0x2b, 0x03, 0x00, 0x03, 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, + 0x00, 0x00, 0xa2, 0x0a, 0x40, 0x20, 0x83, 0x43, 0x80, 0x33, 0x4e, 0x7f, + 0x83, 0x23, 0x80, 0x00, 0x08, 0x2b, 0x03, 0x00, 0x03, 0x06, 0x40, 0x20, + 0x83, 0x43, 0x80, 0xcf, 0x4d, 0x7f, 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x18, 0x00, 0xb2, 0xb2, 0xbf, 0x7f, + 0x00, 0x00, 0x64, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0xfd, 0xff, 0xff, + 0x02, 0x00, 0x00, 0x02, 0x64, 0x32, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, + 0xfd, 0x00, 0xfc, 0x02, 0xbc, 0x1f, 0x01, 0x2a, 0x02, 0x02, 0x40, 0x20, + 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0x00, 0x00, 0x99, 0x93, 0x43, 0x90, + 0x83, 0x53, 0x80, 0x00, 0x00, 0xa1, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, + 0x00, 0x10, 0x98, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0x00, 0x10, 0xa0, + 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x15, 0x64, + 0x83, 0x43, 0x80, 0x8b, 0x4d, 0x7f, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0xa1, 0xa3, 0x03, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x87, 0x23, 0x80, 0x03, 0x00, 0x08, + 0x03, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x01, 0x05, 0x00, 0x40, 0x00, 0x64, 0x53, 0x49, 0x7f, + 0x83, 0x43, 0x80, 0x03, 0xe4, 0x7f, 0x00, 0x00, 0x86, 0x8e, 0x00, 0x60, + 0x01, 0x05, 0x00, 0x80, 0x00, 0x64, 0x37, 0x49, 0x7f, 0x05, 0x00, 0x00, + 0x40, 0x03, 0x64, 0xa3, 0x03, 0x90, 0xdf, 0x61, 0x7f, 0x83, 0x43, 0x80, + 0x57, 0xe4, 0x7f, 0x83, 0x43, 0x80, 0x77, 0xeb, 0x7f, 0x0a, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x43, 0x80, 0x00, 0x04, 0x2b, + 0x43, 0x80, 0xf2, 0x1b, 0x08, 0xa0, 0x01, 0x05, 0x00, 0xc0, 0x00, 0x64, + 0xef, 0x48, 0x7f, 0x83, 0x43, 0x80, 0x83, 0xde, 0x7f, 0x01, 0x05, 0x00, + 0x00, 0x01, 0x64, 0xdb, 0x48, 0x7f, 0x88, 0x0c, 0x64, 0xc4, 0x12, 0x64, + 0x83, 0x43, 0x80, 0xd4, 0x83, 0x63, 0x01, 0x05, 0x00, 0x80, 0x01, 0x64, + 0xbf, 0x48, 0x7f, 0x1b, 0x00, 0x60, 0x83, 0x43, 0x80, 0x47, 0xd7, 0x7f, + 0x01, 0x05, 0x00, 0xc0, 0x01, 0x64, 0xa7, 0x48, 0x7f, 0x01, 0x05, 0x00, + 0x00, 0x02, 0x64, 0x9b, 0x48, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x0b, 0x0a, 0x60, 0x3f, 0x0a, 0x60, 0x03, 0x00, 0xe0, 0x37, 0x4a, 0x60, + 0x40, 0x80, 0x1d, 0x07, 0x04, 0xe0, 0x1f, 0x88, 0xe5, 0x20, 0x84, 0x1d, + 0xb0, 0x8c, 0x1d, 0x98, 0x80, 0x1d, 0x6e, 0x43, 0x20, 0x56, 0x42, 0x20, + 0x0c, 0x76, 0x72, 0x8c, 0x24, 0x3a, 0x22, 0x01, 0x60, 0xfd, 0x00, 0x00, + 0xbc, 0x7c, 0xb7, 0x12, 0x00, 0x60, 0xbc, 0x3c, 0xae, 0x6e, 0x23, 0x80, + 0x17, 0x00, 0x60, 0xfd, 0xff, 0x00, 0xbc, 0x7c, 0xaf, 0x2c, 0x04, 0x64, + 0xee, 0xa2, 0x80, 0x00, 0xaf, 0x3e, 0x05, 0x00, 0x00, 0x06, 0x1c, 0xe1, + 0x00, 0x08, 0x64, 0x6f, 0xac, 0xf2, 0x03, 0xec, 0xf2, 0x30, 0x00, 0xc8, + 0x54, 0x82, 0x40, 0x2c, 0xae, 0x3e, 0x18, 0x83, 0x40, 0xd7, 0x56, 0xfb, + 0x1c, 0x82, 0x40, 0x88, 0x33, 0xd8, 0xa8, 0x41, 0x31, 0x40, 0xa9, 0x1d, + 0xa7, 0x3d, 0xfe, 0xe4, 0xf7, 0x63, 0x22, 0x40, 0x20, 0x40, 0xa9, 0x1d, + 0xd4, 0xf7, 0x63, 0x54, 0x42, 0x24, 0x2e, 0x40, 0x20, 0xc4, 0x41, 0x31, + 0x00, 0x42, 0x2b, 0x03, 0x44, 0xd0, 0x4c, 0x01, 0x3a, 0xb0, 0x0b, 0xd0, + 0x2a, 0x00, 0x60, 0x03, 0x98, 0xf2, 0xac, 0x01, 0x3a, 0x0e, 0x00, 0x60, + 0x6c, 0x01, 0x3a, 0x0e, 0x00, 0x60, 0xef, 0x46, 0x00, 0x0f, 0x00, 0x60, + 0xef, 0x4a, 0x00, 0x03, 0x98, 0xf2, 0x88, 0x33, 0xd8, 0x17, 0xd4, 0xf2, + 0x40, 0xa9, 0x1d, 0xc4, 0xf3, 0x63, 0x22, 0x40, 0x20, 0x40, 0xa9, 0x1d, + 0xf4, 0xef, 0x63, 0x64, 0x42, 0x24, 0xc3, 0x61, 0xd8, 0x4c, 0x1e, 0x3a, + 0xb0, 0x0b, 0xd0, 0x26, 0x00, 0x60, 0x9f, 0x9d, 0xf2, 0xac, 0x1d, 0x3a, + 0x0e, 0x00, 0x60, 0x6c, 0x1e, 0x3a, 0x0e, 0x00, 0x60, 0x03, 0x44, 0x00, + 0x0b, 0x00, 0x60, 0x03, 0x48, 0x00, 0xec, 0x42, 0x2b, 0xd3, 0x42, 0xfb, + 0x56, 0x43, 0x20, 0xa7, 0x03, 0x60, 0x24, 0x08, 0x72, 0x40, 0x00, 0x74, + 0xe4, 0xeb, 0x63, 0x1a, 0x40, 0x20, 0xfd, 0x00, 0x00, 0xbc, 0x7d, 0xb7, + 0x12, 0x00, 0x60, 0xbc, 0x3d, 0xae, 0xee, 0x22, 0x80, 0x17, 0x00, 0x60, + 0xfd, 0xff, 0x00, 0xbc, 0x7d, 0xaf, 0x2c, 0x04, 0x64, 0xee, 0xa2, 0x80, + 0x80, 0xad, 0x3e, 0x05, 0x00, 0x00, 0x06, 0x1c, 0xe1, 0x00, 0x08, 0x64, + 0x73, 0xda, 0xf2, 0x54, 0x00, 0x64, 0x6f, 0xac, 0xf2, 0x03, 0xec, 0xf2, + 0xa8, 0x01, 0xc8, 0x98, 0x81, 0x40, 0x54, 0xae, 0x3e, 0x44, 0x82, 0x40, + 0xb4, 0x41, 0x31, 0x2c, 0xae, 0x3e, 0xb3, 0x3d, 0xfe, 0xef, 0x46, 0xfb, + 0x1c, 0x82, 0x40, 0x40, 0xb5, 0x1d, 0xf0, 0xe3, 0x63, 0x2a, 0x40, 0x20, + 0x40, 0xb5, 0x1d, 0xe0, 0xe3, 0x63, 0x24, 0x43, 0x24, 0x16, 0x40, 0x20, + 0xc4, 0x42, 0x31, 0x80, 0x42, 0x2b, 0x03, 0x44, 0xd0, 0x4c, 0x02, 0x3a, + 0x2a, 0x00, 0x60, 0x03, 0x98, 0xf2, 0xac, 0x01, 0x3a, 0x0e, 0x00, 0x60, + 0x6c, 0x02, 0x3a, 0x0e, 0x00, 0x60, 0x57, 0x45, 0x00, 0x0f, 0x00, 0x60, + 0x57, 0x49, 0x00, 0x03, 0x98, 0xf2, 0x27, 0xe4, 0xf2, 0x40, 0xb6, 0x1d, + 0xd8, 0xdf, 0x63, 0x22, 0x40, 0x20, 0x40, 0xb6, 0x1d, 0xc8, 0xdf, 0x63, + 0xc6, 0x42, 0x20, 0x30, 0x43, 0x24, 0x43, 0x60, 0xd8, 0x0c, 0x07, 0x3a, + 0x2a, 0x00, 0x60, 0x47, 0x98, 0xf2, 0x0c, 0x07, 0x3a, 0x0e, 0x00, 0x60, + 0x8c, 0x05, 0x3a, 0x0e, 0x00, 0x60, 0x03, 0x44, 0x00, 0x0f, 0x00, 0x60, + 0x03, 0x48, 0x00, 0x47, 0x98, 0xf2, 0x54, 0x41, 0x2b, 0x73, 0xf0, 0xf2, + 0x57, 0x41, 0xfb, 0xac, 0x41, 0x31, 0x00, 0xaf, 0x1d, 0xfc, 0xd7, 0x63, + 0x26, 0x40, 0x20, 0x00, 0xaf, 0x1d, 0xec, 0xd7, 0x63, 0xab, 0x3d, 0xfe, + 0xa0, 0x42, 0x24, 0x32, 0x40, 0x20, 0xc4, 0x41, 0x31, 0x40, 0x42, 0x2b, + 0x03, 0x44, 0xd0, 0x0c, 0x02, 0x3a, 0x2a, 0x00, 0x60, 0x03, 0x98, 0xf2, + 0x0c, 0x02, 0x3a, 0x0e, 0x00, 0x60, 0x8c, 0x01, 0x3a, 0x0e, 0x00, 0x60, + 0x33, 0x47, 0x00, 0x0f, 0x00, 0x60, 0x33, 0x4b, 0x00, 0x03, 0x98, 0xf2, + 0x23, 0xe0, 0xf2, 0x00, 0xae, 0x1d, 0xe0, 0xd3, 0x63, 0x26, 0x40, 0x20, + 0x00, 0xae, 0x1d, 0xd0, 0xd3, 0x63, 0xa8, 0x42, 0x24, 0xc3, 0x65, 0xd8, + 0x8c, 0x1e, 0x3a, 0x26, 0x00, 0x60, 0x9f, 0x9d, 0xf2, 0xac, 0x1d, 0x3a, + 0x0e, 0x00, 0x60, 0xac, 0x1e, 0x3a, 0x0e, 0x00, 0x60, 0x03, 0x44, 0x00, + 0x0b, 0x00, 0x60, 0x03, 0x48, 0x00, 0x30, 0x43, 0x2b, 0x13, 0x43, 0xfb, + 0xcb, 0x01, 0x60, 0x6c, 0x27, 0x3a, 0x10, 0x00, 0x74, 0xbe, 0x01, 0x60, + 0xfd, 0x00, 0x00, 0x7c, 0x7f, 0xb7, 0x12, 0x00, 0x60, 0x7c, 0x3f, 0xae, + 0x5e, 0x21, 0x80, 0x17, 0x00, 0x60, 0xfd, 0xff, 0x00, 0x7c, 0x7f, 0xaf, + 0x04, 0x04, 0x64, 0x5e, 0xa0, 0x80, 0x40, 0x9f, 0x3e, 0x05, 0x00, 0x00, + 0x06, 0x1c, 0xe1, 0x14, 0x08, 0x64, 0x47, 0x9c, 0xf2, 0x57, 0xc5, 0xf2, + 0x3c, 0x14, 0x72, 0x6c, 0x36, 0x3a, 0x07, 0x00, 0xfd, 0x0c, 0x23, 0x3a, + 0x03, 0x00, 0xfd, 0x53, 0x40, 0xfb, 0x63, 0x01, 0x60, 0x40, 0x97, 0x40, + 0x0c, 0x87, 0x3e, 0xcf, 0x40, 0xfb, 0xa3, 0x0f, 0x90, 0x58, 0x86, 0x3e, + 0x2c, 0x97, 0x40, 0x04, 0x86, 0x3e, 0xf0, 0x40, 0x31, 0x5c, 0x96, 0x40, + 0x5f, 0x5c, 0xfb, 0x80, 0xb1, 0x1d, 0xeb, 0x3c, 0xfe, 0xfc, 0xc3, 0x63, + 0x36, 0x40, 0x20, 0x80, 0xb1, 0x1d, 0xec, 0xc3, 0x63, 0x84, 0x42, 0x24, + 0x1a, 0x40, 0x20, 0xc8, 0x41, 0x31, 0x40, 0x43, 0x2b, 0x03, 0x48, 0xd0, + 0x4c, 0x00, 0x3a, 0x8f, 0x23, 0x80, 0x2a, 0x00, 0x60, 0x03, 0x8c, 0xf2, + 0x4c, 0x00, 0x3a, 0x0e, 0x00, 0x60, 0xcc, 0x00, 0x3a, 0x0e, 0x00, 0x60, + 0x9b, 0x45, 0x00, 0x0f, 0x00, 0x60, 0x9b, 0x49, 0x00, 0x03, 0x8c, 0xf2, + 0x83, 0x4f, 0x90, 0x37, 0xc4, 0xf2, 0x40, 0xb3, 0x1d, 0xdc, 0xbf, 0x63, + 0xa3, 0x03, 0x90, 0x40, 0xb3, 0x1d, 0xcc, 0xbf, 0x63, 0x8b, 0x23, 0x80, + 0xa8, 0x42, 0x24, 0xc3, 0x49, 0xd8, 0x8c, 0x1e, 0x3a, 0x2e, 0x00, 0x60, + 0x8f, 0x43, 0x80, 0xdf, 0x8d, 0xf2, 0xec, 0x1c, 0x3a, 0x0e, 0x00, 0x60, + 0xac, 0x1e, 0x3a, 0x0e, 0x00, 0x60, 0x03, 0x44, 0x00, 0x0f, 0x00, 0x60, + 0x03, 0x48, 0x00, 0xdf, 0x8d, 0xf2, 0x98, 0x41, 0x2b, 0x93, 0x41, 0xfb, + 0xc8, 0x42, 0x31, 0x03, 0x3d, 0xfe, 0x04, 0x41, 0x31, 0xcf, 0x3e, 0xfe, + 0x18, 0x4c, 0x24, 0x4c, 0x4c, 0x24, 0x00, 0x48, 0x24, 0x44, 0x48, 0x24, + 0x03, 0x8c, 0xf2, 0x88, 0x41, 0x31, 0x8b, 0x80, 0xf2, 0xcc, 0x08, 0x3a, + 0x01, 0x01, 0x00, 0x4f, 0x00, 0x00, 0x47, 0x8c, 0xf9, 0x8c, 0x40, 0x31, + 0xdf, 0xe9, 0xf2, 0xc7, 0x84, 0xf2, 0x6c, 0x1c, 0x3a, 0x26, 0x00, 0x60, + 0x88, 0x40, 0x2b, 0x9b, 0x3d, 0xfe, 0x20, 0x96, 0x40, 0x8b, 0x98, 0xf2, + 0x8c, 0x20, 0x3a, 0x12, 0x00, 0x60, 0xec, 0x05, 0x48, 0x0a, 0x00, 0x60, + 0x13, 0x45, 0x00, 0x14, 0x00, 0x64, 0x08, 0x95, 0x1d, 0x80, 0x8c, 0x1d, + 0x1f, 0x8c, 0xe5, 0x13, 0x88, 0xe5, 0x20, 0x84, 0x1d, 0x98, 0x8c, 0x1d, + 0x16, 0x40, 0x20, 0x6a, 0x42, 0x20, 0xac, 0x4d, 0x72, 0x8c, 0x24, 0x3a, + 0x06, 0x01, 0x60, 0xfd, 0x00, 0x00, 0xbc, 0x7c, 0xb7, 0x12, 0x00, 0x60, + 0xbc, 0x3c, 0xae, 0xde, 0x20, 0x80, 0x17, 0x00, 0x60, 0xfd, 0xff, 0x00, + 0xbc, 0x7c, 0xaf, 0x1c, 0x04, 0x64, 0xde, 0xa1, 0x80, 0x80, 0x9c, 0x3e, + 0x05, 0x00, 0x00, 0x06, 0x1c, 0xe1, 0x47, 0x9c, 0xf2, 0x1c, 0x08, 0x64, + 0xdf, 0xc5, 0xf2, 0x30, 0x1c, 0xc8, 0x68, 0x9e, 0x40, 0x04, 0x86, 0x3e, + 0x98, 0x9c, 0x40, 0x6b, 0x68, 0xfb, 0x14, 0x9e, 0x40, 0xac, 0x41, 0x31, + 0x80, 0xae, 0x1d, 0xc4, 0xab, 0x63, 0xa3, 0x03, 0x90, 0x80, 0xae, 0x1d, + 0xf4, 0xa7, 0x63, 0x8b, 0x23, 0x80, 0xa7, 0x3d, 0xfe, 0x44, 0x41, 0x31, + 0x40, 0x42, 0x24, 0x88, 0x40, 0x2b, 0x83, 0x44, 0xd0, 0x0c, 0x08, 0x3a, + 0x22, 0x00, 0x60, 0x8b, 0x98, 0xf2, 0x0c, 0x88, 0x3a, 0x8f, 0x98, 0xf2, + 0xac, 0x09, 0x3a, 0x86, 0x40, 0x20, 0x8b, 0xcc, 0xf9, 0x4b, 0x88, 0xf9, + 0x8b, 0xc0, 0xf2, 0x80, 0xac, 0x1d, 0xa3, 0x0b, 0x90, 0xec, 0xa3, 0x63, + 0x22, 0x40, 0x20, 0x83, 0x23, 0x80, 0xc6, 0x42, 0x20, 0xd8, 0xa3, 0x63, + 0x46, 0x41, 0x20, 0x40, 0x42, 0x24, 0x43, 0x60, 0xd8, 0x0c, 0x04, 0x3a, + 0xde, 0x01, 0x60, 0x47, 0x98, 0xf2, 0xac, 0x85, 0x3a, 0x5b, 0x98, 0xf2, + 0x0c, 0x04, 0x3a, 0x4a, 0x40, 0x20, 0x47, 0xd8, 0xf9, 0x87, 0x84, 0xf9, + 0xbf, 0x01, 0x60, 0x24, 0x08, 0x72, 0x40, 0x00, 0x74, 0xd8, 0x9f, 0x63, + 0x1a, 0x40, 0x20, 0xfd, 0x00, 0x00, 0xbc, 0x7d, 0xb7, 0x12, 0x00, 0x60, + 0xbc, 0x3d, 0xae, 0xde, 0x21, 0x80, 0x17, 0x00, 0x60, 0xfd, 0xff, 0x00, + 0xbc, 0x7d, 0xaf, 0x1c, 0x04, 0x64, 0xde, 0xa1, 0x80, 0x80, 0x9d, 0x3e, + 0x05, 0x00, 0x00, 0x2a, 0x1c, 0xe1, 0x6f, 0xda, 0xf2, 0xab, 0x9e, 0xf2, + 0x1c, 0x08, 0x64, 0xdf, 0xe9, 0xf2, 0x88, 0x1d, 0xc8, 0x70, 0xaa, 0x3e, + 0x98, 0x9d, 0x40, 0x44, 0x9e, 0x40, 0x28, 0xaa, 0x3e, 0xa7, 0x46, 0xfb, + 0xa8, 0x41, 0x31, 0x00, 0xab, 0x1d, 0xf0, 0x97, 0x63, 0xa3, 0x03, 0x90, + 0x00, 0xab, 0x1d, 0xe0, 0x97, 0x63, 0x8b, 0x23, 0x80, 0xaf, 0x3d, 0xfe, + 0x44, 0x42, 0x31, 0xc0, 0x42, 0x24, 0x88, 0x40, 0x2b, 0x83, 0x44, 0xd0, + 0x0c, 0x08, 0x3a, 0x14, 0x9e, 0x40, 0x22, 0x00, 0x60, 0x8b, 0x98, 0xf2, + 0x0c, 0x88, 0x3a, 0x8f, 0x98, 0xf2, 0xac, 0x09, 0x3a, 0x86, 0x40, 0x20, + 0x8b, 0xcc, 0xf9, 0x4b, 0x88, 0xf9, 0x8b, 0xc0, 0xf2, 0x80, 0xa8, 0x1d, + 0xa3, 0x0b, 0x90, 0xd4, 0x93, 0x63, 0x22, 0x40, 0x20, 0x83, 0x23, 0x80, + 0x86, 0x42, 0x20, 0xc0, 0x93, 0x63, 0x46, 0x42, 0x20, 0xec, 0x42, 0x24, + 0x43, 0x60, 0xd8, 0xcc, 0x06, 0x3a, 0x22, 0x00, 0x60, 0x47, 0x98, 0xf2, + 0xcc, 0x86, 0x3a, 0x43, 0x98, 0xf2, 0xac, 0x05, 0x3a, 0x4a, 0x40, 0x20, + 0x47, 0xc0, 0xf9, 0x87, 0x84, 0xf9, 0x6f, 0xec, 0xf2, 0xa8, 0x41, 0x31, + 0xc0, 0xaa, 0x1d, 0xc4, 0x8f, 0x63, 0xa3, 0x03, 0x90, 0xc0, 0xaa, 0x1d, + 0xf4, 0x8b, 0x63, 0x8b, 0x23, 0x80, 0xa7, 0x3d, 0xfe, 0x44, 0x41, 0x31, + 0x40, 0x42, 0x24, 0x88, 0x40, 0x2b, 0x83, 0x44, 0xd0, 0x0c, 0x08, 0x3a, + 0x22, 0x00, 0x60, 0x8b, 0x98, 0xf2, 0x0c, 0x88, 0x3a, 0x8f, 0x98, 0xf2, + 0xac, 0x09, 0x3a, 0x86, 0x40, 0x20, 0x8b, 0xcc, 0xf9, 0x4b, 0x88, 0xf9, + 0x8b, 0xc0, 0xf2, 0x80, 0xa8, 0x1d, 0xa3, 0x0b, 0x90, 0xec, 0x87, 0x63, + 0x22, 0x40, 0x20, 0x83, 0x23, 0x80, 0x86, 0x42, 0x20, 0xd8, 0x87, 0x63, + 0x46, 0x41, 0x20, 0x40, 0x42, 0x24, 0x43, 0x60, 0xd8, 0x0c, 0x04, 0x3a, + 0x1e, 0x00, 0x60, 0x47, 0x98, 0xf2, 0xac, 0x85, 0x3a, 0x5b, 0x98, 0xf2, + 0x0c, 0x04, 0x3a, 0x5b, 0xd8, 0xf9, 0x47, 0x98, 0xf9, 0x47, 0xc0, 0xf2, + 0x48, 0x9c, 0x3e, 0x0c, 0x00, 0x64, 0x1b, 0x02, 0x60, 0xcc, 0x24, 0x3a, + 0x0e, 0x00, 0x60, 0x08, 0xa4, 0x1d, 0x0b, 0x02, 0x60, 0xfd, 0x00, 0x00, + 0xfc, 0x7c, 0xb7, 0x16, 0x00, 0x60, 0xfc, 0x3c, 0xae, 0x1c, 0x00, 0x64, + 0xde, 0x21, 0x80, 0x17, 0x00, 0x60, 0xfd, 0xff, 0x00, 0xfc, 0x7c, 0xaf, + 0x1c, 0x04, 0x64, 0xde, 0xa1, 0x80, 0xc0, 0x9c, 0x3e, 0x05, 0x00, 0x00, + 0x02, 0x1c, 0xe1, 0x18, 0x08, 0x64, 0x1f, 0x9c, 0xf2, 0x9b, 0xdd, 0xf2, + 0x6c, 0x18, 0x72, 0x6c, 0x0e, 0x3a, 0x0e, 0x00, 0x60, 0xac, 0x20, 0x3a, + 0x1e, 0x00, 0x60, 0x07, 0xca, 0xf2, 0x6c, 0x20, 0x3a, 0x6b, 0xce, 0xf2, + 0x0b, 0x00, 0xfd, 0xab, 0xca, 0xf2, 0x56, 0x40, 0x20, 0x48, 0xa9, 0x1d, + 0x93, 0x01, 0x60, 0xc0, 0x98, 0x40, 0x94, 0x9c, 0x3e, 0x57, 0x41, 0xfb, + 0x6c, 0x9e, 0x3e, 0x40, 0x9a, 0x40, 0x74, 0x41, 0x31, 0x24, 0x9e, 0x3e, + 0x73, 0x3d, 0xfe, 0x67, 0x42, 0xfb, 0xc0, 0xb6, 0x1d, 0xa8, 0x98, 0x40, + 0x6b, 0xf7, 0x7f, 0xa3, 0x03, 0x90, 0xc0, 0xb6, 0x1d, 0x5b, 0xf7, 0x7f, + 0x8f, 0x23, 0x80, 0x08, 0x43, 0x24, 0x2e, 0x40, 0x20, 0x44, 0x42, 0x31, + 0xc0, 0x40, 0x2b, 0x03, 0x44, 0xd0, 0x8c, 0x00, 0x3a, 0x20, 0x9a, 0x40, + 0x2a, 0x00, 0x60, 0x03, 0x94, 0xf2, 0x6c, 0x01, 0x3a, 0x0e, 0x00, 0x60, + 0xac, 0x00, 0x3a, 0x0e, 0x00, 0x60, 0xef, 0x46, 0x00, 0x0f, 0x00, 0x60, + 0xef, 0x4a, 0x00, 0x03, 0x94, 0xf2, 0x0b, 0xc8, 0xf2, 0x80, 0xb4, 0x1d, + 0xb3, 0x0b, 0x90, 0x07, 0xf7, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x46, 0x43, 0x20, 0xf3, 0xf6, 0x7f, 0x93, 0x23, 0x80, 0x0c, 0x43, 0x24, + 0x43, 0x52, 0xd8, 0xcc, 0x24, 0x3a, 0x2a, 0x00, 0x60, 0x67, 0x96, 0xf2, + 0x6c, 0x25, 0x3a, 0x0e, 0x00, 0x60, 0xec, 0x24, 0x3a, 0x0e, 0x00, 0x60, + 0x03, 0x44, 0x00, 0x0f, 0x00, 0x60, 0x03, 0x48, 0x00, 0x67, 0x96, 0xf2, + 0xec, 0x42, 0x2b, 0xc3, 0x42, 0xfb, 0x84, 0x42, 0x31, 0x4f, 0xce, 0xf2, + 0x8b, 0x3e, 0xfe, 0x27, 0x3c, 0xfe, 0x00, 0x40, 0x31, 0x50, 0x4a, 0x24, + 0x08, 0x48, 0x24, 0x64, 0x46, 0x24, 0x00, 0x44, 0x24, 0x67, 0x8a, 0xf2, + 0x04, 0x41, 0x31, 0x47, 0xa4, 0xf2, 0x8c, 0x04, 0x3a, 0x01, 0x01, 0x00, + 0x0b, 0x00, 0x00, 0x03, 0x88, 0xf9, 0x6c, 0x40, 0x31, 0xc3, 0x82, 0xf2, + 0x44, 0x40, 0x2b, 0x13, 0x3d, 0xfe, 0x2c, 0x0c, 0x3a, 0x47, 0x90, 0xf2, + 0x16, 0x00, 0x60, 0xec, 0x00, 0x48, 0x26, 0x00, 0x60, 0x4c, 0x20, 0x3a, + 0x1e, 0x00, 0x60, 0x4b, 0xe8, 0xf2, 0xac, 0x04, 0x3a, 0x17, 0xd4, 0xf2, + 0x03, 0x00, 0xfd, 0x43, 0xc1, 0xf2, 0x86, 0x40, 0x20, 0x07, 0xc6, 0xf2, + 0x6c, 0x20, 0x3a, 0xc3, 0xc0, 0xf2, 0x0f, 0x00, 0xfd, 0x03, 0xcc, 0xf2, + 0x1c, 0x9c, 0x40, 0x44, 0x98, 0x3e, 0xcb, 0x45, 0xfb, 0x0c, 0x98, 0x3e, + 0x80, 0x8c, 0x1d, 0x17, 0x8c, 0xe5, 0x03, 0x10, 0xe5, 0x14, 0x7c, 0x27, + 0x58, 0x7c, 0x27, 0x03, 0xd4, 0xfa, 0x47, 0xd8, 0xfa, 0x03, 0xd4, 0xf2, + 0x47, 0xd8, 0xf2, 0xdc, 0x83, 0x62, 0x47, 0xd4, 0xfa, 0x47, 0xd4, 0xf2, + 0x57, 0xd9, 0xfa, 0x03, 0xd4, 0xfa, 0x03, 0xd4, 0xf2, 0x07, 0x14, 0xe5, + 0x4b, 0x24, 0xfe, 0x50, 0x04, 0xc8, 0x8a, 0x4c, 0x20, 0x8b, 0x04, 0x00, + 0x52, 0x40, 0x20, 0x04, 0x88, 0x3e, 0x8c, 0x80, 0x25, 0x00, 0x8c, 0x40, + 0x10, 0x08, 0xca, 0x00, 0x50, 0x1e, 0x00, 0x3c, 0x23, 0x04, 0x00, 0x64, + 0xb0, 0xc7, 0xc9, 0x47, 0x00, 0x80, 0xa0, 0xc7, 0xc9, 0x07, 0x00, 0xfe, + 0x0f, 0x44, 0x00, 0x48, 0x04, 0x5e, 0xc4, 0x48, 0x78, 0x84, 0x00, 0x66, + 0xf6, 0xbf, 0x7f, 0x00, 0x3c, 0x23, 0x8c, 0x00, 0x64, 0x01, 0x00, 0x00, + 0xcf, 0x01, 0xfe, 0x01, 0x04, 0x00, 0x8c, 0x05, 0x64, 0x01, 0x00, 0x00, + 0x6f, 0x01, 0xfe, 0x4b, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, 0x67, 0xc3, 0xfe, + 0x8f, 0x03, 0x80, 0x83, 0x13, 0x80, 0xbb, 0x23, 0x00, 0xc0, 0x00, 0x86, + 0x02, 0xbc, 0x9f, 0x00, 0x3c, 0x23, 0xa0, 0xcf, 0x7b, 0x67, 0xc3, 0xfe, + 0x63, 0xc3, 0xfe, 0xa7, 0x1f, 0xfe, 0xe7, 0x1f, 0xfe +}; +const unsigned char pmcdata[] = { + 0xb0, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x78, 0x05, 0x00, 0x04, + 0x30, 0x00, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 0x74, 0x05, 0x00, 0x04, + 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x04, + 0x1c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0xb8, 0x09, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x40, 0x40, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x00, 0x40, 0x40, + 0x40, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x00, 0x73, 0x63, 0x72, 0x61, + 0x74, 0x63, 0x68, 0x3a, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0a, + 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, + 0x42, 0x43, 0x44, 0x45, 0x46, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x00, 0x28, + 0x6e, 0x75, 0x6c, 0x6c, 0x29, 0x00, 0x00, 0x00, 0x5c, 0x16, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xa6, 0x1a, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xfb, 0x19, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0x63, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0x0f, 0x18, 0x0c, 0x00, + 0x27, 0x1b, 0x0c, 0x00, 0xc6, 0x1b, 0x0c, 0x00, 0xa5, 0x18, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xa6, 0x1a, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0x4f, 0x17, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0x74, 0x19, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xeb, 0x1a, 0x0c, 0x00, 0xfb, 0x19, 0x0c, 0x00, 0x25, 0x30, 0x34, 0x75, + 0x3a, 0x20, 0x00, 0x52, 0x4f, 0x20, 0x53, 0x56, 0x54, 0x20, 0x25, 0x64, + 0x20, 0x48, 0x56, 0x54, 0x20, 0x25, 0x64, 0x20, 0x4c, 0x56, 0x54, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x50, 0x4d, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x3a, + 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x0a, 0x00, 0x32, 0x30, + 0x30, 0x36, 0x32, 0x38, 0x5f, 0x31, 0x34, 0x32, 0x38, 0x00, 0x54, 0x53, + 0x3a, 0x25, 0x73, 0x0a, 0x00, 0x43, 0x48, 0x49, 0x44, 0x3a, 0x25, 0x78, + 0x0a, 0x00, 0x43, 0x52, 0x45, 0x56, 0x3a, 0x25, 0x78, 0x0a, 0x00, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x69, 0x70, + 0x0a, 0x00, 0x44, 0x41, 0x43, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x73, + 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x65, 0x70, 0x20, 0x44, 0x41, + 0x43, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x63, 0x75, 0x72, 0x5f, 0x64, + 0x61, 0x63, 0x20, 0x25, 0x75, 0x20, 0x63, 0x75, 0x72, 0x56, 0x20, 0x25, + 0x75, 0x20, 0x63, 0x75, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x20, 0x25, 0x75, + 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x25, 0x64, 0x20, 0x6e, 0x65, + 0x77, 0x5f, 0x64, 0x61, 0x63, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x41, 0x56, + 0x53, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x0a, 0x00, + 0x4d, 0x56, 0x41, 0x44, 0x43, 0x31, 0x20, 0x4d, 0x65, 0x61, 0x73, 0x75, + 0x72, 0x65, 0x64, 0x20, 0x25, 0x75, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x65, + 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x4d, 0x56, 0x41, 0x44, 0x43, + 0x32, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x56, 0x20, 0x44, 0x65, 0x6c, + 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, + 0x63, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x25, 0x75, 0x20, 0x4d, + 0x56, 0x0a, 0x00, 0x4c, 0x56, 0x54, 0x00, 0x48, 0x56, 0x54, 0x00, 0x64, + 0x65, 0x76, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x30, 0x78, 0x25, 0x78, + 0x20, 0x52, 0x4f, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x53, 0x56, 0x54, + 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x25, 0x75, 0x20, 0x52, 0x4f, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x25, 0x73, 0x20, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x00, 0x53, 0x56, 0x54, 0x00, 0x43, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x25, 0x73, 0x20, 0x52, 0x4f, 0x3a, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x54, + 0x68, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x25, 0x64, 0x20, 0x68, 0x69, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, 0x70, 0x20, 0x61, 0x6c, + 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x68, 0x69, + 0x67, 0x68, 0x20, 0x56, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, + 0x70, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, + 0x6e, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x56, 0x20, 0x25, 0x64, 0x0a, 0x00, + 0x52, 0x4f, 0x5b, 0x25, 0x64, 0x5d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x6f, 0x20, + 0x25, 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x25, 0x64, 0x20, + 0x76, 0x6c, 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, 0x4d, 0x56, 0x20, 0x5b, + 0x25, 0x64, 0x5d, 0x20, 0x76, 0x68, 0x69, 0x67, 0x68, 0x20, 0x25, 0x64, + 0x20, 0x4d, 0x56, 0x20, 0x5b, 0x25, 0x64, 0x5d, 0x20, 0x76, 0x6f, 0x6c, + 0x74, 0x61, 0x67, 0x65, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x61, 0x76, 0x73, + 0x5f, 0x64, 0x61, 0x63, 0x20, 0x25, 0x64, 0x20, 0x76, 0x63, 0x6f, 0x6e, + 0x76, 0x20, 0x25, 0x64, 0x6d, 0x56, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x20, 0x25, 0x64, 0x20, 0x6d, 0x56, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x5b, + 0x25, 0x64, 0x5d, 0x6d, 0x56, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x68, 0x69, + 0x67, 0x68, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6c, 0x6f, + 0x77, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x43, 0x6c, + 0x6f, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x63, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x64, 0x20, 0x43, 0x61, 0x6c, 0x63, + 0x69, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x25, 0x64, 0x20, 0x4d, 0x56, + 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x25, 0x64, 0x20, 0x4d, + 0x56, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x64, 0x61, 0x63, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, + 0x70, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, + 0x6e, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x0a, 0x00, 0x00, + 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x00, 0x92, 0x5e, 0x84, 0x4e, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x07, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, + 0xc8, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +}; +#endif //PMC_ROMDATA_68460_H diff --git a/arch/arm/mach-bcmbca/pmc/pmc_firmware_68560.h b/arch/arm/mach-bcmbca/pmc/pmc_firmware_68560.h new file mode 100644 index 0000000000..1b69d5f1ef --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_firmware_68560.h @@ -0,0 +1,2471 @@ +/* + * * <:copyright-BRCM:2017:DUAL/GPL:standard + * * + * * Copyright (c) 2017 Broadcom + * * All Rights Reserved + * * + * * This program is free software; you can redistribute it and/or modify + * * it under the terms of the GNU General Public License, version 2, as published by + * * the Free Software Foundation (the "GPL"). + * * + * * This program is distributed in the hope that it will be useful, + * * but WITHOUT ANY WARRANTY; without even the implied warranty of + * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * * GNU General Public License for more details. + * * + * * + * * A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + * * writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * * Boston, MA 02111-1307, USA. + * * + * * :> + * */ + +#ifndef PMC_ROMDATA_68560_H +#define PMC_ROMDATA_68560_H +#define CFG_BOOT_PMC3_START_ADDR 0xc0000 +#define CFG_BOOT_PMC3_DATA_ADDR 0x4000000 +#define PMC_VER_IMPL 3 +#define PMC_VER_MAJOR 4 +#define PMC_VER_MINOR 1 +const unsigned char pmcappdata[] = { + 0x01, 0x00, 0x00, 0x07, 0x12, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0xe5, 0x00, + 0x00, 0x64, 0x18, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xdc, 0xf7, 0x63, 0x00, + 0x00, 0x64, 0x20, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xec, 0xf3, 0x63, 0x1f, + 0x00, 0x60, 0x40, 0x00, 0x65, 0x5b, 0x02, 0xf2, 0xfd, 0xff, 0x81, 0xc0, + 0xff, 0x64, 0x33, 0x02, 0xf2, 0x67, 0xc3, 0xfe, 0x00, 0x00, 0x64, 0x18, + 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xe8, 0xeb, 0x63, 0xfd, 0xff, 0x00, 0xd4, + 0xff, 0x64, 0x55, 0xd5, 0xff, 0x4b, 0x55, 0x45, 0xc8, 0xc8, 0xfc, 0x01, + 0x00, 0x00, 0xcc, 0xeb, 0x63, 0x00, 0x00, 0x64, 0x20, 0x00, 0xc8, 0x03, + 0x0c, 0xe5, 0xfd, 0xf3, 0xff, 0x37, 0x1c, 0xfe, 0x07, 0x0c, 0xe5, 0x03, + 0x00, 0x80, 0x00, 0x3c, 0x23, 0x0f, 0x20, 0xe5, 0x08, 0x00, 0x64, 0x04, + 0x04, 0x64, 0x00, 0x0c, 0x64, 0x01, 0x00, 0x00, 0xcc, 0x8b, 0x63, 0x01, + 0x00, 0x04, 0x00, 0x01, 0x64, 0xd8, 0xff, 0x63, 0x04, 0x00, 0x66, 0x2e, + 0x00, 0x60, 0x00, 0x0c, 0x64, 0x08, 0x00, 0x64, 0x04, 0x08, 0x64, 0x01, + 0x00, 0x00, 0xd4, 0x83, 0x63, 0x01, 0x0c, 0x00, 0x00, 0x08, 0x64, 0x50, + 0x01, 0xc8, 0xe8, 0xf3, 0x63, 0xa3, 0x00, 0x60, 0xd4, 0x00, 0x64, 0x01, + 0x00, 0x04, 0x18, 0x04, 0x64, 0x34, 0x14, 0x72, 0x14, 0x01, 0x64, 0x01, + 0x00, 0x04, 0x18, 0x0d, 0x74, 0x9c, 0x14, 0x72, 0xbb, 0xbf, 0x7f, 0x82, + 0x41, 0x20, 0xfc, 0xf7, 0x63, 0x22, 0x40, 0x20, 0x83, 0x11, 0x00, 0xf0, + 0xf7, 0x63, 0xa3, 0x03, 0x90, 0x83, 0x21, 0x00, 0xe4, 0xf7, 0x63, 0x87, + 0x23, 0x80, 0x0a, 0x40, 0x20, 0x02, 0x42, 0x20, 0xdf, 0x05, 0x00, 0xfc, + 0x8f, 0x62, 0x6c, 0x1d, 0x3a, 0x9b, 0x31, 0x00, 0xc6, 0xbf, 0x7f, 0xaf, + 0xbf, 0x7f, 0x82, 0x41, 0x20, 0xf8, 0xf3, 0x63, 0x22, 0x40, 0x20, 0x83, + 0x11, 0x00, 0xec, 0xf3, 0x63, 0x0a, 0x40, 0x20, 0x03, 0x02, 0x50, 0xe0, + 0x8f, 0x62, 0xdf, 0x05, 0x00, 0x6c, 0x1d, 0x3a, 0x9b, 0x21, 0x00, 0xd6, + 0xbf, 0x7f, 0x43, 0xbf, 0x7f, 0x01, 0x00, 0x04, 0x00, 0x02, 0x64, 0xc0, + 0xf3, 0x63, 0x1a, 0x40, 0x20, 0x01, 0x00, 0x04, 0x00, 0x03, 0x64, 0xf0, + 0xef, 0x63, 0x1e, 0x40, 0x20, 0x08, 0x00, 0x64, 0x00, 0x0c, 0x64, 0x04, + 0x0c, 0x64, 0x05, 0x00, 0x00, 0x14, 0x60, 0x55, 0x01, 0x00, 0x00, 0xd0, + 0xd7, 0x62, 0x01, 0x0c, 0x00, 0x40, 0x79, 0x64, 0x20, 0x00, 0xc8, 0x4a, + 0x41, 0x20, 0x80, 0x9d, 0x1d, 0xd0, 0x8b, 0x62, 0x00, 0x0c, 0x64, 0x08, + 0x00, 0x64, 0x04, 0x0e, 0x64, 0x01, 0x00, 0x00, 0xcc, 0xcf, 0x62, 0x00, + 0x00, 0x64, 0x18, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xfc, 0x9b, 0x63, 0x00, + 0x0c, 0x64, 0x8a, 0x41, 0x20, 0x04, 0x10, 0x64, 0x01, 0x00, 0x00, 0xe0, + 0xc7, 0x62, 0x00, 0x00, 0x64, 0x28, 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x80, + 0x9d, 0x1d, 0xfd, 0xf3, 0xff, 0xf8, 0x93, 0x63, 0x4a, 0x41, 0x20, 0x80, + 0x9d, 0x1d, 0x01, 0x00, 0x00, 0xc8, 0xc7, 0x62, 0x88, 0x08, 0x31, 0x18, + 0x08, 0xca, 0x48, 0x10, 0x5a, 0x10, 0x08, 0x7a, 0x00, 0x3c, 0x23, 0x0c, + 0x00, 0x64, 0x4c, 0xcc, 0x1e, 0x84, 0x08, 0x31, 0x10, 0x04, 0xca, 0x10, + 0x0c, 0x7a, 0x00, 0x3c, 0x23, 0x03, 0x08, 0xe6, 0x05, 0x00, 0x00, 0x00, + 0x62, 0x52, 0x04, 0x00, 0x66, 0x52, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, + 0x70, 0x55, 0x18, 0x05, 0x64, 0x44, 0x00, 0x72, 0x83, 0x05, 0x40, 0x09, + 0x00, 0x00, 0x04, 0xc2, 0x80, 0x05, 0x00, 0x00, 0x00, 0x64, 0x55, 0x69, + 0x00, 0x00, 0xec, 0x87, 0x63, 0x05, 0x00, 0x00, 0x00, 0x64, 0x55, 0x86, + 0x41, 0x20, 0x69, 0x00, 0x00, 0xf0, 0x83, 0x63, 0x40, 0x00, 0x64, 0x05, + 0x00, 0x00, 0x44, 0xc0, 0x7e, 0x07, 0x0c, 0xe6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xdc, 0x93, 0x62, 0x00, 0x04, 0x64, 0x04, 0x04, 0x64, 0x08, 0x00, 0x64, + 0x93, 0x40, 0x60, 0x01, 0x00, 0x04, 0x38, 0x00, 0x55, 0xba, 0x4f, 0x00, + 0xcd, 0xab, 0x89, 0xc8, 0x7b, 0x64, 0x45, 0x23, 0x01, 0xcc, 0x59, 0x64, + 0x05, 0x00, 0x00, 0x00, 0x6c, 0x64, 0x86, 0x43, 0x20, 0xd0, 0x87, 0x62, + 0xbb, 0x63, 0x00, 0x80, 0x03, 0xe6, 0x00, 0x04, 0x64, 0x04, 0x06, 0x64, + 0x08, 0x00, 0x64, 0x4f, 0x40, 0x60, 0x04, 0x00, 0x64, 0x4c, 0x04, 0x48, + 0xc3, 0x07, 0xf6, 0x3b, 0x00, 0xf2, 0x00, 0x04, 0x64, 0x04, 0x08, 0x64, + 0x08, 0x00, 0x64, 0x2f, 0x40, 0x60, 0x83, 0xc2, 0xfe, 0x02, 0x60, 0x07, + 0x03, 0x78, 0xfe, 0xfd, 0xff, 0xff, 0x37, 0x0f, 0xfe, 0x47, 0xc0, 0xf2, + 0x44, 0x0c, 0x31, 0x10, 0x04, 0xca, 0x08, 0x08, 0xe8, 0x00, 0x3c, 0x23, + 0x00, 0x20, 0x2b, 0x03, 0x44, 0xfb, 0x83, 0x40, 0xf1, 0x09, 0x00, 0x00, + 0x84, 0xc1, 0x80, 0x05, 0x12, 0x00, 0x84, 0x40, 0x80, 0x00, 0x3c, 0x23, + 0x03, 0x18, 0xe5, 0x18, 0x84, 0x1d, 0x96, 0x40, 0x20, 0x00, 0x0c, 0x64, + 0x08, 0x00, 0x64, 0x04, 0x14, 0x64, 0xc8, 0xff, 0x63, 0x00, 0x00, 0x64, + 0x18, 0x00, 0xc8, 0xfd, 0xf3, 0xff, 0xd4, 0xc7, 0x62, 0x8a, 0x41, 0x20, + 0x00, 0x14, 0x74, 0xec, 0xfb, 0x63, 0x80, 0x9d, 0x1d, 0x4a, 0x41, 0x20, + 0xa3, 0x6c, 0x60, 0x1a, 0x40, 0x20, 0x0a, 0x40, 0x20, 0x00, 0x1c, 0x74, + 0xd0, 0xfb, 0x63, 0x82, 0x41, 0x20, 0xe4, 0xdf, 0x62, 0x08, 0x00, 0x74, + 0xc0, 0x3f, 0x64, 0x00, 0x08, 0x1d, 0x14, 0x00, 0x64, 0x50, 0x37, 0x64, + 0x44, 0x09, 0x1e, 0x57, 0x05, 0x00, 0x13, 0x45, 0x00, 0xec, 0xd3, 0x73, + 0x88, 0x03, 0x64, 0x0b, 0x0b, 0xf2, 0x9f, 0x01, 0xf2, 0xc7, 0x01, 0xf2, + 0xef, 0x01, 0xf2, 0x17, 0x02, 0xf2, 0x3f, 0x02, 0xf2, 0x67, 0x02, 0xf2, + 0xe7, 0x41, 0xf2, 0xff, 0x40, 0xf2, 0x87, 0x03, 0xf2, 0xcf, 0x41, 0xf2, + 0x48, 0x00, 0x64, 0x73, 0x0a, 0xf2, 0x48, 0x00, 0x64, 0xf3, 0x0a, 0xf2, + 0x88, 0xc4, 0x64, 0xc3, 0x4a, 0xf2, 0x05, 0x0c, 0x00, 0x08, 0x29, 0x64, + 0xb3, 0x0a, 0xf2, 0x05, 0x0c, 0x00, 0x08, 0x14, 0x64, 0xbb, 0x0a, 0xf2, + 0x05, 0x0c, 0x00, 0x88, 0x1e, 0x64, 0xc3, 0x0a, 0xf2, 0x05, 0x0c, 0x00, + 0x88, 0x33, 0x64, 0xcb, 0x0a, 0xf2, 0x05, 0x0c, 0x00, 0x08, 0x3e, 0x64, + 0xd3, 0x0a, 0xf2, 0x05, 0x0c, 0x00, 0x88, 0x54, 0x64, 0xdb, 0x0a, 0xf2, + 0x05, 0x0c, 0x00, 0x48, 0x55, 0x64, 0xe3, 0x0a, 0xf2, 0x01, 0x0c, 0x00, + 0x8c, 0x08, 0x64, 0x6d, 0x0c, 0x00, 0x08, 0x18, 0x64, 0x1b, 0x0f, 0xf2, + 0x23, 0x0b, 0xf2, 0xfd, 0xff, 0xff, 0xc8, 0xff, 0x64, 0xfd, 0xff, 0x00, + 0xcc, 0xff, 0x64, 0xcf, 0x48, 0xf2, 0xdf, 0x40, 0xf2, 0x67, 0xc3, 0xfe, + 0x83, 0xc2, 0xfe, 0x00, 0x10, 0x94, 0x03, 0x78, 0xfe, 0x01, 0xad, 0xde, + 0x00, 0x00, 0x64, 0x07, 0x04, 0x00, 0x0b, 0x08, 0x00, 0x0f, 0x0c, 0x00, + 0x13, 0x10, 0x00, 0x17, 0x14, 0x00, 0x1b, 0x18, 0x00, 0x1f, 0x1c, 0x00, + 0x23, 0x20, 0x00, 0x27, 0x24, 0x00, 0x2b, 0x28, 0x00, 0x2f, 0x2c, 0x00, + 0x33, 0x30, 0x00, 0x37, 0x34, 0x00, 0x3b, 0x38, 0x00, 0x00, 0x60, 0x26, + 0x00, 0xe0, 0x26, 0x00, 0x3c, 0x23, 0x8b, 0xc2, 0xfe, 0x82, 0x48, 0x20, + 0x03, 0x78, 0xfe, 0xfd, 0xff, 0xff, 0xc0, 0xff, 0x64, 0xfd, 0xff, 0x00, + 0xc4, 0xff, 0x64, 0xc0, 0xc0, 0xfc, 0x47, 0x80, 0xf8, 0x83, 0x78, 0xfe, + 0xcf, 0x40, 0xf2, 0x00, 0x3c, 0x23, 0x03, 0x08, 0xe0, 0x8e, 0x1c, 0x00, + 0x90, 0x0c, 0x31, 0x10, 0x0c, 0xca, 0x04, 0x04, 0x78, 0x08, 0x00, 0x64, + 0x48, 0x08, 0x1d, 0x10, 0x10, 0xca, 0x08, 0x08, 0xe8, 0x07, 0x0c, 0xe0, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0xa3, 0x7f, 0x90, 0x3f, 0x40, 0xfd, + 0x93, 0x7f, 0x90, 0x3f, 0xa9, 0xf1, 0xa3, 0x3f, 0x90, 0xbf, 0xa9, 0xf1, + 0xb3, 0x3f, 0x90, 0x3f, 0xaa, 0xf1, 0x19, 0x00, 0x00, 0x80, 0x40, 0x74, + 0x83, 0x7f, 0x90, 0xec, 0x93, 0x62, 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, + 0xa3, 0x7f, 0x90, 0x3f, 0x40, 0xfd, 0x93, 0x7f, 0x90, 0x3f, 0xa9, 0xf1, + 0xa3, 0x3f, 0x90, 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x3f, 0xaa, 0xf1, + 0x19, 0x00, 0x00, 0xc0, 0x40, 0x74, 0x83, 0x7f, 0x90, 0xf4, 0x8f, 0x62, + 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, 0xa3, 0x7f, 0x90, 0x3f, 0x40, 0xfd, + 0x93, 0x7f, 0x90, 0x3f, 0xa9, 0xf1, 0xa3, 0x3f, 0x90, 0xbf, 0xa9, 0xf1, + 0xb3, 0x3f, 0x90, 0x3f, 0xaa, 0xf1, 0x19, 0x00, 0x00, 0x40, 0x40, 0x74, + 0x83, 0x7f, 0x90, 0xfc, 0x8b, 0x62, 0x2b, 0x28, 0xe0, 0x3f, 0x00, 0xfd, + 0xa3, 0x7f, 0x90, 0x3f, 0x40, 0xfd, 0x93, 0x7f, 0x90, 0x3f, 0xa9, 0xf1, + 0xa3, 0x3f, 0x90, 0xbf, 0xa9, 0xf1, 0xb3, 0x3f, 0x90, 0x3f, 0xaa, 0xf1, + 0x19, 0x00, 0x00, 0x80, 0x41, 0x74, 0x83, 0x7f, 0x90, 0xc4, 0x8b, 0x62, + 0x27, 0x00, 0xf2, 0x2f, 0x08, 0xf2, 0x00, 0x00, 0x55, 0x8b, 0xa0, 0xf1, + 0x07, 0xa0, 0xf1, 0x87, 0xc4, 0xfb, 0x46, 0x08, 0x00, 0xb0, 0x04, 0xc8, + 0xfd, 0xff, 0xff, 0xc8, 0xff, 0x64, 0xfd, 0xff, 0x00, 0xcc, 0xff, 0x64, + 0xc8, 0xc8, 0xfc, 0x03, 0x44, 0x00, 0x04, 0x00, 0x80, 0x40, 0x00, 0xc8, + 0xcf, 0x48, 0xf2, 0x80, 0x00, 0x64, 0x13, 0x02, 0xf2, 0x43, 0x82, 0xf1, + 0xcb, 0x82, 0xf1, 0x67, 0xc3, 0xfe, 0x37, 0xc3, 0xfe, 0x04, 0x01, 0x55, + 0x00, 0x02, 0x52, 0x04, 0x04, 0x80, 0x44, 0x00, 0x65, 0x44, 0x04, 0x7e, + 0xa0, 0xc3, 0xc9, 0xe7, 0x01, 0xfe, 0xdf, 0x01, 0xfe, 0xd7, 0x01, 0xfe, + 0x1b, 0x80, 0xe5, 0x09, 0x00, 0x00, 0xc4, 0xc1, 0x82, 0x3c, 0x7c, 0xb9, + 0xb3, 0x23, 0x00, 0x57, 0x3c, 0xfe, 0x0e, 0x00, 0x60, 0x09, 0x00, 0x00, + 0xd4, 0xd5, 0x82, 0x07, 0x00, 0xfd, 0x9b, 0x1f, 0x40, 0xbb, 0xd3, 0x00, + 0x23, 0x07, 0xb0, 0xa3, 0x1b, 0xb0, 0x87, 0x23, 0x00, 0x01, 0x00, 0xf0, + 0x48, 0x00, 0x64, 0x47, 0x08, 0x90, 0x03, 0x3c, 0xfe, 0xb7, 0x03, 0x90, + 0x48, 0x02, 0x64, 0x40, 0x00, 0x64, 0xec, 0x93, 0x62, 0x06, 0x23, 0xe0, + 0xfa, 0x41, 0x20, 0x40, 0x60, 0x26, 0x32, 0x00, 0x60, 0xbb, 0xd3, 0x00, + 0x87, 0x23, 0x00, 0xa3, 0x1b, 0xb0, 0x01, 0x00, 0xf0, 0x40, 0x08, 0x64, + 0x47, 0x00, 0x90, 0xb7, 0x17, 0x90, 0x48, 0x02, 0x64, 0x40, 0x00, 0x64, + 0xf4, 0x8f, 0x62, 0xfa, 0x41, 0x20, 0x03, 0x1f, 0x40, 0x03, 0x03, 0xb0, + 0x01, 0x00, 0xf0, 0x40, 0x0b, 0x64, 0x07, 0x03, 0x90, 0x48, 0x01, 0x64, + 0x40, 0x00, 0x64, 0xd0, 0x8f, 0x62, 0x40, 0x00, 0x64, 0xe0, 0xa3, 0x62, + 0x40, 0x84, 0x62, 0x80, 0x00, 0x64, 0x1b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x83, 0xa0, 0xf1, 0x02, 0x48, 0x20, 0x0b, 0x02, 0xf2, 0x67, 0xc3, 0xfe, + 0x07, 0x00, 0xfe, 0x5c, 0x80, 0x62, 0x43, 0xe0, 0xf1, 0xf1, 0xbf, 0xff, + 0x00, 0x00, 0x64, 0x07, 0x42, 0xf2, 0x67, 0xc3, 0xfe, 0x8f, 0x1f, 0xfe, + 0x83, 0xc2, 0xfe, 0x02, 0x78, 0x27, 0x03, 0x78, 0xfe, 0x00, 0x04, 0x23, + 0x00, 0x7c, 0x31, 0x00, 0xfc, 0xa1, 0x00, 0x3c, 0x23, 0x03, 0x18, 0xe5, + 0x18, 0x84, 0x1d, 0x09, 0x00, 0x00, 0x00, 0x6f, 0x55, 0x96, 0x40, 0x20, + 0x28, 0x00, 0xc8, 0x4a, 0x41, 0x20, 0x80, 0x9d, 0x1d, 0x03, 0x48, 0x61, + 0x43, 0x00, 0x60, 0x08, 0x00, 0x64, 0x00, 0x00, 0x74, 0xf3, 0x47, 0x61, + 0xfd, 0xff, 0xff, 0x3c, 0x7c, 0x87, 0x12, 0x00, 0x60, 0x40, 0x00, 0x64, + 0x09, 0x00, 0x00, 0xe4, 0xc1, 0x80, 0x09, 0x00, 0x00, 0x00, 0x6f, 0x55, + 0x8c, 0xc3, 0x73, 0x4a, 0x41, 0x20, 0x80, 0x9d, 0x1d, 0xd4, 0xfb, 0x63, + 0x07, 0x1c, 0xe5, 0x03, 0x00, 0xe0, 0xcc, 0x01, 0x64, 0x43, 0x0c, 0xb0, + 0xcc, 0xfb, 0x63, 0x03, 0x60, 0x20, 0x07, 0x04, 0xe0, 0x07, 0x10, 0xe5, + 0x16, 0x40, 0x20, 0x44, 0x00, 0x64, 0x9a, 0x05, 0x20, 0x9b, 0xc5, 0xfb, + 0x30, 0x18, 0xc8, 0x00, 0x00, 0x64, 0xc0, 0xd7, 0x1f, 0x04, 0x00, 0x64, + 0xd4, 0xc3, 0x73, 0x0b, 0x00, 0x60, 0x40, 0x00, 0x64, 0x07, 0x14, 0xe5, + 0x04, 0x03, 0x64, 0x00, 0x44, 0x24, 0x05, 0x00, 0x00, 0x03, 0x20, 0x0c, + 0x02, 0x04, 0xe0, 0x00, 0x3c, 0x23, 0x04, 0x03, 0x64, 0x00, 0x44, 0x24, + 0x05, 0x00, 0x00, 0x03, 0x20, 0x0c, 0x03, 0x10, 0x80, 0x00, 0x00, 0x86, + 0x03, 0x00, 0xfd, 0x00, 0x3c, 0x23, 0x0b, 0x08, 0xe6, 0x18, 0x05, 0x64, + 0x87, 0x29, 0x00, 0x00, 0x00, 0x92, 0x9b, 0x85, 0xf9, 0x04, 0x00, 0x64, + 0x28, 0x04, 0xc8, 0xa3, 0x03, 0x90, 0xf9, 0xf3, 0xff, 0xe8, 0xc3, 0x62, + 0x83, 0x23, 0x80, 0x88, 0x01, 0xd0, 0x05, 0x00, 0x00, 0x04, 0x64, 0x55, + 0x40, 0x08, 0xd8, 0x05, 0x00, 0x00, 0x64, 0xc0, 0x80, 0x40, 0x00, 0x64, + 0x05, 0x00, 0x00, 0x4c, 0xc0, 0x7e, 0x8a, 0x21, 0xc0, 0x63, 0x08, 0xa0, + 0x0f, 0x0c, 0xe6, 0x03, 0x10, 0xe6, 0x05, 0x0c, 0x00, 0x1b, 0xd0, 0x5a, + 0x0a, 0x40, 0x20, 0x04, 0x24, 0x64, 0xc0, 0x3f, 0x64, 0xc4, 0xa3, 0x63, + 0x82, 0x41, 0x20, 0xc4, 0xfb, 0x63, 0xc2, 0x41, 0x20, 0xd0, 0xf3, 0x63, + 0x00, 0x00, 0x66, 0x0e, 0x00, 0x40, 0xf0, 0xbb, 0x63, 0xef, 0xbf, 0x7f, + 0x05, 0x0c, 0x00, 0x80, 0xb1, 0x64, 0xf4, 0xef, 0x63, 0xc0, 0x3f, 0x64, + 0x8a, 0x41, 0x20, 0x04, 0x25, 0x64, 0xc8, 0x9f, 0x63, 0x09, 0x00, 0x00, + 0x00, 0x71, 0x52, 0x04, 0x00, 0x66, 0x0e, 0x00, 0x60, 0x82, 0x41, 0x20, + 0x63, 0x46, 0x61, 0xf4, 0xb7, 0x63, 0xff, 0xbf, 0x7f, 0x03, 0x00, 0xe0, + 0x05, 0x00, 0x00, 0x10, 0x61, 0x55, 0xc0, 0xd3, 0x1f, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x80, 0xa2, 0xa3, 0x03, 0x90, + 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x87, 0x23, 0x80, 0x03, 0x20, 0x00, + 0x03, 0x04, 0x90, 0x1f, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x76, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0a, 0x00, 0x60, 0x33, 0x6c, 0x60, + 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x03, 0x20, 0x80, 0x3c, 0x7c, 0xb3, + 0xda, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, + 0xcc, 0xfb, 0x63, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0xa3, 0x03, 0x90, + 0x1b, 0x00, 0x60, 0x83, 0x23, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x07, 0x90, + 0x04, 0x00, 0x64, 0x03, 0x04, 0xb0, 0x83, 0x53, 0x80, 0x07, 0x44, 0x00, + 0x93, 0x47, 0x90, 0x00, 0x00, 0x92, 0xde, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x03, 0xb0, 0x80, 0xa3, 0x03, 0x90, 0x83, 0x63, 0x80, + 0x0d, 0x00, 0x00, 0x02, 0xbc, 0x1f, 0xb3, 0x03, 0x90, 0x83, 0x63, 0x80, + 0x00, 0x30, 0x27, 0x02, 0x1c, 0x00, 0x83, 0x43, 0x90, 0x5b, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, + 0x07, 0x3c, 0xfe, 0x83, 0x33, 0x80, 0x6c, 0x00, 0x48, 0x2e, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x83, 0x43, 0x80, 0x6c, 0x00, 0x48, 0x0e, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x33, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x3d, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, 0x96, 0xbf, 0x7f, + 0x00, 0x00, 0x64, 0x37, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0xba, 0x22, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x83, 0x23, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, + 0x00, 0x00, 0x92, 0x1e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x00, 0x00, 0x64, 0x1b, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x23, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x17, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0xa3, 0x4b, 0x90, 0xb3, 0x4f, 0x90, 0x00, 0x00, 0x64, + 0xa3, 0x03, 0x90, 0x83, 0x53, 0x80, 0xfd, 0xff, 0xff, 0x3c, 0x7c, 0x93, + 0x2a, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0x00, 0x00, 0xb2, 0x0e, 0x00, 0x60, + 0x40, 0x00, 0x64, 0xc7, 0x00, 0x60, 0x83, 0x63, 0x80, 0xfd, 0xff, 0xff, + 0x38, 0x7c, 0x87, 0x42, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, + 0xfd, 0xff, 0xff, 0x3c, 0x7c, 0x85, 0x2e, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0xec, 0xe7, 0x63, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, 0x0e, 0x00, 0x60, 0x80, 0x00, 0x64, + 0x7b, 0x00, 0x60, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x6a, 0x00, 0x60, + 0x83, 0x73, 0x80, 0xfd, 0xff, 0xff, 0x38, 0x7c, 0x87, 0x5a, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x01, 0xff, 0x03, 0x02, 0x00, 0x00, + 0x01, 0xff, 0x03, 0x00, 0x00, 0x86, 0x3e, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x07, 0x3c, 0xfe, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x5c, 0x31, 0x02, 0x40, 0x00, + 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, 0x0e, 0x00, 0x60, 0xc0, 0x00, 0x64, + 0x0b, 0x00, 0x60, 0x00, 0x00, 0x64, 0x37, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x83, 0x23, 0x80, 0x00, 0x04, 0x92, + 0x36, 0x00, 0x60, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x87, 0x33, 0x80, + 0x46, 0x1c, 0x00, 0x4e, 0x1c, 0x00, 0x06, 0x00, 0xe0, 0x46, 0x5c, 0x00, + 0x4a, 0x40, 0x20, 0xc6, 0x40, 0x20, 0x87, 0x44, 0xfb, 0x03, 0x04, 0xb0, + 0x43, 0x00, 0x60, 0x83, 0x33, 0x80, 0x02, 0x3c, 0x00, 0x0a, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x23, 0x80, 0x43, 0x80, 0xf2, + 0x03, 0xa0, 0x01, 0x8e, 0x3c, 0x00, 0x06, 0x00, 0xe0, 0x46, 0x7c, 0x00, + 0x4a, 0x40, 0x20, 0xc6, 0x40, 0x20, 0x87, 0x44, 0xfb, 0x03, 0x04, 0xb0, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xb3, 0x07, 0x90, 0x83, 0x23, 0x80, 0x00, 0x04, 0x92, 0x3a, 0x00, 0x60, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x87, 0x33, 0x80, 0x46, 0x0c, 0x00, + 0x46, 0x0c, 0x00, 0x4c, 0x0c, 0x2b, 0x06, 0x00, 0xe0, 0x46, 0xe0, 0x00, + 0x4a, 0x40, 0x20, 0xc6, 0x40, 0x20, 0x87, 0x44, 0xfb, 0x03, 0x04, 0xb0, + 0x47, 0x00, 0x60, 0x83, 0x33, 0x80, 0x02, 0x0c, 0x00, 0x0a, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x23, 0x80, 0x43, 0x80, 0xf2, + 0x03, 0xa0, 0x01, 0x86, 0x0c, 0x00, 0x4c, 0x10, 0x2b, 0x06, 0x00, 0xe0, + 0x46, 0xc0, 0x01, 0x4a, 0x40, 0x20, 0xc6, 0x40, 0x20, 0x87, 0x44, 0xfb, + 0x03, 0x04, 0xb0, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x33, 0x00, 0xe0, + 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, 0x83, 0x43, 0x90, 0x00, 0x0a, 0x64, + 0xa3, 0x03, 0x90, 0xa3, 0x58, 0x60, 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, + 0x03, 0xb0, 0x81, 0x3c, 0x7c, 0xb3, 0x1a, 0x00, 0x60, 0x11, 0x10, 0x00, + 0x00, 0x06, 0x64, 0x87, 0x63, 0x80, 0x03, 0x30, 0x03, 0x03, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x43, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0xb3, 0x47, 0x90, 0x83, 0x8b, 0x90, 0x93, 0x8f, 0x90, 0x00, 0x00, 0x64, + 0xa3, 0x03, 0x90, 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, 0x00, 0x50, 0x31, 0x02, 0xbc, 0x1f, + 0x07, 0x3c, 0xfe, 0x83, 0x63, 0x80, 0x44, 0x40, 0x24, 0x83, 0x83, 0x80, + 0x0b, 0x0c, 0x00, 0x3c, 0x7c, 0xb3, 0x83, 0x80, 0xf9, 0x00, 0x08, 0x27, + 0x43, 0x80, 0xf2, 0x83, 0x43, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x04, 0x00, 0x64, 0x83, 0x93, 0x00, + 0x03, 0x04, 0x90, 0x83, 0x43, 0x80, 0xfd, 0x0f, 0x00, 0x02, 0xbc, 0x1f, + 0xfd, 0x0f, 0x00, 0x02, 0xbc, 0x1f, 0x87, 0x53, 0x80, 0x01, 0xf0, 0xff, + 0x46, 0x00, 0x00, 0x47, 0x40, 0xfb, 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, + 0x83, 0x53, 0x80, 0x04, 0x3c, 0xa4, 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, + 0x83, 0x73, 0x80, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x02, 0x1c, 0x00, + 0x00, 0x50, 0x2b, 0x87, 0x53, 0x80, 0x44, 0xc0, 0x9d, 0x47, 0x40, 0xfb, + 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, 0x83, 0x53, 0x80, 0x04, 0x00, 0xa2, + 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x87, 0x53, 0x80, 0x03, 0x00, 0x09, 0x03, 0x04, 0x90, 0x04, 0x00, 0x64, + 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x07, 0x80, 0x84, 0x83, 0x93, 0x00, 0x03, 0x04, 0x90, 0x27, 0x00, 0x60, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x84, 0x83, 0x93, 0x00, + 0x03, 0x04, 0x90, 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, + 0x83, 0x53, 0x80, 0x00, 0x70, 0x31, 0x02, 0x04, 0x00, 0x04, 0x00, 0x66, + 0xd2, 0xbf, 0x7f, 0x83, 0x53, 0x80, 0x00, 0x74, 0x31, 0x02, 0x04, 0x00, + 0x00, 0x00, 0x66, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0xc4, 0x04, 0x64, 0x0b, 0x04, 0xa0, 0x3f, 0x00, 0x60, 0x83, 0x53, 0x80, + 0x00, 0x78, 0x31, 0x02, 0x04, 0x00, 0x00, 0x00, 0x66, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x02, 0x64, 0x0b, 0x04, 0xa0, + 0x17, 0x00, 0x60, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0xb0, 0x84, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x47, 0x04, 0xe0, 0x33, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0xa3, 0x4b, 0x90, 0xb3, 0x4f, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, 0x00, 0x50, 0x31, + 0x02, 0xbc, 0x1f, 0x07, 0x3c, 0xfe, 0x83, 0x43, 0x80, 0x44, 0x40, 0x24, + 0x83, 0x63, 0x80, 0x0b, 0x0c, 0x00, 0x3c, 0x7c, 0xb3, 0x83, 0x80, 0xf9, + 0x00, 0x08, 0x27, 0x43, 0x80, 0xf2, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x87, 0x73, 0x80, 0x03, 0x10, 0x09, 0x03, 0x04, 0x90, + 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, 0xfd, 0x0f, 0x00, + 0x02, 0xbc, 0x1f, 0xfd, 0x0f, 0x00, 0x02, 0xbc, 0x1f, 0x87, 0x33, 0x80, + 0x01, 0xf0, 0xff, 0x46, 0x00, 0x00, 0x43, 0x40, 0xfb, 0xb3, 0x03, 0x90, + 0x83, 0x33, 0x80, 0x00, 0x3c, 0xa4, 0x00, 0x04, 0xa0, 0xb3, 0x03, 0x90, + 0x83, 0x53, 0x80, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x02, 0x1c, 0x00, + 0x00, 0x50, 0x2b, 0x87, 0x33, 0x80, 0x44, 0xc0, 0x9d, 0x43, 0x40, 0xfb, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x00, 0x00, 0xa2, 0xb3, 0x03, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x87, 0x33, 0x80, 0x03, 0x00, 0x09, + 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x80, 0x84, + 0xb3, 0x03, 0x90, 0x17, 0x00, 0x60, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x03, 0x80, 0x84, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x01, 0x00, 0x10, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x92, 0xe2, 0xbf, 0x7f, 0x83, 0x33, 0x80, + 0x01, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc4, 0x04, 0x64, 0x0b, 0x04, 0xa0, + 0x2b, 0x00, 0x60, 0x83, 0x33, 0x80, 0x01, 0x00, 0x40, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x16, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x04, 0x02, 0x64, 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, 0x13, 0x3c, 0xfe, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x03, 0x38, 0xfe, 0x0c, 0x00, 0x64, 0x8b, 0x33, 0x80, 0x06, 0x40, 0x20, + 0x02, 0x41, 0x20, 0xf4, 0xc7, 0x63, 0x17, 0x04, 0xe0, 0x33, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0xa3, 0x4b, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, 0x13, 0x3c, 0xfe, + 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x03, 0x38, 0xfe, 0x04, 0x00, 0x64, 0xa3, 0x07, 0x90, 0x8f, 0x63, 0x80, + 0x8b, 0x53, 0x80, 0x06, 0x40, 0x20, 0x02, 0x41, 0x20, 0xe0, 0xdf, 0x63, + 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0xa3, 0x4b, 0x90, 0x83, 0x53, 0x80, 0x00, 0x14, 0x2b, + 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x43, 0x80, 0xf4, 0xf3, 0x63, + 0xa3, 0x03, 0x90, 0x83, 0x63, 0x80, 0x00, 0x00, 0x92, 0x03, 0x00, 0xfd, + 0x02, 0x04, 0x00, 0x03, 0x38, 0xfe, 0x02, 0x04, 0x00, 0x00, 0x28, 0x2b, + 0x87, 0x23, 0x80, 0x44, 0x10, 0x94, 0x43, 0x40, 0xfb, 0xa3, 0x03, 0x90, + 0x83, 0x63, 0x80, 0x00, 0x00, 0x86, 0x03, 0x00, 0xfd, 0x02, 0x04, 0x00, + 0x03, 0x38, 0xfe, 0x02, 0x04, 0x00, 0x00, 0x24, 0x2b, 0x87, 0x23, 0x80, + 0x44, 0x08, 0x94, 0x43, 0x40, 0xfb, 0xa3, 0x03, 0x90, 0x83, 0x53, 0x80, + 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0x0a, 0x40, 0x20, 0x83, 0x43, 0x80, 0xc4, 0xf3, 0x63, 0x4b, 0xc3, 0xfe, + 0x37, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, + 0x02, 0x04, 0x00, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x4f, 0x01, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, + 0x00, 0x10, 0x31, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x02, 0x64, + 0x0b, 0x04, 0xa0, 0x07, 0x01, 0x60, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0xd3, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x83, 0x23, 0x80, 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, + 0x06, 0x40, 0x20, 0x83, 0x43, 0x80, 0xf8, 0xdf, 0x63, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x86, 0x00, 0x60, 0x83, 0x33, 0x80, 0x02, 0x00, 0x04, 0x00, 0x00, 0x92, + 0x76, 0x00, 0x60, 0x83, 0x33, 0x80, 0x01, 0x00, 0x04, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x92, 0x62, 0x00, 0x60, 0x83, 0x33, 0x80, 0x00, 0x20, 0x98, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x00, 0x40, 0x98, 0xb3, 0x03, 0x90, + 0x83, 0x33, 0x80, 0x02, 0x40, 0x28, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x00, 0x10, 0x98, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x00, 0x08, 0x94, + 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, + 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, 0x83, 0x43, 0x80, + 0xec, 0xdb, 0x63, 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x00, 0x5c, 0x31, 0x02, 0x40, 0x00, + 0x07, 0x38, 0xfe, 0x83, 0x23, 0x80, 0x7c, 0x00, 0x3a, 0x1a, 0xbf, 0x7f, + 0xc0, 0x2b, 0x64, 0x8b, 0xf5, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x00, 0x86, + 0x1a, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, + 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x87, 0x01, 0x60, 0x83, 0x43, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, 0x00, 0x10, 0x31, + 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x02, 0x64, 0x0b, 0x04, 0xa0, + 0x3f, 0x01, 0x60, 0x04, 0x20, 0x64, 0x83, 0x43, 0x80, 0xd4, 0xcb, 0x63, + 0xb3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, + 0x00, 0x00, 0x90, 0x1a, 0x01, 0x60, 0x83, 0x33, 0x80, 0x02, 0x00, 0x04, + 0x00, 0x00, 0x86, 0xde, 0x00, 0x60, 0x40, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0xaf, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x83, 0x23, 0x80, 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, + 0x06, 0x40, 0x20, 0x83, 0x43, 0x80, 0xf8, 0xc3, 0x63, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x62, 0x00, 0x60, 0x83, 0x33, 0x80, 0x02, 0x00, 0x04, 0x00, 0x00, 0x92, + 0x52, 0x00, 0x60, 0x83, 0x33, 0x80, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x92, 0x3e, 0x00, 0x60, 0x83, 0x33, 0x80, 0x00, 0x10, 0x94, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x02, 0x40, 0x30, 0xb3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, + 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, 0x83, 0x43, 0x80, 0xd0, 0xc3, 0x63, + 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x5c, 0x31, 0x02, 0x40, 0x00, 0x07, 0x38, 0xfe, + 0x83, 0x23, 0x80, 0x7c, 0x00, 0x3a, 0x3e, 0xbf, 0x7f, 0x33, 0x00, 0x60, + 0x83, 0x33, 0x80, 0x00, 0x10, 0x94, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x02, 0x40, 0x30, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, + 0x04, 0x20, 0x64, 0x83, 0x43, 0x80, 0xf4, 0xbb, 0x63, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, + 0xa3, 0x4b, 0x90, 0x83, 0x43, 0x80, 0xa3, 0x03, 0x90, 0x83, 0x53, 0x80, + 0xb3, 0x03, 0x90, 0x3b, 0x00, 0x60, 0x83, 0x33, 0x80, 0x07, 0x00, 0x80, + 0x83, 0x23, 0x80, 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x03, 0x10, 0x00, 0xb3, 0x03, 0x90, + 0x83, 0x63, 0x80, 0x03, 0x50, 0x00, 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, + 0x00, 0x00, 0xba, 0xc6, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0xb0, 0xa7, 0x07, 0xb0, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x40, 0x98, 0x03, 0x00, 0x03, + 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, + 0x44, 0x30, 0x94, 0x44, 0x20, 0x98, 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x86, 0x23, 0xe0, 0x44, 0x14, 0x2b, + 0x4a, 0x40, 0x20, 0x86, 0x27, 0xe0, 0x46, 0xbc, 0x00, 0x87, 0x44, 0xfb, + 0x46, 0xbc, 0x1f, 0x46, 0xbc, 0x17, 0x47, 0x3c, 0xfe, 0x46, 0xbc, 0x1f, + 0x0b, 0x80, 0x81, 0xfd, 0xff, 0xff, 0x8a, 0x00, 0x00, 0x87, 0x44, 0xfb, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x07, 0x80, 0x81, 0x44, 0x80, 0x98, 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x40, 0x98, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x07, 0x80, 0x81, 0x44, 0x00, 0x9a, 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x80, 0x81, + 0x00, 0x3c, 0x31, 0x02, 0x04, 0x00, 0x04, 0x00, 0x66, 0xea, 0xbf, 0x7f, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x02, 0x20, 0xc3, 0x17, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0xb0, 0xa7, 0x07, 0xb0, 0xab, 0x0b, 0xa0, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x40, 0x98, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x86, 0x2b, 0xc0, 0x03, 0x10, 0x03, 0x03, 0x04, 0xa0, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x30, 0x94, 0x44, 0x10, 0x98, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x86, 0x23, 0xe0, 0x44, 0x14, 0x2b, 0x4a, 0x40, 0x20, 0x86, 0x27, 0xe0, + 0x46, 0xbc, 0x00, 0x87, 0x44, 0xfb, 0x46, 0xbc, 0x1f, 0x46, 0xbc, 0x17, + 0x47, 0x3c, 0xfe, 0x46, 0xbc, 0x1f, 0x0b, 0x80, 0x81, 0xfd, 0xff, 0xff, + 0x8a, 0x00, 0x00, 0x87, 0x44, 0xfb, 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x80, 0x98, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x07, 0x80, 0x81, 0x44, 0x40, 0x98, 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, + 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x07, 0x80, 0x81, 0x44, 0x00, 0x9a, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x80, 0x81, 0x00, 0x3c, 0x31, 0x02, 0x04, 0x00, + 0x04, 0x00, 0x66, 0xea, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x53, 0x10, 0xe6, 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, 0xa3, 0x8b, 0x90, + 0xb3, 0x8f, 0x90, 0x83, 0x83, 0x00, 0xa3, 0x03, 0x90, 0x00, 0x00, 0x64, + 0xb3, 0x03, 0x90, 0x9b, 0x23, 0x80, 0x83, 0x05, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x93, 0x80, 0x87, 0xa3, 0x80, 0xbb, 0xec, 0x60, 0x06, 0x40, 0x20, + 0x83, 0x03, 0x81, 0x03, 0x84, 0xf2, 0x02, 0x00, 0xe0, 0x83, 0x01, 0xb0, + 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x87, 0xa3, 0x80, + 0x83, 0x93, 0x80, 0x8b, 0xec, 0x60, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x00, 0x00, 0x92, 0xb2, 0xbf, 0x7f, 0x83, 0xb3, 0x80, 0x00, 0x00, 0x86, + 0x8a, 0x00, 0x60, 0x87, 0xb3, 0x80, 0x83, 0x33, 0x80, 0x5c, 0x00, 0x3a, + 0x7a, 0x00, 0x60, 0x87, 0xb3, 0x80, 0x83, 0x33, 0x80, 0x43, 0xc0, 0xf2, + 0xb3, 0x83, 0x90, 0x33, 0x00, 0x60, 0x83, 0x23, 0x80, 0x07, 0x04, 0x00, + 0xa3, 0x07, 0x90, 0x04, 0x0c, 0x64, 0x03, 0x04, 0xb0, 0x83, 0x33, 0x80, + 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x83, 0xb3, 0x80, 0x03, 0x44, 0x00, + 0xb3, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, 0xce, 0xbf, 0x7f, + 0x2b, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x44, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x87, 0x23, 0x80, + 0x46, 0x00, 0xe0, 0x03, 0x04, 0xb0, 0x83, 0x83, 0x00, 0x87, 0x23, 0x80, + 0x6c, 0x00, 0x48, 0xd2, 0xbf, 0x7f, 0x83, 0x33, 0x80, 0x57, 0x14, 0xe6, + 0x5b, 0x18, 0xe5, 0x83, 0x83, 0x90, 0xa8, 0x0b, 0xd8, 0x83, 0x83, 0x00, + 0xa3, 0x03, 0x90, 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x9b, 0x23, 0x80, + 0x83, 0x05, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x81, 0x0b, 0x60, 0xfe, + 0x90, 0x2b, 0xd0, 0x00, 0x95, 0x1d, 0x97, 0xf0, 0x60, 0x08, 0x84, 0x1d, + 0x86, 0x40, 0x20, 0x83, 0x63, 0x81, 0x03, 0x84, 0xf2, 0x02, 0x00, 0xe0, + 0x83, 0x01, 0xb0, 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, + 0x83, 0x23, 0x81, 0x0b, 0x60, 0xfe, 0x80, 0x2b, 0xd0, 0x77, 0xeb, 0x60, + 0x08, 0x84, 0x1d, 0xa8, 0x0b, 0xd8, 0x83, 0xa3, 0x80, 0x87, 0xb3, 0x80, + 0x03, 0x44, 0xfb, 0x00, 0x00, 0x92, 0x96, 0xbf, 0x7f, 0x83, 0x43, 0x81, + 0x00, 0x00, 0x86, 0x8a, 0x00, 0x60, 0x87, 0x43, 0x81, 0x83, 0x33, 0x80, + 0x5c, 0x00, 0x3a, 0x7a, 0x00, 0x60, 0x87, 0x43, 0x81, 0x83, 0x33, 0x80, + 0x43, 0xc0, 0xf2, 0x83, 0x43, 0x91, 0x33, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x07, 0x04, 0x00, 0xa3, 0x07, 0x90, 0x04, 0x0c, 0x64, 0x03, 0x04, 0xb0, + 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x83, 0x43, 0x81, + 0x03, 0x44, 0x00, 0x83, 0x43, 0x91, 0x83, 0x43, 0x81, 0x00, 0x00, 0x92, + 0xce, 0xbf, 0x7f, 0x2b, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x44, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, + 0x87, 0x23, 0x80, 0x46, 0x00, 0xe0, 0x03, 0x04, 0xb0, 0x83, 0x83, 0x00, + 0x87, 0x23, 0x80, 0x6c, 0x00, 0x48, 0xd2, 0xbf, 0x7f, 0x83, 0x33, 0x80, + 0x5f, 0x1c, 0xe5, 0xcb, 0x18, 0xe5, 0xa3, 0x43, 0x91, 0xb3, 0x47, 0x91, + 0x83, 0x8b, 0x91, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x91, 0x83, 0x63, 0x81, + 0x83, 0x83, 0x90, 0x83, 0x73, 0x81, 0x93, 0x83, 0x90, 0x27, 0x0a, 0x60, + 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x28, 0x10, 0x66, 0x2a, 0x00, 0x60, + 0x87, 0x83, 0x80, 0x43, 0x04, 0x00, 0x83, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x0b, 0x04, 0x00, 0x93, 0x8b, 0x90, 0x02, 0x00, 0xe0, 0x43, 0x00, 0xb0, + 0xf3, 0x09, 0x60, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, + 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x1c, 0x10, 0x66, 0x12, 0x00, 0x60, + 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x2c, 0x14, 0x66, 0x12, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, 0x00, 0x00, 0x64, 0x93, 0x03, 0x91, + 0x67, 0x00, 0x60, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x03, 0x38, 0xfe, + 0x03, 0xc0, 0x01, 0x87, 0x13, 0x81, 0x43, 0x80, 0xf2, 0x93, 0x03, 0x91, + 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x3c, 0x14, 0x3b, 0x2e, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x08, 0x1c, 0x3b, 0x1e, 0x00, 0x60, 0x87, 0x13, 0x81, + 0x42, 0x40, 0x20, 0x00, 0x08, 0x2b, 0x03, 0x84, 0xf2, 0x00, 0x04, 0x2b, + 0x93, 0x03, 0x91, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x66, + 0x26, 0x00, 0x60, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x3c, 0x14, 0x3b, + 0x16, 0x00, 0x60, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x0c, 0x1c, 0x3b, + 0x76, 0xbf, 0x7f, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x34, 0x14, 0x66, + 0xae, 0x00, 0x60, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, + 0x00, 0x00, 0x64, 0xa3, 0x03, 0x91, 0x67, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x03, 0x38, 0xfe, 0x03, 0xc0, 0x01, 0x87, 0x23, 0x81, + 0x43, 0x80, 0xf2, 0xa3, 0x03, 0x91, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, + 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x3c, 0x14, 0x3b, + 0x2e, 0x00, 0x60, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x08, 0x1c, 0x3b, + 0x1e, 0x00, 0x60, 0x87, 0x23, 0x81, 0x42, 0x40, 0x20, 0x00, 0x08, 0x2b, + 0x03, 0x84, 0xf2, 0x00, 0x04, 0x2b, 0xa3, 0x03, 0x91, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x00, 0x00, 0x66, 0x26, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x3c, 0x14, 0x3b, 0x16, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x0c, 0x1c, 0x3b, 0x76, 0xbf, 0x7f, 0x00, 0x00, 0x64, + 0x83, 0x03, 0x91, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x24, 0x34, 0x66, + 0x1e, 0x00, 0x60, 0x83, 0x03, 0x81, 0x03, 0x04, 0x00, 0x83, 0x03, 0x91, + 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x24, 0x34, 0x66, 0x1e, 0x00, 0x60, 0x83, 0x03, 0x81, + 0x03, 0x04, 0x00, 0x83, 0x03, 0x91, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, + 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, + 0x43, 0x64, 0x02, 0x60, 0x10, 0xba, 0x07, 0x00, 0xfd, 0x8b, 0x13, 0x03, + 0x83, 0x04, 0xb0, 0xc4, 0x0b, 0x64, 0x8b, 0x13, 0x03, 0x8a, 0x00, 0xe0, + 0x80, 0x60, 0x26, 0x14, 0x04, 0x34, 0x07, 0x00, 0xfd, 0x8b, 0x13, 0x03, + 0x83, 0x04, 0xb0, 0x87, 0x13, 0x03, 0x46, 0x00, 0xe0, 0x40, 0x00, 0x66, + 0x76, 0x07, 0x60, 0x04, 0x19, 0x64, 0x43, 0x40, 0xf7, 0x00, 0x00, 0x23, + 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, + 0xa3, 0x83, 0x90, 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, + 0x0c, 0x00, 0x64, 0x88, 0x02, 0x64, 0x83, 0x83, 0x80, 0xc4, 0xaf, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x84, 0x0b, 0x64, + 0x03, 0x04, 0xb0, 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, + 0x0c, 0x00, 0x64, 0x88, 0x02, 0x64, 0x83, 0x83, 0x80, 0xf4, 0xa7, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x84, 0x0b, 0x64, + 0x03, 0x04, 0xb0, 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, + 0x0c, 0x00, 0x64, 0x88, 0x02, 0x64, 0x83, 0x83, 0x80, 0xe4, 0xa3, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x84, 0x0b, 0x64, + 0x03, 0x04, 0xb0, 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, + 0x0c, 0x00, 0x64, 0x88, 0x02, 0x64, 0x83, 0x83, 0x80, 0xd4, 0x9f, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x57, 0x06, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xa3, 0x83, 0x90, 0x83, 0xa3, 0x80, 0x00, 0x00, 0x92, + 0x0e, 0x00, 0x60, 0xc0, 0x16, 0x64, 0xa3, 0x83, 0x90, 0x83, 0x13, 0x81, + 0x00, 0x00, 0x86, 0x07, 0x00, 0xfd, 0x83, 0x23, 0x81, 0x00, 0x00, 0x86, + 0x03, 0x00, 0xfd, 0x43, 0xc0, 0xfb, 0x00, 0x00, 0x86, 0x6a, 0x00, 0x60, + 0x27, 0x00, 0x60, 0x87, 0x83, 0x80, 0x43, 0x04, 0x00, 0x83, 0x83, 0x90, + 0x83, 0xa3, 0x80, 0x0b, 0x04, 0x00, 0xa3, 0x8b, 0x90, 0x02, 0x00, 0xe0, + 0x43, 0x00, 0xb0, 0x83, 0xa3, 0x80, 0x02, 0x00, 0xe0, 0x04, 0x00, 0x66, + 0xd6, 0xbf, 0x7f, 0xd3, 0x05, 0x60, 0x87, 0x83, 0x80, 0x43, 0x04, 0x00, + 0x83, 0x83, 0x90, 0x83, 0xa3, 0x80, 0x0b, 0x04, 0x00, 0xa3, 0x8b, 0x90, + 0x02, 0x00, 0xe0, 0x43, 0x00, 0xb0, 0x83, 0x13, 0x81, 0x03, 0x44, 0x00, + 0x93, 0x03, 0x91, 0x83, 0x13, 0x81, 0x00, 0x00, 0x86, 0x3a, 0x00, 0x60, + 0x83, 0xa3, 0x80, 0x02, 0x00, 0xe0, 0x04, 0x00, 0x66, 0xbe, 0xbf, 0x7f, + 0x27, 0x00, 0x60, 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, + 0x04, 0x08, 0x64, 0x03, 0x04, 0xb0, 0x83, 0x13, 0x81, 0x03, 0x44, 0x00, + 0x93, 0x03, 0x91, 0x83, 0x13, 0x81, 0x00, 0x00, 0x92, 0xda, 0xbf, 0x7f, + 0x57, 0x05, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xa3, 0x83, 0x90, 0x00, 0x00, 0x64, 0xb3, 0x83, 0x90, + 0x63, 0x00, 0x60, 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, + 0x8c, 0x00, 0x64, 0x08, 0x04, 0x64, 0x83, 0x83, 0x80, 0xf4, 0x87, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x44, 0x0b, 0x64, + 0x03, 0x04, 0xb0, 0x83, 0xb3, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x83, 0x90, + 0x83, 0xb3, 0x80, 0x10, 0x00, 0xae, 0x9e, 0xbf, 0x7f, 0x83, 0xa3, 0x80, + 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, + 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x8c, 0x00, 0x64, 0x08, 0x04, 0x64, + 0x83, 0x83, 0x80, 0xcc, 0x83, 0x63, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, + 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x8f, 0x04, 0x60, 0x83, 0x03, 0x81, + 0x3c, 0x7c, 0xb3, 0x6e, 0x04, 0x60, 0x04, 0x00, 0xb2, 0x12, 0x00, 0x60, + 0x08, 0x00, 0x86, 0x7a, 0x00, 0x60, 0x5b, 0x04, 0x60, 0x83, 0x83, 0x81, + 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, 0x83, 0xc3, 0x90, + 0x83, 0xc3, 0x80, 0x3c, 0x7c, 0xbb, 0x26, 0x00, 0x60, 0x83, 0x83, 0x80, + 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x44, 0x0b, 0x64, 0x03, 0x04, 0xb0, + 0x83, 0xc3, 0x80, 0x00, 0x00, 0x25, 0x83, 0xc3, 0x90, 0x87, 0xc3, 0x80, + 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x8f, 0x13, 0x81, 0x88, 0x02, 0x64, + 0x83, 0x83, 0x80, 0x7f, 0xf7, 0x7f, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, + 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x87, 0x00, 0x60, 0x83, 0x83, 0x81, + 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, 0x08, 0x00, 0xd0, 0xb8, 0x0b, 0xd8, + 0x83, 0xf3, 0x80, 0x3c, 0x7c, 0xbb, 0x2e, 0x00, 0x60, 0x83, 0x83, 0x80, + 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x44, 0x0b, 0x64, 0x03, 0x04, 0xb0, + 0x10, 0x00, 0x74, 0x88, 0x3b, 0xd0, 0x18, 0x49, 0x49, 0x5c, 0x0d, 0x6f, + 0xb8, 0x1b, 0xd8, 0x88, 0x3b, 0xd0, 0x40, 0x0e, 0x64, 0xa3, 0x43, 0x90, + 0x83, 0x13, 0x81, 0x83, 0x43, 0x90, 0x80, 0x02, 0x64, 0xa3, 0x03, 0x90, + 0x83, 0x83, 0x80, 0xdc, 0x83, 0x63, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, + 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x4b, 0xc3, 0xfe, 0x67, 0x03, 0x60, + 0x83, 0x03, 0x81, 0x3c, 0x7c, 0xb3, 0x62, 0x03, 0x60, 0x04, 0x00, 0xb2, + 0x12, 0x00, 0x60, 0x08, 0x00, 0x86, 0x4e, 0x00, 0x60, 0x4f, 0x03, 0x60, + 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, + 0xb3, 0x83, 0x90, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x8f, 0x13, 0x81, + 0x88, 0x02, 0x64, 0x87, 0xb3, 0x80, 0x83, 0x83, 0x80, 0x97, 0xf6, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x53, 0x00, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x08, 0x00, 0xd0, 0x90, 0x4b, 0xd8, 0x40, 0x0e, 0x64, 0xa3, 0x43, 0x90, + 0x83, 0x13, 0x81, 0x83, 0x43, 0x90, 0x80, 0x02, 0x64, 0xa3, 0x03, 0x90, + 0x88, 0x53, 0xd0, 0x83, 0x83, 0x80, 0x6b, 0xf7, 0x7f, 0x06, 0x40, 0x20, + 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x4b, 0xc3, 0xfe, + 0xbb, 0x02, 0x60, 0x83, 0x03, 0x81, 0x3c, 0x7c, 0xb3, 0xb6, 0x02, 0x60, + 0x04, 0x00, 0xb2, 0x12, 0x00, 0x60, 0x08, 0x00, 0x86, 0x66, 0x00, 0x60, + 0xa3, 0x02, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, + 0x04, 0x2c, 0x66, 0x0e, 0x00, 0x60, 0x40, 0x0e, 0x64, 0x0b, 0x00, 0x60, + 0x80, 0x12, 0x64, 0xa3, 0x03, 0x90, 0x8f, 0x13, 0x81, 0x08, 0x04, 0x64, + 0x87, 0xb3, 0x80, 0x83, 0x83, 0x80, 0xcb, 0xf5, 0x7f, 0x06, 0x40, 0x20, + 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x6b, 0x00, 0x60, + 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, 0x08, 0x00, 0xd0, + 0x90, 0x4b, 0xd8, 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x04, 0x2c, 0x66, + 0x0e, 0x00, 0x60, 0x40, 0x0e, 0x64, 0x0b, 0x00, 0x60, 0x80, 0x12, 0x64, + 0xa3, 0x43, 0x90, 0x83, 0x13, 0x81, 0x83, 0x43, 0x90, 0x00, 0x04, 0x64, + 0xa3, 0x03, 0x90, 0x88, 0x53, 0xd0, 0x83, 0x83, 0x80, 0x87, 0xf6, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x4b, 0xc3, 0xfe, 0xdf, 0x01, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, + 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x02, 0x00, 0xe0, 0x04, 0x28, 0x66, 0x0e, 0x00, 0x60, 0x40, 0x0e, 0x64, + 0x0b, 0x00, 0x60, 0x80, 0x12, 0x64, 0xa3, 0x03, 0x90, 0x0c, 0x02, 0x64, + 0x08, 0x04, 0x64, 0x87, 0xb3, 0x80, 0x83, 0x83, 0x80, 0x07, 0xf5, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x87, 0x01, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x03, 0x3c, 0xfe, + 0xb3, 0x83, 0x90, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x0c, 0x01, 0x64, + 0x08, 0x04, 0x64, 0x87, 0xb3, 0x80, 0x83, 0x83, 0x80, 0xb7, 0xf4, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0x37, 0x01, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x02, 0xbc, 0x07, + 0xb3, 0x83, 0x90, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x8c, 0x00, 0x64, + 0x08, 0x04, 0x64, 0x87, 0xb3, 0x80, 0x83, 0x83, 0x80, 0x67, 0xf4, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, + 0xe7, 0x00, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, 0x83, 0x87, 0x91, + 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, + 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, 0xa3, 0x83, 0x90, 0x4f, 0x00, 0x60, + 0x83, 0xa3, 0x80, 0x07, 0x04, 0x00, 0xa3, 0x87, 0x90, 0x02, 0x00, 0xe0, + 0x07, 0x38, 0xfe, 0x40, 0x0e, 0x64, 0xa3, 0x03, 0x90, 0x8c, 0x00, 0x64, + 0x08, 0x04, 0x64, 0x83, 0x83, 0x80, 0xfb, 0xf3, 0x7f, 0x06, 0x40, 0x20, + 0x83, 0x83, 0x80, 0x03, 0x84, 0xf2, 0x83, 0x83, 0x90, 0x83, 0xb3, 0x80, + 0x03, 0x44, 0x00, 0xb3, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, + 0xb2, 0xbf, 0x7f, 0x63, 0x00, 0x60, 0x83, 0x83, 0x81, 0x07, 0x20, 0x00, + 0x83, 0x87, 0x91, 0x03, 0x00, 0x80, 0xb3, 0x83, 0x90, 0x83, 0x83, 0x80, + 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, 0x87, 0xb3, 0x80, 0x03, 0x04, 0xb0, + 0x37, 0x00, 0x60, 0x83, 0x83, 0x80, 0x07, 0x04, 0x00, 0x83, 0x87, 0x90, + 0x87, 0x93, 0x80, 0x46, 0x00, 0xe0, 0x03, 0x04, 0xb0, 0x1b, 0x00, 0x60, + 0x4b, 0xc3, 0xfe, 0x13, 0x00, 0x60, 0x4b, 0xc3, 0xfe, 0x0b, 0x00, 0x60, + 0x4b, 0xc3, 0xfe, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, + 0x83, 0x93, 0x80, 0x02, 0x00, 0xe0, 0x04, 0x00, 0x66, 0xd6, 0xb5, 0x7f, + 0x83, 0x83, 0x80, 0x04, 0x00, 0x64, 0x03, 0x04, 0xb0, 0x87, 0x83, 0x80, + 0x83, 0x63, 0x81, 0x43, 0xc0, 0xf2, 0xcf, 0x1c, 0xe5, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x83, 0x23, 0x01, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x0a, 0x40, 0x20, 0x87, 0x83, 0x80, 0x83, 0x43, 0x80, 0x6b, 0xf5, 0x7f, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0x97, 0x00, 0x60, + 0x05, 0x00, 0x00, 0x00, 0x67, 0x64, 0x07, 0x00, 0x80, 0x05, 0x00, 0x00, + 0x00, 0x66, 0x64, 0x03, 0x00, 0x80, 0x43, 0x80, 0xf2, 0xa3, 0x03, 0x90, + 0x83, 0x43, 0x80, 0x06, 0x00, 0xe0, 0x83, 0x23, 0x80, 0x03, 0x04, 0xb0, + 0x83, 0x43, 0x80, 0x03, 0x04, 0x00, 0x83, 0x43, 0x90, 0x05, 0x00, 0x00, + 0x00, 0x66, 0x64, 0x03, 0x00, 0x80, 0x03, 0x04, 0x00, 0x05, 0x00, 0x00, + 0x04, 0x66, 0x64, 0x43, 0x00, 0x90, 0x05, 0x00, 0x00, 0x00, 0x66, 0x64, + 0x07, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x68, 0x64, 0x03, 0x00, 0x80, + 0x6c, 0x00, 0x48, 0x1e, 0x00, 0x60, 0x05, 0x00, 0x00, 0x00, 0x65, 0x64, + 0x03, 0x00, 0x80, 0x05, 0x00, 0x00, 0x04, 0x66, 0x64, 0x43, 0x00, 0x90, + 0x83, 0x43, 0x80, 0x02, 0x00, 0xe0, 0x04, 0x00, 0x66, 0x66, 0xbf, 0x7f, + 0x05, 0x00, 0x00, 0x00, 0x67, 0x64, 0x07, 0x00, 0x80, 0x05, 0x00, 0x00, + 0x00, 0x66, 0x64, 0x03, 0x00, 0x80, 0x43, 0x80, 0xf2, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0xc4, 0x3f, 0x64, 0x03, 0x04, 0xb0, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x05, 0x00, 0x00, 0x00, 0x66, 0x64, 0x03, 0x00, 0x80, + 0x05, 0x00, 0x00, 0x04, 0x65, 0x64, 0x43, 0x00, 0x90, 0x4b, 0xc3, 0xfe, + 0x00, 0x3c, 0x23, 0x33, 0x01, 0xe0, 0x83, 0xb3, 0x00, 0x04, 0x20, 0x64, + 0x4a, 0x40, 0x20, 0x04, 0x00, 0x64, 0xb3, 0xde, 0x7f, 0x00, 0x00, 0x64, + 0xa3, 0x43, 0x90, 0x09, 0x00, 0x00, 0x00, 0x77, 0x64, 0x03, 0x00, 0x80, + 0x00, 0x00, 0x86, 0xde, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x69, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x56, 0x00, 0x60, 0x05, 0x00, 0x00, + 0x00, 0x69, 0x64, 0x04, 0x00, 0x64, 0x03, 0x04, 0x90, 0x05, 0x00, 0x00, + 0x00, 0x67, 0x64, 0x0f, 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x68, 0x64, + 0x03, 0x00, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x00, 0x64, 0xc2, 0x40, 0x20, + 0x4b, 0xde, 0x7f, 0x05, 0x00, 0x00, 0x00, 0x67, 0x64, 0x03, 0x00, 0x80, + 0xed, 0xff, 0xc0, 0x44, 0x95, 0x64, 0x03, 0x04, 0x90, 0x05, 0x00, 0x00, + 0x00, 0x6a, 0x64, 0x03, 0x00, 0x80, 0x87, 0xb3, 0x00, 0x83, 0x43, 0x90, + 0x00, 0x49, 0x64, 0xa3, 0x03, 0x90, 0x42, 0x40, 0x20, 0xd0, 0xe3, 0x63, + 0xa3, 0x43, 0x90, 0x05, 0x00, 0x00, 0x00, 0x6a, 0x64, 0x03, 0x00, 0x80, + 0x03, 0x04, 0x00, 0x05, 0x00, 0x00, 0x04, 0x6a, 0x64, 0x43, 0x00, 0x90, + 0x83, 0x83, 0x05, 0xb3, 0x43, 0x92, 0x87, 0xb3, 0x00, 0x83, 0x63, 0x80, + 0x43, 0x80, 0xf2, 0x87, 0x73, 0x82, 0x4a, 0x40, 0x20, 0x87, 0xa3, 0x82, + 0x57, 0xf3, 0x7f, 0x83, 0xb3, 0x00, 0xf4, 0xdf, 0x63, 0x0b, 0x00, 0x60, + 0x4b, 0xc3, 0xfe, 0x37, 0x05, 0xe0, 0x53, 0x00, 0xe0, 0x04, 0x11, 0x64, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x97, 0xe2, 0x7f, 0x04, 0x5d, 0x64, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x87, 0xe2, 0x7f, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x07, 0x04, 0xb0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x04, 0xaf, 0x64, 0x3b, 0xc4, 0xa0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc4, 0xd2, 0x64, 0x03, 0x04, 0xa1, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x09, 0x00, 0x00, 0x04, 0x7a, 0x64, 0x33, 0x84, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x44, 0x00, 0x65, 0x3b, 0x44, 0xa4, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x44, 0x00, 0x64, 0x03, 0x84, 0xb4, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x04, 0x00, 0x64, 0x03, 0x04, 0x90, + 0x11, 0x10, 0x00, 0x00, 0x0b, 0x64, 0x04, 0x00, 0x64, 0x03, 0x04, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, 0xa3, 0x83, 0x90, 0x00, 0x00, 0x64, + 0xb3, 0x83, 0x90, 0x3b, 0x00, 0x60, 0xc0, 0x03, 0x64, 0xa3, 0x03, 0x90, + 0x0c, 0x00, 0x64, 0x08, 0x00, 0x64, 0x04, 0x00, 0x64, 0x83, 0xa3, 0x80, + 0xd0, 0x8f, 0x62, 0x83, 0xb3, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x83, 0x90, + 0x83, 0xa3, 0x80, 0x03, 0x10, 0x00, 0xa3, 0x83, 0x90, 0x83, 0xb3, 0x80, + 0x04, 0x10, 0xb2, 0xc6, 0xbf, 0x7f, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x04, 0x00, 0x64, 0x2b, 0x44, 0xb4, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x44, 0x00, 0x64, 0x2f, 0x44, 0xb4, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x84, 0x00, 0x64, 0x33, 0x44, 0xb4, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x0d, 0x00, 0x00, 0x44, 0x52, 0x64, 0x13, 0x44, 0xa4, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x05, 0x00, 0x00, 0xc4, 0xc2, 0x64, 0x1b, 0x44, 0xa4, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x0d, 0x00, 0x00, 0xc4, 0x84, 0x64, + 0x23, 0x44, 0xa4, 0x0d, 0x00, 0x00, 0xc0, 0x84, 0x64, 0x83, 0x83, 0x90, + 0x05, 0x00, 0x00, 0xc0, 0xc2, 0x64, 0xa3, 0x43, 0x90, 0x0d, 0x00, 0x00, + 0x40, 0x52, 0x64, 0x83, 0x43, 0x90, 0xc0, 0x4a, 0x64, 0xa3, 0x03, 0x90, + 0xc4, 0xd7, 0x63, 0xcb, 0x68, 0x60, 0x4b, 0xc3, 0xfe, 0x57, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x83, 0x4b, 0x90, + 0x93, 0x4f, 0x90, 0x83, 0x23, 0x80, 0x04, 0x00, 0x64, 0x03, 0x04, 0x90, + 0x83, 0x33, 0x80, 0x02, 0x3c, 0x00, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0x47, 0x38, 0xfe, 0x46, 0x3c, 0x00, 0x44, 0x04, 0x2b, 0x0b, 0x00, 0x80, + 0x8a, 0xf8, 0x00, 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x83, 0x53, 0x80, + 0x02, 0x3c, 0x00, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x47, 0x38, 0xfe, + 0x46, 0x3c, 0x00, 0x44, 0x14, 0x2b, 0x0b, 0x00, 0x80, 0x8a, 0x40, 0x0f, + 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x83, 0x43, 0x80, 0x02, 0xbc, 0x0f, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x47, 0x3c, 0xfe, 0x46, 0xbc, 0x0f, + 0x44, 0x38, 0x2b, 0x0b, 0x00, 0x80, 0x3d, 0x80, 0xff, 0x8a, 0xbc, 0x1f, + 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x83, 0x83, 0x80, 0x02, 0x3c, 0x00, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x47, 0x38, 0xfe, 0x46, 0x3c, 0x00, + 0x44, 0x28, 0x2b, 0x0b, 0x00, 0x80, 0x88, 0xf0, 0x94, 0x87, 0x44, 0xfb, + 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x07, 0x00, 0x80, 0x44, 0x00, 0xa6, + 0x03, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x03, 0x10, 0x80, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, 0x13, 0x04, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x02, 0x04, 0xe9, 0x00, 0x00, 0x66, + 0x76, 0x00, 0x60, 0x11, 0x10, 0x00, 0x08, 0x06, 0x64, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x02, 0x04, 0xe9, 0x03, 0x38, 0xfe, 0x44, 0x00, 0x65, + 0x44, 0x80, 0x40, 0x83, 0x00, 0x03, 0x03, 0x04, 0x90, 0x11, 0x10, 0x00, + 0x00, 0x06, 0x64, 0x87, 0x33, 0x80, 0x03, 0x20, 0x03, 0x03, 0x04, 0x90, + 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x04, 0x00, 0x64, 0x03, 0x10, 0x03, + 0x03, 0x04, 0x90, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, + 0x07, 0x84, 0xb4, 0x01, 0x00, 0xa0, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0x4b, 0x00, 0x60, 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x04, 0x00, 0x64, + 0x03, 0x00, 0x03, 0x03, 0x04, 0x90, 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, + 0x04, 0x00, 0x64, 0x03, 0x20, 0x03, 0x03, 0x04, 0x90, 0x11, 0x10, 0x00, + 0x00, 0x06, 0x64, 0x04, 0x00, 0x64, 0x03, 0x10, 0x03, 0x03, 0x04, 0x90, + 0x83, 0x33, 0x80, 0xa3, 0x03, 0x90, 0x93, 0x23, 0x80, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc0, 0xd3, 0x1f, 0x00, 0x00, 0x86, 0x0a, 0x00, 0x60, + 0xcf, 0x66, 0x60, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x53, 0x00, 0xe0, + 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, 0xa3, 0x8b, 0x90, 0x00, 0x00, 0x64, + 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, 0x93, 0x43, 0x90, 0x83, 0x93, 0x80, + 0x03, 0x00, 0x80, 0xf1, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, + 0x22, 0x00, 0x60, 0x83, 0x93, 0x80, 0x03, 0x00, 0x80, 0x00, 0x40, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0x83, 0x43, 0x90, 0x67, 0x00, 0x60, + 0x83, 0x93, 0x80, 0x03, 0x00, 0x80, 0x0d, 0x00, 0x00, 0x02, 0xbc, 0x1f, + 0x03, 0x3c, 0xfe, 0x4c, 0x00, 0x64, 0x08, 0x01, 0x64, 0x87, 0xa3, 0x80, + 0x5b, 0xe2, 0x7f, 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, 0x00, 0x40, 0x31, + 0x02, 0x3c, 0x00, 0x06, 0x40, 0x20, 0x83, 0x93, 0x80, 0x47, 0x38, 0xfe, + 0x46, 0x3c, 0x00, 0x44, 0x50, 0x2b, 0x0b, 0x00, 0x80, 0x88, 0xc0, 0x9f, + 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x40, 0x00, 0x64, 0x93, 0x43, 0x90, + 0x83, 0x93, 0x80, 0x03, 0x00, 0x80, 0x00, 0x50, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x83, 0x93, 0x80, 0x03, 0x00, 0x80, 0x0d, 0x00, 0x00, + 0x02, 0xbc, 0x1f, 0x0b, 0x3c, 0xfe, 0x83, 0xa3, 0x80, 0xa3, 0x03, 0x90, + 0x8f, 0x43, 0x80, 0x83, 0x83, 0x80, 0xd8, 0xd3, 0x63, 0x83, 0x83, 0x80, + 0x07, 0x00, 0x80, 0x46, 0x44, 0x20, 0x03, 0x04, 0x90, 0x83, 0x53, 0x80, + 0x02, 0x04, 0x00, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, 0x47, 0x38, 0xfe, + 0x46, 0x04, 0x00, 0x44, 0x24, 0x2b, 0x0b, 0x00, 0x80, 0x88, 0x08, 0x94, + 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x83, 0x93, 0x80, 0x03, 0x00, 0x80, + 0x0d, 0x00, 0x00, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x87, 0x53, 0x80, + 0x4a, 0x40, 0x20, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x43, 0x80, 0xf2, + 0x13, 0x88, 0xb4, 0x83, 0x83, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, + 0x08, 0x00, 0x92, 0x5a, 0x00, 0x60, 0x04, 0x01, 0x64, 0x83, 0x83, 0x80, + 0xa3, 0xe4, 0x7f, 0xb3, 0x43, 0x90, 0x86, 0xb3, 0xe0, 0x83, 0x83, 0x80, + 0x47, 0x38, 0xfe, 0x44, 0x5c, 0x2b, 0x0b, 0x00, 0x80, 0xfd, 0x7f, 0x80, + 0x8a, 0xbc, 0x1f, 0x87, 0x44, 0xfb, 0x03, 0x04, 0x90, 0x83, 0x83, 0x80, + 0x03, 0x00, 0x80, 0x02, 0x00, 0x10, 0x00, 0x00, 0x86, 0x6a, 0x00, 0x60, + 0x83, 0x83, 0x80, 0x97, 0xd4, 0x60, 0x5f, 0x00, 0x60, 0x83, 0x83, 0x80, + 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x04, 0x86, 0x22, 0x00, 0x60, + 0x83, 0x83, 0x80, 0x03, 0x00, 0x80, 0xc1, 0x7f, 0x00, 0x02, 0x00, 0x00, + 0x41, 0x09, 0x00, 0x00, 0x00, 0x92, 0x12, 0x00, 0x60, 0x83, 0x83, 0x80, + 0xcb, 0xd4, 0x60, 0x23, 0x00, 0x60, 0x83, 0x83, 0x80, 0x03, 0x00, 0x80, + 0x02, 0xb8, 0x00, 0x30, 0x00, 0x92, 0x0e, 0x00, 0x60, 0x83, 0x83, 0x80, + 0xe3, 0xd4, 0x60, 0x4b, 0xc3, 0xfe, 0x57, 0x04, 0xe0, 0x53, 0x02, 0xe0, + 0x00, 0x00, 0x64, 0xa3, 0x03, 0xa0, 0x00, 0x00, 0x64, 0x93, 0x43, 0xa0, + 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, 0x83, 0x43, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xbc, 0x64, 0xa3, 0x43, 0x90, 0x01, 0x12, 0x00, 0x00, 0x40, 0x64, + 0xb3, 0x43, 0x90, 0x4b, 0xc3, 0xfe, 0x83, 0x73, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x7c, 0x31, 0x04, 0x00, 0x66, 0xf2, 0xbf, 0x7f, 0x83, 0x73, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x20, 0x31, 0x0d, 0x00, 0x00, 0x02, 0xbc, 0x1f, + 0x83, 0x83, 0xa0, 0x83, 0x73, 0x80, 0x07, 0x00, 0x08, 0x82, 0x03, 0xc1, + 0x0b, 0x04, 0x00, 0x83, 0x33, 0x01, 0x1f, 0xe8, 0x7f, 0x00, 0x00, 0x64, + 0xb3, 0x03, 0x90, 0xbb, 0x01, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x82, 0x23, 0xc0, 0x00, 0x10, 0xb4, + 0x92, 0x01, 0x60, 0x87, 0x33, 0x01, 0x83, 0x33, 0x80, 0x43, 0x80, 0xf2, + 0x02, 0x00, 0xe0, 0x04, 0x00, 0x66, 0x76, 0x01, 0x40, 0x87, 0x33, 0x01, + 0x83, 0x33, 0x80, 0x43, 0x80, 0xf2, 0x02, 0x00, 0xe0, 0x03, 0x38, 0xfe, + 0x03, 0x44, 0x00, 0x93, 0x83, 0x90, 0x0c, 0x00, 0x64, 0x08, 0x00, 0x64, + 0x87, 0x93, 0x80, 0x83, 0x33, 0x80, 0xc3, 0xdf, 0x7f, 0xb3, 0x83, 0x94, + 0x83, 0xb3, 0x84, 0x00, 0x00, 0x86, 0x3a, 0x01, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x20, 0x00, 0x84, 0x26, 0x01, 0x60, + 0x83, 0x33, 0x09, 0x8b, 0x93, 0x80, 0x06, 0x40, 0x20, 0x83, 0x43, 0x80, + 0xfc, 0xcb, 0x63, 0x83, 0xb3, 0x84, 0x01, 0xf0, 0x00, 0x02, 0x00, 0x00, + 0x01, 0x60, 0x00, 0x00, 0x00, 0x92, 0x86, 0x00, 0x60, 0x83, 0xb3, 0x84, + 0x00, 0x40, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0xa3, 0x83, 0x90, + 0x83, 0xa3, 0x80, 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x93, 0x00, 0x60, + 0x83, 0xa3, 0x80, 0x00, 0x08, 0x2b, 0x87, 0x63, 0x80, 0x43, 0x80, 0xf2, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x92, 0x22, 0x00, 0x60, 0x83, 0xa3, 0x80, + 0x00, 0x08, 0x2b, 0x87, 0x63, 0x80, 0x43, 0x80, 0xf2, 0x87, 0x43, 0x80, + 0x03, 0x04, 0x90, 0x5b, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x47, 0x00, 0x60, 0x83, 0xb3, 0x84, + 0x01, 0xf0, 0x00, 0x02, 0x00, 0x00, 0x01, 0x70, 0x00, 0x00, 0x00, 0x86, + 0x1e, 0x00, 0x60, 0x83, 0xb3, 0x84, 0x01, 0xf0, 0x00, 0x02, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x92, 0x16, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x26, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x00, 0x83, 0x43, 0x90, 0x82, 0x23, 0xc0, + 0x03, 0x04, 0x00, 0xa3, 0x03, 0xa0, 0x0b, 0x00, 0x60, 0x4b, 0xc3, 0xfe, + 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x86, 0x03, 0xc1, + 0x83, 0x33, 0x80, 0x1c, 0x04, 0x3a, 0x42, 0xbe, 0x7f, 0x82, 0x23, 0xc0, + 0x00, 0x0c, 0xa8, 0x0b, 0xde, 0x7f, 0x4b, 0xc3, 0xfe, 0x57, 0x06, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0x25, 0x0c, 0x00, 0x04, 0x06, 0x64, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x03, 0x04, 0x90, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, 0x13, 0x04, 0x90, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, 0x07, 0x84, 0xb4, 0x09, 0x00, 0x00, + 0x00, 0x76, 0x64, 0x44, 0x00, 0x64, 0x03, 0x04, 0x90, 0x09, 0x00, 0x00, + 0x00, 0x77, 0x64, 0x44, 0x00, 0x64, 0x03, 0x04, 0x90, 0xbf, 0x70, 0x60, + 0xfc, 0xdf, 0x62, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x03, 0x10, 0x80, + 0x00, 0x00, 0x86, 0xea, 0xbf, 0x7f, 0xf4, 0x9f, 0x63, 0xe3, 0xbf, 0x7f, + 0x73, 0x00, 0xe0, 0x01, 0x80, 0xff, 0x00, 0x00, 0x64, 0x03, 0x00, 0x80, + 0xb3, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x00, 0x30, 0x31, 0x83, 0xc3, 0x90, + 0x83, 0xb3, 0x80, 0x0d, 0x00, 0x00, 0x02, 0xbc, 0x1f, 0x93, 0xc3, 0x90, + 0x83, 0xc3, 0x80, 0xfd, 0x0f, 0x00, 0x02, 0x80, 0x1f, 0xa3, 0xc3, 0x90, + 0x11, 0x10, 0x00, 0x00, 0x06, 0x64, 0x04, 0x00, 0x64, 0x03, 0x30, 0x03, + 0x03, 0x04, 0x90, 0x40, 0x00, 0x64, 0x83, 0x83, 0x90, 0x00, 0x01, 0x64, + 0xa3, 0x43, 0x90, 0xc0, 0x00, 0x64, 0x83, 0x43, 0x90, 0x00, 0x51, 0x64, + 0xa3, 0x03, 0x90, 0xc3, 0xf5, 0x7f, 0x80, 0x55, 0x64, 0x83, 0x43, 0x90, + 0x80, 0x58, 0x64, 0xa3, 0x03, 0x90, 0xaf, 0xf5, 0x7f, 0x83, 0xc3, 0x80, + 0x83, 0x43, 0x90, 0x40, 0x5a, 0x64, 0xa3, 0x03, 0x90, 0x9b, 0xf5, 0x7f, + 0x83, 0xd3, 0x80, 0x83, 0x43, 0x90, 0x80, 0x5c, 0x64, 0xa3, 0x03, 0x90, + 0x87, 0xf5, 0x7f, 0x01, 0x01, 0x00, 0x00, 0x00, 0x64, 0xc3, 0xdc, 0x7f, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x04, 0x00, 0x64, 0x03, 0x04, 0xb0, + 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x04, 0x00, 0x64, 0x03, 0x04, 0x00, + 0x03, 0x04, 0xb0, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x04, 0x00, 0x64, + 0x03, 0x08, 0x00, 0x03, 0x04, 0xb0, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, + 0x04, 0x00, 0x64, 0x03, 0x0c, 0x00, 0x03, 0x04, 0xb0, 0x11, 0x10, 0x00, + 0x00, 0x0a, 0x64, 0x06, 0x00, 0xe0, 0x46, 0x5c, 0x00, 0x03, 0x04, 0xb0, + 0x01, 0x01, 0x00, 0x40, 0x00, 0x64, 0x57, 0xdc, 0x7f, 0x83, 0xe3, 0x80, + 0x85, 0x06, 0x00, 0x00, 0x58, 0x86, 0x36, 0x00, 0x60, 0x83, 0xe3, 0x80, + 0x81, 0x06, 0x00, 0x00, 0x58, 0x93, 0x12, 0x00, 0x60, 0x83, 0xd3, 0x80, + 0x3c, 0x28, 0xb6, 0x26, 0x00, 0x60, 0x83, 0xc3, 0x80, 0x49, 0x00, 0x00, + 0x00, 0x44, 0x86, 0x16, 0x00, 0x60, 0xd3, 0x00, 0x60, 0x83, 0xd3, 0x80, + 0x00, 0x28, 0xb6, 0xc2, 0x00, 0x40, 0x93, 0xd2, 0x60, 0x01, 0x02, 0x00, + 0x00, 0x00, 0x64, 0xfb, 0xdb, 0x7f, 0xc3, 0xf5, 0x7f, 0x01, 0x03, 0x00, + 0x00, 0x00, 0x64, 0xeb, 0xdb, 0x7f, 0xc4, 0xbb, 0x63, 0x01, 0x04, 0x00, + 0x00, 0x00, 0x64, 0xdb, 0xdb, 0x7f, 0xe4, 0x8f, 0x62, 0x01, 0x05, 0x00, + 0x00, 0x00, 0x64, 0xcb, 0xdb, 0x7f, 0x00, 0x00, 0x64, 0xa3, 0x83, 0x90, + 0x3b, 0x00, 0x60, 0x83, 0xa3, 0x80, 0x7f, 0xd2, 0x60, 0x01, 0x06, 0x00, + 0x00, 0x00, 0x64, 0xab, 0xdb, 0x7f, 0x83, 0xa3, 0x80, 0xfb, 0xd0, 0x60, + 0x01, 0x07, 0x00, 0x00, 0x00, 0x64, 0x97, 0xdb, 0x7f, 0x83, 0xa3, 0x80, + 0x03, 0x04, 0x00, 0xa3, 0x83, 0x90, 0x83, 0xa3, 0x80, 0x00, 0x00, 0xb2, + 0xc6, 0xbf, 0x7f, 0x01, 0x08, 0x00, 0x00, 0x00, 0x64, 0x73, 0xdb, 0x7f, + 0x84, 0x01, 0x64, 0x00, 0x04, 0x64, 0x47, 0xda, 0x7f, 0xfb, 0xf3, 0x7f, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xd8, 0xd7, 0x63, 0x00, 0x00, 0x64, + 0x5b, 0x00, 0x60, 0x4b, 0xc3, 0xfe, 0xc0, 0x5e, 0x64, 0xa3, 0x03, 0x90, + 0xf7, 0xf3, 0x7f, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x06, 0x00, 0xe0, + 0x46, 0x40, 0x21, 0x03, 0x04, 0xb0, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, + 0x06, 0x00, 0xe0, 0x46, 0x40, 0x22, 0x03, 0x04, 0xb0, 0x11, 0x10, 0x00, + 0x00, 0x0a, 0x64, 0x06, 0x00, 0xe0, 0xfd, 0xff, 0xff, 0x46, 0x40, 0x3c, + 0x03, 0x04, 0xb0, 0x00, 0x00, 0x64, 0x77, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0x1d, 0x10, 0x00, 0x00, 0x00, 0x64, 0x01, 0x80, 0x00, 0x04, 0x00, 0x64, + 0x03, 0x04, 0x90, 0x1d, 0x10, 0x00, 0x00, 0x00, 0x64, 0xc4, 0x3f, 0x64, + 0x03, 0x90, 0x01, 0x03, 0x04, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0xdf, 0x00, 0x60, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x41, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x07, 0x00, 0x80, 0x46, 0x4c, 0x20, 0x03, 0x04, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x41, 0x10, 0x00, 0x03, 0x00, 0x00, + 0x07, 0x20, 0x80, 0xfd, 0x00, 0xc0, 0x46, 0xbc, 0x1f, 0x44, 0x10, 0xa8, + 0x03, 0x20, 0x00, 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, + 0x41, 0x10, 0x00, 0x03, 0x00, 0x00, 0x04, 0x04, 0x64, 0x03, 0x18, 0x00, + 0x03, 0x04, 0xa0, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x41, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x07, 0x30, 0x80, 0xc1, 0xff, 0xff, 0x46, 0x00, 0x00, + 0x46, 0x50, 0x20, 0x03, 0x30, 0x00, 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x10, 0x2b, 0x41, 0x10, 0x00, 0x03, 0x00, 0x00, 0x07, 0x20, 0x80, + 0xc1, 0xff, 0xff, 0x46, 0x00, 0x00, 0x03, 0x20, 0x00, 0x03, 0x04, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x41, 0x10, 0x00, 0x03, 0x00, 0x00, + 0x87, 0x23, 0x80, 0x44, 0x10, 0x2b, 0x03, 0x10, 0x00, 0x03, 0x04, 0xa0, + 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x1c, 0x00, 0xb2, 0x22, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x1d, 0x10, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x80, 0x80, 0x48, 0x00, 0x64, 0x87, 0x23, 0x80, + 0x84, 0x84, 0x40, 0x03, 0xc4, 0xfb, 0x00, 0x00, 0x86, 0x7e, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, + 0x07, 0x00, 0x80, 0x83, 0x33, 0x80, 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, 0x07, 0x10, 0x80, + 0x83, 0x33, 0x80, 0x13, 0x04, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, + 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, 0x07, 0x20, 0x80, 0x83, 0x33, 0x80, + 0x23, 0x04, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x07, 0x30, 0x80, 0x83, 0x33, 0x80, 0x33, 0x04, 0x90, + 0x40, 0x00, 0x64, 0x0b, 0x00, 0x60, 0x00, 0x00, 0x64, 0x17, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, + 0x51, 0x10, 0x00, 0x03, 0x00, 0x00, 0x87, 0x53, 0x80, 0x47, 0x00, 0x80, + 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x87, 0x53, 0x80, 0x47, 0x10, 0x80, 0x03, 0x10, 0x00, + 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x87, 0x53, 0x80, 0x47, 0x20, 0x80, 0x03, 0x20, 0x00, + 0x03, 0x04, 0x90, 0x83, 0x23, 0x80, 0x00, 0x10, 0x2b, 0x51, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x87, 0x53, 0x80, 0x47, 0x30, 0x80, 0x03, 0x30, 0x00, + 0x03, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x63, 0x00, 0xe0, + 0x83, 0xc3, 0x90, 0x83, 0x33, 0x00, 0x06, 0x40, 0x20, 0x83, 0xc3, 0x80, + 0xe0, 0xeb, 0x63, 0x00, 0x00, 0x86, 0xbe, 0x00, 0x60, 0x82, 0x33, 0xe0, + 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x83, 0x33, 0x80, 0xb3, 0x43, 0x90, + 0x83, 0x43, 0x80, 0x83, 0x83, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x83, 0x90, + 0x83, 0xa3, 0x80, 0x93, 0x83, 0x90, 0x00, 0x00, 0x64, 0xb7, 0x43, 0xb0, + 0x83, 0x23, 0x80, 0x3c, 0x1c, 0xb6, 0x3e, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x04, 0xe6, 0x64, 0x83, 0x23, 0x80, 0x43, 0x40, 0xf7, 0x00, 0x00, 0x86, + 0x26, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0xe6, 0x64, 0x83, 0x23, 0x80, + 0x53, 0x40, 0xf7, 0x87, 0xb3, 0x00, 0x83, 0x33, 0x00, 0xc0, 0xd3, 0x1f, + 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, + 0xb7, 0x43, 0xb0, 0x83, 0xb3, 0x00, 0x06, 0x40, 0x20, 0x83, 0xc3, 0x80, + 0xd0, 0xeb, 0x63, 0x4b, 0xc3, 0xfe, 0x67, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x02, 0x0c, 0xe9, 0x00, 0x00, 0x66, + 0x8a, 0x00, 0x60, 0x11, 0x10, 0x00, 0x00, 0x0a, 0x64, 0x02, 0x00, 0xe0, + 0xa3, 0x03, 0xb0, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, + 0x0f, 0x84, 0xb4, 0x82, 0x23, 0xe0, 0xa7, 0x03, 0xb0, 0x82, 0x27, 0xe0, + 0x02, 0x5c, 0x00, 0x02, 0x58, 0x20, 0xa7, 0x03, 0xb0, 0x82, 0x27, 0xe0, + 0x02, 0x40, 0x22, 0xa7, 0x03, 0xb0, 0x11, 0x10, 0x00, 0x04, 0x0a, 0x64, + 0x82, 0x27, 0xe0, 0x43, 0x00, 0xb0, 0x4b, 0xc3, 0xfe, 0x11, 0x10, 0x00, + 0x00, 0x0a, 0x64, 0x02, 0x00, 0xe0, 0x00, 0x18, 0x2e, 0x02, 0x04, 0x00, + 0x04, 0x00, 0x66, 0xea, 0xbf, 0x7f, 0x11, 0x10, 0x00, 0x04, 0x0a, 0x64, + 0x82, 0x23, 0xe0, 0x43, 0x00, 0xb0, 0x00, 0x00, 0x64, 0xc0, 0xeb, 0x63, + 0x80, 0x00, 0x64, 0xf8, 0xe7, 0x63, 0x00, 0x01, 0x64, 0xf0, 0xe7, 0x63, + 0x80, 0x01, 0x64, 0xe8, 0xe7, 0x63, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x09, 0x00, 0x00, + 0x04, 0xd5, 0x64, 0x83, 0x33, 0x80, 0x23, 0x04, 0x90, 0x83, 0x33, 0x80, + 0x04, 0x00, 0x64, 0x33, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, + 0x17, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, + 0x83, 0x33, 0x80, 0x85, 0x06, 0x00, 0x04, 0x58, 0x64, 0x23, 0x04, 0x90, + 0x83, 0x33, 0x80, 0x01, 0x40, 0x30, 0x44, 0x00, 0x64, 0x33, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, + 0xf7, 0xd2, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x1f, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x02, 0x04, 0x00, 0x07, 0x38, 0xfe, 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, + 0x97, 0xd2, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x27, 0x00, 0x60, 0x04, 0x00, 0x64, 0x83, 0x23, 0x80, + 0x43, 0xd9, 0x7f, 0xb3, 0x03, 0x90, 0x82, 0x3b, 0xc0, 0x07, 0x3c, 0xfe, + 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0x2f, 0xd2, 0x7f, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x27, 0x00, 0x60, + 0x04, 0x00, 0x64, 0x83, 0x23, 0x80, 0xdb, 0xd8, 0x7f, 0xb3, 0x03, 0x90, + 0x82, 0x3f, 0xe0, 0x07, 0x38, 0xfe, 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, + 0xc7, 0xd1, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x23, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x5c, 0x31, 0x02, 0x40, 0x00, 0x07, 0x38, 0xfe, 0x83, 0x53, 0x80, + 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x43, 0x00, 0xe0, 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, 0x00, 0x00, 0x64, + 0xa3, 0x03, 0x90, 0x83, 0x83, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x00, 0x10, 0x2b, 0x03, 0xa0, 0x00, 0x09, 0x00, 0x00, 0x03, 0x90, 0x1a, + 0x03, 0x10, 0x00, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0x03, 0x30, 0x00, + 0x03, 0x00, 0x80, 0x03, 0x3c, 0xfe, 0xa3, 0x43, 0x90, 0x00, 0x00, 0x64, + 0xb3, 0x03, 0x90, 0x4f, 0x00, 0x60, 0x83, 0x33, 0x80, 0x00, 0x08, 0x2b, + 0x87, 0x53, 0x80, 0x43, 0x80, 0xf2, 0x03, 0x00, 0x80, 0xb3, 0x43, 0x90, + 0x83, 0x73, 0x80, 0x04, 0x40, 0x31, 0x83, 0x73, 0x80, 0x03, 0x3c, 0xfe, + 0x43, 0x80, 0xf2, 0x00, 0x04, 0x31, 0x87, 0x23, 0x80, 0x43, 0x80, 0xf2, + 0xa3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, + 0x83, 0x33, 0x80, 0x08, 0x00, 0xb2, 0xb2, 0xbf, 0x7f, 0x83, 0x23, 0x80, + 0xc4, 0x00, 0x64, 0x8b, 0xcb, 0x60, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, 0x87, 0x63, 0x80, 0x73, 0xcb, 0x60, + 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x43, 0x80, + 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x02, 0x18, 0xc0, 0x03, 0x44, 0xfe, + 0x04, 0x40, 0x2b, 0x83, 0x23, 0x80, 0x03, 0x3c, 0xfe, 0x47, 0x40, 0xfb, + 0x83, 0x93, 0x80, 0x23, 0x04, 0x90, 0x09, 0x00, 0x00, 0x08, 0xd5, 0x64, + 0x87, 0x43, 0x80, 0x42, 0x40, 0x20, 0x00, 0x04, 0x2b, 0x03, 0x84, 0xf2, + 0x00, 0x04, 0x2b, 0x83, 0x80, 0xf2, 0x03, 0x90, 0x00, 0x02, 0x00, 0xc0, + 0x0b, 0x3c, 0xfe, 0x09, 0x00, 0x00, 0x0c, 0xd5, 0x64, 0x87, 0x43, 0x80, + 0x42, 0x40, 0x20, 0x00, 0x04, 0x2b, 0x03, 0x84, 0xf2, 0x00, 0x04, 0x2b, + 0xc3, 0x80, 0xf2, 0x03, 0x98, 0x00, 0x02, 0x00, 0xc0, 0x03, 0x3c, 0xfe, + 0x00, 0x40, 0x2b, 0x87, 0x40, 0xfb, 0x83, 0x93, 0x80, 0x33, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x47, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0xfd, 0xff, 0xff, + 0x3c, 0x7c, 0x91, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x93, 0x01, 0x60, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x83, 0x43, 0x80, 0xaf, 0xd0, 0x7f, + 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x5a, 0x01, 0x60, 0x83, 0x43, 0x80, 0x02, 0x20, 0xe0, 0x3c, 0x00, 0x3b, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0x37, 0x01, 0x60, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, + 0x03, 0x3c, 0xfe, 0x43, 0xcf, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x02, 0x04, 0x00, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0xef, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, + 0x00, 0x10, 0x31, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x02, 0x64, + 0x0b, 0x04, 0xa0, 0xa7, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, + 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x00, 0x14, 0x2b, + 0x03, 0x30, 0x00, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0x73, 0xd5, 0x7f, 0xb3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x62, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x20, 0xe0, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x02, 0x1c, 0x00, + 0x00, 0x1c, 0x2b, 0x87, 0x33, 0x80, 0x46, 0x40, 0x1c, 0x43, 0x40, 0xfb, + 0xb3, 0x03, 0x90, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, + 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x00, 0x14, 0x2b, 0x03, 0x30, 0x00, + 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, + 0x83, 0x23, 0x80, 0x4b, 0xd5, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0xfd, 0xff, 0xff, 0x3c, 0x7c, 0x91, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, + 0x93, 0x01, 0x60, 0x4c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x83, 0x43, 0x80, 0xe7, 0xce, 0x7f, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x5a, 0x01, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x20, 0xe0, 0x3c, 0x00, 0x3b, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x37, 0x01, 0x60, + 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0x7b, 0xcd, 0x7f, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, 0x00, 0x00, 0x92, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0xef, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, 0x00, 0x10, 0x31, 0x02, 0x1c, 0x00, + 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x02, 0x64, 0x0b, 0x04, 0xa0, 0xa7, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, + 0x03, 0x3c, 0xfe, 0x00, 0x14, 0x2b, 0x03, 0x30, 0x00, 0x03, 0x00, 0x04, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0xab, 0xd3, 0x7f, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x62, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x20, 0xe0, 0x02, 0x1c, 0x00, + 0x03, 0x38, 0xfe, 0x02, 0x1c, 0x00, 0x00, 0x10, 0x2b, 0x87, 0x33, 0x80, + 0x46, 0xc0, 0x03, 0x43, 0x40, 0xfb, 0xb3, 0x03, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, + 0x00, 0x14, 0x2b, 0x03, 0x30, 0x00, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, + 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, 0x83, 0x23, 0x80, 0x83, 0xd3, 0x7f, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0xb3, 0x47, 0x90, 0x83, 0x63, 0x80, 0x02, 0x10, 0xc0, 0xfd, 0xff, 0xff, + 0x3c, 0x7c, 0x91, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0xfb, 0x01, 0x60, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x83, 0x63, 0x80, 0x1f, 0xcd, 0x7f, + 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0xc2, 0x01, 0x60, 0x83, 0x63, 0x80, 0x02, 0x20, 0xe0, 0x1c, 0x00, 0x3b, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0x9f, 0x01, 0x60, 0x83, 0x63, 0x80, 0x02, 0x10, 0xc0, + 0x03, 0x3c, 0xfe, 0xb3, 0xcb, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0x86, 0x1a, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x02, 0x04, 0x00, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x57, 0x01, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, + 0x00, 0x10, 0x31, 0x02, 0x1c, 0x00, 0x03, 0x38, 0xfe, 0x5c, 0x00, 0x3a, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x02, 0x64, + 0x0b, 0x04, 0xa0, 0x0f, 0x01, 0x60, 0x83, 0x63, 0x80, 0x02, 0x20, 0xe0, + 0x03, 0x38, 0xfe, 0xb3, 0x03, 0x90, 0x83, 0x63, 0x80, 0x03, 0x10, 0x80, + 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x00, 0x14, 0x2b, + 0x03, 0x30, 0x00, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0xd3, 0xd1, 0x7f, 0x83, 0x43, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0xba, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x5c, 0x00, 0x83, 0x43, 0x90, 0x83, 0x33, 0x80, 0x00, 0x00, 0x86, + 0x12, 0x00, 0x60, 0x83, 0x33, 0x80, 0x04, 0x00, 0x92, 0x2e, 0x00, 0x60, + 0x83, 0x33, 0x80, 0x02, 0x04, 0x00, 0x03, 0x38, 0xfe, 0x02, 0x04, 0x00, + 0x00, 0x04, 0x2b, 0x87, 0x43, 0x80, 0x46, 0x48, 0x00, 0x43, 0x40, 0xfb, + 0x83, 0x43, 0x90, 0x3b, 0x00, 0x60, 0x83, 0x33, 0x80, 0x08, 0x00, 0x92, + 0x16, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x50, 0x20, 0x83, 0x43, 0x90, + 0x1f, 0x00, 0x60, 0x83, 0x33, 0x80, 0x0c, 0x00, 0x92, 0x12, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x02, 0x44, 0x20, 0x83, 0x43, 0x90, 0x83, 0x63, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, + 0x00, 0x14, 0x2b, 0x03, 0x30, 0x00, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, + 0x83, 0x43, 0x80, 0x0a, 0x40, 0x20, 0x83, 0x23, 0x80, 0x53, 0xd1, 0x7f, + 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x02, 0x20, 0xe0, 0x03, 0x38, 0xfe, + 0xa3, 0x03, 0x90, 0x8c, 0x00, 0x65, 0x88, 0x00, 0x65, 0x44, 0x00, 0x65, + 0x83, 0x43, 0x80, 0x07, 0xcb, 0x7f, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x42, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x3c, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x04, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x23, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, + 0x87, 0x23, 0x80, 0xbb, 0xcb, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x02, 0x20, 0xe0, 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, 0x8c, 0x00, 0x65, + 0x88, 0x00, 0x65, 0x44, 0x00, 0x65, 0x83, 0x43, 0x80, 0x6f, 0xca, 0x7f, + 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x42, 0x00, 0x60, 0x83, 0x23, 0x80, 0x0c, 0x00, 0xb2, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x01, 0x64, 0x0b, 0x04, 0xa0, + 0x23, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0x87, 0x23, 0x80, 0xaf, 0xcb, 0x7f, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x37, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x83, 0x23, 0x80, + 0x40, 0x80, 0x3f, 0x02, 0x04, 0x00, 0x00, 0x00, 0x92, 0x03, 0x00, 0xfd, + 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, + 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0xfd, 0xff, 0xff, + 0x3c, 0x7c, 0x91, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x53, 0x00, 0x60, 0x4c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x83, 0x43, 0x80, 0x3f, 0xc9, 0x7f, + 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x1a, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, + 0xf7, 0xc7, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x27, 0x04, 0xe0, + 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, 0x83, 0x63, 0x80, + 0xe4, 0xf7, 0x63, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x66, 0x00, 0x60, 0x83, 0x63, 0x80, + 0x03, 0x20, 0x80, 0xb3, 0x03, 0x90, 0x83, 0x63, 0x80, 0x03, 0x10, 0x80, + 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x83, 0x43, 0x90, + 0x83, 0x43, 0x80, 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, 0x06, 0x40, 0x20, + 0x83, 0x33, 0x80, 0x00, 0x08, 0x2b, 0x43, 0x80, 0xf2, 0x93, 0x43, 0x90, + 0x83, 0x53, 0x80, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x47, 0xce, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x73, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, + 0x37, 0x04, 0xe0, 0x43, 0x00, 0xe0, 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, + 0x83, 0x83, 0x80, 0xd0, 0xef, 0x63, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x6a, 0x00, 0x60, + 0x83, 0x83, 0x80, 0x03, 0x20, 0x80, 0xb3, 0x03, 0x90, 0x83, 0x83, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x14, 0x2b, 0x03, 0x00, 0x04, + 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, 0x00, 0x08, 0x2b, 0x43, 0x80, 0xf2, + 0x93, 0x43, 0x90, 0x83, 0x83, 0x80, 0x03, 0x30, 0x80, 0xa3, 0x43, 0x90, + 0x83, 0x53, 0x80, 0x8b, 0x63, 0x80, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0xef, 0xcd, 0x7f, 0x4b, 0xc3, 0xfe, 0x47, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0xf8, 0xe3, 0x63, + 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, + 0x00, 0x00, 0x90, 0x32, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x20, 0x80, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x00, 0x08, 0x2b, 0x06, 0x40, 0x20, + 0x83, 0x23, 0x80, 0x4f, 0xcd, 0x7f, 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, + 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, + 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, 0x83, 0x63, 0x80, 0xd8, 0xdf, 0x63, + 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, + 0x00, 0x00, 0x90, 0x36, 0x00, 0x60, 0x83, 0x63, 0x80, 0x03, 0x20, 0x80, + 0xb3, 0x03, 0x90, 0x83, 0x63, 0x80, 0x03, 0x30, 0x80, 0x83, 0x43, 0x90, + 0x83, 0x33, 0x80, 0x00, 0x08, 0x2b, 0x8b, 0x43, 0x80, 0x06, 0x40, 0x20, + 0x83, 0x23, 0x80, 0x2b, 0xcd, 0x7f, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, + 0x47, 0x00, 0x60, 0x04, 0x00, 0x64, 0x83, 0x23, 0x80, 0x77, 0x54, 0x60, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x41, 0xff, 0xff, 0xc4, 0x6f, 0x64, + 0x00, 0x44, 0x24, 0xa9, 0x71, 0x02, 0x03, 0x00, 0x1f, 0x04, 0x19, 0x64, + 0x6b, 0xc0, 0x60, 0xb3, 0x03, 0x90, 0x87, 0x33, 0x80, 0x83, 0x53, 0x80, + 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0xe8, 0xcf, 0x63, + 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, + 0x00, 0x00, 0x90, 0x9e, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x02, 0xb8, 0x00, 0x38, 0x00, 0x86, 0x1a, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x00, 0x04, 0x92, 0x5e, 0x00, 0x60, + 0x04, 0x04, 0x64, 0x83, 0x23, 0x80, 0xeb, 0xcb, 0x7f, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x4e, 0x00, 0x60, 0x83, 0x33, 0x80, 0x41, 0xff, 0xff, 0xc4, 0x6f, 0x64, + 0x00, 0x44, 0x24, 0xa9, 0x71, 0x02, 0x03, 0x00, 0x1f, 0x04, 0x19, 0x64, + 0xbb, 0x7f, 0x60, 0xb3, 0x03, 0x90, 0x87, 0x33, 0x80, 0x83, 0x53, 0x80, + 0x23, 0x04, 0x90, 0x1b, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x0b, 0x00, 0x60, 0x4b, 0xc3, 0xfe, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x53, 0x00, 0xe0, 0xa3, 0x83, 0x90, + 0xb3, 0x87, 0x90, 0x83, 0xa3, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, + 0x3c, 0x00, 0x86, 0x36, 0x00, 0x60, 0x83, 0x33, 0x80, 0x00, 0x00, 0xba, + 0x16, 0x00, 0x60, 0x83, 0x33, 0x80, 0x13, 0xc5, 0x7f, 0x00, 0x00, 0x92, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x63, 0x01, 0x60, 0x83, 0xa3, 0x80, 0x03, 0x20, 0x80, + 0x02, 0xbc, 0x07, 0x83, 0x43, 0x90, 0x83, 0xa3, 0x80, 0x03, 0x20, 0x80, + 0x00, 0x20, 0x31, 0x02, 0xbc, 0x07, 0x93, 0x43, 0x90, 0x00, 0x00, 0x64, + 0x83, 0x83, 0x90, 0x83, 0x43, 0x80, 0x79, 0xfe, 0xff, 0x04, 0x58, 0x64, + 0x00, 0x44, 0x24, 0xa9, 0x71, 0x02, 0x03, 0x00, 0x1f, 0xbd, 0x00, 0x00, + 0x44, 0x90, 0x64, 0xd7, 0x7e, 0x60, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, + 0x02, 0xbc, 0x1f, 0x00, 0x40, 0x2b, 0x87, 0x83, 0x80, 0xfd, 0x00, 0xfc, + 0x46, 0xbc, 0x1f, 0x43, 0x40, 0xfb, 0x83, 0x83, 0x90, 0x83, 0x53, 0x80, + 0x79, 0xfe, 0xff, 0x04, 0x58, 0x64, 0x00, 0x44, 0x24, 0xa9, 0x71, 0x02, + 0x03, 0x00, 0x1f, 0xbd, 0x00, 0x00, 0x44, 0x90, 0x64, 0x8f, 0x7e, 0x60, + 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x02, 0xbc, 0x1f, 0x87, 0x83, 0x80, + 0xfd, 0xff, 0xff, 0x46, 0x00, 0x00, 0x43, 0x40, 0xfb, 0x83, 0x83, 0x90, + 0x83, 0x83, 0x80, 0x00, 0x00, 0xa1, 0x83, 0x83, 0x90, 0x83, 0x83, 0x80, + 0x00, 0x00, 0x99, 0x83, 0x83, 0x90, 0x83, 0x83, 0x80, 0x00, 0x10, 0xa0, + 0x83, 0x83, 0x90, 0x83, 0x83, 0x80, 0x00, 0x10, 0x98, 0x83, 0x83, 0x90, + 0x83, 0x33, 0x80, 0x3c, 0x00, 0x86, 0x2a, 0x00, 0x60, 0x83, 0x33, 0x80, + 0xfb, 0xc3, 0x7f, 0xb3, 0x43, 0x90, 0x83, 0x83, 0x80, 0x0a, 0x40, 0x20, + 0x04, 0x15, 0x64, 0x83, 0x73, 0x80, 0x57, 0xca, 0x7f, 0x4b, 0x00, 0x60, + 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0x33, 0x00, 0x60, 0x83, 0x23, 0x80, + 0xcb, 0xc3, 0x7f, 0xa3, 0x43, 0x90, 0x83, 0x83, 0x80, 0x0a, 0x40, 0x20, + 0x04, 0x15, 0x64, 0x83, 0x63, 0x80, 0x27, 0xca, 0x7f, 0x83, 0x23, 0x80, + 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0xb2, + 0xce, 0xbf, 0x7f, 0x57, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0xb3, 0x47, 0x90, 0x83, 0x63, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x6b, 0xc3, 0x7f, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x00, 0x00, 0x86, + 0x36, 0x00, 0x60, 0x04, 0x15, 0x64, 0x83, 0x33, 0x80, 0x77, 0xc9, 0x7f, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x00, 0x99, 0x83, 0x43, 0x90, + 0x83, 0x43, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x15, 0x64, 0x83, 0x33, 0x80, + 0x9f, 0xc9, 0x7f, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, + 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x43, 0x00, 0x60, + 0xc4, 0x00, 0x64, 0x83, 0x23, 0x80, 0xeb, 0x50, 0x60, 0xb3, 0x03, 0x90, + 0x83, 0x33, 0x80, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xe3, 0x7c, 0x60, 0xb3, 0x03, 0x90, + 0x87, 0x33, 0x80, 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, + 0x83, 0x63, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, 0x02, 0x3c, 0x00, + 0x03, 0x38, 0xfe, 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x00, 0x00, 0xb2, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x67, 0x00, 0x60, 0x83, 0x63, 0x80, 0x03, 0x20, 0x80, + 0x83, 0x43, 0x90, 0xd9, 0xff, 0xff, 0x40, 0x3c, 0x64, 0xa3, 0x03, 0x90, + 0x83, 0x43, 0x80, 0x3c, 0x7c, 0xb3, 0x26, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x18, 0x00, 0xba, 0x1a, 0x00, 0x60, 0x87, 0x43, 0x80, 0x83, 0x33, 0x80, + 0x33, 0x50, 0x60, 0xa3, 0x03, 0x90, 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, 0x0b, 0x04, 0xa0, 0x87, 0x23, 0x80, + 0x83, 0x73, 0x80, 0x23, 0x04, 0x90, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x8c, 0x00, 0x65, + 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x83, 0x43, 0x80, 0x2f, 0xc2, 0x7f, + 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, + 0x72, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, + 0xe7, 0xc0, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, + 0x52, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, + 0x00, 0x00, 0x86, 0x3e, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x02, 0xb8, 0x00, 0x08, 0x00, 0x92, 0x2a, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x20, 0xe0, 0x0c, 0x00, 0x66, 0x12, 0x00, 0x60, 0x83, 0x23, 0x80, + 0xc7, 0xc8, 0x7f, 0x0f, 0x00, 0x60, 0x83, 0x23, 0x80, 0x47, 0xca, 0x7f, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, + 0x83, 0x43, 0x80, 0x77, 0xc1, 0x7f, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x8e, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0x2f, 0xc0, 0x7f, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x5e, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, 0x00, 0x00, 0x86, 0x4a, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x00, 0x92, + 0x36, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, + 0x02, 0xbc, 0x1f, 0x07, 0x3c, 0xfe, 0x83, 0x43, 0x80, 0x02, 0x20, 0xe0, + 0x03, 0x38, 0xfe, 0x0a, 0x40, 0x20, 0x83, 0x23, 0x80, 0x4f, 0xc7, 0x7f, + 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc4, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, + 0x84, 0x00, 0x65, 0x83, 0x43, 0x80, 0xa3, 0xc0, 0x7f, 0x06, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, 0x00, 0x00, 0x90, 0x72, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, 0x03, 0x3c, 0xfe, 0x5b, 0x7f, 0x7f, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x42, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, 0x00, 0x00, 0x86, + 0x2e, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, + 0x08, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x83, 0x23, 0x80, 0xd7, 0xc8, 0x7f, + 0x83, 0x23, 0x80, 0x43, 0xc7, 0x7f, 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, + 0x8c, 0x00, 0x65, 0x48, 0x00, 0x65, 0x84, 0x00, 0x65, 0x83, 0x43, 0x80, + 0xeb, 0x7f, 0x7f, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x08, 0xc0, + 0x00, 0x00, 0x90, 0xaa, 0x00, 0x60, 0x83, 0x43, 0x80, 0x02, 0x10, 0xc0, + 0x03, 0x3c, 0xfe, 0xa3, 0x7e, 0x7f, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0x86, 0x7a, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x02, 0x04, 0x00, 0x00, 0x00, 0x86, 0x66, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x00, 0x92, 0x52, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, 0x02, 0xbc, 0x1f, + 0x03, 0x3c, 0xfe, 0x08, 0x00, 0x64, 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, + 0xcb, 0xc5, 0x7f, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x40, 0x31, + 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x48, 0x00, 0x64, 0x06, 0x40, 0x20, + 0x83, 0x23, 0x80, 0xa7, 0xc5, 0x7f, 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0xc4, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, + 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, + 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0x3b, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x04, 0xe6, 0x64, 0x83, 0x23, 0x80, 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, + 0x16, 0x00, 0x60, 0x83, 0x53, 0x80, 0x87, 0x23, 0x80, 0x23, 0x04, 0x90, + 0x2f, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x3c, 0x1c, 0xae, 0xc6, 0xbf, 0x7f, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x04, 0x64, 0x0b, 0x04, 0xa0, 0x27, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x09, 0x00, 0x00, + 0x00, 0x78, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x84, 0xb4, 0x4b, 0xc3, 0xfe, + 0x17, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x02, 0x08, 0xe9, 0x00, 0x00, 0x66, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x84, 0x04, 0x64, + 0x0b, 0x04, 0xa0, 0x37, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x20, 0x80, + 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, 0x03, 0x30, 0x80, 0x0a, 0x40, 0x20, + 0x09, 0x00, 0x00, 0x04, 0xe6, 0x64, 0x83, 0x23, 0x80, 0x00, 0x08, 0x2b, + 0x43, 0x80, 0xf2, 0x03, 0x08, 0x90, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, + 0x43, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, 0x83, 0x8b, 0x90, + 0x83, 0x73, 0x80, 0xa3, 0x03, 0x90, 0x83, 0x63, 0x80, 0xb3, 0x03, 0x90, + 0x83, 0x83, 0x80, 0x83, 0x43, 0x90, 0x3b, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x06, 0x00, 0xe0, 0x83, 0x33, 0x80, 0x03, 0x04, 0xb0, 0x83, 0x33, 0x80, + 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, 0x03, 0x44, 0x00, 0x83, 0x43, 0x90, + 0x83, 0x43, 0x80, 0x00, 0x00, 0x92, 0xc6, 0xbf, 0x7f, 0x4b, 0xc3, 0xfe, + 0x47, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, + 0x83, 0x23, 0x80, 0x08, 0x01, 0x64, 0x87, 0x33, 0x80, 0xf4, 0xf7, 0x63, + 0x10, 0x00, 0x92, 0x0e, 0x00, 0x60, 0x40, 0x00, 0x64, 0x0b, 0x00, 0x60, + 0x00, 0x00, 0x64, 0x17, 0x04, 0xe0, 0x43, 0x00, 0xe0, 0x83, 0x83, 0x90, + 0x93, 0x87, 0x90, 0x83, 0x83, 0x80, 0x03, 0x20, 0x80, 0xa3, 0x03, 0x90, + 0x83, 0x83, 0x80, 0x03, 0x30, 0x80, 0x02, 0xfc, 0x07, 0xb3, 0x03, 0x90, + 0x40, 0x00, 0x64, 0x83, 0x43, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, + 0x56, 0x01, 0x60, 0x83, 0x33, 0x80, 0xa3, 0x43, 0x90, 0x87, 0x23, 0x80, + 0x83, 0x63, 0x80, 0xc0, 0xfb, 0x63, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x00, 0x00, 0x86, 0x32, 0x01, 0x60, 0x83, 0x63, 0x80, 0x00, 0x80, 0xa7, + 0x00, 0x80, 0xa2, 0xa3, 0x43, 0x90, 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x63, 0x80, 0x03, 0x00, 0x80, 0x93, 0x43, 0x90, + 0x83, 0x83, 0x80, 0x03, 0x30, 0x80, 0x02, 0xbc, 0x07, 0x44, 0x00, 0x64, + 0x40, 0x80, 0x40, 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, 0x2c, 0x04, 0x3a, + 0x2e, 0x00, 0x60, 0x83, 0x83, 0x80, 0x03, 0x30, 0x80, 0x02, 0xbc, 0x07, + 0x44, 0x00, 0x64, 0x40, 0x80, 0x40, 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, + 0x00, 0x04, 0x2b, 0x4c, 0x00, 0x3a, 0xa6, 0x00, 0x60, 0x00, 0x00, 0x64, + 0x83, 0x43, 0x90, 0x9b, 0x00, 0x60, 0x83, 0x53, 0x80, 0x05, 0x00, 0x00, + 0x00, 0x00, 0xae, 0x5e, 0x00, 0x60, 0x05, 0x00, 0x00, 0x08, 0x00, 0x64, + 0x87, 0x23, 0x80, 0x83, 0x33, 0x80, 0xd8, 0xe7, 0x63, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x03, 0x00, 0xfd, 0x83, 0x43, 0x90, 0x83, 0x33, 0x80, + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x53, 0x80, + 0xfd, 0xff, 0xff, 0x03, 0x00, 0x00, 0x93, 0x43, 0x90, 0x33, 0x00, 0x60, + 0x8b, 0x53, 0x80, 0x87, 0x23, 0x80, 0x83, 0x33, 0x80, 0xc4, 0xe3, 0x63, + 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, 0x7c, 0x00, 0x48, 0x03, 0x00, 0xfd, + 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, 0x93, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, 0x83, 0x53, 0x80, 0x00, 0x00, 0x92, + 0x5a, 0xbf, 0x7f, 0x83, 0x43, 0x80, 0x00, 0x00, 0x86, 0x8a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x07, 0x00, 0x80, 0x83, 0x93, 0x80, + 0x23, 0x04, 0x90, 0x83, 0x83, 0x80, 0x03, 0x30, 0x80, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x53, 0x00, 0x90, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x03, 0x10, 0x80, 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x07, 0x84, 0xb4, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, 0x26, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x03, 0x10, 0x80, 0x02, 0xfc, 0x07, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x53, 0x00, 0x90, 0x2b, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, 0x07, 0x84, 0xb4, + 0x17, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, 0x47, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0xa3, 0x03, 0x90, 0xb3, 0x07, 0x90, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x02, 0x08, 0xe9, 0x00, 0x00, 0x66, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x84, 0x04, 0x64, 0x0b, 0x04, 0xa0, 0x17, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x44, 0x00, 0x64, 0x0f, 0x84, 0xb4, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0xb3, 0x47, 0x90, 0x83, 0x63, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x2f, 0x00, 0x60, 0x83, 0x63, 0x80, + 0x03, 0x20, 0x80, 0xb3, 0x03, 0x90, 0x83, 0x63, 0x80, 0x03, 0x30, 0x80, + 0x83, 0x43, 0x90, 0x8b, 0x43, 0x80, 0x87, 0x33, 0x80, 0x83, 0x23, 0x80, + 0x33, 0x6c, 0x60, 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x03, 0x20, 0x80, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0xc4, 0x01, 0x64, 0x0b, 0x04, 0xa0, + 0x23, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0x87, 0x23, 0x80, 0x47, 0x4d, 0x60, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, 0x03, 0x10, 0x80, 0x00, 0x68, 0x31, + 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x2b, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x04, 0xd5, 0x64, 0x83, 0x23, 0x80, 0x43, 0x80, 0xf2, 0x03, 0xa0, 0x01, + 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x83, 0x53, 0x80, 0x23, 0x04, 0x90, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0xb3, 0x07, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x03, 0x00, 0xe0, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x84, 0xb4, + 0x04, 0x80, 0x64, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x13, 0x78, 0x7f, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0x04, 0x5c, 0x64, + 0x03, 0x04, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, + 0x84, 0x75, 0x64, 0x13, 0x04, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x29, 0x0c, 0x00, 0x84, 0x87, 0x64, 0x23, 0x04, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0x04, 0x9b, 0x64, 0x33, 0x04, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0x84, 0xae, 0x64, + 0x03, 0x44, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, + 0x44, 0xc1, 0x64, 0x13, 0x44, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x29, 0x0c, 0x00, 0x04, 0x65, 0x64, 0x23, 0x44, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0x04, 0xc5, 0x64, 0x33, 0x44, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x2d, 0x0c, 0x00, 0x84, 0x0e, 0x64, + 0x03, 0x84, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x2d, 0x0c, 0x00, + 0x04, 0x64, 0x64, 0x13, 0x84, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x2d, 0x0c, 0x00, 0x84, 0xb9, 0x64, 0x23, 0x84, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, 0x44, 0xc5, 0x64, 0x33, 0x84, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, 0x04, 0x8d, 0x64, + 0x03, 0xc4, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, + 0x44, 0xd7, 0x64, 0x13, 0xc4, 0x90, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x31, 0x0c, 0x00, 0xc4, 0xa8, 0x64, 0x23, 0xc4, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, 0x84, 0x22, 0x64, 0x33, 0xc4, 0x90, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, 0x04, 0x3f, 0x64, + 0x03, 0x04, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, + 0x04, 0x65, 0x64, 0x13, 0x04, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x31, 0x0c, 0x00, 0x04, 0xea, 0x64, 0x23, 0x04, 0x91, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, 0x44, 0x94, 0x64, 0x33, 0x04, 0x91, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x31, 0x0c, 0x00, 0x84, 0x5b, 0x64, + 0x03, 0x44, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, + 0xc4, 0xad, 0x64, 0x13, 0x44, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x35, 0x0c, 0x00, 0x04, 0xce, 0x64, 0x23, 0x44, 0x91, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, 0x84, 0xf0, 0x64, 0x33, 0x44, 0x91, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x39, 0x0c, 0x00, 0x44, 0x18, 0x64, + 0x03, 0x84, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x39, 0x0c, 0x00, + 0xc4, 0x3a, 0x64, 0x13, 0x84, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x29, 0x0c, 0x00, 0x04, 0x65, 0x64, 0x23, 0x84, 0x91, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0x04, 0x65, 0x64, 0x33, 0x84, 0x91, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x29, 0x0c, 0x00, 0xc4, 0x6b, 0x64, + 0x03, 0xc4, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x39, 0x0c, 0x00, + 0xc4, 0x82, 0x64, 0x13, 0xc4, 0x91, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x39, 0x0c, 0x00, 0xc4, 0x67, 0x64, 0x23, 0xc4, 0x91, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x39, 0x0c, 0x00, 0x04, 0x7c, 0x64, 0x33, 0xc4, 0x91, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x39, 0x0c, 0x00, 0x84, 0xb6, 0x64, + 0x03, 0x04, 0x92, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x3d, 0x0c, 0x00, + 0x44, 0x20, 0x64, 0x13, 0x04, 0x92, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x3d, 0x0c, 0x00, 0x84, 0x2e, 0x64, 0x23, 0x04, 0x92, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x3d, 0x0c, 0x00, 0x44, 0x44, 0x64, 0x33, 0x04, 0x92, + 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x3d, 0x0c, 0x00, 0x84, 0x55, 0x64, + 0x13, 0x44, 0x92, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, + 0x44, 0x04, 0x64, 0x23, 0x44, 0x92, 0x09, 0x00, 0x00, 0x00, 0xe6, 0x64, + 0x35, 0x0c, 0x00, 0x84, 0x2a, 0x64, 0x33, 0x44, 0x92, 0x09, 0x00, 0x00, + 0x00, 0xe6, 0x64, 0x35, 0x0c, 0x00, 0x84, 0x7e, 0x64, 0x03, 0x84, 0x92, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x04, 0x00, 0x64, 0x0b, 0x84, 0xb4, + 0x4b, 0xc3, 0xfe, 0x07, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x04, 0x00, 0x64, 0x83, 0x43, 0x80, 0xd8, 0xbf, 0x62, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x41, 0xff, 0xff, 0xc4, 0x6f, 0x64, 0x00, 0x44, 0x24, + 0xa9, 0x71, 0x02, 0x03, 0x00, 0x1f, 0x04, 0x19, 0x64, 0xcf, 0x6f, 0x60, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x27, 0x04, 0xe0, 0x23, 0x00, 0xe0, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x00, 0x00, 0xba, 0x22, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, 0x0e, 0x00, 0x60, 0x00, 0x00, 0x64, + 0x5f, 0x00, 0x60, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, + 0x00, 0x00, 0x86, 0x22, 0x00, 0x60, 0x84, 0x01, 0x64, 0x00, 0x00, 0x64, + 0x73, 0xc0, 0x7f, 0xa3, 0x03, 0xa0, 0x82, 0x23, 0xc0, 0x00, 0x20, 0x28, + 0x2f, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x43, 0x80, + 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x04, 0x12, 0x64, 0x37, 0x7b, 0x7f, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x02, 0xbc, 0x1f, 0x27, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0xa0, 0x05, 0x00, 0x00, + 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0xb2, 0x00, 0x60, + 0x84, 0x01, 0x64, 0x00, 0x00, 0x64, 0x0b, 0xc0, 0x7f, 0xa3, 0x03, 0xa0, + 0x82, 0x23, 0xc0, 0x02, 0xbc, 0x07, 0xa3, 0x03, 0xa0, 0x82, 0x93, 0xc0, + 0x00, 0x20, 0x2b, 0x06, 0x40, 0x20, 0x82, 0x23, 0xc0, 0x43, 0x40, 0xfb, + 0xa3, 0x03, 0xa0, 0x8a, 0x23, 0xc0, 0x84, 0x01, 0x64, 0x00, 0x00, 0x64, + 0xd3, 0xc0, 0x7f, 0x04, 0x00, 0x64, 0x00, 0x00, 0x64, 0xc7, 0x7f, 0x7f, + 0xa3, 0x03, 0xa0, 0x82, 0x23, 0xc0, 0x02, 0x48, 0x00, 0xa3, 0x03, 0xa0, + 0x8a, 0x23, 0xc0, 0x04, 0x00, 0x64, 0x00, 0x00, 0x64, 0xa7, 0xc0, 0x7f, + 0x82, 0x23, 0xc0, 0x02, 0x48, 0x20, 0xa3, 0x03, 0xa0, 0x8a, 0x23, 0xc0, + 0x04, 0x00, 0x64, 0x00, 0x00, 0x64, 0x8b, 0xc0, 0x7f, 0x82, 0x23, 0xc0, + 0x02, 0x48, 0x00, 0xa3, 0x03, 0xa0, 0x8a, 0x23, 0xc0, 0x04, 0x00, 0x64, + 0x00, 0x00, 0x64, 0x6f, 0xc0, 0x7f, 0x6f, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, + 0x04, 0x12, 0x64, 0x3f, 0x7a, 0x7f, 0xb3, 0x03, 0x90, 0x82, 0x93, 0xc0, + 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, 0x02, 0xbc, 0x1f, 0x87, 0x33, 0x80, + 0xfd, 0xff, 0xff, 0x46, 0x00, 0x00, 0x43, 0x40, 0xfb, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x87, 0x33, 0x80, 0x4a, 0x40, 0x20, 0x04, 0x12, 0x64, + 0x3f, 0x7a, 0x7f, 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x43, 0x00, 0xe0, + 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, 0x83, 0x83, 0x80, 0xe0, 0xe3, 0x63, + 0xa3, 0x43, 0xa0, 0x83, 0x83, 0x80, 0x00, 0x00, 0xba, 0x22, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x83, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, 0x0e, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x8f, 0x01, 0x60, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, + 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x00, 0x40, 0x64, 0x0b, 0x00, 0x60, + 0x40, 0xf3, 0x64, 0x87, 0x93, 0x80, 0x5c, 0x00, 0x3a, 0x2e, 0x00, 0x60, + 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, + 0x0e, 0x00, 0x60, 0x00, 0x40, 0x64, 0x0b, 0x00, 0x60, 0x40, 0xf3, 0x64, + 0x93, 0x83, 0x90, 0x57, 0x00, 0x60, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x00, 0x20, 0x64, + 0x0b, 0x00, 0x60, 0x80, 0x0c, 0x64, 0x87, 0x93, 0x80, 0x1c, 0x04, 0x3a, + 0x2a, 0x00, 0x60, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, + 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x00, 0x20, 0x64, 0x0b, 0x00, 0x60, + 0x80, 0x0c, 0x64, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, 0x83, 0x43, 0x90, + 0x80, 0x68, 0x64, 0xa3, 0x03, 0x90, 0x0f, 0xce, 0x7f, 0x86, 0xa3, 0xc0, + 0x83, 0x93, 0x80, 0x1c, 0x04, 0x3a, 0x12, 0x00, 0x60, 0xc0, 0x00, 0x64, + 0xb3, 0x43, 0x90, 0x4f, 0x00, 0x60, 0xc0, 0x00, 0x65, 0xb3, 0x43, 0x90, + 0x43, 0x00, 0x60, 0x83, 0x73, 0x80, 0x06, 0x40, 0x20, 0x82, 0xa3, 0xc0, + 0x03, 0x84, 0xf2, 0xa3, 0x43, 0xa0, 0x82, 0xa3, 0xc0, 0x83, 0x43, 0x90, + 0xc0, 0x6a, 0x64, 0xa3, 0x03, 0x90, 0xbf, 0xcd, 0x7f, 0x86, 0xa3, 0xc0, + 0x83, 0x83, 0x80, 0xec, 0xd7, 0x63, 0x40, 0x01, 0x64, 0x43, 0x71, 0x7f, + 0x82, 0xa3, 0xc0, 0x87, 0x93, 0x80, 0x47, 0xc0, 0xf2, 0x40, 0x7c, 0x27, + 0x07, 0xc4, 0xfa, 0x47, 0xc0, 0xf2, 0x83, 0x73, 0x80, 0x08, 0x7c, 0x27, + 0x83, 0x73, 0x80, 0x83, 0xc0, 0xfa, 0x03, 0xc8, 0xf2, 0x1c, 0x04, 0x3a, + 0x96, 0xbf, 0x7f, 0x86, 0xa3, 0xc0, 0x83, 0x93, 0x80, 0x7c, 0x00, 0x48, + 0x2a, 0x00, 0x60, 0x83, 0x93, 0x80, 0x83, 0x43, 0x90, 0xc0, 0x6a, 0x64, + 0xa3, 0x03, 0x90, 0x53, 0xcd, 0x7f, 0x83, 0x93, 0x80, 0x06, 0x40, 0x20, + 0x83, 0x83, 0x80, 0xfc, 0xcf, 0x63, 0x83, 0x93, 0x80, 0x47, 0x04, 0xe0, + 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x93, 0x47, 0x90, 0x83, 0x43, 0x80, + 0x00, 0x00, 0xba, 0x22, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, + 0x1e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0x00, 0x00, 0x64, 0x7b, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, + 0xa3, 0x03, 0x90, 0x83, 0x53, 0x80, 0x00, 0x08, 0x2b, 0x03, 0x00, 0x03, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x9b, 0x77, 0x7f, 0xb3, 0x03, 0x90, + 0x23, 0x00, 0x60, 0x83, 0x53, 0x80, 0x00, 0x08, 0x2b, 0x03, 0x00, 0x03, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x80, 0x7b, 0x77, 0x7f, 0xb3, 0x03, 0x90, + 0x83, 0x33, 0x80, 0x01, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, + 0xd6, 0xbf, 0x7f, 0x83, 0x33, 0x80, 0x02, 0xbc, 0x1f, 0x03, 0x3c, 0xfe, + 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, + 0xf0, 0xeb, 0x62, 0x03, 0x3c, 0xfe, 0xb3, 0x03, 0x90, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x07, 0x00, 0x80, 0x83, 0x63, 0x80, 0x00, 0x04, 0x2b, + 0x40, 0x80, 0x3e, 0x02, 0x0c, 0x00, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0xa3, 0x03, 0x90, 0x83, 0x43, 0x80, 0x02, 0x08, 0x00, 0x93, 0x43, 0x90, + 0x83, 0x33, 0x80, 0x01, 0x00, 0x00, 0x20, 0x3c, 0xbb, 0x22, 0x00, 0x60, + 0x83, 0x53, 0x80, 0x00, 0x00, 0x92, 0x16, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x02, 0x48, 0x20, 0xa3, 0x03, 0x90, 0x2f, 0x00, 0x60, 0x83, 0x33, 0x80, + 0x01, 0x00, 0x00, 0x04, 0x40, 0xb3, 0x1e, 0x00, 0x60, 0x83, 0x53, 0x80, + 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, 0x83, 0x23, 0x80, 0x02, 0x48, 0x00, + 0xa3, 0x03, 0x90, 0x87, 0x23, 0x80, 0x83, 0x43, 0x80, 0x7c, 0x00, 0x48, + 0x62, 0x00, 0x60, 0x01, 0x12, 0x00, 0x08, 0x00, 0x64, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x00, 0x80, 0x87, 0x63, 0x80, 0x44, 0x04, 0x2b, + 0xcc, 0x00, 0x64, 0xc4, 0x84, 0x40, 0x47, 0x50, 0xfe, 0x03, 0xc4, 0xfb, + 0x83, 0x00, 0x90, 0x01, 0x12, 0x00, 0x0c, 0x00, 0x64, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x00, 0x80, 0x87, 0x63, 0x80, 0x44, 0x04, 0x2b, + 0x8b, 0x23, 0x80, 0x84, 0x84, 0x40, 0x03, 0x44, 0xfb, 0xc3, 0x00, 0x90, + 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x93, 0x00, 0xe0, 0xa3, 0x03, 0x91, + 0xb3, 0x07, 0x91, 0x83, 0x23, 0x81, 0xf4, 0xa7, 0x63, 0x03, 0x3c, 0xfe, + 0xb3, 0xc3, 0x90, 0x83, 0xf3, 0x80, 0xa3, 0xc3, 0x90, 0x83, 0x23, 0x81, + 0xc0, 0xdb, 0x62, 0x03, 0x3c, 0xfe, 0x83, 0x03, 0x91, 0x83, 0x23, 0x81, + 0xc8, 0xa3, 0x63, 0x93, 0x03, 0x91, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0xb8, 0xc1, 0x07, 0x44, 0xfe, 0x83, 0x03, 0x81, 0x0c, 0x04, 0x3a, + 0x36, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x00, 0xc2, + 0x07, 0x44, 0xfe, 0x83, 0x03, 0x81, 0x4c, 0x00, 0x3a, 0x1a, 0x00, 0x60, + 0x83, 0x33, 0x81, 0x87, 0xf3, 0x80, 0x43, 0x80, 0xf2, 0xa3, 0xc3, 0x90, + 0x5b, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0xb8, 0xc1, + 0x07, 0x44, 0xfe, 0x83, 0x03, 0x81, 0x4c, 0x00, 0x3a, 0x16, 0x00, 0x60, + 0x83, 0xf3, 0x80, 0x03, 0x08, 0x00, 0xa3, 0xc3, 0x90, 0x2f, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x00, 0xc2, 0x07, 0x44, 0xfe, + 0x83, 0x03, 0x81, 0x0c, 0x04, 0x3a, 0x12, 0x00, 0x60, 0x83, 0xf3, 0x80, + 0x03, 0x48, 0x00, 0xa3, 0xc3, 0x90, 0x83, 0x03, 0x81, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x4f, 0x69, 0x60, 0x06, 0x40, 0x20, 0x83, 0xe3, 0x80, 0x83, 0xc3, 0x90, + 0x83, 0x33, 0x81, 0xa3, 0x83, 0x90, 0x83, 0x13, 0x81, 0x83, 0x83, 0x90, + 0xa3, 0x47, 0x90, 0x83, 0xf3, 0x80, 0x83, 0x43, 0x90, 0xc0, 0x6f, 0x64, + 0xa3, 0x03, 0x90, 0x33, 0xca, 0x7f, 0x87, 0xe3, 0x80, 0x83, 0xf3, 0x80, + 0x7c, 0x00, 0x48, 0x1e, 0x00, 0x60, 0x83, 0xe3, 0x80, 0x06, 0x40, 0x20, + 0x83, 0x23, 0x81, 0xc8, 0xb3, 0x63, 0x80, 0x07, 0x64, 0xa3, 0x6d, 0x7f, + 0x4b, 0xc3, 0xfe, 0x97, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, + 0x83, 0x43, 0x80, 0x00, 0x00, 0xb2, 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0xcb, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x43, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, 0xe3, 0x74, 0x7f, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x00, 0xe0, 0x0a, 0x40, 0x20, + 0x44, 0x00, 0x64, 0x83, 0x43, 0x80, 0x40, 0x80, 0x40, 0x83, 0x40, 0xfb, + 0x06, 0x40, 0x20, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x03, 0x04, 0xb0, + 0x80, 0x7c, 0x64, 0xa3, 0x03, 0x90, 0x7f, 0xc9, 0x7f, 0x83, 0x43, 0x80, + 0x00, 0x00, 0xba, 0x26, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, + 0x83, 0x43, 0x80, 0x43, 0x80, 0xf2, 0x03, 0xa0, 0x01, 0x06, 0x00, 0xe0, + 0x46, 0x40, 0x22, 0x03, 0x04, 0xb0, 0x11, 0x10, 0x00, 0x04, 0x0a, 0x64, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x00, 0xe0, 0x08, 0x00, 0x66, + 0x03, 0x00, 0xfd, 0x02, 0x04, 0x00, 0x0c, 0x1c, 0x2b, 0x42, 0x00, 0xe0, + 0x02, 0xbc, 0x03, 0x0a, 0x40, 0x20, 0xc2, 0x40, 0x20, 0x83, 0x40, 0xfb, + 0x43, 0x00, 0xb0, 0x27, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, + 0xb3, 0x47, 0x90, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x63, 0x80, + 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0xa3, 0x03, 0x90, 0x83, 0x73, 0x80, + 0x3c, 0x04, 0xba, 0x36, 0x00, 0x60, 0x08, 0x00, 0x64, 0x04, 0x23, 0x64, + 0x83, 0x23, 0x80, 0xfb, 0x73, 0x7f, 0x44, 0x00, 0x64, 0x83, 0x73, 0x80, + 0x40, 0x80, 0x40, 0x0a, 0x40, 0x20, 0x04, 0x21, 0x64, 0x83, 0x23, 0x80, + 0xdf, 0x73, 0x7f, 0x3b, 0x00, 0x60, 0x08, 0x00, 0x64, 0x04, 0x24, 0x64, + 0x83, 0x23, 0x80, 0xcb, 0x73, 0x7f, 0xc4, 0x08, 0x64, 0x83, 0x73, 0x80, + 0x43, 0xc0, 0xf2, 0x44, 0x00, 0x64, 0x40, 0x80, 0x40, 0x0a, 0x40, 0x20, + 0x04, 0x22, 0x64, 0x83, 0x23, 0x80, 0xa7, 0x73, 0x7f, 0x83, 0x73, 0x80, + 0x0a, 0x40, 0x20, 0x04, 0x20, 0x64, 0x83, 0x23, 0x80, 0x93, 0x73, 0x7f, + 0x01, 0x00, 0xf4, 0x08, 0x00, 0x64, 0x04, 0x28, 0x64, 0x83, 0x23, 0x80, + 0x7f, 0x73, 0x7f, 0x04, 0x28, 0x64, 0x83, 0x23, 0x80, 0x27, 0x73, 0x7f, + 0x83, 0x43, 0x90, 0x17, 0x00, 0x60, 0x04, 0x28, 0x64, 0x83, 0x23, 0x80, + 0x13, 0x73, 0x7f, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x01, 0x01, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0xe2, 0xbf, 0x7f, 0x82, 0x83, 0xc0, + 0x03, 0x3c, 0xfe, 0xb3, 0x03, 0x90, 0x83, 0x73, 0x80, 0x3c, 0x04, 0xba, + 0x1a, 0x00, 0x60, 0x08, 0x00, 0x64, 0x04, 0x21, 0x64, 0x83, 0x23, 0x80, + 0x1f, 0x73, 0x7f, 0x17, 0x00, 0x60, 0x08, 0x00, 0x64, 0x04, 0x22, 0x64, + 0x83, 0x23, 0x80, 0x0b, 0x73, 0x7f, 0x83, 0x33, 0x80, 0x37, 0x04, 0xe0, + 0x43, 0x10, 0xe6, 0x83, 0x83, 0x90, 0x93, 0x87, 0x90, 0x00, 0x00, 0x64, + 0xb3, 0x03, 0x90, 0x00, 0x00, 0x64, 0x83, 0x43, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x04, 0x00, 0x64, 0x0b, 0x04, 0xa0, 0x83, 0x83, 0x80, + 0x00, 0x00, 0xba, 0x22, 0x00, 0x60, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x83, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x44, 0x00, 0x64, + 0x0b, 0x04, 0xa0, 0xbb, 0x01, 0x60, 0x00, 0x00, 0x64, 0x83, 0x43, 0x90, + 0x37, 0x00, 0x60, 0x83, 0x43, 0x80, 0x00, 0x08, 0x2b, 0x87, 0x93, 0x80, + 0x5b, 0x80, 0xf2, 0x83, 0x43, 0x80, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, + 0xd0, 0xa3, 0x63, 0x83, 0x01, 0x90, 0x83, 0x43, 0x80, 0x03, 0x04, 0x00, + 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, 0x18, 0x00, 0xae, 0xca, 0xbf, 0x7f, + 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x3f, 0x00, 0x60, 0x83, 0x43, 0x80, + 0x07, 0x04, 0x00, 0x83, 0x47, 0x90, 0x00, 0x08, 0x2b, 0x87, 0x93, 0x80, + 0x5b, 0x80, 0xf2, 0x83, 0x33, 0x80, 0x06, 0x40, 0x20, 0x83, 0x83, 0x80, + 0xe8, 0xdf, 0x63, 0x83, 0x01, 0x90, 0x83, 0x33, 0x80, 0x03, 0x04, 0x00, + 0xb3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x0c, 0x08, 0xae, 0xc2, 0xbf, 0x7f, + 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x03, 0xb0, 0x80, 0xa3, 0x03, 0x90, 0xbf, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x04, 0x92, 0x92, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0x04, 0x00, 0x00, 0x00, 0x86, + 0x7e, 0x00, 0x60, 0x00, 0x00, 0x64, 0x93, 0x43, 0x90, 0x67, 0x00, 0x60, + 0x83, 0x53, 0x80, 0x00, 0x00, 0x92, 0x0e, 0x00, 0x60, 0x00, 0x00, 0x64, + 0x0b, 0x00, 0x60, 0x00, 0x04, 0x64, 0xa3, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x07, 0x04, 0x00, 0x83, 0x47, 0x90, 0x00, 0x08, 0x2b, 0x87, 0x93, 0x80, + 0x5b, 0x80, 0xf2, 0x04, 0x0b, 0x64, 0x83, 0x23, 0x80, 0x27, 0x71, 0x7f, + 0x06, 0x40, 0x20, 0x83, 0x63, 0x80, 0x40, 0x80, 0x3e, 0x03, 0x3c, 0xfe, + 0x83, 0x01, 0x90, 0x83, 0x53, 0x80, 0x03, 0x04, 0x00, 0x93, 0x43, 0x90, + 0x83, 0x53, 0x80, 0x04, 0x00, 0xb2, 0x9a, 0xbf, 0x7f, 0x83, 0x33, 0x80, + 0x03, 0x04, 0x00, 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, + 0xa3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x00, 0x10, 0xb6, 0x22, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, 0x26, 0xbf, 0x7f, 0x83, 0x43, 0x80, + 0x07, 0x04, 0x00, 0x83, 0x47, 0x90, 0x00, 0x08, 0x2b, 0x87, 0x93, 0x80, + 0x43, 0x80, 0xf2, 0x84, 0x00, 0x65, 0x03, 0x04, 0x90, 0x47, 0x14, 0xe6, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0xc4, 0x00, 0x64, 0x83, 0x23, 0x80, + 0xf0, 0x87, 0x63, 0x17, 0x04, 0xe0, 0x53, 0x00, 0xe0, 0x11, 0x10, 0x00, + 0x00, 0x06, 0x64, 0x03, 0x00, 0x80, 0x3c, 0x7c, 0xbb, 0x8e, 0x02, 0x40, + 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0x73, 0x02, 0x60, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, 0x83, 0x23, 0x80, + 0x40, 0x80, 0x3f, 0x02, 0x04, 0x00, 0x00, 0x00, 0x92, 0x3a, 0x02, 0x60, + 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, 0xb3, 0x03, 0x90, 0x00, 0x00, 0x64, + 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, 0x93, 0x43, 0x90, 0x00, 0x00, 0x64, + 0xa3, 0x43, 0x90, 0xbf, 0x01, 0x60, 0x83, 0x33, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x14, 0x31, 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, 0x83, 0x23, 0x80, + 0x6c, 0x00, 0x48, 0x92, 0x01, 0x60, 0x83, 0x33, 0x80, 0x03, 0x00, 0x80, + 0x02, 0xb8, 0x00, 0x08, 0x04, 0x92, 0x7e, 0x01, 0x60, 0x04, 0x08, 0x64, + 0x83, 0x33, 0x80, 0xcf, 0x6f, 0x7f, 0xb3, 0x43, 0x90, 0x83, 0x73, 0x80, + 0x41, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x66, 0x01, 0x60, + 0x83, 0x73, 0x80, 0x11, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x92, + 0x0a, 0x00, 0x60, 0x4f, 0x01, 0x60, 0x83, 0x63, 0x80, 0x03, 0x04, 0x00, + 0xa3, 0x43, 0x90, 0x83, 0x73, 0x80, 0x21, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x92, 0x1a, 0x00, 0x60, 0x83, 0x73, 0x80, 0x81, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x0e, 0x01, 0x60, 0x04, 0x0b, 0x64, + 0x83, 0x33, 0x80, 0x5f, 0x6f, 0x7f, 0x83, 0x83, 0x90, 0x04, 0x0a, 0x64, + 0x83, 0x33, 0x80, 0x4f, 0x6f, 0x7f, 0x93, 0x83, 0x90, 0x04, 0x09, 0x64, + 0x83, 0x33, 0x80, 0x3f, 0x6f, 0x7f, 0xa3, 0x83, 0x90, 0x86, 0x03, 0xc1, + 0x82, 0x13, 0xc1, 0x44, 0x00, 0x3a, 0x16, 0x00, 0x60, 0x86, 0x0b, 0xc1, + 0x82, 0x23, 0xc1, 0x64, 0x00, 0x3a, 0x12, 0x00, 0x60, 0x40, 0x00, 0x64, + 0x93, 0x43, 0x90, 0xdb, 0x00, 0x60, 0x86, 0x03, 0xc1, 0x82, 0x1b, 0xc1, + 0x24, 0x04, 0x3a, 0x22, 0x00, 0x60, 0x86, 0x0b, 0xc1, 0x82, 0x2b, 0xc1, + 0x24, 0x04, 0x3a, 0x12, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x04, 0x00, + 0x83, 0x43, 0x90, 0x83, 0x73, 0x80, 0x81, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, 0x83, 0x73, 0x80, 0x02, 0x40, 0x01, + 0xb3, 0x43, 0x90, 0x83, 0x73, 0x80, 0x21, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, 0x83, 0x73, 0x80, 0x02, 0xc0, 0x00, + 0xb3, 0x43, 0x90, 0x83, 0x73, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x08, 0x64, + 0x83, 0x33, 0x80, 0xdb, 0x6e, 0x7f, 0x83, 0x73, 0x80, 0x02, 0xc0, 0x20, + 0xb3, 0x43, 0x90, 0x83, 0x73, 0x80, 0x02, 0x40, 0x21, 0xb3, 0x43, 0x90, + 0x83, 0x73, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x08, 0x64, 0x83, 0x33, 0x80, + 0xaf, 0x6e, 0x7f, 0x83, 0x33, 0x80, 0x03, 0x10, 0x00, 0xb3, 0x03, 0x90, + 0x83, 0x33, 0x80, 0x03, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, 0x32, 0xbe, 0x7f, 0x83, 0x53, 0x80, + 0x00, 0x00, 0x86, 0x16, 0x00, 0x60, 0x84, 0x00, 0x64, 0x83, 0x23, 0x80, + 0xeb, 0xf7, 0x7f, 0x23, 0x00, 0x60, 0x87, 0x43, 0x80, 0x83, 0x63, 0x80, + 0x6c, 0x00, 0x48, 0x12, 0x00, 0x60, 0x44, 0x00, 0x65, 0x83, 0x23, 0x80, + 0xcb, 0xf7, 0x7f, 0x83, 0x23, 0x80, 0xaf, 0xf6, 0x7f, 0x83, 0x23, 0x80, + 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0xb2, + 0x8e, 0xbd, 0x7f, 0x0b, 0x00, 0x60, 0x4b, 0xc3, 0xfe, 0x57, 0x04, 0xe0, + 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, + 0x83, 0x23, 0x80, 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, + 0x44, 0x15, 0x64, 0x0b, 0x04, 0xa0, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, + 0x83, 0x23, 0x80, 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, + 0x04, 0x0f, 0x64, 0x13, 0x04, 0xa0, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x63, 0x10, 0xe6, 0x83, 0xc3, 0x90, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x64, + 0xdf, 0x69, 0x7f, 0x83, 0xc3, 0x80, 0xb7, 0xf1, 0x7f, 0x03, 0x3c, 0xfe, + 0x83, 0x83, 0x90, 0x83, 0x83, 0x80, 0x0a, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x04, 0xd5, 0x64, 0x83, 0xc3, 0x80, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, + 0x13, 0x08, 0xa0, 0x83, 0x83, 0x80, 0xa7, 0x69, 0x7f, 0x83, 0x83, 0x80, + 0x00, 0x00, 0x92, 0xfe, 0x01, 0x40, 0x83, 0x83, 0x80, 0x0d, 0x00, 0x00, + 0x44, 0x0d, 0x64, 0x00, 0x44, 0x24, 0xdd, 0x06, 0x00, 0x03, 0x80, 0x0e, + 0x04, 0xfa, 0x64, 0x17, 0x61, 0x60, 0x93, 0x83, 0x90, 0x01, 0xcc, 0x00, + 0x40, 0x00, 0x64, 0x6b, 0x69, 0x7f, 0x83, 0x93, 0x80, 0x63, 0x69, 0x7f, + 0x83, 0xc3, 0x80, 0xdc, 0xc7, 0x63, 0x03, 0x3c, 0xfe, 0xa3, 0x83, 0x90, + 0x01, 0xcc, 0x00, 0x80, 0x00, 0x64, 0x47, 0x69, 0x7f, 0x83, 0xa3, 0x80, + 0x3f, 0x69, 0x7f, 0x83, 0xa3, 0x80, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xbf, 0x60, 0x60, + 0x06, 0x40, 0x20, 0x83, 0x93, 0x80, 0xa3, 0x43, 0x90, 0x83, 0x47, 0x90, + 0x00, 0x80, 0x64, 0xa3, 0x03, 0x90, 0xbf, 0xc1, 0x7f, 0x05, 0x00, 0x00, + 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, + 0x00, 0x04, 0x64, 0x0b, 0x00, 0x60, 0x00, 0x10, 0x64, 0x87, 0x83, 0x80, + 0x43, 0xc0, 0xf2, 0x06, 0x40, 0x20, 0x83, 0xc3, 0x80, 0x83, 0xf2, 0x7f, + 0x80, 0x07, 0x64, 0x1b, 0x65, 0x7f, 0x83, 0xc3, 0x80, 0xc4, 0xbf, 0x63, + 0x03, 0x3c, 0xfe, 0xb3, 0x83, 0x90, 0x01, 0xcc, 0x00, 0xc0, 0x00, 0x64, + 0xaf, 0x68, 0x7f, 0x83, 0xb3, 0x80, 0xa7, 0x68, 0x7f, 0x83, 0xb3, 0x80, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x27, 0x60, 0x60, 0x83, 0x43, 0x90, 0x80, 0x88, 0x64, + 0xa3, 0x03, 0x90, 0x33, 0xc1, 0x7f, 0x01, 0xcc, 0x00, 0x00, 0x01, 0x64, + 0x6f, 0x68, 0x7f, 0x87, 0xa3, 0x80, 0x83, 0xb3, 0x80, 0x43, 0xc0, 0xf2, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0xe7, 0x5f, 0x60, 0x47, 0x68, 0x7f, 0x05, 0x00, 0x00, + 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, + 0x18, 0x04, 0x64, 0x0b, 0x00, 0x60, 0x18, 0x10, 0x64, 0x87, 0xa3, 0x80, + 0x83, 0xb3, 0x80, 0x43, 0xc0, 0xf2, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x9f, 0x5f, 0x60, + 0xa3, 0x43, 0x90, 0x83, 0x5b, 0x90, 0x80, 0x8d, 0x64, 0xa3, 0x03, 0x90, + 0xa7, 0xc0, 0x7f, 0x87, 0xa3, 0x80, 0x83, 0xb3, 0x80, 0x43, 0xc0, 0xf2, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x15, 0x01, 0x00, + 0x3c, 0x7c, 0xb3, 0x32, 0x00, 0x60, 0x87, 0x83, 0x80, 0x83, 0xc3, 0x80, + 0x6f, 0xf1, 0x7f, 0x80, 0x07, 0x64, 0x07, 0x64, 0x7f, 0x01, 0xcc, 0x00, + 0x40, 0x01, 0x64, 0xab, 0x67, 0x7f, 0x40, 0x00, 0x64, 0x23, 0x00, 0x60, + 0x4b, 0xc3, 0xfe, 0x01, 0xcc, 0x00, 0xc0, 0x3f, 0x64, 0x93, 0x67, 0x7f, + 0x80, 0x07, 0x64, 0xdb, 0x63, 0x7f, 0x00, 0x00, 0x64, 0x67, 0x14, 0xe6, + 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x63, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x11, 0x00, 0x00, + 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, 0x37, 0x6b, 0x7f, 0x80, 0x07, 0x64, + 0x9f, 0x63, 0x7f, 0x04, 0x00, 0x64, 0x83, 0x63, 0x80, 0xc7, 0xf2, 0x7f, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x37, 0x67, 0x7f, 0x83, 0x23, 0x80, + 0x04, 0xdc, 0x64, 0x00, 0x44, 0x24, 0x07, 0xbc, 0x1f, 0x3c, 0x7c, 0xb3, + 0x43, 0x80, 0xf9, 0x00, 0x28, 0x27, 0xb3, 0x03, 0x90, 0x05, 0x00, 0x00, + 0x44, 0x64, 0x64, 0x83, 0x33, 0x80, 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, + 0x00, 0x44, 0x24, 0x05, 0x00, 0x00, 0x84, 0x2a, 0x64, 0x8f, 0x5e, 0x60, + 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x0a, 0x40, 0x20, 0x09, 0x00, 0x00, + 0x04, 0xd5, 0x64, 0x83, 0x63, 0x80, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, + 0x13, 0x08, 0xa0, 0x83, 0x23, 0x80, 0x18, 0x6c, 0xb2, 0x7e, 0x01, 0x60, + 0x83, 0x23, 0x80, 0x01, 0x00, 0x00, 0x28, 0x54, 0xbb, 0x6e, 0x01, 0x60, + 0x87, 0x23, 0x80, 0x83, 0x63, 0x80, 0x57, 0xf0, 0x7f, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x83, 0x63, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, + 0x05, 0x00, 0x00, 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, 0x63, 0x6a, 0x7f, + 0x80, 0x07, 0x64, 0xcb, 0x62, 0x7f, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x63, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x0d, 0x00, 0x00, + 0x48, 0x00, 0x64, 0x04, 0x10, 0x64, 0x37, 0x6a, 0x7f, 0x80, 0x07, 0x64, + 0x9f, 0x62, 0x7f, 0x83, 0x63, 0x80, 0xc8, 0x97, 0x63, 0x03, 0x3c, 0xfe, + 0xb3, 0x03, 0x90, 0x01, 0x0c, 0x00, 0x00, 0x00, 0x64, 0x33, 0x66, 0x7f, + 0x83, 0x33, 0x80, 0x2b, 0x66, 0x7f, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x00, 0x04, 0x64, + 0x0b, 0x00, 0x60, 0x00, 0x10, 0x64, 0x87, 0x23, 0x80, 0x43, 0xc0, 0xf2, + 0x06, 0x40, 0x20, 0x83, 0x63, 0x80, 0xa7, 0xef, 0x7f, 0x80, 0x07, 0x64, + 0x3f, 0x62, 0x7f, 0x83, 0x63, 0x80, 0xe8, 0x8f, 0x63, 0x03, 0x3c, 0xfe, + 0x83, 0x43, 0x90, 0x01, 0x0c, 0x00, 0x40, 0x00, 0x64, 0xd3, 0x65, 0x7f, + 0x83, 0x43, 0x80, 0xcb, 0x65, 0x7f, 0x01, 0x0c, 0x00, 0x80, 0x00, 0x64, + 0xbf, 0x65, 0x7f, 0x87, 0x33, 0x80, 0x83, 0x43, 0x80, 0x43, 0xc0, 0xf2, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0x37, 0x5d, 0x60, 0x97, 0x65, 0x7f, 0x87, 0x33, 0x80, + 0x83, 0x43, 0x80, 0x43, 0xc0, 0xf2, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x00, 0x44, 0x24, 0x15, 0x01, 0x00, 0x3c, 0x7c, 0xb3, 0x2e, 0x00, 0x60, + 0x87, 0x23, 0x80, 0x83, 0x63, 0x80, 0x17, 0xef, 0x7f, 0x80, 0x07, 0x64, + 0xaf, 0x61, 0x7f, 0x01, 0x0c, 0x00, 0xc0, 0x00, 0x64, 0x53, 0x65, 0x7f, + 0x40, 0x00, 0x64, 0x27, 0x00, 0x60, 0x01, 0x0c, 0x00, 0x00, 0x01, 0x64, + 0x3f, 0x65, 0x7f, 0x83, 0x63, 0x80, 0xf3, 0xf3, 0x7f, 0x80, 0x07, 0x64, + 0x7f, 0x61, 0x7f, 0x00, 0x00, 0x64, 0x37, 0x04, 0xe0, 0x13, 0x00, 0xe0, + 0xa3, 0x03, 0x90, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x23, 0x80, + 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x00, 0x00, 0x92, 0x0e, 0x00, 0x60, + 0x00, 0x00, 0x64, 0x57, 0x00, 0x60, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x1e, 0x00, 0x60, 0x83, 0x23, 0x80, + 0xf0, 0xaf, 0x63, 0x06, 0x40, 0x20, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, + 0x03, 0x04, 0x90, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, + 0x00, 0x00, 0x92, 0x12, 0x00, 0x60, 0x83, 0x23, 0x80, 0xf4, 0xd3, 0x63, + 0x0b, 0x00, 0x60, 0x40, 0x00, 0x64, 0x17, 0x04, 0xe0, 0x93, 0x00, 0xe0, + 0xa3, 0x03, 0x91, 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, 0x83, 0xc3, 0x90, + 0x7f, 0x01, 0x60, 0x00, 0x00, 0x64, 0x93, 0xc3, 0x90, 0x51, 0x00, 0x00, + 0x00, 0x00, 0x64, 0xa3, 0xc3, 0x90, 0x83, 0xc3, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x14, 0x31, 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, 0x83, 0x23, 0x81, + 0x6c, 0x00, 0x48, 0x3e, 0x01, 0x60, 0x83, 0xc3, 0x80, 0x03, 0x00, 0x80, + 0x02, 0xb8, 0x00, 0x08, 0x04, 0x92, 0x2a, 0x01, 0x60, 0x04, 0x08, 0x64, + 0x83, 0xc3, 0x80, 0xcf, 0x67, 0x7f, 0x2f, 0x00, 0x60, 0x04, 0x08, 0x64, + 0x83, 0xc3, 0x80, 0xbf, 0x67, 0x7f, 0x83, 0x03, 0x91, 0x87, 0x03, 0x81, + 0x83, 0xe3, 0x80, 0x43, 0xc0, 0xfb, 0x00, 0x00, 0x92, 0x03, 0x00, 0xfd, + 0x93, 0xc3, 0x90, 0x83, 0xd3, 0x80, 0x00, 0x00, 0x86, 0xd2, 0xbf, 0x7f, + 0x04, 0x0b, 0x64, 0x83, 0xc3, 0x80, 0x8b, 0x67, 0x7f, 0x93, 0x03, 0x91, + 0x82, 0x13, 0xc2, 0xb3, 0xc3, 0xa0, 0x82, 0x1b, 0xc2, 0xbb, 0xc3, 0xa0, + 0x86, 0xbb, 0xc1, 0x82, 0xb3, 0xc1, 0x24, 0x04, 0x3a, 0x5a, 0x00, 0x60, + 0xcd, 0xee, 0xee, 0x00, 0x33, 0x64, 0xc7, 0x63, 0x7f, 0x83, 0xc3, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, 0x03, 0x3c, 0xfe, + 0x00, 0x40, 0x2b, 0x06, 0x40, 0x20, 0x83, 0xc3, 0x80, 0x03, 0x00, 0x80, + 0x00, 0x28, 0x31, 0x02, 0x3c, 0x00, 0x03, 0x38, 0xfe, 0x43, 0x40, 0xfb, + 0x8f, 0x63, 0x7f, 0x83, 0xc3, 0x80, 0x07, 0x00, 0x80, 0x44, 0x00, 0xa2, + 0x03, 0x04, 0x90, 0x83, 0xc3, 0x80, 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, + 0x02, 0xbc, 0x0f, 0x07, 0x3c, 0xfe, 0x8a, 0xb3, 0xc1, 0x83, 0xc3, 0x80, + 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, + 0x0e, 0x00, 0x60, 0xc0, 0x95, 0x64, 0x0b, 0x00, 0x60, 0xc0, 0x96, 0x64, + 0x8e, 0xbb, 0xc1, 0xa3, 0x8f, 0x90, 0x83, 0x83, 0x90, 0xa3, 0x4b, 0x90, + 0x83, 0x47, 0x90, 0xc0, 0x97, 0x64, 0xa3, 0x03, 0x90, 0xdb, 0x7b, 0x7f, + 0x83, 0xc3, 0x80, 0x03, 0x10, 0x00, 0x83, 0xc3, 0x90, 0x83, 0xc3, 0x80, + 0x03, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3d, 0x00, 0x00, + 0x00, 0x00, 0x92, 0x72, 0xbe, 0x7f, 0x4b, 0xc3, 0xfe, 0x97, 0x04, 0xe0, + 0x53, 0x00, 0xe0, 0xa3, 0x83, 0x90, 0xb3, 0x87, 0x90, 0x09, 0x00, 0x00, + 0x00, 0x7a, 0x64, 0xa3, 0x03, 0x90, 0x40, 0x00, 0x65, 0xb3, 0x03, 0xa0, + 0x5b, 0x01, 0x60, 0x00, 0x00, 0x64, 0x83, 0x43, 0x90, 0x40, 0x00, 0x65, + 0x93, 0x43, 0xa0, 0x83, 0xb3, 0x80, 0x08, 0x00, 0x92, 0x1e, 0x00, 0x60, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x86, 0x2a, 0x00, 0x60, 0x83, 0xb3, 0x80, 0x04, 0x00, 0x92, + 0x2e, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x16, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x10, 0x00, 0xa3, 0x03, 0x90, 0xf3, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x14, 0x31, 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, + 0x83, 0xa3, 0x80, 0x6c, 0x00, 0x48, 0xc6, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x04, 0x92, 0xb2, 0x00, 0x60, + 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, 0x12, 0x00, 0x60, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x64, 0x0f, 0x00, 0x60, 0x41, 0x00, 0x00, 0x00, 0x00, 0x64, + 0xa3, 0x43, 0x90, 0x04, 0x08, 0x64, 0x83, 0x23, 0x80, 0x97, 0x65, 0x7f, + 0x2f, 0x00, 0x60, 0x04, 0x08, 0x64, 0x83, 0x23, 0x80, 0x87, 0x65, 0x7f, + 0xb3, 0x43, 0x90, 0x87, 0x73, 0x80, 0x83, 0x63, 0x80, 0x43, 0xc0, 0xfb, + 0x00, 0x00, 0x92, 0x03, 0x00, 0xfd, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x00, 0x00, 0x86, 0xd2, 0xbf, 0x7f, 0x04, 0x0b, 0x64, 0x83, 0x23, 0x80, + 0x53, 0x65, 0x7f, 0x83, 0x83, 0x90, 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, + 0x0e, 0x00, 0x60, 0x82, 0x03, 0xc1, 0x0b, 0x00, 0x60, 0x82, 0x0b, 0xc1, + 0x93, 0x43, 0xa0, 0x86, 0x93, 0xc0, 0x82, 0x33, 0xc0, 0x04, 0x04, 0x3a, + 0x0e, 0x00, 0x60, 0x82, 0x93, 0xc0, 0xb3, 0x03, 0xa0, 0x83, 0x23, 0x80, + 0x03, 0x10, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x3d, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, + 0x96, 0xbe, 0x7f, 0x82, 0x33, 0xc0, 0x57, 0x04, 0xe0, 0x53, 0x00, 0xe0, + 0xa3, 0x83, 0x90, 0xb3, 0x87, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x43, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, 0x83, 0x43, 0x90, 0x53, 0x01, 0x60, + 0x00, 0x00, 0x64, 0x93, 0x43, 0x90, 0x83, 0xb3, 0x80, 0x08, 0x00, 0x92, + 0x1e, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x2a, 0x00, 0x60, 0x83, 0xb3, 0x80, + 0x04, 0x00, 0x92, 0x2e, 0x00, 0x60, 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, + 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x86, 0x16, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x00, 0x83, 0x43, 0x90, 0xf3, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x00, 0x14, 0x31, 0x02, 0x3c, 0x00, + 0x07, 0x38, 0xfe, 0x83, 0xa3, 0x80, 0x6c, 0x00, 0x48, 0xc6, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, 0x08, 0x04, 0x92, + 0xb2, 0x00, 0x60, 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, 0x12, 0x00, 0x60, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0f, 0x00, 0x60, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x64, 0xb3, 0x43, 0x90, 0x2f, 0x00, 0x60, 0x04, 0x08, 0x64, + 0x83, 0x43, 0x80, 0xef, 0x63, 0x7f, 0x83, 0x83, 0x90, 0x87, 0x83, 0x80, + 0x83, 0x73, 0x80, 0x43, 0xc0, 0xfb, 0x00, 0x00, 0x92, 0x03, 0x00, 0xfd, + 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0x00, 0x00, 0x86, 0xd2, 0xbf, 0x7f, + 0x04, 0x0b, 0x64, 0x83, 0x43, 0x80, 0xbb, 0x63, 0x7f, 0x93, 0x83, 0x90, + 0x83, 0xb3, 0x80, 0x00, 0x00, 0x92, 0x12, 0x00, 0x60, 0x82, 0x13, 0xc1, + 0x03, 0x3c, 0xfe, 0x0f, 0x00, 0x60, 0x82, 0x1b, 0xc1, 0x03, 0x3c, 0xfe, + 0xa3, 0x43, 0x90, 0x87, 0x33, 0x80, 0x83, 0x63, 0x80, 0x43, 0x80, 0xf2, + 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x43, 0x80, 0x03, 0x10, 0x00, 0x83, 0x43, 0x90, 0x83, 0x43, 0x80, + 0x03, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x02, 0x00, 0x00, 0x3d, 0x00, 0x00, + 0x00, 0x00, 0x92, 0x9e, 0xbe, 0x7f, 0x83, 0x23, 0x80, 0x06, 0x40, 0x20, + 0x83, 0x33, 0x80, 0x4b, 0x57, 0x60, 0x57, 0x04, 0xe0, 0x53, 0x00, 0xe0, + 0xa3, 0x83, 0x90, 0xb3, 0x87, 0x90, 0x87, 0xb3, 0x80, 0x42, 0x40, 0x20, + 0x00, 0x0c, 0x2b, 0x03, 0xc4, 0xf2, 0x00, 0x28, 0x2b, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x17, 0x57, 0x60, 0x83, 0x43, 0x90, 0x01, 0x00, 0xe0, + 0x00, 0x00, 0x64, 0x6b, 0x5f, 0x7f, 0x83, 0xa3, 0x80, 0x43, 0xe7, 0x7f, + 0x03, 0x3c, 0xfe, 0x93, 0x43, 0x90, 0x01, 0x00, 0xe0, 0x40, 0x00, 0x64, + 0x4f, 0x5f, 0x7f, 0x83, 0xa3, 0x80, 0x4b, 0xf2, 0x7f, 0x03, 0x3c, 0xfe, + 0xa3, 0x43, 0x90, 0x01, 0x00, 0xe0, 0x80, 0x00, 0x64, 0x33, 0x5f, 0x7f, + 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, + 0x0e, 0x00, 0x60, 0x00, 0x04, 0x64, 0x0b, 0x00, 0x60, 0x00, 0x10, 0x64, + 0x87, 0x53, 0x80, 0x43, 0xc0, 0xf2, 0xb3, 0x43, 0x90, 0x87, 0x73, 0x80, + 0x83, 0xa3, 0x80, 0xab, 0xe8, 0x7f, 0x80, 0x07, 0x64, 0x43, 0x5b, 0x7f, + 0x01, 0x00, 0xe0, 0xc0, 0x00, 0x64, 0xe7, 0x5e, 0x7f, 0x83, 0xa3, 0x80, + 0xe3, 0xf1, 0x7f, 0x03, 0x3c, 0xfe, 0xb3, 0x03, 0x90, 0x01, 0x00, 0xe0, + 0x00, 0x01, 0x64, 0xcb, 0x5e, 0x7f, 0x87, 0x53, 0x80, 0x83, 0x73, 0x80, + 0x43, 0xc0, 0xf2, 0x25, 0x00, 0x00, 0x04, 0xc4, 0x64, 0x08, 0x44, 0x24, + 0x87, 0x63, 0x80, 0x83, 0x33, 0x80, 0x43, 0xc0, 0xf2, 0x06, 0x40, 0x20, + 0x82, 0x40, 0x20, 0x37, 0x56, 0x60, 0x83, 0x83, 0x90, 0x87, 0x43, 0x80, + 0x83, 0x63, 0x80, 0x47, 0xc0, 0xf2, 0x83, 0x83, 0x80, 0x40, 0x40, 0x24, + 0x25, 0x00, 0x00, 0x04, 0xc4, 0x64, 0x13, 0x56, 0x60, 0x06, 0x40, 0x20, + 0x83, 0x53, 0x80, 0x43, 0x80, 0xf2, 0xa3, 0x03, 0x90, 0x87, 0x23, 0x80, + 0x83, 0xa3, 0x80, 0x0b, 0xe8, 0x7f, 0x80, 0x07, 0x64, 0xa3, 0x5a, 0x7f, + 0x01, 0x00, 0xe0, 0x40, 0x01, 0x64, 0x47, 0x5e, 0x7f, 0x83, 0xa3, 0x80, + 0x43, 0xf1, 0x7f, 0x03, 0x3c, 0xfe, 0xb3, 0x03, 0x90, 0x01, 0x00, 0xe0, + 0x80, 0x01, 0x64, 0x2b, 0x5e, 0x7f, 0x7b, 0x00, 0x60, 0x01, 0x00, 0xe0, + 0xc0, 0x01, 0x64, 0x1b, 0x5e, 0x7f, 0x87, 0x33, 0x80, 0x83, 0x43, 0x80, + 0x43, 0xc0, 0xf2, 0x3c, 0x7c, 0xbb, 0x0e, 0x00, 0x60, 0x40, 0x00, 0x65, + 0x0b, 0x00, 0x60, 0x40, 0x00, 0x64, 0x87, 0x23, 0x80, 0x43, 0xc0, 0xf2, + 0xa3, 0x03, 0x90, 0x87, 0x23, 0x80, 0x83, 0xa3, 0x80, 0x93, 0xe7, 0x7f, + 0x80, 0x07, 0x64, 0x2b, 0x5a, 0x7f, 0x01, 0x00, 0xe0, 0x00, 0x02, 0x64, + 0xcf, 0x5d, 0x7f, 0x83, 0xa3, 0x80, 0xcb, 0xf0, 0x7f, 0x03, 0x3c, 0xfe, + 0xb3, 0x03, 0x90, 0x01, 0x00, 0xe0, 0x40, 0x02, 0x64, 0xb3, 0x5d, 0x7f, + 0x87, 0x33, 0x80, 0x83, 0x43, 0x80, 0x43, 0xc0, 0xf2, 0x04, 0x7c, 0x27, + 0x43, 0xc0, 0xfa, 0x03, 0xc4, 0xf2, 0x10, 0x00, 0xba, 0x72, 0xbf, 0x7f, + 0x01, 0x00, 0xe0, 0x00, 0x04, 0x64, 0x87, 0x5d, 0x7f, 0x4b, 0xc3, 0xfe, + 0x57, 0x04, 0xe0, 0x93, 0x00, 0xe0, 0xa3, 0x03, 0x91, 0x00, 0x00, 0x64, + 0x83, 0x83, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x83, 0x90, 0x00, 0x00, 0x64, + 0xb3, 0x83, 0x90, 0x01, 0x00, 0xd0, 0x00, 0x00, 0x64, 0x53, 0x5d, 0x7f, + 0x05, 0x00, 0x00, 0x44, 0x00, 0x64, 0x83, 0x23, 0x81, 0xe0, 0xdb, 0x63, + 0x01, 0x00, 0xd0, 0x40, 0x00, 0x64, 0x37, 0x5d, 0x7f, 0x83, 0x23, 0x81, + 0xcb, 0xe4, 0x7f, 0x04, 0xfa, 0x64, 0xc3, 0x54, 0x60, 0x93, 0xc3, 0x90, + 0x01, 0x00, 0xd0, 0x80, 0x00, 0x64, 0x17, 0x5d, 0x7f, 0x83, 0xd3, 0x80, + 0x00, 0x40, 0xa3, 0x0b, 0x5d, 0x7f, 0x87, 0xd3, 0x80, 0x83, 0xd3, 0x80, + 0x40, 0x40, 0x24, 0xa3, 0xc3, 0x90, 0x00, 0x00, 0x64, 0x93, 0x83, 0x90, + 0x57, 0x02, 0x60, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x02, 0xb8, 0xc8, + 0x07, 0x3c, 0xfe, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x02, 0x00, 0xe9, + 0x03, 0x38, 0xfe, 0x40, 0x40, 0x24, 0xb3, 0xc3, 0x90, 0x00, 0x00, 0x64, + 0x83, 0xc3, 0x90, 0x83, 0x93, 0x80, 0x00, 0x40, 0x2b, 0x01, 0x00, 0xd0, + 0x02, 0x4c, 0x20, 0xab, 0x5c, 0x7f, 0x87, 0x93, 0x80, 0x83, 0x23, 0x81, + 0xcc, 0xb7, 0x63, 0x03, 0x3c, 0xfe, 0x83, 0x03, 0x91, 0x83, 0x93, 0x80, + 0x00, 0x40, 0x2b, 0x01, 0x00, 0xd0, 0x02, 0x50, 0x20, 0x83, 0x5c, 0x7f, + 0x83, 0x03, 0x81, 0xc1, 0x00, 0x00, 0x04, 0xd4, 0x64, 0x00, 0x44, 0x24, + 0x83, 0x03, 0x91, 0x83, 0x93, 0x80, 0x00, 0x00, 0x86, 0x12, 0x00, 0x60, + 0x04, 0x00, 0x86, 0x9e, 0x00, 0x60, 0xb3, 0x01, 0x60, 0x83, 0xe3, 0x80, + 0xed, 0xff, 0xff, 0x04, 0xc5, 0x64, 0x04, 0x44, 0x24, 0x83, 0xd3, 0x80, + 0x4d, 0xf4, 0xff, 0x08, 0xdb, 0x64, 0x00, 0x48, 0x24, 0x43, 0x80, 0xf2, + 0x25, 0x00, 0x00, 0x04, 0xc4, 0x64, 0xc3, 0x53, 0x60, 0xb1, 0x03, 0x00, + 0x03, 0x20, 0x04, 0x04, 0xfa, 0x64, 0xb3, 0x53, 0x60, 0x83, 0x83, 0x90, + 0x83, 0xe3, 0x80, 0xf9, 0xff, 0xff, 0x44, 0x73, 0x64, 0x04, 0x44, 0x24, + 0x83, 0xd3, 0x80, 0xbd, 0xfe, 0xff, 0x88, 0x8f, 0x64, 0x00, 0x48, 0x24, + 0x43, 0x80, 0xf2, 0x04, 0xfa, 0x64, 0x83, 0x53, 0x60, 0x21, 0x3a, 0x00, + 0x03, 0xb0, 0x06, 0x04, 0xfa, 0x64, 0x73, 0x53, 0x60, 0x83, 0xc3, 0x90, + 0x83, 0xb3, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x83, 0x90, 0x9b, 0x00, 0x60, + 0x83, 0xe3, 0x80, 0x0d, 0x00, 0x00, 0x04, 0x92, 0x64, 0x04, 0x44, 0x24, + 0x83, 0xd3, 0x80, 0x61, 0xfc, 0xff, 0x08, 0x8e, 0x64, 0x00, 0x48, 0x24, + 0x43, 0x80, 0xf2, 0x25, 0x00, 0x00, 0x04, 0xc4, 0x64, 0x2f, 0x53, 0x60, + 0x6d, 0x02, 0x00, 0x03, 0x10, 0x12, 0x04, 0xfa, 0x64, 0x1f, 0x53, 0x60, + 0x83, 0x83, 0x90, 0x83, 0xe3, 0x80, 0xf9, 0xff, 0xff, 0xc4, 0xec, 0x64, + 0x04, 0x44, 0x24, 0x83, 0xd3, 0x80, 0x9d, 0x05, 0x00, 0x08, 0x60, 0x64, + 0x00, 0x48, 0x24, 0x43, 0x80, 0xf2, 0x04, 0xfa, 0x64, 0xef, 0x52, 0x60, + 0x55, 0x22, 0x00, 0x03, 0x10, 0x18, 0x04, 0xfa, 0x64, 0xdf, 0x52, 0x60, + 0x83, 0xc3, 0x90, 0x83, 0xb3, 0x80, 0x03, 0x04, 0x00, 0xb3, 0x83, 0x90, + 0x4b, 0xc3, 0xfe, 0x87, 0xf3, 0x80, 0x83, 0x03, 0x81, 0xbf, 0x52, 0x60, + 0x06, 0x40, 0x20, 0x83, 0xc3, 0x80, 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, + 0x00, 0x44, 0x24, 0x87, 0x83, 0x80, 0xa3, 0x52, 0x60, 0x83, 0x03, 0x91, + 0x09, 0x00, 0x00, 0x08, 0xd5, 0x64, 0x87, 0x23, 0x81, 0x42, 0x40, 0x20, + 0x00, 0x04, 0x2b, 0x03, 0x84, 0xf2, 0x87, 0x93, 0x80, 0x03, 0x84, 0xf2, + 0x03, 0x08, 0x00, 0x87, 0x03, 0x81, 0x00, 0x08, 0x2b, 0x83, 0x80, 0xf2, + 0x03, 0x04, 0x90, 0x87, 0xa3, 0x80, 0x83, 0x03, 0x81, 0x43, 0x80, 0xf2, + 0xa3, 0x83, 0x90, 0x83, 0x93, 0x80, 0x00, 0x40, 0x2b, 0x01, 0x00, 0xd0, + 0x02, 0x54, 0x20, 0xab, 0x5a, 0x7f, 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, + 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, 0x08, 0x00, 0xb2, 0xaa, 0xbd, 0x7f, + 0x83, 0xa3, 0x80, 0x87, 0xb3, 0x80, 0x27, 0x52, 0x60, 0xa3, 0x83, 0x90, + 0x01, 0x00, 0xd0, 0x80, 0x01, 0x64, 0x77, 0x5a, 0x7f, 0x83, 0xa3, 0x80, + 0x00, 0x40, 0xa3, 0x6b, 0x5a, 0x7f, 0x00, 0x00, 0x64, 0x93, 0x83, 0x90, + 0x8f, 0x00, 0x60, 0x83, 0x93, 0x80, 0x00, 0x00, 0x86, 0x36, 0x00, 0x60, + 0x83, 0x93, 0x80, 0x04, 0x00, 0x86, 0x22, 0x00, 0x60, 0x83, 0x93, 0x80, + 0x08, 0x00, 0x92, 0x0e, 0x00, 0x60, 0xc4, 0x95, 0x64, 0x1b, 0x00, 0x60, + 0xc4, 0xa5, 0x64, 0x13, 0x00, 0x60, 0xc4, 0x96, 0x64, 0x0b, 0x00, 0x60, + 0xc4, 0xa7, 0x64, 0x09, 0x00, 0x00, 0x0c, 0xd5, 0x64, 0x8b, 0x23, 0x81, + 0x82, 0x40, 0x20, 0x00, 0x04, 0x2b, 0x03, 0x88, 0xf2, 0x8b, 0x93, 0x80, + 0x03, 0x88, 0xf2, 0x03, 0x08, 0x00, 0xc3, 0x40, 0xf7, 0xa3, 0x43, 0x90, + 0x83, 0x47, 0x90, 0xc0, 0xa8, 0x64, 0xa3, 0x03, 0x90, 0x9b, 0x72, 0x7f, + 0x83, 0x93, 0x80, 0x03, 0x04, 0x00, 0x93, 0x83, 0x90, 0x83, 0x93, 0x80, + 0x08, 0x00, 0xb2, 0x72, 0xbf, 0x7f, 0x83, 0xa3, 0x80, 0x97, 0x04, 0xe0, + 0x43, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0xb3, 0x47, 0x90, 0x83, 0x8b, 0xa0, + 0x8b, 0x8f, 0xa0, 0x09, 0x00, 0x00, 0x00, 0x7a, 0x64, 0xa3, 0x03, 0x90, + 0x82, 0x0b, 0xc1, 0xbb, 0x03, 0xa0, 0x82, 0x03, 0xc1, 0xb3, 0x03, 0xa0, + 0x03, 0x01, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x14, 0x31, + 0x02, 0x3c, 0x00, 0x07, 0x38, 0xfe, 0x83, 0x63, 0x80, 0x6c, 0x00, 0x48, + 0xd6, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x02, 0xb8, 0x00, + 0x08, 0x04, 0x92, 0xc2, 0x00, 0x60, 0x04, 0x08, 0x64, 0x83, 0x23, 0x80, + 0xe3, 0x5c, 0x7f, 0x83, 0x43, 0x90, 0x83, 0x73, 0x80, 0x00, 0x00, 0x92, + 0x2a, 0x00, 0x60, 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x0a, 0x64, + 0x83, 0x23, 0x80, 0x0b, 0x5d, 0x7f, 0x83, 0x43, 0x80, 0x02, 0xc0, 0x20, + 0x83, 0x43, 0x90, 0x6f, 0x00, 0x60, 0x83, 0x73, 0x80, 0x08, 0x00, 0x92, + 0x1e, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x01, 0x00, 0x80, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x92, 0x2a, 0x00, 0x60, 0x83, 0x73, 0x80, + 0x04, 0x00, 0x92, 0x3e, 0x00, 0x60, 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, + 0x01, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x92, 0x26, 0x00, 0x60, + 0x83, 0x33, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x09, 0x64, 0x83, 0x23, 0x80, + 0x9f, 0x5c, 0x7f, 0x83, 0x43, 0x80, 0x02, 0x40, 0x21, 0x83, 0x43, 0x90, + 0x83, 0x43, 0x80, 0x0a, 0x40, 0x20, 0x04, 0x08, 0x64, 0x83, 0x23, 0x80, + 0x7f, 0x5c, 0x7f, 0x83, 0x23, 0x80, 0x03, 0x10, 0x00, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x3d, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x92, 0xee, 0xbe, 0x7f, 0x4b, 0xc3, 0xfe, + 0x47, 0x04, 0xe0, 0xa3, 0x10, 0xe6, 0x83, 0x43, 0x91, 0x1d, 0x00, 0x00, + 0xc0, 0x23, 0x64, 0xa3, 0x03, 0xa1, 0x19, 0x00, 0x00, 0xc0, 0x31, 0x64, + 0xab, 0x03, 0xa1, 0x19, 0x00, 0x00, 0x40, 0x95, 0x64, 0xb3, 0x03, 0xa1, + 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x43, 0x81, 0x03, 0xb0, 0x00, + 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x02, 0x08, 0xc0, 0x07, 0x44, 0xfe, + 0x09, 0x00, 0x00, 0x08, 0xd5, 0x64, 0x83, 0x43, 0x81, 0x03, 0xb0, 0x00, + 0x00, 0x04, 0x2b, 0x83, 0x80, 0xf2, 0x02, 0x10, 0xc0, 0x03, 0x44, 0xfe, + 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, 0x0c, 0x44, 0x24, 0x09, 0x00, 0x00, + 0x04, 0xd5, 0x64, 0x83, 0x43, 0x81, 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, + 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, 0x07, 0x44, 0xfe, 0x09, 0x00, 0x00, + 0x08, 0xd5, 0x64, 0x83, 0x43, 0x81, 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, + 0x83, 0x80, 0xf2, 0x02, 0x08, 0xc0, 0x03, 0x44, 0xfe, 0x43, 0xc0, 0xf2, + 0x03, 0x3c, 0x05, 0x06, 0x40, 0x20, 0xc2, 0x40, 0x20, 0x3f, 0x4f, 0x60, + 0xb3, 0x83, 0x90, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x43, 0x81, + 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, + 0x1b, 0x44, 0xfe, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0x43, 0x81, + 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, + 0x03, 0x44, 0xfe, 0x04, 0xd7, 0x64, 0x47, 0xc0, 0xf2, 0x83, 0xb3, 0x80, + 0x40, 0x40, 0x24, 0x04, 0xfa, 0x65, 0xe3, 0x4e, 0x60, 0x83, 0x81, 0xf2, + 0x83, 0xc3, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x83, 0x90, 0x93, 0x01, 0x60, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0xa3, 0x80, 0x03, 0xa8, 0x02, + 0x47, 0x40, 0xf7, 0x83, 0xb3, 0x80, 0x40, 0x40, 0x24, 0x04, 0xfa, 0x64, + 0xaf, 0x4e, 0x60, 0x06, 0x40, 0x20, 0x83, 0xc3, 0x80, 0x43, 0x80, 0xf2, + 0x93, 0xc3, 0x90, 0x83, 0xd3, 0x80, 0x03, 0x28, 0x00, 0xa3, 0xc3, 0x90, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0xa3, 0x80, 0x03, 0x20, 0x04, + 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x1a, 0x10, 0xc0, 0x83, 0xa3, 0x80, + 0x00, 0x04, 0x2b, 0x87, 0x23, 0x01, 0x43, 0x80, 0xf2, 0x02, 0x00, 0xc1, + 0x07, 0x3c, 0xfe, 0x83, 0xd3, 0x80, 0x40, 0x40, 0x24, 0x04, 0xfa, 0x64, + 0x4b, 0x4e, 0x60, 0x87, 0x81, 0xf2, 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, + 0x8b, 0x23, 0x01, 0x83, 0x80, 0xf2, 0x13, 0x44, 0xa0, 0x09, 0x00, 0x00, + 0x04, 0x78, 0x64, 0x83, 0xa3, 0x80, 0x03, 0x20, 0x04, 0x00, 0x04, 0x2b, + 0x43, 0x80, 0xf2, 0x1a, 0x10, 0xc0, 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, + 0x87, 0x23, 0x01, 0x43, 0x80, 0xf2, 0x02, 0x00, 0xc1, 0x07, 0x3c, 0xfe, + 0x83, 0xe3, 0x80, 0x40, 0x40, 0x24, 0x04, 0xfa, 0x64, 0xef, 0x4d, 0x60, + 0x87, 0x81, 0xf2, 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, 0x8b, 0x23, 0x01, + 0x83, 0x80, 0xf2, 0x2b, 0x44, 0xa0, 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, + 0x87, 0x23, 0x01, 0x43, 0x80, 0xf2, 0x02, 0xa8, 0xc0, 0x07, 0x3c, 0xfe, + 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, 0x8b, 0x23, 0x01, 0x83, 0x80, 0xf2, + 0x02, 0x90, 0xc0, 0x03, 0x3c, 0xfe, 0x83, 0x83, 0x90, 0xa3, 0x47, 0x90, + 0x83, 0xa3, 0x80, 0x83, 0x43, 0x90, 0xc0, 0xb0, 0x64, 0xa3, 0x03, 0x90, + 0xa7, 0x6e, 0x7f, 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, 0x87, 0x23, 0x01, + 0x43, 0x80, 0xf2, 0x06, 0x90, 0xc0, 0x83, 0xa3, 0x80, 0x00, 0x04, 0x2b, + 0x8b, 0x23, 0x01, 0x83, 0x80, 0xf2, 0x02, 0xa8, 0xc0, 0x0e, 0x40, 0x20, + 0x4a, 0x40, 0x20, 0x87, 0xa3, 0x80, 0x83, 0x43, 0x81, 0xf4, 0xbf, 0x63, + 0x83, 0xa3, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x83, 0x90, 0x83, 0xa3, 0x80, + 0x08, 0x00, 0xb2, 0x6e, 0xbe, 0x7f, 0x4b, 0xc3, 0xfe, 0xa7, 0x14, 0xe6, + 0x0b, 0x29, 0xe5, 0xa3, 0xc3, 0x91, 0xb3, 0xc7, 0x91, 0x83, 0x0b, 0x92, + 0x93, 0x0f, 0x92, 0x00, 0x00, 0x64, 0xa3, 0x43, 0x91, 0x83, 0x03, 0x82, + 0x06, 0x40, 0x20, 0x83, 0xe3, 0x81, 0x17, 0xdf, 0x7f, 0x80, 0x07, 0x64, + 0xaf, 0x51, 0x7f, 0x83, 0xe3, 0x81, 0x5b, 0xe8, 0x7f, 0x07, 0x3c, 0xfe, + 0x83, 0xa3, 0x82, 0x03, 0x04, 0x90, 0x83, 0xa3, 0x82, 0x03, 0x00, 0x80, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, + 0x04, 0x00, 0x64, 0xc7, 0x4c, 0x60, 0x83, 0x43, 0x90, 0x40, 0xba, 0x64, + 0xa3, 0x03, 0x90, 0xd3, 0x6d, 0x7f, 0x83, 0xe3, 0x81, 0x73, 0xf0, 0x7f, + 0x00, 0x00, 0x64, 0xb3, 0x43, 0x91, 0x37, 0x00, 0x60, 0x87, 0x73, 0x81, + 0x83, 0xe3, 0x81, 0x0f, 0xf2, 0x7f, 0x06, 0x40, 0x20, 0x83, 0x73, 0x81, + 0x00, 0x04, 0x2b, 0x8b, 0xa3, 0x02, 0x83, 0x80, 0xf2, 0x1b, 0x44, 0xa0, + 0x83, 0x73, 0x81, 0x03, 0x04, 0x00, 0xb3, 0x43, 0x91, 0x83, 0x73, 0x81, + 0x08, 0x00, 0xb2, 0xca, 0xbf, 0x7f, 0x83, 0xf3, 0x81, 0x06, 0x40, 0x20, + 0x83, 0xe3, 0x81, 0x6b, 0xde, 0x7f, 0x80, 0x07, 0x64, 0x03, 0x51, 0x7f, + 0x83, 0xe3, 0x81, 0xaf, 0xe7, 0x7f, 0x07, 0x3c, 0xfe, 0x83, 0x13, 0x82, + 0x03, 0x04, 0x90, 0x83, 0x13, 0x82, 0x03, 0x00, 0x80, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x1b, 0x4c, 0x60, 0x83, 0x43, 0x90, 0x40, 0xc1, 0x64, 0xa3, 0x03, 0x90, + 0x27, 0x6d, 0x7f, 0x83, 0xe3, 0x81, 0xc7, 0xef, 0x7f, 0x00, 0x00, 0x64, + 0xb3, 0x43, 0x91, 0x37, 0x00, 0x60, 0x87, 0x73, 0x81, 0x83, 0xe3, 0x81, + 0x63, 0xf1, 0x7f, 0x06, 0x40, 0x20, 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, + 0x8b, 0xa3, 0x02, 0x83, 0x80, 0xf2, 0x03, 0x44, 0xa0, 0x83, 0x73, 0x81, + 0x03, 0x04, 0x00, 0xb3, 0x43, 0x91, 0x83, 0x73, 0x81, 0x08, 0x00, 0xb2, + 0xca, 0xbf, 0x7f, 0x00, 0x00, 0x64, 0xb3, 0x43, 0x91, 0x5b, 0x02, 0x60, + 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, 0x87, 0xa3, 0x02, 0x43, 0x80, 0xf2, + 0x02, 0x80, 0xc0, 0x28, 0x00, 0xac, 0x32, 0x02, 0x60, 0x83, 0x73, 0x81, + 0x00, 0x04, 0x2b, 0x87, 0xa3, 0x02, 0x43, 0x80, 0xf2, 0x02, 0x98, 0xc0, + 0x07, 0x3c, 0xfe, 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, 0x8b, 0xa3, 0x02, + 0x83, 0x80, 0xf2, 0x02, 0x80, 0xc0, 0x03, 0x3c, 0xfe, 0x43, 0xc0, 0xf2, + 0x08, 0x0c, 0xb2, 0xf6, 0x01, 0x60, 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, + 0x87, 0xa3, 0x02, 0x43, 0x80, 0xf2, 0x02, 0x98, 0xc0, 0x07, 0x3c, 0xfe, + 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, 0x8b, 0xa3, 0x02, 0x83, 0x80, 0xf2, + 0x02, 0x80, 0xc0, 0x03, 0x3c, 0xfe, 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, + 0x08, 0x44, 0x24, 0x83, 0xa3, 0x82, 0x07, 0x00, 0x80, 0x83, 0x13, 0x82, + 0x03, 0x00, 0x80, 0x43, 0xc0, 0xf2, 0x06, 0x40, 0x20, 0x82, 0x40, 0x20, + 0xfb, 0x4a, 0x60, 0x83, 0x83, 0x91, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x73, 0x81, 0x03, 0x20, 0x04, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, + 0x02, 0x10, 0xc0, 0x07, 0x3c, 0xfe, 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, + 0x8b, 0xa3, 0x02, 0x83, 0x80, 0xf2, 0x02, 0x80, 0xc0, 0x03, 0x3c, 0xfe, + 0x43, 0xc0, 0xf2, 0x04, 0xfa, 0x64, 0x00, 0x44, 0x24, 0x87, 0x83, 0x81, + 0xab, 0x4a, 0x60, 0x06, 0x40, 0x20, 0x83, 0x13, 0x82, 0x03, 0x00, 0x80, + 0x43, 0x80, 0xf2, 0x93, 0x83, 0x91, 0x83, 0x93, 0x81, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x7b, 0x4a, 0x60, 0x0a, 0x40, 0x20, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x73, 0x81, 0x03, 0xa8, 0x02, 0x00, 0x08, 0x2b, 0x43, 0x80, 0xf2, + 0x03, 0x08, 0x90, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x73, 0x81, + 0x03, 0x20, 0x04, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, + 0x1b, 0x3c, 0xfe, 0x83, 0x73, 0x81, 0x00, 0x04, 0x2b, 0x87, 0xa3, 0x02, + 0x43, 0x80, 0xf2, 0x02, 0x80, 0xc0, 0x1f, 0x3c, 0xfe, 0x83, 0x13, 0x82, + 0x03, 0x00, 0x80, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x03, 0x4a, 0x60, 0x22, 0x40, 0x20, + 0x83, 0xa3, 0x82, 0x03, 0x00, 0x80, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xdf, 0x49, 0x60, + 0x16, 0x40, 0x20, 0x87, 0x93, 0x81, 0x21, 0x00, 0x00, 0x00, 0x98, 0x64, + 0x40, 0x40, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xbf, 0x49, 0x60, + 0x83, 0x43, 0x91, 0x83, 0x03, 0x82, 0xa3, 0x03, 0x91, 0x83, 0x17, 0x91, + 0x83, 0xf3, 0x81, 0xa3, 0xc3, 0x90, 0x83, 0xe3, 0x90, 0x83, 0x83, 0x81, + 0xa3, 0x83, 0x90, 0x83, 0x9f, 0x90, 0xa3, 0x5b, 0x90, 0x83, 0x73, 0x81, + 0x83, 0x43, 0x90, 0x00, 0xc8, 0x64, 0xa3, 0x03, 0x90, 0x9b, 0x6a, 0x7f, + 0x87, 0x93, 0x81, 0x83, 0x63, 0x81, 0x5c, 0x00, 0x3a, 0x0e, 0x00, 0x60, + 0x83, 0x93, 0x81, 0xa3, 0x43, 0x91, 0x83, 0x73, 0x81, 0x03, 0x04, 0x00, + 0xb3, 0x43, 0x91, 0x83, 0x73, 0x81, 0x08, 0x00, 0xb2, 0xa6, 0xbd, 0x7f, + 0x83, 0x63, 0x81, 0x0f, 0x2d, 0xe5, 0x53, 0x00, 0xe0, 0x83, 0x83, 0x90, + 0x93, 0x87, 0x90, 0xa3, 0x8b, 0x90, 0xb3, 0x8f, 0x90, 0x87, 0xa3, 0x80, + 0x42, 0x40, 0x20, 0x00, 0x0c, 0x2b, 0x03, 0xc4, 0xf2, 0x00, 0x28, 0x2b, + 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x13, 0x49, 0x60, 0xa3, 0x03, 0x90, + 0x87, 0xb3, 0x80, 0x42, 0x40, 0x20, 0x00, 0x0c, 0x2b, 0x03, 0xc4, 0xf2, + 0x00, 0x28, 0x2b, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0xef, 0x48, 0x60, + 0xb3, 0x03, 0x90, 0x87, 0x23, 0x80, 0x83, 0x33, 0x80, 0x43, 0xc0, 0xf2, + 0x04, 0xfa, 0x64, 0x0c, 0x44, 0x24, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x00, 0xc2, 0x07, 0x44, 0xfe, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0xb8, 0xc1, 0x03, 0x44, 0xfe, 0x47, 0xc0, 0xf2, 0x8b, 0x33, 0x80, + 0x83, 0x23, 0x80, 0x83, 0xc0, 0xf2, 0x43, 0x80, 0xf2, 0x06, 0x40, 0x20, + 0xc2, 0x40, 0x20, 0x97, 0x48, 0x60, 0x83, 0x43, 0x90, 0x09, 0x00, 0x00, + 0x00, 0xd5, 0x64, 0x02, 0xb8, 0xc1, 0x07, 0x44, 0xfe, 0x83, 0x33, 0x80, + 0x47, 0xc0, 0xf2, 0x83, 0x43, 0x80, 0x40, 0x40, 0x24, 0x04, 0xfa, 0x65, + 0x6b, 0x48, 0x60, 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, 0x43, 0x80, 0xf2, + 0x93, 0x43, 0x90, 0x87, 0x43, 0x80, 0x83, 0x93, 0x80, 0x40, 0x40, 0x24, + 0x04, 0xfa, 0x64, 0x47, 0x48, 0x60, 0x06, 0x40, 0x20, 0x83, 0x53, 0x80, + 0x43, 0x80, 0xf2, 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, 0x57, 0x04, 0xe0, + 0xe3, 0x10, 0xe6, 0xa3, 0x83, 0x91, 0xb3, 0x87, 0x91, 0x83, 0xcb, 0x91, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x00, 0xe0, 0x07, 0x38, 0xfe, + 0x83, 0xa3, 0x81, 0x40, 0x80, 0x3f, 0x02, 0x04, 0x00, 0x00, 0x00, 0x86, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x04, 0x01, 0x64, + 0x0b, 0x04, 0xa0, 0x13, 0x04, 0x60, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, + 0x83, 0xa3, 0x81, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x02, 0x10, 0xc0, + 0x03, 0x3c, 0xfe, 0xb3, 0x03, 0x91, 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, + 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, 0x00, 0x04, 0x64, + 0x0b, 0x00, 0x60, 0x00, 0x10, 0x64, 0x87, 0x33, 0x81, 0x43, 0xc0, 0xf2, + 0xa3, 0x03, 0x91, 0x00, 0x00, 0x64, 0x83, 0x03, 0x91, 0x9f, 0x02, 0x60, + 0x87, 0xb3, 0x02, 0x83, 0x03, 0x03, 0xa3, 0x03, 0x90, 0x4e, 0x40, 0x20, + 0x8b, 0x33, 0x81, 0x87, 0x23, 0x81, 0x83, 0xa3, 0x81, 0xc4, 0xa7, 0x63, + 0x93, 0x03, 0x91, 0x83, 0x13, 0x81, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, + 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0x4f, 0x47, 0x60, + 0x0e, 0x40, 0x20, 0x09, 0x00, 0x00, 0x08, 0xd5, 0x64, 0x87, 0xa3, 0x81, + 0x42, 0x40, 0x20, 0x00, 0x04, 0x2b, 0x03, 0x84, 0xf2, 0x87, 0x03, 0x81, + 0x03, 0x84, 0xf2, 0x03, 0x20, 0x00, 0x00, 0x04, 0x2b, 0x83, 0x80, 0xf2, + 0x13, 0x0c, 0xa0, 0x83, 0x13, 0x81, 0x00, 0x00, 0x92, 0x12, 0x00, 0x60, + 0x83, 0xa3, 0x81, 0x27, 0xde, 0x7f, 0x2f, 0x03, 0x60, 0x8f, 0xc3, 0x81, + 0x8b, 0xb3, 0x81, 0x87, 0x13, 0x81, 0x83, 0xa3, 0x81, 0xec, 0xdb, 0x63, + 0x93, 0x43, 0x91, 0x87, 0x13, 0x81, 0x83, 0x53, 0x81, 0x43, 0x80, 0xf2, + 0x93, 0x03, 0x91, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0xb8, 0xc1, + 0x07, 0x44, 0xfe, 0x83, 0x13, 0x81, 0x5c, 0x00, 0x3a, 0x1e, 0x00, 0x60, + 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0xb8, 0xc1, 0x03, 0x44, 0xfe, + 0x93, 0x03, 0x91, 0x37, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, + 0x02, 0x00, 0xc2, 0x07, 0x44, 0xfe, 0x83, 0x13, 0x81, 0x1c, 0x04, 0x3a, + 0x1a, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0xd5, 0x64, 0x02, 0x00, 0xc2, + 0x03, 0x44, 0xfe, 0x93, 0x03, 0x91, 0x87, 0x33, 0x81, 0x83, 0x23, 0x81, + 0x43, 0xc0, 0xf2, 0x06, 0x40, 0x20, 0x25, 0x00, 0x00, 0x00, 0xc4, 0x64, + 0x48, 0x40, 0x24, 0x87, 0x83, 0x81, 0x83, 0x73, 0x81, 0x43, 0xc0, 0xf2, + 0x06, 0x40, 0x20, 0x82, 0x40, 0x20, 0x43, 0x46, 0x60, 0xa3, 0x43, 0x91, + 0x83, 0x83, 0x81, 0x87, 0x13, 0x81, 0x47, 0xc0, 0xf2, 0x83, 0x63, 0x81, + 0x40, 0x40, 0x24, 0x25, 0x00, 0x00, 0x04, 0xc4, 0x64, 0x1f, 0x46, 0x60, + 0x06, 0x40, 0x20, 0x83, 0x33, 0x81, 0x43, 0x80, 0xf2, 0x83, 0x43, 0x91, + 0x83, 0x13, 0x81, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xf3, 0x45, 0x60, 0x1a, 0x40, 0x20, + 0x83, 0x53, 0x81, 0x21, 0x00, 0x00, 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, + 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, 0xd3, 0x45, 0x60, 0x1e, 0x40, 0x20, + 0x83, 0x43, 0x81, 0x0d, 0x00, 0x00, 0x44, 0x0d, 0x64, 0x00, 0x44, 0x24, + 0xdd, 0x06, 0x00, 0x03, 0x80, 0x0e, 0x04, 0xfa, 0x64, 0xb3, 0x45, 0x60, + 0x06, 0x40, 0x20, 0x83, 0x23, 0x81, 0xa3, 0xc3, 0x90, 0x83, 0x33, 0x81, + 0x83, 0xc3, 0x90, 0xa3, 0x87, 0x90, 0x83, 0x9f, 0x90, 0xa3, 0x5b, 0x90, + 0x83, 0x43, 0x81, 0x83, 0x43, 0x90, 0x40, 0xdc, 0x64, 0xa3, 0x03, 0x90, + 0x97, 0x66, 0x7f, 0x87, 0x43, 0x81, 0x83, 0x33, 0x81, 0x4c, 0x00, 0x3a, + 0x0e, 0x00, 0x60, 0x83, 0x43, 0x81, 0xb3, 0x03, 0x91, 0x05, 0x00, 0x00, + 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, 0x0e, 0x00, 0x60, + 0x00, 0x02, 0x64, 0x0b, 0x00, 0x60, 0x00, 0x08, 0x64, 0x87, 0x43, 0x81, + 0x07, 0x84, 0xf2, 0x83, 0x23, 0x81, 0x0c, 0x04, 0x3a, 0x32, 0x00, 0x60, + 0x05, 0x00, 0x00, 0x00, 0x6b, 0x64, 0x03, 0x00, 0x80, 0x00, 0x00, 0x86, + 0x0e, 0x00, 0x60, 0x00, 0x02, 0x64, 0x0b, 0x00, 0x60, 0x00, 0x08, 0x64, + 0x87, 0x43, 0x81, 0x03, 0x84, 0xf2, 0xa3, 0x03, 0x91, 0x83, 0x03, 0x81, + 0x03, 0x04, 0x00, 0x83, 0x03, 0x91, 0x83, 0x03, 0x81, 0x04, 0x00, 0xae, + 0x62, 0xbd, 0x7f, 0x83, 0x43, 0x81, 0x0d, 0x00, 0x00, 0x44, 0x0d, 0x64, + 0x00, 0x44, 0x24, 0xdd, 0x06, 0x00, 0x03, 0x80, 0x0e, 0x04, 0xfa, 0x64, + 0xcf, 0x44, 0x60, 0x1a, 0x40, 0x20, 0x83, 0x13, 0x81, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0xab, 0x44, 0x60, 0x1e, 0x40, 0x20, 0x83, 0x13, 0x81, 0x21, 0x00, 0x00, + 0x04, 0x98, 0x64, 0x00, 0x44, 0x24, 0x1d, 0x00, 0x00, 0x04, 0x00, 0x64, + 0x8b, 0x44, 0x60, 0x06, 0x40, 0x20, 0x00, 0xfa, 0x64, 0x40, 0x40, 0x24, + 0x21, 0xf9, 0xff, 0x03, 0x80, 0x11, 0x0d, 0x00, 0x00, 0x44, 0x0d, 0x64, + 0x6b, 0x44, 0x60, 0xa3, 0x83, 0x90, 0x83, 0x9f, 0x90, 0xa3, 0x5b, 0x90, + 0x83, 0x43, 0x81, 0x83, 0x43, 0x90, 0x80, 0xf0, 0x64, 0xa3, 0x03, 0x90, + 0x67, 0x65, 0x7f, 0x83, 0x43, 0x81, 0x06, 0x40, 0x20, 0x83, 0xa3, 0x81, + 0x4f, 0xd6, 0x7f, 0x80, 0x07, 0x64, 0xe7, 0x48, 0x7f, 0x83, 0xb3, 0x81, + 0x0a, 0x40, 0x20, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, 0x83, 0xa3, 0x81, + 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x0b, 0x08, 0xa0, + 0x83, 0xc3, 0x81, 0x0a, 0x40, 0x20, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, + 0x83, 0xa3, 0x81, 0x03, 0xb0, 0x00, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, + 0x13, 0x08, 0xa0, 0x83, 0xa3, 0x81, 0x8f, 0xd8, 0x7f, 0x83, 0xa3, 0x81, + 0xd7, 0xf3, 0x7f, 0xe7, 0x14, 0xe6, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0x83, 0x23, 0x80, 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, + 0x03, 0x3c, 0xfe, 0x3c, 0x04, 0xba, 0x4a, 0x00, 0x60, 0x83, 0x23, 0x80, + 0x03, 0x00, 0x80, 0x00, 0x38, 0x31, 0x02, 0xbc, 0x0f, 0x03, 0x3c, 0xfe, + 0x3c, 0x08, 0xb2, 0x2e, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, + 0x02, 0xb8, 0xc8, 0x03, 0x3c, 0xfe, 0x00, 0x40, 0x2b, 0x02, 0x7c, 0x26, + 0x0a, 0x40, 0x20, 0x04, 0x04, 0x64, 0x83, 0x23, 0x80, 0xb3, 0x4f, 0x7f, + 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0xa3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x00, 0x78, 0x64, 0x02, 0xb8, 0xc8, 0x03, 0x3c, 0xfe, + 0x00, 0x40, 0x2b, 0x02, 0x7c, 0x26, 0x0a, 0x40, 0x20, 0x04, 0x08, 0x64, + 0x83, 0x23, 0x80, 0x7b, 0x4f, 0x7f, 0x4b, 0xc3, 0xfe, 0x17, 0x04, 0xe0, + 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0x01, 0x00, 0x05, 0x00, 0x00, 0x64, + 0x83, 0x43, 0x90, 0x05, 0x00, 0x00, 0x08, 0x41, 0x64, 0x04, 0x11, 0x64, + 0x83, 0x63, 0x80, 0x4b, 0x4f, 0x7f, 0x40, 0x00, 0x64, 0xb3, 0x47, 0x7f, + 0x05, 0x00, 0x00, 0x48, 0x41, 0x64, 0x04, 0x11, 0x64, 0x83, 0x63, 0x80, + 0x2f, 0x4f, 0x7f, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, 0x73, 0x00, 0x60, + 0x83, 0x43, 0x80, 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, 0x00, 0x00, 0x86, + 0x12, 0x00, 0x60, 0x83, 0x23, 0x80, 0x0c, 0x00, 0x92, 0x12, 0x00, 0x60, + 0x83, 0x33, 0x80, 0x00, 0x00, 0xa2, 0xb3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x08, 0x2b, 0x03, 0x00, 0x03, 0x8b, 0x33, 0x80, 0x06, 0x40, 0x20, + 0x83, 0x63, 0x80, 0xdb, 0x4e, 0x7f, 0x83, 0x23, 0x80, 0x00, 0x08, 0x2b, + 0x03, 0x00, 0x03, 0x06, 0x40, 0x20, 0x83, 0x63, 0x80, 0x77, 0x4e, 0x7f, + 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x18, 0x00, 0xb2, 0x8e, 0xbf, 0x7f, 0x09, 0x00, 0x00, 0x48, 0x00, 0x64, + 0x04, 0x14, 0x64, 0x83, 0x63, 0x80, 0x97, 0x4e, 0x7f, 0x4b, 0xc3, 0xfe, + 0x37, 0x04, 0xe0, 0x33, 0x00, 0xe0, 0xa3, 0x43, 0x90, 0x83, 0x63, 0x80, + 0x00, 0x00, 0xba, 0x1e, 0x01, 0x60, 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, + 0x83, 0x63, 0x80, 0x03, 0x10, 0x02, 0x43, 0x40, 0xf7, 0x00, 0x00, 0x86, + 0x02, 0x01, 0x60, 0x01, 0x00, 0x05, 0x00, 0x00, 0x64, 0xb3, 0x03, 0x90, + 0x09, 0x00, 0x00, 0x04, 0x78, 0x64, 0x83, 0x63, 0x80, 0x03, 0x10, 0x02, + 0x43, 0x40, 0xf7, 0x83, 0x43, 0x90, 0x00, 0x00, 0x64, 0xa3, 0x03, 0x90, + 0x4f, 0x00, 0x60, 0x83, 0x23, 0x80, 0x00, 0x08, 0x2b, 0x03, 0x00, 0x03, + 0x06, 0x40, 0x20, 0x83, 0x33, 0x80, 0x00, 0x00, 0xa2, 0x0a, 0x40, 0x20, + 0x83, 0x43, 0x80, 0x0b, 0x4e, 0x7f, 0x83, 0x23, 0x80, 0x00, 0x08, 0x2b, + 0x03, 0x00, 0x03, 0x06, 0x40, 0x20, 0x83, 0x43, 0x80, 0xa7, 0x4d, 0x7f, + 0x83, 0x23, 0x80, 0x03, 0x04, 0x00, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x18, 0x00, 0xb2, 0xb2, 0xbf, 0x7f, 0x00, 0x00, 0x64, 0x93, 0x43, 0x90, + 0x83, 0x53, 0x80, 0xfd, 0xff, 0xff, 0x02, 0x00, 0x00, 0x02, 0x64, 0x32, + 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0xfd, 0x00, 0xfc, 0x02, 0xbc, 0x1f, + 0x01, 0x2a, 0x02, 0x02, 0x40, 0x20, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, + 0x00, 0x00, 0x99, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0x00, 0x00, 0xa1, + 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, 0x00, 0x10, 0x98, 0x93, 0x43, 0x90, + 0x83, 0x53, 0x80, 0x00, 0x10, 0xa0, 0x93, 0x43, 0x90, 0x83, 0x53, 0x80, + 0x0a, 0x40, 0x20, 0x04, 0x15, 0x64, 0x83, 0x43, 0x80, 0x63, 0x4d, 0x7f, + 0x4b, 0xc3, 0xfe, 0x37, 0x04, 0xe0, 0x13, 0x00, 0xe0, 0x01, 0x12, 0x00, + 0x00, 0x00, 0x64, 0x03, 0x00, 0x84, 0xa3, 0x03, 0x90, 0x83, 0x23, 0x80, + 0x00, 0x00, 0xa1, 0xa3, 0x03, 0x90, 0x01, 0x12, 0x00, 0x00, 0x00, 0x64, + 0x87, 0x23, 0x80, 0x03, 0x00, 0x08, 0x03, 0x04, 0x90, 0x4b, 0xc3, 0xfe, + 0x17, 0x04, 0xe0, 0x23, 0x00, 0xe0, 0x83, 0x43, 0x90, 0x01, 0x05, 0x00, + 0x40, 0x00, 0x64, 0x2b, 0x49, 0x7f, 0x83, 0x43, 0x80, 0x03, 0xe4, 0x7f, + 0x00, 0x00, 0x86, 0x8e, 0x00, 0x60, 0x01, 0x05, 0x00, 0x80, 0x00, 0x64, + 0x0f, 0x49, 0x7f, 0x05, 0x00, 0x00, 0x40, 0x03, 0x64, 0xa3, 0x03, 0x90, + 0xb7, 0x61, 0x7f, 0x83, 0x43, 0x80, 0x57, 0xe4, 0x7f, 0x83, 0x43, 0x80, + 0x77, 0xeb, 0x7f, 0x0a, 0x40, 0x20, 0x09, 0x00, 0x00, 0x04, 0xd5, 0x64, + 0x83, 0x43, 0x80, 0x00, 0x04, 0x2b, 0x43, 0x80, 0xf2, 0x1b, 0x08, 0xa0, + 0x01, 0x05, 0x00, 0xc0, 0x00, 0x64, 0xc7, 0x48, 0x7f, 0x83, 0x43, 0x80, + 0x83, 0xde, 0x7f, 0x01, 0x05, 0x00, 0x00, 0x01, 0x64, 0xb3, 0x48, 0x7f, + 0x08, 0x0f, 0x64, 0x44, 0x15, 0x64, 0x83, 0x43, 0x80, 0xd4, 0x83, 0x63, + 0x01, 0x05, 0x00, 0x80, 0x01, 0x64, 0x97, 0x48, 0x7f, 0x1b, 0x00, 0x60, + 0x83, 0x43, 0x80, 0x47, 0xd7, 0x7f, 0x01, 0x05, 0x00, 0xc0, 0x01, 0x64, + 0x7f, 0x48, 0x7f, 0x01, 0x05, 0x00, 0x00, 0x02, 0x64, 0x73, 0x48, 0x7f, + 0x4b, 0xc3, 0xfe, 0x27, 0x04, 0xe0, 0x0b, 0x0a, 0x60, 0x3f, 0x0a, 0x60, + 0x03, 0x00, 0xe0, 0x37, 0x4a, 0x60, 0x40, 0x80, 0x1d, 0x07, 0x04, 0xe0, + 0x1f, 0x88, 0xe5, 0x20, 0x84, 0x1d, 0xb0, 0x8c, 0x1d, 0x98, 0x80, 0x1d, + 0x6e, 0x43, 0x20, 0x56, 0x42, 0x20, 0x0c, 0x76, 0x72, 0x8c, 0x24, 0x3a, + 0x22, 0x01, 0x60, 0xfd, 0x00, 0x00, 0xbc, 0x7c, 0xb7, 0x12, 0x00, 0x60, + 0xbc, 0x3c, 0xae, 0x6e, 0x23, 0x80, 0x17, 0x00, 0x60, 0xfd, 0xff, 0x00, + 0xbc, 0x7c, 0xaf, 0x2c, 0x04, 0x64, 0xee, 0xa2, 0x80, 0x00, 0xaf, 0x3e, + 0x05, 0x00, 0x00, 0x06, 0x1c, 0xe1, 0x00, 0x08, 0x64, 0x6f, 0xac, 0xf2, + 0x03, 0xec, 0xf2, 0x30, 0x00, 0xc8, 0x54, 0x82, 0x40, 0x2c, 0xae, 0x3e, + 0x18, 0x83, 0x40, 0xd7, 0x56, 0xfb, 0x1c, 0x82, 0x40, 0x88, 0x33, 0xd8, + 0xa8, 0x41, 0x31, 0x40, 0xa9, 0x1d, 0xa7, 0x3d, 0xfe, 0xe4, 0xf7, 0x63, + 0x22, 0x40, 0x20, 0x40, 0xa9, 0x1d, 0xd4, 0xf7, 0x63, 0x54, 0x42, 0x24, + 0x2e, 0x40, 0x20, 0xc4, 0x41, 0x31, 0x00, 0x42, 0x2b, 0x03, 0x44, 0xd0, + 0x4c, 0x01, 0x3a, 0xb0, 0x0b, 0xd0, 0x2a, 0x00, 0x60, 0x03, 0x98, 0xf2, + 0xac, 0x01, 0x3a, 0x0e, 0x00, 0x60, 0x6c, 0x01, 0x3a, 0x0e, 0x00, 0x60, + 0xef, 0x46, 0x00, 0x0f, 0x00, 0x60, 0xef, 0x4a, 0x00, 0x03, 0x98, 0xf2, + 0x88, 0x33, 0xd8, 0x17, 0xd4, 0xf2, 0x40, 0xa9, 0x1d, 0xc4, 0xf3, 0x63, + 0x22, 0x40, 0x20, 0x40, 0xa9, 0x1d, 0xf4, 0xef, 0x63, 0x64, 0x42, 0x24, + 0xc3, 0x61, 0xd8, 0x4c, 0x1e, 0x3a, 0xb0, 0x0b, 0xd0, 0x26, 0x00, 0x60, + 0x9f, 0x9d, 0xf2, 0xac, 0x1d, 0x3a, 0x0e, 0x00, 0x60, 0x6c, 0x1e, 0x3a, + 0x0e, 0x00, 0x60, 0x03, 0x44, 0x00, 0x0b, 0x00, 0x60, 0x03, 0x48, 0x00, + 0xec, 0x42, 0x2b, 0xd3, 0x42, 0xfb, 0x56, 0x43, 0x20, 0xa7, 0x03, 0x60, + 0x24, 0x08, 0x72, 0x40, 0x00, 0x74, 0xe4, 0xeb, 0x63, 0x1a, 0x40, 0x20, + 0xfd, 0x00, 0x00, 0xbc, 0x7d, 0xb7, 0x12, 0x00, 0x60, 0xbc, 0x3d, 0xae, + 0xee, 0x22, 0x80, 0x17, 0x00, 0x60, 0xfd, 0xff, 0x00, 0xbc, 0x7d, 0xaf, + 0x2c, 0x04, 0x64, 0xee, 0xa2, 0x80, 0x80, 0xad, 0x3e, 0x05, 0x00, 0x00, + 0x06, 0x1c, 0xe1, 0x00, 0x08, 0x64, 0x73, 0xda, 0xf2, 0x54, 0x00, 0x64, + 0x6f, 0xac, 0xf2, 0x03, 0xec, 0xf2, 0xa8, 0x01, 0xc8, 0x98, 0x81, 0x40, + 0x54, 0xae, 0x3e, 0x44, 0x82, 0x40, 0xb4, 0x41, 0x31, 0x2c, 0xae, 0x3e, + 0xb3, 0x3d, 0xfe, 0xef, 0x46, 0xfb, 0x1c, 0x82, 0x40, 0x40, 0xb5, 0x1d, + 0xf0, 0xe3, 0x63, 0x2a, 0x40, 0x20, 0x40, 0xb5, 0x1d, 0xe0, 0xe3, 0x63, + 0x24, 0x43, 0x24, 0x16, 0x40, 0x20, 0xc4, 0x42, 0x31, 0x80, 0x42, 0x2b, + 0x03, 0x44, 0xd0, 0x4c, 0x02, 0x3a, 0x2a, 0x00, 0x60, 0x03, 0x98, 0xf2, + 0xac, 0x01, 0x3a, 0x0e, 0x00, 0x60, 0x6c, 0x02, 0x3a, 0x0e, 0x00, 0x60, + 0x57, 0x45, 0x00, 0x0f, 0x00, 0x60, 0x57, 0x49, 0x00, 0x03, 0x98, 0xf2, + 0x27, 0xe4, 0xf2, 0x40, 0xb6, 0x1d, 0xd8, 0xdf, 0x63, 0x22, 0x40, 0x20, + 0x40, 0xb6, 0x1d, 0xc8, 0xdf, 0x63, 0xc6, 0x42, 0x20, 0x30, 0x43, 0x24, + 0x43, 0x60, 0xd8, 0x0c, 0x07, 0x3a, 0x2a, 0x00, 0x60, 0x47, 0x98, 0xf2, + 0x0c, 0x07, 0x3a, 0x0e, 0x00, 0x60, 0x8c, 0x05, 0x3a, 0x0e, 0x00, 0x60, + 0x03, 0x44, 0x00, 0x0f, 0x00, 0x60, 0x03, 0x48, 0x00, 0x47, 0x98, 0xf2, + 0x54, 0x41, 0x2b, 0x73, 0xf0, 0xf2, 0x57, 0x41, 0xfb, 0xac, 0x41, 0x31, + 0x00, 0xaf, 0x1d, 0xfc, 0xd7, 0x63, 0x26, 0x40, 0x20, 0x00, 0xaf, 0x1d, + 0xec, 0xd7, 0x63, 0xab, 0x3d, 0xfe, 0xa0, 0x42, 0x24, 0x32, 0x40, 0x20, + 0xc4, 0x41, 0x31, 0x40, 0x42, 0x2b, 0x03, 0x44, 0xd0, 0x0c, 0x02, 0x3a, + 0x2a, 0x00, 0x60, 0x03, 0x98, 0xf2, 0x0c, 0x02, 0x3a, 0x0e, 0x00, 0x60, + 0x8c, 0x01, 0x3a, 0x0e, 0x00, 0x60, 0x33, 0x47, 0x00, 0x0f, 0x00, 0x60, + 0x33, 0x4b, 0x00, 0x03, 0x98, 0xf2, 0x23, 0xe0, 0xf2, 0x00, 0xae, 0x1d, + 0xe0, 0xd3, 0x63, 0x26, 0x40, 0x20, 0x00, 0xae, 0x1d, 0xd0, 0xd3, 0x63, + 0xa8, 0x42, 0x24, 0xc3, 0x65, 0xd8, 0x8c, 0x1e, 0x3a, 0x26, 0x00, 0x60, + 0x9f, 0x9d, 0xf2, 0xac, 0x1d, 0x3a, 0x0e, 0x00, 0x60, 0xac, 0x1e, 0x3a, + 0x0e, 0x00, 0x60, 0x03, 0x44, 0x00, 0x0b, 0x00, 0x60, 0x03, 0x48, 0x00, + 0x30, 0x43, 0x2b, 0x13, 0x43, 0xfb, 0xcb, 0x01, 0x60, 0x6c, 0x27, 0x3a, + 0x10, 0x00, 0x74, 0xbe, 0x01, 0x60, 0xfd, 0x00, 0x00, 0x7c, 0x7f, 0xb7, + 0x12, 0x00, 0x60, 0x7c, 0x3f, 0xae, 0x5e, 0x21, 0x80, 0x17, 0x00, 0x60, + 0xfd, 0xff, 0x00, 0x7c, 0x7f, 0xaf, 0x04, 0x04, 0x64, 0x5e, 0xa0, 0x80, + 0x40, 0x9f, 0x3e, 0x05, 0x00, 0x00, 0x06, 0x1c, 0xe1, 0x14, 0x08, 0x64, + 0x47, 0x9c, 0xf2, 0x57, 0xc5, 0xf2, 0x3c, 0x14, 0x72, 0x6c, 0x36, 0x3a, + 0x07, 0x00, 0xfd, 0x0c, 0x23, 0x3a, 0x03, 0x00, 0xfd, 0x53, 0x40, 0xfb, + 0x63, 0x01, 0x60, 0x40, 0x97, 0x40, 0x0c, 0x87, 0x3e, 0xcf, 0x40, 0xfb, + 0xa3, 0x0f, 0x90, 0x58, 0x86, 0x3e, 0x2c, 0x97, 0x40, 0x04, 0x86, 0x3e, + 0xf0, 0x40, 0x31, 0x5c, 0x96, 0x40, 0x5f, 0x5c, 0xfb, 0x80, 0xb1, 0x1d, + 0xeb, 0x3c, 0xfe, 0xfc, 0xc3, 0x63, 0x36, 0x40, 0x20, 0x80, 0xb1, 0x1d, + 0xec, 0xc3, 0x63, 0x84, 0x42, 0x24, 0x1a, 0x40, 0x20, 0xc8, 0x41, 0x31, + 0x40, 0x43, 0x2b, 0x03, 0x48, 0xd0, 0x4c, 0x00, 0x3a, 0x8f, 0x23, 0x80, + 0x2a, 0x00, 0x60, 0x03, 0x8c, 0xf2, 0x4c, 0x00, 0x3a, 0x0e, 0x00, 0x60, + 0xcc, 0x00, 0x3a, 0x0e, 0x00, 0x60, 0x9b, 0x45, 0x00, 0x0f, 0x00, 0x60, + 0x9b, 0x49, 0x00, 0x03, 0x8c, 0xf2, 0x83, 0x4f, 0x90, 0x37, 0xc4, 0xf2, + 0x40, 0xb3, 0x1d, 0xdc, 0xbf, 0x63, 0xa3, 0x03, 0x90, 0x40, 0xb3, 0x1d, + 0xcc, 0xbf, 0x63, 0x8b, 0x23, 0x80, 0xa8, 0x42, 0x24, 0xc3, 0x49, 0xd8, + 0x8c, 0x1e, 0x3a, 0x2e, 0x00, 0x60, 0x8f, 0x43, 0x80, 0xdf, 0x8d, 0xf2, + 0xec, 0x1c, 0x3a, 0x0e, 0x00, 0x60, 0xac, 0x1e, 0x3a, 0x0e, 0x00, 0x60, + 0x03, 0x44, 0x00, 0x0f, 0x00, 0x60, 0x03, 0x48, 0x00, 0xdf, 0x8d, 0xf2, + 0x98, 0x41, 0x2b, 0x93, 0x41, 0xfb, 0xc8, 0x42, 0x31, 0x03, 0x3d, 0xfe, + 0x04, 0x41, 0x31, 0xcf, 0x3e, 0xfe, 0x18, 0x4c, 0x24, 0x4c, 0x4c, 0x24, + 0x00, 0x48, 0x24, 0x44, 0x48, 0x24, 0x03, 0x8c, 0xf2, 0x88, 0x41, 0x31, + 0x8b, 0x80, 0xf2, 0xcc, 0x08, 0x3a, 0x01, 0x01, 0x00, 0x4f, 0x00, 0x00, + 0x47, 0x8c, 0xf9, 0x8c, 0x40, 0x31, 0xdf, 0xe9, 0xf2, 0xc7, 0x84, 0xf2, + 0x6c, 0x1c, 0x3a, 0x26, 0x00, 0x60, 0x88, 0x40, 0x2b, 0x9b, 0x3d, 0xfe, + 0x20, 0x96, 0x40, 0x8b, 0x98, 0xf2, 0x8c, 0x20, 0x3a, 0x12, 0x00, 0x60, + 0xec, 0x05, 0x48, 0x0a, 0x00, 0x60, 0x13, 0x45, 0x00, 0x14, 0x00, 0x64, + 0x08, 0x95, 0x1d, 0x80, 0x8c, 0x1d, 0x1f, 0x8c, 0xe5, 0x13, 0x88, 0xe5, + 0x20, 0x84, 0x1d, 0x98, 0x8c, 0x1d, 0x16, 0x40, 0x20, 0x6a, 0x42, 0x20, + 0xac, 0x4d, 0x72, 0x8c, 0x24, 0x3a, 0x06, 0x01, 0x60, 0xfd, 0x00, 0x00, + 0xbc, 0x7c, 0xb7, 0x12, 0x00, 0x60, 0xbc, 0x3c, 0xae, 0xde, 0x20, 0x80, + 0x17, 0x00, 0x60, 0xfd, 0xff, 0x00, 0xbc, 0x7c, 0xaf, 0x1c, 0x04, 0x64, + 0xde, 0xa1, 0x80, 0x80, 0x9c, 0x3e, 0x05, 0x00, 0x00, 0x06, 0x1c, 0xe1, + 0x47, 0x9c, 0xf2, 0x1c, 0x08, 0x64, 0xdf, 0xc5, 0xf2, 0x30, 0x1c, 0xc8, + 0x68, 0x9e, 0x40, 0x04, 0x86, 0x3e, 0x98, 0x9c, 0x40, 0x6b, 0x68, 0xfb, + 0x14, 0x9e, 0x40, 0xac, 0x41, 0x31, 0x80, 0xae, 0x1d, 0xc4, 0xab, 0x63, + 0xa3, 0x03, 0x90, 0x80, 0xae, 0x1d, 0xf4, 0xa7, 0x63, 0x8b, 0x23, 0x80, + 0xa7, 0x3d, 0xfe, 0x44, 0x41, 0x31, 0x40, 0x42, 0x24, 0x88, 0x40, 0x2b, + 0x83, 0x44, 0xd0, 0x0c, 0x08, 0x3a, 0x22, 0x00, 0x60, 0x8b, 0x98, 0xf2, + 0x0c, 0x88, 0x3a, 0x8f, 0x98, 0xf2, 0xac, 0x09, 0x3a, 0x86, 0x40, 0x20, + 0x8b, 0xcc, 0xf9, 0x4b, 0x88, 0xf9, 0x8b, 0xc0, 0xf2, 0x80, 0xac, 0x1d, + 0xa3, 0x0b, 0x90, 0xec, 0xa3, 0x63, 0x22, 0x40, 0x20, 0x83, 0x23, 0x80, + 0xc6, 0x42, 0x20, 0xd8, 0xa3, 0x63, 0x46, 0x41, 0x20, 0x40, 0x42, 0x24, + 0x43, 0x60, 0xd8, 0x0c, 0x04, 0x3a, 0xde, 0x01, 0x60, 0x47, 0x98, 0xf2, + 0xac, 0x85, 0x3a, 0x5b, 0x98, 0xf2, 0x0c, 0x04, 0x3a, 0x4a, 0x40, 0x20, + 0x47, 0xd8, 0xf9, 0x87, 0x84, 0xf9, 0xbf, 0x01, 0x60, 0x24, 0x08, 0x72, + 0x40, 0x00, 0x74, 0xd8, 0x9f, 0x63, 0x1a, 0x40, 0x20, 0xfd, 0x00, 0x00, + 0xbc, 0x7d, 0xb7, 0x12, 0x00, 0x60, 0xbc, 0x3d, 0xae, 0xde, 0x21, 0x80, + 0x17, 0x00, 0x60, 0xfd, 0xff, 0x00, 0xbc, 0x7d, 0xaf, 0x1c, 0x04, 0x64, + 0xde, 0xa1, 0x80, 0x80, 0x9d, 0x3e, 0x05, 0x00, 0x00, 0x2a, 0x1c, 0xe1, + 0x6f, 0xda, 0xf2, 0xab, 0x9e, 0xf2, 0x1c, 0x08, 0x64, 0xdf, 0xe9, 0xf2, + 0x88, 0x1d, 0xc8, 0x70, 0xaa, 0x3e, 0x98, 0x9d, 0x40, 0x44, 0x9e, 0x40, + 0x28, 0xaa, 0x3e, 0xa7, 0x46, 0xfb, 0xa8, 0x41, 0x31, 0x00, 0xab, 0x1d, + 0xf0, 0x97, 0x63, 0xa3, 0x03, 0x90, 0x00, 0xab, 0x1d, 0xe0, 0x97, 0x63, + 0x8b, 0x23, 0x80, 0xaf, 0x3d, 0xfe, 0x44, 0x42, 0x31, 0xc0, 0x42, 0x24, + 0x88, 0x40, 0x2b, 0x83, 0x44, 0xd0, 0x0c, 0x08, 0x3a, 0x14, 0x9e, 0x40, + 0x22, 0x00, 0x60, 0x8b, 0x98, 0xf2, 0x0c, 0x88, 0x3a, 0x8f, 0x98, 0xf2, + 0xac, 0x09, 0x3a, 0x86, 0x40, 0x20, 0x8b, 0xcc, 0xf9, 0x4b, 0x88, 0xf9, + 0x8b, 0xc0, 0xf2, 0x80, 0xa8, 0x1d, 0xa3, 0x0b, 0x90, 0xd4, 0x93, 0x63, + 0x22, 0x40, 0x20, 0x83, 0x23, 0x80, 0x86, 0x42, 0x20, 0xc0, 0x93, 0x63, + 0x46, 0x42, 0x20, 0xec, 0x42, 0x24, 0x43, 0x60, 0xd8, 0xcc, 0x06, 0x3a, + 0x22, 0x00, 0x60, 0x47, 0x98, 0xf2, 0xcc, 0x86, 0x3a, 0x43, 0x98, 0xf2, + 0xac, 0x05, 0x3a, 0x4a, 0x40, 0x20, 0x47, 0xc0, 0xf9, 0x87, 0x84, 0xf9, + 0x6f, 0xec, 0xf2, 0xa8, 0x41, 0x31, 0xc0, 0xaa, 0x1d, 0xc4, 0x8f, 0x63, + 0xa3, 0x03, 0x90, 0xc0, 0xaa, 0x1d, 0xf4, 0x8b, 0x63, 0x8b, 0x23, 0x80, + 0xa7, 0x3d, 0xfe, 0x44, 0x41, 0x31, 0x40, 0x42, 0x24, 0x88, 0x40, 0x2b, + 0x83, 0x44, 0xd0, 0x0c, 0x08, 0x3a, 0x22, 0x00, 0x60, 0x8b, 0x98, 0xf2, + 0x0c, 0x88, 0x3a, 0x8f, 0x98, 0xf2, 0xac, 0x09, 0x3a, 0x86, 0x40, 0x20, + 0x8b, 0xcc, 0xf9, 0x4b, 0x88, 0xf9, 0x8b, 0xc0, 0xf2, 0x80, 0xa8, 0x1d, + 0xa3, 0x0b, 0x90, 0xec, 0x87, 0x63, 0x22, 0x40, 0x20, 0x83, 0x23, 0x80, + 0x86, 0x42, 0x20, 0xd8, 0x87, 0x63, 0x46, 0x41, 0x20, 0x40, 0x42, 0x24, + 0x43, 0x60, 0xd8, 0x0c, 0x04, 0x3a, 0x1e, 0x00, 0x60, 0x47, 0x98, 0xf2, + 0xac, 0x85, 0x3a, 0x5b, 0x98, 0xf2, 0x0c, 0x04, 0x3a, 0x5b, 0xd8, 0xf9, + 0x47, 0x98, 0xf9, 0x47, 0xc0, 0xf2, 0x48, 0x9c, 0x3e, 0x0c, 0x00, 0x64, + 0x1b, 0x02, 0x60, 0xcc, 0x24, 0x3a, 0x0e, 0x00, 0x60, 0x08, 0xa4, 0x1d, + 0x0b, 0x02, 0x60, 0xfd, 0x00, 0x00, 0xfc, 0x7c, 0xb7, 0x16, 0x00, 0x60, + 0xfc, 0x3c, 0xae, 0x1c, 0x00, 0x64, 0xde, 0x21, 0x80, 0x17, 0x00, 0x60, + 0xfd, 0xff, 0x00, 0xfc, 0x7c, 0xaf, 0x1c, 0x04, 0x64, 0xde, 0xa1, 0x80, + 0xc0, 0x9c, 0x3e, 0x05, 0x00, 0x00, 0x02, 0x1c, 0xe1, 0x18, 0x08, 0x64, + 0x1f, 0x9c, 0xf2, 0x9b, 0xdd, 0xf2, 0x6c, 0x18, 0x72, 0x6c, 0x0e, 0x3a, + 0x0e, 0x00, 0x60, 0xac, 0x20, 0x3a, 0x1e, 0x00, 0x60, 0x07, 0xca, 0xf2, + 0x6c, 0x20, 0x3a, 0x6b, 0xce, 0xf2, 0x0b, 0x00, 0xfd, 0xab, 0xca, 0xf2, + 0x56, 0x40, 0x20, 0x48, 0xa9, 0x1d, 0x93, 0x01, 0x60, 0xc0, 0x98, 0x40, + 0x94, 0x9c, 0x3e, 0x57, 0x41, 0xfb, 0x6c, 0x9e, 0x3e, 0x40, 0x9a, 0x40, + 0x74, 0x41, 0x31, 0x24, 0x9e, 0x3e, 0x73, 0x3d, 0xfe, 0x67, 0x42, 0xfb, + 0xc0, 0xb6, 0x1d, 0xa8, 0x98, 0x40, 0x6b, 0xf7, 0x7f, 0xa3, 0x03, 0x90, + 0xc0, 0xb6, 0x1d, 0x5b, 0xf7, 0x7f, 0x8f, 0x23, 0x80, 0x08, 0x43, 0x24, + 0x2e, 0x40, 0x20, 0x44, 0x42, 0x31, 0xc0, 0x40, 0x2b, 0x03, 0x44, 0xd0, + 0x8c, 0x00, 0x3a, 0x20, 0x9a, 0x40, 0x2a, 0x00, 0x60, 0x03, 0x94, 0xf2, + 0x6c, 0x01, 0x3a, 0x0e, 0x00, 0x60, 0xac, 0x00, 0x3a, 0x0e, 0x00, 0x60, + 0xef, 0x46, 0x00, 0x0f, 0x00, 0x60, 0xef, 0x4a, 0x00, 0x03, 0x94, 0xf2, + 0x0b, 0xc8, 0xf2, 0x80, 0xb4, 0x1d, 0xb3, 0x0b, 0x90, 0x07, 0xf7, 0x7f, + 0xa3, 0x03, 0x90, 0x83, 0x33, 0x80, 0x46, 0x43, 0x20, 0xf3, 0xf6, 0x7f, + 0x93, 0x23, 0x80, 0x0c, 0x43, 0x24, 0x43, 0x52, 0xd8, 0xcc, 0x24, 0x3a, + 0x2a, 0x00, 0x60, 0x67, 0x96, 0xf2, 0x6c, 0x25, 0x3a, 0x0e, 0x00, 0x60, + 0xec, 0x24, 0x3a, 0x0e, 0x00, 0x60, 0x03, 0x44, 0x00, 0x0f, 0x00, 0x60, + 0x03, 0x48, 0x00, 0x67, 0x96, 0xf2, 0xec, 0x42, 0x2b, 0xc3, 0x42, 0xfb, + 0x84, 0x42, 0x31, 0x4f, 0xce, 0xf2, 0x8b, 0x3e, 0xfe, 0x27, 0x3c, 0xfe, + 0x00, 0x40, 0x31, 0x50, 0x4a, 0x24, 0x08, 0x48, 0x24, 0x64, 0x46, 0x24, + 0x00, 0x44, 0x24, 0x67, 0x8a, 0xf2, 0x04, 0x41, 0x31, 0x47, 0xa4, 0xf2, + 0x8c, 0x04, 0x3a, 0x01, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x03, 0x88, 0xf9, + 0x6c, 0x40, 0x31, 0xc3, 0x82, 0xf2, 0x44, 0x40, 0x2b, 0x13, 0x3d, 0xfe, + 0x2c, 0x0c, 0x3a, 0x47, 0x90, 0xf2, 0x16, 0x00, 0x60, 0xec, 0x00, 0x48, + 0x26, 0x00, 0x60, 0x4c, 0x20, 0x3a, 0x1e, 0x00, 0x60, 0x4b, 0xe8, 0xf2, + 0xac, 0x04, 0x3a, 0x17, 0xd4, 0xf2, 0x03, 0x00, 0xfd, 0x43, 0xc1, 0xf2, + 0x86, 0x40, 0x20, 0x07, 0xc6, 0xf2, 0x6c, 0x20, 0x3a, 0xc3, 0xc0, 0xf2, + 0x0f, 0x00, 0xfd, 0x03, 0xcc, 0xf2, 0x1c, 0x9c, 0x40, 0x44, 0x98, 0x3e, + 0xcb, 0x45, 0xfb, 0x0c, 0x98, 0x3e, 0x80, 0x8c, 0x1d, 0x17, 0x8c, 0xe5, + 0x03, 0x10, 0xe5, 0x14, 0x7c, 0x27, 0x58, 0x7c, 0x27, 0x03, 0xd4, 0xfa, + 0x47, 0xd8, 0xfa, 0x03, 0xd4, 0xf2, 0x47, 0xd8, 0xf2, 0xdc, 0x83, 0x62, + 0x47, 0xd4, 0xfa, 0x47, 0xd4, 0xf2, 0x57, 0xd9, 0xfa, 0x03, 0xd4, 0xfa, + 0x03, 0xd4, 0xf2, 0x07, 0x14, 0xe5, 0x4b, 0x24, 0xfe, 0x50, 0x04, 0xc8, + 0x8a, 0x4c, 0x20, 0x8b, 0x04, 0x00, 0x52, 0x40, 0x20, 0x04, 0x88, 0x3e, + 0x8c, 0x80, 0x25, 0x00, 0x8c, 0x40, 0x10, 0x08, 0xca, 0x00, 0x50, 0x1e, + 0x00, 0x3c, 0x23, 0x04, 0x00, 0x64, 0xb0, 0xc7, 0xc9, 0x47, 0x00, 0x80, + 0xa0, 0xc7, 0xc9, 0x07, 0x00, 0xfe, 0x0f, 0x44, 0x00, 0x48, 0x04, 0x5e, + 0xc4, 0x48, 0x78, 0x84, 0x00, 0x66, 0xf6, 0xbf, 0x7f, 0x00, 0x3c, 0x23, + 0x8c, 0x00, 0x64, 0x01, 0x00, 0x00, 0xcf, 0x01, 0xfe, 0x01, 0x04, 0x00, + 0x8c, 0x05, 0x64, 0x01, 0x00, 0x00, 0x6f, 0x01, 0xfe, 0x4b, 0xc3, 0xfe, + 0x63, 0xc3, 0xfe, 0x67, 0xc3, 0xfe, 0x8f, 0x03, 0x80, 0x83, 0x13, 0x80, + 0xbb, 0x23, 0x00, 0xc0, 0x00, 0x86, 0x02, 0xbc, 0x9f, 0x00, 0x3c, 0x23, + 0xa0, 0xcf, 0x7b, 0x67, 0xc3, 0xfe, 0x63, 0xc3, 0xfe, 0xa7, 0x1f, 0xfe, + 0xe7, 0x1f, 0xfe +}; +const unsigned char pmcdata[] = { + 0xb0, 0x09, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x80, 0x05, 0x00, 0x00, 0x78, 0x05, 0x00, 0x04, + 0x30, 0x00, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 0x74, 0x05, 0x00, 0x04, + 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x04, + 0x1c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0xb8, 0x09, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x40, 0x40, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x00, 0x40, 0x40, + 0x40, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x00, 0x73, 0x63, 0x72, 0x61, + 0x74, 0x63, 0x68, 0x3a, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0a, + 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, + 0x42, 0x43, 0x44, 0x45, 0x46, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, + 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x00, 0x28, + 0x6e, 0x75, 0x6c, 0x6c, 0x29, 0x00, 0x00, 0x00, 0x5c, 0x16, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xa6, 0x1a, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xfb, 0x19, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0x63, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0x0f, 0x18, 0x0c, 0x00, + 0x27, 0x1b, 0x0c, 0x00, 0xc6, 0x1b, 0x0c, 0x00, 0xa5, 0x18, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0xa6, 0x1a, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, 0x4f, 0x17, 0x0c, 0x00, + 0xe7, 0x1b, 0x0c, 0x00, 0x74, 0x19, 0x0c, 0x00, 0xe7, 0x1b, 0x0c, 0x00, + 0xeb, 0x1a, 0x0c, 0x00, 0xfb, 0x19, 0x0c, 0x00, 0x25, 0x30, 0x34, 0x75, + 0x3a, 0x20, 0x00, 0x52, 0x4f, 0x20, 0x53, 0x56, 0x54, 0x20, 0x25, 0x64, + 0x20, 0x48, 0x56, 0x54, 0x20, 0x25, 0x64, 0x20, 0x4c, 0x56, 0x54, 0x20, + 0x25, 0x64, 0x0a, 0x00, 0x50, 0x4d, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x3a, + 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x0a, 0x00, 0x32, 0x30, + 0x30, 0x36, 0x32, 0x38, 0x5f, 0x31, 0x34, 0x32, 0x37, 0x00, 0x54, 0x53, + 0x3a, 0x25, 0x73, 0x0a, 0x00, 0x43, 0x48, 0x49, 0x44, 0x3a, 0x25, 0x78, + 0x0a, 0x00, 0x43, 0x52, 0x45, 0x56, 0x3a, 0x25, 0x78, 0x0a, 0x00, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x69, 0x70, + 0x0a, 0x00, 0x44, 0x41, 0x43, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x73, + 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x65, 0x70, 0x20, 0x44, 0x41, + 0x43, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x63, 0x75, 0x72, 0x5f, 0x64, + 0x61, 0x63, 0x20, 0x25, 0x75, 0x20, 0x63, 0x75, 0x72, 0x56, 0x20, 0x25, + 0x75, 0x20, 0x63, 0x75, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x20, 0x25, 0x75, + 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x25, 0x64, 0x20, 0x6e, 0x65, + 0x77, 0x5f, 0x64, 0x61, 0x63, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x41, 0x56, + 0x53, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x0a, 0x00, + 0x4d, 0x56, 0x41, 0x44, 0x43, 0x31, 0x20, 0x4d, 0x65, 0x61, 0x73, 0x75, + 0x72, 0x65, 0x64, 0x20, 0x25, 0x75, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x65, + 0x61, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x4d, 0x56, 0x41, 0x44, 0x43, + 0x32, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x4d, 0x56, 0x20, 0x44, 0x65, 0x6c, + 0x74, 0x61, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, + 0x63, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x25, 0x75, 0x20, 0x4d, + 0x56, 0x0a, 0x00, 0x4c, 0x56, 0x54, 0x00, 0x48, 0x56, 0x54, 0x00, 0x64, + 0x65, 0x76, 0x20, 0x61, 0x64, 0x64, 0x72, 0x20, 0x30, 0x78, 0x25, 0x78, + 0x20, 0x52, 0x4f, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x53, 0x56, 0x54, + 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x25, 0x75, 0x20, 0x52, 0x4f, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x25, 0x73, 0x20, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x20, 0x25, 0x75, 0x0a, 0x00, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x00, 0x53, 0x56, 0x54, 0x00, 0x43, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x53, 0x69, 0x67, 0x6d, 0x61, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x25, 0x73, 0x20, 0x52, 0x4f, 0x3a, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x54, + 0x68, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x25, 0x64, 0x20, 0x68, 0x69, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, + 0x20, 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, 0x70, 0x20, 0x61, 0x6c, + 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x68, 0x69, + 0x67, 0x68, 0x20, 0x56, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, + 0x70, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, + 0x6e, 0x20, 0x6c, 0x6f, 0x77, 0x20, 0x56, 0x20, 0x25, 0x64, 0x0a, 0x00, + 0x52, 0x4f, 0x5b, 0x25, 0x64, 0x5d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x20, 0x25, 0x64, 0x20, 0x6c, 0x6f, 0x77, 0x5f, 0x72, 0x6f, 0x20, + 0x25, 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x25, 0x64, 0x20, + 0x76, 0x6c, 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, 0x4d, 0x56, 0x20, 0x5b, + 0x25, 0x64, 0x5d, 0x20, 0x76, 0x68, 0x69, 0x67, 0x68, 0x20, 0x25, 0x64, + 0x20, 0x4d, 0x56, 0x20, 0x5b, 0x25, 0x64, 0x5d, 0x20, 0x76, 0x6f, 0x6c, + 0x74, 0x61, 0x67, 0x65, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x61, 0x76, 0x73, + 0x5f, 0x64, 0x61, 0x63, 0x20, 0x25, 0x64, 0x20, 0x76, 0x63, 0x6f, 0x6e, + 0x76, 0x20, 0x25, 0x64, 0x6d, 0x56, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x20, 0x25, 0x64, 0x20, 0x6d, 0x56, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x5b, + 0x25, 0x64, 0x5d, 0x6d, 0x56, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x68, 0x69, + 0x67, 0x68, 0x20, 0x25, 0x64, 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6c, 0x6f, + 0x77, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x41, 0x56, 0x53, 0x20, 0x43, 0x6c, + 0x6f, 0x73, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x64, 0x61, 0x63, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x20, 0x25, 0x64, 0x20, 0x43, 0x61, 0x6c, 0x63, + 0x69, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x25, 0x64, 0x20, 0x4d, 0x56, + 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x25, 0x64, 0x20, 0x4d, + 0x56, 0x20, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x64, 0x61, 0x63, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x44, 0x75, 0x6d, + 0x70, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x52, 0x4f, 0x27, 0x73, 0x20, 0x6f, + 0x6e, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x0a, 0x00, 0x00, + 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x00, 0x4f, 0x4a, 0xf0, 0x86, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x07, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, + 0xc8, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 +}; +#endif //PMC_ROMDATA_68560_H diff --git a/arch/arm/mach-bcmbca/pmc/pmc_lport.c b/arch/arm/mach-bcmbca/pmc/pmc_lport.c new file mode 100755 index 0000000000..610bfbfa8b --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_lport.c @@ -0,0 +1,139 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +#define PRINTK printf +#define UDELAY udelay + +#include "pmc_drv.h" +#include "pmc_lport.h" +#include "asm/arch/BPCM.h" +#include "clk_rst.h" + +/* pmc_lport.c + * + * Created on: 21 Nov 2015 + * Author: yonatani + */ + +#define UNIPLL_CHAN23_MDIV 5 + +int pmc_lport_init(void) +{ + int status; + LPORT_BPCM_Z0_CONTROL_REG z0_ctl = + { }; + LPORT_BPCM_Z1_CONTROL_REG z1_ctl = + { }; + LPORT_BPCM_Z2_CONTROL_REG z2_ctl = + { }; + + //Configur PLL + status = PowerOnDevice(PMB_ADDR_UNIPLL); + if (status) + { + PRINTK("UNIPLL PowerOnDevice failed\n"); + return status; + } + + status = pll_ch_freq_vco_set(PMB_ADDR_UNIPLL, 2, UNIPLL_CHAN23_MDIV, 0); + if (status) + { + PRINTK("UNIPLL Channel 2 Mdiv=5 failed\n"); + return status; + } + + //Configure LPORT Block BPCM + status = PowerOnDevice(PMB_ADDR_LPORT); + if (status) + { + PRINTK("LPORT PowerOnDevice failed\n"); + return status; + } + + z0_ctl.z0_ubus_dev_clk_en = 1; + z0_ctl.z0_qegphy_clk_en = 1; + status = WriteBPCMRegister(PMB_ADDR_LPORT, LPORT_BPCM_Z0_CONTROL, *(uint32_t *)&z0_ctl); + if (status) + { + PRINTK("LPORT failed BPCM LPORT_BPCM_Z0_CONTROL\n"); + return status; + } + + z1_ctl.z1_cclk_clk_en = 1; + z1_ctl.z1_clk_250_clk_en = 1; + z1_ctl.z1_data_path_cclk_clk_en = 1; + z1_ctl.z1_tsc_clk_en = 1; + z1_ctl.z1_tsc_clk_gated_clk_en = 1; + z1_ctl.z1_tsclk_clk_en = 1; + + status = WriteBPCMRegister(PMB_ADDR_LPORT, LPORT_BPCM_Z1_CONTROL, *(uint32_t *)&z1_ctl); + if (status) + { + PRINTK("LPORT failed BPCM LPORT_BPCM_Z1_CONTROL\n"); + return status; + } + + z2_ctl.z2_cclk_clk_en = 1; + z2_ctl.z2_clk_250_clk_en = 1; + z2_ctl.z2_tsc_clk_en = 1; + z2_ctl.z2_data_path_cclk_clk_en = 1; + z2_ctl.z2_tsc_clk_gated_clk_en = 1; + z2_ctl.z2_tsclk_clk_en = 1; + + status = WriteBPCMRegister(PMB_ADDR_LPORT, LPORT_BPCM_Z2_CONTROL, *(uint32_t *)&z2_ctl); + if (status) + { + PRINTK("LPORT unreset failed BPCM LPORT_BPCM_Z2_CONTROL\n"); + return status; + } + + status = WriteBPCMRegister(PMB_ADDR_LPORT, LPORT_BPCM_Z0_DSERDES0_CTRL, 6); + if (status) + { + PRINTK("LPORT unreset failed BPCM LPORT_BPCM_Z0_DSERDES0_CTRL\n"); + return status; + } + + status = WriteBPCMRegister(PMB_ADDR_LPORT, LPORT_BPCM_Z0_DSERDES1_CTRL, 6); + if (status) + { + PRINTK("LPORT unreset failed BPCM LPORT_BPCM_Z1_DSERDES0_CTRL\n"); + return status; + } + + UDELAY(1000); + + status = WriteBPCMRegister(PMB_ADDR_LPORT, LPORT_BPCM_Z0_DSERDES0_CTRL, 0); + if (status) + { + PRINTK("LPORT unreset failed BPCM LPORT_BPCM_Z0_DSERDES0_CTRL\n"); + return status; + } + + status = WriteBPCMRegister(PMB_ADDR_LPORT, LPORT_BPCM_Z0_DSERDES1_CTRL, 0); + if (status) + { + PRINTK("LPORT unreset failed BPCM LPORT_BPCM_Z1_DSERDES0_CTRL\n"); + return status; + } + + return status; +} + +int pmc_lport_shutdown(void) +{ + /* shut down all zones */ + return PowerOffDevice(PMB_ADDR_LPORT, 0); +} + +#if !defined(_CFE_) && !defined(__UBOOT__) +EXPORT_SYMBOL(pmc_lport_init); +postcore_initcall(pmc_lport_init); +#endif + + diff --git a/arch/arm/mach-bcmbca/pmc/pmc_lport.h b/arch/arm/mach-bcmbca/pmc/pmc_lport.h new file mode 100755 index 0000000000..fbaca997a4 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_lport.h @@ -0,0 +1,68 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ +/* + + * pmc_lport.h + * + * Created on Nov 21 2015 + * Author: yonatani + */ + +#ifndef _PMC_LPORT_H_ +#define _PMC_LPORT_H_ + +//LPORT BPCM Specific registers +#define LPORT_BPCM_Z0_CONTROL 0x20 // offset in bytes: 0x80 +#define LPORT_BPCM_Z0_QEGPHY_CTRL 0x21 // offset in bytes: 0x84 +#define LPORT_BPCM_Z0_QEGPHY_STATUS 0x22 // offset in bytes: 0x88 +#define LPORT_BPCM_Z0_DSERDES0_CTRL 0x23 // offset in bytes: 0x8c +#define LPORT_BPCM_Z0_DSERDES0_STATUS 0x24 // offset in bytes: 0x90 +#define LPORT_BPCM_Z0_DSERDES1_CTRL 0x25 // offset in bytes: 0x94 +#define LPORT_BPCM_Z0_DSERDES1_STATUS 0x26 // offset in bytes: 0x98 +#define LPORT_BPCM_Z1_CONTROL 0x27 // offset in bytes: 0x9c +#define LPORT_BPCM_Z2_CONTROL 0x28 // offset in bytes: 0xa0 + +typedef struct +{ + uint32_t z0_sw_init_1:1; // 0 + uint32_t z0_mux_sel:1; // 1 + uint32_t z0_ubus_dev_clk_en:1; // 2 + uint32_t z0_qegphy_clk_en:1; // 3 + uint32_t z0_pmx_sel:1; // 4 + uint32_t z0_gport_sel:8; // 5:12 + uint32_t z0_control_UNUSED:19; // 31:13 +}LPORT_BPCM_Z0_CONTROL_REG; + + +typedef struct +{ + uint32_t z1_sw_init_1:1; // 0 + uint32_t z1_clk_250_clk_en:1; // 1 + uint32_t z1_tsc_clk_en:1; // 2 + uint32_t z1_tsc_clk_gated_clk_en:1; // 3 + uint32_t z1_cclk_clk_en:1; // 4 + uint32_t z1_data_path_cclk_clk_en:1; // 5 + uint32_t z1_tsclk_clk_en:1; // 6 + uint32_t z1_control_UNUSED1:25; // 31:7 +}LPORT_BPCM_Z1_CONTROL_REG; + +typedef struct +{ + uint32_t z2_sw_init_1:1; // 0 + uint32_t z2_clk_250_clk_en:1; // 1 + uint32_t z2_tsc_clk_en:1; // 2 + uint32_t z2_tsc_clk_gated_clk_en:1; // 3 + uint32_t z2_cclk_clk_en:1; // 4 + uint32_t z2_data_path_cclk_clk_en:1; // 5 + uint32_t z2_tsclk_clk_en:1; // 6 + uint32_t z2_control_UNUSED:25; // 31:7 +}LPORT_BPCM_Z2_CONTROL_REG; + +int pmc_lport_init(void); +int pmc_lport_shutdown(void); +#endif /* _PMC_LPORT_H_ */ diff --git a/arch/arm/mach-bcmbca/pmc/pmc_patch_4908.h b/arch/arm/mach-bcmbca/pmc/pmc_patch_4908.h new file mode 100644 index 0000000000..aebbb97e86 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_patch_4908.h @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2016 Broadcom + */ +// +unsigned char track_bin[] = { + 0xe0, 0xff, 0xbd, 0x27, 0x14, 0x00, 0xb1, 0xaf, 0x00, 0x00, 0x11, 0x3c, + 0x18, 0x00, 0xb2, 0xaf, 0x10, 0x00, 0xb0, 0xaf, 0x1c, 0x00, 0xbf, 0xaf, + 0x21, 0x90, 0x80, 0x00, 0x21, 0x80, 0xa0, 0x00, 0x00, 0x00, 0x31, 0x26, + 0x22, 0x88, 0x51, 0x00, 0x70, 0x06, 0x82, 0x8f, 0x09, 0xf8, 0x40, 0x00, + 0x21, 0x20, 0xa0, 0x00, 0x08, 0x00, 0x03, 0x8e, 0x08, 0x49, 0x02, 0x24, + 0x33, 0x00, 0x62, 0x14, 0x1c, 0x00, 0xbf, 0x8f, 0x0c, 0x00, 0x03, 0x8e, + 0x4a, 0x0a, 0x02, 0x24, 0x30, 0x00, 0x62, 0x54, 0x18, 0x00, 0xb2, 0x8f, + 0x00, 0x06, 0x82, 0x8f, 0x21, 0x28, 0x00, 0x02, 0x09, 0xf8, 0x40, 0x00, + 0x21, 0x20, 0x00, 0x02, 0x00, 0x00, 0x02, 0x3c, 0x08, 0x00, 0x03, 0x8e, + 0x38, 0x01, 0x42, 0x24, 0xc0, 0x9f, 0x10, 0x3c, 0x21, 0x10, 0x51, 0x00, + 0x2c, 0x00, 0x62, 0xac, 0xcc, 0x35, 0x02, 0x26, 0x30, 0x00, 0x62, 0xac, + 0x00, 0x00, 0x02, 0x3c, 0x90, 0x02, 0x42, 0x24, 0x21, 0x88, 0x51, 0x00, + 0x80, 0x01, 0x83, 0xaf, 0x00, 0xb6, 0x04, 0x3c, 0x70, 0x06, 0x91, 0xaf, + 0x28, 0x10, 0x82, 0x90, 0x7f, 0x00, 0x42, 0x30, 0x28, 0x10, 0x82, 0xa0, + 0x38, 0x08, 0x02, 0x26, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x60, 0xa4, + 0x8c, 0x09, 0x02, 0x26, 0x09, 0xf8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa4, 0x0a, 0x02, 0x26, 0x09, 0xf8, 0x40, 0x00, 0x64, 0x13, 0x10, 0x26, + 0x08, 0x00, 0x44, 0x8e, 0x09, 0xf8, 0x00, 0x02, 0x0c, 0x00, 0x45, 0x8e, + 0x80, 0x01, 0x90, 0x8f, 0x00, 0x00, 0x02, 0x96, 0x0a, 0x00, 0x40, 0x10, + 0x1c, 0x00, 0xbf, 0x8f, 0x0d, 0x00, 0x11, 0x04, 0x09, 0x80, 0x04, 0x3c, + 0x48, 0x00, 0x19, 0x8e, 0x1c, 0x00, 0xbf, 0x8f, 0x18, 0x00, 0xb2, 0x8f, + 0x14, 0x00, 0xb1, 0x8f, 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0x20, 0x03, + 0x20, 0x00, 0xbd, 0x27, 0x18, 0x00, 0xb2, 0x8f, 0x14, 0x00, 0xb1, 0x8f, + 0x10, 0x00, 0xb0, 0x8f, 0x08, 0x00, 0xe0, 0x03, 0x20, 0x00, 0xbd, 0x27, + 0x00, 0xb6, 0x02, 0x3c, 0x84, 0x10, 0x43, 0x8c, 0x01, 0x00, 0x63, 0x04, + 0x84, 0x10, 0x44, 0xac, 0x08, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x01, 0x82, 0x8f, 0xd8, 0xff, 0xbd, 0x27, 0x00, 0x00, 0x43, 0x94, + 0x4f, 0x00, 0x60, 0x14, 0x24, 0x00, 0xbf, 0xaf, 0x30, 0x00, 0x42, 0x8c, + 0x18, 0x00, 0xa4, 0x27, 0x14, 0x00, 0xa5, 0x27, 0x09, 0xf8, 0x40, 0x00, + 0x10, 0x00, 0xa6, 0x27, 0x80, 0x01, 0x82, 0x8f, 0x18, 0x00, 0xa4, 0x97, + 0x10, 0x00, 0x43, 0x94, 0x2b, 0x18, 0x83, 0x00, 0x0f, 0x00, 0x60, 0x14, + 0x1a, 0x00, 0xa9, 0x97, 0x12, 0x00, 0x43, 0x94, 0x2b, 0x18, 0x23, 0x01, + 0x0c, 0x00, 0x60, 0x54, 0x0f, 0x00, 0x04, 0x3c, 0x14, 0x00, 0xa8, 0x97, + 0x18, 0x00, 0x46, 0x94, 0x2b, 0x30, 0x06, 0x01, 0x07, 0x00, 0xc0, 0x54, + 0x0f, 0x00, 0x04, 0x3c, 0x16, 0x00, 0xa7, 0x97, 0x1a, 0x00, 0x46, 0x94, + 0x2b, 0x30, 0xe6, 0x00, 0x06, 0x00, 0xc0, 0x50, 0x14, 0x00, 0x45, 0x94, + 0x0f, 0x00, 0x04, 0x3c, 0xda, 0xff, 0x11, 0x04, 0x01, 0x00, 0x84, 0x24, + 0x14, 0x00, 0x00, 0x10, 0x04, 0x00, 0x04, 0x24, 0x2b, 0x28, 0xa4, 0x00, + 0x16, 0x00, 0xa0, 0x50, 0x80, 0x01, 0x82, 0x8f, 0x16, 0x00, 0x44, 0x94, + 0x2b, 0x20, 0x89, 0x00, 0x12, 0x00, 0x80, 0x50, 0x80, 0x01, 0x82, 0x8f, + 0x1c, 0x00, 0x43, 0x94, 0x2b, 0x18, 0x68, 0x00, 0x0e, 0x00, 0x60, 0x50, + 0x80, 0x01, 0x82, 0x8f, 0x1e, 0x00, 0x42, 0x94, 0x2b, 0x10, 0x47, 0x00, + 0x0a, 0x00, 0x40, 0x10, 0x80, 0x01, 0x82, 0x8f, 0x0f, 0x00, 0x04, 0x3c, + 0xc6, 0xff, 0x11, 0x04, 0x02, 0x00, 0x84, 0x24, 0xff, 0xff, 0x04, 0x24, + 0xc0, 0x9f, 0x02, 0x3c, 0xb8, 0x37, 0x42, 0x24, 0x09, 0xf8, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x82, 0x8f, 0x03, 0x00, 0x04, 0x24, + 0x38, 0x00, 0x42, 0x8c, 0x09, 0xf8, 0x40, 0x00, 0x20, 0x00, 0x05, 0x24, + 0x00, 0xb6, 0x04, 0x3c, 0x00, 0x10, 0x84, 0x24, 0xf9, 0x02, 0x45, 0x28, + 0x30, 0x00, 0x83, 0x8c, 0x06, 0x00, 0xa0, 0x10, 0x02, 0x03, 0x42, 0x28, + 0x02, 0x00, 0x62, 0x30, 0x09, 0x00, 0x40, 0x14, 0x02, 0x00, 0x63, 0x34, + 0x06, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x14, + 0x02, 0x00, 0x62, 0x30, 0x03, 0x00, 0x40, 0x10, 0xfd, 0xff, 0x02, 0x24, + 0x24, 0x18, 0x62, 0x00, 0x30, 0x00, 0x83, 0xac, 0x0f, 0x00, 0x04, 0x3c, + 0xa8, 0xff, 0x11, 0x04, 0x03, 0x00, 0x84, 0x24, 0x24, 0x00, 0xbf, 0x8f, + 0x08, 0x00, 0xe0, 0x03, 0x28, 0x00, 0xbd, 0x27, 0x08, 0x49, 0x02, 0x24, + 0x08, 0x00, 0xa2, 0xac, 0x4a, 0x1a, 0x02, 0x24, 0x08, 0x00, 0xe0, 0x03, + 0x0c, 0x00, 0xa2, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 +}; diff --git a/arch/arm/mach-bcmbca/pmc/pmc_rdp.c b/arch/arm/mach-bcmbca/pmc/pmc_rdp.c new file mode 100755 index 0000000000..19f9599321 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_rdp.c @@ -0,0 +1,208 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +#include "pmc_drv.h" +#include "pmc_rdp.h" +#include "asm/arch/BPCM.h" + +#define PRINTK printf + +static int pmc_rdp_start_pll_with_clk(uint32_t clk) +{ + uint32_t bpcmResReg; + uint32_t error; + + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, PLLBPCMRegOffset(resets), 0)) + PRINTK + ("failed to configure PMB RDPPLL at word offset of 0x%02x\n", + (unsigned int)PLLBPCMRegOffset(resets)); + +#if 0 // FIXME! after we know how to pass the RDP clk info, also clean the hardcode value? + if (clk == 550 MHz) { + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0x7, 0x00000084)) + PRINTK("failed to configure PMB RDPPLL 0x7\n"); + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0x8, 0x80000002)) + PRINTK("failed to configure PMB RDPPLL 0x8\n"); + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0xb, 0x800c8006)) + PRINTK("failed to configure PMB RDPPLL 0xb\n"); + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0xc, 0x81008021)) + PRINTK("failed to configure PMB RDPPLL 0xc\n"); + PRINTK + ("%s:setting up RDP PLL to run at reduced speed of 550/275 MHz\n", + __func__); + } else if (clk == 400 MHz) { + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0x7, 0x00000080)) + PRINTK("failed to configure PMB RDPPLL 0x7\n"); + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0x8, 0x80000002)) + PRINTK("failed to configure PMB RDPPLL 0x8\n"); + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0xb, 0x80108008)) + PRINTK("failed to configure PMB RDPPLL 0xb\n"); + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0xc, 0x81008020)) + PRINTK("failed to configure PMB RDPPLL 0xc\n"); + PRINTK + ("%s:setting up RDP PLL to run at reduced speed of 400/200 MHz\n", + __func__); + } else if (clk == 200 MHz) { + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0x7, 0x00000080)) + PRINTK("failed to configure PMB RDPPLL 0x7\n"); + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0x8, 0x80000002)) + PRINTK("failed to configure PMB RDPPLL 0x8\n"); + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0xb, 0x80208010)) + PRINTK("failed to configure PMB RDPPLL 0xb\n"); + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, 0xc, 0x81008020)) + PRINTK("failed to configure PMB RDPPLL 0xc\n"); + PRINTK + ("%s:setting up RDP PLL to run at reduced speed of 200/100 MHz\n", + __func__); + } +#endif + + error = ReadBPCMRegister(PMB_ADDR_RDPPLL, PLLBPCMRegOffset(resets), + (uint32_t *) & bpcmResReg); + if (error) + PRINTK("Failed to ReadBPCMRegister RDPPLL block at word offset " + "of 0x%02x\n", (unsigned int)PLLBPCMRegOffset(resets)); + + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, PLLBPCMRegOffset(resets), + (bpcmResReg | (1 << 0)))) + PRINTK("failed to configure PMB RDPPLL of 0x%02x\n", + (unsigned int)PLLBPCMRegOffset(resets)); + + do { + error = ReadBPCMRegister(PMB_ADDR_RDPPLL, + PLLBPCMRegOffset(stat), + (uint32_t *) & bpcmResReg); + if (error) + PRINTK("Failed to ReadBPCMRegister RDPPLL block " + "0x%02x\n", + (unsigned int)PLLBPCMRegOffset(stat)); + } while (!(bpcmResReg & 0x80000000)); + + error = ReadBPCMRegister(PMB_ADDR_RDPPLL, PLLBPCMRegOffset(resets), + (uint32_t *) & bpcmResReg); + if (error) + PRINTK("Failed to ReadBPCMRegister RDPPLL block at word offset " + "of 0x%02x\n", (unsigned int)PLLBPCMRegOffset(resets)); + + if (WriteBPCMRegister(PMB_ADDR_RDPPLL, PLLBPCMRegOffset(resets), + (bpcmResReg | (1 << 1)))) + PRINTK("failed to configure PMB RDPPLL of 0x%02x\n", + (unsigned int)PLLBPCMRegOffset(resets)); + return error; +} + +int pmc_rdp_power_up(void) +{ +#if defined(PMB_ADDR_RDP) + return PowerOnDevice(PMB_ADDR_RDP); +#endif +#if 0 + int i, ret; + BPCM_PWR_ZONE_N_CONTROL pwr_zone_ctrl; + + for (i = 0; i < PMB_ZONES_RDP; i++) { + ret = ReadZoneRegister(PMB_ADDR_RDP, i, 0, + &pwr_zone_ctrl.Reg32); + if (ret) + return; + pwr_zone_ctrl.Bits.pwr_dn_req = 0; + pwr_zone_ctrl.Bits.dpg_ctl_en = 1; + pwr_zone_ctrl.Bits.pwr_up_req = 1; + pwr_zone_ctrl.Bits.mem_pwr_ctl_en = 1; + pwr_zone_ctrl.Bits.blk_reset_assert = 1; + + ret = WriteZoneRegister(PMB_ADDR_RDP, i, 0, + pwr_zone_ctrl.Reg32); + if (ret) + return; + } +#endif +} + +int pmc_rdp_power_down(void) +{ +#if defined(PMB_ADDR_RDP) + return PowerOffDevice(PMB_ADDR_RDP, 0); +#endif +#if 0 + int i, ret; + BPCM_PWR_ZONE_N_CONTROL pwr_zone_ctrl; + + for (i = 0; i < PMB_ZONES_RDP; i++) { + ret = ReadZoneRegister(PMB_ADDR_RDP, i, 0, + &pwr_zone_ctrl.Reg32); + if (ret) + return; + pwr_zone_ctrl.Bits.pwr_dn_req = 1; + pwr_zone_ctrl.Bits.dpg_ctl_en = 0; + pwr_zone_ctrl.Bits.pwr_up_req = 0; + pwr_zone_ctrl.Bits.mem_pwr_ctl_en = 0; + pwr_zone_ctrl.Bits.blk_reset_assert = 0; + + ret = WriteZoneRegister(PMB_ADDR_RDP, i, 0, + pwr_zone_ctrl.Reg32); + if (ret) + return; + } +#endif +} + +int pmc_rdp_init(void) +{ + int ret; + + pmc_rdp_start_pll_with_clk(0); + +#if defined(PMB_ADDR_RDP) + /* put all RDP modules in reset state */ + ret = WriteBPCMRegister(PMB_ADDR_RDP, BPCMRegOffset(sr_control), 0); + if (ret) + PRINTK("%s:%d:failed to configure PMB RDP at word offset of " + "0x%02x\n", __func__, __LINE__, + (unsigned int)BPCMRegOffset(sr_control)); +#endif + + ret = pmc_rdp_power_down(); + if (ret) + PRINTK("%s:%d:initialization fails! ret = %d\n", __func__, + __LINE__, ret); + + ret = pmc_rdp_power_up(); + if (ret) + PRINTK("%s:%d:initialization fails! ret = %d\n", __func__, + __LINE__, ret); + +#if defined(PMB_ADDR_RDP) + /* we will just put all the modules off reset */ + ret = WriteBPCMRegister(PMB_ADDR_RDP, BPCMRegOffset(sr_control), + 0xffffffff); + if (ret) + PRINTK("%s:%d:failed to configure PMB RDP at word offset of " + "0x%02x\n", __func__, __LINE__, + (unsigned int)BPCMRegOffset(sr_control)); +#endif + + return ret; +} + +int pmc_rdp_shut_down(void) +{ +#if defined(PMB_ADDR_RDP) + int ret; + + /* put all RDP modules in reset state */ + ret = WriteBPCMRegister(PMB_ADDR_RDP, BPCMRegOffset(sr_control), 0); + if (ret) + PRINTK("%s:%d:failed to configure PMB RDP at word offset of " + "0x%02x\n", __func__, __LINE__, + (unsigned int)BPCMRegOffset(sr_control)); + return ret; +#else + return -1; +#endif +} diff --git a/arch/arm/mach-bcmbca/pmc/pmc_rdp.h b/arch/arm/mach-bcmbca/pmc/pmc_rdp.h new file mode 100755 index 0000000000..b523bec860 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_rdp.h @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef PMC_RDP_H +#define PMC_RDP_H + +int pmc_rdp_power_up(void); +int pmc_rdp_power_down(void); +int pmc_rdp_init(void); +int pmc_rdp_shut_down(void); + +#endif /* #ifndef PMC_RDP_H */ diff --git a/arch/arm/mach-bcmbca/pmc/pmc_romdata_63158.h b/arch/arm/mach-bcmbca/pmc/pmc_romdata_63158.h new file mode 100644 index 0000000000..847895427f --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_romdata_63158.h @@ -0,0 +1,1671 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2017 Broadcom + */ +/* + * * + * */ + + +#ifndef PMC_ROMDATA_63158_H +#define PMC_ROMDATA_63158_H +const unsigned char pmcappdata[] = { + 0x3c, 0x08, 0x00, 0x40, 0x40, 0x88, 0x60, 0x00, 0x40, 0x80, 0x68, 0x00, + 0x40, 0x80, 0x48, 0x00, 0x40, 0x80, 0x58, 0x00, 0x40, 0x80, 0x70, 0x00, + 0x40, 0x80, 0xf0, 0x00, 0x40, 0x08, 0x80, 0x00, 0x3c, 0x01, 0x00, 0x80, + 0x01, 0x01, 0x40, 0x24, 0x11, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x0a, 0x10, 0x00, 0x40, 0x8a, 0xd0, 0x00, 0x24, 0x08, 0x00, 0x80, + 0x40, 0x88, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x09, 0x80, 0x00, + 0xbd, 0x29, 0x00, 0x00, 0x40, 0x80, 0xd0, 0x00, 0x40, 0x08, 0x80, 0x00, + 0x24, 0x01, 0xff, 0xf8, 0x01, 0x01, 0x40, 0x24, 0x40, 0x88, 0x80, 0x00, + 0x40, 0x08, 0x80, 0x01, 0x04, 0x11, 0x00, 0x2a, 0x00, 0x08, 0x24, 0x02, + 0x00, 0x40, 0xa0, 0x21, 0x00, 0x60, 0xb0, 0x21, 0x04, 0x11, 0x00, 0x26, + 0x00, 0x08, 0x21, 0xc2, 0x00, 0x40, 0xa8, 0x21, 0x00, 0x60, 0xb8, 0x21, + 0x3c, 0x0c, 0x80, 0x00, 0x40, 0x80, 0xe0, 0x00, 0x01, 0x94, 0x48, 0x21, + 0x26, 0xca, 0xff, 0xff, 0x01, 0x40, 0x50, 0x27, 0x01, 0x8a, 0x40, 0x24, + 0x25, 0x29, 0xff, 0xff, 0x01, 0x2a, 0x48, 0x24, 0xbd, 0x08, 0x00, 0x00, + 0x15, 0x09, 0xff, 0xfe, 0x01, 0x16, 0x40, 0x21, 0x01, 0x95, 0x48, 0x21, + 0x26, 0xea, 0xff, 0xff, 0x01, 0x40, 0x50, 0x27, 0x01, 0x8a, 0x40, 0x24, + 0x25, 0x29, 0xff, 0xff, 0x01, 0x2a, 0x48, 0x24, 0xbd, 0x09, 0x00, 0x00, + 0x15, 0x09, 0xff, 0xfe, 0x01, 0x17, 0x40, 0x21, 0x3c, 0x1c, 0x80, 0x00, + 0x27, 0x9c, 0x70, 0x00, 0x23, 0x9d, 0x10, 0x00, 0x03, 0x80, 0x40, 0x21, + 0x21, 0x09, 0x0a, 0xc8, 0x01, 0x09, 0x50, 0x2b, 0x11, 0x40, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x10, 0x00, 0xff, 0xfb, + 0x25, 0x08, 0x00, 0x04, 0x04, 0x11, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0xff, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x24, 0x02, 0x00, 0x40, + 0x30, 0x83, 0x01, 0xc0, 0x00, 0x03, 0x19, 0x82, 0x00, 0x62, 0x10, 0x04, + 0x30, 0x83, 0x00, 0x38, 0x00, 0x03, 0x18, 0xc2, 0x10, 0x60, 0x00, 0x09, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x01, 0xdf, 0xff, 0x34, 0x21, 0xff, 0xff, + 0x03, 0xe1, 0xf8, 0x24, 0x24, 0x0a, 0x00, 0x02, 0x00, 0x6a, 0x18, 0x04, + 0x30, 0x8a, 0x00, 0x07, 0x21, 0x4a, 0x00, 0x01, 0x71, 0x42, 0x10, 0x02, + 0x03, 0xe0, 0x00, 0x08, 0x70, 0x43, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x60, 0x60, 0x00, + 0x10, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x24, 0x03, 0x0e, 0xb0, + 0x7c, 0x83, 0x00, 0x04, 0x3c, 0x02, 0xb6, 0x08, 0xac, 0x43, 0x01, 0x20, + 0xac, 0x43, 0x03, 0x20, 0x03, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x1a, 0x40, 0x3c, 0x02, 0xb6, 0x08, 0x00, 0x43, 0x10, 0x21, + 0x00, 0x04, 0x28, 0x40, 0xac, 0x40, 0x01, 0x08, 0x27, 0x83, 0x00, 0x40, + 0x3c, 0x02, 0xb6, 0x00, 0x00, 0x65, 0x18, 0x21, 0x24, 0x42, 0x10, 0x00, + 0x24, 0x05, 0x00, 0x01, 0xa4, 0x65, 0x00, 0x00, 0x00, 0x44, 0x20, 0x21, + 0x90, 0x82, 0x00, 0x28, 0x24, 0x03, 0x00, 0x01, 0x7c, 0x62, 0x39, 0xc4, + 0xa0, 0x82, 0x00, 0x28, 0x03, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x02, 0x9f, 0xc0, 0x24, 0x42, 0x4d, 0x94, 0x8c, 0x4a, 0x00, 0x0c, + 0x27, 0xbd, 0xff, 0x70, 0x7c, 0x0a, 0x50, 0xa0, 0x8f, 0x89, 0x00, 0x54, + 0x8f, 0x88, 0x00, 0x50, 0x8f, 0x83, 0x00, 0x48, 0x8f, 0x87, 0x00, 0x4c, + 0x00, 0x2a, 0x54, 0x02, 0xaf, 0xbf, 0x00, 0x8c, 0xaf, 0xb0, 0x00, 0x68, + 0xaf, 0xbe, 0x00, 0x88, 0xaf, 0xb7, 0x00, 0x84, 0xaf, 0xb6, 0x00, 0x80, + 0xaf, 0xb5, 0x00, 0x7c, 0xaf, 0xb4, 0x00, 0x78, 0xaf, 0xb3, 0x00, 0x74, + 0xaf, 0xb2, 0x00, 0x70, 0xaf, 0xb1, 0x00, 0x6c, 0x00, 0x00, 0x60, 0x21, + 0x00, 0x00, 0x28, 0x21, 0x00, 0x00, 0x68, 0x21, 0x00, 0x00, 0x70, 0x21, + 0x00, 0x00, 0x58, 0x21, 0x24, 0x0f, 0x00, 0x02, 0x24, 0x18, 0x00, 0x03, + 0x3c, 0x19, 0xb6, 0x00, 0x3c, 0x1f, 0xb0, 0x00, 0x24, 0x10, 0x00, 0x04, + 0x11, 0x4b, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x44, 0x00, 0x10, + 0x7c, 0x04, 0x20, 0xa0, 0x00, 0x24, 0x24, 0x02, 0x10, 0x8f, 0x00, 0x13, + 0x2c, 0x91, 0x00, 0x03, 0x12, 0x20, 0x00, 0x08, 0x24, 0x11, 0x00, 0x01, + 0x54, 0x91, 0x00, 0x1e, 0x25, 0x6b, 0x00, 0x01, 0x8c, 0x49, 0x00, 0x14, + 0x24, 0x0e, 0x00, 0x01, 0x7c, 0x09, 0x48, 0xa0, 0x10, 0x00, 0x00, 0x18, + 0x00, 0x29, 0x4c, 0x02, 0x50, 0x98, 0x00, 0x0d, 0x8c, 0x43, 0x00, 0x14, + 0x54, 0x90, 0x00, 0x15, 0x25, 0x6b, 0x00, 0x01, 0x8c, 0x47, 0x00, 0x14, + 0x24, 0x0c, 0x00, 0x01, 0x7c, 0x07, 0x38, 0xa0, 0x10, 0x00, 0x00, 0x0f, + 0x00, 0x27, 0x3c, 0x02, 0x8c, 0x48, 0x00, 0x14, 0x24, 0x0d, 0x00, 0x01, + 0x7c, 0x08, 0x40, 0xa0, 0x10, 0x00, 0x00, 0x0a, 0x00, 0x28, 0x44, 0x02, + 0x7c, 0x03, 0x28, 0xa0, 0x8f, 0x23, 0x10, 0x74, 0x8f, 0x24, 0x10, 0x70, + 0x00, 0x25, 0x2c, 0x02, 0x00, 0x83, 0x18, 0x23, 0x00, 0x65, 0x18, 0x21, + 0x7c, 0x63, 0xd8, 0x00, 0x00, 0x7f, 0x18, 0x25, 0x24, 0x05, 0x00, 0x01, + 0x25, 0x6b, 0x00, 0x01, 0x10, 0x00, 0xff, 0xd7, 0x24, 0x42, 0x00, 0x08, + 0x55, 0xc0, 0x00, 0x01, 0xaf, 0x89, 0x00, 0x54, 0x55, 0xa0, 0x00, 0x01, + 0xaf, 0x88, 0x00, 0x50, 0x54, 0xa0, 0x00, 0x01, 0xaf, 0x83, 0x00, 0x48, + 0x55, 0x80, 0x00, 0x01, 0xaf, 0x87, 0x00, 0x4c, 0x8f, 0x82, 0x00, 0x4c, + 0x10, 0x40, 0x00, 0x07, 0x8f, 0x82, 0x00, 0x48, 0x10, 0x40, 0x00, 0x05, + 0x3c, 0x02, 0x80, 0x00, 0xac, 0x40, 0x70, 0x00, 0x24, 0x42, 0x70, 0x00, + 0xac, 0x40, 0x00, 0x04, 0xaf, 0x80, 0x00, 0x58, 0x3c, 0x02, 0xb6, 0x00, + 0xac, 0x40, 0x10, 0x84, 0xac, 0x40, 0x10, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x02, 0x80, 0x00, 0x24, 0x42, 0x70, 0x64, 0x3c, 0x04, 0x80, 0x00, + 0xaf, 0xa2, 0x00, 0x50, 0x24, 0x05, 0x00, 0x05, 0x24, 0x84, 0x7a, 0xc8, + 0x8c, 0x43, 0x00, 0x00, 0x24, 0x42, 0x00, 0x1c, 0x7c, 0x03, 0xc5, 0x44, + 0x7c, 0x03, 0x8a, 0x84, 0x7c, 0xa3, 0xa4, 0x84, 0x14, 0x44, 0xff, 0xfa, + 0xac, 0x43, 0xff, 0xe4, 0x3c, 0x02, 0xb6, 0x00, 0x24, 0x42, 0x10, 0x00, + 0x8c, 0x42, 0x00, 0x34, 0x30, 0x42, 0x00, 0x80, 0x10, 0x40, 0x00, 0x07, + 0x24, 0x02, 0xff, 0xff, 0x24, 0x02, 0x10, 0x00, 0xa7, 0x82, 0x00, 0x5e, + 0x24, 0x02, 0x00, 0x04, 0xa7, 0x82, 0x00, 0x5c, 0x10, 0x00, 0x00, 0x04, + 0xa3, 0x82, 0x00, 0x63, 0xa7, 0x82, 0x00, 0x5e, 0xa7, 0x80, 0x00, 0x5c, + 0xa3, 0x80, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x03, 0xb6, 0x00, + 0x3c, 0x04, 0x00, 0x80, 0xac, 0x64, 0x18, 0x00, 0x24, 0x04, 0x00, 0xff, + 0xac, 0x64, 0x18, 0x34, 0x00, 0x00, 0x48, 0x21, 0x00, 0x00, 0x40, 0x21, + 0x00, 0x00, 0x28, 0x21, 0x00, 0x00, 0x10, 0x21, 0x24, 0x63, 0x1a, 0x00, + 0x24, 0x0c, 0x00, 0x03, 0x24, 0x0b, 0x00, 0x10, 0x24, 0x07, 0x00, 0x04, + 0x24, 0x0a, 0x00, 0x80, 0x7d, 0x66, 0xfc, 0x04, 0x00, 0x43, 0x20, 0x21, + 0x7c, 0x46, 0x78, 0x04, 0x7d, 0x89, 0x08, 0x04, 0x7c, 0xe8, 0xec, 0x04, + 0x7c, 0xe5, 0x68, 0x04, 0x24, 0x42, 0x00, 0x10, 0xac, 0x89, 0x00, 0x00, + 0xac, 0x86, 0x00, 0x04, 0xac, 0x88, 0x00, 0x08, 0xac, 0x85, 0x00, 0x0c, + 0x14, 0x4a, 0xff, 0xf5, 0x7d, 0x66, 0xfc, 0x04, 0x8f, 0xa4, 0x00, 0x50, + 0x00, 0x00, 0x18, 0x21, 0x24, 0x05, 0x00, 0x01, 0x24, 0x08, 0x00, 0x03, + 0x24, 0x06, 0x00, 0x18, 0x8c, 0x82, 0x00, 0x00, 0x24, 0x87, 0x00, 0x1c, + 0x7c, 0xa2, 0xc5, 0x44, 0x7c, 0x62, 0x8a, 0x84, 0x7d, 0x02, 0xa4, 0x84, + 0x7c, 0xa2, 0xf7, 0x84, 0x7c, 0xa2, 0xff, 0xc4, 0xac, 0x82, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x63, 0x00, 0x01, 0x14, 0x66, 0xff, 0xf5, + 0x00, 0xe0, 0x20, 0x21, 0x3c, 0x07, 0x80, 0x00, 0x3c, 0x0a, 0x05, 0xb0, + 0x3c, 0x0b, 0x00, 0x03, 0x24, 0xe7, 0x73, 0x04, 0x00, 0x00, 0x48, 0x21, + 0x25, 0x4a, 0x40, 0x06, 0x24, 0x08, 0x00, 0x01, 0x35, 0x6b, 0xfc, 0x00, + 0x00, 0x00, 0x18, 0x21, 0x31, 0x25, 0x00, 0xff, 0x3c, 0x0c, 0x40, 0x00, + 0x24, 0x06, 0x00, 0x02, 0x00, 0x6a, 0x20, 0x21, 0x3c, 0x02, 0x01, 0x00, + 0x00, 0x04, 0x21, 0x40, 0x7c, 0xa2, 0x9b, 0x04, 0xac, 0x82, 0x00, 0x00, + 0x7d, 0x02, 0xff, 0xc4, 0xac, 0x82, 0x00, 0x00, 0x8c, 0x82, 0x00, 0x00, + 0x04, 0x40, 0xff, 0xfe, 0x00, 0x4c, 0x10, 0x24, 0x14, 0x40, 0x00, 0x4c, + 0x97, 0x82, 0x00, 0x5e, 0x00, 0x00, 0x30, 0x21, 0x7c, 0x46, 0xfc, 0x04, + 0x7d, 0x06, 0x39, 0xc4, 0x7d, 0x06, 0x31, 0x84, 0x7d, 0x06, 0x18, 0xc4, + 0x7d, 0x06, 0x10, 0x84, 0x7d, 0x06, 0x08, 0x44, 0x2d, 0x22, 0x00, 0x20, + 0x24, 0xec, 0x00, 0x1c, 0x7d, 0x06, 0x00, 0x04, 0x14, 0x40, 0x00, 0x03, + 0x24, 0x04, 0x00, 0x01, 0x39, 0x24, 0x00, 0x27, 0x2c, 0x84, 0x00, 0x01, + 0x8c, 0xe2, 0x00, 0x00, 0x7c, 0x82, 0xc5, 0x44, 0x7c, 0xa2, 0x8a, 0x84, + 0x7c, 0x62, 0xa4, 0x84, 0x7d, 0x02, 0xf7, 0x84, 0x7d, 0x02, 0xff, 0xc4, + 0xac, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x05, 0x00, 0x04, + 0x0f, 0xf0, 0x10, 0x57, 0x00, 0xe0, 0x20, 0x21, 0x93, 0x83, 0x00, 0x62, + 0x54, 0x60, 0x00, 0x2c, 0x8c, 0xe2, 0x00, 0x00, 0x8c, 0xe3, 0x00, 0x00, + 0x30, 0x44, 0x00, 0xff, 0x7c, 0x83, 0x48, 0x04, 0x7c, 0x42, 0x1c, 0x00, + 0x7c, 0x43, 0xe6, 0x44, 0x04, 0x61, 0x00, 0x11, 0xac, 0xe3, 0x00, 0x00, + 0x7c, 0x62, 0x3a, 0x80, 0x24, 0x42, 0xff, 0xe0, 0x30, 0x42, 0x00, 0xff, + 0x2c, 0x42, 0x00, 0x05, 0x14, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x68, 0x21, + 0x00, 0x6b, 0x10, 0x24, 0x34, 0x04, 0x98, 0x00, 0x10, 0x44, 0x00, 0x08, + 0x3c, 0x02, 0x16, 0x00, 0x00, 0x62, 0x18, 0x24, 0x54, 0x60, 0x00, 0x06, + 0x8c, 0xe2, 0x00, 0x00, 0x24, 0x05, 0x00, 0x10, 0x0f, 0xf0, 0x04, 0x89, + 0x00, 0xe0, 0x20, 0x21, 0x00, 0x00, 0x68, 0x21, 0x8c, 0xe2, 0x00, 0x00, + 0x30, 0x42, 0x03, 0xff, 0x01, 0xa2, 0x10, 0x2b, 0x10, 0x40, 0x00, 0x11, + 0x25, 0xae, 0x00, 0x04, 0x00, 0x0e, 0x71, 0x00, 0x01, 0xc0, 0x28, 0x21, + 0x0f, 0xf0, 0x10, 0x57, 0x00, 0xe0, 0x20, 0x21, 0x93, 0x83, 0x00, 0x62, + 0x54, 0x60, 0xff, 0xf5, 0x25, 0xad, 0x00, 0x01, 0x7d, 0x02, 0x63, 0x04, + 0x00, 0x40, 0x30, 0x21, 0x01, 0xc0, 0x28, 0x21, 0x0f, 0xf0, 0x04, 0x89, + 0x00, 0xe0, 0x20, 0x21, 0x10, 0x00, 0xff, 0xee, 0x25, 0xad, 0x00, 0x01, + 0x7c, 0x02, 0xff, 0xc4, 0xac, 0xe2, 0x00, 0x00, 0x10, 0x00, 0x00, 0x05, + 0x01, 0x80, 0x38, 0x21, 0x00, 0x00, 0x00, 0x00, 0x24, 0x63, 0x00, 0x01, + 0x14, 0x66, 0xff, 0xa7, 0x00, 0x6a, 0x20, 0x21, 0x25, 0x29, 0x00, 0x01, + 0x24, 0x02, 0x00, 0x2e, 0x15, 0x22, 0xff, 0x9f, 0x00, 0x00, 0x18, 0x21, + 0x8c, 0xe2, 0x00, 0x00, 0x24, 0x03, 0x00, 0x05, 0x7c, 0x02, 0xc5, 0x44, + 0x7c, 0x02, 0x8a, 0x84, 0x7c, 0x62, 0xa4, 0x84, 0xac, 0xe2, 0x00, 0x00, + 0x97, 0x84, 0x00, 0x5e, 0x00, 0x00, 0x18, 0x21, 0x3c, 0x0b, 0xb6, 0x08, + 0x7c, 0x83, 0x78, 0x04, 0x24, 0x05, 0x5c, 0x01, 0xad, 0x65, 0x02, 0x94, + 0x00, 0x00, 0x20, 0x21, 0xad, 0x63, 0x02, 0x84, 0x0f, 0xf0, 0x00, 0xe3, + 0x24, 0x0d, 0x04, 0x00, 0x93, 0x82, 0x00, 0x63, 0x24, 0x03, 0x00, 0x0a, + 0x00, 0x00, 0x70, 0x21, 0x00, 0x62, 0x68, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x0a, 0x18, 0x00, 0x3c, 0x18, 0xb6, 0x08, 0xad, 0x60, 0x01, 0x0c, + 0x00, 0x00, 0x60, 0x21, 0xad, 0x6a, 0x01, 0x08, 0x24, 0x10, 0x00, 0x06, + 0x25, 0x6b, 0x00, 0x50, 0x27, 0x19, 0x00, 0x5c, 0x7e, 0x0a, 0x62, 0x84, + 0x7d, 0x8a, 0x49, 0xc4, 0xaf, 0x0a, 0x01, 0x08, 0x01, 0xa0, 0x30, 0x21, + 0x00, 0x00, 0x28, 0x21, 0x00, 0x00, 0x20, 0x21, 0x0f, 0xf0, 0x10, 0x0a, + 0x3c, 0x09, 0xb6, 0x08, 0x25, 0x83, 0x00, 0x01, 0x7c, 0x6a, 0x49, 0xc4, + 0xaf, 0x0a, 0x01, 0x08, 0x01, 0xa0, 0x30, 0x21, 0x00, 0x00, 0x28, 0x21, + 0x00, 0x00, 0x20, 0x21, 0x0f, 0xf0, 0x10, 0x0a, 0x00, 0x02, 0x7c, 0x00, + 0x25, 0x6b, 0x00, 0x04, 0x01, 0xe2, 0x10, 0x25, 0x25, 0x8c, 0x00, 0x02, + 0xad, 0x62, 0xff, 0xfc, 0x15, 0x79, 0xff, 0xeb, 0x31, 0x8c, 0x00, 0x07, + 0x24, 0x02, 0x00, 0x06, 0x35, 0x4a, 0x03, 0x80, 0x7c, 0x4a, 0x62, 0x84, + 0x24, 0x02, 0x00, 0x07, 0x7c, 0x4a, 0x49, 0xc4, 0xad, 0x2a, 0x01, 0x08, + 0x0f, 0xf0, 0x0a, 0x6d, 0x24, 0x04, 0x00, 0x50, 0x01, 0xa0, 0x30, 0x21, + 0x00, 0x00, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0x0a, 0x00, 0x00, 0x20, 0x21, + 0x3c, 0x03, 0x00, 0x01, 0x00, 0x43, 0x10, 0x25, 0xad, 0x62, 0x00, 0x00, + 0x8f, 0x82, 0x00, 0x54, 0x10, 0x40, 0x00, 0x0a, 0x24, 0x03, 0xff, 0xff, + 0x24, 0x06, 0x00, 0x0b, 0xad, 0x26, 0x01, 0x00, 0x0f, 0xf0, 0x00, 0xea, + 0x00, 0x00, 0x20, 0x21, 0xad, 0x26, 0x03, 0x00, 0x0f, 0xf0, 0x00, 0xea, + 0x24, 0x04, 0x00, 0x01, 0x10, 0x00, 0x01, 0xdc, 0x00, 0x00, 0x00, 0x00, + 0x7c, 0x6e, 0x78, 0x04, 0x27, 0x82, 0x00, 0x1c, 0xad, 0x20, 0x02, 0x30, + 0x27, 0x8f, 0x00, 0x3c, 0xad, 0x20, 0x02, 0x34, 0x27, 0x8c, 0x00, 0x38, + 0xad, 0x20, 0x02, 0x38, 0xad, 0x2e, 0x02, 0x24, 0xad, 0x2e, 0x02, 0x28, + 0xad, 0x2e, 0x02, 0x2c, 0x27, 0x8e, 0x00, 0x2c, 0xaf, 0xa2, 0x00, 0x48, + 0x27, 0x82, 0x00, 0x18, 0x27, 0x99, 0x00, 0x28, 0x27, 0x98, 0x00, 0x24, + 0x27, 0xa4, 0x00, 0x28, 0x27, 0xab, 0x00, 0x30, 0x27, 0xa9, 0x00, 0x38, + 0x27, 0xa7, 0x00, 0x40, 0xaf, 0xa2, 0x00, 0x4c, 0x25, 0xd3, 0x00, 0x04, + 0x00, 0x40, 0x30, 0x21, 0x27, 0x88, 0x00, 0x1c, 0x01, 0x80, 0x50, 0x21, + 0x01, 0xe0, 0x68, 0x21, 0x01, 0xc0, 0x18, 0x21, 0x24, 0x1e, 0x00, 0x01, + 0x24, 0x17, 0x00, 0x32, 0x24, 0x16, 0x03, 0xcd, 0x24, 0x12, 0x03, 0x5c, + 0x24, 0x10, 0x1c, 0x00, 0x24, 0x05, 0x22, 0x60, 0x24, 0x11, 0x03, 0xfc, + 0x24, 0x15, 0x00, 0x5f, 0x24, 0x1f, 0x00, 0x4b, 0x24, 0x14, 0x00, 0x32, + 0xaf, 0xb2, 0x00, 0x28, 0xaf, 0xb2, 0x00, 0x2c, 0x8c, 0x82, 0x00, 0x00, + 0xaf, 0xb1, 0x00, 0x30, 0x72, 0x02, 0x10, 0x02, 0xaf, 0xb1, 0x00, 0x34, + 0x00, 0x45, 0x00, 0x1a, 0xaf, 0xb5, 0x00, 0x38, 0xaf, 0xbf, 0x00, 0x3c, + 0xaf, 0xbf, 0x00, 0x40, 0xaf, 0xb4, 0x00, 0x44, 0xa4, 0x7e, 0x00, 0x00, + 0x24, 0x63, 0x00, 0x02, 0xa7, 0x37, 0x00, 0x00, 0xa7, 0x16, 0x00, 0x00, + 0x27, 0x39, 0x00, 0x02, 0x27, 0x18, 0x00, 0x02, 0x24, 0x84, 0x00, 0x04, + 0x25, 0xad, 0x00, 0x02, 0x25, 0x6b, 0x00, 0x04, 0x25, 0x4a, 0x00, 0x02, + 0x25, 0x29, 0x00, 0x04, 0x25, 0x08, 0x00, 0x02, 0x24, 0xe7, 0x00, 0x04, + 0x24, 0xc6, 0x00, 0x02, 0x00, 0x00, 0x10, 0x12, 0xa5, 0xa2, 0xff, 0xfe, + 0x8d, 0x62, 0xff, 0xfc, 0x72, 0x02, 0x10, 0x02, 0x00, 0x45, 0x00, 0x1a, + 0x00, 0x00, 0x10, 0x12, 0xa5, 0x42, 0xff, 0xfe, 0x8d, 0x22, 0xff, 0xfc, + 0xa5, 0x02, 0xff, 0xfe, 0x8c, 0xe2, 0xff, 0xfc, 0x14, 0x73, 0xff, 0xdc, + 0xa4, 0xc2, 0xff, 0xfe, 0x27, 0x90, 0x00, 0x40, 0x3c, 0x12, 0x00, 0x5b, + 0x27, 0x91, 0x00, 0x20, 0x02, 0x00, 0xc0, 0x21, 0x00, 0x00, 0xc8, 0x21, + 0x00, 0x00, 0xf0, 0x21, 0x26, 0x52, 0x04, 0x00, 0x24, 0x14, 0x03, 0x70, + 0x24, 0x13, 0x04, 0x00, 0x24, 0x15, 0x05, 0x91, 0x24, 0x16, 0x03, 0xe8, + 0x03, 0xd2, 0x68, 0x21, 0x00, 0x0d, 0x6a, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x17, 0x10, 0x00, 0xad, 0xa0, 0x01, 0x0c, 0x00, 0x00, 0x28, 0x21, + 0xad, 0xb7, 0x01, 0x08, 0x24, 0x06, 0x00, 0x80, 0x0f, 0xf0, 0x10, 0x0a, + 0x03, 0xc0, 0x20, 0x21, 0x70, 0x54, 0x10, 0x02, 0x24, 0x03, 0x04, 0xaa, + 0x00, 0x53, 0x00, 0x1a, 0x00, 0x00, 0x10, 0x12, 0x02, 0xa2, 0x10, 0x23, + 0x70, 0x56, 0x10, 0x02, 0x00, 0x43, 0x00, 0x1a, 0x93, 0x83, 0x00, 0x63, + 0x00, 0x00, 0x10, 0x12, 0x7c, 0x02, 0x2e, 0x20, 0x14, 0x60, 0x00, 0x06, + 0xa6, 0x25, 0x00, 0x00, 0x24, 0x42, 0xfe, 0x49, 0x30, 0x42, 0xff, 0xff, + 0x2c, 0x42, 0x01, 0xa4, 0x10, 0x40, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xf0, 0x11, 0x58, 0x03, 0xc0, 0x20, 0x21, 0x24, 0x03, 0x00, 0x01, + 0x7c, 0x77, 0x62, 0x84, 0x02, 0xe0, 0x10, 0x21, 0x7c, 0x62, 0x62, 0x84, + 0xad, 0xa2, 0x01, 0x08, 0x0f, 0xf0, 0x0a, 0x6d, 0x24, 0x04, 0x00, 0x1e, + 0x24, 0x02, 0x00, 0x03, 0x7c, 0x57, 0x62, 0x84, 0x7c, 0x57, 0x62, 0x84, + 0xad, 0xb7, 0x01, 0x08, 0x0f, 0xf0, 0x0a, 0x6d, 0x24, 0x04, 0x00, 0x1e, + 0x10, 0x00, 0x00, 0x05, 0x97, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x02, 0x00, 0x01, 0xa7, 0x02, 0x00, 0x00, 0x97, 0x02, 0x00, 0x00, + 0x50, 0x40, 0x00, 0x05, 0x27, 0x39, 0x00, 0x01, 0x0f, 0xf0, 0x00, 0xea, + 0x03, 0xc0, 0x20, 0x21, 0x10, 0x00, 0x00, 0x02, 0x27, 0xde, 0x00, 0x01, + 0x27, 0xde, 0x00, 0x01, 0x24, 0x02, 0x00, 0x02, 0x26, 0x31, 0x00, 0x02, + 0x17, 0xc2, 0xff, 0xc6, 0x27, 0x18, 0x00, 0x02, 0x24, 0x02, 0x00, 0x01, + 0x13, 0x22, 0x00, 0x0b, 0x3c, 0x17, 0x9f, 0xc0, 0x3c, 0x16, 0x9f, 0xc0, + 0x27, 0x94, 0x00, 0x14, 0x27, 0x93, 0x00, 0x0c, 0x27, 0x92, 0x00, 0x40, + 0x00, 0x00, 0x88, 0x21, 0x00, 0x00, 0xc0, 0x21, 0x26, 0xf7, 0x2e, 0xc8, + 0x26, 0xd6, 0x2f, 0x0c, 0x10, 0x00, 0x00, 0x29, 0x3c, 0x15, 0x9f, 0xc0, + 0x27, 0x85, 0x00, 0x18, 0x27, 0x86, 0x00, 0x1c, 0x27, 0x87, 0x00, 0x3c, + 0x27, 0x88, 0x00, 0x40, 0x00, 0x00, 0x20, 0x21, 0x24, 0x0a, 0x02, 0xbc, + 0x24, 0x0b, 0x03, 0x3e, 0x24, 0x0d, 0x00, 0x5f, 0x24, 0x18, 0x00, 0x4b, + 0x3c, 0x19, 0x00, 0x1c, 0x3c, 0x1f, 0x00, 0x14, 0x24, 0x09, 0x00, 0x02, + 0x95, 0x02, 0x00, 0x00, 0x50, 0x40, 0x00, 0x0e, 0xa4, 0xea, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8f, 0xa3, 0x00, 0x50, 0x38, 0x92, 0x00, 0x01, + 0x8c, 0x62, 0x00, 0x00, 0x03, 0x22, 0x88, 0x24, 0x12, 0x3f, 0x00, 0x0a, + 0x7c, 0x51, 0x1d, 0x40, 0x56, 0x24, 0xff, 0xfb, 0x24, 0x63, 0x00, 0x1c, + 0x7e, 0x42, 0xc5, 0x44, 0xac, 0x62, 0x00, 0x00, 0x10, 0x00, 0xff, 0xf7, + 0x24, 0x63, 0x00, 0x1c, 0xa5, 0x8b, 0x00, 0x00, 0xa4, 0xcd, 0x00, 0x00, + 0xa4, 0xb8, 0x00, 0x00, 0x24, 0x84, 0x00, 0x01, 0x25, 0x08, 0x00, 0x02, + 0x24, 0xe7, 0x00, 0x02, 0x25, 0x8c, 0x00, 0x02, 0x24, 0xc6, 0x00, 0x02, + 0x14, 0x89, 0xff, 0xe7, 0x24, 0xa5, 0x00, 0x02, 0x10, 0x00, 0xff, 0xcf, + 0x3c, 0x17, 0x9f, 0xc0, 0x97, 0x82, 0x00, 0x5e, 0x97, 0x9e, 0x00, 0x5c, + 0xaf, 0xa2, 0x00, 0x54, 0x96, 0x42, 0x00, 0x00, 0xaf, 0xa0, 0x00, 0x20, + 0xaf, 0xa0, 0x00, 0x24, 0xaf, 0xa0, 0x00, 0x18, 0x14, 0x40, 0x00, 0xf0, + 0xaf, 0xa0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x5b, + 0x24, 0x42, 0x04, 0x00, 0x03, 0x02, 0x10, 0x21, 0x00, 0x02, 0x12, 0x40, + 0x94, 0x59, 0x01, 0x16, 0x03, 0x00, 0x20, 0x21, 0x0f, 0xf0, 0x10, 0x54, + 0x33, 0x39, 0xff, 0xff, 0x00, 0x40, 0x68, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x85, 0xc3, 0x00, 0x00, 0x03, 0x00, 0x20, 0x21, 0x00, 0x03, 0x19, 0x80, + 0x03, 0x23, 0x30, 0x23, 0x00, 0xc0, 0x28, 0x21, 0xaf, 0xa3, 0x00, 0x5c, + 0x0f, 0xf0, 0x11, 0x58, 0xaf, 0xa6, 0x00, 0x58, 0x0f, 0xf0, 0x10, 0x54, + 0x03, 0x00, 0x20, 0x21, 0x00, 0x40, 0x60, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x8f, 0xa6, 0x00, 0x58, 0xaf, 0xa2, 0x00, 0x14, 0xaf, 0xa6, 0x00, 0x10, + 0x02, 0xe0, 0x20, 0x21, 0x01, 0xa0, 0x38, 0x21, 0x03, 0x20, 0x30, 0x21, + 0x0f, 0xf0, 0x10, 0xbe, 0x03, 0x00, 0x28, 0x21, 0x01, 0xac, 0x10, 0x23, + 0x28, 0x44, 0x00, 0x08, 0x10, 0x80, 0x00, 0x05, 0x8f, 0xa3, 0x00, 0x5c, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x02, 0x00, 0x01, 0x10, 0x00, 0x00, 0xc9, + 0xa6, 0x42, 0x00, 0x00, 0x24, 0x0c, 0x27, 0x10, 0x70, 0x6c, 0x18, 0x02, + 0x24, 0x07, 0xd8, 0xf0, 0x00, 0x62, 0x00, 0x1a, 0x24, 0x03, 0x4e, 0x20, + 0x00, 0x00, 0x10, 0x12, 0x24, 0x46, 0x23, 0x28, 0x00, 0xc3, 0x00, 0x1a, + 0x95, 0xe3, 0x00, 0x00, 0xaf, 0xa2, 0x00, 0x58, 0x01, 0xa3, 0x18, 0x23, + 0x00, 0x00, 0x30, 0x12, 0x70, 0x62, 0x18, 0x02, 0x30, 0xc5, 0xff, 0xff, + 0x00, 0x67, 0x00, 0x1a, 0x27, 0x83, 0x00, 0x28, 0x00, 0x71, 0x18, 0x21, + 0xa5, 0xc6, 0x00, 0x00, 0xaf, 0xa6, 0x00, 0x64, 0x00, 0x00, 0x38, 0x12, + 0x03, 0x27, 0x38, 0x21, 0x00, 0xe5, 0x38, 0x23, 0x7c, 0x07, 0x3e, 0x20, + 0xa4, 0x67, 0x00, 0x00, 0x27, 0x83, 0x00, 0x38, 0x00, 0x71, 0x18, 0x21, + 0x94, 0x64, 0x00, 0x00, 0xaf, 0xa7, 0x00, 0x60, 0x00, 0x8d, 0x20, 0x23, + 0x70, 0x82, 0x20, 0x02, 0x00, 0x8c, 0x00, 0x1a, 0x00, 0x00, 0x20, 0x12, + 0x00, 0xa4, 0x20, 0x21, 0x03, 0x24, 0x18, 0x21, 0x27, 0x84, 0x00, 0x24, + 0x7c, 0x03, 0x1e, 0x20, 0x00, 0x91, 0x20, 0x21, 0xa4, 0x83, 0x00, 0x00, + 0x24, 0x04, 0x03, 0x32, 0x00, 0x8d, 0x68, 0x23, 0x71, 0xa2, 0x68, 0x02, + 0x03, 0x00, 0x20, 0x21, 0x01, 0xac, 0x00, 0x1a, 0xaf, 0xa3, 0x00, 0x5c, + 0x00, 0x00, 0x60, 0x12, 0x01, 0x99, 0x60, 0x21, 0x0f, 0xf0, 0x11, 0x58, + 0x01, 0x80, 0x28, 0x21, 0x8f, 0xa2, 0x00, 0x58, 0x8f, 0xa3, 0x00, 0x5c, + 0x8f, 0xa7, 0x00, 0x60, 0x8f, 0xa6, 0x00, 0x64, 0xaf, 0xa2, 0x00, 0x14, + 0xaf, 0xa3, 0x00, 0x10, 0x03, 0x00, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0xbe, + 0x02, 0xc0, 0x20, 0x21, 0x0f, 0xf0, 0x10, 0x54, 0x03, 0x00, 0x20, 0x21, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x0d, 0x10, 0x00, 0x24, 0x42, 0xfc, 0xce, + 0x28, 0x43, 0x00, 0x05, 0x14, 0x60, 0x00, 0x03, 0x28, 0x42, 0xff, 0xfc, + 0x10, 0x00, 0x00, 0x04, 0x25, 0x8c, 0xff, 0xff, 0x10, 0x40, 0x00, 0xa8, + 0x00, 0x00, 0x00, 0x00, 0x25, 0x8c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x20, 0x21, 0x0f, 0xf0, 0x11, 0x58, 0x01, 0x80, 0x28, 0x21, + 0x0f, 0xf0, 0x10, 0x54, 0x03, 0x00, 0x20, 0x21, 0x25, 0xad, 0xff, 0xff, + 0x15, 0xa0, 0xff, 0xf0, 0x24, 0x42, 0xfc, 0xce, 0x3c, 0x02, 0xb6, 0x00, + 0x90, 0x43, 0x10, 0x28, 0x24, 0x04, 0x00, 0x06, 0x7c, 0x83, 0x10, 0x04, + 0xa0, 0x43, 0x10, 0x28, 0x90, 0x43, 0x10, 0x28, 0x7c, 0x83, 0x10, 0x04, + 0xa0, 0x43, 0x10, 0x28, 0x10, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x04, 0x00, 0xa1, 0x24, 0xa9, 0x00, 0x10, 0x24, 0xa5, 0x00, 0x1c, + 0x8c, 0xa3, 0x00, 0x00, 0x00, 0x7f, 0x58, 0x24, 0x55, 0x6d, 0xff, 0xfa, + 0x7c, 0x64, 0x1d, 0x40, 0x8f, 0xa2, 0x00, 0x58, 0x24, 0x03, 0x03, 0xe8, + 0x00, 0x43, 0x00, 0x1a, 0x00, 0x00, 0x38, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x05, 0xff, 0xf4, 0x24, 0xa5, 0x4f, 0x6c, 0x70, 0xe5, 0x68, 0x02, + 0x8f, 0xac, 0x00, 0x18, 0x8f, 0xa5, 0x00, 0x20, 0x3c, 0x09, 0xff, 0xfc, + 0x3c, 0x0a, 0x00, 0x05, 0x3c, 0x06, 0xff, 0xfe, 0x25, 0x29, 0x62, 0x38, + 0x35, 0x4a, 0x9d, 0x80, 0x34, 0xc6, 0xbe, 0x3e, 0x70, 0xe7, 0x20, 0x02, + 0x70, 0xe9, 0x48, 0x02, 0x70, 0xea, 0x50, 0x02, 0x70, 0xe6, 0x30, 0x02, + 0x00, 0xac, 0x00, 0x1a, 0x34, 0x0b, 0xc3, 0x50, 0x8f, 0xa2, 0x00, 0x54, + 0x24, 0x07, 0xf9, 0xcd, 0x03, 0xc2, 0xf0, 0x04, 0x3c, 0x0c, 0x00, 0x3a, + 0x25, 0x8c, 0x20, 0xdc, 0x86, 0x88, 0x00, 0x00, 0x00, 0x00, 0x28, 0x12, + 0x70, 0xab, 0x28, 0x02, 0x00, 0xbe, 0x00, 0x1a, 0x00, 0x00, 0x28, 0x12, + 0x70, 0x87, 0x10, 0x02, 0x24, 0x07, 0x27, 0x10, 0x00, 0x46, 0x30, 0x21, + 0x00, 0xc3, 0x00, 0x1a, 0x00, 0x00, 0x30, 0x12, 0x00, 0xcc, 0x30, 0x21, + 0x00, 0xc3, 0x00, 0x1a, 0x00, 0x00, 0x30, 0x12, 0x00, 0xa6, 0x30, 0x23, + 0x70, 0xc3, 0x60, 0x02, 0x24, 0x06, 0xef, 0x14, 0x70, 0x86, 0x10, 0x02, + 0x00, 0x4d, 0x28, 0x21, 0x00, 0xa7, 0x00, 0x1a, 0x3c, 0x05, 0x00, 0x03, + 0x34, 0xa5, 0xb0, 0x88, 0x00, 0x00, 0x10, 0x12, 0x00, 0x45, 0x10, 0x21, + 0x00, 0x43, 0x00, 0x1a, 0x00, 0x00, 0x10, 0x12, 0x01, 0x82, 0x00, 0x1a, + 0x8f, 0xa2, 0x00, 0x24, 0x8f, 0xac, 0x00, 0x1c, 0x00, 0x00, 0x28, 0x12, + 0x00, 0x4c, 0x00, 0x1a, 0x24, 0x0c, 0xfb, 0xb3, 0x7c, 0x05, 0x36, 0x20, + 0xa6, 0x66, 0x00, 0x00, 0x00, 0x00, 0x10, 0x12, 0x70, 0x4b, 0x58, 0x02, + 0x01, 0x7e, 0x00, 0x1a, 0x00, 0x00, 0xf0, 0x12, 0x70, 0x8c, 0x10, 0x02, + 0x00, 0x4a, 0x50, 0x21, 0x01, 0x43, 0x00, 0x1a, 0x3c, 0x02, 0x00, 0x22, + 0x24, 0x42, 0x57, 0x04, 0x00, 0x00, 0x50, 0x12, 0x01, 0x42, 0x50, 0x21, + 0x01, 0x43, 0x00, 0x1a, 0x00, 0x00, 0x50, 0x12, 0x03, 0xca, 0xf0, 0x23, + 0x24, 0x0a, 0x0e, 0x48, 0x70, 0x8a, 0x58, 0x02, 0x73, 0xc3, 0x10, 0x02, + 0x01, 0x69, 0x20, 0x21, 0x00, 0x87, 0x00, 0x1a, 0x3c, 0x07, 0x00, 0x02, + 0x24, 0xe7, 0x6e, 0x44, 0x00, 0x00, 0x20, 0x12, 0x00, 0x87, 0x20, 0x21, + 0x00, 0x83, 0x00, 0x1a, 0x26, 0xa4, 0x2f, 0x4c, 0x00, 0x00, 0x18, 0x12, + 0x00, 0x43, 0x00, 0x1a, 0x01, 0x05, 0x10, 0x21, 0x24, 0x05, 0x00, 0x02, + 0x00, 0x00, 0x18, 0x12, 0x7c, 0x03, 0x3e, 0x20, 0x00, 0x43, 0x18, 0x21, + 0x7c, 0x03, 0x1e, 0x20, 0x00, 0x65, 0x00, 0x1a, 0xa6, 0x67, 0x00, 0x02, + 0x03, 0x00, 0x28, 0x21, 0x00, 0x00, 0x18, 0x12, 0xa6, 0x83, 0x00, 0x00, + 0x0f, 0xf0, 0x10, 0xbe, 0xaf, 0xa3, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x20, 0x28, 0x21, 0x0f, 0xf0, 0x11, 0x58, 0x03, 0x00, 0x20, 0x21, + 0x26, 0x31, 0x00, 0x02, 0x24, 0x02, 0x00, 0x04, 0x27, 0x18, 0x00, 0x01, + 0x26, 0x52, 0x00, 0x02, 0x26, 0x94, 0x00, 0x02, 0x26, 0x73, 0x00, 0x04, + 0x25, 0xce, 0x00, 0x02, 0x16, 0x22, 0xff, 0x00, 0x25, 0xef, 0x00, 0x02, + 0x00, 0x00, 0x88, 0x21, 0x24, 0x12, 0x00, 0x02, 0x8f, 0xa2, 0x00, 0x4c, + 0x02, 0x20, 0x20, 0x21, 0x84, 0x46, 0x00, 0x00, 0x8f, 0xa2, 0x00, 0x48, + 0x0f, 0xf0, 0x08, 0x0f, 0x84, 0x45, 0x00, 0x00, 0x96, 0x02, 0x00, 0x00, + 0x10, 0x40, 0x00, 0x04, 0x8f, 0xa2, 0x00, 0x48, 0x0f, 0xf0, 0x00, 0xea, + 0x02, 0x20, 0x20, 0x21, 0x8f, 0xa2, 0x00, 0x48, 0x26, 0x31, 0x00, 0x01, + 0x24, 0x42, 0x00, 0x02, 0xaf, 0xa2, 0x00, 0x48, 0x8f, 0xa2, 0x00, 0x4c, + 0x26, 0x10, 0x00, 0x02, 0x24, 0x42, 0x00, 0x02, 0x16, 0x32, 0xff, 0xed, + 0xaf, 0xa2, 0x00, 0x4c, 0x0f, 0xf0, 0x00, 0xe3, 0x24, 0x04, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x11, 0xb3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x04, 0x74, 0x03, 0x00, 0x20, 0x21, + 0x03, 0x00, 0x20, 0x21, 0x24, 0x05, 0x00, 0x03, 0x0f, 0xf0, 0x04, 0xa1, + 0xaf, 0xa2, 0x00, 0x58, 0x3c, 0x08, 0x00, 0x03, 0x8f, 0xa5, 0x00, 0x50, + 0x3c, 0x1f, 0x00, 0x1c, 0x3c, 0x0d, 0x00, 0x14, 0x3c, 0x0c, 0x00, 0x0c, + 0x35, 0x08, 0xfc, 0x00, 0x10, 0x00, 0xff, 0x62, 0x24, 0x02, 0x0c, 0x00, + 0x27, 0xa4, 0x00, 0x20, 0x27, 0xa6, 0x00, 0x18, 0x00, 0x68, 0x18, 0x24, + 0x95, 0x27, 0x00, 0x00, 0x2c, 0xea, 0x00, 0x0b, 0x55, 0x40, 0x00, 0x1e, + 0x24, 0x84, 0x00, 0x04, 0x15, 0x6c, 0x00, 0x13, 0x34, 0x0a, 0x94, 0x00, + 0x24, 0x0a, 0x04, 0x00, 0x14, 0x6a, 0x00, 0x07, 0x8f, 0xaa, 0x00, 0x20, + 0x01, 0x47, 0x38, 0x21, 0xaf, 0xa7, 0x00, 0x20, 0x8f, 0xa7, 0x00, 0x18, + 0x24, 0xe7, 0x00, 0x01, 0x10, 0x00, 0x00, 0x12, 0xaf, 0xa7, 0x00, 0x18, + 0x54, 0x62, 0x00, 0x11, 0x24, 0x84, 0x00, 0x04, 0x8f, 0xaa, 0x00, 0x24, + 0x01, 0x47, 0x38, 0x21, 0xaf, 0xa7, 0x00, 0x24, 0x8f, 0xa7, 0x00, 0x1c, + 0x24, 0xe7, 0x00, 0x01, 0x10, 0x00, 0x00, 0x09, 0xaf, 0xa7, 0x00, 0x1c, + 0x50, 0x6a, 0x00, 0x08, 0x24, 0x84, 0x00, 0x04, 0x8c, 0x8a, 0x00, 0x00, + 0x01, 0x47, 0x38, 0x21, 0xac, 0x87, 0x00, 0x00, 0x8c, 0xc7, 0x00, 0x00, + 0x24, 0xe7, 0x00, 0x01, 0xac, 0xc7, 0x00, 0x00, 0x24, 0x84, 0x00, 0x04, + 0x27, 0xa7, 0x00, 0x28, 0x25, 0x29, 0x00, 0x02, 0x10, 0xe4, 0xff, 0x39, + 0x24, 0xc6, 0x00, 0x04, 0x10, 0x00, 0xff, 0xdb, 0x95, 0x27, 0x00, 0x00, + 0x93, 0x86, 0x00, 0x63, 0x24, 0x03, 0x00, 0x20, 0x24, 0x02, 0x04, 0x00, + 0x00, 0x66, 0x10, 0x0b, 0x27, 0xbd, 0xff, 0xe8, 0x00, 0x00, 0x28, 0x21, + 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x10, 0x0a, 0x00, 0x40, 0x30, 0x21, + 0x3c, 0x03, 0xff, 0xff, 0x24, 0x63, 0x41, 0xbf, 0x70, 0x43, 0x28, 0x02, + 0x3c, 0x04, 0x02, 0x71, 0x34, 0x84, 0xab, 0xe0, 0x00, 0xa4, 0x10, 0x21, + 0x24, 0x03, 0x00, 0x64, 0x00, 0x43, 0x00, 0x1a, 0x8f, 0xbf, 0x00, 0x14, + 0x27, 0xbd, 0x00, 0x18, 0x03, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x10, 0x12, + 0x8c, 0x84, 0x00, 0x00, 0x00, 0x05, 0x28, 0x82, 0x7c, 0x83, 0x14, 0x80, + 0x00, 0x03, 0x11, 0x40, 0x3c, 0x03, 0xb6, 0x08, 0x24, 0x63, 0x00, 0xc0, + 0x00, 0x43, 0x18, 0x21, 0x7c, 0x84, 0x3a, 0x80, 0x3c, 0x02, 0x01, 0x10, + 0x7c, 0x82, 0x9b, 0x04, 0x7c, 0xa2, 0x58, 0x04, 0x24, 0x04, 0x00, 0x01, + 0xac, 0x66, 0x00, 0x04, 0xac, 0x62, 0x00, 0x00, 0x7c, 0x82, 0xff, 0xc4, + 0xac, 0x62, 0x00, 0x00, 0x8c, 0x62, 0x00, 0x00, 0x04, 0x40, 0xff, 0xfe, + 0x7c, 0x42, 0x07, 0x80, 0x10, 0x40, 0x00, 0x02, 0x24, 0x02, 0x00, 0x10, + 0xa3, 0x82, 0x00, 0x62, 0x03, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x27, 0xbd, 0xff, 0xe8, 0x00, 0x80, 0x60, 0x21, 0xaf, 0xbf, 0x00, 0x14, + 0x0f, 0xf0, 0x10, 0x72, 0x00, 0xa0, 0x68, 0x21, 0x3c, 0x03, 0xb6, 0x08, + 0x8c, 0x62, 0x02, 0x80, 0x7c, 0x42, 0x03, 0x80, 0x10, 0x40, 0xff, 0xfd, + 0x3c, 0x09, 0x80, 0x00, 0x25, 0x29, 0x70, 0x64, 0x3c, 0x0b, 0x00, 0x1c, + 0x3c, 0x0a, 0x00, 0x14, 0x8d, 0x22, 0x00, 0x00, 0x01, 0x62, 0x18, 0x24, + 0x10, 0x6a, 0x00, 0x08, 0x7c, 0x42, 0x1d, 0x40, 0x54, 0x4c, 0xff, 0xfb, + 0x25, 0x29, 0x00, 0x1c, 0x01, 0xa0, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0x7d, + 0x01, 0x20, 0x20, 0x21, 0x10, 0x00, 0xff, 0xf6, 0x25, 0x29, 0x00, 0x1c, + 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, + 0x00, 0x05, 0x29, 0x00, 0x24, 0xa7, 0x00, 0x40, 0x27, 0xbd, 0xff, 0xe8, + 0x00, 0xe0, 0x28, 0x21, 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x10, 0x57, + 0x00, 0x80, 0x40, 0x21, 0x2c, 0xc6, 0x00, 0x01, 0x7c, 0xc2, 0x4a, 0x44, + 0x38, 0x43, 0x02, 0x00, 0x7c, 0x63, 0x02, 0x40, 0x8f, 0xbf, 0x00, 0x14, + 0x7c, 0x62, 0x52, 0x84, 0x00, 0x40, 0x30, 0x21, 0x00, 0xe0, 0x28, 0x21, + 0x01, 0x00, 0x20, 0x21, 0x0b, 0xf0, 0x04, 0x89, 0x27, 0xbd, 0x00, 0x18, + 0x27, 0xbd, 0xff, 0xe8, 0x3c, 0x0b, 0x04, 0x00, 0x00, 0x80, 0x50, 0x21, + 0xaf, 0xbf, 0x00, 0x14, 0x00, 0x00, 0x38, 0x21, 0x25, 0x6b, 0x00, 0x80, + 0x24, 0x08, 0x00, 0x01, 0x8d, 0x42, 0x00, 0x00, 0x30, 0x42, 0x03, 0xff, + 0x00, 0xe2, 0x10, 0x2b, 0x10, 0x40, 0x00, 0x16, 0x24, 0xe9, 0x00, 0x04, + 0x00, 0x09, 0x49, 0x00, 0x01, 0x20, 0x28, 0x21, 0x01, 0x40, 0x20, 0x21, + 0x0f, 0xf0, 0x10, 0x57, 0xa3, 0x80, 0x00, 0x62, 0x93, 0x83, 0x00, 0x62, + 0x14, 0x60, 0x00, 0x0c, 0x00, 0x40, 0x30, 0x21, 0x00, 0x4b, 0x10, 0x24, + 0x54, 0x40, 0xff, 0xf1, 0x24, 0xe7, 0x00, 0x01, 0x7d, 0x06, 0x5a, 0xc4, + 0x7d, 0x06, 0x63, 0x04, 0x7d, 0x06, 0x42, 0x04, 0x7d, 0x06, 0x52, 0x84, + 0x7c, 0x06, 0x4a, 0x44, 0x01, 0x20, 0x28, 0x21, 0x0f, 0xf0, 0x04, 0x89, + 0x01, 0x40, 0x20, 0x21, 0x10, 0x00, 0xff, 0xe7, 0x24, 0xe7, 0x00, 0x01, + 0x93, 0x84, 0x00, 0x63, 0x24, 0x02, 0x00, 0xaf, 0x24, 0x03, 0x00, 0x19, + 0x8f, 0xbf, 0x00, 0x14, 0x00, 0x64, 0x10, 0x0b, 0x00, 0x40, 0x20, 0x21, + 0x0b, 0xf0, 0x10, 0x00, 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, + 0x24, 0x05, 0x00, 0x40, 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x10, 0x57, + 0x00, 0x80, 0x40, 0x21, 0x93, 0x83, 0x00, 0x62, 0x14, 0x60, 0x00, 0x29, + 0x8f, 0xbf, 0x00, 0x14, 0x00, 0x40, 0x30, 0x21, 0x30, 0x42, 0x00, 0x80, + 0x10, 0x40, 0x00, 0x05, 0x3c, 0x0a, 0x02, 0x00, 0x24, 0x07, 0x00, 0x01, + 0x25, 0x4a, 0x00, 0x80, 0x10, 0x00, 0x00, 0x10, 0x24, 0x0b, 0x00, 0x01, + 0x7c, 0x06, 0x52, 0x84, 0x34, 0xc6, 0x02, 0x00, 0x24, 0x05, 0x00, 0x40, + 0x01, 0x00, 0x20, 0x21, 0x0b, 0xf0, 0x04, 0x89, 0x27, 0xbd, 0x00, 0x18, + 0x00, 0x09, 0x49, 0x00, 0x01, 0x20, 0x28, 0x21, 0x01, 0x00, 0x20, 0x21, + 0x0f, 0xf0, 0x10, 0x57, 0xa3, 0x80, 0x00, 0x62, 0x93, 0x83, 0x00, 0x62, + 0x10, 0x60, 0x00, 0x09, 0x00, 0x40, 0x30, 0x21, 0x24, 0xe7, 0x00, 0x01, + 0x8d, 0x02, 0x00, 0x00, 0x30, 0x42, 0x03, 0xff, 0x00, 0xe2, 0x10, 0x2b, + 0x54, 0x40, 0xff, 0xf3, 0x24, 0xe9, 0x00, 0x04, 0x10, 0x00, 0x00, 0x0b, + 0x8f, 0xbf, 0x00, 0x14, 0x00, 0x4a, 0x10, 0x24, 0x54, 0x40, 0xff, 0xf7, + 0x24, 0xe7, 0x00, 0x01, 0x7c, 0x06, 0x52, 0x84, 0x7d, 0x66, 0x4a, 0x44, + 0x01, 0x20, 0x28, 0x21, 0x0f, 0xf0, 0x04, 0x89, 0x01, 0x00, 0x20, 0x21, + 0x10, 0x00, 0xff, 0xf0, 0x24, 0xe7, 0x00, 0x01, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x8c, 0x83, 0x00, 0x04, 0x7c, 0x63, 0x1d, 0x00, + 0x28, 0x63, 0x00, 0x02, 0x14, 0x60, 0x00, 0x04, 0x00, 0x00, 0x10, 0x21, + 0x24, 0x02, 0x00, 0x01, 0xa3, 0x82, 0x00, 0x62, 0x24, 0x02, 0x00, 0x01, + 0x03, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x83, 0x00, 0x04, + 0x3c, 0x02, 0x00, 0x0f, 0x34, 0x42, 0xfc, 0x00, 0x00, 0x62, 0x20, 0x24, + 0x10, 0x82, 0x00, 0x22, 0x3c, 0x05, 0x80, 0x00, 0x7c, 0x62, 0x4a, 0x80, + 0x30, 0x49, 0x00, 0xff, 0x24, 0xa5, 0x70, 0x64, 0x00, 0x02, 0x12, 0x03, + 0x3c, 0x08, 0x00, 0x1c, 0x3c, 0x06, 0x00, 0x14, 0x8c, 0xa4, 0x00, 0x00, + 0x00, 0x88, 0x38, 0x24, 0x10, 0xe6, 0x00, 0x08, 0x7c, 0x87, 0x14, 0x80, + 0x54, 0x47, 0xff, 0xfb, 0x24, 0xa5, 0x00, 0x1c, 0x7c, 0x87, 0x3a, 0x80, + 0x11, 0x27, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xff, 0xf6, + 0x24, 0xa5, 0x00, 0x1c, 0x28, 0x42, 0x00, 0x02, 0x54, 0x40, 0x00, 0x0d, + 0x24, 0x02, 0x00, 0x02, 0x10, 0x00, 0x00, 0x0b, 0x24, 0x02, 0x00, 0x09, + 0x04, 0x81, 0x00, 0x0a, 0x30, 0x66, 0x03, 0xff, 0x24, 0x07, 0x03, 0xff, + 0x10, 0xc7, 0x00, 0x08, 0x00, 0xa0, 0x10, 0x21, 0x30, 0x84, 0x03, 0xff, + 0x00, 0x86, 0x18, 0x2a, 0x10, 0x60, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x02, 0x00, 0x03, 0xa3, 0x82, 0x00, 0x62, 0x00, 0x00, 0x10, 0x21, + 0x03, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x83, 0x00, 0x04, + 0x3c, 0x02, 0x00, 0x0f, 0x34, 0x42, 0xfc, 0x00, 0x00, 0x62, 0x18, 0x24, + 0x50, 0x62, 0x00, 0x03, 0x24, 0x02, 0x00, 0x02, 0x0b, 0xf0, 0x05, 0x33, + 0x00, 0x00, 0x00, 0x00, 0xa3, 0x82, 0x00, 0x62, 0x03, 0xe0, 0x00, 0x08, + 0x00, 0x00, 0x10, 0x21, 0xac, 0xa0, 0x00, 0x08, 0x03, 0xe0, 0x00, 0x08, + 0xac, 0xa0, 0x00, 0x0c, 0x3c, 0x02, 0x00, 0x06, 0x24, 0x42, 0x31, 0x58, + 0xac, 0xa2, 0x00, 0x08, 0x24, 0x02, 0x0b, 0x06, 0x03, 0xe0, 0x00, 0x08, + 0xac, 0xa2, 0x00, 0x0c, 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, + 0x0f, 0xf0, 0x05, 0x33, 0x00, 0xa0, 0x50, 0x21, 0x10, 0x40, 0x00, 0x05, + 0x8f, 0xbf, 0x00, 0x14, 0x8c, 0x42, 0x00, 0x00, 0x7c, 0x42, 0x07, 0x80, + 0xad, 0x42, 0x00, 0x08, 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, + 0x0f, 0xf0, 0x05, 0x33, 0x00, 0xa0, 0x50, 0x21, 0x10, 0x40, 0x00, 0x05, + 0x00, 0x00, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0x57, 0x00, 0x40, 0x20, 0x21, + 0x00, 0x02, 0x14, 0x02, 0xad, 0x42, 0x00, 0x08, 0x8f, 0xbf, 0x00, 0x14, + 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, + 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x33, 0x00, 0xa0, 0x50, 0x21, + 0x10, 0x40, 0x00, 0x05, 0x00, 0x00, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0x57, + 0x00, 0x40, 0x20, 0x21, 0x7c, 0x42, 0x3a, 0x00, 0xad, 0x42, 0x00, 0x08, + 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, + 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x33, + 0x00, 0xa0, 0x50, 0x21, 0x10, 0x40, 0x00, 0x05, 0x8f, 0xbf, 0x00, 0x14, + 0x8c, 0x42, 0x00, 0x00, 0x30, 0x42, 0x03, 0xff, 0xad, 0x42, 0x00, 0x08, + 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, + 0x03, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x27, 0xbd, 0xff, 0xe8, + 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x14, 0x40, 0x00, 0x25, 0x3c, 0x06, 0xb6, 0x08, 0x8c, 0x83, 0x00, 0x04, + 0x7c, 0x63, 0x1d, 0x00, 0x24, 0xc4, 0x00, 0x50, 0x24, 0xc8, 0x00, 0x5c, + 0x8c, 0x86, 0x00, 0x00, 0x24, 0x84, 0x00, 0x04, 0x00, 0x06, 0x3c, 0x02, + 0x30, 0xc6, 0xff, 0xff, 0x00, 0xe6, 0x30, 0x21, 0x00, 0x06, 0x30, 0x42, + 0x14, 0x88, 0xff, 0xf9, 0x00, 0x46, 0x10, 0x21, 0x24, 0x06, 0x00, 0x03, + 0x00, 0x46, 0x00, 0x1b, 0x24, 0x06, 0x03, 0xe8, 0x94, 0x84, 0x00, 0x02, + 0x00, 0x00, 0x10, 0x12, 0x70, 0x46, 0x10, 0x02, 0x00, 0x03, 0x30, 0x40, + 0x00, 0x44, 0x00, 0x1b, 0x27, 0x84, 0x00, 0x14, 0x00, 0x86, 0x20, 0x21, + 0x84, 0x84, 0x00, 0x00, 0x00, 0x03, 0x18, 0x80, 0x00, 0x04, 0x24, 0x00, + 0x00, 0x00, 0x10, 0x12, 0x30, 0x42, 0xff, 0xff, 0x00, 0x44, 0x10, 0x25, + 0xac, 0xa2, 0x00, 0x08, 0x27, 0x82, 0x00, 0x30, 0x00, 0x43, 0x18, 0x21, + 0x94, 0x62, 0x00, 0x02, 0x94, 0x63, 0x00, 0x00, 0x00, 0x02, 0x14, 0x00, + 0x00, 0x43, 0x10, 0x25, 0xac, 0xa2, 0x00, 0x0c, 0x8f, 0xbf, 0x00, 0x14, + 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, + 0xaf, 0xbf, 0x00, 0x14, 0x90, 0x82, 0x00, 0x08, 0x2c, 0x42, 0x00, 0x08, + 0x14, 0x40, 0x00, 0x03, 0x24, 0x02, 0x00, 0x07, 0x10, 0x00, 0x00, 0x16, + 0xa3, 0x82, 0x00, 0x62, 0x0f, 0xf0, 0x05, 0x5d, 0x00, 0x80, 0x50, 0x21, + 0x10, 0x40, 0x00, 0x12, 0x00, 0x40, 0x40, 0x21, 0x8d, 0x47, 0x00, 0x04, + 0x00, 0x40, 0x20, 0x21, 0x30, 0xe7, 0x03, 0xff, 0x00, 0x07, 0x39, 0x00, + 0x24, 0xe7, 0x00, 0x4c, 0x0f, 0xf0, 0x10, 0x57, 0x00, 0xe0, 0x28, 0x21, + 0x93, 0x83, 0x00, 0x62, 0x14, 0x60, 0x00, 0x09, 0x8f, 0xbf, 0x00, 0x14, + 0x91, 0x43, 0x00, 0x08, 0x7c, 0x62, 0x49, 0xc4, 0x00, 0x40, 0x30, 0x21, + 0x00, 0xe0, 0x28, 0x21, 0x01, 0x00, 0x20, 0x21, 0x0b, 0xf0, 0x04, 0x89, + 0x27, 0xbd, 0x00, 0x18, 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, + 0x90, 0x82, 0x00, 0x08, 0x2c, 0x42, 0x00, 0x08, 0x14, 0x40, 0x00, 0x03, + 0x24, 0x02, 0x00, 0x07, 0x10, 0x00, 0x00, 0x16, 0xa3, 0x82, 0x00, 0x62, + 0x0f, 0xf0, 0x05, 0x5d, 0x00, 0x80, 0x50, 0x21, 0x10, 0x40, 0x00, 0x12, + 0x00, 0x40, 0x40, 0x21, 0x8d, 0x47, 0x00, 0x04, 0x00, 0x40, 0x20, 0x21, + 0x30, 0xe7, 0x03, 0xff, 0x00, 0x07, 0x39, 0x00, 0x24, 0xe7, 0x00, 0x4c, + 0x0f, 0xf0, 0x10, 0x57, 0x00, 0xe0, 0x28, 0x21, 0x93, 0x83, 0x00, 0x62, + 0x14, 0x60, 0x00, 0x09, 0x8f, 0xbf, 0x00, 0x14, 0x91, 0x43, 0x00, 0x08, + 0x7c, 0x62, 0x31, 0x04, 0x00, 0x40, 0x30, 0x21, 0x00, 0xe0, 0x28, 0x21, + 0x01, 0x00, 0x20, 0x21, 0x0b, 0xf0, 0x04, 0x89, 0x27, 0xbd, 0x00, 0x18, + 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, + 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, 0x90, 0x82, 0x00, 0x08, + 0x2c, 0x42, 0x00, 0x04, 0x14, 0x40, 0x00, 0x03, 0x24, 0x02, 0x00, 0x07, + 0x10, 0x00, 0x00, 0x25, 0xa3, 0x82, 0x00, 0x62, 0x0f, 0xf0, 0x05, 0x5d, + 0x00, 0x80, 0x50, 0x21, 0x10, 0x40, 0x00, 0x21, 0x00, 0x40, 0x48, 0x21, + 0x8d, 0x47, 0x00, 0x04, 0x00, 0x40, 0x20, 0x21, 0x30, 0xe7, 0x03, 0xff, + 0x00, 0x07, 0x39, 0x00, 0x24, 0xe7, 0x00, 0x4c, 0x00, 0xe0, 0x28, 0x21, + 0x0f, 0xf0, 0x10, 0x57, 0x91, 0x48, 0x00, 0x08, 0x93, 0x83, 0x00, 0x62, + 0x14, 0x60, 0x00, 0x17, 0x8f, 0xbf, 0x00, 0x14, 0x24, 0x06, 0xff, 0xf8, + 0x00, 0x46, 0x30, 0x24, 0x2d, 0x02, 0x00, 0x02, 0x10, 0x40, 0x00, 0x03, + 0x24, 0x02, 0x00, 0x02, 0x10, 0x00, 0x00, 0x0b, 0x7d, 0x06, 0x08, 0x44, + 0x15, 0x02, 0x00, 0x04, 0x24, 0x02, 0x00, 0x03, 0x24, 0x02, 0x00, 0x01, + 0x10, 0x00, 0x00, 0x05, 0x7c, 0x46, 0x10, 0x84, 0x15, 0x02, 0x00, 0x04, + 0x8f, 0xbf, 0x00, 0x14, 0x24, 0x02, 0x00, 0x01, 0x7c, 0x46, 0x00, 0x04, + 0x8f, 0xbf, 0x00, 0x14, 0x00, 0xe0, 0x28, 0x21, 0x01, 0x20, 0x20, 0x21, + 0x0b, 0xf0, 0x04, 0x89, 0x27, 0xbd, 0x00, 0x18, 0x8f, 0xbf, 0x00, 0x14, + 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, + 0x90, 0x85, 0x00, 0x08, 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x0d, 0x2c, 0xa2, 0x00, 0x10, + 0x54, 0x40, 0x00, 0x04, 0x8c, 0x82, 0x00, 0x04, 0x24, 0x02, 0x00, 0x04, + 0x10, 0x00, 0x00, 0x08, 0xa3, 0x82, 0x00, 0x62, 0x7c, 0x43, 0x1d, 0x00, + 0x3c, 0x02, 0xb6, 0x00, 0x24, 0x42, 0x10, 0x00, 0x00, 0x43, 0x10, 0x21, + 0x90, 0x43, 0x00, 0x28, 0x7c, 0xa3, 0x10, 0x04, 0xa0, 0x43, 0x00, 0x28, + 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, + 0x27, 0xbd, 0xff, 0xe8, 0x90, 0x85, 0x00, 0x08, 0xaf, 0xbf, 0x00, 0x14, + 0x0f, 0xf0, 0x05, 0x29, 0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x0d, + 0x2c, 0xa2, 0x00, 0x04, 0x54, 0x40, 0x00, 0x04, 0x8c, 0x82, 0x00, 0x04, + 0x24, 0x02, 0x00, 0x04, 0x10, 0x00, 0x00, 0x08, 0xa3, 0x82, 0x00, 0x62, + 0x7c, 0x43, 0x1d, 0x00, 0x3c, 0x02, 0xb6, 0x00, 0x24, 0x42, 0x10, 0x00, + 0x00, 0x43, 0x10, 0x21, 0x90, 0x43, 0x00, 0x28, 0x7c, 0xa3, 0x20, 0xc4, + 0xa0, 0x43, 0x00, 0x28, 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, + 0x0f, 0xf0, 0x05, 0x29, 0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x07, + 0x27, 0x83, 0x00, 0x40, 0x8c, 0x82, 0x00, 0x04, 0x7c, 0x42, 0x1d, 0x00, + 0x00, 0x02, 0x10, 0x40, 0x00, 0x62, 0x10, 0x21, 0x94, 0x42, 0x00, 0x00, + 0xac, 0xa2, 0x00, 0x08, 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, 0x00, 0x80, 0x50, 0x21, + 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x5d, 0x00, 0xa0, 0x58, 0x21, + 0x10, 0x40, 0x00, 0x11, 0x8f, 0xbf, 0x00, 0x14, 0x8d, 0x45, 0x00, 0x08, + 0x00, 0x05, 0x28, 0x80, 0x2c, 0xa3, 0x00, 0x10, 0x54, 0x60, 0x00, 0x04, + 0x8d, 0x43, 0x00, 0x04, 0x24, 0x02, 0x00, 0x07, 0x10, 0x00, 0x00, 0x08, + 0xa3, 0x82, 0x00, 0x62, 0x00, 0x40, 0x20, 0x21, 0x30, 0x63, 0x03, 0xff, + 0x00, 0x03, 0x19, 0x00, 0x24, 0x63, 0x00, 0x40, 0x0f, 0xf0, 0x10, 0x57, + 0x00, 0x65, 0x28, 0x21, 0xad, 0x62, 0x00, 0x08, 0x8f, 0xbf, 0x00, 0x14, + 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, + 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x5d, 0x00, 0x80, 0x50, 0x21, + 0x10, 0x40, 0x00, 0x13, 0x8f, 0xbf, 0x00, 0x14, 0x8d, 0x45, 0x00, 0x08, + 0x00, 0x05, 0x28, 0x80, 0x2c, 0xa3, 0x00, 0x10, 0x54, 0x60, 0x00, 0x04, + 0x8d, 0x43, 0x00, 0x04, 0x24, 0x02, 0x00, 0x07, 0x10, 0x00, 0x00, 0x0a, + 0xa3, 0x82, 0x00, 0x62, 0x8f, 0xbf, 0x00, 0x14, 0x30, 0x63, 0x03, 0xff, + 0x00, 0x03, 0x19, 0x00, 0x24, 0x63, 0x00, 0x40, 0x8d, 0x46, 0x00, 0x0c, + 0x00, 0x65, 0x28, 0x21, 0x00, 0x40, 0x20, 0x21, 0x0b, 0xf0, 0x04, 0x89, + 0x27, 0xbd, 0x00, 0x18, 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, 0x00, 0x80, 0x58, 0x21, + 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x5d, 0x00, 0xa0, 0x50, 0x21, + 0x10, 0x40, 0x00, 0x0d, 0x8f, 0xbf, 0x00, 0x14, 0x8d, 0x65, 0x00, 0x08, + 0x00, 0x05, 0x28, 0x80, 0x2c, 0xa3, 0x40, 0x00, 0x14, 0x60, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x02, 0x00, 0x07, 0x10, 0x00, 0x00, 0x04, + 0xa3, 0x82, 0x00, 0x62, 0x0f, 0xf0, 0x10, 0x57, 0x00, 0x40, 0x20, 0x21, + 0xad, 0x42, 0x00, 0x08, 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, + 0x0f, 0xf0, 0x05, 0x5d, 0x00, 0x80, 0x50, 0x21, 0x10, 0x40, 0x00, 0x0d, + 0x8f, 0xbf, 0x00, 0x14, 0x8d, 0x45, 0x00, 0x08, 0x00, 0x05, 0x28, 0x80, + 0x2c, 0xa3, 0x40, 0x00, 0x54, 0x60, 0x00, 0x04, 0x8d, 0x46, 0x00, 0x0c, + 0x24, 0x02, 0x00, 0x07, 0x10, 0x00, 0x00, 0x04, 0xa3, 0x82, 0x00, 0x62, + 0x00, 0x40, 0x20, 0x21, 0x0b, 0xf0, 0x04, 0x89, 0x27, 0xbd, 0x00, 0x18, + 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, + 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x29, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x12, 0x8f, 0xbf, 0x00, 0x14, + 0x8c, 0x84, 0x00, 0x04, 0x00, 0xa0, 0x48, 0x21, 0x7c, 0x84, 0x1d, 0x00, + 0x00, 0x00, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0x0a, 0x24, 0x06, 0x00, 0x08, + 0x3c, 0x03, 0xff, 0xff, 0x24, 0x63, 0x41, 0xbf, 0x70, 0x43, 0x28, 0x02, + 0x3c, 0x04, 0x02, 0x71, 0x34, 0x84, 0xab, 0xe0, 0x00, 0xa4, 0x10, 0x21, + 0x24, 0x03, 0x00, 0x64, 0x00, 0x43, 0x00, 0x1a, 0x00, 0x00, 0x10, 0x12, + 0xad, 0x22, 0x00, 0x08, 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, + 0x0f, 0xf0, 0x05, 0x29, 0x00, 0x00, 0x00, 0x00, 0x14, 0x40, 0x00, 0x0e, + 0x8f, 0xbf, 0x00, 0x14, 0x8c, 0x84, 0x00, 0x04, 0x00, 0xa0, 0x48, 0x21, + 0x24, 0x06, 0x00, 0x08, 0x24, 0x05, 0x00, 0x03, 0x0f, 0xf0, 0x10, 0x0a, + 0x7c, 0x84, 0x1d, 0x00, 0x24, 0x03, 0x22, 0x60, 0x70, 0x43, 0x10, 0x02, + 0x24, 0x03, 0x1c, 0x00, 0x00, 0x43, 0x00, 0x1a, 0x00, 0x00, 0x10, 0x12, + 0xad, 0x22, 0x00, 0x08, 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, + 0x00, 0xa0, 0x48, 0x21, 0x0f, 0xf0, 0x05, 0x29, 0x8c, 0x85, 0x00, 0x08, + 0x14, 0x40, 0x00, 0x0c, 0x2c, 0xa2, 0x00, 0x07, 0x10, 0x40, 0x00, 0x07, + 0x24, 0x02, 0x00, 0x07, 0x8c, 0x84, 0x00, 0x04, 0x24, 0x06, 0x00, 0x08, + 0x0f, 0xf0, 0x10, 0x0a, 0x7c, 0x84, 0x1d, 0x00, 0x10, 0x00, 0x00, 0x04, + 0xad, 0x22, 0x00, 0x08, 0xa3, 0x82, 0x00, 0x62, 0x24, 0x02, 0xd8, 0xf1, + 0xad, 0x22, 0x00, 0x08, 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, + 0x0f, 0xf0, 0x05, 0x5d, 0x00, 0x80, 0x50, 0x21, 0x10, 0x40, 0x00, 0x09, + 0x00, 0x40, 0x20, 0x21, 0x91, 0x43, 0x00, 0x08, 0x24, 0x02, 0x00, 0x01, + 0x14, 0x62, 0x00, 0x03, 0x8f, 0xbf, 0x00, 0x14, 0x0b, 0xf0, 0x04, 0xce, + 0x27, 0xbd, 0x00, 0x18, 0x0b, 0xf0, 0x04, 0xf7, 0x27, 0xbd, 0x00, 0x18, + 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, + 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x33, + 0x00, 0x80, 0x50, 0x21, 0x10, 0x40, 0x00, 0x0d, 0x3c, 0x03, 0x16, 0x00, + 0x8c, 0x44, 0x00, 0x00, 0x00, 0x64, 0x18, 0x24, 0x54, 0x60, 0x00, 0x08, + 0x24, 0x02, 0x00, 0x02, 0x8d, 0x45, 0x00, 0x04, 0x8f, 0xbf, 0x00, 0x14, + 0x91, 0x46, 0x00, 0x08, 0x30, 0xa5, 0x03, 0xff, 0x00, 0x40, 0x20, 0x21, + 0x0b, 0xf0, 0x04, 0xbc, 0x27, 0xbd, 0x00, 0x18, 0xa3, 0x82, 0x00, 0x62, + 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, + 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x5d, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x0d, 0x00, 0x40, 0x60, 0x21, + 0x8c, 0x43, 0x00, 0x00, 0x3c, 0x02, 0x16, 0x00, 0x00, 0x43, 0x10, 0x24, + 0x14, 0x40, 0x00, 0x07, 0x24, 0x02, 0x00, 0x02, 0x0f, 0xf0, 0x04, 0xf7, + 0x01, 0x80, 0x20, 0x21, 0x8f, 0xbf, 0x00, 0x14, 0x01, 0x80, 0x20, 0x21, + 0x0b, 0xf0, 0x04, 0xce, 0x27, 0xbd, 0x00, 0x18, 0xa3, 0x82, 0x00, 0x62, + 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, + 0x27, 0xbd, 0xff, 0xe8, 0xaf, 0xbf, 0x00, 0x14, 0x0f, 0xf0, 0x05, 0x33, + 0x00, 0x80, 0x50, 0x21, 0x10, 0x40, 0x00, 0x13, 0x00, 0x40, 0x48, 0x21, + 0x8c, 0x43, 0x00, 0x00, 0x3c, 0x02, 0x16, 0x00, 0x00, 0x43, 0x10, 0x24, + 0x14, 0x40, 0x00, 0x0d, 0x24, 0x02, 0x00, 0x02, 0x8d, 0x45, 0x00, 0x04, + 0x00, 0x00, 0x30, 0x21, 0x30, 0xa5, 0x03, 0xff, 0x0f, 0xf0, 0x04, 0xbc, + 0x01, 0x20, 0x20, 0x21, 0x8d, 0x45, 0x00, 0x04, 0x8f, 0xbf, 0x00, 0x14, + 0x24, 0x06, 0x00, 0x01, 0x30, 0xa5, 0x03, 0xff, 0x01, 0x20, 0x20, 0x21, + 0x0b, 0xf0, 0x04, 0xbc, 0x27, 0xbd, 0x00, 0x18, 0xa3, 0x82, 0x00, 0x62, + 0x8f, 0xbf, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, + 0x83, 0x82, 0x00, 0x60, 0x50, 0x40, 0x00, 0x03, 0x8c, 0x82, 0x00, 0x08, + 0x10, 0x00, 0x00, 0x05, 0x24, 0x02, 0x00, 0x12, 0x2c, 0x43, 0x00, 0x27, + 0x14, 0x60, 0x00, 0x04, 0x3c, 0x03, 0x9f, 0xc0, 0x24, 0x02, 0x00, 0x07, + 0x03, 0xe0, 0x00, 0x08, 0xa3, 0x82, 0x00, 0x62, 0x24, 0x63, 0x2f, 0xe4, + 0x00, 0x02, 0x10, 0x80, 0x00, 0x43, 0x10, 0x21, 0x8c, 0x83, 0x00, 0x0c, + 0x03, 0xe0, 0x00, 0x08, 0xac, 0x43, 0x00, 0x00, 0x3c, 0x02, 0x9f, 0xc0, + 0x24, 0x42, 0x2f, 0xe4, 0x00, 0x00, 0x18, 0x21, 0x24, 0x04, 0x00, 0x28, + 0x8c, 0x46, 0x00, 0x00, 0x54, 0xc0, 0x00, 0x03, 0x24, 0x63, 0x00, 0x01, + 0x03, 0xe0, 0x00, 0x08, 0xac, 0xa3, 0x00, 0x08, 0x14, 0x64, 0xff, 0xfa, + 0x24, 0x42, 0x00, 0x04, 0x24, 0x02, 0x00, 0x11, 0x03, 0xe0, 0x00, 0x08, + 0xa3, 0x82, 0x00, 0x62, 0x24, 0x02, 0x00, 0x01, 0x03, 0xe0, 0x00, 0x08, + 0xa3, 0x82, 0x00, 0x60, 0x83, 0x82, 0x00, 0x60, 0x10, 0x40, 0x00, 0x04, + 0x24, 0x02, 0x00, 0x01, 0x24, 0x02, 0x00, 0x12, 0x03, 0xe0, 0x00, 0x08, + 0xa3, 0x82, 0x00, 0x62, 0x03, 0xe0, 0x00, 0x08, 0xa3, 0x82, 0x00, 0x61, + 0x27, 0xbd, 0xff, 0xe0, 0xaf, 0xbf, 0x00, 0x1c, 0xaf, 0xb1, 0x00, 0x18, + 0xaf, 0xb0, 0x00, 0x14, 0x8c, 0x8d, 0x00, 0x08, 0x15, 0xa0, 0x00, 0x03, + 0x24, 0x02, 0x00, 0x07, 0x10, 0x00, 0x00, 0x5a, 0xa3, 0x82, 0x00, 0x62, + 0x0f, 0xf0, 0x05, 0x29, 0x8c, 0x8e, 0x00, 0x0c, 0x14, 0x40, 0x00, 0x56, + 0x2d, 0xc2, 0x00, 0x04, 0x8c, 0x8b, 0x00, 0x04, 0x7d, 0x6b, 0x1d, 0x00, + 0x00, 0x02, 0x70, 0x0a, 0x01, 0xa0, 0x50, 0x21, 0x00, 0x00, 0x48, 0x21, + 0x24, 0x0c, 0x00, 0x07, 0x25, 0x4a, 0x00, 0x02, 0x15, 0xc0, 0x00, 0x06, + 0x00, 0x00, 0x10, 0x21, 0x24, 0x06, 0x00, 0x0a, 0x01, 0x20, 0x28, 0x21, + 0x0f, 0xf0, 0x10, 0x0a, 0x01, 0x60, 0x20, 0x21, 0x30, 0x42, 0xff, 0xff, + 0x25, 0x29, 0x00, 0x01, 0x15, 0x2c, 0xff, 0xf6, 0xa5, 0x42, 0xff, 0xfe, + 0x3c, 0x09, 0x80, 0x00, 0x00, 0x0e, 0x58, 0x80, 0x25, 0x29, 0x70, 0x64, + 0x3c, 0x0f, 0x00, 0x03, 0x25, 0xac, 0x00, 0x0e, 0x25, 0xaa, 0x00, 0x10, + 0x01, 0x2b, 0x58, 0x21, 0x3c, 0x10, 0x00, 0x1c, 0x3c, 0x19, 0x00, 0x14, + 0x3c, 0x11, 0x00, 0x0c, 0x35, 0xef, 0xfc, 0x00, 0x8d, 0x22, 0x00, 0x00, + 0x00, 0x50, 0x18, 0x24, 0x50, 0x79, 0x00, 0x31, 0x01, 0x4c, 0x10, 0x23, + 0x10, 0x71, 0x00, 0x15, 0x7c, 0x43, 0x14, 0x80, 0x28, 0x63, 0x00, 0x02, + 0x10, 0x60, 0x00, 0x13, 0x24, 0x18, 0x00, 0x02, 0x04, 0x43, 0x00, 0x28, + 0x25, 0x29, 0x00, 0x1c, 0x7c, 0x43, 0x3a, 0x80, 0x24, 0x63, 0xff, 0xe0, + 0x30, 0x63, 0x00, 0xff, 0x2c, 0x63, 0x00, 0x05, 0x54, 0x60, 0x00, 0x22, + 0x25, 0x29, 0x00, 0x1c, 0x00, 0x4f, 0x18, 0x24, 0x34, 0x04, 0x98, 0x00, + 0x10, 0x64, 0x00, 0x1d, 0x3c, 0x03, 0x16, 0x00, 0x00, 0x43, 0x10, 0x24, + 0x54, 0x40, 0x00, 0x1b, 0x25, 0x29, 0x00, 0x1c, 0x10, 0x00, 0x00, 0x03, + 0x8d, 0x23, 0x00, 0x00, 0x24, 0x18, 0x00, 0x01, 0x8d, 0x23, 0x00, 0x00, + 0x27, 0x82, 0x00, 0x40, 0x7c, 0x63, 0x1d, 0x40, 0x00, 0x03, 0x18, 0x40, + 0x00, 0x43, 0x18, 0x21, 0x94, 0x62, 0x00, 0x00, 0x50, 0x40, 0x00, 0x07, + 0x95, 0x62, 0x00, 0x04, 0x55, 0xc0, 0x00, 0x05, 0x95, 0x62, 0x00, 0x04, + 0x00, 0x00, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0x7d, 0x01, 0x20, 0x20, 0x21, + 0x95, 0x62, 0x00, 0x04, 0xa5, 0x42, 0x00, 0x00, 0x24, 0x02, 0x00, 0x02, + 0x53, 0x02, 0x00, 0x03, 0x95, 0x62, 0x00, 0x06, 0x10, 0x00, 0x00, 0x03, + 0x25, 0x4a, 0x00, 0x02, 0x25, 0x4a, 0x00, 0x04, 0xa5, 0x42, 0xff, 0xfe, + 0x25, 0x29, 0x00, 0x1c, 0x10, 0x00, 0xff, 0xcd, 0x25, 0x6b, 0x00, 0x1c, + 0x00, 0x02, 0x10, 0x43, 0x24, 0x42, 0xff, 0xff, 0xa5, 0xa2, 0x00, 0x0e, + 0x24, 0x02, 0x0e, 0x0f, 0xa5, 0x42, 0x00, 0x00, 0x8f, 0xbf, 0x00, 0x1c, + 0x8f, 0xb1, 0x00, 0x18, 0x8f, 0xb0, 0x00, 0x14, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x20, 0x8f, 0x82, 0x00, 0x44, 0x2c, 0x42, 0x00, 0x01, + 0x03, 0xe0, 0x00, 0x08, 0xac, 0xa2, 0x00, 0x08, 0x8c, 0x82, 0x00, 0x08, + 0x3c, 0x04, 0x9f, 0xc0, 0x2c, 0x43, 0x00, 0x01, 0x00, 0x02, 0x10, 0x2b, + 0xac, 0xa2, 0x00, 0x08, 0x24, 0x84, 0x2a, 0x3c, 0x00, 0x40, 0x28, 0x21, + 0x0b, 0xf0, 0x10, 0xbe, 0xaf, 0x83, 0x00, 0x44, 0x27, 0xbd, 0xff, 0x90, + 0x27, 0x82, 0x00, 0x40, 0xaf, 0xb1, 0x00, 0x4c, 0x00, 0x04, 0x88, 0x40, + 0x00, 0x51, 0x10, 0x21, 0x94, 0x42, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x6c, + 0xaf, 0xbe, 0x00, 0x68, 0xaf, 0xb7, 0x00, 0x64, 0xaf, 0xb6, 0x00, 0x60, + 0xaf, 0xb5, 0x00, 0x5c, 0xaf, 0xb4, 0x00, 0x58, 0xaf, 0xb3, 0x00, 0x54, + 0xaf, 0xb2, 0x00, 0x50, 0x14, 0x40, 0x01, 0xfc, 0xaf, 0xb0, 0x00, 0x48, + 0x00, 0xa0, 0xc0, 0x21, 0x00, 0x80, 0x70, 0x21, 0x00, 0x80, 0x28, 0x21, + 0x3c, 0x04, 0x9f, 0xc0, 0x24, 0x84, 0x2d, 0x30, 0x0f, 0xf0, 0x10, 0xbe, + 0x00, 0xc0, 0x78, 0x21, 0x3c, 0x04, 0x9f, 0xc0, 0x24, 0x84, 0x2d, 0x68, + 0x01, 0xe0, 0x38, 0x21, 0x03, 0x00, 0x30, 0x21, 0x0f, 0xf0, 0x10, 0xbe, + 0x01, 0xc0, 0x28, 0x21, 0x27, 0x82, 0x00, 0x20, 0x00, 0x51, 0x10, 0x21, + 0x84, 0x50, 0x00, 0x00, 0x27, 0x82, 0x00, 0x2c, 0x00, 0x51, 0x10, 0x21, + 0x84, 0x52, 0x00, 0x00, 0x24, 0x02, 0x1c, 0x00, 0x71, 0xe2, 0xa0, 0x02, + 0x24, 0x03, 0x22, 0x60, 0x02, 0x83, 0x00, 0x1a, 0x00, 0x12, 0xc9, 0x80, + 0x02, 0x19, 0xc8, 0x23, 0x00, 0x00, 0x98, 0x21, 0x00, 0x00, 0xa0, 0x12, + 0x73, 0x02, 0x10, 0x02, 0x00, 0x43, 0x00, 0x1a, 0x24, 0x03, 0x03, 0xe8, + 0x00, 0x00, 0x10, 0x12, 0x00, 0x54, 0x20, 0x23, 0x02, 0x82, 0x10, 0x23, + 0xaf, 0xa2, 0x00, 0x20, 0x00, 0x0e, 0x10, 0x80, 0xaf, 0xa2, 0x00, 0x24, + 0x3c, 0x02, 0x9f, 0xc0, 0x24, 0x42, 0x2d, 0x94, 0x70, 0x83, 0x18, 0x02, + 0xaf, 0xa2, 0x00, 0x38, 0x3c, 0x02, 0x9f, 0xc0, 0x24, 0x42, 0x2f, 0xb4, + 0xaf, 0xa2, 0x00, 0x3c, 0x3c, 0x02, 0x9f, 0xc0, 0x24, 0x42, 0x2d, 0xf4, + 0xaf, 0xa3, 0x00, 0x1c, 0xaf, 0xa2, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xc0, 0x20, 0x21, 0x0f, 0xf0, 0x11, 0x58, 0x02, 0x00, 0x28, 0x21, + 0x0f, 0xf0, 0x10, 0x54, 0x01, 0xc0, 0x20, 0x21, 0x01, 0xc0, 0x20, 0x21, + 0x24, 0x05, 0x00, 0x01, 0x0f, 0xf0, 0x04, 0xa1, 0x00, 0x40, 0xa8, 0x21, + 0x03, 0x20, 0x28, 0x21, 0x0f, 0xf0, 0x11, 0x58, 0x01, 0xc0, 0x20, 0x21, + 0x0f, 0xf0, 0x10, 0x54, 0x01, 0xc0, 0x20, 0x21, 0x01, 0xc0, 0x20, 0x21, + 0x24, 0x05, 0x00, 0x02, 0x0f, 0xf0, 0x04, 0xa1, 0x00, 0x40, 0xb0, 0x21, + 0x24, 0x02, 0x22, 0x60, 0x72, 0xc2, 0x38, 0x02, 0x72, 0xa2, 0x10, 0x02, + 0x24, 0x03, 0x1c, 0x00, 0x00, 0x43, 0x00, 0x1a, 0x8f, 0xa4, 0x00, 0x38, + 0xaf, 0xb0, 0x00, 0x10, 0x03, 0x20, 0x30, 0x21, 0x01, 0xc0, 0x28, 0x21, + 0x00, 0x00, 0x10, 0x12, 0x00, 0xe3, 0x00, 0x1a, 0xaf, 0xa2, 0x00, 0x14, + 0x0f, 0xf0, 0x10, 0xbe, 0x00, 0x00, 0x38, 0x12, 0x02, 0xb6, 0x68, 0x23, + 0x29, 0xa2, 0x00, 0x08, 0x14, 0x40, 0x00, 0x3d, 0x3c, 0x02, 0x9f, 0xc0, + 0xaf, 0xa2, 0x00, 0x2c, 0x3c, 0x02, 0x9f, 0xc0, 0x3c, 0x03, 0x80, 0x00, + 0xaf, 0xa2, 0x00, 0x30, 0x3c, 0x02, 0x00, 0x03, 0x24, 0x63, 0x70, 0x64, + 0x34, 0x42, 0xfc, 0x00, 0x00, 0x00, 0x38, 0x21, 0x00, 0x00, 0x60, 0x21, + 0xaf, 0xa3, 0x00, 0x18, 0x24, 0x1f, 0x03, 0xe8, 0x10, 0x00, 0x00, 0x16, + 0xaf, 0xa2, 0x00, 0x34, 0x55, 0xc2, 0x00, 0x14, 0x24, 0x63, 0x00, 0x1c, + 0x8f, 0xa2, 0x00, 0x2c, 0x8f, 0xa4, 0x00, 0x34, 0x24, 0x48, 0x2f, 0x78, + 0x8f, 0xa2, 0x00, 0x30, 0x24, 0x66, 0x00, 0x0c, 0x24, 0x69, 0x00, 0x14, + 0x24, 0x42, 0x2f, 0x80, 0x24, 0x77, 0x00, 0x10, 0x00, 0xa4, 0x28, 0x24, + 0x94, 0xca, 0x00, 0x00, 0x2d, 0x44, 0x00, 0x0b, 0x50, 0x80, 0x00, 0x28, + 0x94, 0xc4, 0xff, 0xfc, 0x24, 0xc6, 0x00, 0x02, 0x25, 0x29, 0x00, 0x04, + 0x25, 0x08, 0x00, 0x02, 0x14, 0xd7, 0xff, 0xf8, 0x24, 0x42, 0x00, 0x02, + 0x24, 0x63, 0x00, 0x1c, 0x8c, 0x65, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x1c, + 0x00, 0xa2, 0x58, 0x24, 0x3c, 0x02, 0x00, 0x14, 0x15, 0x62, 0xff, 0xe6, + 0x7c, 0xa2, 0x1d, 0x40, 0x8c, 0xe2, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x1c, + 0x24, 0x07, 0x22, 0x60, 0x00, 0x62, 0x18, 0x24, 0x3c, 0x04, 0x00, 0x0c, + 0x10, 0x64, 0x00, 0x3a, 0x71, 0x87, 0x38, 0x02, 0x24, 0x03, 0x1c, 0x00, + 0x00, 0xe3, 0x00, 0x1a, 0x7c, 0x42, 0x3a, 0x80, 0x3c, 0x04, 0x9f, 0xc0, + 0xaf, 0xa2, 0x00, 0x10, 0x01, 0x80, 0x30, 0x21, 0x01, 0xc0, 0x28, 0x21, + 0x24, 0x84, 0x2d, 0xc8, 0x00, 0x00, 0x38, 0x12, 0x0f, 0xf0, 0x10, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x80, 0x00, 0x36, 0x8f, 0xa2, 0x00, 0x24, + 0x00, 0x00, 0x00, 0x00, 0x27, 0x82, 0x00, 0x40, 0x00, 0x0e, 0x70, 0x40, + 0x00, 0x4e, 0x70, 0x21, 0x24, 0x02, 0x00, 0x01, 0x10, 0x00, 0x01, 0x65, + 0xa5, 0xc2, 0x00, 0x00, 0x00, 0x8a, 0x20, 0x23, 0x28, 0x9e, 0x00, 0x33, + 0x57, 0xc0, 0xff, 0xd7, 0x24, 0xc6, 0x00, 0x02, 0x70, 0x9f, 0x20, 0x02, + 0x3c, 0x1e, 0x00, 0x0c, 0x00, 0x8d, 0x00, 0x1a, 0x00, 0x00, 0x20, 0x12, + 0x11, 0x7e, 0x00, 0x06, 0xaf, 0xa4, 0x00, 0x28, 0x34, 0x1e, 0x94, 0x00, + 0x54, 0xbe, 0x00, 0x09, 0x94, 0x5e, 0x00, 0x00, 0x10, 0x00, 0x00, 0x07, + 0x95, 0x1e, 0x00, 0x00, 0x8c, 0x7e, 0x00, 0x00, 0x8f, 0xa4, 0x00, 0x3c, + 0x7f, 0xde, 0x3a, 0x80, 0x00, 0x1e, 0xf0, 0x40, 0x03, 0xc4, 0xf0, 0x21, + 0x97, 0xde, 0x00, 0x00, 0x03, 0xca, 0x50, 0x23, 0x71, 0x5f, 0xf0, 0x02, + 0x8f, 0xa4, 0x00, 0x28, 0x24, 0x0a, 0x22, 0x60, 0x03, 0xc4, 0x00, 0x1a, + 0x24, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x12, 0x00, 0x96, 0x20, 0x21, + 0x70, 0x8a, 0x50, 0x02, 0x01, 0x5e, 0x00, 0x1a, 0x00, 0x00, 0x50, 0x12, + 0xad, 0x2a, 0x00, 0x00, 0x01, 0x84, 0x50, 0x2a, 0x00, 0x6a, 0x38, 0x0b, + 0x10, 0x00, 0xff, 0xb5, 0x00, 0x8a, 0x60, 0x0b, 0x24, 0x03, 0x1c, 0x00, + 0x00, 0xe3, 0x00, 0x1a, 0x7c, 0x42, 0x3a, 0x80, 0xaf, 0xa2, 0x00, 0x10, + 0x01, 0x80, 0x30, 0x21, 0x01, 0xc0, 0x28, 0x21, 0x8f, 0xa4, 0x00, 0x40, + 0x10, 0x00, 0xff, 0xc8, 0x00, 0x00, 0x38, 0x12, 0x24, 0x03, 0x1c, 0x00, + 0x00, 0x53, 0x28, 0x21, 0x27, 0x82, 0x00, 0x30, 0x00, 0x45, 0x28, 0x21, + 0x24, 0x02, 0x22, 0x60, 0x71, 0x82, 0x20, 0x02, 0xaf, 0xa2, 0x00, 0x2c, + 0x00, 0x83, 0x00, 0x1a, 0xaf, 0xa3, 0x00, 0x28, 0x00, 0x00, 0x20, 0x12, + 0xa4, 0xa4, 0x00, 0x00, 0x27, 0x84, 0x00, 0x38, 0x00, 0x91, 0x20, 0x21, + 0x94, 0x97, 0x00, 0x00, 0x27, 0x84, 0x00, 0x3c, 0x00, 0x91, 0x20, 0x21, + 0x94, 0x96, 0x00, 0x00, 0x8f, 0xa4, 0x00, 0x20, 0x02, 0xf6, 0xf0, 0x23, + 0x03, 0xc4, 0xf0, 0x21, 0x8f, 0xa4, 0x00, 0x1c, 0x24, 0x05, 0xfc, 0x18, + 0x00, 0x9e, 0x00, 0x1a, 0x02, 0xd4, 0x20, 0x23, 0x00, 0x00, 0xf0, 0x12, + 0x70, 0x9e, 0x20, 0x02, 0x00, 0x85, 0x00, 0x1a, 0x24, 0x05, 0x03, 0xe8, + 0x00, 0x00, 0x20, 0x12, 0x71, 0x9e, 0xf0, 0x02, 0x00, 0x94, 0x20, 0x21, + 0x03, 0xc5, 0x00, 0x1a, 0x01, 0xc0, 0x28, 0x21, 0x00, 0x00, 0xf0, 0x12, + 0x00, 0x9e, 0xf0, 0x21, 0x73, 0xc2, 0x30, 0x02, 0x3c, 0x04, 0x9f, 0xc0, + 0x00, 0xc3, 0x00, 0x1a, 0x24, 0x84, 0x2e, 0x20, 0x0f, 0xf0, 0x10, 0xbe, + 0x00, 0x00, 0x30, 0x12, 0x8f, 0xa2, 0x00, 0x2c, 0x01, 0x9e, 0x60, 0x21, + 0x71, 0x82, 0x38, 0x02, 0x8f, 0xa3, 0x00, 0x28, 0x3c, 0x04, 0x9f, 0xc0, + 0x00, 0xe3, 0x00, 0x1a, 0x01, 0x80, 0x30, 0x21, 0x01, 0xc0, 0x28, 0x21, + 0x24, 0x84, 0x2e, 0x40, 0x0f, 0xf0, 0x10, 0xbe, 0x00, 0x00, 0x38, 0x12, + 0x01, 0x96, 0x10, 0x2b, 0x54, 0x40, 0x00, 0x03, 0x02, 0xc0, 0x60, 0x21, + 0x02, 0xec, 0x10, 0x2b, 0x02, 0xe2, 0x60, 0x0b, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x05, 0x27, 0x10, 0x02, 0x19, 0x10, 0x23, 0x70, 0x45, 0x10, 0x02, + 0x01, 0x95, 0xa8, 0x23, 0x00, 0x4d, 0x00, 0x1a, 0x26, 0x73, 0x00, 0x02, + 0x00, 0x00, 0x68, 0x12, 0x71, 0xb5, 0x60, 0x02, 0x01, 0x85, 0x00, 0x1a, + 0x00, 0x00, 0x60, 0x12, 0x01, 0x90, 0x60, 0x21, 0x02, 0x0c, 0x10, 0x2b, + 0x01, 0x82, 0x80, 0x0b, 0x25, 0x82, 0x00, 0x20, 0x00, 0x59, 0x18, 0x2b, + 0x00, 0x43, 0xc8, 0x0b, 0x24, 0x02, 0x00, 0x04, 0x16, 0x62, 0xff, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x82, 0x00, 0x1c, + 0x7c, 0x18, 0x6e, 0x20, 0x00, 0x51, 0x10, 0x21, 0xa4, 0x4d, 0x00, 0x00, + 0x00, 0x12, 0x29, 0x00, 0x27, 0x82, 0x00, 0x18, 0x7c, 0x0f, 0x7e, 0x20, + 0x00, 0x51, 0x88, 0x21, 0x00, 0xac, 0x28, 0x21, 0x01, 0xc0, 0x20, 0x21, + 0x0f, 0xf0, 0x11, 0x58, 0xa6, 0x2f, 0x00, 0x00, 0x24, 0x05, 0x22, 0x60, + 0x72, 0xe5, 0xb8, 0x02, 0x01, 0xaf, 0x10, 0x23, 0x24, 0x03, 0x03, 0xe8, + 0x70, 0x43, 0x20, 0x02, 0x24, 0x02, 0x1c, 0x00, 0x72, 0xc5, 0xb0, 0x02, + 0x02, 0xe2, 0x00, 0x1a, 0x24, 0x18, 0xe4, 0x00, 0x3c, 0x09, 0x00, 0x03, + 0x3c, 0x0a, 0x9f, 0xc0, 0x3c, 0x0b, 0x9f, 0xc0, 0x8f, 0xa6, 0x00, 0x18, + 0x3c, 0x12, 0x9f, 0xc0, 0x3c, 0x13, 0x9f, 0xc0, 0x3c, 0x14, 0x9f, 0xc0, + 0x3c, 0x15, 0x9f, 0xc0, 0x35, 0x29, 0xfc, 0x00, 0x25, 0x4a, 0x2f, 0xb4, + 0x25, 0x6b, 0x2f, 0x84, 0x00, 0x00, 0xb8, 0x12, 0x02, 0xd8, 0x00, 0x1a, + 0x00, 0x00, 0xc0, 0x12, 0x02, 0xf8, 0xb8, 0x21, 0x01, 0xed, 0xc0, 0x23, + 0x02, 0xf8, 0xc0, 0x21, 0x00, 0x98, 0x00, 0x1a, 0x34, 0x17, 0x94, 0x00, + 0x24, 0x04, 0x03, 0xe8, 0x00, 0x00, 0x18, 0x12, 0x02, 0xc2, 0x00, 0x1a, + 0x24, 0x02, 0xfc, 0x18, 0x00, 0x00, 0xb0, 0x12, 0x02, 0xcf, 0xb0, 0x23, + 0x72, 0xc3, 0xb0, 0x02, 0x02, 0xc2, 0x00, 0x1a, 0x00, 0x00, 0xb0, 0x12, + 0x02, 0xcf, 0x10, 0x21, 0xaf, 0xa2, 0x00, 0x1c, 0x3c, 0x16, 0x00, 0x0c, + 0x8c, 0xc8, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x1c, 0x01, 0x02, 0xf8, 0x24, + 0x3c, 0x02, 0x00, 0x14, 0x13, 0xe2, 0x00, 0x4d, 0x7d, 0x02, 0x1d, 0x40, + 0x11, 0xc2, 0x00, 0x03, 0x24, 0xc7, 0x00, 0x0c, 0x10, 0x00, 0xff, 0xf7, + 0x24, 0xc6, 0x00, 0x1c, 0x26, 0x59, 0x2f, 0x78, 0x26, 0x78, 0x2f, 0x74, + 0x26, 0x8f, 0x2f, 0x80, 0x26, 0xad, 0x2f, 0x7c, 0x24, 0xcc, 0x00, 0x14, + 0x24, 0xde, 0x00, 0x10, 0x01, 0x09, 0x40, 0x24, 0x94, 0xe2, 0x00, 0x00, + 0x2c, 0x42, 0x00, 0x0b, 0x54, 0x40, 0x00, 0x36, 0x24, 0xe7, 0x00, 0x02, + 0x8d, 0x82, 0x00, 0x00, 0x8f, 0xa5, 0x00, 0x1c, 0x70, 0x62, 0x10, 0x02, + 0x00, 0x44, 0x00, 0x1b, 0x00, 0x00, 0x10, 0x12, 0x00, 0x45, 0x10, 0x21, + 0x17, 0xf6, 0x00, 0x13, 0x24, 0x45, 0x00, 0x0a, 0x8c, 0xd0, 0x00, 0x00, + 0x7e, 0x10, 0x3a, 0x80, 0x00, 0x10, 0x80, 0x40, 0x02, 0x0a, 0x88, 0x21, + 0x02, 0x0b, 0x80, 0x21, 0x96, 0x10, 0x00, 0x00, 0x96, 0x31, 0x00, 0x00, + 0x70, 0x50, 0x10, 0x02, 0x00, 0x44, 0x00, 0x1a, 0x00, 0x00, 0x10, 0x12, + 0x70, 0xb0, 0x28, 0x02, 0x02, 0x22, 0x10, 0x21, 0x00, 0xa4, 0x00, 0x1a, + 0xa4, 0xc2, 0x00, 0x0c, 0x00, 0x00, 0x28, 0x12, 0x02, 0x25, 0x88, 0x21, + 0x10, 0x00, 0x00, 0x1b, 0xa4, 0xd1, 0x00, 0x08, 0x55, 0x17, 0x00, 0x0e, + 0x95, 0xb1, 0x00, 0x00, 0x97, 0x10, 0x00, 0x00, 0x97, 0x31, 0x00, 0x00, + 0x70, 0x50, 0x10, 0x02, 0x00, 0x44, 0x00, 0x1a, 0x00, 0x00, 0x10, 0x12, + 0x70, 0xb0, 0x28, 0x02, 0x02, 0x22, 0x10, 0x21, 0x00, 0xa4, 0x00, 0x1a, + 0xa4, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x28, 0x12, 0x02, 0x25, 0x88, 0x21, + 0x10, 0x00, 0x00, 0x0c, 0xa4, 0xf1, 0xff, 0xfc, 0x95, 0xf0, 0x00, 0x00, + 0x70, 0x51, 0x10, 0x02, 0x00, 0x44, 0x00, 0x1a, 0x00, 0x00, 0x10, 0x12, + 0x70, 0xb1, 0x28, 0x02, 0x02, 0x02, 0x10, 0x21, 0x00, 0xa4, 0x00, 0x1a, + 0xa4, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x28, 0x12, 0x02, 0x05, 0x80, 0x21, + 0xa4, 0xf0, 0xff, 0xfc, 0x24, 0xe7, 0x00, 0x02, 0x27, 0x39, 0x00, 0x02, + 0x27, 0x18, 0x00, 0x02, 0x25, 0xef, 0x00, 0x02, 0x25, 0xad, 0x00, 0x02, + 0x14, 0xfe, 0xff, 0xc2, 0x25, 0x8c, 0x00, 0x04, 0x10, 0x00, 0xff, 0xaf, + 0x24, 0xc6, 0x00, 0x1c, 0x8f, 0xa2, 0x00, 0x18, 0x00, 0x00, 0x58, 0x21, + 0x00, 0x00, 0x40, 0x21, 0x00, 0x00, 0x50, 0x21, 0x00, 0x00, 0x38, 0x21, + 0x00, 0x00, 0x28, 0x21, 0x00, 0x00, 0x20, 0x21, 0x3c, 0x0c, 0x00, 0x1c, + 0x3c, 0x09, 0x00, 0x14, 0x3c, 0x0d, 0x00, 0x0c, 0x24, 0x0f, 0x00, 0x01, + 0x24, 0x18, 0x00, 0x03, 0x8c, 0x43, 0x00, 0x00, 0x01, 0x83, 0x30, 0x24, + 0x50, 0xc9, 0x00, 0x15, 0x00, 0xa7, 0x10, 0x25, 0x54, 0xcd, 0xff, 0xfb, + 0x24, 0x42, 0x00, 0x1c, 0x7c, 0x66, 0x1d, 0x40, 0x55, 0xc6, 0xff, 0xf8, + 0x24, 0x42, 0x00, 0x1c, 0x7c, 0x63, 0x3a, 0x80, 0x50, 0x6f, 0x00, 0x0a, + 0x94, 0x45, 0x00, 0x0c, 0x50, 0x60, 0x00, 0x06, 0x94, 0x44, 0x00, 0x0c, + 0x54, 0x78, 0xff, 0xf1, 0x24, 0x42, 0x00, 0x1c, 0x94, 0x47, 0x00, 0x0c, + 0x10, 0x00, 0x00, 0x04, 0x94, 0x4b, 0x00, 0x08, 0x10, 0x00, 0x00, 0x02, + 0x94, 0x4a, 0x00, 0x08, 0x94, 0x48, 0x00, 0x08, 0x10, 0x00, 0xff, 0xe9, + 0x24, 0x42, 0x00, 0x1c, 0x00, 0x82, 0x10, 0x25, 0x10, 0x40, 0x00, 0x0f, + 0x8f, 0xa2, 0x00, 0x18, 0x3c, 0x06, 0x00, 0x03, 0x3c, 0x0f, 0x00, 0x1c, + 0x3c, 0x0d, 0x00, 0x14, 0x3c, 0x18, 0x00, 0x0c, 0x34, 0xc6, 0xfc, 0x00, + 0x10, 0x00, 0x00, 0x04, 0x34, 0x0c, 0x94, 0x00, 0x15, 0x38, 0x00, 0x1c, + 0x7c, 0x69, 0x1d, 0x40, 0x24, 0x42, 0x00, 0x1c, 0x8c, 0x43, 0x00, 0x00, + 0x00, 0x6f, 0x48, 0x24, 0x15, 0x2d, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xf0, 0x10, 0x54, 0x01, 0xc0, 0x20, 0x21, 0x24, 0x06, 0x22, 0x60, + 0x70, 0x46, 0x10, 0x02, 0x24, 0x06, 0x1c, 0x00, 0x00, 0x46, 0x00, 0x1a, + 0x8f, 0xbf, 0x00, 0x6c, 0x8f, 0xbe, 0x00, 0x68, 0x8f, 0xb7, 0x00, 0x64, + 0x8f, 0xb6, 0x00, 0x60, 0x8f, 0xb5, 0x00, 0x5c, 0x8f, 0xb4, 0x00, 0x58, + 0x8f, 0xb3, 0x00, 0x54, 0x8f, 0xb2, 0x00, 0x50, 0x8f, 0xb1, 0x00, 0x4c, + 0x8f, 0xb0, 0x00, 0x48, 0x3c, 0x04, 0x9f, 0xc0, 0x01, 0xc0, 0x28, 0x21, + 0x24, 0x84, 0x2e, 0x68, 0x27, 0xbd, 0x00, 0x70, 0x0b, 0xf0, 0x10, 0xbe, + 0x00, 0x00, 0x30, 0x12, 0x55, 0xc9, 0xff, 0xe5, 0x24, 0x42, 0x00, 0x1c, + 0x94, 0x49, 0x00, 0x0c, 0x2d, 0x29, 0x00, 0x0b, 0x55, 0x20, 0x00, 0x04, + 0x94, 0x49, 0x00, 0x0e, 0xa4, 0x45, 0x00, 0x0c, 0xa4, 0x48, 0x00, 0x08, + 0x94, 0x49, 0x00, 0x0e, 0x2d, 0x29, 0x00, 0x0b, 0x55, 0x20, 0xff, 0xdb, + 0x24, 0x42, 0x00, 0x1c, 0x00, 0x66, 0x18, 0x24, 0x10, 0x6c, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0xa4, 0x47, 0x00, 0x0e, 0x10, 0x00, 0xff, 0xd4, + 0xa4, 0x4b, 0x00, 0x0a, 0x50, 0x80, 0xff, 0xd3, 0x24, 0x42, 0x00, 0x1c, + 0xa4, 0x44, 0x00, 0x0e, 0x10, 0x00, 0xff, 0xcf, 0xa4, 0x4a, 0x00, 0x0a, + 0x8f, 0xbf, 0x00, 0x6c, 0x8f, 0xbe, 0x00, 0x68, 0x8f, 0xb7, 0x00, 0x64, + 0x8f, 0xb6, 0x00, 0x60, 0x8f, 0xb5, 0x00, 0x5c, 0x8f, 0xb4, 0x00, 0x58, + 0x8f, 0xb3, 0x00, 0x54, 0x8f, 0xb2, 0x00, 0x50, 0x8f, 0xb1, 0x00, 0x4c, + 0x8f, 0xb0, 0x00, 0x48, 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x70, + 0x27, 0xbd, 0xff, 0xe0, 0xaf, 0xbf, 0x00, 0x1c, 0xaf, 0xb0, 0x00, 0x18, + 0x94, 0x8c, 0x00, 0x08, 0x94, 0x8d, 0x00, 0x0c, 0x8c, 0x8f, 0x00, 0x04, + 0x24, 0x02, 0x04, 0x0b, 0x94, 0x98, 0x00, 0x0a, 0x94, 0x99, 0x00, 0x0e, + 0x00, 0x4c, 0x60, 0x0a, 0x24, 0x02, 0x03, 0x00, 0x00, 0x80, 0x70, 0x21, + 0x00, 0x4d, 0x68, 0x0a, 0x7d, 0xef, 0x1d, 0x00, 0x3c, 0x04, 0x9f, 0xc0, + 0x3c, 0x02, 0x80, 0x00, 0x24, 0x84, 0x2e, 0x90, 0xaf, 0xad, 0x00, 0x14, + 0xaf, 0xac, 0x00, 0x10, 0x03, 0x20, 0x38, 0x21, 0x03, 0x00, 0x30, 0x21, + 0x01, 0xe0, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0xbe, 0xac, 0x40, 0x70, 0x00, + 0x0f, 0xf0, 0x05, 0x29, 0x01, 0xc0, 0x20, 0x21, 0x14, 0x40, 0x00, 0x28, + 0x01, 0x8d, 0x10, 0x2a, 0x50, 0x40, 0x00, 0x03, 0x24, 0x04, 0x1c, 0x00, + 0x10, 0x00, 0x00, 0x23, 0x24, 0x02, 0x00, 0x07, 0x71, 0xa4, 0x68, 0x02, + 0x24, 0x02, 0x22, 0x60, 0x01, 0xa2, 0x00, 0x1a, 0x00, 0x0f, 0x80, 0x40, + 0x27, 0x83, 0x00, 0x3c, 0x00, 0x70, 0x18, 0x21, 0x00, 0x00, 0x68, 0x12, + 0x71, 0x84, 0x60, 0x02, 0xa4, 0x6d, 0x00, 0x00, 0x01, 0x82, 0x00, 0x1a, + 0x27, 0x83, 0x00, 0x38, 0x95, 0xc2, 0x00, 0x0c, 0x00, 0x70, 0x18, 0x21, + 0x00, 0x00, 0x60, 0x12, 0x10, 0x40, 0x00, 0x04, 0xa4, 0x6c, 0x00, 0x00, + 0x27, 0x82, 0x00, 0x28, 0x00, 0x50, 0x10, 0x21, 0xa4, 0x40, 0x00, 0x00, + 0x95, 0xc2, 0x00, 0x08, 0x10, 0x40, 0x00, 0x05, 0x03, 0x20, 0x30, 0x21, + 0x27, 0x82, 0x00, 0x24, 0x00, 0x50, 0x10, 0x21, 0x24, 0x03, 0x03, 0xff, + 0xa4, 0x43, 0x00, 0x00, 0x03, 0x00, 0x28, 0x21, 0x0f, 0xf0, 0x08, 0x0f, + 0x01, 0xe0, 0x20, 0x21, 0x27, 0x82, 0x00, 0x40, 0x00, 0x50, 0x80, 0x21, + 0x96, 0x02, 0x00, 0x00, 0x10, 0x40, 0x00, 0x02, 0x24, 0x02, 0x00, 0x04, + 0xa3, 0x82, 0x00, 0x62, 0x8f, 0xbf, 0x00, 0x1c, 0x8f, 0xb0, 0x00, 0x18, + 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x20, 0x93, 0x83, 0x00, 0x63, + 0x14, 0x60, 0x00, 0x03, 0x24, 0x02, 0x00, 0x64, 0x24, 0x02, 0x03, 0xe8, + 0x70, 0x82, 0x10, 0x02, 0x0b, 0xf0, 0x10, 0x00, 0x00, 0x40, 0x20, 0x21, + 0x3c, 0x02, 0x80, 0x00, 0x8c, 0x46, 0x70, 0x00, 0x24, 0x02, 0xff, 0xff, + 0x14, 0xc2, 0x00, 0x03, 0x8f, 0x85, 0x00, 0x4c, 0x03, 0xe0, 0x00, 0x08, + 0xaf, 0x80, 0x00, 0x58, 0x8f, 0x83, 0x00, 0x58, 0x24, 0xa2, 0xff, 0xff, + 0x00, 0x46, 0x10, 0x21, 0x00, 0x43, 0x10, 0x23, 0x00, 0x45, 0x00, 0x1a, + 0x00, 0x00, 0x10, 0x10, 0x10, 0x40, 0x00, 0x06, 0x8f, 0x82, 0x00, 0x48, + 0x00, 0x43, 0x10, 0x21, 0x24, 0x63, 0x00, 0x01, 0x10, 0xa3, 0xff, 0xf3, + 0xa0, 0x44, 0x00, 0x00, 0xaf, 0x83, 0x00, 0x58, 0x03, 0xe0, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x4d, 0x43, 0x20, 0x63, 0x6d, 0x64, 0x20, + 0x25, 0x64, 0x20, 0x65, 0x72, 0x72, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, + 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x53, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x3a, 0x20, 0x74, 0x72, 0x61, 0x63, + 0x6b, 0x74, 0x65, 0x6d, 0x70, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, + 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x20, 0x53, 0x65, + 0x74, 0x44, 0x61, 0x63, 0x20, 0x25, 0x64, 0x40, 0x25, 0x64, 0x6d, 0x56, + 0x0a, 0x00, 0x00, 0x00, 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, + 0x5d, 0x5b, 0x25, 0x30, 0x33, 0x64, 0x43, 0x5d, 0x5b, 0x25, 0x30, 0x34, + 0x64, 0x6d, 0x56, 0x5d, 0x5b, 0x52, 0x34, 0x38, 0x3a, 0x25, 0x30, 0x32, + 0x64, 0x5d, 0x5b, 0x2d, 0x2d, 0x4c, 0x4f, 0x2d, 0x2d, 0x3a, 0x25, 0x30, + 0x35, 0x64, 0x5d, 0x5b, 0x2d, 0x2d, 0x48, 0x49, 0x2d, 0x2d, 0x3a, 0x25, + 0x30, 0x35, 0x64, 0x5d, 0x0a, 0x00, 0x00, 0x00, 0x5b, 0x52, 0x61, 0x69, + 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x5b, 0x25, 0x30, 0x33, 0x64, 0x43, 0x5d, + 0x5b, 0x25, 0x30, 0x34, 0x64, 0x6d, 0x56, 0x5d, 0x5b, 0x52, 0x45, 0x4d, + 0x3a, 0x25, 0x30, 0x32, 0x64, 0x5d, 0x5b, 0x53, 0x56, 0x54, 0x5f, 0x4c, + 0x4f, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, 0x53, 0x56, 0x54, 0x5f, + 0x48, 0x49, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, 0x4c, 0x56, 0x54, + 0x5f, 0x4c, 0x4f, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, 0x4c, 0x56, + 0x54, 0x5f, 0x48, 0x49, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x0a, 0x00, + 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x5b, 0x25, 0x30, + 0x33, 0x64, 0x43, 0x5d, 0x5b, 0x25, 0x30, 0x34, 0x64, 0x6d, 0x56, 0x5d, + 0x5b, 0x52, 0x45, 0x4d, 0x3a, 0x25, 0x30, 0x32, 0x64, 0x5d, 0x5b, 0x53, + 0x56, 0x54, 0x5f, 0x4c, 0x4f, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, + 0x53, 0x56, 0x54, 0x5f, 0x48, 0x49, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, + 0x5b, 0x48, 0x56, 0x54, 0x5f, 0x4c, 0x4f, 0x3a, 0x25, 0x30, 0x35, 0x64, + 0x5d, 0x5b, 0x48, 0x56, 0x54, 0x5f, 0x48, 0x49, 0x3a, 0x25, 0x30, 0x35, + 0x64, 0x5d, 0x0a, 0x00, 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, + 0x5d, 0x5b, 0x25, 0x30, 0x33, 0x64, 0x43, 0x5d, 0x5b, 0x25, 0x30, 0x34, + 0x64, 0x6d, 0x56, 0x5d, 0x5b, 0x52, 0x34, 0x38, 0x3a, 0x25, 0x30, 0x32, + 0x64, 0x5d, 0x5b, 0x2d, 0x2d, 0x2d, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, + 0x0a, 0x00, 0x00, 0x00, 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, + 0x5d, 0x5b, 0x25, 0x30, 0x33, 0x64, 0x43, 0x5d, 0x5b, 0x25, 0x30, 0x34, + 0x64, 0x6d, 0x56, 0x5d, 0x5b, 0x52, 0x45, 0x4d, 0x3a, 0x25, 0x30, 0x32, + 0x64, 0x5d, 0x5b, 0x53, 0x56, 0x54, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, + 0x5b, 0x4c, 0x56, 0x54, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x0a, 0x00, + 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x5b, 0x25, 0x30, + 0x33, 0x64, 0x43, 0x5d, 0x5b, 0x25, 0x30, 0x34, 0x64, 0x6d, 0x56, 0x5d, + 0x5b, 0x52, 0x45, 0x4d, 0x3a, 0x25, 0x30, 0x32, 0x64, 0x5d, 0x5b, 0x53, + 0x56, 0x54, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, 0x48, 0x56, 0x54, + 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x0a, 0x00, 0x2b, 0x2b, 0x41, 0x4c, + 0x45, 0x52, 0x54, 0x5f, 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x25, 0x64, 0x2b, + 0x2b, 0x0a, 0x00, 0x00, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, + 0x64, 0x20, 0x62, 0x79, 0x20, 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, + 0x64, 0x5d, 0x5b, 0x52, 0x34, 0x38, 0x3a, 0x25, 0x30, 0x32, 0x64, 0x5d, + 0x5b, 0x54, 0x68, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, 0x43, 0x6e, + 0x74, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, + 0x20, 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x5b, 0x53, + 0x56, 0x54, 0x3a, 0x25, 0x30, 0x32, 0x64, 0x5d, 0x5b, 0x54, 0x68, 0x3a, + 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, 0x43, 0x6e, 0x74, 0x3a, 0x25, 0x30, + 0x35, 0x64, 0x5d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x5b, 0x52, 0x61, + 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x5b, 0x48, 0x56, 0x54, 0x3a, 0x25, + 0x30, 0x32, 0x64, 0x5d, 0x5b, 0x54, 0x68, 0x3a, 0x25, 0x30, 0x35, 0x64, + 0x5d, 0x5b, 0x43, 0x6e, 0x74, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x2d, 0x2d, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, + 0x72, 0x61, 0x69, 0x6c, 0x5f, 0x25, 0x64, 0x2d, 0x2d, 0x0a, 0x00, 0x00, + 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x5b, 0x25, 0x30, + 0x33, 0x64, 0x43, 0x5d, 0x5b, 0x25, 0x30, 0x34, 0x64, 0x6d, 0x56, 0x5d, + 0x5b, 0x6c, 0x76, 0x74, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, 0x73, + 0x76, 0x74, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, 0x68, 0x76, 0x74, + 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, 0x61, 0x72, 0x6d, 0x5f, 0x6c, + 0x76, 0x74, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x5b, 0x61, 0x72, 0x6d, + 0x5f, 0x73, 0x76, 0x74, 0x3a, 0x25, 0x30, 0x35, 0x64, 0x5d, 0x0a, 0x00, + 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x20, 0x43, 0x6c, + 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x20, 0x28, 0x6e, 0x65, 0x77, 0x29, + 0x3a, 0x20, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x70, 0x72, 0x65, 0x2d, + 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x20, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x0a, 0x00, 0x5b, 0x52, 0x61, 0x69, + 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x20, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, + 0x56, 0x53, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x73, 0x6c, + 0x6f, 0x77, 0x3a, 0x25, 0x64, 0x2c, 0x20, 0x66, 0x61, 0x73, 0x74, 0x3a, + 0x25, 0x64, 0x0a, 0x00, 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, + 0x5d, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x20, 0x64, 0x61, + 0x63, 0x2d, 0x6c, 0x6f, 0x20, 0x25, 0x64, 0x40, 0x25, 0x64, 0x6d, 0x56, + 0x2c, 0x20, 0x64, 0x61, 0x63, 0x2d, 0x68, 0x69, 0x20, 0x25, 0x64, 0x40, + 0x25, 0x64, 0x6d, 0x56, 0x0a, 0x00, 0x00, 0x00, 0x5b, 0x52, 0x61, 0x69, + 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x20, 0x25, 0x64, 0x40, 0x25, 0x64, 0x6d, 0x56, 0x20, 0x62, 0x79, + 0x20, 0x52, 0x45, 0x4d, 0x20, 0x52, 0x4f, 0x5b, 0x25, 0x64, 0x5d, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, + 0x5d, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x20, 0x25, 0x64, + 0x40, 0x25, 0x64, 0x6d, 0x56, 0x20, 0x62, 0x79, 0x20, 0x52, 0x34, 0x38, + 0x20, 0x52, 0x4f, 0x5b, 0x25, 0x64, 0x5d, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x20, 0x43, 0x61, + 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, + 0x6e, 0x20, 0x25, 0x64, 0x6d, 0x56, 0x0a, 0x00, 0x5b, 0x52, 0x61, 0x69, + 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6d, 0x61, 0x72, 0x67, 0x69, + 0x6e, 0x20, 0x25, 0x64, 0x40, 0x25, 0x64, 0x6d, 0x56, 0x0a, 0x00, 0x00, + 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x20, 0x43, 0x6c, + 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x20, 0x76, 0x6f, 0x6c, 0x74, 0x61, + 0x67, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x20, 0x25, + 0x64, 0x0a, 0x00, 0x00, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x43, 0x6c, + 0x6f, 0x73, 0x65, 0x41, 0x56, 0x53, 0x3a, 0x20, 0x72, 0x61, 0x69, 0x6c, + 0x20, 0x25, 0x64, 0x20, 0x73, 0x6c, 0x6f, 0x77, 0x20, 0x25, 0x64, 0x20, + 0x66, 0x61, 0x73, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x78, 0x20, + 0x25, 0x64, 0x20, 0x6d, 0x69, 0x6e, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, + 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x20, 0x73, 0x69, + 0x67, 0x6d, 0x61, 0x20, 0x70, 0x72, 0x65, 0x5f, 0x64, 0x61, 0x63, 0x20, + 0x25, 0x64, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x5f, 0x61, 0x64, 0x63, 0x20, + 0x25, 0x64, 0x2c, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x64, 0x61, 0x63, + 0x20, 0x25, 0x64, 0x2c, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x61, 0x64, + 0x63, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x5b, 0x52, 0x61, 0x69, + 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x20, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x20, + 0x64, 0x61, 0x63, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x20, 0x25, 0x64, 0x2c, + 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6d, 0x69, 0x6e, 0x20, 0x25, 0x64, 0x2c, + 0x20, 0x64, 0x61, 0x63, 0x5f, 0x6d, 0x61, 0x78, 0x20, 0x25, 0x64, 0x2c, + 0x20, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, + 0x5b, 0x52, 0x61, 0x69, 0x6c, 0x3a, 0x25, 0x64, 0x5d, 0x20, 0x73, 0x69, + 0x67, 0x6d, 0x61, 0x20, 0x73, 0x76, 0x74, 0x20, 0x25, 0x64, 0x20, 0x68, + 0x76, 0x74, 0x20, 0x25, 0x64, 0x20, 0x61, 0x76, 0x67, 0x20, 0x25, 0x64, + 0x0a, 0x00, 0x00, 0x00, 0x1c, 0x8f, 0x1a, 0x54, 0x0d, 0x49, 0x0e, 0x13, + 0x1c, 0x8f, 0x18, 0xc7, 0x0d, 0x49, 0x07, 0x0a, 0x1a, 0x54, 0x1c, 0x8f, + 0x1a, 0x0c, 0x18, 0xc7, 0x26, 0x77, 0x2e, 0x9d, 0x22, 0x40, 0x1f, 0x6d, + 0x74, 0xbb, 0x70, 0xeb, 0x60, 0x13, 0x58, 0x4b, 0x55, 0x24, 0x58, 0xba, + 0x49, 0x29, 0x45, 0x2f, 0x78, 0x37, 0x6e, 0x7c, 0x45, 0xc8, 0x42, 0xf7, + 0x36, 0xe6, 0x33, 0x2c, 0x24, 0xf4, 0x21, 0xe8, 0x0e, 0x13, 0x0d, 0x49, + 0x0a, 0xe1, 0x07, 0x0b, 0x13, 0x12, 0x11, 0xb0, 0x0e, 0x81, 0x09, 0x7a, + 0x36, 0xe5, 0x32, 0x5c, 0x29, 0xc9, 0x1a, 0xbf, 0x27, 0xca, 0x23, 0x30, + 0x1d, 0x47, 0x12, 0x6b, 0x25, 0x2a, 0x20, 0x68, 0x1b, 0x2f, 0x11, 0xc6, + 0x15, 0xaa, 0x12, 0xd8, 0x10, 0x02, 0x0a, 0x31, 0x9f, 0xc0, 0x15, 0xa0, + 0x9f, 0xc0, 0x15, 0xc4, 0x9f, 0xc0, 0x15, 0xf4, 0x9f, 0xc0, 0x16, 0x28, + 0x9f, 0xc0, 0x16, 0x5c, 0x9f, 0xc0, 0x16, 0x8c, 0x00, 0x00, 0x00, 0x00, + 0x9f, 0xc0, 0x16, 0x94, 0x9f, 0xc0, 0x17, 0x48, 0x9f, 0xc0, 0x17, 0xc8, + 0x9f, 0xc0, 0x18, 0x48, 0x9f, 0xc0, 0x1a, 0xbc, 0x9f, 0xc0, 0x19, 0xf0, + 0x9f, 0xc0, 0x1b, 0x10, 0x9f, 0xc0, 0x1a, 0x54, 0x9f, 0xc0, 0x19, 0x04, + 0x9f, 0xc0, 0x19, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xc0, 0x1b, 0x60, + 0x9f, 0xc0, 0x1b, 0xc4, 0x9f, 0xc0, 0x19, 0xb4, 0x9f, 0xc0, 0x1c, 0x18, + 0x9f, 0xc0, 0x1c, 0x6c, 0x9f, 0xc0, 0x1c, 0xb0, 0x9f, 0xc0, 0x1d, 0x04, + 0x9f, 0xc0, 0x1d, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9f, 0xc0, 0x15, 0xac, 0x9f, 0xc0, 0x1d, 0xc4, 0x9f, 0xc0, 0x1e, 0x08, + 0x9f, 0xc0, 0x1e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xc0, 0x1e, 0x4c, + 0x9f, 0xc0, 0x28, 0x98, 0x9f, 0xc0, 0x1e, 0x6c, 0x9f, 0xc0, 0x20, 0x08, + 0x9f, 0xc0, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x02, 0xa0, 0x00, 0x00, 0x82, 0x20, 0x25, + 0x3c, 0x02, 0xb6, 0x00, 0xac, 0x44, 0x10, 0x18, 0x3c, 0x03, 0xb6, 0x00, + 0x8c, 0x62, 0x10, 0x18, 0x04, 0x40, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x22, 0x40, + 0x3c, 0x07, 0xb6, 0x08, 0x00, 0xe4, 0x38, 0x21, 0x8c, 0xe2, 0x01, 0x20, + 0x30, 0x43, 0x00, 0x01, 0x10, 0x60, 0x00, 0x23, 0x00, 0x00, 0x40, 0x21, + 0x10, 0xa0, 0x00, 0x1b, 0x24, 0xe4, 0x01, 0x2c, 0x7c, 0x43, 0x11, 0x00, + 0x14, 0xa3, 0x00, 0x05, 0x7c, 0x43, 0x12, 0x00, 0x30, 0x43, 0x00, 0x80, + 0x14, 0x60, 0x00, 0x15, 0x24, 0xe4, 0x01, 0x30, 0x7c, 0x43, 0x12, 0x00, + 0x14, 0xa3, 0x00, 0x05, 0x7c, 0x43, 0x13, 0x00, 0x30, 0x43, 0x08, 0x00, + 0x14, 0x60, 0x00, 0x0f, 0x24, 0xe4, 0x01, 0x34, 0x7c, 0x43, 0x13, 0x00, + 0x14, 0xa3, 0x00, 0x04, 0x24, 0xe4, 0x01, 0x38, 0x30, 0x43, 0x80, 0x00, + 0x14, 0x60, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x02, 0x7b, 0xc4, + 0xac, 0xe2, 0x01, 0x20, 0x8c, 0xe3, 0x01, 0x38, 0x24, 0x03, 0x00, 0x01, + 0x7c, 0x62, 0x7b, 0xc4, 0x7c, 0xa2, 0x73, 0x04, 0xac, 0xe2, 0x01, 0x20, + 0x8c, 0xe2, 0x01, 0x38, 0x8c, 0x83, 0x00, 0x00, 0x30, 0x62, 0x80, 0x00, + 0x14, 0x40, 0xff, 0xfd, 0x30, 0x62, 0x03, 0xff, 0x03, 0xe0, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x7c, 0xa8, 0x31, 0x04, 0x24, 0x05, 0x00, 0x01, + 0x7c, 0xa8, 0x18, 0xc4, 0x27, 0xbd, 0xff, 0xe8, 0x7c, 0xa8, 0x08, 0x44, + 0x24, 0x04, 0x00, 0x32, 0xaf, 0xbf, 0x00, 0x14, 0xac, 0xe8, 0x01, 0x00, + 0x0f, 0xf0, 0x10, 0x00, 0x7c, 0xa8, 0x00, 0x04, 0xac, 0xe8, 0x01, 0x00, + 0x8c, 0xe2, 0x01, 0x10, 0x24, 0x02, 0x00, 0x0a, 0x8c, 0xe3, 0x01, 0x10, + 0x30, 0x63, 0x80, 0x00, 0x14, 0x60, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x42, 0xff, 0xff, 0x14, 0x40, 0xff, 0xfa, 0x00, 0x00, 0x20, 0x21, + 0x50, 0x86, 0x00, 0x08, 0x00, 0x44, 0x00, 0x1b, 0x8c, 0xe3, 0x01, 0x10, + 0x30, 0x65, 0x80, 0x00, 0x14, 0xa0, 0xff, 0xfd, 0x30, 0x63, 0x03, 0xff, + 0x00, 0x43, 0x10, 0x21, 0x10, 0x00, 0xff, 0xf8, 0x24, 0x84, 0x00, 0x01, + 0x8f, 0xbf, 0x00, 0x14, 0x27, 0xbd, 0x00, 0x18, 0x03, 0xe0, 0x00, 0x08, + 0x00, 0x00, 0x10, 0x12, 0x24, 0x06, 0x00, 0x20, 0x0b, 0xf0, 0x10, 0x0a, + 0x24, 0x05, 0x00, 0x03, 0x8c, 0x83, 0x00, 0x00, 0x00, 0x05, 0x28, 0x82, + 0x7c, 0x64, 0x14, 0x80, 0x00, 0x04, 0x11, 0x40, 0x3c, 0x04, 0xb6, 0x08, + 0x24, 0x84, 0x00, 0xc0, 0x00, 0x44, 0x20, 0x21, 0x7c, 0x62, 0x3a, 0x80, + 0x3c, 0x03, 0x01, 0x00, 0x7c, 0x43, 0x9b, 0x04, 0x7c, 0xa3, 0x58, 0x04, + 0x24, 0x02, 0x00, 0x01, 0xac, 0x83, 0x00, 0x00, 0x7c, 0x43, 0xff, 0xc4, + 0xac, 0x83, 0x00, 0x00, 0x3c, 0x05, 0x80, 0x00, 0x8c, 0x83, 0x00, 0x00, + 0x00, 0x65, 0x10, 0x24, 0x14, 0x40, 0xff, 0xfd, 0x7c, 0x63, 0x07, 0x80, + 0x10, 0x60, 0x00, 0x03, 0x24, 0x03, 0x00, 0x08, 0x03, 0xe0, 0x00, 0x08, + 0xa3, 0x83, 0x00, 0x62, 0x8c, 0x82, 0x00, 0x0c, 0x03, 0xe0, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x03, 0xb6, 0x08, 0xac, 0x60, 0x02, 0x80, + 0x8c, 0x64, 0x02, 0x00, 0x24, 0x62, 0x02, 0x00, 0x7c, 0x04, 0x28, 0xc4, + 0xac, 0x64, 0x02, 0x00, 0x94, 0x63, 0x02, 0x92, 0x24, 0x03, 0x00, 0x09, + 0xac, 0x43, 0x00, 0x80, 0x03, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x8c, 0x82, 0x00, 0x00, 0x00, 0x05, 0x28, 0x80, 0x7c, 0x47, 0x14, 0x80, + 0x27, 0xbd, 0xff, 0xe8, 0x00, 0x85, 0x30, 0x21, 0x2c, 0xe5, 0x00, 0x02, + 0x10, 0xa0, 0x00, 0x27, 0xaf, 0xbf, 0x00, 0x14, 0x24, 0xc8, 0x00, 0x04, + 0xa4, 0xc0, 0x00, 0x04, 0xa5, 0x00, 0x00, 0x02, 0x8c, 0x83, 0x00, 0x00, + 0x04, 0x61, 0x00, 0x31, 0x7c, 0x62, 0x3a, 0x80, 0x24, 0x42, 0xff, 0xe0, + 0x30, 0x42, 0x00, 0xff, 0x2c, 0x42, 0x00, 0x05, 0x14, 0x40, 0x00, 0x2c, + 0x3c, 0x02, 0x00, 0x03, 0x34, 0x42, 0xfc, 0x00, 0x00, 0x62, 0x10, 0x24, + 0x34, 0x05, 0x98, 0x00, 0x10, 0x45, 0x00, 0x27, 0x3c, 0x05, 0x16, 0x00, + 0x00, 0x65, 0x18, 0x24, 0x14, 0x60, 0x00, 0x25, 0x8f, 0xbf, 0x00, 0x14, + 0x34, 0x03, 0x9c, 0x00, 0x10, 0x43, 0x00, 0x02, 0x24, 0x05, 0x00, 0x18, + 0x24, 0x05, 0x00, 0x1c, 0x0f, 0xf0, 0x10, 0x57, 0x00, 0x00, 0x00, 0x00, + 0x93, 0x83, 0x00, 0x62, 0x14, 0x60, 0x00, 0x08, 0x97, 0x84, 0x00, 0x5c, + 0x30, 0x43, 0xff, 0xff, 0x00, 0x02, 0x14, 0x02, 0x00, 0x83, 0x18, 0x04, + 0x00, 0x82, 0x10, 0x04, 0xa4, 0xc3, 0x00, 0x04, 0x10, 0x00, 0x00, 0x14, + 0xa5, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x12, + 0x8f, 0xbf, 0x00, 0x14, 0x24, 0x03, 0x00, 0x03, 0x14, 0xe3, 0x00, 0x0f, + 0x8f, 0xbf, 0x00, 0x14, 0x04, 0x43, 0x00, 0x0c, 0xa4, 0xc0, 0x00, 0x04, + 0x7c, 0x43, 0x2a, 0x80, 0x3c, 0x02, 0xb6, 0x08, 0x8c, 0x44, 0x02, 0x98, + 0x24, 0x42, 0x02, 0x00, 0x7c, 0x64, 0x28, 0x04, 0xac, 0x44, 0x00, 0x98, + 0x94, 0x42, 0x00, 0x92, 0x97, 0x83, 0x00, 0x5c, 0x30, 0x42, 0xff, 0xff, + 0x00, 0x62, 0x10, 0x04, 0xa4, 0xc2, 0x00, 0x04, 0x8f, 0xbf, 0x00, 0x14, + 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x18, 0x3c, 0x02, 0x80, 0x00, + 0x8c, 0x43, 0x70, 0x00, 0x27, 0xbd, 0xff, 0xe0, 0x24, 0x02, 0xff, 0xff, + 0xaf, 0xbf, 0x00, 0x1c, 0xaf, 0xa5, 0x00, 0x24, 0xaf, 0xa6, 0x00, 0x28, + 0x14, 0x62, 0x00, 0x03, 0xaf, 0xa7, 0x00, 0x2c, 0x10, 0x00, 0x00, 0x23, + 0xaf, 0x80, 0x00, 0x58, 0x8f, 0x82, 0x00, 0x48, 0x10, 0x40, 0x00, 0x20, + 0x00, 0x80, 0x38, 0x21, 0x00, 0x00, 0x40, 0x21, 0x90, 0xe4, 0x00, 0x00, + 0x10, 0x80, 0x00, 0x06, 0x38, 0x82, 0x00, 0x25, 0x2c, 0x42, 0x00, 0x01, + 0x0f, 0xf0, 0x0a, 0x74, 0x01, 0x02, 0x40, 0x21, 0x10, 0x00, 0xff, 0xf9, + 0x24, 0xe7, 0x00, 0x01, 0x0f, 0xf0, 0x0a, 0x74, 0x00, 0x00, 0x48, 0x21, + 0x27, 0xa2, 0x00, 0x24, 0xaf, 0xa2, 0x00, 0x10, 0x24, 0x0a, 0x00, 0x20, + 0x11, 0x28, 0x00, 0x0d, 0x8f, 0xa2, 0x00, 0x10, 0x00, 0x00, 0x38, 0x21, + 0x24, 0x43, 0x00, 0x04, 0x8c, 0x4b, 0x00, 0x00, 0xaf, 0xa3, 0x00, 0x10, + 0x00, 0xeb, 0x20, 0x07, 0x0f, 0xf0, 0x0a, 0x74, 0x30, 0x84, 0x00, 0xff, + 0x24, 0xe7, 0x00, 0x08, 0x54, 0xea, 0xff, 0xfc, 0x00, 0xeb, 0x20, 0x07, + 0x10, 0x00, 0xff, 0xf3, 0x25, 0x29, 0x00, 0x01, 0x8f, 0x83, 0x00, 0x58, + 0x3c, 0x02, 0xb6, 0x00, 0xac, 0x43, 0x10, 0x84, 0x8f, 0xbf, 0x00, 0x1c, + 0x03, 0xe0, 0x00, 0x08, 0x27, 0xbd, 0x00, 0x20, 0x3c, 0x03, 0xb6, 0x00, + 0x8c, 0x62, 0x18, 0x20, 0x24, 0x05, 0x00, 0x01, 0x00, 0x85, 0x28, 0x04, + 0x00, 0xa2, 0x28, 0x24, 0x10, 0xa0, 0x00, 0x3b, 0x24, 0x62, 0x1c, 0x00, + 0x27, 0xbd, 0xff, 0xc0, 0xaf, 0xb0, 0x00, 0x34, 0x00, 0x04, 0x81, 0x00, + 0x02, 0x02, 0x10, 0x21, 0x8c, 0x44, 0x00, 0x00, 0xaf, 0xb1, 0x00, 0x38, + 0xaf, 0xa4, 0x00, 0x20, 0x8c, 0x43, 0x00, 0x04, 0x93, 0xb1, 0x00, 0x23, + 0x8c, 0x45, 0x00, 0x08, 0x8c, 0x42, 0x00, 0x0c, 0xaf, 0xbf, 0x00, 0x3c, + 0xaf, 0xa2, 0x00, 0x2c, 0x2e, 0x22, 0x00, 0x28, 0xaf, 0xa3, 0x00, 0x24, + 0xaf, 0xa5, 0x00, 0x28, 0xaf, 0xa4, 0x00, 0x10, 0xaf, 0xa3, 0x00, 0x14, + 0xaf, 0xa0, 0x00, 0x18, 0x10, 0x40, 0x00, 0x0e, 0xaf, 0xa0, 0x00, 0x1c, + 0x3c, 0x03, 0x9f, 0xc0, 0x00, 0x11, 0x10, 0x80, 0x24, 0x63, 0x2f, 0xe4, + 0x00, 0x43, 0x10, 0x21, 0x8c, 0x42, 0x00, 0x00, 0x10, 0x40, 0x00, 0x07, + 0x27, 0xa5, 0x00, 0x10, 0xa3, 0xa0, 0x00, 0x12, 0x27, 0xa4, 0x00, 0x20, + 0x00, 0x40, 0xf8, 0x09, 0xa3, 0x80, 0x00, 0x62, 0x10, 0x00, 0x00, 0x04, + 0x93, 0x86, 0x00, 0x62, 0x24, 0x02, 0x00, 0x05, 0xa3, 0x82, 0x00, 0x62, + 0x93, 0x86, 0x00, 0x62, 0x10, 0xc0, 0x00, 0x07, 0x8f, 0xa3, 0x00, 0x10, + 0x3c, 0x04, 0x9f, 0xc0, 0x02, 0x20, 0x28, 0x21, 0x24, 0x84, 0x2a, 0x28, + 0x0f, 0xf0, 0x10, 0xbe, 0xa3, 0xa6, 0x00, 0x12, 0x8f, 0xa3, 0x00, 0x10, + 0x3c, 0x02, 0xb6, 0x00, 0x02, 0x02, 0x10, 0x21, 0xac, 0x43, 0x1c, 0x10, + 0x8f, 0xa3, 0x00, 0x14, 0x8f, 0xbf, 0x00, 0x3c, 0xac, 0x43, 0x1c, 0x14, + 0x8f, 0xa3, 0x00, 0x18, 0x8f, 0xb1, 0x00, 0x38, 0xac, 0x43, 0x1c, 0x18, + 0x8f, 0xa3, 0x00, 0x1c, 0x8f, 0xb0, 0x00, 0x34, 0xac, 0x43, 0x1c, 0x1c, + 0x27, 0xbd, 0x00, 0x40, 0x03, 0xe0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x83, 0x82, 0x00, 0x61, 0x27, 0xbd, 0xff, 0xe8, 0x10, 0x40, 0x00, 0x1a, + 0xaf, 0xbf, 0x00, 0x14, 0x3c, 0x04, 0xb6, 0x00, 0x8c, 0x82, 0x10, 0x28, + 0x24, 0x06, 0x00, 0x01, 0x24, 0x05, 0x00, 0x06, 0x7c, 0x4a, 0x07, 0x80, + 0x7c, 0x49, 0x16, 0x00, 0x7c, 0x48, 0x05, 0x80, 0x7c, 0x47, 0x14, 0x00, + 0x00, 0x40, 0x18, 0x21, 0x7c, 0xc2, 0xf7, 0x84, 0x7c, 0xa2, 0xd6, 0x04, + 0x7c, 0xc2, 0xb5, 0x84, 0x7c, 0xa2, 0x94, 0x04, 0xa3, 0x80, 0x00, 0x61, + 0x3c, 0x05, 0xb6, 0x00, 0xac, 0x82, 0x10, 0x28, 0x8c, 0xa2, 0x10, 0x28, + 0x7c, 0x42, 0x07, 0x80, 0x14, 0x40, 0xff, 0xfd, 0x00, 0x00, 0x00, 0x00, + 0x7d, 0x43, 0xf7, 0x84, 0x7d, 0x23, 0xd6, 0x04, 0x7d, 0x03, 0xb5, 0x84, + 0x7c, 0xe3, 0x94, 0x04, 0xac, 0xa3, 0x10, 0x28, 0x0f, 0xf0, 0x10, 0xee, + 0x00, 0x00, 0x20, 0x21, 0x0f, 0xf0, 0x10, 0xee, 0x24, 0x04, 0x00, 0x02, + 0x0f, 0xf0, 0x10, 0xee, 0x24, 0x04, 0x00, 0x04, 0x8f, 0xbf, 0x00, 0x14, + 0x24, 0x04, 0x00, 0x06, 0x0b, 0xf0, 0x10, 0xee, 0x27, 0xbd, 0x00, 0x18, + 0x27, 0xbd, 0xff, 0xe8, 0x00, 0x04, 0x1a, 0x40, 0x3c, 0x02, 0xb6, 0x08, + 0x00, 0x80, 0x50, 0x21, 0xaf, 0xbf, 0x00, 0x14, 0x00, 0x43, 0x18, 0x21, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x40, 0x27, 0x84, 0x00, 0x24, + 0x00, 0x86, 0x20, 0x21, 0x84, 0x89, 0x00, 0x00, 0x01, 0x25, 0x10, 0x2a, + 0x14, 0x40, 0x00, 0x07, 0x31, 0x22, 0xff, 0xff, 0x27, 0x82, 0x00, 0x28, + 0x00, 0x46, 0x10, 0x21, 0x84, 0x49, 0x00, 0x00, 0x00, 0xa9, 0x10, 0x2a, + 0x00, 0xa2, 0x48, 0x0a, 0x31, 0x22, 0xff, 0xff, 0x93, 0x84, 0x00, 0x63, + 0xa4, 0x62, 0x01, 0x16, 0x24, 0x03, 0x00, 0x64, 0x24, 0x02, 0x75, 0x30, + 0x00, 0x64, 0x10, 0x0b, 0x0f, 0xf0, 0x10, 0x00, 0x00, 0x40, 0x20, 0x21, + 0x0f, 0xf0, 0x10, 0x54, 0x01, 0x40, 0x20, 0x21, 0x24, 0x07, 0x22, 0x60, + 0x70, 0x47, 0x10, 0x02, 0x24, 0x07, 0x1c, 0x00, 0x00, 0x47, 0x00, 0x1a, + 0x8f, 0xbf, 0x00, 0x14, 0x3c, 0x04, 0x9f, 0xc0, 0x01, 0x20, 0x30, 0x21, + 0x01, 0x40, 0x28, 0x21, 0x24, 0x84, 0x2a, 0x60, 0x27, 0xbd, 0x00, 0x18, + 0x0b, 0xf0, 0x10, 0xbe, 0x00, 0x00, 0x38, 0x12, 0x00, 0x04, 0x1a, 0x40, + 0x27, 0xbd, 0xff, 0xe8, 0x3c, 0x02, 0xb6, 0x08, 0x00, 0x43, 0x10, 0x21, + 0xaf, 0xbf, 0x00, 0x14, 0x94, 0x4a, 0x01, 0x16, 0x00, 0x80, 0x58, 0x21, + 0x00, 0xa0, 0x48, 0x21, 0x0f, 0xf0, 0x10, 0x54, 0x31, 0x4a, 0xff, 0xff, + 0x00, 0x0b, 0x18, 0x40, 0x27, 0x84, 0x00, 0x3c, 0x00, 0x83, 0x20, 0x21, + 0x94, 0x84, 0x00, 0x00, 0x00, 0x82, 0x28, 0x2b, 0x50, 0xa0, 0x00, 0x09, + 0x00, 0x44, 0x20, 0x2b, 0x27, 0x85, 0x00, 0x38, 0x00, 0xa3, 0x28, 0x21, + 0x94, 0xa5, 0x00, 0x00, 0x00, 0x45, 0x28, 0x2b, 0x50, 0xa0, 0x00, 0x03, + 0x00, 0x44, 0x20, 0x2b, 0x10, 0x00, 0x00, 0x13, 0x01, 0x2a, 0x28, 0x21, + 0x10, 0x80, 0x00, 0x07, 0x27, 0x84, 0x00, 0x38, 0x27, 0x82, 0x00, 0x2c, + 0x00, 0x43, 0x18, 0x21, 0x84, 0x65, 0x00, 0x00, 0x00, 0x05, 0x28, 0x40, + 0x10, 0x00, 0x00, 0x0b, 0x00, 0xaa, 0x28, 0x21, 0x00, 0x83, 0x20, 0x21, + 0x94, 0x84, 0x00, 0x00, 0x00, 0x82, 0x10, 0x2b, 0x10, 0x40, 0x00, 0x0b, + 0x8f, 0xbf, 0x00, 0x14, 0x27, 0x82, 0x00, 0x2c, 0x00, 0x43, 0x18, 0x21, + 0x84, 0x65, 0x00, 0x00, 0x00, 0x05, 0x28, 0x40, 0x01, 0x45, 0x28, 0x23, + 0x10, 0xaa, 0x00, 0x04, 0x8f, 0xbf, 0x00, 0x14, 0x01, 0x60, 0x20, 0x21, + 0x0b, 0xf0, 0x11, 0x58, 0x27, 0xbd, 0x00, 0x18, 0x03, 0xe0, 0x00, 0x08, + 0x27, 0xbd, 0x00, 0x18, 0x27, 0xbd, 0xff, 0x88, 0x3c, 0x02, 0xb6, 0x00, + 0xaf, 0xb1, 0x00, 0x54, 0xaf, 0xbf, 0x00, 0x74, 0xaf, 0xbe, 0x00, 0x70, + 0xaf, 0xb7, 0x00, 0x6c, 0xaf, 0xb6, 0x00, 0x68, 0xaf, 0xb5, 0x00, 0x64, + 0xaf, 0xb4, 0x00, 0x60, 0xaf, 0xb3, 0x00, 0x5c, 0xaf, 0xb2, 0x00, 0x58, + 0xaf, 0xb0, 0x00, 0x50, 0x90, 0x43, 0x10, 0x28, 0x24, 0x04, 0x00, 0x07, + 0x7c, 0x83, 0x10, 0x04, 0xa0, 0x43, 0x10, 0x28, 0x90, 0x43, 0x10, 0x29, + 0x3c, 0x11, 0x80, 0x00, 0x7c, 0x83, 0x10, 0x04, 0xa0, 0x43, 0x10, 0x29, + 0x3c, 0x02, 0x80, 0x00, 0xaf, 0xa2, 0x00, 0x28, 0x3c, 0x02, 0x9f, 0xc0, + 0x24, 0x42, 0x2b, 0x14, 0xaf, 0xa2, 0x00, 0x40, 0x3c, 0x02, 0x9f, 0xc0, + 0x26, 0x31, 0x70, 0x00, 0xaf, 0xa2, 0x00, 0x44, 0x8e, 0x23, 0x00, 0x04, + 0x24, 0x02, 0x00, 0x02, 0x14, 0x62, 0x00, 0x4c, 0xaf, 0xb1, 0x00, 0x2c, + 0x0f, 0xf0, 0x04, 0x74, 0x00, 0x00, 0x20, 0x21, 0x24, 0x0d, 0x03, 0xe8, + 0x00, 0x4d, 0x00, 0x1a, 0x8f, 0xa2, 0x00, 0x28, 0x3c, 0x0f, 0x9f, 0xc0, + 0x24, 0x4c, 0x70, 0x64, 0x8f, 0xa2, 0x00, 0x44, 0x24, 0x4e, 0x2a, 0xbc, + 0x00, 0x00, 0x68, 0x12, 0x8d, 0x84, 0x00, 0x00, 0x3c, 0x0a, 0x00, 0x1c, + 0x00, 0x8a, 0x18, 0x24, 0x3c, 0x02, 0x00, 0x14, 0x50, 0x62, 0x00, 0x3c, + 0xae, 0x20, 0x00, 0x04, 0x04, 0x83, 0xff, 0xf9, 0x25, 0x8c, 0x00, 0x1c, + 0x7c, 0x82, 0x3a, 0x80, 0x24, 0x42, 0xff, 0xe0, 0x30, 0x42, 0x00, 0xff, + 0x2c, 0x42, 0x00, 0x05, 0x54, 0x40, 0xff, 0xf3, 0x25, 0x8c, 0x00, 0x1c, + 0x3c, 0x09, 0x00, 0x03, 0x35, 0x29, 0xfc, 0x00, 0x00, 0x89, 0x18, 0x24, + 0x34, 0x02, 0x98, 0x00, 0x10, 0x62, 0x00, 0x2c, 0x3c, 0x02, 0x16, 0x00, + 0x00, 0x82, 0x10, 0x24, 0x54, 0x40, 0xff, 0xea, 0x25, 0x8c, 0x00, 0x1c, + 0x0f, 0xf0, 0x10, 0x54, 0x7c, 0x84, 0x1d, 0x40, 0x24, 0x07, 0x22, 0x60, + 0x70, 0x47, 0x10, 0x02, 0x24, 0x07, 0x1c, 0x00, 0x00, 0x47, 0x00, 0x1a, + 0x8d, 0x85, 0x00, 0x00, 0x3c, 0x04, 0x00, 0x0c, 0x00, 0xaa, 0x50, 0x24, + 0x95, 0x83, 0x00, 0x08, 0x95, 0x82, 0x00, 0x0c, 0x15, 0x44, 0x00, 0x0b, + 0x00, 0x00, 0x38, 0x12, 0xaf, 0xa2, 0x00, 0x14, 0x7c, 0xa2, 0x3a, 0x80, + 0xaf, 0xa3, 0x00, 0x18, 0xaf, 0xa2, 0x00, 0x10, 0x01, 0xa0, 0x30, 0x21, + 0x7c, 0xa5, 0x1d, 0x40, 0x0f, 0xf0, 0x10, 0xbe, 0x25, 0xe4, 0x2a, 0x7c, + 0x10, 0x00, 0xff, 0xd3, 0x25, 0x8c, 0x00, 0x1c, 0x95, 0x86, 0x00, 0x0a, + 0x95, 0x84, 0x00, 0x0e, 0x00, 0xa9, 0x48, 0x24, 0xaf, 0xa2, 0x00, 0x14, + 0x34, 0x08, 0x94, 0x00, 0x7c, 0xa2, 0x3a, 0x80, 0xaf, 0xa6, 0x00, 0x20, + 0xaf, 0xa4, 0x00, 0x1c, 0xaf, 0xa3, 0x00, 0x18, 0xaf, 0xa2, 0x00, 0x10, + 0x01, 0xa0, 0x30, 0x21, 0x7c, 0xa5, 0x1d, 0x40, 0x11, 0x28, 0x00, 0x02, + 0x01, 0xc0, 0x20, 0x21, 0x8f, 0xa4, 0x00, 0x40, 0x0f, 0xf0, 0x10, 0xbe, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xff, 0xc0, 0x25, 0x8c, 0x00, 0x1c, + 0x8e, 0x23, 0x00, 0x04, 0x24, 0x02, 0x00, 0x03, 0x14, 0x62, 0x00, 0x4a, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x04, 0x74, 0x00, 0x00, 0x20, 0x21, + 0x24, 0x0d, 0x03, 0xe8, 0x00, 0x4d, 0x00, 0x1a, 0x8f, 0xa2, 0x00, 0x28, + 0x3c, 0x0e, 0x9f, 0xc0, 0x3c, 0x0f, 0x9f, 0xc0, 0x24, 0x4c, 0x70, 0x64, + 0x25, 0xce, 0x2b, 0xd4, 0x25, 0xef, 0x2b, 0x9c, 0x3c, 0x18, 0x9f, 0xc0, + 0x00, 0x00, 0x68, 0x12, 0x8d, 0x84, 0x00, 0x00, 0x3c, 0x0a, 0x00, 0x1c, + 0x00, 0x8a, 0x18, 0x24, 0x3c, 0x02, 0x00, 0x14, 0x50, 0x62, 0x00, 0x38, + 0xae, 0x20, 0x00, 0x04, 0x04, 0x83, 0xff, 0xf9, 0x25, 0x8c, 0x00, 0x1c, + 0x7c, 0x82, 0x3a, 0x80, 0x24, 0x42, 0xff, 0xe0, 0x30, 0x42, 0x00, 0xff, + 0x2c, 0x42, 0x00, 0x05, 0x54, 0x40, 0xff, 0xf3, 0x25, 0x8c, 0x00, 0x1c, + 0x3c, 0x09, 0x00, 0x03, 0x35, 0x29, 0xfc, 0x00, 0x00, 0x89, 0x18, 0x24, + 0x34, 0x02, 0x98, 0x00, 0x10, 0x62, 0x00, 0x28, 0x3c, 0x02, 0x16, 0x00, + 0x00, 0x82, 0x10, 0x24, 0x54, 0x40, 0xff, 0xea, 0x25, 0x8c, 0x00, 0x1c, + 0x0f, 0xf0, 0x10, 0x54, 0x7c, 0x84, 0x1d, 0x40, 0x24, 0x07, 0x22, 0x60, + 0x70, 0x47, 0x10, 0x02, 0x24, 0x07, 0x1c, 0x00, 0x00, 0x47, 0x00, 0x1a, + 0x8d, 0x85, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x0c, 0x00, 0xaa, 0x50, 0x24, + 0x95, 0x82, 0x00, 0x04, 0x15, 0x43, 0x00, 0x0a, 0x00, 0x00, 0x38, 0x12, + 0xaf, 0xa2, 0x00, 0x14, 0x7c, 0xa2, 0x3a, 0x80, 0xaf, 0xa2, 0x00, 0x10, + 0x01, 0xa0, 0x30, 0x21, 0x7c, 0xa5, 0x1d, 0x40, 0x0f, 0xf0, 0x10, 0xbe, + 0x27, 0x04, 0x2b, 0x6c, 0x10, 0x00, 0xff, 0xd5, 0x25, 0x8c, 0x00, 0x1c, + 0x95, 0x83, 0x00, 0x06, 0x00, 0xa9, 0x48, 0x24, 0xaf, 0xa2, 0x00, 0x14, + 0x34, 0x04, 0x94, 0x00, 0x7c, 0xa2, 0x3a, 0x80, 0xaf, 0xa3, 0x00, 0x18, + 0xaf, 0xa2, 0x00, 0x10, 0x01, 0xa0, 0x30, 0x21, 0x15, 0x24, 0x00, 0x03, + 0x7c, 0xa5, 0x1d, 0x40, 0x10, 0x00, 0x00, 0x02, 0x01, 0xe0, 0x20, 0x21, + 0x01, 0xc0, 0x20, 0x21, 0x0f, 0xf0, 0x10, 0xbe, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0xff, 0xc4, 0x25, 0x8c, 0x00, 0x1c, 0x0f, 0xf0, 0x10, 0x72, + 0x3c, 0x10, 0xb6, 0x08, 0x0f, 0xf0, 0x11, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x8e, 0x02, 0x02, 0x80, 0x7c, 0x42, 0x03, 0x80, 0x10, 0x40, 0xff, 0xfb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xa2, 0x00, 0x28, + 0x3c, 0x12, 0x00, 0x1c, 0x24, 0x56, 0x70, 0x64, 0xaf, 0xb6, 0x00, 0x30, + 0x3c, 0x10, 0x00, 0x14, 0x27, 0x94, 0x00, 0x40, 0x8e, 0xc2, 0x00, 0x00, + 0x02, 0x42, 0x10, 0x24, 0x10, 0x50, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xf0, 0x11, 0x31, 0x00, 0x00, 0x00, 0x00, 0x8e, 0xc2, 0x00, 0x00, + 0x7c, 0x42, 0x1d, 0x40, 0x00, 0x02, 0x10, 0x40, 0x02, 0x82, 0x10, 0x21, + 0x94, 0x42, 0x00, 0x00, 0x54, 0x40, 0xff, 0xf4, 0x26, 0xd6, 0x00, 0x1c, + 0x00, 0x00, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0x7d, 0x02, 0xc0, 0x20, 0x21, + 0x10, 0x00, 0xff, 0xef, 0x26, 0xd6, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x02, 0x9f, 0xc0, 0x24, 0x42, 0x2c, 0x90, 0xaf, 0xa2, 0x00, 0x34, + 0x3c, 0x02, 0x9f, 0xc0, 0x24, 0x42, 0x2c, 0x58, 0xaf, 0xa2, 0x00, 0x38, + 0x3c, 0x02, 0x9f, 0xc0, 0x27, 0x94, 0x00, 0x40, 0x27, 0x92, 0x00, 0x2c, + 0x00, 0x00, 0x80, 0x21, 0xaf, 0xa2, 0x00, 0x3c, 0x0f, 0xf0, 0x11, 0x31, + 0x00, 0x00, 0x00, 0x00, 0x8f, 0x82, 0x00, 0x50, 0x54, 0x40, 0x00, 0xa7, + 0x26, 0x10, 0x00, 0x01, 0x96, 0x82, 0x00, 0x00, 0x14, 0x40, 0x00, 0xa3, + 0x8f, 0xa2, 0x00, 0x2c, 0x8f, 0xac, 0x00, 0x30, 0x8c, 0x42, 0x00, 0x04, + 0x00, 0x00, 0xc0, 0x21, 0x38, 0x42, 0x00, 0x01, 0x2c, 0x55, 0x00, 0x01, + 0x00, 0x00, 0x78, 0x21, 0x00, 0x00, 0xb8, 0x21, 0x00, 0x00, 0x70, 0x21, + 0x00, 0x00, 0xf0, 0x21, 0x00, 0x00, 0xc8, 0x21, 0x8d, 0x82, 0x00, 0x00, + 0x3c, 0x03, 0x00, 0x1c, 0x00, 0x62, 0x18, 0x24, 0x3c, 0x04, 0x00, 0x14, + 0x10, 0x64, 0x00, 0x67, 0x7c, 0x42, 0x1d, 0x40, 0x54, 0x50, 0xff, 0xf9, + 0x25, 0x8c, 0x00, 0x1c, 0x25, 0x93, 0x00, 0x08, 0x00, 0x00, 0x68, 0x21, + 0x96, 0x63, 0xff, 0xfc, 0x2c, 0x62, 0x00, 0x0b, 0x54, 0x40, 0x00, 0x5a, + 0x25, 0xad, 0x00, 0x01, 0x8d, 0x84, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x1f, + 0x34, 0x42, 0xfc, 0x00, 0x00, 0x82, 0x10, 0x24, 0x3c, 0x05, 0x00, 0x0c, + 0x10, 0x45, 0x00, 0x06, 0x24, 0xa7, 0x04, 0x00, 0x10, 0x47, 0x00, 0x06, + 0x24, 0xa5, 0x0c, 0x00, 0x00, 0x45, 0x10, 0x26, 0x10, 0x00, 0x00, 0x04, + 0x00, 0x62, 0x70, 0x0a, 0x10, 0x00, 0x00, 0x02, 0x00, 0x60, 0xb8, 0x21, + 0x00, 0x60, 0xf0, 0x21, 0x3c, 0x02, 0x00, 0x03, 0x34, 0x42, 0xfc, 0x00, + 0x00, 0x82, 0x10, 0x24, 0x34, 0x05, 0x94, 0x00, 0x54, 0x45, 0x00, 0x09, + 0x96, 0x62, 0x00, 0x04, 0x3c, 0x02, 0x00, 0x1c, 0x00, 0x82, 0x20, 0x24, + 0x3c, 0x02, 0x00, 0x0c, 0x10, 0x82, 0x00, 0x03, 0x39, 0xa2, 0x00, 0x01, + 0x00, 0x62, 0xc0, 0x0b, 0x00, 0x62, 0x78, 0x0a, 0x96, 0x62, 0x00, 0x04, + 0x00, 0x62, 0x10, 0x2b, 0x50, 0x40, 0x00, 0x0f, 0x96, 0x62, 0x00, 0x00, + 0xaf, 0xa3, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x86, 0x45, 0x00, 0x00, + 0x02, 0x00, 0x20, 0x21, 0x0f, 0xf0, 0x11, 0x81, 0x00, 0x05, 0x28, 0x80, + 0x3c, 0x04, 0x9f, 0xc0, 0x02, 0x00, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0xbe, + 0x24, 0x84, 0x2c, 0x0c, 0x24, 0x02, 0x00, 0x01, 0xaf, 0x82, 0x00, 0x08, + 0x10, 0x00, 0x00, 0x04, 0x8f, 0xa3, 0x00, 0x48, 0x00, 0x43, 0x10, 0x2b, + 0x2c, 0x42, 0x00, 0x01, 0x03, 0x22, 0xc8, 0x21, 0x8f, 0x96, 0x00, 0x08, + 0x24, 0x02, 0x00, 0x01, 0x52, 0xc2, 0x00, 0x07, 0x96, 0x67, 0x00, 0x04, + 0x53, 0x20, 0x00, 0x23, 0x25, 0xad, 0x00, 0x01, 0x24, 0x02, 0x00, 0x02, + 0x56, 0xc2, 0x00, 0x21, 0x25, 0xad, 0x00, 0x01, 0x96, 0x67, 0x00, 0x00, + 0x8d, 0x86, 0x00, 0x00, 0x24, 0x02, 0x00, 0x03, 0x7c, 0xc4, 0x14, 0x80, + 0x14, 0x82, 0x00, 0x07, 0x24, 0x02, 0x00, 0x01, 0x8f, 0xa2, 0x00, 0x3c, + 0xaf, 0xa3, 0x00, 0x10, 0x7c, 0xc6, 0x3a, 0x80, 0x02, 0x00, 0x28, 0x21, + 0x10, 0x00, 0x00, 0x08, 0x24, 0x44, 0x2c, 0x20, 0xaf, 0xa3, 0x00, 0x10, + 0x7c, 0xc6, 0x3a, 0x80, 0x11, 0xa2, 0x00, 0x03, 0x02, 0x00, 0x28, 0x21, + 0x10, 0x00, 0x00, 0x02, 0x8f, 0xa4, 0x00, 0x38, 0x8f, 0xa4, 0x00, 0x34, + 0x0f, 0xf0, 0x10, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x24, 0x02, 0x00, 0x01, + 0x16, 0xc2, 0x00, 0x04, 0x24, 0x02, 0x00, 0x02, 0xaf, 0x80, 0x00, 0x08, + 0x10, 0x00, 0x00, 0x17, 0x24, 0x15, 0x00, 0x01, 0x16, 0xc2, 0x00, 0x02, + 0x24, 0x15, 0x00, 0x01, 0xaf, 0x80, 0x00, 0x08, 0x25, 0xad, 0x00, 0x01, + 0x24, 0x02, 0x00, 0x02, 0x15, 0xa2, 0xff, 0xa1, 0x26, 0x73, 0x00, 0x02, + 0x10, 0x00, 0xff, 0x95, 0x25, 0x8c, 0x00, 0x1c, 0x17, 0x20, 0x00, 0x0d, + 0x01, 0xf8, 0x10, 0x25, 0x00, 0x00, 0x00, 0x00, 0x86, 0x45, 0x00, 0x00, + 0x02, 0x00, 0x20, 0x21, 0x0f, 0xf0, 0x11, 0x81, 0x00, 0x05, 0x28, 0x23, + 0x3c, 0x04, 0x9f, 0xc0, 0x02, 0x00, 0x28, 0x21, 0x0f, 0xf0, 0x10, 0xbe, + 0x24, 0x84, 0x2c, 0xc8, 0x24, 0x02, 0x00, 0x02, 0xaf, 0x82, 0x00, 0x08, + 0x01, 0xf8, 0x10, 0x25, 0x02, 0xe2, 0x10, 0x25, 0x03, 0xc2, 0x10, 0x25, + 0x01, 0xc2, 0x10, 0x25, 0x30, 0x42, 0xff, 0xff, 0x00, 0x02, 0x10, 0x2b, + 0x00, 0x55, 0x10, 0x24, 0x50, 0x40, 0x00, 0x18, 0x26, 0x10, 0x00, 0x01, + 0x0f, 0xf0, 0x04, 0x74, 0x00, 0x00, 0x20, 0x21, 0x02, 0x00, 0x20, 0x21, + 0x0f, 0xf0, 0x10, 0x54, 0x00, 0x40, 0x48, 0x21, 0x24, 0x07, 0x22, 0x60, + 0x70, 0x47, 0x10, 0x02, 0x24, 0x07, 0x1c, 0x00, 0x00, 0x47, 0x00, 0x1a, + 0x24, 0x06, 0x03, 0xe8, 0x3c, 0x04, 0x9f, 0xc0, 0xaf, 0xb8, 0x00, 0x20, + 0xaf, 0xaf, 0x00, 0x1c, 0xaf, 0xae, 0x00, 0x18, 0xaf, 0xbe, 0x00, 0x14, + 0xaf, 0xb7, 0x00, 0x10, 0x02, 0x00, 0x28, 0x21, 0x24, 0x84, 0x2c, 0xdc, + 0x00, 0x00, 0x38, 0x12, 0x01, 0x26, 0x00, 0x1a, 0x0f, 0xf0, 0x10, 0xbe, + 0x00, 0x00, 0x30, 0x12, 0x26, 0x10, 0x00, 0x01, 0x24, 0x02, 0x00, 0x02, + 0x26, 0x94, 0x00, 0x02, 0x16, 0x02, 0xff, 0x52, 0x26, 0x52, 0x00, 0x02, + 0x8f, 0x82, 0x00, 0x44, 0x14, 0x40, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xf0, 0x04, 0x74, 0x00, 0x00, 0x20, 0x21, 0x3c, 0x03, 0x00, 0x01, + 0x34, 0x63, 0xe8, 0x48, 0x00, 0x43, 0x10, 0x2a, 0x14, 0x40, 0x00, 0x11, + 0x3c, 0x05, 0xb6, 0x00, 0x24, 0x02, 0xff, 0xff, 0xac, 0xa2, 0x10, 0x2c, + 0x0f, 0xf0, 0x0a, 0x6d, 0x24, 0x04, 0x0b, 0xb8, 0x8c, 0xa3, 0x10, 0x7c, + 0x3c, 0x06, 0xa0, 0x00, 0x00, 0x66, 0x18, 0x25, 0x88, 0x64, 0x04, 0x8c, + 0x8c, 0xa2, 0x10, 0x7c, 0x98, 0x64, 0x04, 0x8f, 0x00, 0x46, 0x10, 0x25, + 0x00, 0x80, 0x18, 0x21, 0x24, 0x04, 0x00, 0x01, 0x7c, 0x83, 0xc6, 0x04, + 0xa8, 0x43, 0x04, 0x8c, 0xb8, 0x43, 0x04, 0x8f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xfe, 0x6c, 0x8e, 0x23, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 +}; +#endif //PMC_ROMDATA_63158_H diff --git a/arch/arm/mach-bcmbca/pmc/pmc_switch.c b/arch/arm/mach-bcmbca/pmc/pmc_switch.c new file mode 100755 index 0000000000..17bec47ade --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_switch.c @@ -0,0 +1,147 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ +#include "pmc_drv.h" +#include "pmc_switch.h" +#include "asm/arch/BPCM.h" + +int pmc_switch_enable_rgmii_zone_clk(int z1_clk_enable, int z2_clk_enable) +{ + int ret = 0; +#if defined(CONFIG_BCM63138) || defined(CONFIG_BCM63148) || defined(CONFIG_BCM4908) || defined(CONFIG_BCM63158) +#if defined(CONFIG_BCM63158) + BPCM_GLOBAL_CNTL_1 global_cntl_1; + BPCM_GLOBAL_CNTL_2 global_cntl_2; +#else + BPCM_GLOBAL_CNTL global_cntl; +#endif + +#if defined(CONFIG_BCM63148) + BPCM_SGPHY_CNTL sgphy_cntl; + + sgphy_cntl.Reg32 = 0x33; + ret = WriteBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(sgphy_cntl), sgphy_cntl.Reg32); +#endif + +#if defined(CONFIG_BCM63158) + ret = ReadBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(global_control_1), + &global_cntl_1.Reg32); + ret = + ReadBPCMRegister(PMB_ADDR_SWITCH, BPCMRegOffset(global_control_2), + &global_cntl_2.Reg32); + + global_cntl_1.Bits.z1_ck250_clk_en = 0; + global_cntl_2.Bits.z2_ck250_clk_en = 0; + ret = WriteBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(global_control_1), + global_cntl_1.Reg32); + ret = + WriteBPCMRegister(PMB_ADDR_SWITCH, BPCMRegOffset(global_control_2), + global_cntl_2.Reg32); + + ret = ReadBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(global_control_1), + &global_cntl_1.Reg32); + + ret = ReadBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(global_control_2), + &global_cntl_2.Reg32); + if (z1_clk_enable) + global_cntl_1.Bits.z1_ck250_clk_en = 1; + if (z2_clk_enable) + global_cntl_2.Bits.z2_ck250_clk_en = 1; + ret = WriteBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(global_control_1), + global_cntl_1.Reg32); + ret = + WriteBPCMRegister(PMB_ADDR_SWITCH, BPCMRegOffset(global_control_2), + global_cntl_2.Reg32); + +#else + ret = ReadBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(global_control), + &global_cntl.Reg32); + + global_cntl.Bits.z1_ck250_clk_en = 0; + global_cntl.Bits.z2_ck250_clk_en = 0; + ret = WriteBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(global_control), + global_cntl.Reg32); + + ret = ReadBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(global_control), + &global_cntl.Reg32); + if (z1_clk_enable) + global_cntl.Bits.z1_ck250_clk_en = 1; + if (z2_clk_enable) + global_cntl.Bits.z2_ck250_clk_en = 1; + ret = WriteBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(global_control), + global_cntl.Reg32); +#endif + + printf("%s: Rgmii Tx clock zone1 enable %d zone2 enable %d. \n", + __FUNCTION__, z1_clk_enable, z2_clk_enable); +#endif + + return ret; +} + +int pmc_switch_power_up(void) +{ + return PowerOnDevice(PMB_ADDR_SWITCH); +} + +int pmc_switch_power_down(void) +{ + return PowerOffDevice(PMB_ADDR_SWITCH, 0); +} + +#if defined(CONFIG_BCM63158) && (CONFIG_BRCM_CHIP_REV==0x63158A0) +#define SWITCH_PLL_NORMAL (0xC) /* switch PLL is from 3GMHz, divider of 12 (0xD) will bring it to 250 MHz */ +#define SWITCH_PLL_LOW_PWR (0xF0) /* switch PLL is from 3GMHz, divider of 240 (0xF0) will bring it to 12.5 MHz */ +#elif defined(CONFIG_BCM63158) +/* From VLSI: + PLL VCO frequency increased by 1.5x from A0 to B0; + In normal mode we increased Switch frequency from A0 to B0 and that's why the value is less than 1.5x. + Low power mode can stay at 1.5x which provides the same PLL output freq between A0 and B0. +*/ +#define SWITCH_PLL_NORMAL (0x11) +#define SWITCH_PLL_LOW_PWR (0xFF) +#elif defined(CONFIG_BCM63178) +#define SWITCH_PLL_NORMAL (0x06) +#define SWITCH_PLL_LOW_PWR (0xFF) +#endif + +#if defined(CONFIG_BCM63158) || defined (CONFIG_BCM63178) || defined (CONFIG_BCM6756) +void pmc_sysport_reset_system_port(int port) +{ + int status; + uint32_t reg; + (void)port; + + // for both BCM63158 and BCM63178, system port is tide to Zone 3 of the Switch BPCM + status = + ReadBPCMRegister(PMB_ADDR_SWITCH, BPCMRegOffset(sr_control), ®); + if (status == kPMC_NO_ERROR) { + // system port is on zone 3 of the switch BPCM + reg |= 0x8; + status = + WriteBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(sr_control), reg); + + if (status == kPMC_NO_ERROR) { + reg &= ~0x8; + status = + WriteBPCMRegister(PMB_ADDR_SWITCH, + BPCMRegOffset(sr_control), reg); + } + } +} +#endif diff --git a/arch/arm/mach-bcmbca/pmc/pmc_switch.h b/arch/arm/mach-bcmbca/pmc/pmc_switch.h new file mode 100755 index 0000000000..032612ff19 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_switch.h @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef PMC_SWITCH_H +#define PMC_SWITCH_H + +int pmc_switch_power_up(void); +int pmc_switch_power_down(void); +void pmc_switch_clock_lowpower_mode(int low_power); +int pmc_switch_enable_rgmii_zone_clk(int z1_clk_enable, int z2_clk_enable); + +#endif //#ifndef PMC_SWITCH_H diff --git a/arch/arm/mach-bcmbca/pmc/pmc_sysport.c b/arch/arm/mach-bcmbca/pmc/pmc_sysport.c new file mode 100644 index 0000000000..d4011d6459 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_sysport.c @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2018 Broadcom + */ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2020 Broadcom Ltd. + */ +/* + +*/ +#include "pmc_drv.h" +#include "asm/arch/BPCM.h" + + +int pmc_sysport_power_up(void) +{ + PowerOnDevice(PMB_ADDR_SYSP); + + // reset system port through BPCM + pmc_sysport_reset_system_port(0); +//#if defined(_BCM947622_) || defined(CONFIG_BCM947622) + pmc_sysport_reset_system_port(1); +//#endif + + return 0; +} + +int pmc_sysport_power_down(void) +{ + return PowerOffDevice(PMB_ADDR_SYSP, 0); +} + +void pmc_sysport_reset_system_port (int port) +{ + int status; + uint32_t reg; + int offset; + + printf("sysport reset %d\n", port); + + // only sysport 0 and 1 is expect to be used in CFE, reject non port reset request + if (port == 0) + { + offset=SYSPRegOffset(z1_pm_cntl); + } +//#if defined(_BCM947622_) || defined(CONFIG_BCM947622) + else if (port == 1) + { + offset=SYSPRegOffset(z2_pm_cntl); + } +//#endif + else + { + printf("unexpected system port %d reset\n", port); + return; + } + + status = ReadBPCMRegister(PMB_ADDR_SYSP, offset, ®); + if (status == kPMC_NO_ERROR) + { + // toggle sw_init field (bit 0) + reg |= 0x1; + status = WriteBPCMRegister(PMB_ADDR_SYSP, offset, reg); + + if (status == kPMC_NO_ERROR) + { + reg &= ~0x1; + status = WriteBPCMRegister(PMB_ADDR_SYSP, offset, reg); + } + } +} + diff --git a/arch/arm/mach-bcmbca/pmc/pmc_xrdp.c b/arch/arm/mach-bcmbca/pmc/pmc_xrdp.c new file mode 100755 index 0000000000..c050d3c921 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_xrdp.c @@ -0,0 +1,431 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#define PRINTK printf + +#include "pmc_drv.h" +#include "pmc_xrdp.h" +#include "asm/arch/BPCM.h" +#include "clk_rst.h" +#include "bcm_ubus4.h" + +int pmc_xrdp_init(void) +{ + int status = 0; + +#if IS_BCMCHIP(6858) + uint32_t reg = 0; + + status = PowerOnDevice(PMB_ADDR_XRDP); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_QM); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_QM\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC_QUAD0); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC_QUAD0\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC_QUAD1); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC_QUAD1\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC_QUAD2); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC_QUAD2\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC_QUAD3); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC_QUAD3\n"); + return status; + } + + PRINTK("Toggle reset of XRDP core...\n"); + status = ReadBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), ®); + reg &= 0xFFFFFF00; + status = WriteBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), reg); + + status |= ReadBPCMRegister(PMB_ADDR_XRDP_QM, BPCMRegOffset(sr_control), ®); + reg &= 0xFFFFFF00; + status |= WriteBPCMRegister(PMB_ADDR_XRDP_QM, BPCMRegOffset(sr_control), reg); + + status |= ReadBPCMRegister(PMB_ADDR_XRDP_RC_QUAD0, BPCMRegOffset(sr_control), ®); + reg &= 0xFFFFFF00; + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC_QUAD0, BPCMRegOffset(sr_control), reg); + + status |= ReadBPCMRegister(PMB_ADDR_XRDP_RC_QUAD1, BPCMRegOffset(sr_control), ®); + reg &= 0xFFFFFF00; + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC_QUAD1, BPCMRegOffset(sr_control), reg); + + status |= ReadBPCMRegister(PMB_ADDR_XRDP_RC_QUAD2, BPCMRegOffset(sr_control), ®); + reg &= 0xFFFFFF00; + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC_QUAD2, BPCMRegOffset(sr_control), reg); + + status |= ReadBPCMRegister(PMB_ADDR_XRDP_RC_QUAD3, BPCMRegOffset(sr_control), ®); + reg &= 0xFFFFFF00; + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC_QUAD3, BPCMRegOffset(sr_control), reg); + + if(status) + { + PRINTK("failed Toggle reset of XRDP core to zero...\n"); + return status; + } + status |= ReadBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), ®); + reg |= 0xff; + status = WriteBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), reg); + + status |= ReadBPCMRegister(PMB_ADDR_XRDP_QM, BPCMRegOffset(sr_control), ®); + reg |= 0xff; + status |= WriteBPCMRegister(PMB_ADDR_XRDP_QM, BPCMRegOffset(sr_control), 0xff); + + + status |= ReadBPCMRegister(PMB_ADDR_XRDP_RC_QUAD0, BPCMRegOffset(sr_control), ®); + reg |= 0xff; + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC_QUAD0, BPCMRegOffset(sr_control), reg); + + status |= ReadBPCMRegister(PMB_ADDR_XRDP_RC_QUAD1, BPCMRegOffset(sr_control), ®); + reg |= 0xff; + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC_QUAD1, BPCMRegOffset(sr_control), reg); + + status |= ReadBPCMRegister(PMB_ADDR_XRDP_RC_QUAD2, BPCMRegOffset(sr_control), ®); + reg |= 0xff; + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC_QUAD2, BPCMRegOffset(sr_control), reg); + + status |= ReadBPCMRegister(PMB_ADDR_XRDP_RC_QUAD3, BPCMRegOffset(sr_control), ®); + reg |= 0xff; + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC_QUAD3, BPCMRegOffset(sr_control), reg); + + if(status) + { + PRINTK("failed Toggle reset of XRDP core to 0xff...\n"); + return status; + } + + apply_ubus_credit_each_master(UBUS_PORT_ID_QM); + apply_ubus_credit_each_master(UBUS_PORT_ID_DQM); + apply_ubus_credit_each_master(UBUS_PORT_ID_NATC); + apply_ubus_credit_each_master(UBUS_PORT_ID_DMA0); + apply_ubus_credit_each_master(UBUS_PORT_ID_DMA1); + apply_ubus_credit_each_master(UBUS_PORT_ID_RQ0); + apply_ubus_credit_each_master(UBUS_PORT_ID_RQ1); + apply_ubus_credit_each_master(UBUS_PORT_ID_RQ2); + apply_ubus_credit_each_master(UBUS_PORT_ID_RQ3); + + ubus_master_rte_cfg(); + +#elif IS_BCMCHIP(63158) || IS_BCMCHIP(6856) + + status = PowerOnDevice(PMB_ADDR_XRDP); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP status[%d]\n",status); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC0); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC0\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC1); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC1\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC2); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC2\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC3); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC3\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC4); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC4\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC5); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC5\n"); + return status; + } + +#if IS_BCMCHIP(6856) + status = PowerOnDevice(PMB_ADDR_XRDP_RC6); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC4\n"); + return status; + } + status = PowerOnDevice(PMB_ADDR_XRDP_RC7); + if(status) + { + PRINTK("Failed to PowerOnDevice XRDP_RC5\n"); + return status; + } + PRINTK("Toggle reset of XRDP core...\n"); + status = WriteBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), 0x7); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC0, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC1, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC2, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC3, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC4, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC5, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC6, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC7, BPCMRegOffset(sr_control), 0); + if (status) + { + PRINTK("failed Toggle reset of XRDP core to zero...\n"); + return status; + } + + status = WriteBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC0, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC1, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC2, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC3, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC4, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC5, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC6, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC7, BPCMRegOffset(sr_control), 0xfffffff); + if (status) + { + PRINTK("failed Toggle reset of XRDP core to 0xffffffff...\n"); + return status; + } +#endif + status = PowerOnDevice(PMB_ADDR_WAN); + if(status) + { + PRINTK("Failed to PowerOnDevice PMB_ADDR_WAN\n"); + return status; + } + + PRINTK("Toggle reset of XRDP core...\n"); + status = WriteBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), 0x7); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC0, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC1, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC2, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC3, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC4, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC5, BPCMRegOffset(sr_control), 0); + + if (status) + { + PRINTK("failed Toggle reset of XRDP core to zero...\n"); + return status; + } + + status = WriteBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC0, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC1, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC2, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC3, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC4, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC5, BPCMRegOffset(sr_control), 0xfffffff); + + if (status) + { + PRINTK("failed Toggle reset of XRDP core to 0xffffffff...\n"); + return status; + } +#elif IS_BCMCHIP(6846) + status = PowerOnDevice(PMB_ADDR_XRDP); + if(status) + { + PRINTK("Failed to PowerOnDevice PMB_ADDR_XRDP\n"); + return status; + } + + status = PowerOnDevice(PMB_ADDR_XRDP_RC0); + if(status) + { + PRINTK("Failed to PowerOnDevice PMB_ADDR_XRDP_RC0\n"); + return status; + } + + status = PowerOnDevice(PMB_ADDR_XRDP_RC1); + if(status) + { + PRINTK("Failed to PowerOnDevice PMB_ADDR_XRDP_RC1\n"); + return status; + } + + status = PowerOnDevice(PMB_ADDR_XRDP_RC2); + if(status) + { + PRINTK("Failed to PowerOnDevice PMB_ADDR_XRDP_RC2\n"); + return status; + } + + status = PowerOnDevice(PMB_ADDR_WAN); + if(status) + { + PRINTK("Failed to PowerOnDevice PMB_ADDR_WAN\n"); + return status; + } + + PRINTK("Toggle reset of XRDP core...\n"); + status = WriteBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), 0x7); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC0, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC1, BPCMRegOffset(sr_control), 0); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC2, BPCMRegOffset(sr_control), 0); + + if (status) + { + PRINTK("failed Toggle reset of XRDP core to zero...\n"); + return status; + } + + status = WriteBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC0, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC1, BPCMRegOffset(sr_control), 0xfffffff); + status |= WriteBPCMRegister(PMB_ADDR_XRDP_RC2, BPCMRegOffset(sr_control), 0xfffffff); + + if (status) + { + PRINTK("failed Toggle reset of XRDP core to 0xffffffff...\n"); + return status; + } +#elif IS_BCMCHIP(6878) || IS_BCMCHIP(63146) || IS_BCMCHIP(4912) + status = PowerOnDevice(PMB_ADDR_XRDP); + if(status) + { + PRINTK("Failed to PowerOnDevice PMB_ADDR_XRDP\n"); + return status; + } + +#if IS_BCMCHIP(6878) + status = PowerOnDevice(PMB_ADDR_WAN); + if(status) + { + PRINTK("Failed to PowerOnDevice PMB_ADDR_WAN\n"); + return status; + } +#endif + + PRINTK("Toggle reset of XRDP core...\n"); + status = WriteBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), 0x7); + if (status) + { + PRINTK("failed Toggle reset of XRDP core to zero...\n"); + return status; + } + + status = WriteBPCMRegister(PMB_ADDR_XRDP, BPCMRegOffset(sr_control), 0xfffffff); + if (status) + { + PRINTK("failed Toggle reset of XRDP core to 0xffffffff...\n"); + return status; + } +#else + PRINTK("%s is not implemented in platform yet!\n", __FUNCTION__); +#endif + +#if IS_BCMCHIP(63158) + apply_ubus_credit_each_master(UBUS_PORT_ID_QM); + apply_ubus_credit_each_master(UBUS_PORT_ID_DQM); + apply_ubus_credit_each_master(UBUS_PORT_ID_NATC); + apply_ubus_credit_each_master(UBUS_PORT_ID_DMA0); + apply_ubus_credit_each_master(UBUS_PORT_ID_RQ0); + apply_ubus_credit_each_master(UBUS_PORT_ID_SWH); +#endif +#if defined(CONFIG_BCM_UBUS4_DCM) + ubus_cong_threshold_wr(UBUS_PORT_ID_QM, 0); + ubus_cong_threshold_wr(UBUS_PORT_ID_DQM, 0); + ubus_cong_threshold_wr(UBUS_PORT_ID_NATC, 0); + ubus_cong_threshold_wr(UBUS_PORT_ID_DMA0, 0); + ubus_cong_threshold_wr(UBUS_PORT_ID_RQ0, 0); +#if IS_BCMCHIP(63158) + ubus_cong_threshold_wr(UBUS_PORT_ID_SWH, 0); +#elif IS_BCMCHIP(6858) + ubus_cong_threshold_wr(UBUS_PORT_ID_DMA1, 0); + ubus_cong_threshold_wr(UBUS_PORT_ID_RQ1, 0); + ubus_cong_threshold_wr(UBUS_PORT_ID_RQ2, 0); + ubus_cong_threshold_wr(UBUS_PORT_ID_RQ3, 0); +#elif IS_BCMCHIP(6856) + ubus_cong_threshold_wr(UBUS_PORT_ID_DMA1, 0); + ubus_cong_threshold_wr(UBUS_PORT_ID_RQ1, 0); +#endif +#endif + + return status; +} + +int pmc_xrdp_shutdown(void) +{ + int status = 0; +#if IS_BCMCHIP(6858) + status = PowerOffDevice(PMB_ADDR_XRDP, 0); + if(status) + { + PRINTK("Failed to PowerOffDevice XRDP\n"); + return status; + } + status = PowerOffDevice(PMB_ADDR_XRDP_QM, 0); + if(status) + { + PRINTK("Failed to PowerOffDevice XRDP_QM\n"); + return status; + } + status = PowerOffDevice(PMB_ADDR_XRDP_RC_QUAD0, 0); + if(status) + { + PRINTK("Failed to PowerOffDevice XRDP_RC_QUAD0\n"); + return status; + } + status = PowerOffDevice(PMB_ADDR_XRDP_RC_QUAD1, 0); + if(status) + { + PRINTK("Failed to PowerOffDevice XRDP_RC_QUAD1\n"); + return status; + } + status = PowerOffDevice(PMB_ADDR_XRDP_RC_QUAD2, 0); + if(status) + { + PRINTK("Failed to PowerOffDevice XRDP_RC_QUAD2\n"); + return status; + } + status = PowerOffDevice(PMB_ADDR_XRDP_RC_QUAD3, 0); + if(status) + { + PRINTK("Failed to PowerOffDevice XRDP_RC_QUAD3\n"); + return status; + } +#else + PRINTK("%s is not implemented in platform yet!\n", __FUNCTION__); +#endif + + return status; +} + +#if !defined(_CFE_) && !defined(__UBOOT__) +EXPORT_SYMBOL(pmc_xrdp_init); +postcore_initcall(pmc_xrdp_init); +#endif diff --git a/arch/arm/mach-bcmbca/pmc/pmc_xrdp.h b/arch/arm/mach-bcmbca/pmc/pmc_xrdp.h new file mode 100755 index 0000000000..a2a84607f8 --- /dev/null +++ b/arch/arm/mach-bcmbca/pmc/pmc_xrdp.h @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ +/* + * pmc_xrdp.h + * + * Created on: 17 Nov 2015 + * Author: yonatani + */ + +#ifndef _PMC_XRDP_H_ +#define _PMC_XRDP_H_ + +int pmc_xrdp_init(void); +int pmc_xrdp_shutdown(void); + +#endif /* _PMC_XRDP_H_ */ diff --git a/arch/arm/mach-bcmbca/rdp/Makefile b/arch/arm/mach-bcmbca/rdp/Makefile new file mode 100755 index 0000000000..76be020953 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/Makefile @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +KBUILD_CPPFLAGS += -DLEGACY_RDP -DRDD_BASIC -DBCM_DSL_RDP + +ifdef CONFIG_BCM63138 +KBUILD_CPPFLAGS += -DDSL_63138 +endif + +ifdef CONFIG_BCM63148 +KBUILD_CPPFLAGS += -DDSL_63148 +endif + +UBOOTINCLUDE += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/$(subst \",,$(CONFIG_SYS_SOC))/rdp_fw + +obj-y += \ + unimac_drv_impl1.o \ + rdp_bbh_arrays.o \ + rdp_dma_arrays.o \ + rdp_drv_ih.o \ + rdp_drv_bpm.o \ + rdp_drv_sbpm.o \ + rdp_drv_bbh.o \ + rdp_cpu_ring.o \ + rdp_misc.o \ + rdd_cpu.o \ + rdd_init.o \ + rdd_tm.o \ + rdd_common.o \ + data_path_init.o \ diff --git a/arch/arm/mach-bcmbca/rdp/access_macros.h b/arch/arm/mach-bcmbca/rdp/access_macros.h new file mode 100755 index 0000000000..f91a1f1761 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/access_macros.h @@ -0,0 +1,311 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef __ACCESS_MACROS_H_INCLUDED + +#define __ACCESS_MACROS_H_INCLUDED + +#define RDP_BLOCK_SIZE 0x1000000 +#define WAN_BLOCK_ADDRESS_MASK 0xFFFF + +#if defined(__ARMEL__) || defined(BCM_DSL_RDP) +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +#define _BYTE_ORDER_LITTLE_ENDIAN_ +#endif +#ifndef FIRMWARE_LITTLE_ENDIAN +#define FIRMWARE_LITTLE_ENDIAN +#endif +#endif + +#if defined(__ARMEL__) || defined(BCM_DSL_RDP) +#define SOC_BASE_ADDRESS 0x00000000 +#else +#define SOC_BASE_ADDRESS 0xA0000000 +#endif + +#if !defined(FIRMWARE_INIT) && !defined(USE_SOC_BASE_ADDR) +#define DEVICE_ADDRESS(_a) ( (SOC_BASE_ADDRESS) | ((uintptr_t)_a)) +#else /*FIRMWARE_INIT || USE_SOC_BASE_ADDR:*/ +extern uint8_t *soc_base_address; +#define DEVICE_ADDRESS(_a) ( (volatile uint8_t * const) (soc_base_address + ((uint32_t)(_a) & 0xFFFFF)) ) +#endif + +#ifndef FSSIM + +#if defined LINUX_KERNEL + #include + #include + #define WMB() wmb() +#else + #define WMB() /* */ +#endif + +/* This is a temporary fix and must be removed once table manager is fixed */ +#define FIELD_MREAD_I_32(p, x, y, i, r) + +static inline uint16_t __swap2bytes(uint16_t a) +{ + return ( a << 8 ) | ( a >> 8 ); +} +static inline uint32_t __swap4bytes(uint32_t a) +{ + return ( ( a << 24 ) | + ( ( a & 0xFF00 ) << 8 ) | + ( ( a & 0xFF0000 ) >> 8 ) | + ( a >> 24 ) ); +} + +#if defined(FIRMWARE_LITTLE_ENDIAN) +#if defined(__ARMEL__) || defined(__AARCH64EL__) +static inline uint16_t swap2bytes(uint16_t a) +{ + __asm__("rev16 %0, %1" : "=r" (a) : "r" (a)); + return a; +} + +#if defined(__ARMEL__) +static inline uint32_t swap4bytes(uint32_t a) +{ + __asm__("rev %0, %1" : "=r" (a) : "r" (a)); + return a; +} + +#define READ_RX_DESC(_desc_ptr, _w0, _w1, _w2) \ + __asm__("ldm %0, {%1, %2, %3}" \ + : "=r" (_desc_ptr), "=r" (_w0), "=r" (_w1), "=r" (_w2) \ + : "0" (_desc_ptr)) +#else /* defined(__AARCH64EL__) */ +static inline uint32_t swap4bytes(uint32_t a) +{ + __asm__("rev32 %0, %1" : "=r" (a) : "r" (a)); + return a; +} + +/* reverses the 4 bytes in each 32-bit element of Xm*/ +static inline uint64_t swap4bytes64(uint64_t a) +{ + __asm__("rev32 %0, %1" : "=r" (a) : "r" (a)); + return a; +} + +#define READ_RX_DESC(_desc_ptr, _dw0, _dw1) \ + __asm__("ldnp %1, %2, [%0]" \ + : "=r" (_desc_ptr), "=r" (_dw0), "=r" (_dw1) \ + : "0" (_desc_ptr)) +#endif + +#else +#define swap2bytes(a) __swap2bytes(a) +#define swap4bytes(a) __swap4bytes(a) +#endif /* __ARMEL__ */ + +#else /* FIRMWARE_LITTLE_ENDIAN */ +#define swap2bytes(a) ( a ) +#define swap4bytes(a) ( a ) +#endif /* FIRMWARE_LITTLE_ENDIAN */ + +/* + * Endian swapping macros that work on any CPU. + * Swap between CPU byte order and Big Endian byte order + */ +#if defined(_BYTE_ORDER_LITTLE_ENDIAN_) || \ + (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && __BYTE_ORDER == __LITTLE_ENDIAN) || \ + (defined(__BYTE_ORDER__) && defined(__LITTLE_ENDIAN__) && __BYTE_ORDER__ == __LITTLE_ENDIAN__) + +#define cpu_be_swap_16(x) swap2bytes(x) +#define cpu_be_swap_32(x) swap4bytes(x) + +#else + +#define cpu_be_swap_16(x) (x) +#define cpu_be_swap_32(x) (x) + +#endif + + +/* The following group of macros are for register access only. + Please don't use them to read/write memory - they are unsafe +*/ +#if defined(FIRMWARE_LITTLE_ENDIAN) + +#define VAL32(_a) ( *(volatile uint32_t*)(DEVICE_ADDRESS(_a)) ) +#define READ_8(a, r) ( *(volatile uint8_t*) &(r) = *(volatile uint8_t* ) DEVICE_ADDRESS(a) ) +#define READ_16(a, r) do { \ + uint16_t u16 = *(volatile uint16_t*) DEVICE_ADDRESS(a); \ + *(volatile uint16_t*)&(r) = swap2bytes(u16); \ + } while(0) +#define READ_32(a, r) do { \ + uint32_t u32 = *(volatile uint32_t*) DEVICE_ADDRESS(a); \ + *(volatile uint32_t*)&(r) = swap4bytes(u32); \ + } while(0) + +#define WRITE_8( a, r) ( *(volatile uint8_t* )DEVICE_ADDRESS(a) = *(uint8_t* )&(r) ) +#define WRITE_16(a, r) ( *(volatile uint16_t*)DEVICE_ADDRESS(a) = swap2bytes(*(uint16_t*)&(r) )) +#define WRITE_32(a, r) ( *(volatile uint32_t*)DEVICE_ADDRESS(a) = swap4bytes(*(uint32_t*)&(r) )) + +#define READ_I_8(a, i, r) ( *(volatile uint8_t* )&(r) = *((volatile uint8_t* ) DEVICE_ADDRESS(a) + (i)) ) +#define READ_I_16(a, i, r) do { \ + uint16_t u16 = *((volatile uint16_t*) DEVICE_ADDRESS(a) + (i)); \ + *(volatile uint16_t*)&(r) = swap2bytes(u16); \ + } while(0) +#define READ_I_32(a, i, r) do { \ + uint32_t u32 = *((volatile uint32_t*) DEVICE_ADDRESS(a) + (i)); \ + *(volatile uint32_t*)&(r) = swap4bytes(u32); \ + } while(0) + +#define WRITE_I_8( a, i, r ) ( *((volatile uint8_t* ) DEVICE_ADDRESS(a) + (i)) = *(uint8_t*) &(r) ) +#define WRITE_I_16( a, i, r ) ( *((volatile uint16_t*) DEVICE_ADDRESS(a) + (i)) = swap2bytes(*(uint16_t*)&(r) )) +#define WRITE_I_32( a, i, r ) ( *((volatile uint32_t*) DEVICE_ADDRESS(a) + (i)) = swap4bytes(*(uint32_t*)&(r) )) + +#else + +#define VAL32(_a) ( *(volatile uint32_t*)(DEVICE_ADDRESS(_a)) ) +#define READ_8(a, r) ( *(volatile uint8_t*) &(r) = *(volatile uint8_t* ) DEVICE_ADDRESS(a) ) +#define READ_16(a, r) ( *(volatile uint16_t*)&(r) = *(volatile uint16_t*) DEVICE_ADDRESS(a) ) +#define READ_32(a, r) ( *(volatile uint32_t*)&(r) = *(volatile uint32_t*) DEVICE_ADDRESS(a) ) + +#define WRITE_8( a, r) ( *(volatile uint8_t* )DEVICE_ADDRESS(a) = *(uint8_t* )&(r) ) +#define WRITE_16(a, r) ( *(volatile uint16_t*)DEVICE_ADDRESS(a) = *(uint16_t*)&(r) ) +#define WRITE_32(a, r) ( *(volatile uint32_t*)DEVICE_ADDRESS(a) = *(uint32_t*)&(r) ) + +#define READ_I_8(a, i, r) ( *(volatile uint8_t* )&(r) = *((volatile uint8_t* ) DEVICE_ADDRESS(a) + (i)) ) +#define READ_I_16(a, i, r) ( *(volatile uint16_t*)&(r) = *((volatile uint16_t*) DEVICE_ADDRESS(a) + (i)) ) +#define READ_I_32(a, i, r) ( *(volatile uint32_t*)&(r) = *((volatile uint32_t*) DEVICE_ADDRESS(a) + (i)) ) + +#define WRITE_I_8( a, i, r ) ( *((volatile uint8_t* ) DEVICE_ADDRESS(a) + (i)) = *(uint8_t*) &(r) ) +#define WRITE_I_16( a, i, r ) ( *((volatile uint16_t*) DEVICE_ADDRESS(a) + (i)) = *(uint16_t*)&(r) ) +#define WRITE_I_32( a, i, r ) ( *((volatile uint32_t*) DEVICE_ADDRESS(a) + (i)) = *(uint32_t*)&(r) ) + +#endif + +#define BL_READ_32(a,r) READ_32(a,r) +#define BL_WRITE_32(a,r) WRITE_32(a,r) +#define BL_WRITE_I_32( a, i, r ) WRITE_I_32( a, i, r ) +#define BL_READ_I_32(a, i, r) READ_I_32(a, i, r) + +/* The following group of macros are intended for shared/io memory access +*/ + +#define MGET_8(a ) ( *(volatile uint8_t* )(a) ) +#define MGET_16(a) swap2bytes( *(volatile uint16_t*)(a) ) +#define MGET_32(a) swap4bytes( *(volatile uint32_t*)(a) ) + +#define MREAD_8( a, r) ( (r) = MGET_8( a ) ) +#define MREAD_16(a, r) ( (r) = MGET_16( a ) ) +#define MREAD_32(a, r) ( (r) = MGET_32( a ) ) + +#define MWRITE_8( a, r ) ( *(volatile uint8_t *)(a) = (uint8_t) (r)) +#define MWRITE_16( a, r ) ( *(volatile uint16_t*)(a) = swap2bytes((uint16_t)(r))) +#define MWRITE_32( a, r ) ( *(volatile uint32_t*)(a) = swap4bytes((uint32_t)(r))) + +#define MGET_I_8( a, i) ( *((volatile uint8_t *)(a) + (i)) ) +#define MGET_I_16(a, i) swap2bytes( *((volatile uint16_t*)(a) + (i)) ) +#define MGET_I_32(a, i) swap4bytes( *((volatile uint32_t*)(a) + (i)) ) + +#define MREAD_I_8( a, i, r) ( (r) = MGET_I_8( (a),(i)) ) +#define MREAD_I_16(a, i, r) ( (r) = MGET_I_16((a),(i)) ) +#define MREAD_I_32(a, i, r) ( (r) = MGET_I_32((a),(i)) ) + +#define MWRITE_I_8( a, i, r) ( *((volatile uint8_t *)(a) + (i)) = (uint8_t)(r) ) +#define MWRITE_I_16(a, i, r) ( *((volatile uint16_t*)(a) + (i)) = swap2bytes((uint16_t)(r)) ) +#define MWRITE_I_32(a, i, r) ( *((volatile uint32_t*)(a) + (i)) = swap4bytes((uint32_t)(r)) ) + +/* Set block of shared memory to the specified value */ +#define MEMSET(a, v, sz) memset(a, v, sz) + +/* Copy memory block local memory --> shared memory */ +#define MWRITE_BLK_8(d, s, sz ) memcpy(d, s, sz) +#define MWRITE_BLK_16(d, s, sz) { uint32_t i, val; for ( i = 0; i < ( sz / 2 ); i++ ){ val = *((volatile uint16_t*)(s) + (i)); MWRITE_I_16( d, i, val ); } } +#define MWRITE_BLK_32(d, s, sz) { uint32_t i, val; for ( i = 0; i < ( sz / 4 ); i++ ){ val = *((volatile uint32_t*)(s) + (i)); MWRITE_I_32( d, i, val ); } } + +/* Copy memory block shared memory --> local memory */ +#define MREAD_BLK_8(d, s, sz ) memcpy(d, s, sz) +#define MREAD_BLK_16(d, s, sz) memcpy(d, s, sz) +#define MREAD_BLK_32(d, s, sz) memcpy(d, s, sz) + +#else + #define WMB() /* */ + /* Simulation environment */ + #include + +#endif /* #ifdef FSSIM */ + +/* Bit-field access macros +: v - value +: lsbn - ls_bit_number +: fw - field_width +: a - address +: rv - read_value + */ +#define FIELD_GET(v, lsbn, fw) ( ((v)>>(lsbn)) & ((unsigned)(1 << (fw)) - 1) ) + +#define FIELD_MGET_32(a, lsbn, fw) ( FIELD_GET( MGET_32(a), (lsbn), (fw)) ) +#define FIELD_MGET_16(a, lsbn, fw) ( FIELD_GET( MGET_16(a), (lsbn), (fw)) ) +#define FIELD_MGET_8( a, lsbn, fw) ( FIELD_GET( MGET_8(a) , (lsbn), (fw)) ) + +#define FIELD_MREAD_8( a, lsbn, fw, rv) ( rv = FIELD_MGET_8( (a), (lsbn), (fw)) ) +#define FIELD_MREAD_16(a, lsbn, fw, rv) ( rv = FIELD_MGET_16((a), (lsbn), (fw)) ) +#define FIELD_MREAD_32(a, lsbn, fw, rv) ( rv = FIELD_MGET_32((a), (lsbn), (fw)) ) + +#define SWAPBYTES(buffer,len) do {uint8_t _i; for(_i = 0; _i < len; _i += sizeof(uint32_t)) *((uint32_t *)(&(buffer[_i]))) = swap4bytes(*((uint32_t *)(&(buffer[_i]))));} while(0) + +#define FIELD_SET( value, ls_bit_number, field_width, write_value ) \ + do { \ + uint32_t mask; \ + mask = ( ( 1U << (field_width) ) - 1 ) << (ls_bit_number); \ + value &= ~mask; \ + value |= (write_value) << (ls_bit_number); \ + } while(0) + +#define FIELD_MWRITE_32( address, ls_bit_number, field_width, write_value ) \ + do { \ + uint32_t current_value = MGET_32(address); \ + FIELD_SET(current_value, ls_bit_number, field_width, write_value ); \ + MWRITE_32(address, current_value); \ + } while(0) + +#define FIELD_MWRITE_16( address, ls_bit_number, field_width, write_value) \ + do{ \ + uint16_t current_value = MGET_16(address); \ + FIELD_SET(current_value, ls_bit_number, field_width, write_value); \ + MWRITE_16(address, current_value); \ + } while(0) + +#define FIELD_MWRITE_8( address, ls_bit_number, field_width, write_value ) \ + do{ \ + uint8_t current_value = MGET_8(address); \ + FIELD_SET(current_value, ls_bit_number, field_width, write_value); \ + MWRITE_8(address, current_value); \ + } while(0) + + +#define GROUP_MREAD_I_8(group, addr, i, ret) (ret = _rdd_i_read(group, (addr), i, rdd_size_8)) +#define GROUP_MREAD_I_16(group, addr, i, ret) (ret = _rdd_i_read(group, (addr), i, rdd_size_16)) +#define GROUP_MREAD_I_32(group, addr, i, ret) (ret = _rdd_i_read(group, (addr), i, rdd_size_32)) + +#define GROUP_MREAD_8(group, addr, ret) (ret = _rdd_i_read(group, (addr), 0, rdd_size_8)) +#define GROUP_MREAD_16(group, addr, ret) (ret = _rdd_i_read(group, (addr), 0, rdd_size_16)) +#define GROUP_MREAD_32(group, addr, ret) (ret = _rdd_i_read(group, (addr), 0, rdd_size_32)) + +#define GROUP_FIELD_MREAD_8(group, addr, lsb, width, ret) (ret = _rdd_field_read(group, (addr), lsb, rdd_size_8)) +#define GROUP_FIELD_MREAD_16(group, addr, lsb, width, ret) (ret = _rdd_field_read(group, (addr), lsb, rdd_size_16)) +#define GROUP_FIELD_MREAD_32(group, addr, lsb, width, ret) (ret = _rdd_field_read(group, (addr), lsb, rdd_size_32)) + +#define GROUP_MWRITE_I_8(group, addr, i, val) _rdd_i_write(group, (addr), val, i, rdd_size_8) +#define GROUP_MWRITE_I_16(group, addr, i, val) _rdd_i_write(group, (addr), val, i, rdd_size_16) +#define GROUP_MWRITE_I_32(group, addr, i, val) _rdd_i_write(group, (addr), val, i, rdd_size_32) + +#define GROUP_MWRITE_8(group, addr, val) _rdd_i_write(group, (addr), val, 0, rdd_size_8) +#define GROUP_MWRITE_16(group, addr, val) _rdd_i_write(group, (addr), val, 0, rdd_size_16) +#define GROUP_MWRITE_32(group, addr, val) _rdd_i_write(group, (addr), val, 0, rdd_size_32) + +#define GROUP_FIELD_MWRITE_8(group, addr, lsb, width, val) _rdd_field_write(group, (addr), val, lsb, width, rdd_size_8) +#define GROUP_FIELD_MWRITE_16(group, addr, lsb, width, val) _rdd_field_write(group, (addr), val, lsb, width, rdd_size_16) +#define GROUP_FIELD_MWRITE_32(group, addr, lsb, width, val) _rdd_field_write(group, (addr), val, lsb, width, rdd_size_32) + +#endif /* __ACCESS_MACROS_H_INCLUDED */ diff --git a/arch/arm/mach-bcmbca/rdp/bcm_mm.h b/arch/arm/mach-bcmbca/rdp/bcm_mm.h new file mode 100755 index 0000000000..5de1747692 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/bcm_mm.h @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2013 Broadcom Corporation + All Rights Reserved + + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the Broadcom OS/CPU independent Memory Management API */ +/* */ +/******************************************************************************/ + +#ifndef _BCM_MM_H_ +#define _BCM_MM_H_ + +#if defined(__UBOOT__) + +#include + +#define VIRT_TO_PHYS(_addr) ((unsigned int)_addr) +#define PHYS_TO_CACHED(_addr) ((void *)((unsigned int)_addr)) +#define PHYS_TO_UNCACHED(_addr) ((void *)((unsigned int)_addr)) + +#define CACHED_MALLOC_ATOMIC(_size) malloc(_size) +#define CACHED_MALLOC(_size) malloc(_size) +#define CACHED_FREE(_ptr) free(_ptr) +#define NONCACHED_MALLOC_ATOMIC(_size) noncached_alloc(_size, 64) +#define NONCACHED_MALLOC(_size) noncached_alloc(_size, 64) +#define NONCACHED_FREE(_ptr) (_ptr) + +#define KMALLOC(_size, _align) memalign(_align, _size) +#define KFREE(_ptr) free(_ptr) + +#if defined(CONFIG_BCM6858) || defined(CONFIG_BCM63148) || \ + defined(CONFIG_BCM6846) || defined(CONFIG_BCM6856) || defined(CONFIG_BCM6878) +#define DMA_CACHE_LINE 64 +#else +#define DMA_CACHE_LINE 32 +#endif + +#define FLUSH_RANGE(s,l) ({unsigned long start, end; \ + start = ((unsigned long)(s))&~(DMA_CACHE_LINE-1); \ + end = (((unsigned long)(s)+(l)) + DMA_CACHE_LINE - 1)&~(DMA_CACHE_LINE-1); \ + flush_dcache_range(start, end); }) + +#define INV_RANGE(s,l) ({unsigned long start, end; \ + start = ((unsigned long)(s))&~(DMA_CACHE_LINE-1); \ + end = (((unsigned long)(s)+(l)) + DMA_CACHE_LINE - 1)&~(DMA_CACHE_LINE-1); \ + invalidate_dcache_range(start, end); }) +#elif defined(__KERNEL__) + +#if defined(CONFIG_MIPS) + +#define CACHE_TO_NONCACHE(x) KSEG1ADDR(x) +#define NONCACHE_TO_CACHE(x) KSEG0ADDR(x) +#define CACHED_MALLOC_ATOMIC(_size) kmalloc(_size,GFP_ATOMIC) +#define CACHED_MALLOC(_size) kmalloc(_size,GFP_KERNEL) +#define CACHED_FREE(ptr) kfree((void*)ptr) +#define NONCACHED_MALLOC_ATOMIC(_size) CACHE_TO_NONCACHE(kmalloc(_size,GFP_ATOMIC|__GFP_DMA)) +#define NONCACHED_MALLOC(_size) CACHE_TO_NONCACHE(kmalloc(_size,GFP_ATOMIC|__GFP_DMA)) +#define NONCACHED_FREE(_ptr) kfree((void*)NONCACHE_TO_CACHE(_ptr)) +#ifdef VIRT_TO_PHYS +#undef VIRT_TO_PHYS +#endif +#define VIRT_TO_PHYS(_addr) CPHYSADDR(_addr) +#define PHYS_TO_CACHED(_addr) KSEG0ADDR(_addr) +#define PHYS_TO_UNCACHED(_addr) KSEG1ADDR(_addr) +#define FLUSH_RANGE(_addr, _size) blast_dcache_range(_addr, _addr+_size) +#define INV_RANGE(_addr, _size) blast_inv_dcache_range((uint32_t)_addr, (uint32_t)_addr+_size) + +#elif defined(CONFIG_ARM) || defined(CONFIG_ARM64) + +#define CACHE_TO_NONCACHE(x) (x) +#define NONCACHE_TO_CACHE(x) (x) +#define CACHED_MALLOC_ATOMIC(_size) kmalloc(_size,GFP_ATOMIC) +#define CACHED_MALLOC(_size) kmalloc(_size,GFP_KERNEL) +#define CACHED_FREE(ptr) kfree((void*)ptr) +#ifdef CONFIG_PLAT_BCM63XX_ACP +/* will allocate an additional 4 bytes at the end to store the original virtual pointer */ +#define NONCACHED_MALLOC(_size, _phys_addr_ptr) ({void *_acp_addr_ptr = NULL; \ + void *_org_addr_ptr = dma_alloc_coherent(NULL, _size + sizeof(void *), _phys_addr_ptr, GFP_KERNEL|GFP_ACP); \ + if (_org_addr_ptr != NULL) { \ + _acp_addr_ptr = (void *)ACP_ADDRESS(*_phys_addr_ptr); \ + *(uintptr_t *)((uintptr_t)_acp_addr_ptr + _size) = (uintptr_t)_org_addr_ptr; \ + } \ + _acp_addr_ptr; }) +#define NONCACHED_MALLOC_ATOMIC(_size, _phys_addr_ptr) ({void *_acp_addr_ptr = NULL; \ + void *_org_addr_ptr = dma_alloc_coherent(NULL, _size + sizeof(void *), _phys_addr_ptr, GFP_ATOMIC|GFP_ACP); \ + if (_org_addr_ptr != NULL) { \ + _acp_addr_ptr = (void *)ACP_ADDRESS(*_phys_addr_ptr); \ + *(uintptr_t *)((uintptr_t)_acp_addr_ptr + _size) = (uintptr_t)_org_addr_ptr; \ + } \ + _acp_addr_ptr; }) +#define NONCACHED_FREE(_size, _ptr, _phys_addr) ({void *_org_addr_ptr; \ + _org_addr_ptr = (void *)(*(uintptr_t *)((uintptr_t)_ptr + _size)); \ + dma_free_coherent(NULL, _size + 4, _org_addr_ptr, _phys_addr); }) +#else +#define NONCACHED_MALLOC_ATOMIC(_size, _phys_addr_ptr) dma_alloc_coherent(NULL, _size, _phys_addr_ptr, GFP_ATOMIC) +#define NONCACHED_MALLOC(_size, _phys_addr_ptr) dma_alloc_coherent(NULL, _size, _phys_addr_ptr, GFP_KERNEL) +#define NONCACHED_FREE(size, _ptr, _phys_addr) dma_free_coherent(NULL, size, _ptr, _phys_addr) +#endif +#ifndef VIRT_TO_PHYS +#define VIRT_TO_PHYS(_addr) virt_to_phys((const volatile void *)_addr) +#endif +#define PHYS_TO_CACHED(_addr) phys_to_virt((phys_addr_t)_addr) +#define PHYS_TO_UNCACHED(_addr) phys_to_virt((phys_addr_t)_addr) +#define FLUSH_RANGE(_addr, _size) dma_map_single(NULL, (void *)_addr, _size, DMA_TO_DEVICE) +#define INV_RANGE(_addr, _size) dma_map_single(NULL, (void *)_addr, _size, DMA_FROM_DEVICE) + +#endif + +#define DMA_CACHE_LINE dma_get_cache_alignment() + +#else /* __KERNEL__ */ +#define CACHE_TO_NONCACHE(x) KSEG1ADDR(x) +#define NONCACHE_TO_CACHE(x) KSEG0ADDR(x) +#define VIRT_TO_PHYS(_addr) CPHYSADDR(_addr) +#define PHYS_TO_CACHED(_addr) KSEG0ADDR(_addr) +#define PHYS_TO_UNCACHED(_addr) KSEG1ADDR(_addr) +#endif + +#endif /* _BCM_MM_H_ */ diff --git a/arch/arm/mach-bcmbca/rdp/bcm_pkt_lengths.h b/arch/arm/mach-bcmbca/rdp/bcm_pkt_lengths.h new file mode 100755 index 0000000000..51350ca3c1 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/bcm_pkt_lengths.h @@ -0,0 +1,147 @@ +#ifndef __BCM_PKT_LENGTHS_H__ +#define __BCM_PKT_LENGTHS_H__ + + +/*TODO: makesure this file compiles when not for linux kernel also */ + + +/* this file is used to define the packet length for All platforms and + features at a common place */ +#if defined(CONFIG_BCM63148) || defined(CONFIG_BCM4908) || defined(CONFIG_BCM6858) || defined(CONFIG_BCM63158) || \ + defined(CONFIG_BCM6846) || defined(CONFIG_BCM47189) || defined(CONFIG_BCM6856) || defined(CONFIG_BCM63178) || \ + defined(CONFIG_BCM47622) || defined(CONFIG_BCM6878) || defined(CONFIG_BCM6756) + +#define BCM_DCACHE_LINE_LEN 64ul +#define BCM_DCACHE_ALIGN_LEN 63ul + +#elif defined(CONFIG_BCM63138) + +#define BCM_DCACHE_LINE_LEN 32 +#define BCM_DCACHE_ALIGN_LEN 31 + +#else + +#define BCM_DCACHE_LINE_LEN 16 +#define BCM_DCACHE_ALIGN_LEN 15 + +#endif + + +#define BCM_DCACHE_ALIGN(len) ((len + BCM_DCACHE_ALIGN_LEN) & ~BCM_DCACHE_ALIGN_LEN) + +#define GREATER(x, y) (x>y ? x:y) + + + /* ############ MAX Packet payload size ############ */ + +/*Ethernet */ +#define ENET_MAX_MTU_PAYLOAD_SIZE (1500) /* Ethernet Max Payload Size */ + +/* XTM */ +#define XTM_MAX_MTU_PAYLOAD_SIZE 1500 + +/* WLAN */ + +#define WLAN_MAX_MTU_PAYLOAD_SIZE (1500) + +#if defined(CONFIG_BCM_USER_DEFINED_DEFAULT_MTU) + #if (CONFIG_BCM_USER_DEFINED_DEFAULT_MTU_SIZE > ENET_MAX_MTU_PAYLOAD_SIZE) + #error "ERROR - CONFIG_BCM_USER_DEFINED_DEFAULT_MTU_SIZE > ENET_MAX_MTU_PAYLOAD_SIZE" + #endif + #if (CONFIG_BCM_USER_DEFINED_DEFAULT_MTU_SIZE > XTM_MAX_MTU_PAYLOAD_SIZE) + #error "ERROR - CONFIG_BCM_USER_DEFINED_DEFAULT_MTU_SIZE > XTM_MAX_MTU_PAYLOAD_SIZE" + #endif + + #define BCM_ENET_DEFAULT_MTU_SIZE CONFIG_BCM_USER_DEFINED_DEFAULT_MTU_SIZE + #define BCM_XTM_DEFAULT_MTU_SIZE CONFIG_BCM_USER_DEFINED_DEFAULT_MTU_SIZE + +#else /* !CONFIG_BCM_USER_DEFINED_DEFAULT_MTU */ + + #define BCM_ENET_DEFAULT_MTU_SIZE ENET_MAX_MTU_PAYLOAD_SIZE + #define BCM_XTM_DEFAULT_MTU_SIZE XTM_MAX_MTU_PAYLOAD_SIZE + +#endif + + +/* select greater of XTM, WLAN, ENET and use it as MAX payload in system + * for buffer allocation purpose + */ + +/*TODO check if compiler is replacing these checks with a final value, if not + select the MAX payload manually */ + +#define BCM_MAX_MTU_PAYLOAD_SIZE GREATER( \ + GREATER(ENET_MAX_MTU_PAYLOAD_SIZE, XTM_MAX_MTU_PAYLOAD_SIZE) \ + ,WLAN_MAX_MTU_PAYLOAD_SIZE) + + +/* ############ space needed for L2 header ############ */ +#ifndef ENET_MAX_MTU_EXTRA_SIZE +#define ENET_MAX_MTU_EXTRA_SIZE (32) /* EH_SIZE(14) + VLANTAG(4) + VLANTAG(4) + BRCMTAG(6) + FCS(4) + Extra(??) (4)*/ +#endif + +/*select greater value*/ +#define BCM_MAX_MTU_EXTRA_SIZE ENET_MAX_MTU_EXTRA_SIZE + + + +/* ############ Headroom needed in the packet ############ */ + +/* this headroom is needed for WLAN header for ENET,XTM,XPON ==> WLAN traffic */ +#define WLAN_TX_HEADROOM 208 +#define XTM_BONDING_HEADROOM 48 +#define GRE_HDR_LEN 16 + +/* Headroom is a multiple of cacheline */ +#define BCM_PKT_HEADROOM BCM_DCACHE_ALIGN(WLAN_TX_HEADROOM + GRE_HDR_LEN) + + +/* ############ Tailroom needed in the packet ############ */ + +#define BCM_SKB_TAILROOM 32 + +/* ############ XRDP DMA Offset ############ */ +#if defined(CONFIG_BCM6858) +#define DMA_MAX_OFFSET 128 +#else +#define DMA_MAX_OFFSET 0 +#endif + +#if defined(CONFIG_BCM47189) +#define DMA_DATA_OFFSET 4 +#endif + +/* ############ Toatal length used for packets ############ */ +//#define BCM_MAX_PKT_LEN BCM_MAX_MTU_EXTRA_SIZE + BCM_MAX_MTU_PAYLOAD_SIZE + /*align this to 64 bytes as Iudma may overwite, some bytes if not 64 byte aligned , bug in iudma*/ +#if defined(CONFIG_BCM_ENET_SYSPORT) + + #define SYSPORT_MAX_PKT_LEN (2048) + #define SYSPORT_PKT_LEN_LOG2 (11) + + #define CALC_MAX_PKT_LEN ((DMA_MAX_OFFSET + BCM_MAX_MTU_EXTRA_SIZE + BCM_MAX_MTU_PAYLOAD_SIZE + 63) & ~63) + #if CALC_MAX_PKT_LEN > SYSPORT_MAX_PKT_LEN + #error "Error: CALC_MAX_PKT_LEN > SYSPORT_MAX_PKT_LEN" + #endif + #define BCM_MAX_PKT_LEN SYSPORT_MAX_PKT_LEN + +#else +/* This ignores the headroom in the BPM buffer otherwise it could be reduced. + It could be set to 1856 so that the headroom in the BPM buffer would be used. + But to keep things simple and safe, max pkt len is assigned to PKTBUFSZ from + linux_osl.h */ +#define BCM_MAX_PKT_LEN GREATER(2048, ((DMA_MAX_OFFSET + BCM_MAX_MTU_EXTRA_SIZE + BCM_MAX_MTU_PAYLOAD_SIZE + 63) & ~63)) +#endif + +/* ############ Toatal buf size i.e BCM_MAX_PKT_LEN + metadata(fkb,skb_sharedinfo etc..) ############ */ +/* BCM_FKB_INPLACE, BCM_PKT_HEADROOM are always to be at cache-aligned boundaries */ + +#define BCM_PKTBUF_SIZE (BCM_DCACHE_ALIGN(BCM_MAX_PKT_LEN)) + +/* ############ other common defines ############ */ + +#define ENET_MIN_MTU_SIZE 60 /* Without FCS */ +#define ENET_MIN_MTU_SIZE_EXT_SWITCH 64 /* Without FCS */ +#define ENET_MAX_MTU_SIZE (ENET_MAX_MTU_PAYLOAD_SIZE + ENET_MAX_MTU_EXTRA_SIZE) + +#endif /* __BCM_PKT_LENGTHS_H__ */ diff --git a/arch/arm/mach-bcmbca/rdp/bdmf_data_types.h b/arch/arm/mach-bcmbca/rdp/bdmf_data_types.h new file mode 100755 index 0000000000..8f866092ca --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/bdmf_data_types.h @@ -0,0 +1,138 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* + * + */ + +/******************************************************************* + * bdmf_types.h + * + * Broadcom Device Management Framework - built-in attribute types + * + *******************************************************************/ + +#ifndef BDMF_DATA_TYPES_H_ +#define BDMF_DATA_TYPES_H_ + +#if defined LINUX_KERNEL || __KERNEL__ +#include +#include +#endif + +/** Signed integer + */ +typedef int64_t bdmf_number; + +/** Index. Signed to allow special values. Long enough to enable casting to pointer + */ + +#if (defined(__KERNEL__) || defined(BDMF_SYSTEM_SIM) || defined(RDP_SIM)) +typedef long bdmf_index; +typedef unsigned long bdmf_ptr; +#else +#if defined KERNEL_64 +typedef uint64_t bdmf_index; +typedef uint64_t bdmf_ptr; +#else +typedef long bdmf_index; +typedef uint32_t bdmf_ptr; +#endif /* KERNEL_64 */ +#endif /* __KERNEL__ */ + + +#define BDMF_INDEX_UNASSIGNED (-1) /**< "Unassigned" bdmf_index value */ +#define BDMF_INDEX_ANY (-2) /**< "Any" bdmf_index value */ + +/** String */ +typedef char *bdmf_string; + +/** Ethernet address */ +typedef struct { + uint8_t b[6]; /**< Address bytes */ +} bdmf_mac_t; + +/** Check if MAC address is zero + * param[in] ip IP address + */ +static inline int bdmf_mac_is_zero(const bdmf_mac_t *mac) +{ + return !mac->b[0] && !mac->b[1] && !mac->b[2] && !mac->b[3] && !mac->b[4] && !mac->b[5]; +} + +/** Enumeration value */ +typedef long bdmf_enum; + +/** Boolean value */ +typedef char bdmf_boolean; + +/** IP address family */ +typedef enum { + bdmf_ip_family_ipv4, + bdmf_ip_family_ipv6 +} bdmf_ip_family; + +/** IPv4 address */ +typedef uint32_t bdmf_ipv4; + +/** IPv6 address */ +typedef struct +{ + uint8_t data[16]; +} bdmf_ipv6_t; + +/** IPv4 or IPv6 address */ +typedef struct { + bdmf_ip_family family; /**< Address family: IPv4 / IPv6 */ + union { + bdmf_ipv4 ipv4; /**< IPv4 address */ + bdmf_ipv6_t ipv6; /**< IPv6 address */ + } addr; +} bdmf_ip_t; + +/** Check if IPv6 address is zero + * param[in] ip IPv6 address + */ +static inline int bdmf_ipv6_is_zero(const bdmf_ipv6_t *ipv6) +{ + uint32_t *ipv6_as_int = (uint32_t *)ipv6; + return !ipv6_as_int[0] && !ipv6_as_int[1] && !ipv6_as_int[2] && !ipv6_as_int[3]; +} + +/** Check if IP address is zero + * param[in] ip IP address + */ +static inline int bdmf_ip_is_zero(const bdmf_ip_t *ip) +{ + if (ip->family == bdmf_ip_family_ipv4) + return !ip->addr.ipv4; + return bdmf_ipv6_is_zero(&ip->addr.ipv6); +} + +/** Compare IP addresses + * param[in] ip IP address + * param[in] ip2 IP address + */ +static inline int bdmf_ip_cmp(const bdmf_ip_t *ip, const bdmf_ip_t *ip2) +{ + uint32_t *ipv6_as_int, *ipv6_as_int2; + + if (ip->family != ip2->family) + return -1; + if (ip->family == bdmf_ip_family_ipv4) + return ip->addr.ipv4 != ip2->addr.ipv4; + + ipv6_as_int = (uint32_t *)&ip->addr.ipv6; + ipv6_as_int2 = (uint32_t *)&ip2->addr.ipv6; + return !(ipv6_as_int[0] == ipv6_as_int2[0] && ipv6_as_int[1] == ipv6_as_int2[1] && + ipv6_as_int[2] == ipv6_as_int2[2] && ipv6_as_int[3] == ipv6_as_int2[3]); +} + +#if (defined(PHYS_ADDR_64BIT) || defined(CONFIG_PHYS_ADDR_T_64BIT)) && !defined(WL4908) +typedef uint64_t bdmf_phys_addr_t; +#else +typedef uint32_t bdmf_phys_addr_t; +#endif + +#endif /* BDMF_DATA_TYPES_H_ */ diff --git a/arch/arm/mach-bcmbca/rdp/bdmf_errno.h b/arch/arm/mach-bcmbca/rdp/bdmf_errno.h new file mode 100755 index 0000000000..f10d8e9ecd --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/bdmf_errno.h @@ -0,0 +1,104 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* + * + */ + +/******************************************************************* + * bdmf_errno.h + * + * BDMF framework - generic error codes + * + *******************************************************************/ + +#ifndef BDMF_ERRNO_H + +#define BDMF_ERRNO_H + +/** \defgroup bdmf_errno Broadlight Error Codes + * + * This header files includes declaration of generic error codes and also + * support functions for adding additional error code ranges and + * conversion of error code to error message. + * @{ + */ + +/** Generic error codes + */ +typedef enum { + BDMF_ERR_OK = 0, /**< OK */ + BDMF_ERR_PARM = -1, /**< Error in parameters */ + BDMF_ERR_NOMEM = -2, /**< No memory */ + BDMF_ERR_NORES = -3, /**< No resources */ + BDMF_ERR_INTERNAL = -4, /**< Internal error */ + BDMF_ERR_NOENT = -5, /**< Entry doesn't exist */ + BDMF_ERR_NODEV = -6, /**< Device doesn't exist */ + BDMF_ERR_ALREADY = -7, /**< Entry already exists */ + BDMF_ERR_RANGE = -8, /**< Out of range */ + BDMF_ERR_PERM = -9, /**< No permission to perform an operation */ + BDMF_ERR_NOT_SUPPORTED = -10, /**< Operation is not supported */ + BDMF_ERR_PARSE = -11, /**< Parsing error */ + BDMF_ERR_INVALID_OP = -12, /**< Invalid operation */ + BDMF_ERR_IO = -13, /**< I/O error */ + BDMF_ERR_STATE = -14, /**< Object is in bad state */ + BDMF_ERR_DELETED = -15, /**< Object is deleted */ + BDMF_ERR_TOO_MANY = -16, /**< Too many objects */ + BDMF_ERR_NOT_LINKED = -17, /**< Objects are not linked */ + BDMF_ERR_NO_MORE = -18, /**< No more entries */ + BDMF_ERR_OVERFLOW = -19, /**< Buffer overflow */ + BDMF_ERR_COMM_FAIL = -20, /**< Communication failure */ + BDMF_ERR_NOT_CONNECTED = -21, /**< No connection with the target system */ + BDMF_ERR_SYSCALL_ERR = -22, /**< System call returned error */ + BDMF_ERR_MSG_ERROR = -23, /**< Received message is insane */ + BDMF_ERR_TOO_MANY_REQS = -24, /**< Too many outstanding requests */ + BDMF_ERR_NO_MSG_SERVER = -25, /**< Remote delivery error. No message server. */ + BDMF_ERR_NO_LOCAL_SUBS = -26, /**< Local subsystem is not set */ + BDMF_ERR_NO_SUBS = -27, /**< Subsystem is not recognised */ + BDMF_ERR_INTR = -28, /**< Operation interrupted */ + BDMF_ERR_HIST_RES_MISMATCH= -29, /**< History result mismatch */ + BDMF_ERR_MORE = -30, /**< More work to do */ + BDMF_ERR_IGNORE = -31, /**< Ignore the error */ + BDMF_ERR_LAST = -100, /**< Last generic error */ +} bdmf_error_t; + +/** Register error code range + * + * \param[in] from From number. Must be negative + * \param[in] to To number. Must be negative >from + * \param[in] p_strerr Callback that returns error string + * + * \returns BDMF_ERR_OK - OK\n + * BDMF_ERR_PARM - error in parameters\n + * BDMF_ERR_NOMEM - no memory + * BDMF_ERR_ALREADY - ( from, to ) range overlaps with existing range + */ +bdmf_error_t bdmf_error_range_register(int from, int to, + const char *(*p_strerr)(int err)); + + +/** Unregister error code range + * + * \param[in] from From number. Must be negative + * \param[in] to To number. Must be negative >from + * + * \returns BDMF_ERR_OK - OK\n + * BDMF_ERR_PARM - error in parameters\n + * BDMF_ERR_NOENT - ( from, to ) range is not registered + */ +bdmf_error_t bdmf_error_range_unregister(int from, int to); + + +/** Convert error code to error string + * + * \param[in] err Error code. One of bdmf_error_t constants or additional + * codes registered using bdmf_error_register() + * \returns Error string + */ +const char *bdmf_strerror(int err); + +/** @} */ + +#endif /* #ifndef BDMF_ERRNO_H */ + diff --git a/arch/arm/mach-bcmbca/rdp/bl_os_wraper.h b/arch/arm/mach-bcmbca/rdp/bl_os_wraper.h new file mode 100755 index 0000000000..4f06e8d516 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/bl_os_wraper.h @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2012 Broadcom + */ +/* +* +*/ + +/************************************************************************/ +/* */ +/* OS abstraction */ +/* */ +/************************************************************************/ + +#ifndef _BL_OS_WRAPER_H_ +#define _BL_OS_WRAPER_H_ + + +#if defined __UBOOT__ + #include + #define bdmf_sysb int + #define xprintf printf +#elif defined __KERNEL__ + + #include + #include + #include + #include + #include + #include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0) + #include +#endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +#else + #warning "Unspecified OS !" +#endif + + +#define BL_ZERO_REG(reg) do {*(unsigned int*)reg = 0;} while(0) + +#define ONE_SEC_IN_NANO 1000000000 +#define BL_LILAC_IRQ_BASE 0x70 + +#ifdef DEBUG +#define BL_ASSERT(x) if (!(x)) {\ + printk("Assertion in %s at line %d failed/n", __FILE__, __LINE__); \ + while(1); \ + } +#else +#define BL_ASSERT(x) +#endif + + +#endif /* #ifndef _BL_OS_WRAPER_H_ */ + diff --git a/arch/arm/mach-bcmbca/rdp/data_path_init.c b/arch/arm/mach-bcmbca/rdp/data_path_init.c new file mode 100755 index 0000000000..17da11720a --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/data_path_init.c @@ -0,0 +1,1830 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the implementation for Broadcom's BCM63138 Data path */ +/* initialization sequence */ +/* */ +/******************************************************************************/ + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ + + +#ifdef __UBOOT__ +#include +#endif +#include "data_path_init.h" +#include "rdpa_types.h" +#include "rdpa_config.h" +#include "rdp_drv_bpm.h" +#include "rdp_drv_sbpm.h" +#include "rdp_drv_ih.h" +#include "rdp_drv_bbh.h" +#include "rdp_dma.h" +#include "rdd_ih_defs.h" +#include "rdd.h" +#include "rdd_tm.h" + +static S_DPI_CFG DpiBasicConfig = {WAN_TYPE_NONE,1536,0,0,0,0}; + +#if defined(BDMF_SYSTEM_SIM) +#define __print(fmt, arg...) +#elif defined(__UBOOT__) +#define __print(fmt, arg...) printf(fmt, ##arg) +#else +#define __print(fmt, arg...) printk(fmt, ##arg) +#endif + +#define BCM63138_TM_DEF_DDR_SIZE 0x0E00000 +#define BCM63138_TM_MC_DEF_DDR_SIZE 0x0400000 +#define CS_RDD_ETH_TX_QUEUE_PACKET_THRESHOLD 256 +#define CS_RDD_CPU_RX_QUEUE_SIZE 32 + + +#define SHIFTL(_a) ( 1 << _a) +/**************************************************************************** + * + * Defines + * + * *************************************************************************/ + +#define DEFAULT_RUNNER_FREQ 800 +#define RDD_CPU_TX_ABS_FIFO_SIZE LILAC_RDD_CPU_TX_SKB_LIMIT_MAX + +/* multicast header size */ +#define BBH_MULTICAST_HEADER_SIZE_FOR_LAN_PORT 32 +#define BBH_MULTICAST_HEADER_SIZE_FOR_WAN_PORT 96 + +/* PD FIFO size of EMAC, when MDU mode is disabled */ +#define BBH_TX_EMAC_PD_FIFO_SIZE_MDU_MODE_DISABLED 8 +/* PD FIFO size of EMAC, when MDU mode is enabled */ +#define BBH_TX_EMAC_PD_FIFO_SIZE_MDU_MODE_ENABLED 4 +/* DMA */ +#define BBH_RX_DMA_FIFOS_SIZE_WAN_DMA 19 +#define BBH_RX_DMA_FIFOS_SIZE_WAN_DSL 19 +#define BBH_RX_DMA_FIFOS_SIZE_LAN_DMA 9 +#define BBH_RX_DMA_FIFOS_SIZE_LAN_BBH 11 +#define BBH_RX_DMA_EXCLUSIVE_THRESHOLD_WAN_DMA 17 +#define BBH_RX_DMA_EXCLUSIVE_THRESHOLD_WAN_BBH 18 +#define BBH_RX_DMA_EXCLUSIVE_THRESHOLD_LAN_DMA 7 +#define BBH_RX_DMA_EXCLUSIVE_THRESHOLD_LAN_BBH 11 +#define BBH_RX_SDMA_FIFOS_SIZE_WAN 7 +#define BBH_RX_SDMA_FIFOS_SIZE_LAN 5 +#define BBH_RX_SDMA_EXCLUSIVE_THRESHOLD_WAN 6 +#define BBH_RX_SDMA_EXCLUSIVE_THRESHOLD_LAN 4 +#define BBH_RX_DMA_TOTAL_NUMBER_OF_CHUNK_DESCRIPTORS 64 +#define BBH_RX_SDMA_TOTAL_NUMBER_OF_CHUNK_DESCRIPTORS 32 + +#define ATM_MIN_DATA_SIZE 4 /* Such as PPPoA or IPoA */ +#define MIN_XTM_PKT_SIZE ATM_MIN_DATA_SIZE +#define MIN_ETH_PKT_SIZE 64 +#define BBH_RX_FLOWS_32_255_GROUP_DIVIDER 255 +#define BBH_RX_ETH_MIN_PKT_SIZE_SELECTION_INDEX 0 + +#define BBH_RX_MAX_PKT_SIZE_SELECTION_INDEX 0 + +//#define IH_HEADER_LENGTH_MIN 64 +#define IH_HEADER_LENGTH_MIN ATM_MIN_DATA_SIZE + +#define IH_PARSER_EXCEPTION_STATUS_BITS 0x47 +#define IH_PARSER_AH_DETECTION 0x18000 +/* PPP protocol code for IPv4 is configured at index 0 */ +#define IH_PARSER_PPP_PROTOCOL_CODE_0_IPV4 0x21 +/* PPP protocol code for IPv6 is configured at index 1 */ +#define IH_PARSER_PPP_PROTOCOL_CODE_1_IPV6 0x57 + +#define IH_ETH0_ROUTE_ADDRESS 0x1C +#define IH_ETH1_ROUTE_ADDRESS 0xC +#define IH_ETH2_ROUTE_ADDRESS 0x14 +#define IH_ETH3_ROUTE_ADDRESS 0x8 +#define IH_ETH4_ROUTE_ADDRESS 0x10 +#define IH_GPON_ROUTE_ADDRESS 0 +#define IH_DSL_ROUTE_ADDRESS IH_GPON_ROUTE_ADDRESS +#define IH_RUNNER_A_ROUTE_ADDRESS 0x3 +#define IH_RUNNER_B_ROUTE_ADDRESS 0x2 +#define IH_DA_FILTER_IPTV_IPV4 0 +#define IH_DA_FILTER_IPTV_IPV6 1 +#define TCP_CTRL_FLAG_RST 0x04 +#define TCP_CTRL_FLAG_SYN 0x02 +#define TCP_CTRL_FLAG_FIN 0x01 +/* size of ingress queue of each one of the EMACs which function as LAN */ +#define IH_INGRESS_QUEUE_SIZE_LAN_EMACS 2 +/* size of ingress queue of the WAN port */ +#define IH_INGRESS_QUEUE_SIZE_WAN 4 +/* size of ingress queue of each runner */ +#define IH_INGRESS_QUEUE_SIZE_RUNNERS 1 +/* priority of ingress queue of each one of the EMACs which function as LAN */ +#define IH_INGRESS_QUEUE_PRIORITY_LAN_EMACS 1 +/* priority of ingress queue of the WAN port */ +#define IH_INGRESS_QUEUE_PRIORITY_WAN 2 +/* priority of ingress queue of each runner */ +#define IH_INGRESS_QUEUE_PRIORITY_RUNNERS 0 +/* weight of ingress queue of each one of the EMACs which function as LAN */ +#define IH_INGRESS_QUEUE_WEIGHT_LAN_EMACS 1 +/* weight of ingress queue of the WAN port */ +#define IH_INGRESS_QUEUE_WEIGHT_WAN 1 +/* weight of ingress queue of each runner */ +#define IH_INGRESS_QUEUE_WEIGHT_RUNNERS 1 +/* congestion threshold of ingress queue of each one of the EMACs which function as LAN */ +#define IH_INGRESS_QUEUE_CONGESTION_THRESHOLD_LAN_EMACS 65 +/* congestion threshold of ingress queue of the WAN port */ +#define IH_INGRESS_QUEUE_CONGESTION_THRESHOLD_WAN_ETH 65 +#define IH_INGRESS_QUEUE_CONGESTION_THRESHOLD_WAN_DSL 0x1F /* 31 */ +/* congestion threshold of ingress queue of each runner */ +#define IH_INGRESS_QUEUE_CONGESTION_THRESHOLD_RUNNERS 65 + +#define IH_IP_L4_FILTER_USER_DEFINED_0 0 +#define IH_IP_L4_FILTER_USER_DEFINED_1 1 +#define IH_IP_L4_FILTER_USER_DEFINED_2 2 +#define IH_IP_L4_FILTER_USER_DEFINED_3 3 + +#define IH_L4_FILTER_DEF 0xff +/* we use one basic class */ +#define IH_BASIC_CLASS_INDEX 0 +/* IH classifier indices for broadcast and multicast traffic iptv destination */ +#define IH_CLASSIFIER_BCAST_IPTV 0 +#define IH_CLASSIFIER_IGMP_IPTV 1 +#define IH_CLASSIFIER_ICMPV6 2 +#define IH_CLASSIFIER_IPTV (IH_CLASSIFIER_ICMPV6 + 1) + +#define MASK_IH_CLASS_KEY_L4 0x3c0 +/* IPTV DA filter mask in IH */ +#define IPTV_FILTER_MASK_DA 0x3800 +#define IPTV_FILTER_MASK_BCAST 0x8000 + +/* default value for SBPM */ +#define SBPM_DEFAULT_THRESHOLD 800 +#define SBPM_DEFAULT_HYSTERESIS 0 +#define BPM_DEFAULT_HYSTERESIS 64 +#define SBPM_BASE_ADDRESS 0 +#define SBPM_LIST_SIZE 0x3FF +#define BPM_CPU_NUMBER_OF_BUFFERS 1536 +#if defined(DSL_63138) +#if defined(CONFIG_BCM_JUMBO_FRAME) +#define DRV_BBH_DDR_BUFFER_SIZE DRV_BBH_DDR_BUFFER_SIZE_2_5_KB +#else +#define DRV_BBH_DDR_BUFFER_SIZE DRV_BBH_DDR_BUFFER_SIZE_2_KB +#endif +#define DRV_BBH_DDR_BPM_MESSAGE_FORMAT DRV_BBH_DDR_BPM_MESSAGE_FORMAT_15_BIT_BN_WIDTH +#define DRV_SPARE_BN_MESSAGE_FORMAT DRV_SPARE_BN_MESSAGE_FORMAT_15_bit_BN_WIDTH +#elif defined(DSL_63148) && defined(CONFIG_BCM_JUMBO_FRAME) +#define DRV_BBH_DDR_BUFFER_SIZE DRV_BBH_DDR_BUFFER_SIZE_4_KB +#define DRV_BBH_DDR_BPM_MESSAGE_FORMAT DRV_BBH_DDR_BPM_MESSAGE_FORMAT_14_BIT_BN_WIDTH +#define DRV_SPARE_BN_MESSAGE_FORMAT DRV_SPARE_BN_MESSAGE_FORMAT_14_bit_BN_WIDTH +#else +#define DRV_BBH_DDR_BUFFER_SIZE DRV_BBH_DDR_BUFFER_SIZE_2_KB +#define DRV_BBH_DDR_BPM_MESSAGE_FORMAT DRV_BBH_DDR_BPM_MESSAGE_FORMAT_14_BIT_BN_WIDTH +#define DRV_SPARE_BN_MESSAGE_FORMAT DRV_SPARE_BN_MESSAGE_FORMAT_14_bit_BN_WIDTH +#endif + +/*DSL DEFS*/ +/* size of each one of FIFOs 0-7 */ +#define BBH_TX_DSL_PD_FIFO_SIZE_0_7 4 +/* size of each one of FIFOs 8-15 */ +#define BBH_TX_DSL_PD_FIFO_SIZE_8_15 3 +#define BBH_TX_DSL_PD_FIFO_SIZE_16_23 3 +#define BBH_TX_DSL_PD_FIFO_SIZE_24_31 3 +#define BBH_TX_DSL_PD_FIFO_SIZE_32_39 3 +#define BBH_TX_DSL_NUMBER_OF_QUEUES_IN_PD_FIFO_GROUP 8 +#define BBH_TX_DSL_TOTAL_NUMBER_OF_PDS 128 +#define BBH_TX_DSL_PD_FIFO_BASE_0 0 +#define BBH_TX_DSL_PD_FIFO_BASE_1 (BBH_TX_DSL_PD_FIFO_BASE_0 + BBH_TX_DSL_PD_FIFO_SIZE_0_7) +#define BBH_TX_DSL_PD_FIFO_BASE_2 (BBH_TX_DSL_PD_FIFO_BASE_1 + BBH_TX_DSL_PD_FIFO_SIZE_0_7) +#define BBH_TX_DSL_PD_FIFO_BASE_3 (BBH_TX_DSL_PD_FIFO_BASE_2 + BBH_TX_DSL_PD_FIFO_SIZE_0_7) +#define BBH_TX_DSL_PD_FIFO_BASE_4 (BBH_TX_DSL_PD_FIFO_BASE_3 + BBH_TX_DSL_PD_FIFO_SIZE_0_7) +#define BBH_TX_DSL_PD_FIFO_BASE_5 (BBH_TX_DSL_PD_FIFO_BASE_4 + BBH_TX_DSL_PD_FIFO_SIZE_0_7) +#define BBH_TX_DSL_PD_FIFO_BASE_6 (BBH_TX_DSL_PD_FIFO_BASE_5 + BBH_TX_DSL_PD_FIFO_SIZE_0_7) +#define BBH_TX_DSL_PD_FIFO_BASE_7 (BBH_TX_DSL_PD_FIFO_BASE_6 + BBH_TX_DSL_PD_FIFO_SIZE_0_7) +#define BBH_TX_DSL_PD_FIFO_BASE_8_15 (BBH_TX_DSL_PD_FIFO_BASE_7 + BBH_TX_DSL_PD_FIFO_SIZE_0_7) +#define BBH_TX_DSL_PD_FIFO_BASE_16_23 \ + (BBH_TX_DSL_PD_FIFO_BASE_8_15 + (BBH_TX_DSL_NUMBER_OF_QUEUES_IN_PD_FIFO_GROUP * BBH_TX_DSL_PD_FIFO_SIZE_8_15)) +#define BBH_TX_DSL_PD_FIFO_BASE_24_31 (BBH_TX_DSL_PD_FIFO_BASE_16_23 + \ + (BBH_TX_DSL_NUMBER_OF_QUEUES_IN_PD_FIFO_GROUP * BBH_TX_DSL_PD_FIFO_SIZE_16_23)) +#define BBH_TX_DSL_PD_FIFO_BASE_32_39 (BBH_TX_DSL_PD_FIFO_BASE_24_31 + \ + (BBH_TX_DSL_NUMBER_OF_QUEUES_IN_PD_FIFO_GROUP * BBH_TX_DSL_PD_FIFO_SIZE_24_31)) + +/******************************************************************************/ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + BB_MODULE_DMA, + BB_MODULE_SDMA, + + BB_MODULE_NUM +}E_BB_MODULE; + +typedef enum +{ + DMA_PERIPHERAL_EMAC_0 = 0, + DMA_PERIPHERAL_EMAC_1 = 1, + DMA_PERIPHERAL_DSL = 5, + + DMA_NUMBER_OF_PERIPHERALS +} +E_DMA_PERIPHERAL; +/******************************************************************************/ +/* */ +/* Macros definitions */ +/* */ +/******************************************************************************/ +/* sets bit #i of a given number to a given value */ +#define SET_BIT_I( number , i , bit_value ) ( ( number ) &= ( ~ ( 1 << i ) ) , ( number ) |= ( bit_value << i ) ) +#define MS_BYTE_TO_8_BYTE_RESOLUTION(address) ((address) >> 3) +#define ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0])) + +#define BBH_PORT_IS_WAN(_portIndex) (_portIndex == DRV_BBH_EMAC_0 || _portIndex == DRV_BBH_DSL) + +/*****************************************************************************/ +/* */ +/* Local Defines */ +/* */ +/*****************************************************************************/ + +static S_DPI_CFG *pDpiCfg = NULL; +static uint32_t initDone = 0; + +/* route addresses (for both TX & RX) */ +static const uint8_t bbh_route_address_dma[DRV_BBH_NUMBER_OF_PORTS]= +{ + 0xC, 0xD, 0xE, 0xD, 0xE, 0xF, 0xF +}; + +static const uint8_t bbh_route_address_bpm[DRV_BBH_NUMBER_OF_PORTS]= +{ + 0x14, 0x15, 0x16, 0x15, 0x16, 0x17, 0x17 +}; + +static const uint8_t bbh_route_address_sdma[DRV_BBH_NUMBER_OF_PORTS]= +{ + 0x1C, 0x1D, 0x1E, 0x1D, 0x1E, 0x1F, 0x1F +}; + +static const uint8_t bbh_route_address_sbpm[DRV_BBH_NUMBER_OF_PORTS]= +{ + 0x34, 0x35, 0x36, 0x35, 0x36, 0x37, 0x37 +}; + +static const uint8_t bbh_route_address_runner_0[DRV_BBH_NUMBER_OF_PORTS]= +{ + 0x0, 0x1, 0x2, 0x1, 0x2, 0x3, 0x3 +}; + +static const uint8_t bbh_route_address_runner_1[DRV_BBH_NUMBER_OF_PORTS]= +{ + 0x8, 0x9, 0xA, 0x9, 0xA, 0xB, 0xB +}; + +static const uint8_t bbh_route_address_ih[DRV_BBH_NUMBER_OF_PORTS]= +{ + 0x18, 0x19, 0x1A, 0x11, 0x12, 0x13, 0x13 +}; + +/* same values for DMA & SDMA */ +static const uint8_t bbh_dma_and_sdma_read_requests_fifo_base_address[DRV_BBH_NUMBER_OF_PORTS]= +{ + 0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x28 +}; + +/* IH Classes indexes & configurations */ +typedef struct +{ + uint8_t class_index; + + DRV_IH_CLASS_CONFIG class_config; +} +ih_class_cfg; +ih_class_cfg gs_ih_classes[] = +{ + { + /* LAN bridged eth0 */ + DRV_RDD_IH_CLASS_LAN_BRIDGED_ETH0_INDEX, + { + DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX, /* da_lookup_required */ + DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX, /* sa_lookup_required */ + DRV_RDD_IH_CLASS_10_CLASS_SEARCH_3, + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_4, + DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1, /* da_lookup_required */ + DRV_RDD_IH_CLASS_10_DROP_ON_MISS, + DRV_RDD_IH_CLASS_10_DSCP_TO_PBITS_TABLE_INDEX, + DRV_RDD_IH_CLASS_10_DIRECT_MODE_DEFAULT, + DRV_RDD_IH_CLASS_10_DIRECT_MODE_OVERRIDE, + DRV_RDD_IH_CLASS_10_TARGET_MEMORY_DEFAULT, + DRV_RDD_IH_CLASS_10_TARGET_MEMORY_OVERRIDE, + DRV_RDD_IH_CLASS_10_INGRESS_QOS_DEFAULT, + DRV_RDD_IH_CLASS_10_INGRESS_QOS_OVERRIDE, + DRV_RDD_IH_CLASS_10_TARGET_RUNNER_DEFAULT, + DRV_RDD_IH_CLASS_10_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE, + DRV_RDD_IH_CLASS_10_TARGET_RUNNER_FOR_DIRECT_MODE, + DRV_RDD_IH_CLASS_10_LOAD_BALANCING_ENABLE, + DRV_RDD_IH_CLASS_10_PREFERENCE_LOAD_BALANCING_ENABLE + } + }, + { + /* LAN bridged eth1 */ + DRV_RDD_IH_CLASS_LAN_BRIDGED_ETH1_INDEX, + { + DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX, /* da_lookup_required */ + DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX, /* sa_lookup_required */ + DRV_RDD_IH_CLASS_11_CLASS_SEARCH_3, + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_4, + DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1, /* da_lookup_required */ + DRV_RDD_IH_CLASS_11_DROP_ON_MISS, + DRV_RDD_IH_CLASS_11_DSCP_TO_PBITS_TABLE_INDEX, + DRV_RDD_IH_CLASS_11_DIRECT_MODE_DEFAULT, + DRV_RDD_IH_CLASS_11_DIRECT_MODE_OVERRIDE, + DRV_RDD_IH_CLASS_11_TARGET_MEMORY_DEFAULT, + DRV_RDD_IH_CLASS_11_TARGET_MEMORY_OVERRIDE, + DRV_RDD_IH_CLASS_11_INGRESS_QOS_DEFAULT, + DRV_RDD_IH_CLASS_11_INGRESS_QOS_OVERRIDE, + DRV_RDD_IH_CLASS_11_TARGET_RUNNER_DEFAULT, + DRV_RDD_IH_CLASS_11_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE, + DRV_RDD_IH_CLASS_11_TARGET_RUNNER_FOR_DIRECT_MODE, + DRV_RDD_IH_CLASS_11_LOAD_BALANCING_ENABLE, + DRV_RDD_IH_CLASS_11_PREFERENCE_LOAD_BALANCING_ENABLE + } + }, +}; + +/* following arrays are initialized in run-time. */ +/* DMA related */ +static uint8_t bbh_rx_dma_data_fifo_base_address[DRV_BBH_NUMBER_OF_PORTS]; +static uint8_t bbh_rx_dma_chunk_descriptor_fifo_base_address[DRV_BBH_NUMBER_OF_PORTS]; +static uint8_t bbh_rx_dma_data_and_chunk_descriptor_fifos_size[DRV_BBH_NUMBER_OF_PORTS]; +static uint8_t bbh_rx_dma_exclusive_threshold[DRV_BBH_NUMBER_OF_PORTS]; +/* SDMA related */ +static uint8_t bbh_rx_sdma_data_fifo_base_address[DRV_BBH_NUMBER_OF_PORTS]; +static uint8_t bbh_rx_sdma_chunk_descriptor_fifo_base_address[DRV_BBH_NUMBER_OF_PORTS]; +static uint8_t bbh_rx_sdma_data_and_chunk_descriptor_fifos_size[DRV_BBH_NUMBER_OF_PORTS]; +static uint8_t bbh_rx_sdma_exclusive_threshold[DRV_BBH_NUMBER_OF_PORTS]; +static uint16_t bbh_ih_ingress_buffers_bitmask[DRV_BBH_NUMBER_OF_PORTS]; + +static const BL_LILAC_RDD_EMAC_ID_DTE bbh_to_rdd_emac_map[] = +{ + BL_LILAC_RDD_EMAC_ID_0 , + BL_LILAC_RDD_EMAC_ID_1 , + BL_LILAC_RDD_EMAC_ID_2 , + BL_LILAC_RDD_EMAC_ID_3 , + BL_LILAC_RDD_EMAC_ID_4 , +}; + +/******************************************************************************/ +/* There are 8 IH ingress queues. This enumeration defines, for each ingress */ +/* queue, which physical source port it belongs to. */ +/******************************************************************************/ + +typedef enum +{ + IH_INGRESS_QUEUE_0_ETH0 = 0 , + IH_INGRESS_QUEUE_1_ETH1 = 1 , + IH_INGRESS_QUEUE_5_DSL = 5 , + IH_INGRESS_QUEUE_6_RUNNER_A = 6 , + IH_INGRESS_QUEUE_7_RUNNER_B = 7 , + + NUMBER_OF_IH_INGRESS_QUEUES +} +IH_INGRESS_QUEUE_INDEX ; + +/* FW binaries */ +extern uint32_t firmware_binary_A[]; +extern uint32_t firmware_binary_B[]; +extern uint32_t firmware_binary_C[]; +extern uint32_t firmware_binary_D[]; +extern uint16_t firmware_predict_A[]; +extern uint16_t firmware_predict_B[]; +extern uint16_t firmware_predict_C[]; +extern uint16_t firmware_predict_D[]; + +void f_basic_sbpm_sp_enable(void); +void f_basic_bpm_sp_enable(void); + +typedef struct +{ + uint32_t bpm_def_thresh; + uint32_t bpm_gbl_thresh; +} rdp_bpm_cfg_params; + + +static void f_update_bbh_ih_ingress_buffers_bitmask(DRV_BBH_PORT_INDEX bbh_port_index, uint8_t base_location, uint8_t queue_size) +{ + uint16_t bitmask = 0; + uint8_t i; + + /* set '1's according to queue_size */ + for (i= 0; i < queue_size; i++) + { + SET_BIT_I(bitmask, i, 1); + } + /* do shifting according to xi_base_location */ + bitmask <<= base_location; + + /* update in database */ + bbh_ih_ingress_buffers_bitmask[bbh_port_index] = bitmask; +} + +static void fi_dma_configure_memory_allocation ( E_BB_MODULE module_id , + E_DMA_PERIPHERAL peripheral_id , + uint32_t data_memory_offset_address , + uint32_t cd_memory_offset_address , + uint32_t number_of_buffers ) +{ + DMA_REGS_CONFIG_MALLOC config_malloc ; + + DMA_REGS_CONFIG_MALLOC_READ( module_id , peripheral_id , config_malloc ) ; + config_malloc.datatoffset = data_memory_offset_address ; + config_malloc.cdoffset = cd_memory_offset_address ; + config_malloc.numofbuff = number_of_buffers ; + DMA_REGS_CONFIG_MALLOC_WRITE( module_id , peripheral_id , config_malloc ) ; +} + +static void f_initialize_dma_sdma(void) +{ + DMA_REGS_CONFIG_U_THRESH dma_thresh; + + /* DMA */ + fi_dma_configure_memory_allocation ( BB_MODULE_DMA , + DMA_PERIPHERAL_EMAC_0 , + BBH_RX_DMA_FIFOS_SIZE_LAN_BBH * DMA_PERIPHERAL_EMAC_0 , + BBH_RX_DMA_FIFOS_SIZE_LAN_BBH * DMA_PERIPHERAL_EMAC_0 , + BBH_RX_DMA_FIFOS_SIZE_LAN_BBH) ; + /* SDMA */ + fi_dma_configure_memory_allocation ( BB_MODULE_SDMA , + DMA_PERIPHERAL_EMAC_0 , + bbh_rx_sdma_data_fifo_base_address [ DMA_PERIPHERAL_EMAC_0 ] , + bbh_rx_sdma_chunk_descriptor_fifo_base_address [ DMA_PERIPHERAL_EMAC_0 ] , + bbh_rx_sdma_data_and_chunk_descriptor_fifos_size [ DMA_PERIPHERAL_EMAC_0 ] ) ; + + /* DMA */ + fi_dma_configure_memory_allocation ( BB_MODULE_DMA , + DMA_PERIPHERAL_EMAC_1 , + BBH_RX_DMA_FIFOS_SIZE_LAN_BBH * DMA_PERIPHERAL_EMAC_1 , + BBH_RX_DMA_FIFOS_SIZE_LAN_BBH * DMA_PERIPHERAL_EMAC_1 , + BBH_RX_DMA_FIFOS_SIZE_LAN_BBH) ; + /* SDMA */ + fi_dma_configure_memory_allocation ( BB_MODULE_SDMA , + DMA_PERIPHERAL_EMAC_1 , + bbh_rx_sdma_data_fifo_base_address [ DMA_PERIPHERAL_EMAC_1 ] , + bbh_rx_sdma_chunk_descriptor_fifo_base_address [ DMA_PERIPHERAL_EMAC_1 ] , + bbh_rx_sdma_data_and_chunk_descriptor_fifos_size [ DMA_PERIPHERAL_EMAC_1 ] ) ; + + /* DMA*/ + fi_dma_configure_memory_allocation ( BB_MODULE_DMA , + DMA_PERIPHERAL_DSL , + bbh_rx_dma_data_fifo_base_address [ DRV_BBH_DSL ] , + bbh_rx_dma_chunk_descriptor_fifo_base_address [ DRV_BBH_DSL ] , + bbh_rx_dma_data_and_chunk_descriptor_fifos_size [ DRV_BBH_DSL ] ) ; + /* SDMA */ + fi_dma_configure_memory_allocation ( BB_MODULE_SDMA , + DMA_PERIPHERAL_DSL , + bbh_rx_sdma_data_fifo_base_address [ DRV_BBH_DSL ] , + bbh_rx_sdma_chunk_descriptor_fifo_base_address [ DRV_BBH_DSL ] , + bbh_rx_sdma_data_and_chunk_descriptor_fifos_size [ DRV_BBH_DSL ] ) ; + + dma_thresh.out_of_u = 1; + dma_thresh.into_u = 5; + DMA_REGS_CONFIG_U_THRESH_WRITE(BB_MODULE_DMA,DMA_PERIPHERAL_EMAC_0,dma_thresh); + DMA_REGS_CONFIG_U_THRESH_WRITE(BB_MODULE_DMA,DMA_PERIPHERAL_EMAC_1,dma_thresh); + DMA_REGS_CONFIG_U_THRESH_WRITE(BB_MODULE_DMA,DMA_PERIPHERAL_DSL,dma_thresh); +} + +static E_DPI_RC f_initialize_bbh_dma_sdma_related_arrays(void) +{ + uint8_t dma_base_address = 0; + uint8_t sdma_base_address = 0; + + /* Ethernet WAN */ + bbh_rx_dma_data_and_chunk_descriptor_fifos_size[DRV_BBH_EMAC_0] = BBH_RX_DMA_FIFOS_SIZE_WAN_DMA; + bbh_rx_dma_exclusive_threshold[DRV_BBH_EMAC_0] = BBH_RX_DMA_EXCLUSIVE_THRESHOLD_WAN_DMA; + bbh_rx_sdma_data_and_chunk_descriptor_fifos_size[DRV_BBH_EMAC_0] = BBH_RX_SDMA_FIFOS_SIZE_WAN; + bbh_rx_sdma_exclusive_threshold[DRV_BBH_EMAC_0] = BBH_RX_SDMA_EXCLUSIVE_THRESHOLD_WAN; + + bbh_rx_dma_data_fifo_base_address[DRV_BBH_EMAC_0] = dma_base_address; + bbh_rx_dma_chunk_descriptor_fifo_base_address[DRV_BBH_EMAC_0] = dma_base_address; + bbh_rx_sdma_data_fifo_base_address[DRV_BBH_EMAC_0] = sdma_base_address; + bbh_rx_sdma_chunk_descriptor_fifo_base_address[DRV_BBH_EMAC_0] = sdma_base_address; + + dma_base_address += bbh_rx_dma_data_and_chunk_descriptor_fifos_size[DRV_BBH_EMAC_0]; + sdma_base_address += bbh_rx_sdma_data_and_chunk_descriptor_fifos_size[DRV_BBH_EMAC_0]; + + /* SF2 */ + bbh_rx_dma_data_and_chunk_descriptor_fifos_size[DRV_BBH_EMAC_1] = BBH_RX_DMA_FIFOS_SIZE_LAN_DMA; + bbh_rx_dma_exclusive_threshold[DRV_BBH_EMAC_1] = BBH_RX_DMA_EXCLUSIVE_THRESHOLD_LAN_DMA; + bbh_rx_sdma_data_and_chunk_descriptor_fifos_size[DRV_BBH_EMAC_1] = BBH_RX_SDMA_FIFOS_SIZE_LAN; + bbh_rx_sdma_exclusive_threshold[DRV_BBH_EMAC_1] = BBH_RX_SDMA_EXCLUSIVE_THRESHOLD_LAN; + + bbh_rx_dma_data_fifo_base_address[DRV_BBH_EMAC_1] = dma_base_address; + bbh_rx_dma_chunk_descriptor_fifo_base_address[DRV_BBH_EMAC_1] = dma_base_address; + bbh_rx_sdma_data_fifo_base_address[DRV_BBH_EMAC_1] = sdma_base_address; + bbh_rx_sdma_chunk_descriptor_fifo_base_address[DRV_BBH_EMAC_1] = sdma_base_address; + + dma_base_address += bbh_rx_dma_data_and_chunk_descriptor_fifos_size[DRV_BBH_EMAC_1]; + sdma_base_address += bbh_rx_sdma_data_and_chunk_descriptor_fifos_size[DRV_BBH_EMAC_1]; + + /* DSL */ + bbh_rx_dma_data_and_chunk_descriptor_fifos_size[DRV_BBH_DSL] = BBH_RX_DMA_FIFOS_SIZE_WAN_DMA; + bbh_rx_dma_exclusive_threshold[DRV_BBH_DSL] = BBH_RX_DMA_EXCLUSIVE_THRESHOLD_WAN_DMA; + bbh_rx_sdma_data_and_chunk_descriptor_fifos_size[DRV_BBH_DSL] = BBH_RX_SDMA_FIFOS_SIZE_WAN; + bbh_rx_sdma_exclusive_threshold[DRV_BBH_DSL] = BBH_RX_SDMA_EXCLUSIVE_THRESHOLD_WAN; + + bbh_rx_dma_data_fifo_base_address[DRV_BBH_DSL] = dma_base_address; + bbh_rx_dma_chunk_descriptor_fifo_base_address[DRV_BBH_DSL] = dma_base_address; + bbh_rx_sdma_data_fifo_base_address[DRV_BBH_DSL] = sdma_base_address; + bbh_rx_sdma_chunk_descriptor_fifo_base_address[DRV_BBH_DSL] = sdma_base_address; + + dma_base_address += bbh_rx_dma_data_and_chunk_descriptor_fifos_size[DRV_BBH_DSL]; + sdma_base_address += bbh_rx_sdma_data_and_chunk_descriptor_fifos_size[DRV_BBH_DSL]; + + /* check that we didn't overrun */ + if (dma_base_address > BBH_RX_DMA_TOTAL_NUMBER_OF_CHUNK_DESCRIPTORS || + sdma_base_address > BBH_RX_SDMA_TOTAL_NUMBER_OF_CHUNK_DESCRIPTORS) + { + __print("%s:(%d) error",__FUNCTION__,__LINE__); + return DPI_RC_ERROR; + } + return DPI_RC_OK; +} + +static uint16_t f_get_bbh_rx_pd_fifo_base_address_normal_queue_in_8_byte(DRV_BBH_PORT_INDEX port_index) +{ + switch (port_index) + { + case DRV_BBH_EMAC_0: + return MS_BYTE_TO_8_BYTE_RESOLUTION(ETH0_RX_DESCRIPTORS_ADDRESS); + + case DRV_BBH_EMAC_1: + return MS_BYTE_TO_8_BYTE_RESOLUTION(ETH1_RX_DESCRIPTORS_ADDRESS); + + case DRV_BBH_DSL: + return MS_BYTE_TO_8_BYTE_RESOLUTION(GPON_RX_NORMAL_DESCRIPTORS_ADDRESS); + + default: + return 0; + } +} +static uint16_t f_get_bbh_rx_pd_fifo_base_address_direct_queue_in_8_byte(DRV_BBH_PORT_INDEX port_index) +{ + switch (port_index) + { + case DRV_BBH_EMAC_0: + return MS_BYTE_TO_8_BYTE_RESOLUTION(ETH0_RX_DIRECT_DESCRIPTORS_ADDRESS); + + case DRV_BBH_EMAC_1: + return MS_BYTE_TO_8_BYTE_RESOLUTION(ETH1_RX_DIRECT_DESCRIPTORS_ADDRESS); + + case DRV_BBH_DSL: + return MS_BYTE_TO_8_BYTE_RESOLUTION(GPON_RX_DIRECT_DESCRIPTORS_ADDRESS); + + default: + return 0; + } +} +static uint8_t f_bbh_rx_runner_task_normal_queue(DRV_IH_RUNNER_CLUSTER runner_cluster, DRV_BBH_PORT_INDEX port_index) +{ + uint8_t isWan = BBH_PORT_IS_WAN(port_index); + + if (runner_cluster == DRV_IH_RUNNER_CLUSTER_A) + { + if (isWan) + { + return (port_index == DRV_BBH_DSL) ? WAN_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER + : WAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER; + } + /* the port is LAN */ + else + { + /* runner A doesn't handle the normal queue for LAN */ + return 0; + } + } + /* runner B */ + else + { + if (isWan) + { + /* runner B doesn't handle WAN */ + return 0; + } + /* the port is LAN */ + else + { + switch (port_index) + { + case DRV_BBH_EMAC_0: + /* EMAC 0 is not supported as a LAN */ + return 0; + + case DRV_BBH_EMAC_1: +#if defined(__UBOOT__) + return LAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER; +#else + return LAN_DISPATCH_THREAD_NUMBER; +#endif + + /* we are not supposed to get here */ + default: + return 0; + } + } + } +} + +static uint8_t f_bbh_rx_runner_task_direct_queue(DRV_IH_RUNNER_CLUSTER runner_cluster, DRV_BBH_PORT_INDEX portIndex) +{ + if ( BBH_PORT_IS_WAN( portIndex ) ) + { + return WAN_DIRECT_THREAD_NUMBER; + } + + /* the port is LAN */ + if (runner_cluster == DRV_IH_RUNNER_CLUSTER_A) + { + switch (portIndex) + { + case DRV_BBH_EMAC_0: + return ETH0_RX_DIRECT_RUNNER_A_TASK_NUMBER; + + case DRV_BBH_EMAC_1: + return ETH1_RX_DIRECT_RUNNER_A_TASK_NUMBER; + + /* we are not supposed to get here */ + default: + return 0; + } + }/* runner B */ + else + { + switch (portIndex) + { + case DRV_BBH_EMAC_0: + return ETH0_RX_DIRECT_RUNNER_B_TASK_NUMBER; + + case DRV_BBH_EMAC_1: + return ETH1_RX_DIRECT_RUNNER_B_TASK_NUMBER; + + /* we are not supposed to get here */ + default: + return 0; + } + } +} + +static void f_initialize_bbh_of_emac_port(DRV_BBH_PORT_INDEX port_index) +{ + uint16_t mdu_mode_read_pointer_address_in_byte; + uint32_t mdu_mode_read_pointer_address_in_byte_uint32; + DRV_BBH_TX_CONFIGURATION bbh_tx_configuration ; + DRV_BBH_RX_CONFIGURATION bbh_rx_configuration ; + DRV_BBH_PER_FLOW_CONFIGURATION per_flow_configuration ; + + /*** BBH TX ***/ + bbh_tx_configuration.dma_route_address = bbh_route_address_dma[port_index]; + bbh_tx_configuration.bpm_route_address = bbh_route_address_bpm[port_index]; + bbh_tx_configuration.sdma_route_address = bbh_route_address_sdma[port_index]; + bbh_tx_configuration.sbpm_route_address = bbh_route_address_sbpm[port_index]; + /* runner 0 is the one which handles TX except for wan mode emac4*/ + if ( port_index == DRV_BBH_EMAC_0 ) + { + bbh_tx_configuration.runner_route_address = bbh_route_address_runner_1[port_index]; + } + else + { + bbh_tx_configuration.runner_route_address = bbh_route_address_runner_0[port_index]; + } + + bbh_tx_configuration.ddr_buffer_size = DRV_BBH_DDR_BUFFER_SIZE; + bbh_tx_configuration.ddr_bpm_message_format = DRV_BBH_DDR_BPM_MESSAGE_FORMAT; + bbh_tx_configuration.payload_offset_resolution = DRV_BBH_PAYLOAD_OFFSET_RESOLUTION_2_B; + bbh_tx_configuration.multicast_headers_base_address_in_byte = (uint32_t) pDpiCfg->runner_mc_base_addr_phys; + + if ( port_index == DRV_BBH_EMAC_0 ) + { + bbh_tx_configuration.multicast_header_size = BBH_MULTICAST_HEADER_SIZE_FOR_LAN_PORT; + /* this is the task also in Gbe case */ + bbh_tx_configuration.task_0 = WAN1_TX_THREAD_NUMBER; + bbh_tx_configuration.skb_address = MS_BYTE_TO_8_BYTE_RESOLUTION(ETHWAN_ABSOLUTE_TX_BBH_COUNTER_ADDRESS); + } + else + /*we will reach here in case the BBH port in lan ports 0 - 4*/ + { + bbh_tx_configuration.multicast_header_size = BBH_MULTICAST_HEADER_SIZE_FOR_LAN_PORT; + + bbh_tx_configuration.skb_address = MS_BYTE_TO_8_BYTE_RESOLUTION(EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS) + bbh_to_rdd_emac_map[port_index]; + + bbh_tx_configuration.task_0 = ETH_TX_THREAD_NUMBER; + } + + /* other task numbers are irrelevant (relevant for DSL only) */ + bbh_tx_configuration.task_1 = 0; + bbh_tx_configuration.task_2 = 0; + bbh_tx_configuration.task_3 = 0; + bbh_tx_configuration.task_4 = 0; + bbh_tx_configuration.task_5 = 0; + bbh_tx_configuration.task_6 = 0; + bbh_tx_configuration.task_7 = 0; + bbh_tx_configuration.task_8_39 = 0; + + + if ( port_index == DRV_BBH_EMAC_0 ) + { + bbh_tx_configuration.mdu_mode_enable = 0; + /* irrelevant in this case */ + bbh_tx_configuration.mdu_mode_read_pointer_address_in_8_byte = 0; + } + else + { + bbh_tx_configuration.mdu_mode_enable = 1; + + rdd_mdu_mode_pointer_get(bbh_to_rdd_emac_map[port_index], &mdu_mode_read_pointer_address_in_byte); + + mdu_mode_read_pointer_address_in_byte_uint32 = mdu_mode_read_pointer_address_in_byte; + + /* after division, this will be back a 16 bit number */ + bbh_tx_configuration.mdu_mode_read_pointer_address_in_8_byte = (uint16_t)MS_BYTE_TO_8_BYTE_RESOLUTION(mdu_mode_read_pointer_address_in_byte_uint32); + } + + /* For Ethernet port working in MDU mode, PD FIFO size should be configured to 4 (and not 8). */ + bbh_tx_configuration.pd_fifo_size_0 = (bbh_tx_configuration.mdu_mode_enable == 1) ? BBH_TX_EMAC_PD_FIFO_SIZE_MDU_MODE_ENABLED : BBH_TX_EMAC_PD_FIFO_SIZE_MDU_MODE_DISABLED; + + /* other FIFOs are irrelevant (relevant for DSL only) */ + bbh_tx_configuration.pd_fifo_size_1 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + bbh_tx_configuration.pd_fifo_size_2 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + bbh_tx_configuration.pd_fifo_size_3 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + bbh_tx_configuration.pd_fifo_size_4 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + bbh_tx_configuration.pd_fifo_size_5 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + bbh_tx_configuration.pd_fifo_size_6 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + bbh_tx_configuration.pd_fifo_size_7 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + bbh_tx_configuration.pd_fifo_size_8_15 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + bbh_tx_configuration.pd_fifo_size_16_23 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + bbh_tx_configuration.pd_fifo_size_24_31 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + bbh_tx_configuration.pd_fifo_size_32_39 = DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE; + + bbh_tx_configuration.pd_fifo_base_0 = 0; + + /* other FIFOs are irrelevant (relevant for DSL only) */ + bbh_tx_configuration.pd_fifo_base_1 = 0; + bbh_tx_configuration.pd_fifo_base_2 = 0; + bbh_tx_configuration.pd_fifo_base_3 = 0; + bbh_tx_configuration.pd_fifo_base_4 = 0; + bbh_tx_configuration.pd_fifo_base_5 = 0; + bbh_tx_configuration.pd_fifo_base_6 = 0; + bbh_tx_configuration.pd_fifo_base_7 = 0; + bbh_tx_configuration.pd_fifo_base_8_15 = 0; + bbh_tx_configuration.pd_fifo_base_16_23 = 0; + bbh_tx_configuration.pd_fifo_base_24_31 = 0; + bbh_tx_configuration.pd_fifo_base_32_39 = 0; + + /* pd_prefetch_byte_threshold feature is irrelevant in EMAC (since there is only one FIFO) */ + bbh_tx_configuration.pd_prefetch_byte_threshold_enable = 0; + bbh_tx_configuration.pd_prefetch_byte_threshold_0_in_32_byte = 0; + bbh_tx_configuration.pd_prefetch_byte_threshold_1_in_32_byte = 0; + bbh_tx_configuration.pd_prefetch_byte_threshold_2_in_32_byte = 0; + bbh_tx_configuration.pd_prefetch_byte_threshold_3_in_32_byte = 0; + bbh_tx_configuration.pd_prefetch_byte_threshold_4_in_32_byte = 0; + bbh_tx_configuration.pd_prefetch_byte_threshold_5_in_32_byte = 0; + bbh_tx_configuration.pd_prefetch_byte_threshold_6_in_32_byte = 0; + bbh_tx_configuration.pd_prefetch_byte_threshold_7_in_32_byte = 0; + bbh_tx_configuration.pd_prefetch_byte_threshold_8_39_in_32_byte = 0; + + bbh_tx_configuration.dma_read_requests_fifo_base_address = bbh_dma_and_sdma_read_requests_fifo_base_address[port_index]; + bbh_tx_configuration.dma_read_requests_maximal_number = BBH_TX_CONFIGURATIONS_DMACFG_TX_MAXREQ_MAX_VALUE_VALUE_RESET_VALUE; + bbh_tx_configuration.sdma_read_requests_fifo_base_address = bbh_dma_and_sdma_read_requests_fifo_base_address[port_index]; + bbh_tx_configuration.sdma_read_requests_maximal_number = BBH_TX_CONFIGURATIONS_SDMACFG_TX_MAXREQ_MAX_VALUE_VALUE_RESET_VALUE; + + /* irrelevant in EMAC case */ + bbh_tx_configuration.tcont_address_in_8_byte = 0; + + bbh_tx_configuration.ddr_tm_base_address = (uint32_t)pDpiCfg->runner_tm_base_addr_phys; + + bbh_tx_configuration.emac_1588_enable = 0; + + fi_bl_drv_bbh_tx_set_configuration(port_index, &bbh_tx_configuration); + + /*** BBH RX ***/ + /* bbh_rx_set_configuration */ + bbh_rx_configuration.dma_route_address = bbh_route_address_dma[port_index]; + bbh_rx_configuration.bpm_route_address = bbh_route_address_bpm[port_index]; + bbh_rx_configuration.sdma_route_address = bbh_route_address_sdma[port_index]; + bbh_rx_configuration.sbpm_route_address = bbh_route_address_sbpm[port_index]; + bbh_rx_configuration.runner_0_route_address = bbh_route_address_runner_0[port_index]; + bbh_rx_configuration.runner_1_route_address = bbh_route_address_runner_1[port_index]; + bbh_rx_configuration.ih_route_address = bbh_route_address_ih[port_index]; + + bbh_rx_configuration.ddr_buffer_size = DRV_BBH_DDR_BUFFER_SIZE; + bbh_rx_configuration.ddr_bpm_message_format = DRV_BBH_DDR_BPM_MESSAGE_FORMAT; + bbh_rx_configuration.ddr_tm_base_address = (uint32_t)pDpiCfg->runner_tm_base_addr_phys; + bbh_rx_configuration.pd_fifo_base_address_normal_queue_in_8_byte = f_get_bbh_rx_pd_fifo_base_address_normal_queue_in_8_byte(port_index); + bbh_rx_configuration.pd_fifo_base_address_direct_queue_in_8_byte = f_get_bbh_rx_pd_fifo_base_address_direct_queue_in_8_byte(port_index); + bbh_rx_configuration.pd_fifo_size_normal_queue = DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS; + bbh_rx_configuration.pd_fifo_size_direct_queue = DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS; + bbh_rx_configuration.runner_0_task_normal_queue = f_bbh_rx_runner_task_normal_queue (DRV_IH_RUNNER_CLUSTER_A, port_index); + bbh_rx_configuration.runner_0_task_direct_queue = f_bbh_rx_runner_task_direct_queue (DRV_IH_RUNNER_CLUSTER_A, port_index); + bbh_rx_configuration.runner_1_task_normal_queue = f_bbh_rx_runner_task_normal_queue (DRV_IH_RUNNER_CLUSTER_B, port_index); + bbh_rx_configuration.runner_1_task_direct_queue = f_bbh_rx_runner_task_direct_queue (DRV_IH_RUNNER_CLUSTER_B, port_index); + bbh_rx_configuration.dma_data_fifo_base_address = BBH_RX_DMA_FIFOS_SIZE_LAN_BBH * port_index; + bbh_rx_configuration.dma_chunk_descriptor_fifo_base_address = BBH_RX_DMA_FIFOS_SIZE_LAN_BBH * port_index; + bbh_rx_configuration.sdma_data_fifo_base_address = bbh_rx_sdma_data_fifo_base_address[port_index]; + bbh_rx_configuration.sdma_chunk_descriptor_fifo_base_address = bbh_rx_sdma_chunk_descriptor_fifo_base_address[port_index ]; + bbh_rx_configuration.dma_data_and_chunk_descriptor_fifos_size = BBH_RX_DMA_FIFOS_SIZE_LAN_BBH; + bbh_rx_configuration.dma_exclusive_threshold = BBH_RX_DMA_EXCLUSIVE_THRESHOLD_LAN_BBH; + bbh_rx_configuration.sdma_data_and_chunk_descriptor_fifos_size = bbh_rx_sdma_data_and_chunk_descriptor_fifos_size[port_index ]; + bbh_rx_configuration.sdma_exclusive_threshold = bbh_rx_sdma_exclusive_threshold[port_index]; + + + bbh_rx_configuration.minimum_packet_size_0 = MIN_ETH_PKT_SIZE; + + + /* minimum_packet_size 1-3 are not in use */ + bbh_rx_configuration.minimum_packet_size_1 = MIN_ETH_PKT_SIZE; + bbh_rx_configuration.minimum_packet_size_2 = MIN_ETH_PKT_SIZE; + bbh_rx_configuration.minimum_packet_size_3 = MIN_ETH_PKT_SIZE; + + + bbh_rx_configuration.maximum_packet_size_0 = pDpiCfg->mtu_size; + + + /* maximum_packet_size 1-3 are not in use */ + bbh_rx_configuration.maximum_packet_size_1 = pDpiCfg->mtu_size; + bbh_rx_configuration.maximum_packet_size_2 = pDpiCfg->mtu_size; + bbh_rx_configuration.maximum_packet_size_3 = pDpiCfg->mtu_size; + + bbh_rx_configuration.ih_ingress_buffers_bitmask = bbh_ih_ingress_buffers_bitmask[port_index]; + bbh_rx_configuration.packet_header_offset = DRV_RDD_IH_PACKET_HEADER_OFFSET; + bbh_rx_configuration.reassembly_offset_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION(pDpiCfg->headroom_size); + + /* By default, the triggers for FC will be disabled and the triggers for drop enabled. + If the user configures flow control for the port, the triggers for drop will be + disabled and triggers for FC (including Runner request) will be enabled */ + bbh_rx_configuration.flow_control_triggers_bitmask = 0; + bbh_rx_configuration.drop_triggers_bitmask = DRV_BBH_RX_DROP_TRIGGER_BPM_IS_IN_EXCLUSIVE_STATE | DRV_BBH_RX_DROP_TRIGGER_SBPM_IS_IN_EXCLUSIVE_STATE; + + /* following configuration is irrelevant in EMAC case */ + bbh_rx_configuration.flows_32_255_group_divider = BBH_RX_FLOWS_32_255_GROUP_DIVIDER; + bbh_rx_configuration.ploam_default_ih_class = 0; + bbh_rx_configuration.ploam_ih_class_override = 0; + + fi_bl_drv_bbh_rx_set_configuration(port_index, &bbh_rx_configuration); + + /* bbh_rx_set_per_flow_configuration */ + per_flow_configuration.minimum_packet_size_selection = BBH_RX_ETH_MIN_PKT_SIZE_SELECTION_INDEX; + per_flow_configuration.maximum_packet_size_selection = BBH_RX_MAX_PKT_SIZE_SELECTION_INDEX; + + if ( port_index == DRV_BBH_EMAC_0 ) + { + per_flow_configuration.default_ih_class = DRV_RDD_IH_CLASS_WAN_BRIDGED_LOW_INDEX; + per_flow_configuration.ih_class_override = 1; + } + else + { + per_flow_configuration.ih_class_override = 0; + + switch (port_index) + { + case DRV_BBH_EMAC_0: + per_flow_configuration.default_ih_class = DRV_RDD_IH_CLASS_LAN_BRIDGED_ETH0_INDEX; + break; + case DRV_BBH_EMAC_1: + per_flow_configuration.default_ih_class = DRV_RDD_IH_CLASS_LAN_BRIDGED_ETH1_INDEX; + break; + default: + return; + break; + } + } + + /* in EMAC, only flow 0 is relevant */ + fi_bl_drv_bbh_rx_set_per_flow_configuration(port_index, 0, &per_flow_configuration); + + return; +} +/* this function configures all 8 ingress queues in IH */ +static int fi_ih_configure_ingress_queues(void) +{ + int i; + DRV_IH_INGRESS_QUEUE_CONFIG ingress_queue_config; + uint8_t base_location = 0; + + /* queues of EMAC 0 */ + ingress_queue_config.base_location = base_location; + ingress_queue_config.size = IH_INGRESS_QUEUE_SIZE_WAN; + ingress_queue_config.priority = IH_INGRESS_QUEUE_PRIORITY_WAN; + ingress_queue_config.weight = IH_INGRESS_QUEUE_WEIGHT_WAN; + ingress_queue_config.congestion_threshold = IH_INGRESS_QUEUE_CONGESTION_THRESHOLD_WAN_ETH; + + fi_bl_drv_ih_configure_ingress_queue(IH_INGRESS_QUEUE_0_ETH0, &ingress_queue_config); + + /* update the correspoding bitmask in database, to be configured in BBH */ + f_update_bbh_ih_ingress_buffers_bitmask(DRV_BBH_EMAC_0, ingress_queue_config.base_location, ingress_queue_config.size); + + base_location += ingress_queue_config.size; + + /* queues of EMAC 1 */ + ingress_queue_config.base_location = base_location; + ingress_queue_config.size = IH_INGRESS_QUEUE_SIZE_LAN_EMACS; + ingress_queue_config.priority = IH_INGRESS_QUEUE_PRIORITY_LAN_EMACS; + ingress_queue_config.weight = IH_INGRESS_QUEUE_WEIGHT_LAN_EMACS; + ingress_queue_config.congestion_threshold = IH_INGRESS_QUEUE_CONGESTION_THRESHOLD_LAN_EMACS; + + fi_bl_drv_ih_configure_ingress_queue(IH_INGRESS_QUEUE_1_ETH1, &ingress_queue_config); + + /* update the correspoding bitmask in database, to be configured in BBH */ + f_update_bbh_ih_ingress_buffers_bitmask(DRV_BBH_EMAC_1, ingress_queue_config.base_location, ingress_queue_config.size); + + base_location += ingress_queue_config.size; + + /* queues of DSL */ + ingress_queue_config.base_location = base_location; + ingress_queue_config.size = IH_INGRESS_QUEUE_SIZE_WAN; + ingress_queue_config.priority = IH_INGRESS_QUEUE_PRIORITY_WAN; + ingress_queue_config.weight = IH_INGRESS_QUEUE_WEIGHT_WAN; + ingress_queue_config.congestion_threshold = IH_INGRESS_QUEUE_CONGESTION_THRESHOLD_WAN_DSL; + + fi_bl_drv_ih_configure_ingress_queue(IH_INGRESS_QUEUE_5_DSL, &ingress_queue_config); + + /* update the correspoding bitmask in database, to be configured in BBH */ + f_update_bbh_ih_ingress_buffers_bitmask(DRV_BBH_DSL, ingress_queue_config.base_location, ingress_queue_config.size); + + base_location += ingress_queue_config.size; + + /* queues of runners */ + for (i = IH_INGRESS_QUEUE_6_RUNNER_A; i <= IH_INGRESS_QUEUE_6_RUNNER_A; i++) + { + ingress_queue_config.base_location = base_location; + ingress_queue_config.size = IH_INGRESS_QUEUE_SIZE_RUNNERS; + ingress_queue_config.priority = IH_INGRESS_QUEUE_PRIORITY_RUNNERS; + ingress_queue_config.weight = IH_INGRESS_QUEUE_WEIGHT_RUNNERS; + ingress_queue_config.congestion_threshold = IH_INGRESS_QUEUE_CONGESTION_THRESHOLD_RUNNERS; + + fi_bl_drv_ih_configure_ingress_queue (i, &ingress_queue_config); + + base_location += ingress_queue_config.size; + } + + /* check that we didn't overrun */ + if (base_location > DRV_IH_INGRESS_QUEUES_ARRAY_SIZE) + { + /* sum of sizes exceeded the total array size */ + return DPI_RC_ERROR; + } + return DPI_RC_OK; +} + +/* this function configures the IH classes which are in use */ +static void f_ih_configure_lookup_tables(void) +{ + DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG lookup_table_60_bit_key_config ; + + /*** table 1: MAC DA ***/ + lookup_table_60_bit_key_config.table_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_LOOKUP_TABLE_1_BASE_ADDRESS); + lookup_table_60_bit_key_config.table_size = DRV_RDD_IH_LOOKUP_TABLE_1_SIZE; + lookup_table_60_bit_key_config.maximal_search_depth = DRV_RDD_IH_LOOKUP_TABLE_1_SEARCH_DEPTH; + lookup_table_60_bit_key_config.hash_type = DRV_RDD_IH_LOOKUP_TABLE_1_HASH_TYPE; + lookup_table_60_bit_key_config.sa_search_enable = DRV_RDD_IH_LOOKUP_TABLE_1_SA_ENABLE; + lookup_table_60_bit_key_config.aging_enable = DRV_RDD_IH_LOOKUP_TABLE_1_AGING_ENABLE; + lookup_table_60_bit_key_config.cam_enable = DRV_RDD_IH_LOOKUP_TABLE_1_CAM_ENABLE; + lookup_table_60_bit_key_config.cam_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_LOOKUP_TABLE_1_CAM_BASE_ADDRESS); + lookup_table_60_bit_key_config.context_table_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_CONTEXT_TABLE_1_BASE_ADDRESS); + lookup_table_60_bit_key_config.context_table_entry_size = DRV_RDD_IH_CONTEXT_TABLE_1_ENTRY_SIZE; + lookup_table_60_bit_key_config.cam_context_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_CONTEXT_TABLE_1_CAM_BASE_ADDRESS); + lookup_table_60_bit_key_config.part_0_start_offset_in_4_byte = DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_0_START_OFFSET; + lookup_table_60_bit_key_config.part_0_shift_offset_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_0_SHIFT; + lookup_table_60_bit_key_config.part_1_start_offset_in_4_byte = DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_1_START_OFFSET; + lookup_table_60_bit_key_config.part_1_shift_offset_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_1_SHIFT; + lookup_table_60_bit_key_config.key_extension = DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_KEY_EXTENSION; + lookup_table_60_bit_key_config.part_0_mask_low = DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_0_MASK_LOW; + lookup_table_60_bit_key_config.part_0_mask_high = DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_0_MASK_HIGH; + lookup_table_60_bit_key_config.part_1_mask_low = DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_1_MASK_LOW; + lookup_table_60_bit_key_config.part_1_mask_high = DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_1_MASK_HIGH; + lookup_table_60_bit_key_config.global_mask_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_GLOBAL_MASK; + + fi_bl_drv_ih_configure_lut_60_bit_key(DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX, &lookup_table_60_bit_key_config); + + //TODO:move that function to RDPA_System + /*** table 2: IPTV ***/ + //rdpa_ih_cfg_iptv_lookup_table(iptv_lookup_method_mac); + + /*** table 3: DS ingress classification ***/ + lookup_table_60_bit_key_config.table_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_LOOKUP_TABLE_3_BASE_ADDRESS); + lookup_table_60_bit_key_config.table_size = DRV_RDD_IH_LOOKUP_TABLE_3_SIZE; + lookup_table_60_bit_key_config.maximal_search_depth = DRV_RDD_IH_LOOKUP_TABLE_3_SEARCH_DEPTH; + lookup_table_60_bit_key_config.hash_type = DRV_RDD_IH_LOOKUP_TABLE_3_HASH_TYPE; + lookup_table_60_bit_key_config.sa_search_enable = DRV_RDD_IH_LOOKUP_TABLE_3_SA_ENABLE; + lookup_table_60_bit_key_config.aging_enable = DRV_RDD_IH_LOOKUP_TABLE_3_AGING_ENABLE; + lookup_table_60_bit_key_config.cam_enable = DRV_RDD_IH_LOOKUP_TABLE_3_CAM_ENABLE; + lookup_table_60_bit_key_config.cam_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_LOOKUP_TABLE_3_CAM_BASE_ADDRESS); + lookup_table_60_bit_key_config.context_table_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_CONTEXT_TABLE_3_BASE_ADDRESS); + lookup_table_60_bit_key_config.context_table_entry_size = DRV_RDD_IH_CONTEXT_TABLE_3_ENTRY_SIZE; + lookup_table_60_bit_key_config.cam_context_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_CONTEXT_TABLE_3_CAM_BASE_ADDRESS); + lookup_table_60_bit_key_config.part_0_start_offset_in_4_byte = DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_0_START_OFFSET; + lookup_table_60_bit_key_config.part_0_shift_offset_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_0_SHIFT; + lookup_table_60_bit_key_config.part_1_start_offset_in_4_byte = DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_1_START_OFFSET; + lookup_table_60_bit_key_config.part_1_shift_offset_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_1_SHIFT; + lookup_table_60_bit_key_config.key_extension = DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_KEY_EXTENSION; + lookup_table_60_bit_key_config.part_0_mask_low = DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_0_MASK_LOW; + lookup_table_60_bit_key_config.part_0_mask_high = DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_0_MASK_HIGH; + lookup_table_60_bit_key_config.part_1_mask_low = DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_1_MASK_LOW; + lookup_table_60_bit_key_config.part_1_mask_high = DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_1_MASK_HIGH; + lookup_table_60_bit_key_config.global_mask_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_GLOBAL_MASK; + + fi_bl_drv_ih_configure_lut_60_bit_key(DRV_RDD_IH_LOOKUP_TABLE_DS_INGRESS_CLASSIFICATION_INDEX, &lookup_table_60_bit_key_config); + + /*** table 4: US ingress classification 1 per LAN port ***/ + lookup_table_60_bit_key_config.table_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_LOOKUP_TABLE_4_BASE_ADDRESS); + lookup_table_60_bit_key_config.table_size = DRV_RDD_IH_LOOKUP_TABLE_4_SIZE; + lookup_table_60_bit_key_config.maximal_search_depth = DRV_RDD_IH_LOOKUP_TABLE_4_SEARCH_DEPTH; + lookup_table_60_bit_key_config.hash_type = DRV_RDD_IH_LOOKUP_TABLE_4_HASH_TYPE; + lookup_table_60_bit_key_config.sa_search_enable = DRV_RDD_IH_LOOKUP_TABLE_4_SA_ENABLE; + lookup_table_60_bit_key_config.aging_enable = DRV_RDD_IH_LOOKUP_TABLE_4_AGING_ENABLE; + lookup_table_60_bit_key_config.cam_enable = DRV_RDD_IH_LOOKUP_TABLE_4_CAM_ENABLE; + lookup_table_60_bit_key_config.cam_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_LOOKUP_TABLE_4_CAM_BASE_ADDRESS); + lookup_table_60_bit_key_config.context_table_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_CONTEXT_TABLE_4_BASE_ADDRESS); + lookup_table_60_bit_key_config.context_table_entry_size = DRV_RDD_IH_CONTEXT_TABLE_4_ENTRY_SIZE; + lookup_table_60_bit_key_config.cam_context_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_CONTEXT_TABLE_4_CAM_BASE_ADDRESS); + lookup_table_60_bit_key_config.part_0_start_offset_in_4_byte = DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_0_START_OFFSET; + lookup_table_60_bit_key_config.part_0_shift_offset_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_0_SHIFT; + lookup_table_60_bit_key_config.part_1_start_offset_in_4_byte = DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_1_START_OFFSET; + lookup_table_60_bit_key_config.part_1_shift_offset_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_1_SHIFT; + lookup_table_60_bit_key_config.key_extension = DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_KEY_EXTENSION; + lookup_table_60_bit_key_config.part_0_mask_low = DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_0_MASK_LOW; + lookup_table_60_bit_key_config.part_0_mask_high = DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_0_MASK_HIGH; + lookup_table_60_bit_key_config.part_1_mask_low = DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_1_MASK_LOW; + lookup_table_60_bit_key_config.part_1_mask_high = DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_1_MASK_HIGH; + lookup_table_60_bit_key_config.global_mask_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_GLOBAL_MASK; + + fi_bl_drv_ih_configure_lut_60_bit_key(DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX, &lookup_table_60_bit_key_config); + + /*** table 6: IPTV source IP ***/ + lookup_table_60_bit_key_config.table_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_LOOKUP_TABLE_6_BASE_ADDRESS); + lookup_table_60_bit_key_config.table_size = DRV_RDD_IH_LOOKUP_TABLE_6_SIZE; + lookup_table_60_bit_key_config.maximal_search_depth = DRV_RDD_IH_LOOKUP_TABLE_6_SEARCH_DEPTH; + lookup_table_60_bit_key_config.hash_type = DRV_RDD_IH_LOOKUP_TABLE_6_HASH_TYPE; + lookup_table_60_bit_key_config.sa_search_enable = DRV_RDD_IH_LOOKUP_TABLE_6_SA_ENABLE; + lookup_table_60_bit_key_config.aging_enable = DRV_RDD_IH_LOOKUP_TABLE_6_AGING_ENABLE; + lookup_table_60_bit_key_config.cam_enable = DRV_RDD_IH_LOOKUP_TABLE_6_CAM_ENABLE; + lookup_table_60_bit_key_config.cam_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_LOOKUP_TABLE_6_CAM_BASE_ADDRESS); + lookup_table_60_bit_key_config.context_table_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_CONTEXT_TABLE_6_BASE_ADDRESS); + lookup_table_60_bit_key_config.context_table_entry_size = DRV_RDD_IH_CONTEXT_TABLE_6_ENTRY_SIZE; + lookup_table_60_bit_key_config.cam_context_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_CONTEXT_TABLE_6_CAM_BASE_ADDRESS); + lookup_table_60_bit_key_config.part_0_start_offset_in_4_byte = DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_0_START_OFFSET; + lookup_table_60_bit_key_config.part_0_shift_offset_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_0_SHIFT; + lookup_table_60_bit_key_config.part_1_start_offset_in_4_byte = DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_1_START_OFFSET; + lookup_table_60_bit_key_config.part_1_shift_offset_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_1_SHIFT; + lookup_table_60_bit_key_config.key_extension = DRV_RDD_IH_LOOKUP_TABLE_6_KEY_KEY_EXTENSION; + lookup_table_60_bit_key_config.part_0_mask_low = DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_0_MASK_LOW; + lookup_table_60_bit_key_config.part_0_mask_high = DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_0_MASK_HIGH; + lookup_table_60_bit_key_config.part_1_mask_low = DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_1_MASK_LOW; + lookup_table_60_bit_key_config.part_1_mask_high = DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_1_MASK_HIGH; + lookup_table_60_bit_key_config.global_mask_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_6_KEY_GLOBAL_MASK; + + fi_bl_drv_ih_configure_lut_60_bit_key(DRV_RDD_IH_LOOKUP_TABLE_IPTV_SRC_IP_INDEX, &lookup_table_60_bit_key_config); + + /*** table 9: MAC SA ***/ + lookup_table_60_bit_key_config.table_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_LOOKUP_TABLE_9_BASE_ADDRESS); + lookup_table_60_bit_key_config.table_size = DRV_RDD_IH_LOOKUP_TABLE_9_SIZE; + lookup_table_60_bit_key_config.maximal_search_depth = DRV_RDD_IH_LOOKUP_TABLE_9_SEARCH_DEPTH; + lookup_table_60_bit_key_config.hash_type = DRV_RDD_IH_LOOKUP_TABLE_9_HASH_TYPE; + lookup_table_60_bit_key_config.sa_search_enable = DRV_RDD_IH_LOOKUP_TABLE_9_SA_ENABLE; + lookup_table_60_bit_key_config.aging_enable = DRV_RDD_IH_LOOKUP_TABLE_9_AGING_ENABLE; + lookup_table_60_bit_key_config.cam_enable = DRV_RDD_IH_LOOKUP_TABLE_9_CAM_ENABLE; + lookup_table_60_bit_key_config.cam_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_LOOKUP_TABLE_9_CAM_BASE_ADDRESS); + lookup_table_60_bit_key_config.context_table_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_CONTEXT_TABLE_9_BASE_ADDRESS); + lookup_table_60_bit_key_config.context_table_entry_size = DRV_RDD_IH_CONTEXT_TABLE_9_ENTRY_SIZE; + lookup_table_60_bit_key_config.cam_context_base_address_in_8_byte = MS_BYTE_TO_8_BYTE_RESOLUTION (DRV_RDD_IH_CONTEXT_TABLE_9_CAM_BASE_ADDRESS); + lookup_table_60_bit_key_config.part_0_start_offset_in_4_byte = DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_0_START_OFFSET; + lookup_table_60_bit_key_config.part_0_shift_offset_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_0_SHIFT; + lookup_table_60_bit_key_config.part_1_start_offset_in_4_byte = DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_1_START_OFFSET; + lookup_table_60_bit_key_config.part_1_shift_offset_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_1_SHIFT; + lookup_table_60_bit_key_config.key_extension = DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_KEY_EXTENSION; + lookup_table_60_bit_key_config.part_0_mask_low = DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_0_MASK_LOW; + lookup_table_60_bit_key_config.part_0_mask_high = DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_0_MASK_HIGH; + lookup_table_60_bit_key_config.part_1_mask_low = DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_1_MASK_LOW; + lookup_table_60_bit_key_config.part_1_mask_high = DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_1_MASK_HIGH; + lookup_table_60_bit_key_config.global_mask_in_4_bit = DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_GLOBAL_MASK; + + fi_bl_drv_ih_configure_lut_60_bit_key(DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX, + &lookup_table_60_bit_key_config); +} +static uint32_t is_matrix_source_lan(DRV_IH_TARGET_MATRIX_SOURCE_PORT source_port) +{ + + if ( source_port != DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH0 && source_port != DRV_IH_TARGET_MATRIX_SOURCE_PORT_GPON ) + { + return 1; + } + return 0; +} + +static uint32_t is_matrix_dest_lan(DRV_IH_TARGET_MATRIX_SOURCE_PORT source_port) +{ + if ( source_port != DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH0 && source_port != DRV_IH_TARGET_MATRIX_SOURCE_PORT_GPON ) + { + return 1; + } + return 0; +} + +static uint32_t is_matrix_source_wan(DRV_IH_TARGET_MATRIX_SOURCE_PORT source_port) +{ + if ( source_port == DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH0 || source_port == DRV_IH_TARGET_MATRIX_SOURCE_PORT_GPON ) + { + return 1; + } + return 0; +} +/* calculates the "direct_mode" value for target matrix */ +static uint32_t f_ih_calculate_direct_mode(DRV_IH_TARGET_MATRIX_SOURCE_PORT source_port, + DRV_IH_TARGET_MATRIX_DESTINATION_PORT destination_port) +{ + /* lan -> lan/pci/multicast: direct mode should be set */ + if (is_matrix_source_lan(source_port) && + (is_matrix_dest_lan(destination_port) || + destination_port == DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE0 || + destination_port == DRV_IH_TARGET_MATRIX_DESTINATION_PORT_MULTICAST) && + (DRV_IH_TARGET_MATRIX_DESTINATION_PORT)source_port != destination_port) + { + return 1; + } + /* pci -> lan/pci: direct mode should be set */ + else if (source_port == DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE0 && + (is_matrix_dest_lan(destination_port) || destination_port == DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE0)) + { + return 1; + } + return 0; +} +static uint32_t f_ih_calculate_forward(DRV_IH_TARGET_MATRIX_SOURCE_PORT source_port, DRV_IH_TARGET_MATRIX_DESTINATION_PORT destination_port) +{ + + /* no self forwarding except PCI */ + if (source_port == DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE0 && + destination_port == DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE0) + { + return 1; + } + else if ((DRV_IH_TARGET_MATRIX_DESTINATION_PORT)source_port == destination_port) + { + return 0; + } + /* no self forwarding (if emac 4 is wan, then its, sp will be emac 4 and its dest port will be gpon */ + else if (is_matrix_source_wan(source_port) && destination_port == DRV_IH_TARGET_MATRIX_DESTINATION_PORT_GPON) + { + return 0; + } + /* enable forwarding to LANs/WAN/PCI0 (PCI1 is not supported currently). */ + else if (destination_port <= DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE0) + { + return 1; + } + /* forward to "multicast" from WAN/LAN port */ + else if ((is_matrix_source_wan(source_port) || is_matrix_source_lan(source_port)) && + (destination_port == DRV_IH_TARGET_MATRIX_DESTINATION_PORT_MULTICAST)) + { + return 1; + } + return 0; +} + +static void sbpm_drv_init(void) +{ + DRV_SBPM_GLOBAL_CONFIGURATION sbpm_global_configuration; + DRV_SBPM_USER_GROUPS_THRESHOLDS sbpm_ug_configuration; + int i; + + sbpm_global_configuration.hysteresis = SBPM_DEFAULT_HYSTERESIS; + sbpm_global_configuration.threshold = SBPM_DEFAULT_THRESHOLD; + + for (i = 0; i < ARRAY_LENGTH(sbpm_ug_configuration.ug_arr); i++) + { + sbpm_ug_configuration.ug_arr[i].hysteresis = SBPM_DEFAULT_HYSTERESIS; + sbpm_ug_configuration.ug_arr[i].threshold = SBPM_DEFAULT_THRESHOLD; + sbpm_ug_configuration.ug_arr[i].exclusive_hysteresis = SBPM_DEFAULT_HYSTERESIS; + sbpm_ug_configuration.ug_arr[i].exclusive_threshold = SBPM_DEFAULT_THRESHOLD; + } + fi_bl_drv_sbpm_init(SBPM_BASE_ADDRESS, SBPM_LIST_SIZE, SBPM_REPLY_ADDRESS, &sbpm_global_configuration, + &sbpm_ug_configuration); +} + +#define VAL_2K (2*1024) +#define VAL_2_5K (2*1024+512) +#define VAL_4K (4*1024) +#define VAL_5K (5*1024) +#define VAL_7_5K (7*1024+512) +#define VAL_15K (15*1024) +#define VAL_16K (16*1024) +#define VAL_30K (30*1024) + +static void rdp_bpm_threshod_get(const uint32_t max_bpm_bufs, uint32_t *p_bpm_gbl_thresh, uint32_t *p_bpm_def_thresh) +{ + if (max_bpm_bufs < VAL_2_5K) + { + *p_bpm_gbl_thresh = 0; + *p_bpm_def_thresh = 0; + } + else if (max_bpm_bufs < VAL_5K) + { + *p_bpm_gbl_thresh = DRV_BPM_GLOBAL_THRESHOLD_2_5K; + *p_bpm_def_thresh = VAL_2_5K; + } + else if (max_bpm_bufs < VAL_7_5K) + { + *p_bpm_gbl_thresh = DRV_BPM_GLOBAL_THRESHOLD_5K; + *p_bpm_def_thresh = VAL_5K; + } + else if (max_bpm_bufs < VAL_15K) + { + *p_bpm_gbl_thresh = DRV_BPM_GLOBAL_THRESHOLD_7_5K; + *p_bpm_def_thresh = VAL_7_5K; + } + else + { +#if defined(DSL_63138) + if (max_bpm_bufs < VAL_30K) + { + *p_bpm_gbl_thresh = DRV_BPM_GLOBAL_THRESHOLD_15K; + *p_bpm_def_thresh = VAL_15K; + } + else + { + *p_bpm_gbl_thresh = DRV_BPM_GLOBAL_THRESHOLD_30K; + *p_bpm_def_thresh = VAL_30K; + } +#else + *p_bpm_gbl_thresh = DRV_BPM_GLOBAL_THRESHOLD_15K; + *p_bpm_def_thresh = VAL_15K; +#endif + } +} +static uint32_t rdp_bpm_buf_size(void) +{ + if (DRV_BBH_DDR_BUFFER_SIZE == DRV_BBH_DDR_BUFFER_SIZE_2_KB) + { + return VAL_2K; + } + else if (DRV_BBH_DDR_BUFFER_SIZE == DRV_BBH_DDR_BUFFER_SIZE_2_5_KB) + { + return VAL_2_5K; + } + else if (DRV_BBH_DDR_BUFFER_SIZE == DRV_BBH_DDR_BUFFER_SIZE_4_KB) + { + return VAL_4K; + } + else if (DRV_BBH_DDR_BUFFER_SIZE == DRV_BBH_DDR_BUFFER_SIZE_16_KB) + { + return VAL_16K; + } + return 0; /* Error */ +} + +static int rdp_bpm_cfg_params_get(S_DPI_CFG *pCfg, rdp_bpm_cfg_params *p_bpm_cfg_params) +{ + int sz_for_bpm, max_bpm_bufs, max_mc_bufs, max_bufs_supported, tm_mc_can_merge = 0, wasted_size = 0; + uint32_t bpm_buf_size, new_runner_mc_size, new_runner_tm_size; + + if (((pCfg->runner_tm_base_addr + (pCfg->runner_tm_size << 20)) == pCfg->runner_mc_base_addr) && + ((pCfg->runner_tm_base_addr_phys + (pCfg->runner_tm_size << 20)) == pCfg->runner_mc_base_addr_phys)) + { + tm_mc_can_merge = 1; + } + + if (((pCfg->runner_mc_base_addr + (pCfg->runner_mc_size << 20)) == pCfg->runner_tm_base_addr) && + ((pCfg->runner_mc_base_addr_phys + (pCfg->runner_mc_size << 20)) == pCfg->runner_tm_base_addr_phys)) + tm_mc_can_merge = 2; + + bpm_buf_size = rdp_bpm_buf_size(); + if (tm_mc_can_merge != 0) + { + /* calculate the bpm buffer number supported based on the total of memory size reserved */ + sz_for_bpm = ((pCfg->runner_tm_size + pCfg->runner_mc_size) << 20) - RDP_DDR_DATA_STRUCTURES_SIZE; + + max_bufs_supported = sz_for_bpm / (bpm_buf_size + 512); + if (max_bufs_supported < VAL_2_5K) + goto bpm_cfg_params_error; + + rdp_bpm_threshod_get(max_bufs_supported, &p_bpm_cfg_params->bpm_gbl_thresh, &p_bpm_cfg_params->bpm_def_thresh); + new_runner_tm_size = ROUND_UP_MB(p_bpm_cfg_params->bpm_def_thresh * bpm_buf_size); + new_runner_mc_size = ROUND_UP_MB(p_bpm_cfg_params->bpm_def_thresh * 512); + + if ((new_runner_tm_size + new_runner_mc_size) > sz_for_bpm) + { + max_bufs_supported = p_bpm_cfg_params->bpm_def_thresh - 1; + rdp_bpm_threshod_get(max_bufs_supported, &p_bpm_cfg_params->bpm_gbl_thresh, &p_bpm_cfg_params->bpm_def_thresh); + if (p_bpm_cfg_params->bpm_def_thresh == 0) + goto bpm_cfg_params_error; + + new_runner_tm_size = ROUND_UP_MB(p_bpm_cfg_params->bpm_def_thresh * bpm_buf_size); + new_runner_mc_size = ROUND_UP_MB(p_bpm_cfg_params->bpm_def_thresh * 512); + } + + new_runner_tm_size += RDP_DDR_DATA_STRUCTURES_SIZE; + wasted_size = pCfg->runner_tm_size - (new_runner_tm_size >> 20) + pCfg->runner_mc_size - (new_runner_mc_size >> 20); + /* we only need to adjust the reserved memory only when sizes for both tables have changed */ + if ((pCfg->runner_tm_size != (new_runner_tm_size >> 20)) && (pCfg->runner_mc_size != (new_runner_mc_size >> 20))) + { + pCfg->runner_tm_size = new_runner_tm_size >> 20; + pCfg->runner_mc_size = new_runner_mc_size >> 20; + if (tm_mc_can_merge == 1) + { + pCfg->runner_mc_base_addr = pCfg->runner_tm_base_addr + new_runner_tm_size; + pCfg->runner_mc_base_addr_phys = pCfg->runner_tm_base_addr_phys + new_runner_tm_size; + } + else /* if (tm_mc_can_merge == 2) */ + { + pCfg->runner_tm_base_addr = pCfg->runner_mc_base_addr + new_runner_mc_size; + pCfg->runner_tm_base_addr_phys = pCfg->runner_mc_base_addr_phys + new_runner_mc_size; + } + __print("RDP reserved memory has been adjusted\n" + "\tTM: base_addr = 0x%p, phys_addr = 0x%p, size = %uMB\n" + "\tMC: base_addr = 0x%p, phys_addr = 0x%p, size = %uMB\n", + (void *)pCfg->runner_tm_base_addr, (void *)pCfg->runner_tm_base_addr_phys, pCfg->runner_tm_size, + (void *)pCfg->runner_mc_base_addr, (void *)pCfg->runner_mc_base_addr_phys, pCfg->runner_mc_size); + } + } + else /* if (tm_mc_can_merge == 0) */ + { + sz_for_bpm = (pCfg->runner_tm_size << 20) - RDP_DDR_DATA_STRUCTURES_SIZE; + + max_bpm_bufs = sz_for_bpm / bpm_buf_size; + if (max_bpm_bufs < VAL_2_5K) + goto bpm_cfg_params_error; + + max_mc_bufs = pCfg->runner_mc_size << 11; /* runner_mc_size * 1MB / 512B */ + if (max_mc_bufs < VAL_2_5K) + goto bpm_cfg_params_error; + + /* use whichever is less as the real buffer number supported */ + if (max_mc_bufs > max_bpm_bufs) + max_bufs_supported = max_bpm_bufs; + else + max_bufs_supported = max_mc_bufs; + + rdp_bpm_threshod_get(max_bufs_supported, &p_bpm_cfg_params->bpm_gbl_thresh, &p_bpm_cfg_params->bpm_def_thresh); + + new_runner_tm_size = ROUND_UP_MB(p_bpm_cfg_params->bpm_def_thresh * bpm_buf_size) + RDP_DDR_DATA_STRUCTURES_SIZE; + new_runner_mc_size = ROUND_UP_MB(p_bpm_cfg_params->bpm_def_thresh * 512); + wasted_size = pCfg->runner_tm_size - (new_runner_tm_size >> 20) + pCfg->runner_mc_size - (new_runner_mc_size >> 20); + } + + __print("\n RDP TM memory = %uMB, MC memory = %uMB : Max Possible Bufs <%u> of size <%u>; Allocating <%u> bufs; RDP enum <%u>\n", + pCfg->runner_tm_size, pCfg->runner_mc_size, max_bufs_supported, bpm_buf_size, p_bpm_cfg_params->bpm_def_thresh, p_bpm_cfg_params->bpm_gbl_thresh ); + /* print some warrning messages when there are some significant amounts of wasted reserved memory */ + if (wasted_size >= 5) + __print("WARNING!RDP reserved memories are wasting %dMB of memory, please adjust your reserved memory size\n", wasted_size); + + return 0; + +bpm_cfg_params_error: + + __print("\nRDP memory reservation required at least %uMB TM memory (%uMB for table + %uMB for buffer) " + "and %uMB MC memory\n", + ((ROUND_UP_MB(RDP_DDR_DATA_STRUCTURES_SIZE) + ROUND_UP_MB(VAL_2_5K * bpm_buf_size)) >> 20), + (ROUND_UP_MB(RDP_DDR_DATA_STRUCTURES_SIZE) >> 20), + (ROUND_UP_MB(VAL_2_5K * bpm_buf_size) >> 20), + (ROUND_UP_MB(VAL_2_5K << 9) >> 20)); + __print("\nHave only reserved RDP TM memory = %uMB, MC memory = %uMB\n", + pCfg->runner_tm_size, pCfg->runner_mc_size); + + return -1; + +} + +static void bpm_drv_init(S_DPI_CFG *pCfg, rdp_bpm_cfg_params *p_bpm_cfg_params) +{ + DRV_BPM_GLOBAL_CONFIGURATION bpm_global_configuration; + DRV_BPM_USER_GROUPS_THRESHOLDS bpm_ug_configuration; + DRV_BPM_RUNNER_MSG_CTRL_PARAMS runner_msg_ctrl_params; + int i; + + bpm_global_configuration.hysteresis = BPM_DEFAULT_HYSTERESIS; + bpm_global_configuration.threshold = p_bpm_cfg_params->bpm_gbl_thresh; + for (i = 0; i < ARRAY_LENGTH(bpm_ug_configuration.ug_arr); i++) + { + bpm_ug_configuration.ug_arr[i].hysteresis = BPM_DEFAULT_HYSTERESIS; + bpm_ug_configuration.ug_arr[i].threshold = (i == DRV_BPM_USER_GROUP_7) ? + BPM_CPU_NUMBER_OF_BUFFERS : p_bpm_cfg_params->bpm_def_thresh; + bpm_ug_configuration.ug_arr[i].exclusive_hysteresis = BPM_DEFAULT_HYSTERESIS; + bpm_ug_configuration.ug_arr[i].exclusive_threshold = (i == DRV_BPM_USER_GROUP_7) ? + BPM_CPU_NUMBER_OF_BUFFERS - 32 : p_bpm_cfg_params->bpm_def_thresh; + } + + fi_bl_drv_bpm_init(&bpm_global_configuration,&bpm_ug_configuration, BPM_REPLY_RUNNER_A_ADDRESS, DRV_SPARE_BN_MESSAGE_FORMAT); + + fi_bl_drv_bpm_get_runner_msg_ctrl(&runner_msg_ctrl_params); + + runner_msg_ctrl_params.runner_a_reply_target_address = (BPM_REPLY_RUNNER_A_ADDRESS + 0x10000) >> 3; + runner_msg_ctrl_params.runner_b_reply_target_address = (BPM_REPLY_RUNNER_B_ADDRESS + 0x10000) >> 3; + + fi_bl_drv_bpm_set_runner_msg_ctrl(&runner_msg_ctrl_params); + + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_GPON, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_EMAC0, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_EMAC1, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_EMAC2, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_EMAC3, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_EMAC4, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_MIPS_C, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_MIPS_D, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_PCI0, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_PCI1, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_USB0, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_USB1, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_SPARE_0, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_SPARE_1, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_RNR_A, DRV_BPM_USER_GROUP_4); + fi_bl_drv_bpm_set_user_group_mapping(DRV_BPM_SP_RNR_B, DRV_BPM_USER_GROUP_4); +} + +static void f_ih_configure_target_matrix(void) +{ + int i, j; + DRV_IH_TARGET_MATRIX_PER_SP_CONFIG per_sp_config; + + for (i = DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH0; i < DRV_IH_TARGET_MATRIX_NUMBER_OF_SOURCE_PORTS; i++) + { + /* the destination ports after 'multicast' are not in use currently */ + for (j = DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH0; j < DRV_IH_TARGET_MATRIX_NUMBER_OF_DESTINATION_PORTS; j++) + { + per_sp_config.entry[j].target_memory = DRV_IH_TARGET_MEMORY_DDR; + per_sp_config.entry[j].direct_mode = f_ih_calculate_direct_mode(i, j); + + fi_bl_drv_ih_set_forward(i, j, f_ih_calculate_forward(i, j)); + } + fi_bl_drv_ih_set_target_matrix(i, &per_sp_config); + } +} + +static void f_ih_configure_parser(void) +{ + DRV_IH_PARSER_CONFIG parser_config ; + + /* parser configuration */ + parser_config.tcp_flags = TCP_CTRL_FLAG_FIN | TCP_CTRL_FLAG_RST | TCP_CTRL_FLAG_SYN; + parser_config.exception_status_bits = IH_PARSER_EXCEPTION_STATUS_BITS; + parser_config.ppp_code_1_ipv6 = 1; + parser_config.ipv6_extension_header_bitmask = 0; + parser_config.snap_user_defined_organization_code = IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_CODE_RESET_VALUE_RESET_VALUE; + parser_config.snap_rfc1042_encapsulation_enable = IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_RFC1042_DISABLED_VALUE_RESET_VALUE; + parser_config.snap_802_1q_encapsulation_enable = IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_8021Q_DISABLED_VALUE_RESET_VALUE; + parser_config.gre_protocol = IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_GRE_PROTOCOL_PROTOCOL_VALUE_RESET_VALUE; + + /* eng[15] = eng[16] = 1 for AH header detection (IPv4 and IPv6) */ + parser_config.eng_cfg = IH_PARSER_AH_DETECTION; + + fi_bl_drv_ih_configure_parser(&parser_config); +} + + + +/* this function configures the IH classes which are in use */ +static void f_ih_configure_classes(void) +{ + uint8_t i; + + for (i = 0; i < ARRAY_LENGTH(gs_ih_classes); i++) + { + fi_bl_drv_ih_configure_class(gs_ih_classes[i].class_index, &gs_ih_classes[i].class_config); + } +} + +static void f_ih_init(void) +{ + DRV_IH_GENERAL_CONFIG ih_general_config ; + DRV_IH_PACKET_HEADER_OFFSETS packet_header_offsets ; + DRV_IH_RUNNER_BUFFERS_CONFIG runner_buffers_config ; + DRV_IH_RUNNERS_LOAD_THRESHOLDS runners_load_thresholds ; + DRV_IH_ROUTE_ADDRESSES xi_route_addresses ; + DRV_IH_LOGICAL_PORTS_CONFIG logical_ports_config ; + DRV_IH_SOURCE_PORT_TO_INGRESS_QUEUE_MAPPING source_port_to_ingress_queue_mapping ; + DRV_IH_WAN_PORTS_CONFIG wan_ports_config ; + + /* general configuration */ + ih_general_config.runner_a_ih_response_address = MS_BYTE_TO_8_BYTE_RESOLUTION(RUNNER_FLOW_IH_RESPONSE_ADDRESS); + ih_general_config.runner_b_ih_response_address = MS_BYTE_TO_8_BYTE_RESOLUTION(RUNNER_FLOW_IH_RESPONSE_ADDRESS); + ih_general_config.runner_a_ih_congestion_report_address = MS_BYTE_TO_8_BYTE_RESOLUTION(DRV_RDD_IH_RUNNER_0_IH_CONGESTION_REPORT_ADDRESS); + ih_general_config.runner_b_ih_congestion_report_address = MS_BYTE_TO_8_BYTE_RESOLUTION(DRV_RDD_IH_RUNNER_1_IH_CONGESTION_REPORT_ADDRESS); + ih_general_config.runner_a_ih_congestion_report_enable = DRV_RDD_IH_RUNNER_0_IH_CONGESTION_REPORT_ENABLE; + ih_general_config.runner_b_ih_congestion_report_enable = DRV_RDD_IH_RUNNER_1_IH_CONGESTION_REPORT_ENABLE; + ih_general_config.lut_searches_enable_in_direct_mode = 1; + ih_general_config.sn_stamping_enable_in_direct_mode = 1; + ih_general_config.header_length_minimum = IH_HEADER_LENGTH_MIN; + ih_general_config.congestion_discard_disable = 0; + ih_general_config.cam_search_enable_upon_invalid_lut_entry = DRV_RDD_IH_CAM_SEARCH_ENABLE_UPON_INVALID_LUT_ENTRY; + + fi_bl_drv_ih_set_general_configuration(&ih_general_config); + + /* packet header offsets configuration */ + packet_header_offsets.eth0_packet_header_offset = DRV_RDD_IH_PACKET_HEADER_OFFSET; + packet_header_offsets.eth1_packet_header_offset = DRV_RDD_IH_PACKET_HEADER_OFFSET; + packet_header_offsets.gpon_packet_header_offset = DRV_RDD_IH_PACKET_HEADER_OFFSET; + packet_header_offsets.runner_a_packet_header_offset = DRV_RDD_IH_PACKET_HEADER_OFFSET; + packet_header_offsets.runner_b_packet_header_offset = DRV_RDD_IH_PACKET_HEADER_OFFSET; + packet_header_offsets.eth2_packet_header_offset = 0; + packet_header_offsets.eth3_packet_header_offset = 0; + packet_header_offsets.eth4_packet_header_offset = 0; + + fi_bl_drv_ih_set_packet_header_offsets(& packet_header_offsets); + + /* Runner Buffers configuration */ + /* same ih_managed_rb_base_address should be used for both runners */ + runner_buffers_config.runner_a_ih_managed_rb_base_address = MS_BYTE_TO_8_BYTE_RESOLUTION(DRV_RDD_IH_RUNNER_0_IH_MANAGED_RB_BASE_ADDRESS); + runner_buffers_config.runner_b_ih_managed_rb_base_address = MS_BYTE_TO_8_BYTE_RESOLUTION(DRV_RDD_IH_RUNNER_1_IH_MANAGED_RB_BASE_ADDRESS); + runner_buffers_config.runner_a_runner_managed_rb_base_address = MS_BYTE_TO_8_BYTE_RESOLUTION(DRV_RDD_IH_RUNNER_0_RUNNER_MANAGED_RB_BASE_ADDRESS); + runner_buffers_config.runner_b_runner_managed_rb_base_address = MS_BYTE_TO_8_BYTE_RESOLUTION(DRV_RDD_IH_RUNNER_1_RUNNER_MANAGED_RB_BASE_ADDRESS); + runner_buffers_config.runner_a_maximal_number_of_buffers = DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_32; + runner_buffers_config.runner_b_maximal_number_of_buffers = DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_32; + + fi_bl_drv_ih_set_runner_buffers_configuration(&runner_buffers_config); + + /* runners load thresholds configuration */ + runners_load_thresholds.runner_a_high_congestion_threshold = DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS; + runners_load_thresholds.runner_b_high_congestion_threshold = DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS; + runners_load_thresholds.runner_a_exclusive_congestion_threshold = DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS; + runners_load_thresholds.runner_b_exclusive_congestion_threshold = DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS; + runners_load_thresholds.runner_a_load_balancing_threshold = DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS; + runners_load_thresholds.runner_b_load_balancing_threshold = DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS; + runners_load_thresholds.runner_a_load_balancing_hysteresis = DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS; + runners_load_thresholds.runner_b_load_balancing_hysteresis = DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS; + + fi_bl_drv_ih_set_runners_load_thresholds (& runners_load_thresholds); + + /* route addresses configuration */ + xi_route_addresses.eth0_route_address = IH_ETH0_ROUTE_ADDRESS; + xi_route_addresses.eth1_route_address = IH_ETH1_ROUTE_ADDRESS; + xi_route_addresses.gpon_route_address = IH_DSL_ROUTE_ADDRESS; + xi_route_addresses.runner_a_route_address = IH_RUNNER_A_ROUTE_ADDRESS; + xi_route_addresses.runner_b_route_address = IH_RUNNER_B_ROUTE_ADDRESS; + + fi_bl_drv_ih_set_route_addresses(&xi_route_addresses); + + /* logical ports configuration */ + logical_ports_config.eth0_config.parsing_layer_depth = IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH0_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE; + logical_ports_config.eth0_config.proprietary_tag_size = DRV_IH_PROPRIETARY_TAG_SIZE_0; + + logical_ports_config.eth1_config.parsing_layer_depth = IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH1_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE; +#if defined(__UBOOT__) + logical_ports_config.eth1_config.proprietary_tag_size = DRV_IH_PROPRIETARY_TAG_SIZE_0; +#else + logical_ports_config.eth1_config.proprietary_tag_size = DRV_IH_PROPRIETARY_TAG_SIZE_4; +#endif + + logical_ports_config.gpon_config.parsing_layer_depth = IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_GPON_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE; + logical_ports_config.gpon_config.proprietary_tag_size = DRV_IH_PROPRIETARY_TAG_SIZE_0; + + logical_ports_config.eth2_config.parsing_layer_depth = 0; + logical_ports_config.eth2_config.proprietary_tag_size = 0; + + logical_ports_config.eth3_config.parsing_layer_depth = 0; + logical_ports_config.eth3_config.proprietary_tag_size = 0; + + logical_ports_config.eth4_config.parsing_layer_depth = 0; + logical_ports_config.eth4_config.proprietary_tag_size = 0; + + logical_ports_config.runner_a_config.parsing_layer_depth = IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_RNRA_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE; + logical_ports_config.runner_a_config.proprietary_tag_size = DRV_IH_PROPRIETARY_TAG_SIZE_0; + + logical_ports_config.runner_b_config.parsing_layer_depth = IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_RNRB_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE; + logical_ports_config.runner_b_config.proprietary_tag_size = DRV_IH_PROPRIETARY_TAG_SIZE_0; + + logical_ports_config.pcie0_config.parsing_layer_depth = IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_PCIE0_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE; + logical_ports_config.pcie0_config.proprietary_tag_size = DRV_IH_PROPRIETARY_TAG_SIZE_0; + + logical_ports_config.pcie1_config.parsing_layer_depth = IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_PCIE1_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE; + logical_ports_config.pcie1_config.proprietary_tag_size = DRV_IH_PROPRIETARY_TAG_SIZE_0; + + fi_bl_drv_ih_set_logical_ports_configuration(&logical_ports_config); + + /* source port to ingress queue mapping */ + source_port_to_ingress_queue_mapping.eth0_ingress_queue = IH_INGRESS_QUEUE_0_ETH0; + source_port_to_ingress_queue_mapping.eth1_ingress_queue = IH_INGRESS_QUEUE_1_ETH1; + source_port_to_ingress_queue_mapping.gpon_ingress_queue = IH_INGRESS_QUEUE_5_DSL; + source_port_to_ingress_queue_mapping.runner_a_ingress_queue = IH_INGRESS_QUEUE_6_RUNNER_A; + source_port_to_ingress_queue_mapping.runner_b_ingress_queue = IH_INGRESS_QUEUE_7_RUNNER_B; + + fi_bl_drv_ih_set_source_port_to_ingress_queue_mapping(&source_port_to_ingress_queue_mapping); + + /* ingress queues configuration */ + fi_ih_configure_ingress_queues(); + + /* configure wan ports */ + wan_ports_config.eth0 = 1; + wan_ports_config.eth1 = 0; + wan_ports_config.eth2 = 0; + wan_ports_config.eth3 = 0; + wan_ports_config.eth4 = 0; + wan_ports_config.gpon = 1; /* DSL */ + wan_ports_config.runner_a = 0; + wan_ports_config.runner_b = 0; + wan_ports_config.pcie0 = 0; + wan_ports_config.pcie1 = 0; + + fi_bl_drv_ih_configure_wan_ports(&wan_ports_config); + + f_ih_configure_lookup_tables(); + + f_ih_configure_classes(); + + f_ih_configure_target_matrix(); + + f_ih_configure_parser(); +} + + +static void f_initialize_basic_runner_parameters(void) +{ + BL_LILAC_RDD_ERROR_DTE rdd_error; + uint32_t i,j; + + /* Default configuration of all RDD reasons to CPU_RX_QUEUE_ID_0 */ + for (i = 0; i < rdpa_cpu_reason__num_of; i++) + { + rdd_error = rdd_cpu_reason_to_cpu_rx_queue(i, 0, rdpa_dir_ds, 0); + + rdd_error |= rdd_cpu_reason_to_cpu_rx_queue(i, 0, rdpa_dir_us, 0); + } + + /* Initialize Ethernet priority queues */ + for (i = 0; i < 8; i++) + { + for (j = BL_LILAC_RDD_EMAC_ID_0; j < BL_LILAC_RDD_EMAC_ID_7; j++) + { + /* Configure queue size in RDD */ + rdd_error |= rdd_eth_tx_queue_config(j, i, CS_RDD_ETH_TX_QUEUE_PACKET_THRESHOLD,0,INVALID_COUNTER_ID); + } + } +} + +static void f_configure_runner(S_DPI_CFG *pCfg, rdp_bpm_cfg_params *p_bpm_cfg_params) +{ + /* Local Variables */ + RDD_INIT_PARAMS rdd_init_params ; + + /* zero Runner memories (data, program and context) */ + rdd_init(); + + rdd_load_microcode((uint8_t*) NULL, + (uint8_t*) firmware_binary_B, (uint8_t*) firmware_binary_C, + (uint8_t*) firmware_binary_D); + + rdd_load_prediction((uint8_t*) NULL, + (uint8_t*) firmware_predict_B, (uint8_t*) firmware_predict_C, + (uint8_t*) firmware_predict_D); + + /* Add basic offset when pass the addresses to RDD */ + rdd_init_params.ddr_pool_ptr = (uint8_t *) pCfg->runner_tm_base_addr; + rdd_init_params.ddr_pool_ptr_phys = (uint32_t) pCfg->runner_tm_base_addr_phys; + rdd_init_params.extra_ddr_pool_ptr = (uint8_t *) pCfg->runner_mc_base_addr; + rdd_init_params.extra_ddr_pool_ptr_phys = (uint32_t) pCfg->runner_mc_base_addr_phys; + /* ddr_runner_table only needs to be 512KB aligned, but we make 1 MB anyway */ + rdd_init_params.ddr_runner_tables_ptr = (uint8_t *) ROUND_UP_MB(pCfg->runner_tm_base_addr + + (p_bpm_cfg_params->bpm_def_thresh * rdp_bpm_buf_size())); + rdd_init_params.ddr_runner_tables_ptr_phys = RDD_RSV_VIRT_TO_PHYS(pCfg->runner_tm_base_addr, + pCfg->runner_tm_base_addr_phys, rdd_init_params.ddr_runner_tables_ptr); + rdd_init_params.mac_table_size = BL_LILAC_RDD_MAC_TABLE_SIZE_64; + /* we don't have iptv table. the following is just a dummy */ + rdd_init_params.iptv_table_size = BL_LILAC_RDD_MAC_TABLE_SIZE_256; + rdd_init_params.ddr_headroom_size = pCfg->headroom_size; + /* XXX: Temporary, take this from global_system */ +#ifdef __UBOOT__ + rdd_init_params.broadcom_switch_mode = 0; /* unmanaged */ +#else + rdd_init_params.broadcom_switch_mode = 1; /* managed */ +#endif + rdd_init_params.broadcom_switch_physical_port = BL_LILAC_RDD_LAN1_BRIDGE_PORT; + + /* ip class operational mode*/ + rdd_init_params.bridge_flow_cache_mode = 0; + + /* The chip revision A0/B0 refers to BCM6838. The BCM63138A0 handles Runner semaphores + * like BCM6838A0. The BCM63148 and BCM63138B0 handle Runner semaphores like BCM6838B0. + */ + rdd_init_params.chip_revision = RDD_CHIP_REVISION_B0; + rdd_init_params.cpu_tx_abs_packet_limit = RDD_CPU_TX_ABS_FIFO_SIZE; + rdd_init_params.lp_mode = pCfg->runner_lp; + rdd_data_structures_init(&rdd_init_params); + +} + +void f_basic_bpm_sp_enable(void) +{ + BPM_MODULE_REGS_BPM_SP_EN bpm_sp_enable; + + BPM_MODULE_REGS_BPM_SP_EN_READ( bpm_sp_enable); + + bpm_sp_enable.rnra_en = 1; + bpm_sp_enable.rnrb_en = 1; + bpm_sp_enable.gpon_en = 0; + bpm_sp_enable.emac0_en = 1; + bpm_sp_enable.emac1_en = 1; + + + BPM_MODULE_REGS_BPM_SP_EN_WRITE( bpm_sp_enable); + +} +void f_basic_sbpm_sp_enable(void) +{ + DRV_SBPM_SP_ENABLE sbpm_sp_enable = { 0 }; + + sbpm_sp_enable.rnra_sp_enable = 1; + sbpm_sp_enable.rnrb_sp_enable = 1; + sbpm_sp_enable.eth0_sp_enable = 1; + sbpm_sp_enable.eth1_sp_enable = 1; + sbpm_sp_enable.eth2_sp_enable = 0; + sbpm_sp_enable.eth3_sp_enable = 0; + sbpm_sp_enable.eth4_sp_enable = 0; + + fi_bl_drv_sbpm_sp_enable(&sbpm_sp_enable); +} + +uint32_t data_path_init( S_DPI_CFG *pCfg) +{ + uint32_t error = DPI_RC_OK; + uint32_t rnrFreq = DEFAULT_RUNNER_FREQ; + + DRV_BBH_PORT_INDEX macIter; + rdp_bpm_cfg_params bpm_cfg_params; + + + /* Point to default configuration if none is passed to init */ + pDpiCfg = !pCfg ? &DpiBasicConfig : pCfg; + + /*init dma arrays*/ + f_initialize_bbh_dma_sdma_related_arrays(); + + if (rdp_bpm_cfg_params_get(pCfg, &bpm_cfg_params)) { + __print("FAILED TO INITIALIZE RDP DUE TO RESERVE MEMORY NOT ENOUGH\n"); + return DPI_RC_ERROR; + } + + /*init runner,load microcode and structures*/ + f_configure_runner(pCfg, &bpm_cfg_params); + + /*set runner frequency*/ + if (pDpiCfg->runner_freq == 0) + { + rnrFreq = DEFAULT_RUNNER_FREQ; + } + else + { + rnrFreq = pDpiCfg->runner_freq; + } + + rdd_runner_frequency_set(rnrFreq); + + /*configure IH*/ + f_ih_init(); + + /*init SBPM*/ + sbpm_drv_init(); + + /*init BPM*/ + bpm_drv_init(pCfg, &bpm_cfg_params); + + /*init BBH of emac ports*/ + for ( macIter = DRV_BBH_EMAC_0; macIter <= DRV_BBH_EMAC_1; macIter++) + { + f_initialize_bbh_of_emac_port(macIter); + } + /*init DMA and SDMA*/ + f_initialize_dma_sdma(); + + /*configure basic runner parameters*/ + f_initialize_basic_runner_parameters(); + + if ( error == DPI_RC_OK ) + { + initDone = 1; + } + return error; + +} + +uint32_t data_path_go(void) +{ + if ( initDone != 1 ) + { + __print("Data Path init didn't finished \n"); + return DPI_RC_ERROR; + } + + /*enable runner*/ + rdd_runner_enable(); + + /*enable the source ports in bpm/sbpm in case of basic config*/ + f_basic_bpm_sp_enable(); + f_basic_sbpm_sp_enable(); + + return DPI_RC_OK; +} +uint32_t data_path_shutdown(void) +{ + return DPI_RC_OK; +} diff --git a/arch/arm/mach-bcmbca/rdp/data_path_init.h b/arch/arm/mach-bcmbca/rdp/data_path_init.h new file mode 100755 index 0000000000..36e41c2945 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/data_path_init.h @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the definitions for Broadcom's 6838 Data path */ +/* initialization sequence */ +/* */ +/******************************************************************************/ + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ +#ifndef __BCM63138_DATA_PATH_INIT_H +#define __BCM63138_DATA_PATH_INIT_H + +typedef enum +{ + WAN_TYPE_NONE = 0, + WAN_TYPE_RGMII = 1, + WAN_TYPE_DSL = 5 +}E_WAN_TYPE; + + +typedef enum +{ + DPI_RC_OK, + DPI_RC_ERROR +}E_DPI_RC; + + +typedef struct +{ + uint32_t mtu_size; + uint32_t headroom_size; + uint32_t runner_freq; + uint32_t runner_tm_base_addr; + uint32_t runner_tm_base_addr_phys; + uint32_t runner_tm_size; + uint32_t runner_mc_base_addr; + uint32_t runner_mc_base_addr_phys; + uint32_t runner_mc_size; + uint32_t runner_lp; +} S_DPI_CFG; + +uint32_t data_path_init(S_DPI_CFG *pCfg); +uint32_t data_path_go(void); +uint32_t data_path_shutdown(void); +void f_configure_bridge_port_sa_da(void); +void reset_unreset_rdp_block(void); + + +#endif //#define __BCM63138_DATA_PATH_INIT_H diff --git a/arch/arm/mach-bcmbca/rdp/hwapi_mac.h b/arch/arm/mach-bcmbca/rdp/hwapi_mac.h new file mode 100755 index 0000000000..3ef4bf7a7e --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/hwapi_mac.h @@ -0,0 +1,1017 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2013 Broadcom Corporation + All Rights Reserved + + +*/ + + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This header file defines all datatypes and functions exported for the */ +/* Ethernet MAC */ +/* */ +/******************************************************************************/ + + +#ifndef __UNIFIED_DRV_MAC_H +#define __UNIFIED_DRV_MAC_H + + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ +#if !defined(CONFIG_BCM47622) +#include "rdpa_types.h" +#else //47622 - does not have runner, just include necessary definitions + +#define rdpa_emac int + +/** EMAC rates */ +typedef enum +{ + rdpa_emac_rate_10m, /**< 10 Mbps */ + rdpa_emac_rate_100m, /**< 100 Mbps */ + rdpa_emac_rate_1g, /**< 1 Gbps */ + rdpa_emac_rate_2_5g, /**< 2.5 Gbps */ + + rdpa_emac_rate__num_of, /* Number of rates */ +} rdpa_emac_rate; + +/** EMAC configuration */ +typedef struct +{ + char loopback; /**< 1 = line loopback */ + rdpa_emac_rate rate; /**< EMAC rate */ + char generate_crc; /**< 1 = generate CRC */ + char full_duplex; /**< 1 = full duplex */ + char pad_short; /**< 1 = pad short frames */ + char allow_too_long;/**< 1 = allow long frames */ + char check_length; /**< 1 = check frame length */ + uint32_t preamble_length; /**< Preamble length */ + uint32_t back2back_gap; /**< Back2Back inter-packet gap */ + uint32_t non_back2back_gap; /**< Non Back2Back inter-packet gap */ + uint32_t min_interframe_gap; /**< Min inter-frame gap */ + char rx_flow_control;/**< 1 = enable RX flow control */ + char tx_flow_control;/**< 1 = enable TX flow control */ +} rdpa_emac_cfg_t; + +/** RX RMON counters. + * Underlying type for emac_rx_stat aggregate type. + */ +typedef struct +{ + uint32_t byte; /**< Receive Byte Counter */ + uint32_t packet; /**< Receive Packet Counter */ + uint32_t frame_64; /**< Receive 64 Byte Frame Counter */ + uint32_t frame_65_127; /**< Receive 65 to 127 Byte Frame Counter */ + uint32_t frame_128_255; /**< Receive 128 to 255 Byte Frame Counter */ + uint32_t frame_256_511; /**< Receive 256 to 511 Byte Frame Counter */ + uint32_t frame_512_1023; /**< Receive 512 to 1023 Byte Frame Counter */ + uint32_t frame_1024_1518; /**< Receive 1024 to 1518 Byte Frame Counter */ + uint32_t frame_1519_mtu; /**< Receive 1519 to MTU Frame Counter */ + uint32_t multicast_packet; /**< Receive Multicast Packet */ + uint32_t broadcast_packet; /**< Receive Broadcast Packet */ + uint32_t unicast_packet; /**< Receive Unicast Packet */ + uint32_t alignment_error; /**< Receive Alignment error */ + uint32_t frame_length_error;/**< Receive Frame Length Error Counter */ + uint32_t code_error; /**< Receive Code Error Counter */ + uint32_t carrier_sense_error;/**< Receive Carrier sense error */ + uint32_t fcs_error; /**< Receive FCS Error Counter */ + uint32_t control_frame; /**< Receive Control Frame Counter */ + uint32_t pause_control_frame;/**< Receive Pause Control Frame */ + uint32_t unknown_opcode; /**< Receive Unknown opcode */ + uint32_t undersize_packet; /**< Receive Undersize Packet */ + uint32_t oversize_packet; /**< Receive Oversize Packet */ + uint32_t fragments; /**< Receive Fragments */ + uint32_t jabber; /**< Receive Jabber counter */ + uint32_t overflow; /**< Receive Overflow counter */ +} rdpa_emac_rx_stat_t; + +/** Tx RMON counters. + * Underlying type for emac_tx_stat aggregate type. + */ +typedef struct +{ + uint32_t byte; /**< Transmit Byte Counter */ + uint32_t packet; /**< Transmit Packet Counter */ + uint32_t frame_64; /**< Transmit 64 Byte Frame Counter */ + uint32_t frame_65_127; /**< Transmit 65 to 127 Byte Frame Counter */ + uint32_t frame_128_255; /**< Transmit 128 to 255 Byte Frame Counter */ + uint32_t frame_256_511; /**< Transmit 256 to 511 Byte Frame Counter */ + uint32_t frame_512_1023; /**< Transmit 512 to 1023 Byte Frame Counter */ + uint32_t frame_1024_1518; /**< Transmit 1024 to 1518 Byte Frame Counter */ + uint32_t frame_1519_mtu; /**< Transmit 1519 to MTU Frame Counter */ + uint32_t fcs_error; /**< Transmit FCS Error */ + uint32_t multicast_packet; /**< Transmit Multicast Packet */ + uint32_t broadcast_packet; /**< Transmit Broadcast Packet */ + uint32_t unicast_packet; /**< Transmit Unicast Packet */ + uint32_t excessive_collision; /**< Transmit Excessive collision counter */ + uint32_t late_collision; /**< Transmit Late collision counter */ + uint32_t single_collision; /**< Transmit Single collision frame counter */ + uint32_t multiple_collision;/**< Transmit Multiple collision frame counter */ + uint32_t total_collision; /**< Transmit Total Collision Counter */ + uint32_t pause_control_frame; /**< Transmit PAUSE Control Frame */ + uint32_t deferral_packet; /**< Transmit Deferral Packet */ + uint32_t excessive_deferral_packet; /**< Transmit Excessive Deferral Packet */ + uint32_t jabber_frame; /**< Transmit Jabber Frame */ + uint32_t control_frame; /**< Transmit Control Frame */ + uint32_t oversize_frame; /**< Transmit Oversize Frame counter */ + uint32_t undersize_frame; /**< Transmit Undersize Frame */ + uint32_t fragments_frame; /**< Transmit Fragments Frame counter */ + uint32_t error; /**< Transmission errors*/ + uint32_t underrun; /**< Transmission underrun */ +} rdpa_emac_tx_stat_t; + +/** Emac statistics */ +typedef struct +{ + rdpa_emac_rx_stat_t rx; /**< Emac Receive Statistics */ + rdpa_emac_tx_stat_t tx; /**< Emac Transmit Statistics */ +} rdpa_emac_stat_t; + +/** Ethernet address */ +typedef struct { + uint8_t b[6]; /**< Address bytes */ +} bdmf_mac_t; + +#endif //47622 +/******************************************************************************/ +/* */ +/* Types and values definitions */ +/* */ +/******************************************************************************/ + +typedef struct +{ + int32_t rxFlowEnable; + int32_t txFlowEnable; +}S_MAC_HWAPI_FLOW_CTRL; + +typedef enum +{ + MAC_LPBK_NONE, + MAC_LPBK_LOCAL, + MAC_LPBK_REMOTE, + MAC_LPBK_BOTH +}MAC_LPBK; + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + uint32_t reserved:26;// Reserved bits must be written with 0. A read returns an unknown value. + uint32_t mac_link_stat:1;// Link status indication.Reset value is 0x0. + uint32_t mac_tx_pause:1;// 1: MAC Tx pause enabled. 0: MAC Tx pause disabled. Reset value is 0x1. + uint32_t mac_rx_pause:1;// 1: MAC Rx pause enabled. 0: MAC Rx pause disabled. Reset value is 0x1. + uint32_t mac_duplex:1;//1: Half duplex. 0: Full duplex. Reset value is 0x0. + uint32_t mac_speed:2;// 00: 10Mbps, 01: 100Mbps, 10: 1Gbps, 11: 2.5Gbps Reset value is 0x2. + +}S_HWAPI_MAC_STATUS; +#else +typedef struct +{ + uint32_t mac_speed:2;// 00: 10Mbps, 01: 100Mbps, 10: 1Gbps, 11: 2.5Gbps Reset value is 0x2. + uint32_t mac_duplex:1;//1: Half duplex. 0: Full duplex. Reset value is 0x0. + uint32_t mac_rx_pause:1;// 1: MAC Rx pause enabled. 0: MAC Rx pause disabled. Reset value is 0x1. + uint32_t mac_tx_pause:1;// 1: MAC Tx pause enabled. 0: MAC Tx pause disabled. Reset value is 0x1. + uint32_t mac_link_stat:1;// Link status indication.Reset value is 0x0. + uint32_t reserved:26;// Reserved bits must be written with 0. A read returns an unknown value. + +}S_HWAPI_MAC_STATUS; +#endif + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_configuration */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get configuration */ +/* */ +/* Abstract: */ +/* */ +/* get the configuratin of a mac port ,note that current status of emac */ +/* might be different than configuration when working in autoneg */ +/* to get the current status use mac_hwapi_get_mac_status API */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* emac_cfg - structure holds the current configuration of the mac port */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_configuration(rdpa_emac emacNum,rdpa_emac_cfg_t *emac_cfg); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_configuration */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set configuration */ +/* */ +/* Abstract: */ +/* */ +/* set the configuratin of a mac port */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* emac_cfg - structure holds the current configuration of the mac port */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_configuration(rdpa_emac emacNum,rdpa_emac_cfg_t *emac_cfg); +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_duplex */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port duplex */ +/* */ +/* Abstract: */ +/* */ +/* get the dulplex of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* full_duples : 1 = full dulplex,0 = half_duplex */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_duplex(rdpa_emac emacNum,int32_t *full_duplex); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_duplex */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port duplex */ +/* */ +/* Abstract: */ +/* */ +/* set the dulplex of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* full_duples : 1 = full dulplex,0 = half_duplex */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_duplex(rdpa_emac emacNum,int32_t full_duplex); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_speed */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port speed rate */ +/* */ +/* Abstract: */ +/* */ +/* get the speed of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* rate - enum of the speed */ +/******************************************************************************/ +void mac_hwapi_get_speed(rdpa_emac emacNum,rdpa_emac_rate *rate); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_speed */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port speed rate */ +/* */ +/* Abstract: */ +/* */ +/* set the speed of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* rate - enum of the speed */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ + +void mac_hwapi_set_speed(rdpa_emac emacNum,rdpa_emac_rate rate); + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_external_conf */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - en/disable external speed configuration */ +/* */ +/* Abstract: */ +/* */ +/* set port speed external configuration */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* enable - boolean enable */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ + +void mac_hwapi_set_external_conf(rdpa_emac emacNum, int enable); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_rxtx_enable */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set tx and rx enable */ +/* */ +/* Abstract: */ +/* */ +/* get tx and rx enable */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* rxtxEnable - boolean enable */ +/******************************************************************************/ +void mac_hwapi_get_rxtx_enable(rdpa_emac emacNum,int32_t *rxEnable,int32_t *txEnable); + + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_rxtx_enable */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set tx and rx enable */ +/* */ +/* Abstract: */ +/* */ +/* set tx and rx enable */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* rxtxEnable - boolean enable */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_rxtx_enable(rdpa_emac emacNum,int32_t rxEnable,int32_t txEnable); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_sw_reset */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port software reset */ +/* */ +/* Abstract: */ +/* */ +/* get the sw reset bit of emac port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* swReset : 1 = reset,0 = not reset */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_sw_reset(rdpa_emac emacNum,int32_t *swReset); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_sw_reset */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port software reset */ +/* */ +/* Abstract: */ +/* */ +/* set the sw reset bit of emac port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* swReset : 1 = reset,0 = not reset */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_sw_reset(rdpa_emac emacNum,int32_t swReset); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_tx_min_pkt_size */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get tx minimum packet size */ +/* */ +/* Abstract: */ +/* */ +/* Get the unimac configuration for minimum tx packet size */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* min_pkt_size : 14...125 */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_tx_min_pkt_size(rdpa_emac emacNum,int32_t *min_pkt_size); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_tx_min_pkt_size */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set tx minimum packet size */ +/* */ +/* Abstract: */ +/* */ +/* Set the unimac configuration for minimum tx packet size */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* min_pkt_size : 14...125 */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_tx_min_pkt_size(rdpa_emac emacNum,int32_t min_pkt_size); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_tx_max_frame_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port TX MTU */ +/* */ +/* Abstract: */ +/* */ +/* get the port maximum transmit unit size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* maxTxFrameLen - size of frame in bytes */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_tx_max_frame_len(rdpa_emac emacNum,uint32_t *maxTxFrameLen ); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_tx_max_frame_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port TX MTU */ +/* */ +/* Abstract: */ +/* */ +/* set the port maximum transmit unit size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* maxTxFrameLen - size of frame in bytes */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_tx_max_frame_len(rdpa_emac emacNum,uint32_t maxTxFrameLen ); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_rx_max_frame_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port RX MTU */ +/* */ +/* Abstract: */ +/* */ +/* get the port maximum receive unit size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* maxRxFrameLen - size of current MRU */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_rx_max_frame_len(rdpa_emac emacNum,uint32_t *maxRxFrameLen ); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_rx_max_frame_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port RX MTU */ +/* */ +/* Abstract: */ +/* */ +/* set the port maximum receive unit size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* maxRxFrameLen - size of current MRU */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_rx_max_frame_len(rdpa_emac emacNum,uint32_t maxRxFrameLen ); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_tx_igp_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port inter frame gap */ +/* */ +/* Abstract: */ +/* */ +/* set the inter frame gap size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* txIpgLen - length in bytes */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_tx_igp_len(rdpa_emac emacNum,uint32_t txIpgLen ); + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_tx_igp_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port inter frame gap */ +/* */ +/* Abstract: */ +/* */ +/* get the inter frame gap size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* txIpgLen - length in bytes */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_tx_igp_len(rdpa_emac emacNum,uint32_t *txIpgLen ); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_mac_status */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port status */ +/* */ +/* Abstract: */ +/* */ +/* set the status of mac */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* macStatus : */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_mac_status(rdpa_emac emacNum,S_HWAPI_MAC_STATUS *macStatus); + + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_flow_control */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port flow control */ +/* */ +/* Abstract: */ +/* */ +/* get the flow control of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* flowControl - structure with parameters of tx and rx flow control */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_flow_control(rdpa_emac emacNum,S_MAC_HWAPI_FLOW_CTRL *flowControl); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_flow_control */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port flow control */ +/* */ +/* Abstract: */ +/* */ +/* set the flow control of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* flowControl - structure with parameters of tx and rx flow control */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_flow_control(rdpa_emac emacNum,S_MAC_HWAPI_FLOW_CTRL *flowControl); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_pause_params */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port flow control */ +/* */ +/* Abstract: */ +/* */ +/* set the flow control of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* flowControl - structure with parameters of tx and rx flow control */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_pause_params(rdpa_emac emacNum,int32_t pauseCtrlEnable,uint32_t pauseTimer,uint32_t pauseQuanta); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_rx_counters */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get the rx counters of port */ +/* */ +/* Abstract: */ +/* */ +/* get the rx counters of port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* rxCounters : structure filled with counters */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_rx_counters(rdpa_emac emacNum,rdpa_emac_rx_stat_t *rxCounters); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_tx_counters */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get the tx counters of port */ +/* */ +/* Abstract: */ +/* */ +/* get the tx counters of port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* txCounters : structure filled with counters */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_tx_counters(rdpa_emac emacNum,rdpa_emac_tx_stat_t *txCounters); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_init_emac */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - init the emac to well known state */ +/* */ +/* Abstract: */ +/* */ +/* initialized the emac port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ +void mac_hwapi_init_emac(rdpa_emac emacNum); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_loopback */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - init the emac to well known state */ +/* */ +/* Abstract: */ +/* */ +/* initialized the emac port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_loopback(rdpa_emac emacNum,MAC_LPBK *loopback); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_loopback */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - init the emac to well known state */ +/* */ +/* Abstract: */ +/* */ +/* initialized the emac port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_loopback(rdpa_emac emacNum,MAC_LPBK loopback); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_modify_flow_control_pause_pkt_addr */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - Modify the Flow Control pause pkt source address */ +/* */ +/* Abstract: */ +/* */ +/* This function modifies the flow control pause pkt source address */ +/* */ +/* Input: */ +/* */ +/* emacNum - EMAC id (0-5) */ +/* */ +/* mac - Flow Control mac address */ +/* */ +/* Output: N/A */ +/* */ +/******************************************************************************/ +void mac_hwapi_modify_flow_control_pause_pkt_addr ( rdpa_emac emacNum, + bdmf_mac_t mac); +void mac_hwapi_set_unimac_cfg(rdpa_emac emacNum, int32_t enabled); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_backpressure_ext */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set/reset backpressure to external switch */ +/* */ +/* Abstract: */ +/* */ +/* set/reset backpressure to external switch */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* enable - boolean enable */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_backpressure_ext(rdpa_emac emacNum, int32_t enable); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_eee */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set eee configuration */ +/* */ +/* Abstract: */ +/* */ +/* set eee configuration */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* enable - boolean enable */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_eee(rdpa_emac emacNum, int32_t enable); + +#endif diff --git a/arch/arm/mach-bcmbca/rdp/packing.h b/arch/arm/mach-bcmbca/rdp/packing.h new file mode 100755 index 0000000000..deaa86e5c4 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/packing.h @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2012 Broadcom + */ +/* +* +*/ + +#ifndef __PACKING_H_ +#define __PACKING_H_ + +#define __PACKING_ATTRIBUTE_STRUCT_END__ __attribute__ ((packed)) +#define __PACKING_ATTRIBUTE_FIELD_LEVEL__ + +#endif + diff --git a/arch/arm/mach-bcmbca/rdp/rdd.h b/arch/arm/mach-bcmbca/rdp/rdd.h new file mode 100755 index 0000000000..7b4a94c4c9 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd.h @@ -0,0 +1,95 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef _BL_LILAC_DRV_RUNNER_H +#define _BL_LILAC_DRV_RUNNER_H + +#include "bl_os_wraper.h" +#include "access_macros.h" + + +#if defined(__UBOOT__) +#include "bcm_mm.h" +#define RDP_CPU_RING_MAX_QUEUES 1 +#define RDP_WLAN_MAX_QUEUES 0 + +#elif defined(__KERNEL__) +#include "bcm_mm.h" +#define PHYS_TO_VIRT(_addr) PHYS_TO_CACHED(_addr) +#define RDP_CPU_RING_MAX_QUEUES RDPA_CPU_MAX_QUEUES +#define RDP_WLAN_MAX_QUEUES RDPA_WLAN_MAX_QUEUES + +#else +#define VIRT_TO_PHYS(_addr) ((uint32_t)_addr) +#define PHYS_TO_VIRT(_addr) (_addr) +#endif + +#define RDD_VIRT_TO_PHYS(_addr) VIRT_TO_PHYS(_addr) +#define RDD_PHYS_TO_VIRT(_addr) PHYS_TO_VIRT(_addr) + +#if defined(__UBOOT__) +#define RDD_RSV_VIRT_TO_PHYS(_vbase, _pbase, _addr) RDD_VIRT_TO_PHYS(_addr) +#define RDD_RSV_PHYS_TO_VIRT(_vbase, _pbase, _addr) RDD_PHYS_TO_VIRT(_addr) +#elif defined(__KERNEL__) +#include "bcm_rsvmem.h" +#define RDD_RSV_VIRT_TO_PHYS(_vbase, _pbase, _addr) BcmMemReserveVirtToPhys(_vbase, _pbase, _addr) +#define RDD_RSV_PHYS_TO_VIRT(_vbase, _pbase, _addr) BcmMemReservePhysToVirt(_vbase, _pbase, _addr) +#else +#define RDD_RSV_VIRT_TO_PHYS(_vbase, _pbase, _addr) RDD_VIRT_TO_PHYS(_addr) +#define RDD_RSV_PHYS_TO_VIRT(_vbase, _pbase, _addr) RDD_PHYS_TO_VIRT(_addr) +#endif + + +#ifndef __PACKING_ATTRIBUTE_STRUCT_END__ +#include "packing.h" +#endif + +#include "rdp_runner.h" +#include "rdpa_types.h" + +#include "rdp_drv_bpm.h" + +/* temporary until complete stratosphere removal */ +#define bdmf_fastlock int +#define DEFINE_BDMF_FASTLOCK(lock) int lock = 0 +#define bdmf_fastlock_lock(_lock) (*_lock = 0) +#define bdmf_fastlock_unlock(_lock) (*_lock = 0) +#define bdmf_fastlock_lock_irq(_lock, _flag) (_flag = *_lock) +#define bdmf_fastlock_unlock_irq(_lock, _flag) (*_lock = _flag) + +#if !defined(BDMF_SYSTEM_SIM) +#define rdd_print(fmt, args...) printk(fmt, ##args) +#else +#define rdd_print(fmt, args...) printf(fmt, ##args) +#endif + +/* task addresses labels from fw compilation */ +#include "rdd_runner_a_labels.h" +#include "rdd_runner_b_labels.h" +#include "rdd_runner_c_labels.h" +#include "rdd_runner_d_labels.h" + +#include "rdd_defs.h" +#include "rdd_runner_defs_auto.h" +#include "rdd_runner_defs.h" +#include "rdd_data_structures_auto.h" +#include "rdd_data_structures.h" +#include "rdd_common.h" +#include "rdd_cpu.h" +#include "rdd_init.h" +#include "rdd_lookup_engine.h" +#include "rdd_tm.h" +#include "rdd_platform.h" + +/* priority range according to classification type : acl 128-191, flow 64-127, qos 0-63, ip_flow 192-255 */ +#define RDPA_QOS_PRTY_OFFSET 0 +#define RDPA_FLOW_PRTY_OFFSET 64 +#define RDPA_ACL_PRTY_OFFSET 128 +#define RDPA_IP_FLOW_PRTY_OFFSET 192 + +#endif /* _BL_LILAC_DRV_RUNNER_H */ diff --git a/arch/arm/mach-bcmbca/rdp/rdd_common.c b/arch/arm/mach-bcmbca/rdp/rdd_common.c new file mode 100755 index 0000000000..b0c018867e --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_common.c @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#include "rdd.h" + + +/******************************************************************************/ +/* */ +/* Global Variables */ +/* */ +/******************************************************************************/ + +int g_dbg_lvl; +RDD_FC_MCAST_CONNECTION2_TABLE_DTS *g_fc_mcast_connection2_table_ptr; +#if defined(DSL_63138) || defined(DSL_63148) +RDD_CONNECTION_TABLE_DTS *g_ds_connection_table_ptr; +#endif + +uint8_t* g_runner_ddr_base_addr; +uint32_t g_runner_ddr_base_addr_phys; +uint8_t* g_runner_tables_ptr; +uint8_t* g_runner_extra_ddr_base_addr; +uint32_t g_runner_extra_ddr_base_addr_phys; +uint32_t g_ddr_headroom_size; +uint8_t g_broadcom_switch_mode = 0; +uint32_t g_bridge_flow_cache_mode; +uint32_t g_cpu_tx_queue_write_ptr[ 4 ]; +uint32_t g_cpu_tx_queue_abs_data_ptr_write_ptr[ 4 ]; +uint32_t g_rate_controllers_pool_idx; +uint32_t g_chip_revision; +uint8_t g_lookup_port_init_mapping_table[16]; + +RDD_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTE g_ingress_classification_rule_cfg_table[ 2 ]; +RDD_WAN_TX_POINTERS_TABLE_DTS *wan_tx_pointers_table_ptr; +BL_LILAC_RDD_BRIDGE_PORT_DTE g_broadcom_switch_physical_port = 0; +uint32_t g_cpu_tx_abs_packet_limit = 0; +uint16_t *g_free_skb_indexes_fifo_table = NULL; +uint8_t **g_cpu_tx_skb_pointers_reference_array = NULL; +uint8_t *g_dhd_tx_cpu_usage_reference_array = NULL; +rdd_phys_addr_t *g_cpu_tx_data_pointers_reference_array = NULL; +rdd_phys_addr_t g_free_skb_indexes_fifo_table_physical_address = 0; +rdd_phys_addr_t g_free_skb_indexes_fifo_table_physical_address_last_idx = 0; + +DEFINE_BDMF_FASTLOCK( int_lock ); +DEFINE_BDMF_FASTLOCK( int_lock_irq ); diff --git a/arch/arm/mach-bcmbca/rdp/rdd_common.h b/arch/arm/mach-bcmbca/rdp/rdd_common.h new file mode 100755 index 0000000000..9176e30d5c --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_common.h @@ -0,0 +1,427 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef _BL_LILAC_DRV_RUNNER_COMMON_H +#define _BL_LILAC_DRV_RUNNER_COMMON_H + +#include "rdd_data_structures.h" +#if !defined(FIRMWARE_INIT) +#include "rdp_drv_bpm.h" +#endif /* !defined(FIRMWARE_INIT) */ + +typedef struct { + uint32_t write; + uint32_t read; + uint32_t count; + uint16_t *data; +} cpu_tx_skb_free_indexes_cache_t; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_smart_card_global_params_config */ +/* */ +/* Title: */ +/* */ +/* Smart card */ +/* */ +/* Abstract: */ +/* */ +/* This function sets the global timing parameters that should apply on */ +/* transactions from now on */ +/* */ +/* */ +/* Input: */ +/* xi_waiting_time - The maximum delay between the leading edge of a */ +/* character transmitted by the card and the leading edge of the */ +/* previous character */ +/* xi_guard_time - The minimum delay between the leading edges of */ +/* two consecutive characters */ +/* xi_etu - elementary time unit , in which one bit is transffered */ +/* */ +/* Output: */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/* . */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_smart_card_global_params_config ( uint32_t xi_waiting_time, + uint8_t xi_guard_time, + uint8_t xi_etu, + uint8_t xi_max_retransmit ); + + +/************************************************************************************/ +/* */ +/* Name: rdd_smart_card_command_params_config */ +/* */ +/* Title: */ +/* */ +/* Smart card */ +/* */ +/* Abstract: */ +/* This function sets the parameters of the wanted transaction */ +/* and starts it. */ +/* Input: */ +/* *xi_header_arr - array of 5 bytes containing the header */ +/* *xi_data_arr - data array to send */ +/* xi_send_len - number of bytes to be send to the smart card. */ +/* Only for PPS and NORMAL task types . */ +/* xi_receive_len - number of bytes to be recieved to/from the */ +/* smart card. Ignored for not NORMAL task type */ +/* xi_task_type - TX_TASK / RX_TASK / PPS / ANSWER_TO_RESET / NORMAL */ +/* */ +/* TX_TASK: */ +/* Sending header and data to the card . */ +/* */ +/* RX_TASK: */ +/* Sending header and receiving data from the card. */ +/* */ +/* PPS : */ +/* The pps message is contained in xi_data array. */ +/* xi_send_len is the length of pps message. */ +/* xi_header will be ignored. */ +/* */ +/* RESET: */ +/* receive and parse (calculating the size) of ANSWER_TO_RESET */ +/* PDU initiated after cold/warm reset of smart card. */ +/* Note: xi_data_len, xi_header, xi_data are ignored */ +/* */ +/* NORMAL : sending xi_send_len bytes and receiving xi_receive_len bytes . */ +/* (used mainly for debugging) */ +/* Output: */ +/* BL_LILAC_RDD_OK */ +/* */ +/************************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_smart_card_command_params_config ( uint8_t xi_task_type, + uint16_t xi_send_length, + uint16_t xi_receive_length, + uint8_t *xi_header_array, + uint8_t *xi_data_array ); + + +/************************************************************************************/ +/* */ +/* Name: rdd_smart_card_command_params_read */ +/* */ +/* Title: Smart card */ +/* */ +/* Abstract: */ +/* This function reads the bytes received from smart card. */ +/* Use after transaction is completed. */ +/* */ +/* Input: */ +/* *xi_send_len - ptr to number of bytes that was sent */ +/* *xi_recieve_len - ptr to number of bytes that was received */ +/* *xi_data_arr - data array of received bytes with length */ +/* xi_recieve_len */ +/* *status_byte - status of the transaction when it was ended (success/error) */ +/* */ +/* Output: */ +/* BL_LILAC_RDD_OK */ +/* */ +/************************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_smart_card_command_params_read ( uint16_t *xo_send_length, + uint16_t *xo_receive_length, + uint8_t *xo_data_array, + uint8_t *status_byte, + uint32_t *xo_send_error_counter, + uint32_t *xo_recv_error_counter ); + + +/************************************************************************************/ +/* */ +/* Name: rdd_smart_card_status_get */ +/* */ +/* Title: Smart card */ +/* */ +/* Abstract: */ +/* This function reads status from smart card. */ +/* */ +/* Input: */ +/* none */ +/* */ +/* Output: */ +/* BL_LILAC_RDD_OK */ +/* */ +/************************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_smart_card_status_get ( uint8_t *xo_smart_card_status ); + + +/************************************************************************************/ +/* */ +/* Name: rdd_smart_card_task_start */ +/* */ +/* Title: Smart card */ +/* */ +/* Abstract: */ +/* This function send wakeup to smart card task */ +/* and starts it. */ +/* */ +/* Input: */ +/* none */ +/* */ +/* Output: */ +/* BL_LILAC_RDD_OK */ +/* */ +/************************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_smart_card_task_start ( void ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_critical_section_config */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - RDD lock mechanism */ +/* */ +/* Abstract: */ +/* */ +/* This function initializes pointers to critical section callback functions */ +/* */ +/* Input: */ +/* */ +/* xi_lock_function - pointer to critical section begin function */ +/* xi_unlock_function - pointer to critical section exit function */ +/* xi_lock_irq_function - pointer to critical section within IRQ begin */ +/* function */ +/* xi_unlock_irq_function - pointer to critical section exit within IRQ */ +/* function */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_critical_section_config ( BL_LILAC_RDD_LOCK_CRITICAL_SECTION_FP_DTE xi_lock_function, + BL_LILAC_RDD_UNLOCK_CRITICAL_SECTION_FP_DTE xi_unlock_function, + BL_LILAC_RDD_LOCK_CRITICAL_SECTION_FP_IRQ_DTE xi_lock_irq_function, + BL_LILAC_RDD_UNLOCK_CRITICAL_SECTION_FP_IRQ_DTE xi_unlock_irq_function ); + + + +/* INTERNAL COMMON FUNCTIONS */ + +static inline BL_LILAC_RDD_BRIDGE_PORT_DTE rdd_bridge_port_vector_to_bridge_port ( BL_LILAC_RDD_BRIDGE_PORT_VECTOR_DTE xi_bridge_port_vector ) +{ + BL_LILAC_RDD_BRIDGE_PORT_DTE bridge_port; + + switch ( xi_bridge_port_vector ) + { + case BL_LILAC_RDD_BRIDGE_PORT_VECTOR_PCI: + bridge_port = BL_LILAC_RDD_PCI_BRIDGE_PORT; + break; + + case BL_LILAC_RDD_BRIDGE_PORT_VECTOR_LAN0: + bridge_port = BL_LILAC_RDD_LAN0_BRIDGE_PORT; + break; + + case BL_LILAC_RDD_BRIDGE_PORT_VECTOR_LAN1: + bridge_port = BL_LILAC_RDD_LAN1_BRIDGE_PORT; + break; + + case BL_LILAC_RDD_BRIDGE_PORT_VECTOR_LAN2: + bridge_port = BL_LILAC_RDD_LAN2_BRIDGE_PORT; + break; + + case BL_LILAC_RDD_BRIDGE_PORT_VECTOR_LAN3: + bridge_port = BL_LILAC_RDD_LAN3_BRIDGE_PORT; + break; + + case BL_LILAC_RDD_BRIDGE_PORT_VECTOR_LAN4: + bridge_port = BL_LILAC_RDD_LAN4_BRIDGE_PORT; + break; + + default: + bridge_port = 0; + break; + } + + return ( bridge_port ); +} + + +static inline int32_t rdd_bridge_port_to_port_index ( BL_LILAC_RDD_BRIDGE_PORT_DTE xi_bridge_port, + BL_LILAC_RDD_SUBNET_ID_DTE xi_subnet_id ) +{ + /* upstream */ + if ( ( xi_bridge_port >= BL_LILAC_RDD_LAN0_BRIDGE_PORT ) && ( xi_bridge_port <= BL_LILAC_RDD_LAN4_BRIDGE_PORT ) ) + { + if ( xi_subnet_id == 0 ) + { + return ( xi_bridge_port ); + } + } + /*also apply for G999.1 General configuration:*/ + else if ( xi_bridge_port == BL_LILAC_RDD_PCI_BRIDGE_PORT ) + { + return ( 0 ); + } + + /* downstream */ + else if ( BL_LILAC_RDD_IS_WAN_BRIDGE_PORT(xi_bridge_port) ) // DSL + { + if ( xi_subnet_id == 0 ) + { + return ( BL_LILAC_RDD_SUBNET_BRIDGE ); + } + } + else if ( xi_bridge_port == BL_LILAC_RDD_WAN_IPTV_BRIDGE_PORT ) + { + if ( xi_subnet_id == 0 ) + { + return ( BL_LILAC_RDD_SUBNET_BRIDGE_IPTV ); + } + } + else if ( xi_bridge_port == BL_LILAC_RDD_WAN_ROUTER_PORT ) + { + if ( xi_subnet_id == 0 ) + { + return ( BL_LILAC_RDD_SUBNET_FLOW_CACHE ); + } + } + + return ( -1 ); +} + + +static inline int32_t rdd_bridge_port_to_class_id ( BL_LILAC_RDD_BRIDGE_PORT_DTE xi_bridge_port ) +{ + switch ( xi_bridge_port ) + { + case BL_LILAC_RDD_WAN0_BRIDGE_PORT: // DSL + case BL_LILAC_RDD_WAN1_BRIDGE_PORT: // DSL + + return ( LILAC_RDD_IH_WAN_BRIDGE_LOW_CLASS ); + + case BL_LILAC_RDD_LAN0_BRIDGE_PORT: + + return ( LILAC_RDD_IH_LAN_EMAC0_CLASS ); + + case BL_LILAC_RDD_LAN1_BRIDGE_PORT: + + return ( LILAC_RDD_IH_LAN_EMAC1_CLASS ); + + case BL_LILAC_RDD_LAN2_BRIDGE_PORT: + + return ( LILAC_RDD_IH_LAN_EMAC2_CLASS ); + + case BL_LILAC_RDD_LAN3_BRIDGE_PORT: + + return ( LILAC_RDD_IH_LAN_EMAC3_CLASS ); + + case BL_LILAC_RDD_LAN4_BRIDGE_PORT: + + return ( LILAC_RDD_IH_LAN_EMAC4_CLASS ); + + case BL_LILAC_RDD_PCI_BRIDGE_PORT: + + return ( LILAC_RDD_IH_PCI_CLASS ); + + default: + + return ( 0 ); + } + + return ( 0 ); +} + + +#if !defined(FIRMWARE_INIT) +static inline int32_t rdd_bridge_port_to_bpm_src_port ( BL_LILAC_RDD_BRIDGE_PORT_DTE xi_bridge_port ) +{ + switch ( xi_bridge_port ) + { + case BL_LILAC_RDD_WAN0_BRIDGE_PORT: // DSL + case BL_LILAC_RDD_WAN1_BRIDGE_PORT: // DSL + + return ( DRV_BPM_SP_GPON ); + + case BL_LILAC_RDD_LAN0_BRIDGE_PORT: + + return ( DRV_BPM_SP_EMAC0 ); + + case BL_LILAC_RDD_LAN1_BRIDGE_PORT: + + return ( DRV_BPM_SP_EMAC1 ); + + case BL_LILAC_RDD_LAN2_BRIDGE_PORT: + + return ( DRV_BPM_SP_EMAC2 ); + + case BL_LILAC_RDD_LAN3_BRIDGE_PORT: + + return ( DRV_BPM_SP_EMAC3 ); + + case BL_LILAC_RDD_LAN4_BRIDGE_PORT: + + return ( DRV_BPM_SP_EMAC4 ); + + case BL_LILAC_RDD_PCI_BRIDGE_PORT: + + return ( DRV_BPM_SP_PCI0 ); + + default: + + return ( 0 ); + } + + return ( 0 ); +} +#endif + + +BL_LILAC_RDD_ERROR_DTE rdd_timer_task_config ( rdpa_traffic_dir xi_direction, + uint16_t xi_task_period_in_usec, + uint16_t xi_firmware_routine_address_id ); + + +static inline uint32_t rdd_budget_to_alloc_unit ( uint32_t budget, uint32_t period, uint32_t exponent ) +{ + return ( ( ( budget + ( ( 1000000 / period ) / 2 ) ) / ( 1000000 / period ) ) >> exponent ); +} + + +static inline uint32_t rdd_get_exponent ( uint32_t value, + uint32_t mantissa_len, + uint32_t exponent_list_len, + uint32_t *exponent_list ) +{ + uint32_t i; + + for ( i = exponent_list_len - 1; i > 0; i-- ) + { + if ( value > ( ( ( 1 << mantissa_len ) - 1 ) << exponent_list[ i - 1 ] ) ) + { + return ( i ); + } + } + + return ( 0 ); +} + + +BL_LILAC_RDD_ERROR_DTE f_rdd_cpu_tx_send_message ( LILAC_RDD_CPU_TX_MESSAGE_TYPE xi_msg_type, + LILAC_RDD_RUNNER_INDEX_DTS xi_runner_index, + uint32_t xi_sram_base, + uint32_t xi_parameter_1, + uint32_t xi_parameter_2, + uint32_t xi_parameter_3, + BL_LILAC_RDD_CPU_WAIT_DTE xi_wait ); + +#define rdd_cpu_tx_send_message f_rdd_cpu_tx_send_message + + +#endif /* _BL_LILAC_DRV_RUNNER_COMMON_H */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdd_cpu.c b/arch/arm/mach-bcmbca/rdp/rdd_cpu.c new file mode 100755 index 0000000000..eb1813cac0 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_cpu.c @@ -0,0 +1,291 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#include "rdd.h" + +#define _RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 + +/******************************************************************************/ +/* */ +/* Global Variables */ +/* */ +/******************************************************************************/ + +#if !defined(FIRMWARE_INIT) +static uint8_t g_dummy_read; +#endif +extern uint8_t g_broadcom_switch_mode; +extern BL_LILAC_RDD_BRIDGE_PORT_DTE g_broadcom_switch_physical_port; + +extern RDD_WAN_TX_POINTERS_TABLE_DTS *wan_tx_pointers_table_ptr; +extern rdpa_bpm_buffer_size_t g_bpm_buffer_size; + +BL_LILAC_RDD_ERROR_DTE rdd_cpu_rx_initialize ( void ) +{ + RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS *cpu_reason_to_cpu_rx_queue_table_ptr; + RDD_CPU_REASON_TO_CPU_RX_QUEUE_ENTRY_DTS *cpu_reason_to_cpu_rx_queue_entry_ptr; + RDD_DS_CPU_REASON_TO_METER_TABLE_DTS *cpu_reason_to_meter_table_ptr; + RDD_CPU_REASON_TO_METER_ENTRY_DTS *cpu_reason_to_meter_entry_ptr; + uint16_t *cpu_rx_ingress_queue_ptr; + uint8_t cpu_reason; + uint8_t cpu_queue; + + cpu_rx_ingress_queue_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_ADDRESS ); + + MWRITE_16( cpu_rx_ingress_queue_ptr, DS_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS ); + + cpu_rx_ingress_queue_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_FAST_INGRESS_QUEUE_PTR_ADDRESS ); + + MWRITE_16( cpu_rx_ingress_queue_ptr, US_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS ); + + + cpu_rx_ingress_queue_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_ADDRESS ); + + MWRITE_16( cpu_rx_ingress_queue_ptr, DS_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS ); + + cpu_rx_ingress_queue_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_PICO_INGRESS_QUEUE_PTR_ADDRESS ); + + MWRITE_16( cpu_rx_ingress_queue_ptr, US_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS ); + + cpu_reason_to_cpu_rx_queue_table_ptr = ( RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS ); + + /* set cpu reason_direct_flow to queue 0 for backward compatibility */ + cpu_reason = rdpa_cpu_rx_reason_direct_flow; + cpu_queue = BL_LILAC_RDD_CPU_RX_QUEUE_0; + cpu_reason_to_cpu_rx_queue_entry_ptr = &( cpu_reason_to_cpu_rx_queue_table_ptr->entry[ 0 ] [ cpu_reason ] ); + RDD_CPU_REASON_TO_CPU_RX_QUEUE_ENTRY_CPU_RX_QUEUE_WRITE ( cpu_queue, cpu_reason_to_cpu_rx_queue_entry_ptr ); + cpu_reason_to_cpu_rx_queue_entry_ptr = &( cpu_reason_to_cpu_rx_queue_table_ptr->entry[ 1 ] [ cpu_reason ] ); + RDD_CPU_REASON_TO_CPU_RX_QUEUE_ENTRY_CPU_RX_QUEUE_WRITE ( cpu_queue, cpu_reason_to_cpu_rx_queue_entry_ptr ); + + for ( cpu_reason = rdpa_cpu_rx_reason_oam; cpu_reason < rdpa_cpu_reason__num_of; cpu_reason++ ) + { + cpu_reason_to_meter_table_ptr = ( RDD_DS_CPU_REASON_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_REASON_TO_METER_TABLE_ADDRESS ); + + cpu_reason_to_meter_entry_ptr = &( cpu_reason_to_meter_table_ptr->entry[ cpu_reason ] ); + + RDD_CPU_REASON_TO_METER_ENTRY_CPU_METER_WRITE ( BL_LILAC_RDD_CPU_METER_DISABLE, cpu_reason_to_meter_entry_ptr ); + + cpu_reason_to_meter_table_ptr = ( RDD_DS_CPU_REASON_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_REASON_TO_METER_TABLE_ADDRESS ); + + cpu_reason_to_meter_entry_ptr = &( cpu_reason_to_meter_table_ptr->entry[ cpu_reason ] ); + + RDD_CPU_REASON_TO_METER_ENTRY_CPU_METER_WRITE ( BL_LILAC_RDD_CPU_METER_DISABLE, cpu_reason_to_meter_entry_ptr ); + } + + return ( BL_LILAC_RDD_OK ); +} + +BL_LILAC_RDD_ERROR_DTE rdd_cpu_tx_initialize ( void ) +{ + uint32_t *ih_header_descriptor_ptr; + uint32_t ih_header_descriptor[2]; + uint32_t *ih_buffer_bbh_ptr; + int i; + + ih_header_descriptor_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS ); + + ih_header_descriptor[ 0 ] = ( LILAC_RDD_ON << 5 ) + ( CPU_TX_FAST_THREAD_NUMBER << 6 ); + + ih_header_descriptor[ 1 ] = WAN_SRC_PORT + ( LILAC_RDD_IH_HEADER_LENGTH << 5 ) + ( LILAC_RDD_RUNNER_A_IH_BUFFER << 20 ); + + MWRITE_32( ( ( uint8_t * )ih_header_descriptor_ptr + 0 ), ih_header_descriptor[ 0 ] ); + MWRITE_32( ( ( uint8_t * )ih_header_descriptor_ptr + 4 ), ih_header_descriptor[ 1 ] ); + + ih_header_descriptor_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS ); + for (i = 0; i < 3; i++) + { + ih_header_descriptor[ 0 ] = LILAC_RDD_ON << 5; + + ih_header_descriptor[ 1 ] = ( LILAC_RDD_IH_HEADER_LENGTH << 5 ) + ( LILAC_RDD_RUNNER_B_IH_BUFFER << 20 ); + + MWRITE_32( ( ( uint8_t * )ih_header_descriptor_ptr + 0 ), ih_header_descriptor[ 0 ] ); + MWRITE_32( ( ( uint8_t * )ih_header_descriptor_ptr + 4 ), ih_header_descriptor[ 1 ] ); + ih_header_descriptor_ptr += 2; + } + + ih_buffer_bbh_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + IH_BUFFER_BBH_POINTER_ADDRESS ); + + MWRITE_32( ih_buffer_bbh_ptr, ( ( BBH_PERIPHERAL_IH << 16 ) | ( LILAC_RDD_IH_BUFFER_BBH_ADDRESS + LILAC_RDD_RUNNER_B_IH_BUFFER_BBH_OFFSET ) ) ); + + g_cpu_tx_queue_write_ptr[ FAST_RUNNER_A ] = CPU_TX_FAST_QUEUE_ADDRESS; + g_cpu_tx_queue_write_ptr[ FAST_RUNNER_B ] = CPU_TX_FAST_QUEUE_ADDRESS; + g_cpu_tx_queue_write_ptr[ PICO_RUNNER_A ] = CPU_TX_PICO_QUEUE_ADDRESS; + g_cpu_tx_queue_write_ptr[ PICO_RUNNER_B ] = CPU_TX_PICO_QUEUE_ADDRESS; + + g_cpu_tx_queue_abs_data_ptr_write_ptr[ FAST_RUNNER_A ] = DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS; + g_cpu_tx_queue_abs_data_ptr_write_ptr[ FAST_RUNNER_B ] = US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS; + g_cpu_tx_queue_abs_data_ptr_write_ptr[ PICO_RUNNER_A ] = DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS; + g_cpu_tx_queue_abs_data_ptr_write_ptr[ PICO_RUNNER_B ] = US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS; + + + return ( BL_LILAC_RDD_OK ); +} + +BL_LILAC_RDD_ERROR_DTE _rdd_cpu_reason_to_cpu_rx_queue ( rdpa_cpu_reason xi_cpu_reason, + BL_LILAC_RDD_CPU_RX_QUEUE_DTE xi_queue_id, + rdpa_traffic_dir xi_direction, + uint32_t xi_table_index ) +{ + RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS *cpu_reason_to_cpu_rx_queue_table_ptr; + RDD_CPU_REASON_TO_CPU_RX_QUEUE_ENTRY_DTS *cpu_reason_to_cpu_rx_queue_entry_ptr; + uint8_t cpu_queue; + + /* check the validity of the input parameters - CPU-RX reason */ + if ( xi_cpu_reason >= _RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE ) + { + return ( BL_LILAC_RDD_ERROR_CPU_RX_REASON_ILLEGAL ); + } + + if ( (xi_direction == rdpa_dir_ds && xi_table_index > CPU_REASON_WAN1_TABLE_INDEX) || + (xi_direction == rdpa_dir_us && xi_table_index > CPU_REASON_LAN_TABLE_INDEX) ) + { + return ( BL_LILAC_RDD_ERROR_CPU_RX_REASON_ILLEGAL ); + } + + /* check the validity of the input parameters - CPU-RX queue-id */ + if ( xi_queue_id >= CPU_RX_NUMBER_OF_QUEUES ) + { + return ( BL_LILAC_RDD_ERROR_CPU_RX_QUEUE_ILLEGAL ); + } + + if ( xi_direction == rdpa_dir_ds ) + { + cpu_reason_to_cpu_rx_queue_table_ptr = ( RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS ); + } + else + { + cpu_reason_to_cpu_rx_queue_table_ptr = ( RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS - sizeof ( RUNNER_COMMON ) ); + } + + cpu_reason_to_cpu_rx_queue_entry_ptr = &( cpu_reason_to_cpu_rx_queue_table_ptr->entry[xi_table_index] [ xi_cpu_reason ] ); + + cpu_queue = xi_queue_id; + + RDD_CPU_REASON_TO_CPU_RX_QUEUE_ENTRY_CPU_RX_QUEUE_WRITE ( cpu_queue, cpu_reason_to_cpu_rx_queue_entry_ptr ); + + return ( BL_LILAC_RDD_OK ); +} + +BL_LILAC_RDD_ERROR_DTE rdd_cpu_reason_to_cpu_rx_queue ( rdpa_cpu_reason xi_cpu_reason, + BL_LILAC_RDD_CPU_RX_QUEUE_DTE xi_queue_id, + rdpa_traffic_dir xi_direction, + uint32_t xi_table_index ) +{ + return _rdd_cpu_reason_to_cpu_rx_queue(xi_cpu_reason, xi_queue_id, xi_direction, xi_table_index); +} + +BL_LILAC_RDD_ERROR_DTE rdd_cpu_tx_write_eth_packet ( uint8_t *xi_packet_ptr, + uint32_t xi_packet_size, + BL_LILAC_RDD_EMAC_ID_DTE xi_emac_id, + uint8_t xi_wifi_ssid, + BL_LILAC_RDD_QUEUE_ID_DTE xi_queue_id ) +{ +#if !defined(FIRMWARE_INIT) + RUNNER_REGS_CFG_CPU_WAKEUP runner_cpu_wakeup_register; + uint8_t *packet_ddr_ptr; +#endif + RDD_CPU_TX_DESCRIPTOR_DTS *cpu_tx_descriptor_ptr; + uint32_t cpu_tx_descriptor; + uint32_t bpm_buffer_number; + uint8_t cpu_tx_descriptor_valid; + unsigned long flags; + + bdmf_fastlock_lock_irq ( &int_lock_irq, flags ); + + cpu_tx_descriptor_ptr = ( RDD_CPU_TX_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + g_cpu_tx_queue_write_ptr[ PICO_RUNNER_A ] ); + + /* if the descriptor is valid then the CPU-TX queue is full and the packet should be dropped */ + RDD_CPU_TX_DESCRIPTOR_CORE_VALID_READ ( cpu_tx_descriptor_valid, cpu_tx_descriptor_ptr ); + + if ( cpu_tx_descriptor_valid ) + { + bdmf_fastlock_unlock_irq ( &int_lock_irq, flags ); + return ( BL_LILAC_RDD_ERROR_CPU_TX_QUEUE_FULL ); + } + +#if !defined(FIRMWARE_INIT) + if ( fi_bl_drv_bpm_req_buffer ( DRV_BPM_SP_SPARE_0, ( uint32_t * )&bpm_buffer_number ) != DRV_BPM_ERROR_NO_ERROR ) + { + bdmf_fastlock_unlock_irq ( &int_lock_irq, flags ); + return ( BL_LILAC_RDD_ERROR_BPM_ALLOC_FAIL ); + } + + packet_ddr_ptr = g_runner_ddr_base_addr + bpm_buffer_number * g_bpm_buffer_size + g_ddr_headroom_size + LILAC_RDD_PACKET_DDR_OFFSET; + + /* copy the packet from the supplied DDR buffer */ + MWRITE_BLK_8 ( packet_ddr_ptr, xi_packet_ptr, xi_packet_size ); + + g_dummy_read = *( packet_ddr_ptr + xi_packet_size - 1 ); +#else + bpm_buffer_number = 0; +#endif + + /* write CPU-TX descriptor and validate it */ + cpu_tx_descriptor = 0; + RDD_CPU_TX_DESCRIPTOR_CORE_PAYLOAD_OFFSET_L_WRITE(cpu_tx_descriptor, (g_ddr_headroom_size + LILAC_RDD_PACKET_DDR_OFFSET) / 2); + + RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_L_WRITE(cpu_tx_descriptor, bpm_buffer_number); + /* !!! assuming this function is only used by 63138/63148 CFE, we hardcode 1 to lag_port_pti */ + RDD_CPU_TX_DESCRIPTOR_CORE_LAG_PORT_PTI_L_WRITE(cpu_tx_descriptor, 1); + + MWRITE_32((uint8_t *)cpu_tx_descriptor_ptr + 4, cpu_tx_descriptor); + + cpu_tx_descriptor = 0; + RDD_CPU_TX_DESCRIPTOR_CORE_PACKET_LENGTH_L_WRITE(cpu_tx_descriptor, xi_packet_size + 4); + RDD_CPU_TX_DESCRIPTOR_CORE_SRC_BRIDGE_PORT_L_WRITE(cpu_tx_descriptor, SPARE_0_SRC_PORT); + RDD_CPU_TX_DESCRIPTOR_CORE_TX_QUEUE_L_WRITE(cpu_tx_descriptor, xi_queue_id); + RDD_CPU_TX_DESCRIPTOR_CORE_EMAC_L_WRITE(cpu_tx_descriptor, xi_emac_id); + RDD_CPU_TX_DESCRIPTOR_CORE_COMMAND_L_WRITE(cpu_tx_descriptor, LILAC_RDD_CPU_TX_COMMAND_EGRESS_PORT_PACKET); + RDD_CPU_TX_DESCRIPTOR_CORE_VALID_L_WRITE(cpu_tx_descriptor, LILAC_RDD_TRUE); + + MWRITE_32((uint8_t *)cpu_tx_descriptor_ptr, cpu_tx_descriptor); + + /* increment and wrap around if needed the write pointer of the CPU-TX queue */ + g_cpu_tx_queue_write_ptr[ PICO_RUNNER_A ] += sizeof(RDD_CPU_TX_DESCRIPTOR_DTS); + g_cpu_tx_queue_write_ptr[ PICO_RUNNER_A ] &= LILAC_RDD_CPU_TX_QUEUE_SIZE_MASK; + +#if !defined(FIRMWARE_INIT) + /* send asynchronous wakeup command to the CPU-TX thread in the Runner */ + runner_cpu_wakeup_register.req_trgt = CPU_TX_PICO_THREAD_NUMBER >> 5; + runner_cpu_wakeup_register.thread_num = CPU_TX_PICO_THREAD_NUMBER & 0x1f; + runner_cpu_wakeup_register.urgent_req = LILAC_RDD_FALSE; + + RUNNER_REGS_0_CFG_CPU_WAKEUP_WRITE ( runner_cpu_wakeup_register ); +#endif + + bdmf_fastlock_unlock_irq ( &int_lock_irq, flags ); + return ( BL_LILAC_RDD_OK ); +} + +BL_LILAC_RDD_ERROR_DTE rdd_ring_init ( uint32_t xi_ring_id, + uint8_t unused0, + rdd_phys_addr_t xi_ring_address, + uint32_t xi_number_of_entries, + uint32_t xi_size_of_entry, + uint32_t xi_interrupt_id, + uint32_t unused1, + bdmf_phys_addr_t unused2, + uint8_t unused3 + ) +{ + RDD_RING_DESCRIPTORS_TABLE_DTS *ring_table_ptr; + RDD_RING_DESCRIPTOR_DTS *ring_descriptor_ptr; + + + ring_table_ptr = ( RDD_RING_DESCRIPTORS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RING_DESCRIPTORS_TABLE_ADDRESS ); + + ring_descriptor_ptr = &( ring_table_ptr->entry[ xi_ring_id ] ); + + RDD_RING_DESCRIPTOR_ENTRIES_COUNTER_WRITE ( 0, ring_descriptor_ptr ); + RDD_RING_DESCRIPTOR_SIZE_OF_ENTRY_WRITE ( xi_size_of_entry, ring_descriptor_ptr ); + RDD_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_WRITE ( xi_number_of_entries, ring_descriptor_ptr ); + RDD_RING_DESCRIPTOR_INTERRUPT_ID_WRITE ( 1 << xi_interrupt_id, ring_descriptor_ptr ); + RDD_RING_DESCRIPTOR_RING_POINTER_WRITE ( xi_ring_address, ring_descriptor_ptr ); + + return ( BL_LILAC_RDD_OK ); +} diff --git a/arch/arm/mach-bcmbca/rdp/rdd_cpu.h b/arch/arm/mach-bcmbca/rdp/rdd_cpu.h new file mode 100755 index 0000000000..e0c9a4b4bb --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_cpu.h @@ -0,0 +1,244 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ + +/* + +*/ + +#ifndef _BL_LILAC_DRV_RUNNER_CPU_H +#define _BL_LILAC_DRV_RUNNER_CPU_H + +#include "rdpa_cpu.h" +#include "bdmf_errno.h" + +extern uint8_t *g_runner_ddr_base_addr; +extern uint32_t g_ddr_headroom_size; +extern uint32_t g_cpu_tx_queue_write_ptr[ 4 ]; +extern uint32_t g_cpu_tx_queue_abs_data_ptr_write_ptr[ 4 ]; +extern uint32_t g_cpu_tx_abs_packet_limit; + + +extern uint16_t *g_free_skb_indexes_fifo_table; +extern uint8_t **g_cpu_tx_skb_pointers_reference_array; +extern bdmf_fastlock int_lock_irq; + +/* Name: */ +/* */ +/* rdd_cpu_reason_to_cpu_rx_queue */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - CPU interface. */ +/* */ +/* Abstract: */ +/* */ +/* cpu trap reason to cpu rx queue conversion. */ +/* */ +/* Input: */ +/* */ +/* xi_cpu_reason - the reason for sending the packet to the CPU */ +/* xi_queue_id - CPU-RX queue index (0-7) */ +/* xi_direction - upstream or downstream */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* BL_LILAC_RDD_ERROR_CPU_RX_QUEUE_ILLEGAL - CPU-RX queue is illegal. */ +/* BL_LILAC_RDD_ERROR_CPU_RX_REASON_ILLEGAL - CPU-RX reason is illegal. */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_cpu_reason_to_cpu_rx_queue ( rdpa_cpu_reason xi_cpu_reason, + BL_LILAC_RDD_CPU_RX_QUEUE_DTE xi_queue_id, + rdpa_traffic_dir xi_direction, + uint32_t xi_table_index ); + +/******************************************************************************/ +/* */ +/* */ +/* Name: */ +/* */ +/* rdd_l4_dst_port_read */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - CPU interface. */ +/* */ +/* Abstract: */ +/* */ +/* read entry from l4 dst port to cpu trap reason mapping table. */ +/* */ +/* Input: */ +/* */ +/* xi_index - index of entry want to read */ +/* xo_is_static - static or dynamic */ +/* xo_is_tcp - tcp or udp */ +/* xo_l4_dst_port - dst port */ +/* xo_reason - the cpu trap reason */ +/* xo_refcnt - reference count */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_l4_dst_port_read ( uint32_t xi_index, bdmf_boolean *xo_is_static, bdmf_boolean *xo_is_tcp, uint16_t *xo_l4_dst_port, rdpa_cpu_reason *xo_reason, uint8_t *xo_refcnt ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_l4_dst_port_delete */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - CPU interface. */ +/* */ +/* Abstract: */ +/* */ +/* delete entry from l4 dst port to cpu trap reason mapping table. */ +/* */ +/* Input: */ +/* */ +/* xi_index - index of entry want to read */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_l4_dst_port_delete ( uint32_t xi_index ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_l4_dst_port_find */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - CPU interface. */ +/* */ +/* Abstract: */ +/* */ +/* find entry in l4 dst port to cpu trap reason mapping table. */ +/* */ +/* Input: */ +/* */ +/* xi_is_tcp - tcp or udp */ +/* xi_l4_dst_port - dst port */ +/* xo_index - index of the new add entry */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_l4_dst_port_find ( bdmf_boolean xi_is_tcp, uint16_t xi_l4_dst_port, uint32_t *xo_index ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_cpu_tx_write_eth_packet */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - CPU interface. */ +/* */ +/* Abstract: */ +/* */ +/* This packet is directed to the EMAC TX queue. */ +/* check if the CPU TX queue is not full, if not then a DDR buffer is */ +/* allocated from the BPM, then the packet data is copied to the allocated */ +/* buffer and a new packet descriptor is written to the CPU TX queue. */ +/* */ +/* Input: */ +/* */ +/* xi_packet_ptr - pointer to a DDR buffer that hold the packet data */ +/* xi_packet_size - packet size in bytes */ +/* xi_emac_id - EMAC port index (ETH0 - ETH4, PCI) */ +/* xi_wifi_ssid - service set id for PCI with wifi multiple ssid support */ +/* xi_queue_id - ETH TX queue index */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* BL_LILAC_RDD_ERROR_CPU_TX_NOT_ALLOWED - the runner is not enabled. */ +/* BL_LILAC_RDD_ERROR_CPU_TX_QUEUE_FULL - the CPU TX has no place for new */ +/* packets. */ +/* BL_LILAC_RDD_ERROR_BPM_ALLOC_FAIL - unable to allocate a DDR buffer to */ +/* from the BPM. */ +/* . */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_cpu_tx_write_eth_packet ( uint8_t *xi_packet_ptr, + uint32_t xi_packet_size, + BL_LILAC_RDD_EMAC_ID_DTE xi_emac_id, + uint8_t xi_wifi_ssid, + BL_LILAC_RDD_QUEUE_ID_DTE xi_queue_id ); + +/* local */ +BL_LILAC_RDD_ERROR_DTE rdd_cpu_rx_initialize ( void ); + +BL_LILAC_RDD_ERROR_DTE rdd_cpu_tx_initialize ( void ); + +BL_LILAC_RDD_ERROR_DTE rdd_spdsvc_initialize( void ); + +BL_LILAC_RDD_ERROR_DTE rdd_spdsvc_get_tx_result( uint8_t *xo_running_p, + uint32_t *xo_tx_packets_p, + uint32_t *xo_tx_discards_p ); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_ring_init */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - CPU interface. */ +/* */ +/* Abstract: */ +/* */ +/* configures CPU-RX ring, set the number packets that are pending to be */ +/* read by the CPU for that queue, and the interrupt that will be set */ +/* during packet enterance to the queue, the default interrupt is the queue */ +/* number. */ +/* */ +/* Input: */ +/* */ +/* xi_ring_id - CPU-RX ring index (0-7) */ +/* xi_number_of_entries - queue maximum size in packets. */ +/* xi_ring_address - address of allocated ring */ +/* xi_size_of_entry - size of cpu-rx descriptor */ +/* xi_interrupt_id - interrupt id to set */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_ring_init ( uint32_t xi_ring_id, + uint8_t unused0, + rdd_phys_addr_t xi_ring_address, + uint32_t xi_number_of_entries, + uint32_t xi_size_of_entry, + uint32_t xi_interrupt_id, + uint32_t unused1, + bdmf_phys_addr_t unused2, + uint8_t unused3 + ); + +#endif /* _BL_LILAC_DRV_RUNNER_CPU_H */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdd_data_structures.h b/arch/arm/mach-bcmbca/rdp/rdd_data_structures.h new file mode 100755 index 0000000000..67e3eeb5e8 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_data_structures.h @@ -0,0 +1,460 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef _BL_LILAC_DRV_RUNNER_DATA_STRUCTURES_H +#define _BL_LILAC_DRV_RUNNER_DATA_STRUCTURES_H + + +/********************************** Defines ***********************************/ + +/* Runner Device Driver version */ +#define LILAC_RDD_RELEASE ( 0x04 ) +#define LILAC_RDD_VERSION ( 0x10 ) +#define LILAC_RDD_PATCH ( 0x02 ) +#define LILAC_RDD_REVISION ( 0x01 ) + +#define RDP_CFG_BUF_SIZE_2K 0 +#define RDP_CFG_BUF_SIZE_4K 1 +#define RDP_CFG_BUF_SIZE_16K 2 +#define RDP_CFG_BUF_SIZE_2_5K 7 + + +#if defined(WL4908) && defined(CONFIG_BCM_JUMBO_FRAME) +#define LILAC_RDD_RUNNER_PACKET_BUFFER_SIZE 512 /* FPM token size */ +#elif defined(WL4908) +#define LILAC_RDD_RUNNER_PACKET_BUFFER_SIZE 256 /* FPM token size */ +#elif defined(DSL_63138) && defined(CONFIG_BCM_JUMBO_FRAME) +#define LILAC_RDD_RUNNER_PACKET_BUFFER_SIZE 2560 +#define RDP_CFG_BUF_SIZE_VALUE RDP_CFG_BUF_SIZE_2_5K +#elif defined(DSL_63148) && defined(CONFIG_BCM_JUMBO_FRAME) +#define LILAC_RDD_RUNNER_PACKET_BUFFER_SIZE 4096 +#define RDP_CFG_BUF_SIZE_VALUE RDP_CFG_BUF_SIZE_4K +#else +#define LILAC_RDD_RUNNER_PACKET_BUFFER_SIZE 2048 +#define RDP_CFG_BUF_SIZE_VALUE RDP_CFG_BUF_SIZE_2K +#endif +#define RDD_SIMULATION_PACKET_BUFFER_SIZE 2048 +#define LILAC_RDD_RUNNER_EXTENSION_BUFFER_SIZE 512 +#define LILAC_RDD_PACKET_DDR_OFFSET 18 +#define LILAC_RDD_RUNNER_PSRAM_BUFFER_SIZE 128 +#define LILAC_RDD_RUNNER_EXTENSION_PACKET_BUFFER_SIZE 64 +#define LILAC_RDD_RUNNER_EXTENSION_PACKET_HEADER_SIZE 32 + +/* RX - TX */ +#define LILAC_RDD_RATE_CONTROLLERS_BUDGET_SET_SIZE 16 +#define RDD_EMAC_NUMBER_OF_QUEUES 8 +#define LILAC_RDD_EMAC_EGRESS_COUNTER_OFFSET 0 +#define LILAC_RDD_EMAC_RATE_SHAPER_GROUPS_STATUS_OFFSET 8 +#define RDD_RATE_CONTROL_EXPONENT0 1 +#define RDD_RATE_CONTROL_EXPONENT1 4 +#define RDD_RATE_CONTROL_EXPONENT2 7 +#define RDD_RATE_CONTROL_EXPONENT_NUM 3 + +/* CPU-RX table & queues */ + +/* CPU-TX table */ +#define LILAC_RDD_CPU_TX_QUEUE_SIZE 16 +#define LILAC_RDD_CPU_TX_QUEUE_SIZE_MASK 0xFF7F +#define LILAC_RDD_CPU_TX_DESCRIPTOR_NUMBER_MASK 0x00F8 +#define LILAC_RDD_CPU_TX_ABS_DATA_PTR_DESCRIPTOR_SIZE 4 +#define LILAC_RDD_CPU_TX_ABS_DATA_PTR_QUEUE_SIZE 16 +#define LILAC_RDD_CPU_TX_ABS_DATA_PTR_QUEUE_SIZE_MASK 0xFFBF +#define LILAC_RDD_CPU_TX_COMMAND_EGRESS_PORT_PACKET 0 +#define LILAC_RDD_CPU_TX_COMMAND_BRIDGE_PACKET 1 +#define LILAC_RDD_CPU_TX_COMMAND_INTERWORKING_PACKET 2 +#define LILAC_RDD_CPU_TX_COMMAND_ABSOLUTE_ADDRESS_PACKET 3 +#define LILAC_RDD_CPU_TX_COMMAND_SPDSVC_PACKET 4 +#define LILAC_RDD_CPU_TX_COMMAND_MESSAGE 7 + +/* Bridging */ +#define LILAC_RDD_NUMBER_OF_BRIDGE_PORTS 15 +#define LILAC_RDD_FLOW_CLASSIFICATION_ENTRY_STOP 0xFFFF +#define LILAC_RDD_MAX_PBITS 7 +#define LILAC_RDD_NUMBER_OF_ETHER_TYPE_FILTERS 12 + +/* Ingress Classification */ +#define RDD_INGRESS_CLASSIFICATION_SEARCH_HOP BL_LILAC_RDD_MAC_TABLE_MAX_HOP_4 +#define RDD_INGRESS_CLASSIFICATION_SEARCH_DEPTH (1 << RDD_INGRESS_CLASSIFICATION_SEARCH_HOP) + +/* Ingress Handler */ +#define LILAC_RDD_IH_HEADER_LENGTH 110 +#define LILAC_RDD_IH_BUFFER_BBH_ADDRESS 0x8000 +#define LILAC_RDD_RUNNER_A_IH_BUFFER 14 +#define LILAC_RDD_RUNNER_B_IH_BUFFER 15 +#define LILAC_RDD_RUNNER_A_IH_BUFFER_BBH_OFFSET ( ( LILAC_RDD_RUNNER_A_IH_BUFFER * 128 + LILAC_RDD_PACKET_DDR_OFFSET ) / 8 ) +#define LILAC_RDD_RUNNER_B_IH_BUFFER_BBH_OFFSET ( ( LILAC_RDD_RUNNER_B_IH_BUFFER * 128 + LILAC_RDD_PACKET_DDR_OFFSET ) / 8 ) +#define LILAC_RDD_IH_HEADER_DESCRIPTOR_BBH_ADDRESS 0x0 +#define INVALID_BPM_BUFFER 0xFFFF + +#define LILAC_RDD_IH_PCI_CLASS 2 +#define LILAC_RDD_IH_WAN_BRIDGE_LOW_CLASS 9 +#define LILAC_RDD_IH_LAN_EMAC0_CLASS 10 +#define LILAC_RDD_IH_LAN_EMAC1_CLASS 11 +#define LILAC_RDD_IH_LAN_EMAC2_CLASS 12 +#define LILAC_RDD_IH_LAN_EMAC3_CLASS 13 +#define LILAC_RDD_IH_LAN_EMAC4_CLASS 14 + +/* MAC Table */ +#define LILAC_RDD_MAC_CONTEXT_MULTICAST 0x1 +#define LILAC_RDD_MAC_CONTEXT_ENTRY_TYPE_MASK ( 1 << 6 ) + +/* Router Tables */ +#define LILAC_RDD_NUMBER_OF_SUBNETS 3 + +#define LILAC_RDD_NUMBER_OF_TIMER_TASKS 8 +#define LILAC_RDD_CPU_RX_METER_TIMER_PERIOD 10000 + +/* VLAN & PBITs actions */ +#define LILAC_RDD_VLAN_TYPES 4 +#define LILAC_RDD_VLAN_TYPE_UNTAGGED 0 +#define LILAC_RDD_VLAN_TYPE_SINGLE 1 +#define LILAC_RDD_VLAN_TYPE_DOUBLE 2 +#define LILAC_RDD_VLAN_TYPE_PRIORITY 3 +#define LILAC_RDD_VLAN_COMMAND_SKIP 128 + +/* VLAN switching */ +#define LILAC_RDD_LAN_VID_SKIP_VALUE 0x8000 +#define LILAC_RDD_LAN_VID_STOP_VALUE 0xFFFF + +/* Firewall */ +#define LILAC_RDD_FIREWALL_RULES_MASK_MAX_LENGTH 32 + +/* PCI */ +#define LILAC_RDD_PCI_TX_NUMBER_OF_FIFOS 4 +#define LILAC_RDD_PCI_TX_FIFO_SIZE 8 + +/* CRC */ +#define RDD_CRC_TYPE_16 0 +#define RDD_CRC_TYPE_32 1 + +/* GPIO */ +#define RDD_GPIO_IO_ADDRESS 0x148 + +/* -Etc- */ +#define LILAC_RDD_TRUE 1 +#define LILAC_RDD_FALSE 0 +#define LILAC_RDD_ON 1 +#define LILAC_RDD_OFF 0 + +/* CPU TX */ +#define LILAC_RDD_CPU_TX_SKB_INDEX_OWNERSHIP_BIT_MASK 0x8000 +#define LILAC_RDD_CPU_TX_SKB_INDEX_MASK 0x3FFF +#define LILAC_RDD_CPU_TX_SKB_LIMIT_MIN 256 +#define LILAC_RDD_CPU_TX_SKB_LIMIT_MAX 16384 +#define LILAC_RDD_CPU_TX_SKB_LIMIT_MULTIPLICATION 8 + +#define RDD_CLEAR_REGISTER( v ) ( *( ( uint32_t *) v ) = 0 ) + +#define ADDRESS_OF(runner, task_name) runner##_##task_name + +#define ROUND_UP_TO_BITS(_val, _bit) (((_val) + (1 << _bit) - 1) & ~((1 << _bit) - 1)) +#define ROUND_UP_MB(_n) ROUND_UP_TO_BITS(_n, 20ul) + +#if defined(WL4908) +#define RDP_NATC_CONTEXT_TABLE_SIZE (sizeof(RDD_NATC_CONTEXT_TABLE_DTS)) +#define RDP_NATC_CONTEXT_TABLE_ADDR (NATC_CONTEXT_TABLE_ADDRESS) + +#define RDP_CONTEXT_CONTINUATION_TABLE_SIZE (sizeof(RDD_CONTEXT_CONTINUATION_TABLE_DTS)) +#define RDP_CONTEXT_CONTINUATION_TABLE_ADDR (RDP_NATC_CONTEXT_TABLE_ADDR + ROUND_UP_TO_BITS(RDP_NATC_CONTEXT_TABLE_SIZE, 21)) + +#define RDP_NATC_KEY_TABLE_SIZE (sizeof(RDD_NAT_CACHE_TABLE_DTS) + sizeof(RDD_NAT_CACHE_EXTENSION_TABLE_DTS)) +#define RDP_NATC_KEY_TABLE_ADDR (RDP_CONTEXT_CONTINUATION_TABLE_ADDR + ROUND_UP_MB(RDP_CONTEXT_CONTINUATION_TABLE_SIZE)) + +#define RDP_DDR_DATA_STRUCTURES_SIZE (RDP_NATC_KEY_TABLE_ADDR + ROUND_UP_MB(RDP_NATC_KEY_TABLE_SIZE)) + +#ifdef CONFIG_BCM_RDPA_MCAST +#define RDP_DDR_MC_HEADER_SIZE 0x2000000 +#else +#define RDP_DDR_MC_HEADER_SIZE 0 +#endif +#else // if defined(WL4908) else DSL_63138 +#define RDP_DDR_DATA_STRUCTURES_SIZE (sizeof(RDD_CONNECTION_TABLE_DTS) * 2 + ROUND_UP_MB(sizeof(RDD_CONTEXT_TABLE_DTS))) +#endif + +#if !defined(FIRMWARE_INIT) +/* DDR offsets */ +#define DsConnectionTableBase ( g_runner_tables_ptr + DS_CONNECTION_TABLE_ADDRESS ) +#define UsConnectionTableBase ( g_runner_tables_ptr + US_CONNECTION_TABLE_ADDRESS ) +#endif + +/******************************* Data structures ******************************/ + +#define LILAC_RDD_FIELD_SHIFT( ls_bit_number, field_width, write_value ) ( ( write_value & ( ( 1 << (field_width) ) - 1 ) ) << ( ls_bit_number ) ) + +#define RDD_EMAC_DESCRIPTOR_EGRESS_COUNTER_OFFSET 0 + +/* WAN TX Pointers table */ +typedef struct +{ + uint16_t wan_channel_ptr; + uint16_t rate_controller_ptr; + uint16_t wan_tx_queue_ptr; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_POINTERS_ENTRY_DTS; + + +typedef struct +{ + RDD_WAN_TX_POINTERS_ENTRY_DTS entry[ RDD_WAN_CHANNELS_0_7_TABLE_SIZE + RDD_WAN_CHANNELS_8_39_TABLE_SIZE ][ RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLER_ADDR_NUMBER ] + [ RDD_US_RATE_CONTROLLER_DESCRIPTOR_TX_QUEUE_ADDR_NUMBER ]; +} +RDD_WAN_TX_POINTERS_TABLE_DTS; + + +#define RDD_CPU_RX_DESCRIPTOR_SKB_INDEX_READ( r, p ) FIELD_MREAD_32( ( (uint8_t *)p + 4), 0, 8, r ) +#define RDD_CPU_RX_DESCRIPTOR_REASON_L_READ( p ) FIELD_GET( *( (uint32_t *)p + 0), 25, 6 ) +#define RDD_CPU_RX_DESCRIPTOR_PAYLOAD_OFFSET_FLAG_L_READ( p ) FIELD_GET( *( (uint32_t *)p + 0), 22, 1 ) +#define RDD_CPU_RX_DESCRIPTOR_FLOW_ID_L_READ( p ) FIELD_GET( *( (uint32_t *)p + 0), 14, 8 ) +#define RDD_CPU_RX_DESCRIPTOR_PACKET_LENGTH_L_READ( p ) FIELD_GET( *( (uint32_t *)p + 0), 0, 14 ) +#define RDD_CPU_RX_DESCRIPTOR_SRC_PORT_L_READ( p ) FIELD_GET( *( (uint32_t *)p + 1), 28, 4 ) +#define RDD_CPU_RX_DESCRIPTOR_NEXT_PTR_L_READ( p ) FIELD_GET( *( (uint32_t *)p + 1), 15, 13 ) +#define RDD_CPU_RX_DESCRIPTOR_ABS_FLAG_L_READ( p ) FIELD_GET( *( (uint32_t *)p + 1), 14, 1 ) +#if defined(DSL_63138) +#define RDD_CPU_RX_DESCRIPTOR_BUFFER_NUMBER_L_READ( p ) FIELD_GET( *( (uint32_t *)p + 1), 0, 15 ) +#else +#define RDD_CPU_RX_DESCRIPTOR_BUFFER_NUMBER_L_READ( p ) FIELD_GET( *( (uint32_t *)p + 1), 0, 14 ) +#endif +#define RDD_CPU_RX_DESCRIPTOR_SKB_INDEX_L_READ( p ) FIELD_GET( *( (uint32_t *)p + 1), 0, 8 ) + + +#define RDD_CPU_TX_DESCRIPTOR_CONTEXT_INDEX_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0), 0, 15, v ) +#define RDD_CPU_TX_DESCRIPTOR_COUNTER_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0), 0, 5, v ) +#define RDD_CPU_TX_DESCRIPTOR_IPTV_MAC_IDX_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0), 0, 11, v ) +#define RDD_CPU_TX_DESCRIPTOR_COUNTER_4_BYTES_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0), 5, 1, v ) +#define RDD_CPU_TX_DESCRIPTOR_SRC_BRIDGE_PORT_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0), 14, 5, v ) +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0), 19, 3, v ) +#define RDD_CPU_TX_DESCRIPTOR_GROUP_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0), 19, 7, v ) +#define RDD_CPU_TX_DESCRIPTOR_FLOW_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0), 19, 9, v ) +#define RDD_CPU_TX_DESCRIPTOR_EMAC_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0), 22, 4, v ) +#define RDD_CPU_TX_DESCRIPTOR_INTERRUPT_NUMBER_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0), 22, 4, v ) +#define RDD_CPU_TX_DESCRIPTOR_TCONT_INDEX_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 4), 22, 6, v ) +#define RDD_CPU_TX_DESCRIPTOR_TX_QUEUE_PTR_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 4), 23, 9, v ) +#define RDD_CPU_TX_DESCRIPTOR_MESSAGE_PARAMETER_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 4), 23, 5, v ) + +#define RDD_CPU_TX_DESCRIPTOR_VALID_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 31, 1, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_COMMAND_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 28, 3, (v) ) +#ifndef G9991 +#define RDD_CPU_TX_DESCRIPTOR_EMAC_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 22, 4, (v) ) +#else +#define RDD_CPU_TX_DESCRIPTOR_EMAC_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 22, 5, (v) ) +#endif +#define RDD_CPU_TX_DESCRIPTOR_US_GEM_FLOW_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 20, 8, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 19, 3, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_SUBNET_ID_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 19, 4, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_DS_GEM_FLOW_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 14, 8, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_SRC_BRIDGE_PORT_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 14, 5, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_PACKET_LENGTH_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 0, 14, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_SSID_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 27, 4, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_TX_QUEUE_PTR_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 23, 9, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_MESSAGE_PARAMETER_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 23, 5, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_IH_CLASS_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 23, 4, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_PAYLOAD_OFFSET_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 16, 7, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_1588_INDICATION_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 27, 1, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_TCONT_INDEX_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 8, 6, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_ABS_FLAG_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 31, 1, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_GSO_PKT_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 27, 1, (v) ) +#if defined(DSL_63138) +#define RDD_CPU_TX_DESCRIPTOR_BUFFER_NUMBER_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 0, 15, (v) ) +#else +#define RDD_CPU_TX_DESCRIPTOR_BUFFER_NUMBER_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 0, 14, (v) ) +#endif +#define RDD_CPU_TX_DESCRIPTOR_SKB_INDEX_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 0, 8, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_FLOW_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 19, 9, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_IPTV_MAC_IDX_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 0, 11, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_GROUP_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 19, 7, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_COUNTER_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 0, 5, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_COUNTER_4_BYTES_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 5, 1, (v) ) +#define RDD_CPU_TX_DESCRIPTOR_MSG_TYPE_L_WRITE( v ) LILAC_RDD_FIELD_SHIFT( 0, 4, (v) ) + + +#define LILAC_RDD_INGRESS_RATE_LIMITER_MAX_ALLOCATED_BUDGET ( ( 1 << 17 ) - 1) + + +typedef struct +{ + BL_LILAC_RDD_FILTER_MODE_DTE entry[ 9 ][ LILAC_RDD_NUMBER_OF_SUBNETS ][ LILAC_RDD_NUMBER_OF_ETHER_TYPE_FILTERS ]; +} +BL_LILAC_RDD_ETHER_TYPE_FILTER_MATRIX_DTS; + + +/* software version */ +typedef struct +{ + /* code */ + uint8_t code; + + /* version */ + uint8_t version; + + /* patch */ + uint8_t patch; + + /* revision */ + uint8_t revision; +} +BL_LILAC_RDD_VERSION_DTS; + + +#if defined(WL4908) +#define RDD_FLOW_ENTRIES_SIZE 16512 +#define RDD_FLOW_ENTRY_VALID 0x80000000 +#define RDD_RESERVED_CONTEXT_ENTRIES 128 +#define RDD_CONTEXT_TABLE_SIZE RDD_FLOW_ENTRIES_SIZE +#endif /* WL4908 */ + + +/****************************** Enumeration ***********************************/ + +typedef enum +{ + LILAC_RDD_CPU_TX_MESSAGE_DDR_HEADROOM_SIZE_SET = 0, + LILAC_RDD_CPU_TX_MESSAGE_RX_FLOW_PM_COUNTERS_GET = 1, + LILAC_RDD_CPU_TX_MESSAGE_TX_FLOW_PM_COUNTERS_GET = 2, + LILAC_RDD_CPU_TX_MESSAGE_FLOW_PM_COUNTERS_GET = 3, + LILAC_RDD_CPU_TX_MESSAGE_BRIDGE_PORT_PM_COUNTERS_GET = 4, + LILAC_RDD_CPU_TX_MESSAGE_FLUSH_GPON_QUEUE = 5, + LILAC_RDD_CPU_TX_MESSAGE_LAG_PORT_GET = 5, + LILAC_RDD_CPU_TX_MESSAGE_GLOBAL_REGISTERS_GET = 6, + LILAC_RDD_CPU_TX_MESSAGE_IPTV_MAC_COUNTER_GET = 7, + LILAC_RDD_CPU_TX_MESSAGE_INVALIDATE_CONTEXT_INDEX_CACHE_ENTRY = 8, + LILAC_RDD_CPU_TX_MESSAGE_RING_DESTROY = 9, + LILAC_RDD_CPU_TX_MESSAGE_IPV6_CRC_GET = 10, + LILAC_RDD_CPU_TX_MESSAGE_PM_COUNTER_GET = 11, + LILAC_RDD_CPU_TX_MESSAGE_FLUSH_ETH_QUEUE = 12, + LILAC_RDD_CPU_TX_MESSAGE_UPDATE_US_PD_POOL_QUOTA = 12, + LILAC_RDD_CPU_TX_MESSAGE_ACTIVATE_TCONT = 13, + LILAC_RDD_CPU_TX_MESSAGE_UPDATE_PD_POOL_QUOTA = 13, + LILAC_RDD_CPU_TX_MESSAGE_MIRRORING_MODE_CONFIG = 14, + LILAC_RDD_CPU_TX_MESSAGE_DHD_MESSAGE = 14, + LILAC_RDD_CPU_TX_MESSAGE_RELEASE_SKB_BUFFERS = 15, +} +LILAC_RDD_CPU_TX_MESSAGE_TYPE; + +#define RDD_CPU_TX_MESSAGE_DHD_MESSAGE LILAC_RDD_CPU_TX_MESSAGE_DHD_MESSAGE + +typedef enum +{ + LILAC_RDD_MAC_HASH_TYPE_INCREMENTAL = 0, + LILAC_RDD_MAC_HASH_TYPE_CRC16 = 1, +} +LILAC_RDD_MAC_TABLE_HASH_TYPE; + + +typedef enum +{ + LILAC_RDD_PARSER_LAYER2_PROTOCOL_1_HOT_UNKNOWN = 0, + LILAC_RDD_PARSER_LAYER2_PROTOCOL_1_HOT_PPPOE_DISCOVERY = 1, + LILAC_RDD_PARSER_LAYER2_PROTOCOL_1_HOT_PPPOE_SESSION = 2, + LILAC_RDD_PARSER_LAYER2_PROTOCOL_1_HOT_IPOE = 4, + LILAC_RDD_PARSER_LAYER2_PROTOCOL_1_HOT_USER_DEFINED_0 = 8, + LILAC_RDD_PARSER_LAYER2_PROTOCOL_1_HOT_USER_DEFINED_1 = 16, + LILAC_RDD_PARSER_LAYER2_PROTOCOL_1_HOT_USER_DEFINED_2 = 32, + LILAC_RDD_PARSER_LAYER2_PROTOCOL_1_HOT_USER_DEFINED_3 = 64, +} +LILAC_RDD_PARSER_LAYER2_PROTOCOL_1_HOT_DTE; + + +typedef enum +{ + LILAC_RDD_FARWARDING_DIRECTION_UPSTREAM = 0, + LILAC_RDD_FARWARDING_DIRECTION_DOWNSTREAM = 1, +} +LILAC_RDD_BRIDGE_FORWARDING_DIRECTION_DTS; + + + +typedef enum +{ + CS_R8 = 0, + CS_R9 = 1, + CS_R10 = 2, + CS_R11 = 4, + CS_R12 = 5, + CS_R13 = 6, + CS_R14 = 8, + CS_R15 = 9, + CS_R16 = 10, + CS_R17 = 12, + CS_R18 = 13, + CS_R19 = 14, + CS_R20 = 16, + CS_R21 = 17, + CS_R22 = 18, + CS_R23 = 20, + CS_R24 = 21, + CS_R25 = 22, + CS_R26 = 24, + CS_R27 = 25, + CS_R28 = 26, + CS_R29 = 28, + CS_R30 = 29, + CS_R31 = 30, +} +LILAC_RDD_LOCAL_REGISTER_INDEX_DTS; + + +typedef enum +{ + FAST_RUNNER_A = 0, + FAST_RUNNER_B = 1, + PICO_RUNNER_A = 2, + PICO_RUNNER_B = 3, +} +LILAC_RDD_RUNNER_INDEX_DTS; + + + +/**** ingress classification ****/ + +typedef struct +{ + uint32_t valid; + int32_t priority; + uint32_t rule_type; + uint32_t next_rule_cfg_id; + uint32_t next_group_id; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_CLASSIFICATION_RULE_CFG_DTE; + + +typedef struct +{ + uint32_t first_rule_cfg_id; + uint32_t first_gen_filter_rule_cfg_id; + RDD_INGRESS_CLASSIFICATION_RULE_CFG_DTE rule_cfg[ 16 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTE; + + + +/**** Router definitions ****/ + +#define LILAC_RDD_CONNECTION_ENTRY_SIZE 16 +#define LILAC_RDD_CONTEXT_ENTRY_SIZE sizeof(RDD_CONTEXT_ENTRY_UNION_DTS) +#define LILAC_RDD_CONNECTION_TABLE_SET_SIZE 4 +#define LILAC_RDD_RESERVED_CONTEXT_ENTRIES 128 + +#define PARSER_LAYER4_PROTOCOL_TCP 1 +#define PARSER_LAYER4_PROTOCOL_UDP 2 + +/* Offsets must correspond to current rdd_data_structures_auto.h number_of_ports and port_mask offsets. */ +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_NUM_PORTS_PORT_MASK_WRITE( v, p ) FIELD_MWRITE_16((uint8_t *)p + 8, 0, 12, v ) + +typedef struct +{ + uint32_t good_csum_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t no_csum_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bad_ipv4_hdr_csum_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bad_tcp_udp_csum_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CSO_COUNTERS_ENTRY_DTS; + +#define rdd_phys_addr_t bdmf_phys_addr_t + +#endif /*_BL_LILAC_DRV_RUNNER_DATA_STRUCTURES_H */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdd_data_structures_auto.h b/arch/arm/mach-bcmbca/rdp/rdd_data_structures_auto.h new file mode 100755 index 0000000000..4d4859861a --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_data_structures_auto.h @@ -0,0 +1,20669 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + + + +/* This is an automated file. Do not edit its contents. */ + + +#ifndef _RDD_DATA_STRUCTURES_AUTO_H +#define _RDD_DATA_STRUCTURES_AUTO_H + +/* PRIVATE_A */ +#define RDD_IH_BUFFER_RESERVED_FW_ONLY_NUMBER 64 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_IH_BUFFER_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IH_BUFFER_DTS; + +#if defined DSL_63138 + +#define RDD_INGRESS_HANDLER_BUFFER_SIZE 32 +typedef struct +{ + RDD_IH_BUFFER_DTS entry[ RDD_INGRESS_HANDLER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_HANDLER_BUFFER_DTS; + +#define RDD_INGRESS_HANDLER_BUFFER_PTR() ( RDD_INGRESS_HANDLER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + INGRESS_HANDLER_BUFFER_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t next_packet_descriptor_pointer :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PACKET_DESCRIPTOR_DTS; + +#define RDD_PACKET_DESCRIPTOR_NEXT_PACKET_DESCRIPTOR_POINTER_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_PACKET_DESCRIPTOR_NEXT_PACKET_DESCRIPTOR_POINTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#if defined DSL_63138 + +typedef struct +{ + uint32_t crc_calc :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_port_or_fstat :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_bridge_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t absolute_normal :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t last_indication :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pti :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t _1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t add_indication :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t header_number :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_location :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = packet_location, size = 15 bits + uint32_t buffer_number :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_address_index :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_TX_DESCRIPTOR_DTS; + +#define RDD_BBH_TX_DESCRIPTOR_CRC_CALC_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_CRC_CALC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_WAN_PORT_OR_FSTAT_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 3, 12, r) +#define RDD_BBH_TX_DESCRIPTOR_WAN_PORT_OR_FSTAT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 3, 12, v) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_BRIDGE_PORT_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 5, r) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 5, v) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_BBH_TX_DESCRIPTOR_ABSOLUTE_NORMAL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_ABSOLUTE_NORMAL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_LAST_INDICATION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_LAST_INDICATION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_PTI_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 2, r) +#define RDD_BBH_TX_DESCRIPTOR_PTI_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 2, v) +#define RDD_BBH_TX_DESCRIPTOR__1588_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 3, 1, r) +#define RDD_BBH_TX_DESCRIPTOR__1588_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 3, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_ADD_INDICATION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 2, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_ADD_INDICATION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 2, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_HEADER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 7, 3, r) +#define RDD_BBH_TX_DESCRIPTOR_HEADER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 7, 3, v) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 7, r) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 7, v) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LOCATION_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 15, r) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LOCATION_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 15, v) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 15, r) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 15, v) +#define RDD_BBH_TX_DESCRIPTOR_ABS_ADDRESS_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_BBH_TX_DESCRIPTOR_ABS_ADDRESS_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#endif + +typedef struct +{ + uint32_t union_field1 :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = union_field1, size = 15 bits + uint32_t next_packet_descriptor :13 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t service_queue :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t egress_port :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t absolute_normal :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast_ssid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wred_bit :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_queue :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t header_number :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUE_DESCRIPTOR_DTS; + +#define RDD_SERVICE_QUEUE_DESCRIPTOR_UNION_FIELD1_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 1, 15, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_UNION_FIELD1_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 1, 15, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_NEXT_PACKET_DESCRIPTOR_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 3, 13, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_NEXT_PACKET_DESCRIPTOR_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 3, 13, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_SERVICE_QUEUE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 1, 3, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_SERVICE_QUEUE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 1, 3, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_EGRESS_PORT_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 3, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_EGRESS_PORT_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 3, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_ABSOLUTE_NORMAL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_ABSOLUTE_NORMAL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_MULTICAST_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 1, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_MULTICAST_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 1, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_WRED_BIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 5, 1, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_WRED_BIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 5, 1, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_TX_QUEUE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 2, 3, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_TX_QUEUE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 2, 3, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_HEADER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 7, 3, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_HEADER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 7, 3, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 7, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 7, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_SERVICE_QUEUE_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER 32 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_DTS entry[ RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CONTEXT_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_PTR() ( RDD_DS_CONNECTION_CONTEXT_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CONTEXT_BUFFER_ADDRESS ) + +#endif +#define RDD_GSO_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER 32 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_GSO_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_BUFFER_ENTRY_DTS; + +#define RDD_GSO_PSEUDO_HEADER_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER 10 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_GSO_PSEUDO_HEADER_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_PSEUDO_HEADER_BUFFER_ENTRY_DTS; + + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TWO_BYTES_DTS; + +#if defined DSL_63138 + +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t active_rate_controllers :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BUDGET_ALLOCATOR_ENTRY_DTS; + +#define RDD_BUDGET_ALLOCATOR_ENTRY_ACTIVE_RATE_CONTROLLERS_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_BUDGET_ALLOCATOR_ENTRY_ACTIVE_RATE_CONTROLLERS_WRITE(v, p) MWRITE_16((uint8_t *)p, v) + +#define RDD_BUDGET_ALLOCATOR_TABLE_SIZE 8 +typedef struct +{ + RDD_BUDGET_ALLOCATOR_ENTRY_DTS entry[ RDD_BUDGET_ALLOCATOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BUDGET_ALLOCATOR_TABLE_DTS; + +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_PTR() ( RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_ADDRESS ) + + +typedef struct +{ + uint8_t cpu_meter :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_REASON_TO_METER_ENTRY_DTS; + +#define RDD_CPU_REASON_TO_METER_ENTRY_CPU_METER_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_CPU_REASON_TO_METER_ENTRY_CPU_METER_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE 64 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_REASON_TO_METER_TABLE_DTS; + +#define RDD_DS_CPU_REASON_TO_METER_TABLE_PTR() ( RDD_DS_CPU_REASON_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_REASON_TO_METER_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t current_budget :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t budget_limit :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_budget :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_METER_ENTRY_DTS; + +#define RDD_CPU_RX_METER_ENTRY_CURRENT_BUDGET_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_CPU_RX_METER_ENTRY_CURRENT_BUDGET_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_CPU_RX_METER_ENTRY_BUDGET_LIMIT_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_CPU_RX_METER_ENTRY_BUDGET_LIMIT_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_CPU_RX_METER_ENTRY_ALLOCATED_BUDGET_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_CPU_RX_METER_ENTRY_ALLOCATED_BUDGET_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) + +#define RDD_CPU_RX_METER_TABLE_SIZE 16 +typedef struct +{ + RDD_CPU_RX_METER_ENTRY_DTS entry[ RDD_CPU_RX_METER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_METER_TABLE_DTS; + +#define RDD_DS_CPU_RX_METER_TABLE_PTR() ( RDD_DS_CPU_RX_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_METER_TABLE_ADDRESS ) + + +typedef struct +{ + uint32_t current_budget :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t exponent :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t commited_rate :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bucket_size :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t commited_burst :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_POLICER_ENTRY_DTS; + +#define RDD_POLICER_ENTRY_CURRENT_BUDGET_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_POLICER_ENTRY_CURRENT_BUDGET_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_POLICER_ENTRY_EXPONENT_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_POLICER_ENTRY_EXPONENT_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_POLICER_ENTRY_COMMITED_RATE_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_POLICER_ENTRY_COMMITED_RATE_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_POLICER_ENTRY_BUCKET_SIZE_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_POLICER_ENTRY_BUCKET_SIZE_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_POLICER_ENTRY_COMMITED_BURST_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_POLICER_ENTRY_COMMITED_BURST_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_POLICER_ENTRY_DROP_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_POLICER_ENTRY_DROP_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) + +#define RDD_POLICER_TABLE_SIZE 16 +typedef struct +{ + RDD_POLICER_ENTRY_DTS entry[ RDD_POLICER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_POLICER_TABLE_DTS; + +#define RDD_DS_POLICER_TABLE_PTR() ( RDD_DS_POLICER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_POLICER_TABLE_ADDRESS ) + +#define RDD_IPSEC_DS_BUFFER_RESERVED_NUMBER 176 + +typedef struct +{ + uint8_t reserved[RDD_IPSEC_DS_BUFFER_RESERVED_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_BUFFER_DTS; + +#if defined DSL_63138 + +#define RDD_IPSEC_DS_BUFFER_POOL_SIZE 2 +typedef struct +{ + RDD_IPSEC_DS_BUFFER_DTS entry[ RDD_IPSEC_DS_BUFFER_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_BUFFER_POOL_DTS; + +#define RDD_IPSEC_DS_BUFFER_POOL_PTR() ( RDD_IPSEC_DS_BUFFER_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_BUFFER_POOL_ADDRESS ) + +#endif +#define RDD_IPSEC_SA_DESC_AUTH_KEY_NUMBER 32 +#define RDD_IPSEC_SA_DESC_CRYPT_KEY_NUMBER 32 + +typedef struct +{ + uint32_t spi :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eng_cfg :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hmac_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t auth_key_fetch_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t auth_alg :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t nxt_hdr :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aes_key_size :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t des_dec_vec :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t des_iters :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rng_clk_en :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rng_seed :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rng_sample_num :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t crypt_key_fetch_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t write_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mech :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t decrypt :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t crypt_alg :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved5 :13 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t clustr_ovrrd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t read_clustr_sel :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t write_clustr_sel :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t add :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t auth_key[RDD_IPSEC_SA_DESC_AUTH_KEY_NUMBER]; + uint8_t crypt_key[RDD_IPSEC_SA_DESC_CRYPT_KEY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_SA_DESC_DTS; + +#define RDD_IPSEC_SA_DESC_SPI_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_IPSEC_SA_DESC_SPI_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_IPSEC_SA_DESC_SPI_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_IPSEC_SA_DESC_SPI_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_IPSEC_SA_DESC_ENG_CFG_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_IPSEC_SA_DESC_ENG_CFG_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_IPSEC_SA_DESC_ENG_CFG_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_IPSEC_SA_DESC_ENG_CFG_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_IPSEC_SA_DESC_HMAC_DIS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 7, 1, r) +#define RDD_IPSEC_SA_DESC_HMAC_DIS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 7, 1, v) +#define RDD_IPSEC_SA_DESC_HMAC_DIS_L_READ( wv ) FIELD_GET( wv, 7, 1 ) +#define RDD_IPSEC_SA_DESC_HMAC_DIS_L_WRITE( v, wv ) FIELD_SET( v, 7, 1, wv ) +#define RDD_IPSEC_SA_DESC_AUTH_KEY_FETCH_DIS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 6, 1, r) +#define RDD_IPSEC_SA_DESC_AUTH_KEY_FETCH_DIS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 6, 1, v) +#define RDD_IPSEC_SA_DESC_AUTH_KEY_FETCH_DIS_L_READ( wv ) FIELD_GET( wv, 6, 1 ) +#define RDD_IPSEC_SA_DESC_AUTH_KEY_FETCH_DIS_L_WRITE( v, wv ) FIELD_SET( v, 6, 1, wv ) +#define RDD_IPSEC_SA_DESC_AUTH_ALG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 2, r) +#define RDD_IPSEC_SA_DESC_AUTH_ALG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 2, v) +#define RDD_IPSEC_SA_DESC_AUTH_ALG_L_READ( wv ) FIELD_GET( wv, 0, 2 ) +#define RDD_IPSEC_SA_DESC_AUTH_ALG_L_WRITE( v, wv ) FIELD_SET( v, 0, 2, wv ) +#define RDD_IPSEC_SA_DESC_NXT_HDR_READ(r, p) MREAD_8((uint8_t *)p + 8, r) +#define RDD_IPSEC_SA_DESC_NXT_HDR_WRITE(v, p) MWRITE_8((uint8_t *)p + 8, v) +#define RDD_IPSEC_SA_DESC_NXT_HDR_L_READ( wv ) FIELD_GET( wv, 24, 8 ) +#define RDD_IPSEC_SA_DESC_NXT_HDR_L_WRITE( v, wv ) FIELD_SET( v, 24, 8, wv ) +#define RDD_IPSEC_SA_DESC_AES_KEY_SIZE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 9, 5, 3, r) +#define RDD_IPSEC_SA_DESC_AES_KEY_SIZE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 9, 5, 3, v) +#define RDD_IPSEC_SA_DESC_AES_KEY_SIZE_L_READ( wv ) FIELD_GET( wv, 21, 3 ) +#define RDD_IPSEC_SA_DESC_AES_KEY_SIZE_L_WRITE( v, wv ) FIELD_SET( v, 21, 3, wv ) +#define RDD_IPSEC_SA_DESC_DES_DEC_VEC_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 9, 2, 3, r) +#define RDD_IPSEC_SA_DESC_DES_DEC_VEC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 9, 2, 3, v) +#define RDD_IPSEC_SA_DESC_DES_DEC_VEC_L_READ( wv ) FIELD_GET( wv, 18, 3 ) +#define RDD_IPSEC_SA_DESC_DES_DEC_VEC_L_WRITE( v, wv ) FIELD_SET( v, 18, 3, wv ) +#define RDD_IPSEC_SA_DESC_DES_ITERS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 9, 0, 2, r) +#define RDD_IPSEC_SA_DESC_DES_ITERS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 9, 0, 2, v) +#define RDD_IPSEC_SA_DESC_DES_ITERS_L_READ( wv ) FIELD_GET( wv, 16, 2 ) +#define RDD_IPSEC_SA_DESC_DES_ITERS_L_WRITE( v, wv ) FIELD_SET( v, 16, 2, wv ) +#define RDD_IPSEC_SA_DESC_RNG_CLK_EN_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 7, 1, r) +#define RDD_IPSEC_SA_DESC_RNG_CLK_EN_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 7, 1, v) +#define RDD_IPSEC_SA_DESC_RNG_CLK_EN_L_READ( wv ) FIELD_GET( wv, 15, 1 ) +#define RDD_IPSEC_SA_DESC_RNG_CLK_EN_L_WRITE( v, wv ) FIELD_SET( v, 15, 1, wv ) +#define RDD_IPSEC_SA_DESC_RNG_SEED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 5, 1, r) +#define RDD_IPSEC_SA_DESC_RNG_SEED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 5, 1, v) +#define RDD_IPSEC_SA_DESC_RNG_SEED_L_READ( wv ) FIELD_GET( wv, 13, 1 ) +#define RDD_IPSEC_SA_DESC_RNG_SEED_L_WRITE( v, wv ) FIELD_SET( v, 13, 1, wv ) +#define RDD_IPSEC_SA_DESC_RNG_SAMPLE_NUM_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 0, 5, r) +#define RDD_IPSEC_SA_DESC_RNG_SAMPLE_NUM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 0, 5, v) +#define RDD_IPSEC_SA_DESC_RNG_SAMPLE_NUM_L_READ( wv ) FIELD_GET( wv, 8, 5 ) +#define RDD_IPSEC_SA_DESC_RNG_SAMPLE_NUM_L_WRITE( v, wv ) FIELD_SET( v, 8, 5, wv ) +#define RDD_IPSEC_SA_DESC_CRYPT_KEY_FETCH_DIS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 6, 1, r) +#define RDD_IPSEC_SA_DESC_CRYPT_KEY_FETCH_DIS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 6, 1, v) +#define RDD_IPSEC_SA_DESC_CRYPT_KEY_FETCH_DIS_L_READ( wv ) FIELD_GET( wv, 6, 1 ) +#define RDD_IPSEC_SA_DESC_CRYPT_KEY_FETCH_DIS_L_WRITE( v, wv ) FIELD_SET( v, 6, 1, wv ) +#define RDD_IPSEC_SA_DESC_WRITE_DIS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 5, 1, r) +#define RDD_IPSEC_SA_DESC_WRITE_DIS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 5, 1, v) +#define RDD_IPSEC_SA_DESC_WRITE_DIS_L_READ( wv ) FIELD_GET( wv, 5, 1 ) +#define RDD_IPSEC_SA_DESC_WRITE_DIS_L_WRITE( v, wv ) FIELD_SET( v, 5, 1, wv ) +#define RDD_IPSEC_SA_DESC_MECH_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 3, 2, r) +#define RDD_IPSEC_SA_DESC_MECH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 3, 2, v) +#define RDD_IPSEC_SA_DESC_MECH_L_READ( wv ) FIELD_GET( wv, 3, 2 ) +#define RDD_IPSEC_SA_DESC_MECH_L_WRITE( v, wv ) FIELD_SET( v, 3, 2, wv ) +#define RDD_IPSEC_SA_DESC_DECRYPT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 2, 1, r) +#define RDD_IPSEC_SA_DESC_DECRYPT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 2, 1, v) +#define RDD_IPSEC_SA_DESC_DECRYPT_L_READ( wv ) FIELD_GET( wv, 2, 1 ) +#define RDD_IPSEC_SA_DESC_DECRYPT_L_WRITE( v, wv ) FIELD_SET( v, 2, 1, wv ) +#define RDD_IPSEC_SA_DESC_CRYPT_ALG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 0, 2, r) +#define RDD_IPSEC_SA_DESC_CRYPT_ALG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 0, 2, v) +#define RDD_IPSEC_SA_DESC_CRYPT_ALG_L_READ( wv ) FIELD_GET( wv, 0, 2 ) +#define RDD_IPSEC_SA_DESC_CRYPT_ALG_L_WRITE( v, wv ) FIELD_SET( v, 0, 2, wv ) +#define RDD_IPSEC_SA_DESC_CLUSTR_OVRRD_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 2, 1, r) +#define RDD_IPSEC_SA_DESC_CLUSTR_OVRRD_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 2, 1, v) +#define RDD_IPSEC_SA_DESC_CLUSTR_OVRRD_L_READ( wv ) FIELD_GET( wv, 18, 1 ) +#define RDD_IPSEC_SA_DESC_CLUSTR_OVRRD_L_WRITE( v, wv ) FIELD_SET( v, 18, 1, wv ) +#define RDD_IPSEC_SA_DESC_READ_CLUSTR_SEL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 1, 1, r) +#define RDD_IPSEC_SA_DESC_READ_CLUSTR_SEL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 1, 1, v) +#define RDD_IPSEC_SA_DESC_READ_CLUSTR_SEL_L_READ( wv ) FIELD_GET( wv, 17, 1 ) +#define RDD_IPSEC_SA_DESC_READ_CLUSTR_SEL_L_WRITE( v, wv ) FIELD_SET( v, 17, 1, wv ) +#define RDD_IPSEC_SA_DESC_WRITE_CLUSTR_SEL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 1, r) +#define RDD_IPSEC_SA_DESC_WRITE_CLUSTR_SEL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 1, v) +#define RDD_IPSEC_SA_DESC_WRITE_CLUSTR_SEL_L_READ( wv ) FIELD_GET( wv, 16, 1 ) +#define RDD_IPSEC_SA_DESC_WRITE_CLUSTR_SEL_L_WRITE( v, wv ) FIELD_SET( v, 16, 1, wv ) +#define RDD_IPSEC_SA_DESC_ADD_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_IPSEC_SA_DESC_ADD_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_IPSEC_SA_DESC_ADD_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_IPSEC_SA_DESC_ADD_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_IPSEC_SA_DESC_AUTH_KEY_READ(r, p, i) MREAD_I_8((uint8_t *)p + 16, i, r) +#define RDD_IPSEC_SA_DESC_AUTH_KEY_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 16, i, v) +#define RDD_IPSEC_SA_DESC_CRYPT_KEY_READ(r, p, i) MREAD_I_8((uint8_t *)p + 48, i, r) +#define RDD_IPSEC_SA_DESC_CRYPT_KEY_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 48, i, v) +#if defined DSL_63138 + +#define RDD_IPSEC_DS_SA_DESC_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_DTS entry[ RDD_IPSEC_DS_SA_DESC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_SA_DESC_TABLE_DTS; + +#define RDD_IPSEC_DS_SA_DESC_TABLE_PTR() ( RDD_IPSEC_DS_SA_DESC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_SA_DESC_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_IPSEC_US_SA_DESC_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_DTS entry[ RDD_IPSEC_US_SA_DESC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_US_SA_DESC_TABLE_DTS; + +#define RDD_IPSEC_US_SA_DESC_TABLE_PTR() ( RDD_IPSEC_US_SA_DESC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_US_SA_DESC_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t current_peak_budget :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_peak_budget_exponent :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_peak_budget :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_budget_limit_exponent :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_budget_limit :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t current_sustain_budget :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_sustain_budget :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_limiter_mask :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_burst_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_weight :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_burst_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_DTS; + +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_CURRENT_PEAK_BUDGET_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_CURRENT_PEAK_BUDGET_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_ALLOCATED_PEAK_BUDGET_EXPONENT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 2, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_ALLOCATED_PEAK_BUDGET_EXPONENT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 2, v) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_ALLOCATED_PEAK_BUDGET_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 0, 14, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_ALLOCATED_PEAK_BUDGET_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 0, 14, v) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_PEAK_BUDGET_LIMIT_EXPONENT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 6, 2, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_PEAK_BUDGET_LIMIT_EXPONENT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 6, 2, v) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_PEAK_BUDGET_LIMIT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_PEAK_BUDGET_LIMIT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_CURRENT_SUSTAIN_BUDGET_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_CURRENT_SUSTAIN_BUDGET_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_ALLOCATED_SUSTAIN_BUDGET_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_ALLOCATED_SUSTAIN_BUDGET_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_RATE_LIMITER_MASK_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_RATE_LIMITER_MASK_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_PEAK_BURST_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 20, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_PEAK_BURST_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 20, v) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_PEAK_WEIGHT_READ(r, p) MREAD_8((uint8_t *)p + 22, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_PEAK_WEIGHT_WRITE(v, p) MWRITE_8((uint8_t *)p + 22, v) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_PEAK_BURST_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 23, 0, 1, r) +#define RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_PEAK_BURST_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 23, 0, 1, v) +#if defined DSL_63138 + +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE 32 +typedef struct +{ + RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_DTS entry[ RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_PTR() ( RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + SERVICE_QUEUES_RATE_LIMITER_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t period :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t counter_reload :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t firmware_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TIMER_TASK_DESCRIPTOR_ENTRY_DTS; + +#define RDD_TIMER_TASK_DESCRIPTOR_ENTRY_PERIOD_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_TIMER_TASK_DESCRIPTOR_ENTRY_PERIOD_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_TIMER_TASK_DESCRIPTOR_ENTRY_COUNTER_RELOAD_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_TIMER_TASK_DESCRIPTOR_ENTRY_COUNTER_RELOAD_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_TIMER_TASK_DESCRIPTOR_ENTRY_FIRMWARE_PTR_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_TIMER_TASK_DESCRIPTOR_ENTRY_FIRMWARE_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) + +#define RDD_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +typedef struct +{ + RDD_TIMER_TASK_DESCRIPTOR_ENTRY_DTS entry[ RDD_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_DTS; + +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + + +typedef struct +{ + uint32_t bbh_descriptor_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_descriptor_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t skb_free_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t copies_in_transit :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t total_copies :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t terminate :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t total_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tokens :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bucket_size :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bucket :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_queue_discards :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_queue_writes :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_queue_reads :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t start_time_usec :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t end_time_usec :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eth_header_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eth_header_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eth_header_2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eth_header_3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eth_header_4 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eth_header_5 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SPDSVC_CONTEXT_ENTRY_DTS; + +#define RDD_SPDSVC_CONTEXT_ENTRY_BBH_DESCRIPTOR_0_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_BBH_DESCRIPTOR_0_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_BBH_DESCRIPTOR_1_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_BBH_DESCRIPTOR_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_SKB_FREE_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_SKB_FREE_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_COPIES_IN_TRANSIT_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_COPIES_IN_TRANSIT_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_TOTAL_COPIES_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_TOTAL_COPIES_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_TERMINATE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 20, 7, 1, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_TERMINATE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 20, 7, 1, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_TOTAL_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 22, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_TOTAL_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 22, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_TOKENS_READ(r, p) MREAD_16((uint8_t *)p + 24, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_TOKENS_WRITE(v, p) MWRITE_16((uint8_t *)p + 24, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_BUCKET_SIZE_READ(r, p) MREAD_16((uint8_t *)p + 26, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_BUCKET_SIZE_WRITE(v, p) MWRITE_16((uint8_t *)p + 26, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_BUCKET_READ(r, p) MREAD_32((uint8_t *)p + 28, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_BUCKET_WRITE(v, p) MWRITE_32((uint8_t *)p + 28, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_TX_QUEUE_DISCARDS_READ(r, p) MREAD_32((uint8_t *)p + 32, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_TX_QUEUE_DISCARDS_WRITE(v, p) MWRITE_32((uint8_t *)p + 32, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_TX_QUEUE_WRITES_READ(r, p) MREAD_32((uint8_t *)p + 36, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_TX_QUEUE_WRITES_WRITE(v, p) MWRITE_32((uint8_t *)p + 36, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_TX_QUEUE_READS_READ(r, p) MREAD_32((uint8_t *)p + 40, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_TX_QUEUE_READS_WRITE(v, p) MWRITE_32((uint8_t *)p + 40, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_START_TIME_USEC_READ(r, p) MREAD_32((uint8_t *)p + 44, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_START_TIME_USEC_WRITE(v, p) MWRITE_32((uint8_t *)p + 44, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_END_TIME_USEC_READ(r, p) MREAD_32((uint8_t *)p + 48, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_END_TIME_USEC_WRITE(v, p) MWRITE_32((uint8_t *)p + 48, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_DATA_BUF_PTR_READ(r, p) MREAD_32((uint8_t *)p + 52, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_DATA_BUF_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 52, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_0_READ(r, p) MREAD_32((uint8_t *)p + 56, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_0_WRITE(v, p) MWRITE_32((uint8_t *)p + 56, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_1_READ(r, p) MREAD_32((uint8_t *)p + 60, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 60, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_2_READ(r, p) MREAD_32((uint8_t *)p + 64, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_2_WRITE(v, p) MWRITE_32((uint8_t *)p + 64, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_3_READ(r, p) MREAD_32((uint8_t *)p + 68, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_3_WRITE(v, p) MWRITE_32((uint8_t *)p + 68, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_4_READ(r, p) MREAD_32((uint8_t *)p + 72, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_4_WRITE(v, p) MWRITE_32((uint8_t *)p + 72, v) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_5_READ(r, p) MREAD_16((uint8_t *)p + 76, r) +#define RDD_SPDSVC_CONTEXT_ENTRY_ETH_HEADER_5_WRITE(v, p) MWRITE_16((uint8_t *)p + 76, v) + +typedef struct +{ + uint16_t primitive_address :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_DTS; + +#define RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_PRIMITIVE_ADDRESS_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_PRIMITIVE_ADDRESS_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +typedef struct +{ + RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_DTS entry[ RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_EIGHT_BYTES_RESERVED_FW_ONLY_NUMBER 2 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_EIGHT_BYTES_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EIGHT_BYTES_DTS; + +#if defined DSL_63138 + +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_DTS; + +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_PTR() ( RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS ) + +#endif + +#define RDD_PICO_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +typedef struct +{ + RDD_TIMER_TASK_DESCRIPTOR_ENTRY_DTS entry[ RDD_PICO_TIMER_TASK_DESCRIPTOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_TIMER_TASK_DESCRIPTOR_TABLE_DTS; + +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DHD_LIST_TABLE_NUMBER 64 + +typedef struct +{ + uint32_t bbh_descriptor_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_descriptor_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_buffer_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_buffer_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_buffer_2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_buffer_3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_buffer_4 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_buffer_5 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_queue_write_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bpm_buffer_number_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bpm_buffer_number_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bpm_buffer_number_2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bpm_buffer_number_3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bpm_buffer_address_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bpm_buffer_address_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bpm_buffer_address_2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bpm_buffer_address_3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_list_base_address :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_queue_pd_write_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_queue_pd_read_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_proxy_enabled :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_list_size :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_list_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t dhd_list_table[RDD_WLAN_MCAST_CONTROL_ENTRY_DHD_LIST_TABLE_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_CONTROL_ENTRY_DTS; + +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BBH_DESCRIPTOR_0_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BBH_DESCRIPTOR_0_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BBH_DESCRIPTOR_1_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BBH_DESCRIPTOR_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_0_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_0_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_1_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_2_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_2_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_3_READ(r, p) MREAD_32((uint8_t *)p + 20, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_3_WRITE(v, p) MWRITE_32((uint8_t *)p + 20, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_4_READ(r, p) MREAD_32((uint8_t *)p + 24, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_4_WRITE(v, p) MWRITE_32((uint8_t *)p + 24, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_5_READ(r, p) MREAD_16((uint8_t *)p + 28, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_L2_BUFFER_5_WRITE(v, p) MWRITE_16((uint8_t *)p + 28, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_INGRESS_QUEUE_WRITE_PTR_READ(r, p) MREAD_16((uint8_t *)p + 30, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_INGRESS_QUEUE_WRITE_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 30, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_NUMBER_0_READ(r, p) MREAD_32((uint8_t *)p + 32, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_NUMBER_0_WRITE(v, p) MWRITE_32((uint8_t *)p + 32, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_NUMBER_1_READ(r, p) MREAD_32((uint8_t *)p + 36, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_NUMBER_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 36, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_NUMBER_2_READ(r, p) MREAD_32((uint8_t *)p + 40, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_NUMBER_2_WRITE(v, p) MWRITE_32((uint8_t *)p + 40, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_NUMBER_3_READ(r, p) MREAD_32((uint8_t *)p + 44, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_NUMBER_3_WRITE(v, p) MWRITE_32((uint8_t *)p + 44, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_ADDRESS_0_READ(r, p) MREAD_32((uint8_t *)p + 48, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_ADDRESS_0_WRITE(v, p) MWRITE_32((uint8_t *)p + 48, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_ADDRESS_1_READ(r, p) MREAD_32((uint8_t *)p + 52, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_ADDRESS_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 52, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_ADDRESS_2_READ(r, p) MREAD_32((uint8_t *)p + 56, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_ADDRESS_2_WRITE(v, p) MWRITE_32((uint8_t *)p + 56, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_ADDRESS_3_READ(r, p) MREAD_32((uint8_t *)p + 60, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_BPM_BUFFER_ADDRESS_3_WRITE(v, p) MWRITE_32((uint8_t *)p + 60, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p + 64, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p + 64, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DATA_BUF_PTR_READ(r, p) MREAD_32((uint8_t *)p + 68, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DATA_BUF_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 68, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DHD_LIST_BASE_ADDRESS_READ(r, p) MREAD_32((uint8_t *)p + 72, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DHD_LIST_BASE_ADDRESS_WRITE(v, p) MWRITE_32((uint8_t *)p + 72, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_INGRESS_QUEUE_PD_WRITE_PTR_READ(r, p) MREAD_16((uint8_t *)p + 76, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_INGRESS_QUEUE_PD_WRITE_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 76, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_INGRESS_QUEUE_PD_READ_PTR_READ(r, p) MREAD_16((uint8_t *)p + 78, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_INGRESS_QUEUE_PD_READ_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 78, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_IS_PROXY_ENABLED_READ(r, p) MREAD_8((uint8_t *)p + 80, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_IS_PROXY_ENABLED_WRITE(v, p) MWRITE_8((uint8_t *)p + 80, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DHD_LIST_SIZE_READ(r, p) MREAD_8((uint8_t *)p + 81, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DHD_LIST_SIZE_WRITE(v, p) MWRITE_8((uint8_t *)p + 81, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DHD_LIST_PTR_READ(r, p) MREAD_16((uint8_t *)p + 82, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DHD_LIST_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 82, v) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DHD_LIST_TABLE_READ(r, p, i) MREAD_I_8((uint8_t *)p + 84, i, r) +#define RDD_WLAN_MCAST_CONTROL_ENTRY_DHD_LIST_TABLE_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 84, i, v) + +typedef struct +{ + uint32_t valid_mask :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_UDP_FILTER_CONTROL_ENTRY_DTS; + +#define RDD_DS_WAN_UDP_FILTER_CONTROL_ENTRY_VALID_MASK_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DS_WAN_UDP_FILTER_CONTROL_ENTRY_VALID_MASK_WRITE(v, p) MWRITE_32((uint8_t *)p, v) + +typedef struct +{ + uint32_t tokens :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bucket :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bucket_size :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TOTAL_PPS_RATE_LIMITER_ENTRY_DTS; + +#define RDD_TOTAL_PPS_RATE_LIMITER_ENTRY_TOKENS_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_TOTAL_PPS_RATE_LIMITER_ENTRY_TOKENS_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_TOTAL_PPS_RATE_LIMITER_ENTRY_BUCKET_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_TOTAL_PPS_RATE_LIMITER_ENTRY_BUCKET_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_TOTAL_PPS_RATE_LIMITER_ENTRY_BUCKET_SIZE_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_TOTAL_PPS_RATE_LIMITER_ENTRY_BUCKET_SIZE_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) + +typedef struct +{ + uint8_t cpu_trap :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t parameter :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DTS; + +#define RDD_INGRESS_FILTERS_PARAMETER_ENTRY_CPU_TRAP_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_INGRESS_FILTERS_PARAMETER_ENTRY_CPU_TRAP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DROP_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 1, r) +#define RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DROP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 1, v) +#define RDD_INGRESS_FILTERS_PARAMETER_ENTRY_PARAMETER_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 6, r) +#define RDD_INGRESS_FILTERS_PARAMETER_ENTRY_PARAMETER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 6, v) +#if defined DSL_63138 + +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE ][ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t allocated_budget :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t current_budget :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_LIMITER_REMAINDER_ENTRY_DTS; + +#define RDD_RATE_LIMITER_REMAINDER_ENTRY_ALLOCATED_BUDGET_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_RATE_LIMITER_REMAINDER_ENTRY_ALLOCATED_BUDGET_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_RATE_LIMITER_REMAINDER_ENTRY_CURRENT_BUDGET_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_RATE_LIMITER_REMAINDER_ENTRY_CURRENT_BUDGET_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#if defined DSL_63138 + +#define RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE 32 +typedef struct +{ + RDD_RATE_LIMITER_REMAINDER_ENTRY_DTS entry[ RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_LIMITER_REMAINDER_TABLE_DTS; + +#define RDD_RATE_LIMITER_REMAINDER_TABLE_PTR() ( RDD_RATE_LIMITER_REMAINDER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RATE_LIMITER_REMAINDER_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t vlan_index_table_ptr :13 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t opbit_remark_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipbit_remark_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t qos_mapping_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wifi_ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_port :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t traffic_class :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t forward_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t service_queue_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dest :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = dest, size = 3 bits + uint32_t subnet_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t trap_reason :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t policer_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t policer_id :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_shaping_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_mirroring :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t service_queue :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dei_remark_enable :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dei_value :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ic_ip_flow :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_pbit :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_pbit :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dscp_remarking_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dscp :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ecn :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_VLAN_INDEX_TABLE_PTR_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 3, 13, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_VLAN_INDEX_TABLE_PTR_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 3, 13, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_OPBIT_REMARK_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 2, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_OPBIT_REMARK_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 2, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_IPBIT_REMARK_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 1, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_IPBIT_REMARK_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 1, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_QOS_MAPPING_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_QOS_MAPPING_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_WIFI_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 4, 4, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_WIFI_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 4, 4, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_EGRESS_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 4, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_EGRESS_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 4, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_TRAFFIC_CLASS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 5, 3, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_TRAFFIC_CLASS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 5, 3, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_FORWARD_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 4, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_FORWARD_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 4, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_SERVICE_QUEUE_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 3, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_SERVICE_QUEUE_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 3, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DEST_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 3, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DEST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 3, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_SUBNET_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 1, 2, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_SUBNET_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 1, 2, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_TRAP_REASON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 3, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_TRAP_REASON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 3, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DROP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DROP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_CPU_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_CPU_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_POLICER_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 5, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_POLICER_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 5, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_POLICER_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 1, 4, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_POLICER_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 1, 4, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_RATE_SHAPING_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 0, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_RATE_SHAPING_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 0, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_CPU_MIRRORING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 7, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_CPU_MIRRORING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 7, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_SERVICE_QUEUE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 2, 5, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_SERVICE_QUEUE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 2, 5, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DEI_REMARK_ENABLE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DEI_REMARK_ENABLE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DEI_VALUE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DEI_VALUE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_IC_IP_FLOW_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_IC_IP_FLOW_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_OUTER_PBIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 4, 3, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_OUTER_PBIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 4, 3, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_INNER_PBIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 1, 3, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_INNER_PBIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 1, 3, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DSCP_REMARKING_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 0, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DSCP_REMARKING_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 0, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DSCP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 2, 6, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DSCP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 2, 6, v) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_ECN_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 2, r) +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_ECN_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 2, v) +#if defined DSL_63138 + +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +typedef struct +{ + RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved1 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vid0 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vid1 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t context_index :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_if :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t next_entry :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_sa :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_CONNECTION2_ENTRY_DTS; + +#define RDD_FC_MCAST_CONNECTION2_ENTRY_VID0_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 12, r) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_VID0_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 12, v) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_VID1_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 12, r) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_VID1_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 12, v) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_CONTEXT_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 0, 15, r) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_CONTEXT_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 0, 15, v) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_RX_IF_READ(r, p) MREAD_8((uint8_t *)p + 6, r) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_RX_IF_WRITE(v, p) MWRITE_8((uint8_t *)p + 6, v) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_NEXT_ENTRY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 7, r) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_NEXT_ENTRY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 7, v) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_IP_SA_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_FC_MCAST_CONNECTION2_ENTRY_IP_SA_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#if defined DSL_63138 + +#define RDD_FC_MCAST_CONNECTION2_TABLE_SIZE 128 +typedef struct +{ + RDD_FC_MCAST_CONNECTION2_ENTRY_DTS entry[ RDD_FC_MCAST_CONNECTION2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_CONNECTION2_TABLE_DTS; + +#define RDD_FC_MCAST_CONNECTION2_TABLE_PTR() ( RDD_FC_MCAST_CONNECTION2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + FC_MCAST_CONNECTION2_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t eth_mac_pointer :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_queue_pointer :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_QUEUE_POINTERS_ENTRY_DTS; + +#define RDD_ETH_TX_QUEUE_POINTERS_ENTRY_ETH_MAC_POINTER_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_ETH_TX_QUEUE_POINTERS_ENTRY_ETH_MAC_POINTER_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_ETH_TX_QUEUE_POINTERS_ENTRY_TX_QUEUE_POINTER_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_ETH_TX_QUEUE_POINTERS_ENTRY_TX_QUEUE_POINTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#if defined DSL_63138 + +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE 72 +typedef struct +{ + RDD_ETH_TX_QUEUE_POINTERS_ENTRY_DTS entry[ RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS; + +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_PTR() ( RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_QUEUES_POINTERS_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved_0 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dst_mac :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dst_mac_lsw :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vtag0_tpid :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vtag0_tci :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vtag1_tpid :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vtag1_tci :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_mac :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_mac_lshw :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eth_type :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_L2_UCAST_TUPLE_ENTRY_DTS; + +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_DST_MAC_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_DST_MAC_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_DST_MAC_LSW_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_DST_MAC_LSW_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_VTAG0_TPID_READ(r, p) MREAD_16((uint8_t *)p + 16, r) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_VTAG0_TPID_WRITE(v, p) MWRITE_16((uint8_t *)p + 16, v) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_VTAG0_TCI_READ(r, p) MREAD_16((uint8_t *)p + 18, r) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_VTAG0_TCI_WRITE(v, p) MWRITE_16((uint8_t *)p + 18, v) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_VTAG1_TPID_READ(r, p) MREAD_16((uint8_t *)p + 20, r) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_VTAG1_TPID_WRITE(v, p) MWRITE_16((uint8_t *)p + 20, v) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_VTAG1_TCI_READ(r, p) MREAD_16((uint8_t *)p + 22, r) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_VTAG1_TCI_WRITE(v, p) MWRITE_16((uint8_t *)p + 22, v) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_SRC_MAC_READ(r, p) MREAD_32((uint8_t *)p + 24, r) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_SRC_MAC_WRITE(v, p) MWRITE_32((uint8_t *)p + 24, v) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_SRC_MAC_LSHW_READ(r, p) MREAD_16((uint8_t *)p + 28, r) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_SRC_MAC_LSHW_WRITE(v, p) MWRITE_16((uint8_t *)p + 28, v) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_ETH_TYPE_READ(r, p) MREAD_16((uint8_t *)p + 30, r) +#define RDD_FC_L2_UCAST_TUPLE_ENTRY_ETH_TYPE_WRITE(v, p) MWRITE_16((uint8_t *)p + 30, v) +#if defined DSL_63138 + +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_SBPM_REPLY_ENTRY_RESERVED_FW_ONLY_NUMBER 32 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_SBPM_REPLY_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SBPM_REPLY_ENTRY_DTS; + + +typedef struct +{ + uint32_t head_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tail_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_packet_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_packet_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_threshold :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t profile_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rs_status_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rs_group_status_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t queue_mask :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t index :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_QUEUE_DESCRIPTOR_DTS; + +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_HEAD_PTR_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_HEAD_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_TAIL_PTR_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_TAIL_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_INGRESS_PACKET_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_INGRESS_PACKET_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_EGRESS_PACKET_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_EGRESS_PACKET_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_PACKET_THRESHOLD_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_PACKET_THRESHOLD_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_PROFILE_PTR_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_PROFILE_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_RS_STATUS_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 12, r) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_RS_STATUS_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 12, v) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_RS_GROUP_STATUS_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 13, r) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_RS_GROUP_STATUS_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 13, v) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_QUEUE_MASK_READ(r, p) MREAD_8((uint8_t *)p + 14, r) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_QUEUE_MASK_WRITE(v, p) MWRITE_8((uint8_t *)p + 14, v) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_INDEX_READ(r, p) MREAD_8((uint8_t *)p + 15, r) +#define RDD_ETH_TX_QUEUE_DESCRIPTOR_INDEX_WRITE(v, p) MWRITE_8((uint8_t *)p + 15, v) +#if defined DSL_63138 + +#define RDD_ETH_TX_QUEUES_TABLE_SIZE 72 +typedef struct +{ + RDD_ETH_TX_QUEUE_DESCRIPTOR_DTS entry[ RDD_ETH_TX_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_QUEUES_TABLE_DTS; + +#define RDD_ETH_TX_QUEUES_TABLE_PTR() ( RDD_ETH_TX_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_QUEUES_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t l4_protocol :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ptag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t number_of_vlans :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t broadcast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l3_protocol :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_protocol :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l4_protocol_mask :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_mask :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ptag_mask :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t number_of_vlans_mask :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t broadcast_mask :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast_mask :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l3_protocol_mask :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_protocol_mask :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_FILTERS_LOOKUP_ENTRY_DTS; + +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L4_PROTOCOL_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 4, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L4_PROTOCOL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 4, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 1, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 1, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_PTAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 1, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_PTAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 1, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_NUMBER_OF_VLANS_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 2, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_NUMBER_OF_VLANS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 2, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_BROADCAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 7, 1, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_BROADCAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 7, 1, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_MULTICAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 6, 1, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_MULTICAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 6, 1, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L3_PROTOCOL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 4, 2, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L3_PROTOCOL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 4, 2, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L2_PROTOCOL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 4, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L2_PROTOCOL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 4, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L4_PROTOCOL_MASK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 4, 4, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L4_PROTOCOL_MASK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 4, 4, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_ERROR_MASK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 3, 1, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_ERROR_MASK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 3, 1, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_PTAG_MASK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 2, 1, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_PTAG_MASK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 2, 1, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_NUMBER_OF_VLANS_MASK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 2, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_NUMBER_OF_VLANS_MASK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 2, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_BROADCAST_MASK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 7, 1, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_BROADCAST_MASK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 7, 1, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_MULTICAST_MASK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 6, 1, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_MULTICAST_MASK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 6, 1, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L3_PROTOCOL_MASK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 4, 2, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L3_PROTOCOL_MASK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 4, 2, v) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L2_PROTOCOL_MASK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 4, r) +#define RDD_INGRESS_FILTERS_LOOKUP_ENTRY_L2_PROTOCOL_MASK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 4, v) +#if defined DSL_63138 + +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_LOOKUP_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE ][ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t enable :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FORWARDING_MATRIX_ENTRY_DTS; + +#define RDD_FORWARDING_MATRIX_ENTRY_ENABLE_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_FORWARDING_MATRIX_ENTRY_ENABLE_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 16 +typedef struct +{ + RDD_FORWARDING_MATRIX_ENTRY_DTS entry[ RDD_DS_FORWARDING_MATRIX_TABLE_SIZE ][ RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FORWARDING_MATRIX_TABLE_DTS; + +#define RDD_DS_FORWARDING_MATRIX_TABLE_PTR() ( RDD_DS_FORWARDING_MATRIX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FORWARDING_MATRIX_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t context_index :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bucket_overflow_counter :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command_list_length_64 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_extend :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_multicast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t protocol :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :23 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_pure_ack :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tos :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_mac_crc :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dst_mac_crc :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_L2_UCAST_CONNECTION_ENTRY_DTS; + +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_CONTEXT_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 15, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_CONTEXT_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 15, v) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_BUCKET_OVERFLOW_COUNTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 5, 3, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_BUCKET_OVERFLOW_COUNTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 5, 3, v) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_COMMAND_LIST_LENGTH_64_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 1, 4, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_COMMAND_LIST_LENGTH_64_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 1, 4, v) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_KEY_EXTEND_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 1, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_KEY_EXTEND_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 1, v) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_IS_MULTICAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 7, 1, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_IS_MULTICAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 7, 1, v) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_PROTOCOL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 7, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_PROTOCOL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 7, v) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_TCP_PURE_ACK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 0, 1, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_TCP_PURE_ACK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 0, 1, v) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 7, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 7, v) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_SRC_MAC_CRC_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_SRC_MAC_CRC_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_DST_MAC_CRC_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_FC_L2_UCAST_CONNECTION_ENTRY_DST_MAC_CRC_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) + +typedef struct +{ + uint32_t generic_rule_type :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :23 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t generic_rule_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t generic_rule_mask :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_DTS; + +#define RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_GENERIC_RULE_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 2, r) +#define RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_GENERIC_RULE_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 2, v) +#define RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_GENERIC_RULE_OFFSET_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 7, r) +#define RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_GENERIC_RULE_OFFSET_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 7, v) +#define RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_GENERIC_RULE_MASK_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_GENERIC_RULE_MASK_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#if defined DSL_63138 + +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DS_L2_UCAST_CONNECTION_BUFFER_SIZE 4 +typedef struct +{ + RDD_FC_L2_UCAST_CONNECTION_ENTRY_DTS entry[ RDD_DS_L2_UCAST_CONNECTION_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_L2_UCAST_CONNECTION_BUFFER_DTS; + +#define RDD_DS_L2_UCAST_CONNECTION_BUFFER_PTR() ( RDD_DS_L2_UCAST_CONNECTION_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_L2_UCAST_CONNECTION_BUFFER_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t egress_counter :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_counter :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_limiter_id :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_task_number :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t emac_mask :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_queues_status :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t gpio_flow_control_vector_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_counters_ptr_0 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_destination_0 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_counters_ptr_1 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_destination_1 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_counters_ptr_2 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_destination_2 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved5 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved6 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_MAC_DESCRIPTOR_DTS; + +#define RDD_ETH_TX_MAC_DESCRIPTOR_EGRESS_COUNTER_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_EGRESS_COUNTER_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_INGRESS_COUNTER_READ(r, p) MREAD_8((uint8_t *)p + 4, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_INGRESS_COUNTER_WRITE(v, p) MWRITE_8((uint8_t *)p + 4, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_RATE_LIMITER_ID_READ(r, p) MREAD_8((uint8_t *)p + 5, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_RATE_LIMITER_ID_WRITE(v, p) MWRITE_8((uint8_t *)p + 5, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_TX_TASK_NUMBER_READ(r, p) MREAD_8((uint8_t *)p + 6, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_TX_TASK_NUMBER_WRITE(v, p) MWRITE_8((uint8_t *)p + 6, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_EMAC_MASK_READ(r, p) MREAD_8((uint8_t *)p + 8, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_EMAC_MASK_WRITE(v, p) MWRITE_8((uint8_t *)p + 8, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_TX_QUEUES_STATUS_READ(r, p) MREAD_8((uint8_t *)p + 9, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_TX_QUEUES_STATUS_WRITE(v, p) MWRITE_8((uint8_t *)p + 9, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_GPIO_FLOW_CONTROL_VECTOR_PTR_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_GPIO_FLOW_CONTROL_VECTOR_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_PACKET_COUNTERS_PTR_0_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_PACKET_COUNTERS_PTR_0_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_BBH_DESTINATION_0_READ(r, p) MREAD_8((uint8_t *)p + 15, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_BBH_DESTINATION_0_WRITE(v, p) MWRITE_8((uint8_t *)p + 15, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_PACKET_COUNTERS_PTR_1_READ(r, p) MREAD_16((uint8_t *)p + 16, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_PACKET_COUNTERS_PTR_1_WRITE(v, p) MWRITE_16((uint8_t *)p + 16, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_BBH_DESTINATION_1_READ(r, p) MREAD_8((uint8_t *)p + 19, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_BBH_DESTINATION_1_WRITE(v, p) MWRITE_8((uint8_t *)p + 19, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_PACKET_COUNTERS_PTR_2_READ(r, p) MREAD_16((uint8_t *)p + 20, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_PACKET_COUNTERS_PTR_2_WRITE(v, p) MWRITE_16((uint8_t *)p + 20, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_BBH_DESTINATION_2_READ(r, p) MREAD_8((uint8_t *)p + 23, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_BBH_DESTINATION_2_WRITE(v, p) MWRITE_8((uint8_t *)p + 23, v) +#define RDD_ETH_TX_MAC_DESCRIPTOR_EGRESS_PORT_READ(r, p) MREAD_8((uint8_t *)p + 24, r) +#define RDD_ETH_TX_MAC_DESCRIPTOR_EGRESS_PORT_WRITE(v, p) MWRITE_8((uint8_t *)p + 24, v) +#if defined DSL_63138 + +#define RDD_ETH_TX_MAC_TABLE_SIZE 10 +typedef struct +{ + RDD_ETH_TX_MAC_DESCRIPTOR_DTS entry[ RDD_ETH_TX_MAC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_MAC_TABLE_DTS; + +#define RDD_ETH_TX_MAC_TABLE_PTR() ( RDD_ETH_TX_MAC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_MAC_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t msg_type :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t if_id :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t common_hdr_flags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t epoch :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t status :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dma_done_mark :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_DESCRIPTOR_DTS; + +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_MSG_TYPE_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_MSG_TYPE_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_MSG_TYPE_L_READ( wv ) FIELD_GET( wv, 24, 8 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_MSG_TYPE_L_WRITE( v, wv ) FIELD_SET( v, 24, 8, wv ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_IF_ID_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_IF_ID_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_IF_ID_L_READ( wv ) FIELD_GET( wv, 16, 8 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_IF_ID_L_WRITE( v, wv ) FIELD_SET( v, 16, 8, wv ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_COMMON_HDR_FLAGS_READ(r, p) MREAD_8((uint8_t *)p + 2, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_COMMON_HDR_FLAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 2, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_COMMON_HDR_FLAGS_L_READ( wv ) FIELD_GET( wv, 8, 8 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_COMMON_HDR_FLAGS_L_WRITE( v, wv ) FIELD_SET( v, 8, 8, wv ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_EPOCH_READ(r, p) MREAD_8((uint8_t *)p + 3, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_EPOCH_WRITE(v, p) MWRITE_8((uint8_t *)p + 3, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_EPOCH_L_READ( wv ) FIELD_GET( wv, 0, 8 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_EPOCH_L_WRITE( v, wv ) FIELD_SET( v, 0, 8, wv ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_REQUEST_ID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_REQUEST_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_STATUS_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_STATUS_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_STATUS_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_STATUS_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_FLOW_RING_ID_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_FLOW_RING_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_FLOW_RING_ID_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_FLOW_RING_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_DMA_DONE_MARK_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_DMA_DONE_MARK_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_DMA_DONE_MARK_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_DMA_DONE_MARK_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) + +typedef struct +{ + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t if_id :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_DTS; + +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_REQUEST_ID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_REQUEST_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_FLOW_RING_ID_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_FLOW_RING_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_FLOW_RING_ID_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_FLOW_RING_ID_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_IF_ID_READ(r, p) MREAD_8((uint8_t *)p + 6, r) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_IF_ID_WRITE(v, p) MWRITE_8((uint8_t *)p + 6, v) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_IF_ID_L_READ( wv ) FIELD_GET( wv, 8, 8 ) +#define RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_IF_ID_L_WRITE( v, wv ) FIELD_SET( v, 8, 8, wv ) +#if defined DSL_63138 + +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_PTR() ( RDD_RUNNER_FWTRACE_MAINA_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RUNNER_FWTRACE_MAINA_PARAM_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved_fw_only :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FOUR_BYTES_DTS; + +#if defined DSL_63138 + +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_HANDLER_SKB_DATA_POINTER_DTS; + +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_PTR() ( RDD_INGRESS_HANDLER_SKB_DATA_POINTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t reserved_fw_only :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ONE_BYTE_DTS; + +#if defined DSL_63138 + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t ring_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ring_size :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ring_base :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ring_end :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_COMPLETE_RING_DESCRIPTOR_DTS; + +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_RING_PTR_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_RING_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_RING_SIZE_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_RING_SIZE_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_RING_BASE_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_RING_BASE_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_RING_END_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_RING_END_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#if defined DSL_63138 + +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_COMPLETE_RING_DESCRIPTOR_DTS entry[ RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_DTS; + +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_PTR() ( RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOA_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_PTR() ( RDD_RUNNER_FWTRACE_PICOA_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RUNNER_FWTRACE_PICOA_PARAM_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t current_budget :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t budget_limit_exp :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t budget_limit :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_budget_exp :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_budget :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_LIMITER_ENTRY_DTS; + +#define RDD_RATE_LIMITER_ENTRY_CURRENT_BUDGET_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_RATE_LIMITER_ENTRY_CURRENT_BUDGET_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_RATE_LIMITER_ENTRY_BUDGET_LIMIT_EXP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_RATE_LIMITER_ENTRY_BUDGET_LIMIT_EXP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_RATE_LIMITER_ENTRY_BUDGET_LIMIT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 0, 15, r) +#define RDD_RATE_LIMITER_ENTRY_BUDGET_LIMIT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 0, 15, v) +#define RDD_RATE_LIMITER_ENTRY_ALLOCATED_BUDGET_EXP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_RATE_LIMITER_ENTRY_ALLOCATED_BUDGET_EXP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_RATE_LIMITER_ENTRY_ALLOCATED_BUDGET_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 15, r) +#define RDD_RATE_LIMITER_ENTRY_ALLOCATED_BUDGET_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 15, v) +#if defined DSL_63138 + +#define RDD_DS_RATE_LIMITER_TABLE_SIZE 32 +typedef struct +{ + RDD_RATE_LIMITER_ENTRY_DTS entry[ RDD_DS_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RATE_LIMITER_TABLE_DTS; + +#define RDD_DS_RATE_LIMITER_TABLE_PTR() ( RDD_DS_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RATE_LIMITER_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t cpu_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t ingress_classify_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t ingress_flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_FLOW_ENTRY_DTS; + +#define RDD_DS_WAN_FLOW_ENTRY_CPU_REASON_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 6, r) +#define RDD_DS_WAN_FLOW_ENTRY_CPU_REASON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 6, v) +#define RDD_DS_WAN_FLOW_ENTRY_INGRESS_CLASSIFY_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 1, r) +#define RDD_DS_WAN_FLOW_ENTRY_INGRESS_CLASSIFY_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 1, v) +#define RDD_DS_WAN_FLOW_ENTRY_INGRESS_FLOW_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_DS_WAN_FLOW_ENTRY_INGRESS_FLOW_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#if defined DSL_63138 + +#define RDD_DS_WAN_FLOW_TABLE_SIZE 256 +typedef struct +{ + RDD_DS_WAN_FLOW_ENTRY_DTS entry[ RDD_DS_WAN_FLOW_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_FLOW_TABLE_DTS; + +#define RDD_DS_WAN_FLOW_TABLE_PTR() ( RDD_DS_WAN_FLOW_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_WAN_FLOW_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t offset :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t value :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mask :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hits :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_UDP_FILTER_ENTRY_DTS; + +#define RDD_DS_WAN_UDP_FILTER_ENTRY_OFFSET_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DS_WAN_UDP_FILTER_ENTRY_OFFSET_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DS_WAN_UDP_FILTER_ENTRY_VALUE_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DS_WAN_UDP_FILTER_ENTRY_VALUE_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DS_WAN_UDP_FILTER_ENTRY_MASK_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_DS_WAN_UDP_FILTER_ENTRY_MASK_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_DS_WAN_UDP_FILTER_ENTRY_HITS_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_DS_WAN_UDP_FILTER_ENTRY_HITS_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#if defined DSL_63138 + +#define RDD_DS_WAN_UDP_FILTER_TABLE_SIZE 32 +typedef struct +{ + RDD_DS_WAN_UDP_FILTER_ENTRY_DTS entry[ RDD_DS_WAN_UDP_FILTER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_UDP_FILTER_TABLE_DTS; + +#define RDD_DS_WAN_UDP_FILTER_TABLE_PTR() ( RDD_DS_WAN_UDP_FILTER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_WAN_UDP_FILTER_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t u8 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_PORT_HEADER_ENTRY_DTS; + +#define RDD_FC_MCAST_PORT_HEADER_ENTRY_U8_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_FC_MCAST_PORT_HEADER_ENTRY_U8_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE 8 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 64 +typedef struct +{ + RDD_FC_MCAST_PORT_HEADER_ENTRY_DTS entry[ RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE ][ RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_PORT_HEADER_BUFFER_DTS; + +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_PTR() ( RDD_FC_MCAST_PORT_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + FC_MCAST_PORT_HEADER_BUFFER_ADDRESS ) + +#endif +#define RDD_CONNECTION_CONTEXT_MULTICAST_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER 16 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_CONNECTION_CONTEXT_MULTICAST_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONNECTION_CONTEXT_MULTICAST_BUFFER_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_MULTICAST_BUFFER_ENTRY_DTS entry[ RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_PTR() ( RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63138 + +typedef struct +{ + uint32_t last_sbn :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fstat_cell :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_id :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fstat_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ih_buffer_number :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_RX_DESCRIPTOR_DTS; + +#define RDD_BBH_RX_DESCRIPTOR_LAST_SBN_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 10, r) +#define RDD_BBH_RX_DESCRIPTOR_LAST_SBN_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 10, v) +#define RDD_BBH_RX_DESCRIPTOR_FSTAT_CELL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 5, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_FSTAT_CELL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 5, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_FLOW_ID_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 7, r) +#define RDD_BBH_RX_DESCRIPTOR_FLOW_ID_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 7, v) +#define RDD_BBH_RX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_BBH_RX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_FSTAT_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 5, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_FSTAT_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 5, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_TYPE_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 6, 7, r) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_TYPE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 6, 7, v) +#define RDD_BBH_RX_DESCRIPTOR_IH_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 6, r) +#define RDD_BBH_RX_DESCRIPTOR_IH_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 6, v) +#define RDD_BBH_RX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 15, r) +#define RDD_BBH_RX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 15, v) +#endif +#if defined DSL_63138 + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE 64 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_DTS; + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_PTR() ( RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_LAN_ENQUEUE_SQ_PD_ADDRESS ) + +#endif +#define RDD_ETH_RX_DESCRIPTORS_RESERVED_FW_ONLY_NUMBER 2 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_ETH_RX_DESCRIPTORS_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_RX_DESCRIPTORS_DTS; + +#if defined DSL_63138 + +#define RDD_ETH0_RX_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_ETH0_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH0_RX_DESCRIPTORS_DTS; + +#define RDD_ETH0_RX_DESCRIPTORS_PTR() ( RDD_ETH0_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH0_RX_DESCRIPTORS_ADDRESS ) + +#endif +#define RDD_RUNNER_FLOW_HEADER_BUFFER_RESERVED_FW_ONLY_NUMBER 32 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_RUNNER_FLOW_HEADER_BUFFER_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FLOW_HEADER_BUFFER_DTS; + +#define RDD_GRE_RUNNER_FLOW_HEADER_BUFFER_RESERVED_FW_ONLY_NUMBER 32 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_GRE_RUNNER_FLOW_HEADER_BUFFER_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GRE_RUNNER_FLOW_HEADER_BUFFER_DTS; + +#if defined DSL_63138 + +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#define RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_RESERVED_FW_ONLY_NUMBER 2 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_DTS entry[ RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_TX_BBH_DESCRIPTORS_DTS; + +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_PTR() ( RDD_DS_CPU_TX_BBH_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_TX_BBH_DESCRIPTORS_ADDRESS ) + +#endif +#define RDD_PROFILING_BUFFER_PICO_RUNNER_RESERVED_FW_ONLY_NUMBER 64 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_PROFILING_BUFFER_PICO_RUNNER_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PROFILING_BUFFER_PICO_RUNNER_DTS; + + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_DTS; + + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_wred_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t gso :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t emac :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_queue :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_bridge_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lag_port_pti :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t message_parameter :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_CORE_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_CORE_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_VALID_L_READ( wv ) FIELD_GET( wv, 31, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_VALID_L_WRITE( v, wv ) FIELD_SET( v, 31, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_COMMAND_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 3, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_COMMAND_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 3, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_COMMAND_L_READ( wv ) FIELD_GET( wv, 28, 3 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_COMMAND_L_WRITE( v, wv ) FIELD_SET( v, 28, 3, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_IS_WRED_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_IS_WRED_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_IS_WRED_HIGH_PRIO_L_READ( wv ) FIELD_GET( wv, 27, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_IS_WRED_HIGH_PRIO_L_WRITE( v, wv ) FIELD_SET( v, 27, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_GSO_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_GSO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_GSO_L_READ( wv ) FIELD_GET( wv, 26, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_GSO_L_WRITE( v, wv ) FIELD_SET( v, 26, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_EMAC_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 4, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_EMAC_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 4, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_EMAC_L_READ( wv ) FIELD_GET( wv, 22, 4 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_EMAC_L_WRITE( v, wv ) FIELD_SET( v, 22, 4, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_TX_QUEUE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 3, 3, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_TX_QUEUE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 3, 3, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_TX_QUEUE_L_READ( wv ) FIELD_GET( wv, 19, 3 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_TX_QUEUE_L_WRITE( v, wv ) FIELD_SET( v, 19, 3, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_SRC_BRIDGE_PORT_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 5, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_SRC_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 5, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_SRC_BRIDGE_PORT_L_READ( wv ) FIELD_GET( wv, 14, 5 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_SRC_BRIDGE_PORT_L_WRITE( v, wv ) FIELD_SET( v, 14, 5, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_PACKET_LENGTH_L_READ( wv ) FIELD_GET( wv, 0, 14 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_PACKET_LENGTH_L_WRITE( v, wv ) FIELD_SET( v, 0, 14, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_ABS_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_ABS_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_ABS_FLAG_L_READ( wv ) FIELD_GET( wv, 31, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_ABS_FLAG_L_WRITE( v, wv ) FIELD_SET( v, 31, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_LAG_PORT_PTI_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 2, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_LAG_PORT_PTI_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 2, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_LAG_PORT_PTI_L_READ( wv ) FIELD_GET( wv, 28, 2 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_LAG_PORT_PTI_L_WRITE( v, wv ) FIELD_SET( v, 28, 2, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_MESSAGE_PARAMETER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 7, 5, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_MESSAGE_PARAMETER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 7, 5, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_MESSAGE_PARAMETER_L_READ( wv ) FIELD_GET( wv, 23, 5 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_MESSAGE_PARAMETER_L_WRITE( v, wv ) FIELD_SET( v, 23, 5, wv ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 7, r) +#define RDD_CPU_TX_DESCRIPTOR_CORE_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 7, v) +#define RDD_CPU_TX_DESCRIPTOR_CORE_PAYLOAD_OFFSET_L_READ( wv ) FIELD_GET( wv, 16, 7 ) +#define RDD_CPU_TX_DESCRIPTOR_CORE_PAYLOAD_OFFSET_L_WRITE( v, wv ) FIELD_SET( v, 16, 7, wv ) +#if defined DSL_63138 + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :17 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_BPM_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 15, r) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 15, v) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_L_READ( wv ) FIELD_GET( wv, 0, 15 ) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_L_WRITE( v, wv ) FIELD_SET( v, 0, 15, wv ) +#endif + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t skb_index :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_ABS_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_ABS_SKB_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS_SKB_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS_SKB_INDEX_L_READ( wv ) FIELD_GET( wv, 0, 14 ) +#define RDD_CPU_TX_DESCRIPTOR_ABS_SKB_INDEX_L_WRITE( v, wv ) FIELD_SET( v, 0, 14, wv ) + +typedef struct +{ + uint32_t reserved0 :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t downstream_wan_flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_DS_FAST_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_DS_FAST_DOWNSTREAM_WAN_FLOW_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 8, r) +#define RDD_CPU_TX_DESCRIPTOR_DS_FAST_DOWNSTREAM_WAN_FLOW_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 8, v) +#define RDD_CPU_TX_DESCRIPTOR_DS_FAST_DOWNSTREAM_WAN_FLOW_L_READ( wv ) FIELD_GET( wv, 14, 8 ) +#define RDD_CPU_TX_DESCRIPTOR_DS_FAST_DOWNSTREAM_WAN_FLOW_L_WRITE( v, wv ) FIELD_SET( v, 14, 8, wv ) + +typedef struct +{ + uint32_t reserved0 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_wred_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t upstream_gem_flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_queue :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :23 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_US_FAST_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_IS_WRED_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_IS_WRED_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_IS_WRED_HIGH_PRIO_L_READ( wv ) FIELD_GET( wv, 27, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_IS_WRED_HIGH_PRIO_L_WRITE( v, wv ) FIELD_SET( v, 27, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_UPSTREAM_GEM_FLOW_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 3, 8, r) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_UPSTREAM_GEM_FLOW_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 3, 8, v) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_UPSTREAM_GEM_FLOW_L_READ( wv ) FIELD_GET( wv, 19, 8 ) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_UPSTREAM_GEM_FLOW_L_WRITE( v, wv ) FIELD_SET( v, 19, 8, wv ) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_TX_QUEUE_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 7, 9, r) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_TX_QUEUE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 7, 9, v) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_TX_QUEUE_L_READ( wv ) FIELD_GET( wv, 23, 9 ) +#define RDD_CPU_TX_DESCRIPTOR_US_FAST_TX_QUEUE_L_WRITE( v, wv ) FIELD_SET( v, 23, 9, wv ) + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t en_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :27 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_DS_PICO_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_EN_1588_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 3, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_EN_1588_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 3, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_EN_1588_L_READ( wv ) FIELD_GET( wv, 27, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_EN_1588_L_WRITE( v, wv ) FIELD_SET( v, 27, 1, wv ) + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid_multicast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :26 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_SSID_MULTICAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_SSID_MULTICAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_SSID_MULTICAST_L_READ( wv ) FIELD_GET( wv, 30, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_SSID_MULTICAST_L_WRITE( v, wv ) FIELD_SET( v, 30, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 2, 4, r) +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 2, 4, v) +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_SSID_L_READ( wv ) FIELD_GET( wv, 26, 4 ) +#define RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_SSID_L_WRITE( v, wv ) FIELD_SET( v, 26, 4, wv ) + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :28 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :28 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t message_type :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_MESSAGE_DESCRIPTOR_DTS; + +#define RDD_CPU_TX_MESSAGE_DESCRIPTOR_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_CPU_TX_MESSAGE_DESCRIPTOR_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_CPU_TX_MESSAGE_DESCRIPTOR_COMMAND_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 3, r) +#define RDD_CPU_TX_MESSAGE_DESCRIPTOR_COMMAND_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 3, v) +#define RDD_CPU_TX_MESSAGE_DESCRIPTOR_MESSAGE_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 4, r) +#define RDD_CPU_TX_MESSAGE_DESCRIPTOR_MESSAGE_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 4, v) +#if defined DSL_63138 + +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DHD_TX_POST_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_PD_INGRESS_QUEUE_DTS; + +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_PTR() ( RDD_DHD_TX_POST_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_TX_POST_PD_INGRESS_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t next_rule_cfg_id :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t next_group_id :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rule_type :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lookup_mode :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hit_action :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t miss_action :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t generic_rule_index_1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t generic_rule_index_2 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_mask :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_DTS; + +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_NEXT_RULE_CFG_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 5, r) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_NEXT_RULE_CFG_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 5, v) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_NEXT_GROUP_ID_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 5, r) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_NEXT_GROUP_ID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 5, v) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_RULE_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 3, 3, r) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_RULE_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 3, 3, v) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_LOOKUP_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 1, 2, r) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_LOOKUP_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 1, 2, v) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_HIT_ACTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 1, r) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_HIT_ACTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 1, v) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_MISS_ACTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 7, 1, r) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_MISS_ACTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 7, 1, v) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_GENERIC_RULE_INDEX_1_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 2, 2, r) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_GENERIC_RULE_INDEX_1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 2, 2, v) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_GENERIC_RULE_INDEX_2_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 0, 2, r) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_GENERIC_RULE_INDEX_2_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 0, 2, v) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_KEY_MASK_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 0, 24, r) +#define RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_KEY_MASK_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 0, 24, v) +#if defined DSL_63138 + +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t context_index :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bucket_overflow_counter :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command_list_length_64 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_extend :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t protocol :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_port :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dst_port :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_ip :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dst_ip :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONNECTION_ENTRY_DTS; + +#define RDD_CONNECTION_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_CONNECTION_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_CONNECTION_ENTRY_CONTEXT_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 15, r) +#define RDD_CONNECTION_ENTRY_CONTEXT_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 15, v) +#define RDD_CONNECTION_ENTRY_BUCKET_OVERFLOW_COUNTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 5, 3, r) +#define RDD_CONNECTION_ENTRY_BUCKET_OVERFLOW_COUNTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 5, 3, v) +#define RDD_CONNECTION_ENTRY_COMMAND_LIST_LENGTH_64_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 1, 4, r) +#define RDD_CONNECTION_ENTRY_COMMAND_LIST_LENGTH_64_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 1, 4, v) +#define RDD_CONNECTION_ENTRY_KEY_EXTEND_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 1, r) +#define RDD_CONNECTION_ENTRY_KEY_EXTEND_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 1, v) +#define RDD_CONNECTION_ENTRY_PROTOCOL_READ(r, p) MREAD_8((uint8_t *)p + 3, r) +#define RDD_CONNECTION_ENTRY_PROTOCOL_WRITE(v, p) MWRITE_8((uint8_t *)p + 3, v) +#define RDD_CONNECTION_ENTRY_SRC_PORT_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_CONNECTION_ENTRY_SRC_PORT_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_CONNECTION_ENTRY_DST_PORT_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_CONNECTION_ENTRY_DST_PORT_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_CONNECTION_ENTRY_SRC_IP_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_CONNECTION_ENTRY_SRC_IP_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_CONNECTION_ENTRY_DST_IP_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_CONNECTION_ENTRY_DST_IP_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#if defined DSL_63138 + +#define RDD_DS_CONNECTION_CACHE_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_DS_CONNECTION_CACHE_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CACHE_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CACHE_BUFFER_PTR() ( RDD_DS_CONNECTION_CACHE_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CACHE_BUFFER_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipsec :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_rx_queue :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t upstream :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sa_update :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sa_index :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t esphdr_offset :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_address_index :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_IPSEC_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_VALID_L_READ( wv ) FIELD_GET( wv, 31, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_VALID_L_WRITE( v, wv ) FIELD_SET( v, 31, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_COMMAND_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 3, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_COMMAND_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 3, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_COMMAND_L_READ( wv ) FIELD_GET( wv, 28, 3 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_COMMAND_L_WRITE( v, wv ) FIELD_SET( v, 28, 3, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_IPSEC_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_IPSEC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_IPSEC_L_READ( wv ) FIELD_GET( wv, 26, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_IPSEC_L_WRITE( v, wv ) FIELD_SET( v, 26, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_CPU_RX_QUEUE_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 4, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_CPU_RX_QUEUE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 4, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_CPU_RX_QUEUE_L_READ( wv ) FIELD_GET( wv, 22, 4 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_CPU_RX_QUEUE_L_WRITE( v, wv ) FIELD_SET( v, 22, 4, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_UPSTREAM_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 5, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_UPSTREAM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 5, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_UPSTREAM_L_READ( wv ) FIELD_GET( wv, 21, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_UPSTREAM_L_WRITE( v, wv ) FIELD_SET( v, 21, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_SA_UPDATE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 4, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_SA_UPDATE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 4, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_SA_UPDATE_L_READ( wv ) FIELD_GET( wv, 20, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_SA_UPDATE_L_WRITE( v, wv ) FIELD_SET( v, 20, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_SA_INDEX_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 6, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_SA_INDEX_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 6, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_SA_INDEX_L_READ( wv ) FIELD_GET( wv, 14, 6 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_SA_INDEX_L_WRITE( v, wv ) FIELD_SET( v, 14, 6, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_PACKET_LENGTH_L_READ( wv ) FIELD_GET( wv, 0, 14 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_PACKET_LENGTH_L_WRITE( v, wv ) FIELD_SET( v, 0, 14, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ABS_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ABS_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ABS_FLAG_L_READ( wv ) FIELD_GET( wv, 31, 1 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ABS_FLAG_L_WRITE( v, wv ) FIELD_SET( v, 31, 1, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ERROR_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 6, 3, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ERROR_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 6, 3, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ERROR_L_READ( wv ) FIELD_GET( wv, 22, 3 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ERROR_L_WRITE( v, wv ) FIELD_SET( v, 22, 3, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ESPHDR_OFFSET_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 6, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ESPHDR_OFFSET_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 6, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ESPHDR_OFFSET_L_READ( wv ) FIELD_GET( wv, 16, 6 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ESPHDR_OFFSET_L_WRITE( v, wv ) FIELD_SET( v, 16, 6, wv ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ABS_ADDRESS_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 15, r) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ABS_ADDRESS_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 15, v) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ABS_ADDRESS_INDEX_L_READ( wv ) FIELD_GET( wv, 0, 15 ) +#define RDD_CPU_TX_DESCRIPTOR_IPSEC_ABS_ADDRESS_INDEX_L_WRITE( v, wv ) FIELD_SET( v, 0, 15, wv ) + +typedef struct +{ + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_rx_queue :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t upstream :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_DESCRIPTOR_IPSEC_DTS; + +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 3, r) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 3, v) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_ERROR_L_READ( wv ) FIELD_GET( wv, 28, 3 ) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_ERROR_L_WRITE( v, wv ) FIELD_SET( v, 28, 3, wv ) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_CPU_RX_QUEUE_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 4, r) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_CPU_RX_QUEUE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 4, v) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_CPU_RX_QUEUE_L_READ( wv ) FIELD_GET( wv, 22, 4 ) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_CPU_RX_QUEUE_L_WRITE( v, wv ) FIELD_SET( v, 22, 4, wv ) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_UPSTREAM_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 5, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_UPSTREAM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 5, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_UPSTREAM_L_READ( wv ) FIELD_GET( wv, 21, 1 ) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_UPSTREAM_L_WRITE( v, wv ) FIELD_SET( v, 21, 1, wv ) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_PACKET_LENGTH_L_READ( wv ) FIELD_GET( wv, 0, 14 ) +#define RDD_CPU_RX_DESCRIPTOR_IPSEC_PACKET_LENGTH_L_WRITE( v, wv ) FIELD_SET( v, 0, 14, wv ) + +typedef struct +{ + uint32_t msg_type :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t if_id :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t common_hdr_flags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t epoch :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_eth_hdr_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_eth_hdr_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_eth_hdr_2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_eth_hdr_3 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t seg_cnt :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t metadata_buf_addr_low :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t metadata_buf_addr_hi :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_addr_low :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_addr_hi :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t meta_buf_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_DESCRIPTOR_DTS; + +#define RDD_DHD_TX_POST_DESCRIPTOR_MSG_TYPE_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_MSG_TYPE_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_MSG_TYPE_L_READ( wv ) FIELD_GET( wv, 24, 8 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_MSG_TYPE_L_WRITE( v, wv ) FIELD_SET( v, 24, 8, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_IF_ID_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_IF_ID_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_IF_ID_L_READ( wv ) FIELD_GET( wv, 16, 8 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_IF_ID_L_WRITE( v, wv ) FIELD_SET( v, 16, 8, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_COMMON_HDR_FLAGS_READ(r, p) MREAD_8((uint8_t *)p + 2, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_COMMON_HDR_FLAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 2, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_COMMON_HDR_FLAGS_L_READ( wv ) FIELD_GET( wv, 8, 8 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_COMMON_HDR_FLAGS_L_WRITE( v, wv ) FIELD_SET( v, 8, 8, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_EPOCH_READ(r, p) MREAD_8((uint8_t *)p + 3, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_EPOCH_WRITE(v, p) MWRITE_8((uint8_t *)p + 3, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_EPOCH_L_READ( wv ) FIELD_GET( wv, 0, 8 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_EPOCH_L_WRITE( v, wv ) FIELD_SET( v, 0, 8, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_REQUEST_ID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_REQUEST_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_0_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_0_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_0_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_0_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_1_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_1_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_1_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_2_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_2_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_2_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_2_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_3_READ(r, p) MREAD_16((uint8_t *)p + 20, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_3_WRITE(v, p) MWRITE_16((uint8_t *)p + 20, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_3_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_TX_ETH_HDR_3_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_FLAGS_READ(r, p) MREAD_8((uint8_t *)p + 22, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_FLAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 22, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_FLAGS_L_READ( wv ) FIELD_GET( wv, 8, 8 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_FLAGS_L_WRITE( v, wv ) FIELD_SET( v, 8, 8, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_SEG_CNT_READ(r, p) MREAD_8((uint8_t *)p + 23, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_SEG_CNT_WRITE(v, p) MWRITE_8((uint8_t *)p + 23, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_SEG_CNT_L_READ( wv ) FIELD_GET( wv, 0, 8 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_SEG_CNT_L_WRITE( v, wv ) FIELD_SET( v, 0, 8, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_METADATA_BUF_ADDR_LOW_READ(r, p) MREAD_32((uint8_t *)p + 24, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_METADATA_BUF_ADDR_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p + 24, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_METADATA_BUF_ADDR_LOW_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_METADATA_BUF_ADDR_LOW_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_METADATA_BUF_ADDR_HI_READ(r, p) MREAD_32((uint8_t *)p + 28, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_METADATA_BUF_ADDR_HI_WRITE(v, p) MWRITE_32((uint8_t *)p + 28, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_METADATA_BUF_ADDR_HI_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_METADATA_BUF_ADDR_HI_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_BUF_ADDR_LOW_READ(r, p) MREAD_32((uint8_t *)p + 32, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_BUF_ADDR_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p + 32, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_BUF_ADDR_LOW_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_BUF_ADDR_LOW_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_BUF_ADDR_HI_READ(r, p) MREAD_32((uint8_t *)p + 36, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_BUF_ADDR_HI_WRITE(v, p) MWRITE_32((uint8_t *)p + 36, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_BUF_ADDR_HI_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_BUF_ADDR_HI_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_META_BUF_LEN_READ(r, p) MREAD_16((uint8_t *)p + 40, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_META_BUF_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 40, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_META_BUF_LEN_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_META_BUF_LEN_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_LEN_READ(r, p) MREAD_16((uint8_t *)p + 42, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 42, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_LEN_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_DATA_LEN_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) + +typedef struct +{ + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t prio :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t if_id :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flags :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_addr_low :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_addr_high :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_eth_hdr_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_eth_hdr_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_eth_hdr_2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_eth_hdr_3 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flowid_override :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t info :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DTS; + +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_REQUEST_ID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_REQUEST_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 5, 3, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 5, 3, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_PRIO_L_READ( wv ) FIELD_GET( wv, 29, 3 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_PRIO_L_WRITE( v, wv ) FIELD_SET( v, 29, 3, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_IF_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 0, 5, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_IF_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 0, 5, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_IF_ID_L_READ( wv ) FIELD_GET( wv, 24, 5 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_IF_ID_L_WRITE( v, wv ) FIELD_SET( v, 24, 5, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_FLAGS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 7, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_FLAGS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 7, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_FLAGS_L_READ( wv ) FIELD_GET( wv, 17, 7 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_FLAGS_L_WRITE( v, wv ) FIELD_SET( v, 17, 7, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_COPY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 1, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_COPY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 1, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_COPY_L_READ( wv ) FIELD_GET( wv, 16, 1 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_COPY_L_WRITE( v, wv ) FIELD_SET( v, 16, 1, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_LEN_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_LEN_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_LEN_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_LOW_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_LOW_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_LOW_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_HIGH_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_HIGH_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_HIGH_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_HIGH_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_0_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_0_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_0_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_0_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_1_READ(r, p) MREAD_32((uint8_t *)p + 20, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 20, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_1_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_1_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_2_READ(r, p) MREAD_32((uint8_t *)p + 24, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_2_WRITE(v, p) MWRITE_32((uint8_t *)p + 24, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_2_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_2_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_3_READ(r, p) MREAD_16((uint8_t *)p + 28, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_3_WRITE(v, p) MWRITE_16((uint8_t *)p + 28, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_3_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_TX_ETH_HDR_3_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_FLOWID_OVERRIDE_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 30, 4, 12, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_FLOWID_OVERRIDE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 30, 4, 12, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_FLOWID_OVERRIDE_L_READ( wv ) FIELD_GET( wv, 4, 12 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_FLOWID_OVERRIDE_L_WRITE( v, wv ) FIELD_SET( v, 4, 12, wv ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_INFO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 31, 0, 4, r) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_INFO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 31, 0, 4, v) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_INFO_L_READ( wv ) FIELD_GET( wv, 0, 4 ) +#define RDD_DHD_TX_POST_DESCRIPTOR_CWI32_INFO_L_WRITE( v, wv ) FIELD_SET( v, 0, 4, wv ) +#define RDD_CPU_TX_MESSAGE_DATA_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER 16 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_CPU_TX_MESSAGE_DATA_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_MESSAGE_DATA_BUFFER_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t union_field1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = union_field1, size = 32 bits + uint32_t register_r9 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t emac_descriptor_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t union_field2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = union_field2, size = 32 bits + uint32_t register_r11 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eth_tx_queues_pointers_table_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_destination :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_DTS; + +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_UNION_FIELD1_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_UNION_FIELD1_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_REGISTER_R9_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_REGISTER_R9_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_EMAC_DESCRIPTOR_PTR_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_EMAC_DESCRIPTOR_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_UNION_FIELD2_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_UNION_FIELD2_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_REGISTER_R11_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_REGISTER_R11_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_ETH_TX_QUEUES_POINTERS_TABLE_PTR_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_ETH_TX_QUEUES_POINTERS_TABLE_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_BBH_DESTINATION_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_BBH_DESTINATION_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#if defined DSL_63138 + +#define RDD_ETH_TX_LOCAL_REGISTERS_SIZE 9 +typedef struct +{ + RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_DTS entry[ RDD_ETH_TX_LOCAL_REGISTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_LOCAL_REGISTERS_DTS; + +#define RDD_ETH_TX_LOCAL_REGISTERS_PTR() ( RDD_ETH_TX_LOCAL_REGISTERS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_LOCAL_REGISTERS_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t ingress_filters :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = ingress_filters, size = 32 bits + uint32_t reserved1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t acl_layer3_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t acl_layer2_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_mac_anti_spoofing_lookup :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tpid_detect_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_fragment_ingress_filter_trap :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_fragment_ingress_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t header_error_ingress_filter_trap :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t header_error_ingress_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_validation_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_filters_bypass :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vlan_switching_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vlan_us_aggregation_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t timing_1588_ingress_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dst_mac_lookup :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_mac_lookup :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t local_switching_ingress_filters :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t broadcast_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ethertype_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t icmpv6_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t igmp_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mld_ingress_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhcp_ingress_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DTS; + +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_INGRESS_FILTERS_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_INGRESS_FILTERS_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_INGRESS_FILTERS_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_INGRESS_FILTERS_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ACL_LAYER3_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ACL_LAYER3_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ACL_LAYER3_FILTER_L_READ( wv ) FIELD_GET( wv, 24, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ACL_LAYER3_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 24, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ACL_LAYER2_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 7, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ACL_LAYER2_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 7, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ACL_LAYER2_FILTER_L_READ( wv ) FIELD_GET( wv, 23, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ACL_LAYER2_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 23, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_SRC_MAC_ANTI_SPOOFING_LOOKUP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 6, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_SRC_MAC_ANTI_SPOOFING_LOOKUP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 6, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_SRC_MAC_ANTI_SPOOFING_LOOKUP_L_READ( wv ) FIELD_GET( wv, 22, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_SRC_MAC_ANTI_SPOOFING_LOOKUP_L_WRITE( v, wv ) FIELD_SET( v, 22, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_TPID_DETECT_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 5, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_TPID_DETECT_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 5, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_TPID_DETECT_FILTER_L_READ( wv ) FIELD_GET( wv, 21, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_TPID_DETECT_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 21, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_FRAGMENT_INGRESS_FILTER_TRAP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 4, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_FRAGMENT_INGRESS_FILTER_TRAP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 4, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_FRAGMENT_INGRESS_FILTER_TRAP_L_READ( wv ) FIELD_GET( wv, 20, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_FRAGMENT_INGRESS_FILTER_TRAP_L_WRITE( v, wv ) FIELD_SET( v, 20, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_FRAGMENT_INGRESS_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 3, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_FRAGMENT_INGRESS_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 3, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_FRAGMENT_INGRESS_FILTER_L_READ( wv ) FIELD_GET( wv, 19, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_FRAGMENT_INGRESS_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 19, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_HEADER_ERROR_INGRESS_FILTER_TRAP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 2, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_HEADER_ERROR_INGRESS_FILTER_TRAP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 2, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_HEADER_ERROR_INGRESS_FILTER_TRAP_L_READ( wv ) FIELD_GET( wv, 18, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_HEADER_ERROR_INGRESS_FILTER_TRAP_L_WRITE( v, wv ) FIELD_SET( v, 18, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_HEADER_ERROR_INGRESS_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 1, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_HEADER_ERROR_INGRESS_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 1, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_HEADER_ERROR_INGRESS_FILTER_L_READ( wv ) FIELD_GET( wv, 17, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_HEADER_ERROR_INGRESS_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 17, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_VALIDATION_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_VALIDATION_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_VALIDATION_FILTER_L_READ( wv ) FIELD_GET( wv, 16, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IP_VALIDATION_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 16, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_INGRESS_FILTERS_BYPASS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 7, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_INGRESS_FILTERS_BYPASS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 7, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_INGRESS_FILTERS_BYPASS_L_READ( wv ) FIELD_GET( wv, 15, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_INGRESS_FILTERS_BYPASS_L_WRITE( v, wv ) FIELD_SET( v, 15, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_VLAN_SWITCHING_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 5, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_VLAN_SWITCHING_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 5, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_VLAN_SWITCHING_FILTER_L_READ( wv ) FIELD_GET( wv, 13, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_VLAN_SWITCHING_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 13, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_VLAN_US_AGGREGATION_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 4, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_VLAN_US_AGGREGATION_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 4, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_VLAN_US_AGGREGATION_FILTER_L_READ( wv ) FIELD_GET( wv, 12, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_VLAN_US_AGGREGATION_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 12, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_TIMING_1588_INGRESS_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 3, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_TIMING_1588_INGRESS_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 3, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_TIMING_1588_INGRESS_FILTER_L_READ( wv ) FIELD_GET( wv, 11, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_TIMING_1588_INGRESS_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 11, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DST_MAC_LOOKUP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 1, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DST_MAC_LOOKUP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 1, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DST_MAC_LOOKUP_L_READ( wv ) FIELD_GET( wv, 9, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DST_MAC_LOOKUP_L_WRITE( v, wv ) FIELD_SET( v, 9, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_SRC_MAC_LOOKUP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_SRC_MAC_LOOKUP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_SRC_MAC_LOOKUP_L_READ( wv ) FIELD_GET( wv, 8, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_SRC_MAC_LOOKUP_L_WRITE( v, wv ) FIELD_SET( v, 8, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_LOCAL_SWITCHING_INGRESS_FILTERS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 7, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_LOCAL_SWITCHING_INGRESS_FILTERS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 7, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_LOCAL_SWITCHING_INGRESS_FILTERS_L_READ( wv ) FIELD_GET( wv, 7, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_LOCAL_SWITCHING_INGRESS_FILTERS_L_WRITE( v, wv ) FIELD_SET( v, 7, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_MULTICAST_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 6, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_MULTICAST_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 6, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_MULTICAST_FILTER_L_READ( wv ) FIELD_GET( wv, 6, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_MULTICAST_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 6, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_BROADCAST_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 5, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_BROADCAST_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 5, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_BROADCAST_FILTER_L_READ( wv ) FIELD_GET( wv, 5, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_BROADCAST_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 5, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ETHERTYPE_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 4, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ETHERTYPE_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 4, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ETHERTYPE_FILTER_L_READ( wv ) FIELD_GET( wv, 4, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ETHERTYPE_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 4, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ICMPV6_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 3, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ICMPV6_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 3, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ICMPV6_FILTER_L_READ( wv ) FIELD_GET( wv, 3, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_ICMPV6_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 3, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IGMP_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 2, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IGMP_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 2, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IGMP_FILTER_L_READ( wv ) FIELD_GET( wv, 2, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_IGMP_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 2, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_MLD_INGRESS_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 1, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_MLD_INGRESS_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 1, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_MLD_INGRESS_FILTER_L_READ( wv ) FIELD_GET( wv, 1, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_MLD_INGRESS_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 1, 1, wv ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DHCP_INGRESS_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 1, r) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DHCP_INGRESS_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 1, v) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DHCP_INGRESS_FILTER_L_READ( wv ) FIELD_GET( wv, 0, 1 ) +#define RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DHCP_INGRESS_FILTER_L_WRITE( v, wv ) FIELD_SET( v, 0, 1, wv ) +#if defined DSL_63138 + +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 2 +typedef struct +{ + RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved_fw_only :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t us_flow_control_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t max_low_threshold :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t min_high_threshold :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t max_high_threshold :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t low_large_interval_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t low_drop_constant :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t high_large_interval_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t high_drop_constant :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_QUEUE_PROFILE_DTS; + +#define RDD_QUEUE_PROFILE_US_FLOW_CONTROL_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_QUEUE_PROFILE_US_FLOW_CONTROL_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_QUEUE_PROFILE_MAX_LOW_THRESHOLD_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_QUEUE_PROFILE_MAX_LOW_THRESHOLD_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_QUEUE_PROFILE_MIN_HIGH_THRESHOLD_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_QUEUE_PROFILE_MIN_HIGH_THRESHOLD_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_QUEUE_PROFILE_MAX_HIGH_THRESHOLD_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_QUEUE_PROFILE_MAX_HIGH_THRESHOLD_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_QUEUE_PROFILE_LOW_LARGE_INTERVAL_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_QUEUE_PROFILE_LOW_LARGE_INTERVAL_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_QUEUE_PROFILE_LOW_DROP_CONSTANT_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_QUEUE_PROFILE_LOW_DROP_CONSTANT_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_QUEUE_PROFILE_HIGH_LARGE_INTERVAL_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_QUEUE_PROFILE_HIGH_LARGE_INTERVAL_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_QUEUE_PROFILE_HIGH_DROP_CONSTANT_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_QUEUE_PROFILE_HIGH_DROP_CONSTANT_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#if defined DSL_63138 + +#define RDD_DS_QUEUE_PROFILE_TABLE_SIZE 8 +typedef struct +{ + RDD_QUEUE_PROFILE_DTS entry[ RDD_DS_QUEUE_PROFILE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_QUEUE_PROFILE_TABLE_DTS; + +#define RDD_DS_QUEUE_PROFILE_TABLE_PTR() ( RDD_DS_QUEUE_PROFILE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_QUEUE_PROFILE_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid_multicast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t radio_idx :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_id :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_DESCRIPTOR_DTS; + +#define RDD_CPU_TX_DHD_DESCRIPTOR_SSID_MULTICAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 1, r) +#define RDD_CPU_TX_DHD_DESCRIPTOR_SSID_MULTICAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 1, v) +#define RDD_CPU_TX_DHD_DESCRIPTOR_SSID_MULTICAST_L_READ( wv ) FIELD_GET( wv, 30, 1 ) +#define RDD_CPU_TX_DHD_DESCRIPTOR_SSID_MULTICAST_L_WRITE( v, wv ) FIELD_SET( v, 30, 1, wv ) +#define RDD_CPU_TX_DHD_DESCRIPTOR_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 2, 4, r) +#define RDD_CPU_TX_DHD_DESCRIPTOR_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 2, 4, v) +#define RDD_CPU_TX_DHD_DESCRIPTOR_SSID_L_READ( wv ) FIELD_GET( wv, 26, 4 ) +#define RDD_CPU_TX_DHD_DESCRIPTOR_SSID_L_WRITE( v, wv ) FIELD_SET( v, 26, 4, wv ) +#define RDD_CPU_TX_DHD_DESCRIPTOR_RADIO_IDX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 0, 2, r) +#define RDD_CPU_TX_DHD_DESCRIPTOR_RADIO_IDX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 0, 2, v) +#define RDD_CPU_TX_DHD_DESCRIPTOR_RADIO_IDX_L_READ( wv ) FIELD_GET( wv, 24, 2 ) +#define RDD_CPU_TX_DHD_DESCRIPTOR_RADIO_IDX_L_WRITE( v, wv ) FIELD_SET( v, 24, 2, wv ) +#define RDD_CPU_TX_DHD_DESCRIPTOR_FLOW_RING_ID_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 14, 10, r) +#define RDD_CPU_TX_DHD_DESCRIPTOR_FLOW_RING_ID_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 14, 10, v) +#define RDD_CPU_TX_DHD_DESCRIPTOR_FLOW_RING_ID_L_READ( wv ) FIELD_GET( wv, 14, 10 ) +#define RDD_CPU_TX_DHD_DESCRIPTOR_FLOW_RING_ID_L_WRITE( v, wv ) FIELD_SET( v, 14, 10, wv ) + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_msg_type :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t radio_idx :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_id :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t disabled :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t read_idx_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t read_idx :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_DTS; + +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_DHD_MSG_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 2, r) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_DHD_MSG_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 2, v) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_DHD_MSG_TYPE_L_READ( wv ) FIELD_GET( wv, 30, 2 ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_DHD_MSG_TYPE_L_WRITE( v, wv ) FIELD_SET( v, 30, 2, wv ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_RADIO_IDX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 2, r) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_RADIO_IDX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 2, v) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_RADIO_IDX_L_READ( wv ) FIELD_GET( wv, 28, 2 ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_RADIO_IDX_L_WRITE( v, wv ) FIELD_SET( v, 28, 2, wv ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_FLOW_RING_ID_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 2, 10, r) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_FLOW_RING_ID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 2, 10, v) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_FLOW_RING_ID_L_READ( wv ) FIELD_GET( wv, 18, 10 ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_FLOW_RING_ID_L_WRITE( v, wv ) FIELD_SET( v, 18, 10, wv ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_DISABLED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 1, r) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_DISABLED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 1, v) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_DISABLED_L_READ( wv ) FIELD_GET( wv, 17, 1 ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_DISABLED_L_WRITE( v, wv ) FIELD_SET( v, 17, 1, wv ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_READ_IDX_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 1, r) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_READ_IDX_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 1, v) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_READ_IDX_VALID_L_READ( wv ) FIELD_GET( wv, 16, 1 ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_READ_IDX_VALID_L_WRITE( v, wv ) FIELD_SET( v, 16, 1, wv ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_READ_IDX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 6, 10, r) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_READ_IDX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 6, 10, v) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_READ_IDX_L_READ( wv ) FIELD_GET( wv, 6, 10 ) +#define RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_READ_IDX_L_WRITE( v, wv ) FIELD_SET( v, 6, 10, wv ) + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t guaranteed_free_count_incr :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t guaranteed_free_count_delta :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_UPDATE_PD_POOL_QUOTA_MESSAGE_DESCRIPTOR_DTS; + +#define RDD_CPU_TX_UPDATE_PD_POOL_QUOTA_MESSAGE_DESCRIPTOR_GUARANTEED_FREE_COUNT_INCR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_CPU_TX_UPDATE_PD_POOL_QUOTA_MESSAGE_DESCRIPTOR_GUARANTEED_FREE_COUNT_INCR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_CPU_TX_UPDATE_PD_POOL_QUOTA_MESSAGE_DESCRIPTOR_GUARANTEED_FREE_COUNT_INCR_L_READ( wv ) FIELD_GET( wv, 31, 1 ) +#define RDD_CPU_TX_UPDATE_PD_POOL_QUOTA_MESSAGE_DESCRIPTOR_GUARANTEED_FREE_COUNT_INCR_L_WRITE( v, wv ) FIELD_SET( v, 31, 1, wv ) +#define RDD_CPU_TX_UPDATE_PD_POOL_QUOTA_MESSAGE_DESCRIPTOR_GUARANTEED_FREE_COUNT_DELTA_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 0, 15, r) +#define RDD_CPU_TX_UPDATE_PD_POOL_QUOTA_MESSAGE_DESCRIPTOR_GUARANTEED_FREE_COUNT_DELTA_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 0, 15, v) +#define RDD_CPU_TX_UPDATE_PD_POOL_QUOTA_MESSAGE_DESCRIPTOR_GUARANTEED_FREE_COUNT_DELTA_L_READ( wv ) FIELD_GET( wv, 16, 15 ) +#define RDD_CPU_TX_UPDATE_PD_POOL_QUOTA_MESSAGE_DESCRIPTOR_GUARANTEED_FREE_COUNT_DELTA_L_WRITE( v, wv ) FIELD_SET( v, 16, 15, wv ) +#if defined DSL_63138 + +#define RDD_DS_SQ_ENQUEUE_QUEUE_SIZE 64 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DS_SQ_ENQUEUE_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_SQ_ENQUEUE_QUEUE_DTS; + +#define RDD_DS_SQ_ENQUEUE_QUEUE_PTR() ( RDD_DS_SQ_ENQUEUE_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_SQ_ENQUEUE_QUEUE_ADDRESS ) + +#endif +#define RDD_MULTICAST_HEADER_BUFFER_RESERVED_FW_ONLY_NUMBER 16 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_MULTICAST_HEADER_BUFFER_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MULTICAST_HEADER_BUFFER_DTS; + +#if defined DSL_63138 + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t reserved_fw_only :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_QUEUE_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_DTS; + +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_PTR() ( RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved_fw_only :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DS_NULL_BUFFER_SIZE 3 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_NULL_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_NULL_BUFFER_DTS; + +#define RDD_DS_NULL_BUFFER_PTR() ( RDD_DS_NULL_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_NULL_BUFFER_ADDRESS ) + +#endif +#define RDD_RUNNER_FLOW_HEADER_DESCRIPTOR_RESERVED_FW_ONLY_NUMBER 2 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_RUNNER_FLOW_HEADER_DESCRIPTOR_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS; + +#if defined DSL_63138 + +#define RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_INGRESS_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t primitive_address :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPE_COMMAND_PRIMITIVE_ENTRY_DTS; + +#define RDD_GPE_COMMAND_PRIMITIVE_ENTRY_PRIMITIVE_ADDRESS_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_GPE_COMMAND_PRIMITIVE_ENTRY_PRIMITIVE_ADDRESS_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_GPE_COMMAND_PRIMITIVE_ENTRY_DTS entry[ RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_PTR() ( RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_FAST_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DS_ROUTER_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_ROUTER_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_ROUTER_INGRESS_QUEUE_DTS; + +#define RDD_DS_ROUTER_INGRESS_QUEUE_PTR() ( RDD_DS_ROUTER_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_ROUTER_INGRESS_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t ring_value :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = ring_value, size = 32 bits + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_type :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ownership :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t status :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_COMPLETE_RING_ENTRY_DTS; + +#define RDD_DHD_COMPLETE_RING_ENTRY_RING_VALUE_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_COMPLETE_RING_ENTRY_RING_VALUE_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_COMPLETE_RING_ENTRY_RING_VALUE_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_COMPLETE_RING_ENTRY_RING_VALUE_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_COMPLETE_RING_ENTRY_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_COMPLETE_RING_ENTRY_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_COMPLETE_RING_ENTRY_REQUEST_ID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_COMPLETE_RING_ENTRY_REQUEST_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_COMPLETE_RING_ENTRY_BUFFER_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 2, r) +#define RDD_DHD_COMPLETE_RING_ENTRY_BUFFER_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 2, v) +#define RDD_DHD_COMPLETE_RING_ENTRY_BUFFER_TYPE_L_READ( wv ) FIELD_GET( wv, 24, 2 ) +#define RDD_DHD_COMPLETE_RING_ENTRY_BUFFER_TYPE_L_WRITE( v, wv ) FIELD_SET( v, 24, 2, wv ) +#define RDD_DHD_COMPLETE_RING_ENTRY_OWNERSHIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 2, r) +#define RDD_DHD_COMPLETE_RING_ENTRY_OWNERSHIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 2, v) +#define RDD_DHD_COMPLETE_RING_ENTRY_OWNERSHIP_L_READ( wv ) FIELD_GET( wv, 24, 2 ) +#define RDD_DHD_COMPLETE_RING_ENTRY_OWNERSHIP_L_WRITE( v, wv ) FIELD_SET( v, 24, 2, wv ) +#define RDD_DHD_COMPLETE_RING_ENTRY_STATUS_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_DHD_COMPLETE_RING_ENTRY_STATUS_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_DHD_COMPLETE_RING_ENTRY_STATUS_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_COMPLETE_RING_ENTRY_STATUS_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_COMPLETE_RING_ENTRY_FLOW_RING_ID_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_DHD_COMPLETE_RING_ENTRY_FLOW_RING_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_DHD_COMPLETE_RING_ENTRY_FLOW_RING_ID_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_COMPLETE_RING_ENTRY_FLOW_RING_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#if defined DSL_63138 + +#define RDD_DHD_COMPLETE_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_COMPLETE_RING_ENTRY_DTS entry[ RDD_DHD_COMPLETE_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_COMPLETE_RING_BUFFER_DTS; + +#define RDD_DHD_COMPLETE_RING_BUFFER_PTR() ( RDD_DHD_COMPLETE_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_COMPLETE_RING_BUFFER_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t reserved_fw_only :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BYTE_1_DTS; + +#if defined DSL_63138 + +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTE_1_DTS entry[ RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS; + +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_PTR() ( RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t ssid_vector :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ring_id :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wifi_queue :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t headroom_size :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_bridge_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dma_sync :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t type :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_descriptor_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_descriptor_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t chain_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_PARAMETERS_BLOCK_ENTRY_DTS; + +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_SSID_VECTOR_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_SSID_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_RING_ID_READ(r, p) MREAD_8((uint8_t *)p + 2, r) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_RING_ID_WRITE(v, p) MWRITE_8((uint8_t *)p + 2, v) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_WIFI_QUEUE_READ(r, p) MREAD_8((uint8_t *)p + 3, r) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_WIFI_QUEUE_WRITE(v, p) MWRITE_8((uint8_t *)p + 3, v) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_HEADROOM_SIZE_READ(r, p) MREAD_8((uint8_t *)p + 4, r) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_HEADROOM_SIZE_WRITE(v, p) MWRITE_8((uint8_t *)p + 4, v) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_SRC_BRIDGE_PORT_READ(r, p) MREAD_8((uint8_t *)p + 5, r) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_SRC_BRIDGE_PORT_WRITE(v, p) MWRITE_8((uint8_t *)p + 5, v) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_DMA_SYNC_READ(r, p) MREAD_8((uint8_t *)p + 6, r) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_DMA_SYNC_WRITE(v, p) MWRITE_8((uint8_t *)p + 6, v) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_TYPE_READ(r, p) MREAD_8((uint8_t *)p + 7, r) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_TYPE_WRITE(v, p) MWRITE_8((uint8_t *)p + 7, v) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_BBH_DESCRIPTOR_0_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_BBH_DESCRIPTOR_0_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_BBH_DESCRIPTOR_1_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_BBH_DESCRIPTOR_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_CHAIN_ID_READ(r, p) MREAD_16((uint8_t *)p + 16, r) +#define RDD_CPU_PARAMETERS_BLOCK_ENTRY_CHAIN_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 16, v) + +typedef struct +{ + uint32_t wfd_0_ssid_state_vector :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_1_ssid_state_vector :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_2_ssid_state_vector :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_STATS_STATE_ENTRY_DTS; + +#define RDD_WLAN_MCAST_SSID_STATS_STATE_ENTRY_WFD_0_SSID_STATE_VECTOR_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_WLAN_MCAST_SSID_STATS_STATE_ENTRY_WFD_0_SSID_STATE_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_WLAN_MCAST_SSID_STATS_STATE_ENTRY_WFD_1_SSID_STATE_VECTOR_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_WLAN_MCAST_SSID_STATS_STATE_ENTRY_WFD_1_SSID_STATE_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_WLAN_MCAST_SSID_STATS_STATE_ENTRY_WFD_2_SSID_STATE_VECTOR_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_WLAN_MCAST_SSID_STATS_STATE_ENTRY_WFD_2_SSID_STATE_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) + +typedef struct +{ + uint16_t number_of_active_tasks :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TIMER_CONTROL_DESCRIPTOR_DTS; + +#define RDD_TIMER_CONTROL_DESCRIPTOR_NUMBER_OF_ACTIVE_TASKS_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_TIMER_CONTROL_DESCRIPTOR_NUMBER_OF_ACTIVE_TASKS_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_DHD_L2_HEADER_BUFFER_ENTRY_DHD_L2_BUFFER_DATA_NUMBER 32 + +typedef struct +{ + uint8_t dhd_l2_buffer_data[RDD_DHD_L2_HEADER_BUFFER_ENTRY_DHD_L2_BUFFER_DATA_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_L2_HEADER_BUFFER_ENTRY_DTS; + +#define RDD_DHD_L2_HEADER_BUFFER_ENTRY_DHD_L2_BUFFER_DATA_READ(r, p, i) MREAD_I_8((uint8_t *)p, i, r) +#define RDD_DHD_L2_HEADER_BUFFER_ENTRY_DHD_L2_BUFFER_DATA_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p, i, v) +#if defined DSL_63138 + +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE 4 +typedef struct +{ + RDD_DHD_L2_HEADER_BUFFER_ENTRY_DTS entry[ RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_HEADER_SCRATCH_DTS; + +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_PTR() ( RDD_DS_DHD_TX_POST_HEADER_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_HEADER_SCRATCH_ADDRESS ) + +#endif +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_RESERVED_FW_ONLY_NUMBER 16 + +typedef struct +{ + uint16_t reserved_fw_only[RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE 5 +typedef struct +{ + RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vlan_head_index :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bucket_overflow_counter :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command_list_length_64 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_extend :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_multicast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t protocol :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t number_of_tags :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_ip :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dst_ip :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_CONNECTION_ENTRY_DTS; + +#define RDD_FC_MCAST_CONNECTION_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_FC_MCAST_CONNECTION_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_FC_MCAST_CONNECTION_ENTRY_VLAN_HEAD_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 7, r) +#define RDD_FC_MCAST_CONNECTION_ENTRY_VLAN_HEAD_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 7, v) +#define RDD_FC_MCAST_CONNECTION_ENTRY_BUCKET_OVERFLOW_COUNTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 5, 3, r) +#define RDD_FC_MCAST_CONNECTION_ENTRY_BUCKET_OVERFLOW_COUNTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 5, 3, v) +#define RDD_FC_MCAST_CONNECTION_ENTRY_COMMAND_LIST_LENGTH_64_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 1, 4, r) +#define RDD_FC_MCAST_CONNECTION_ENTRY_COMMAND_LIST_LENGTH_64_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 1, 4, v) +#define RDD_FC_MCAST_CONNECTION_ENTRY_KEY_EXTEND_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 1, r) +#define RDD_FC_MCAST_CONNECTION_ENTRY_KEY_EXTEND_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 1, v) +#define RDD_FC_MCAST_CONNECTION_ENTRY_IS_MULTICAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 7, 1, r) +#define RDD_FC_MCAST_CONNECTION_ENTRY_IS_MULTICAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 7, 1, v) +#define RDD_FC_MCAST_CONNECTION_ENTRY_PROTOCOL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 7, r) +#define RDD_FC_MCAST_CONNECTION_ENTRY_PROTOCOL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 7, v) +#define RDD_FC_MCAST_CONNECTION_ENTRY_NUMBER_OF_TAGS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 2, r) +#define RDD_FC_MCAST_CONNECTION_ENTRY_NUMBER_OF_TAGS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 2, v) +#define RDD_FC_MCAST_CONNECTION_ENTRY_SRC_IP_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_FC_MCAST_CONNECTION_ENTRY_SRC_IP_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_FC_MCAST_CONNECTION_ENTRY_DST_IP_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_FC_MCAST_CONNECTION_ENTRY_DST_IP_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) + +typedef struct +{ + uint32_t state :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lag_port :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_wred_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_header_length :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_push :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_command_list_length :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t queue :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_offset :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_PORT_CONTEXT_ENTRY_DTS; + +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_STATE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_STATE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_LAG_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 6, 2, r) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_LAG_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 6, 2, v) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_IS_WRED_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 5, 1, r) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_IS_WRED_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 5, 1, v) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_L2_HEADER_LENGTH_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 5, r) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_L2_HEADER_LENGTH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 5, v) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_L2_PUSH_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 7, 1, r) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_L2_PUSH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 7, 1, v) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_L2_COMMAND_LIST_LENGTH_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 7, r) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_L2_COMMAND_LIST_LENGTH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 7, v) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_QUEUE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 5, 3, r) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_QUEUE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 5, 3, v) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_L2_OFFSET_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 5, r) +#define RDD_FC_MCAST_PORT_CONTEXT_ENTRY_L2_OFFSET_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 5, v) + +typedef struct +{ + uint32_t reserved_fw_only :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONNECTION_TABLE_CONFIG_DTS; + +#if defined DSL_63138 + +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DATA_POINTER_DUMMY_TARGET_DTS; + +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_PTR() ( RDD_DS_DATA_POINTER_DUMMY_TARGET_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DATA_POINTER_DUMMY_TARGET_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved_fw_only :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONTEXT_TABLE_CONFIG_DTS; + + +typedef struct +{ + uint8_t ih_buffer :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PARALLEL_PROCESSING_ENTRY_DTS; + +#define RDD_PARALLEL_PROCESSING_ENTRY_IH_BUFFER_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_PARALLEL_PROCESSING_ENTRY_IH_BUFFER_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_ENTRY_DTS entry[ RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR() ( RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t reserved_fw_only :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PARALLEL_PROCESSING_TASK_REORDER_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_TASK_REORDER_ENTRY_DTS entry[ RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_PTR() ( RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_DTS; + +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_PTR() ( RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE 10 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_DTS; + +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_PTR() ( RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t head_pointer :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tail_pointer :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t guaranteed_free_count :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t non_guaranteed_free_count :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t guaranteed_threshold :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_DTS; + +#define RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_HEAD_POINTER_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_HEAD_POINTER_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_TAIL_POINTER_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_TAIL_POINTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_FREE_COUNT_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_FREE_COUNT_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_NON_GUARANTEED_FREE_COUNT_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_NON_GUARANTEED_FREE_COUNT_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_THRESHOLD_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_THRESHOLD_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) + +typedef struct +{ + uint32_t reserved_fw_only :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DEBUG_BUFFER_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_DS_DEBUG_BUFFER_SIZE 32 +typedef struct +{ + RDD_DEBUG_BUFFER_ENTRY_DTS entry[ RDD_DS_DEBUG_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DEBUG_BUFFER_DTS; + +#define RDD_DS_DEBUG_BUFFER_PTR() ( RDD_DS_DEBUG_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DEBUG_BUFFER_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t ownership :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t skb_index :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FREE_SKB_INDEXES_FIFO_ENTRY_DTS; + +#define RDD_FREE_SKB_INDEXES_FIFO_ENTRY_OWNERSHIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_FREE_SKB_INDEXES_FIFO_ENTRY_OWNERSHIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_FREE_SKB_INDEXES_FIFO_ENTRY_SKB_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 14, r) +#define RDD_FREE_SKB_INDEXES_FIFO_ENTRY_SKB_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 14, v) + +#define RDD_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +typedef struct +{ + RDD_FREE_SKB_INDEXES_FIFO_ENTRY_DTS entry[ RDD_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS; + +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined DSL_63138 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_FLOW_RING_DROP_COUNTER_DTS; + +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_PTR() ( RDD_DS_DHD_FLOW_RING_DROP_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_FLOW_RING_DROP_COUNTER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_PTR() ( RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS ) + +#endif + +#define RDD_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +typedef struct +{ + RDD_FREE_SKB_INDEXES_FIFO_ENTRY_DTS entry[ RDD_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS; + +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#define RDD_HASH_BUFFER_RESERVED_FW_ONLY_NUMBER 4 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_HASH_BUFFER_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_HASH_BUFFER_DTS; + +#if defined DSL_63138 + +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_RX_DIRECT_DESCRIPTORS_DTS; + +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_PTR() ( RDD_GPON_RX_DIRECT_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GPON_RX_DIRECT_DESCRIPTORS_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t rx_bbh_descriptor_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_bbh_descriptor_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_bbh_descriptor_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_bbh_descriptor_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_octets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_octets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dropped_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dropped_no_bpm_buffer :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dropped_parse_failed :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dropped_linear_length_invalid :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t queue_full :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t summary :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_header_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_header_length :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_total_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_fragment_flags_reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_fragment_flags_df :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_fragment_flags_mf :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_fragment_offset :13 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_flags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_protocol :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipv4_csum :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_header_length :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t seg_count :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t nr_frags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t frag_index :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_udp_header_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_udp_header_length :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_udp_total_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_sequence :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_flags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t version :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_udp_csum :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mss :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mss_adjust :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t seg_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t seg_bytes_left :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t max_chunk_length :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t chunk_bytes_left :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_bytes_left :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t linear_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_packet_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_packet_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t udp_first_packet_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t udp_first_packet_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t udp_first_packet_buffer_number :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bpm_buffer_number :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipv6_ip_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t auth_state_3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t debug_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_CONTEXT_ENTRY_DTS; + +#define RDD_GSO_CONTEXT_ENTRY_RX_BBH_DESCRIPTOR_0_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_GSO_CONTEXT_ENTRY_RX_BBH_DESCRIPTOR_0_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_GSO_CONTEXT_ENTRY_RX_BBH_DESCRIPTOR_1_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_GSO_CONTEXT_ENTRY_RX_BBH_DESCRIPTOR_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_GSO_CONTEXT_ENTRY_TX_BBH_DESCRIPTOR_0_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_GSO_CONTEXT_ENTRY_TX_BBH_DESCRIPTOR_0_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_GSO_CONTEXT_ENTRY_TX_BBH_DESCRIPTOR_1_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_GSO_CONTEXT_ENTRY_TX_BBH_DESCRIPTOR_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_GSO_CONTEXT_ENTRY_RX_PACKETS_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_GSO_CONTEXT_ENTRY_RX_PACKETS_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_GSO_CONTEXT_ENTRY_RX_OCTETS_READ(r, p) MREAD_32((uint8_t *)p + 20, r) +#define RDD_GSO_CONTEXT_ENTRY_RX_OCTETS_WRITE(v, p) MWRITE_32((uint8_t *)p + 20, v) +#define RDD_GSO_CONTEXT_ENTRY_TX_PACKETS_READ(r, p) MREAD_32((uint8_t *)p + 24, r) +#define RDD_GSO_CONTEXT_ENTRY_TX_PACKETS_WRITE(v, p) MWRITE_32((uint8_t *)p + 24, v) +#define RDD_GSO_CONTEXT_ENTRY_TX_OCTETS_READ(r, p) MREAD_32((uint8_t *)p + 28, r) +#define RDD_GSO_CONTEXT_ENTRY_TX_OCTETS_WRITE(v, p) MWRITE_32((uint8_t *)p + 28, v) +#define RDD_GSO_CONTEXT_ENTRY_DROPPED_PACKETS_READ(r, p) MREAD_32((uint8_t *)p + 32, r) +#define RDD_GSO_CONTEXT_ENTRY_DROPPED_PACKETS_WRITE(v, p) MWRITE_32((uint8_t *)p + 32, v) +#define RDD_GSO_CONTEXT_ENTRY_DROPPED_NO_BPM_BUFFER_READ(r, p) MREAD_16((uint8_t *)p + 36, r) +#define RDD_GSO_CONTEXT_ENTRY_DROPPED_NO_BPM_BUFFER_WRITE(v, p) MWRITE_16((uint8_t *)p + 36, v) +#define RDD_GSO_CONTEXT_ENTRY_DROPPED_PARSE_FAILED_READ(r, p) MREAD_16((uint8_t *)p + 38, r) +#define RDD_GSO_CONTEXT_ENTRY_DROPPED_PARSE_FAILED_WRITE(v, p) MWRITE_16((uint8_t *)p + 38, v) +#define RDD_GSO_CONTEXT_ENTRY_DROPPED_LINEAR_LENGTH_INVALID_READ(r, p) MREAD_16((uint8_t *)p + 40, r) +#define RDD_GSO_CONTEXT_ENTRY_DROPPED_LINEAR_LENGTH_INVALID_WRITE(v, p) MWRITE_16((uint8_t *)p + 40, v) +#define RDD_GSO_CONTEXT_ENTRY_QUEUE_FULL_READ(r, p) MREAD_16((uint8_t *)p + 42, r) +#define RDD_GSO_CONTEXT_ENTRY_QUEUE_FULL_WRITE(v, p) MWRITE_16((uint8_t *)p + 42, v) +#define RDD_GSO_CONTEXT_ENTRY_SUMMARY_READ(r, p) MREAD_32((uint8_t *)p + 44, r) +#define RDD_GSO_CONTEXT_ENTRY_SUMMARY_WRITE(v, p) MWRITE_32((uint8_t *)p + 44, v) +#define RDD_GSO_CONTEXT_ENTRY_IP_HEADER_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 48, r) +#define RDD_GSO_CONTEXT_ENTRY_IP_HEADER_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 48, v) +#define RDD_GSO_CONTEXT_ENTRY_IP_HEADER_LENGTH_READ(r, p) MREAD_8((uint8_t *)p + 49, r) +#define RDD_GSO_CONTEXT_ENTRY_IP_HEADER_LENGTH_WRITE(v, p) MWRITE_8((uint8_t *)p + 49, v) +#define RDD_GSO_CONTEXT_ENTRY_IP_TOTAL_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 50, r) +#define RDD_GSO_CONTEXT_ENTRY_IP_TOTAL_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 50, v) +#define RDD_GSO_CONTEXT_ENTRY_IP_ID_READ(r, p) MREAD_16((uint8_t *)p + 52, r) +#define RDD_GSO_CONTEXT_ENTRY_IP_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 52, v) +#define RDD_GSO_CONTEXT_ENTRY_IP_FRAGMENT_FLAGS_RESERVED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 54, 7, 1, r) +#define RDD_GSO_CONTEXT_ENTRY_IP_FRAGMENT_FLAGS_RESERVED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 54, 7, 1, v) +#define RDD_GSO_CONTEXT_ENTRY_IP_FRAGMENT_FLAGS_DF_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 54, 6, 1, r) +#define RDD_GSO_CONTEXT_ENTRY_IP_FRAGMENT_FLAGS_DF_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 54, 6, 1, v) +#define RDD_GSO_CONTEXT_ENTRY_IP_FRAGMENT_FLAGS_MF_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 54, 5, 1, r) +#define RDD_GSO_CONTEXT_ENTRY_IP_FRAGMENT_FLAGS_MF_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 54, 5, 1, v) +#define RDD_GSO_CONTEXT_ENTRY_IP_FRAGMENT_OFFSET_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 54, 0, 13, r) +#define RDD_GSO_CONTEXT_ENTRY_IP_FRAGMENT_OFFSET_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 54, 0, 13, v) +#define RDD_GSO_CONTEXT_ENTRY_IP_FLAGS_READ(r, p) MREAD_8((uint8_t *)p + 56, r) +#define RDD_GSO_CONTEXT_ENTRY_IP_FLAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 56, v) +#define RDD_GSO_CONTEXT_ENTRY_IP_PROTOCOL_READ(r, p) MREAD_8((uint8_t *)p + 57, r) +#define RDD_GSO_CONTEXT_ENTRY_IP_PROTOCOL_WRITE(v, p) MWRITE_8((uint8_t *)p + 57, v) +#define RDD_GSO_CONTEXT_ENTRY_IPV4_CSUM_READ(r, p) MREAD_16((uint8_t *)p + 58, r) +#define RDD_GSO_CONTEXT_ENTRY_IPV4_CSUM_WRITE(v, p) MWRITE_16((uint8_t *)p + 58, v) +#define RDD_GSO_CONTEXT_ENTRY_PACKET_HEADER_LENGTH_READ(r, p) MREAD_8((uint8_t *)p + 60, r) +#define RDD_GSO_CONTEXT_ENTRY_PACKET_HEADER_LENGTH_WRITE(v, p) MWRITE_8((uint8_t *)p + 60, v) +#define RDD_GSO_CONTEXT_ENTRY_SEG_COUNT_READ(r, p) MREAD_8((uint8_t *)p + 61, r) +#define RDD_GSO_CONTEXT_ENTRY_SEG_COUNT_WRITE(v, p) MWRITE_8((uint8_t *)p + 61, v) +#define RDD_GSO_CONTEXT_ENTRY_NR_FRAGS_READ(r, p) MREAD_8((uint8_t *)p + 62, r) +#define RDD_GSO_CONTEXT_ENTRY_NR_FRAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 62, v) +#define RDD_GSO_CONTEXT_ENTRY_FRAG_INDEX_READ(r, p) MREAD_8((uint8_t *)p + 63, r) +#define RDD_GSO_CONTEXT_ENTRY_FRAG_INDEX_WRITE(v, p) MWRITE_8((uint8_t *)p + 63, v) +#define RDD_GSO_CONTEXT_ENTRY_TCP_UDP_HEADER_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 64, r) +#define RDD_GSO_CONTEXT_ENTRY_TCP_UDP_HEADER_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 64, v) +#define RDD_GSO_CONTEXT_ENTRY_TCP_UDP_HEADER_LENGTH_READ(r, p) MREAD_8((uint8_t *)p + 65, r) +#define RDD_GSO_CONTEXT_ENTRY_TCP_UDP_HEADER_LENGTH_WRITE(v, p) MWRITE_8((uint8_t *)p + 65, v) +#define RDD_GSO_CONTEXT_ENTRY_TCP_UDP_TOTAL_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 66, r) +#define RDD_GSO_CONTEXT_ENTRY_TCP_UDP_TOTAL_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 66, v) +#define RDD_GSO_CONTEXT_ENTRY_TCP_SEQUENCE_READ(r, p) MREAD_32((uint8_t *)p + 68, r) +#define RDD_GSO_CONTEXT_ENTRY_TCP_SEQUENCE_WRITE(v, p) MWRITE_32((uint8_t *)p + 68, v) +#define RDD_GSO_CONTEXT_ENTRY_TCP_FLAGS_READ(r, p) MREAD_8((uint8_t *)p + 72, r) +#define RDD_GSO_CONTEXT_ENTRY_TCP_FLAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 72, v) +#define RDD_GSO_CONTEXT_ENTRY_VERSION_READ(r, p) MREAD_8((uint8_t *)p + 73, r) +#define RDD_GSO_CONTEXT_ENTRY_VERSION_WRITE(v, p) MWRITE_8((uint8_t *)p + 73, v) +#define RDD_GSO_CONTEXT_ENTRY_TCP_UDP_CSUM_READ(r, p) MREAD_16((uint8_t *)p + 74, r) +#define RDD_GSO_CONTEXT_ENTRY_TCP_UDP_CSUM_WRITE(v, p) MWRITE_16((uint8_t *)p + 74, v) +#define RDD_GSO_CONTEXT_ENTRY_MSS_READ(r, p) MREAD_16((uint8_t *)p + 76, r) +#define RDD_GSO_CONTEXT_ENTRY_MSS_WRITE(v, p) MWRITE_16((uint8_t *)p + 76, v) +#define RDD_GSO_CONTEXT_ENTRY_MSS_ADJUST_READ(r, p) MREAD_16((uint8_t *)p + 78, r) +#define RDD_GSO_CONTEXT_ENTRY_MSS_ADJUST_WRITE(v, p) MWRITE_16((uint8_t *)p + 78, v) +#define RDD_GSO_CONTEXT_ENTRY_SEG_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 80, r) +#define RDD_GSO_CONTEXT_ENTRY_SEG_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 80, v) +#define RDD_GSO_CONTEXT_ENTRY_SEG_BYTES_LEFT_READ(r, p) MREAD_16((uint8_t *)p + 82, r) +#define RDD_GSO_CONTEXT_ENTRY_SEG_BYTES_LEFT_WRITE(v, p) MWRITE_16((uint8_t *)p + 82, v) +#define RDD_GSO_CONTEXT_ENTRY_MAX_CHUNK_LENGTH_READ(r, p) MREAD_8((uint8_t *)p + 84, r) +#define RDD_GSO_CONTEXT_ENTRY_MAX_CHUNK_LENGTH_WRITE(v, p) MWRITE_8((uint8_t *)p + 84, v) +#define RDD_GSO_CONTEXT_ENTRY_CHUNK_BYTES_LEFT_READ(r, p) MREAD_8((uint8_t *)p + 85, r) +#define RDD_GSO_CONTEXT_ENTRY_CHUNK_BYTES_LEFT_WRITE(v, p) MWRITE_8((uint8_t *)p + 85, v) +#define RDD_GSO_CONTEXT_ENTRY_PAYLOAD_BYTES_LEFT_READ(r, p) MREAD_16((uint8_t *)p + 86, r) +#define RDD_GSO_CONTEXT_ENTRY_PAYLOAD_BYTES_LEFT_WRITE(v, p) MWRITE_16((uint8_t *)p + 86, v) +#define RDD_GSO_CONTEXT_ENTRY_PAYLOAD_PTR_READ(r, p) MREAD_32((uint8_t *)p + 88, r) +#define RDD_GSO_CONTEXT_ENTRY_PAYLOAD_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 88, v) +#define RDD_GSO_CONTEXT_ENTRY_PAYLOAD_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 92, r) +#define RDD_GSO_CONTEXT_ENTRY_PAYLOAD_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 92, v) +#define RDD_GSO_CONTEXT_ENTRY_LINEAR_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 94, r) +#define RDD_GSO_CONTEXT_ENTRY_LINEAR_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 94, v) +#define RDD_GSO_CONTEXT_ENTRY_TX_PACKET_PTR_READ(r, p) MREAD_32((uint8_t *)p + 96, r) +#define RDD_GSO_CONTEXT_ENTRY_TX_PACKET_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 96, v) +#define RDD_GSO_CONTEXT_ENTRY_TX_PACKET_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 100, r) +#define RDD_GSO_CONTEXT_ENTRY_TX_PACKET_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 100, v) +#define RDD_GSO_CONTEXT_ENTRY_UDP_FIRST_PACKET_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 102, r) +#define RDD_GSO_CONTEXT_ENTRY_UDP_FIRST_PACKET_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 102, v) +#define RDD_GSO_CONTEXT_ENTRY_UDP_FIRST_PACKET_PTR_READ(r, p) MREAD_32((uint8_t *)p + 104, r) +#define RDD_GSO_CONTEXT_ENTRY_UDP_FIRST_PACKET_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 104, v) +#define RDD_GSO_CONTEXT_ENTRY_UDP_FIRST_PACKET_BUFFER_NUMBER_READ(r, p) MREAD_32((uint8_t *)p + 108, r) +#define RDD_GSO_CONTEXT_ENTRY_UDP_FIRST_PACKET_BUFFER_NUMBER_WRITE(v, p) MWRITE_32((uint8_t *)p + 108, v) +#define RDD_GSO_CONTEXT_ENTRY_BPM_BUFFER_NUMBER_READ(r, p) MREAD_32((uint8_t *)p + 112, r) +#define RDD_GSO_CONTEXT_ENTRY_BPM_BUFFER_NUMBER_WRITE(v, p) MWRITE_32((uint8_t *)p + 112, v) +#define RDD_GSO_CONTEXT_ENTRY_PACKET_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 116, r) +#define RDD_GSO_CONTEXT_ENTRY_PACKET_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 116, v) +#define RDD_GSO_CONTEXT_ENTRY_IPV6_IP_ID_READ(r, p) MREAD_32((uint8_t *)p + 120, r) +#define RDD_GSO_CONTEXT_ENTRY_IPV6_IP_ID_WRITE(v, p) MWRITE_32((uint8_t *)p + 120, v) +#define RDD_GSO_CONTEXT_ENTRY_AUTH_STATE_3_READ(r, p) MREAD_32((uint8_t *)p + 124, r) +#define RDD_GSO_CONTEXT_ENTRY_AUTH_STATE_3_WRITE(v, p) MWRITE_32((uint8_t *)p + 124, v) +#define RDD_GSO_CONTEXT_ENTRY_DEBUG_0_READ(r, p) MREAD_32((uint8_t *)p + 128, r) +#define RDD_GSO_CONTEXT_ENTRY_DEBUG_0_WRITE(v, p) MWRITE_32((uint8_t *)p + 128, v) +#if defined DSL_63138 + +#define RDD_DS_FW_MAC_ADDRS_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_FW_MAC_ADDRS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FW_MAC_ADDRS_DTS; + +#define RDD_DS_FW_MAC_ADDRS_PTR() ( RDD_DS_FW_MAC_ADDRS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FW_MAC_ADDRS_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t dhd_context_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_host_buf_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_l2_buf :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ret_addr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ENQUEUE_PCI_PACKET_CONTEXT_ENTRY_DTS; + +#define RDD_ENQUEUE_PCI_PACKET_CONTEXT_ENTRY_DHD_CONTEXT_PTR_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_ENQUEUE_PCI_PACKET_CONTEXT_ENTRY_DHD_CONTEXT_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_ENQUEUE_PCI_PACKET_CONTEXT_ENTRY_DHD_HOST_BUF_PTR_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_ENQUEUE_PCI_PACKET_CONTEXT_ENTRY_DHD_HOST_BUF_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_ENQUEUE_PCI_PACKET_CONTEXT_ENTRY_DHD_L2_BUF_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_ENQUEUE_PCI_PACKET_CONTEXT_ENTRY_DHD_L2_BUF_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_ENQUEUE_PCI_PACKET_CONTEXT_ENTRY_RET_ADDR_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_ENQUEUE_PCI_PACKET_CONTEXT_ENTRY_RET_ADDR_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#if defined DSL_63138 + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_PTR() ( RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t physical_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS; + +#define RDD_BROADCOM_SWITCH_PORT_MAPPING_PHYSICAL_PORT_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_BROADCOM_SWITCH_PORT_MAPPING_PHYSICAL_PORT_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS; + +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_PTR() ( RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_ETH_TX_SCRATCH_SIZE 16 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_ETH_TX_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_SCRATCH_DTS; + +#define RDD_ETH_TX_SCRATCH_PTR() ( RDD_ETH_TX_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_SCRATCH_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t mtu_minus_40 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t us_padding_max_size :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t us_padding_cpu_max_size :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop_precedence_eligibility_vector :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_ether_type_1 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_ether_type_2 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_ether_type_3 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t timer_scheduler_period :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t active_policers_vector :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t policers_period :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ds_rate_shaper_timer :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t us_rate_controller_timer :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t us_rate_limit_sustain_budget_limit :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hash_based_forwarding_port_count :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inter_lan_scheduling_mode :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t broadcom_switch_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mirroring_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ds_connection_miss_action :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t us_pci_flow_cache_enable :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t global_ingress_config :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pci_ls_dp_eligibility_vector :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ds_ingress_policers_mode :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t debug_mode :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SYSTEM_CONFIGURATION_DTS; + +#define RDD_SYSTEM_CONFIGURATION_MTU_MINUS_40_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_SYSTEM_CONFIGURATION_MTU_MINUS_40_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_SYSTEM_CONFIGURATION_US_PADDING_MAX_SIZE_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_SYSTEM_CONFIGURATION_US_PADDING_MAX_SIZE_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_SYSTEM_CONFIGURATION_US_PADDING_CPU_MAX_SIZE_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_SYSTEM_CONFIGURATION_US_PADDING_CPU_MAX_SIZE_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_SYSTEM_CONFIGURATION_DROP_PRECEDENCE_ELIGIBILITY_VECTOR_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_SYSTEM_CONFIGURATION_DROP_PRECEDENCE_ELIGIBILITY_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_SYSTEM_CONFIGURATION_EGRESS_ETHER_TYPE_1_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_SYSTEM_CONFIGURATION_EGRESS_ETHER_TYPE_1_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_SYSTEM_CONFIGURATION_EGRESS_ETHER_TYPE_2_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_SYSTEM_CONFIGURATION_EGRESS_ETHER_TYPE_2_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_SYSTEM_CONFIGURATION_EGRESS_ETHER_TYPE_3_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_SYSTEM_CONFIGURATION_EGRESS_ETHER_TYPE_3_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_SYSTEM_CONFIGURATION_TIMER_SCHEDULER_PERIOD_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_SYSTEM_CONFIGURATION_TIMER_SCHEDULER_PERIOD_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_SYSTEM_CONFIGURATION_ACTIVE_POLICERS_VECTOR_READ(r, p) MREAD_16((uint8_t *)p + 16, r) +#define RDD_SYSTEM_CONFIGURATION_ACTIVE_POLICERS_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p + 16, v) +#define RDD_SYSTEM_CONFIGURATION_POLICERS_PERIOD_READ(r, p) MREAD_16((uint8_t *)p + 18, r) +#define RDD_SYSTEM_CONFIGURATION_POLICERS_PERIOD_WRITE(v, p) MWRITE_16((uint8_t *)p + 18, v) +#define RDD_SYSTEM_CONFIGURATION_DS_RATE_SHAPER_TIMER_READ(r, p) MREAD_16((uint8_t *)p + 20, r) +#define RDD_SYSTEM_CONFIGURATION_DS_RATE_SHAPER_TIMER_WRITE(v, p) MWRITE_16((uint8_t *)p + 20, v) +#define RDD_SYSTEM_CONFIGURATION_US_RATE_CONTROLLER_TIMER_READ(r, p) MREAD_16((uint8_t *)p + 22, r) +#define RDD_SYSTEM_CONFIGURATION_US_RATE_CONTROLLER_TIMER_WRITE(v, p) MWRITE_16((uint8_t *)p + 22, v) +#define RDD_SYSTEM_CONFIGURATION_US_RATE_LIMIT_SUSTAIN_BUDGET_LIMIT_READ(r, p) MREAD_8((uint8_t *)p + 24, r) +#define RDD_SYSTEM_CONFIGURATION_US_RATE_LIMIT_SUSTAIN_BUDGET_LIMIT_WRITE(v, p) MWRITE_8((uint8_t *)p + 24, v) +#define RDD_SYSTEM_CONFIGURATION_HASH_BASED_FORWARDING_PORT_COUNT_READ(r, p) MREAD_8((uint8_t *)p + 25, r) +#define RDD_SYSTEM_CONFIGURATION_HASH_BASED_FORWARDING_PORT_COUNT_WRITE(v, p) MWRITE_8((uint8_t *)p + 25, v) +#define RDD_SYSTEM_CONFIGURATION_INTER_LAN_SCHEDULING_MODE_READ(r, p) MREAD_8((uint8_t *)p + 26, r) +#define RDD_SYSTEM_CONFIGURATION_INTER_LAN_SCHEDULING_MODE_WRITE(v, p) MWRITE_8((uint8_t *)p + 26, v) +#define RDD_SYSTEM_CONFIGURATION_BROADCOM_SWITCH_PORT_READ(r, p) MREAD_8((uint8_t *)p + 27, r) +#define RDD_SYSTEM_CONFIGURATION_BROADCOM_SWITCH_PORT_WRITE(v, p) MWRITE_8((uint8_t *)p + 27, v) +#define RDD_SYSTEM_CONFIGURATION_MIRRORING_PORT_READ(r, p) MREAD_8((uint8_t *)p + 28, r) +#define RDD_SYSTEM_CONFIGURATION_MIRRORING_PORT_WRITE(v, p) MWRITE_8((uint8_t *)p + 28, v) +#define RDD_SYSTEM_CONFIGURATION_DS_CONNECTION_MISS_ACTION_READ(r, p) MREAD_8((uint8_t *)p + 29, r) +#define RDD_SYSTEM_CONFIGURATION_DS_CONNECTION_MISS_ACTION_WRITE(v, p) MWRITE_8((uint8_t *)p + 29, v) +#define RDD_SYSTEM_CONFIGURATION_US_PCI_FLOW_CACHE_ENABLE_READ(r, p) MREAD_8((uint8_t *)p + 30, r) +#define RDD_SYSTEM_CONFIGURATION_US_PCI_FLOW_CACHE_ENABLE_WRITE(v, p) MWRITE_8((uint8_t *)p + 30, v) +#define RDD_SYSTEM_CONFIGURATION_GLOBAL_INGRESS_CONFIG_READ(r, p) MREAD_8((uint8_t *)p + 31, r) +#define RDD_SYSTEM_CONFIGURATION_GLOBAL_INGRESS_CONFIG_WRITE(v, p) MWRITE_8((uint8_t *)p + 31, v) +#define RDD_SYSTEM_CONFIGURATION_PCI_LS_DP_ELIGIBILITY_VECTOR_READ(r, p) MREAD_16((uint8_t *)p + 32, r) +#define RDD_SYSTEM_CONFIGURATION_PCI_LS_DP_ELIGIBILITY_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p + 32, v) +#define RDD_SYSTEM_CONFIGURATION_DS_INGRESS_POLICERS_MODE_READ(r, p) MREAD_8((uint8_t *)p + 34, r) +#define RDD_SYSTEM_CONFIGURATION_DS_INGRESS_POLICERS_MODE_WRITE(v, p) MWRITE_8((uint8_t *)p + 34, v) +#define RDD_SYSTEM_CONFIGURATION_DEBUG_MODE_READ(r, p) MREAD_8((uint8_t *)p + 35, r) +#define RDD_SYSTEM_CONFIGURATION_DEBUG_MODE_WRITE(v, p) MWRITE_8((uint8_t *)p + 35, v) +#if defined DSL_63138 + +#define RDD_GSO_TX_DHD_L2_BUFFER_SIZE 22 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_GSO_TX_DHD_L2_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_TX_DHD_L2_BUFFER_DTS; + +#define RDD_GSO_TX_DHD_L2_BUFFER_PTR() ( RDD_GSO_TX_DHD_L2_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_TX_DHD_L2_BUFFER_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPTV_COUNTERS_BUFFER_DTS; + +#if defined DSL_63138 + +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_INGRESS_QUEUE_DTS; + +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_PTR() ( RDD_DS_DHD_TX_POST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_INGRESS_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t sa_desc_idx :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_SA_DESC_CAM_DTS; + +#define RDD_IPSEC_SA_DESC_CAM_SA_DESC_IDX_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_IPSEC_SA_DESC_CAM_SA_DESC_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_IPSEC_SA_DESC_CAM_SA_DESC_IDX_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_IPSEC_SA_DESC_CAM_SA_DESC_IDX_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#if defined DSL_63138 + +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_CAM_DTS entry[ RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_SA_DESC_CAM_TABLE_DTS; + +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_PTR() ( RDD_IPSEC_DS_SA_DESC_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_SA_DESC_CAM_TABLE_ADDRESS ) + +#endif +#define RDD_SIXTEEN_BYTES_RESERVED_FW_ONLY_NUMBER 4 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_SIXTEEN_BYTES_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SIXTEEN_BYTES_DTS; + +#define RDD_RUNNER_FLOW_IH_RESPONSE_RESERVED_FW_ONLY_NUMBER 2 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_RUNNER_FLOW_IH_RESPONSE_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FLOW_IH_RESPONSE_DTS; + +#define RDD_GSO_DESC_ENTRY_FRAG_DATA_NUMBER 18 +#define RDD_GSO_DESC_ENTRY_FRAG_LEN_NUMBER 18 + +typedef struct +{ + uint32_t data :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t linear_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mss :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_allocated :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t nr_frags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t frag_data[RDD_GSO_DESC_ENTRY_FRAG_DATA_NUMBER]; + uint16_t frag_len[RDD_GSO_DESC_ENTRY_FRAG_LEN_NUMBER]; + uint32_t reserved2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_DESC_ENTRY_DTS; + +#define RDD_GSO_DESC_ENTRY_DATA_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_GSO_DESC_ENTRY_DATA_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_GSO_DESC_ENTRY_LEN_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_GSO_DESC_ENTRY_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_GSO_DESC_ENTRY_LINEAR_LEN_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_GSO_DESC_ENTRY_LINEAR_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_GSO_DESC_ENTRY_MSS_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_GSO_DESC_ENTRY_MSS_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_GSO_DESC_ENTRY_IS_ALLOCATED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 0, 1, r) +#define RDD_GSO_DESC_ENTRY_IS_ALLOCATED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 0, 1, v) +#define RDD_GSO_DESC_ENTRY_NR_FRAGS_READ(r, p) MREAD_8((uint8_t *)p + 11, r) +#define RDD_GSO_DESC_ENTRY_NR_FRAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 11, v) +#define RDD_GSO_DESC_ENTRY_FRAG_DATA_READ(r, p, i) MREAD_I_32((uint8_t *)p + 16, i, r) +#define RDD_GSO_DESC_ENTRY_FRAG_DATA_WRITE(v, p, i) MWRITE_I_32((uint8_t *)p + 16, i, v) +#define RDD_GSO_DESC_ENTRY_FRAG_LEN_READ(r, p, i) FIELD_MREAD_I_32((uint8_t *)p + 88, 8, 16, i, r) +#define RDD_GSO_DESC_ENTRY_FRAG_LEN_WRITE(v, p, i) FIELD_MWRITE_I_32((uint8_t *)p + 88, 8, 16, i, v) +#if defined DSL_63138 + +#define RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_INGRESS_QUEUE_DTS; + +#define RDD_WLAN_MCAST_INGRESS_QUEUE_PTR() ( RDD_WLAN_MCAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + WLAN_MCAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_CAM_DTS entry[ RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_US_SA_DESC_CAM_TABLE_DTS; + +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_PTR() ( RDD_IPSEC_US_SA_DESC_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_US_SA_DESC_CAM_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE 5 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t status_vector :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_EMACS_STATUS_ENTRY_DTS; + +#define RDD_ETH_TX_EMACS_STATUS_ENTRY_STATUS_VECTOR_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_ETH_TX_EMACS_STATUS_ENTRY_STATUS_VECTOR_WRITE(v, p) MWRITE_8((uint8_t *)p, v) + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_PICO_INGRESS_QUEUE_PTR_DTS; + +#if defined DSL_63138 + +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_RX_NORMAL_DESCRIPTORS_DTS; + +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_PTR() ( RDD_GPON_RX_NORMAL_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GPON_RX_NORMAL_DESCRIPTORS_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_CPU_TX_DHD_L2_BUFFER_SIZE 22 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_L2_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_L2_BUFFER_DTS; + +#define RDD_CPU_TX_DHD_L2_BUFFER_PTR() ( RDD_CPU_TX_DHD_L2_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_DHD_L2_BUFFER_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_DTS; + + +typedef struct +{ + uint8_t egress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_HASH_BASED_FORWARDING_PORT_ENTRY_DTS; + +#define RDD_HASH_BASED_FORWARDING_PORT_ENTRY_EGRESS_PORT_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_HASH_BASED_FORWARDING_PORT_ENTRY_EGRESS_PORT_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE 4 +typedef struct +{ + RDD_HASH_BASED_FORWARDING_PORT_ENTRY_DTS entry[ RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_HASH_BASED_FORWARDING_PORT_TABLE_DTS; + +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_PTR() ( RDD_HASH_BASED_FORWARDING_PORT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + HASH_BASED_FORWARDING_PORT_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved_fw_only :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FIREWALL_IPV6_R16_BUFFER_ENTRY_DTS; + + +typedef struct +{ + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_buffer :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t radio_idx :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wifi_ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_id :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t spd_svc_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eth_tx_queue :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_CONTEXT_ENTRY_DTS; + +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_DATA_BUF_PTR_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_DATA_BUF_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_DATA_BUF_LEN_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_DATA_BUF_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_L2_BUFFER_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_L2_BUFFER_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_RADIO_IDX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 6, 2, r) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_RADIO_IDX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 6, 2, v) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_WIFI_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 2, 4, r) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_WIFI_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 2, 4, v) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_FLOW_RING_ID_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 0, 10, r) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_FLOW_RING_ID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 0, 10, v) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_SPD_SVC_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 14, 0, 1, r) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_SPD_SVC_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 14, 0, 1, v) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_ETH_TX_QUEUE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 15, 0, 3, r) +#define RDD_DHD_TX_POST_CONTEXT_ENTRY_ETH_TX_QUEUE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 15, 0, 3, v) + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_PICO_INGRESS_QUEUE_PTR_DTS; + + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BPM_DDR_BUFFER_HEADROOM_SIZE_DTS; + + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_DTS; + + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_FAST_INGRESS_QUEUE_PTR_DTS; + + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PARALLEL_PROCESSING_IH_BUFFER_PTR_DTS; + + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ANY_SRC_PORT_FLOW_COUNTER_DTS; + +#if defined DSL_63138 + +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_TX_DHD_HOST_BUF_PTR_DTS; + +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_PTR() ( RDD_GSO_TX_DHD_HOST_BUF_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_TX_DHD_HOST_BUF_PTR_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_HOST_BUF_PTR_DTS; + +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_PTR() ( RDD_CPU_TX_DHD_HOST_BUF_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_DHD_HOST_BUF_PTR_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_PHYSICAL_PORT_DTS; + + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_CONGESTION_STATE_ENTRY_DTS; + + +typedef struct +{ + uint8_t dummy_store :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DUMMY_STORE_ENTRY_DTS; + +#define RDD_DUMMY_STORE_ENTRY_DUMMY_STORE_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_DUMMY_STORE_ENTRY_DUMMY_STORE_WRITE(v, p) MWRITE_8((uint8_t *)p, v) + +typedef struct +{ + uint8_t emac_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_INTER_LAN_SCHEDULING_OFFSET_ENTRY_DTS; + +#define RDD_ETH_TX_INTER_LAN_SCHEDULING_OFFSET_ENTRY_EMAC_OFFSET_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_ETH_TX_INTER_LAN_SCHEDULING_OFFSET_ENTRY_EMAC_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p, v) + +typedef struct +{ + uint8_t reserved :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t fc_tcp_ack_mflows :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t fc_accel_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_GLOBAL_CFG_ENTRY_DTS; + +#define RDD_FC_GLOBAL_CFG_ENTRY_FC_TCP_ACK_MFLOWS_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 1, r) +#define RDD_FC_GLOBAL_CFG_ENTRY_FC_TCP_ACK_MFLOWS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 1, v) +#define RDD_FC_GLOBAL_CFG_ENTRY_FC_ACCEL_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 1, r) +#define RDD_FC_GLOBAL_CFG_ENTRY_FC_ACCEL_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 1, v) + +typedef struct +{ + uint8_t reserved0 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t available_slave3 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t available_slave2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t available_slave1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t available_slave0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_DTS; + +#define RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE3_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 1, r) +#define RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE3_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 1, v) +#define RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE2_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 1, r) +#define RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE2_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 1, v) +#define RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE1_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 1, r) +#define RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 1, v) +#define RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE0_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 1, r) +#define RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 1, v) +/* PRIVATE_B */ +#if defined DSL_63138 + +#define RDD_US_INGRESS_HANDLER_BUFFER_SIZE 32 +typedef struct +{ + RDD_IH_BUFFER_DTS entry[ RDD_US_INGRESS_HANDLER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_HANDLER_BUFFER_DTS; + +#define RDD_US_INGRESS_HANDLER_BUFFER_PTR() ( RDD_US_INGRESS_HANDLER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_HANDLER_BUFFER_ADDRESS ) + +#endif +#define RDD_CSO_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER 32 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_CSO_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CSO_BUFFER_ENTRY_DTS; + +#define RDD_CSO_PSEUDO_HEADER_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER 10 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_CSO_PSEUDO_HEADER_BUFFER_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CSO_PSEUDO_HEADER_BUFFER_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_PTR() ( RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_ADDRESS ) + +#if defined DSL_63138 + +#define RDD_US_CPU_REASON_TO_METER_TABLE_SIZE 64 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_US_CPU_REASON_TO_METER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_REASON_TO_METER_TABLE_DTS; + +#define RDD_US_CPU_REASON_TO_METER_TABLE_PTR() ( RDD_US_CPU_REASON_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_REASON_TO_METER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_MAIN_PROFILING_BUFFER_RUNNER_DTS; + +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_PTR() ( RDD_US_MAIN_PROFILING_BUFFER_RUNNER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_LOOKUP_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE ][ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_QUEUE_PROFILE_TABLE_SIZE 8 +typedef struct +{ + RDD_QUEUE_PROFILE_DTS entry[ RDD_US_QUEUE_PROFILE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_QUEUE_PROFILE_TABLE_DTS; + +#define RDD_US_QUEUE_PROFILE_TABLE_PTR() ( RDD_US_QUEUE_PROFILE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_QUEUE_PROFILE_TABLE_ADDRESS ) + +#endif +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLER_ADDR_NUMBER 4 + +typedef struct +{ + uint32_t reserved0 :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_limiter_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_limiter_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t schedule :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_destination :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controllers_status :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controllers_sustain_vector :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controllers_peak_vector :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_burst_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_scheduling_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ack_pending_epon :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ack_pending :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t byte_counter :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t rate_controller_addr[RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLER_ADDR_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_CHANNEL_8_39_DESCRIPTOR_DTS; + +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_LIMITER_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 1, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_LIMITER_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 1, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_LIMITER_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 1, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_LIMITER_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 1, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_SCHEDULE_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_SCHEDULE_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_BBH_DESTINATION_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_BBH_DESTINATION_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLERS_STATUS_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLERS_STATUS_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLERS_SUSTAIN_VECTOR_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLERS_SUSTAIN_VECTOR_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLERS_PEAK_VECTOR_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLERS_PEAK_VECTOR_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_PEAK_BURST_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 16, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_PEAK_BURST_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 16, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_PEAK_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 18, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_PEAK_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 18, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_PEAK_SCHEDULING_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 19, 7, 1, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_PEAK_SCHEDULING_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 19, 7, 1, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_ACK_PENDING_EPON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 19, 1, 1, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_ACK_PENDING_EPON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 19, 1, 1, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_ACK_PENDING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 19, 0, 1, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_ACK_PENDING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 19, 0, 1, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_BYTE_COUNTER_READ(r, p) MREAD_32((uint8_t *)p + 20, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_BYTE_COUNTER_WRITE(v, p) MWRITE_32((uint8_t *)p + 20, v) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLER_ADDR_READ(r, p, i) MREAD_I_16((uint8_t *)p + 24, i, r) +#define RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLER_ADDR_WRITE(v, p, i) MWRITE_I_16((uint8_t *)p + 24, i, v) +#if defined DSL_63138 + +#define RDD_WAN_CHANNELS_8_39_TABLE_SIZE 32 +typedef struct +{ + RDD_WAN_CHANNEL_8_39_DESCRIPTOR_DTS entry[ RDD_WAN_CHANNELS_8_39_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_CHANNELS_8_39_TABLE_DTS; + +#define RDD_WAN_CHANNELS_8_39_TABLE_PTR() ( RDD_WAN_CHANNELS_8_39_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_CHANNELS_8_39_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE 3 +typedef struct +{ + RDD_RUNNER_FLOW_HEADER_BUFFER_DTS entry[ RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RUNNER_FLOW_HEADER_BUFFER_DTS; + +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_PTR() ( RDD_US_RUNNER_FLOW_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RUNNER_FLOW_HEADER_BUFFER_ADDRESS ) + +#endif +#define RDD_US_POLICER_TABLE_PTR() ( RDD_US_POLICER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_POLICER_TABLE_ADDRESS ) + +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_TX_QUEUE_ADDR_NUMBER 32 +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_RESERVED_NUMBER 12 + +typedef struct +{ + uint32_t queues_status :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_limiter_status :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sustain_vector :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_vector :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t tx_queue_addr[RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_TX_QUEUE_ADDR_NUMBER]; + uint32_t reserved[RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_RESERVED_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_DTS; + +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_QUEUES_STATUS_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_QUEUES_STATUS_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_RATE_LIMITER_STATUS_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_RATE_LIMITER_STATUS_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_SUSTAIN_VECTOR_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_SUSTAIN_VECTOR_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_PEAK_VECTOR_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_PEAK_VECTOR_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_TX_QUEUE_ADDR_READ(r, p, i) MREAD_I_16((uint8_t *)p + 16, i, r) +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_TX_QUEUE_ADDR_WRITE(v, p, i) MWRITE_I_16((uint8_t *)p + 16, i, v) +#if defined DSL_63138 + +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE 2 +typedef struct +{ + RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_DTS entry[ RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_DTS; + +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_PTR() ( RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved0 :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ptm_bonding :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t traffic_class_to_queue_table_index :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_channel_id :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pbits_to_queue_table_index :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t crc_calc :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_port_id_or_fstat :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_WAN_FLOW_ENTRY_DTS; + +#define RDD_US_WAN_FLOW_ENTRY_PTM_BONDING_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 1, r) +#define RDD_US_WAN_FLOW_ENTRY_PTM_BONDING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 1, v) +#define RDD_US_WAN_FLOW_ENTRY_TRAFFIC_CLASS_TO_QUEUE_TABLE_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 3, r) +#define RDD_US_WAN_FLOW_ENTRY_TRAFFIC_CLASS_TO_QUEUE_TABLE_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 3, v) +#define RDD_US_WAN_FLOW_ENTRY_WAN_CHANNEL_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 6, r) +#define RDD_US_WAN_FLOW_ENTRY_WAN_CHANNEL_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 6, v) +#define RDD_US_WAN_FLOW_ENTRY_PBITS_TO_QUEUE_TABLE_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 5, 3, r) +#define RDD_US_WAN_FLOW_ENTRY_PBITS_TO_QUEUE_TABLE_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 5, 3, v) +#define RDD_US_WAN_FLOW_ENTRY_CRC_CALC_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 4, 1, r) +#define RDD_US_WAN_FLOW_ENTRY_CRC_CALC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 4, 1, v) +#define RDD_US_WAN_FLOW_ENTRY_WAN_PORT_ID_OR_FSTAT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 12, r) +#define RDD_US_WAN_FLOW_ENTRY_WAN_PORT_ID_OR_FSTAT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 12, v) +#if defined DSL_63138 + +#define RDD_US_WAN_FLOW_TABLE_SIZE 256 +typedef struct +{ + RDD_US_WAN_FLOW_ENTRY_DTS entry[ RDD_US_WAN_FLOW_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_WAN_FLOW_TABLE_DTS; + +#define RDD_US_WAN_FLOW_TABLE_PTR() ( RDD_US_WAN_FLOW_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_WAN_FLOW_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_DTS entry[ RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_BBH_DESCRIPTORS_DTS; + +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_PTR() ( RDD_US_CPU_TX_BBH_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_BBH_DESCRIPTORS_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 16 +typedef struct +{ + RDD_FORWARDING_MATRIX_ENTRY_DTS entry[ RDD_US_FORWARDING_MATRIX_TABLE_SIZE ][ RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FORWARDING_MATRIX_TABLE_DTS; + +#define RDD_US_FORWARDING_MATRIX_TABLE_PTR() ( RDD_US_FORWARDING_MATRIX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FORWARDING_MATRIX_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +typedef struct +{ + RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_DTS entry[ RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined DSL_63138 + +typedef struct +{ + uint16_t port_sel :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t reserved0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t pkt_eop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t frag_size :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DSL_PTM_BOND_TX_HDR_ENTRY_DTS; + +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_PORT_SEL_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_PORT_SEL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_PKT_EOP_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 1, r) +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_PKT_EOP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 1, v) +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_FRAG_SIZE_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 12, r) +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_FRAG_SIZE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 12, v) +#endif +#if defined DSL_63138 + +#define RDD_DSL_PTM_BOND_TX_HDR_TABLE_SIZE 32 +typedef struct +{ + RDD_DSL_PTM_BOND_TX_HDR_ENTRY_DTS entry[ RDD_DSL_PTM_BOND_TX_HDR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DSL_PTM_BOND_TX_HDR_TABLE_DTS; + +#define RDD_DSL_PTM_BOND_TX_HDR_TABLE_PTR() ( RDD_DSL_PTM_BOND_TX_HDR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DSL_PTM_BOND_TX_HDR_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t queue :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t rate_controller :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_QUEUE_ENTRY_DTS; + +#define RDD_US_QUEUE_ENTRY_QUEUE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 3, r) +#define RDD_US_QUEUE_ENTRY_QUEUE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 3, v) +#define RDD_US_QUEUE_ENTRY_RATE_CONTROLLER_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 5, r) +#define RDD_US_QUEUE_ENTRY_RATE_CONTROLLER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 5, v) +#if defined DSL_63138 + +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 8 +typedef struct +{ + RDD_US_QUEUE_ENTRY_DTS entry[ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE ][ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_DTS; + +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_PTR() ( RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TRAFFIC_CLASS_TO_QUEUE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_RATE_LIMITER_TABLE_SIZE 16 +typedef struct +{ + RDD_RATE_LIMITER_ENTRY_DTS entry[ RDD_US_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RATE_LIMITER_TABLE_DTS; + +#define RDD_US_RATE_LIMITER_TABLE_PTR() ( RDD_US_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#define RDD_US_CPU_RX_METER_TABLE_PTR() ( RDD_US_CPU_RX_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_METER_TABLE_ADDRESS ) + +#if defined DSL_63138 + +#define RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_DTS entry[ RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_CONTEXT_BUFFER_DTS; + +#define RDD_US_CONNECTION_CONTEXT_BUFFER_PTR() ( RDD_US_CONNECTION_CONTEXT_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CONNECTION_CONTEXT_BUFFER_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t vlan_cmd_index :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t qos_rule_match :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t qos_rule_overrun_wan_flow_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_flow_mapping_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_flow_mapping_table :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t opbit_remark_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipbit_remark_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t qos_mapping_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t traffic_class :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t trap_reason :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t policer_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t policer_id :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controller :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dei_remark_enable :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dei_value :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ic_ip_flow :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_pbit :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_pbit :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dscp_remarking_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dscp :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ecn :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_VLAN_CMD_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 7, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_VLAN_CMD_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 7, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_QOS_RULE_MATCH_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_QOS_RULE_MATCH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_QOS_RULE_OVERRUN_WAN_FLOW_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 7, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_QOS_RULE_OVERRUN_WAN_FLOW_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 7, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_WAN_FLOW_MAPPING_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 6, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_WAN_FLOW_MAPPING_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 6, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_WAN_FLOW_MAPPING_TABLE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 3, 3, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_WAN_FLOW_MAPPING_TABLE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 3, 3, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_OPBIT_REMARK_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 2, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_OPBIT_REMARK_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 2, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_IPBIT_REMARK_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 1, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_IPBIT_REMARK_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 1, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_QOS_MAPPING_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_QOS_MAPPING_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_WAN_FLOW_READ(r, p) MREAD_8((uint8_t *)p + 2, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_WAN_FLOW_WRITE(v, p) MWRITE_8((uint8_t *)p + 2, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_TRAFFIC_CLASS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 5, 3, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_TRAFFIC_CLASS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 5, 3, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_TRAP_REASON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 3, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_TRAP_REASON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 3, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DROP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DROP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_CPU_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_CPU_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_POLICER_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 5, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_POLICER_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 5, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_POLICER_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 1, 4, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_POLICER_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 1, 4, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_RATE_CONTROLLER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 2, 5, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_RATE_CONTROLLER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 2, 5, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DEI_REMARK_ENABLE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DEI_REMARK_ENABLE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DEI_VALUE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DEI_VALUE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_IC_IP_FLOW_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_IC_IP_FLOW_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_OUTER_PBIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 4, 3, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_OUTER_PBIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 4, 3, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_INNER_PBIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 1, 3, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_INNER_PBIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 1, 3, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DSCP_REMARKING_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 0, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DSCP_REMARKING_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 0, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DSCP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 2, 6, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DSCP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 2, 6, v) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_ECN_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 2, r) +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_ECN_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 2, v) +#if defined DSL_63138 + +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +typedef struct +{ + RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS ) + +#endif +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLER_ADDR_NUMBER 32 + +typedef struct +{ + uint32_t reserved0 :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_limiter_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_limiter_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t schedule :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_destination :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controllers_status :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controllers_sustain_vector :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controllers_peak_vector :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_burst_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_scheduling_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ack_pending_epon :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ack_pending :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t byte_counter :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t rate_controller_addr[RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLER_ADDR_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_CHANNEL_0_7_DESCRIPTOR_DTS; + +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_LIMITER_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 1, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_LIMITER_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 1, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_LIMITER_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 1, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_LIMITER_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 1, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_SCHEDULE_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_SCHEDULE_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_BBH_DESTINATION_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_BBH_DESTINATION_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLERS_STATUS_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLERS_STATUS_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLERS_SUSTAIN_VECTOR_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLERS_SUSTAIN_VECTOR_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLERS_PEAK_VECTOR_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLERS_PEAK_VECTOR_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_PEAK_BURST_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 16, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_PEAK_BURST_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 16, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_PEAK_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 18, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_PEAK_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 18, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_PEAK_SCHEDULING_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 19, 7, 1, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_PEAK_SCHEDULING_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 19, 7, 1, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_ACK_PENDING_EPON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 19, 1, 1, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_ACK_PENDING_EPON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 19, 1, 1, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_ACK_PENDING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 19, 0, 1, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_ACK_PENDING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 19, 0, 1, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_BYTE_COUNTER_READ(r, p) MREAD_32((uint8_t *)p + 20, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_BYTE_COUNTER_WRITE(v, p) MWRITE_32((uint8_t *)p + 20, v) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLER_ADDR_READ(r, p, i) MREAD_I_16((uint8_t *)p + 24, i, r) +#define RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLER_ADDR_WRITE(v, p, i) MWRITE_I_16((uint8_t *)p + 24, i, v) +#if defined DSL_63138 + +#define RDD_WAN_CHANNELS_0_7_TABLE_SIZE 8 +typedef struct +{ + RDD_WAN_CHANNEL_0_7_DESCRIPTOR_DTS entry[ RDD_WAN_CHANNELS_0_7_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_CHANNELS_0_7_TABLE_DTS; + +#define RDD_WAN_CHANNELS_0_7_TABLE_PTR() ( RDD_WAN_CHANNELS_0_7_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_CHANNELS_0_7_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_L2_UCAST_CONNECTION_BUFFER_SIZE 4 +typedef struct +{ + RDD_FC_L2_UCAST_CONNECTION_ENTRY_DTS entry[ RDD_US_L2_UCAST_CONNECTION_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_L2_UCAST_CONNECTION_BUFFER_DTS; + +#define RDD_US_L2_UCAST_CONNECTION_BUFFER_PTR() ( RDD_US_L2_UCAST_CONNECTION_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_L2_UCAST_CONNECTION_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_DTS; + +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_PTR() ( RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_CONNECTION_CACHE_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_US_CONNECTION_CACHE_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_CACHE_BUFFER_DTS; + +#define RDD_US_CONNECTION_CACHE_BUFFER_PTR() ( RDD_US_CONNECTION_CACHE_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CONNECTION_CACHE_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE ][ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS ) + +#endif +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + + +typedef struct +{ + uint32_t msg_type :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t if_id :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t common_hdr_flags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t epoch :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t meta_buf_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t metadata_buf_addr_low :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t metadata_buf_addr_hi :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_addr_low :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_addr_hi :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_DESCRIPTOR_DTS; + +#define RDD_DHD_RX_POST_DESCRIPTOR_MSG_TYPE_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_MSG_TYPE_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_MSG_TYPE_L_READ( wv ) FIELD_GET( wv, 24, 8 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_MSG_TYPE_L_WRITE( v, wv ) FIELD_SET( v, 24, 8, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_IF_ID_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_IF_ID_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_IF_ID_L_READ( wv ) FIELD_GET( wv, 16, 8 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_IF_ID_L_WRITE( v, wv ) FIELD_SET( v, 16, 8, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_COMMON_HDR_FLAGS_READ(r, p) MREAD_8((uint8_t *)p + 2, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_COMMON_HDR_FLAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 2, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_COMMON_HDR_FLAGS_L_READ( wv ) FIELD_GET( wv, 8, 8 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_COMMON_HDR_FLAGS_L_WRITE( v, wv ) FIELD_SET( v, 8, 8, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_EPOCH_READ(r, p) MREAD_8((uint8_t *)p + 3, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_EPOCH_WRITE(v, p) MWRITE_8((uint8_t *)p + 3, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_EPOCH_L_READ( wv ) FIELD_GET( wv, 0, 8 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_EPOCH_L_WRITE( v, wv ) FIELD_SET( v, 0, 8, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_REQUEST_ID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_REQUEST_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_META_BUF_LEN_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_META_BUF_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_META_BUF_LEN_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_META_BUF_LEN_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_LEN_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_LEN_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_LEN_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_METADATA_BUF_ADDR_LOW_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_METADATA_BUF_ADDR_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_METADATA_BUF_ADDR_LOW_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_METADATA_BUF_ADDR_LOW_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_METADATA_BUF_ADDR_HI_READ(r, p) MREAD_32((uint8_t *)p + 20, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_METADATA_BUF_ADDR_HI_WRITE(v, p) MWRITE_32((uint8_t *)p + 20, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_METADATA_BUF_ADDR_HI_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_METADATA_BUF_ADDR_HI_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_BUF_ADDR_LOW_READ(r, p) MREAD_32((uint8_t *)p + 24, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_BUF_ADDR_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p + 24, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_BUF_ADDR_LOW_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_BUF_ADDR_LOW_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_BUF_ADDR_HI_READ(r, p) MREAD_32((uint8_t *)p + 28, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_BUF_ADDR_HI_WRITE(v, p) MWRITE_32((uint8_t *)p + 28, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_BUF_ADDR_HI_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_DATA_BUF_ADDR_HI_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) + +typedef struct +{ + uint32_t msg_type :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t if_id :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t common_hdr_flags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t epoch :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t compl_msg_hdr_status :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t meta_buf_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_offset :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flags :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_status_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_status_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dma_done_mark :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_DESCRIPTOR_DTS; + +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_MSG_TYPE_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_MSG_TYPE_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_MSG_TYPE_L_READ( wv ) FIELD_GET( wv, 24, 8 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_MSG_TYPE_L_WRITE( v, wv ) FIELD_SET( v, 24, 8, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_IF_ID_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_IF_ID_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_IF_ID_L_READ( wv ) FIELD_GET( wv, 16, 8 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_IF_ID_L_WRITE( v, wv ) FIELD_SET( v, 16, 8, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_COMMON_HDR_FLAGS_READ(r, p) MREAD_8((uint8_t *)p + 2, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_COMMON_HDR_FLAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 2, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_COMMON_HDR_FLAGS_L_READ( wv ) FIELD_GET( wv, 8, 8 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_COMMON_HDR_FLAGS_L_WRITE( v, wv ) FIELD_SET( v, 8, 8, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_EPOCH_READ(r, p) MREAD_8((uint8_t *)p + 3, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_EPOCH_WRITE(v, p) MWRITE_8((uint8_t *)p + 3, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_EPOCH_L_READ( wv ) FIELD_GET( wv, 0, 8 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_EPOCH_L_WRITE( v, wv ) FIELD_SET( v, 0, 8, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_REQUEST_ID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_REQUEST_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_COMPL_MSG_HDR_STATUS_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_COMPL_MSG_HDR_STATUS_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_COMPL_MSG_HDR_STATUS_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_COMPL_MSG_HDR_STATUS_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_FLOW_RING_ID_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_FLOW_RING_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_FLOW_RING_ID_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_FLOW_RING_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_META_BUF_LEN_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_META_BUF_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_META_BUF_LEN_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_META_BUF_LEN_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DATA_LEN_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DATA_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DATA_LEN_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DATA_LEN_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DATA_OFFSET_READ(r, p) MREAD_16((uint8_t *)p + 16, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DATA_OFFSET_WRITE(v, p) MWRITE_16((uint8_t *)p + 16, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DATA_OFFSET_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DATA_OFFSET_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_FLAGS_READ(r, p) MREAD_16((uint8_t *)p + 18, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_FLAGS_WRITE(v, p) MWRITE_16((uint8_t *)p + 18, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_FLAGS_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_FLAGS_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_RX_STATUS_0_READ(r, p) MREAD_32((uint8_t *)p + 20, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_RX_STATUS_0_WRITE(v, p) MWRITE_32((uint8_t *)p + 20, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_RX_STATUS_0_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_RX_STATUS_0_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_RX_STATUS_1_READ(r, p) MREAD_32((uint8_t *)p + 24, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_RX_STATUS_1_WRITE(v, p) MWRITE_32((uint8_t *)p + 24, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_RX_STATUS_1_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_RX_STATUS_1_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DMA_DONE_MARK_READ(r, p) MREAD_32((uint8_t *)p + 28, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DMA_DONE_MARK_WRITE(v, p) MWRITE_32((uint8_t *)p + 28, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DMA_DONE_MARK_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_DMA_DONE_MARK_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) + +typedef struct +{ + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_buf_addr_low :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_DESCRIPTOR_CWI32_DTS; + +#define RDD_DHD_RX_POST_DESCRIPTOR_CWI32_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_CWI32_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_CWI32_REQUEST_ID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_CWI32_REQUEST_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_RX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_LOW_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_RX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_RX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_LOW_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_POST_DESCRIPTOR_CWI32_DATA_BUF_ADDR_LOW_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) + +typedef struct +{ + uint32_t flags :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t if_id :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DTS; + +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_FLAGS_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 3, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_FLAGS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 3, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_FLAGS_L_READ( wv ) FIELD_GET( wv, 29, 3 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_FLAGS_L_WRITE( v, wv ) FIELD_SET( v, 29, 3, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_IF_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 5, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_IF_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 5, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_IF_ID_L_READ( wv ) FIELD_GET( wv, 24, 5 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_IF_ID_L_WRITE( v, wv ) FIELD_SET( v, 24, 5, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DATA_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DATA_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DATA_OFFSET_L_READ( wv ) FIELD_GET( wv, 16, 8 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DATA_OFFSET_L_WRITE( v, wv ) FIELD_SET( v, 16, 8, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DATA_LEN_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DATA_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DATA_LEN_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DATA_LEN_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_REQUEST_ID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_REQUEST_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#if defined DSL_63138 + +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t current_budget :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop_threshold :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t xoff_threshold :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_budget_mantisa :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_budget_exponent :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t active_pause_flag :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbh_rx_address :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_RATE_LIMITER_ENTRY_DTS; + +#define RDD_INGRESS_RATE_LIMITER_ENTRY_CURRENT_BUDGET_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_CURRENT_BUDGET_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_DROP_THRESHOLD_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_DROP_THRESHOLD_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_XOFF_THRESHOLD_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_XOFF_THRESHOLD_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_ALLOCATED_BUDGET_MANTISA_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 2, 14, r) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_ALLOCATED_BUDGET_MANTISA_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 2, 14, v) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_ALLOCATED_BUDGET_EXPONENT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 2, r) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_ALLOCATED_BUDGET_EXPONENT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 2, v) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_ACTIVE_PAUSE_FLAG_READ(r, p) MREAD_8((uint8_t *)p + 14, r) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_ACTIVE_PAUSE_FLAG_WRITE(v, p) MWRITE_8((uint8_t *)p + 14, v) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_BBH_RX_ADDRESS_READ(r, p) MREAD_8((uint8_t *)p + 15, r) +#define RDD_INGRESS_RATE_LIMITER_ENTRY_BBH_RX_ADDRESS_WRITE(v, p) MWRITE_8((uint8_t *)p + 15, v) +#if defined DSL_63138 + +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE 5 +typedef struct +{ + RDD_INGRESS_RATE_LIMITER_ENTRY_DTS entry[ RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_RATE_LIMITER_TABLE_DTS; + +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_PTR() ( RDD_US_INGRESS_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_SIZE 8 +typedef struct +{ + RDD_DSL_PTM_BOND_TX_HDR_ENTRY_DTS entry[ RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_DTS; + +#define RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_PTR() ( RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_RX_PICO_INGRESS_QUEUE_DTS; + +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_PTR() ( RDD_US_CPU_RX_PICO_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_ROUTER_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_ROUTER_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_ROUTER_INGRESS_QUEUE_DTS; + +#define RDD_US_ROUTER_INGRESS_QUEUE_PTR() ( RDD_US_ROUTER_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_ROUTER_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 6 +typedef struct +{ + RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t reserved_fw_only :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_ABSOLUTE_TX_COUNTER_DTS; + +#if defined DSL_63138 + +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE 40 +typedef struct +{ + RDD_GPON_ABSOLUTE_TX_COUNTER_DTS entry[ RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_DTS; + +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_PTR() ( RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + GPON_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_GPE_COMMAND_PRIMITIVE_ENTRY_DTS entry[ RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_DTS; + +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_PTR() ( RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_RX_FAST_INGRESS_QUEUE_DTS; + +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_PTR() ( RDD_US_CPU_RX_FAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_DEBUG_BUFFER_SIZE 32 +typedef struct +{ + RDD_DEBUG_BUFFER_ENTRY_DTS entry[ RDD_US_DEBUG_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DEBUG_BUFFER_DTS; + +#define RDD_US_DEBUG_BUFFER_PTR() ( RDD_US_DEBUG_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DEBUG_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_FW_MAC_ADDRS_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_US_FW_MAC_ADDRS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FW_MAC_ADDRS_DTS; + +#define RDD_US_FW_MAC_ADDRS_PTR() ( RDD_US_FW_MAC_ADDRS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FW_MAC_ADDRS_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE 3 +typedef struct +{ + RDD_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS entry[ RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS; + +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_PTR() ( RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTE_1_DTS entry[ RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS; + +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_PTR() ( RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_TX_POST_INGRESS_QUEUE_DTS; + +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_PTR() ( RDD_US_DHD_TX_POST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DHD_TX_POST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_PTR() ( RDD_RUNNER_FWTRACE_MAINB_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + RUNNER_FWTRACE_MAINB_PARAM_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t wan_channel_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_ENTRY_DTS; + +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_ENTRY_WAN_CHANNEL_PTR_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_ENTRY_WAN_CHANNEL_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE 48 +typedef struct +{ + RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_ENTRY_DTS entry[ RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_DTS; + +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_PTR() ( RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_ADDRESS ) + +#endif +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined DSL_63138 + +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOB_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_PTR() ( RDD_RUNNER_FWTRACE_PICOB_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + RUNNER_FWTRACE_PICOB_PARAM_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t summary :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t linear_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_header_length :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_protocol :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_header_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_header_length :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_total_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipv4_csum :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_udp_header_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_udp_header_length :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_udp_total_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_udp_csum :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t max_chunk_length :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t chunk_bytes_left :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t nr_frags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t frag_index :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t frag_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t frag_data :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t good_csum_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t no_csum_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bad_ipv4_hdr_csum_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bad_tcp_udp_csum_packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fail_code :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dma_sync :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t seg_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t seg_bytes_left :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_bytes_left :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_0 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_1 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ddr_payload_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ddr_src_address :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t saved_ih_buffer_number :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t saved_csum32_ret_addr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t saved_r16 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CSO_CONTEXT_ENTRY_DTS; + +#define RDD_CSO_CONTEXT_ENTRY_SUMMARY_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_CSO_CONTEXT_ENTRY_SUMMARY_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_CSO_CONTEXT_ENTRY_LINEAR_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_CSO_CONTEXT_ENTRY_LINEAR_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_CSO_CONTEXT_ENTRY_PACKET_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_CSO_CONTEXT_ENTRY_PACKET_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_CSO_CONTEXT_ENTRY_PACKET_HEADER_LENGTH_READ(r, p) MREAD_8((uint8_t *)p + 8, r) +#define RDD_CSO_CONTEXT_ENTRY_PACKET_HEADER_LENGTH_WRITE(v, p) MWRITE_8((uint8_t *)p + 8, v) +#define RDD_CSO_CONTEXT_ENTRY_IP_PROTOCOL_READ(r, p) MREAD_8((uint8_t *)p + 9, r) +#define RDD_CSO_CONTEXT_ENTRY_IP_PROTOCOL_WRITE(v, p) MWRITE_8((uint8_t *)p + 9, v) +#define RDD_CSO_CONTEXT_ENTRY_IP_HEADER_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 10, r) +#define RDD_CSO_CONTEXT_ENTRY_IP_HEADER_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 10, v) +#define RDD_CSO_CONTEXT_ENTRY_IP_HEADER_LENGTH_READ(r, p) MREAD_8((uint8_t *)p + 11, r) +#define RDD_CSO_CONTEXT_ENTRY_IP_HEADER_LENGTH_WRITE(v, p) MWRITE_8((uint8_t *)p + 11, v) +#define RDD_CSO_CONTEXT_ENTRY_IP_TOTAL_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_CSO_CONTEXT_ENTRY_IP_TOTAL_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_CSO_CONTEXT_ENTRY_IPV4_CSUM_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_CSO_CONTEXT_ENTRY_IPV4_CSUM_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_CSO_CONTEXT_ENTRY_TCP_UDP_HEADER_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 16, r) +#define RDD_CSO_CONTEXT_ENTRY_TCP_UDP_HEADER_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 16, v) +#define RDD_CSO_CONTEXT_ENTRY_TCP_UDP_HEADER_LENGTH_READ(r, p) MREAD_8((uint8_t *)p + 17, r) +#define RDD_CSO_CONTEXT_ENTRY_TCP_UDP_HEADER_LENGTH_WRITE(v, p) MWRITE_8((uint8_t *)p + 17, v) +#define RDD_CSO_CONTEXT_ENTRY_TCP_UDP_TOTAL_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 18, r) +#define RDD_CSO_CONTEXT_ENTRY_TCP_UDP_TOTAL_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 18, v) +#define RDD_CSO_CONTEXT_ENTRY_TCP_UDP_CSUM_READ(r, p) MREAD_16((uint8_t *)p + 20, r) +#define RDD_CSO_CONTEXT_ENTRY_TCP_UDP_CSUM_WRITE(v, p) MWRITE_16((uint8_t *)p + 20, v) +#define RDD_CSO_CONTEXT_ENTRY_MAX_CHUNK_LENGTH_READ(r, p) MREAD_8((uint8_t *)p + 22, r) +#define RDD_CSO_CONTEXT_ENTRY_MAX_CHUNK_LENGTH_WRITE(v, p) MWRITE_8((uint8_t *)p + 22, v) +#define RDD_CSO_CONTEXT_ENTRY_CHUNK_BYTES_LEFT_READ(r, p) MREAD_8((uint8_t *)p + 23, r) +#define RDD_CSO_CONTEXT_ENTRY_CHUNK_BYTES_LEFT_WRITE(v, p) MWRITE_8((uint8_t *)p + 23, v) +#define RDD_CSO_CONTEXT_ENTRY_NR_FRAGS_READ(r, p) MREAD_8((uint8_t *)p + 24, r) +#define RDD_CSO_CONTEXT_ENTRY_NR_FRAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 24, v) +#define RDD_CSO_CONTEXT_ENTRY_FRAG_INDEX_READ(r, p) MREAD_8((uint8_t *)p + 25, r) +#define RDD_CSO_CONTEXT_ENTRY_FRAG_INDEX_WRITE(v, p) MWRITE_8((uint8_t *)p + 25, v) +#define RDD_CSO_CONTEXT_ENTRY_FRAG_LEN_READ(r, p) MREAD_16((uint8_t *)p + 26, r) +#define RDD_CSO_CONTEXT_ENTRY_FRAG_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 26, v) +#define RDD_CSO_CONTEXT_ENTRY_FRAG_DATA_READ(r, p) MREAD_32((uint8_t *)p + 28, r) +#define RDD_CSO_CONTEXT_ENTRY_FRAG_DATA_WRITE(v, p) MWRITE_32((uint8_t *)p + 28, v) +#define RDD_CSO_CONTEXT_ENTRY_GOOD_CSUM_PACKETS_READ(r, p) MREAD_32((uint8_t *)p + 32, r) +#define RDD_CSO_CONTEXT_ENTRY_GOOD_CSUM_PACKETS_WRITE(v, p) MWRITE_32((uint8_t *)p + 32, v) +#define RDD_CSO_CONTEXT_ENTRY_NO_CSUM_PACKETS_READ(r, p) MREAD_32((uint8_t *)p + 36, r) +#define RDD_CSO_CONTEXT_ENTRY_NO_CSUM_PACKETS_WRITE(v, p) MWRITE_32((uint8_t *)p + 36, v) +#define RDD_CSO_CONTEXT_ENTRY_BAD_IPV4_HDR_CSUM_PACKETS_READ(r, p) MREAD_32((uint8_t *)p + 40, r) +#define RDD_CSO_CONTEXT_ENTRY_BAD_IPV4_HDR_CSUM_PACKETS_WRITE(v, p) MWRITE_32((uint8_t *)p + 40, v) +#define RDD_CSO_CONTEXT_ENTRY_BAD_TCP_UDP_CSUM_PACKETS_READ(r, p) MREAD_32((uint8_t *)p + 44, r) +#define RDD_CSO_CONTEXT_ENTRY_BAD_TCP_UDP_CSUM_PACKETS_WRITE(v, p) MWRITE_32((uint8_t *)p + 44, v) +#define RDD_CSO_CONTEXT_ENTRY_FAIL_CODE_READ(r, p) MREAD_8((uint8_t *)p + 48, r) +#define RDD_CSO_CONTEXT_ENTRY_FAIL_CODE_WRITE(v, p) MWRITE_8((uint8_t *)p + 48, v) +#define RDD_CSO_CONTEXT_ENTRY_DMA_SYNC_READ(r, p) MREAD_8((uint8_t *)p + 49, r) +#define RDD_CSO_CONTEXT_ENTRY_DMA_SYNC_WRITE(v, p) MWRITE_8((uint8_t *)p + 49, v) +#define RDD_CSO_CONTEXT_ENTRY_SEG_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 50, r) +#define RDD_CSO_CONTEXT_ENTRY_SEG_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 50, v) +#define RDD_CSO_CONTEXT_ENTRY_SEG_BYTES_LEFT_READ(r, p) MREAD_16((uint8_t *)p + 52, r) +#define RDD_CSO_CONTEXT_ENTRY_SEG_BYTES_LEFT_WRITE(v, p) MWRITE_16((uint8_t *)p + 52, v) +#define RDD_CSO_CONTEXT_ENTRY_PAYLOAD_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 54, r) +#define RDD_CSO_CONTEXT_ENTRY_PAYLOAD_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 54, v) +#define RDD_CSO_CONTEXT_ENTRY_PAYLOAD_BYTES_LEFT_READ(r, p) MREAD_16((uint8_t *)p + 56, r) +#define RDD_CSO_CONTEXT_ENTRY_PAYLOAD_BYTES_LEFT_WRITE(v, p) MWRITE_16((uint8_t *)p + 56, v) +#define RDD_CSO_CONTEXT_ENTRY_PAYLOAD_PTR_READ(r, p) MREAD_32((uint8_t *)p + 60, r) +#define RDD_CSO_CONTEXT_ENTRY_PAYLOAD_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 60, v) +#define RDD_CSO_CONTEXT_ENTRY_DDR_PAYLOAD_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 67, r) +#define RDD_CSO_CONTEXT_ENTRY_DDR_PAYLOAD_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 67, v) +#define RDD_CSO_CONTEXT_ENTRY_DDR_SRC_ADDRESS_READ(r, p) MREAD_32((uint8_t *)p + 68, r) +#define RDD_CSO_CONTEXT_ENTRY_DDR_SRC_ADDRESS_WRITE(v, p) MWRITE_32((uint8_t *)p + 68, v) +#define RDD_CSO_CONTEXT_ENTRY_SAVED_IH_BUFFER_NUMBER_READ(r, p) MREAD_32((uint8_t *)p + 72, r) +#define RDD_CSO_CONTEXT_ENTRY_SAVED_IH_BUFFER_NUMBER_WRITE(v, p) MWRITE_32((uint8_t *)p + 72, v) +#define RDD_CSO_CONTEXT_ENTRY_SAVED_CSUM32_RET_ADDR_READ(r, p) MREAD_32((uint8_t *)p + 76, r) +#define RDD_CSO_CONTEXT_ENTRY_SAVED_CSUM32_RET_ADDR_WRITE(v, p) MWRITE_32((uint8_t *)p + 76, v) +#define RDD_CSO_CONTEXT_ENTRY_SAVED_R16_READ(r, p) MREAD_32((uint8_t *)p + 80, r) +#define RDD_CSO_CONTEXT_ENTRY_SAVED_R16_WRITE(v, p) MWRITE_32((uint8_t *)p + 80, v) +#if defined DSL_63138 + +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE 40 +typedef struct +{ + RDD_GPON_ABSOLUTE_TX_COUNTER_DTS entry[ RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_DTS; + +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_PTR() ( RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_FLOW_RING_DROP_COUNTER_DTS; + +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_PTR() ( RDD_US_DHD_FLOW_RING_DROP_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DHD_FLOW_RING_DROP_COUNTER_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t guaranteed_free_count :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t non_guaranteed_free_count :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t guaranteed_threshold :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_DTS; + +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_FREE_COUNT_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_FREE_COUNT_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_NON_GUARANTEED_FREE_COUNT_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_NON_GUARANTEED_FREE_COUNT_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_THRESHOLD_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_THRESHOLD_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined DSL_63138 + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS; + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_PTR() ( RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t flow_id :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_ENTRY_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_ENTRY_FLOW_ID_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_ENTRY_FLOW_ID_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE 32 +typedef struct +{ + RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DATA_POINTER_DUMMY_TARGET_SIZE 2 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DATA_POINTER_DUMMY_TARGET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DATA_POINTER_DUMMY_TARGET_DTS; + +#define RDD_DATA_POINTER_DUMMY_TARGET_PTR() ( RDD_DATA_POINTER_DUMMY_TARGET_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DATA_POINTER_DUMMY_TARGET_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS; + +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_PTR() ( RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_WAN_TX_SCRATCH_SIZE 24 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_WAN_TX_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SCRATCH_DTS; + +#define RDD_WAN_TX_SCRATCH_PTR() ( RDD_WAN_TX_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_TX_SCRATCH_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE 3 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 6 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE ][ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_DTS; + +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_PTR() ( RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_ENTRY_DTS entry[ RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS; + +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR() ( RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE 9 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_DTS; + +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_PTR() ( RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE 14 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_DTS; + +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_PTR() ( RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CPU_TX_DHD_LAYER2_HEADER_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_TASK_REORDER_ENTRY_DTS entry[ RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS; + +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_PTR() ( RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS; + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_PTR() ( RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t exponent :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_CONTROLLER_EXPONENT_ENTRY_DTS; + +#define RDD_RATE_CONTROLLER_EXPONENT_ENTRY_EXPONENT_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_RATE_CONTROLLER_EXPONENT_ENTRY_EXPONENT_WRITE(v, p) MWRITE_8((uint8_t *)p, v) + +#define RDD_RATE_CONTROLLER_EXPONENT_TABLE_SIZE 4 +typedef struct +{ + RDD_RATE_CONTROLLER_EXPONENT_ENTRY_DTS entry[ RDD_RATE_CONTROLLER_EXPONENT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_CONTROLLER_EXPONENT_TABLE_DTS; + +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_PTR() ( RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS ) + + +typedef struct +{ + uint16_t entry :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_DTS; + +#define RDD_LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ENTRY_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ENTRY_WRITE(v, p) MWRITE_16((uint8_t *)p, v) + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_DTS; + + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_ENQUEUE_INGRESS_QUEUE_PTR_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_ETH1_RX_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_ETH1_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH1_RX_DESCRIPTORS_DTS; + +#define RDD_ETH1_RX_DESCRIPTORS_PTR() ( RDD_ETH1_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETH1_RX_DESCRIPTORS_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved_fw_only :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_TX_WAN_CHANNEL_INDEX_DTS; + +/* COMMON_A */ +#if defined DSL_63138 + +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE 384 +typedef struct +{ + RDD_SIXTEEN_BYTES_DTS entry[ RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_DTS; + +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_PTR() ( RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DDR_CACHE_FIFO_ADDRESS ) + +#endif +#define RDD_RUNNER_SCRATCHPAD_RESERVED_FW_ONLY_NUMBER 64 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_RUNNER_SCRATCHPAD_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_SCRATCHPAD_DTS; + +#if defined DSL_63138 + +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_PTR() ( RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + FC_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_PTR() ( RDD_CPU_RX_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + CPU_RX_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_PTR() ( RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_BASE_PTR() ( RDD_RUNNER_FWTRACE_MAINA_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_MAINA_BASE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOA_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_PICOA_BASE_PTR() ( RDD_RUNNER_FWTRACE_PICOA_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_PICOA_BASE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t mac_address_high :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mac_address_mid :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mac_address_low :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t radio_index :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flowring_index :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_priority :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reference_count :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_STATION_ENTRY_DTS; + +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_MAC_ADDRESS_HIGH_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_MAC_ADDRESS_HIGH_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_MAC_ADDRESS_MID_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_MAC_ADDRESS_MID_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_MAC_ADDRESS_LOW_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_MAC_ADDRESS_LOW_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_RADIO_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 6, 2, r) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_RADIO_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 6, 2, v) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 2, 4, r) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 2, 4, v) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_FLOWRING_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 10, r) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_FLOWRING_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 10, v) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_TX_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 0, 3, r) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_TX_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 0, 3, v) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_REFERENCE_COUNT_READ(r, p) MREAD_8((uint8_t *)p + 9, r) +#define RDD_WLAN_MCAST_DHD_STATION_ENTRY_REFERENCE_COUNT_WRITE(v, p) MWRITE_8((uint8_t *)p + 9, v) +#if defined DSL_63138 + +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_DHD_STATION_ENTRY_DTS entry[ RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_STATION_TABLE_DTS; + +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_PTR() ( RDD_WLAN_MCAST_DHD_STATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_DHD_STATION_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t cpu_rx_queue :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_REASON_TO_CPU_RX_QUEUE_ENTRY_DTS; + +#define RDD_CPU_REASON_TO_CPU_RX_QUEUE_ENTRY_CPU_RX_QUEUE_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_CPU_REASON_TO_CPU_RX_QUEUE_ENTRY_CPU_RX_QUEUE_WRITE(v, p) MWRITE_8((uint8_t *)p, v) + +#define RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE 2 +#define RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 64 +typedef struct +{ + RDD_CPU_REASON_TO_CPU_RX_QUEUE_ENTRY_DTS entry[ RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE ][ RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS; + +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_PTR() ( RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS ) + + +typedef struct +{ + uint32_t user_defined :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mac_addr0 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mac_addr1 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mac_addr2 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mac_addr3 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mac_addr4 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mac_addr5 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aging :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t skip :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_ENTRY_DTS; + +#define RDD_MAC_ENTRY_USER_DEFINED_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 4, 12, r) +#define RDD_MAC_ENTRY_USER_DEFINED_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 4, 12, v) +#define RDD_MAC_ENTRY_MAC_ADDR0_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 12, 8, r) +#define RDD_MAC_ENTRY_MAC_ADDR0_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 12, 8, v) +#define RDD_MAC_ENTRY_MAC_ADDR1_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 4, 8, r) +#define RDD_MAC_ENTRY_MAC_ADDR1_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 4, 8, v) +#define RDD_MAC_ENTRY_MAC_ADDR2_READ(r, p) { uint32_t temp; FIELD_MREAD_32((uint8_t *)p, 0, 4, temp); r = temp << 4; FIELD_MREAD_32(((uint8_t *)p + 4), 28, 4, temp); r = r | temp; } +#define RDD_MAC_ENTRY_MAC_ADDR2_WRITE(v, p) { FIELD_MWRITE_32((uint8_t *)p, 0, 4, ((v & 0xfffffff0) >> 4)); FIELD_MWRITE_32(((uint8_t *)p + 4), 28, 4, (v & 0x0000000f)); } +#define RDD_MAC_ENTRY_MAC_ADDR3_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 4, 8, r) +#define RDD_MAC_ENTRY_MAC_ADDR3_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 4, 8, v) +#define RDD_MAC_ENTRY_MAC_ADDR4_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 12, 8, r) +#define RDD_MAC_ENTRY_MAC_ADDR4_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 12, 8, v) +#define RDD_MAC_ENTRY_MAC_ADDR5_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 4, 8, r) +#define RDD_MAC_ENTRY_MAC_ADDR5_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 4, 8, v) +#define RDD_MAC_ENTRY_AGING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 2, 1, r) +#define RDD_MAC_ENTRY_AGING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 2, 1, v) +#define RDD_MAC_ENTRY_SKIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 1, 1, r) +#define RDD_MAC_ENTRY_SKIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 1, 1, v) +#define RDD_MAC_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 1, r) +#define RDD_MAC_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 1, v) +#if defined DSL_63138 + +#define RDD_MAC_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_ENTRY_DTS entry[ RDD_MAC_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_TABLE_CAM_DTS; + +#define RDD_MAC_TABLE_CAM_PTR() ( RDD_MAC_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_TABLE_CAM_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_MAC_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_ENTRY_DTS entry[ RDD_MAC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_TABLE_DTS; + +#define RDD_MAC_TABLE_PTR() ( RDD_MAC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +typedef struct +{ + uint32_t reserved0 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_bridge_port :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETHWAN2_RX_DESCRIPTOR_DTS; + +#define RDD_ETHWAN2_RX_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 7, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 7, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_TYPE_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 6, 7, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_TYPE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 6, 7, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_SOURCE_BRIDGE_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 6, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_SOURCE_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 6, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 15, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 15, v) +#endif +#if defined DSL_63138 + +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_ETHWAN2_RX_DESCRIPTOR_DTS entry[ RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETHWAN2_RX_INGRESS_QUEUE_DTS; + +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_PTR() ( RDD_ETHWAN2_RX_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + ETHWAN2_RX_INGRESS_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t trace_on :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t trace_off_perm :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t unused :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocs :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TRACE_C_ENTRY_DTS; + +#define RDD_TRACE_C_ENTRY_TRACE_ON_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_TRACE_C_ENTRY_TRACE_ON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_TRACE_C_ENTRY_TRACE_OFF_PERM_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 1, r) +#define RDD_TRACE_C_ENTRY_TRACE_OFF_PERM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 1, v) +#define RDD_TRACE_C_ENTRY_UNUSED_READ(r, p) FIELD_MREAD_32((uint8_t *)p, 0, 30, r) +#define RDD_TRACE_C_ENTRY_UNUSED_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p, 0, 30, v) +#define RDD_TRACE_C_ENTRY_ALLOCS_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_TRACE_C_ENTRY_ALLOCS_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#if defined DSL_63138 + +#define RDD_TRACE_C_TABLE_SIZE 4 +typedef struct +{ + RDD_TRACE_C_ENTRY_DTS entry[ RDD_TRACE_C_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TRACE_C_TABLE_DTS; + +#define RDD_TRACE_C_TABLE_PTR() ( RDD_TRACE_C_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + TRACE_C_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_PTR() ( RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_MAINA_CURR_OFFSET_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved_fw_only :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FREE_SKB_INDEXES_FIFO_TAIL_DTS; + +#if defined DSL_63138 + +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE 2 +typedef struct +{ + RDD_FREE_SKB_INDEXES_FIFO_TAIL_DTS entry[ RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_DTS; + +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_PTR() ( RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + FREE_SKB_INDEXES_DDR_FIFO_TAIL_ADDRESS ) + +#endif +#define RDD_BPM_REPLY_RESERVED_FW_ONLY_NUMBER 12 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_BPM_REPLY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BPM_REPLY_DTS; + + +typedef struct +{ + uint32_t bq_next_idx_or_cpu_tx_frid :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = bq_next_idx_or_cpu_tx_frid, size = 32 bits + uint32_t next_idx :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t radio_idx :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_id :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t request_id :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wifi_egress_params_u :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = wifi_egress_params_u, size = 32 bits + uint32_t wifi_egress_params :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t priority :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wifi_ssid :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_udp :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_tcp :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t spd_svc_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_bridge_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_len :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t data_buf_addr_low :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_ENTRY_DTS; + +#define RDD_DHD_BACKUP_ENTRY_BQ_NEXT_IDX_OR_CPU_TX_FRID_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_BACKUP_ENTRY_BQ_NEXT_IDX_OR_CPU_TX_FRID_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_BACKUP_ENTRY_BQ_NEXT_IDX_OR_CPU_TX_FRID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_BACKUP_ENTRY_BQ_NEXT_IDX_OR_CPU_TX_FRID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_BACKUP_ENTRY_NEXT_IDX_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_DHD_BACKUP_ENTRY_NEXT_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_DHD_BACKUP_ENTRY_NEXT_IDX_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_BACKUP_ENTRY_NEXT_IDX_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_BACKUP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_DHD_BACKUP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_DHD_BACKUP_ENTRY_VALID_L_READ( wv ) FIELD_GET( wv, 31, 1 ) +#define RDD_DHD_BACKUP_ENTRY_VALID_L_WRITE( v, wv ) FIELD_SET( v, 31, 1, wv ) +#define RDD_DHD_BACKUP_ENTRY_RADIO_IDX_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 2, r) +#define RDD_DHD_BACKUP_ENTRY_RADIO_IDX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 2, v) +#define RDD_DHD_BACKUP_ENTRY_RADIO_IDX_L_READ( wv ) FIELD_GET( wv, 26, 2 ) +#define RDD_DHD_BACKUP_ENTRY_RADIO_IDX_L_WRITE( v, wv ) FIELD_SET( v, 26, 2, wv ) +#define RDD_DHD_BACKUP_ENTRY_FLOW_RING_ID_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 10, r) +#define RDD_DHD_BACKUP_ENTRY_FLOW_RING_ID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 10, v) +#define RDD_DHD_BACKUP_ENTRY_FLOW_RING_ID_L_READ( wv ) FIELD_GET( wv, 16, 10 ) +#define RDD_DHD_BACKUP_ENTRY_FLOW_RING_ID_L_WRITE( v, wv ) FIELD_SET( v, 16, 10, wv ) +#define RDD_DHD_BACKUP_ENTRY_REQUEST_ID_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_BACKUP_ENTRY_REQUEST_ID_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_BACKUP_ENTRY_REQUEST_ID_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_BACKUP_ENTRY_REQUEST_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_BACKUP_ENTRY_WIFI_EGRESS_PARAMS_U_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_DHD_BACKUP_ENTRY_WIFI_EGRESS_PARAMS_U_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_DHD_BACKUP_ENTRY_WIFI_EGRESS_PARAMS_U_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_BACKUP_ENTRY_WIFI_EGRESS_PARAMS_U_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_BACKUP_ENTRY_WIFI_EGRESS_PARAMS_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_DHD_BACKUP_ENTRY_WIFI_EGRESS_PARAMS_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_DHD_BACKUP_ENTRY_WIFI_EGRESS_PARAMS_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_BACKUP_ENTRY_WIFI_EGRESS_PARAMS_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_BACKUP_ENTRY_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 5, 3, r) +#define RDD_DHD_BACKUP_ENTRY_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 5, 3, v) +#define RDD_DHD_BACKUP_ENTRY_PRIORITY_L_READ( wv ) FIELD_GET( wv, 29, 3 ) +#define RDD_DHD_BACKUP_ENTRY_PRIORITY_L_WRITE( v, wv ) FIELD_SET( v, 29, 3, wv ) +#define RDD_DHD_BACKUP_ENTRY_WIFI_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 0, 5, r) +#define RDD_DHD_BACKUP_ENTRY_WIFI_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 0, 5, v) +#define RDD_DHD_BACKUP_ENTRY_WIFI_SSID_L_READ( wv ) FIELD_GET( wv, 24, 5 ) +#define RDD_DHD_BACKUP_ENTRY_WIFI_SSID_L_WRITE( v, wv ) FIELD_SET( v, 24, 5, wv ) +#define RDD_DHD_BACKUP_ENTRY_IS_UDP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 9, 7, 1, r) +#define RDD_DHD_BACKUP_ENTRY_IS_UDP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 9, 7, 1, v) +#define RDD_DHD_BACKUP_ENTRY_IS_UDP_L_READ( wv ) FIELD_GET( wv, 23, 1 ) +#define RDD_DHD_BACKUP_ENTRY_IS_UDP_L_WRITE( v, wv ) FIELD_SET( v, 23, 1, wv ) +#define RDD_DHD_BACKUP_ENTRY_IS_TCP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 9, 6, 1, r) +#define RDD_DHD_BACKUP_ENTRY_IS_TCP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 9, 6, 1, v) +#define RDD_DHD_BACKUP_ENTRY_IS_TCP_L_READ( wv ) FIELD_GET( wv, 22, 1 ) +#define RDD_DHD_BACKUP_ENTRY_IS_TCP_L_WRITE( v, wv ) FIELD_SET( v, 22, 1, wv ) +#define RDD_DHD_BACKUP_ENTRY_SPD_SVC_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 9, 5, 1, r) +#define RDD_DHD_BACKUP_ENTRY_SPD_SVC_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 9, 5, 1, v) +#define RDD_DHD_BACKUP_ENTRY_SPD_SVC_FLAG_L_READ( wv ) FIELD_GET( wv, 21, 1 ) +#define RDD_DHD_BACKUP_ENTRY_SPD_SVC_FLAG_L_WRITE( v, wv ) FIELD_SET( v, 21, 1, wv ) +#define RDD_DHD_BACKUP_ENTRY_SRC_BRIDGE_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 9, 0, 5, r) +#define RDD_DHD_BACKUP_ENTRY_SRC_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 9, 0, 5, v) +#define RDD_DHD_BACKUP_ENTRY_SRC_BRIDGE_PORT_L_READ( wv ) FIELD_GET( wv, 16, 5 ) +#define RDD_DHD_BACKUP_ENTRY_SRC_BRIDGE_PORT_L_WRITE( v, wv ) FIELD_SET( v, 16, 5, wv ) +#define RDD_DHD_BACKUP_ENTRY_DATA_LEN_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_DHD_BACKUP_ENTRY_DATA_LEN_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_DHD_BACKUP_ENTRY_DATA_LEN_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_BACKUP_ENTRY_DATA_LEN_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_DHD_BACKUP_ENTRY_DATA_BUF_ADDR_LOW_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_DHD_BACKUP_ENTRY_DATA_BUF_ADDR_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_DHD_BACKUP_ENTRY_DATA_BUF_ADDR_LOW_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_BACKUP_ENTRY_DATA_BUF_ADDR_LOW_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) + +typedef struct +{ + uint16_t multicast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t multicast_vector :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t egress_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t move_indication :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t mac_type :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t da_action :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t sa_action :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_CONTEXT_ENTRY_DTS; + +#define RDD_MAC_CONTEXT_ENTRY_MULTICAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_MAC_CONTEXT_ENTRY_MULTICAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_MAC_CONTEXT_ENTRY_MULTICAST_VECTOR_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 2, r) +#define RDD_MAC_CONTEXT_ENTRY_MULTICAST_VECTOR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 2, v) +#define RDD_MAC_CONTEXT_ENTRY_EGRESS_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 5, r) +#define RDD_MAC_CONTEXT_ENTRY_EGRESS_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 5, v) +#define RDD_MAC_CONTEXT_ENTRY_MOVE_INDICATION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 7, 1, r) +#define RDD_MAC_CONTEXT_ENTRY_MOVE_INDICATION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 7, 1, v) +#define RDD_MAC_CONTEXT_ENTRY_MAC_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 6, 1, r) +#define RDD_MAC_CONTEXT_ENTRY_MAC_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 6, 1, v) +#define RDD_MAC_CONTEXT_ENTRY_DA_ACTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 3, 3, r) +#define RDD_MAC_CONTEXT_ENTRY_DA_ACTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 3, 3, v) +#define RDD_MAC_CONTEXT_ENTRY_SA_ACTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 3, r) +#define RDD_MAC_CONTEXT_ENTRY_SA_ACTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 3, v) +#if defined DSL_63138 + +#define RDD_MAC_CONTEXT_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_CONTEXT_ENTRY_DTS entry[ RDD_MAC_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_CONTEXT_TABLE_DTS; + +#define RDD_MAC_CONTEXT_TABLE_PTR() ( RDD_MAC_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_CONTEXT_TABLE_ADDRESS ) + +#endif +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_RESERVED_FW_ONLY_NUMBER 24 + +typedef struct +{ + uint16_t reserved_fw_only[RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE 32 +typedef struct +{ + RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t reserved_fw_only :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BYTES_2_DTS; + +#if defined DSL_63138 + +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +typedef struct +{ + RDD_BYTES_2_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_list_size :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_proxy_enabled :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_priority :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_0_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_1_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_2_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_0_ssid_vector :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_1_ssid_vector :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_2_ssid_vector :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_FWD_ENTRY_DTS; + +#define RDD_WLAN_MCAST_FWD_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_WLAN_MCAST_FWD_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_WLAN_MCAST_FWD_ENTRY_DHD_LIST_SIZE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 7, r) +#define RDD_WLAN_MCAST_FWD_ENTRY_DHD_LIST_SIZE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 7, v) +#define RDD_WLAN_MCAST_FWD_ENTRY_IS_PROXY_ENABLED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 6, 1, r) +#define RDD_WLAN_MCAST_FWD_ENTRY_IS_PROXY_ENABLED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 6, 1, v) +#define RDD_WLAN_MCAST_FWD_ENTRY_TX_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 3, 3, r) +#define RDD_WLAN_MCAST_FWD_ENTRY_TX_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 3, 3, v) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_0_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 2, 1, r) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_0_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 2, 1, v) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_1_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 1, 1, r) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_1_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 1, 1, v) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_2_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 1, r) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_2_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 1, v) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_0_SSID_VECTOR_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_0_SSID_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_1_SSID_VECTOR_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_1_SSID_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_2_SSID_VECTOR_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_WLAN_MCAST_FWD_ENTRY_WFD_2_SSID_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#if defined DSL_63138 + +#define RDD_WLAN_MCAST_FWD_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_FWD_ENTRY_DTS entry[ RDD_WLAN_MCAST_FWD_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_FWD_TABLE_DTS; + +#define RDD_WLAN_MCAST_FWD_TABLE_PTR() ( RDD_WLAN_MCAST_FWD_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_FWD_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t head_idx :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tail_idx :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid_entries_number :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tail_entry :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t head_entry :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_threshold :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t queue_state :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t profile_id :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tail_base_entry :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t profile_en :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t union_field1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = union_field1, size = 7 bits + uint32_t reserved0 :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop_bit :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controller_id :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t queue_mask :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cache_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DDR_QUEUE_DESCRIPTOR_DTS; + +#define RDD_DDR_QUEUE_DESCRIPTOR_HEAD_IDX_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_HEAD_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_TAIL_IDX_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_TAIL_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_PACKET_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_PACKET_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_VALID_ENTRIES_NUMBER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 4, 4, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_VALID_ENTRIES_NUMBER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 4, 4, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_TAIL_ENTRY_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 6, 6, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_TAIL_ENTRY_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 6, 6, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_HEAD_ENTRY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 6, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_HEAD_ENTRY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 6, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_PACKET_THRESHOLD_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_PACKET_THRESHOLD_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_QUEUE_STATE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 7, 1, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_QUEUE_STATE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 7, 1, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_PROFILE_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 2, 5, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_PROFILE_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 2, 5, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_TAIL_BASE_ENTRY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 0, 6, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_TAIL_BASE_ENTRY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 0, 6, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_PROFILE_EN_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_PROFILE_EN_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_UNION_FIELD1_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 0, 7, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_UNION_FIELD1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 0, 7, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_DROP_BIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 0, 1, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_DROP_BIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 0, 1, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_RATE_CONTROLLER_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 0, 7, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_RATE_CONTROLLER_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 0, 7, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_QUEUE_MASK_READ(r, p) MREAD_8((uint8_t *)p + 13, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_QUEUE_MASK_WRITE(v, p) MWRITE_8((uint8_t *)p + 13, v) +#define RDD_DDR_QUEUE_DESCRIPTOR_CACHE_PTR_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_DDR_QUEUE_DESCRIPTOR_CACHE_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#if defined DSL_63138 + +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE 32 +typedef struct +{ + RDD_DDR_QUEUE_DESCRIPTOR_DTS entry[ RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_PTR() ( RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DESCRIPTOR_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t mac_address_high :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mac_address_low :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reference_count :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_DTS; + +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_MAC_ADDRESS_HIGH_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_MAC_ADDRESS_HIGH_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_MAC_ADDRESS_LOW_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_MAC_ADDRESS_LOW_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_REFERENCE_COUNT_READ(r, p) MREAD_8((uint8_t *)p + 6, r) +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_REFERENCE_COUNT_WRITE(v, p) MWRITE_8((uint8_t *)p + 6, v) +#if defined DSL_63138 + +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE 48 +typedef struct +{ + RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_DTS entry[ RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_DTS; + +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_PTR() ( RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE 8 +typedef struct +{ + RDD_DHD_BACKUP_ENTRY_DTS entry[ RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_POST_REQUEST_QUEUE_DTS; + +#define RDD_CPU_TX_POST_REQUEST_QUEUE_PTR() ( RDD_CPU_TX_POST_REQUEST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + CPU_TX_POST_REQUEST_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t packets :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bytes :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_STATS_ENTRY_DTS; + +#define RDD_WLAN_MCAST_SSID_STATS_ENTRY_PACKETS_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_WLAN_MCAST_SSID_STATS_ENTRY_PACKETS_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_WLAN_MCAST_SSID_STATS_ENTRY_BYTES_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_WLAN_MCAST_SSID_STATS_ENTRY_BYTES_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#if defined DSL_63138 + +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE 48 +typedef struct +{ + RDD_WLAN_MCAST_SSID_STATS_ENTRY_DTS entry[ RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_STATS_TABLE_DTS; + +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_PTR() ( RDD_WLAN_MCAST_SSID_STATS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_SSID_STATS_TABLE_ADDRESS ) + +#endif +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_RESERVED2_NUMBER 8 + +typedef struct +{ + uint32_t ds_dhd_doorbell_post :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ds_dhd_doorbell_complete :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ds_rd_fr_r2d_indexes :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ds_wr_fr_r2d_indexes :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_rd_fr_d2r_indexes :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_wr_fr_d2r_indexes :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_complete_packet_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_format :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t idma_active :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t coalescing_max_count :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cur_frg_id :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t coalescing_timeout :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t coalescing_timeout_cntr :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved2[RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_RESERVED2_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DTS; + +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DS_DHD_DOORBELL_POST_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DS_DHD_DOORBELL_POST_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DS_DHD_DOORBELL_COMPLETE_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DS_DHD_DOORBELL_COMPLETE_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DS_RD_FR_R2D_INDEXES_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DS_RD_FR_R2D_INDEXES_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DS_WR_FR_R2D_INDEXES_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DS_WR_FR_R2D_INDEXES_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_TX_RD_FR_D2R_INDEXES_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_TX_RD_FR_D2R_INDEXES_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_TX_WR_FR_D2R_INDEXES_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_TX_WR_FR_D2R_INDEXES_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_TX_COMPLETE_PACKET_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 16, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_TX_COMPLETE_PACKET_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 16, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_FLOW_RING_FORMAT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 18, 5, 3, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_FLOW_RING_FORMAT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 18, 5, 3, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_IDMA_ACTIVE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 18, 4, 1, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_IDMA_ACTIVE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 18, 4, 1, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_COALESCING_MAX_COUNT_READ(r, p) MREAD_8((uint8_t *)p + 20, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_COALESCING_MAX_COUNT_WRITE(v, p) MWRITE_8((uint8_t *)p + 20, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_CUR_FRG_ID_READ(r, p) MREAD_8((uint8_t *)p + 21, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_CUR_FRG_ID_WRITE(v, p) MWRITE_8((uint8_t *)p + 21, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_COALESCING_TIMEOUT_READ(r, p) MREAD_8((uint8_t *)p + 22, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_COALESCING_TIMEOUT_WRITE(v, p) MWRITE_8((uint8_t *)p + 22, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_COALESCING_TIMEOUT_CNTR_READ(r, p) MREAD_8((uint8_t *)p + 23, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_COALESCING_TIMEOUT_CNTR_WRITE(v, p) MWRITE_8((uint8_t *)p + 23, v) +#if defined DSL_63138 + +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE 3 +typedef struct +{ + RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DTS entry[ RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_DTS; + +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_PTR() ( RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_RADIO_INSTANCE_COMMON_A_DATA_ADDRESS ) + +#endif + +typedef struct +{ + uint16_t invalid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t reserved :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t radio_idx :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t flow_ring_id :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_DTS; + +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_INVALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_INVALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_INVALID_L_READ( wv ) FIELD_GET( wv, 15, 1 ) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_INVALID_L_WRITE( v, wv ) FIELD_SET( v, 15, 1, wv ) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_RADIO_IDX_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 2, r) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_RADIO_IDX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 2, v) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_RADIO_IDX_L_READ( wv ) FIELD_GET( wv, 10, 2 ) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_RADIO_IDX_L_WRITE( v, wv ) FIELD_SET( v, 10, 2, wv ) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_FLOW_RING_ID_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 10, r) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_FLOW_RING_ID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 10, v) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_FLOW_RING_ID_L_READ( wv ) FIELD_GET( wv, 0, 10 ) +#define RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_FLOW_RING_ID_L_WRITE( v, wv ) FIELD_SET( v, 0, 10, wv ) +#if defined DSL_63138 + +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_DTS entry[ RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS; + +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_PTR() ( RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t key_index :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_0 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aging :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t skip :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t context :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_2 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_DTS; + +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_KEY_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 4, r) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_KEY_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 4, v) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_KEY_0_READ(r, p) FIELD_MREAD_32((uint8_t *)p, 4, 24, r) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_KEY_0_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p, 4, 24, v) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_KEY_1_READ(r, p) { uint32_t temp; FIELD_MREAD_32((uint8_t *)p, 0, 4, temp); r = temp << 28; FIELD_MREAD_32(((uint8_t *)p + 4), 4, 28, temp); r = r | temp; } +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_KEY_1_WRITE(v, p) { FIELD_MWRITE_32((uint8_t *)p, 0, 4, ((v & 0xf0000000) >> 28)); FIELD_MWRITE_32(((uint8_t *)p + 4), 4, 28, (v & 0x0fffffff)); } +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_AGING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 2, 1, r) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_AGING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 2, 1, v) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_SKIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 1, 1, r) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_SKIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 1, 1, v) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 1, r) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 1, v) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_CONTEXT_READ(r, p) MREAD_8((uint8_t *)p + 8, r) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_CONTEXT_WRITE(v, p) MWRITE_8((uint8_t *)p + 8, v) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_KEY_2_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 24, r) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_KEY_2_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 24, v) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_KEY_3_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_KEY_3_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#if defined DSL_63138 + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS ) + +#endif +#define RDD_PM_COUNTERS_RESERVED_FW_ONLY_NUMBER 1552 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_PM_COUNTERS_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PM_COUNTERS_DTS; + +#if defined DSL_63138 + +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE 128 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_DTS; + +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_PTR() ( RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RATE_SHAPERS_STATUS_DESCRIPTOR_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t current_timeout :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t current_packet_count :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t configured_timeout :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t configured_max_packet_count :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INTERRUPT_COALESCING_CONFIG_DTS; + +#define RDD_INTERRUPT_COALESCING_CONFIG_CURRENT_TIMEOUT_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 10, r) +#define RDD_INTERRUPT_COALESCING_CONFIG_CURRENT_TIMEOUT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 10, v) +#define RDD_INTERRUPT_COALESCING_CONFIG_CURRENT_PACKET_COUNT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 6, r) +#define RDD_INTERRUPT_COALESCING_CONFIG_CURRENT_PACKET_COUNT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 6, v) +#define RDD_INTERRUPT_COALESCING_CONFIG_CONFIGURED_TIMEOUT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 6, 10, r) +#define RDD_INTERRUPT_COALESCING_CONFIG_CONFIGURED_TIMEOUT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 6, 10, v) +#define RDD_INTERRUPT_COALESCING_CONFIG_CONFIGURED_MAX_PACKET_COUNT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 6, r) +#define RDD_INTERRUPT_COALESCING_CONFIG_CONFIGURED_MAX_PACKET_COUNT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 6, v) +#if defined DSL_63138 + +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE 16 +typedef struct +{ + RDD_INTERRUPT_COALESCING_CONFIG_DTS entry[ RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INTERRUPT_COALESCING_CONFIG_TABLE_DTS; + +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_PTR() ( RDD_INTERRUPT_COALESCING_CONFIG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + INTERRUPT_COALESCING_CONFIG_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t flow_id :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_chksum_verified :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_bridge_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dest_ssid :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t descriptor_type :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ownership :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t host_data_buffer_pointer :31 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_sync_1588_entry_index :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wl_metadata :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_DESCRIPTOR_DTS; + +#define RDD_CPU_RX_DESCRIPTOR_FLOW_ID_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 4, 12, r) +#define RDD_CPU_RX_DESCRIPTOR_FLOW_ID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 4, 12, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 3, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 3, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_SOURCE_BRIDGE_PORT_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 5, r) +#define RDD_CPU_RX_DESCRIPTOR_SOURCE_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 5, v) +#define RDD_CPU_RX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_CPU_RX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_CPU_RX_DESCRIPTOR_PAYLOAD_OFFSET_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_PAYLOAD_OFFSET_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_REASON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 1, 6, r) +#define RDD_CPU_RX_DESCRIPTOR_REASON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 1, 6, v) +#define RDD_CPU_RX_DESCRIPTOR_DEST_SSID_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 9, 16, r) +#define RDD_CPU_RX_DESCRIPTOR_DEST_SSID_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 9, 16, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_EXCEPTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 4, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_EXCEPTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 4, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_DESCRIPTOR_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 4, r) +#define RDD_CPU_RX_DESCRIPTOR_DESCRIPTOR_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 4, v) +#define RDD_CPU_RX_DESCRIPTOR_OWNERSHIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_OWNERSHIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_HOST_DATA_BUFFER_POINTER_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 31, r) +#define RDD_CPU_RX_DESCRIPTOR_HOST_DATA_BUFFER_POINTER_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 31, v) +#define RDD_CPU_RX_DESCRIPTOR_IP_SYNC_1588_ENTRY_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 4, r) +#define RDD_CPU_RX_DESCRIPTOR_IP_SYNC_1588_ENTRY_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 4, v) +#define RDD_CPU_RX_DESCRIPTOR_WL_METADATA_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_CPU_RX_DESCRIPTOR_WL_METADATA_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#if defined DSL_63138 + +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +typedef struct +{ + RDD_CPU_RX_DESCRIPTOR_DTS entry[ RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_DTS; + +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_PTR() ( RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 4 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_DS_CONNECTION_BUFFER_TABLE_SIZE ][ RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_BUFFER_TABLE_DTS; + +#define RDD_DS_CONNECTION_BUFFER_TABLE_PTR() ( RDD_DS_CONNECTION_BUFFER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_CONNECTION_BUFFER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_MAC_CONTEXT_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_CONTEXT_ENTRY_DTS entry[ RDD_MAC_CONTEXT_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_CONTEXT_TABLE_CAM_DTS; + +#define RDD_MAC_CONTEXT_TABLE_CAM_PTR() ( RDD_MAC_CONTEXT_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_CONTEXT_TABLE_CAM_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DHD_DOORBELL_WRITE_VALUES_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DHD_DOORBELL_WRITE_VALUES_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_DOORBELL_WRITE_VALUES_DTS; + +#define RDD_DHD_DOORBELL_WRITE_VALUES_PTR() ( RDD_DHD_DOORBELL_WRITE_VALUES_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_DOORBELL_WRITE_VALUES_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_BACKUP_INDEX_CACHE_DTS; + +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_PTR() ( RDD_DS_DHD_BACKUP_INDEX_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_DHD_BACKUP_INDEX_CACHE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t size :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t addr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DDR_QUEUE_ADDRESS_ENTRY_DTS; + +#define RDD_DDR_QUEUE_ADDRESS_ENTRY_SIZE_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_DDR_QUEUE_ADDRESS_ENTRY_SIZE_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_DDR_QUEUE_ADDRESS_ENTRY_ADDR_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DDR_QUEUE_ADDRESS_ENTRY_ADDR_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#if defined DSL_63138 + +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE 32 +typedef struct +{ + RDD_DDR_QUEUE_ADDRESS_ENTRY_DTS entry[ RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_PTR() ( RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t entries_counter :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t size_of_entry :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t number_of_entries :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ring_pointer :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t interrupt_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RING_DESCRIPTOR_DTS; + +#define RDD_RING_DESCRIPTOR_ENTRIES_COUNTER_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 11, r) +#define RDD_RING_DESCRIPTOR_ENTRIES_COUNTER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 11, v) +#define RDD_RING_DESCRIPTOR_SIZE_OF_ENTRY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 3, 5, r) +#define RDD_RING_DESCRIPTOR_SIZE_OF_ENTRY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 3, 5, v) +#define RDD_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 11, r) +#define RDD_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 11, v) +#define RDD_RING_DESCRIPTOR_RING_POINTER_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_RING_DESCRIPTOR_RING_POINTER_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_RING_DESCRIPTOR_INTERRUPT_ID_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_RING_DESCRIPTOR_INTERRUPT_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_RING_DESCRIPTOR_DROP_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_RING_DESCRIPTOR_DROP_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#if defined DSL_63138 + +#define RDD_RING_DESCRIPTORS_TABLE_SIZE 16 +typedef struct +{ + RDD_RING_DESCRIPTOR_DTS entry[ RDD_RING_DESCRIPTORS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RING_DESCRIPTORS_TABLE_DTS; + +#define RDD_RING_DESCRIPTORS_TABLE_PTR() ( RDD_RING_DESCRIPTORS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RING_DESCRIPTORS_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint8_t extension_entry :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_EXTENSION_ENTRY_DTS; + +#define RDD_MAC_EXTENSION_ENTRY_EXTENSION_ENTRY_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_MAC_EXTENSION_ENTRY_EXTENSION_ENTRY_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#if defined DSL_63138 + +#define RDD_MAC_EXTENSION_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_EXTENSION_ENTRY_DTS entry[ RDD_MAC_EXTENSION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_EXTENSION_TABLE_DTS; + +#define RDD_MAC_EXTENSION_TABLE_PTR() ( RDD_MAC_EXTENSION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_EXTENSION_TABLE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE 16 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_DTS; + +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_PTR() ( RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t flow_ring_base_low :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_base_high :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t size :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_for_lock_flag :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t backup_first_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t backup_last_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t backup_num_entries :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t phy_size :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_DTS; + +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLOW_RING_BASE_LOW_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLOW_RING_BASE_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLOW_RING_BASE_LOW_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLOW_RING_BASE_LOW_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLOW_RING_BASE_HIGH_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLOW_RING_BASE_HIGH_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLOW_RING_BASE_HIGH_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLOW_RING_BASE_HIGH_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_SIZE_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_SIZE_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_SIZE_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_SIZE_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 0, 5, r) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 0, 5, v) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_SSID_L_READ( wv ) FIELD_GET( wv, 8, 5 ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_SSID_L_WRITE( v, wv ) FIELD_SET( v, 8, 5, wv ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLAGS_READ(r, p) MREAD_8((uint8_t *)p + 11, r) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 11, v) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLAGS_L_READ( wv ) FIELD_GET( wv, 0, 8 ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_FLAGS_L_WRITE( v, wv ) FIELD_SET( v, 0, 8, wv ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_FIRST_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_FIRST_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_FIRST_INDEX_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_FIRST_INDEX_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_LAST_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_LAST_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_LAST_INDEX_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_LAST_INDEX_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_NUM_ENTRIES_READ(r, p) MREAD_16((uint8_t *)p + 16, r) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_NUM_ENTRIES_WRITE(v, p) MWRITE_16((uint8_t *)p + 16, v) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_NUM_ENTRIES_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BACKUP_NUM_ENTRIES_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_PHY_SIZE_READ(r, p) MREAD_16((uint8_t *)p + 18, r) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_PHY_SIZE_WRITE(v, p) MWRITE_16((uint8_t *)p + 18, v) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_PHY_SIZE_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_PHY_SIZE_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) + +typedef struct +{ + uint32_t sustain_scheduling_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_scheduling_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t overall_rate_limiter_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :13 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_ffi_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sustain_ffi_offset :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t service_queues_status :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_limiter_status :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sustain_vector :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_vector :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_CFG_ENTRY_DTS; + +#define RDD_SERVICE_QUEUES_CFG_ENTRY_SUSTAIN_SCHEDULING_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_SUSTAIN_SCHEDULING_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_PEAK_SCHEDULING_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 1, r) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_PEAK_SCHEDULING_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 1, v) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_OVERALL_RATE_LIMITER_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 1, r) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_OVERALL_RATE_LIMITER_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 1, v) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_PEAK_FFI_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 2, r) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_PEAK_FFI_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 2, v) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_SUSTAIN_FFI_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 3, r) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_SUSTAIN_FFI_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 3, v) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_SERVICE_QUEUES_STATUS_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_SERVICE_QUEUES_STATUS_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_RATE_LIMITER_STATUS_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_RATE_LIMITER_STATUS_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_SUSTAIN_VECTOR_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_SUSTAIN_VECTOR_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_PEAK_VECTOR_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_SERVICE_QUEUES_CFG_ENTRY_PEAK_VECTOR_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) + +typedef struct +{ + uint32_t read_idx :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t write_idx :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_POST_REQUEST_QUEUE_IDX_ENTRY_DTS; + +#define RDD_CPU_TX_POST_REQUEST_QUEUE_IDX_ENTRY_READ_IDX_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_CPU_TX_POST_REQUEST_QUEUE_IDX_ENTRY_READ_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_CPU_TX_POST_REQUEST_QUEUE_IDX_ENTRY_READ_IDX_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_CPU_TX_POST_REQUEST_QUEUE_IDX_ENTRY_READ_IDX_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_CPU_TX_POST_REQUEST_QUEUE_IDX_ENTRY_WRITE_IDX_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_CPU_TX_POST_REQUEST_QUEUE_IDX_ENTRY_WRITE_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_CPU_TX_POST_REQUEST_QUEUE_IDX_ENTRY_WRITE_IDX_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_CPU_TX_POST_REQUEST_QUEUE_IDX_ENTRY_WRITE_IDX_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#if defined DSL_63138 + +#define RDD_MAC_EXTENSION_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_EXTENSION_ENTRY_DTS entry[ RDD_MAC_EXTENSION_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_EXTENSION_TABLE_CAM_DTS; + +#define RDD_MAC_EXTENSION_TABLE_CAM_PTR() ( RDD_MAC_EXTENSION_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_EXTENSION_TABLE_CAM_ADDRESS ) + +#endif +#define RDD_PM_COUNTERS_BUFFER_RESERVED_FW_ONLY_NUMBER 8 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_PM_COUNTERS_BUFFER_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PM_COUNTERS_BUFFER_DTS; + +#if defined DSL_63138 + +#define RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE 3 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TX_CPL_DHD_DMA_SCRATCH_DTS; + +#define RDD_TX_CPL_DHD_DMA_SCRATCH_PTR() ( RDD_TX_CPL_DHD_DMA_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + TX_CPL_DHD_DMA_SCRATCH_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_SIZE 3 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_TX_POST_BUFFERS_THRESHOLD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_BUFFERS_THRESHOLD_DTS; + +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_PTR() ( RDD_DHD_TX_POST_BUFFERS_THRESHOLD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_TX_POST_BUFFERS_THRESHOLD_ADDRESS ) + +#endif +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_PTR() ( RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS ) + +#if defined DSL_63138 + +#define RDD_MAIN_A_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_MAIN_A_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAIN_A_DEBUG_TRACE_DTS; + +#define RDD_MAIN_A_DEBUG_TRACE_PTR() ( RDD_MAIN_A_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAIN_A_DEBUG_TRACE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_PICO_A_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_PICO_A_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_A_DEBUG_TRACE_DTS; + +#define RDD_PICO_A_DEBUG_TRACE_PTR() ( RDD_PICO_A_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + PICO_A_DEBUG_TRACE_ADDRESS ) + +#endif +/* COMMON_B */ +#if defined DSL_63138 + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_WAN_TX_MIRROR_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_WAN_TX_MIRROR_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_MIRROR_SCRATCHPAD_DTS; + +#define RDD_WAN_TX_MIRROR_SCRATCHPAD_PTR() ( RDD_WAN_TX_MIRROR_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_TX_MIRROR_SCRATCHPAD_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +typedef struct +{ + RDD_BYTES_2_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS - 0x8000 ) + +#endif + +typedef struct +{ + uint32_t context :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pbits :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t no_outer :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vlan :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t gem_flow_extend :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aging :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t skip :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_CONTEXT_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_CONTEXT_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_PBITS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 1, 3, r) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_PBITS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 1, 3, v) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_NO_OUTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 0, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_NO_OUTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 0, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_VLAN_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 12, 12, r) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_VLAN_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 12, 12, v) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_GEM_FLOW_EXTEND_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 4, 8, r) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_GEM_FLOW_EXTEND_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 4, 8, v) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_AGING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 2, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_AGING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 2, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_SKIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 1, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_SKIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 1, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 1, v) + +typedef struct +{ + uint32_t context :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pbits :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t no_outer :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vlan :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_port_extend :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aging :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t skip :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_CONTEXT_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_CONTEXT_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_PBITS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 1, 3, r) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_PBITS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 1, 3, v) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_NO_OUTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 0, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_NO_OUTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 0, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_VLAN_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 12, 12, r) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_VLAN_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 12, 12, v) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_SRC_PORT_EXTEND_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 4, 5, r) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_SRC_PORT_EXTEND_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 4, 5, v) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_AGING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 2, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_AGING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 2, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_SKIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 1, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_SKIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 1, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 1, v) + +typedef struct +{ + uint32_t context :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_index :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t gem_flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_pbits :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t no_inner :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_vlan :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_pbits :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t no_outer :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_vlan :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aging :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t skip :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_CONTEXT_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_CONTEXT_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_KEY_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 4, 4, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_KEY_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 4, 4, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_GEM_FLOW_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 4, 8, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_GEM_FLOW_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 4, 8, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_INNER_PBITS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 1, 3, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_INNER_PBITS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 1, 3, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_NO_INNER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_NO_INNER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_INNER_VLAN_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 4, 12, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_INNER_VLAN_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 4, 12, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_OUTER_PBITS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 3, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_OUTER_PBITS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 3, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_NO_OUTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_NO_OUTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_OUTER_VLAN_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 4, 12, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_OUTER_VLAN_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 4, 12, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_AGING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 2, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_AGING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 2, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_SKIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 1, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_SKIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 1, 1, v) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 1, r) +#define RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 1, v) + +typedef struct +{ + uint32_t context :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_index :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_bridge_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_pbits :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t no_inner :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_vlan :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_pbits :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t no_outer :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_vlan :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aging :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t skip :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_CONTEXT_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_CONTEXT_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_KEY_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 4, 4, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_KEY_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 4, 4, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 4, 4, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 4, 4, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_SRC_BRIDGE_PORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 4, 8, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_SRC_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 4, 8, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_INNER_PBITS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 1, 3, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_INNER_PBITS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 1, 3, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_NO_INNER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_NO_INNER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_INNER_VLAN_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 4, 12, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_INNER_VLAN_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 4, 12, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_OUTER_PBITS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 3, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_OUTER_PBITS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 3, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_NO_OUTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_NO_OUTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_OUTER_VLAN_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 4, 12, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_OUTER_VLAN_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 4, 12, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_AGING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 2, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_AGING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 2, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_SKIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 1, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_SKIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 1, 1, v) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 1, r) +#define RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 1, v) + +typedef struct +{ + uint32_t context :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_index :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_0 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aging :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t skip :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_DTS; + +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_CONTEXT_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_CONTEXT_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_KEY_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 4, 4, r) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_KEY_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 4, 4, v) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_KEY_0_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 4, 16, r) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_KEY_0_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 4, 16, v) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_KEY_1_READ(r, p) { uint32_t temp; FIELD_MREAD_32((uint8_t *)p, 0, 4, temp); r = temp << 28; FIELD_MREAD_32(((uint8_t *)p + 4), 4, 28, temp); r = r | temp; } +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_KEY_1_WRITE(v, p) { FIELD_MWRITE_32((uint8_t *)p, 0, 4, ((v & 0xf0000000) >> 28)); FIELD_MWRITE_32(((uint8_t *)p + 4), 4, 28, (v & 0x0fffffff)); } +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_AGING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 2, 1, r) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_AGING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 2, 1, v) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_SKIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 1, 1, r) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_SKIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 1, 1, v) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 1, r) +#define RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 1, v) + +typedef struct +{ + uint32_t head_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tail_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t index :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t use_as_scheduler :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t scheduler_index :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_threshold :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t profile_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t queue_mask :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t total_pkt_counter :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t svc_queue_sched_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_DTS; + +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_HEAD_PTR_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_HEAD_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_TAIL_PTR_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_TAIL_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_PACKET_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_PACKET_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_INDEX_READ(r, p) MREAD_8((uint8_t *)p + 6, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_INDEX_WRITE(v, p) MWRITE_8((uint8_t *)p + 6, v) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_USE_AS_SCHEDULER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 3, 1, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_USE_AS_SCHEDULER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 3, 1, v) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_SCHEDULER_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 3, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_SCHEDULER_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 3, v) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_PACKET_THRESHOLD_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_PACKET_THRESHOLD_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_PROFILE_PTR_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_PROFILE_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_QUEUE_MASK_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_QUEUE_MASK_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_TOTAL_PKT_COUNTER_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_TOTAL_PKT_COUNTER_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_SVC_QUEUE_SCHED_PTR_READ(r, p) MREAD_16((uint8_t *)p + 20, r) +#define RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_SVC_QUEUE_SCHED_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 20, v) +#if defined DSL_63138 + +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE 64 +typedef struct +{ + RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_DTS entry[ RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SERVICE_QUEUES_TABLE_DTS; + +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_PTR() ( RDD_WAN_TX_SERVICE_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_TX_SERVICE_QUEUES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 4 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_US_CONNECTION_BUFFER_TABLE_SIZE ][ RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_BUFFER_TABLE_DTS; + +#define RDD_US_CONNECTION_BUFFER_TABLE_PTR() ( RDD_US_CONNECTION_BUFFER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_CONNECTION_BUFFER_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPV6_HOST_ADDRESS_CRC_TABLE_DTS; + +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_PTR() ( RDD_IPV6_HOST_ADDRESS_CRC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + IPV6_HOST_ADDRESS_CRC_TABLE_ADDRESS - 0x8000 ) + +#endif + +typedef struct +{ + uint32_t backup_first_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t backup_last_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t backup_num_entries :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t phy_size :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_INFO_CACHE_ENTRY_DTS; + +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_FIRST_INDEX_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_FIRST_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_FIRST_INDEX_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_FIRST_INDEX_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_LAST_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_LAST_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_LAST_INDEX_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_LAST_INDEX_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_NUM_ENTRIES_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_NUM_ENTRIES_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_NUM_ENTRIES_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_BACKUP_NUM_ENTRIES_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_PHY_SIZE_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_PHY_SIZE_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_PHY_SIZE_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_BACKUP_INFO_CACHE_ENTRY_PHY_SIZE_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#if defined DSL_63138 + +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_BACKUP_INFO_CACHE_ENTRY_DTS entry[ RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_INFO_CACHE_TABLE_DTS; + +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_PTR() ( RDD_DHD_BACKUP_INFO_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_BACKUP_INFO_CACHE_TABLE_ADDRESS - 0x8000 ) + +#endif + +typedef struct +{ + uint32_t head_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tail_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t index :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t use_as_scheduler :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t scheduler_index :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_threshold :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t profile_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controller_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t queue_mask :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_QUEUE_DESCRIPTOR_DTS; + +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_HEAD_PTR_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_HEAD_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_TAIL_PTR_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_TAIL_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_PACKET_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_PACKET_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_INDEX_READ(r, p) MREAD_8((uint8_t *)p + 6, r) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_INDEX_WRITE(v, p) MWRITE_8((uint8_t *)p + 6, v) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_USE_AS_SCHEDULER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 3, 1, r) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_USE_AS_SCHEDULER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 3, 1, v) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_SCHEDULER_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 3, r) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_SCHEDULER_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 3, v) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_PACKET_THRESHOLD_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_PACKET_THRESHOLD_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_PROFILE_PTR_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_PROFILE_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_RATE_CONTROLLER_PTR_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_RATE_CONTROLLER_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_QUEUE_MASK_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_WAN_TX_QUEUE_DESCRIPTOR_QUEUE_MASK_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#if defined DSL_63138 + +#define RDD_WAN_TX_QUEUES_TABLE_SIZE 256 +typedef struct +{ + RDD_WAN_TX_QUEUE_DESCRIPTOR_DTS entry[ RDD_WAN_TX_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_QUEUES_TABLE_DTS; + +#define RDD_WAN_TX_QUEUES_TABLE_PTR() ( RDD_WAN_TX_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_TX_QUEUES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_BASE_PTR() ( RDD_RUNNER_FWTRACE_MAINB_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_MAINB_BASE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +typedef struct +{ + RDD_CPU_RX_DESCRIPTOR_DTS entry[ RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RING_PACKET_DESCRIPTORS_CACHE_DTS; + +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_PTR() ( RDD_US_RING_PACKET_DESCRIPTORS_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS - 0x8000 ) + +#endif +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_THRESHOLDS_NUMBER 4 +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_TIMEOUTS_NUMBER 4 +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_TIMEOUT_CNTRS_NUMBER 4 + +typedef struct +{ + uint32_t us_dhd_doorbell_post :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t us_dhd_doorbell_complete :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t r2d_wr_fr_desc_base_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t d2r_rd_fr_desc_base_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t r2d_rd_fr_desc_base_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t d2r_wr_fr_desc_base_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_post_fr_base_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_complete_fr_base_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_complete_fr_base_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_post_mgmt_fr_base_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_post_r2d_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t us_rd_fr_r2d_indexes :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t us_wr_fr_r2d_indexes :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_rd_fr_d2r_indexes :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rx_wr_fr_d2r_indexes :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t add_llcsnap_header :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aggregation_bypass_cpu_tx :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aggregation_bypass_non_udp_tcp :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t idma_active :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_format :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aggregation_bypass_tcp_pktlen :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t per_ac_aggregation_thresholds[RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_THRESHOLDS_NUMBER]; + uint8_t per_ac_aggregation_timeouts[RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_TIMEOUTS_NUMBER]; + uint8_t per_ac_aggregation_timeout_cntrs[RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_TIMEOUT_CNTRS_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_DTS; + +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_US_DHD_DOORBELL_POST_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_US_DHD_DOORBELL_POST_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_US_DHD_DOORBELL_COMPLETE_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_US_DHD_DOORBELL_COMPLETE_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_R2D_WR_FR_DESC_BASE_PTR_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_R2D_WR_FR_DESC_BASE_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_D2R_RD_FR_DESC_BASE_PTR_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_D2R_RD_FR_DESC_BASE_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_R2D_RD_FR_DESC_BASE_PTR_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_R2D_RD_FR_DESC_BASE_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_D2R_WR_FR_DESC_BASE_PTR_READ(r, p) MREAD_32((uint8_t *)p + 20, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_D2R_WR_FR_DESC_BASE_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 20, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_RX_POST_FR_BASE_PTR_READ(r, p) MREAD_32((uint8_t *)p + 24, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_RX_POST_FR_BASE_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 24, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_TX_COMPLETE_FR_BASE_PTR_READ(r, p) MREAD_32((uint8_t *)p + 28, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_TX_COMPLETE_FR_BASE_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 28, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_RX_COMPLETE_FR_BASE_PTR_READ(r, p) MREAD_32((uint8_t *)p + 32, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_RX_COMPLETE_FR_BASE_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 32, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_TX_POST_MGMT_FR_BASE_PTR_READ(r, p) MREAD_32((uint8_t *)p + 36, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_TX_POST_MGMT_FR_BASE_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 36, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_RX_POST_R2D_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 40, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_RX_POST_R2D_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 40, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_US_RD_FR_R2D_INDEXES_READ(r, p) MREAD_16((uint8_t *)p + 42, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_US_RD_FR_R2D_INDEXES_WRITE(v, p) MWRITE_16((uint8_t *)p + 42, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_US_WR_FR_R2D_INDEXES_READ(r, p) MREAD_16((uint8_t *)p + 44, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_US_WR_FR_R2D_INDEXES_WRITE(v, p) MWRITE_16((uint8_t *)p + 44, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_RX_RD_FR_D2R_INDEXES_READ(r, p) MREAD_16((uint8_t *)p + 46, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_RX_RD_FR_D2R_INDEXES_WRITE(v, p) MWRITE_16((uint8_t *)p + 46, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_RX_WR_FR_D2R_INDEXES_READ(r, p) MREAD_16((uint8_t *)p + 48, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_RX_WR_FR_D2R_INDEXES_WRITE(v, p) MWRITE_16((uint8_t *)p + 48, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_ADD_LLCSNAP_HEADER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 50, 7, 1, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_ADD_LLCSNAP_HEADER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 50, 7, 1, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_AGGREGATION_BYPASS_CPU_TX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 50, 6, 1, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_AGGREGATION_BYPASS_CPU_TX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 50, 6, 1, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_AGGREGATION_BYPASS_NON_UDP_TCP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 50, 5, 1, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_AGGREGATION_BYPASS_NON_UDP_TCP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 50, 5, 1, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_IDMA_ACTIVE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 50, 3, 1, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_IDMA_ACTIVE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 50, 3, 1, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_FLOW_RING_FORMAT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 50, 0, 3, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_FLOW_RING_FORMAT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 50, 0, 3, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_AGGREGATION_BYPASS_TCP_PKTLEN_READ(r, p) MREAD_8((uint8_t *)p + 51, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_AGGREGATION_BYPASS_TCP_PKTLEN_WRITE(v, p) MWRITE_8((uint8_t *)p + 51, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_THRESHOLDS_READ(r, p, i) MREAD_I_8((uint8_t *)p + 52, i, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_THRESHOLDS_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 52, i, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_TIMEOUTS_READ(r, p, i) MREAD_I_8((uint8_t *)p + 56, i, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_TIMEOUTS_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 56, i, v) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_TIMEOUT_CNTRS_READ(r, p, i) MREAD_I_8((uint8_t *)p + 60, i, r) +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_PER_AC_AGGREGATION_TIMEOUT_CNTRS_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 60, i, v) +#if defined DSL_63138 + +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE 3 +typedef struct +{ + RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_DTS entry[ RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_DTS; + +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_PTR() ( RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_RADIO_INSTANCE_COMMON_B_DATA_ADDRESS - 0x8000 ) + +#endif +#define RDD_DUMMY_RATE_CONTROLLER_DESCRIPTOR_RESERVED_FW_ONLY_NUMBER 16 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_DUMMY_RATE_CONTROLLER_DESCRIPTOR_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DUMMY_RATE_CONTROLLER_DESCRIPTOR_DTS; + + +typedef struct +{ + uint32_t flow_ring_base_low :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_base_high :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t size :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lock :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flags :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rd_idx :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wr_idx :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_DTS; + +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLOW_RING_BASE_LOW_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLOW_RING_BASE_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLOW_RING_BASE_LOW_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLOW_RING_BASE_LOW_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLOW_RING_BASE_HIGH_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLOW_RING_BASE_HIGH_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLOW_RING_BASE_HIGH_L_READ( wv ) FIELD_GET( wv, 0, 32 ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLOW_RING_BASE_HIGH_L_WRITE( v, wv ) FIELD_SET( v, 0, 32, wv ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_SIZE_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_SIZE_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_SIZE_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_SIZE_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_LOCK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 7, 1, r) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_LOCK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 7, 1, v) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_LOCK_L_READ( wv ) FIELD_GET( wv, 15, 1 ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_LOCK_L_WRITE( v, wv ) FIELD_SET( v, 15, 1, wv ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 0, 5, r) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 0, 5, v) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_SSID_L_READ( wv ) FIELD_GET( wv, 8, 5 ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_SSID_L_WRITE( v, wv ) FIELD_SET( v, 8, 5, wv ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLAGS_READ(r, p) MREAD_8((uint8_t *)p + 11, r) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 11, v) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLAGS_L_READ( wv ) FIELD_GET( wv, 0, 8 ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_FLAGS_L_WRITE( v, wv ) FIELD_SET( v, 0, 8, wv ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_RD_IDX_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_RD_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_RD_IDX_L_READ( wv ) FIELD_GET( wv, 16, 16 ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_RD_IDX_L_WRITE( v, wv ) FIELD_SET( v, 16, 16, wv ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_WR_IDX_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_WR_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_WR_IDX_L_READ( wv ) FIELD_GET( wv, 0, 16 ) +#define RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_WR_IDX_L_WRITE( v, wv ) FIELD_SET( v, 0, 16, wv ) +#if defined DSL_63138 + +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_DTS entry[ RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_DTS; + +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_PTR() ( RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_FLOW_RING_CACHE_CTX_TABLE_ADDRESS - 0x8000 ) + +#endif +#define RDD_FC_FLOW_IP_ADDRESSES_ENTRY_SA_DA_ADDRESSES_NUMBER 32 +#define RDD_FC_FLOW_IP_ADDRESSES_ENTRY_RESERVED0_NUMBER 4 +#define RDD_FC_FLOW_IP_ADDRESSES_ENTRY_RESERVED1_NUMBER 4 + +typedef struct +{ + uint8_t sa_da_addresses[RDD_FC_FLOW_IP_ADDRESSES_ENTRY_SA_DA_ADDRESSES_NUMBER]; + uint8_t reserved0[RDD_FC_FLOW_IP_ADDRESSES_ENTRY_RESERVED0_NUMBER]; + uint32_t reference_count :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved1[RDD_FC_FLOW_IP_ADDRESSES_ENTRY_RESERVED1_NUMBER]; + uint32_t is_ipv6_address :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_FLOW_IP_ADDRESSES_ENTRY_DTS; + +#define RDD_FC_FLOW_IP_ADDRESSES_ENTRY_SA_DA_ADDRESSES_READ(r, p, i) MREAD_I_8((uint8_t *)p, i, r) +#define RDD_FC_FLOW_IP_ADDRESSES_ENTRY_SA_DA_ADDRESSES_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p, i, v) +#define RDD_FC_FLOW_IP_ADDRESSES_ENTRY_REFERENCE_COUNT_READ(r, p) MREAD_32((uint8_t *)p + 36, r) +#define RDD_FC_FLOW_IP_ADDRESSES_ENTRY_REFERENCE_COUNT_WRITE(v, p) MWRITE_32((uint8_t *)p + 36, v) +#define RDD_FC_FLOW_IP_ADDRESSES_ENTRY_IS_IPV6_ADDRESS_READ(r, p) MREAD_32((uint8_t *)p + 40, r) +#define RDD_FC_FLOW_IP_ADDRESSES_ENTRY_IS_IPV6_ADDRESS_WRITE(v, p) MWRITE_32((uint8_t *)p + 40, v) +#if defined DSL_63138 + +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE 4 +typedef struct +{ + RDD_FC_FLOW_IP_ADDRESSES_ENTRY_DTS entry[ RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_FLOW_IP_ADDRESSES_TABLE_DTS; + +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_PTR() ( RDD_FC_FLOW_IP_ADDRESSES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + FC_FLOW_IP_ADDRESSES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_PTR() ( RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_MAINB_CURR_OFFSET_ADDRESS - 0x8000 ) + +#endif +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_TX_QUEUE_ADDR_NUMBER 8 + +typedef struct +{ + uint32_t current_peak_budget :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_peak_budget_exponent :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_peak_budget :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_budget_limit_exponent :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_budget_limit :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t current_sustain_budget :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t allocated_sustain_budget :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controller_mask :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_channel_ptr :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t priority_queues_status :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_burst_counter :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_weight :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t peak_burst_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t tx_queue_addr[RDD_US_RATE_CONTROLLER_DESCRIPTOR_TX_QUEUE_ADDR_NUMBER]; + uint32_t reserved1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RATE_CONTROLLER_DESCRIPTOR_DTS; + +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_CURRENT_PEAK_BUDGET_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_CURRENT_PEAK_BUDGET_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_ALLOCATED_PEAK_BUDGET_EXPONENT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 2, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_ALLOCATED_PEAK_BUDGET_EXPONENT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 2, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_ALLOCATED_PEAK_BUDGET_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 0, 14, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_ALLOCATED_PEAK_BUDGET_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 0, 14, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PEAK_BUDGET_LIMIT_EXPONENT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 6, 2, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PEAK_BUDGET_LIMIT_EXPONENT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 6, 2, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PEAK_BUDGET_LIMIT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PEAK_BUDGET_LIMIT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_CURRENT_SUSTAIN_BUDGET_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_CURRENT_SUSTAIN_BUDGET_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_ALLOCATED_SUSTAIN_BUDGET_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_ALLOCATED_SUSTAIN_BUDGET_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_RATE_CONTROLLER_MASK_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_RATE_CONTROLLER_MASK_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_WAN_CHANNEL_PTR_READ(r, p) MREAD_16((uint8_t *)p + 20, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_WAN_CHANNEL_PTR_WRITE(v, p) MWRITE_16((uint8_t *)p + 20, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PRIORITY_QUEUES_STATUS_READ(r, p) MREAD_16((uint8_t *)p + 22, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PRIORITY_QUEUES_STATUS_WRITE(v, p) MWRITE_16((uint8_t *)p + 22, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PEAK_BURST_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 24, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PEAK_BURST_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 24, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PEAK_WEIGHT_READ(r, p) MREAD_8((uint8_t *)p + 26, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PEAK_WEIGHT_WRITE(v, p) MWRITE_8((uint8_t *)p + 26, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PEAK_BURST_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 27, 0, 1, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_PEAK_BURST_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 27, 0, 1, v) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_TX_QUEUE_ADDR_READ(r, p, i) MREAD_I_16((uint8_t *)p + 28, i, r) +#define RDD_US_RATE_CONTROLLER_DESCRIPTOR_TX_QUEUE_ADDR_WRITE(v, p, i) MWRITE_I_16((uint8_t *)p + 28, i, v) +#if defined DSL_63138 + +#define RDD_US_RATE_CONTROLLERS_TABLE_SIZE 128 +typedef struct +{ + RDD_US_RATE_CONTROLLER_DESCRIPTOR_DTS entry[ RDD_US_RATE_CONTROLLERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RATE_CONTROLLERS_TABLE_DTS; + +#define RDD_US_RATE_CONTROLLERS_TABLE_PTR() ( RDD_US_RATE_CONTROLLERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_RATE_CONTROLLERS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_RUNNER_B_SCRATCHPAD_DTS; + +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_PTR() ( RDD_CPU_RX_RUNNER_B_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + CPU_RX_RUNNER_B_SCRATCHPAD_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 40 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS - 0x8000 ) + +#endif +#define RDD_DUMMY_WAN_TX_QUEUE_DESCRIPTOR_RESERVED_FW_ONLY_NUMBER 4 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_DUMMY_WAN_TX_QUEUE_DESCRIPTOR_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DUMMY_WAN_TX_QUEUE_DESCRIPTOR_DTS; + +#if defined DSL_63138 + +#define RDD_IPV4_HOST_ADDRESS_TABLE_SIZE 8 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_IPV4_HOST_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPV4_HOST_ADDRESS_TABLE_DTS; + +#define RDD_IPV4_HOST_ADDRESS_TABLE_PTR() ( RDD_IPV4_HOST_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + IPV4_HOST_ADDRESS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 40 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS - 0x8000 ) + +#endif +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_PTR() ( RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS - 0x8000 ) + +#if defined DSL_63138 + +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_DTS entry[ RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS; + +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_PTR() ( RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS - 0x8000 ) + +#endif +#define RDD_PACKET_SRAM_TO_DDR_COPY_BUFFER_RESERVED_FW_ONLY_NUMBER 32 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_PACKET_SRAM_TO_DDR_COPY_BUFFER_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PACKET_SRAM_TO_DDR_COPY_BUFFER_DTS; + +#if defined DSL_63138 + +#define RDD_MAIN_B_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_MAIN_B_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAIN_B_DEBUG_TRACE_DTS; + +#define RDD_MAIN_B_DEBUG_TRACE_PTR() ( RDD_MAIN_B_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + MAIN_B_DEBUG_TRACE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_PICO_B_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_PICO_B_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_B_DEBUG_TRACE_DTS; + +#define RDD_PICO_B_DEBUG_TRACE_PTR() ( RDD_PICO_B_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + PICO_B_DEBUG_TRACE_ADDRESS - 0x8000 ) + +#endif +#define RDD_LAN_INGRESS_FIFO_ENTRY_RESERVED_FW_ONLY_NUMBER 32 + +typedef struct +{ + uint16_t reserved_fw_only[RDD_LAN_INGRESS_FIFO_ENTRY_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_LAN_INGRESS_FIFO_ENTRY_DTS; + +#if defined DSL_63138 + +#define RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOB_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_PICOB_BASE_PTR() ( RDD_RUNNER_FWTRACE_PICOB_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_PICOB_BASE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_BACKUP_INDEX_CACHE_DTS; + +#define RDD_US_DHD_BACKUP_INDEX_CACHE_PTR() ( RDD_US_DHD_BACKUP_INDEX_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_DHD_BACKUP_INDEX_CACHE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_DHD_DOORBELL_COUNTERS_SIZE 48 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DHD_DOORBELL_COUNTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_DOORBELL_COUNTERS_DTS; + +#define RDD_DHD_DOORBELL_COUNTERS_PTR() ( RDD_DHD_DOORBELL_COUNTERS_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_DOORBELL_COUNTERS_ADDRESS - 0x8000 ) + +#endif + +typedef struct +{ + uint32_t dhd_backup_queues_ddr_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_bq_index_stack_ddr_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_bq_index_total_entry_count :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_bq_index_used_entry_count :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_bq_index_cache_a_cur_offset :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_bq_index_cache_b_cur_offset :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DTS; + +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BACKUP_QUEUES_DDR_PTR_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BACKUP_QUEUES_DDR_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BQ_INDEX_STACK_DDR_PTR_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BQ_INDEX_STACK_DDR_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BQ_INDEX_TOTAL_ENTRY_COUNT_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BQ_INDEX_TOTAL_ENTRY_COUNT_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BQ_INDEX_USED_ENTRY_COUNT_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BQ_INDEX_USED_ENTRY_COUNT_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BQ_INDEX_CACHE_A_CUR_OFFSET_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BQ_INDEX_CACHE_A_CUR_OFFSET_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BQ_INDEX_CACHE_B_CUR_OFFSET_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ENTRY_DHD_BQ_INDEX_CACHE_B_CUR_OFFSET_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#if defined DSL_63138 + +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_WAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_ENQUEUE_INGRESS_QUEUE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_PTR() ( RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_ADDRESS - 0x8000 ) + +#endif +/* DDR */ +#define RDD_BPM_PACKET_BUFFER_RESERVED_FW_ONLY_NUMBER 512 + +typedef struct +{ + uint32_t reserved_fw_only[RDD_BPM_PACKET_BUFFER_RESERVED_FW_ONLY_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BPM_PACKET_BUFFER_DTS; + +#if defined DSL_63138 + +#define RDD_BPM_PACKET_BUFFERS_SIZE 7680 +typedef struct +{ + RDD_BPM_PACKET_BUFFER_DTS entry[ RDD_BPM_PACKET_BUFFERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BPM_PACKET_BUFFERS_DTS; + +#endif + +#define RDD_CONNECTION_TABLE_SIZE 32768 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_CONNECTION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONNECTION_TABLE_DTS; + +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_NUMBER 104 + +typedef struct +{ + uint32_t flow_hits :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_bytes :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t overflow :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_routed :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_tos_mangle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_l2_accel :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mtu :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tos :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_wred_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_mapt_us :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_df :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t service_queue_id :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_unicast_wfd_any :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t priority :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_idx :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_phy :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_addresses_table_index :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t link_specific_union :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_hit_trap :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_ingqos_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_5 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pathstat_idx :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_6 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pppoe_ses_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t command_list[RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_NUMBER]; + uint32_t valid :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command_list_length_64 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_unicast_wfd_nic :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t connection_direction :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t connection_table_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_DTS; + +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_OVERFLOW_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_OVERFLOW_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 5, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 5, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_L2_ACCEL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 3, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_L2_ACCEL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 3, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_MTU_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 0, 11, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_MTU_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 0, 11, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 10, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 10, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_WRED_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 7, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_WRED_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 7, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_MAPT_US_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 6, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_MAPT_US_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 6, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_DF_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 5, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_DF_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 5, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_SERVICE_QUEUE_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 0, 5, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_SERVICE_QUEUE_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 0, 5, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_DROP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_DROP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_ANY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 6, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_ANY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 6, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 2, 4, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 2, 4, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_WFD_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 1, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_WFD_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 1, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_WFD_IDX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 7, 2, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_WFD_IDX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 7, 2, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_EGRESS_PHY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 5, 2, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_EGRESS_PHY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 5, 2, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IP_ADDRESSES_TABLE_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 2, 3, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IP_ADDRESSES_TABLE_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 2, 3, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_LINK_SPECIFIC_UNION_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 18, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_LINK_SPECIFIC_UNION_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 18, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_HIT_TRAP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 16, 7, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_HIT_TRAP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 16, 7, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_INGQOS_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 16, 6, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_INGQOS_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 16, 6, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_CPU_REASON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 18, 0, 6, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_CPU_REASON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 18, 0, 6, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_PATHSTAT_IDX_READ(r, p) MREAD_8((uint8_t *)p + 19, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_PATHSTAT_IDX_WRITE(v, p) MWRITE_8((uint8_t *)p + 19, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_PPPOE_SES_ID_READ(r, p) MREAD_16((uint8_t *)p + 22, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_PPPOE_SES_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 22, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_READ(r, p, i) MREAD_I_8((uint8_t *)p + 24, i, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 24, i, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_VALID_READ(r, p) MREAD_8((uint8_t *)p + 128, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_VALID_WRITE(v, p) MWRITE_8((uint8_t *)p + 128, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_LENGTH_64_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 129, 4, 4, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_LENGTH_64_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 129, 4, 4, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_NIC_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 129, 1, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_NIC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 129, 1, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_CONNECTION_DIRECTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 129, 0, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_CONNECTION_DIRECTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 129, 0, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_CONNECTION_TABLE_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 130, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_CONNECTION_TABLE_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 130, v) + +typedef struct +{ + uint32_t reserved1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4 :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_info :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = egress_info, size = 2 bits + uint32_t lag_port :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_mode :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t egress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t traffic_class :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t rate_controller :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_DTS; + +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_EGRESS_INFO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 2, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_EGRESS_INFO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 2, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_LAG_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 2, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_LAG_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 2, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_EGRESS_MODE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 1, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_EGRESS_MODE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 1, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_EGRESS_PORT_READ(r, p) MREAD_8((uint8_t *)p + 14, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_EGRESS_PORT_WRITE(v, p) MWRITE_8((uint8_t *)p + 14, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_TRAFFIC_CLASS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 15, 5, 3, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_TRAFFIC_CLASS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 15, 5, 3, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_RATE_CONTROLLER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 15, 0, 5, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_RATE_CONTROLLER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 15, 0, 5, v) + +typedef struct +{ + uint32_t reserved1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t chain_idx :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_UCAST_FLOW_CONTEXT_WFD_NIC_ENTRY_DTS; + +#define RDD_FC_UCAST_FLOW_CONTEXT_WFD_NIC_ENTRY_CHAIN_IDX_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_WFD_NIC_ENTRY_CHAIN_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) + +typedef struct +{ + uint32_t reserved1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wifi_ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_id :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_UCAST_FLOW_CONTEXT_WFD_DHD_ENTRY_DTS; + +#define RDD_FC_UCAST_FLOW_CONTEXT_WFD_DHD_ENTRY_WIFI_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 14, 2, 4, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_WFD_DHD_ENTRY_WIFI_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 14, 2, 4, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_WFD_DHD_ENTRY_FLOW_RING_ID_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 14, 0, 10, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_WFD_DHD_ENTRY_FLOW_RING_ID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 14, 0, 10, v) + +typedef struct +{ + uint32_t reserved1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4 :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhd_flow_priority :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t radio_idx :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wifi_ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_ring_id :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_DTS; + +#define RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_DHD_FLOW_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 2, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_DHD_FLOW_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 2, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_RADIO_IDX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 14, 6, 2, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_RADIO_IDX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 14, 6, 2, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_WIFI_SSID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 14, 2, 4, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_WIFI_SSID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 14, 2, 4, v) +#define RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_FLOW_RING_ID_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 14, 0, 10, r) +#define RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_FLOW_RING_ID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 14, 0, 10, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_NUMBER 104 + +typedef struct +{ + uint32_t flow_hits :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_bytes :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t overflow :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_routed :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_tos_mangle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_l2_accel :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mtu :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tos :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_wred_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t service_queue_id :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_unicast_wfd_any :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t priority :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_idx :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_phy :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_addresses_table_index :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t link_specific_union :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_hit_trap :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_ingqos_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_5 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pathstat_idx :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_6 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pppoe_ses_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t command_list[RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_NUMBER]; + uint32_t valid :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command_list_length_64 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_unicast_wfd_nic :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t connection_direction :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t connection_table_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_DTS; + +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_OVERFLOW_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_OVERFLOW_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 5, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 5, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_L2_ACCEL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 3, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_L2_ACCEL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 3, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_MTU_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 0, 11, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_MTU_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 0, 11, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 10, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 10, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_WRED_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 7, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_WRED_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 7, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_SERVICE_QUEUE_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 0, 5, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_SERVICE_QUEUE_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 0, 5, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_DROP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_DROP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_ANY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 6, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_ANY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 6, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 2, 4, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 2, 4, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_WFD_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 1, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_WFD_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 1, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_WFD_IDX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 7, 2, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_WFD_IDX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 7, 2, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_EGRESS_PHY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 5, 2, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_EGRESS_PHY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 5, 2, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IP_ADDRESSES_TABLE_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 2, 3, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IP_ADDRESSES_TABLE_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 2, 3, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_LINK_SPECIFIC_UNION_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 18, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_LINK_SPECIFIC_UNION_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 18, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_HIT_TRAP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 16, 7, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_HIT_TRAP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 16, 7, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_INGQOS_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 16, 6, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_INGQOS_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 16, 6, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_CPU_REASON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 18, 0, 6, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_CPU_REASON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 18, 0, 6, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_PATHSTAT_IDX_READ(r, p) MREAD_8((uint8_t *)p + 19, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_PATHSTAT_IDX_WRITE(v, p) MWRITE_8((uint8_t *)p + 19, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_PPPOE_SES_ID_READ(r, p) MREAD_16((uint8_t *)p + 22, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_PPPOE_SES_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 22, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_READ(r, p, i) MREAD_I_8((uint8_t *)p + 24, i, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 24, i, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_VALID_READ(r, p) MREAD_8((uint8_t *)p + 128, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_VALID_WRITE(v, p) MWRITE_8((uint8_t *)p + 128, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_LENGTH_64_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 129, 4, 4, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_LENGTH_64_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 129, 4, 4, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_NIC_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 129, 1, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_NIC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 129, 1, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_CONNECTION_DIRECTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 129, 0, 1, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_CONNECTION_DIRECTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 129, 0, 1, v) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_CONNECTION_TABLE_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 130, r) +#define RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_CONNECTION_TABLE_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 130, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_PORT_CONTEXT_NUMBER 8 +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_L3_COMMAND_LIST_NUMBER 20 +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_RESERVED4_NUMBER 56 + +typedef struct +{ + uint32_t flow_hits :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_bytes :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t overflow :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_routed :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_tos_mangle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t number_of_ports :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t port_mask :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mtu :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tos :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wlan_mcast_clients :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wlan_mcast_index :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mcast_port_header_buffer_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t port_context[RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_PORT_CONTEXT_NUMBER]; + uint8_t l3_command_list[RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_L3_COMMAND_LIST_NUMBER]; + uint8_t reserved4[RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_RESERVED4_NUMBER]; + uint32_t valid :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command_list_length_64 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved5 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t connection_direction :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t connection_table_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_DTS; + +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_OVERFLOW_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_OVERFLOW_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 5, 1, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 5, 1, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 1, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 1, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_NUMBER_OF_PORTS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 0, 4, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_NUMBER_OF_PORTS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 0, 4, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_PORT_MASK_READ(r, p) MREAD_8((uint8_t *)p + 9, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_PORT_MASK_WRITE(v, p) MWRITE_8((uint8_t *)p + 9, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_MTU_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 10, 0, 11, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_MTU_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 10, 0, 11, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 12, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 12, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_WLAN_MCAST_CLIENTS_READ(r, p) MREAD_8((uint8_t *)p + 14, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_WLAN_MCAST_CLIENTS_WRITE(v, p) MWRITE_8((uint8_t *)p + 14, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_WLAN_MCAST_INDEX_READ(r, p) MREAD_8((uint8_t *)p + 15, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_WLAN_MCAST_INDEX_WRITE(v, p) MWRITE_8((uint8_t *)p + 15, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_MCAST_PORT_HEADER_BUFFER_PTR_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_MCAST_PORT_HEADER_BUFFER_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_PORT_CONTEXT_READ(r, p, i) MREAD_I_32((uint8_t *)p + 20, i, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_PORT_CONTEXT_WRITE(v, p, i) MWRITE_I_32((uint8_t *)p + 20, i, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_L3_COMMAND_LIST_READ(r, p, i) MREAD_I_8((uint8_t *)p + 52, i, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_L3_COMMAND_LIST_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 52, i, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_VALID_READ(r, p) MREAD_8((uint8_t *)p + 128, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_VALID_WRITE(v, p) MWRITE_8((uint8_t *)p + 128, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_LENGTH_64_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 129, 4, 4, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_LENGTH_64_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 129, 4, 4, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_CONNECTION_DIRECTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 129, 0, 1, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_CONNECTION_DIRECTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 129, 0, 1, v) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_CONNECTION_TABLE_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 130, r) +#define RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_CONNECTION_TABLE_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 130, v) +#if defined DSL_63138 + +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE 8 +typedef struct +{ + RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_DTS entry[ RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_R2D_WR_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_R2D_WR_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_R2D_WR_ARR_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_D2R_RD_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_D2R_RD_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_D2R_RD_ARR_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_R2D_RD_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_R2D_RD_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_R2D_RD_ARR_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_D2R_WR_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_D2R_WR_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_D2R_WR_ARR_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE 524288 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_QUEUES_BUFFER_DTS; + +#endif +#define RDD_WLAN_MCAST_DHD_LIST_ENTRY_ARRAY_DHD_STATION_NUMBER 64 + +typedef struct +{ + uint8_t dhd_station[RDD_WLAN_MCAST_DHD_LIST_ENTRY_ARRAY_DHD_STATION_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_LIST_ENTRY_ARRAY_DTS; + +#define RDD_WLAN_MCAST_DHD_LIST_ENTRY_ARRAY_DHD_STATION_READ(r, p, i) MREAD_I_8((uint8_t *)p, i, r) +#define RDD_WLAN_MCAST_DHD_LIST_ENTRY_ARRAY_DHD_STATION_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p, i, v) +#if defined DSL_63138 + +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_DHD_LIST_ENTRY_ARRAY_DTS entry[ RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_LIST_TABLE_DTS; + +#endif + +typedef struct +{ + uint8_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t index :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_LIST_ENTRY_DTS; + +#define RDD_WLAN_MCAST_DHD_LIST_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_WLAN_MCAST_DHD_LIST_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_WLAN_MCAST_DHD_LIST_ENTRY_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 7, r) +#define RDD_WLAN_MCAST_DHD_LIST_ENTRY_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 7, v) +/* PSRAM */ +/* PRIVATE_A */ +#if defined DSL_63148 + +#define RDD_INGRESS_HANDLER_BUFFER_SIZE 32 +typedef struct +{ + RDD_IH_BUFFER_DTS entry[ RDD_INGRESS_HANDLER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_HANDLER_BUFFER_DTS; + +#define RDD_INGRESS_HANDLER_BUFFER_PTR() ( RDD_INGRESS_HANDLER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + INGRESS_HANDLER_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +typedef struct +{ + uint32_t crc_calc :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_port_or_fstat :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_bridge_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t absolute_normal :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t last_indication :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pti :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t _1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t add_indication :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t header_number :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_location :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = packet_location, size = 14 bits + uint32_t buffer_number :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_address_index :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_TX_DESCRIPTOR_DTS; + +#define RDD_BBH_TX_DESCRIPTOR_CRC_CALC_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_CRC_CALC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_WAN_PORT_OR_FSTAT_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 3, 12, r) +#define RDD_BBH_TX_DESCRIPTOR_WAN_PORT_OR_FSTAT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 3, 12, v) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_BRIDGE_PORT_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 5, r) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 5, v) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_BBH_TX_DESCRIPTOR_ABSOLUTE_NORMAL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_ABSOLUTE_NORMAL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_LAST_INDICATION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_LAST_INDICATION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_PTI_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 2, r) +#define RDD_BBH_TX_DESCRIPTOR_PTI_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 2, v) +#define RDD_BBH_TX_DESCRIPTOR__1588_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 3, 1, r) +#define RDD_BBH_TX_DESCRIPTOR__1588_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 3, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_ADD_INDICATION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 2, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_ADD_INDICATION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 2, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_HEADER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 7, 3, r) +#define RDD_BBH_TX_DESCRIPTOR_HEADER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 7, 3, v) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 7, r) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 7, v) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LOCATION_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LOCATION_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_BBH_TX_DESCRIPTOR_ABS_ADDRESS_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_BBH_TX_DESCRIPTOR_ABS_ADDRESS_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#endif +#if defined DSL_63148 + +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_DTS entry[ RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CONTEXT_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_PTR() ( RDD_DS_CONNECTION_CONTEXT_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CONTEXT_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_PTR() ( RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE 64 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_REASON_TO_METER_TABLE_DTS; + +#define RDD_DS_CPU_REASON_TO_METER_TABLE_PTR() ( RDD_DS_CPU_REASON_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_REASON_TO_METER_TABLE_ADDRESS ) + +#endif +#define RDD_DS_CPU_RX_METER_TABLE_PTR() ( RDD_DS_CPU_RX_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_METER_TABLE_ADDRESS ) + +#define RDD_DS_POLICER_TABLE_PTR() ( RDD_DS_POLICER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_POLICER_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_IPSEC_DS_BUFFER_POOL_SIZE 2 +typedef struct +{ + RDD_IPSEC_DS_BUFFER_DTS entry[ RDD_IPSEC_DS_BUFFER_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_BUFFER_POOL_DTS; + +#define RDD_IPSEC_DS_BUFFER_POOL_PTR() ( RDD_IPSEC_DS_BUFFER_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_BUFFER_POOL_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_IPSEC_DS_SA_DESC_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_DTS entry[ RDD_IPSEC_DS_SA_DESC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_SA_DESC_TABLE_DTS; + +#define RDD_IPSEC_DS_SA_DESC_TABLE_PTR() ( RDD_IPSEC_DS_SA_DESC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_SA_DESC_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_IPSEC_US_SA_DESC_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_DTS entry[ RDD_IPSEC_US_SA_DESC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_US_SA_DESC_TABLE_DTS; + +#define RDD_IPSEC_US_SA_DESC_TABLE_PTR() ( RDD_IPSEC_US_SA_DESC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_US_SA_DESC_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE 32 +typedef struct +{ + RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_DTS entry[ RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_PTR() ( RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + SERVICE_QUEUES_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +typedef struct +{ + RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_DTS entry[ RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_DTS; + +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_PTR() ( RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS ) + +#endif +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE ][ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE 32 +typedef struct +{ + RDD_RATE_LIMITER_REMAINDER_ENTRY_DTS entry[ RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_LIMITER_REMAINDER_TABLE_DTS; + +#define RDD_RATE_LIMITER_REMAINDER_TABLE_PTR() ( RDD_RATE_LIMITER_REMAINDER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RATE_LIMITER_REMAINDER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +typedef struct +{ + RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_FC_MCAST_CONNECTION2_TABLE_SIZE 128 +typedef struct +{ + RDD_FC_MCAST_CONNECTION2_ENTRY_DTS entry[ RDD_FC_MCAST_CONNECTION2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_CONNECTION2_TABLE_DTS; + +#define RDD_FC_MCAST_CONNECTION2_TABLE_PTR() ( RDD_FC_MCAST_CONNECTION2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + FC_MCAST_CONNECTION2_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE 72 +typedef struct +{ + RDD_ETH_TX_QUEUE_POINTERS_ENTRY_DTS entry[ RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS; + +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_PTR() ( RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_QUEUES_POINTERS_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_ETH_TX_QUEUES_TABLE_SIZE 72 +typedef struct +{ + RDD_ETH_TX_QUEUE_DESCRIPTOR_DTS entry[ RDD_ETH_TX_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_QUEUES_TABLE_DTS; + +#define RDD_ETH_TX_QUEUES_TABLE_PTR() ( RDD_ETH_TX_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_QUEUES_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_LOOKUP_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE ][ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 16 +typedef struct +{ + RDD_FORWARDING_MATRIX_ENTRY_DTS entry[ RDD_DS_FORWARDING_MATRIX_TABLE_SIZE ][ RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FORWARDING_MATRIX_TABLE_DTS; + +#define RDD_DS_FORWARDING_MATRIX_TABLE_PTR() ( RDD_DS_FORWARDING_MATRIX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FORWARDING_MATRIX_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_L2_UCAST_CONNECTION_BUFFER_SIZE 4 +typedef struct +{ + RDD_FC_L2_UCAST_CONNECTION_ENTRY_DTS entry[ RDD_DS_L2_UCAST_CONNECTION_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_L2_UCAST_CONNECTION_BUFFER_DTS; + +#define RDD_DS_L2_UCAST_CONNECTION_BUFFER_PTR() ( RDD_DS_L2_UCAST_CONNECTION_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_L2_UCAST_CONNECTION_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_ETH_TX_MAC_TABLE_SIZE 10 +typedef struct +{ + RDD_ETH_TX_MAC_DESCRIPTOR_DTS entry[ RDD_ETH_TX_MAC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_MAC_TABLE_DTS; + +#define RDD_ETH_TX_MAC_TABLE_PTR() ( RDD_ETH_TX_MAC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_MAC_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_PTR() ( RDD_RUNNER_FWTRACE_MAINA_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RUNNER_FWTRACE_MAINA_PARAM_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_HANDLER_SKB_DATA_POINTER_DTS; + +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_PTR() ( RDD_INGRESS_HANDLER_SKB_DATA_POINTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_COMPLETE_RING_DESCRIPTOR_DTS entry[ RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_DTS; + +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_PTR() ( RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOA_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_PTR() ( RDD_RUNNER_FWTRACE_PICOA_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RUNNER_FWTRACE_PICOA_PARAM_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_RATE_LIMITER_TABLE_SIZE 32 +typedef struct +{ + RDD_RATE_LIMITER_ENTRY_DTS entry[ RDD_DS_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RATE_LIMITER_TABLE_DTS; + +#define RDD_DS_RATE_LIMITER_TABLE_PTR() ( RDD_DS_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_WAN_FLOW_TABLE_SIZE 256 +typedef struct +{ + RDD_DS_WAN_FLOW_ENTRY_DTS entry[ RDD_DS_WAN_FLOW_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_FLOW_TABLE_DTS; + +#define RDD_DS_WAN_FLOW_TABLE_PTR() ( RDD_DS_WAN_FLOW_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_WAN_FLOW_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_WAN_UDP_FILTER_TABLE_SIZE 32 +typedef struct +{ + RDD_DS_WAN_UDP_FILTER_ENTRY_DTS entry[ RDD_DS_WAN_UDP_FILTER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_UDP_FILTER_TABLE_DTS; + +#define RDD_DS_WAN_UDP_FILTER_TABLE_PTR() ( RDD_DS_WAN_UDP_FILTER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_WAN_UDP_FILTER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE 8 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 64 +typedef struct +{ + RDD_FC_MCAST_PORT_HEADER_ENTRY_DTS entry[ RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE ][ RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_PORT_HEADER_BUFFER_DTS; + +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_PTR() ( RDD_FC_MCAST_PORT_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + FC_MCAST_PORT_HEADER_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_MULTICAST_BUFFER_ENTRY_DTS entry[ RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_PTR() ( RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +typedef struct +{ + uint32_t last_sbn :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fstat_cell :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_id :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fstat_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ih_buffer_number :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_RX_DESCRIPTOR_DTS; + +#define RDD_BBH_RX_DESCRIPTOR_LAST_SBN_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 10, r) +#define RDD_BBH_RX_DESCRIPTOR_LAST_SBN_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 10, v) +#define RDD_BBH_RX_DESCRIPTOR_FSTAT_CELL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 5, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_FSTAT_CELL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 5, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_FLOW_ID_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 7, r) +#define RDD_BBH_RX_DESCRIPTOR_FLOW_ID_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 7, v) +#define RDD_BBH_RX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_BBH_RX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_FSTAT_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 5, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_FSTAT_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 5, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_TYPE_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 6, 7, r) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_TYPE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 6, 7, v) +#define RDD_BBH_RX_DESCRIPTOR_IH_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 6, r) +#define RDD_BBH_RX_DESCRIPTOR_IH_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 6, v) +#define RDD_BBH_RX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_BBH_RX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#endif +#if defined DSL_63148 + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE 64 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_DTS; + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_PTR() ( RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_LAN_ENQUEUE_SQ_PD_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_ETH0_RX_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_ETH0_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH0_RX_DESCRIPTORS_DTS; + +#define RDD_ETH0_RX_DESCRIPTORS_PTR() ( RDD_ETH0_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH0_RX_DESCRIPTORS_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_DTS entry[ RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_TX_BBH_DESCRIPTORS_DTS; + +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_PTR() ( RDD_DS_CPU_TX_BBH_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_TX_BBH_DESCRIPTORS_ADDRESS ) + +#endif +#if defined DSL_63148 + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_BPM_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_L_READ( wv ) FIELD_GET( wv, 0, 14 ) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_L_WRITE( v, wv ) FIELD_SET( v, 0, 14, wv ) +#endif +#if defined DSL_63148 + +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DHD_TX_POST_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_PD_INGRESS_QUEUE_DTS; + +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_PTR() ( RDD_DHD_TX_POST_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_TX_POST_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_CONNECTION_CACHE_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_DS_CONNECTION_CACHE_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CACHE_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CACHE_BUFFER_PTR() ( RDD_DS_CONNECTION_CACHE_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CACHE_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_ETH_TX_LOCAL_REGISTERS_SIZE 9 +typedef struct +{ + RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_DTS entry[ RDD_ETH_TX_LOCAL_REGISTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_LOCAL_REGISTERS_DTS; + +#define RDD_ETH_TX_LOCAL_REGISTERS_PTR() ( RDD_ETH_TX_LOCAL_REGISTERS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_LOCAL_REGISTERS_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 2 +typedef struct +{ + RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_QUEUE_PROFILE_TABLE_SIZE 8 +typedef struct +{ + RDD_QUEUE_PROFILE_DTS entry[ RDD_DS_QUEUE_PROFILE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_QUEUE_PROFILE_TABLE_DTS; + +#define RDD_DS_QUEUE_PROFILE_TABLE_PTR() ( RDD_DS_QUEUE_PROFILE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_QUEUE_PROFILE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_SQ_ENQUEUE_QUEUE_SIZE 64 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DS_SQ_ENQUEUE_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_SQ_ENQUEUE_QUEUE_DTS; + +#define RDD_DS_SQ_ENQUEUE_QUEUE_PTR() ( RDD_DS_SQ_ENQUEUE_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_SQ_ENQUEUE_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_DTS; + +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_PTR() ( RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_NULL_BUFFER_SIZE 3 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_NULL_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_NULL_BUFFER_DTS; + +#define RDD_DS_NULL_BUFFER_PTR() ( RDD_DS_NULL_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_NULL_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_GPE_COMMAND_PRIMITIVE_ENTRY_DTS entry[ RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_PTR() ( RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_FAST_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_ROUTER_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_ROUTER_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_ROUTER_INGRESS_QUEUE_DTS; + +#define RDD_DS_ROUTER_INGRESS_QUEUE_PTR() ( RDD_DS_ROUTER_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_ROUTER_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_COMPLETE_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_COMPLETE_RING_ENTRY_DTS entry[ RDD_DHD_COMPLETE_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_COMPLETE_RING_BUFFER_DTS; + +#define RDD_DHD_COMPLETE_RING_BUFFER_PTR() ( RDD_DHD_COMPLETE_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_COMPLETE_RING_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTE_1_DTS entry[ RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS; + +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_PTR() ( RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE 4 +typedef struct +{ + RDD_DHD_L2_HEADER_BUFFER_ENTRY_DTS entry[ RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_HEADER_SCRATCH_DTS; + +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_PTR() ( RDD_DS_DHD_TX_POST_HEADER_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_HEADER_SCRATCH_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE 5 +typedef struct +{ + RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DATA_POINTER_DUMMY_TARGET_DTS; + +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_PTR() ( RDD_DS_DATA_POINTER_DUMMY_TARGET_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DATA_POINTER_DUMMY_TARGET_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_ENTRY_DTS entry[ RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR() ( RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_TASK_REORDER_ENTRY_DTS entry[ RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_PTR() ( RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_DTS; + +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_PTR() ( RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE 10 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_DTS; + +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_PTR() ( RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_DEBUG_BUFFER_SIZE 32 +typedef struct +{ + RDD_DEBUG_BUFFER_ENTRY_DTS entry[ RDD_DS_DEBUG_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DEBUG_BUFFER_DTS; + +#define RDD_DS_DEBUG_BUFFER_PTR() ( RDD_DS_DEBUG_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DEBUG_BUFFER_ADDRESS ) + +#endif +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_FLOW_RING_DROP_COUNTER_DTS; + +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_PTR() ( RDD_DS_DHD_FLOW_RING_DROP_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_FLOW_RING_DROP_COUNTER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_PTR() ( RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS ) + +#endif +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_RX_DIRECT_DESCRIPTORS_DTS; + +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_PTR() ( RDD_GPON_RX_DIRECT_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GPON_RX_DIRECT_DESCRIPTORS_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_FW_MAC_ADDRS_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_FW_MAC_ADDRS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FW_MAC_ADDRS_DTS; + +#define RDD_DS_FW_MAC_ADDRS_PTR() ( RDD_DS_FW_MAC_ADDRS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FW_MAC_ADDRS_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_PTR() ( RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS; + +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_PTR() ( RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_ETH_TX_SCRATCH_SIZE 16 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_ETH_TX_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_SCRATCH_DTS; + +#define RDD_ETH_TX_SCRATCH_PTR() ( RDD_ETH_TX_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_SCRATCH_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_GSO_TX_DHD_L2_BUFFER_SIZE 22 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_GSO_TX_DHD_L2_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_TX_DHD_L2_BUFFER_DTS; + +#define RDD_GSO_TX_DHD_L2_BUFFER_PTR() ( RDD_GSO_TX_DHD_L2_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_TX_DHD_L2_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_INGRESS_QUEUE_DTS; + +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_PTR() ( RDD_DS_DHD_TX_POST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_CAM_DTS entry[ RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_SA_DESC_CAM_TABLE_DTS; + +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_PTR() ( RDD_IPSEC_DS_SA_DESC_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_SA_DESC_CAM_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_INGRESS_QUEUE_DTS; + +#define RDD_WLAN_MCAST_INGRESS_QUEUE_PTR() ( RDD_WLAN_MCAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + WLAN_MCAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_CAM_DTS entry[ RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_US_SA_DESC_CAM_TABLE_DTS; + +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_PTR() ( RDD_IPSEC_US_SA_DESC_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_US_SA_DESC_CAM_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE 5 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_RX_NORMAL_DESCRIPTORS_DTS; + +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_PTR() ( RDD_GPON_RX_NORMAL_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GPON_RX_NORMAL_DESCRIPTORS_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_TX_DHD_L2_BUFFER_SIZE 22 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_L2_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_L2_BUFFER_DTS; + +#define RDD_CPU_TX_DHD_L2_BUFFER_PTR() ( RDD_CPU_TX_DHD_L2_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_DHD_L2_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE 4 +typedef struct +{ + RDD_HASH_BASED_FORWARDING_PORT_ENTRY_DTS entry[ RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_HASH_BASED_FORWARDING_PORT_TABLE_DTS; + +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_PTR() ( RDD_HASH_BASED_FORWARDING_PORT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + HASH_BASED_FORWARDING_PORT_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_TX_DHD_HOST_BUF_PTR_DTS; + +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_PTR() ( RDD_GSO_TX_DHD_HOST_BUF_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_TX_DHD_HOST_BUF_PTR_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_HOST_BUF_PTR_DTS; + +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_PTR() ( RDD_CPU_TX_DHD_HOST_BUF_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_DHD_HOST_BUF_PTR_ADDRESS ) + +#endif +/* PRIVATE_B */ +#if defined DSL_63148 + +#define RDD_US_INGRESS_HANDLER_BUFFER_SIZE 32 +typedef struct +{ + RDD_IH_BUFFER_DTS entry[ RDD_US_INGRESS_HANDLER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_HANDLER_BUFFER_DTS; + +#define RDD_US_INGRESS_HANDLER_BUFFER_PTR() ( RDD_US_INGRESS_HANDLER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_HANDLER_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_PTR() ( RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_US_CPU_REASON_TO_METER_TABLE_SIZE 64 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_US_CPU_REASON_TO_METER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_REASON_TO_METER_TABLE_DTS; + +#define RDD_US_CPU_REASON_TO_METER_TABLE_PTR() ( RDD_US_CPU_REASON_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_REASON_TO_METER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_MAIN_PROFILING_BUFFER_RUNNER_DTS; + +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_PTR() ( RDD_US_MAIN_PROFILING_BUFFER_RUNNER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_LOOKUP_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE ][ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_QUEUE_PROFILE_TABLE_SIZE 8 +typedef struct +{ + RDD_QUEUE_PROFILE_DTS entry[ RDD_US_QUEUE_PROFILE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_QUEUE_PROFILE_TABLE_DTS; + +#define RDD_US_QUEUE_PROFILE_TABLE_PTR() ( RDD_US_QUEUE_PROFILE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_QUEUE_PROFILE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_WAN_CHANNELS_8_39_TABLE_SIZE 32 +typedef struct +{ + RDD_WAN_CHANNEL_8_39_DESCRIPTOR_DTS entry[ RDD_WAN_CHANNELS_8_39_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_CHANNELS_8_39_TABLE_DTS; + +#define RDD_WAN_CHANNELS_8_39_TABLE_PTR() ( RDD_WAN_CHANNELS_8_39_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_CHANNELS_8_39_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE 3 +typedef struct +{ + RDD_RUNNER_FLOW_HEADER_BUFFER_DTS entry[ RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RUNNER_FLOW_HEADER_BUFFER_DTS; + +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_PTR() ( RDD_US_RUNNER_FLOW_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RUNNER_FLOW_HEADER_BUFFER_ADDRESS ) + +#endif +#define RDD_US_POLICER_TABLE_PTR() ( RDD_US_POLICER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_POLICER_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE 2 +typedef struct +{ + RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_DTS entry[ RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_DTS; + +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_PTR() ( RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_WAN_FLOW_TABLE_SIZE 256 +typedef struct +{ + RDD_US_WAN_FLOW_ENTRY_DTS entry[ RDD_US_WAN_FLOW_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_WAN_FLOW_TABLE_DTS; + +#define RDD_US_WAN_FLOW_TABLE_PTR() ( RDD_US_WAN_FLOW_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_WAN_FLOW_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_DTS entry[ RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_BBH_DESCRIPTORS_DTS; + +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_PTR() ( RDD_US_CPU_TX_BBH_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_BBH_DESCRIPTORS_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 16 +typedef struct +{ + RDD_FORWARDING_MATRIX_ENTRY_DTS entry[ RDD_US_FORWARDING_MATRIX_TABLE_SIZE ][ RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FORWARDING_MATRIX_TABLE_DTS; + +#define RDD_US_FORWARDING_MATRIX_TABLE_PTR() ( RDD_US_FORWARDING_MATRIX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FORWARDING_MATRIX_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +typedef struct +{ + RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_DTS entry[ RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined DSL_63148 + +typedef struct +{ + uint16_t port_sel :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t reserved0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t pkt_eop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t frag_size :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DSL_PTM_BOND_TX_HDR_ENTRY_DTS; + +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_PORT_SEL_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_PORT_SEL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_PKT_EOP_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 1, r) +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_PKT_EOP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 1, v) +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_FRAG_SIZE_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 12, r) +#define RDD_DSL_PTM_BOND_TX_HDR_ENTRY_FRAG_SIZE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 12, v) +#endif +#if defined DSL_63148 + +#define RDD_DSL_PTM_BOND_TX_HDR_TABLE_SIZE 32 +typedef struct +{ + RDD_DSL_PTM_BOND_TX_HDR_ENTRY_DTS entry[ RDD_DSL_PTM_BOND_TX_HDR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DSL_PTM_BOND_TX_HDR_TABLE_DTS; + +#define RDD_DSL_PTM_BOND_TX_HDR_TABLE_PTR() ( RDD_DSL_PTM_BOND_TX_HDR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DSL_PTM_BOND_TX_HDR_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 8 +typedef struct +{ + RDD_US_QUEUE_ENTRY_DTS entry[ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE ][ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_DTS; + +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_PTR() ( RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TRAFFIC_CLASS_TO_QUEUE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_RATE_LIMITER_TABLE_SIZE 16 +typedef struct +{ + RDD_RATE_LIMITER_ENTRY_DTS entry[ RDD_US_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RATE_LIMITER_TABLE_DTS; + +#define RDD_US_RATE_LIMITER_TABLE_PTR() ( RDD_US_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#define RDD_US_CPU_RX_METER_TABLE_PTR() ( RDD_US_CPU_RX_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_METER_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_DTS entry[ RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_CONTEXT_BUFFER_DTS; + +#define RDD_US_CONNECTION_CONTEXT_BUFFER_PTR() ( RDD_US_CONNECTION_CONTEXT_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CONNECTION_CONTEXT_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +typedef struct +{ + RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_WAN_CHANNELS_0_7_TABLE_SIZE 8 +typedef struct +{ + RDD_WAN_CHANNEL_0_7_DESCRIPTOR_DTS entry[ RDD_WAN_CHANNELS_0_7_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_CHANNELS_0_7_TABLE_DTS; + +#define RDD_WAN_CHANNELS_0_7_TABLE_PTR() ( RDD_WAN_CHANNELS_0_7_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_CHANNELS_0_7_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_L2_UCAST_CONNECTION_BUFFER_SIZE 4 +typedef struct +{ + RDD_FC_L2_UCAST_CONNECTION_ENTRY_DTS entry[ RDD_US_L2_UCAST_CONNECTION_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_L2_UCAST_CONNECTION_BUFFER_DTS; + +#define RDD_US_L2_UCAST_CONNECTION_BUFFER_PTR() ( RDD_US_L2_UCAST_CONNECTION_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_L2_UCAST_CONNECTION_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_DTS; + +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_PTR() ( RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_CONNECTION_CACHE_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_US_CONNECTION_CACHE_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_CACHE_BUFFER_DTS; + +#define RDD_US_CONNECTION_CACHE_BUFFER_PTR() ( RDD_US_CONNECTION_CACHE_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CONNECTION_CACHE_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE ][ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS ) + +#endif +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE 5 +typedef struct +{ + RDD_INGRESS_RATE_LIMITER_ENTRY_DTS entry[ RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_RATE_LIMITER_TABLE_DTS; + +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_PTR() ( RDD_US_INGRESS_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_SIZE 8 +typedef struct +{ + RDD_DSL_PTM_BOND_TX_HDR_ENTRY_DTS entry[ RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_DTS; + +#define RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_PTR() ( RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_RX_PICO_INGRESS_QUEUE_DTS; + +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_PTR() ( RDD_US_CPU_RX_PICO_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_ROUTER_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_ROUTER_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_ROUTER_INGRESS_QUEUE_DTS; + +#define RDD_US_ROUTER_INGRESS_QUEUE_PTR() ( RDD_US_ROUTER_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_ROUTER_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 6 +typedef struct +{ + RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE 40 +typedef struct +{ + RDD_GPON_ABSOLUTE_TX_COUNTER_DTS entry[ RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_DTS; + +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_PTR() ( RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + GPON_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_GPE_COMMAND_PRIMITIVE_ENTRY_DTS entry[ RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_DTS; + +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_PTR() ( RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_RX_FAST_INGRESS_QUEUE_DTS; + +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_PTR() ( RDD_US_CPU_RX_FAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_DEBUG_BUFFER_SIZE 32 +typedef struct +{ + RDD_DEBUG_BUFFER_ENTRY_DTS entry[ RDD_US_DEBUG_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DEBUG_BUFFER_DTS; + +#define RDD_US_DEBUG_BUFFER_PTR() ( RDD_US_DEBUG_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DEBUG_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_FW_MAC_ADDRS_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_US_FW_MAC_ADDRS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FW_MAC_ADDRS_DTS; + +#define RDD_US_FW_MAC_ADDRS_PTR() ( RDD_US_FW_MAC_ADDRS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FW_MAC_ADDRS_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE 3 +typedef struct +{ + RDD_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS entry[ RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS; + +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_PTR() ( RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTE_1_DTS entry[ RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS; + +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_PTR() ( RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_TX_POST_INGRESS_QUEUE_DTS; + +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_PTR() ( RDD_US_DHD_TX_POST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DHD_TX_POST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_PTR() ( RDD_RUNNER_FWTRACE_MAINB_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + RUNNER_FWTRACE_MAINB_PARAM_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE 48 +typedef struct +{ + RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_ENTRY_DTS entry[ RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_DTS; + +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_PTR() ( RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_ADDRESS ) + +#endif +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOB_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_PTR() ( RDD_RUNNER_FWTRACE_PICOB_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + RUNNER_FWTRACE_PICOB_PARAM_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE 40 +typedef struct +{ + RDD_GPON_ABSOLUTE_TX_COUNTER_DTS entry[ RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_DTS; + +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_PTR() ( RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_FLOW_RING_DROP_COUNTER_DTS; + +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_PTR() ( RDD_US_DHD_FLOW_RING_DROP_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DHD_FLOW_RING_DROP_COUNTER_ADDRESS ) + +#endif +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS; + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_PTR() ( RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE 32 +typedef struct +{ + RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DATA_POINTER_DUMMY_TARGET_SIZE 2 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DATA_POINTER_DUMMY_TARGET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DATA_POINTER_DUMMY_TARGET_DTS; + +#define RDD_DATA_POINTER_DUMMY_TARGET_PTR() ( RDD_DATA_POINTER_DUMMY_TARGET_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DATA_POINTER_DUMMY_TARGET_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS; + +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_PTR() ( RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_WAN_TX_SCRATCH_SIZE 24 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_WAN_TX_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SCRATCH_DTS; + +#define RDD_WAN_TX_SCRATCH_PTR() ( RDD_WAN_TX_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_TX_SCRATCH_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE 3 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 6 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE ][ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_DTS; + +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_PTR() ( RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_ENTRY_DTS entry[ RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS; + +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR() ( RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE 9 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_DTS; + +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_PTR() ( RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE 14 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_DTS; + +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_PTR() ( RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CPU_TX_DHD_LAYER2_HEADER_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_TASK_REORDER_ENTRY_DTS entry[ RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS; + +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_PTR() ( RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS; + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_PTR() ( RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS ) + +#endif +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_PTR() ( RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_ETH1_RX_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_ETH1_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH1_RX_DESCRIPTORS_DTS; + +#define RDD_ETH1_RX_DESCRIPTORS_PTR() ( RDD_ETH1_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETH1_RX_DESCRIPTORS_ADDRESS ) + +#endif +/* COMMON_A */ +#if defined DSL_63148 + +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE 384 +typedef struct +{ + RDD_SIXTEEN_BYTES_DTS entry[ RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_DTS; + +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_PTR() ( RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DDR_CACHE_FIFO_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_PTR() ( RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + FC_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_PTR() ( RDD_CPU_RX_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + CPU_RX_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_PTR() ( RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_BASE_PTR() ( RDD_RUNNER_FWTRACE_MAINA_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_MAINA_BASE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOA_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_PICOA_BASE_PTR() ( RDD_RUNNER_FWTRACE_PICOA_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_PICOA_BASE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_DHD_STATION_ENTRY_DTS entry[ RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_STATION_TABLE_DTS; + +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_PTR() ( RDD_WLAN_MCAST_DHD_STATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_DHD_STATION_TABLE_ADDRESS ) + +#endif +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_PTR() ( RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_MAC_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_ENTRY_DTS entry[ RDD_MAC_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_TABLE_CAM_DTS; + +#define RDD_MAC_TABLE_CAM_PTR() ( RDD_MAC_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_TABLE_CAM_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_MAC_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_ENTRY_DTS entry[ RDD_MAC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_TABLE_DTS; + +#define RDD_MAC_TABLE_PTR() ( RDD_MAC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +typedef struct +{ + uint32_t reserved0 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_bridge_port :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETHWAN2_RX_DESCRIPTOR_DTS; + +#define RDD_ETHWAN2_RX_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 7, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 7, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 14, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 14, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_TYPE_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 6, 7, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_TYPE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 6, 7, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_SOURCE_BRIDGE_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 6, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_SOURCE_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 6, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#endif +#if defined DSL_63148 + +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_ETHWAN2_RX_DESCRIPTOR_DTS entry[ RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETHWAN2_RX_INGRESS_QUEUE_DTS; + +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_PTR() ( RDD_ETHWAN2_RX_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + ETHWAN2_RX_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_TRACE_C_TABLE_SIZE 4 +typedef struct +{ + RDD_TRACE_C_ENTRY_DTS entry[ RDD_TRACE_C_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TRACE_C_TABLE_DTS; + +#define RDD_TRACE_C_TABLE_PTR() ( RDD_TRACE_C_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + TRACE_C_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_PTR() ( RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_MAINA_CURR_OFFSET_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE 2 +typedef struct +{ + RDD_FREE_SKB_INDEXES_FIFO_TAIL_DTS entry[ RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_DTS; + +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_PTR() ( RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + FREE_SKB_INDEXES_DDR_FIFO_TAIL_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_MAC_CONTEXT_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_CONTEXT_ENTRY_DTS entry[ RDD_MAC_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_CONTEXT_TABLE_DTS; + +#define RDD_MAC_CONTEXT_TABLE_PTR() ( RDD_MAC_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_CONTEXT_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE 32 +typedef struct +{ + RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +typedef struct +{ + RDD_BYTES_2_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_WLAN_MCAST_FWD_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_FWD_ENTRY_DTS entry[ RDD_WLAN_MCAST_FWD_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_FWD_TABLE_DTS; + +#define RDD_WLAN_MCAST_FWD_TABLE_PTR() ( RDD_WLAN_MCAST_FWD_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_FWD_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE 32 +typedef struct +{ + RDD_DDR_QUEUE_DESCRIPTOR_DTS entry[ RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_PTR() ( RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DESCRIPTOR_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE 48 +typedef struct +{ + RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_DTS entry[ RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_DTS; + +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_PTR() ( RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE 8 +typedef struct +{ + RDD_DHD_BACKUP_ENTRY_DTS entry[ RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_POST_REQUEST_QUEUE_DTS; + +#define RDD_CPU_TX_POST_REQUEST_QUEUE_PTR() ( RDD_CPU_TX_POST_REQUEST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + CPU_TX_POST_REQUEST_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE 48 +typedef struct +{ + RDD_WLAN_MCAST_SSID_STATS_ENTRY_DTS entry[ RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_STATS_TABLE_DTS; + +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_PTR() ( RDD_WLAN_MCAST_SSID_STATS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_SSID_STATS_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE 3 +typedef struct +{ + RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DTS entry[ RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_DTS; + +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_PTR() ( RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_RADIO_INSTANCE_COMMON_A_DATA_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_DTS entry[ RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS; + +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_PTR() ( RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE 128 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_DTS; + +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_PTR() ( RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RATE_SHAPERS_STATUS_DESCRIPTOR_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE 16 +typedef struct +{ + RDD_INTERRUPT_COALESCING_CONFIG_DTS entry[ RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INTERRUPT_COALESCING_CONFIG_TABLE_DTS; + +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_PTR() ( RDD_INTERRUPT_COALESCING_CONFIG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + INTERRUPT_COALESCING_CONFIG_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +typedef struct +{ + RDD_CPU_RX_DESCRIPTOR_DTS entry[ RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_DTS; + +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_PTR() ( RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 4 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_DS_CONNECTION_BUFFER_TABLE_SIZE ][ RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_BUFFER_TABLE_DTS; + +#define RDD_DS_CONNECTION_BUFFER_TABLE_PTR() ( RDD_DS_CONNECTION_BUFFER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_CONNECTION_BUFFER_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_MAC_CONTEXT_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_CONTEXT_ENTRY_DTS entry[ RDD_MAC_CONTEXT_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_CONTEXT_TABLE_CAM_DTS; + +#define RDD_MAC_CONTEXT_TABLE_CAM_PTR() ( RDD_MAC_CONTEXT_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_CONTEXT_TABLE_CAM_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_DOORBELL_WRITE_VALUES_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DHD_DOORBELL_WRITE_VALUES_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_DOORBELL_WRITE_VALUES_DTS; + +#define RDD_DHD_DOORBELL_WRITE_VALUES_PTR() ( RDD_DHD_DOORBELL_WRITE_VALUES_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_DOORBELL_WRITE_VALUES_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_BACKUP_INDEX_CACHE_DTS; + +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_PTR() ( RDD_DS_DHD_BACKUP_INDEX_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_DHD_BACKUP_INDEX_CACHE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE 32 +typedef struct +{ + RDD_DDR_QUEUE_ADDRESS_ENTRY_DTS entry[ RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_PTR() ( RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_RING_DESCRIPTORS_TABLE_SIZE 16 +typedef struct +{ + RDD_RING_DESCRIPTOR_DTS entry[ RDD_RING_DESCRIPTORS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RING_DESCRIPTORS_TABLE_DTS; + +#define RDD_RING_DESCRIPTORS_TABLE_PTR() ( RDD_RING_DESCRIPTORS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RING_DESCRIPTORS_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_MAC_EXTENSION_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_EXTENSION_ENTRY_DTS entry[ RDD_MAC_EXTENSION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_EXTENSION_TABLE_DTS; + +#define RDD_MAC_EXTENSION_TABLE_PTR() ( RDD_MAC_EXTENSION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_EXTENSION_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE 16 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_DTS; + +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_PTR() ( RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_MAC_EXTENSION_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_EXTENSION_ENTRY_DTS entry[ RDD_MAC_EXTENSION_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_EXTENSION_TABLE_CAM_DTS; + +#define RDD_MAC_EXTENSION_TABLE_CAM_PTR() ( RDD_MAC_EXTENSION_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_EXTENSION_TABLE_CAM_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE 3 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TX_CPL_DHD_DMA_SCRATCH_DTS; + +#define RDD_TX_CPL_DHD_DMA_SCRATCH_PTR() ( RDD_TX_CPL_DHD_DMA_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + TX_CPL_DHD_DMA_SCRATCH_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_SIZE 3 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_TX_POST_BUFFERS_THRESHOLD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_BUFFERS_THRESHOLD_DTS; + +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_PTR() ( RDD_DHD_TX_POST_BUFFERS_THRESHOLD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_TX_POST_BUFFERS_THRESHOLD_ADDRESS ) + +#endif +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_PTR() ( RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS ) + +#if defined DSL_63148 + +#define RDD_MAIN_A_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_MAIN_A_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAIN_A_DEBUG_TRACE_DTS; + +#define RDD_MAIN_A_DEBUG_TRACE_PTR() ( RDD_MAIN_A_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAIN_A_DEBUG_TRACE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_PICO_A_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_PICO_A_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_A_DEBUG_TRACE_DTS; + +#define RDD_PICO_A_DEBUG_TRACE_PTR() ( RDD_PICO_A_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + PICO_A_DEBUG_TRACE_ADDRESS ) + +#endif +/* COMMON_B */ +#if defined DSL_63148 + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_WAN_TX_MIRROR_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_WAN_TX_MIRROR_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_MIRROR_SCRATCHPAD_DTS; + +#define RDD_WAN_TX_MIRROR_SCRATCHPAD_PTR() ( RDD_WAN_TX_MIRROR_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_TX_MIRROR_SCRATCHPAD_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +typedef struct +{ + RDD_BYTES_2_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE 64 +typedef struct +{ + RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_DTS entry[ RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SERVICE_QUEUES_TABLE_DTS; + +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_PTR() ( RDD_WAN_TX_SERVICE_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_TX_SERVICE_QUEUES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 4 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_US_CONNECTION_BUFFER_TABLE_SIZE ][ RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_BUFFER_TABLE_DTS; + +#define RDD_US_CONNECTION_BUFFER_TABLE_PTR() ( RDD_US_CONNECTION_BUFFER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_CONNECTION_BUFFER_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPV6_HOST_ADDRESS_CRC_TABLE_DTS; + +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_PTR() ( RDD_IPV6_HOST_ADDRESS_CRC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + IPV6_HOST_ADDRESS_CRC_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_BACKUP_INFO_CACHE_ENTRY_DTS entry[ RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_INFO_CACHE_TABLE_DTS; + +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_PTR() ( RDD_DHD_BACKUP_INFO_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_BACKUP_INFO_CACHE_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_WAN_TX_QUEUES_TABLE_SIZE 256 +typedef struct +{ + RDD_WAN_TX_QUEUE_DESCRIPTOR_DTS entry[ RDD_WAN_TX_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_QUEUES_TABLE_DTS; + +#define RDD_WAN_TX_QUEUES_TABLE_PTR() ( RDD_WAN_TX_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_TX_QUEUES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_BASE_PTR() ( RDD_RUNNER_FWTRACE_MAINB_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_MAINB_BASE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +typedef struct +{ + RDD_CPU_RX_DESCRIPTOR_DTS entry[ RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RING_PACKET_DESCRIPTORS_CACHE_DTS; + +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_PTR() ( RDD_US_RING_PACKET_DESCRIPTORS_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE 3 +typedef struct +{ + RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_DTS entry[ RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_DTS; + +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_PTR() ( RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_RADIO_INSTANCE_COMMON_B_DATA_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_DTS entry[ RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_DTS; + +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_PTR() ( RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_FLOW_RING_CACHE_CTX_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE 4 +typedef struct +{ + RDD_FC_FLOW_IP_ADDRESSES_ENTRY_DTS entry[ RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_FLOW_IP_ADDRESSES_TABLE_DTS; + +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_PTR() ( RDD_FC_FLOW_IP_ADDRESSES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + FC_FLOW_IP_ADDRESSES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_PTR() ( RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_MAINB_CURR_OFFSET_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_US_RATE_CONTROLLERS_TABLE_SIZE 128 +typedef struct +{ + RDD_US_RATE_CONTROLLER_DESCRIPTOR_DTS entry[ RDD_US_RATE_CONTROLLERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RATE_CONTROLLERS_TABLE_DTS; + +#define RDD_US_RATE_CONTROLLERS_TABLE_PTR() ( RDD_US_RATE_CONTROLLERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_RATE_CONTROLLERS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_RUNNER_B_SCRATCHPAD_DTS; + +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_PTR() ( RDD_CPU_RX_RUNNER_B_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + CPU_RX_RUNNER_B_SCRATCHPAD_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 40 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_IPV4_HOST_ADDRESS_TABLE_SIZE 8 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_IPV4_HOST_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPV4_HOST_ADDRESS_TABLE_DTS; + +#define RDD_IPV4_HOST_ADDRESS_TABLE_PTR() ( RDD_IPV4_HOST_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + IPV4_HOST_ADDRESS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 40 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS - 0x8000 ) + +#endif +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_PTR() ( RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS - 0x8000 ) + +#if defined DSL_63148 + +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_DTS entry[ RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS; + +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_PTR() ( RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_MAIN_B_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_MAIN_B_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAIN_B_DEBUG_TRACE_DTS; + +#define RDD_MAIN_B_DEBUG_TRACE_PTR() ( RDD_MAIN_B_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + MAIN_B_DEBUG_TRACE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_PICO_B_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_PICO_B_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_B_DEBUG_TRACE_DTS; + +#define RDD_PICO_B_DEBUG_TRACE_PTR() ( RDD_PICO_B_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + PICO_B_DEBUG_TRACE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOB_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_PICOB_BASE_PTR() ( RDD_RUNNER_FWTRACE_PICOB_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_PICOB_BASE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_BACKUP_INDEX_CACHE_DTS; + +#define RDD_US_DHD_BACKUP_INDEX_CACHE_PTR() ( RDD_US_DHD_BACKUP_INDEX_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_DHD_BACKUP_INDEX_CACHE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_DOORBELL_COUNTERS_SIZE 48 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DHD_DOORBELL_COUNTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_DOORBELL_COUNTERS_DTS; + +#define RDD_DHD_DOORBELL_COUNTERS_PTR() ( RDD_DHD_DOORBELL_COUNTERS_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_DOORBELL_COUNTERS_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_WAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_ENQUEUE_INGRESS_QUEUE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_PTR() ( RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_ADDRESS - 0x8000 ) + +#endif +/* DDR */ +#if defined DSL_63148 + +#define RDD_BPM_PACKET_BUFFERS_SIZE 7680 +typedef struct +{ + RDD_BPM_PACKET_BUFFER_DTS entry[ RDD_BPM_PACKET_BUFFERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BPM_PACKET_BUFFERS_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE 8 +typedef struct +{ + RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_DTS entry[ RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_R2D_WR_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_R2D_WR_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_R2D_WR_ARR_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_D2R_RD_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_D2R_RD_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_D2R_RD_ARR_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_R2D_RD_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_R2D_RD_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_R2D_RD_ARR_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_D2R_WR_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_D2R_WR_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_D2R_WR_ARR_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE 524288 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_QUEUES_BUFFER_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_DHD_LIST_ENTRY_ARRAY_DTS entry[ RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_LIST_TABLE_DTS; + +#endif +/* PSRAM */ +/* PRIVATE_A */ +#if defined WL4908 + +#define RDD_INGRESS_HANDLER_BUFFER_SIZE 32 +typedef struct +{ + RDD_IH_BUFFER_DTS entry[ RDD_INGRESS_HANDLER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_HANDLER_BUFFER_DTS; + +#define RDD_INGRESS_HANDLER_BUFFER_PTR() ( RDD_INGRESS_HANDLER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + INGRESS_HANDLER_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +typedef struct +{ + uint32_t reserved0 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wred_bit_reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_queue_reserved0 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_port_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t header_number :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_bridge_port :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t absolute_normal :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t misc :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = misc, size = 3 bits + uint32_t last_indication :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pti :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ring_id :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t payload_offset :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ddr_params :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = ddr_params, size = 2 bits + uint32_t ddr_id :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t packet_location :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = packet_location, size = 16 bits + uint32_t buffer_number :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_address_index :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_TX_DESCRIPTOR_DTS; + +#define RDD_BBH_TX_DESCRIPTOR_WRED_BIT_RESERVED0_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_WRED_BIT_RESERVED0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_TX_QUEUE_RESERVED0_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 3, r) +#define RDD_BBH_TX_DESCRIPTOR_TX_QUEUE_RESERVED0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 3, v) +#define RDD_BBH_TX_DESCRIPTOR_EGRESS_PORT_RESERVED0_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 3, 5, r) +#define RDD_BBH_TX_DESCRIPTOR_EGRESS_PORT_RESERVED0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 3, 5, v) +#define RDD_BBH_TX_DESCRIPTOR_HEADER_NUMBER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 3, r) +#define RDD_BBH_TX_DESCRIPTOR_HEADER_NUMBER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 3, v) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_BRIDGE_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 4, 4, r) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 4, 4, v) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 12, r) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 12, v) +#define RDD_BBH_TX_DESCRIPTOR_ABSOLUTE_NORMAL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_ABSOLUTE_NORMAL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_MISC_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 3, r) +#define RDD_BBH_TX_DESCRIPTOR_MISC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 3, v) +#define RDD_BBH_TX_DESCRIPTOR_LAST_INDICATION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_LAST_INDICATION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_PTI_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 2, r) +#define RDD_BBH_TX_DESCRIPTOR_PTI_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 2, v) +#define RDD_BBH_TX_DESCRIPTOR_RING_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 3, r) +#define RDD_BBH_TX_DESCRIPTOR_RING_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 3, v) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 3, 9, r) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 3, 9, v) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 2, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 2, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_DDR_PARAMS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 2, r) +#define RDD_BBH_TX_DESCRIPTOR_DDR_PARAMS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 2, v) +#define RDD_BBH_TX_DESCRIPTOR_DDR_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_DDR_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LOCATION_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LOCATION_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_BBH_TX_DESCRIPTOR_ABS_ADDRESS_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_BBH_TX_DESCRIPTOR_ABS_ADDRESS_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#endif +#if defined WL4908 + +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_DTS entry[ RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CONTEXT_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_PTR() ( RDD_DS_CONNECTION_CONTEXT_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CONTEXT_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_PTR() ( RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE 64 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_REASON_TO_METER_TABLE_DTS; + +#define RDD_DS_CPU_REASON_TO_METER_TABLE_PTR() ( RDD_DS_CPU_REASON_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_REASON_TO_METER_TABLE_ADDRESS ) + +#endif +#define RDD_DS_CPU_RX_METER_TABLE_PTR() ( RDD_DS_CPU_RX_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_METER_TABLE_ADDRESS ) + +#define RDD_DS_POLICER_TABLE_PTR() ( RDD_DS_POLICER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_POLICER_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_IPSEC_DS_BUFFER_POOL_SIZE 2 +typedef struct +{ + RDD_IPSEC_DS_BUFFER_DTS entry[ RDD_IPSEC_DS_BUFFER_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_BUFFER_POOL_DTS; + +#define RDD_IPSEC_DS_BUFFER_POOL_PTR() ( RDD_IPSEC_DS_BUFFER_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_BUFFER_POOL_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_IPSEC_DS_SA_DESC_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_DTS entry[ RDD_IPSEC_DS_SA_DESC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_SA_DESC_TABLE_DTS; + +#define RDD_IPSEC_DS_SA_DESC_TABLE_PTR() ( RDD_IPSEC_DS_SA_DESC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_SA_DESC_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_IPSEC_US_SA_DESC_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_DTS entry[ RDD_IPSEC_US_SA_DESC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_US_SA_DESC_TABLE_DTS; + +#define RDD_IPSEC_US_SA_DESC_TABLE_PTR() ( RDD_IPSEC_US_SA_DESC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_US_SA_DESC_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE 32 +typedef struct +{ + RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_DTS entry[ RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_PTR() ( RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + SERVICE_QUEUES_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +typedef struct +{ + RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_DTS entry[ RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_DTS; + +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_PTR() ( RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS ) + +#endif +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE ][ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE 32 +typedef struct +{ + RDD_RATE_LIMITER_REMAINDER_ENTRY_DTS entry[ RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_LIMITER_REMAINDER_TABLE_DTS; + +#define RDD_RATE_LIMITER_REMAINDER_TABLE_PTR() ( RDD_RATE_LIMITER_REMAINDER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RATE_LIMITER_REMAINDER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +typedef struct +{ + RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_FC_MCAST_CONNECTION2_TABLE_SIZE 128 +typedef struct +{ + RDD_FC_MCAST_CONNECTION2_ENTRY_DTS entry[ RDD_FC_MCAST_CONNECTION2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_CONNECTION2_TABLE_DTS; + +#define RDD_FC_MCAST_CONNECTION2_TABLE_PTR() ( RDD_FC_MCAST_CONNECTION2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + FC_MCAST_CONNECTION2_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE 72 +typedef struct +{ + RDD_ETH_TX_QUEUE_POINTERS_ENTRY_DTS entry[ RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS; + +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_PTR() ( RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_QUEUES_POINTERS_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_WAN_FLOW_TABLE_SIZE 256 +typedef struct +{ + RDD_DS_WAN_FLOW_ENTRY_DTS entry[ RDD_DS_WAN_FLOW_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_FLOW_TABLE_DTS; + +#define RDD_DS_WAN_FLOW_TABLE_PTR() ( RDD_DS_WAN_FLOW_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_WAN_FLOW_TABLE_ADDRESS ) + +#endif +#if defined WL4908 +#define RDD_CONTEXT_CONTINUATION_ENTRY_COMMAND_LIST_NUMBER 68 + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t connection_direction :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_unicast_wfd_nic :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t connection_table_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :17 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_index :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t command_list[RDD_CONTEXT_CONTINUATION_ENTRY_COMMAND_LIST_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONTEXT_CONTINUATION_ENTRY_DTS; + +#define RDD_CONTEXT_CONTINUATION_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_CONTEXT_CONTINUATION_ENTRY_CONNECTION_DIRECTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 1, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_CONNECTION_DIRECTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 1, v) +#define RDD_CONTEXT_CONTINUATION_ENTRY_IS_UNICAST_WFD_NIC_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 1, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_IS_UNICAST_WFD_NIC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 1, v) +#define RDD_CONTEXT_CONTINUATION_ENTRY_CONNECTION_TABLE_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_CONNECTION_TABLE_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_CONTEXT_CONTINUATION_ENTRY_FLOW_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 15, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_FLOW_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 15, v) +#define RDD_CONTEXT_CONTINUATION_ENTRY_COMMAND_LIST_READ(r, p, i) MREAD_I_8((uint8_t *)p + 8, i, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_COMMAND_LIST_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 8, i, v) +#endif +#if defined WL4908 + +#define RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONTEXT_CONTINUATION_ENTRY_DTS entry[ RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_PTR() ( RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CONTEXT_REMAINING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_LOOKUP_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE ][ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 16 +typedef struct +{ + RDD_FORWARDING_MATRIX_ENTRY_DTS entry[ RDD_DS_FORWARDING_MATRIX_TABLE_SIZE ][ RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FORWARDING_MATRIX_TABLE_DTS; + +#define RDD_DS_FORWARDING_MATRIX_TABLE_PTR() ( RDD_DS_FORWARDING_MATRIX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FORWARDING_MATRIX_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_LAN_TX_ACB_COUNTER_TABLE_SIZE 64 +typedef struct +{ + RDD_BYTE_1_DTS entry[ RDD_LAN_TX_ACB_COUNTER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_LAN_TX_ACB_COUNTER_TABLE_DTS; + +#define RDD_LAN_TX_ACB_COUNTER_TABLE_PTR() ( RDD_LAN_TX_ACB_COUNTER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + LAN_TX_ACB_COUNTER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_WAN_UDP_FILTER_TABLE_SIZE 32 +typedef struct +{ + RDD_DS_WAN_UDP_FILTER_ENTRY_DTS entry[ RDD_DS_WAN_UDP_FILTER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_UDP_FILTER_TABLE_DTS; + +#define RDD_DS_WAN_UDP_FILTER_TABLE_PTR() ( RDD_DS_WAN_UDP_FILTER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_WAN_UDP_FILTER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_PTR() ( RDD_RUNNER_FWTRACE_MAINA_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RUNNER_FWTRACE_MAINA_PARAM_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_RATE_LIMITER_TABLE_SIZE 32 +typedef struct +{ + RDD_RATE_LIMITER_ENTRY_DTS entry[ RDD_DS_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RATE_LIMITER_TABLE_DTS; + +#define RDD_DS_RATE_LIMITER_TABLE_PTR() ( RDD_DS_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_ETH_TX_QUEUES_TABLE_SIZE 72 +typedef struct +{ + RDD_ETH_TX_QUEUE_DESCRIPTOR_DTS entry[ RDD_ETH_TX_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_QUEUES_TABLE_DTS; + +#define RDD_ETH_TX_QUEUES_TABLE_PTR() ( RDD_ETH_TX_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_QUEUES_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_HANDLER_SKB_DATA_POINTER_DTS; + +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_PTR() ( RDD_INGRESS_HANDLER_SKB_DATA_POINTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE 8 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 64 +typedef struct +{ + RDD_FC_MCAST_PORT_HEADER_ENTRY_DTS entry[ RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE ][ RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_PORT_HEADER_BUFFER_DTS; + +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_PTR() ( RDD_FC_MCAST_PORT_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + FC_MCAST_PORT_HEADER_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +typedef struct +{ + uint32_t last_sbn :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ih_buffer_number :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ddr_id :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_RX_DESCRIPTOR_DTS; + +#define RDD_BBH_RX_DESCRIPTOR_LAST_SBN_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 10, r) +#define RDD_BBH_RX_DESCRIPTOR_LAST_SBN_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 10, v) +#define RDD_BBH_RX_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 13, 9, r) +#define RDD_BBH_RX_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 13, 9, v) +#define RDD_BBH_RX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 12, r) +#define RDD_BBH_RX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 12, v) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 1, 4, r) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 1, 4, v) +#define RDD_BBH_RX_DESCRIPTOR_IH_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 3, 6, r) +#define RDD_BBH_RX_DESCRIPTOR_IH_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 3, 6, v) +#define RDD_BBH_RX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 2, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 2, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_DDR_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_DDR_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_BBH_RX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#endif +#if defined WL4908 + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE 64 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_DTS; + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_PTR() ( RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_LAN_ENQUEUE_SQ_PD_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_MULTICAST_BUFFER_ENTRY_DTS entry[ RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_PTR() ( RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_DTS entry[ RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_TX_BBH_DESCRIPTORS_DTS; + +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_PTR() ( RDD_DS_CPU_TX_BBH_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_TX_BBH_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908 + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_BPM_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_L_READ( wv ) FIELD_GET( wv, 0, 18 ) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_L_WRITE( v, wv ) FIELD_SET( v, 0, 18, wv ) +#endif +#if defined WL4908 + +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DHD_TX_POST_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_PD_INGRESS_QUEUE_DTS; + +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_PTR() ( RDD_DHD_TX_POST_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_TX_POST_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_ETH_TX_LOCAL_REGISTERS_SIZE 9 +typedef struct +{ + RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_DTS entry[ RDD_ETH_TX_LOCAL_REGISTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_LOCAL_REGISTERS_DTS; + +#define RDD_ETH_TX_LOCAL_REGISTERS_PTR() ( RDD_ETH_TX_LOCAL_REGISTERS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_LOCAL_REGISTERS_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 2 +typedef struct +{ + RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOA_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_PTR() ( RDD_RUNNER_FWTRACE_PICOA_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RUNNER_FWTRACE_PICOA_PARAM_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_COMPLETE_RING_DESCRIPTOR_DTS entry[ RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_DTS; + +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_PTR() ( RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_QUEUE_PROFILE_TABLE_SIZE 8 +typedef struct +{ + RDD_QUEUE_PROFILE_DTS entry[ RDD_DS_QUEUE_PROFILE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_QUEUE_PROFILE_TABLE_DTS; + +#define RDD_DS_QUEUE_PROFILE_TABLE_PTR() ( RDD_DS_QUEUE_PROFILE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_QUEUE_PROFILE_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_SQ_ENQUEUE_QUEUE_SIZE 64 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DS_SQ_ENQUEUE_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_SQ_ENQUEUE_QUEUE_DTS; + +#define RDD_DS_SQ_ENQUEUE_QUEUE_PTR() ( RDD_DS_SQ_ENQUEUE_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_SQ_ENQUEUE_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_DTS; + +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_PTR() ( RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_INGRESS_QUEUE_ADDRESS ) + +#endif + +typedef struct +{ + uint32_t reserved_fw_only :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BYTES_4_DTS; + +#if defined WL4908 + +#define RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_ROUTER_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_ROUTER_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_ROUTER_INGRESS_QUEUE_DTS; + +#define RDD_DS_ROUTER_INGRESS_QUEUE_PTR() ( RDD_DS_ROUTER_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_ROUTER_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_NULL_BUFFER_SIZE 3 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_NULL_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_NULL_BUFFER_DTS; + +#define RDD_DS_NULL_BUFFER_PTR() ( RDD_DS_NULL_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_NULL_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_FAST_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_DTS; + +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_PTR() ( RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_GPE_COMMAND_PRIMITIVE_ENTRY_DTS entry[ RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_PTR() ( RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE 4 +typedef struct +{ + RDD_DHD_L2_HEADER_BUFFER_ENTRY_DTS entry[ RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_HEADER_SCRATCH_DTS; + +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_PTR() ( RDD_DS_DHD_TX_POST_HEADER_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_HEADER_SCRATCH_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE 5 +typedef struct +{ + RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_DEBUG_BUFFER_SIZE 32 +typedef struct +{ + RDD_DEBUG_BUFFER_ENTRY_DTS entry[ RDD_DS_DEBUG_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DEBUG_BUFFER_DTS; + +#define RDD_DS_DEBUG_BUFFER_PTR() ( RDD_DS_DEBUG_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DEBUG_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DHD_COMPLETE_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_COMPLETE_RING_ENTRY_DTS entry[ RDD_DHD_COMPLETE_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_COMPLETE_RING_BUFFER_DTS; + +#define RDD_DHD_COMPLETE_RING_BUFFER_PTR() ( RDD_DHD_COMPLETE_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_COMPLETE_RING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_FAST_MALLOC_RESULT_TABLE_SIZE 2 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DS_FAST_MALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FAST_MALLOC_RESULT_TABLE_DTS; + +#define RDD_DS_FAST_MALLOC_RESULT_TABLE_PTR() ( RDD_DS_FAST_MALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_MALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE 10 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_DTS; + +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_PTR() ( RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_FW_MAC_ADDRS_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_FW_MAC_ADDRS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FW_MAC_ADDRS_DTS; + +#define RDD_DS_FW_MAC_ADDRS_PTR() ( RDD_DS_FW_MAC_ADDRS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FW_MAC_ADDRS_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_PICO_MALLOC_RESULT_TABLE_SIZE 2 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DS_PICO_MALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PICO_MALLOC_RESULT_TABLE_DTS; + +#define RDD_DS_PICO_MALLOC_RESULT_TABLE_PTR() ( RDD_DS_PICO_MALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_MALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTE_1_DTS entry[ RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS; + +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_PTR() ( RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DATA_POINTER_DUMMY_TARGET_DTS; + +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_PTR() ( RDD_DS_DATA_POINTER_DUMMY_TARGET_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DATA_POINTER_DUMMY_TARGET_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_RX_DIRECT_DESCRIPTORS_DTS; + +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_PTR() ( RDD_GPON_RX_DIRECT_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GPON_RX_DIRECT_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_ENTRY_DTS entry[ RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR() ( RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_TASK_REORDER_ENTRY_DTS entry[ RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_PTR() ( RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_FLOW_RING_DROP_COUNTER_DTS; + +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_PTR() ( RDD_DS_DHD_FLOW_RING_DROP_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_FLOW_RING_DROP_COUNTER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_PTR() ( RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS ) + +#endif +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_INGRESS_QUEUE_DTS; + +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_PTR() ( RDD_DS_DHD_TX_POST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_INGRESS_QUEUE_DTS; + +#define RDD_WLAN_MCAST_INGRESS_QUEUE_PTR() ( RDD_WLAN_MCAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + WLAN_MCAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_PTR() ( RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS; + +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_PTR() ( RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_CAM_DTS entry[ RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_SA_DESC_CAM_TABLE_DTS; + +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_PTR() ( RDD_IPSEC_DS_SA_DESC_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_SA_DESC_CAM_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_CAM_DTS entry[ RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_US_SA_DESC_CAM_TABLE_DTS; + +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_PTR() ( RDD_IPSEC_US_SA_DESC_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_US_SA_DESC_CAM_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_ETH_TX_SCRATCH_SIZE 16 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_ETH_TX_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_SCRATCH_DTS; + +#define RDD_ETH_TX_SCRATCH_PTR() ( RDD_ETH_TX_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_SCRATCH_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_GSO_TX_DHD_L2_BUFFER_SIZE 22 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_GSO_TX_DHD_L2_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_TX_DHD_L2_BUFFER_DTS; + +#define RDD_GSO_TX_DHD_L2_BUFFER_PTR() ( RDD_GSO_TX_DHD_L2_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_TX_DHD_L2_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_TX_DHD_L2_BUFFER_SIZE 22 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_L2_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_L2_BUFFER_DTS; + +#define RDD_CPU_TX_DHD_L2_BUFFER_PTR() ( RDD_CPU_TX_DHD_L2_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_DHD_L2_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE 5 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE 4 +typedef struct +{ + RDD_HASH_BASED_FORWARDING_PORT_ENTRY_DTS entry[ RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_HASH_BASED_FORWARDING_PORT_TABLE_DTS; + +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_PTR() ( RDD_HASH_BASED_FORWARDING_PORT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + HASH_BASED_FORWARDING_PORT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_TX_DHD_HOST_BUF_PTR_DTS; + +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_PTR() ( RDD_GSO_TX_DHD_HOST_BUF_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_TX_DHD_HOST_BUF_PTR_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_HOST_BUF_PTR_DTS; + +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_PTR() ( RDD_CPU_TX_DHD_HOST_BUF_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_DHD_HOST_BUF_PTR_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_ETH_TX_MAC_TABLE_SIZE 8 +typedef struct +{ + RDD_ETH_TX_MAC_DESCRIPTOR_DTS entry[ RDD_ETH_TX_MAC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_MAC_TABLE_DTS; + +#define RDD_ETH_TX_MAC_TABLE_PTR() ( RDD_ETH_TX_MAC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_MAC_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_RX_NORMAL_DESCRIPTORS_DTS; + +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_PTR() ( RDD_GPON_RX_NORMAL_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GPON_RX_NORMAL_DESCRIPTORS_ADDRESS ) + +#endif +/* PRIVATE_B */ +#if defined WL4908 + +#define RDD_US_INGRESS_HANDLER_BUFFER_SIZE 32 +typedef struct +{ + RDD_IH_BUFFER_DTS entry[ RDD_US_INGRESS_HANDLER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_HANDLER_BUFFER_DTS; + +#define RDD_US_INGRESS_HANDLER_BUFFER_PTR() ( RDD_US_INGRESS_HANDLER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_HANDLER_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_PTR() ( RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_US_CPU_REASON_TO_METER_TABLE_SIZE 64 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_US_CPU_REASON_TO_METER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_REASON_TO_METER_TABLE_DTS; + +#define RDD_US_CPU_REASON_TO_METER_TABLE_PTR() ( RDD_US_CPU_REASON_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_REASON_TO_METER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_MAIN_PROFILING_BUFFER_RUNNER_DTS; + +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_PTR() ( RDD_US_MAIN_PROFILING_BUFFER_RUNNER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_LOOKUP_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE ][ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_QUEUE_PROFILE_TABLE_SIZE 8 +typedef struct +{ + RDD_QUEUE_PROFILE_DTS entry[ RDD_US_QUEUE_PROFILE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_QUEUE_PROFILE_TABLE_DTS; + +#define RDD_US_QUEUE_PROFILE_TABLE_PTR() ( RDD_US_QUEUE_PROFILE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_QUEUE_PROFILE_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_WAN_CHANNELS_8_39_TABLE_SIZE 32 +typedef struct +{ + RDD_WAN_CHANNEL_8_39_DESCRIPTOR_DTS entry[ RDD_WAN_CHANNELS_8_39_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_CHANNELS_8_39_TABLE_DTS; + +#define RDD_WAN_CHANNELS_8_39_TABLE_PTR() ( RDD_WAN_CHANNELS_8_39_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_CHANNELS_8_39_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE 3 +typedef struct +{ + RDD_RUNNER_FLOW_HEADER_BUFFER_DTS entry[ RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RUNNER_FLOW_HEADER_BUFFER_DTS; + +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_PTR() ( RDD_US_RUNNER_FLOW_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RUNNER_FLOW_HEADER_BUFFER_ADDRESS ) + +#endif +#define RDD_US_POLICER_TABLE_PTR() ( RDD_US_POLICER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_POLICER_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE 2 +typedef struct +{ + RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_DTS entry[ RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_DTS; + +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_PTR() ( RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_WAN_FLOW_TABLE_SIZE 256 +typedef struct +{ + RDD_US_WAN_FLOW_ENTRY_DTS entry[ RDD_US_WAN_FLOW_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_WAN_FLOW_TABLE_DTS; + +#define RDD_US_WAN_FLOW_TABLE_PTR() ( RDD_US_WAN_FLOW_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_WAN_FLOW_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_DTS entry[ RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_BBH_DESCRIPTORS_DTS; + +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_PTR() ( RDD_US_CPU_TX_BBH_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_BBH_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 16 +typedef struct +{ + RDD_FORWARDING_MATRIX_ENTRY_DTS entry[ RDD_US_FORWARDING_MATRIX_TABLE_SIZE ][ RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FORWARDING_MATRIX_TABLE_DTS; + +#define RDD_US_FORWARDING_MATRIX_TABLE_PTR() ( RDD_US_FORWARDING_MATRIX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FORWARDING_MATRIX_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +typedef struct +{ + RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_DTS entry[ RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 8 +typedef struct +{ + RDD_US_QUEUE_ENTRY_DTS entry[ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE ][ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_DTS; + +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_PTR() ( RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TRAFFIC_CLASS_TO_QUEUE_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_US_RATE_LIMITER_TABLE_SIZE 16 +typedef struct +{ + RDD_RATE_LIMITER_ENTRY_DTS entry[ RDD_US_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RATE_LIMITER_TABLE_DTS; + +#define RDD_US_RATE_LIMITER_TABLE_PTR() ( RDD_US_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#define RDD_US_CPU_RX_METER_TABLE_PTR() ( RDD_US_CPU_RX_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_METER_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_DTS entry[ RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_CONTEXT_BUFFER_DTS; + +#define RDD_US_CONNECTION_CONTEXT_BUFFER_PTR() ( RDD_US_CONNECTION_CONTEXT_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CONNECTION_CONTEXT_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +typedef struct +{ + RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_WAN_CHANNELS_0_7_TABLE_SIZE 8 +typedef struct +{ + RDD_WAN_CHANNEL_0_7_DESCRIPTOR_DTS entry[ RDD_WAN_CHANNELS_0_7_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_CHANNELS_0_7_TABLE_DTS; + +#define RDD_WAN_CHANNELS_0_7_TABLE_PTR() ( RDD_WAN_CHANNELS_0_7_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_CHANNELS_0_7_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_DTS; + +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_PTR() ( RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONTEXT_CONTINUATION_ENTRY_DTS entry[ RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_DTS; + +#define RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_PTR() ( RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CONNECTION_CONTEXT_REMAINING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE ][ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DHD_RX_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE 40 +typedef struct +{ + RDD_GPON_ABSOLUTE_TX_COUNTER_DTS entry[ RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_DTS; + +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_PTR() ( RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + GPON_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE 5 +typedef struct +{ + RDD_INGRESS_RATE_LIMITER_ENTRY_DTS entry[ RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_RATE_LIMITER_TABLE_DTS; + +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_PTR() ( RDD_US_INGRESS_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_PTR() ( RDD_RUNNER_FWTRACE_MAINB_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + RUNNER_FWTRACE_MAINB_PARAM_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_RX_PICO_INGRESS_QUEUE_DTS; + +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_PTR() ( RDD_US_CPU_RX_PICO_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_ROUTER_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_ROUTER_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_ROUTER_INGRESS_QUEUE_DTS; + +#define RDD_US_ROUTER_INGRESS_QUEUE_PTR() ( RDD_US_ROUTER_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_ROUTER_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 6 +typedef struct +{ + RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_RX_FAST_INGRESS_QUEUE_DTS; + +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_PTR() ( RDD_US_CPU_RX_FAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE 3 +typedef struct +{ + RDD_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS entry[ RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS; + +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_PTR() ( RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_DEBUG_BUFFER_SIZE 32 +typedef struct +{ + RDD_DEBUG_BUFFER_ENTRY_DTS entry[ RDD_US_DEBUG_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DEBUG_BUFFER_DTS; + +#define RDD_US_DEBUG_BUFFER_PTR() ( RDD_US_DEBUG_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DEBUG_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_FW_MAC_ADDRS_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_US_FW_MAC_ADDRS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FW_MAC_ADDRS_DTS; + +#define RDD_US_FW_MAC_ADDRS_PTR() ( RDD_US_FW_MAC_ADDRS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FW_MAC_ADDRS_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_TX_POST_INGRESS_QUEUE_DTS; + +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_PTR() ( RDD_US_DHD_TX_POST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DHD_TX_POST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE 48 +typedef struct +{ + RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_ENTRY_DTS entry[ RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_DTS; + +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_PTR() ( RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_GPE_COMMAND_PRIMITIVE_ENTRY_DTS entry[ RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_DTS; + +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_PTR() ( RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_FAST_MALLOC_RESULT_TABLE_SIZE 2 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_FAST_MALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FAST_MALLOC_RESULT_TABLE_DTS; + +#define RDD_US_FAST_MALLOC_RESULT_TABLE_PTR() ( RDD_US_FAST_MALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_MALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE 40 +typedef struct +{ + RDD_GPON_ABSOLUTE_TX_COUNTER_DTS entry[ RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_DTS; + +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_PTR() ( RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOB_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_PTR() ( RDD_RUNNER_FWTRACE_PICOB_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + RUNNER_FWTRACE_PICOB_PARAM_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_FLOW_RING_DROP_COUNTER_DTS; + +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_PTR() ( RDD_US_DHD_FLOW_RING_DROP_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DHD_FLOW_RING_DROP_COUNTER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_PICO_MALLOC_RESULT_TABLE_SIZE 2 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_PICO_MALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PICO_MALLOC_RESULT_TABLE_DTS; + +#define RDD_US_PICO_MALLOC_RESULT_TABLE_PTR() ( RDD_US_PICO_MALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_MALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS; + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_PTR() ( RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTE_1_DTS entry[ RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS; + +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_PTR() ( RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS; + +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_PTR() ( RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE 32 +typedef struct +{ + RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_WAN_TX_SCRATCH_SIZE 24 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_WAN_TX_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SCRATCH_DTS; + +#define RDD_WAN_TX_SCRATCH_PTR() ( RDD_WAN_TX_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_TX_SCRATCH_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE 3 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 6 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE ][ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_DTS; + +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_PTR() ( RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE 9 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_DTS; + +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_PTR() ( RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE 14 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_DTS; + +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_PTR() ( RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CPU_TX_DHD_LAYER2_HEADER_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DATA_POINTER_DUMMY_TARGET_SIZE 2 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DATA_POINTER_DUMMY_TARGET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DATA_POINTER_DUMMY_TARGET_DTS; + +#define RDD_DATA_POINTER_DUMMY_TARGET_PTR() ( RDD_DATA_POINTER_DUMMY_TARGET_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DATA_POINTER_DUMMY_TARGET_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_ENTRY_DTS entry[ RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS; + +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR() ( RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_TASK_REORDER_ENTRY_DTS entry[ RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS; + +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_PTR() ( RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS; + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_PTR() ( RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS ) + +#endif +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_PTR() ( RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_ETH2_RX_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_ETH2_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH2_RX_DESCRIPTORS_DTS; + +#define RDD_ETH2_RX_DESCRIPTORS_PTR() ( RDD_ETH2_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETH2_RX_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_ETH1_RX_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_ETH1_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH1_RX_DESCRIPTORS_DTS; + +#define RDD_ETH1_RX_DESCRIPTORS_PTR() ( RDD_ETH1_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETH1_RX_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_ETH0_RX_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_ETH0_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH0_RX_DESCRIPTORS_DTS; + +#define RDD_ETH0_RX_DESCRIPTORS_PTR() ( RDD_ETH0_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETH0_RX_DESCRIPTORS_ADDRESS ) + +#endif +/* COMMON_A */ +#if defined WL4908 + +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE 256 +typedef struct +{ + RDD_SIXTEEN_BYTES_DTS entry[ RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_DTS; + +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_PTR() ( RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DDR_CACHE_FIFO_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_PTR() ( RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + FC_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_PTR() ( RDD_CPU_RX_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + CPU_RX_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_DTS; + +#define RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR() ( RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_PTR() ( RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_BASE_PTR() ( RDD_RUNNER_FWTRACE_MAINA_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_MAINA_BASE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOA_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_PICOA_BASE_PTR() ( RDD_RUNNER_FWTRACE_PICOA_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_PICOA_BASE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_DHD_STATION_ENTRY_DTS entry[ RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_STATION_TABLE_DTS; + +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_PTR() ( RDD_WLAN_MCAST_DHD_STATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_DHD_STATION_TABLE_ADDRESS ) + +#endif +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_PTR() ( RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_MAC_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_ENTRY_DTS entry[ RDD_MAC_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_TABLE_CAM_DTS; + +#define RDD_MAC_TABLE_CAM_PTR() ( RDD_MAC_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_TABLE_CAM_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_MAC_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_ENTRY_DTS entry[ RDD_MAC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_TABLE_DTS; + +#define RDD_MAC_TABLE_PTR() ( RDD_MAC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +typedef struct +{ + uint32_t reserved0 :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_bridge_port :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ddr_id :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETHWAN2_RX_DESCRIPTOR_DTS; + +#define RDD_ETHWAN2_RX_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 13, 9, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 13, 9, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 12, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 12, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 1, 4, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 1, 4, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_SOURCE_BRIDGE_PORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 3, 6, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_SOURCE_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 3, 6, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 2, 1, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 2, 1, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_DDR_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 1, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_DDR_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 1, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#endif +#if defined WL4908 + +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_ETHWAN2_RX_DESCRIPTOR_DTS entry[ RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETHWAN2_RX_INGRESS_QUEUE_DTS; + +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_PTR() ( RDD_ETHWAN2_RX_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + ETHWAN2_RX_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_TRACE_C_TABLE_SIZE 4 +typedef struct +{ + RDD_TRACE_C_ENTRY_DTS entry[ RDD_TRACE_C_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TRACE_C_TABLE_DTS; + +#define RDD_TRACE_C_TABLE_PTR() ( RDD_TRACE_C_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + TRACE_C_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_PTR() ( RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_MAINA_CURR_OFFSET_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE 2 +typedef struct +{ + RDD_FREE_SKB_INDEXES_FIFO_TAIL_DTS entry[ RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_DTS; + +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_PTR() ( RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + FREE_SKB_INDEXES_DDR_FIFO_TAIL_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_MAC_CONTEXT_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_CONTEXT_ENTRY_DTS entry[ RDD_MAC_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_CONTEXT_TABLE_DTS; + +#define RDD_MAC_CONTEXT_TABLE_PTR() ( RDD_MAC_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_CONTEXT_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE 32 +typedef struct +{ + RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +typedef struct +{ + RDD_BYTES_2_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_WLAN_MCAST_FWD_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_FWD_ENTRY_DTS entry[ RDD_WLAN_MCAST_FWD_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_FWD_TABLE_DTS; + +#define RDD_WLAN_MCAST_FWD_TABLE_PTR() ( RDD_WLAN_MCAST_FWD_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_FWD_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE 32 +typedef struct +{ + RDD_DDR_QUEUE_DESCRIPTOR_DTS entry[ RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_PTR() ( RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DESCRIPTOR_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE 48 +typedef struct +{ + RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_DTS entry[ RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_DTS; + +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_PTR() ( RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE 8 +typedef struct +{ + RDD_DHD_BACKUP_ENTRY_DTS entry[ RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_POST_REQUEST_QUEUE_DTS; + +#define RDD_CPU_TX_POST_REQUEST_QUEUE_PTR() ( RDD_CPU_TX_POST_REQUEST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + CPU_TX_POST_REQUEST_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE 48 +typedef struct +{ + RDD_WLAN_MCAST_SSID_STATS_ENTRY_DTS entry[ RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_STATS_TABLE_DTS; + +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_PTR() ( RDD_WLAN_MCAST_SSID_STATS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_SSID_STATS_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE 3 +typedef struct +{ + RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DTS entry[ RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_DTS; + +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_PTR() ( RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_RADIO_INSTANCE_COMMON_A_DATA_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_DTS entry[ RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS; + +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_PTR() ( RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE 128 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_DTS; + +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_PTR() ( RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RATE_SHAPERS_STATUS_DESCRIPTOR_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE 16 +typedef struct +{ + RDD_INTERRUPT_COALESCING_CONFIG_DTS entry[ RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INTERRUPT_COALESCING_CONFIG_TABLE_DTS; + +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_PTR() ( RDD_INTERRUPT_COALESCING_CONFIG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + INTERRUPT_COALESCING_CONFIG_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 4 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_DS_CONNECTION_BUFFER_TABLE_SIZE ][ RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_BUFFER_TABLE_DTS; + +#define RDD_DS_CONNECTION_BUFFER_TABLE_PTR() ( RDD_DS_CONNECTION_BUFFER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_CONNECTION_BUFFER_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_MAC_CONTEXT_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_CONTEXT_ENTRY_DTS entry[ RDD_MAC_CONTEXT_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_CONTEXT_TABLE_CAM_DTS; + +#define RDD_MAC_CONTEXT_TABLE_CAM_PTR() ( RDD_MAC_CONTEXT_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_CONTEXT_TABLE_CAM_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DHD_DOORBELL_WRITE_VALUES_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DHD_DOORBELL_WRITE_VALUES_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_DOORBELL_WRITE_VALUES_DTS; + +#define RDD_DHD_DOORBELL_WRITE_VALUES_PTR() ( RDD_DHD_DOORBELL_WRITE_VALUES_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_DOORBELL_WRITE_VALUES_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_BACKUP_INDEX_CACHE_DTS; + +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_PTR() ( RDD_DS_DHD_BACKUP_INDEX_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_DHD_BACKUP_INDEX_CACHE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +typedef struct +{ + RDD_CPU_RX_DESCRIPTOR_DTS entry[ RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_DTS; + +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_PTR() ( RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_RING_DESCRIPTORS_TABLE_SIZE 16 +typedef struct +{ + RDD_RING_DESCRIPTOR_DTS entry[ RDD_RING_DESCRIPTORS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RING_DESCRIPTORS_TABLE_DTS; + +#define RDD_RING_DESCRIPTORS_TABLE_PTR() ( RDD_RING_DESCRIPTORS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RING_DESCRIPTORS_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE 32 +typedef struct +{ + RDD_DDR_QUEUE_ADDRESS_ENTRY_DTS entry[ RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_PTR() ( RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_MAC_EXTENSION_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_EXTENSION_ENTRY_DTS entry[ RDD_MAC_EXTENSION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_EXTENSION_TABLE_DTS; + +#define RDD_MAC_EXTENSION_TABLE_PTR() ( RDD_MAC_EXTENSION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_EXTENSION_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE 16 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_DTS; + +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_PTR() ( RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_MAC_EXTENSION_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_EXTENSION_ENTRY_DTS entry[ RDD_MAC_EXTENSION_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_EXTENSION_TABLE_CAM_DTS; + +#define RDD_MAC_EXTENSION_TABLE_CAM_PTR() ( RDD_MAC_EXTENSION_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_EXTENSION_TABLE_CAM_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE 3 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TX_CPL_DHD_DMA_SCRATCH_DTS; + +#define RDD_TX_CPL_DHD_DMA_SCRATCH_PTR() ( RDD_TX_CPL_DHD_DMA_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + TX_CPL_DHD_DMA_SCRATCH_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_SIZE 6 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_TX_POST_BUFFERS_THRESHOLD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_BUFFERS_THRESHOLD_DTS; + +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_PTR() ( RDD_DHD_TX_POST_BUFFERS_THRESHOLD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_TX_POST_BUFFERS_THRESHOLD_ADDRESS ) + +#endif +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_PTR() ( RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS ) + +#if defined WL4908 + +#define RDD_DHD_TX_POST_BUFFERS_IN_USE_COUNTER_SIZE 2 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_TX_POST_BUFFERS_IN_USE_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_BUFFERS_IN_USE_COUNTER_DTS; + +#define RDD_DHD_TX_POST_BUFFERS_IN_USE_COUNTER_PTR() ( RDD_DHD_TX_POST_BUFFERS_IN_USE_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_TX_POST_BUFFERS_IN_USE_COUNTER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_MAIN_A_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_MAIN_A_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAIN_A_DEBUG_TRACE_DTS; + +#define RDD_MAIN_A_DEBUG_TRACE_PTR() ( RDD_MAIN_A_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAIN_A_DEBUG_TRACE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_PICO_A_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_PICO_A_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_A_DEBUG_TRACE_DTS; + +#define RDD_PICO_A_DEBUG_TRACE_PTR() ( RDD_PICO_A_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + PICO_A_DEBUG_TRACE_ADDRESS ) + +#endif +/* COMMON_B */ +#if defined WL4908 + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_RUNNER_B_SCRATCHPAD_DTS; + +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_PTR() ( RDD_CPU_RX_RUNNER_B_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + CPU_RX_RUNNER_B_SCRATCHPAD_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +typedef struct +{ + RDD_BYTES_2_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE 64 +typedef struct +{ + RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_DTS entry[ RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SERVICE_QUEUES_TABLE_DTS; + +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_PTR() ( RDD_WAN_TX_SERVICE_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_TX_SERVICE_QUEUES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 4 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_US_CONNECTION_BUFFER_TABLE_SIZE ][ RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_BUFFER_TABLE_DTS; + +#define RDD_US_CONNECTION_BUFFER_TABLE_PTR() ( RDD_US_CONNECTION_BUFFER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_CONNECTION_BUFFER_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPV6_HOST_ADDRESS_CRC_TABLE_DTS; + +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_PTR() ( RDD_IPV6_HOST_ADDRESS_CRC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + IPV6_HOST_ADDRESS_CRC_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_BACKUP_INFO_CACHE_ENTRY_DTS entry[ RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_INFO_CACHE_TABLE_DTS; + +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_PTR() ( RDD_DHD_BACKUP_INFO_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_BACKUP_INFO_CACHE_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_WAN_TX_QUEUES_TABLE_SIZE 256 +typedef struct +{ + RDD_WAN_TX_QUEUE_DESCRIPTOR_DTS entry[ RDD_WAN_TX_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_QUEUES_TABLE_DTS; + +#define RDD_WAN_TX_QUEUES_TABLE_PTR() ( RDD_WAN_TX_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_TX_QUEUES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_BASE_PTR() ( RDD_RUNNER_FWTRACE_MAINB_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_MAINB_BASE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +typedef struct +{ + RDD_CPU_RX_DESCRIPTOR_DTS entry[ RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RING_PACKET_DESCRIPTORS_CACHE_DTS; + +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_PTR() ( RDD_US_RING_PACKET_DESCRIPTORS_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_DTS entry[ RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_DTS; + +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_PTR() ( RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_FLOW_RING_CACHE_CTX_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE 4 +typedef struct +{ + RDD_FC_FLOW_IP_ADDRESSES_ENTRY_DTS entry[ RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_FLOW_IP_ADDRESSES_TABLE_DTS; + +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_PTR() ( RDD_FC_FLOW_IP_ADDRESSES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + FC_FLOW_IP_ADDRESSES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_PTR() ( RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_MAINB_CURR_OFFSET_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_US_RATE_CONTROLLERS_TABLE_SIZE 128 +typedef struct +{ + RDD_US_RATE_CONTROLLER_DESCRIPTOR_DTS entry[ RDD_US_RATE_CONTROLLERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RATE_CONTROLLERS_TABLE_DTS; + +#define RDD_US_RATE_CONTROLLERS_TABLE_PTR() ( RDD_US_RATE_CONTROLLERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_RATE_CONTROLLERS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_DTS; + +#define RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR() ( RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE 3 +typedef struct +{ + RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_DTS entry[ RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_DTS; + +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_PTR() ( RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_RADIO_INSTANCE_COMMON_B_DATA_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 40 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_IPV4_HOST_ADDRESS_TABLE_SIZE 8 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_IPV4_HOST_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPV4_HOST_ADDRESS_TABLE_DTS; + +#define RDD_IPV4_HOST_ADDRESS_TABLE_PTR() ( RDD_IPV4_HOST_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + IPV4_HOST_ADDRESS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 40 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_DTS entry[ RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS; + +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_PTR() ( RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_MAIN_B_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_MAIN_B_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAIN_B_DEBUG_TRACE_DTS; + +#define RDD_MAIN_B_DEBUG_TRACE_PTR() ( RDD_MAIN_B_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + MAIN_B_DEBUG_TRACE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_PICO_B_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_PICO_B_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_B_DEBUG_TRACE_DTS; + +#define RDD_PICO_B_DEBUG_TRACE_PTR() ( RDD_PICO_B_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + PICO_B_DEBUG_TRACE_ADDRESS - 0x8000 ) + +#endif +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_PTR() ( RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS - 0x8000 ) + +#if defined WL4908 + +#define RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOB_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_PICOB_BASE_PTR() ( RDD_RUNNER_FWTRACE_PICOB_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_PICOB_BASE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_BACKUP_INDEX_CACHE_DTS; + +#define RDD_US_DHD_BACKUP_INDEX_CACHE_PTR() ( RDD_US_DHD_BACKUP_INDEX_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_DHD_BACKUP_INDEX_CACHE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_DHD_DOORBELL_COUNTERS_SIZE 48 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DHD_DOORBELL_COUNTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_DOORBELL_COUNTERS_DTS; + +#define RDD_DHD_DOORBELL_COUNTERS_PTR() ( RDD_DHD_DOORBELL_COUNTERS_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_DOORBELL_COUNTERS_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_WAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_ENQUEUE_INGRESS_QUEUE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_PTR() ( RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_ADDRESS - 0x8000 ) + +#endif +/* DDR */ +#if defined WL4908 + +#define RDD_BPM_PACKET_BUFFERS_SIZE 7680 +typedef struct +{ + RDD_BPM_PACKET_BUFFER_DTS entry[ RDD_BPM_PACKET_BUFFERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BPM_PACKET_BUFFERS_DTS; + +#endif + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_extend :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t protocol :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_port :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dst_port :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_ip :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dst_ip :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NAT_CACHE_LKP_ENTRY_DTS; + +#define RDD_NAT_CACHE_LKP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_NAT_CACHE_LKP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_NAT_CACHE_LKP_ENTRY_KEY_EXTEND_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 4, r) +#define RDD_NAT_CACHE_LKP_ENTRY_KEY_EXTEND_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 4, v) +#define RDD_NAT_CACHE_LKP_ENTRY_PROTOCOL_READ(r, p) MREAD_8((uint8_t *)p + 3, r) +#define RDD_NAT_CACHE_LKP_ENTRY_PROTOCOL_WRITE(v, p) MWRITE_8((uint8_t *)p + 3, v) +#define RDD_NAT_CACHE_LKP_ENTRY_SRC_PORT_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_NAT_CACHE_LKP_ENTRY_SRC_PORT_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_NAT_CACHE_LKP_ENTRY_DST_PORT_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_NAT_CACHE_LKP_ENTRY_DST_PORT_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_NAT_CACHE_LKP_ENTRY_SRC_IP_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_NAT_CACHE_LKP_ENTRY_SRC_IP_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_NAT_CACHE_LKP_ENTRY_DST_IP_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_NAT_CACHE_LKP_ENTRY_DST_IP_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_extend :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t protocol :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :23 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_pure_ack :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tos :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t src_mac_crc :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dst_mac_crc :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NAT_CACHE_L2_LKP_ENTRY_DTS; + +#define RDD_NAT_CACHE_L2_LKP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_KEY_EXTEND_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 4, r) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_KEY_EXTEND_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 4, v) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_PROTOCOL_READ(r, p) MREAD_8((uint8_t *)p + 3, r) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_PROTOCOL_WRITE(v, p) MWRITE_8((uint8_t *)p + 3, v) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_TCP_PURE_ACK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 0, 1, r) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_TCP_PURE_ACK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 0, 1, v) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 7, r) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 7, v) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_SRC_MAC_CRC_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_SRC_MAC_CRC_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_DST_MAC_CRC_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_NAT_CACHE_L2_LKP_ENTRY_DST_MAC_CRC_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_NUMBER 36 + +typedef struct +{ + uint32_t status_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = status_0, size = 32 bits + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t natc_hit :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :29 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t activity_status :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_hits :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t flow_bytes :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t context_continuation_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_routed :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_tos_mangle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_l2_accel :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mtu :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tos :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_wred_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_mapt_us :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_df :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t service_queue_id :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_unicast_wfd_any :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t priority :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_idx :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_phy :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_addresses_table_index :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t link_specific_union :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_hit_trap :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_ingqos_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_5 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pathstat_idx :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_6 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pppoe_ses_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t command_list[RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_NUMBER]; + uint32_t context_continuation_table_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command_list_remaining_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_DTS; + +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_STATUS_0_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_STATUS_0_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_NATC_HIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_NATC_HIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_ACTIVITY_STATUS_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_ACTIVITY_STATUS_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 0, 24, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 0, 24, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 5, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 5, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_L2_ACCEL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 3, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_L2_ACCEL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 3, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_MTU_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 0, 11, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_MTU_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 0, 11, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 10, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 10, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_WRED_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 7, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_WRED_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 7, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_MAPT_US_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 6, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_MAPT_US_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 6, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_DF_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 5, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_DF_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 5, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_SERVICE_QUEUE_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 0, 5, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_SERVICE_QUEUE_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 0, 5, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_DROP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_DROP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_ANY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 6, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_ANY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 6, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 2, 4, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 2, 4, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_WFD_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 1, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_WFD_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 1, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_WFD_IDX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 7, 2, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_WFD_IDX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 7, 2, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_EGRESS_PHY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 5, 2, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_EGRESS_PHY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 5, 2, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IP_ADDRESSES_TABLE_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 2, 3, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IP_ADDRESSES_TABLE_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 2, 3, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_LINK_SPECIFIC_UNION_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 18, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_LINK_SPECIFIC_UNION_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 18, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_HIT_TRAP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 16, 7, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_HIT_TRAP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 16, 7, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_INGQOS_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 16, 6, 1, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_IS_INGQOS_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 16, 6, 1, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_CPU_REASON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 18, 0, 6, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_CPU_REASON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 18, 0, 6, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_PATHSTAT_IDX_READ(r, p) MREAD_8((uint8_t *)p + 19, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_PATHSTAT_IDX_WRITE(v, p) MWRITE_8((uint8_t *)p + 19, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_PPPOE_SES_ID_READ(r, p) MREAD_16((uint8_t *)p + 22, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_PPPOE_SES_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 22, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_READ(r, p, i) MREAD_I_8((uint8_t *)p + 24, i, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 24, i, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_TABLE_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 60, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_TABLE_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 60, v) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_REMAINING_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 62, r) +#define RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_REMAINING_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 62, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_NUMBER 36 + +typedef struct +{ + uint32_t status_0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = status_0, size = 32 bits + uint32_t reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t natc_hit :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :29 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t activity_status :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_hits :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t flow_bytes :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t context_continuation_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_routed :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_tos_mangle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_l2_accel :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mtu :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tos :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_wred_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t service_queue_id :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_unicast_wfd_any :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t priority :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wfd_idx :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_phy :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_addresses_table_index :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t link_specific_union :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_hit_trap :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_ingqos_high_prio :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_5 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pathstat_idx :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_6 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pppoe_ses_id :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t command_list[RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_NUMBER]; + uint32_t context_continuation_table_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command_list_remaining_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_DTS; + +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_STATUS_0_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_STATUS_0_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_NATC_HIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_NATC_HIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_ACTIVITY_STATUS_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_ACTIVITY_STATUS_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 0, 24, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 0, 24, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 5, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 5, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_L2_ACCEL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 3, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_L2_ACCEL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 3, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_MTU_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 0, 11, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_MTU_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 0, 11, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 10, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 10, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_WRED_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 7, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_WRED_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 7, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_SERVICE_QUEUE_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 0, 5, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_SERVICE_QUEUE_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 0, 5, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_DROP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_DROP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_ANY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 6, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_UNICAST_WFD_ANY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 6, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 2, 4, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 2, 4, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_WFD_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 1, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_WFD_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 1, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_WFD_IDX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 7, 2, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_WFD_IDX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 7, 2, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_EGRESS_PHY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 5, 2, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_EGRESS_PHY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 5, 2, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IP_ADDRESSES_TABLE_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 2, 3, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IP_ADDRESSES_TABLE_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 2, 3, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_LINK_SPECIFIC_UNION_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 18, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_LINK_SPECIFIC_UNION_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 18, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_HIT_TRAP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 16, 7, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_HIT_TRAP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 16, 7, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_INGQOS_HIGH_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 16, 6, 1, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_IS_INGQOS_HIGH_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 16, 6, 1, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_CPU_REASON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 18, 0, 6, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_CPU_REASON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 18, 0, 6, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_PATHSTAT_IDX_READ(r, p) MREAD_8((uint8_t *)p + 19, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_PATHSTAT_IDX_WRITE(v, p) MWRITE_8((uint8_t *)p + 19, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_PPPOE_SES_ID_READ(r, p) MREAD_16((uint8_t *)p + 22, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_PPPOE_SES_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 22, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_READ(r, p, i) MREAD_I_8((uint8_t *)p + 24, i, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 24, i, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_TABLE_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 60, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_TABLE_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 60, v) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_REMAINING_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 62, r) +#define RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_REMAINING_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 62, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_PORT_CONTEXT_NUMBER 8 +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_L3_COMMAND_LIST_NUMBER 8 + +typedef struct +{ + uint32_t flow_hits :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_bytes :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t context_continuation_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_routed :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_tos_mangle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t number_of_ports :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t port_mask :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mtu :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tos :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wlan_mcast_clients :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wlan_mcast_index :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mcast_port_header_buffer_ptr :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t port_context[RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_PORT_CONTEXT_NUMBER]; + uint8_t l3_command_list[RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_L3_COMMAND_LIST_NUMBER]; + uint32_t context_continuation_table_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t command_list_remaining_length :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_DTS; + +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_FLOW_HITS_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_FLOW_BYTES_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_MULTICAST_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 5, 1, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_IS_ROUTED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 5, 1, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 1, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_IS_TOS_MANGLE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 1, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_NUMBER_OF_PORTS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 0, 4, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_NUMBER_OF_PORTS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 0, 4, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_PORT_MASK_READ(r, p) MREAD_8((uint8_t *)p + 9, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_PORT_MASK_WRITE(v, p) MWRITE_8((uint8_t *)p + 9, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_MTU_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 10, 0, 11, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_MTU_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 10, 0, 11, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 12, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 12, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_WLAN_MCAST_CLIENTS_READ(r, p) MREAD_8((uint8_t *)p + 14, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_WLAN_MCAST_CLIENTS_WRITE(v, p) MWRITE_8((uint8_t *)p + 14, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_WLAN_MCAST_INDEX_READ(r, p) MREAD_8((uint8_t *)p + 15, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_WLAN_MCAST_INDEX_WRITE(v, p) MWRITE_8((uint8_t *)p + 15, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_MCAST_PORT_HEADER_BUFFER_PTR_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_MCAST_PORT_HEADER_BUFFER_PTR_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_PORT_CONTEXT_READ(r, p, i) MREAD_I_32((uint8_t *)p + 20, i, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_PORT_CONTEXT_WRITE(v, p, i) MWRITE_I_32((uint8_t *)p + 20, i, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_L3_COMMAND_LIST_READ(r, p, i) MREAD_I_8((uint8_t *)p + 52, i, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_L3_COMMAND_LIST_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 52, i, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_TABLE_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 60, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_CONTEXT_CONTINUATION_TABLE_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 60, v) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_REMAINING_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 62, r) +#define RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_COMMAND_LIST_REMAINING_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 62, v) +#if defined WL4908 + +#define RDD_CONTEXT_CONTINUATION_TABLE_SIZE 65536 +typedef struct +{ + RDD_CONTEXT_CONTINUATION_ENTRY_DTS entry[ RDD_CONTEXT_CONTINUATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONTEXT_CONTINUATION_TABLE_DTS; + +#endif +#if defined WL4908 + +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE 8 +typedef struct +{ + RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_DTS entry[ RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_DTS; + +#endif +#if defined WL4908 + +#define RDD_R2D_WR_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_R2D_WR_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_R2D_WR_ARR_DDR_BUFFER_DTS; + +#endif +#if defined WL4908 + +#define RDD_D2R_RD_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_D2R_RD_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_D2R_RD_ARR_DDR_BUFFER_DTS; + +#endif +#if defined WL4908 + +#define RDD_R2D_RD_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_R2D_RD_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_R2D_RD_ARR_DDR_BUFFER_DTS; + +#endif +#if defined WL4908 + +#define RDD_D2R_WR_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_D2R_WR_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_D2R_WR_ARR_DDR_BUFFER_DTS; + +#endif +#if defined WL4908 + +#define RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE 524288 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_QUEUES_BUFFER_DTS; + +#endif +#if defined WL4908 + +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_DHD_LIST_ENTRY_ARRAY_DTS entry[ RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_LIST_TABLE_DTS; + +#endif +/* PSRAM */ +/* PRIVATE_A */ +#if defined WL4908_EAP + +#define RDD_INGRESS_HANDLER_BUFFER_SIZE 32 +typedef struct +{ + RDD_IH_BUFFER_DTS entry[ RDD_INGRESS_HANDLER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_HANDLER_BUFFER_DTS; + +#define RDD_INGRESS_HANDLER_BUFFER_PTR() ( RDD_INGRESS_HANDLER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + INGRESS_HANDLER_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +typedef struct +{ + uint32_t reserved0 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wred_bit_reserved0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tx_queue_reserved0 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t egress_port_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t header_number :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_bridge_port :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t absolute_normal :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t misc :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = misc, size = 3 bits + uint32_t last_indication :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t pti :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ring_id :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t payload_offset :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ddr_params :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = ddr_params, size = 2 bits + uint32_t ddr_id :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ + uint32_t packet_location :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +/* fields union = packet_location, size = 16 bits + uint32_t buffer_number :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_address_index :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + end fields union*/ +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_TX_DESCRIPTOR_DTS; + +#define RDD_BBH_TX_DESCRIPTOR_WRED_BIT_RESERVED0_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_WRED_BIT_RESERVED0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_TX_QUEUE_RESERVED0_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 3, r) +#define RDD_BBH_TX_DESCRIPTOR_TX_QUEUE_RESERVED0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 3, v) +#define RDD_BBH_TX_DESCRIPTOR_EGRESS_PORT_RESERVED0_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 3, 5, r) +#define RDD_BBH_TX_DESCRIPTOR_EGRESS_PORT_RESERVED0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 3, 5, v) +#define RDD_BBH_TX_DESCRIPTOR_HEADER_NUMBER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 3, r) +#define RDD_BBH_TX_DESCRIPTOR_HEADER_NUMBER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 3, v) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_BRIDGE_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 4, 4, r) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 4, 4, v) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 12, r) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 12, v) +#define RDD_BBH_TX_DESCRIPTOR_ABSOLUTE_NORMAL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_ABSOLUTE_NORMAL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_MISC_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 3, r) +#define RDD_BBH_TX_DESCRIPTOR_MISC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 3, v) +#define RDD_BBH_TX_DESCRIPTOR_LAST_INDICATION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_LAST_INDICATION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_PTI_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 2, r) +#define RDD_BBH_TX_DESCRIPTOR_PTI_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 2, v) +#define RDD_BBH_TX_DESCRIPTOR_RING_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 3, r) +#define RDD_BBH_TX_DESCRIPTOR_RING_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 3, v) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 3, 9, r) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 3, 9, v) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 2, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 2, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_DDR_PARAMS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 2, r) +#define RDD_BBH_TX_DESCRIPTOR_DDR_PARAMS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 2, v) +#define RDD_BBH_TX_DESCRIPTOR_DDR_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_DDR_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LOCATION_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LOCATION_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_BBH_TX_DESCRIPTOR_ABS_ADDRESS_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_BBH_TX_DESCRIPTOR_ABS_ADDRESS_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#endif +#if defined WL4908_EAP + +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_DTS entry[ RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CONTEXT_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_PTR() ( RDD_DS_CONNECTION_CONTEXT_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CONTEXT_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_PTR() ( RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE 64 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_REASON_TO_METER_TABLE_DTS; + +#define RDD_DS_CPU_REASON_TO_METER_TABLE_PTR() ( RDD_DS_CPU_REASON_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_REASON_TO_METER_TABLE_ADDRESS ) + +#endif +#define RDD_DS_CPU_RX_METER_TABLE_PTR() ( RDD_DS_CPU_RX_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_METER_TABLE_ADDRESS ) + +#define RDD_DS_POLICER_TABLE_PTR() ( RDD_DS_POLICER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_POLICER_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_IPSEC_DS_BUFFER_POOL_SIZE 2 +typedef struct +{ + RDD_IPSEC_DS_BUFFER_DTS entry[ RDD_IPSEC_DS_BUFFER_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_BUFFER_POOL_DTS; + +#define RDD_IPSEC_DS_BUFFER_POOL_PTR() ( RDD_IPSEC_DS_BUFFER_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_BUFFER_POOL_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_IPSEC_DS_SA_DESC_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_DTS entry[ RDD_IPSEC_DS_SA_DESC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_SA_DESC_TABLE_DTS; + +#define RDD_IPSEC_DS_SA_DESC_TABLE_PTR() ( RDD_IPSEC_DS_SA_DESC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_SA_DESC_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_IPSEC_US_SA_DESC_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_DTS entry[ RDD_IPSEC_US_SA_DESC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_US_SA_DESC_TABLE_DTS; + +#define RDD_IPSEC_US_SA_DESC_TABLE_PTR() ( RDD_IPSEC_US_SA_DESC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_US_SA_DESC_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE 32 +typedef struct +{ + RDD_SERVICE_QUEUES_RATE_LIMITER_DESCRIPTOR_DTS entry[ RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_PTR() ( RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + SERVICE_QUEUES_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +typedef struct +{ + RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_DTS entry[ RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_DTS; + +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_PTR() ( RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS ) + +#endif +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE ][ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE 32 +typedef struct +{ + RDD_RATE_LIMITER_REMAINDER_ENTRY_DTS entry[ RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_LIMITER_REMAINDER_TABLE_DTS; + +#define RDD_RATE_LIMITER_REMAINDER_TABLE_PTR() ( RDD_RATE_LIMITER_REMAINDER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RATE_LIMITER_REMAINDER_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +typedef struct +{ + RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_FC_MCAST_CONNECTION2_TABLE_SIZE 128 +typedef struct +{ + RDD_FC_MCAST_CONNECTION2_ENTRY_DTS entry[ RDD_FC_MCAST_CONNECTION2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_CONNECTION2_TABLE_DTS; + +#define RDD_FC_MCAST_CONNECTION2_TABLE_PTR() ( RDD_FC_MCAST_CONNECTION2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + FC_MCAST_CONNECTION2_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE 72 +typedef struct +{ + RDD_ETH_TX_QUEUE_POINTERS_ENTRY_DTS entry[ RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS; + +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_PTR() ( RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_QUEUES_POINTERS_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_WAN_FLOW_TABLE_SIZE 256 +typedef struct +{ + RDD_DS_WAN_FLOW_ENTRY_DTS entry[ RDD_DS_WAN_FLOW_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_FLOW_TABLE_DTS; + +#define RDD_DS_WAN_FLOW_TABLE_PTR() ( RDD_DS_WAN_FLOW_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_WAN_FLOW_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP +#define RDD_CONTEXT_CONTINUATION_ENTRY_COMMAND_LIST_NUMBER 68 + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t connection_direction :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_unicast_wfd_nic :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t connection_table_index :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :17 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow_index :15 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t command_list[RDD_CONTEXT_CONTINUATION_ENTRY_COMMAND_LIST_NUMBER]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONTEXT_CONTINUATION_ENTRY_DTS; + +#define RDD_CONTEXT_CONTINUATION_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_CONTEXT_CONTINUATION_ENTRY_CONNECTION_DIRECTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 1, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_CONNECTION_DIRECTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 1, v) +#define RDD_CONTEXT_CONTINUATION_ENTRY_IS_UNICAST_WFD_NIC_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 1, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_IS_UNICAST_WFD_NIC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 1, v) +#define RDD_CONTEXT_CONTINUATION_ENTRY_CONNECTION_TABLE_INDEX_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_CONNECTION_TABLE_INDEX_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_CONTEXT_CONTINUATION_ENTRY_FLOW_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 15, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_FLOW_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 15, v) +#define RDD_CONTEXT_CONTINUATION_ENTRY_COMMAND_LIST_READ(r, p, i) MREAD_I_8((uint8_t *)p + 8, i, r) +#define RDD_CONTEXT_CONTINUATION_ENTRY_COMMAND_LIST_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 8, i, v) +#endif +#if defined WL4908_EAP + +#define RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONTEXT_CONTINUATION_ENTRY_DTS entry[ RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_PTR() ( RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CONTEXT_REMAINING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_LOOKUP_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE ][ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 16 +typedef struct +{ + RDD_FORWARDING_MATRIX_ENTRY_DTS entry[ RDD_DS_FORWARDING_MATRIX_TABLE_SIZE ][ RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FORWARDING_MATRIX_TABLE_DTS; + +#define RDD_DS_FORWARDING_MATRIX_TABLE_PTR() ( RDD_DS_FORWARDING_MATRIX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FORWARDING_MATRIX_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_PTR() ( RDD_RUNNER_FWTRACE_MAINA_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RUNNER_FWTRACE_MAINA_PARAM_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_WAN_UDP_FILTER_TABLE_SIZE 32 +typedef struct +{ + RDD_DS_WAN_UDP_FILTER_ENTRY_DTS entry[ RDD_DS_WAN_UDP_FILTER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_WAN_UDP_FILTER_TABLE_DTS; + +#define RDD_DS_WAN_UDP_FILTER_TABLE_PTR() ( RDD_DS_WAN_UDP_FILTER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_WAN_UDP_FILTER_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_COMPLETE_RING_DESCRIPTOR_DTS entry[ RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_DTS; + +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_PTR() ( RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOA_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_PTR() ( RDD_RUNNER_FWTRACE_PICOA_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + RUNNER_FWTRACE_PICOA_PARAM_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_RATE_LIMITER_TABLE_SIZE 32 +typedef struct +{ + RDD_RATE_LIMITER_ENTRY_DTS entry[ RDD_DS_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RATE_LIMITER_TABLE_DTS; + +#define RDD_DS_RATE_LIMITER_TABLE_PTR() ( RDD_DS_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_ETH_TX_QUEUES_TABLE_SIZE 72 +typedef struct +{ + RDD_ETH_TX_QUEUE_DESCRIPTOR_DTS entry[ RDD_ETH_TX_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_QUEUES_TABLE_DTS; + +#define RDD_ETH_TX_QUEUES_TABLE_PTR() ( RDD_ETH_TX_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_QUEUES_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_HANDLER_SKB_DATA_POINTER_DTS; + +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_PTR() ( RDD_INGRESS_HANDLER_SKB_DATA_POINTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE 8 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 64 +typedef struct +{ + RDD_FC_MCAST_PORT_HEADER_ENTRY_DTS entry[ RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE ][ RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_PORT_HEADER_BUFFER_DTS; + +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_PTR() ( RDD_FC_MCAST_PORT_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + FC_MCAST_PORT_HEADER_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +typedef struct +{ + uint32_t last_sbn :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t skip :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ih_buffer_number :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ddr_id :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_RX_DESCRIPTOR_DTS; + +#define RDD_BBH_RX_DESCRIPTOR_LAST_SBN_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 10, r) +#define RDD_BBH_RX_DESCRIPTOR_LAST_SBN_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 10, v) +#define RDD_BBH_RX_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 13, 9, r) +#define RDD_BBH_RX_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 13, 9, v) +#define RDD_BBH_RX_DESCRIPTOR_SKIP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 4, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_SKIP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 4, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 12, r) +#define RDD_BBH_RX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 12, v) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 1, 4, r) +#define RDD_BBH_RX_DESCRIPTOR_ERROR_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 1, 4, v) +#define RDD_BBH_RX_DESCRIPTOR_IH_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 3, 6, r) +#define RDD_BBH_RX_DESCRIPTOR_IH_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 3, 6, v) +#define RDD_BBH_RX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 2, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 2, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_DDR_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 1, r) +#define RDD_BBH_RX_DESCRIPTOR_DDR_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 1, v) +#define RDD_BBH_RX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_BBH_RX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#endif +#if defined WL4908_EAP + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE 64 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_DTS; + +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_PTR() ( RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_LAN_ENQUEUE_SQ_PD_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_MULTICAST_BUFFER_ENTRY_DTS entry[ RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_DTS; + +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_PTR() ( RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_DTS entry[ RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_TX_BBH_DESCRIPTORS_DTS; + +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_PTR() ( RDD_DS_CPU_TX_BBH_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_TX_BBH_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +typedef struct +{ + uint32_t reserved0 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_BPM_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_L_READ( wv ) FIELD_GET( wv, 0, 18 ) +#define RDD_CPU_TX_DESCRIPTOR_BPM_BUFFER_NUMBER_L_WRITE( v, wv ) FIELD_SET( v, 0, 18, wv ) +#endif +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_ETH_TX_LOCAL_REGISTERS_SIZE 9 +typedef struct +{ + RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_DTS entry[ RDD_ETH_TX_LOCAL_REGISTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_LOCAL_REGISTERS_DTS; + +#define RDD_ETH_TX_LOCAL_REGISTERS_PTR() ( RDD_ETH_TX_LOCAL_REGISTERS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_LOCAL_REGISTERS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 2 +typedef struct +{ + RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DTS entry[ RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS; + +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_PTR() ( RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_QUEUE_PROFILE_TABLE_SIZE 8 +typedef struct +{ + RDD_QUEUE_PROFILE_DTS entry[ RDD_DS_QUEUE_PROFILE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_QUEUE_PROFILE_TABLE_DTS; + +#define RDD_DS_QUEUE_PROFILE_TABLE_PTR() ( RDD_DS_QUEUE_PROFILE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_QUEUE_PROFILE_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_SQ_ENQUEUE_QUEUE_SIZE 64 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DS_SQ_ENQUEUE_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_SQ_ENQUEUE_QUEUE_DTS; + +#define RDD_DS_SQ_ENQUEUE_QUEUE_PTR() ( RDD_DS_SQ_ENQUEUE_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_SQ_ENQUEUE_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_DTS; + +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_PTR() ( RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_DTS; + +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_PTR() ( RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_NULL_BUFFER_SIZE 3 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_NULL_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_NULL_BUFFER_DTS; + +#define RDD_DS_NULL_BUFFER_PTR() ( RDD_DS_NULL_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_NULL_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_ROUTER_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_ROUTER_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_ROUTER_INGRESS_QUEUE_DTS; + +#define RDD_DS_ROUTER_INGRESS_QUEUE_PTR() ( RDD_DS_ROUTER_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_ROUTER_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_GPE_COMMAND_PRIMITIVE_ENTRY_DTS entry[ RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_DTS; + +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_PTR() ( RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_DTS; + +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_PTR() ( RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_RX_FAST_PD_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_DTS; + +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_PTR() ( RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_COMPLETE_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_COMPLETE_RING_ENTRY_DTS entry[ RDD_DHD_COMPLETE_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_COMPLETE_RING_BUFFER_DTS; + +#define RDD_DHD_COMPLETE_RING_BUFFER_PTR() ( RDD_DHD_COMPLETE_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_COMPLETE_RING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_FAST_MALLOC_RESULT_TABLE_SIZE 2 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DS_FAST_MALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FAST_MALLOC_RESULT_TABLE_DTS; + +#define RDD_DS_FAST_MALLOC_RESULT_TABLE_PTR() ( RDD_DS_FAST_MALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_MALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_PICO_MALLOC_RESULT_TABLE_SIZE 2 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DS_PICO_MALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PICO_MALLOC_RESULT_TABLE_DTS; + +#define RDD_DS_PICO_MALLOC_RESULT_TABLE_PTR() ( RDD_DS_PICO_MALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_MALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE 4 +typedef struct +{ + RDD_DHD_L2_HEADER_BUFFER_ENTRY_DTS entry[ RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_HEADER_SCRATCH_DTS; + +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_PTR() ( RDD_DS_DHD_TX_POST_HEADER_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_HEADER_SCRATCH_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE 5 +typedef struct +{ + RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_DEBUG_BUFFER_SIZE 32 +typedef struct +{ + RDD_DEBUG_BUFFER_ENTRY_DTS entry[ RDD_DS_DEBUG_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DEBUG_BUFFER_DTS; + +#define RDD_DS_DEBUG_BUFFER_PTR() ( RDD_DS_DEBUG_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DEBUG_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTE_1_DTS entry[ RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS; + +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_PTR() ( RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DATA_POINTER_DUMMY_TARGET_DTS; + +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_PTR() ( RDD_DS_DATA_POINTER_DUMMY_TARGET_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DATA_POINTER_DUMMY_TARGET_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_ENTRY_DTS entry[ RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR() ( RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS ) + +#endif +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE 10 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_DTS; + +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_PTR() ( RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_FW_MAC_ADDRS_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_DS_FW_MAC_ADDRS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FW_MAC_ADDRS_DTS; + +#define RDD_DS_FW_MAC_ADDRS_PTR() ( RDD_DS_FW_MAC_ADDRS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FW_MAC_ADDRS_ADDRESS ) + +#endif +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_PTR() ( RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_FLOW_RING_DROP_COUNTER_DTS; + +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_PTR() ( RDD_DS_DHD_FLOW_RING_DROP_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_FLOW_RING_DROP_COUNTER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_TASK_REORDER_ENTRY_DTS entry[ RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_PTR() ( RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS; + +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_PTR() ( RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_ETH_TX_SCRATCH_SIZE 16 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_ETH_TX_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_SCRATCH_DTS; + +#define RDD_ETH_TX_SCRATCH_PTR() ( RDD_ETH_TX_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_SCRATCH_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_RX_DIRECT_DESCRIPTORS_DTS; + +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_PTR() ( RDD_GPON_RX_DIRECT_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GPON_RX_DIRECT_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_INGRESS_QUEUE_DTS; + +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_PTR() ( RDD_DS_DHD_TX_POST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_GSO_TX_DHD_L2_BUFFER_SIZE 22 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_GSO_TX_DHD_L2_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_TX_DHD_L2_BUFFER_DTS; + +#define RDD_GSO_TX_DHD_L2_BUFFER_PTR() ( RDD_GSO_TX_DHD_L2_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_TX_DHD_L2_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_INGRESS_QUEUE_DTS; + +#define RDD_WLAN_MCAST_INGRESS_QUEUE_PTR() ( RDD_WLAN_MCAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + WLAN_MCAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_CAM_DTS entry[ RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_SA_DESC_CAM_TABLE_DTS; + +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_PTR() ( RDD_IPSEC_DS_SA_DESC_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_SA_DESC_CAM_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE 16 +typedef struct +{ + RDD_IPSEC_SA_DESC_CAM_DTS entry[ RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_US_SA_DESC_CAM_TABLE_DTS; + +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_PTR() ( RDD_IPSEC_US_SA_DESC_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_US_SA_DESC_CAM_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_TX_DHD_L2_BUFFER_SIZE 22 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_L2_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_L2_BUFFER_DTS; + +#define RDD_CPU_TX_DHD_L2_BUFFER_PTR() ( RDD_CPU_TX_DHD_L2_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_DHD_L2_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS; + +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_PTR() ( RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE 5 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_DTS; + +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_PTR() ( RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE 4 +typedef struct +{ + RDD_HASH_BASED_FORWARDING_PORT_ENTRY_DTS entry[ RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_HASH_BASED_FORWARDING_PORT_TABLE_DTS; + +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_PTR() ( RDD_HASH_BASED_FORWARDING_PORT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + HASH_BASED_FORWARDING_PORT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_TX_DHD_HOST_BUF_PTR_DTS; + +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_PTR() ( RDD_GSO_TX_DHD_HOST_BUF_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_TX_DHD_HOST_BUF_PTR_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_HOST_BUF_PTR_DTS; + +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_PTR() ( RDD_CPU_TX_DHD_HOST_BUF_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_DHD_HOST_BUF_PTR_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_ETH_TX_MAC_TABLE_SIZE 8 +typedef struct +{ + RDD_ETH_TX_MAC_DESCRIPTOR_DTS entry[ RDD_ETH_TX_MAC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH_TX_MAC_TABLE_DTS; + +#define RDD_ETH_TX_MAC_TABLE_PTR() ( RDD_ETH_TX_MAC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_MAC_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_RX_NORMAL_DESCRIPTORS_DTS; + +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_PTR() ( RDD_GPON_RX_NORMAL_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GPON_RX_NORMAL_DESCRIPTORS_ADDRESS ) + +#endif +/* PRIVATE_B */ +#if defined WL4908_EAP + +#define RDD_US_INGRESS_HANDLER_BUFFER_SIZE 32 +typedef struct +{ + RDD_IH_BUFFER_DTS entry[ RDD_US_INGRESS_HANDLER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_HANDLER_BUFFER_DTS; + +#define RDD_US_INGRESS_HANDLER_BUFFER_PTR() ( RDD_US_INGRESS_HANDLER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_HANDLER_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_PTR() ( RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_US_CPU_REASON_TO_METER_TABLE_SIZE 64 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_US_CPU_REASON_TO_METER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_REASON_TO_METER_TABLE_DTS; + +#define RDD_US_CPU_REASON_TO_METER_TABLE_PTR() ( RDD_US_CPU_REASON_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_REASON_TO_METER_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_MAIN_PROFILING_BUFFER_RUNNER_DTS; + +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_PTR() ( RDD_US_MAIN_PROFILING_BUFFER_RUNNER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_LOOKUP_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE ][ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_QUEUE_PROFILE_TABLE_SIZE 8 +typedef struct +{ + RDD_QUEUE_PROFILE_DTS entry[ RDD_US_QUEUE_PROFILE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_QUEUE_PROFILE_TABLE_DTS; + +#define RDD_US_QUEUE_PROFILE_TABLE_PTR() ( RDD_US_QUEUE_PROFILE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_QUEUE_PROFILE_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_WAN_CHANNELS_8_39_TABLE_SIZE 32 +typedef struct +{ + RDD_WAN_CHANNEL_8_39_DESCRIPTOR_DTS entry[ RDD_WAN_CHANNELS_8_39_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_CHANNELS_8_39_TABLE_DTS; + +#define RDD_WAN_CHANNELS_8_39_TABLE_PTR() ( RDD_WAN_CHANNELS_8_39_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_CHANNELS_8_39_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE 3 +typedef struct +{ + RDD_RUNNER_FLOW_HEADER_BUFFER_DTS entry[ RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RUNNER_FLOW_HEADER_BUFFER_DTS; + +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_PTR() ( RDD_US_RUNNER_FLOW_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RUNNER_FLOW_HEADER_BUFFER_ADDRESS ) + +#endif +#define RDD_US_POLICER_TABLE_PTR() ( RDD_US_POLICER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_POLICER_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE 2 +typedef struct +{ + RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_DESCRIPTOR_DTS entry[ RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_DTS; + +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_PTR() ( RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_WAN_FLOW_TABLE_SIZE 256 +typedef struct +{ + RDD_US_WAN_FLOW_ENTRY_DTS entry[ RDD_US_WAN_FLOW_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_WAN_FLOW_TABLE_DTS; + +#define RDD_US_WAN_FLOW_TABLE_PTR() ( RDD_US_WAN_FLOW_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_WAN_FLOW_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_CPU_TX_BBH_DESCRIPTORS_ENTRY_DTS entry[ RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_BBH_DESCRIPTORS_DTS; + +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_PTR() ( RDD_US_CPU_TX_BBH_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_BBH_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 16 +typedef struct +{ + RDD_FORWARDING_MATRIX_ENTRY_DTS entry[ RDD_US_FORWARDING_MATRIX_TABLE_SIZE ][ RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FORWARDING_MATRIX_TABLE_DTS; + +#define RDD_US_FORWARDING_MATRIX_TABLE_PTR() ( RDD_US_FORWARDING_MATRIX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FORWARDING_MATRIX_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +typedef struct +{ + RDD_TIMER_SCHEDULER_PRIMITIVE_ENTRY_DTS entry[ RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS; + +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_PTR() ( RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 8 +typedef struct +{ + RDD_US_QUEUE_ENTRY_DTS entry[ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE ][ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_DTS; + +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_PTR() ( RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_TRAFFIC_CLASS_TO_QUEUE_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS; + +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_PTR() ( RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS ) + +#endif +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_PTR() ( RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_US_RATE_LIMITER_TABLE_SIZE 16 +typedef struct +{ + RDD_RATE_LIMITER_ENTRY_DTS entry[ RDD_US_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RATE_LIMITER_TABLE_DTS; + +#define RDD_US_RATE_LIMITER_TABLE_PTR() ( RDD_US_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#define RDD_US_CPU_RX_METER_TABLE_PTR() ( RDD_US_CPU_RX_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_METER_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONNECTION_CONTEXT_BUFFER_ENTRY_DTS entry[ RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_CONTEXT_BUFFER_DTS; + +#define RDD_US_CONNECTION_CONTEXT_BUFFER_PTR() ( RDD_US_CONNECTION_CONTEXT_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CONNECTION_CONTEXT_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +typedef struct +{ + RDD_US_INGRESS_CLASSIFICATION_CONTEXT_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_WAN_CHANNELS_0_7_TABLE_SIZE 8 +typedef struct +{ + RDD_WAN_CHANNEL_0_7_DESCRIPTOR_DTS entry[ RDD_WAN_CHANNELS_0_7_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_CHANNELS_0_7_TABLE_DTS; + +#define RDD_WAN_CHANNELS_0_7_TABLE_PTR() ( RDD_WAN_CHANNELS_0_7_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_CHANNELS_0_7_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_DTS; + +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_PTR() ( RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE 8 +typedef struct +{ + RDD_CONTEXT_CONTINUATION_ENTRY_DTS entry[ RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_DTS; + +#define RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_PTR() ( RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CONNECTION_CONTEXT_REMAINING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +typedef struct +{ + RDD_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ENTRY_DTS entry[ RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS; + +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_PTR() ( RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +typedef struct +{ + RDD_INGRESS_FILTERS_PARAMETER_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE ][ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DHD_RX_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE 40 +typedef struct +{ + RDD_GPON_ABSOLUTE_TX_COUNTER_DTS entry[ RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_DTS; + +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_PTR() ( RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + GPON_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE 5 +typedef struct +{ + RDD_INGRESS_RATE_LIMITER_ENTRY_DTS entry[ RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_RATE_LIMITER_TABLE_DTS; + +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_PTR() ( RDD_US_INGRESS_RATE_LIMITER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_RATE_LIMITER_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_PTR() ( RDD_RUNNER_FWTRACE_MAINB_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + RUNNER_FWTRACE_MAINB_PARAM_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_RX_PICO_INGRESS_QUEUE_DTS; + +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_PTR() ( RDD_US_CPU_RX_PICO_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CAPWAPR0_RX_DESCRIPTORS_SIZE 4 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_CAPWAPR0_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CAPWAPR0_RX_DESCRIPTORS_DTS; + +#define RDD_CAPWAPR0_RX_DESCRIPTORS_PTR() ( RDD_CAPWAPR0_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CAPWAPR0_RX_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_ROUTER_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_ROUTER_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_ROUTER_INGRESS_QUEUE_DTS; + +#define RDD_US_ROUTER_INGRESS_QUEUE_PTR() ( RDD_US_ROUTER_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_ROUTER_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CAPWAPR1_RX_DESCRIPTORS_SIZE 4 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_CAPWAPR1_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CAPWAPR1_RX_DESCRIPTORS_DTS; + +#define RDD_CAPWAPR1_RX_DESCRIPTORS_PTR() ( RDD_CAPWAPR1_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CAPWAPR1_RX_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_RX_FAST_INGRESS_QUEUE_DTS; + +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_PTR() ( RDD_US_CPU_RX_FAST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CAPWAPR2_RX_DESCRIPTORS_SIZE 4 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_CAPWAPR2_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CAPWAPR2_RX_DESCRIPTORS_DTS; + +#define RDD_CAPWAPR2_RX_DESCRIPTORS_PTR() ( RDD_CAPWAPR2_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CAPWAPR2_RX_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_DTS; + +#define RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_PTR() ( RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_FPM_ALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_DEBUG_BUFFER_SIZE 32 +typedef struct +{ + RDD_DEBUG_BUFFER_ENTRY_DTS entry[ RDD_US_DEBUG_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DEBUG_BUFFER_DTS; + +#define RDD_US_DEBUG_BUFFER_PTR() ( RDD_US_DEBUG_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DEBUG_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_FW_MAC_ADDRS_SIZE 16 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_US_FW_MAC_ADDRS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FW_MAC_ADDRS_DTS; + +#define RDD_US_FW_MAC_ADDRS_PTR() ( RDD_US_FW_MAC_ADDRS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FW_MAC_ADDRS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_TX_POST_INGRESS_QUEUE_DTS; + +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_PTR() ( RDD_US_DHD_TX_POST_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DHD_TX_POST_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE 48 +typedef struct +{ + RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_ENTRY_DTS entry[ RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_DTS; + +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_PTR() ( RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 6 +typedef struct +{ + RDD_INGRESS_FILTERS_CONFIGURATION_ENTRY_DTS entry[ RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS; + +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_PTR() ( RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE 3 +typedef struct +{ + RDD_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS entry[ RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS; + +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_PTR() ( RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +typedef struct +{ + RDD_GPE_COMMAND_PRIMITIVE_ENTRY_DTS entry[ RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_DTS; + +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_PTR() ( RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_FAST_MALLOC_RESULT_TABLE_SIZE 2 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_FAST_MALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FAST_MALLOC_RESULT_TABLE_DTS; + +#define RDD_US_FAST_MALLOC_RESULT_TABLE_PTR() ( RDD_US_FAST_MALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_MALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_PICO_MALLOC_RESULT_TABLE_SIZE 2 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_US_PICO_MALLOC_RESULT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PICO_MALLOC_RESULT_TABLE_DTS; + +#define RDD_US_PICO_MALLOC_RESULT_TABLE_PTR() ( RDD_US_PICO_MALLOC_RESULT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_MALLOC_RESULT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE 40 +typedef struct +{ + RDD_GPON_ABSOLUTE_TX_COUNTER_DTS entry[ RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_DTS; + +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_PTR() ( RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +typedef struct +{ + RDD_BYTE_1_DTS entry[ RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS; + +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_PTR() ( RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS ) + +#endif +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOB_PARAM_DTS; + +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_PTR() ( RDD_RUNNER_FWTRACE_PICOB_PARAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + RUNNER_FWTRACE_PICOB_PARAM_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_FLOW_RING_DROP_COUNTER_DTS; + +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_PTR() ( RDD_US_DHD_FLOW_RING_DROP_COUNTER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_DHD_FLOW_RING_DROP_COUNTER_ADDRESS ) + +#endif +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR() ( RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS; + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_PTR() ( RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE 32 +typedef struct +{ + RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DATA_POINTER_DUMMY_TARGET_SIZE 2 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DATA_POINTER_DUMMY_TARGET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DATA_POINTER_DUMMY_TARGET_DTS; + +#define RDD_DATA_POINTER_DUMMY_TARGET_PTR() ( RDD_DATA_POINTER_DUMMY_TARGET_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DATA_POINTER_DUMMY_TARGET_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS; + +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_PTR() ( RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_WAN_TX_SCRATCH_SIZE 24 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_WAN_TX_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SCRATCH_DTS; + +#define RDD_WAN_TX_SCRATCH_PTR() ( RDD_WAN_TX_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_TX_SCRATCH_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE 3 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 6 +typedef struct +{ + RDD_CPU_REASON_TO_METER_ENTRY_DTS entry[ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE ][ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_DTS; + +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_PTR() ( RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE 9 +typedef struct +{ + RDD_BROADCOM_SWITCH_PORT_MAPPING_DTS entry[ RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_DTS; + +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_PTR() ( RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE 14 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_DTS; + +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_PTR() ( RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + CPU_TX_DHD_LAYER2_HEADER_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_ENTRY_DTS entry[ RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS; + +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR() ( RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +typedef struct +{ + RDD_PARALLEL_PROCESSING_TASK_REORDER_ENTRY_DTS entry[ RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS; + +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_PTR() ( RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS; + +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_PTR() ( RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS ) + +#endif +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_PTR() ( RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_ETH2_RX_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_ETH2_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH2_RX_DESCRIPTORS_DTS; + +#define RDD_ETH2_RX_DESCRIPTORS_PTR() ( RDD_ETH2_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETH2_RX_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_ETH1_RX_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_ETH1_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH1_RX_DESCRIPTORS_DTS; + +#define RDD_ETH1_RX_DESCRIPTORS_PTR() ( RDD_ETH1_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETH1_RX_DESCRIPTORS_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_ETH0_RX_DESCRIPTORS_SIZE 32 +typedef struct +{ + RDD_ETH_RX_DESCRIPTORS_DTS entry[ RDD_ETH0_RX_DESCRIPTORS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETH0_RX_DESCRIPTORS_DTS; + +#define RDD_ETH0_RX_DESCRIPTORS_PTR() ( RDD_ETH0_RX_DESCRIPTORS_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETH0_RX_DESCRIPTORS_ADDRESS ) + +#endif +/* COMMON_A */ +#if defined WL4908_EAP + +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE 256 +typedef struct +{ + RDD_SIXTEEN_BYTES_DTS entry[ RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_DTS; + +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_PTR() ( RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DDR_CACHE_FIFO_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_PTR() ( RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + FC_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_PTR() ( RDD_CPU_RX_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + CPU_RX_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_DTS; + +#define RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR() ( RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_DTS; + +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_PTR() ( RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_BASE_PTR() ( RDD_RUNNER_FWTRACE_MAINA_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_MAINA_BASE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOA_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_PICOA_BASE_PTR() ( RDD_RUNNER_FWTRACE_PICOA_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_PICOA_BASE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_DHD_STATION_ENTRY_DTS entry[ RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_STATION_TABLE_DTS; + +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_PTR() ( RDD_WLAN_MCAST_DHD_STATION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_DHD_STATION_TABLE_ADDRESS ) + +#endif +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_PTR() ( RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_MAC_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_ENTRY_DTS entry[ RDD_MAC_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_TABLE_CAM_DTS; + +#define RDD_MAC_TABLE_CAM_PTR() ( RDD_MAC_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_TABLE_CAM_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_MAC_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_ENTRY_DTS entry[ RDD_MAC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_TABLE_DTS; + +#define RDD_MAC_TABLE_PTR() ( RDD_MAC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +typedef struct +{ + uint32_t reserved0 :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_bridge_port :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_memory :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ddr_id :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t buffer_number :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETHWAN2_RX_DESCRIPTOR_DTS; + +#define RDD_ETHWAN2_RX_DESCRIPTOR_PAYLOAD_OFFSET_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 13, 9, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PAYLOAD_OFFSET_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 13, 9, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 12, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 12, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 1, 4, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_ERROR_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 1, 4, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_SOURCE_BRIDGE_PORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 3, 6, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_SOURCE_BRIDGE_PORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 3, 6, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_TARGET_MEMORY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 2, 1, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_TARGET_MEMORY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 2, 1, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_DDR_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 1, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_DDR_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 1, v) +#define RDD_ETHWAN2_RX_DESCRIPTOR_BUFFER_NUMBER_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_ETHWAN2_RX_DESCRIPTOR_BUFFER_NUMBER_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#endif +#if defined WL4908_EAP + +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_ETHWAN2_RX_DESCRIPTOR_DTS entry[ RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_ETHWAN2_RX_INGRESS_QUEUE_DTS; + +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_PTR() ( RDD_ETHWAN2_RX_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + ETHWAN2_RX_INGRESS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_TRACE_C_TABLE_SIZE 4 +typedef struct +{ + RDD_TRACE_C_ENTRY_DTS entry[ RDD_TRACE_C_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TRACE_C_TABLE_DTS; + +#define RDD_TRACE_C_TABLE_PTR() ( RDD_TRACE_C_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + TRACE_C_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_DTS; + +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_PTR() ( RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RUNNER_FWTRACE_MAINA_CURR_OFFSET_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE 2 +typedef struct +{ + RDD_FREE_SKB_INDEXES_FIFO_TAIL_DTS entry[ RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_DTS; + +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_PTR() ( RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + FREE_SKB_INDEXES_DDR_FIFO_TAIL_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_MAC_CONTEXT_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_CONTEXT_ENTRY_DTS entry[ RDD_MAC_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_CONTEXT_TABLE_DTS; + +#define RDD_MAC_CONTEXT_TABLE_PTR() ( RDD_MAC_CONTEXT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_CONTEXT_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE 32 +typedef struct +{ + RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_ENTRY_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +typedef struct +{ + RDD_BYTES_2_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_WLAN_MCAST_FWD_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_FWD_ENTRY_DTS entry[ RDD_WLAN_MCAST_FWD_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_FWD_TABLE_DTS; + +#define RDD_WLAN_MCAST_FWD_TABLE_PTR() ( RDD_WLAN_MCAST_FWD_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_FWD_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE 32 +typedef struct +{ + RDD_DDR_QUEUE_DESCRIPTOR_DTS entry[ RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_PTR() ( RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DESCRIPTOR_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE 48 +typedef struct +{ + RDD_WLAN_MCAST_SSID_MAC_ADDRESS_ENTRY_DTS entry[ RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_DTS; + +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_PTR() ( RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE 8 +typedef struct +{ + RDD_DHD_BACKUP_ENTRY_DTS entry[ RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_POST_REQUEST_QUEUE_DTS; + +#define RDD_CPU_TX_POST_REQUEST_QUEUE_PTR() ( RDD_CPU_TX_POST_REQUEST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + CPU_TX_POST_REQUEST_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE 48 +typedef struct +{ + RDD_WLAN_MCAST_SSID_STATS_ENTRY_DTS entry[ RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_SSID_STATS_TABLE_DTS; + +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_PTR() ( RDD_WLAN_MCAST_SSID_STATS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + WLAN_MCAST_SSID_STATS_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE 3 +typedef struct +{ + RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DTS entry[ RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_DTS; + +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_PTR() ( RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_RADIO_INSTANCE_COMMON_A_DATA_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_DTS entry[ RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS; + +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_PTR() ( RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE 128 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_DTS; + +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_PTR() ( RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RATE_SHAPERS_STATUS_DESCRIPTOR_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE 16 +typedef struct +{ + RDD_INTERRUPT_COALESCING_CONFIG_DTS entry[ RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INTERRUPT_COALESCING_CONFIG_TABLE_DTS; + +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_PTR() ( RDD_INTERRUPT_COALESCING_CONFIG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + INTERRUPT_COALESCING_CONFIG_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 4 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_DS_CONNECTION_BUFFER_TABLE_SIZE ][ RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_CONNECTION_BUFFER_TABLE_DTS; + +#define RDD_DS_CONNECTION_BUFFER_TABLE_PTR() ( RDD_DS_CONNECTION_BUFFER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_CONNECTION_BUFFER_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_MAC_CONTEXT_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_CONTEXT_ENTRY_DTS entry[ RDD_MAC_CONTEXT_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_CONTEXT_TABLE_CAM_DTS; + +#define RDD_MAC_CONTEXT_TABLE_CAM_PTR() ( RDD_MAC_CONTEXT_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_CONTEXT_TABLE_CAM_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_DOORBELL_WRITE_VALUES_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_DHD_DOORBELL_WRITE_VALUES_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_DOORBELL_WRITE_VALUES_DTS; + +#define RDD_DHD_DOORBELL_WRITE_VALUES_PTR() ( RDD_DHD_DOORBELL_WRITE_VALUES_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_DOORBELL_WRITE_VALUES_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_BACKUP_INDEX_CACHE_DTS; + +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_PTR() ( RDD_DS_DHD_BACKUP_INDEX_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_DHD_BACKUP_INDEX_CACHE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +typedef struct +{ + RDD_CPU_RX_DESCRIPTOR_DTS entry[ RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_DTS; + +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_PTR() ( RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_RING_DESCRIPTORS_TABLE_SIZE 16 +typedef struct +{ + RDD_RING_DESCRIPTOR_DTS entry[ RDD_RING_DESCRIPTORS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RING_DESCRIPTORS_TABLE_DTS; + +#define RDD_RING_DESCRIPTORS_TABLE_PTR() ( RDD_RING_DESCRIPTORS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + RING_DESCRIPTORS_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE 32 +typedef struct +{ + RDD_DDR_QUEUE_ADDRESS_ENTRY_DTS entry[ RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_DTS; + +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_PTR() ( RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_MAC_EXTENSION_TABLE_SIZE 64 +typedef struct +{ + RDD_MAC_EXTENSION_ENTRY_DTS entry[ RDD_MAC_EXTENSION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_EXTENSION_TABLE_DTS; + +#define RDD_MAC_EXTENSION_TABLE_PTR() ( RDD_MAC_EXTENSION_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_EXTENSION_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE 16 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_DTS; + +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_PTR() ( RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_MAC_EXTENSION_TABLE_CAM_SIZE 32 +typedef struct +{ + RDD_MAC_EXTENSION_ENTRY_DTS entry[ RDD_MAC_EXTENSION_TABLE_CAM_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_EXTENSION_TABLE_CAM_DTS; + +#define RDD_MAC_EXTENSION_TABLE_CAM_PTR() ( RDD_MAC_EXTENSION_TABLE_CAM_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAC_EXTENSION_TABLE_CAM_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE 3 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TX_CPL_DHD_DMA_SCRATCH_DTS; + +#define RDD_TX_CPL_DHD_DMA_SCRATCH_PTR() ( RDD_TX_CPL_DHD_DMA_SCRATCH_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + TX_CPL_DHD_DMA_SCRATCH_ADDRESS ) + +#endif +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_PTR() ( RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS ) + +#if defined WL4908_EAP + +#define RDD_MAIN_A_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_MAIN_A_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAIN_A_DEBUG_TRACE_DTS; + +#define RDD_MAIN_A_DEBUG_TRACE_PTR() ( RDD_MAIN_A_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + MAIN_A_DEBUG_TRACE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_PICO_A_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_PICO_A_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_A_DEBUG_TRACE_DTS; + +#define RDD_PICO_A_DEBUG_TRACE_PTR() ( RDD_PICO_A_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + PICO_A_DEBUG_TRACE_ADDRESS ) + +#endif +/* COMMON_B */ +#if defined WL4908_EAP + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LONG_LOOKUP_ENTRY_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_RUNNER_B_SCRATCHPAD_DTS; + +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_PTR() ( RDD_CPU_RX_RUNNER_B_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + CPU_RX_RUNNER_B_SCRATCHPAD_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +typedef struct +{ + RDD_BYTES_2_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 32 +typedef struct +{ + RDD_BBH_RX_DESCRIPTOR_DTS entry[ RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE 64 +typedef struct +{ + RDD_WAN_TX_SERVICE_QUEUE_DESCRIPTOR_DTS entry[ RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_SERVICE_QUEUES_TABLE_DTS; + +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_PTR() ( RDD_WAN_TX_SERVICE_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_TX_SERVICE_QUEUES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 4 +typedef struct +{ + RDD_CONNECTION_ENTRY_DTS entry[ RDD_US_CONNECTION_BUFFER_TABLE_SIZE ][ RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CONNECTION_BUFFER_TABLE_DTS; + +#define RDD_US_CONNECTION_BUFFER_TABLE_PTR() ( RDD_US_CONNECTION_BUFFER_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_CONNECTION_BUFFER_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE 16 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPV6_HOST_ADDRESS_CRC_TABLE_DTS; + +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_PTR() ( RDD_IPV6_HOST_ADDRESS_CRC_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + IPV6_HOST_ADDRESS_CRC_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_BACKUP_INFO_CACHE_ENTRY_DTS entry[ RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_INFO_CACHE_TABLE_DTS; + +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_PTR() ( RDD_DHD_BACKUP_INFO_CACHE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_BACKUP_INFO_CACHE_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_WAN_TX_QUEUES_TABLE_SIZE 256 +typedef struct +{ + RDD_WAN_TX_QUEUE_DESCRIPTOR_DTS entry[ RDD_WAN_TX_QUEUES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_TX_QUEUES_TABLE_DTS; + +#define RDD_WAN_TX_QUEUES_TABLE_PTR() ( RDD_WAN_TX_QUEUES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_TX_QUEUES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_BASE_PTR() ( RDD_RUNNER_FWTRACE_MAINB_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_MAINB_BASE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +typedef struct +{ + RDD_CPU_RX_DESCRIPTOR_DTS entry[ RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RING_PACKET_DESCRIPTORS_CACHE_DTS; + +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_PTR() ( RDD_US_RING_PACKET_DESCRIPTORS_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_CTX_ENTRY_DTS entry[ RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_DTS; + +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_PTR() ( RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_FLOW_RING_CACHE_CTX_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE 4 +typedef struct +{ + RDD_FC_FLOW_IP_ADDRESSES_ENTRY_DTS entry[ RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_FC_FLOW_IP_ADDRESSES_TABLE_DTS; + +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_PTR() ( RDD_FC_FLOW_IP_ADDRESSES_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + FC_FLOW_IP_ADDRESSES_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE 2 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_DTS; + +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_PTR() ( RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_MAINB_CURR_OFFSET_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_RATE_CONTROLLERS_TABLE_SIZE 128 +typedef struct +{ + RDD_US_RATE_CONTROLLER_DESCRIPTOR_DTS entry[ RDD_US_RATE_CONTROLLERS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RATE_CONTROLLERS_TABLE_DTS; + +#define RDD_US_RATE_CONTROLLERS_TABLE_PTR() ( RDD_US_RATE_CONTROLLERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_RATE_CONTROLLERS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE 8 +typedef struct +{ + RDD_RUNNER_SCRATCHPAD_DTS entry[ RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_DTS; + +#define RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR() ( RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE 3 +typedef struct +{ + RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_DTS entry[ RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_DTS; + +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_PTR() ( RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_RADIO_INSTANCE_COMMON_B_DATA_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 40 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_IPV4_HOST_ADDRESS_TABLE_SIZE 8 +typedef struct +{ + RDD_FOUR_BYTES_DTS entry[ RDD_IPV4_HOST_ADDRESS_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPV4_HOST_ADDRESS_TABLE_DTS; + +#define RDD_IPV4_HOST_ADDRESS_TABLE_PTR() ( RDD_IPV4_HOST_ADDRESS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + IPV4_HOST_ADDRESS_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 40 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS; + +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_PTR() ( RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +typedef struct +{ + RDD_DHD_FLOW_RING_CACHE_LKP_ENTRY_DTS entry[ RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS; + +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_PTR() ( RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_MAIN_B_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_MAIN_B_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAIN_B_DEBUG_TRACE_DTS; + +#define RDD_MAIN_B_DEBUG_TRACE_PTR() ( RDD_MAIN_B_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + MAIN_B_DEBUG_TRACE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_PICO_B_DEBUG_TRACE_SIZE 512 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_PICO_B_DEBUG_TRACE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PICO_B_DEBUG_TRACE_DTS; + +#define RDD_PICO_B_DEBUG_TRACE_PTR() ( RDD_PICO_B_DEBUG_TRACE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + PICO_B_DEBUG_TRACE_ADDRESS - 0x8000 ) + +#endif +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_PTR() ( RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS - 0x8000 ) + +#if defined WL4908_EAP + +#define RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE 128 +typedef struct +{ + RDD_EIGHT_BYTES_DTS entry[ RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RUNNER_FWTRACE_PICOB_BASE_DTS; + +#define RDD_RUNNER_FWTRACE_PICOB_BASE_PTR() ( RDD_RUNNER_FWTRACE_PICOB_BASE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + RUNNER_FWTRACE_PICOB_BASE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE 32 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_DHD_BACKUP_INDEX_CACHE_DTS; + +#define RDD_US_DHD_BACKUP_INDEX_CACHE_PTR() ( RDD_US_DHD_BACKUP_INDEX_CACHE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_DHD_BACKUP_INDEX_CACHE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_DOORBELL_COUNTERS_SIZE 48 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_DHD_DOORBELL_COUNTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_DOORBELL_COUNTERS_DTS; + +#define RDD_DHD_DOORBELL_COUNTERS_PTR() ( RDD_DHD_DOORBELL_COUNTERS_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DHD_DOORBELL_COUNTERS_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +typedef struct +{ + RDD_INGRESS_QUEUE_ENTRY_DTS entry[ RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WAN_ENQUEUE_INGRESS_QUEUE_DTS; + +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_PTR() ( RDD_WAN_ENQUEUE_INGRESS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + WAN_ENQUEUE_INGRESS_QUEUE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE 4 +typedef struct +{ + RDD_ONE_BYTE_DTS entry[ RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_DTS; + +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_PTR() ( RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_ADDRESS - 0x8000 ) + +#endif +/* DDR */ +#if defined WL4908_EAP + +#define RDD_BPM_PACKET_BUFFERS_SIZE 7680 +typedef struct +{ + RDD_BPM_PACKET_BUFFER_DTS entry[ RDD_BPM_PACKET_BUFFERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BPM_PACKET_BUFFERS_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_CONTEXT_CONTINUATION_TABLE_SIZE 65536 +typedef struct +{ + RDD_CONTEXT_CONTINUATION_ENTRY_DTS entry[ RDD_CONTEXT_CONTINUATION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONTEXT_CONTINUATION_TABLE_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE 8 +typedef struct +{ + RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_DTS entry[ RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_R2D_WR_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_R2D_WR_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_R2D_WR_ARR_DDR_BUFFER_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_D2R_RD_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_D2R_RD_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_D2R_RD_ARR_DDR_BUFFER_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_R2D_RD_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_R2D_RD_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_R2D_RD_ARR_DDR_BUFFER_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_D2R_WR_ARR_DDR_BUFFER_SIZE 128 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_D2R_WR_ARR_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_D2R_WR_ARR_DDR_BUFFER_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE 524288 +typedef struct +{ + RDD_TWO_BYTES_DTS entry[ RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_BACKUP_QUEUES_BUFFER_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE 64 +typedef struct +{ + RDD_WLAN_MCAST_DHD_LIST_ENTRY_ARRAY_DTS entry[ RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_WLAN_MCAST_DHD_LIST_TABLE_DTS; + +#endif +/* PSRAM */ +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_BBH_TX_DESCRIPTOR_DTS bbh_tx_descriptor; + RDD_PACKET_DESCRIPTOR_DTS packet_descriptor; + RDD_SERVICE_QUEUE_DESCRIPTOR_DTS service_queue_descriptor; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_PACKET_DESCRIPTOR_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE 2048 +typedef struct +{ + RDD_DS_PACKET_DESCRIPTOR_UNION_DTS entry[ RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_DTS; + +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_PTR() ( RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE 2048 +typedef struct +{ + RDD_DS_PACKET_DESCRIPTOR_UNION_DTS entry[ RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_DTS; + +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_PTR() ( RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE 2048 +typedef struct +{ + RDD_DS_PACKET_DESCRIPTOR_UNION_DTS entry[ RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_DTS; + +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_PTR() ( RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE 2048 +typedef struct +{ + RDD_DS_PACKET_DESCRIPTOR_UNION_DTS entry[ RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_DTS; + +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_PTR() ( RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS ) + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_CPU_TX_DESCRIPTOR_DS_FAST_DTS cpu_tx_descriptor_ds_fast; + RDD_CPU_TX_MESSAGE_DESCRIPTOR_DTS cpu_tx_message_descriptor; + RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_DTS cpu_tx_descriptor_ds_pico_wifi; + RDD_CPU_TX_DESCRIPTOR_ABS_DTS cpu_tx_descriptor_abs; + RDD_CPU_TX_DESCRIPTOR_CORE_DTS cpu_tx_descriptor_core; + RDD_CPU_TX_DESCRIPTOR_US_FAST_DTS cpu_tx_descriptor_us_fast; + RDD_CPU_TX_DESCRIPTOR_DS_PICO_DTS cpu_tx_descriptor_ds_pico; + RDD_CPU_TX_DESCRIPTOR_BPM_DTS cpu_tx_descriptor_bpm; + RDD_CPU_TX_DESCRIPTOR_DTS cpu_tx_descriptor; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_PICO_DESCRIPTOR_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_GSO_PICO_QUEUE_SIZE 64 +typedef struct +{ + RDD_GSO_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_GSO_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_PICO_QUEUE_DTS; + +#define RDD_GSO_PICO_QUEUE_PTR() ( RDD_GSO_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_PICO_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_GSO_PICO_QUEUE_SIZE 64 +typedef struct +{ + RDD_GSO_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_GSO_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_PICO_QUEUE_DTS; + +#define RDD_GSO_PICO_QUEUE_PTR() ( RDD_GSO_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_PICO_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_GSO_PICO_QUEUE_SIZE 64 +typedef struct +{ + RDD_GSO_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_GSO_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_PICO_QUEUE_DTS; + +#define RDD_GSO_PICO_QUEUE_PTR() ( RDD_GSO_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_PICO_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_GSO_PICO_QUEUE_SIZE 64 +typedef struct +{ + RDD_GSO_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_GSO_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_GSO_PICO_QUEUE_DTS; + +#define RDD_GSO_PICO_QUEUE_PTR() ( RDD_GSO_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + GSO_PICO_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DTS dhd_tx_post_descriptor_cwi32; + RDD_DHD_TX_POST_DESCRIPTOR_DTS dhd_tx_post_descriptor; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_DDR_BUFFER_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE 8 +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 16 +typedef struct +{ + RDD_DHD_TX_POST_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_TX_POST_DDR_BUFFER_SIZE ][ RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE 8 +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 16 +typedef struct +{ + RDD_DHD_TX_POST_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_TX_POST_DDR_BUFFER_SIZE ][ RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_DDR_BUFFER_DTS; + +#endif +#if defined WL4908 + +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE 8 +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 16 +typedef struct +{ + RDD_DHD_TX_POST_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_TX_POST_DDR_BUFFER_SIZE ][ RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_DDR_BUFFER_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE 8 +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 16 +typedef struct +{ + RDD_DHD_TX_POST_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_TX_POST_DDR_BUFFER_SIZE ][ RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_DTS dhd_tx_complete_descriptor_cwi32; + RDD_DHD_TX_COMPLETE_DESCRIPTOR_DTS dhd_tx_complete_descriptor; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_DDR_BUFFER_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE 16 +typedef struct +{ + RDD_DHD_TX_COMPLETE_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE 16 +typedef struct +{ + RDD_DHD_TX_COMPLETE_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_DDR_BUFFER_DTS; + +#endif +#if defined WL4908 + +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE 16 +typedef struct +{ + RDD_DHD_TX_COMPLETE_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_DDR_BUFFER_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE 16 +typedef struct +{ + RDD_DHD_TX_COMPLETE_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_CPU_TX_DESCRIPTOR_DS_FAST_DTS cpu_tx_descriptor_ds_fast; + RDD_CPU_TX_MESSAGE_DESCRIPTOR_DTS cpu_tx_message_descriptor; + RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_DTS cpu_tx_descriptor_ds_pico_wifi; + RDD_CPU_TX_DESCRIPTOR_ABS_DTS cpu_tx_descriptor_abs; + RDD_CPU_TX_UPDATE_PD_POOL_QUOTA_MESSAGE_DESCRIPTOR_DTS cpu_tx_update_pd_pool_quota_message_descriptor; + RDD_CPU_TX_DESCRIPTOR_CORE_DTS cpu_tx_descriptor_core; + RDD_CPU_TX_DESCRIPTOR_US_FAST_DTS cpu_tx_descriptor_us_fast; + RDD_CPU_TX_DHD_DESCRIPTOR_DTS cpu_tx_dhd_descriptor; + RDD_CPU_TX_DESCRIPTOR_DS_PICO_DTS cpu_tx_descriptor_ds_pico; + RDD_CPU_TX_DESCRIPTOR_BPM_DTS cpu_tx_descriptor_bpm; + RDD_CPU_TX_DESCRIPTOR_DTS cpu_tx_descriptor; + RDD_CPU_TX_DHD_MESSAGE_DESCRIPTOR_DTS cpu_tx_dhd_message_descriptor; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_PICO_DESCRIPTOR_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_CPU_TX_PICO_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_CPU_TX_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_PICO_QUEUE_DTS; + +#define RDD_CPU_TX_PICO_QUEUE_PTR() ( RDD_CPU_TX_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_PICO_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_CPU_TX_PICO_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_US_CPU_TX_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_PICO_QUEUE_DTS; + +#define RDD_US_CPU_TX_PICO_QUEUE_PTR() ( RDD_US_CPU_TX_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_PICO_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_TX_PICO_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_CPU_TX_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_PICO_QUEUE_DTS; + +#define RDD_CPU_TX_PICO_QUEUE_PTR() ( RDD_CPU_TX_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_PICO_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_CPU_TX_PICO_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_US_CPU_TX_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_PICO_QUEUE_DTS; + +#define RDD_US_CPU_TX_PICO_QUEUE_PTR() ( RDD_US_CPU_TX_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_PICO_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_TX_PICO_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_CPU_TX_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_PICO_QUEUE_DTS; + +#define RDD_CPU_TX_PICO_QUEUE_PTR() ( RDD_CPU_TX_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_PICO_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_CPU_TX_PICO_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_US_CPU_TX_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_PICO_QUEUE_DTS; + +#define RDD_US_CPU_TX_PICO_QUEUE_PTR() ( RDD_US_CPU_TX_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_PICO_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_TX_PICO_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_CPU_TX_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_PICO_QUEUE_DTS; + +#define RDD_CPU_TX_PICO_QUEUE_PTR() ( RDD_CPU_TX_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_PICO_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_CPU_TX_PICO_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_PICO_DESCRIPTOR_UNION_DTS entry[ RDD_US_CPU_TX_PICO_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_PICO_QUEUE_DTS; + +#define RDD_US_CPU_TX_PICO_QUEUE_PTR() ( RDD_US_CPU_TX_PICO_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_PICO_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_DTS ingress_classification_short_lookup_entry; + RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_DTS ds_ingress_classification_ih_lookup_entry; + RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_DTS ds_ingress_classification_optimized_lookup_entry; + RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_DTS us_ingress_classification_optimized_lookup_entry; + RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_DTS us_ingress_classification_ih_lookup_entry; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_CLASSIFICATION_LOOKUP_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_UNION_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_UNION_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_UNION_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_UNION_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_UNION_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_UNION_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_UNION_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_UNION_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_DHD_RX_COMPLETE_DESCRIPTOR_DTS dhd_rx_complete_descriptor; + RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DTS dhd_rx_complete_descriptor_cwi32; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_DDR_BUFFER_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE 1024 +typedef struct +{ + RDD_DHD_RX_COMPLETE_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE 1024 +typedef struct +{ + RDD_DHD_RX_COMPLETE_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_DDR_BUFFER_DTS; + +#endif +#if defined WL4908 + +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE 1024 +typedef struct +{ + RDD_DHD_RX_COMPLETE_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_DDR_BUFFER_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE 1024 +typedef struct +{ + RDD_DHD_RX_COMPLETE_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_DDR_BUFFER_DTS; + +#endif +#if defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_NAT_CACHE_LKP_ENTRY_DTS nat_cache_lkp_entry; + RDD_NAT_CACHE_L2_LKP_ENTRY_DTS nat_cache_l2_lkp_entry; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NAT_CACHE_LKUP_EXTENSION_ENTRY_UNION_DTS; + +#endif +#if defined WL4908 + +#define RDD_NAT_CACHE_EXTENSION_TABLE_SIZE 7 +typedef struct +{ + RDD_NAT_CACHE_LKUP_EXTENSION_ENTRY_UNION_DTS entry[ RDD_NAT_CACHE_EXTENSION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NAT_CACHE_EXTENSION_TABLE_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_NAT_CACHE_EXTENSION_TABLE_SIZE 7 +typedef struct +{ + RDD_NAT_CACHE_LKUP_EXTENSION_ENTRY_UNION_DTS entry[ RDD_NAT_CACHE_EXTENSION_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NAT_CACHE_EXTENSION_TABLE_DTS; + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_INGRESS_CLASSIFICATION_SHORT_LOOKUP_ENTRY_DTS ingress_classification_short_lookup_entry; + RDD_DS_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_DTS ds_ingress_classification_ih_lookup_entry; + RDD_DS_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_DTS ds_ingress_classification_optimized_lookup_entry; + RDD_US_INGRESS_CLASSIFICATION_OPTIMIZED_LOOKUP_ENTRY_DTS us_ingress_classification_optimized_lookup_entry; + RDD_US_INGRESS_CLASSIFICATION_IH_LOOKUP_ENTRY_DTS us_ingress_classification_ih_lookup_entry; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_INGRESS_CLASSIFICATION_LOOKUP_CAM_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_CAM_UNION_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_CAM_UNION_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_CAM_UNION_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63148 + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_CAM_UNION_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_CAM_UNION_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908 + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_CAM_UNION_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_CAM_UNION_DTS entry[ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS; + +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_PTR() ( RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +typedef struct +{ + RDD_INGRESS_CLASSIFICATION_LOOKUP_CAM_UNION_DTS entry[ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS; + +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_PTR() ( RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS - 0x8000 ) + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_DHD_RX_COMPLETE_DESCRIPTOR_DTS dhd_rx_complete_descriptor; + RDD_DHD_RX_POST_DESCRIPTOR_CWI32_DTS dhd_rx_post_descriptor_cwi32; + RDD_DHD_RX_POST_DESCRIPTOR_DTS dhd_rx_post_descriptor; + RDD_DHD_RX_COMPLETE_DESCRIPTOR_CWI32_DTS dhd_rx_complete_descriptor_cwi32; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_FLOW_RING_BUFFER_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_PTR() ( RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DHD_RX_COMPLETE_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_PTR() ( RDD_DHD_RX_POST_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DHD_RX_POST_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_PTR() ( RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DHD_RX_COMPLETE_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_PTR() ( RDD_DHD_RX_POST_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DHD_RX_POST_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_PTR() ( RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DHD_RX_COMPLETE_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_PTR() ( RDD_DHD_RX_POST_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DHD_RX_POST_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_PTR() ( RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DHD_RX_COMPLETE_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_PTR() ( RDD_DHD_RX_POST_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + DHD_RX_POST_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_DHD_TX_COMPLETE_DESCRIPTOR_CWI32_DTS dhd_tx_complete_descriptor_cwi32; + RDD_DHD_TX_COMPLETE_DESCRIPTOR_DTS dhd_tx_complete_descriptor; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_PTR() ( RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_TX_COMPLETE_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_PTR() ( RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_TX_COMPLETE_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_PTR() ( RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_TX_COMPLETE_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +typedef struct +{ + RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_DTS; + +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_PTR() ( RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DHD_TX_COMPLETE_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_BBH_TX_DESCRIPTOR_DTS bbh_tx_descriptor; + RDD_PACKET_DESCRIPTOR_DTS packet_descriptor; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_PACKET_DESCRIPTOR_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE 3072 +typedef struct +{ + RDD_US_PACKET_DESCRIPTOR_UNION_DTS entry[ RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DTS; + +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_PTR() ( RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE 3072 +typedef struct +{ + RDD_US_PACKET_DESCRIPTOR_UNION_DTS entry[ RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DTS; + +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_PTR() ( RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE 3072 +typedef struct +{ + RDD_US_PACKET_DESCRIPTOR_UNION_DTS entry[ RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DTS; + +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_PTR() ( RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE 3072 +typedef struct +{ + RDD_US_PACKET_DESCRIPTOR_UNION_DTS entry[ RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DTS; + +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_PTR() ( RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS ) + +#endif +#if defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_FC_NATC_L2_UCAST_FLOW_CONTEXT_ENTRY_DTS fc_natc_l2_ucast_flow_context_entry; + RDD_FC_UCAST_FLOW_CONTEXT_WFD_NIC_ENTRY_DTS fc_ucast_flow_context_wfd_nic_entry; + RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_DTS fc_ucast_flow_context_eth_xtm_entry; + RDD_FC_NATC_UCAST_FLOW_CONTEXT_ENTRY_DTS fc_natc_ucast_flow_context_entry; + RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_DTS fc_ucast_flow_context_rnr_dhd_entry; + RDD_FC_UCAST_FLOW_CONTEXT_WFD_DHD_ENTRY_DTS fc_ucast_flow_context_wfd_dhd_entry; + RDD_FC_NATC_MCAST_FLOW_CONTEXT_ENTRY_DTS fc_natc_mcast_flow_context_entry; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NATC_CONTEXT_ENTRY_UNION_DTS; + +#endif +#if defined WL4908 + +#define RDD_NATC_CONTEXT_TABLE_SIZE 65536 +typedef struct +{ + RDD_NATC_CONTEXT_ENTRY_UNION_DTS entry[ RDD_NATC_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NATC_CONTEXT_TABLE_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_NATC_CONTEXT_TABLE_SIZE 65536 +typedef struct +{ + RDD_NATC_CONTEXT_ENTRY_UNION_DTS entry[ RDD_NATC_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NATC_CONTEXT_TABLE_DTS; + +#endif +#if defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_NAT_CACHE_LKP_ENTRY_DTS nat_cache_lkp_entry; + RDD_NAT_CACHE_L2_LKP_ENTRY_DTS nat_cache_l2_lkp_entry; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NAT_CACHE_LKUP_ENTRY_UNION_DTS; + +#endif +#if defined WL4908 + +#define RDD_NAT_CACHE_TABLE_SIZE 65536 +typedef struct +{ + RDD_NAT_CACHE_LKUP_ENTRY_UNION_DTS entry[ RDD_NAT_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NAT_CACHE_TABLE_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_NAT_CACHE_TABLE_SIZE 65536 +typedef struct +{ + RDD_NAT_CACHE_LKUP_ENTRY_UNION_DTS entry[ RDD_NAT_CACHE_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NAT_CACHE_TABLE_DTS; + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_CPU_RX_DESCRIPTOR_IPSEC_DTS cpu_rx_descriptor_ipsec; + RDD_CPU_TX_DESCRIPTOR_IPSEC_DTS cpu_tx_descriptor_ipsec; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_DESCRIPTOR_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_IPSEC_DS_QUEUE_SIZE 64 +typedef struct +{ + RDD_IPSEC_DS_DESCRIPTOR_UNION_DTS entry[ RDD_IPSEC_DS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_QUEUE_DTS; + +#define RDD_IPSEC_DS_QUEUE_PTR() ( RDD_IPSEC_DS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_IPSEC_DS_QUEUE_SIZE 64 +typedef struct +{ + RDD_IPSEC_DS_DESCRIPTOR_UNION_DTS entry[ RDD_IPSEC_DS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_QUEUE_DTS; + +#define RDD_IPSEC_DS_QUEUE_PTR() ( RDD_IPSEC_DS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_IPSEC_DS_QUEUE_SIZE 64 +typedef struct +{ + RDD_IPSEC_DS_DESCRIPTOR_UNION_DTS entry[ RDD_IPSEC_DS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_QUEUE_DTS; + +#define RDD_IPSEC_DS_QUEUE_PTR() ( RDD_IPSEC_DS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_IPSEC_DS_QUEUE_SIZE 64 +typedef struct +{ + RDD_IPSEC_DS_DESCRIPTOR_UNION_DTS entry[ RDD_IPSEC_DS_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_IPSEC_DS_QUEUE_DTS; + +#define RDD_IPSEC_DS_QUEUE_PTR() ( RDD_IPSEC_DS_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + IPSEC_DS_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_CPU_TX_DESCRIPTOR_DS_FAST_DTS cpu_tx_descriptor_ds_fast; + RDD_CPU_TX_MESSAGE_DESCRIPTOR_DTS cpu_tx_message_descriptor; + RDD_CPU_TX_DESCRIPTOR_DS_PICO_WIFI_DTS cpu_tx_descriptor_ds_pico_wifi; + RDD_CPU_TX_DESCRIPTOR_ABS_DTS cpu_tx_descriptor_abs; + RDD_CPU_TX_DESCRIPTOR_CORE_DTS cpu_tx_descriptor_core; + RDD_CPU_TX_DESCRIPTOR_US_FAST_DTS cpu_tx_descriptor_us_fast; + RDD_CPU_TX_DESCRIPTOR_DS_PICO_DTS cpu_tx_descriptor_ds_pico; + RDD_CPU_TX_DESCRIPTOR_BPM_DTS cpu_tx_descriptor_bpm; + RDD_CPU_TX_DESCRIPTOR_DTS cpu_tx_descriptor; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_FAST_DESCRIPTOR_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_CPU_TX_FAST_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_FAST_DESCRIPTOR_UNION_DTS entry[ RDD_CPU_TX_FAST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_FAST_QUEUE_DTS; + +#define RDD_CPU_TX_FAST_QUEUE_PTR() ( RDD_CPU_TX_FAST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_FAST_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 + +#define RDD_US_CPU_TX_FAST_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_FAST_DESCRIPTOR_UNION_DTS entry[ RDD_US_CPU_TX_FAST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_FAST_QUEUE_DTS; + +#define RDD_US_CPU_TX_FAST_QUEUE_PTR() ( RDD_US_CPU_TX_FAST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_FAST_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_CPU_TX_FAST_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_FAST_DESCRIPTOR_UNION_DTS entry[ RDD_CPU_TX_FAST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_FAST_QUEUE_DTS; + +#define RDD_CPU_TX_FAST_QUEUE_PTR() ( RDD_CPU_TX_FAST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_FAST_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_US_CPU_TX_FAST_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_FAST_DESCRIPTOR_UNION_DTS entry[ RDD_US_CPU_TX_FAST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_FAST_QUEUE_DTS; + +#define RDD_US_CPU_TX_FAST_QUEUE_PTR() ( RDD_US_CPU_TX_FAST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_FAST_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_CPU_TX_FAST_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_FAST_DESCRIPTOR_UNION_DTS entry[ RDD_CPU_TX_FAST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_FAST_QUEUE_DTS; + +#define RDD_CPU_TX_FAST_QUEUE_PTR() ( RDD_CPU_TX_FAST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_FAST_QUEUE_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_US_CPU_TX_FAST_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_FAST_DESCRIPTOR_UNION_DTS entry[ RDD_US_CPU_TX_FAST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_FAST_QUEUE_DTS; + +#define RDD_US_CPU_TX_FAST_QUEUE_PTR() ( RDD_US_CPU_TX_FAST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_FAST_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_CPU_TX_FAST_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_FAST_DESCRIPTOR_UNION_DTS entry[ RDD_CPU_TX_FAST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_FAST_QUEUE_DTS; + +#define RDD_CPU_TX_FAST_QUEUE_PTR() ( RDD_CPU_TX_FAST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + CPU_TX_FAST_QUEUE_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_US_CPU_TX_FAST_QUEUE_SIZE 16 +typedef struct +{ + RDD_CPU_TX_FAST_DESCRIPTOR_UNION_DTS entry[ RDD_US_CPU_TX_FAST_QUEUE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_US_CPU_TX_FAST_QUEUE_DTS; + +#define RDD_US_CPU_TX_FAST_QUEUE_PTR() ( RDD_US_CPU_TX_FAST_QUEUE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_CPU_TX_FAST_QUEUE_ADDRESS ) + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_DHD_TX_POST_DESCRIPTOR_CWI32_DTS dhd_tx_post_descriptor_cwi32; + RDD_DHD_TX_POST_DESCRIPTOR_DTS dhd_tx_post_descriptor; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_TX_POST_FLOW_RING_BUFFER_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE 4 +typedef struct +{ + RDD_DHD_TX_POST_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_DTS; + +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_PTR() ( RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63148 + +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE 4 +typedef struct +{ + RDD_DHD_TX_POST_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_DTS; + +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_PTR() ( RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908 + +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE 4 +typedef struct +{ + RDD_DHD_TX_POST_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_DTS; + +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_PTR() ( RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined WL4908_EAP + +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE 4 +typedef struct +{ + RDD_DHD_TX_POST_FLOW_RING_BUFFER_UNION_DTS entry[ RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_DTS; + +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_PTR() ( RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS ) + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_DHD_RX_POST_DESCRIPTOR_CWI32_DTS dhd_rx_post_descriptor_cwi32; + RDD_DHD_RX_POST_DESCRIPTOR_DTS dhd_rx_post_descriptor; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_DDR_BUFFER_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_DHD_RX_POST_DDR_BUFFER_SIZE 1024 +typedef struct +{ + RDD_DHD_RX_POST_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_RX_POST_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_DHD_RX_POST_DDR_BUFFER_SIZE 1024 +typedef struct +{ + RDD_DHD_RX_POST_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_RX_POST_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_DDR_BUFFER_DTS; + +#endif +#if defined WL4908 + +#define RDD_DHD_RX_POST_DDR_BUFFER_SIZE 1024 +typedef struct +{ + RDD_DHD_RX_POST_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_RX_POST_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_DDR_BUFFER_DTS; + +#endif +#if defined WL4908_EAP + +#define RDD_DHD_RX_POST_DDR_BUFFER_SIZE 1024 +typedef struct +{ + RDD_DHD_RX_POST_DDR_BUFFER_UNION_DTS entry[ RDD_DHD_RX_POST_DDR_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DHD_RX_POST_DDR_BUFFER_DTS; + +#endif +#if defined DSL_63138 || defined DSL_63148 || defined WL4908 || defined WL4908_EAP + +typedef union +{ + RDD_FC_UCAST_FLOW_CONTEXT_ETH_XTM_ENTRY_DTS fc_ucast_flow_context_eth_xtm_entry; + RDD_FC_UCAST_FLOW_CONTEXT_WFD_NIC_ENTRY_DTS fc_ucast_flow_context_wfd_nic_entry; + RDD_FC_MCAST_FLOW_CONTEXT_ENTRY_DTS fc_mcast_flow_context_entry; + RDD_FC_UCAST_FLOW_CONTEXT_ENTRY_DTS fc_ucast_flow_context_entry; + RDD_FC_UCAST_FLOW_CONTEXT_RNR_DHD_ENTRY_DTS fc_ucast_flow_context_rnr_dhd_entry; + RDD_FC_UCAST_FLOW_CONTEXT_WFD_DHD_ENTRY_DTS fc_ucast_flow_context_wfd_dhd_entry; + RDD_FC_L2_UCAST_FLOW_CONTEXT_ENTRY_DTS fc_l2_ucast_flow_context_entry; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONTEXT_ENTRY_UNION_DTS; + +#endif +#if defined DSL_63138 + +#define RDD_CONTEXT_TABLE_SIZE 16512 +typedef struct +{ + RDD_CONTEXT_ENTRY_UNION_DTS entry[ RDD_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONTEXT_TABLE_DTS; + +#endif +#if defined DSL_63148 + +#define RDD_CONTEXT_TABLE_SIZE 16512 +typedef struct +{ + RDD_CONTEXT_ENTRY_UNION_DTS entry[ RDD_CONTEXT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONTEXT_TABLE_DTS; + +#endif +#if defined WL4908 + +typedef struct +{ + RDD_CONTEXT_ENTRY_UNION_DTS entry; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONTEXT_TABLE_DTS; + +#endif +#if defined WL4908_EAP + +typedef struct +{ + RDD_CONTEXT_ENTRY_UNION_DTS entry; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CONTEXT_TABLE_DTS; + +#endif + +#if defined DSL_63138 +typedef enum +{ + MODE_FIRST = 0, + MODE_DISABLED = 0, + MODE_ENABLED = 1, + MODE_LAST = 1 +} rdd_mode; +typedef enum +{ + SEMAPHORE_IO_FIRST = 272, + SEMAPHORE_IO_ADDRESS_0 = 272, + SEMAPHORE_IO_ADDRESS_1 = 273, + SEMAPHORE_IO_ADDRESS_2 = 274, + SEMAPHORE_IO_ADDRESS_3 = 275, + SEMAPHORE_IO_ADDRESS_4 = 276, + SEMAPHORE_IO_ADDRESS_5 = 277, + SEMAPHORE_IO_ADDRESS_7 = 279, + SEMAPHORE_IO_ADDRESS_8 = 280, + SEMAPHORE_IO_ADDRESS_9 = 281, + SEMAPHORE_IO_ADDRESS_10 = 282, + SEMAPHORE_IO_ADDRESS_11 = 283, + SEMAPHORE_IO_ADDRESS_12 = 284, + SEMAPHORE_IO_ADDRESS_13 = 285, + SEMAPHORE_IO_ADDRESS_14 = 286, + SEMAPHORE_IO_ADDRESS_15 = 287, + SEMAPHORE_IO_LAST = 287 +} rdd_semaphore_io; +typedef enum +{ + HASH_RESULT_FIRST = 0, + HASH_RESULT_SLOT_0 = 0, + HASH_RESULT_SLOT_1 = 1, + HASH_RESULT_SLOT_2 = 2, + HASH_RESULT_SLOT_3 = 3, + HASH_RESULT_SLOT_4 = 4, + HASH_RESULT_SLOT_5 = 5, + HASH_RESULT_LAST = 5 +} rdd_hash_result; +typedef enum +{ + HASH_RESULT_IO_FIRST = 32, + HASH_RESULT_IO_ADDRESS_0 = 32, + HASH_RESULT_IO_ADDRESS_1 = 36, + HASH_RESULT_IO_ADDRESS_2 = 40, + HASH_RESULT_IO_ADDRESS_3 = 44, + HASH_RESULT_IO_ADDRESS_4 = 48, + HASH_RESULT_IO_ADDRESS_5 = 52, + HASH_RESULT_IO_LAST = 52 +} rdd_hash_result_io; +typedef enum +{ + DMA_LOOKUP_RESULT_FIRST = 0, + DMA_LOOKUP_RESULT_SLOT_0 = 0, + DMA_LOOKUP_RESULT_SLOT_1 = 1, + DMA_LOOKUP_RESULT_SLOT_2 = 2, + DMA_LOOKUP_RESULT_SLOT_3 = 3, + DMA_LOOKUP_RESULT_SLOT_4 = 4, + DMA_LOOKUP_RESULT_FOUR_STEPS = 4, + DMA_LOOKUP_RESULT_SLOT_5 = 5, + DMA_LOOKUP_RESULT_SLOT_6 = 6, + DMA_LOOKUP_RESULT_SLOT_7 = 7, + DMA_LOOKUP_RESULT_LAST = 7 +} rdd_dma_lookup_result; +typedef enum +{ + DMA_LOOKUP_RESULT_IO_FIRST = 64, + DMA_LOOKUP_RESULT_IO_ADDRESS_0 = 64, + DMA_LOOKUP_RESULT_IO_ADDRESS_1 = 68, + DMA_LOOKUP_RESULT_IO_ADDRESS_2 = 72, + DMA_LOOKUP_RESULT_IO_ADDRESS_3 = 76, + DMA_LOOKUP_RESULT_IO_ADDRESS_4 = 80, + DMA_LOOKUP_RESULT_IO_ADDRESS_5 = 84, + DMA_LOOKUP_RESULT_IO_ADDRESS_6 = 88, + DMA_LOOKUP_RESULT_IO_ADDRESS_7 = 92, + DMA_LOOKUP_RESULT_IO_LAST = 92 +} rdd_dma_lookup_result_io; +typedef enum +{ + CAM_RESULT_FIRST = 0, + CAM_RESULT_SLOT_0 = 0, + CAM_RESULT_SLOT_1 = 1, + CAM_RESULT_SLOT_2 = 2, + CAM_RESULT_SLOT_3 = 3, + CAM_RESULT_SLOT_4 = 4, + CAM_RESULT_SLOT_5 = 5, + CAM_RESULT_SLOT_6 = 6, + CAM_RESULT_SLOT_7 = 7, + CAM_RESULT_HIT_BIT = 8, + CAM_RESULT_LAST = 8 +} rdd_cam_result; +typedef enum +{ + CAM_RESULT_IO_FIRST = 96, + CAM_RESULT_IO_ADDRESS_0 = 96, + CAM_RESULT_IO_ADDRESS_1 = 100, + CAM_RESULT_IO_ADDRESS_2 = 104, + CAM_RESULT_IO_ADDRESS_3 = 108, + CAM_RESULT_IO_ADDRESS_4 = 112, + CAM_RESULT_IO_ADDRESS_5 = 116, + CAM_RESULT_IO_ADDRESS_6 = 120, + CAM_RESULT_IO_ADDRESS_7 = 124, + CAM_RESULT_IO_LAST = 124 +} rdd_cam_result_io; +typedef enum +{ + CAM_SEARCH_FIRST = 2, + CAM_SEARCH_DEPTH_4 = 2, + CAM_SEARCH_DEPTH_8 = 3, + CAM_SEARCH_DEPTH_16 = 4, + CAM_SEARCH_DEPTH_32 = 5, + CAM_SEARCH_DEPTH_128 = 7, + CAM_SEARCH_LAST = 7 +} rdd_cam_search; +typedef enum +{ + BBH_RX_ERROR_CODE_FIRST = 1, + BBH_RX_ERROR_CODE_CRC = 1, + BBH_RX_ERROR_CODE_NO_BPM = 2, + BBH_RX_ERROR_CODE_NO_SBPM = 4, + BBH_RX_ERROR_CODE_NO_DMA = 8, + BBH_RX_ERROR_CODE_NO_SDMA = 16, + BBH_RX_ERROR_CODE_PACKET_TOO_SHORT = 32, + BBH_RX_ERROR_CODE_PACKET_TOO_LONG = 64, + BBH_RX_ERROR_CODE_LAST = 64 +} rdd_bbh_rx_error_code; +typedef enum +{ + IPSEC_RANGE_IO_FIRST = 524, + IPSEC_RANGE_IO_ADDRESS_3 = 524, + IPSEC_RANGE_IO_LAST = 524 +} rdd_ipsec_range_io; +typedef enum +{ + RDD_EMAC_FIRST = 0, + RDD_EMAC_ID_WIFI = 0, + RDD_EMAC_ID_0 = 1, + RDD_EMAC_ID_1 = 2, + RDD_EMAC_ID_2 = 3, + RDD_EMAC_ID_3 = 4, + RDD_EMAC_ID_4 = 5, + RDD_EMAC_ID_5 = 6, + RDD_EMAC_ID_6 = 7, + RDD_EMAC_ID_7 = 8, + RDD_EMAC_ID_COUNT = 9, + RDD_EMAC_LAST = 9 +} rdd_rdd_emac; +typedef enum +{ + ACTION_FIRST = 0, + ACTION_FORWARD = 0, + ACTION_TRAP = 1, + ACTION_DROP = 2, + ACTION_MULTICAST = 3, + ACTION_LAST = 3 +} rdd_action; +typedef enum +{ + ENET_HEADER_FIRST = 0, + ENET_HEADER_DA_OFFSET = 0, + ENET_HEADER_SA_OFFSET = 6, + ENET_HEADER_ETHERTYPE_OFFSET = 12, + ENET_HEADER_CTRL_OPCDE_OFFSET = 14, + ENET_HEADER_SIZE = 16, + ENET_HEADER_LAST = 16 +} rdd_enet_header; +typedef enum +{ + PFC_FRAME_FIRST = 0, + PFC_FRAME_CLASS_ENABLE_VECTOR_OFFSET = 0, + PFC_FRAME_TIME_0_OFFSET = 2, + PFC_FRAME_SIZE = 18, + PFC_FRAME_LAST = 18 +} rdd_pfc_frame; +typedef enum +{ + IP_PROTO_FIRST = 1, + IP_PROTO_ICMP = 1, + IP_PROTO_IPIP = 4, + IP_PROTO_TCP = 6, + IP_PROTO_UDP = 17, + IP_PROTO_IPV6 = 41, + IP_PROTO_GRE = 47, + IP_PROTO_UDP_LITE = 136, + IP_PROTO_LAST = 136 +} rdd_ip_proto; +typedef enum +{ + IP_FLAGS_FIRST = 1, + IP_FLAGS_DO_NOT_FRAGMENT_OFFSET = 1, + IP_FLAGS_MORE_FRAGMENTS_OFFSET = 2, + IP_FLAGS_LAST = 2 +} rdd_ip_flags; +typedef enum +{ + LAYER3_IPV6_HEADER_FIRST = 8, + LAYER3_IPV6_HEADER_SRC_IP_OFFSET = 8, + LAYER3_IPV6_HEADER_DST_IP_OFFSET = 24, + LAYER3_IPV6_HEADER_LAST = 24 +} rdd_layer3_ipv6_header; +typedef enum +{ + LAYER3_HEADER_FIRST = 0, + LAYER3_HEADER_TRAFIC_CLASS_OFFSET = 0, + LAYER3_HEADER_TOS_OFFSET = 1, + LAYER3_HEADER_TOTAL_LENGTH_OFFSET = 2, + LAYER3_HEADER_PAYLOAD_LENGTH_OFFSET = 4, + LAYER3_HEADER_FLAGS_OFFSET = 6, + LAYER3_HEADER_HOP_LIMIT_OFFSET = 7, + LAYER3_HEADER_TTL_OFFSET = 8, + LAYER3_HEADER_PROTOCOL_OFFSET = 9, + LAYER3_HEADER_IP_CHECKSUM_OFFSET = 10, + LAYER3_HEADER_SRC_IP_OFFSET = 12, + LAYER3_HEADER_DST_IP_OFFSET = 16, + LAYER3_HEADER_LAST = 16 +} rdd_layer3_header; +typedef enum +{ + LAYER3_PSEUDO_HEADER_FIRST = 0, + LAYER3_PSEUDO_HEADER_SRC_IP_OFFSET = 0, + LAYER3_PSEUDO_HEADER_DST_IP_OFFSET = 4, + LAYER3_PSEUDO_HEADER_PROTOCOL_OFFSET = 8, + LAYER3_PSEUDO_HEADER_LENGTH_OFFSET = 10, + LAYER3_PSEUDO_HEADER_HDR_LENGTH = 12, + LAYER3_PSEUDO_HEADER_PROTOCOL_F_WIDTH = 16, + LAYER3_PSEUDO_HEADER_PROTOCOL_F_OFFSET = 16, + LAYER3_PSEUDO_HEADER_LAST = 16 +} rdd_layer3_pseudo_header; +typedef enum +{ + LAYER3_IPV6_PSEUDO_HEADER_FIRST = 0, + LAYER3_IPV6_PSEUDO_HEADER_SRC_IP_OFFSET = 0, + LAYER3_IPV6_PSEUDO_HEADER_DST_IP_OFFSET = 16, + LAYER3_IPV6_PSEUDO_HEADER_LENGTH_OFFSET = 32, + LAYER3_IPV6_PSEUDO_HEADER_PROTOCOL_OFFSET = 36, + LAYER3_IPV6_PSEUDO_HEADER_HDR_LENGTH = 40, + LAYER3_IPV6_PSEUDO_HEADER_LAST = 40 +} rdd_layer3_ipv6_pseudo_header; +typedef enum +{ + LAYER4_HEADER_FIRST = 0, + LAYER4_HEADER_SRC_PORT_OFFSET = 0, + LAYER4_HEADER_ESP_SPI_OFFSET = 0, + LAYER4_HEADER_DST_PORT_OFFSET = 2, + LAYER4_HEADER_UDP_LITE_CHECKSUM_COVERAGE_OFFSET = 4, + LAYER4_HEADER_TCP_LENGTH_F_WIDTH = 4, + LAYER4_HEADER_UDP_CHECKSUM_OFFSET = 6, + LAYER4_HEADER_GRE_CALL_ID_OFFSET = 6, + LAYER4_HEADER_UDP_HDR_LENGTH = 8, + LAYER4_HEADER_TCP_LENGTH_OFFSET = 12, + LAYER4_HEADER_TCP_FLAGS_OFFSET = 13, + LAYER4_HEADER_TCP_CHECKSUM_OFFSET = 16, + LAYER4_HEADER_TCP_HDR_MIN_LENGTH = 20, + LAYER4_HEADER_TCP_LENGTH_F_OFFSET = 28, + LAYER4_HEADER_LAST = 28 +} rdd_layer4_header; +typedef enum +{ + PARSER_L2_PROTOCOL_FIRST = 1, + PARSER_L2_PROTOCOL_PPPOE_D = 1, + PARSER_L2_PROTOCOL_PPPOE_S = 2, + PARSER_L2_PROTOCOL_USER_DEFINED_0 = 8, + PARSER_L2_PROTOCOL_USER_DEFINED_1 = 9, + PARSER_L2_PROTOCOL_USER_DEFINED_2 = 10, + PARSER_L2_PROTOCOL_USER_DEFINED_3 = 11, + PARSER_L2_PROTOCOL_ARP = 12, + PARSER_L2_PROTOCOL__1588 = 13, + PARSER_L2_PROTOCOL__802_1X = 14, + PARSER_L2_PROTOCOL_MASK = 15, + PARSER_L2_PROTOCOL__802_1AG_CFM = 15, + PARSER_L2_PROTOCOL_LAST = 15 +} rdd_parser_l2_protocol; +typedef enum +{ + PARSER_L3_PROTOCOL_FIRST = 0, + PARSER_L3_PROTOCOL_OTHER = 0, + PARSER_L3_PROTOCOL_IPV4 = 1, + PARSER_L3_PROTOCOL_IPV6 = 2, + PARSER_L3_PROTOCOL_MASK = 3, + PARSER_L3_PROTOCOL_LAST = 3 +} rdd_parser_l3_protocol; +typedef enum +{ + PARSER_L4_PROTOCOL_FIRST = 0, + PARSER_L4_PROTOCOL_OTHER = 0, + PARSER_L4_PROTOCOL_TCP = 1, + PARSER_L4_PROTOCOL_UDP = 2, + PARSER_L4_PROTOCOL_IGMP = 3, + PARSER_L4_PROTOCOL_ICMP = 4, + PARSER_L4_PROTOCOL_ICMPV6 = 5, + PARSER_L4_PROTOCOL_ESP = 6, + PARSER_L4_PROTOCOL_GRE = 7, + PARSER_L4_PROTOCOL_USER_DEFINED_0 = 8, + PARSER_L4_PROTOCOL_USER_DEFINED_1 = 9, + PARSER_L4_PROTOCOL_USER_DEFINED_2 = 10, + PARSER_L4_PROTOCOL_USER_DEFINED_3 = 11, + PARSER_L4_PROTOCOL_RESERVED = 12, + PARSER_L4_PROTOCOL_IPV6 = 13, + PARSER_L4_PROTOCOL_AH = 14, + PARSER_L4_PROTOCOL_NOT_PARSED = 15, + PARSER_L4_PROTOCOL_MASK = 15, + PARSER_L4_PROTOCOL_LAST = 15 +} rdd_parser_l4_protocol; +typedef enum +{ + ACTION_ECN_FIRST = 0, + ACTION_ECN_REMARKING_OFFSET = 0, + ACTION_ECN_REMARKING_WIDTH = 2, + ACTION_ECN_LAST = 2 +} rdd_action_ecn; +typedef enum +{ + ACTION_DSCP_FIRST = 2, + ACTION_DSCP_REMARKING_OFFSET = 2, + ACTION_DSCP_REMARKING_TRAFFIC_CLASS_OFFSET = 4, + ACTION_DSCP_REMARKING_WIDTH = 6, + ACTION_DSCP_REMARKING_TRAFFIC_CLASS_WIDTH = 8, + ACTION_DSCP_LAST = 8 +} rdd_action_dscp; +typedef enum +{ + ACTION_OUTER_FIRST = 14, + ACTION_OUTER_PBITS_REMARKING_VID_OFFSET = 14, + ACTION_OUTER_LAST = 14 +} rdd_action_outer; +typedef enum +{ + ACTION_INNER_FIRST = 18, + ACTION_INNER_PBITS_REMARKING_VID_OFFSET = 18, + ACTION_INNER_LAST = 18 +} rdd_action_inner; +typedef enum +{ + ACTION_PBITS_FIRST = 2, + ACTION_PBITS_REMARKING_DSCP_F_OFFSET = 2, + ACTION_PBITS_REMARKING_PACKET_F_WIDTH = 3, + ACTION_PBITS_REMARKING_DSCP_F_WIDTH = 6, + ACTION_PBITS_REMARKING_PACKET_F_OFFSET = 13, + ACTION_PBITS_LAST = 13 +} rdd_action_pbits; +typedef enum +{ + ACTION_DS_LITE_FIRST = 40, + ACTION_DS_LITE_SIZE = 40, + ACTION_DS_LITE_LAST = 40 +} rdd_action_ds_lite; +typedef enum +{ + DS_ACTION_ID_FIRST = 0, + DS_ACTION_ID_TRAP = 0, + DS_ACTION_ID_TTL = 2, + DS_ACTION_ID_DSCP = 4, + DS_ACTION_ID_NAT = 5, + DS_ACTION_ID_GRE = 6, + DS_ACTION_ID_OPBITS = 7, + DS_ACTION_ID_IPBITS = 8, + DS_ACTION_ID_DS_LITE = 9, + DS_ACTION_ID_PPPOE = 10, + DS_ACTION_ID_TOTAL_NUM = 17, + DS_ACTION_ID_LAST = 17 +} rdd_ds_action_id; +typedef enum +{ + US_ACTION_ID_FIRST = 0, + US_ACTION_ID_TRAP = 0, + US_ACTION_ID_TTL = 2, + US_ACTION_ID_DSCP = 4, + US_ACTION_ID_NAT = 5, + US_ACTION_ID_GRE = 6, + US_ACTION_ID_OPBITS = 7, + US_ACTION_ID_IPBITS = 8, + US_ACTION_ID_DS_LITE = 9, + US_ACTION_ID_PPPOE = 10, + US_ACTION_ID_TOTAL_NUM = 17, + US_ACTION_ID_LAST = 17 +} rdd_us_action_id; +typedef enum +{ + RDD_VPORT_FIRST = 0, + RDD_VPORT_ID_0 = 0, + RDD_VPORT_ID_1 = 1, + RDD_VPORT_ID_2 = 2, + RDD_VPORT_ID_3 = 3, + RDD_VPORT_ID_4 = 4, + RDD_VPORT_ID_5 = 5, + RDD_VPORT_ID_6 = 6, + RDD_VPORT_ID_7 = 7, + RDD_VPORT_ID_8 = 8, + RDD_VPORT_ID_9 = 9, + RDD_VPORT_ID_10 = 10, + RDD_VPORT_ID_11 = 11, + RDD_VPORT_ID_12 = 12, + RDD_VPORT_ID_13 = 13, + RDD_VPORT_ID_14 = 14, + RDD_VPORT_ID_15 = 15, + RDD_VPORT_ID_16 = 16, + RDD_VPORT_ID_17 = 17, + RDD_VPORT_ID_18 = 18, + RDD_VPORT_ID_19 = 19, + RDD_VPORT_ID_20 = 20, + RDD_VPORT_ID_21 = 21, + RDD_VPORT_ID_22 = 22, + RDD_VPORT_ID_23 = 23, + RDD_VPORT_ID_24 = 24, + RDD_VPORT_ID_25 = 25, + RDD_VPORT_ID_26 = 26, + RDD_VPORT_ID_27 = 27, + RDD_VPORT_ID_28 = 28, + RDD_VPORT_ID_29 = 29, + RDD_VPORT_ID_30 = 30, + RDD_VPORT_ID_31 = 31, + RDD_VPORT_ID_32 = 32, + RDD_VPORT_ID_33 = 33, + RDD_VPORT_ID_34 = 34, + RDD_VPORT_ID_35 = 35, + RDD_VPORT_ID_36 = 36, + RDD_VPORT_ID_37 = 37, + RDD_VPORT_ID_38 = 38, + RDD_VPORT_ID_39 = 39, + RDD_VPORT_LAST = 39 +} rdd_rdd_vport; +typedef enum +{ + DSCP_TO_FIRST = 6, + DSCP_TO_PBITS_SHIFT_OFFSET = 6, + DSCP_TO_LAST = 6 +} rdd_dscp_to; +typedef enum +{ + RESOLUTION_CONTEXT_FIRST = 0, + RESOLUTION_CONTEXT_VIRTUAL_SRC_PORT_OFFSET = 0, + RESOLUTION_CONTEXT_GPE_DMA_OFFSET_WIDTH = 1, + RESOLUTION_CONTEXT_GPE_HEADER_LENGTH_WIDTH = 1, + RESOLUTION_CONTEXT_GPE_HEADER_IH_PTR_WIDTH = 2, + RESOLUTION_CONTEXT_GPE_COMMAND_LIST_PTR_WIDTH = 2, + RESOLUTION_CONTEXT_GPE_PACKET_DRR_PTR_WIDTH = 4, + RESOLUTION_CONTEXT_GPE_HEADER_LENGTH_OFFSET = 6, + RESOLUTION_CONTEXT_GPE_DMA_OFFSET_OFFSET = 7, + RESOLUTION_CONTEXT_GPE_COMMAND_LIST_PTR_OFFSET = 8, + RESOLUTION_CONTEXT_GPE_HEADER_IH_PTR_OFFSET = 10, + RESOLUTION_CONTEXT_GPE_PACKET_DRR_PTR_OFFSET = 12, + RESOLUTION_CONTEXT_LAST = 12 +} rdd_resolution_context; +typedef enum +{ + FFI_FIRST = 3, + FFI_8_LOG2_SIZE = 3, + FFI_16_LOG2_SIZE = 4, + FFI_32_LOG2_SIZE = 5, + FFI_8_SIZE = 8, + FFI_16_SIZE = 16, + FFI_32_SIZE = 32, + FFI_LAST = 32 +} rdd_ffi; +typedef enum +{ + FR_FORMAT_FIRST = 0, + FR_FORMAT_WI_WI64 = 0, + FR_FORMAT_WI_CWI32 = 1, + FR_FORMAT_WI_CWI64 = 2, + FR_FORMAT_WI_ACWI32 = 3, + FR_FORMAT_WI_ACWI64 = 4, + FR_FORMAT_LAST = 4 +} rdd_fr_format; +typedef enum +{ + BACKUP_INDEX_FIRST = 21760, + BACKUP_INDEX_FIFO_SIZE = 21760, + BACKUP_INDEX_LAST = 21760 +} rdd_backup_index; +typedef enum +{ + DMA_TYPE_FIRST = 1, + DMA_TYPE_IDMA = 1, + DMA_TYPE_HWA_RXPOST = 5, + DMA_TYPE_HWA_TXCPL = 6, + DMA_TYPE_HWA_RXCPL = 7, + DMA_TYPE_LAST = 7 +} rdd_dma_type; +#endif + +#if defined DSL_63148 +typedef enum +{ + MODE_FIRST = 0, + MODE_DISABLED = 0, + MODE_ENABLED = 1, + MODE_LAST = 1 +} rdd_mode; +typedef enum +{ + SEMAPHORE_IO_FIRST = 272, + SEMAPHORE_IO_ADDRESS_0 = 272, + SEMAPHORE_IO_ADDRESS_1 = 273, + SEMAPHORE_IO_ADDRESS_2 = 274, + SEMAPHORE_IO_ADDRESS_3 = 275, + SEMAPHORE_IO_ADDRESS_4 = 276, + SEMAPHORE_IO_ADDRESS_5 = 277, + SEMAPHORE_IO_ADDRESS_7 = 279, + SEMAPHORE_IO_ADDRESS_8 = 280, + SEMAPHORE_IO_ADDRESS_9 = 281, + SEMAPHORE_IO_ADDRESS_10 = 282, + SEMAPHORE_IO_ADDRESS_11 = 283, + SEMAPHORE_IO_ADDRESS_12 = 284, + SEMAPHORE_IO_ADDRESS_13 = 285, + SEMAPHORE_IO_ADDRESS_14 = 286, + SEMAPHORE_IO_ADDRESS_15 = 287, + SEMAPHORE_IO_LAST = 287 +} rdd_semaphore_io; +typedef enum +{ + HASH_RESULT_FIRST = 0, + HASH_RESULT_SLOT_0 = 0, + HASH_RESULT_SLOT_1 = 1, + HASH_RESULT_SLOT_2 = 2, + HASH_RESULT_SLOT_3 = 3, + HASH_RESULT_SLOT_4 = 4, + HASH_RESULT_SLOT_5 = 5, + HASH_RESULT_LAST = 5 +} rdd_hash_result; +typedef enum +{ + HASH_RESULT_IO_FIRST = 32, + HASH_RESULT_IO_ADDRESS_0 = 32, + HASH_RESULT_IO_ADDRESS_1 = 36, + HASH_RESULT_IO_ADDRESS_2 = 40, + HASH_RESULT_IO_ADDRESS_3 = 44, + HASH_RESULT_IO_ADDRESS_4 = 48, + HASH_RESULT_IO_ADDRESS_5 = 52, + HASH_RESULT_IO_LAST = 52 +} rdd_hash_result_io; +typedef enum +{ + DMA_LOOKUP_RESULT_FIRST = 0, + DMA_LOOKUP_RESULT_SLOT_0 = 0, + DMA_LOOKUP_RESULT_SLOT_1 = 1, + DMA_LOOKUP_RESULT_SLOT_2 = 2, + DMA_LOOKUP_RESULT_SLOT_3 = 3, + DMA_LOOKUP_RESULT_SLOT_4 = 4, + DMA_LOOKUP_RESULT_FOUR_STEPS = 4, + DMA_LOOKUP_RESULT_SLOT_5 = 5, + DMA_LOOKUP_RESULT_SLOT_6 = 6, + DMA_LOOKUP_RESULT_SLOT_7 = 7, + DMA_LOOKUP_RESULT_LAST = 7 +} rdd_dma_lookup_result; +typedef enum +{ + DMA_LOOKUP_RESULT_IO_FIRST = 64, + DMA_LOOKUP_RESULT_IO_ADDRESS_0 = 64, + DMA_LOOKUP_RESULT_IO_ADDRESS_1 = 68, + DMA_LOOKUP_RESULT_IO_ADDRESS_2 = 72, + DMA_LOOKUP_RESULT_IO_ADDRESS_3 = 76, + DMA_LOOKUP_RESULT_IO_ADDRESS_4 = 80, + DMA_LOOKUP_RESULT_IO_ADDRESS_5 = 84, + DMA_LOOKUP_RESULT_IO_ADDRESS_6 = 88, + DMA_LOOKUP_RESULT_IO_ADDRESS_7 = 92, + DMA_LOOKUP_RESULT_IO_LAST = 92 +} rdd_dma_lookup_result_io; +typedef enum +{ + CAM_RESULT_FIRST = 0, + CAM_RESULT_SLOT_0 = 0, + CAM_RESULT_SLOT_1 = 1, + CAM_RESULT_SLOT_2 = 2, + CAM_RESULT_SLOT_3 = 3, + CAM_RESULT_SLOT_4 = 4, + CAM_RESULT_SLOT_5 = 5, + CAM_RESULT_SLOT_6 = 6, + CAM_RESULT_SLOT_7 = 7, + CAM_RESULT_HIT_BIT = 8, + CAM_RESULT_LAST = 8 +} rdd_cam_result; +typedef enum +{ + CAM_RESULT_IO_FIRST = 96, + CAM_RESULT_IO_ADDRESS_0 = 96, + CAM_RESULT_IO_ADDRESS_1 = 100, + CAM_RESULT_IO_ADDRESS_2 = 104, + CAM_RESULT_IO_ADDRESS_3 = 108, + CAM_RESULT_IO_ADDRESS_4 = 112, + CAM_RESULT_IO_ADDRESS_5 = 116, + CAM_RESULT_IO_ADDRESS_6 = 120, + CAM_RESULT_IO_ADDRESS_7 = 124, + CAM_RESULT_IO_LAST = 124 +} rdd_cam_result_io; +typedef enum +{ + CAM_SEARCH_FIRST = 2, + CAM_SEARCH_DEPTH_4 = 2, + CAM_SEARCH_DEPTH_8 = 3, + CAM_SEARCH_DEPTH_16 = 4, + CAM_SEARCH_DEPTH_32 = 5, + CAM_SEARCH_DEPTH_128 = 7, + CAM_SEARCH_LAST = 7 +} rdd_cam_search; +typedef enum +{ + BBH_RX_ERROR_CODE_FIRST = 1, + BBH_RX_ERROR_CODE_CRC = 1, + BBH_RX_ERROR_CODE_NO_BPM = 2, + BBH_RX_ERROR_CODE_NO_SBPM = 4, + BBH_RX_ERROR_CODE_NO_DMA = 8, + BBH_RX_ERROR_CODE_NO_SDMA = 16, + BBH_RX_ERROR_CODE_PACKET_TOO_SHORT = 32, + BBH_RX_ERROR_CODE_PACKET_TOO_LONG = 64, + BBH_RX_ERROR_CODE_LAST = 64 +} rdd_bbh_rx_error_code; +typedef enum +{ + IPSEC_RANGE_IO_FIRST = 524, + IPSEC_RANGE_IO_ADDRESS_3 = 524, + IPSEC_RANGE_IO_LAST = 524 +} rdd_ipsec_range_io; +typedef enum +{ + RDD_EMAC_FIRST = 0, + RDD_EMAC_ID_WIFI = 0, + RDD_EMAC_ID_0 = 1, + RDD_EMAC_ID_1 = 2, + RDD_EMAC_ID_2 = 3, + RDD_EMAC_ID_3 = 4, + RDD_EMAC_ID_4 = 5, + RDD_EMAC_ID_5 = 6, + RDD_EMAC_ID_6 = 7, + RDD_EMAC_ID_7 = 8, + RDD_EMAC_ID_COUNT = 9, + RDD_EMAC_LAST = 9 +} rdd_rdd_emac; +typedef enum +{ + ACTION_FIRST = 0, + ACTION_FORWARD = 0, + ACTION_TRAP = 1, + ACTION_DROP = 2, + ACTION_MULTICAST = 3, + ACTION_LAST = 3 +} rdd_action; +typedef enum +{ + ENET_HEADER_FIRST = 0, + ENET_HEADER_DA_OFFSET = 0, + ENET_HEADER_SA_OFFSET = 6, + ENET_HEADER_ETHERTYPE_OFFSET = 12, + ENET_HEADER_CTRL_OPCDE_OFFSET = 14, + ENET_HEADER_SIZE = 16, + ENET_HEADER_LAST = 16 +} rdd_enet_header; +typedef enum +{ + PFC_FRAME_FIRST = 0, + PFC_FRAME_CLASS_ENABLE_VECTOR_OFFSET = 0, + PFC_FRAME_TIME_0_OFFSET = 2, + PFC_FRAME_SIZE = 18, + PFC_FRAME_LAST = 18 +} rdd_pfc_frame; +typedef enum +{ + IP_PROTO_FIRST = 1, + IP_PROTO_ICMP = 1, + IP_PROTO_IPIP = 4, + IP_PROTO_TCP = 6, + IP_PROTO_UDP = 17, + IP_PROTO_IPV6 = 41, + IP_PROTO_GRE = 47, + IP_PROTO_UDP_LITE = 136, + IP_PROTO_LAST = 136 +} rdd_ip_proto; +typedef enum +{ + IP_FLAGS_FIRST = 1, + IP_FLAGS_DO_NOT_FRAGMENT_OFFSET = 1, + IP_FLAGS_MORE_FRAGMENTS_OFFSET = 2, + IP_FLAGS_LAST = 2 +} rdd_ip_flags; +typedef enum +{ + LAYER3_IPV6_HEADER_FIRST = 8, + LAYER3_IPV6_HEADER_SRC_IP_OFFSET = 8, + LAYER3_IPV6_HEADER_DST_IP_OFFSET = 24, + LAYER3_IPV6_HEADER_LAST = 24 +} rdd_layer3_ipv6_header; +typedef enum +{ + LAYER3_HEADER_FIRST = 0, + LAYER3_HEADER_TRAFIC_CLASS_OFFSET = 0, + LAYER3_HEADER_TOS_OFFSET = 1, + LAYER3_HEADER_TOTAL_LENGTH_OFFSET = 2, + LAYER3_HEADER_PAYLOAD_LENGTH_OFFSET = 4, + LAYER3_HEADER_FLAGS_OFFSET = 6, + LAYER3_HEADER_HOP_LIMIT_OFFSET = 7, + LAYER3_HEADER_TTL_OFFSET = 8, + LAYER3_HEADER_PROTOCOL_OFFSET = 9, + LAYER3_HEADER_IP_CHECKSUM_OFFSET = 10, + LAYER3_HEADER_SRC_IP_OFFSET = 12, + LAYER3_HEADER_DST_IP_OFFSET = 16, + LAYER3_HEADER_LAST = 16 +} rdd_layer3_header; +typedef enum +{ + LAYER3_PSEUDO_HEADER_FIRST = 0, + LAYER3_PSEUDO_HEADER_SRC_IP_OFFSET = 0, + LAYER3_PSEUDO_HEADER_DST_IP_OFFSET = 4, + LAYER3_PSEUDO_HEADER_PROTOCOL_OFFSET = 8, + LAYER3_PSEUDO_HEADER_LENGTH_OFFSET = 10, + LAYER3_PSEUDO_HEADER_HDR_LENGTH = 12, + LAYER3_PSEUDO_HEADER_PROTOCOL_F_WIDTH = 16, + LAYER3_PSEUDO_HEADER_PROTOCOL_F_OFFSET = 16, + LAYER3_PSEUDO_HEADER_LAST = 16 +} rdd_layer3_pseudo_header; +typedef enum +{ + LAYER3_IPV6_PSEUDO_HEADER_FIRST = 0, + LAYER3_IPV6_PSEUDO_HEADER_SRC_IP_OFFSET = 0, + LAYER3_IPV6_PSEUDO_HEADER_DST_IP_OFFSET = 16, + LAYER3_IPV6_PSEUDO_HEADER_LENGTH_OFFSET = 32, + LAYER3_IPV6_PSEUDO_HEADER_PROTOCOL_OFFSET = 36, + LAYER3_IPV6_PSEUDO_HEADER_HDR_LENGTH = 40, + LAYER3_IPV6_PSEUDO_HEADER_LAST = 40 +} rdd_layer3_ipv6_pseudo_header; +typedef enum +{ + LAYER4_HEADER_FIRST = 0, + LAYER4_HEADER_SRC_PORT_OFFSET = 0, + LAYER4_HEADER_ESP_SPI_OFFSET = 0, + LAYER4_HEADER_DST_PORT_OFFSET = 2, + LAYER4_HEADER_UDP_LITE_CHECKSUM_COVERAGE_OFFSET = 4, + LAYER4_HEADER_TCP_LENGTH_F_WIDTH = 4, + LAYER4_HEADER_UDP_CHECKSUM_OFFSET = 6, + LAYER4_HEADER_GRE_CALL_ID_OFFSET = 6, + LAYER4_HEADER_UDP_HDR_LENGTH = 8, + LAYER4_HEADER_TCP_LENGTH_OFFSET = 12, + LAYER4_HEADER_TCP_FLAGS_OFFSET = 13, + LAYER4_HEADER_TCP_CHECKSUM_OFFSET = 16, + LAYER4_HEADER_TCP_HDR_MIN_LENGTH = 20, + LAYER4_HEADER_TCP_LENGTH_F_OFFSET = 28, + LAYER4_HEADER_LAST = 28 +} rdd_layer4_header; +typedef enum +{ + PARSER_L2_PROTOCOL_FIRST = 1, + PARSER_L2_PROTOCOL_PPPOE_D = 1, + PARSER_L2_PROTOCOL_PPPOE_S = 2, + PARSER_L2_PROTOCOL_USER_DEFINED_0 = 8, + PARSER_L2_PROTOCOL_USER_DEFINED_1 = 9, + PARSER_L2_PROTOCOL_USER_DEFINED_2 = 10, + PARSER_L2_PROTOCOL_USER_DEFINED_3 = 11, + PARSER_L2_PROTOCOL_ARP = 12, + PARSER_L2_PROTOCOL__1588 = 13, + PARSER_L2_PROTOCOL__802_1X = 14, + PARSER_L2_PROTOCOL_MASK = 15, + PARSER_L2_PROTOCOL__802_1AG_CFM = 15, + PARSER_L2_PROTOCOL_LAST = 15 +} rdd_parser_l2_protocol; +typedef enum +{ + PARSER_L3_PROTOCOL_FIRST = 0, + PARSER_L3_PROTOCOL_OTHER = 0, + PARSER_L3_PROTOCOL_IPV4 = 1, + PARSER_L3_PROTOCOL_IPV6 = 2, + PARSER_L3_PROTOCOL_MASK = 3, + PARSER_L3_PROTOCOL_LAST = 3 +} rdd_parser_l3_protocol; +typedef enum +{ + PARSER_L4_PROTOCOL_FIRST = 0, + PARSER_L4_PROTOCOL_OTHER = 0, + PARSER_L4_PROTOCOL_TCP = 1, + PARSER_L4_PROTOCOL_UDP = 2, + PARSER_L4_PROTOCOL_IGMP = 3, + PARSER_L4_PROTOCOL_ICMP = 4, + PARSER_L4_PROTOCOL_ICMPV6 = 5, + PARSER_L4_PROTOCOL_ESP = 6, + PARSER_L4_PROTOCOL_GRE = 7, + PARSER_L4_PROTOCOL_USER_DEFINED_0 = 8, + PARSER_L4_PROTOCOL_USER_DEFINED_1 = 9, + PARSER_L4_PROTOCOL_USER_DEFINED_2 = 10, + PARSER_L4_PROTOCOL_USER_DEFINED_3 = 11, + PARSER_L4_PROTOCOL_RESERVED = 12, + PARSER_L4_PROTOCOL_IPV6 = 13, + PARSER_L4_PROTOCOL_AH = 14, + PARSER_L4_PROTOCOL_NOT_PARSED = 15, + PARSER_L4_PROTOCOL_MASK = 15, + PARSER_L4_PROTOCOL_LAST = 15 +} rdd_parser_l4_protocol; +typedef enum +{ + ACTION_ECN_FIRST = 0, + ACTION_ECN_REMARKING_OFFSET = 0, + ACTION_ECN_REMARKING_WIDTH = 2, + ACTION_ECN_LAST = 2 +} rdd_action_ecn; +typedef enum +{ + ACTION_DSCP_FIRST = 2, + ACTION_DSCP_REMARKING_OFFSET = 2, + ACTION_DSCP_REMARKING_TRAFFIC_CLASS_OFFSET = 4, + ACTION_DSCP_REMARKING_WIDTH = 6, + ACTION_DSCP_REMARKING_TRAFFIC_CLASS_WIDTH = 8, + ACTION_DSCP_LAST = 8 +} rdd_action_dscp; +typedef enum +{ + ACTION_OUTER_FIRST = 14, + ACTION_OUTER_PBITS_REMARKING_VID_OFFSET = 14, + ACTION_OUTER_LAST = 14 +} rdd_action_outer; +typedef enum +{ + ACTION_INNER_FIRST = 18, + ACTION_INNER_PBITS_REMARKING_VID_OFFSET = 18, + ACTION_INNER_LAST = 18 +} rdd_action_inner; +typedef enum +{ + ACTION_PBITS_FIRST = 2, + ACTION_PBITS_REMARKING_DSCP_F_OFFSET = 2, + ACTION_PBITS_REMARKING_PACKET_F_WIDTH = 3, + ACTION_PBITS_REMARKING_DSCP_F_WIDTH = 6, + ACTION_PBITS_REMARKING_PACKET_F_OFFSET = 13, + ACTION_PBITS_LAST = 13 +} rdd_action_pbits; +typedef enum +{ + ACTION_DS_LITE_FIRST = 40, + ACTION_DS_LITE_SIZE = 40, + ACTION_DS_LITE_LAST = 40 +} rdd_action_ds_lite; +typedef enum +{ + DS_ACTION_ID_FIRST = 0, + DS_ACTION_ID_TRAP = 0, + DS_ACTION_ID_TTL = 2, + DS_ACTION_ID_DSCP = 4, + DS_ACTION_ID_NAT = 5, + DS_ACTION_ID_GRE = 6, + DS_ACTION_ID_OPBITS = 7, + DS_ACTION_ID_IPBITS = 8, + DS_ACTION_ID_DS_LITE = 9, + DS_ACTION_ID_PPPOE = 10, + DS_ACTION_ID_TOTAL_NUM = 17, + DS_ACTION_ID_LAST = 17 +} rdd_ds_action_id; +typedef enum +{ + US_ACTION_ID_FIRST = 0, + US_ACTION_ID_TRAP = 0, + US_ACTION_ID_TTL = 2, + US_ACTION_ID_DSCP = 4, + US_ACTION_ID_NAT = 5, + US_ACTION_ID_GRE = 6, + US_ACTION_ID_OPBITS = 7, + US_ACTION_ID_IPBITS = 8, + US_ACTION_ID_DS_LITE = 9, + US_ACTION_ID_PPPOE = 10, + US_ACTION_ID_TOTAL_NUM = 17, + US_ACTION_ID_LAST = 17 +} rdd_us_action_id; +typedef enum +{ + RDD_VPORT_FIRST = 0, + RDD_VPORT_ID_0 = 0, + RDD_VPORT_ID_1 = 1, + RDD_VPORT_ID_2 = 2, + RDD_VPORT_ID_3 = 3, + RDD_VPORT_ID_4 = 4, + RDD_VPORT_ID_5 = 5, + RDD_VPORT_ID_6 = 6, + RDD_VPORT_ID_7 = 7, + RDD_VPORT_ID_8 = 8, + RDD_VPORT_ID_9 = 9, + RDD_VPORT_ID_10 = 10, + RDD_VPORT_ID_11 = 11, + RDD_VPORT_ID_12 = 12, + RDD_VPORT_ID_13 = 13, + RDD_VPORT_ID_14 = 14, + RDD_VPORT_ID_15 = 15, + RDD_VPORT_ID_16 = 16, + RDD_VPORT_ID_17 = 17, + RDD_VPORT_ID_18 = 18, + RDD_VPORT_ID_19 = 19, + RDD_VPORT_ID_20 = 20, + RDD_VPORT_ID_21 = 21, + RDD_VPORT_ID_22 = 22, + RDD_VPORT_ID_23 = 23, + RDD_VPORT_ID_24 = 24, + RDD_VPORT_ID_25 = 25, + RDD_VPORT_ID_26 = 26, + RDD_VPORT_ID_27 = 27, + RDD_VPORT_ID_28 = 28, + RDD_VPORT_ID_29 = 29, + RDD_VPORT_ID_30 = 30, + RDD_VPORT_ID_31 = 31, + RDD_VPORT_ID_32 = 32, + RDD_VPORT_ID_33 = 33, + RDD_VPORT_ID_34 = 34, + RDD_VPORT_ID_35 = 35, + RDD_VPORT_ID_36 = 36, + RDD_VPORT_ID_37 = 37, + RDD_VPORT_ID_38 = 38, + RDD_VPORT_ID_39 = 39, + RDD_VPORT_LAST = 39 +} rdd_rdd_vport; +typedef enum +{ + DSCP_TO_FIRST = 6, + DSCP_TO_PBITS_SHIFT_OFFSET = 6, + DSCP_TO_LAST = 6 +} rdd_dscp_to; +typedef enum +{ + RESOLUTION_CONTEXT_FIRST = 0, + RESOLUTION_CONTEXT_VIRTUAL_SRC_PORT_OFFSET = 0, + RESOLUTION_CONTEXT_GPE_DMA_OFFSET_WIDTH = 1, + RESOLUTION_CONTEXT_GPE_HEADER_LENGTH_WIDTH = 1, + RESOLUTION_CONTEXT_GPE_HEADER_IH_PTR_WIDTH = 2, + RESOLUTION_CONTEXT_GPE_COMMAND_LIST_PTR_WIDTH = 2, + RESOLUTION_CONTEXT_GPE_PACKET_DRR_PTR_WIDTH = 4, + RESOLUTION_CONTEXT_GPE_HEADER_LENGTH_OFFSET = 6, + RESOLUTION_CONTEXT_GPE_DMA_OFFSET_OFFSET = 7, + RESOLUTION_CONTEXT_GPE_COMMAND_LIST_PTR_OFFSET = 8, + RESOLUTION_CONTEXT_GPE_HEADER_IH_PTR_OFFSET = 10, + RESOLUTION_CONTEXT_GPE_PACKET_DRR_PTR_OFFSET = 12, + RESOLUTION_CONTEXT_LAST = 12 +} rdd_resolution_context; +typedef enum +{ + FFI_FIRST = 3, + FFI_8_LOG2_SIZE = 3, + FFI_16_LOG2_SIZE = 4, + FFI_32_LOG2_SIZE = 5, + FFI_8_SIZE = 8, + FFI_16_SIZE = 16, + FFI_32_SIZE = 32, + FFI_LAST = 32 +} rdd_ffi; +typedef enum +{ + FR_FORMAT_FIRST = 0, + FR_FORMAT_WI_WI64 = 0, + FR_FORMAT_WI_CWI32 = 1, + FR_FORMAT_WI_CWI64 = 2, + FR_FORMAT_WI_ACWI32 = 3, + FR_FORMAT_WI_ACWI64 = 4, + FR_FORMAT_LAST = 4 +} rdd_fr_format; +typedef enum +{ + BACKUP_INDEX_FIRST = 21760, + BACKUP_INDEX_FIFO_SIZE = 21760, + BACKUP_INDEX_LAST = 21760 +} rdd_backup_index; +typedef enum +{ + DMA_TYPE_FIRST = 1, + DMA_TYPE_IDMA = 1, + DMA_TYPE_HWA_RXPOST = 5, + DMA_TYPE_HWA_TXCPL = 6, + DMA_TYPE_HWA_RXCPL = 7, + DMA_TYPE_LAST = 7 +} rdd_dma_type; +#endif + +#if defined WL4908 +typedef enum +{ + MODE_FIRST = 0, + MODE_DISABLED = 0, + MODE_ENABLED = 1, + MODE_LAST = 1 +} rdd_mode; +typedef enum +{ + SEMAPHORE_IO_FIRST = 272, + SEMAPHORE_IO_ADDRESS_0 = 272, + SEMAPHORE_IO_ADDRESS_1 = 273, + SEMAPHORE_IO_ADDRESS_2 = 274, + SEMAPHORE_IO_ADDRESS_3 = 275, + SEMAPHORE_IO_ADDRESS_4 = 276, + SEMAPHORE_IO_ADDRESS_5 = 277, + SEMAPHORE_IO_ADDRESS_7 = 279, + SEMAPHORE_IO_ADDRESS_8 = 280, + SEMAPHORE_IO_ADDRESS_9 = 281, + SEMAPHORE_IO_ADDRESS_10 = 282, + SEMAPHORE_IO_ADDRESS_11 = 283, + SEMAPHORE_IO_ADDRESS_12 = 284, + SEMAPHORE_IO_ADDRESS_13 = 285, + SEMAPHORE_IO_ADDRESS_14 = 286, + SEMAPHORE_IO_ADDRESS_15 = 287, + SEMAPHORE_IO_LAST = 287 +} rdd_semaphore_io; +typedef enum +{ + HASH_RESULT_FIRST = 0, + HASH_RESULT_SLOT_0 = 0, + HASH_RESULT_SLOT_1 = 1, + HASH_RESULT_SLOT_2 = 2, + HASH_RESULT_SLOT_3 = 3, + HASH_RESULT_SLOT_4 = 4, + HASH_RESULT_SLOT_5 = 5, + HASH_RESULT_LAST = 5 +} rdd_hash_result; +typedef enum +{ + HASH_RESULT_IO_FIRST = 32, + HASH_RESULT_IO_ADDRESS_0 = 32, + HASH_RESULT_IO_ADDRESS_1 = 36, + HASH_RESULT_IO_ADDRESS_2 = 40, + HASH_RESULT_IO_ADDRESS_3 = 44, + HASH_RESULT_IO_ADDRESS_4 = 48, + HASH_RESULT_IO_ADDRESS_5 = 52, + HASH_RESULT_IO_LAST = 52 +} rdd_hash_result_io; +typedef enum +{ + DMA_LOOKUP_RESULT_FIRST = 0, + DMA_LOOKUP_RESULT_SLOT_0 = 0, + DMA_LOOKUP_RESULT_SLOT_1 = 1, + DMA_LOOKUP_RESULT_SLOT_2 = 2, + DMA_LOOKUP_RESULT_SLOT_3 = 3, + DMA_LOOKUP_RESULT_SLOT_4 = 4, + DMA_LOOKUP_RESULT_FOUR_STEPS = 4, + DMA_LOOKUP_RESULT_SLOT_5 = 5, + DMA_LOOKUP_RESULT_SLOT_6 = 6, + DMA_LOOKUP_RESULT_SLOT_7 = 7, + DMA_LOOKUP_RESULT_LAST = 7 +} rdd_dma_lookup_result; +typedef enum +{ + DMA_LOOKUP_RESULT_IO_FIRST = 64, + DMA_LOOKUP_RESULT_IO_ADDRESS_0 = 64, + DMA_LOOKUP_RESULT_IO_ADDRESS_1 = 68, + DMA_LOOKUP_RESULT_IO_ADDRESS_2 = 72, + DMA_LOOKUP_RESULT_IO_ADDRESS_3 = 76, + DMA_LOOKUP_RESULT_IO_ADDRESS_4 = 80, + DMA_LOOKUP_RESULT_IO_ADDRESS_5 = 84, + DMA_LOOKUP_RESULT_IO_ADDRESS_6 = 88, + DMA_LOOKUP_RESULT_IO_ADDRESS_7 = 92, + DMA_LOOKUP_RESULT_IO_LAST = 92 +} rdd_dma_lookup_result_io; +typedef enum +{ + CAM_RESULT_FIRST = 0, + CAM_RESULT_SLOT_0 = 0, + CAM_RESULT_SLOT_1 = 1, + CAM_RESULT_SLOT_2 = 2, + CAM_RESULT_SLOT_3 = 3, + CAM_RESULT_SLOT_4 = 4, + CAM_RESULT_SLOT_5 = 5, + CAM_RESULT_SLOT_6 = 6, + CAM_RESULT_SLOT_7 = 7, + CAM_RESULT_HIT_BIT = 8, + CAM_RESULT_LAST = 8 +} rdd_cam_result; +typedef enum +{ + CAM_RESULT_IO_FIRST = 96, + CAM_RESULT_IO_ADDRESS_0 = 96, + CAM_RESULT_IO_ADDRESS_1 = 100, + CAM_RESULT_IO_ADDRESS_2 = 104, + CAM_RESULT_IO_ADDRESS_3 = 108, + CAM_RESULT_IO_ADDRESS_4 = 112, + CAM_RESULT_IO_ADDRESS_5 = 116, + CAM_RESULT_IO_ADDRESS_6 = 120, + CAM_RESULT_IO_ADDRESS_7 = 124, + CAM_RESULT_IO_LAST = 124 +} rdd_cam_result_io; +typedef enum +{ + CAM_SEARCH_FIRST = 2, + CAM_SEARCH_DEPTH_4 = 2, + CAM_SEARCH_DEPTH_8 = 3, + CAM_SEARCH_DEPTH_16 = 4, + CAM_SEARCH_DEPTH_32 = 5, + CAM_SEARCH_DEPTH_128 = 7, + CAM_SEARCH_LAST = 7 +} rdd_cam_search; +typedef enum +{ + BBH_RX_ERROR_CODE_FIRST = 1, + BBH_RX_ERROR_CODE_CRC = 1, + BBH_RX_ERROR_CODE_NO_BPM = 2, + BBH_RX_ERROR_CODE_NO_SBPM = 3, + BBH_RX_ERROR_CODE_NO_DMA = 4, + BBH_RX_ERROR_CODE_NO_SDMA = 5, + BBH_RX_ERROR_CODE_PACKET_TOO_SHORT = 6, + BBH_RX_ERROR_CODE_PACKET_TOO_LONG = 7, + BBH_RX_ERROR_CODE_THIRD_FLOW = 8, + BBH_RX_ERROR_CODE_SOP_AFTER_SOP = 9, + BBH_RX_ERROR_CODE_LAST = 9 +} rdd_bbh_rx_error_code; +typedef enum +{ + IPSEC_RANGE_IO_FIRST = 524, + IPSEC_RANGE_IO_ADDRESS_3 = 524, + IPSEC_RANGE_IO_LAST = 524 +} rdd_ipsec_range_io; +typedef enum +{ + RDD_EMAC_FIRST = 0, + RDD_EMAC_ID_WIFI = 0, + RDD_EMAC_ID_0 = 1, + RDD_EMAC_ID_1 = 2, + RDD_EMAC_ID_2 = 3, + RDD_EMAC_ID_3 = 4, + RDD_EMAC_ID_4 = 5, + RDD_EMAC_ID_5 = 6, + RDD_EMAC_ID_6 = 7, + RDD_EMAC_ID_7 = 8, + RDD_EMAC_ID_COUNT = 9, + RDD_EMAC_LAST = 9 +} rdd_rdd_emac; +typedef enum +{ + FPM_ALLOC_FIRST = 0, + FPM_ALLOC_CHUNKS_8_OFFSET = 0, + FPM_ALLOC_CHUNKS_4_OFFSET = 8, + FPM_ALLOC_RESULT_SIZE = 8, + FPM_ALLOC_TOKEN_INDEX_OFFSET = 12, + FPM_ALLOC_CHUNKS_2_OFFSET = 16, + FPM_ALLOC_TOKEN_INDEX_WIDTH = 18, + FPM_ALLOC_CHUNKS_1_OFFSET = 24, + FPM_ALLOC_TOKEN_VALID_OFFSET = 31, + FPM_ALLOC_POOL_BASE = 2193621504, + FPM_ALLOC_POOL0_BASE = 2193622016, + FPM_ALLOC_LAST = 2193622016 +} rdd_fpm_alloc; +typedef enum +{ + ACTION_FIRST = 0, + ACTION_FORWARD = 0, + ACTION_TRAP = 1, + ACTION_DROP = 2, + ACTION_MULTICAST = 3, + ACTION_LAST = 3 +} rdd_action; +typedef enum +{ + ENET_HEADER_FIRST = 0, + ENET_HEADER_DA_OFFSET = 0, + ENET_HEADER_SA_OFFSET = 6, + ENET_HEADER_ETHERTYPE_OFFSET = 12, + ENET_HEADER_CTRL_OPCDE_OFFSET = 14, + ENET_HEADER_SIZE = 16, + ENET_HEADER_LAST = 16 +} rdd_enet_header; +typedef enum +{ + PFC_FRAME_FIRST = 0, + PFC_FRAME_CLASS_ENABLE_VECTOR_OFFSET = 0, + PFC_FRAME_TIME_0_OFFSET = 2, + PFC_FRAME_SIZE = 18, + PFC_FRAME_LAST = 18 +} rdd_pfc_frame; +typedef enum +{ + IP_PROTO_FIRST = 1, + IP_PROTO_ICMP = 1, + IP_PROTO_IPIP = 4, + IP_PROTO_TCP = 6, + IP_PROTO_UDP = 17, + IP_PROTO_IPV6 = 41, + IP_PROTO_GRE = 47, + IP_PROTO_UDP_LITE = 136, + IP_PROTO_LAST = 136 +} rdd_ip_proto; +typedef enum +{ + IP_FLAGS_FIRST = 1, + IP_FLAGS_DO_NOT_FRAGMENT_OFFSET = 1, + IP_FLAGS_MORE_FRAGMENTS_OFFSET = 2, + IP_FLAGS_LAST = 2 +} rdd_ip_flags; +typedef enum +{ + LAYER3_IPV6_HEADER_FIRST = 8, + LAYER3_IPV6_HEADER_SRC_IP_OFFSET = 8, + LAYER3_IPV6_HEADER_DST_IP_OFFSET = 24, + LAYER3_IPV6_HEADER_LAST = 24 +} rdd_layer3_ipv6_header; +typedef enum +{ + LAYER3_HEADER_FIRST = 0, + LAYER3_HEADER_TRAFIC_CLASS_OFFSET = 0, + LAYER3_HEADER_TOS_OFFSET = 1, + LAYER3_HEADER_TOTAL_LENGTH_OFFSET = 2, + LAYER3_HEADER_PAYLOAD_LENGTH_OFFSET = 4, + LAYER3_HEADER_FLAGS_OFFSET = 6, + LAYER3_HEADER_HOP_LIMIT_OFFSET = 7, + LAYER3_HEADER_TTL_OFFSET = 8, + LAYER3_HEADER_PROTOCOL_OFFSET = 9, + LAYER3_HEADER_IP_CHECKSUM_OFFSET = 10, + LAYER3_HEADER_SRC_IP_OFFSET = 12, + LAYER3_HEADER_DST_IP_OFFSET = 16, + LAYER3_HEADER_LAST = 16 +} rdd_layer3_header; +typedef enum +{ + LAYER3_PSEUDO_HEADER_FIRST = 0, + LAYER3_PSEUDO_HEADER_SRC_IP_OFFSET = 0, + LAYER3_PSEUDO_HEADER_DST_IP_OFFSET = 4, + LAYER3_PSEUDO_HEADER_PROTOCOL_OFFSET = 8, + LAYER3_PSEUDO_HEADER_LENGTH_OFFSET = 10, + LAYER3_PSEUDO_HEADER_HDR_LENGTH = 12, + LAYER3_PSEUDO_HEADER_PROTOCOL_F_WIDTH = 16, + LAYER3_PSEUDO_HEADER_PROTOCOL_F_OFFSET = 16, + LAYER3_PSEUDO_HEADER_LAST = 16 +} rdd_layer3_pseudo_header; +typedef enum +{ + LAYER3_IPV6_PSEUDO_HEADER_FIRST = 0, + LAYER3_IPV6_PSEUDO_HEADER_SRC_IP_OFFSET = 0, + LAYER3_IPV6_PSEUDO_HEADER_DST_IP_OFFSET = 16, + LAYER3_IPV6_PSEUDO_HEADER_LENGTH_OFFSET = 32, + LAYER3_IPV6_PSEUDO_HEADER_PROTOCOL_OFFSET = 36, + LAYER3_IPV6_PSEUDO_HEADER_HDR_LENGTH = 40, + LAYER3_IPV6_PSEUDO_HEADER_LAST = 40 +} rdd_layer3_ipv6_pseudo_header; +typedef enum +{ + LAYER4_HEADER_FIRST = 0, + LAYER4_HEADER_SRC_PORT_OFFSET = 0, + LAYER4_HEADER_ESP_SPI_OFFSET = 0, + LAYER4_HEADER_DST_PORT_OFFSET = 2, + LAYER4_HEADER_UDP_LITE_CHECKSUM_COVERAGE_OFFSET = 4, + LAYER4_HEADER_TCP_LENGTH_F_WIDTH = 4, + LAYER4_HEADER_UDP_CHECKSUM_OFFSET = 6, + LAYER4_HEADER_GRE_CALL_ID_OFFSET = 6, + LAYER4_HEADER_UDP_HDR_LENGTH = 8, + LAYER4_HEADER_TCP_LENGTH_OFFSET = 12, + LAYER4_HEADER_TCP_FLAGS_OFFSET = 13, + LAYER4_HEADER_TCP_CHECKSUM_OFFSET = 16, + LAYER4_HEADER_TCP_HDR_MIN_LENGTH = 20, + LAYER4_HEADER_TCP_LENGTH_F_OFFSET = 28, + LAYER4_HEADER_LAST = 28 +} rdd_layer4_header; +typedef enum +{ + PARSER_L2_PROTOCOL_FIRST = 1, + PARSER_L2_PROTOCOL_PPPOE_D = 1, + PARSER_L2_PROTOCOL_PPPOE_S = 2, + PARSER_L2_PROTOCOL_USER_DEFINED_0 = 8, + PARSER_L2_PROTOCOL_USER_DEFINED_1 = 9, + PARSER_L2_PROTOCOL_USER_DEFINED_2 = 10, + PARSER_L2_PROTOCOL_USER_DEFINED_3 = 11, + PARSER_L2_PROTOCOL_ARP = 12, + PARSER_L2_PROTOCOL__1588 = 13, + PARSER_L2_PROTOCOL__802_1X = 14, + PARSER_L2_PROTOCOL_MASK = 15, + PARSER_L2_PROTOCOL__802_1AG_CFM = 15, + PARSER_L2_PROTOCOL_LAST = 15 +} rdd_parser_l2_protocol; +typedef enum +{ + PARSER_L3_PROTOCOL_FIRST = 0, + PARSER_L3_PROTOCOL_OTHER = 0, + PARSER_L3_PROTOCOL_IPV4 = 1, + PARSER_L3_PROTOCOL_IPV6 = 2, + PARSER_L3_PROTOCOL_MASK = 3, + PARSER_L3_PROTOCOL_LAST = 3 +} rdd_parser_l3_protocol; +typedef enum +{ + PARSER_L4_PROTOCOL_FIRST = 0, + PARSER_L4_PROTOCOL_OTHER = 0, + PARSER_L4_PROTOCOL_TCP = 1, + PARSER_L4_PROTOCOL_UDP = 2, + PARSER_L4_PROTOCOL_IGMP = 3, + PARSER_L4_PROTOCOL_ICMP = 4, + PARSER_L4_PROTOCOL_ICMPV6 = 5, + PARSER_L4_PROTOCOL_ESP = 6, + PARSER_L4_PROTOCOL_GRE = 7, + PARSER_L4_PROTOCOL_USER_DEFINED_0 = 8, + PARSER_L4_PROTOCOL_USER_DEFINED_1 = 9, + PARSER_L4_PROTOCOL_USER_DEFINED_2 = 10, + PARSER_L4_PROTOCOL_USER_DEFINED_3 = 11, + PARSER_L4_PROTOCOL_RESERVED = 12, + PARSER_L4_PROTOCOL_IPV6 = 13, + PARSER_L4_PROTOCOL_AH = 14, + PARSER_L4_PROTOCOL_NOT_PARSED = 15, + PARSER_L4_PROTOCOL_MASK = 15, + PARSER_L4_PROTOCOL_LAST = 15 +} rdd_parser_l4_protocol; +typedef enum +{ + ACTION_ECN_FIRST = 0, + ACTION_ECN_REMARKING_OFFSET = 0, + ACTION_ECN_REMARKING_WIDTH = 2, + ACTION_ECN_LAST = 2 +} rdd_action_ecn; +typedef enum +{ + ACTION_DSCP_FIRST = 2, + ACTION_DSCP_REMARKING_OFFSET = 2, + ACTION_DSCP_REMARKING_TRAFFIC_CLASS_OFFSET = 4, + ACTION_DSCP_REMARKING_WIDTH = 6, + ACTION_DSCP_REMARKING_TRAFFIC_CLASS_WIDTH = 8, + ACTION_DSCP_LAST = 8 +} rdd_action_dscp; +typedef enum +{ + ACTION_OUTER_FIRST = 14, + ACTION_OUTER_PBITS_REMARKING_VID_OFFSET = 14, + ACTION_OUTER_LAST = 14 +} rdd_action_outer; +typedef enum +{ + ACTION_INNER_FIRST = 18, + ACTION_INNER_PBITS_REMARKING_VID_OFFSET = 18, + ACTION_INNER_LAST = 18 +} rdd_action_inner; +typedef enum +{ + ACTION_PBITS_FIRST = 2, + ACTION_PBITS_REMARKING_DSCP_F_OFFSET = 2, + ACTION_PBITS_REMARKING_PACKET_F_WIDTH = 3, + ACTION_PBITS_REMARKING_DSCP_F_WIDTH = 6, + ACTION_PBITS_REMARKING_PACKET_F_OFFSET = 13, + ACTION_PBITS_LAST = 13 +} rdd_action_pbits; +typedef enum +{ + ACTION_DS_LITE_FIRST = 40, + ACTION_DS_LITE_SIZE = 40, + ACTION_DS_LITE_LAST = 40 +} rdd_action_ds_lite; +typedef enum +{ + DS_ACTION_ID_FIRST = 0, + DS_ACTION_ID_TRAP = 0, + DS_ACTION_ID_TTL = 2, + DS_ACTION_ID_DSCP = 4, + DS_ACTION_ID_NAT = 5, + DS_ACTION_ID_GRE = 6, + DS_ACTION_ID_OPBITS = 7, + DS_ACTION_ID_IPBITS = 8, + DS_ACTION_ID_DS_LITE = 9, + DS_ACTION_ID_PPPOE = 10, + DS_ACTION_ID_TOTAL_NUM = 17, + DS_ACTION_ID_LAST = 17 +} rdd_ds_action_id; +typedef enum +{ + US_ACTION_ID_FIRST = 0, + US_ACTION_ID_TRAP = 0, + US_ACTION_ID_TTL = 2, + US_ACTION_ID_DSCP = 4, + US_ACTION_ID_NAT = 5, + US_ACTION_ID_GRE = 6, + US_ACTION_ID_OPBITS = 7, + US_ACTION_ID_IPBITS = 8, + US_ACTION_ID_DS_LITE = 9, + US_ACTION_ID_PPPOE = 10, + US_ACTION_ID_TOTAL_NUM = 17, + US_ACTION_ID_LAST = 17 +} rdd_us_action_id; +typedef enum +{ + RDD_VPORT_FIRST = 0, + RDD_VPORT_ID_0 = 0, + RDD_VPORT_ID_1 = 1, + RDD_VPORT_ID_2 = 2, + RDD_VPORT_ID_3 = 3, + RDD_VPORT_ID_4 = 4, + RDD_VPORT_ID_5 = 5, + RDD_VPORT_ID_6 = 6, + RDD_VPORT_ID_7 = 7, + RDD_VPORT_ID_8 = 8, + RDD_VPORT_ID_9 = 9, + RDD_VPORT_ID_10 = 10, + RDD_VPORT_ID_11 = 11, + RDD_VPORT_ID_12 = 12, + RDD_VPORT_ID_13 = 13, + RDD_VPORT_ID_14 = 14, + RDD_VPORT_ID_15 = 15, + RDD_VPORT_ID_16 = 16, + RDD_VPORT_ID_17 = 17, + RDD_VPORT_ID_18 = 18, + RDD_VPORT_ID_19 = 19, + RDD_VPORT_ID_20 = 20, + RDD_VPORT_ID_21 = 21, + RDD_VPORT_ID_22 = 22, + RDD_VPORT_ID_23 = 23, + RDD_VPORT_ID_24 = 24, + RDD_VPORT_ID_25 = 25, + RDD_VPORT_ID_26 = 26, + RDD_VPORT_ID_27 = 27, + RDD_VPORT_ID_28 = 28, + RDD_VPORT_ID_29 = 29, + RDD_VPORT_ID_30 = 30, + RDD_VPORT_ID_31 = 31, + RDD_VPORT_ID_32 = 32, + RDD_VPORT_ID_33 = 33, + RDD_VPORT_ID_34 = 34, + RDD_VPORT_ID_35 = 35, + RDD_VPORT_ID_36 = 36, + RDD_VPORT_ID_37 = 37, + RDD_VPORT_ID_38 = 38, + RDD_VPORT_ID_39 = 39, + RDD_VPORT_LAST = 39 +} rdd_rdd_vport; +typedef enum +{ + DSCP_TO_FIRST = 6, + DSCP_TO_PBITS_SHIFT_OFFSET = 6, + DSCP_TO_LAST = 6 +} rdd_dscp_to; +typedef enum +{ + RESOLUTION_CONTEXT_FIRST = 0, + RESOLUTION_CONTEXT_VIRTUAL_SRC_PORT_OFFSET = 0, + RESOLUTION_CONTEXT_GPE_DMA_OFFSET_WIDTH = 1, + RESOLUTION_CONTEXT_GPE_HEADER_LENGTH_WIDTH = 1, + RESOLUTION_CONTEXT_GPE_HEADER_IH_PTR_WIDTH = 2, + RESOLUTION_CONTEXT_GPE_COMMAND_LIST_PTR_WIDTH = 2, + RESOLUTION_CONTEXT_GPE_PACKET_DRR_PTR_WIDTH = 4, + RESOLUTION_CONTEXT_GPE_HEADER_LENGTH_OFFSET = 6, + RESOLUTION_CONTEXT_GPE_DMA_OFFSET_OFFSET = 7, + RESOLUTION_CONTEXT_GPE_COMMAND_LIST_PTR_OFFSET = 8, + RESOLUTION_CONTEXT_GPE_HEADER_IH_PTR_OFFSET = 10, + RESOLUTION_CONTEXT_GPE_PACKET_DRR_PTR_OFFSET = 12, + RESOLUTION_CONTEXT_LAST = 12 +} rdd_resolution_context; +typedef enum +{ + FFI_FIRST = 3, + FFI_8_LOG2_SIZE = 3, + FFI_16_LOG2_SIZE = 4, + FFI_32_LOG2_SIZE = 5, + FFI_8_SIZE = 8, + FFI_16_SIZE = 16, + FFI_32_SIZE = 32, + FFI_LAST = 32 +} rdd_ffi; +typedef enum +{ + FR_FORMAT_FIRST = 0, + FR_FORMAT_WI_WI64 = 0, + FR_FORMAT_WI_CWI32 = 1, + FR_FORMAT_WI_CWI64 = 2, + FR_FORMAT_WI_ACWI32 = 3, + FR_FORMAT_WI_ACWI64 = 4, + FR_FORMAT_LAST = 4 +} rdd_fr_format; +typedef enum +{ + BACKUP_INDEX_FIRST = 21760, + BACKUP_INDEX_FIFO_SIZE = 21760, + BACKUP_INDEX_LAST = 21760 +} rdd_backup_index; +typedef enum +{ + DMA_TYPE_FIRST = 1, + DMA_TYPE_IDMA = 1, + DMA_TYPE_HWA_RXPOST = 5, + DMA_TYPE_HWA_TXCPL = 6, + DMA_TYPE_HWA_RXCPL = 7, + DMA_TYPE_LAST = 7 +} rdd_dma_type; +#endif + +#if defined WL4908_EAP +typedef enum +{ + MODE_FIRST = 0, + MODE_DISABLED = 0, + MODE_ENABLED = 1, + MODE_LAST = 1 +} rdd_mode; +typedef enum +{ + SEMAPHORE_IO_FIRST = 272, + SEMAPHORE_IO_ADDRESS_0 = 272, + SEMAPHORE_IO_ADDRESS_1 = 273, + SEMAPHORE_IO_ADDRESS_2 = 274, + SEMAPHORE_IO_ADDRESS_3 = 275, + SEMAPHORE_IO_ADDRESS_4 = 276, + SEMAPHORE_IO_ADDRESS_5 = 277, + SEMAPHORE_IO_ADDRESS_7 = 279, + SEMAPHORE_IO_ADDRESS_8 = 280, + SEMAPHORE_IO_ADDRESS_9 = 281, + SEMAPHORE_IO_ADDRESS_10 = 282, + SEMAPHORE_IO_ADDRESS_11 = 283, + SEMAPHORE_IO_ADDRESS_12 = 284, + SEMAPHORE_IO_ADDRESS_13 = 285, + SEMAPHORE_IO_ADDRESS_14 = 286, + SEMAPHORE_IO_ADDRESS_15 = 287, + SEMAPHORE_IO_LAST = 287 +} rdd_semaphore_io; +typedef enum +{ + HASH_RESULT_FIRST = 0, + HASH_RESULT_SLOT_0 = 0, + HASH_RESULT_SLOT_1 = 1, + HASH_RESULT_SLOT_2 = 2, + HASH_RESULT_SLOT_3 = 3, + HASH_RESULT_SLOT_4 = 4, + HASH_RESULT_SLOT_5 = 5, + HASH_RESULT_LAST = 5 +} rdd_hash_result; +typedef enum +{ + HASH_RESULT_IO_FIRST = 32, + HASH_RESULT_IO_ADDRESS_0 = 32, + HASH_RESULT_IO_ADDRESS_1 = 36, + HASH_RESULT_IO_ADDRESS_2 = 40, + HASH_RESULT_IO_ADDRESS_3 = 44, + HASH_RESULT_IO_ADDRESS_4 = 48, + HASH_RESULT_IO_ADDRESS_5 = 52, + HASH_RESULT_IO_LAST = 52 +} rdd_hash_result_io; +typedef enum +{ + DMA_LOOKUP_RESULT_FIRST = 0, + DMA_LOOKUP_RESULT_SLOT_0 = 0, + DMA_LOOKUP_RESULT_SLOT_1 = 1, + DMA_LOOKUP_RESULT_SLOT_2 = 2, + DMA_LOOKUP_RESULT_SLOT_3 = 3, + DMA_LOOKUP_RESULT_SLOT_4 = 4, + DMA_LOOKUP_RESULT_FOUR_STEPS = 4, + DMA_LOOKUP_RESULT_SLOT_5 = 5, + DMA_LOOKUP_RESULT_SLOT_6 = 6, + DMA_LOOKUP_RESULT_SLOT_7 = 7, + DMA_LOOKUP_RESULT_LAST = 7 +} rdd_dma_lookup_result; +typedef enum +{ + DMA_LOOKUP_RESULT_IO_FIRST = 64, + DMA_LOOKUP_RESULT_IO_ADDRESS_0 = 64, + DMA_LOOKUP_RESULT_IO_ADDRESS_1 = 68, + DMA_LOOKUP_RESULT_IO_ADDRESS_2 = 72, + DMA_LOOKUP_RESULT_IO_ADDRESS_3 = 76, + DMA_LOOKUP_RESULT_IO_ADDRESS_4 = 80, + DMA_LOOKUP_RESULT_IO_ADDRESS_5 = 84, + DMA_LOOKUP_RESULT_IO_ADDRESS_6 = 88, + DMA_LOOKUP_RESULT_IO_ADDRESS_7 = 92, + DMA_LOOKUP_RESULT_IO_LAST = 92 +} rdd_dma_lookup_result_io; +typedef enum +{ + CAM_RESULT_FIRST = 0, + CAM_RESULT_SLOT_0 = 0, + CAM_RESULT_SLOT_1 = 1, + CAM_RESULT_SLOT_2 = 2, + CAM_RESULT_SLOT_3 = 3, + CAM_RESULT_SLOT_4 = 4, + CAM_RESULT_SLOT_5 = 5, + CAM_RESULT_SLOT_6 = 6, + CAM_RESULT_SLOT_7 = 7, + CAM_RESULT_HIT_BIT = 8, + CAM_RESULT_LAST = 8 +} rdd_cam_result; +typedef enum +{ + CAM_RESULT_IO_FIRST = 96, + CAM_RESULT_IO_ADDRESS_0 = 96, + CAM_RESULT_IO_ADDRESS_1 = 100, + CAM_RESULT_IO_ADDRESS_2 = 104, + CAM_RESULT_IO_ADDRESS_3 = 108, + CAM_RESULT_IO_ADDRESS_4 = 112, + CAM_RESULT_IO_ADDRESS_5 = 116, + CAM_RESULT_IO_ADDRESS_6 = 120, + CAM_RESULT_IO_ADDRESS_7 = 124, + CAM_RESULT_IO_LAST = 124 +} rdd_cam_result_io; +typedef enum +{ + CAM_SEARCH_FIRST = 2, + CAM_SEARCH_DEPTH_4 = 2, + CAM_SEARCH_DEPTH_8 = 3, + CAM_SEARCH_DEPTH_16 = 4, + CAM_SEARCH_DEPTH_32 = 5, + CAM_SEARCH_DEPTH_128 = 7, + CAM_SEARCH_LAST = 7 +} rdd_cam_search; +typedef enum +{ + BBH_RX_ERROR_CODE_FIRST = 1, + BBH_RX_ERROR_CODE_CRC = 1, + BBH_RX_ERROR_CODE_NO_BPM = 2, + BBH_RX_ERROR_CODE_NO_SBPM = 3, + BBH_RX_ERROR_CODE_NO_DMA = 4, + BBH_RX_ERROR_CODE_NO_SDMA = 5, + BBH_RX_ERROR_CODE_PACKET_TOO_SHORT = 6, + BBH_RX_ERROR_CODE_PACKET_TOO_LONG = 7, + BBH_RX_ERROR_CODE_THIRD_FLOW = 8, + BBH_RX_ERROR_CODE_SOP_AFTER_SOP = 9, + BBH_RX_ERROR_CODE_LAST = 9 +} rdd_bbh_rx_error_code; +typedef enum +{ + IPSEC_RANGE_IO_FIRST = 524, + IPSEC_RANGE_IO_ADDRESS_3 = 524, + IPSEC_RANGE_IO_LAST = 524 +} rdd_ipsec_range_io; +typedef enum +{ + RDD_EMAC_FIRST = 0, + RDD_EMAC_ID_WIFI = 0, + RDD_EMAC_ID_0 = 1, + RDD_EMAC_ID_1 = 2, + RDD_EMAC_ID_2 = 3, + RDD_EMAC_ID_3 = 4, + RDD_EMAC_ID_4 = 5, + RDD_EMAC_ID_5 = 6, + RDD_EMAC_ID_6 = 7, + RDD_EMAC_ID_7 = 8, + RDD_EMAC_ID_COUNT = 9, + RDD_EMAC_LAST = 9 +} rdd_rdd_emac; +typedef enum +{ + FPM_ALLOC_FIRST = 0, + FPM_ALLOC_CHUNKS_8_OFFSET = 0, + FPM_ALLOC_CHUNKS_4_OFFSET = 8, + FPM_ALLOC_RESULT_SIZE = 8, + FPM_ALLOC_TOKEN_INDEX_OFFSET = 12, + FPM_ALLOC_CHUNKS_2_OFFSET = 16, + FPM_ALLOC_TOKEN_INDEX_WIDTH = 18, + FPM_ALLOC_CHUNKS_1_OFFSET = 24, + FPM_ALLOC_TOKEN_VALID_OFFSET = 31, + FPM_ALLOC_POOL_BASE = 2193621504, + FPM_ALLOC_POOL0_BASE = 2193622016, + FPM_ALLOC_LAST = 2193622016 +} rdd_fpm_alloc; +typedef enum +{ + ACTION_FIRST = 0, + ACTION_FORWARD = 0, + ACTION_TRAP = 1, + ACTION_DROP = 2, + ACTION_MULTICAST = 3, + ACTION_LAST = 3 +} rdd_action; +typedef enum +{ + ENET_HEADER_FIRST = 0, + ENET_HEADER_DA_OFFSET = 0, + ENET_HEADER_SA_OFFSET = 6, + ENET_HEADER_ETHERTYPE_OFFSET = 12, + ENET_HEADER_CTRL_OPCDE_OFFSET = 14, + ENET_HEADER_SIZE = 16, + ENET_HEADER_LAST = 16 +} rdd_enet_header; +typedef enum +{ + PFC_FRAME_FIRST = 0, + PFC_FRAME_CLASS_ENABLE_VECTOR_OFFSET = 0, + PFC_FRAME_TIME_0_OFFSET = 2, + PFC_FRAME_SIZE = 18, + PFC_FRAME_LAST = 18 +} rdd_pfc_frame; +typedef enum +{ + IP_PROTO_FIRST = 1, + IP_PROTO_ICMP = 1, + IP_PROTO_IPIP = 4, + IP_PROTO_TCP = 6, + IP_PROTO_UDP = 17, + IP_PROTO_IPV6 = 41, + IP_PROTO_GRE = 47, + IP_PROTO_UDP_LITE = 136, + IP_PROTO_LAST = 136 +} rdd_ip_proto; +typedef enum +{ + IP_FLAGS_FIRST = 1, + IP_FLAGS_DO_NOT_FRAGMENT_OFFSET = 1, + IP_FLAGS_MORE_FRAGMENTS_OFFSET = 2, + IP_FLAGS_LAST = 2 +} rdd_ip_flags; +typedef enum +{ + LAYER3_IPV6_HEADER_FIRST = 8, + LAYER3_IPV6_HEADER_SRC_IP_OFFSET = 8, + LAYER3_IPV6_HEADER_DST_IP_OFFSET = 24, + LAYER3_IPV6_HEADER_LAST = 24 +} rdd_layer3_ipv6_header; +typedef enum +{ + LAYER3_HEADER_FIRST = 0, + LAYER3_HEADER_TRAFIC_CLASS_OFFSET = 0, + LAYER3_HEADER_TOS_OFFSET = 1, + LAYER3_HEADER_TOTAL_LENGTH_OFFSET = 2, + LAYER3_HEADER_PAYLOAD_LENGTH_OFFSET = 4, + LAYER3_HEADER_FLAGS_OFFSET = 6, + LAYER3_HEADER_HOP_LIMIT_OFFSET = 7, + LAYER3_HEADER_TTL_OFFSET = 8, + LAYER3_HEADER_PROTOCOL_OFFSET = 9, + LAYER3_HEADER_IP_CHECKSUM_OFFSET = 10, + LAYER3_HEADER_SRC_IP_OFFSET = 12, + LAYER3_HEADER_DST_IP_OFFSET = 16, + LAYER3_HEADER_LAST = 16 +} rdd_layer3_header; +typedef enum +{ + LAYER3_PSEUDO_HEADER_FIRST = 0, + LAYER3_PSEUDO_HEADER_SRC_IP_OFFSET = 0, + LAYER3_PSEUDO_HEADER_DST_IP_OFFSET = 4, + LAYER3_PSEUDO_HEADER_PROTOCOL_OFFSET = 8, + LAYER3_PSEUDO_HEADER_LENGTH_OFFSET = 10, + LAYER3_PSEUDO_HEADER_HDR_LENGTH = 12, + LAYER3_PSEUDO_HEADER_PROTOCOL_F_WIDTH = 16, + LAYER3_PSEUDO_HEADER_PROTOCOL_F_OFFSET = 16, + LAYER3_PSEUDO_HEADER_LAST = 16 +} rdd_layer3_pseudo_header; +typedef enum +{ + LAYER3_IPV6_PSEUDO_HEADER_FIRST = 0, + LAYER3_IPV6_PSEUDO_HEADER_SRC_IP_OFFSET = 0, + LAYER3_IPV6_PSEUDO_HEADER_DST_IP_OFFSET = 16, + LAYER3_IPV6_PSEUDO_HEADER_LENGTH_OFFSET = 32, + LAYER3_IPV6_PSEUDO_HEADER_PROTOCOL_OFFSET = 36, + LAYER3_IPV6_PSEUDO_HEADER_HDR_LENGTH = 40, + LAYER3_IPV6_PSEUDO_HEADER_LAST = 40 +} rdd_layer3_ipv6_pseudo_header; +typedef enum +{ + LAYER4_HEADER_FIRST = 0, + LAYER4_HEADER_SRC_PORT_OFFSET = 0, + LAYER4_HEADER_ESP_SPI_OFFSET = 0, + LAYER4_HEADER_DST_PORT_OFFSET = 2, + LAYER4_HEADER_UDP_LITE_CHECKSUM_COVERAGE_OFFSET = 4, + LAYER4_HEADER_TCP_LENGTH_F_WIDTH = 4, + LAYER4_HEADER_UDP_CHECKSUM_OFFSET = 6, + LAYER4_HEADER_GRE_CALL_ID_OFFSET = 6, + LAYER4_HEADER_UDP_HDR_LENGTH = 8, + LAYER4_HEADER_TCP_LENGTH_OFFSET = 12, + LAYER4_HEADER_TCP_FLAGS_OFFSET = 13, + LAYER4_HEADER_TCP_CHECKSUM_OFFSET = 16, + LAYER4_HEADER_TCP_HDR_MIN_LENGTH = 20, + LAYER4_HEADER_TCP_LENGTH_F_OFFSET = 28, + LAYER4_HEADER_LAST = 28 +} rdd_layer4_header; +typedef enum +{ + PARSER_L2_PROTOCOL_FIRST = 1, + PARSER_L2_PROTOCOL_PPPOE_D = 1, + PARSER_L2_PROTOCOL_PPPOE_S = 2, + PARSER_L2_PROTOCOL_USER_DEFINED_0 = 8, + PARSER_L2_PROTOCOL_USER_DEFINED_1 = 9, + PARSER_L2_PROTOCOL_USER_DEFINED_2 = 10, + PARSER_L2_PROTOCOL_USER_DEFINED_3 = 11, + PARSER_L2_PROTOCOL_ARP = 12, + PARSER_L2_PROTOCOL__1588 = 13, + PARSER_L2_PROTOCOL__802_1X = 14, + PARSER_L2_PROTOCOL_MASK = 15, + PARSER_L2_PROTOCOL__802_1AG_CFM = 15, + PARSER_L2_PROTOCOL_LAST = 15 +} rdd_parser_l2_protocol; +typedef enum +{ + PARSER_L3_PROTOCOL_FIRST = 0, + PARSER_L3_PROTOCOL_OTHER = 0, + PARSER_L3_PROTOCOL_IPV4 = 1, + PARSER_L3_PROTOCOL_IPV6 = 2, + PARSER_L3_PROTOCOL_MASK = 3, + PARSER_L3_PROTOCOL_LAST = 3 +} rdd_parser_l3_protocol; +typedef enum +{ + PARSER_L4_PROTOCOL_FIRST = 0, + PARSER_L4_PROTOCOL_OTHER = 0, + PARSER_L4_PROTOCOL_TCP = 1, + PARSER_L4_PROTOCOL_UDP = 2, + PARSER_L4_PROTOCOL_IGMP = 3, + PARSER_L4_PROTOCOL_ICMP = 4, + PARSER_L4_PROTOCOL_ICMPV6 = 5, + PARSER_L4_PROTOCOL_ESP = 6, + PARSER_L4_PROTOCOL_GRE = 7, + PARSER_L4_PROTOCOL_USER_DEFINED_0 = 8, + PARSER_L4_PROTOCOL_USER_DEFINED_1 = 9, + PARSER_L4_PROTOCOL_USER_DEFINED_2 = 10, + PARSER_L4_PROTOCOL_USER_DEFINED_3 = 11, + PARSER_L4_PROTOCOL_RESERVED = 12, + PARSER_L4_PROTOCOL_IPV6 = 13, + PARSER_L4_PROTOCOL_AH = 14, + PARSER_L4_PROTOCOL_NOT_PARSED = 15, + PARSER_L4_PROTOCOL_MASK = 15, + PARSER_L4_PROTOCOL_LAST = 15 +} rdd_parser_l4_protocol; +typedef enum +{ + ACTION_ECN_FIRST = 0, + ACTION_ECN_REMARKING_OFFSET = 0, + ACTION_ECN_REMARKING_WIDTH = 2, + ACTION_ECN_LAST = 2 +} rdd_action_ecn; +typedef enum +{ + ACTION_DSCP_FIRST = 2, + ACTION_DSCP_REMARKING_OFFSET = 2, + ACTION_DSCP_REMARKING_TRAFFIC_CLASS_OFFSET = 4, + ACTION_DSCP_REMARKING_WIDTH = 6, + ACTION_DSCP_REMARKING_TRAFFIC_CLASS_WIDTH = 8, + ACTION_DSCP_LAST = 8 +} rdd_action_dscp; +typedef enum +{ + ACTION_OUTER_FIRST = 14, + ACTION_OUTER_PBITS_REMARKING_VID_OFFSET = 14, + ACTION_OUTER_LAST = 14 +} rdd_action_outer; +typedef enum +{ + ACTION_INNER_FIRST = 18, + ACTION_INNER_PBITS_REMARKING_VID_OFFSET = 18, + ACTION_INNER_LAST = 18 +} rdd_action_inner; +typedef enum +{ + ACTION_PBITS_FIRST = 2, + ACTION_PBITS_REMARKING_DSCP_F_OFFSET = 2, + ACTION_PBITS_REMARKING_PACKET_F_WIDTH = 3, + ACTION_PBITS_REMARKING_DSCP_F_WIDTH = 6, + ACTION_PBITS_REMARKING_PACKET_F_OFFSET = 13, + ACTION_PBITS_LAST = 13 +} rdd_action_pbits; +typedef enum +{ + ACTION_DS_LITE_FIRST = 40, + ACTION_DS_LITE_SIZE = 40, + ACTION_DS_LITE_LAST = 40 +} rdd_action_ds_lite; +typedef enum +{ + DS_ACTION_ID_FIRST = 0, + DS_ACTION_ID_TRAP = 0, + DS_ACTION_ID_TTL = 2, + DS_ACTION_ID_DSCP = 4, + DS_ACTION_ID_NAT = 5, + DS_ACTION_ID_GRE = 6, + DS_ACTION_ID_OPBITS = 7, + DS_ACTION_ID_IPBITS = 8, + DS_ACTION_ID_DS_LITE = 9, + DS_ACTION_ID_PPPOE = 10, + DS_ACTION_ID_TOTAL_NUM = 17, + DS_ACTION_ID_LAST = 17 +} rdd_ds_action_id; +typedef enum +{ + US_ACTION_ID_FIRST = 0, + US_ACTION_ID_TRAP = 0, + US_ACTION_ID_TTL = 2, + US_ACTION_ID_DSCP = 4, + US_ACTION_ID_NAT = 5, + US_ACTION_ID_GRE = 6, + US_ACTION_ID_OPBITS = 7, + US_ACTION_ID_IPBITS = 8, + US_ACTION_ID_DS_LITE = 9, + US_ACTION_ID_PPPOE = 10, + US_ACTION_ID_TOTAL_NUM = 17, + US_ACTION_ID_LAST = 17 +} rdd_us_action_id; +typedef enum +{ + RDD_VPORT_FIRST = 0, + RDD_VPORT_ID_0 = 0, + RDD_VPORT_ID_1 = 1, + RDD_VPORT_ID_2 = 2, + RDD_VPORT_ID_3 = 3, + RDD_VPORT_ID_4 = 4, + RDD_VPORT_ID_5 = 5, + RDD_VPORT_ID_6 = 6, + RDD_VPORT_ID_7 = 7, + RDD_VPORT_ID_8 = 8, + RDD_VPORT_ID_9 = 9, + RDD_VPORT_ID_10 = 10, + RDD_VPORT_ID_11 = 11, + RDD_VPORT_ID_12 = 12, + RDD_VPORT_ID_13 = 13, + RDD_VPORT_ID_14 = 14, + RDD_VPORT_ID_15 = 15, + RDD_VPORT_ID_16 = 16, + RDD_VPORT_ID_17 = 17, + RDD_VPORT_ID_18 = 18, + RDD_VPORT_ID_19 = 19, + RDD_VPORT_ID_20 = 20, + RDD_VPORT_ID_21 = 21, + RDD_VPORT_ID_22 = 22, + RDD_VPORT_ID_23 = 23, + RDD_VPORT_ID_24 = 24, + RDD_VPORT_ID_25 = 25, + RDD_VPORT_ID_26 = 26, + RDD_VPORT_ID_27 = 27, + RDD_VPORT_ID_28 = 28, + RDD_VPORT_ID_29 = 29, + RDD_VPORT_ID_30 = 30, + RDD_VPORT_ID_31 = 31, + RDD_VPORT_ID_32 = 32, + RDD_VPORT_ID_33 = 33, + RDD_VPORT_ID_34 = 34, + RDD_VPORT_ID_35 = 35, + RDD_VPORT_ID_36 = 36, + RDD_VPORT_ID_37 = 37, + RDD_VPORT_ID_38 = 38, + RDD_VPORT_ID_39 = 39, + RDD_VPORT_LAST = 39 +} rdd_rdd_vport; +typedef enum +{ + DSCP_TO_FIRST = 6, + DSCP_TO_PBITS_SHIFT_OFFSET = 6, + DSCP_TO_LAST = 6 +} rdd_dscp_to; +typedef enum +{ + RESOLUTION_CONTEXT_FIRST = 0, + RESOLUTION_CONTEXT_VIRTUAL_SRC_PORT_OFFSET = 0, + RESOLUTION_CONTEXT_GPE_DMA_OFFSET_WIDTH = 1, + RESOLUTION_CONTEXT_GPE_HEADER_LENGTH_WIDTH = 1, + RESOLUTION_CONTEXT_GPE_HEADER_IH_PTR_WIDTH = 2, + RESOLUTION_CONTEXT_GPE_COMMAND_LIST_PTR_WIDTH = 2, + RESOLUTION_CONTEXT_GPE_PACKET_DRR_PTR_WIDTH = 4, + RESOLUTION_CONTEXT_GPE_HEADER_LENGTH_OFFSET = 6, + RESOLUTION_CONTEXT_GPE_DMA_OFFSET_OFFSET = 7, + RESOLUTION_CONTEXT_GPE_COMMAND_LIST_PTR_OFFSET = 8, + RESOLUTION_CONTEXT_GPE_HEADER_IH_PTR_OFFSET = 10, + RESOLUTION_CONTEXT_GPE_PACKET_DRR_PTR_OFFSET = 12, + RESOLUTION_CONTEXT_LAST = 12 +} rdd_resolution_context; +typedef enum +{ + FFI_FIRST = 3, + FFI_8_LOG2_SIZE = 3, + FFI_16_LOG2_SIZE = 4, + FFI_32_LOG2_SIZE = 5, + FFI_8_SIZE = 8, + FFI_16_SIZE = 16, + FFI_32_SIZE = 32, + FFI_LAST = 32 +} rdd_ffi; +typedef enum +{ + FR_FORMAT_FIRST = 0, + FR_FORMAT_WI_WI64 = 0, + FR_FORMAT_WI_CWI32 = 1, + FR_FORMAT_WI_CWI64 = 2, + FR_FORMAT_WI_ACWI32 = 3, + FR_FORMAT_WI_ACWI64 = 4, + FR_FORMAT_LAST = 4 +} rdd_fr_format; +typedef enum +{ + BACKUP_INDEX_FIRST = 21760, + BACKUP_INDEX_FIFO_SIZE = 21760, + BACKUP_INDEX_LAST = 21760 +} rdd_backup_index; +typedef enum +{ + DMA_TYPE_FIRST = 1, + DMA_TYPE_IDMA = 1, + DMA_TYPE_HWA_RXPOST = 5, + DMA_TYPE_HWA_TXCPL = 6, + DMA_TYPE_HWA_RXCPL = 7, + DMA_TYPE_LAST = 7 +} rdd_dma_type; +#endif +#endif /* _RDD_DATA_STRUCTURES_AUTO_H */ diff --git a/arch/arm/mach-bcmbca/rdp/rdd_defs.h b/arch/arm/mach-bcmbca/rdp/rdd_defs.h new file mode 100755 index 0000000000..42df2046a5 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_defs.h @@ -0,0 +1,1380 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef _BL_LILAC_DRV_RUNNER_RDD_DEFS_H +#define _BL_LILAC_DRV_RUNNER_RDD_DEFS_H + +#include "rdpa_types.h" +#include "rdpa_cpu_basic.h" +#include "rdd_data_structures_auto.h" + +/* Dependency in rdd_wl4908_partial_legacy_conv.h */ +typedef enum { + rdd_egress_phy_eth_lan = 0, + rdd_egress_phy_wlan, + rdd_egress_phy_wan_start, + rdd_egress_phy_eth_wan = rdd_egress_phy_wan_start, + rdd_egress_phy_dsl, + rdd_egress_phy_gpon = rdd_egress_phy_eth_wan, + rdd_egress_phy_max /* can only support 4 types */ +} rdd_egress_phy_t; + +#if defined(WL4908) +#include "rdd_wl4908_partial_legacy_conv.h" +#endif + +/* Runner Device Driver Errors */ +typedef enum +{ + BL_LILAC_RDD_OK = 0, + BL_LILAC_RDD_ERROR_MALLOC_FAILED = 10, + BL_LILAC_RDD_ERROR_ILLEGAL_BRIDGE_PORT_ID = 11, + BL_LILAC_RDD_ERROR_ILLEGAL_EMAC_ID = 12, + BL_LILAC_RDD_ERROR_ILLEGAL_QUEUE_ID = 13, + BL_LILAC_RDD_ERROR_ILLEGAL_WAN_CHANNEL_ID = 14, + BL_LILAC_RDD_ERROR_ILLEGAL_RATE_CONTROLLER_ID = 15, + BL_LILAC_RDD_ERROR_ILLEGAL_RATE_SHAPER_ID = 16, + BL_LILAC_RDD_ERROR_ILLEGAL_POLICER_ID = 17, + BL_LILAC_RDD_ERROR_ILLEGAL_DIRECTION = 18, + BL_LILAC_RDD_ERROR_ILLEGAL_RUNNER_ID = 19, + BL_LILAC_RDD_ERROR_RATE_CONTROLLERS_POOL_OVERFLOW = 50, + BL_LILAC_RDD_ERROR_RATE_CONTROLLER_NOT_CONFIGURED = 52, + BL_LILAC_RDD_ERROR_RATE_SHAPER_NOT_CONFIGURED = 55, + BL_LILAC_RDD_ERROR_GPON_TX_QUEUES_POOL_OVERFLOW = 70, + BL_LILAC_RDD_ERROR_GPON_TX_QUEUE_NOT_CONFIGURED = 72, + BL_LILAC_RDD_ERROR_GPON_TX_QUEUE_EMPTY = 73, + BL_LILAC_RDD_ERROR_CPU_RX_QUEUE_ILLEGAL = 100, + BL_LILAC_RDD_ERROR_CPU_RX_REASON_ILLEGAL = 101, + BL_LILAC_RDD_ERROR_CPU_RX_QUEUE_EMPTY = 102, + BL_LILAC_RDD_ERROR_CPU_RX_QUEUE_INVALID = 103, + BL_LILAC_RDD_ERROR_CPU_TX_QUEUE_FULL = 120, + BL_LILAC_RDD_ERROR_CPU_TX_NOT_ALLOWED = 122, + BL_LILAC_RDD_ERROR_PCI_TX_QUEUE_EMPTY = 130, + BL_LILAC_RDD_ERROR_PCI_QUEUE_THRESHOLD_TOO_SMALL = 131, + BL_LILAC_RDD_ERROR_ADD_LOOKUP_ENTRY = 150, + BL_LILAC_RDD_ERROR_REMOVE_LOOKUP_ENTRY = 151, + BL_LILAC_RDD_ERROR_GET_LOOKUP_ENTRY = 152, + BL_LILAC_RDD_ERROR_LOOKUP_ENTRY_EXISTS = 153, + BL_LILAC_RDD_ERROR_HASH_TABLE_NO_EMPTY_ENTRY = 156, + BL_LILAC_RDD_ERROR_HASH_TABLE_NO_MATCHING_KEY = 157, + BL_LILAC_RDD_ERROR_ADD_LOOKUP_NO_EMPTY_ENTRY = 158, + BL_LILAC_RDD_ERROR_ILLEGAL_MAC_ENTRY_ID = 160, + BL_LILAC_RDD_ERROR_GET_MAC_ENTRY = 161, + BL_LILAC_RDD_ERROR_MAC_ENTRY_EXISTS = 162, + BL_LILAC_RDD_ERROR_MAC_ENTRY_DOESNT_EXIST = 163, + BL_LILAC_RDD_ERROR_ILLEGAL_ARP_ENTRY_ID = 170, + BL_LILAC_RDD_ERROR_ILLEGAL_IPTV_ENTRY_ID = 175, + BL_LILAC_RDD_ERROR_INGRESS_CLASSIFICATION_CFG_FULL = 180, + BL_LILAC_RDD_ERROR_INGRESS_CLASSIFICATION_CFG_ILEGGAL_GROUP_SORT = 181, + BL_LILAC_RDD_ERROR_INGRESS_CLASSIFICATION_CFG_NOT_EXIST = 182, + BL_LILAC_RDD_ERROR_INGRESS_CLASSIFICATION_CFG_KEY_TOO_LONG = 183, + BL_LILAC_RDD_ERROR_INGRESS_CLASSIFICATION_CFG_LONG_TABLE_FULL = 184, + BL_LILAC_RDD_ERROR_CAM_LOOKUP_TABLE_FULL = 200, + BL_LILAC_RDD_ERROR_CAM_LOOKUP_TABLE_EMPTY = 201, + BL_LILAC_RDD_ERROR_CAM_LOOKUP_FAILED = 202, + BL_LILAC_RDD_ERROR_CAM_INSERTION_FAILED = 203, + BL_LILAC_RDD_ERROR_BPM_ALLOC_FAIL = 230, + BL_LILAC_RDD_ERROR_BPM_FREE_FAIL = 231, + BL_LILAC_RDD_ERROR_ILLEGAL_PBITS = 300, + BL_LILAC_RDD_ERROR_ILLEGAL_TRAFFIC_CLASS = 301, + BL_LILAC_RDD_ERROR_ILLEGAL_WAN_MAPPING_TABLE_INDEX = 302, + BL_LILAC_RDD_ERROR_ILLEGAL_PBITS_TO_WAN_FLOW_MAPPING_TABLE = 303, + BL_LILAC_RDD_ERROR_ADD_CONTEXT_ENTRY = 350, + BL_LILAC_RDD_ERROR_CONTEXT_ENTRY_INVALID = 351, + BL_LILAC_RDD_ERROR_ILLEGAL_SUBNET_ID = 360, + BL_LILAC_RDD_ERROR_IPTV_TABLE_ENTRY_EXISTS = 400, + BL_LILAC_RDD_ERROR_IPTV_FORWARDING_TABLE_FULL = 401, + BL_LILAC_RDD_ERROR_IPTV_SRC_IP_COUNTER_NOT_ZERO = 402, + BL_LILAC_RDD_ERROR_IPTV_WITH_SRC_IP_ANY_EXISTS = 403, + BL_LILAC_RDD_ERROR_IPTV_TABLE_ENTRY_NOT_EXISTS = 404, + BL_LILAC_RDD_ERROR_ILLEGAL_IPTV_TABLE_CACHE_SIZE = 405, + BL_LILAC_RDD_ERROR_IPTV_SRC_IP_TABLE_FULL = 406, + BL_LILAC_RDD_ERROR_IPTV_CONTEXT_TABLES_TABLE_FULL = 407, + BL_LILAC_RDD_ERROR_DDR_CONTEXT_TABLE_TABLE_FULL = 408, + BL_LILAC_RDD_ERROR_TIMER_TASK_TABLE_FULL = 440, + BL_LILAC_RDD_ERROR_TIMER_TASK_PERIOD = 441, + BL_LILAC_RDD_ERROR_NO_FREE_SKB = 450, + BL_LILAC_RDD_ERROR_1588_TX = 451, + BL_LILAC_RDD_ERROR_NO_FREE_GSODESC = 452, + BL_LILAC_RDD_ERROR_SPDSVC_RESOURCE_BUSY = 453, + BL_LILAC_RDD_ERROR_INGRESS_RATE_LIMITER_BUDGET_TOO_LARGE = 460, + BL_LILAC_RDD_ERROR_INGRESS_RATE_LIMITER_FLOW_CONTROL_THRESHOLD_TOO_LARGE = 461, + BL_LILAC_RDD_ERROR_GPON_SNIFFER_NULL_PD_PTR = 500, + BL_LILAC_RDD_ERROR_SMC_PPS_SEND_LEN_LESS_THEN_3 = 600, + BL_LILAC_RDD_ERROR_SMC_INVALID_SEND_LENGTH = 601, + BL_LILAC_RDD_ERROR_SMC_INVALID_RECEIVE_LENGTH = 602, + BL_LILAC_RDD_ERROR_MTU_INVALID_LENGTH = 603, + BL_LILAC_RDD_ERROR_ILLEGAL_IPSEC_SA_DESC_TABLE_INDEX = 700, + BL_LILAC_RDD_ERROR_IPSEC_AUTH_ALG_INVALID = 701, + BL_LILAC_RDD_ERROR_IPSEC_CRYPT_ALG_INVALID = 702, + BL_LILAC_RDD_ERROR_IPSEC_CRYPT_MECH_INVALID = 703, + BL_LILAC_RDD_ERROR_IPSEC_CRYPT_NXTHDR_INVALID = 704, + BL_LILAC_RDD_ERROR_IPHOST_TABLE_INDEX_INVALID = 705, + BL_LILAC_RDD_ERROR_HOST_MAC_TABLE_INDEX_INVALID = 706, +} +BL_LILAC_RDD_ERROR_DTE; + + +#define BL_LILAC_RDD_IS_WAN_BRIDGE_PORT(__port) \ + ( (__port) == BL_LILAC_RDD_WAN0_BRIDGE_PORT || (__port) == BL_LILAC_RDD_WAN1_BRIDGE_PORT ) +typedef enum +{ + BL_LILAC_RDD_WAN0_BRIDGE_PORT = 0, /* DSL WAN */ + BL_LILAC_RDD_WAN1_BRIDGE_PORT = 1, /* ETH WAN */ + BL_LILAC_RDD_LAN0_BRIDGE_PORT = 2, + BL_LILAC_RDD_LAN1_BRIDGE_PORT = 3, + BL_LILAC_RDD_LAN2_BRIDGE_PORT = 4, + BL_LILAC_RDD_LAN3_BRIDGE_PORT = 5, + BL_LILAC_RDD_LAN4_BRIDGE_PORT = 6, + BL_LILAC_RDD_LAN5_BRIDGE_PORT = 7, + BL_LILAC_RDD_LAN6_BRIDGE_PORT = 8, + BL_LILAC_RDD_LAN7_BRIDGE_PORT = 9, + BL_LILAC_RDD_VIRTUAL_BRIDGE_PORT = 10, /* Used to represent switch IMP Port */ + BL_LILAC_RDD_ANY_BRIDGE_PORT = 11, /* matches any port, used by Speed Service */ + BL_LILAC_RDD_CPU_BRIDGE_PORT = 12, + BL_LILAC_RDD_PCI_BRIDGE_PORT = 13, /* must match DRV_BPM_SP_SPARE_1 */ + BL_LILAC_RDD_WAN_QUASI_BRIDGE_PORT = 15, + BL_LILAC_RDD_WAN_ROUTER_PORT = 17, + BL_LILAC_RDD_WAN_IPTV_BRIDGE_PORT = 18, + BL_LILAC_RDD_MULTICAST_LAN0_BRIDGE_PORT = 0x10, + BL_LILAC_RDD_MULTICAST_LAN1_BRIDGE_PORT = 0x20, + BL_LILAC_RDD_MULTICAST_LAN2_BRIDGE_PORT = 0x40, + BL_LILAC_RDD_MULTICAST_LAN3_BRIDGE_PORT = 0x80, + BL_LILAC_RDD_MULTICAST_LAN4_BRIDGE_PORT = 0x100, + BL_LILAC_RDD_MULTICAST_PCI_BRIDGE_PORT = 0x200, +} +BL_LILAC_RDD_BRIDGE_PORT_DTE; + +#define BL_LILAC_RDD_WAN_BRIDGE_PORT BL_LILAC_RDD_WAN0_BRIDGE_PORT + +typedef enum +{ + BL_LILAC_RDD_WAN_PHYSICAL_PORT_GPON = 0, + BL_LILAC_RDD_WAN_PHYSICAL_PORT_ETH4 = 1, + BL_LILAC_RDD_WAN_PHYSICAL_PORT_ETH5 = 2, + BL_LILAC_RDD_WAN_PHYSICAL_PORT_ETH0 = 3, + BL_LILAC_RDD_WAN_PHYSICAL_PORT_EPON = 4, + BL_LILAC_RDD_WAN_PHYSICAL_PORT_DSL = 5, +} +BL_LILAC_RDD_WAN_PHYSICAL_PORT_DTE; + + +#if defined(WL4908) +#define BL_LILAC_RDD_EMAC_ID_START RDD_EMAC_FIRST +#define BL_LILAC_RDD_EMAC_ID_PCI RDD_EMAC_ID_WIFI +#define BL_LILAC_RDD_EMAC_ID_0 RDD_EMAC_ID_0 +#define BL_LILAC_RDD_EMAC_ID_1 RDD_EMAC_ID_1 +#define BL_LILAC_RDD_EMAC_ID_2 RDD_EMAC_ID_2 +#define BL_LILAC_RDD_EMAC_ID_3 RDD_EMAC_ID_3 +#define BL_LILAC_RDD_EMAC_ID_4 RDD_EMAC_ID_4 +#define BL_LILAC_RDD_EMAC_ID_5 RDD_EMAC_ID_5 +#define BL_LILAC_RDD_EMAC_ID_6 RDD_EMAC_ID_6 +#define BL_LILAC_RDD_EMAC_ID_7 RDD_EMAC_ID_7 +#define BL_LILAC_RDD_EMAC_ID_COUNT RDD_EMAC_ID_COUNT +typedef rdd_rdd_emac BL_LILAC_RDD_EMAC_ID_DTE; +#else +typedef enum +{ + BL_LILAC_RDD_EMAC_ID_START = 0, + BL_LILAC_RDD_EMAC_ID_PCI = 0, + BL_LILAC_RDD_EMAC_ID_0 = 1, + BL_LILAC_RDD_EMAC_ID_1 = 2, + BL_LILAC_RDD_EMAC_ID_2 = 3, + BL_LILAC_RDD_EMAC_ID_3 = 4, + BL_LILAC_RDD_EMAC_ID_4 = 5, +#if defined(DSL_63138) || defined(DSL_63148) + BL_LILAC_RDD_EMAC_ID_5 = 6, + BL_LILAC_RDD_EMAC_ID_6 = 7, + BL_LILAC_RDD_EMAC_ID_7 = 8, +#endif + BL_LILAC_RDD_EMAC_ID_COUNT , +} +BL_LILAC_RDD_EMAC_ID_DTE; +#endif + +#define RDD_WAN0_VPORT RDD_VPORT_ID_0 +#define RDD_LAN0_VPORT RDD_VPORT_ID_1 +#define RDD_LAN1_VPORT RDD_VPORT_ID_2 +#define RDD_LAN2_VPORT RDD_VPORT_ID_3 +#define RDD_LAN3_VPORT RDD_VPORT_ID_4 +#define RDD_LAN4_VPORT RDD_VPORT_ID_5 +#define RDD_LAN5_VPORT RDD_VPORT_ID_6 +#define RDD_LAN6_VPORT RDD_VPORT_ID_7 +#if !defined(WL4908) +#define RDD_LAN_VPORT_LAST RDD_LAN6_VPORT +#endif +#define RDD_WLAN0_VPORT RDD_VPORT_ID_8 + +typedef rdd_rdd_emac rdd_emac_id_t; + +typedef uint32_t rdd_emac_id_vector_t; + +static inline rdd_emac_id_vector_t rdd_emac_id_to_vector(rdd_emac_id_t emac, bdmf_boolean is_iptv) +{ + return 1LL << emac; +} +#define RDD_EMAC_PORT_TO_VECTOR(rdd_emac_id, is_iptv) rdd_emac_id_to_vector(rdd_emac_id, is_iptv) + +typedef enum +{ + RDD_WAN_CHANNEL_UNASSIGNED = -1, + RDD_WAN_CHANNEL_0 = 0, + RDD_WAN_CHANNEL_1 = 1, + RDD_WAN_CHANNEL_2 = 2, + RDD_WAN_CHANNEL_3 = 3, + RDD_WAN_CHANNEL_4 = 4, + RDD_WAN_CHANNEL_5 = 5, + RDD_WAN_CHANNEL_6 = 6, + RDD_WAN_CHANNEL_7 = 7, + RDD_WAN_CHANNEL_8 = 8, + RDD_WAN_CHANNEL_9 = 9, + RDD_WAN_CHANNEL_10 = 10, + RDD_WAN_CHANNEL_11 = 11, + RDD_WAN_CHANNEL_12 = 12, + RDD_WAN_CHANNEL_13 = 13, + RDD_WAN_CHANNEL_14 = 14, + RDD_WAN_CHANNEL_15 = 15, + RDD_WAN_CHANNEL_16 = 16, + RDD_WAN_CHANNEL_17 = 17, + RDD_WAN_CHANNEL_18 = 18, + RDD_WAN_CHANNEL_19 = 19, + RDD_WAN_CHANNEL_20 = 20, + RDD_WAN_CHANNEL_21 = 21, + RDD_WAN_CHANNEL_22 = 22, + RDD_WAN_CHANNEL_23 = 23, + RDD_WAN_CHANNEL_24 = 24, + RDD_WAN_CHANNEL_25 = 25, + RDD_WAN_CHANNEL_26 = 26, + RDD_WAN_CHANNEL_27 = 27, + RDD_WAN_CHANNEL_28 = 28, + RDD_WAN_CHANNEL_29 = 29, + RDD_WAN_CHANNEL_30 = 30, + RDD_WAN_CHANNEL_31 = 31, + RDD_WAN_CHANNEL_32 = 32, + RDD_WAN_CHANNEL_33 = 33, + RDD_WAN_CHANNEL_34 = 34, + RDD_WAN_CHANNEL_35 = 35, + RDD_WAN_CHANNEL_36 = 36, + RDD_WAN_CHANNEL_37 = 37, + RDD_WAN_CHANNEL_38 = 38, + RDD_WAN_CHANNEL_39 = 39, +} +RDD_WAN_CHANNEL_ID; + +#define RDD_WAN0_CHANNEL_BASE RDD_WAN_CHANNEL_1 +#define RDD_WAN1_CHANNEL_BASE RDD_WAN_CHANNEL_0 + +typedef enum +{ + BL_LILAC_RDD_RATE_CONTROLLER_UNASSIGNED = -1, + BL_LILAC_RDD_RATE_CONTROLLER_0 = 0, + BL_LILAC_RDD_RATE_CONTROLLER_1 = 1, + BL_LILAC_RDD_RATE_CONTROLLER_2 = 2, + BL_LILAC_RDD_RATE_CONTROLLER_3 = 3, + BL_LILAC_RDD_RATE_CONTROLLER_4 = 4, + BL_LILAC_RDD_RATE_CONTROLLER_5 = 5, + BL_LILAC_RDD_RATE_CONTROLLER_6 = 6, + BL_LILAC_RDD_RATE_CONTROLLER_7 = 7, + BL_LILAC_RDD_RATE_CONTROLLER_8 = 8, + BL_LILAC_RDD_RATE_CONTROLLER_9 = 9, + BL_LILAC_RDD_RATE_CONTROLLER_10 = 10, + BL_LILAC_RDD_RATE_CONTROLLER_11 = 11, + BL_LILAC_RDD_RATE_CONTROLLER_12 = 12, + BL_LILAC_RDD_RATE_CONTROLLER_13 = 13, + BL_LILAC_RDD_RATE_CONTROLLER_14 = 14, + BL_LILAC_RDD_RATE_CONTROLLER_15 = 15, + BL_LILAC_RDD_RATE_CONTROLLER_16 = 16, + BL_LILAC_RDD_RATE_CONTROLLER_17 = 17, + BL_LILAC_RDD_RATE_CONTROLLER_18 = 18, + BL_LILAC_RDD_RATE_CONTROLLER_19 = 19, + BL_LILAC_RDD_RATE_CONTROLLER_20 = 20, + BL_LILAC_RDD_RATE_CONTROLLER_21 = 21, + BL_LILAC_RDD_RATE_CONTROLLER_22 = 22, + BL_LILAC_RDD_RATE_CONTROLLER_23 = 23, + BL_LILAC_RDD_RATE_CONTROLLER_24 = 24, + BL_LILAC_RDD_RATE_CONTROLLER_25 = 25, + BL_LILAC_RDD_RATE_CONTROLLER_26 = 26, + BL_LILAC_RDD_RATE_CONTROLLER_27 = 27, + BL_LILAC_RDD_RATE_CONTROLLER_28 = 28, + BL_LILAC_RDD_RATE_CONTROLLER_29 = 29, + BL_LILAC_RDD_RATE_CONTROLLER_30 = 30, + BL_LILAC_RDD_RATE_CONTROLLER_31 = 31, + BL_LILAC_RDD_RATE_CONTROLLER_32 = 32, + BL_LILAC_RDD_RATE_CONTROLLER_33 = 33, + BL_LILAC_RDD_RATE_CONTROLLER_34 = 34, + BL_LILAC_RDD_RATE_CONTROLLER_35 = 35, + BL_LILAC_RDD_RATE_CONTROLLER_36 = 36, + BL_LILAC_RDD_RATE_CONTROLLER_37 = 37, + BL_LILAC_RDD_RATE_CONTROLLER_38 = 38, + BL_LILAC_RDD_RATE_CONTROLLER_39 = 39, + BL_LILAC_RDD_RATE_CONTROLLER_40 = 40, + BL_LILAC_RDD_RATE_CONTROLLER_41 = 41, + BL_LILAC_RDD_RATE_CONTROLLER_42 = 42, + BL_LILAC_RDD_RATE_CONTROLLER_43 = 43, + BL_LILAC_RDD_RATE_CONTROLLER_44 = 44, + BL_LILAC_RDD_RATE_CONTROLLER_45 = 45, + BL_LILAC_RDD_RATE_CONTROLLER_46 = 46, + BL_LILAC_RDD_RATE_CONTROLLER_47 = 47, + BL_LILAC_RDD_RATE_CONTROLLER_48 = 48, + BL_LILAC_RDD_RATE_CONTROLLER_49 = 49, + BL_LILAC_RDD_RATE_CONTROLLER_50 = 50, + BL_LILAC_RDD_RATE_CONTROLLER_51 = 51, + BL_LILAC_RDD_RATE_CONTROLLER_52 = 52, + BL_LILAC_RDD_RATE_CONTROLLER_53 = 53, + BL_LILAC_RDD_RATE_CONTROLLER_54 = 54, + BL_LILAC_RDD_RATE_CONTROLLER_55 = 55, + BL_LILAC_RDD_RATE_CONTROLLER_56 = 56, + BL_LILAC_RDD_RATE_CONTROLLER_57 = 57, + BL_LILAC_RDD_RATE_CONTROLLER_58 = 58, + BL_LILAC_RDD_RATE_CONTROLLER_59 = 59, + BL_LILAC_RDD_RATE_CONTROLLER_60 = 60, + BL_LILAC_RDD_RATE_CONTROLLER_61 = 61, + BL_LILAC_RDD_RATE_CONTROLLER_62 = 62, + BL_LILAC_RDD_RATE_CONTROLLER_63 = 63, + BL_LILAC_RDD_RATE_CONTROLLER_64 = 64, + BL_LILAC_RDD_RATE_CONTROLLER_65 = 65, + BL_LILAC_RDD_RATE_CONTROLLER_66 = 66, + BL_LILAC_RDD_RATE_CONTROLLER_67 = 67, + BL_LILAC_RDD_RATE_CONTROLLER_68 = 68, + BL_LILAC_RDD_RATE_CONTROLLER_69 = 69, + BL_LILAC_RDD_RATE_CONTROLLER_70 = 70, + BL_LILAC_RDD_RATE_CONTROLLER_71 = 71, + BL_LILAC_RDD_RATE_CONTROLLER_72 = 72, + BL_LILAC_RDD_RATE_CONTROLLER_73 = 73, + BL_LILAC_RDD_RATE_CONTROLLER_74 = 74, + BL_LILAC_RDD_RATE_CONTROLLER_75 = 75, + BL_LILAC_RDD_RATE_CONTROLLER_76 = 76, + BL_LILAC_RDD_RATE_CONTROLLER_77 = 77, + BL_LILAC_RDD_RATE_CONTROLLER_78 = 78, + BL_LILAC_RDD_RATE_CONTROLLER_79 = 79, + BL_LILAC_RDD_RATE_CONTROLLER_80 = 80, + BL_LILAC_RDD_RATE_CONTROLLER_81 = 81, + BL_LILAC_RDD_RATE_CONTROLLER_82 = 82, + BL_LILAC_RDD_RATE_CONTROLLER_83 = 83, + BL_LILAC_RDD_RATE_CONTROLLER_84 = 84, + BL_LILAC_RDD_RATE_CONTROLLER_85 = 85, + BL_LILAC_RDD_RATE_CONTROLLER_86 = 86, + BL_LILAC_RDD_RATE_CONTROLLER_87 = 87, + BL_LILAC_RDD_RATE_CONTROLLER_88 = 88, + BL_LILAC_RDD_RATE_CONTROLLER_89 = 89, + BL_LILAC_RDD_RATE_CONTROLLER_90 = 90, + BL_LILAC_RDD_RATE_CONTROLLER_91 = 91, + BL_LILAC_RDD_RATE_CONTROLLER_92 = 92, + BL_LILAC_RDD_RATE_CONTROLLER_93 = 93, + BL_LILAC_RDD_RATE_CONTROLLER_94 = 94, + BL_LILAC_RDD_RATE_CONTROLLER_95 = 95, + BL_LILAC_RDD_RATE_CONTROLLER_96 = 96, + BL_LILAC_RDD_RATE_CONTROLLER_97 = 97, + BL_LILAC_RDD_RATE_CONTROLLER_98 = 98, + BL_LILAC_RDD_RATE_CONTROLLER_99 = 99, + BL_LILAC_RDD_RATE_CONTROLLER_100 = 100, + BL_LILAC_RDD_RATE_CONTROLLER_101 = 101, + BL_LILAC_RDD_RATE_CONTROLLER_102 = 102, + BL_LILAC_RDD_RATE_CONTROLLER_103 = 103, + BL_LILAC_RDD_RATE_CONTROLLER_104 = 104, + BL_LILAC_RDD_RATE_CONTROLLER_105 = 105, + BL_LILAC_RDD_RATE_CONTROLLER_106 = 106, + BL_LILAC_RDD_RATE_CONTROLLER_107 = 107, + BL_LILAC_RDD_RATE_CONTROLLER_108 = 108, + BL_LILAC_RDD_RATE_CONTROLLER_109 = 109, + BL_LILAC_RDD_RATE_CONTROLLER_110 = 110, + BL_LILAC_RDD_RATE_CONTROLLER_111 = 111, + BL_LILAC_RDD_RATE_CONTROLLER_112 = 112, + BL_LILAC_RDD_RATE_CONTROLLER_113 = 113, + BL_LILAC_RDD_RATE_CONTROLLER_114 = 114, + BL_LILAC_RDD_RATE_CONTROLLER_115 = 115, + BL_LILAC_RDD_RATE_CONTROLLER_116 = 116, + BL_LILAC_RDD_RATE_CONTROLLER_117 = 117, + BL_LILAC_RDD_RATE_CONTROLLER_118 = 118, + BL_LILAC_RDD_RATE_CONTROLLER_119 = 119, + BL_LILAC_RDD_RATE_CONTROLLER_120 = 120, + BL_LILAC_RDD_RATE_CONTROLLER_121 = 121, + BL_LILAC_RDD_RATE_CONTROLLER_122 = 122, + BL_LILAC_RDD_RATE_CONTROLLER_123 = 123, + BL_LILAC_RDD_RATE_CONTROLLER_124 = 124, + BL_LILAC_RDD_RATE_CONTROLLER_125 = 125, + BL_LILAC_RDD_RATE_CONTROLLER_126 = 126, + BL_LILAC_RDD_RATE_CONTROLLER_127 = 127, +} +BL_LILAC_RDD_RATE_CONTROLLER_ID_DTE; + + +typedef enum +{ + BL_LILAC_RDD_QUEUE_0 = 0, + BL_LILAC_RDD_QUEUE_1 = 1, + BL_LILAC_RDD_QUEUE_2 = 2, + BL_LILAC_RDD_QUEUE_3 = 3, + BL_LILAC_RDD_QUEUE_4 = 4, + BL_LILAC_RDD_QUEUE_5 = 5, + BL_LILAC_RDD_QUEUE_6 = 6, + BL_LILAC_RDD_QUEUE_7 = 7, + BL_LILAC_RDD_QUEUE_LAST = 7, +} +BL_LILAC_RDD_QUEUE_ID_DTE; + + +typedef enum +{ + RDD_WAN_CHANNEL_SCHEDULE_PRIORITY = 0, + RDD_WAN_CHANNEL_SCHEDULE_RATE_CONTROL = 1, +} +RDD_WAN_CHANNEL_SCHEDULE; + + +typedef enum +{ + BL_LILAC_RDD_CPU_RX_QUEUE_0 = 0, + BL_LILAC_RDD_CPU_RX_QUEUE_1 = 1, + BL_LILAC_RDD_CPU_RX_QUEUE_2 = 2, + BL_LILAC_RDD_CPU_RX_QUEUE_3 = 3, + BL_LILAC_RDD_CPU_RX_QUEUE_4 = 4, + BL_LILAC_RDD_CPU_RX_QUEUE_5 = 5, + BL_LILAC_RDD_CPU_RX_QUEUE_6 = 6, + BL_LILAC_RDD_CPU_RX_QUEUE_7 = 7, +} +BL_LILAC_RDD_CPU_RX_QUEUE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_PCI_TX_QUEUE_0 = 8, + BL_LILAC_RDD_PCI_TX_QUEUE_1 = 9, + BL_LILAC_RDD_PCI_TX_QUEUE_2 = 10, + BL_LILAC_RDD_PCI_TX_QUEUE_3 = 11, +} +BL_LILAC_RDD_PCI_TX_QUEUE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_CPU_METER_0 = 0, + BL_LILAC_RDD_CPU_METER_1 = 1, + BL_LILAC_RDD_CPU_METER_2 = 2, + BL_LILAC_RDD_CPU_METER_3 = 3, + BL_LILAC_RDD_CPU_METER_4 = 4, + BL_LILAC_RDD_CPU_METER_5 = 5, + BL_LILAC_RDD_CPU_METER_6 = 6, + BL_LILAC_RDD_CPU_METER_7 = 7, + BL_LILAC_RDD_CPU_METER_8 = 8, + BL_LILAC_RDD_CPU_METER_9 = 9, + BL_LILAC_RDD_CPU_METER_10 = 10, + BL_LILAC_RDD_CPU_METER_11 = 11, + BL_LILAC_RDD_CPU_METER_12 = 12, + BL_LILAC_RDD_CPU_METER_13 = 13, + BL_LILAC_RDD_CPU_METER_14 = 14, + BL_LILAC_RDD_CPU_METER_15 = 15, + BL_LILAC_RDD_CPU_METER_DISABLE = 16, +} +BL_LILAC_RDD_CPU_METER_DTE; + + +typedef enum +{ + BL_LILAC_RDD_STATIC_MAC_ADDRESS = 0, + BL_LILAC_RDD_BRIDGE_MAC_ADDRESS = 1, +} +BL_LILAC_RDD_MAC_ENTRY_TYPE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_DISABLED = 0, + BL_LILAC_RDD_ENABLED = 1, +} +BL_LILAC_RDD_CONTROL_DTE; + + +typedef enum +{ + BL_LILAC_RDD_PPPOE_DISABLED = 0, + BL_LILAC_RDD_PPPOE_ENABLED = 1, +} +BL_LILAC_RDD_PPPOE_ENABLE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_DUAL_STACK_LITE_DISABLED = 0, + BL_LILAC_RDD_DUAL_STACK_LITE_ENABLED = 1, +} +BL_LILAC_RDD_DUAL_STACK_LITE_ENABLE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_IPV6_DISABLED = 0, + BL_LILAC_RDD_IPV6_ENABLED = 1, +} +BL_LILAC_RDD_IPV6_ENABLE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_FORWARD_DISABLE = 0, + BL_LILAC_RDD_FORWARD_ENABLE = 1, +} +BL_LILAC_RDD_FORWARD_MATRIX_DTE; + + +typedef enum +{ + BL_LILAC_RDD_VLAN_SWITCHING_DISABLE = 0, + BL_LILAC_RDD_VLAN_SWITCHING_ENABLE = 1, +} +BL_LILAC_RDD_VLAN_SWITCHING_CONFIG_DTE; + + +typedef enum +{ + BL_LILAC_RDD_VLAN_BINDING_DISABLE = 0, + BL_LILAC_RDD_VLAN_BINDING_ENABLE = 1, +} +BL_LILAC_RDD_VLAN_BINDING_CONFIG_DTE; + + +typedef enum +{ + BL_LILAC_RDD_AGGREGATION_MODE_DISABLED = 0, + BL_LILAC_RDD_AGGREGATION_MODE_ENABLED = 1, +} +BL_LILAC_RDD_AGGREGATION_MODE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_BRIDGE_PORT_VECTOR_PCI = 0x1, + BL_LILAC_RDD_BRIDGE_PORT_VECTOR_LAN0 = 0x2, + BL_LILAC_RDD_BRIDGE_PORT_VECTOR_LAN1 = 0x4, + BL_LILAC_RDD_BRIDGE_PORT_VECTOR_LAN2 = 0x8, + BL_LILAC_RDD_BRIDGE_PORT_VECTOR_LAN3 = 0x10, + BL_LILAC_RDD_BRIDGE_PORT_VECTOR_LAN4 = 0x20, +} +BL_LILAC_RDD_BRIDGE_PORT_VECTOR_DTE; + + +typedef enum +{ + BL_LILAC_RDD_SUBNET_CLASSIFY_ETHERNET_FLOW = 0, + BL_LILAC_RDD_SUBNET_CLASSIFY_MAC_FILTER = 1, +} +BL_LILAC_RDD_SUBNET_CLASSIFY_MODE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_SUBNET_FLOW_CACHE = 0, + BL_LILAC_RDD_SUBNET_BRIDGE = 1, + BL_LILAC_RDD_SUBNET_BRIDGE_IPTV = 2, + BL_LILAC_RDD_SUBNET_LAN = 2, +} +BL_LILAC_RDD_SUBNET_ID_DTE; + + +typedef enum +{ + BL_LILAC_RDD_DS_RATE_CONTROL_DISABLE = 0, + BL_LILAC_RDD_DS_RATE_CONTROL_ENABLE = 1, +} +BL_LILAC_RDD_DS_RATE_CONTROL_MODE_DTE; + +typedef enum +{ + RDD_RATE_LIMITER_EMAC_0 = 0, + RDD_RATE_LIMITER_EMAC_1 = 1, + RDD_RATE_LIMITER_EMAC_2 = 2, + RDD_RATE_LIMITER_EMAC_3 = 3, + RDD_RATE_LIMITER_EMAC_4 = 4, + RDD_RATE_LIMITER_EMAC_5 = 5, + RDD_RATE_LIMITER_EMAC_LAST = 5, + RDD_RATE_LIMITER_SERVICE_QUEUE_0 = 6, + RDD_RATE_LIMITER_SERVICE_QUEUE_1 = 7, + RDD_RATE_LIMITER_SERVICE_QUEUE_2 = 8, + RDD_RATE_LIMITER_SERVICE_QUEUE_3 = 9, + RDD_RATE_LIMITER_SERVICE_QUEUE_4 = 10, + RDD_RATE_LIMITER_SERVICE_QUEUE_5 = 11, + RDD_RATE_LIMITER_SERVICE_QUEUE_6 = 12, + RDD_RATE_LIMITER_SERVICE_QUEUE_7 = 13, + RDD_RATE_LIMITER_SERVICE_QUEUE_OVERALL = 14, + RDD_RATE_LIMITER_IDLE = 15, +} +RDD_RATE_LIMITER_ID_DTE; + +typedef enum +{ + BL_LILAC_RDD_POLICER_0 = 0, + BL_LILAC_RDD_POLICER_1 = 1, + BL_LILAC_RDD_POLICER_2 = 2, + BL_LILAC_RDD_POLICER_3 = 3, + BL_LILAC_RDD_POLICER_4 = 4, + BL_LILAC_RDD_POLICER_5 = 5, + BL_LILAC_RDD_POLICER_6 = 6, + BL_LILAC_RDD_POLICER_7 = 7, + BL_LILAC_RDD_POLICER_8 = 8, + BL_LILAC_RDD_POLICER_9 = 9, + BL_LILAC_RDD_POLICER_10 = 10, + BL_LILAC_RDD_POLICER_11 = 11, + BL_LILAC_RDD_POLICER_12 = 12, + BL_LILAC_RDD_POLICER_13 = 13, + BL_LILAC_RDD_POLICER_14 = 14, + BL_LILAC_RDD_POLICER_15 = 15, + BL_LILAC_RDD_POLICER_DISABLED = 16, +} +BL_LILAC_RDD_POLICER_ID_DTE; + + +#define BL_LILAC_RDD_IPV4_ADDRESS_BYTE_SIZE ( 4 ) +#define BL_LILAC_RDD_IPV6_ADDRESS_BYTE_SIZE ( 16 ) + + +typedef enum +{ + BL_LILAC_RDD_FILTER_DISABLE = 0, + BL_LILAC_RDD_FILTER_ENABLE = 1, +} +BL_LILAC_RDD_FILTER_MODE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_RATE_LIMITER_DISABLE = 0, + BL_LILAC_RDD_RATE_LIMITER_ENABLE = 1, +} +BL_LILAC_RDD_RATE_LIMITER_MODE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_RATE_LIMITER_LOW = 0, + BL_LILAC_RDD_RATE_LIMITER_HIGH = 1, +} +BL_LILAC_RDD_RATE_LIMITER_PRIORITY_DTE; + + +typedef enum +{ + BL_LILAC_RDD_FILTER_ACTION_CPU_TRAP = 1, + BL_LILAC_RDD_FILTER_ACTION_DROP = 2, +} +BL_LILAC_RDD_FILTER_ACTION_DTE; + + +typedef enum +{ + BL_LILAC_RDD_ETHER_TYPE_FILTER_USER_0 = 2, + BL_LILAC_RDD_ETHER_TYPE_FILTER_USER_1 = 3, + BL_LILAC_RDD_ETHER_TYPE_FILTER_USER_2 = 4, + BL_LILAC_RDD_ETHER_TYPE_FILTER_USER_3 = 5, + BL_LILAC_RDD_ETHER_TYPE_FILTER_PPPOE_D = 6, + BL_LILAC_RDD_ETHER_TYPE_FILTER_PPPOE_S = 7, + BL_LILAC_RDD_ETHER_TYPE_FILTER_ARP = 8, + BL_LILAC_RDD_ETHER_TYPE_FILTER_1588 = 9, + BL_LILAC_RDD_ETHER_TYPE_FILTER_802_1X = 10, + BL_LILAC_RDD_ETHER_TYPE_FILTER_802_1AG_CFM = 11, +} +BL_LILAC_RDD_ETHER_TYPE_FILTER_NUMBER_DTE; + + +typedef enum +{ + BL_LILAC_RDD_MAC_LOOKUP_DISABLE = 0, + BL_LILAC_RDD_MAC_LOOKUP_ENABLE = 1, +} +BL_LILAC_RDD_MAC_LOOKUP_DTE; + + +typedef enum +{ + BL_LILAC_RDD_FLOW_BASED_FORWARDING_DISABLED = 0, + BL_LILAC_RDD_FLOW_BASED_FORWARDING_ENABLED = 1, +} +BL_LILAC_RDD_FLOW_BASED_MODE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_MAC_FWD_ACTION_FORWARD = 0, + BL_LILAC_RDD_MAC_FWD_ACTION_DROP = 1, + BL_LILAC_RDD_MAC_FWD_ACTION_CPU_TRAP0 = 2, + BL_LILAC_RDD_MAC_FWD_ACTION_CPU_TRAP1 = 3, + BL_LILAC_RDD_MAC_FWD_ACTION_CPU_TRAP2 = 4, + BL_LILAC_RDD_MAC_FWD_ACTION_CPU_TRAP3 = 5, + BL_LILAC_RDD_MAC_FWD_ACTION_RATE_LIMIT = 6, +} +BL_LILAC_RDD_MAC_FWD_ACTION_DTE; + + +typedef enum +{ + BL_LILAC_RDD_ACL_LAYER3_FILTER_DISABLE = 0, + BL_LILAC_RDD_ACL_LAYER3_FILTER_SRC_IP_INCLUSIVE = 2, + BL_LILAC_RDD_ACL_LAYER3_FILTER_SRC_IP_EXCLUSIVE = 3, + BL_LILAC_RDD_ACL_LAYER3_FILTER_SRC_MAC_SRC_IP_INCLUSIVE = 4, + BL_LILAC_RDD_ACL_LAYER3_FILTER_SRC_MAC_SRC_IP_EXCLUSIVE = 5, + BL_LILAC_RDD_ACL_LAYER3_FILTER_SRC_MAC_VID_SRC_IP_INCLUSIVE = 8, + BL_LILAC_RDD_ACL_LAYER3_FILTER_SRC_MAC_VID_SRC_IP_EXCLUSIVE = 9, +} +BL_LILAC_RDD_ACL_LAYER3_FILTER_MODE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_CRC_CALC_DISABLE = 0, + BL_LILAC_RDD_CRC_CALC_ENABLE = 1, +} +BL_LILAC_RDD_TX_CRC_CALC_DTE; + + +typedef enum +{ + rdd_vlan_command_transparent = 0, + rdd_vlan_command_add_tag = 1, + rdd_vlan_command_remove_tag = 2, + rdd_vlan_command_replace_tag = 3, + rdd_vlan_command_add_two_tags = 4, + rdd_vlan_command_remove_two_tags = 5, + rdd_vlan_command_add_outer_tag_replace_inner_tag = 6, + rdd_vlan_command_remove_outer_tag_replace_inner_tag = 7, + rdd_vlan_command_add_tag_always = 8, + rdd_vlan_command_remove_tag_always = 9, + rdd_vlan_command_replace_outer_tag_replace_inner_tag = 10, + rdd_vlan_command_remove_outer_tag_copy = 11, + rdd_vlan_command_add_3rd_tag = 12, + rdd_max_vlan_command = 13, +} +rdd_bridge_vlan_command; + + +typedef enum +{ + rdd_pbits_command_transparent = 0, + rdd_pbits_command_copy = 1, + rdd_pbits_command_configured = 2, + rdd_pbits_command_remap = 3, + rdd_max_pbits_command = 4, +} +rdd_bridge_pbits_command; + + +typedef enum +{ + rdd_tpid_id_0 = 0, + rdd_tpid_id_1 = 1, + rdd_tpid_id_2 = 2, + rdd_tpid_id_3 = 3, + rdd_tpid_id_4 = 4, + rdd_tpid_id_5 = 5, + rdd_tpid_id_6 = 6, + rdd_tpid_id_7 = 7, +} +rdd_tpid_id; + + +typedef enum +{ + BL_LILAC_RDD_UNKNOWN_MAC_CMD_FORWARD = 1, + BL_LILAC_RDD_UNKNOWN_MAC_CMD_CPU_TRAP = 2, + BL_LILAC_RDD_UNKNOWN_MAC_CMD_DROP = 4, + BL_LILAC_RDD_UNKNOWN_MAC_CMD_FLOOD = 8, +} +BL_LILAC_RDD_UNKNOWN_MAC_COMMAND_DTE; + + +typedef enum +{ + BL_LILAC_RDD_MAC_TABLE_SIZE_32 = 0, + BL_LILAC_RDD_MAC_TABLE_SIZE_64 = 1, + BL_LILAC_RDD_MAC_TABLE_SIZE_128 = 2, + BL_LILAC_RDD_MAC_TABLE_SIZE_256 = 3, + BL_LILAC_RDD_MAC_TABLE_SIZE_512 = 4, + BL_LILAC_RDD_MAC_TABLE_SIZE_1024 = 5, + BL_LILAC_RDD_MAC_TABLE_SIZE_2048 = 6, + BL_LILAC_RDD_MAC_TABLE_SIZE_4096 = 7, +} +BL_LILAC_RDD_MAC_TABLE_SIZE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_1 = 0, + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_2 = 1, + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_4 = 2, + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_8 = 3, + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_16 = 4, + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_32 = 5, + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_64 = 6, + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_128 = 7, + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_256 = 8, + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_512 = 9, + BL_LILAC_RDD_MAC_TABLE_MAX_HOP_1024 = 10, +} +BL_LILAC_RDD_MAC_TABLE_MAX_HOP_DTE; + + +typedef enum +{ + BL_LILAC_RDD_IGMP_FILTER_NUMBER = 0, + BL_LILAC_RDD_ICMPV6_FILTER_NUMBER = 1, + BL_LILAC_RDD_USER_0_FILTER_NUMBER = 2, + BL_LILAC_RDD_USER_1_FILTER_NUMBER = 3, + BL_LILAC_RDD_USER_2_FILTER_NUMBER = 4, + BL_LILAC_RDD_USER_3_FILTER_NUMBER = 5, + BL_LILAC_RDD_PPPOE_D_FILTER_NUMBER = 6, + BL_LILAC_RDD_PPPOE_S_FILTER_NUMBER = 7, + BL_LILAC_RDD_ARP_FILTER_NUMBER = 8, + BL_LILAC_RDD_1588_FILTER_NUMBER = 9, + BL_LILAC_RDD_802_1X_FILTER_NUMBER = 10, + BL_LILAC_RDD_802_1AG_CFM_FILTER_NUMBER = 11, + BL_LILAC_RDD_BROADCAST_FILTER_NUMBER = 12, + BL_LILAC_RDD_MULTICAST_FILTER_NUMBER = 13, + BL_LILAC_RDD_STOP_FILTER_NUMBER = 14, + BL_LILAC_RDD_INGRESS_FILTERS_NUMBER = 14, +} +BL_LILAC_RDD_INGRESS_FILTER_DTE; + + +typedef enum +{ + RDD_LAYER4_FILTER_ERROR = 0, + RDD_LAYER4_FILTER_EXCEPTION = 1, + RDD_LAYER4_FILTER_IP_FIRST_FRAGMENT = 2, + RDD_LAYER4_FILTER_IP_FRAGMENT = 3, + RDD_LAYER4_FILTER_GRE = 4, + RDD_LAYER4_FILTER_LAYER3_IPV4 = 5, + RDD_LAYER4_FILTER_LAYER3_IPV6 = 6, + RDD_LAYER4_FILTER_ICMP = 7, + RDD_LAYER4_FILTER_ESP = 8, + RDD_LAYER4_FILTER_AH = 9, + RDD_LAYER4_FILTER_IPV6 = 10, + RDD_LAYER4_FILTER_USER_DEFINED_0 = 11, + RDD_LAYER4_FILTER_USER_DEFINED_1 = 12, + RDD_LAYER4_FILTER_USER_DEFINED_2 = 13, + RDD_LAYER4_FILTER_USER_DEFINED_3 = 14, + RDD_LAYER4_FILTER_UNKNOWN = 15, +} +RDD_LAYER4_FILTER_INDEX; + + +typedef enum +{ + BL_LILAC_RDD_LAYER4_FILTER_FORWARD = 0, + BL_LILAC_RDD_LAYER4_FILTER_CPU_TRAP = 1, + BL_LILAC_RDD_LAYER4_FILTER_DROP = 2, +} +BL_LILAC_RDD_LAYER4_FILTER_ACTION_DTE; + + +typedef enum +{ + BL_LILAC_RDD_FIREWALL_PROTOCOL_TYPE_TCP = 0, + BL_LILAC_RDD_FIREWALL_PROTOCOL_TYPE_UDP = 1, +} +BL_LILAC_RDD_FIREWALL_PROTOCOL_TYPE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_FLOW_CACHE_PBIT_ACTION_DSCP_COPY = 0, + BL_LILAC_RDD_FLOW_CACHE_PBIT_ACTION_OUTER_COPY = 1, + BL_LILAC_RDD_FLOW_CACHE_PBIT_ACTION_INNER_COPY = 2, +} +BL_LILAC_RDD_FLOW_CACHE_PBIT_ACTION_DTE; + + +typedef enum +{ + RDD_FLOW_CACHE_FORWARD_ACTION_CPU = 0, + RDD_FLOW_CACHE_FORWARD_ACTION_DROP = 1, +} +RDD_FLOW_CACHE_FORWARD_ACTION; + + +typedef enum +{ + BL_LILAC_RDD_ACL_LAYER2_ACTION_DENY = 0, + BL_LILAC_RDD_ACL_LAYER2_ACTION_ACCEPT = 1, +} +BL_LILAC_RDD_ACL_LAYER2_ACTION_DTE; + + +typedef enum +{ + BL_LILAC_RDD_1588_MODE_DISABLE = 0, + BL_LILAC_RDD_1588_MODE_ENABLE = 1, +} +BL_LILAC_RDD_1588_MODE_DTE; + + +typedef enum +{ + RDD_1588_TX_THREAD_RETURN_NO_RESULT = 0, + RDD_1588_TX_THREAD_RETURN_SUCCESS = 1, + RDD_1588_TX_THREAD_RETURN_FAIL = 2, +} +RDD_1588_TX_THREAD_RESULT_DTE; + + +typedef enum +{ + BL_LILAC_RDD_INTER_LAN_SCHEDULING_MODE_NORMAL = 0, + BL_LILAC_RDD_INTER_LAN_SCHEDULING_MODE_STRICT_PRIORITY = 1, + BL_LILAC_RDD_INTER_LAN_SCHEDULING_MODE_ROUND_ROBIN = 2, +} +BL_LILAC_RDD_INTER_LAN_SCHEDULING_MODE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_UPSTREAM_PADDING_DISABLE = 0, + BL_LILAC_RDD_UPSTREAM_PADDING_ENABLE = 1, +} +BL_LILAC_RDD_UPSTREAM_PADDING_MODE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_NO_WAIT = 0, + BL_LILAC_RDD_WAIT = 1, +} +BL_LILAC_RDD_CPU_WAIT_DTE; + + +typedef enum +{ + RDD_US_PEAK_SCHEDULING_MODE_ROUND_ROBIN = 0, + RDD_US_PEAK_SCHEDULING_MODE_STRICT_PRIORITY = 1, +} +RDD_US_PEAK_SCHEDULING_MODE; + + +typedef enum +{ + rdd_queue_profile_0 = 0, + rdd_queue_profile_1 = 1, + rdd_queue_profile_2 = 2, + rdd_queue_profile_3 = 3, + rdd_queue_profile_4 = 4, + rdd_queue_profile_5 = 5, + rdd_queue_profile_6 = 6, + rdd_queue_profile_7 = 7, + rdd_queue_profile_disabled = 8, +} rdd_queue_profile; + + +typedef struct +{ + uint16_t min_threshold; + uint16_t max_threshold; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PRIORITY_CLASS_THRESHOLDS; + + +typedef struct +{ + RDD_PRIORITY_CLASS_THRESHOLDS high_priority_class; + RDD_PRIORITY_CLASS_THRESHOLDS low_priority_class; + uint32_t max_drop_probability; + bdmf_boolean us_flow_control_mode; + +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_QUEUE_PROFILE; + + +typedef enum +{ + BL_LILAC_RDD_FLOW_PM_COUNTERS_RX = 1, + BL_LILAC_RDD_FLOW_PM_COUNTERS_TX = 2, + BL_LILAC_RDD_FLOW_PM_COUNTERS_BOTH = 3, +} +BL_LILAC_RDD_FLOW_PM_COUNTERS_TYPE_DTE; + + +typedef struct +{ + uint32_t good_rx_packet; + uint32_t good_rx_bytes; + uint32_t good_tx_packet; + uint32_t good_tx_bytes; + uint16_t error_rx_packets_discard; + uint16_t error_tx_packets_discard; +} +__PACKING_ATTRIBUTE_STRUCT_END__ BL_LILAC_RDD_FLOW_PM_COUNTERS_DTE; + + +typedef struct +{ + uint32_t good_tx_packet; + uint16_t error_tx_packets_discard; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SERVICE_QUEUE_PM_COUNTERS_DTE; + + +typedef struct +{ + uint32_t rx_valid; + uint32_t tx_valid; + uint16_t error_rx_bpm_congestion; + uint16_t bridge_filtered_packets; + uint16_t bridge_tx_packets_discard; +} +__PACKING_ATTRIBUTE_STRUCT_END__ BL_LILAC_RDD_BRIDGE_PORT_PM_COUNTERS_DTE; + + +typedef struct +{ + uint32_t good_rx_packet; + uint32_t good_tx_packet; + uint32_t good_rx_bytes; + uint32_t good_tx_bytes; + uint16_t rx_dropped_packet; + uint16_t tx_dropped_packet; +} +__PACKING_ATTRIBUTE_STRUCT_END__ BL_LILAC_RDD_SUBNET_PM_COUNTERS_DTE; + + +typedef struct +{ + uint16_t invalid_layer2_protocol_drop; + uint16_t firewall_drop; + uint16_t acl_oui_drop; + uint16_t acl_l2_drop; + uint16_t acl_l3_drop; + uint16_t dst_mac_non_router_drop; + uint16_t eth_flow_action_drop; + uint16_t sa_lookup_failure_drop; + uint16_t da_lookup_failure_drop; + uint16_t sa_action_drop; + uint16_t da_action_drop; + uint16_t forwarding_matrix_disabled_drop; + uint16_t connection_action_drop; + uint16_t iptv_layer3_drop; + uint16_t local_switching_congestion; + uint16_t vlan_switching_drop; + uint16_t downstream_policers_drop; + uint16_t layer4_filters_drop[ 16 ]; + uint16_t ingress_filters_drop[ BL_LILAC_RDD_INGRESS_FILTERS_NUMBER ]; + uint16_t ip_validation_filter_drop[ 2 ]; + uint16_t emac_loopback_drop; + uint16_t tpid_detect_drop; + uint16_t dual_stack_lite_congestion_drop; + uint16_t invalid_subnet_ip_drop; + uint16_t us_ddr_queue_drop; + uint16_t ds_parallel_processing_no_avialable_slave; + uint16_t ds_parallel_processing_reorder_slaves; + uint16_t absolute_address_list_overflow_drop; +} +__PACKING_ATTRIBUTE_STRUCT_END__ BL_LILAC_RDD_VARIOUS_COUNTERS_DTE; + + +typedef enum +{ + INVALID_LAYER2_PROTOCOL_DROP_COUNTER_MASK = 0x1, + FIREWALL_DROP_COUNTER_MASK = 0x2, + ACL_OUI_DROP_COUNTER_MASK = 0x4, + ACL_L2_DROP_COUNTER_MASK = 0x8, + ACL_L3_DROP_COUNTER_MASK = 0x10, + DST_MAC_NON_ROUTER_DROP_COUNTER_MASK = 0x20, + ETHERNET_FLOW_ACTION_DROP_COUNTER_MASK = 0x40, + SA_LOOKUP_FAILURE_DROP_COUNTER_MASK = 0x80, + DA_LOOKUP_FAILURE_DROP_COUNTER_MASK = 0x100, + SA_ACTION_DROP_COUNTER_MASK = 0x200, + DA_ACTION_DROP_COUNTER_MASK = 0x400, + FORWARDING_MATRIX_DISABLED_DROP_COUNTER_MASK = 0x800, + CONNECTION_ACTION_DROP_COUNTER_MASK = 0x1000, + IPTV_LAYER3_DROP_COUNTER_MASK = 0x2000, + LOCAL_SWITCHING_CONGESTION_COUNTER_MASK = 0x4000, + VLAN_SWITCHING_DROP_COUNTER_MASK = 0x8000, + DOWNSTREAM_POLICERS_DROP_COUNTER_MASK = 0x10000, + LAYER4_FILTERS_DROP_COUNTER_MASK = 0x20000, + INGRESS_FILTERS_DROP_COUNTER_MASK = 0x40000, + IP_VALIDATION_FILTER_DROP_COUNTER_MASK = 0x80000, + EMAC_LOOPBACK_DROP_COUNTER_MASK = 0x100000, + TPID_DETECT_DROP_COUNTER_MASK = 0x200000, + DUAL_STACK_LITE_CONGESTION_DROP_COUNTER_MASK = 0x400000, + INVALID_SUBNET_IP_DROP_COUNTER_MASK = 0x800000, + EPON_DDR_QUEUEU_DROP_COUNTER_MASK = 0x800000, + ABSOLUTE_ADDRESS_LIST_OVERFLOW_MASK = 0x1000000, +} +RDD_VARIOUS_COUNTERS_MASK; + +typedef enum +{ + RDD_CHIP_REVISION_A0 = 0, + RDD_CHIP_REVISION_B0 = 1, +} +BL_LILAC_RDD_CHIP_REVISION_DTE; + +#if defined(WL4908) +typedef struct +{ + uint8_t *ddr_bm_ptr; + uint32_t ddr_bm_phys; + uint32_t ddr1_bm_phys; + uint8_t *ddr_fm_ptr; + uint32_t ddr_fm_phys; + BL_LILAC_RDD_MAC_TABLE_SIZE_DTE mac_table_size; + BL_LILAC_RDD_MAC_TABLE_SIZE_DTE iptv_table_size; + BL_LILAC_RDD_WAN_PHYSICAL_PORT_DTE wan_physical_port; + uint32_t ddr_headroom_size; + int16_t broadcom_switch_mode; + BL_LILAC_RDD_BRIDGE_PORT_DTE broadcom_switch_physical_port; + uint32_t bridge_flow_cache_mode; + BL_LILAC_RDD_CHIP_REVISION_DTE chip_revision; + uint16_t cpu_tx_abs_packet_limit; + uint8_t *runner_nat_cache_key_ptr; /*Virtual address*/ + uint8_t *runner_nat_cache_context_ptr; /*Virtual address*/ + uint8_t *runner_context_cont_ptr; /*Virtual address*/ + uint16_t token_size; + uint8_t lp_mode; +} +RDD_INIT_PARAMS; +#else +typedef struct +{ + uint8_t *ddr_pool_ptr; /* virtual address */ + uint32_t ddr_pool_ptr_phys; /* physical address */ + uint8_t *extra_ddr_pool_ptr; /* virtual address */ + uint32_t extra_ddr_pool_ptr_phys; /* physical address */ + uint8_t *ddr_runner_tables_ptr; /* virtual address */ + uint32_t ddr_runner_tables_ptr_phys; /* physical address */ + BL_LILAC_RDD_MAC_TABLE_SIZE_DTE mac_table_size; + BL_LILAC_RDD_MAC_TABLE_SIZE_DTE iptv_table_size; + BL_LILAC_RDD_WAN_PHYSICAL_PORT_DTE wan_physical_port; + uint32_t ddr_headroom_size; + int16_t broadcom_switch_mode; + BL_LILAC_RDD_BRIDGE_PORT_DTE broadcom_switch_physical_port; + uint32_t bridge_flow_cache_mode; + uint16_t epon_post_scheduling_queue_size; + BL_LILAC_RDD_CHIP_REVISION_DTE chip_revision; + uint16_t cpu_tx_abs_packet_limit; + BL_LILAC_RDD_BRIDGE_PORT_DTE lan_direct_to_cpu_port; + uint8_t lp_mode; +} +RDD_INIT_PARAMS; +#endif + + +typedef struct +{ + uint32_t rate; + uint32_t limit; +} +RDD_RATE_LIMIT_PARAMS; + +typedef struct +{ + uint32_t sustain_budget; + RDD_RATE_LIMIT_PARAMS peak_budget; + uint32_t peak_weight; +} +RDD_RATE_CONTROLLER_PARAMS; + + +typedef struct +{ + BL_LILAC_RDD_SUBNET_ID_DTE subnet_id; + BL_LILAC_RDD_FIREWALL_PROTOCOL_TYPE_DTE protocol; + uint32_t dst_port; + uint32_t dst_port_last; + bdmf_ip_t src_ip; + uint32_t src_ip_mask; + bdmf_ip_t dst_ip; + uint32_t check_mask_src_ip; + uint32_t check_src_ip; + uint32_t check_dst_ip; + uint32_t next_rule_index; +} +RDD_FIREWALL_RULE_PARAMS; + + +typedef struct +{ + bdmf_mac_t mac_addr; + uint16_t vlan_id; + BL_LILAC_RDD_BRIDGE_PORT_DTE bridge_port; + BL_LILAC_RDD_MAC_ENTRY_TYPE_DTE entry_type; + BL_LILAC_RDD_AGGREGATION_MODE_DTE aggregation_mode; + uint8_t extension_entry; + BL_LILAC_RDD_MAC_FWD_ACTION_DTE sa_action; + BL_LILAC_RDD_MAC_FWD_ACTION_DTE da_action; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_MAC_PARAMS; + + +typedef struct +{ + uint16_t vid; + BL_LILAC_RDD_BRIDGE_PORT_VECTOR_DTE isolation_mode_port_vector; + BL_LILAC_RDD_BRIDGE_PORT_VECTOR_DTE aggregation_mode_port_vector; + uint16_t aggregation_vid_index; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_LAN_VID_PARAMS; + + +typedef struct +{ + uint8_t *packet_ptr; + uint32_t packet_size; + BL_LILAC_RDD_BRIDGE_PORT_DTE src_bridge_port; + uint8_t wifi_src_ssid_index; + uint16_t wifi_dst_ssid_vector; + uint16_t buffer_number; +} +RDD_PCI_TX_PARAMS; + + +typedef struct +{ + uint8_t *packet_ptr; + uint32_t packet_size; + BL_LILAC_RDD_BRIDGE_PORT_DTE src_bridge_port; + uint32_t flow_id; + rdpa_cpu_reason reason; + uint16_t buffer_number; +} +RDD_CPU_RX_PARAMS; + + +typedef enum +{ + BL_LILAC_RDD_UPSTREAM_FLOW_CLASSIFY_VID = 0, + BL_LILAC_RDD_UPSTREAM_FLOW_CLASSIFY_VID_PBITS = 0, + BL_LILAC_RDD_UPSTREAM_FLOW_CLASSIFY_VID_SRC_PORT = 1, + BL_LILAC_RDD_UPSTREAM_FLOW_CLASSIFY_VID_PBITS_SRC_PORT = 2, +} +BL_LILAC_RDD_UPSTREAM_FLOW_CLASSIFY_MODE_DTE; + + +typedef enum +{ + BL_LILAC_RDD_DOWNSTREAM_FLOW_CLASSIFY_WAN_FLOW = 0, + BL_LILAC_RDD_DOWNSTREAM_FLOW_CLASSIFY_PACKET = 1, +} +BL_LILAC_RDD_DOWNSTREAM_FLOW_CLASSIFY_MODE_DTE; + +typedef struct +{ + uint32_t vlan_command_id; + rdd_bridge_vlan_command vlan_command; + rdd_bridge_pbits_command pbits_command; + uint16_t outer_vid; + uint16_t inner_vid; + uint8_t outer_pbits; + uint8_t inner_pbits; + bdmf_boolean outer_tpid_overwrite_enable; + bdmf_boolean inner_tpid_overwrite_enable; + rdd_tpid_id outer_tpid_id; + rdd_tpid_id inner_tpid_id; +} +rdd_vlan_command_params; + +typedef enum +{ + rdd_dei_command_transparent = 0, + rdd_dei_command_clear = 1, + rdd_dei_command_set = 2, +} +rdd_dei_command; + +/** Ingress classification lookup mode */ +typedef enum +{ + rdd_ingress_classification_lookup_mode_ih = 0, + rdd_ingress_classification_lookup_mode_optimized = 1, + rdd_ingress_classification_lookup_mode_short = 2, + rdd_ingress_classification_lookup_mode_long = 3, +} rdd_ingress_classification_lookup_mode; + +/** Full flow cache corner case acceleration modes */ +typedef enum +{ + rdd_full_fc_acceleration_non_ip = 0, + rdd_full_fc_acceleration_multicast_ip = 1, +} rdd_full_fc_acceleration_mode; + +typedef enum +{ + rdd_single_priority_mode = 0, + rdd_double_priority_mode = 1, +} rdd_policer_mode; + + + +/** CPU TX redesign **/ +typedef enum +{ + rdd_cpu_tx_queue_table_fast_a = 0, + rdd_cpu_tx_queue_table_fast_b = 1, + rdd_cpu_tx_queue_table_pico_a = 2, + rdd_cpu_tx_queue_table_pico_b = 3, +} rdd_cpu_tx_queue_table; + + +typedef enum +{ + rdd_cpu_tx_mode_full = 0, + rdd_cpu_tx_mode_interworking = 1, + rdd_cpu_tx_mode_egress_enq = 2, +} rdd_cpu_tx_mode; + + +typedef enum +{ + rdd_host_buffer = 0, + rdd_runner_buffer = 1, +} rdd_buffer_type; + +typedef struct +{ + rdpa_traffic_dir traffic_dir; + rdd_cpu_tx_mode mode; + rdd_buffer_type buffer_type; + + uint8_t wifi_ssid; + uint16_t wan_flow; + rdpa_discard_prty drop_precedence; + + union + { + struct + { +#if defined(LEGACY_RDP) + BL_LILAC_RDD_EMAC_ID_DTE emac_id; +#else + rdd_emac_id_t emac_id; +#endif + BL_LILAC_RDD_QUEUE_ID_DTE queue_id; + bdmf_boolean en_1588; + } ds; + + struct + { + uint32_t wan_channel; + uint32_t rate_controller; + uint32_t queue; + BL_LILAC_RDD_BRIDGE_PORT_DTE src_bridge_port; + } us; + } direction; + int is_spdsvc_setup_packet; +} rdd_cpu_tx_args_t; + +static inline uint32_t rdd_rate_to_alloc_unit(uint32_t rate, uint32_t period) +{ + /* original algorithm cannot provide enough token for the rate */ +#if 0 + return ((rate + ((1000000 / period) / 2)) / (1000000 / period)); +#endif + return rate; +} + +typedef void ( * BL_LILAC_RDD_LOCK_CRITICAL_SECTION_FP_DTE )( bdmf_fastlock * ); +typedef void ( * BL_LILAC_RDD_UNLOCK_CRITICAL_SECTION_FP_DTE )( bdmf_fastlock * ); +typedef void ( * BL_LILAC_RDD_LOCK_CRITICAL_SECTION_FP_IRQ_DTE )( bdmf_fastlock *, unsigned long * ); +typedef void ( * BL_LILAC_RDD_UNLOCK_CRITICAL_SECTION_FP_IRQ_DTE )( bdmf_fastlock *, unsigned long ); + +#endif diff --git a/arch/arm/mach-bcmbca/rdp/rdd_ih_defs.h b/arch/arm/mach-bcmbca/rdp/rdd_ih_defs.h new file mode 100755 index 0000000000..8dc822b644 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_ih_defs.h @@ -0,0 +1,632 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/**** This is an autogenerated file with definitions common to FW and SW ****/ + +#ifndef _RDD_IH_DEFS_H +#define _RDD_IH_DEFS_H + +#include "rdd_runner_defs.h" +#include "rdp_drv_ih.h" + +/* default runner for DS */ +#define DRV_RDD_IH_DS_DEFAULT_RUNNER ( DRV_IH_RUNNER_CLUSTER_A )/* constant */ +/* default runner for US */ +#define DRV_RDD_IH_US_DEFAULT_RUNNER ( DRV_IH_RUNNER_CLUSTER_B )/* constant */ + +/* common for all ports */ +#define DRV_RDD_IH_PACKET_HEADER_OFFSET ( 18 ) + +#define DRV_RDD_IH_RUNNER_0_MAXIMAL_NUMBER_OF_BUFFERS ( 32 ) +#define DRV_RDD_IH_RUNNER_1_MAXIMAL_NUMBER_OF_BUFFERS ( 32 ) + +#define DRV_RDD_IH_CAM_SEARCH_ENABLE_UPON_INVALID_LUT_ENTRY ( 0 )/* constant */ + +#define DRV_RDD_IH_RUNNER_0_IH_MANAGED_RB_BASE_ADDRESS ( 0x0 ) +#define DRV_RDD_IH_RUNNER_1_IH_MANAGED_RB_BASE_ADDRESS ( 0x0 ) + +/* not in use in 1st phase */ +#define DRV_RDD_IH_RUNNER_0_RUNNER_MANAGED_RB_BASE_ADDRESS ( 0 )/* constant */ +#define DRV_RDD_IH_RUNNER_1_RUNNER_MANAGED_RB_BASE_ADDRESS ( 0 )/* constant */ + +/* not in use in 1st phase */ +#define DRV_RDD_IH_RUNNER_0_IH_CONGESTION_REPORT_ADDRESS ( 0 )/* constant */ +#define DRV_RDD_IH_RUNNER_1_IH_CONGESTION_REPORT_ADDRESS ( 0 )/* constant */ + +/* not in use in 1st phase */ +#define DRV_RDD_IH_RUNNER_0_IH_CONGESTION_REPORT_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_RUNNER_1_IH_CONGESTION_REPORT_ENABLE ( 0 )/* constant */ + +/* Lookup tables configuration */ + +#define DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX ( DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_1 ) +#define DRV_RDD_IH_LOOKUP_TABLE_IPTV_INDEX ( DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_2 ) +#define DRV_RDD_IH_LOOKUP_TABLE_DS_INGRESS_CLASSIFICATION_INDEX ( DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_3 ) +#define DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ( DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_4 ) +#define DRV_RDD_IH_LOOKUP_TABLE_IPTV_SRC_IP_INDEX ( DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_BROADCOM_SWITCH_LAN_INDEX ( DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_8 ) +#define DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX ( DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_9 ) + +#define DRV_RDD_IH_LOOKUP_TABLE_1_BASE_ADDRESS MAC_TABLE_ADDRESS +#define DRV_RDD_IH_LOOKUP_TABLE_2_BASE_ADDRESS ( 0x2000 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_BASE_ADDRESS ( 0xA000 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_BASE_ADDRESS ( 0xA800 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_BASE_ADDRESS ( 0x3300 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_BASE_ADDRESS MAC_TABLE_ADDRESS +#define DRV_RDD_IH_LOOKUP_TABLE_9_BASE_ADDRESS MAC_TABLE_ADDRESS + +#define DRV_RDD_IH_LOOKUP_TABLE_1_SIZE ( DRV_IH_LOOKUP_TABLE_SIZE_64_ENTRIES ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_SIZE ( DRV_IH_LOOKUP_TABLE_SIZE_256_ENTRIES ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_SIZE ( DRV_IH_LOOKUP_TABLE_SIZE_256_ENTRIES ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SIZE ( DRV_IH_LOOKUP_TABLE_SIZE_256_ENTRIES ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_SIZE ( DRV_IH_LOOKUP_TABLE_SIZE_32_ENTRIES ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SIZE ( DRV_IH_LOOKUP_TABLE_SIZE_64_ENTRIES ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SIZE ( DRV_IH_LOOKUP_TABLE_SIZE_64_ENTRIES ) + +#define DRV_RDD_IH_LOOKUP_TABLE_1_SEARCH_DEPTH ( DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_4_STEPS ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_SEARCH_DEPTH ( DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_32_STEPS ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_SEARCH_DEPTH ( DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_32_STEPS ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SEARCH_DEPTH ( DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_32_STEPS ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_SEARCH_DEPTH ( DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_32_STEPS ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SEARCH_DEPTH ( DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_4_STEPS ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SEARCH_DEPTH ( DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_4_STEPS ) + + +/* same for all lookup tables */ +#define DRV_RDD_IH_LOOKUP_TABLE_1_HASH_TYPE ( DRV_IH_LOOKUP_TABLE_HASH_TYPE_CRC16 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_HASH_TYPE ( DRV_IH_LOOKUP_TABLE_HASH_TYPE_CRC16 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_HASH_TYPE ( DRV_IH_LOOKUP_TABLE_HASH_TYPE_CRC16 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_HASH_TYPE ( DRV_IH_LOOKUP_TABLE_HASH_TYPE_CRC16 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_HASH_TYPE ( DRV_IH_LOOKUP_TABLE_HASH_TYPE_CRC16 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_HASH_TYPE ( DRV_IH_LOOKUP_TABLE_HASH_TYPE_CRC16 ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_HASH_TYPE ( DRV_IH_LOOKUP_TABLE_HASH_TYPE_CRC16 ) + +#define DRV_RDD_IH_LOOKUP_TABLE_1_SA_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_SA_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_SA_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SA_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_SA_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SA_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SA_ENABLE ( 1 ) + +#define DRV_RDD_IH_LOOKUP_TABLE_1_AGING_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_AGING_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_AGING_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_AGING_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_AGING_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_AGING_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_AGING_ENABLE ( 0 ) + +#define DRV_RDD_IH_LOOKUP_TABLE_1_CAM_ENABLE ( 1 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_CAM_ENABLE ( 1 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_CAM_ENABLE ( 1 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_CAM_ENABLE ( 1 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_CAM_ENABLE ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_CAM_ENABLE ( 1 ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_CAM_ENABLE ( 1 ) + +#define DRV_RDD_IH_LOOKUP_TABLE_1_CAM_BASE_ADDRESS MAC_TABLE_CAM_ADDRESS +#define DRV_RDD_IH_LOOKUP_TABLE_2_CAM_BASE_ADDRESS ( 0x3100 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_CAM_BASE_ADDRESS ( 0x9300 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_CAM_BASE_ADDRESS ( 0x9C00 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_CAM_BASE_ADDRESS ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_CAM_BASE_ADDRESS MAC_TABLE_CAM_ADDRESS +#define DRV_RDD_IH_LOOKUP_TABLE_9_CAM_BASE_ADDRESS MAC_TABLE_CAM_ADDRESS + +#define DRV_RDD_IH_CONTEXT_TABLE_1_BASE_ADDRESS MAC_CONTEXT_TABLE_ADDRESS +#define DRV_RDD_IH_CONTEXT_TABLE_2_BASE_ADDRESS ( 0x3000 ) +#define DRV_RDD_IH_CONTEXT_TABLE_3_BASE_ADDRESS ( 0x0 ) +#define DRV_RDD_IH_CONTEXT_TABLE_4_BASE_ADDRESS ( 0x0 ) +#define DRV_RDD_IH_CONTEXT_TABLE_6_BASE_ADDRESS ( 0x0 ) +#define DRV_RDD_IH_CONTEXT_TABLE_8_BASE_ADDRESS MAC_CONTEXT_TABLE_ADDRESS +#define DRV_RDD_IH_CONTEXT_TABLE_9_BASE_ADDRESS MAC_CONTEXT_TABLE_ADDRESS + +#define DRV_RDD_IH_CONTEXT_TABLE_1_ENTRY_SIZE ( DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_2_BYTES ) +#define DRV_RDD_IH_CONTEXT_TABLE_2_ENTRY_SIZE ( DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_1_BYTE ) +#define DRV_RDD_IH_CONTEXT_TABLE_3_ENTRY_SIZE ( DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_INTERNAL_ENTRY ) +#define DRV_RDD_IH_CONTEXT_TABLE_4_ENTRY_SIZE ( DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_INTERNAL_ENTRY ) +#define DRV_RDD_IH_CONTEXT_TABLE_6_ENTRY_SIZE ( DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_INTERNAL_ENTRY ) +#define DRV_RDD_IH_CONTEXT_TABLE_8_ENTRY_SIZE ( DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_2_BYTES ) +#define DRV_RDD_IH_CONTEXT_TABLE_9_ENTRY_SIZE ( DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_2_BYTES ) + +#define DRV_RDD_IH_CONTEXT_TABLE_1_CAM_BASE_ADDRESS MAC_CONTEXT_TABLE_CAM_ADDRESS +#define DRV_RDD_IH_CONTEXT_TABLE_2_CAM_BASE_ADDRESS ( 0x38E0 ) +#define DRV_RDD_IH_CONTEXT_TABLE_3_CAM_BASE_ADDRESS ( 0x0 ) +#define DRV_RDD_IH_CONTEXT_TABLE_4_CAM_BASE_ADDRESS ( 0x0 ) +#define DRV_RDD_IH_CONTEXT_TABLE_6_CAM_BASE_ADDRESS ( 0x0 ) +#define DRV_RDD_IH_CONTEXT_TABLE_8_CAM_BASE_ADDRESS MAC_CONTEXT_TABLE_CAM_ADDRESS +#define DRV_RDD_IH_CONTEXT_TABLE_9_CAM_BASE_ADDRESS MAC_CONTEXT_TABLE_CAM_ADDRESS + +/* Table 1: DST_MAC_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_0_START_OFFSET ( 2 ) +#define DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_0_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_0_MASK_LOW ( 0xFFFFFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_0_MASK_HIGH ( 0xFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_1_DST_MAC_KEY_GLOBAL_MASK ( 0xFFF ) + +/* Table 9: SRC_MAC_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_0_START_OFFSET ( 4 ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_0_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_0_MASK_LOW ( 0xFFFFFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_0_MASK_HIGH ( 0xFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_9_SRC_MAC_KEY_GLOBAL_MASK ( 0xFFF ) + +/* Table 8: SRC_MAC_BROADCOM_SWITCH_LAN_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_8_SRC_MAC_BROADCOM_SWITCH_LAN_KEY_PART_0_START_OFFSET ( 4 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SRC_MAC_BROADCOM_SWITCH_LAN_KEY_PART_0_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SRC_MAC_BROADCOM_SWITCH_LAN_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SRC_MAC_BROADCOM_SWITCH_LAN_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SRC_MAC_BROADCOM_SWITCH_LAN_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SRC_MAC_BROADCOM_SWITCH_LAN_KEY_PART_0_MASK_LOW ( 0xFFFFFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SRC_MAC_BROADCOM_SWITCH_LAN_KEY_PART_0_MASK_HIGH ( 0xFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SRC_MAC_BROADCOM_SWITCH_LAN_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SRC_MAC_BROADCOM_SWITCH_LAN_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_8_SRC_MAC_BROADCOM_SWITCH_LAN_KEY_GLOBAL_MASK ( 0xFFF ) + +/* Table 2: IPTV_DA_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_KEY_PART_0_START_OFFSET ( 2 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_KEY_PART_0_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_KEY_PART_0_MASK_LOW ( 0xFFFFFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_KEY_PART_0_MASK_HIGH ( 0xFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_KEY_GLOBAL_MASK ( 0xFFF ) + +/* Table 2: IPTV_DA_VID_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_VID_KEY_PART_0_START_OFFSET ( 2 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_VID_KEY_PART_0_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_VID_KEY_PART_1_START_OFFSET ( 2 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_VID_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_VID_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_VID_KEY_PART_0_MASK_LOW ( 0xFFFFFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_VID_KEY_PART_0_MASK_HIGH ( 0xFFFFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_VID_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_VID_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_DA_VID_KEY_GLOBAL_MASK ( 0x7FFF ) + +/* Table 2: IPTV_L3_DIP_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_KEY_PART_0_START_OFFSET ( 10 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_KEY_PART_0_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_KEY_PART_0_MASK_LOW ( 0xFFFFFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_KEY_GLOBAL_MASK ( 0xFF ) + +/* Table 2: IPTV_L3_DIP_SIP_VID_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_SIP_VID_KEY_PART_0_START_OFFSET ( 10 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_SIP_VID_KEY_PART_0_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_SIP_VID_KEY_PART_1_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_SIP_VID_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_SIP_VID_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_SIP_VID_KEY_PART_0_MASK_LOW ( 0xFFFFFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_SIP_VID_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_SIP_VID_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_SIP_VID_KEY_PART_1_MASK_HIGH ( 0xFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_2_IPTV_L3_DIP_SIP_VID_KEY_GLOBAL_MASK ( 0x7FF ) + +/* Table 6 */ +#define DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_0_START_OFFSET ( 10 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_0_SHIFT ( 8 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_0_MASK_LOW ( 0xFFFFFFFF ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_6_KEY_GLOBAL_MASK ( 0x1FF ) + +/* Table 3: VID_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_0_MASK_LOW ( 0x1FFF00 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 3: PBITS_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_KEY_PART_0_MASK_LOW ( 0xF00000 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 3: VID_PBITS_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_KEY_PART_0_MASK_LOW ( 0xFFFF00 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 3: VID_GEM_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_GEM_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_GEM_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_GEM_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_GEM_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_GEM_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_GEM_FLOW_ID ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_GEM_KEY_PART_0_MASK_LOW ( 0x1FFF00 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_GEM_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_GEM_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_GEM_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_GEM_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 3: PBITS_GEM_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_GEM_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_GEM_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_GEM_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_GEM_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_GEM_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_GEM_FLOW_ID ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_GEM_KEY_PART_0_MASK_LOW ( 0xF00000 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_GEM_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_GEM_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_GEM_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_PBITS_GEM_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 3: VID_PBITS_GEM_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_GEM_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_GEM_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_GEM_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_GEM_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_GEM_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_GEM_FLOW_ID ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_GEM_KEY_PART_0_MASK_LOW ( 0xFFFF00 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_GEM_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_GEM_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_GEM_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_VID_PBITS_GEM_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 3: GEM_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_3_GEM_KEY_PART_0_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_GEM_KEY_PART_0_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_GEM_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_GEM_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_GEM_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_GEM_FLOW_ID ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_GEM_KEY_PART_0_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_GEM_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_GEM_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_GEM_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_3_GEM_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 4: VID_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_KEY_PART_0_MASK_LOW ( 0x1FFF00 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 4: PBITS_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_KEY_PART_0_MASK_LOW ( 0xF00000 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 4: VID_PBITS_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_KEY_PART_0_MASK_LOW ( 0xFFFF00 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 4: VID_SRC_PORT_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_SOURCE_PORT ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_0_MASK_LOW ( 0x1FFF00 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_SRC_PORT_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 4: PBITS_SRC_PORT_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_SRC_PORT_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_SRC_PORT_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_SRC_PORT_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_SRC_PORT_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_SRC_PORT_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_SOURCE_PORT ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_SRC_PORT_KEY_PART_0_MASK_LOW ( 0xF00000 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_SRC_PORT_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_SRC_PORT_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_SRC_PORT_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_PBITS_SRC_PORT_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 4: VID_PBITS_SRC_PORT_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_SRC_PORT_KEY_PART_0_START_OFFSET ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_SRC_PORT_KEY_PART_0_SHIFT ( 6 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_SRC_PORT_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_SRC_PORT_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_SRC_PORT_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_SOURCE_PORT ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_SRC_PORT_KEY_PART_0_MASK_LOW ( 0xFFFF00 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_SRC_PORT_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_SRC_PORT_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_SRC_PORT_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_VID_PBITS_SRC_PORT_KEY_GLOBAL_MASK ( 0x1F3F ) + +/* Table 4: SRC_PORT_METHOD */ +#define DRV_RDD_IH_LOOKUP_TABLE_4_SRC_PORT_KEY_PART_0_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SRC_PORT_KEY_PART_0_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SRC_PORT_KEY_PART_1_START_OFFSET ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SRC_PORT_KEY_PART_1_SHIFT ( 0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SRC_PORT_KEY_KEY_EXTENSION ( DRV_IH_LOOKUP_KEY_EXTENSION_SOURCE_PORT ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SRC_PORT_KEY_PART_0_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SRC_PORT_KEY_PART_0_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SRC_PORT_KEY_PART_1_MASK_LOW ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SRC_PORT_KEY_PART_1_MASK_HIGH ( 0x0 ) +#define DRV_RDD_IH_LOOKUP_TABLE_4_SRC_PORT_KEY_GLOBAL_MASK ( 0x1F3F ) + + +/**** Classes configuration ****/ + +/* Classes indices */ +#define DRV_RDD_IH_CLASS_WAN_CONTROL_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_IPTV_INDEX ( 1 ) +#define DRV_RDD_IH_CLASS_PCI_INDEX ( 2 ) +#define DRV_RDD_IH_CLASS_WAN_BRIDGED_HIGH_INDEX ( 8 ) +#define DRV_RDD_IH_CLASS_WAN_BRIDGED_LOW_INDEX ( 9 ) +#define DRV_RDD_IH_CLASS_LAN_BRIDGED_ETH0_INDEX ( 10 ) +#define DRV_RDD_IH_CLASS_LAN_BRIDGED_ETH1_INDEX ( 11 ) +#define DRV_RDD_IH_CLASS_LAN_BRIDGED_ETH2_INDEX ( 12 ) +#define DRV_RDD_IH_CLASS_LAN_BRIDGED_ETH3_INDEX ( 13 ) +#define DRV_RDD_IH_CLASS_LAN_BRIDGED_ETH4_INDEX ( 14 ) + +/* Class 0: WAN_CONTROL */ +#define DRV_RDD_IH_CLASS_0_CLASS_SEARCH_1 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX ) +#define DRV_RDD_IH_CLASS_0_CLASS_SEARCH_2 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX ) +#define DRV_RDD_IH_CLASS_0_CLASS_SEARCH_3 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_0_CLASS_SEARCH_4 ( DRV_RDD_IH_LOOKUP_TABLE_DS_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_0_DESTINATION_PORT_EXTRACTION ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ) +#define DRV_RDD_IH_CLASS_0_DROP_ON_MISS ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ) +#define DRV_RDD_IH_CLASS_0_DSCP_TO_PBITS_TABLE_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_0_DIRECT_MODE_DEFAULT ( 0 ) +#define DRV_RDD_IH_CLASS_0_DIRECT_MODE_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_0_TARGET_MEMORY_DEFAULT ( DRV_IH_TARGET_MEMORY_DDR ) +#define DRV_RDD_IH_CLASS_0_TARGET_MEMORY_OVERRIDE ( 1 ) +#define DRV_RDD_IH_CLASS_0_INGRESS_QOS_DEFAULT ( DRV_IH_INGRESS_QOS_LOW ) +#define DRV_RDD_IH_CLASS_0_INGRESS_QOS_OVERRIDE ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED )/* constant */ +#define DRV_RDD_IH_CLASS_0_TARGET_RUNNER_DEFAULT ( DRV_RDD_IH_DS_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_0_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE ( 0 ) +#define DRV_RDD_IH_CLASS_0_TARGET_RUNNER_FOR_DIRECT_MODE ( DRV_RDD_IH_DS_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_0_LOAD_BALANCING_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_CLASS_0_PREFERENCE_LOAD_BALANCING_ENABLE ( 0 )/* constant */ + +/* Class 1: IPTV */ +#define DRV_RDD_IH_CLASS_1_CLASS_SEARCH_1 ( DRV_RDD_IH_LOOKUP_TABLE_IPTV_INDEX ) +#define DRV_RDD_IH_CLASS_1_CLASS_SEARCH_2 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_1_CLASS_SEARCH_3 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_1_CLASS_SEARCH_4 ( DRV_RDD_IH_LOOKUP_TABLE_DS_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_1_DESTINATION_PORT_EXTRACTION ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ) +#define DRV_RDD_IH_CLASS_1_DROP_ON_MISS ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ) +#define DRV_RDD_IH_CLASS_1_DSCP_TO_PBITS_TABLE_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_1_DIRECT_MODE_DEFAULT ( 0 ) +#define DRV_RDD_IH_CLASS_1_DIRECT_MODE_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_1_TARGET_MEMORY_DEFAULT ( DRV_IH_TARGET_MEMORY_DDR ) +#define DRV_RDD_IH_CLASS_1_TARGET_MEMORY_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_1_INGRESS_QOS_DEFAULT ( DRV_IH_INGRESS_QOS_LOW ) +#define DRV_RDD_IH_CLASS_1_INGRESS_QOS_OVERRIDE ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED )/* constant */ +#define DRV_RDD_IH_CLASS_1_TARGET_RUNNER_DEFAULT ( DRV_RDD_IH_DS_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_1_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE ( 0 ) +#define DRV_RDD_IH_CLASS_1_TARGET_RUNNER_FOR_DIRECT_MODE ( DRV_RDD_IH_DS_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_1_LOAD_BALANCING_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_CLASS_1_PREFERENCE_LOAD_BALANCING_ENABLE ( 0 )/* constant */ + +/* Class 2: PCI */ +#define DRV_RDD_IH_CLASS_2_CLASS_SEARCH_1 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX ) +#define DRV_RDD_IH_CLASS_2_CLASS_SEARCH_2 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX ) +#define DRV_RDD_IH_CLASS_2_CLASS_SEARCH_3 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_2_CLASS_SEARCH_4 ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_2_DESTINATION_PORT_EXTRACTION ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ) +#define DRV_RDD_IH_CLASS_2_DROP_ON_MISS ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ) +#define DRV_RDD_IH_CLASS_2_DSCP_TO_PBITS_TABLE_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_2_DIRECT_MODE_DEFAULT ( 0 ) +#define DRV_RDD_IH_CLASS_2_DIRECT_MODE_OVERRIDE ( 1 ) +#define DRV_RDD_IH_CLASS_2_TARGET_MEMORY_DEFAULT ( DRV_IH_TARGET_MEMORY_DDR ) +#define DRV_RDD_IH_CLASS_2_TARGET_MEMORY_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_2_INGRESS_QOS_DEFAULT ( DRV_IH_INGRESS_QOS_LOW ) +#define DRV_RDD_IH_CLASS_2_INGRESS_QOS_OVERRIDE ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED )/* constant */ +#define DRV_RDD_IH_CLASS_2_TARGET_RUNNER_DEFAULT ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_2_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE ( 0 ) +#define DRV_RDD_IH_CLASS_2_TARGET_RUNNER_FOR_DIRECT_MODE ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_2_LOAD_BALANCING_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_CLASS_2_PREFERENCE_LOAD_BALANCING_ENABLE ( 0 )/* constant */ + +/* Class 8: WAN_BRIDGED_HIGH */ +#define DRV_RDD_IH_CLASS_8_CLASS_SEARCH_1 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX ) +#define DRV_RDD_IH_CLASS_8_CLASS_SEARCH_2 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX ) +#define DRV_RDD_IH_CLASS_8_CLASS_SEARCH_3 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_8_CLASS_SEARCH_4 ( DRV_RDD_IH_LOOKUP_TABLE_DS_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_8_DESTINATION_PORT_EXTRACTION ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ) +#define DRV_RDD_IH_CLASS_8_DROP_ON_MISS ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ) +#define DRV_RDD_IH_CLASS_8_DSCP_TO_PBITS_TABLE_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_8_DIRECT_MODE_DEFAULT ( 0 ) +#define DRV_RDD_IH_CLASS_8_DIRECT_MODE_OVERRIDE ( 1 ) +#define DRV_RDD_IH_CLASS_8_TARGET_MEMORY_DEFAULT ( DRV_IH_TARGET_MEMORY_DDR ) +#define DRV_RDD_IH_CLASS_8_TARGET_MEMORY_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_8_INGRESS_QOS_DEFAULT ( DRV_IH_INGRESS_QOS_HIGH ) +#define DRV_RDD_IH_CLASS_8_INGRESS_QOS_OVERRIDE ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED )/* constant */ +#define DRV_RDD_IH_CLASS_8_TARGET_RUNNER_DEFAULT ( DRV_RDD_IH_DS_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_8_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE ( 1 ) +#define DRV_RDD_IH_CLASS_8_TARGET_RUNNER_FOR_DIRECT_MODE ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_8_LOAD_BALANCING_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_CLASS_8_PREFERENCE_LOAD_BALANCING_ENABLE ( 0 )/* constant */ + +/* Class 9: WAN_BRIDGED_LOW */ +#define DRV_RDD_IH_CLASS_9_CLASS_SEARCH_1 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX ) +#define DRV_RDD_IH_CLASS_9_CLASS_SEARCH_2 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX ) +#define DRV_RDD_IH_CLASS_9_CLASS_SEARCH_3 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_9_CLASS_SEARCH_4 ( DRV_RDD_IH_LOOKUP_TABLE_DS_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_9_DESTINATION_PORT_EXTRACTION ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ) +#define DRV_RDD_IH_CLASS_9_DROP_ON_MISS ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ) +#define DRV_RDD_IH_CLASS_9_DSCP_TO_PBITS_TABLE_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_9_DIRECT_MODE_DEFAULT ( 0 ) +#define DRV_RDD_IH_CLASS_9_DIRECT_MODE_OVERRIDE ( 1 ) +#define DRV_RDD_IH_CLASS_9_TARGET_MEMORY_DEFAULT ( DRV_IH_TARGET_MEMORY_DDR ) +#define DRV_RDD_IH_CLASS_9_TARGET_MEMORY_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_9_INGRESS_QOS_DEFAULT ( DRV_IH_INGRESS_QOS_LOW ) +#define DRV_RDD_IH_CLASS_9_INGRESS_QOS_OVERRIDE ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED )/* constant */ +#define DRV_RDD_IH_CLASS_9_TARGET_RUNNER_DEFAULT ( DRV_RDD_IH_DS_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_9_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE ( 1 ) +#define DRV_RDD_IH_CLASS_9_TARGET_RUNNER_FOR_DIRECT_MODE ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_9_LOAD_BALANCING_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_CLASS_9_PREFERENCE_LOAD_BALANCING_ENABLE ( 0 )/* constant */ + +/* Class 10: LAN_BRIDGED_ETH0 */ +#define DRV_RDD_IH_CLASS_10_CLASS_SEARCH_1 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX ) +#define DRV_RDD_IH_CLASS_10_CLASS_SEARCH_2 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX ) +#define DRV_RDD_IH_CLASS_10_CLASS_SEARCH_3 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_10_CLASS_SEARCH_4 ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_10_DESTINATION_PORT_EXTRACTION ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ) +#define DRV_RDD_IH_CLASS_10_DROP_ON_MISS ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ) +#define DRV_RDD_IH_CLASS_10_DSCP_TO_PBITS_TABLE_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_10_DIRECT_MODE_DEFAULT ( 0 ) +#define DRV_RDD_IH_CLASS_10_DIRECT_MODE_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_10_TARGET_MEMORY_DEFAULT ( DRV_IH_TARGET_MEMORY_DDR ) +#define DRV_RDD_IH_CLASS_10_TARGET_MEMORY_OVERRIDE ( 1 ) +#define DRV_RDD_IH_CLASS_10_INGRESS_QOS_DEFAULT ( DRV_IH_INGRESS_QOS_LOW ) +#define DRV_RDD_IH_CLASS_10_INGRESS_QOS_OVERRIDE ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED )/* constant */ +#define DRV_RDD_IH_CLASS_10_TARGET_RUNNER_DEFAULT ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_10_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE ( 0 ) +#define DRV_RDD_IH_CLASS_10_TARGET_RUNNER_FOR_DIRECT_MODE ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_10_LOAD_BALANCING_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_CLASS_10_PREFERENCE_LOAD_BALANCING_ENABLE ( 0 )/* constant */ + +/* Class 11: LAN_BRIDGED_ETH1 */ +#define DRV_RDD_IH_CLASS_11_CLASS_SEARCH_1 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX ) +#define DRV_RDD_IH_CLASS_11_CLASS_SEARCH_2 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX ) +#define DRV_RDD_IH_CLASS_11_CLASS_SEARCH_3 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_11_CLASS_SEARCH_4 ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_11_DESTINATION_PORT_EXTRACTION ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ) +#define DRV_RDD_IH_CLASS_11_DROP_ON_MISS ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ) +#define DRV_RDD_IH_CLASS_11_DSCP_TO_PBITS_TABLE_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_11_DIRECT_MODE_DEFAULT ( 0 ) +#define DRV_RDD_IH_CLASS_11_DIRECT_MODE_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_11_TARGET_MEMORY_DEFAULT ( DRV_IH_TARGET_MEMORY_DDR ) +#define DRV_RDD_IH_CLASS_11_TARGET_MEMORY_OVERRIDE ( 1 ) +#define DRV_RDD_IH_CLASS_11_INGRESS_QOS_DEFAULT ( DRV_IH_INGRESS_QOS_LOW ) +#define DRV_RDD_IH_CLASS_11_INGRESS_QOS_OVERRIDE ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED )/* constant */ +#define DRV_RDD_IH_CLASS_11_TARGET_RUNNER_DEFAULT ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_11_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE ( 0 ) +#define DRV_RDD_IH_CLASS_11_TARGET_RUNNER_FOR_DIRECT_MODE ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_11_LOAD_BALANCING_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_CLASS_11_PREFERENCE_LOAD_BALANCING_ENABLE ( 0 )/* constant */ + +/* Class 12: LAN_BRIDGED_ETH2 */ +#define DRV_RDD_IH_CLASS_12_CLASS_SEARCH_1 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX ) +#define DRV_RDD_IH_CLASS_12_CLASS_SEARCH_2 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX ) +#define DRV_RDD_IH_CLASS_12_CLASS_SEARCH_3 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_12_CLASS_SEARCH_4 ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_12_DESTINATION_PORT_EXTRACTION ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ) +#define DRV_RDD_IH_CLASS_12_DROP_ON_MISS ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ) +#define DRV_RDD_IH_CLASS_12_DSCP_TO_PBITS_TABLE_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_12_DIRECT_MODE_DEFAULT ( 0 ) +#define DRV_RDD_IH_CLASS_12_DIRECT_MODE_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_12_TARGET_MEMORY_DEFAULT ( DRV_IH_TARGET_MEMORY_DDR ) +#define DRV_RDD_IH_CLASS_12_TARGET_MEMORY_OVERRIDE ( 1 ) +#define DRV_RDD_IH_CLASS_12_INGRESS_QOS_DEFAULT ( DRV_IH_INGRESS_QOS_LOW ) +#define DRV_RDD_IH_CLASS_12_INGRESS_QOS_OVERRIDE ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED )/* constant */ +#define DRV_RDD_IH_CLASS_12_TARGET_RUNNER_DEFAULT ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_12_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE ( 0 ) +#define DRV_RDD_IH_CLASS_12_TARGET_RUNNER_FOR_DIRECT_MODE ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_12_LOAD_BALANCING_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_CLASS_12_PREFERENCE_LOAD_BALANCING_ENABLE ( 0 )/* constant */ + +/* Class 13: LAN_BRIDGED_ETH3 */ +#define DRV_RDD_IH_CLASS_13_CLASS_SEARCH_1 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX ) +#define DRV_RDD_IH_CLASS_13_CLASS_SEARCH_2 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX ) +#define DRV_RDD_IH_CLASS_13_CLASS_SEARCH_3 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_13_CLASS_SEARCH_4 ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_13_DESTINATION_PORT_EXTRACTION ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ) +#define DRV_RDD_IH_CLASS_13_DROP_ON_MISS ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ) +#define DRV_RDD_IH_CLASS_13_DSCP_TO_PBITS_TABLE_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_13_DIRECT_MODE_DEFAULT ( 0 ) +#define DRV_RDD_IH_CLASS_13_DIRECT_MODE_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_13_TARGET_MEMORY_DEFAULT ( DRV_IH_TARGET_MEMORY_DDR ) +#define DRV_RDD_IH_CLASS_13_TARGET_MEMORY_OVERRIDE ( 1 ) +#define DRV_RDD_IH_CLASS_13_INGRESS_QOS_DEFAULT ( DRV_IH_INGRESS_QOS_LOW ) +#define DRV_RDD_IH_CLASS_13_INGRESS_QOS_OVERRIDE ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED )/* constant */ +#define DRV_RDD_IH_CLASS_13_TARGET_RUNNER_DEFAULT ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_13_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE ( 0 ) +#define DRV_RDD_IH_CLASS_13_TARGET_RUNNER_FOR_DIRECT_MODE ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_13_LOAD_BALANCING_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_CLASS_13_PREFERENCE_LOAD_BALANCING_ENABLE ( 0 )/* constant */ + +/* Class 14: LAN_BRIDGED_ETH4 */ +#define DRV_RDD_IH_CLASS_14_CLASS_SEARCH_1 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_DA_INDEX ) +#define DRV_RDD_IH_CLASS_14_CLASS_SEARCH_2 ( DRV_RDD_IH_LOOKUP_TABLE_MAC_SA_INDEX ) +#define DRV_RDD_IH_CLASS_14_CLASS_SEARCH_3 ( DRV_IH_CLASS_SEARCH_DISABLED ) +#define DRV_RDD_IH_CLASS_14_CLASS_SEARCH_4 ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_14_DESTINATION_PORT_EXTRACTION ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ) +#define DRV_RDD_IH_CLASS_14_DROP_ON_MISS ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ) +#define DRV_RDD_IH_CLASS_14_DSCP_TO_PBITS_TABLE_INDEX ( 0 ) +#define DRV_RDD_IH_CLASS_14_DIRECT_MODE_DEFAULT ( 0 ) +#define DRV_RDD_IH_CLASS_14_DIRECT_MODE_OVERRIDE ( 0 ) +#define DRV_RDD_IH_CLASS_14_TARGET_MEMORY_DEFAULT ( DRV_IH_TARGET_MEMORY_DDR ) +#define DRV_RDD_IH_CLASS_14_TARGET_MEMORY_OVERRIDE ( 1 ) +#define DRV_RDD_IH_CLASS_14_INGRESS_QOS_DEFAULT ( DRV_IH_INGRESS_QOS_LOW ) +#define DRV_RDD_IH_CLASS_14_INGRESS_QOS_OVERRIDE ( DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED )/* constant */ +#define DRV_RDD_IH_CLASS_14_TARGET_RUNNER_DEFAULT ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_14_TARGET_RUNNER_OVERRIDE_IN_DIRECT_MODE ( 0 ) +#define DRV_RDD_IH_CLASS_14_TARGET_RUNNER_FOR_DIRECT_MODE ( DRV_RDD_IH_US_DEFAULT_RUNNER ) +#define DRV_RDD_IH_CLASS_14_LOAD_BALANCING_ENABLE ( 0 )/* constant */ +#define DRV_RDD_IH_CLASS_14_PREFERENCE_LOAD_BALANCING_ENABLE ( 0 )/* constant */ + +/* Class search alternatives, according to user configuration.*/ +#define DRV_RDD_IH_CLASS_10_CLASS_SEARCH_4_ALTERNATIVE ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_11_CLASS_SEARCH_4_ALTERNATIVE ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_12_CLASS_SEARCH_4_ALTERNATIVE ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_13_CLASS_SEARCH_4_ALTERNATIVE ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_14_CLASS_SEARCH_4_ALTERNATIVE ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_2_CLASS_SEARCH_4_ALTERNATIVE ( DRV_RDD_IH_LOOKUP_TABLE_US_INGRESS_CLASSIFICATION_INDEX ) +#define DRV_RDD_IH_CLASS_1_CLASS_SEARCH_2_ALTERNATIVE ( DRV_IH_CLASS_SEARCH_DISABLED ) +#endif diff --git a/arch/arm/mach-bcmbca/rdp/rdd_init.c b/arch/arm/mach-bcmbca/rdp/rdd_init.c new file mode 100755 index 0000000000..dad5928381 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_init.c @@ -0,0 +1,1595 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#include "rdd.h" +#include "rdp_mm.h" + +/******************************************************************************/ +/* */ +/* Global Variables */ +/* */ +/******************************************************************************/ + +uint8_t *ContextTableBase; +extern RDD_CONNECTION_TABLE_DTS *g_ds_connection_table_ptr; +extern int g_dbg_lvl; +extern RDD_FC_MCAST_CONNECTION2_TABLE_DTS *g_fc_mcast_connection2_table_ptr; +extern uint8_t *g_runner_ddr_base_addr; +extern uint32_t g_runner_ddr_base_addr_phys; +extern uint8_t *g_runner_extra_ddr_base_addr; +extern uint32_t g_runner_extra_ddr_base_addr_phys; +extern uint32_t g_ddr_headroom_size; +extern uint8_t *g_runner_tables_ptr; +extern uint8_t g_broadcom_switch_mode; +extern BL_LILAC_RDD_BRIDGE_PORT_DTE g_broadcom_switch_physical_port; +extern uint32_t g_bridge_flow_cache_mode; +extern uint8_t **g_cpu_tx_skb_pointers_reference_array; +extern uint8_t *g_dhd_tx_cpu_usage_reference_array; +extern rdd_phys_addr_t *g_cpu_tx_data_pointers_reference_array; +extern uint32_t g_cpu_tx_abs_packet_limit; +extern rdd_phys_addr_t g_free_skb_indexes_fifo_table_physical_address; +extern rdd_phys_addr_t g_free_skb_indexes_fifo_table_physical_address_last_idx; +extern uint16_t *g_free_skb_indexes_fifo_table; +extern RDD_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTE g_ingress_classification_rule_cfg_table[ 2 ]; +extern uint32_t g_rate_controllers_pool_idx; +extern uint32_t g_chip_revision; +extern RDD_WAN_TX_POINTERS_TABLE_DTS *wan_tx_pointers_table_ptr; +rdpa_bpm_buffer_size_t g_bpm_buffer_size = LILAC_RDD_RUNNER_PACKET_BUFFER_SIZE; + +static BL_LILAC_RDD_ERROR_DTE f_rdd_bpm_initialize ( uint32_t, uint32_t, uint32_t ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_ddr_initialize ( uint32_t, uint32_t, uint32_t ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_psram_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_scheduler_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_free_packet_descriptors_pool_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_global_registers_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_local_registers_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_ingress_classification_table_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_eth_tx_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_wan_tx_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_inter_task_queues_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_pm_counters_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_transmit_from_abs_address_initialize ( void ); +static BL_LILAC_RDD_ERROR_DTE f_rdd_parallel_processing_initialize ( void ); + +extern BL_LILAC_RDD_ERROR_DTE rdd_firewall_initialize ( void ); +extern BL_LILAC_RDD_ERROR_DTE rdd_cpu_tx_initialize ( void ); +extern BL_LILAC_RDD_ERROR_DTE rdd_cpu_rx_initialize ( void ); +extern BL_LILAC_RDD_ERROR_DTE f_rdd_mac_table_initialize ( uint32_t, uint32_t ); +extern BL_LILAC_RDD_ERROR_DTE f_rdd_ingress_filters_cam_initialize ( void ); +extern BL_LILAC_RDD_ERROR_DTE f_rdd_layer4_filters_initialize ( void ); +extern BL_LILAC_RDD_ERROR_DTE f_rdd_vlan_matrix_initialize ( void ); +extern BL_LILAC_RDD_ERROR_DTE f_rdd_connection_table_initialize ( void ); +extern BL_LILAC_RDD_ERROR_DTE f_rdd_multicast_initialize ( void ); +extern BL_LILAC_RDD_ERROR_DTE f_rdd_vid_cam_initialize ( void ); +extern BL_LILAC_RDD_ERROR_DTE f_rdd_ds_exponent_table_initialize ( void ); +extern void f_rdd_full_flow_cache_config ( bdmf_boolean ); + +BL_LILAC_RDD_ERROR_DTE rdd_init ( void ) +{ + RUNNER_INST_MAIN *sram_fast_program_ptr; + RUNNER_INST_PICO *sram_pico_program_ptr; + RUNNER_COMMON *sram_common_data_ptr; + RUNNER_PRIVATE *sram_private_data_ptr; + RUNNER_CNTXT_MAIN *sram_fast_context_ptr; + RUNNER_CNTXT_PICO *sram_pico_context_ptr; + RUNNER_PRED_MAIN *sram_fast_prediction_ptr; + RUNNER_PRED_PICO *sram_pico_prediction_ptr; + + /* reset SRAM program memory of both Runners */ + sram_fast_program_ptr = ( RUNNER_INST_MAIN * )DEVICE_ADDRESS( RUNNER_INST_MAIN_0_OFFSET ); + rdp_mm_setl ( sram_fast_program_ptr, 0, sizeof ( RUNNER_INST_MAIN ) ); + + sram_fast_program_ptr = ( RUNNER_INST_MAIN * )DEVICE_ADDRESS( RUNNER_INST_MAIN_1_OFFSET ); + rdp_mm_setl ( sram_fast_program_ptr, 0, sizeof ( RUNNER_INST_MAIN ) ); + + sram_pico_program_ptr = ( RUNNER_INST_PICO * )DEVICE_ADDRESS( RUNNER_INST_PICO_0_OFFSET ); + rdp_mm_setl ( sram_pico_program_ptr, 0, sizeof ( RUNNER_INST_PICO ) ); + + sram_pico_program_ptr = ( RUNNER_INST_PICO * )DEVICE_ADDRESS( RUNNER_INST_PICO_1_OFFSET ); + rdp_mm_setl ( sram_fast_program_ptr, 0, sizeof ( RUNNER_INST_PICO ) ); + + /* reset SRAM common data memory of both Runners */ + sram_common_data_ptr = ( RUNNER_COMMON * )DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ); + rdp_mm_setl ( sram_common_data_ptr, 0, sizeof ( RUNNER_COMMON ) ); + + sram_common_data_ptr = ( RUNNER_COMMON * )DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ); + rdp_mm_setl ( sram_common_data_ptr, 0, sizeof ( RUNNER_COMMON ) ); + + /* reset SRAM private data memory of both Runners */ + sram_private_data_ptr = ( RUNNER_PRIVATE * )DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ); + rdp_mm_setl ( sram_private_data_ptr, 0, sizeof ( RUNNER_PRIVATE ) ); + + sram_private_data_ptr = ( RUNNER_PRIVATE * )DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ); + rdp_mm_setl ( sram_private_data_ptr, 0, sizeof ( RUNNER_PRIVATE ) ); + + /* reset SRAM context memory of both Runners */ + sram_fast_context_ptr = ( RUNNER_CNTXT_MAIN * )DEVICE_ADDRESS( RUNNER_CNTXT_MAIN_0_OFFSET ); + rdp_mm_setl_context ( sram_fast_context_ptr, 0, sizeof ( RUNNER_CNTXT_MAIN ) ); + + sram_fast_context_ptr = ( RUNNER_CNTXT_MAIN * )DEVICE_ADDRESS( RUNNER_CNTXT_MAIN_1_OFFSET ); + rdp_mm_setl_context ( sram_fast_context_ptr, 0, sizeof ( RUNNER_CNTXT_MAIN ) ); + + sram_pico_context_ptr = ( RUNNER_CNTXT_PICO * )DEVICE_ADDRESS( RUNNER_CNTXT_PICO_0_OFFSET ); + rdp_mm_setl_context ( sram_pico_context_ptr, 0, sizeof ( RUNNER_CNTXT_PICO ) ); + + sram_pico_context_ptr = ( RUNNER_CNTXT_PICO * )DEVICE_ADDRESS( RUNNER_CNTXT_PICO_1_OFFSET ); + rdp_mm_setl_context ( sram_pico_context_ptr, 0, sizeof ( RUNNER_CNTXT_PICO ) ); + + /* reset SRAM prediction memory of both Runners */ + sram_fast_prediction_ptr = ( RUNNER_PRED_MAIN * )DEVICE_ADDRESS( RUNNER_PRED_MAIN_0_OFFSET ); + rdp_mm_setl ( sram_fast_prediction_ptr, 0, sizeof ( RUNNER_PRED_MAIN ) * 2 ); + + sram_fast_prediction_ptr = ( RUNNER_PRED_MAIN * )DEVICE_ADDRESS( RUNNER_PRED_MAIN_1_OFFSET ); + rdp_mm_setl ( sram_fast_prediction_ptr, 0, sizeof ( RUNNER_PRED_MAIN ) * 2 ); + + sram_pico_prediction_ptr = ( RUNNER_PRED_PICO * )DEVICE_ADDRESS( RUNNER_PRED_PICO_0_OFFSET ); + rdp_mm_setl ( sram_pico_prediction_ptr, 0, sizeof ( RUNNER_PRED_PICO ) * 2 ); + + sram_pico_prediction_ptr = ( RUNNER_PRED_PICO * )DEVICE_ADDRESS( RUNNER_PRED_PICO_1_OFFSET ); + rdp_mm_setl ( sram_pico_prediction_ptr, 0, sizeof ( RUNNER_PRED_PICO ) * 2 ); + + return ( BL_LILAC_RDD_OK ); +} + +BL_LILAC_RDD_ERROR_DTE rdd_load_microcode ( uint8_t *xi_runer_A_microcode_ptr, + uint8_t *xi_runer_B_microcode_ptr, + uint8_t *xi_runer_C_microcode_ptr, + uint8_t *xi_runer_D_microcode_ptr ) +{ + RUNNER_INST_MAIN *sram_fast_program_ptr; + RUNNER_INST_PICO *sram_pico_program_ptr; + + + /* load the code segment into the SRAM program memory of fast Runner B */ + sram_fast_program_ptr = ( RUNNER_INST_MAIN * )DEVICE_ADDRESS( RUNNER_INST_MAIN_1_OFFSET ); + MWRITE_BLK_32( sram_fast_program_ptr, xi_runer_B_microcode_ptr, sizeof ( RUNNER_INST_MAIN ) ); + + /* load the code segment into the SRAM program memory of pico Runner A */ + sram_pico_program_ptr = ( RUNNER_INST_PICO * )DEVICE_ADDRESS( RUNNER_INST_PICO_0_OFFSET ); + MWRITE_BLK_32( sram_pico_program_ptr, xi_runer_C_microcode_ptr, sizeof ( RUNNER_INST_PICO ) ); + + /* load the code segment into the SRAM program memory of pico Runner B */ + sram_pico_program_ptr = ( RUNNER_INST_PICO * )DEVICE_ADDRESS( RUNNER_INST_PICO_1_OFFSET ); + MWRITE_BLK_32( sram_pico_program_ptr, xi_runer_D_microcode_ptr, sizeof ( RUNNER_INST_PICO ) ); + + return ( BL_LILAC_RDD_OK ); +} + + +static void memcpyl_prediction ( void * __to, void * __from, unsigned int __n ) +{ + uint8_t *src = (uint8_t *)__from; + uint8_t *dst = (uint8_t *)__to; + int i; + + for (i = 0; i < (__n / 2); i++, src += 2, dst += 4) + { +#ifdef _BYTE_ORDER_LITTLE_ENDIAN_ + *(volatile unsigned int *)dst = swap4bytes((unsigned int)(*(volatile unsigned short *)src)); +#else + *(volatile unsigned int *)dst = (unsigned int)(*(volatile unsigned short *)src); +#endif + } +} + + +BL_LILAC_RDD_ERROR_DTE rdd_load_prediction ( uint8_t *xi_runer_A_prediction_ptr, + uint8_t *xi_runer_B_prediction_ptr, + uint8_t *xi_runer_C_prediction_ptr, + uint8_t *xi_runer_D_prediction_ptr ) +{ + RUNNER_PRED_MAIN *sram_fast_prediction_ptr; + RUNNER_PRED_PICO *sram_pico_prediction_ptr; + + sram_fast_prediction_ptr = ( RUNNER_PRED_MAIN * )DEVICE_ADDRESS( RUNNER_PRED_MAIN_0_OFFSET ); + memcpyl_prediction ( sram_fast_prediction_ptr, xi_runer_A_prediction_ptr, sizeof ( RUNNER_PRED_MAIN ) ); + + sram_fast_prediction_ptr = ( RUNNER_PRED_MAIN * )DEVICE_ADDRESS( RUNNER_PRED_MAIN_1_OFFSET ); + memcpyl_prediction ( sram_fast_prediction_ptr, xi_runer_B_prediction_ptr, sizeof ( RUNNER_PRED_MAIN ) ); + + sram_pico_prediction_ptr = ( RUNNER_PRED_PICO * )DEVICE_ADDRESS( RUNNER_PRED_PICO_0_OFFSET ); + memcpyl_prediction ( sram_pico_prediction_ptr, xi_runer_C_prediction_ptr, sizeof ( RUNNER_PRED_PICO ) ); + + sram_pico_prediction_ptr = ( RUNNER_PRED_PICO * )DEVICE_ADDRESS( RUNNER_PRED_PICO_1_OFFSET ); + memcpyl_prediction ( sram_pico_prediction_ptr, xi_runer_D_prediction_ptr, sizeof ( RUNNER_PRED_PICO ) ); + + return ( BL_LILAC_RDD_OK ); +} + + +BL_LILAC_RDD_ERROR_DTE rdd_runner_enable ( void ) +{ +#if !defined(FIRMWARE_INIT) + RUNNER_REGS_CFG_GLOBAL_CTRL runner_global_control_register; + + /* enable Runner A through the global control register */ + RUNNER_REGS_0_CFG_GLOBAL_CTRL_READ ( runner_global_control_register ); + runner_global_control_register.pico_en = LILAC_RDD_TRUE; + runner_global_control_register.main_cntxt_reb_en = LILAC_RDD_TRUE; + RUNNER_REGS_0_CFG_GLOBAL_CTRL_WRITE ( runner_global_control_register ); + + /* enable Runner B through the global control register */ + RUNNER_REGS_1_CFG_GLOBAL_CTRL_READ ( runner_global_control_register ); + runner_global_control_register.main_en = LILAC_RDD_TRUE; + runner_global_control_register.pico_en = LILAC_RDD_TRUE; + runner_global_control_register.main_cntxt_reb_en = LILAC_RDD_TRUE; + RUNNER_REGS_1_CFG_GLOBAL_CTRL_WRITE ( runner_global_control_register ); +#endif + + return ( BL_LILAC_RDD_OK ); +} + +BL_LILAC_RDD_ERROR_DTE rdd_runner_frequency_set ( uint16_t xi_runner_frequency ) +{ +#if !defined(FIRMWARE_INIT) + RUNNER_REGS_CFG_GLOBAL_CTRL runner_global_control_register; + + /* set the frequency of the Runner through the global control register */ + RUNNER_REGS_0_CFG_GLOBAL_CTRL_READ ( runner_global_control_register ); + runner_global_control_register.micro_sec_val = xi_runner_frequency - 1; + RUNNER_REGS_0_CFG_GLOBAL_CTRL_WRITE ( runner_global_control_register ); + + RUNNER_REGS_1_CFG_GLOBAL_CTRL_READ ( runner_global_control_register ); + runner_global_control_register.micro_sec_val = xi_runner_frequency - 1; + RUNNER_REGS_1_CFG_GLOBAL_CTRL_WRITE ( runner_global_control_register ); +#endif + + return ( BL_LILAC_RDD_OK ); +} + + +BL_LILAC_RDD_ERROR_DTE rdd_data_structures_init ( RDD_INIT_PARAMS *init_params ) +{ + /* initialize the base address of the packets in the ddr */ + g_runner_ddr_base_addr = init_params->ddr_pool_ptr; + g_runner_ddr_base_addr_phys = init_params->ddr_pool_ptr_phys; + g_runner_extra_ddr_base_addr = init_params->extra_ddr_pool_ptr; + g_runner_extra_ddr_base_addr_phys = init_params->extra_ddr_pool_ptr_phys; + g_runner_tables_ptr = init_params->ddr_runner_tables_ptr; + g_ds_connection_table_ptr = ( RDD_CONNECTION_TABLE_DTS * )DsConnectionTableBase; +#if !defined(FIRMWARE_INIT) + /* In simulation these are setup in rdd_sim_alloc_segments */ + ContextTableBase = g_runner_tables_ptr + CONTEXT_TABLE_ADDRESS; +#endif + + g_dbg_lvl = 0; + g_fc_mcast_connection2_table_ptr = ( RDD_FC_MCAST_CONNECTION2_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + FC_MCAST_CONNECTION2_TABLE_ADDRESS ); + + g_ddr_headroom_size = init_params->ddr_headroom_size; + + g_broadcom_switch_mode = init_params->broadcom_switch_mode; + g_broadcom_switch_physical_port = init_params->broadcom_switch_physical_port; + + g_bridge_flow_cache_mode = init_params->bridge_flow_cache_mode; + g_chip_revision = init_params->chip_revision; + + /* check abs packet limit legal value*/ + if( ( init_params->cpu_tx_abs_packet_limit <= LILAC_RDD_CPU_TX_SKB_LIMIT_MAX ) && + ( init_params->cpu_tx_abs_packet_limit >= LILAC_RDD_CPU_TX_SKB_LIMIT_MIN ) && + ( init_params->cpu_tx_abs_packet_limit % LILAC_RDD_CPU_TX_SKB_LIMIT_MIN == 0 ) ) + { + g_cpu_tx_abs_packet_limit = init_params->cpu_tx_abs_packet_limit; + } + else + { + g_cpu_tx_abs_packet_limit = LILAC_RDD_CPU_TX_SKB_LIMIT_MIN; + } + + /* initialize the base address of the BPM base address */ + f_rdd_bpm_initialize(init_params->ddr_pool_ptr_phys, 0, init_params->extra_ddr_pool_ptr_phys); + + /* initialize runner dma base address */ + f_rdd_ddr_initialize(init_params->ddr_pool_ptr_phys, 0, g_ddr_headroom_size); + + /* initialize runner dma base address */ + f_rdd_psram_initialize (); + + /* initialize scheduler */ + f_rdd_scheduler_initialize (); + + /* create the Runner's free packet descriptors pool */ + f_rdd_free_packet_descriptors_pool_initialize (); + + /* initialize the CPU-RX mechanism */ + rdd_cpu_rx_initialize (); + + /* initialize the CPU-TX queue */ + rdd_cpu_tx_initialize (); + + /* initialize global registers */ + f_rdd_global_registers_initialize (); + + /* initialize the local registers through the Context memory */ + f_rdd_local_registers_initialize (); + + /* initialize ethernet tx queues and ports */ + f_rdd_eth_tx_initialize (); + + /* initialize WAN tx */ + f_rdd_wan_tx_initialize (); + + /* initialize inter task queues */ + f_rdd_inter_task_queues_initialize (); + + /* initialize PM counters */ + f_rdd_pm_counters_initialize (); + + /* initialize ingress classification table */ + f_rdd_ingress_classification_table_initialize (); + + /* set up the ETH0 EEE mode config message*/ + MWRITE_32(DEVICE_ADDRESS(RUNNER_PRIVATE_1_OFFSET) + US_ETH0_EEE_MODE_CONFIG_MESSAGE_ADDRESS, + (BBH_PERIPHERAL_ETH0_TX<<16)|BBTX_EEE_MODE_CONFIG_MESSAGE); + + /* initialize free skb indexes fifo and pointers*/ + f_rdd_transmit_from_abs_address_initialize (); + + /* Part of the bridge initialization. */ + MWRITE_16( (DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS), DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS ); + + /* initialize structures supporting parallel processing */ + f_rdd_parallel_processing_initialize (); + + /* set to not configured */ + rdd_ethwan2_switch_port_config(0xff); + + /* initialize ds rate limit exponent table */ + f_rdd_ds_exponent_table_initialize (); + + return ( BL_LILAC_RDD_OK ); +} + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* f_rdd_bpm_initialize */ +/* */ +/* Title: */ +/* */ +/* Runner Initialization - initialize BPM */ +/* */ +/* Abstract: */ +/* */ +/* This function returns the status of the operation */ +/* */ +/* Registers : */ +/* */ +/* none */ +/* */ +/* Input: */ +/* */ +/* xi_runner_ddr_pool_ptr - Packet DDR buffer base address */ +/* xi_extra_ddr_pool_ptr - Packet DDR buffer base address (Multicast) */ +/* xi_ddr_headroom_size - configurable headroom in addition to */ +/* LILAC_RDD_PACKET_DDR_OFFSET */ +/* */ +/* Output: */ +/* */ +/* none */ +/* . */ +/* */ +/******************************************************************************/ +static BL_LILAC_RDD_ERROR_DTE f_rdd_bpm_initialize(uint32_t runner_ddr_pool_phys, + uint32_t runner_ddr1_pool_phys, + uint32_t runner_extra_ddr_pool_phys) +{ + uint32_t *bpm_ddr_base_ptr; + uint32_t *bpm_extra_ddr_base_ptr; + + bpm_ddr_base_ptr = (uint32_t *)(DEVICE_ADDRESS(RUNNER_PRIVATE_0_OFFSET) + DS_BPM_DDR_BUFFERS_BASE_ADDRESS); + MWRITE_32(bpm_ddr_base_ptr, runner_ddr_pool_phys); + bpm_ddr_base_ptr = (uint32_t *)(DEVICE_ADDRESS(RUNNER_PRIVATE_1_OFFSET) + US_BPM_DDR_BUFFERS_BASE_ADDRESS); + MWRITE_32(bpm_ddr_base_ptr, runner_ddr_pool_phys); + + bpm_extra_ddr_base_ptr = (uint32_t *)(DEVICE_ADDRESS(RUNNER_PRIVATE_0_OFFSET) + DS_BPM_EXTRA_DDR_BUFFERS_BASE_ADDRESS); + MWRITE_32(bpm_extra_ddr_base_ptr, runner_extra_ddr_pool_phys); + + bpm_extra_ddr_base_ptr = (uint32_t *)(DEVICE_ADDRESS(RUNNER_PRIVATE_1_OFFSET) + US_BPM_EXTRA_DDR_BUFFERS_BASE_ADDRESS); + MWRITE_32(bpm_extra_ddr_base_ptr, runner_extra_ddr_pool_phys); + + return ( BL_LILAC_RDD_OK ); +} + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* f_rdd_ddr_initialize */ +/* */ +/* Title: */ +/* */ +/* Runner Initialization - initialize the runner ddr config register */ +/* */ +/* Abstract: */ +/* */ +/* This function returns the status of the operation */ +/* */ +/* Registers : */ +/* */ +/* DDR_config Register */ +/* */ +/* Input: */ +/* */ +/* xi_runner_ddr_pool_phys - Packet DDR buffer base address */ +/* xi_ddr_headroom_size - configurable headroom in addition to */ +/* LILAC_RDD_PACKET_DDR_OFFSET */ +/* */ +/* Output: */ +/* */ +/* none */ +/* . */ +/* */ +/******************************************************************************/ +static BL_LILAC_RDD_ERROR_DTE f_rdd_ddr_initialize(uint32_t xi_runner_ddr_pool_phys, + uint32_t xi_runner_ddr1_pool_phys, + uint32_t xi_ddr_headroom_size) +{ + RUNNER_REGS_CFG_DDR_CFG runner_ddr_config_register; + RUNNER_REGS_CFG_DDR_LKUP_MASK0 runner_ddr_lkup_mask0_register; + RUNNER_REGS_CFG_DDR_LKUP_MASK1 runner_ddr_lkup_mask1_register; + uint32_t *ddr_address_ptr; /* DSL */ + + runner_ddr_config_register.buffer_offset = LILAC_RDD_PACKET_DDR_OFFSET; + runner_ddr_config_register.rserved1 = 0; + runner_ddr_config_register.dma_base = (xi_runner_ddr_pool_phys & 0x07E00000) >> 21; + runner_ddr_config_register.buffer_size = RDP_CFG_BUF_SIZE_VALUE; + runner_ddr_config_register.rserved2 = 0; + + RUNNER_REGS_0_CFG_DDR_CFG_WRITE ( runner_ddr_config_register ); + RUNNER_REGS_1_CFG_DDR_CFG_WRITE ( runner_ddr_config_register ); + + /* DDR lookup for routed packet - 5 tupples */ + runner_ddr_lkup_mask0_register.global_mask = 0x000001FF; + + RUNNER_REGS_0_CFG_DDR_LKUP_MASK0_WRITE ( runner_ddr_lkup_mask0_register ); + RUNNER_REGS_1_CFG_DDR_LKUP_MASK0_WRITE ( runner_ddr_lkup_mask0_register ); + + /* DDR lookup for IPTV table - destination MAC, destination MAC + VLAN, destination IP */ + runner_ddr_lkup_mask1_register.global_mask = 0x00000000; + + RUNNER_REGS_0_CFG_DDR_LKUP_MASK1_WRITE ( runner_ddr_lkup_mask1_register ); + RUNNER_REGS_1_CFG_DDR_LKUP_MASK1_WRITE ( runner_ddr_lkup_mask1_register ); + + ddr_address_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PACKET_BUFFER_SIZE_ASR_8_ADDRESS ); + MWRITE_8( ddr_address_ptr, g_bpm_buffer_size >> 8 ); + + ddr_address_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PACKET_BUFFER_SIZE_ASR_8_ADDRESS ); + MWRITE_8( ddr_address_ptr, g_bpm_buffer_size >> 8 ); + + return ( BL_LILAC_RDD_OK ); +} + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* f_rdd_psram_initialize */ +/* */ +/* Title: */ +/* */ +/* Runner Initialization - initialize the runner psram config register */ +/* */ +/* Abstract: */ +/* */ +/* This function returns the status of the operation */ +/* */ +/* Registers : */ +/* */ +/* PSRAM_config Register */ +/* */ +/* Input: */ +/* */ +/* none */ +/* */ +/* Output: */ +/* */ +/* none */ +/* . */ +/* */ +/******************************************************************************/ +static BL_LILAC_RDD_ERROR_DTE f_rdd_psram_initialize ( void ) +{ + RUNNER_REGS_CFG_PSRAM_CFG runner_psram_config_register; + RUNNER_REGS_CFG_PSRAM_LKUP_MASK0 runner_psram_lkup_mask0_register; + + runner_psram_config_register.buffer_offset = LILAC_RDD_PACKET_DDR_OFFSET; + runner_psram_config_register.rserved1 = 0; + runner_psram_config_register.buffer_size = RUNNER_REGS_CFG_PSRAM_CFG_BUFFER_SIZE_BUFFER_SIZE_128BYTE_VALUE; + runner_psram_config_register.rserved2 = 0; + runner_psram_config_register.dma_base = 0; + + RUNNER_REGS_0_CFG_PSRAM_CFG_WRITE ( runner_psram_config_register ); + RUNNER_REGS_1_CFG_PSRAM_CFG_WRITE ( runner_psram_config_register ); + + + /* PSRAM lookup for data collection - 5 tupples & layer 2 */ + runner_psram_lkup_mask0_register.global_mask = 0x0000FFFF; + + RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK0_WRITE ( runner_psram_lkup_mask0_register ); + RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK0_WRITE ( runner_psram_lkup_mask0_register ); + + return ( BL_LILAC_RDD_OK ); +} + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* f_rdd_scheduler_initialize */ +/* */ +/* Title: */ +/* */ +/* Runner Initialization - initialize the scheduler config register */ +/* */ +/* Abstract: */ +/* */ +/* This function returns the status of the operation */ +/* */ +/* Registers : */ +/* */ +/* DDR_config Register */ +/* */ +/* Input: */ +/* */ +/* none */ +/* */ +/* Output: */ +/* */ +/* none */ +/* . */ +/* */ +/******************************************************************************/ +static BL_LILAC_RDD_ERROR_DTE f_rdd_scheduler_initialize ( void ) +{ + uint32_t runner_scheduler_cfg_register; + + /* fast Runner A - class C */ + runner_scheduler_cfg_register = ( RUNNER_REGS_CFG_MAIN_SCH_CFG_ARB_CLASS_USE_RR_VALUE << 6 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_USE_CLASS_B_DONT_USE_CLASS_B_VALUE << 5 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_USE_CLASS_A_DONT_USE_CLASS_A_VALUE << 4 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_31_24_RR_VALUE << 3 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_23_16_RR_VALUE << 2 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_15_8_RR_VALUE << 1 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_7_0_STRICT_VALUE << 0 ); + + RUNNER_REGS_0_CFG_MAIN_SCH_CFG_WRITE ( runner_scheduler_cfg_register ); + + /* fast Runner B - class C */ + runner_scheduler_cfg_register = ( RUNNER_REGS_CFG_MAIN_SCH_CFG_ARB_CLASS_USE_RR_VALUE << 6 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_USE_CLASS_B_DONT_USE_CLASS_B_VALUE << 5 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_USE_CLASS_A_DONT_USE_CLASS_A_VALUE << 4 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_31_24_RR_VALUE << 3 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_23_16_RR_VALUE << 2 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_15_8_RR_VALUE << 1 ) | + ( RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_7_0_STRICT_VALUE << 0 ); + + RUNNER_REGS_1_CFG_MAIN_SCH_CFG_WRITE ( runner_scheduler_cfg_register ); + + /* pico Runner A - class A */ + runner_scheduler_cfg_register = ( RUNNER_REGS_CFG_PICO_SCH_CFG_ARB_CLASS_USE_RR_VALUE << 6 ) | + ( RUNNER_REGS_CFG_PICO_SCH_CFG_USE_CLASS_B_DONT_USE_CLASS_B_VALUE << 5 ) | + ( RUNNER_REGS_CFG_PICO_SCH_CFG_USE_CLASS_A_USE_CLASS_A_VALUE << 4 ) | + ( RUNNER_REGS_CFG_PICO_SCH_CFG_CLASS_15_8_RR_VALUE << 1 ) | + ( RUNNER_REGS_CFG_PICO_SCH_CFG_CLASS_7_0_RR_VALUE << 0 ); + + RUNNER_REGS_0_CFG_PICO_SCH_CFG_WRITE ( runner_scheduler_cfg_register ); + + /* pico Runner B - class A */ + runner_scheduler_cfg_register = ( RUNNER_REGS_CFG_PICO_SCH_CFG_ARB_CLASS_USE_RR_VALUE << 6 ) | + ( RUNNER_REGS_CFG_PICO_SCH_CFG_USE_CLASS_B_DONT_USE_CLASS_B_VALUE << 5 ) | + ( RUNNER_REGS_CFG_PICO_SCH_CFG_USE_CLASS_A_USE_CLASS_A_VALUE << 4 ) | + ( RUNNER_REGS_CFG_PICO_SCH_CFG_CLASS_15_8_RR_VALUE << 1 ) | + ( RUNNER_REGS_CFG_PICO_SCH_CFG_CLASS_7_0_RR_VALUE << 0 ); + + RUNNER_REGS_1_CFG_PICO_SCH_CFG_WRITE ( runner_scheduler_cfg_register ); + + return ( BL_LILAC_RDD_OK ); +} + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* f_rdd_free_packet_descriptors_pool_initialize */ +/* */ +/* Title: */ +/* */ +/* Runner Initialization - initialize the list of the free buffers pool */ +/* */ +/* Abstract: */ +/* */ +/* Upstream pool is implemented as a stack of 3072 packet descriptors */ +/* Downstream pool is implemented as a list of 2048 packet descriptors */ +/* */ +/* Input: */ +/* */ +/* none */ +/* */ +/* Output: */ +/* */ +/* none */ +/* . */ +/* */ +/******************************************************************************/ +static BL_LILAC_RDD_ERROR_DTE f_rdd_free_packet_descriptors_pool_initialize ( void ) +{ + RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_DTS *ds_free_packet_descriptors_pool_ptr; + RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DTS *us_free_packet_descriptors_pool_ptr; + RDD_PACKET_DESCRIPTOR_DTS *packet_descriptor_ptr; + RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_DTS *free_packet_descriptors_pool_descriptor_ptr; + RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_DTS *us_free_packet_descriptors_pool_descriptor_ptr; + uint32_t next_packet_descriptor_address; + uint32_t i; + + ds_free_packet_descriptors_pool_ptr = ( RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS ); + + /* create the free packet descriptors pool as a list of packet descriptors */ + for ( i = 0; i < RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE; i++ ) + { + packet_descriptor_ptr = &( ds_free_packet_descriptors_pool_ptr->entry[ i ].packet_descriptor ); + + /* the last packet descriptor should point to NULL, the others points to the next packet descriptor */ + if ( i == ( RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE - 1 ) ) + { + next_packet_descriptor_address = 0; + } + else + { + next_packet_descriptor_address = DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS + ( i + 1 ) * sizeof(RDD_PACKET_DESCRIPTOR_DTS); + } + + RDD_PACKET_DESCRIPTOR_NEXT_PACKET_DESCRIPTOR_POINTER_WRITE ( next_packet_descriptor_address, packet_descriptor_ptr ); + } + + free_packet_descriptors_pool_descriptor_ptr = ( RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS ); + + RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_HEAD_POINTER_WRITE ( DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS, free_packet_descriptors_pool_descriptor_ptr ); + + RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_TAIL_POINTER_WRITE ( DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS + ( RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE - 1 ) * sizeof(RDD_PACKET_DESCRIPTOR_DTS), + free_packet_descriptors_pool_descriptor_ptr ); + + us_free_packet_descriptors_pool_ptr = ( RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS ); + + /* create the free packet descriptors pool as a stack of packet descriptors */ + for ( i = 0; i < RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE; i++ ) + { + packet_descriptor_ptr = &( us_free_packet_descriptors_pool_ptr->entry[ i ].packet_descriptor ); + + /* the last packet descriptor should point to NULL, the others points to the next packet descriptor */ + if ( i == ( RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE - 1 ) ) + { + next_packet_descriptor_address = 0; + } + else + { + next_packet_descriptor_address = US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS + ( i + 1 ) * sizeof(RDD_PACKET_DESCRIPTOR_DTS); + } + + RDD_PACKET_DESCRIPTOR_NEXT_PACKET_DESCRIPTOR_POINTER_WRITE ( next_packet_descriptor_address, packet_descriptor_ptr ); + } + + us_free_packet_descriptors_pool_descriptor_ptr = ( RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS ); + + RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_THRESHOLD_WRITE ( US_FREE_PACKET_DESCRIPTOR_POOL_GUARANTEED_QUEUE_THRESHOLD, us_free_packet_descriptors_pool_descriptor_ptr ); + RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_FREE_COUNT_WRITE (US_FREE_PACKET_DESCRIPTOR_POOL_MIN_GUARANTEED_POOL_SIZE, us_free_packet_descriptors_pool_descriptor_ptr ); + RDD_US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_NON_GUARANTEED_FREE_COUNT_WRITE ( RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE - US_FREE_PACKET_DESCRIPTOR_POOL_MIN_GUARANTEED_POOL_SIZE, us_free_packet_descriptors_pool_descriptor_ptr ); + + return ( BL_LILAC_RDD_OK ); +} + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* f_rdd_global_registers_initialize */ +/* */ +/* Title: */ +/* */ +/* Runner Initialization - initialize the global registers (R1-R7) */ +/* */ +/* Registers : */ +/* */ +/* Runners global registers (R1-R7) */ +/* */ +/* Input: */ +/* */ +/* none */ +/* */ +/* Output: */ +/* */ +/* none */ +/* . */ +/* */ +/******************************************************************************/ +static BL_LILAC_RDD_ERROR_DTE f_rdd_global_registers_initialize ( void ) +{ + uint32_t *global_register_init_ptr; + uint32_t global_register[ 8 ]; + + + /********** Fast Runner A **********/ + + /* zero all global registers */ + memset ( global_register, 0, sizeof ( global_register ) ); + + /* R1 - constant one */ + global_register[ 1 ] = 1; + + global_register[ 2 ] = ( g_broadcom_switch_mode << DS_GLOBAL_CFG_BROADCOM_SWITCH_MODE_BIT_OFFSET ) | + ( 1 << DS_GLOBAL_CFG_FLOW_CACHE_MODE_BIT_OFFSET ) | + ( g_bridge_flow_cache_mode << DS_GLOBAL_CFG_BRIDGE_FLOW_CACHE_MODE_BIT_OFFSET ) | + ( g_chip_revision << DS_GLOBAL_CFG_CHIP_REVISION_OFFSET ); + + global_register[ 3 ] = ( DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS << 16 ) | DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS; + global_register[ 4 ] = DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS << 16 | DS_SQ_ENQUEUE_QUEUE_ADDRESS; + global_register[ 6 ] = ( DOWNSTREAM_MULTICAST_INGRESS_QUEUE_ADDRESS << 16 ) | DOWNSTREAM_MULTICAST_INGRESS_QUEUE_ADDRESS; + + global_register_init_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ); + + /* copy the global regsiters to the data SRAM, the firmware will load it from the SRAM at task -1 (initialization task) */ + MWRITE_BLK_32( global_register_init_ptr, global_register, sizeof ( global_register ) ); + + + /********** Fast Runner B **********/ + + /* zero all global registers */ + memset ( global_register, 0, sizeof ( global_register ) ); + + /* R1 - constant one */ + global_register[ 1 ] = 1; + + /* R2 - head pointer of the free buffers pool stack */ + global_register[ 2 ] = US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS; + + /* R4 - Not used */ + + global_register[ 7 ] = ( g_broadcom_switch_mode << US_GLOBAL_CFG_BROADCOM_SWITCH_MODE_BIT_OFFSET ) | + ( g_chip_revision << US_GLOBAL_CFG_CHIP_REVISION_OFFSET ); + + global_register_init_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ); + + /* copy the global regsiters to the data SRAM, the firmware will load it from the SRAM at task -1 (initialization task) */ + MWRITE_BLK_32( global_register_init_ptr, global_register, sizeof ( global_register ) ); + + + /********** Pico Runner A **********/ + + /* zero all global registers */ + memset ( global_register, 0, sizeof ( global_register ) ); + + /* R1 - constant one */ + global_register[ 1 ] = 1; + + global_register[ 2 ] = ( g_chip_revision << DS_GLOBAL_CFG_CHIP_REVISION_OFFSET ); + + global_register_init_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ); + + /* copy the global regsiters to the data SRAM, the firmware will load it from the SRAM at task -1 (initialization task) */ + MWRITE_BLK_32( global_register_init_ptr, global_register, sizeof ( global_register ) ); + + + /********** Pico Runner B **********/ + + /* zero all global registers */ + memset ( global_register, 0, sizeof ( global_register ) ); + + /* R1 - constant one */ + global_register[ 1 ] = 1; + + global_register[ 3 ] = US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS; + global_register[ 3 ] |= US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS << 16; + + /* R4 - context_index_cache_write_index */ + global_register[ 4 ] = 0; + global_register[ 7 ] = ( g_broadcom_switch_mode << US_GLOBAL_CFG_BROADCOM_SWITCH_MODE_BIT_OFFSET ) | + ( g_chip_revision << US_GLOBAL_CFG_CHIP_REVISION_OFFSET ); + + global_register_init_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS ); + + MWRITE_BLK_32( global_register_init_ptr, global_register, sizeof ( global_register ) ); + + return ( BL_LILAC_RDD_OK ); +} + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* f_rdd_local_registers_initialize */ +/* */ +/* Title: */ +/* */ +/* Runner Initialization - initialize context memeories of 4 Runners */ +/* */ +/* Abstract: */ +/* */ +/* initialize the local registers (R8-R31), 32 threads for fast Runners */ +/* and 16 threads for Pico Runners */ +/* */ +/* Registers : */ +/* */ +/* Runners local registers (R8-R31) */ +/* */ +/* Input: */ +/* */ +/* none */ +/* */ +/* Output: */ +/* */ +/* none */ +/* . */ +/* */ +/******************************************************************************/ +static BL_LILAC_RDD_ERROR_DTE f_rdd_local_registers_initialize ( void ) +{ + RUNNER_CNTXT_MAIN *sram_fast_context_ptr; + RUNNER_CNTXT_PICO *sram_pico_context_ptr; + static uint32_t local_register[ 32 ][ 32 ]; + + /********** Fast Runner A **********/ + + sram_fast_context_ptr = ( RUNNER_CNTXT_MAIN * )DEVICE_ADDRESS( RUNNER_CNTXT_MAIN_0_OFFSET ); + + /* read the local registers from the Context memory - maybe it was initialized by the ACE compiler */ + MREAD_BLK_32( local_register, sram_fast_context_ptr, sizeof ( RUNNER_CNTXT_MAIN ) ); + + /* CPU TX fast */ + local_register[ CPU_TX_FAST_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, cpu_tx_wakeup_request) << 16; + local_register[ CPU_TX_FAST_THREAD_NUMBER ][ CS_R8 ] = ( CPU_TX_FAST_QUEUE_ADDRESS << 16 ); + local_register[ CPU_TX_FAST_THREAD_NUMBER ][ CS_R9 ] = ( INGRESS_HANDLER_BUFFER_ADDRESS << 16 ) | DS_CPU_TX_BBH_DESCRIPTORS_ADDRESS; + local_register[ CPU_TX_FAST_THREAD_NUMBER ][ CS_R10 ] = ( BBH_PERIPHERAL_IH << 16 ) | ( LILAC_RDD_IH_BUFFER_BBH_ADDRESS + LILAC_RDD_RUNNER_A_IH_BUFFER_BBH_OFFSET ); + local_register[ CPU_TX_FAST_THREAD_NUMBER ][ CS_R11 ] = ( BBH_PERIPHERAL_IH << 16 ) | LILAC_RDD_IH_HEADER_DESCRIPTOR_BBH_ADDRESS; + + /* CPU-RX */ + local_register[ CPU_RX_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, cpu_rx_wakeup_request) << 16; + local_register[ CPU_RX_THREAD_NUMBER ][ CS_R8 ] = CPU_RX_FAST_PD_INGRESS_QUEUE_ADDRESS; + local_register[ CPU_RX_THREAD_NUMBER ][ CS_R9 ] = DS_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS | ( DS_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS << 16 ); + local_register[ CPU_RX_THREAD_NUMBER ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS | ( CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS << 16 ); + local_register[ CPU_RX_THREAD_NUMBER ][ CS_R11 ] = DS_CPU_REASON_TO_METER_TABLE_ADDRESS | ( CPU_RX_PD_INGRESS_QUEUE_ADDRESS << 16 ); + + /* Timer scheduler */ + local_register[ TIMER_SCHEDULER_MAIN_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, timer_scheduler_set) << 16; + local_register[ TIMER_SCHEDULER_MAIN_THREAD_NUMBER ][ CS_R19 ] = 0; /* RX_METER_INDEX */ + local_register[ TIMER_SCHEDULER_MAIN_THREAD_NUMBER ][ CS_R21 ] = DS_CPU_RX_METER_TABLE_ADDRESS; + + /* DS Policers budget allocator */ + local_register[ POLICER_BUDGET_ALLOCATOR_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, policer_budget_allocator_1st_wakeup_request) << 16; + + + /* WAN Filters and Classification */ + local_register[ WAN_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, wan_normal_wakeup_request) << 16; + local_register[ WAN_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R8 ] = GPON_RX_NORMAL_DESCRIPTORS_ADDRESS << 16 | BBH_PERIPHERAL_WAN_RX; + local_register[ WAN_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R9 ] = CAM_RESULT_SLOT_1 | ( CAM_RESULT_IO_ADDRESS_1 << 16 ); + local_register[ WAN_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS | CPU_REASON_WAN0_TABLE_INDEX << 16; + local_register[ WAN_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R13 ] = ( DMA_LOOKUP_RESULT_SLOT_0 << 5 ) | DMA_LOOKUP_RESULT_FOUR_STEPS | ( DMA_LOOKUP_RESULT_IO_ADDRESS_0 << 16 ); + local_register[ WAN_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R14 ] = WAN_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER; + + + /* WAN1 Filters and Classification */ + local_register[ WAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, wan_normal_wakeup_request) << 16; + local_register[ WAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R8 ] = ( ETH0_RX_DESCRIPTORS_ADDRESS << 16 ) | BBH_PERIPHERAL_ETH0_RX; + local_register[ WAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R9 ] = CAM_RESULT_SLOT_2 | ( CAM_RESULT_IO_ADDRESS_2 << 16 ); + local_register[ WAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS | ( CPU_REASON_WAN1_TABLE_INDEX << 16 ); + local_register[ WAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R13 ] = ( DMA_LOOKUP_RESULT_SLOT_1 << 5 ) | DMA_LOOKUP_RESULT_FOUR_STEPS | ( DMA_LOOKUP_RESULT_IO_ADDRESS_1 << 16 ); + local_register[ WAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R14 ] = WAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER; + + /* ETHWAN2 Filters and Classification */ + // FIXME!!! since this is a different thread from WAN1_FILTER... doesn't it require its own CAM_RESULT and DMA_LOOKUP? + local_register[ ETHWAN2_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, ethwan2_normal_wakeup_request) << 16; + local_register[ ETHWAN2_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R8 ] = (ETHWAN2_RX_INGRESS_QUEUE_ADDRESS <<16 ) | ( 1 << WAN_FILTERS_AND_CLASSIFICATON_R8_ETHWAN2_INDICATION_OFFSET ) | BBH_PERIPHERAL_ETH0_RX; + local_register[ ETHWAN2_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R9 ] = CAM_RESULT_SLOT_2 | ( CAM_RESULT_IO_ADDRESS_2 << 16 ); + local_register[ ETHWAN2_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS | ( CPU_REASON_WAN1_TABLE_INDEX << 16 ); + local_register[ ETHWAN2_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R13 ] = ( DMA_LOOKUP_RESULT_SLOT_1 << 5 ) | DMA_LOOKUP_RESULT_FOUR_STEPS | ( DMA_LOOKUP_RESULT_IO_ADDRESS_1 << 16 ); + local_register[ ETHWAN2_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER ][ CS_R14 ] = ETHWAN2_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER; + + /* FLOW_CACHE */ + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, flow_cache_wakeup_request) << 16; + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER ][ CS_R8 ] = ((DS_CONNECTION_BUFFER_TABLE_ADDRESS + 0 * RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 * sizeof(RDD_CONNECTION_ENTRY_DTS)) << 16) | (DS_L2_UCAST_CONNECTION_BUFFER_ADDRESS + 0x0000); + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER ][ CS_R9 ] = ( DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS << 16 ) | ADDRESS_OF(runner_a, flow_cache_wakeup_request); + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER ][ CS_R10 ] = ( FLOW_CACHE_SLAVE0_VECTOR_MASK << 16 ) | INGRESS_HANDLER_BUFFER_ADDRESS; + + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, flow_cache_wakeup_request) << 16; + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER ][ CS_R8 ] = ((DS_CONNECTION_BUFFER_TABLE_ADDRESS + 1 * RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 * sizeof(RDD_CONNECTION_ENTRY_DTS)) << 16) | (DS_L2_UCAST_CONNECTION_BUFFER_ADDRESS + 0x0010); + + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER ][ CS_R9 ] = (( DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS + 1 ) << 16 ) | ADDRESS_OF(runner_a, flow_cache_wakeup_request); + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER ][ CS_R10 ] = ( FLOW_CACHE_SLAVE1_VECTOR_MASK << 16 ) | INGRESS_HANDLER_BUFFER_ADDRESS; + + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, flow_cache_wakeup_request) << 16; + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER ][ CS_R8 ] = ((DS_CONNECTION_BUFFER_TABLE_ADDRESS + 2 * RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 * sizeof(RDD_CONNECTION_ENTRY_DTS)) << 16) | (DS_L2_UCAST_CONNECTION_BUFFER_ADDRESS + 0x0020); + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER ][ CS_R9 ] = (( DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS + 2 ) << 16 ) | ADDRESS_OF(runner_a, flow_cache_wakeup_request); + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER ][ CS_R10 ] = ( FLOW_CACHE_SLAVE2_VECTOR_MASK << 16 ) | INGRESS_HANDLER_BUFFER_ADDRESS; + + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, flow_cache_wakeup_request) << 16; + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER ][ CS_R8 ] = ((DS_CONNECTION_BUFFER_TABLE_ADDRESS + 3 * RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 * sizeof(RDD_CONNECTION_ENTRY_DTS)) << 16) | (DS_L2_UCAST_CONNECTION_BUFFER_ADDRESS + 0x0030); + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER ][ CS_R9 ] = (( DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS + 3 ) << 16 ) | ADDRESS_OF(runner_a, flow_cache_wakeup_request); + local_register[ DOWNSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER ][ CS_R10 ] = ( FLOW_CACHE_SLAVE3_VECTOR_MASK << 16 ) | INGRESS_HANDLER_BUFFER_ADDRESS; + + /* Downstream Multicast */ + local_register[ DOWNSTREAM_MULTICAST_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, downstream_multicast_wakeup_request) << 16; + local_register[ DOWNSTREAM_MULTICAST_THREAD_NUMBER ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS; + + /* Free SKB index */ + local_register[ FREE_SKB_INDEX_FAST_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_a, free_skb_index_wakeup_request) << 16; + + rdp_mm_cpyl_context ( sram_fast_context_ptr, local_register, sizeof ( RUNNER_CNTXT_MAIN ) ); + + /********** Fast Runner B **********/ + + sram_fast_context_ptr = ( RUNNER_CNTXT_MAIN * )DEVICE_ADDRESS( RUNNER_CNTXT_MAIN_1_OFFSET ); + + /* read the local registers from the Context memory - maybe it was initialized by the ACE compiler */ + MREAD_BLK_32( local_register, sram_fast_context_ptr, sizeof ( RUNNER_CNTXT_MAIN ) ); + + /* CPU-TX */ + local_register[ CPU_TX_FAST_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_b, cpu_tx_wakeup_request) << 16; + local_register[ CPU_TX_FAST_THREAD_NUMBER ][ CS_R8 ] = CPU_TX_FAST_QUEUE_ADDRESS; + + /* CPU-RX */ + local_register[ CPU_RX_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_b, cpu_rx_wakeup_request) << 16; + local_register[ CPU_RX_THREAD_NUMBER ][ CS_R9 ] = US_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS + ( US_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS << 16 ); + local_register[ CPU_RX_THREAD_NUMBER ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS | (CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS << 16); + local_register[ CPU_RX_THREAD_NUMBER ][ CS_R11 ] = US_CPU_REASON_TO_METER_TABLE_ADDRESS; + + /* upstream rate controllers budget allocator */ + local_register[ RATE_CONTROLLER_BUDGET_ALLOCATOR_THREAD_NUMBER ][ CS_R14 ] = US_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS; + local_register[ RATE_CONTROLLER_BUDGET_ALLOCATOR_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_b, rate_control_budget_allocator_1st_wakeup_request) << 16; + local_register[ RATE_CONTROLLER_BUDGET_ALLOCATOR_THREAD_NUMBER ][ CS_R18 ] = US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_ADDRESS; + local_register[ RATE_CONTROLLER_BUDGET_ALLOCATOR_THREAD_NUMBER ][ CS_R31 ] = 0; /* rate_controllers_group */ + + /* Timer scheduler */ + local_register[ TIMER_SCHEDULER_MAIN_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_b, timer_scheduler_set) << 16; + local_register[ TIMER_SCHEDULER_MAIN_THREAD_NUMBER ][ CS_R19 ] = 0; /* RX_METER_INDEX */ + local_register[ TIMER_SCHEDULER_MAIN_THREAD_NUMBER ][ CS_R20 ] = US_RATE_LIMITER_TABLE_ADDRESS; + local_register[ TIMER_SCHEDULER_MAIN_THREAD_NUMBER ][ CS_R21 ] = US_CPU_RX_METER_TABLE_ADDRESS; + + /* US Policers budget allocator */ + local_register[ POLICER_BUDGET_ALLOCATOR_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_b, policer_budget_allocator_1st_wakeup_request) << 16; + + + /* WAN1-TX */ + local_register[ WAN1_TX_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_b, wan_tx_wakeup_request) << 16; + local_register[ WAN1_TX_THREAD_NUMBER ][ CS_R8 ] = ( RDD_WAN1_CHANNEL_BASE << 16 ) | ( DATA_POINTER_DUMMY_TARGET_ADDRESS + 4 ); + local_register[ WAN1_TX_THREAD_NUMBER ][ CS_R9 ] = ( ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS << 16 ) | ETHWAN_ABSOLUTE_TX_BBH_COUNTER_ADDRESS; + + /* WAN enqueue (Flow Cache) */ + local_register[ WAN_ENQUEUE_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_b, wan_interworking_enqueue_wakeup_request) << 16; + local_register[ WAN_ENQUEUE_THREAD_NUMBER ][ CS_R9 ] = ( WAN_ENQUEUE_INGRESS_QUEUE_ADDRESS << 16 ) | ADDRESS_OF(runner_b, wan_interworking_enqueue_wakeup_request); + local_register[ WAN_ENQUEUE_THREAD_NUMBER ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS; + + /* Timer 7 */ + local_register[ US_TIMER_7_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_b, timer_7_1st_wakeup_request) << 16; + + /* Free SKB index */ + local_register[ FREE_SKB_INDEX_FAST_THREAD_NUMBER ][ CS_R16 ] = ADDRESS_OF(runner_b, free_skb_index_wakeup_request) << 16; + + rdp_mm_cpyl_context ( sram_fast_context_ptr, local_register, sizeof ( RUNNER_CNTXT_MAIN ) ); + + /********** Pico Runner A **********/ + + sram_pico_context_ptr = ( RUNNER_CNTXT_PICO * )DEVICE_ADDRESS( RUNNER_CNTXT_PICO_0_OFFSET ); + + /* read the local registers from the Context memory - maybe it was initialized by the ACE compiler */ + MREAD_BLK_32( local_register, sram_pico_context_ptr, sizeof ( RUNNER_CNTXT_PICO ) ); + + /* CPU-TX */ + local_register[ CPU_TX_PICO_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_c, cpu_tx_wakeup_request) << 16; + local_register[ CPU_TX_PICO_THREAD_NUMBER - 32 ][ CS_R9 ] = CPU_TX_PICO_QUEUE_ADDRESS; + + /* CPU-RX interrupt coalescing timer */ + local_register[ CPU_RX_INTERRUPT_COALESCING_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_c, cpu_rx_int_coalesce_timer_1st_wakeup_request) << 16; + + /* Timer scheduler */ + local_register[ TIMER_SCHEDULER_PICO_A_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_c, timer_scheduler_set) << 16; + local_register[ TIMER_SCHEDULER_PICO_A_THREAD_NUMBER - 32 ][ CS_R19 ] = 0; /* rate limiter index */ + local_register[ TIMER_SCHEDULER_PICO_A_THREAD_NUMBER - 32 ][ CS_R20 ] = DS_RATE_LIMITER_TABLE_ADDRESS; + local_register[ TIMER_SCHEDULER_PICO_A_THREAD_NUMBER - 32 ][ CS_R21 ] = RATE_LIMITER_REMAINDER_TABLE_ADDRESS; + + /* Local switching LAN enqueue */ + local_register[ LOCAL_SWITCHING_LAN_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R16 ] = ( ADDRESS_OF(runner_c, lan_enqueue_pd_wakeup_request) << 16 ) | ADDRESS_OF(runner_c, lan_enqueue_pd_wakeup_request); + local_register[ LOCAL_SWITCHING_LAN_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R9 ] = LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS; + local_register[ LOCAL_SWITCHING_LAN_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R10 ] = DOWNSTREAM_LAN_ENQUEUE_SQ_PD_ADDRESS; + + /* Downstream LAN enqueue */ + local_register[ DOWNSTREAM_LAN_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_c, lan_enqueue_ih_wakeup_request) << 16 | ADDRESS_OF(runner_c, lan_enqueue_ih_wakeup_request); + local_register[ DOWNSTREAM_LAN_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R9 ] = DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS << 16; + local_register[ DOWNSTREAM_LAN_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS; + + /* Downstream multicast LAN enqueue */ + local_register[ DOWNSTREAM_MULTICAST_LAN_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R16 ] = ( ADDRESS_OF(runner_c, multicast_lan_enqueue_wakeup_request) << 16 ) | ADDRESS_OF(runner_c, multicast_lan_enqueue_wakeup_request); + local_register[ DOWNSTREAM_MULTICAST_LAN_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R9 ] = DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS; + local_register[ DOWNSTREAM_MULTICAST_LAN_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS; + + /* Free SKB index */ + local_register[ FREE_SKB_INDEX_PICO_A_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_c, free_skb_index_wakeup_request) << 16; + local_register[ FREE_SKB_INDEX_PICO_A_THREAD_NUMBER - 32 ][ CS_R9 ] = 1; /* lag_port EMAC/BBH 1 */ + + /* ETH-TX Inter LAN scheduling: thread 42 */ + local_register[ ETH_TX_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_c, lan_tx_wakeup_request) << 16 | (ADDRESS_OF(runner_c, lan_tx_wakeup_request) ); + local_register[ ETH_TX_THREAD_NUMBER - 32 ][ CS_R8 ] = 0; /* inter_lan_scheduling_offset */ + + /* Timer 7 */ + local_register[ DS_TIMER_7_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_c, timer_7_1st_wakeup_request) << 16; + + /* Service Queue Enqueue: thread 44 */ + local_register[ SERVICE_QUEUE_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_c, service_queue_enqueue_wakeup_request) << 16; + local_register[ SERVICE_QUEUE_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R9 ] = INGRESS_HANDLER_BUFFER_ADDRESS; + local_register[ SERVICE_QUEUE_ENQUEUE_THREAD_NUMBER - 32 ][ CS_R10 ] = DS_SQ_ENQUEUE_QUEUE_ADDRESS; + + /* Service Queue Dequeue: thread 45 */ + local_register[ SERVICE_QUEUE_DEQUEUE_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_c, service_queue_dequeue_wakeup_request) << 16 | ADDRESS_OF(runner_c, service_queue_dequeue_wakeup_request); + local_register[ SERVICE_QUEUE_DEQUEUE_THREAD_NUMBER - 32 ][ CS_R10 ] = DOWNSTREAM_LAN_ENQUEUE_SQ_PD_ADDRESS << 16; + local_register[ SERVICE_QUEUE_DEQUEUE_THREAD_NUMBER - 32 ][ CS_R11 ] = CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS; + + rdp_mm_cpyl_context ( sram_pico_context_ptr, local_register, sizeof ( RUNNER_CNTXT_PICO ) ); + + /********** Pico Runner B **********/ + + sram_pico_context_ptr = ( RUNNER_CNTXT_PICO * )DEVICE_ADDRESS( RUNNER_CNTXT_PICO_1_OFFSET ); + + /* read the local registers from the Context memory - maybe it was initialized by the ACE compiler */ + MREAD_BLK_32( local_register, sram_pico_context_ptr, sizeof ( RUNNER_CNTXT_PICO ) ); + + /* Timer scheduler */ + local_register[ TIMER_SCHEDULER_PICO_B_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_d, timer_scheduler_set) << 16; + local_register[ TIMER_SCHEDULER_PICO_B_THREAD_NUMBER - 32 ][ CS_R19 ] = 0; /* rate limiter index */ + local_register[ TIMER_SCHEDULER_PICO_B_THREAD_NUMBER - 32 ][ CS_R20 ] = US_RATE_LIMITER_TABLE_ADDRESS; + +#if defined(DSL_63138) || defined(DSL_63148) + /* LAN-1 Filters and Classification - used by CFE boot loader */ + local_register[ LAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_d, lan_normal_wakeup_request) << 16; + local_register[ LAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER - 32 ][ CS_R8 ] = ETH1_RX_DESCRIPTORS_ADDRESS; + local_register[ LAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER - 32 ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS | ( HASH_RESULT_SLOT_1 << 16 ) | ( HASH_RESULT_IO_ADDRESS_1 << 24 ); + local_register[ LAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER - 32 ][ CS_R12 ] = ( BBH_PERIPHERAL_ETH1_RX << 16 ); + local_register[ LAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER - 32 ][ CS_R13 ] = ( DMA_LOOKUP_RESULT_SLOT_3 << 5 ) | DMA_LOOKUP_RESULT_FOUR_STEPS | ( DMA_LOOKUP_RESULT_IO_ADDRESS_3 << 16 ); +#endif + + /* Free SKB index */ + local_register[ FREE_SKB_INDEX_PICO_B_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_d, free_skb_index_wakeup_request) << 16; + + /* LAN Dispatch */ + local_register[ LAN_DISPATCH_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_d, lan_dispatch_wakeup_request) << 16; + local_register[ LAN_DISPATCH_THREAD_NUMBER - 32 ][ CS_R10 ] = INGRESS_HANDLER_BUFFER_ADDRESS; + local_register[ LAN_DISPATCH_THREAD_NUMBER - 32 ][ CS_R8 ] = ETH1_RX_DESCRIPTORS_ADDRESS; + local_register[ LAN_DISPATCH_THREAD_NUMBER - 32 ][ CS_R15 ] = BBH_PERIPHERAL_ETH1_RX; + local_register[ LAN_DISPATCH_THREAD_NUMBER - 32 ][ CS_R13 ] = ( DMA_LOOKUP_RESULT_SLOT_4 << 5 ) | DMA_LOOKUP_RESULT_FOUR_STEPS | ( DMA_LOOKUP_RESULT_IO_ADDRESS_4 << 16 ); + local_register[ LAN_DISPATCH_THREAD_NUMBER - 32 ][ CS_R14 ] = LAN_DISPATCH_THREAD_NUMBER; + + /* SLAVE0 */ + local_register[ UPSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_d, flow_cache_wakeup_request) << 16; + local_register[ UPSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER - 32 ][ CS_R8 ] = (uint32_t) ((US_CONNECTION_BUFFER_TABLE_ADDRESS + 0 * RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 * sizeof(RDD_CONNECTION_ENTRY_DTS)) << 16) | (US_L2_UCAST_CONNECTION_BUFFER_ADDRESS + 0x0000); + + local_register[ UPSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER - 32 ][ CS_R9 ] = ( US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS << 16 ); + local_register[ UPSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER - 32 ][ CS_R10 ] = ( FLOW_CACHE_SLAVE0_VECTOR_MASK << 16 ) | INGRESS_HANDLER_BUFFER_ADDRESS; + + /* SLAVE1 */ + local_register[ UPSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_d, flow_cache_wakeup_request) << 16; + + local_register[ UPSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER - 32 ][ CS_R8 ] = (uint32_t) ((US_CONNECTION_BUFFER_TABLE_ADDRESS + 1 * RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 * sizeof(RDD_CONNECTION_ENTRY_DTS)) << 16) | (US_L2_UCAST_CONNECTION_BUFFER_ADDRESS + 0x0010); + + local_register[ UPSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER - 32 ][ CS_R9 ] = ( ( US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS + 1 ) << 16 ); + local_register[ UPSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER - 32 ][ CS_R10 ] = ( FLOW_CACHE_SLAVE1_VECTOR_MASK << 16 ) | INGRESS_HANDLER_BUFFER_ADDRESS; + + /* SLAVE2 */ + local_register[ UPSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_d, flow_cache_wakeup_request) << 16; + local_register[ UPSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER - 32 ][ CS_R8 ] = (uint32_t) ((US_CONNECTION_BUFFER_TABLE_ADDRESS + 2 * RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 * sizeof(RDD_CONNECTION_ENTRY_DTS)) << 16) | (US_L2_UCAST_CONNECTION_BUFFER_ADDRESS + 0x0020); + + local_register[ UPSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER - 32 ][ CS_R9 ] = ( ( US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS + 2 ) << 16 ); + local_register[ UPSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER - 32 ][ CS_R10 ] = ( FLOW_CACHE_SLAVE2_VECTOR_MASK << 16 ) | INGRESS_HANDLER_BUFFER_ADDRESS; + + /* SLAVE3 */ + local_register[ UPSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER - 32 ][ CS_R16 ] = ADDRESS_OF(runner_d, flow_cache_wakeup_request) << 16; + + local_register[ UPSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER - 32 ][ CS_R8 ] = (uint32_t) ((US_CONNECTION_BUFFER_TABLE_ADDRESS + 3 * RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 * sizeof(RDD_CONNECTION_ENTRY_DTS)) << 16) | (US_L2_UCAST_CONNECTION_BUFFER_ADDRESS + 0x0030); + + local_register[ UPSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER - 32 ][ CS_R9 ] = ( ( US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS + 3 ) << 16 ); + local_register[ UPSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER - 32 ][ CS_R10 ] = ( FLOW_CACHE_SLAVE3_VECTOR_MASK << 16 ) | INGRESS_HANDLER_BUFFER_ADDRESS; + +#if defined(DSL_63138) || defined(DSL_63148) + /* SLAVE 0-3 */ + local_register[ UPSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER - 32 ][ CS_R9 ] |= (DSL_PTM_BOND_TX_HDR_TABLE_ADDRESS + 0x00); + local_register[ UPSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER - 32 ][ CS_R9 ] |= (DSL_PTM_BOND_TX_HDR_TABLE_ADDRESS + 0x10); + local_register[ UPSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER - 32 ][ CS_R9 ] |= (DSL_PTM_BOND_TX_HDR_TABLE_ADDRESS + 0x20); + local_register[ UPSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER - 32 ][ CS_R9 ] |= (DSL_PTM_BOND_TX_HDR_TABLE_ADDRESS + 0x30); +#endif + + rdp_mm_cpyl_context ( sram_pico_context_ptr, local_register, sizeof ( RUNNER_CNTXT_PICO ) ); + + return ( BL_LILAC_RDD_OK ); +} + +static BL_LILAC_RDD_ERROR_DTE f_rdd_transmit_from_abs_address_initialize ( void ) +{ + uint8_t *free_indexes_local_fifo_tail_ptr; + uint16_t *free_indexes_fifo_tail_ptr; + uint16_t skb_enqueued_indexes_fifo; + uint16_t *skb_enqueued_indexes_fifo_ptr; + uint8_t *absolute_tx_counters_ptr; + uint16_t i; + uint32_t *ddr_address_ptr; + uint8_t skb_enqueued_indexes_fifo_size; + uint8_t *skb_enqueued_indexes_fifo_counters_ptr; + +#if !defined(FIRMWARE_INIT) + bdmf_phys_addr_t phy_addr = 0; + + /* allocate skb pointer array reference (used only by SW) */ + g_cpu_tx_skb_pointers_reference_array = (uint8_t **)KMALLOC(sizeof(uint8_t *) * g_cpu_tx_abs_packet_limit, 0); + g_dhd_tx_cpu_usage_reference_array = (uint8_t *)KMALLOC(g_cpu_tx_abs_packet_limit, 0); + + /* allocate data pointer array pointer (used both by SW & FW) */ + g_cpu_tx_data_pointers_reference_array = (rdd_phys_addr_t *)rdp_mm_aligned_alloc(sizeof(rdd_phys_addr_t) * g_cpu_tx_abs_packet_limit, &phy_addr); + + ddr_address_ptr = (uint32_t *)(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_ADDRESS ); + MWRITE_32(ddr_address_ptr, (uint32_t)phy_addr); + + /* allocate Free Indexes table (used both by SW & FW) */ + g_free_skb_indexes_fifo_table = ( uint16_t * )rdp_mm_aligned_alloc( sizeof( uint16_t ) * g_cpu_tx_abs_packet_limit, &phy_addr ); + + g_free_skb_indexes_fifo_table_physical_address = (rdd_phys_addr_t)phy_addr; + ddr_address_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_ADDRESS ); + MWRITE_32( ddr_address_ptr, g_free_skb_indexes_fifo_table_physical_address ); + + g_free_skb_indexes_fifo_table_physical_address_last_idx = g_free_skb_indexes_fifo_table_physical_address; + g_free_skb_indexes_fifo_table_physical_address_last_idx += (g_cpu_tx_abs_packet_limit - 1) * sizeof(uint16_t); + ddr_address_ptr = ( uint32_t * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_ADDRESS ); + MWRITE_32( ddr_address_ptr, g_free_skb_indexes_fifo_table_physical_address_last_idx ); + + /* Fill free indexes FIFO */ + for ( i = 0; i < g_cpu_tx_abs_packet_limit ; i++ ) + { + g_free_skb_indexes_fifo_table[ i ] = swap2bytes( i ); + g_cpu_tx_data_pointers_reference_array[ i ] = 0; + g_cpu_tx_skb_pointers_reference_array[ i ] = NULL; + g_dhd_tx_cpu_usage_reference_array[ i ] = 0; + } +#endif + + /* update all local tail pointers to 0 */ + free_indexes_local_fifo_tail_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS ); + MWRITE_8( free_indexes_local_fifo_tail_ptr, 0 ); + free_indexes_local_fifo_tail_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS ); + MWRITE_8( free_indexes_local_fifo_tail_ptr, 0 ); + free_indexes_local_fifo_tail_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS ); + MWRITE_8( free_indexes_local_fifo_tail_ptr, 0 ); + free_indexes_local_fifo_tail_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS ); + MWRITE_8( free_indexes_local_fifo_tail_ptr, 0 ); + + free_indexes_fifo_tail_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + FREE_SKB_INDEXES_DDR_FIFO_TAIL_ADDRESS ); + MWRITE_32( free_indexes_fifo_tail_ptr, g_free_skb_indexes_fifo_table_physical_address ); + + /* Initialize pointers to EMAC enqueued indexes FIFO */ + skb_enqueued_indexes_fifo_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS ); + skb_enqueued_indexes_fifo_counters_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_ADDRESS ); + + skb_enqueued_indexes_fifo = EMAC_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS; + + for ( i = BL_LILAC_RDD_EMAC_ID_0; i <= BL_LILAC_RDD_EMAC_ID_4; i++ ) + { + MWRITE_16( skb_enqueued_indexes_fifo_ptr, skb_enqueued_indexes_fifo ); + MWRITE_8(skb_enqueued_indexes_fifo_counters_ptr, 16); + + skb_enqueued_indexes_fifo_ptr++; + skb_enqueued_indexes_fifo_counters_ptr++; + + skb_enqueued_indexes_fifo += 32; + } + + skb_enqueued_indexes_fifo_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS ); + + skb_enqueued_indexes_fifo = EMAC_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS; + + for ( i = BL_LILAC_RDD_EMAC_ID_0; i <= BL_LILAC_RDD_EMAC_ID_4; i++ ) + { + MWRITE_16( skb_enqueued_indexes_fifo_ptr, skb_enqueued_indexes_fifo ); + + skb_enqueued_indexes_fifo_ptr++; + skb_enqueued_indexes_fifo += 32; + } + + skb_enqueued_indexes_fifo_size = 32; + + /* Initialize pointers to WAN enqueued indexes FIFO */ + skb_enqueued_indexes_fifo_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS - sizeof ( RUNNER_COMMON ) ); + + skb_enqueued_indexes_fifo = GPON_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS; + + for ( i = 0; i < ( RDD_WAN_CHANNELS_0_7_TABLE_SIZE + RDD_WAN_CHANNELS_8_39_TABLE_SIZE ); i++ ) + { + MWRITE_16( skb_enqueued_indexes_fifo_ptr, skb_enqueued_indexes_fifo ); + + skb_enqueued_indexes_fifo_ptr++; + skb_enqueued_indexes_fifo += skb_enqueued_indexes_fifo_size; + } + + + skb_enqueued_indexes_fifo_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS - sizeof ( RUNNER_COMMON ) ); + + skb_enqueued_indexes_fifo = GPON_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS; + + for ( i = 0; i < ( RDD_WAN_CHANNELS_0_7_TABLE_SIZE + RDD_WAN_CHANNELS_8_39_TABLE_SIZE ); i++ ) + { + MWRITE_16( skb_enqueued_indexes_fifo_ptr, skb_enqueued_indexes_fifo ); + + skb_enqueued_indexes_fifo_ptr++; + skb_enqueued_indexes_fifo += skb_enqueued_indexes_fifo_size; + } + + + /* Initialize to (-1) 6-bit value BBH and FW absolute TX counters */ + absolute_tx_counters_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ); + + for ( i = BL_LILAC_RDD_EMAC_ID_0; i <= BL_LILAC_RDD_EMAC_ID_4; i++ ) + { + MWRITE_8( absolute_tx_counters_ptr, 0x3F ); + absolute_tx_counters_ptr += 8; + } + + absolute_tx_counters_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + EMAC_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS ); + + for ( i = BL_LILAC_RDD_EMAC_ID_0; i <= BL_LILAC_RDD_EMAC_ID_4; i++ ) + { + MWRITE_8( absolute_tx_counters_ptr, 0x3F ); + absolute_tx_counters_ptr ++; + } + + absolute_tx_counters_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + GPON_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ); + + for ( i = 0; i < ( RDD_WAN_CHANNELS_0_7_TABLE_SIZE + RDD_WAN_CHANNELS_8_39_TABLE_SIZE ); i++ ) + { + MWRITE_8( absolute_tx_counters_ptr, 0x3F ); + absolute_tx_counters_ptr ++; + } + + absolute_tx_counters_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS ); + + for ( i = 0; i < ( RDD_WAN_CHANNELS_0_7_TABLE_SIZE + RDD_WAN_CHANNELS_8_39_TABLE_SIZE ); i++ ) + { + MWRITE_8( absolute_tx_counters_ptr, 0x3F ); + absolute_tx_counters_ptr ++; + } + + absolute_tx_counters_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETHWAN_ABSOLUTE_TX_BBH_COUNTER_ADDRESS ); + MWRITE_8( absolute_tx_counters_ptr, 0x3F ); + + absolute_tx_counters_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS ); + MWRITE_8( absolute_tx_counters_ptr, 0x3F ); + + return ( BL_LILAC_RDD_OK ); +} + +static BL_LILAC_RDD_ERROR_DTE f_rdd_ingress_classification_table_initialize ( void ) +{ + RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS *ds_rule_cfg_table_ptr; + RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_DTS *us_rule_cfg_table_ptr; + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_DTS *rule_cfg_entry_ptr; + uint8_t *rule_cfg_descriptor_ptr; + uint32_t rule_cfg_id; + + for (rule_cfg_id = 0; rule_cfg_id < 16; rule_cfg_id++) + { + g_ingress_classification_rule_cfg_table[ rdpa_dir_ds ].rule_cfg[ rule_cfg_id ].valid = 0; + g_ingress_classification_rule_cfg_table[ rdpa_dir_ds ].rule_cfg[ rule_cfg_id ].priority = -1; + g_ingress_classification_rule_cfg_table[ rdpa_dir_ds ].rule_cfg[ rule_cfg_id ].rule_type = 0; + g_ingress_classification_rule_cfg_table[ rdpa_dir_ds ].rule_cfg[ rule_cfg_id ].next_group_id = 16; + g_ingress_classification_rule_cfg_table[ rdpa_dir_ds ].rule_cfg[ rule_cfg_id ].next_rule_cfg_id = 16; + + ds_rule_cfg_table_ptr = RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_PTR(); + + rule_cfg_entry_ptr = &( ds_rule_cfg_table_ptr->entry[ rule_cfg_id ] ); + + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_NEXT_RULE_CFG_ID_WRITE ( 16, rule_cfg_entry_ptr ); + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_NEXT_GROUP_ID_WRITE ( 16, rule_cfg_entry_ptr ); + + g_ingress_classification_rule_cfg_table[ rdpa_dir_us ].rule_cfg[ rule_cfg_id ].valid = 0; + g_ingress_classification_rule_cfg_table[ rdpa_dir_us ].rule_cfg[ rule_cfg_id ].priority = -1; + g_ingress_classification_rule_cfg_table[ rdpa_dir_us ].rule_cfg[ rule_cfg_id ].rule_type = 0; + g_ingress_classification_rule_cfg_table[ rdpa_dir_us ].rule_cfg[ rule_cfg_id ].next_group_id = 16; + g_ingress_classification_rule_cfg_table[ rdpa_dir_us ].rule_cfg[ rule_cfg_id ].next_rule_cfg_id = 16; + + us_rule_cfg_table_ptr = RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_PTR(); + + rule_cfg_entry_ptr = &( us_rule_cfg_table_ptr->entry[ rule_cfg_id ] ); + + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_NEXT_RULE_CFG_ID_WRITE ( 16, rule_cfg_entry_ptr ); + RDD_INGRESS_CLASSIFICATION_RULE_CFG_ENTRY_NEXT_GROUP_ID_WRITE ( 16, rule_cfg_entry_ptr ); + } + + g_ingress_classification_rule_cfg_table[ rdpa_dir_ds ].first_rule_cfg_id = 16; + g_ingress_classification_rule_cfg_table[ rdpa_dir_ds ].first_gen_filter_rule_cfg_id = 16; + g_ingress_classification_rule_cfg_table[ rdpa_dir_us ].first_rule_cfg_id = 16; + g_ingress_classification_rule_cfg_table[ rdpa_dir_us ].first_gen_filter_rule_cfg_id = 16; + + rule_cfg_descriptor_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_ADDRESS ); + + MWRITE_8( rule_cfg_descriptor_ptr, 16 ); + + rule_cfg_descriptor_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_ADDRESS ); + + MWRITE_8( rule_cfg_descriptor_ptr, 16 ); + + rule_cfg_descriptor_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_ADDRESS ); + + MWRITE_8( rule_cfg_descriptor_ptr, 16 ); + + rule_cfg_descriptor_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_ADDRESS ); + + MWRITE_8( rule_cfg_descriptor_ptr, 16 ); + return ( BL_LILAC_RDD_OK ); +} + +static BL_LILAC_RDD_ERROR_DTE f_rdd_eth_tx_initialize ( void ) +{ + RDD_ETH_TX_MAC_TABLE_DTS *eth_tx_mac_table; + RDD_ETH_TX_MAC_DESCRIPTOR_DTS *eth_tx_mac_descriptor; + RDD_ETH_TX_QUEUES_TABLE_DTS *eth_tx_queues_table; + RDD_ETH_TX_QUEUE_DESCRIPTOR_DTS *eth_tx_queue_descriptor; + RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS *eth_tx_queues_pointers_table; + RDD_ETH_TX_QUEUE_POINTERS_ENTRY_DTS *eth_tx_queue_pointers_entry; + RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_DTS *free_packet_descriptors_pool_descriptor; + RDD_ETH_TX_LOCAL_REGISTERS_DTS *eth_tx_local_registers; + RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_DTS *eth_tx_local_registers_entry; + uint16_t eth_tx_queue_address; + uint16_t mac_descriptor_address; + uint32_t emac; + uint32_t tx_queue; + + eth_tx_mac_table = RDD_ETH_TX_MAC_TABLE_PTR(); + + eth_tx_queues_table = RDD_ETH_TX_QUEUES_TABLE_PTR(); + + eth_tx_queues_pointers_table = RDD_ETH_TX_QUEUES_POINTERS_TABLE_PTR(); + + eth_tx_local_registers = RDD_ETH_TX_LOCAL_REGISTERS_PTR(); + + for (emac = BL_LILAC_RDD_EMAC_ID_0; emac < BL_LILAC_RDD_EMAC_ID_COUNT; emac++) + { + eth_tx_mac_descriptor = &(eth_tx_mac_table->entry[emac]); + + RDD_ETH_TX_MAC_DESCRIPTOR_TX_TASK_NUMBER_WRITE(ETH_TX_THREAD_NUMBER, eth_tx_mac_descriptor); + RDD_ETH_TX_MAC_DESCRIPTOR_EMAC_MASK_WRITE((1 << emac), eth_tx_mac_descriptor); + RDD_ETH_TX_MAC_DESCRIPTOR_GPIO_FLOW_CONTROL_VECTOR_PTR_WRITE((RDD_GPIO_IO_ADDRESS + (emac - BL_LILAC_RDD_EMAC_ID_0)), eth_tx_mac_descriptor); + RDD_ETH_TX_MAC_DESCRIPTOR_PACKET_COUNTERS_PTR_1_WRITE(ETH_TX_MAC_TABLE_ADDRESS + + BL_LILAC_RDD_EMAC_ID_1 * sizeof(RDD_ETH_TX_MAC_DESCRIPTOR_DTS) + RDD_EMAC_DESCRIPTOR_EGRESS_COUNTER_OFFSET, + eth_tx_mac_descriptor); + RDD_ETH_TX_MAC_DESCRIPTOR_BBH_DESTINATION_1_WRITE(BBH_PERIPHERAL_ETH1_TX, eth_tx_mac_descriptor); + RDD_ETH_TX_MAC_DESCRIPTOR_EGRESS_PORT_WRITE((emac - BL_LILAC_RDD_EMAC_ID_0), eth_tx_mac_descriptor); + RDD_ETH_TX_MAC_DESCRIPTOR_RATE_LIMITER_ID_WRITE(RDD_RATE_LIMITER_IDLE, eth_tx_mac_descriptor); + + for (tx_queue = 0; tx_queue < RDD_EMAC_NUMBER_OF_QUEUES; tx_queue++) + { + eth_tx_queue_address = ETH_TX_QUEUES_TABLE_ADDRESS + + ((emac - BL_LILAC_RDD_EMAC_ID_0) * RDD_EMAC_NUMBER_OF_QUEUES + tx_queue) * sizeof(RDD_ETH_TX_QUEUE_DESCRIPTOR_DTS); + + mac_descriptor_address = ETH_TX_MAC_TABLE_ADDRESS + emac * sizeof(RDD_ETH_TX_MAC_DESCRIPTOR_DTS); + + eth_tx_queue_pointers_entry = + &(eth_tx_queues_pointers_table->entry[emac * RDD_EMAC_NUMBER_OF_QUEUES + tx_queue]); + + RDD_ETH_TX_QUEUE_POINTERS_ENTRY_ETH_MAC_POINTER_WRITE(mac_descriptor_address, eth_tx_queue_pointers_entry); + RDD_ETH_TX_QUEUE_POINTERS_ENTRY_TX_QUEUE_POINTER_WRITE(eth_tx_queue_address, eth_tx_queue_pointers_entry); + + eth_tx_queue_descriptor = &(eth_tx_queues_table->entry[(emac - BL_LILAC_RDD_EMAC_ID_0) * RDD_EMAC_NUMBER_OF_QUEUES + tx_queue]); + + RDD_ETH_TX_QUEUE_DESCRIPTOR_QUEUE_MASK_WRITE(1 << tx_queue , eth_tx_queue_descriptor); + RDD_ETH_TX_QUEUE_DESCRIPTOR_INDEX_WRITE((emac * RDD_EMAC_NUMBER_OF_QUEUES) + tx_queue, eth_tx_queue_descriptor); + } + eth_tx_local_registers_entry = &(eth_tx_local_registers->entry[emac]); + + RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_EMAC_DESCRIPTOR_PTR_WRITE(ETH_TX_MAC_TABLE_ADDRESS + + emac * sizeof(RDD_ETH_TX_MAC_DESCRIPTOR_DTS), eth_tx_local_registers_entry); + + RDD_ETH_TX_LOCAL_REGISTERS_ENTRY_ETH_TX_QUEUES_POINTERS_TABLE_PTR_WRITE(ETH_TX_QUEUES_POINTERS_TABLE_ADDRESS + + emac * RDD_EMAC_NUMBER_OF_QUEUES * sizeof(RDD_ETH_TX_QUEUE_POINTERS_ENTRY_DTS), eth_tx_local_registers_entry); + } + + free_packet_descriptors_pool_descriptor = + (RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_DTS *)(DEVICE_ADDRESS(RUNNER_PRIVATE_0_OFFSET) + + FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS); + + /*Initial values, will be updated by rdd_tm_ds_free_packet_descriptors_pool_size_update.*/ + RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_THRESHOLD_WRITE ( DS_FREE_PACKET_DESCRIPTOR_POOL_GUARANTEED_QUEUE_THRESHOLD, free_packet_descriptors_pool_descriptor ); + RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_GUARANTEED_FREE_COUNT_WRITE (DS_FREE_PACKET_DESCRIPTOR_POOL_MIN_GUARANTEED_POOL_SIZE, free_packet_descriptors_pool_descriptor ); + RDD_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ENTRY_NON_GUARANTEED_FREE_COUNT_WRITE ( RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE - DS_FREE_PACKET_DESCRIPTOR_POOL_MIN_GUARANTEED_POOL_SIZE, free_packet_descriptors_pool_descriptor ); + + return ( BL_LILAC_RDD_OK ); +} + + + +static BL_LILAC_RDD_ERROR_DTE f_rdd_wan_tx_initialize ( void ) +{ + RDD_WAN_CHANNELS_0_7_TABLE_DTS *wan_channels_0_7_table_ptr; + RDD_WAN_CHANNEL_0_7_DESCRIPTOR_DTS *wan_channel_0_7_descriptor_ptr; + RDD_WAN_CHANNELS_8_39_TABLE_DTS *wan_channels_8_39_table_ptr; + RDD_WAN_CHANNEL_8_39_DESCRIPTOR_DTS *wan_channel_8_39_descriptor_ptr; + RDD_US_RATE_CONTROLLER_DESCRIPTOR_DTS *dummy_rate_controller_descriptor_ptr; + RDD_WAN_TX_QUEUE_DESCRIPTOR_DTS *dummy_wan_tx_queue_descriptor_ptr; + RDD_RATE_CONTROLLER_EXPONENT_TABLE_DTS *exponent_table_ptr; + RDD_RATE_CONTROLLER_EXPONENT_ENTRY_DTS *exponent_entry_ptr; + uint32_t wan_channel_id; + uint32_t rate_controller_id; + uint32_t tx_queue_id; + + /* initialize WAN TX pointers table */ + wan_tx_pointers_table_ptr = ( RDD_WAN_TX_POINTERS_TABLE_DTS * )malloc( sizeof( RDD_WAN_TX_POINTERS_TABLE_DTS ) ); + + if ( wan_tx_pointers_table_ptr == NULL) + { + return ( BL_LILAC_RDD_ERROR_MALLOC_FAILED ); + } + + memset ( wan_tx_pointers_table_ptr, 0, sizeof ( RDD_WAN_TX_POINTERS_TABLE_DTS ) ); + + /* reset the dummy segmentation descriptors threshold to zero in order to drop packets */ + dummy_wan_tx_queue_descriptor_ptr = ( RDD_WAN_TX_QUEUE_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DUMMY_WAN_TX_QUEUE_DESCRIPTOR_ADDRESS - sizeof ( RUNNER_COMMON ) ); + + RDD_WAN_TX_QUEUE_DESCRIPTOR_PACKET_THRESHOLD_WRITE ( 0, dummy_wan_tx_queue_descriptor_ptr ); + RDD_WAN_TX_QUEUE_DESCRIPTOR_PROFILE_PTR_WRITE ( 0, dummy_wan_tx_queue_descriptor_ptr ); + + /* all the queues of the dummy rate controller will point to the dummy queue */ + dummy_rate_controller_descriptor_ptr = ( RDD_US_RATE_CONTROLLER_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_1_OFFSET ) + DUMMY_RATE_CONTROLLER_DESCRIPTOR_ADDRESS - sizeof ( RUNNER_COMMON ) ); + + for ( tx_queue_id = 0; tx_queue_id < RDD_US_RATE_CONTROLLER_DESCRIPTOR_TX_QUEUE_ADDR_NUMBER; tx_queue_id++ ) + { + RDD_US_RATE_CONTROLLER_DESCRIPTOR_TX_QUEUE_ADDR_WRITE ( DUMMY_WAN_TX_QUEUE_DESCRIPTOR_ADDRESS, dummy_rate_controller_descriptor_ptr, tx_queue_id ); + } + + /* connect all the tconts to the dummy rate rate controller */ + wan_channels_0_7_table_ptr = ( RDD_WAN_CHANNELS_0_7_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_CHANNELS_0_7_TABLE_ADDRESS ); + + for ( wan_channel_id = RDD_WAN_CHANNEL_0; wan_channel_id <= RDD_WAN_CHANNEL_7; wan_channel_id++ ) + { + wan_channel_0_7_descriptor_ptr = &( wan_channels_0_7_table_ptr->entry[ wan_channel_id ] ); + + for ( rate_controller_id = BL_LILAC_RDD_RATE_CONTROLLER_0; rate_controller_id <= BL_LILAC_RDD_RATE_CONTROLLER_31; rate_controller_id++ ) + { + RDD_WAN_CHANNEL_0_7_DESCRIPTOR_RATE_CONTROLLER_ADDR_WRITE ( DUMMY_RATE_CONTROLLER_DESCRIPTOR_ADDRESS, wan_channel_0_7_descriptor_ptr, rate_controller_id ); + } + } + + wan_channels_8_39_table_ptr = ( RDD_WAN_CHANNELS_8_39_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_CHANNELS_8_39_TABLE_ADDRESS ); + + for ( wan_channel_id = RDD_WAN_CHANNEL_8; wan_channel_id <= RDD_WAN_CHANNEL_39; wan_channel_id++ ) + { + wan_channel_8_39_descriptor_ptr = &( wan_channels_8_39_table_ptr->entry[ wan_channel_id - RDD_WAN_CHANNEL_8 ] ); + + for ( rate_controller_id = BL_LILAC_RDD_RATE_CONTROLLER_0; rate_controller_id <= BL_LILAC_RDD_RATE_CONTROLLER_3; rate_controller_id++ ) + { + RDD_WAN_CHANNEL_8_39_DESCRIPTOR_RATE_CONTROLLER_ADDR_WRITE ( DUMMY_RATE_CONTROLLER_DESCRIPTOR_ADDRESS, wan_channel_8_39_descriptor_ptr, rate_controller_id ); + } + } + + g_rate_controllers_pool_idx = 0; + + /* initialize exponents table */ + exponent_table_ptr = ( RDD_RATE_CONTROLLER_EXPONENT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS ); + + exponent_entry_ptr = &( exponent_table_ptr->entry[ 0 ] ); + RDD_RATE_CONTROLLER_EXPONENT_ENTRY_EXPONENT_WRITE ( RDD_RATE_CONTROL_EXPONENT0, exponent_entry_ptr ); + + exponent_entry_ptr = &( exponent_table_ptr->entry[ 1 ] ); + RDD_RATE_CONTROLLER_EXPONENT_ENTRY_EXPONENT_WRITE ( RDD_RATE_CONTROL_EXPONENT1, exponent_entry_ptr ); + + exponent_entry_ptr = &( exponent_table_ptr->entry[ 2 ] ); + RDD_RATE_CONTROLLER_EXPONENT_ENTRY_EXPONENT_WRITE ( RDD_RATE_CONTROL_EXPONENT2, exponent_entry_ptr ); + + return ( BL_LILAC_RDD_OK ); +} + + +static BL_LILAC_RDD_ERROR_DTE f_rdd_inter_task_queues_initialize ( void ) +{ + uint16_t *wan_enqueue_ingress_queue_ptr; + uint16_t *ethwan2_rx_ingress_queue_ptr; + + wan_enqueue_ingress_queue_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + WAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS ); + MWRITE_16( wan_enqueue_ingress_queue_ptr, WAN_ENQUEUE_INGRESS_QUEUE_ADDRESS ); + + ethwan2_rx_ingress_queue_ptr = ( uint16_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETHWAN2_RX_INGRESS_QUEUE_PTR_ADDRESS ); + MWRITE_16( ethwan2_rx_ingress_queue_ptr, ETHWAN2_RX_INGRESS_QUEUE_ADDRESS ); + + return ( BL_LILAC_RDD_OK ); +} + + +static BL_LILAC_RDD_ERROR_DTE f_rdd_pm_counters_initialize ( void ) +{ + RUNNER_REGS_CFG_CNTR_CFG runner_counter_cfg_register; + + runner_counter_cfg_register.base_address = ( PM_COUNTERS_ADDRESS >> 3 ); + + RUNNER_REGS_0_CFG_CNTR_CFG_WRITE ( runner_counter_cfg_register ); + RUNNER_REGS_1_CFG_CNTR_CFG_WRITE ( runner_counter_cfg_register ); + + return ( BL_LILAC_RDD_OK ); +} + + +static BL_LILAC_RDD_ERROR_DTE f_rdd_parallel_processing_initialize ( void ) +{ + RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS *ds_context_index_cache_cam; + RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_DTS *us_context_index_cache_cam; + RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_DTS *ds_available_slave_vector_ptr; + RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_DTS *us_available_slave_vector_ptr; + RDD_PARALLEL_PROCESSING_IH_BUFFER_PTR_DTS *ds_slave_ih_buffer_ptr; + RDD_PARALLEL_PROCESSING_IH_BUFFER_PTR_DTS *us_slave_ih_buffer_ptr; + uint16_t *ds_context_index_cache_cam_entry; + uint16_t *us_context_index_cache_cam_entry; + uint8_t *context_cache_state_ptr; + uint8_t i; + + /* downstream */ + ds_available_slave_vector_ptr = ( RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_DTS * )( DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS ); + + RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE0_WRITE ( LILAC_RDD_TRUE, ds_available_slave_vector_ptr ); + RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE1_WRITE ( LILAC_RDD_TRUE, ds_available_slave_vector_ptr ); + RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE2_WRITE ( LILAC_RDD_TRUE, ds_available_slave_vector_ptr ); + RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE3_WRITE ( LILAC_RDD_TRUE, ds_available_slave_vector_ptr ); + + ds_slave_ih_buffer_ptr = ( RDD_PARALLEL_PROCESSING_IH_BUFFER_PTR_DTS * )( DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS ); + + MWRITE_16( ds_slave_ih_buffer_ptr, DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS ); + + ds_context_index_cache_cam = RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_PTR(); + + for ( i = 0; i < RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE; i++ ) + { + ds_context_index_cache_cam_entry = ( uint16_t * ) &ds_context_index_cache_cam->entry[ i ]; + + MWRITE_16( ds_context_index_cache_cam_entry, 0xFFFF ); + } + + /* set context cache in enable mode */ + context_cache_state_ptr = ( uint8_t * )( DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_ADDRESS ); + + MWRITE_8( context_cache_state_ptr, 0x0 ); + + /* upstream */ + us_available_slave_vector_ptr = ( RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_DTS * )( DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS ); + + RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE0_WRITE ( LILAC_RDD_TRUE, us_available_slave_vector_ptr ); + RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE1_WRITE ( LILAC_RDD_TRUE, us_available_slave_vector_ptr ); + RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE2_WRITE ( LILAC_RDD_TRUE, us_available_slave_vector_ptr ); + RDD_PARALLEL_PROCESSING_SLAVE_VECTOR_AVAILABLE_SLAVE3_WRITE ( LILAC_RDD_TRUE, us_available_slave_vector_ptr ); + + us_slave_ih_buffer_ptr = ( RDD_PARALLEL_PROCESSING_IH_BUFFER_PTR_DTS * )( DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS ); + + MWRITE_16( us_slave_ih_buffer_ptr, US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS ); + + us_context_index_cache_cam = RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_PTR(); + + for ( i = 0; i < RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE; i++ ) + { + us_context_index_cache_cam_entry = ( uint16_t * ) &us_context_index_cache_cam->entry[ i ]; + + MWRITE_16( us_context_index_cache_cam_entry, 0xFFFF ); + } + + /* set context cache in enable mode */ + context_cache_state_ptr = ( uint8_t * )( DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_ADDRESS ); + + MWRITE_8( context_cache_state_ptr, 0x0 ); + + return ( BL_LILAC_RDD_OK ); +} + +BL_LILAC_RDD_ERROR_DTE rdd_ethwan2_switch_port_config ( uint8_t xi_switch_port ) +{ + uint8_t *ethwan2_switch_port_config_ptr; + + ethwan2_switch_port_config_ptr = ( uint8_t * )(DEVICE_ADDRESS( RUNNER_PRIVATE_1_OFFSET ) + ETHWAN2_SWITCH_PORT_ADDRESS ); + MWRITE_8( ethwan2_switch_port_config_ptr, xi_switch_port ); + return ( BL_LILAC_RDD_OK ); +} diff --git a/arch/arm/mach-bcmbca/rdp/rdd_init.h b/arch/arm/mach-bcmbca/rdp/rdd_init.h new file mode 100755 index 0000000000..3b958b7d84 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_init.h @@ -0,0 +1,248 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef _BL_LILAC_DRV_RUNNER_INIT_H +#define _BL_LILAC_DRV_RUNNER_INIT_H + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_init */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - initialize the firmware driver */ +/* */ +/* Abstract: */ +/* */ +/* resets Runner memories (data, program and context), should be called */ +/* after reset and before any other API */ +/* */ +/* Input: */ +/* */ +/* none */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_init ( void ); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_load_microcode */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - load the microcode into the SRAM program memory */ +/* */ +/* Abstract: */ +/* */ +/* Four Runners are loaded (the code is imported as a C code array) */ +/* */ +/* Input: */ +/* */ +/* xi_runer_A_microcode_ptr - Fast Runner 0 microcode */ +/* xi_runer_B_microcode_ptr - Fast Runner 1 microcode */ +/* xi_runer_C_microcode_ptr - Pico Runner 0 microcode */ +/* xi_runer_D_microcode_ptr - Pico Runner 1 microcode */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_load_microcode ( uint8_t *xi_runer_A_microcode_ptr, + uint8_t *xi_runer_B_microcode_ptr, + uint8_t *xi_runer_C_microcode_ptr, + uint8_t *xi_runer_D_microcode_ptr ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_load_prediction */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - load the jump prediction into SRAM */ +/* */ +/* Abstract: */ +/* */ +/* Four Runners are loaded (the prediction is imported as bin file) */ +/* */ +/* Input: */ +/* */ +/* xi_runer_A_prediction_ptr - Fast Runner 0 prediction */ +/* xi_runer_B_prediction_ptr - Fast Runner 1 prediction */ +/* xi_runer_C_prediction_ptr - Pico Runner 0 prediction */ +/* xi_runer_D_prediction_ptr - Pico Runner 1 prediction */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_load_prediction ( uint8_t *xi_runer_A_prediction_ptr, + uint8_t *xi_runer_B_prediction_ptr, + uint8_t *xi_runer_C_prediction_ptr, + uint8_t *xi_runer_D_prediction_ptr ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_runner_enable */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - Enables the Runner */ +/* */ +/* Abstract: */ +/* */ +/* This API move the Runner from halt mode to running mode, firmware starts */ +/* execute. */ +/* */ +/* Registers : */ +/* */ +/* Runner_Global_Control register */ +/* */ +/* Input: */ +/* */ +/* none */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_runner_enable ( void ); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_runner_frequency_set */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - set the frequency of the Runner timers */ +/* */ +/* Abstract: */ +/* */ +/* This API set the frequency of the Runner timers */ +/* */ +/* Registers : */ +/* */ +/* Runner_Global_Control register */ +/* */ +/* Input: */ +/* */ +/* xi_runner_frequency - Runner frequency in MHZ */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_runner_frequency_set ( uint16_t xi_runner_frequency ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_data_structures_init */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - initialize all firmware data structures to a default */ +/* state, should be called after reset and */ +/* rdd_init() API and before any other API. */ +/* */ +/* Abstract: */ +/* */ +/* This function configures the schedule mechansim of a single TCONT. */ +/* */ +/* Input: */ +/* */ +/* xi_ddr_pool_ptr - packet DDR buffer base address */ +/* xi_extra_ddr_pool_ptr - packet DDR buffer base address (Multicast) */ +/* xi_mac_table_size - Mac lookup table size */ +/* xi_mac_table_search_depth - Mac lookup table maximum search depth */ +/* xi_wan_physical_port - GPON EMAC5 or EMAC4 */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_data_structures_init ( RDD_INIT_PARAMS *init_params ); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_bbh_reset_firmware_fifo_init */ +/* */ +/* Title: */ +/* */ +/* actions which are needed after BBH reset */ +/* */ +/* Abstract: */ +/* */ +/* This function need to be called by SW after BBH reset */ +/* 1) initialize emac ingress/egress counters */ +/* 2) wakeup the runner to initialize BBH descriptor pointer */ +/* (using error + ploam bits) */ +/* */ +/* Input: */ +/* */ +/* xi_src_bridge_port - bridge port */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_bbh_reset_firmware_fifo_init ( BL_LILAC_RDD_BRIDGE_PORT_DTE xi_src_bridge_port ); + +/******************************************************************************/ +/* */ +/* Description: */ +/* */ +/* This function sets the switch port for ethwan2. */ +/* */ +/* Input: */ +/* */ +/* None */ +/* */ +/* Output: */ +/* */ +/* xi_switch_port - ethwan2 switch port */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_ethwan2_switch_port_config ( uint8_t xi_switch_port ); + + +#endif /* _BL_LILAC_DRV_RUNNER_INIT_H */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdd_lookup_engine.h b/arch/arm/mach-bcmbca/rdp/rdd_lookup_engine.h new file mode 100755 index 0000000000..79264754c4 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_lookup_engine.h @@ -0,0 +1,592 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef _BL_LILAC_DRV_RUNNER_LOOKUP_ENGINE_H +#define _BL_LILAC_DRV_RUNNER_LOOKUP_ENGINE_H + + +#define MAC_ENTRY_KEY_MASK_HIGH 0x0000FFFF +#define MAC_ENTRY_KEY_MASK_LOW 0xFFFFFFFF +#define MAC_ENTRY_INTERNAL_CONTEXT_MASK_HIGH 0xFFF00000 +#define MAC_ENTRY_INTERNAL_CONTEXT_MASK_LOW 0x00000000 +#ifdef UNDEF +#define DS_FLOW_CLASSIFICATION_ENTRY_KEY_MASK_HIGH 0x00000000 +#define DS_FLOW_CLASSIFICATION_ENTRY_KEY_MASK_LOW 0x00FFFFFF +#define US_FLOW_CLASSIFICATION_ENTRY_KEY_MASK_HIGH 0x00000000 +#define US_FLOW_CLASSIFICATION_ENTRY_KEY_MASK_LOW 0x00FFFFFF +#else +#define INGRESS_CLASSIFICATION_IH_ENTRY_KEY_MASK_HIGH 0x000FFFFF +#define INGRESS_CLASSIFICATION_IH_ENTRY_KEY_MASK_LOW 0xFFFFFFFF +#define INGRESS_CLASSIFICATION_OPTIMIZED_ENTRY_KEY_MASK_HIGH 0x000FFFFF +#define INGRESS_CLASSIFICATION_OPTIMIZED_ENTRY_KEY_MASK_LOW 0xFFFFFFFF +#define INGRESS_CLASSIFICATION_SHORT_ENTRY_KEY_MASK_HIGH 0x000FFFFF +#define INGRESS_CLASSIFICATION_SHORT_ENTRY_KEY_MASK_LOW 0xFFFFFFFF +#define INGRESS_CLASSIFICATION_LONG_ENTRY_KEY_MASK_HIGH 0x00FFFFFF +#define INGRESS_CLASSIFICATION_LONG_ENTRY_KEY_MASK_LOW 0xFFFFFFFF +#endif +#define IPTV_ENTRY_KEY_MASK_HIGH 0x0FFFFFFF +#define IPTV_ENTRY_KEY_MASK_LOW 0xFFFFFFFF +#define IPTV_ENTRY_INTERNAL_CONTEXT_MASK_HIGH 0xFFF00000 +#define IPTV_ENTRY_INTERNAL_CONTEXT_MASK_LOW 0x00000000 +#define IPTV_L3_ENTRY_KEY_MASK_HIGH 0x00000000 +#define IPTV_L3_ENTRY_KEY_MASK_LOW 0xFFFFFFFF +#define IPTV_L3_SSM_SRC_IP_ENTRY_KEY_MASK_HIGH 0x0FFFFFFF +#define IPTV_L3_SSM_SRC_IP_ENTRY_KEY_MASK_LOW 0xFFFFFFFF + + +typedef enum +{ + BL_LILAC_RDD_MAC_TABLE = 0, +#ifdef UNDEF + BL_LILAC_RDD_DS_FLOW_CLASSIFICATION_TABLE = 1, + BL_LILAC_RDD_US_FLOW_CLASSIFICATION_TABLE = 2, +#else + BL_LILAC_RDD_DS_INGRESS_CLASSIFICATION_SHORT_TABLE = 1, + BL_LILAC_RDD_US_INGRESS_CLASSIFICATION_SHORT_TABLE = 2, + BL_LILAC_RDD_DS_INGRESS_CLASSIFICATION_LONG_TABLE = 3, + BL_LILAC_RDD_US_INGRESS_CLASSIFICATION_LONG_TABLE = 4, +#endif + BL_LILAC_RDD_IPTV_TABLE = 7, + BL_LILAC_RDD_IPTV_SRC_IP_TABLE = 8, + BL_LILAC_RDD_MAX_HASH_TABLE = 9, +} +BL_LILAC_RDD_HASH_TABLE_NUMBER_DTS; + + +typedef enum +{ + BL_LILAC_RDD_ADD_ENTRY = 0, + BL_LILAC_RDD_MODIFY_ENTRY = 1, + BL_LILAC_RDD_REMOVE_ENTRY = 2, +} +BL_LILAC_RDD_HASH_TABLE_WRITE_TYPE_DTS; + + +typedef enum +{ + BL_LILAC_RDD_CONTEXT_8_BIT = 1, + BL_LILAC_RDD_CONTEXT_16_BIT = 2, + BL_LILAC_RDD_CONTEXT_32_BIT = 4, + BL_LILAC_RDD_CONTEXT_64_BIT = 8, +} +BL_LILAC_RDD_CONTEXT_ENTRY_SIZE_DTS; + + +typedef enum +{ + BL_LILAC_RDD_EXTERNAL_CONTEXT_DISABLE = 0, + BL_LILAC_RDD_EXTERNAL_CONTEXT_ENABLE = 1, +} +BL_LILAC_RDD_EXTERNAL_CONTEXT_FLAG_DTS; + + +typedef enum +{ + BL_LILAC_RDD_CAM_OPTIMIZATION_DISABLE = 0, + BL_LILAC_RDD_CAM_OPTIMIZATION_ENABLE = 1, +} +BL_LILAC_RDD_CAM_OPTIMIZATION_CONTROL_DTS; + + +/* This enumerated type can only include up to 4 values as a hardware limitation */ +typedef enum +{ + BL_LILAC_RDD_DDR_GLOBAL_MASK_FIVE_TUPLE_KEY = 0x000001FF, + BL_LILAC_RDD_DDR_GLOBAL_MASK_96_BIT_KEY = 0x00000000, + BL_LILAC_RDD_DDR_GLOBAL_MASK_127_BIT_KEY = 0x7FFFFFFF, + BL_LILAC_RDD_DDR_GLOBAL_MASK_RESERVED = 0xFFFFFFFF +} +BL_LILAC_RDD_DDR_GLOBAL_MASK_DTS; + + +typedef struct +{ + uint8_t entry[ 16 ]; +} +RDD_DDR_TABLE_ENTRY_DTS; + + +typedef struct +{ + uint8_t entry[ 8 ]; +} +RDD_64_BIT_TABLE_ENTRY_DTS; + + +typedef struct +{ + uint8_t entry[ 4 ]; +} +RDD_32_BIT_TABLE_ENTRY_DTS; + + +typedef struct +{ + uint8_t entry[ 2 ]; +} +RDD_16_BIT_TABLE_ENTRY_DTS; + + +typedef struct +{ + uint8_t entry; +} +RDD_8_BIT_TABLE_ENTRY_DTS; + + +typedef struct +{ + RDD_64_BIT_TABLE_ENTRY_DTS *hash_table_ptr; + uint8_t *context_table_ptr; + uint32_t hash_table_size; + uint32_t hash_table_search_depth; + uint32_t is_external_context; + BL_LILAC_RDD_CONTEXT_ENTRY_SIZE_DTS context_size; + uint32_t is_extension_cam; + RDD_64_BIT_TABLE_ENTRY_DTS *cam_table_ptr; + uint8_t *cam_context_table_ptr; + uint32_t cam_table_size; +} +RDD_64_BIT_TABLE_CFG; + + +#define RDD_HASH_TABLE_ENTRY_READ( r, p, i ) MREAD_I_8( ( uint8_t *)p, i, r ) +#define RDD_HASH_TABLE_ENTRY_WRITE( v, p, i ) MWRITE_I_8( ( uint8_t *)p, i, v ) +#define RDD_HASH_TABLE_ENTRY_AGING_READ( r, p ) FIELD_MREAD_32( ( (uint8_t *)p + 4), 2, 1, r ) +#define RDD_HASH_TABLE_ENTRY_SKIP_READ( r, p ) FIELD_MREAD_32( ( (uint8_t *)p + 4), 1, 1, r ) +#define RDD_HASH_TABLE_ENTRY_VALID_READ( r, p ) FIELD_MREAD_32( ( (uint8_t *)p + 4), 0, 1, r ) +#define RDD_HASH_TABLE_ENTRY_AGING_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 4 ), 2, 1, v ) +#define RDD_HASH_TABLE_ENTRY_SKIP_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 4 ), 1, 1, v ) +#define RDD_HASH_TABLE_ENTRY_VALID_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 4 ), 0, 1, v ) + + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cache_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t context_entry_ptr :25 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_2 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_3 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DDR_HASH_TABLE_ENTRY; + + +#define RDD_DDR_HASH_TABLE_ENTRY_VALID_READ( r, p ) FIELD_MREAD_32( ( (uint8_t *)p + 0 ), 31, 1, r ) +#define RDD_DDR_HASH_TABLE_ENTRY_CACHE_FLAG_READ( r, p ) FIELD_MREAD_32( ( (uint8_t *)p + 0 ), 30, 1, r ) +#define RDD_DDR_HASH_TABLE_ENTRY_CONTEXT_PTR_READ( r , p ) FIELD_MREAD_32( ( (uint8_t *)p + 0 ), 5, 25, r ) +#define RDD_DDR_HASH_TABLE_ENTRY_VALID_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0 ), 31, 1, v ) +#define RDD_DDR_HASH_TABLE_ENTRY_CACHE_FLAG_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0 ), 30, 1, v ) +#define RDD_DDR_HASH_TABLE_ENTRY_CONTEXT_PTR_WRITE( v , p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0 ), 5, 25, v ) + + + +typedef struct +{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_0 :31 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_1 :32 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DDR_HASH_TABLE_CONTEXT_ENTRY; + + +#define RDD_DDR_HASH_TABLE_CONTEXT_ENTRY_VALID_READ( r, p ) FIELD_MREAD_32( ( (uint8_t *)p + 0 ), 31, 1, r ) +#define RDD_DDR_HASH_TABLE_CONTEXT_ENTRY_VALID_WRITE( v, p ) FIELD_MWRITE_32( ( (uint8_t *)p + 0 ), 31, 1, v ) + + + +typedef struct +{ + RDD_DDR_TABLE_ENTRY_DTS *hash_table_ptr; + uint32_t hash_table_size; + uint32_t hash_table_bucket_size; + uint32_t is_external_context; + uint8_t *context_table_ptr; + BL_LILAC_RDD_CONTEXT_ENTRY_SIZE_DTS context_size; + uint32_t context_table_size; + uint32_t non_cached_entries_counter; + BL_LILAC_RDD_DDR_GLOBAL_MASK_DTS global_mask; + uint32_t context_entries_free_list_head; + uint32_t context_entries_free_list_tail; + uint16_t *context_entries_free_list; + uint32_t context_table_offset; + uint32_t *search_ddr_flag_address; +} +RDD_DDR_TABLE_CFG; + + + +/* CRC */ +#define RDD_CRC_TYPE_16 0 +#define RDD_CRC_TYPE_32 1 + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_find_hash_entry_64_bit */ +/* */ +/* Title: */ +/* */ +/* Find key in hash table */ +/* */ +/* Abstract: */ +/* */ +/* This function finds a key in a generic hash table and returns the */ +/* status of the operation. */ +/* */ +/* Registers : */ +/* */ +/* none. */ +/* */ +/* Input: */ +/* */ +/* *xi_hash_table_cfg - hash table configuration data */ +/* *xi_hash_key - key to be searched in hash table */ +/* *xi_crc_init_value - initial value to be used in hashing the key */ +/* xi_mask_high - mask for the high part of the entry */ +/* xi_mask_low - mask for the low part of the entry */ +/* */ +/* Output: */ +/* */ +/* *xo_entry_index - used for returning the index that was found ( in */ +/* case it was found ) */ +/* . */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_find_hash_entry_64_bit ( RDD_64_BIT_TABLE_CFG *xi_hash_table_cfg, + uint8_t *xi_hash_key, + uint32_t xi_mask_high, + uint32_t xi_mask_low, + uint32_t xi_crc_init_value, + uint32_t *xo_entry_index ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_find_entry_64_bit */ +/* */ +/* Title: */ +/* */ +/* Find key in hash or in cam table */ +/* */ +/* Abstract: */ +/* */ +/* This function searches hash, and if no match, cam tables */ +/* */ +/* Input: */ +/* */ +/* *xi_table_cfg - table configuration data */ +/* *xi_cam_key - key to be searched in table */ +/* xi_mask_high - mask for the high part of the entry */ +/* xi_mask_low - mask for the low part of the entry */ +/* xi_crc_init_value - initial crc value for hash */ +/* */ +/* Output: */ +/* */ +/* *xo_entry_index - used for returning the index that was found ( in */ +/* case it was found ). hit in CAM is marked by index >= hash table size */ +/* */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_find_entry_64_bit ( RDD_64_BIT_TABLE_CFG *xi_table_cfg, + uint8_t *xi_key, + uint32_t xi_mask_high, + uint32_t xi_mask_low, + uint32_t xi_crc_init_value, + uint32_t *xo_entry_index ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_write_control_bits */ +/* */ +/* Title: */ +/* */ +/* Write control bits to hash table entry */ +/* */ +/* Abstract: */ +/* */ +/* This function writes control bits to entry, according to the passed */ +/* write type. */ +/* */ +/* */ +/* Registers : */ +/* */ +/* none. */ +/* */ +/* Input: */ +/* */ +/* *xi_table_ptr - pointer to first entry */ +/* xi_table_size - table size ( used only for remove entry write type ) */ +/* xi_entry_index - index of the entry */ +/* xi_write_type - add/modify/remove ( for hash table control bits ) */ +/* */ +/* Output: */ +/* */ +/* none. */ +/* . */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_write_control_bits ( RDD_64_BIT_TABLE_ENTRY_DTS *xi_table_ptr, + uint32_t xi_table_size, + uint32_t xi_entry_index, + BL_LILAC_RDD_HASH_TABLE_WRITE_TYPE_DTS xi_write_type ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_add_hash_entry_64_bit */ +/* */ +/* Title: */ +/* */ +/* add hash table entry */ +/* */ +/* Abstract: */ +/* */ +/* This function adds an entry (and optionally its context) to a hash */ +/* table. */ +/* */ +/* */ +/* Registers : */ +/* */ +/* none. */ +/* */ +/* Input: */ +/* */ +/* *xi_table_cfg - hash table configuration data */ +/* *xi_hash_entry_ptr - key to be hashed */ +/* *xi_context_entry_ptr - external context to be written */ +/* xi_key_mask_high - mask for the high part of the entry */ +/* xi_key_mask_low - mask for the low part of the entry */ +/* xi_crc_init_value - initial value to be used in hashing the key */ +/* */ +/* Output: */ +/* */ +/* *xo_entry_index - the index in table where the entry was added */ +/* . */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_add_hash_entry_64_bit ( RDD_64_BIT_TABLE_CFG *xi_table_cfg, + uint8_t *xi_hash_entry_ptr, + uint8_t *xi_context_entry_ptr, + uint32_t xi_key_mask_high, + uint32_t xi_key_mask_low, + uint32_t xi_crc_init_value, + uint32_t *xo_entry_index ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_modify_hash_entry_64_bit */ +/* */ +/* Title: */ +/* */ +/* modify hash table entry */ +/* */ +/* Abstract: */ +/* */ +/* This function modifies an entry (and optionally its context) in a hash */ +/* table. */ +/* */ +/* */ +/* Registers : */ +/* */ +/* none. */ +/* */ +/* Input: */ +/* */ +/* *xi_table_cfg - table configuration data */ +/* *xi_hash_entry_ptr - key to be hashed */ +/* xi_context_entry_ptr - context to be written */ +/* xi_key_mask_high - mask for the high part of the key */ +/* xi_key_mask_low - mask for the low part of the key */ +/* xi_internal_context_mask_high - mask for the high part of the entry */ +/* xi_internal_context_mask_low - mask for the low part of the entry */ +/* xi_crc_init_value - initial value to be used in hashing the key */ +/* */ +/* Output: */ +/* */ +/* *xo_entry_index - the index in table where the entry was modified */ +/* . */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_modify_hash_entry_64_bit ( RDD_64_BIT_TABLE_CFG *xi_table_cfg, + uint8_t *xi_hash_entry_ptr, + uint8_t *xi_context_entry_ptr, + uint32_t xi_key_mask_high, + uint32_t xi_key_mask_low, + uint32_t xi_internal_context_mask_high, + uint32_t xi_internal_context_mask_low, + uint32_t xi_crc_init_value, + uint32_t *xo_entry_index ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_remove_hash_entry_64_bit */ +/* */ +/* Title: */ +/* */ +/* remove hash table entry */ +/* */ +/* Abstract: */ +/* */ +/* This function removes an entry from a hash table */ +/* */ +/* */ +/* Registers : */ +/* */ +/* none. */ +/* */ +/* Input: */ +/* */ +/* *xi_table_cfg - hash table configuration data */ +/* *xi_hash_entry_ptr - key to be hashed */ +/* xi_crc_init_value - initial value to be used in hashing the key */ +/* xi_key_mask_high - mask for the high part of the key */ +/* xi_key_mask_low - mask for the low part of the key */ +/* */ +/* Output: */ +/* */ +/* *xo_entry_index - the index in table where the entry was removed */ +/* . */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_remove_hash_entry_64_bit ( RDD_64_BIT_TABLE_CFG *xi_table_cfg, + uint8_t *xi_hash_entry_ptr, + uint32_t xi_key_mask_high, + uint32_t xi_key_mask_low, + uint32_t xi_crc_init_value, + BL_LILAC_RDD_CAM_OPTIMIZATION_CONTROL_DTS xi_cam_optimization_control, + uint32_t *xo_entry_index ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_find_hash_entry_ddr */ +/* */ +/* Title: */ +/* */ +/* Find key in hash table */ +/* */ +/* Abstract: */ +/* */ +/* This function finds a key in a generic hash table and returns the */ +/* status of the operation. */ +/* */ +/* Registers : */ +/* */ +/* none. */ +/* */ +/* Input: */ +/* */ +/* *xi_hash_key - key to be searched in hash table */ +/* xi_hash_table_cfg_ptr - hash table configuration data */ +/* */ +/* Output: */ +/* */ +/* *xo_entry_index - used for returning the index that was found ( in */ +/* case it was found ) */ +/* . */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_find_hash_entry_ddr ( RDD_DDR_TABLE_CFG *xi_table_cfg_ptr, + uint8_t *xi_hash_key, + uint32_t *xo_entry_index ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_add_hash_entry_ddr */ +/* */ +/* Title: */ +/* */ +/* add hash table entry */ +/* */ +/* Abstract: */ +/* */ +/* This function adds an entry (and optionally its context) to a hash */ +/* table. */ +/* */ +/* */ +/* Registers : */ +/* */ +/* none. */ +/* */ +/* Input: */ +/* */ +/* xi_table_cfg_ptr - hash table configuration data */ +/* *xi_hash_entry_ptr - key to be hashed */ +/* *xi_context_entry_ptr - external context to be written */ +/* */ +/* Output: */ +/* */ +/* *xo_entry_index - the index in table where the entry was added */ +/* . */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_add_hash_entry_ddr ( RDD_DDR_TABLE_CFG *xi_table_cfg_ptr, + uint8_t *xi_hash_entry_ptr, + uint8_t *xi_context_entry_ptr, + uint32_t cache_flag, + uint32_t *xo_entry_index ); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_remove_hash_entry_ddr */ +/* */ +/* Title: */ +/* */ +/* remove hash table entry */ +/* */ +/* Abstract: */ +/* */ +/* This function removes an entry from a hash table */ +/* */ +/* */ +/* Registers : */ +/* */ +/* none. */ +/* */ +/* Input: */ +/* */ +/* xi_table_cfg_ptr - hash table configuration data */ +/* *xi_hash_entry_ptr - key to be hashed */ +/* */ +/* Output: */ +/* */ +/* *xo_entry_index - the index in table where the entry was removed */ +/* . */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_remove_hash_entry_ddr ( RDD_DDR_TABLE_CFG *xi_table_cfg_ptr, + uint8_t *xi_hash_entry_ptr, + uint32_t *xo_entry_index ); + + +#endif /* _BL_LILAC_DRV_RUNNER_LOOKUP_ENGINE_H */ diff --git a/arch/arm/mach-bcmbca/rdp/rdd_platform.h b/arch/arm/mach-bcmbca/rdp/rdd_platform.h new file mode 100755 index 0000000000..ab68cb91f7 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_platform.h @@ -0,0 +1,216 @@ +/* + <:copyright-BRCM:2014-2016:DUAL/GPL:standard + + Copyright (c) 2014-2016 Broadcom + All Rights Reserved + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, as published by + the Free Software Foundation (the "GPL"). + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + + A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + :> + */ + +#ifndef _RDD_PLATFORM_H +#define _RDD_PLATFORM_H + +#include "rdp_map.h" +#include "access_macros.h" + +typedef enum +{ + rdd_runner_0, /* 3rd GEN RDP - MAIN A */ + rdd_runner_1, /* 3rd GEN RDP - MAIN B */ + rdd_runner_2, /* 3rd GEN RDP - PICO A */ + rdd_runner_3, /* 3rd GEN RDP - PICO B */ + rdd_runner_last +} rdd_runner_t; + +typedef enum +{ + rdd_mem_0, /* 3rd GEN RDP - PRIVATE A */ + rdd_mem_1, /* 3rd GEN RDP - PRIVATE B */ + rdd_mem_last +} rdd_mem_t; + +typedef struct +{ + int runner_vector; /* runners pertaining to group */ + int mem_vector; /* memories pertaining to group */ +} rdd_runner_group_t; + +typedef enum +{ + rdd_size_8, + rdd_size_16, + rdd_size_32 +} rdd_entry_size_t; + +typedef struct rdd_module +{ + rdd_runner_group_t *group; + int (*init)(const struct rdd_module *); + uint32_t context_offset; + uint32_t context_size; + uint32_t res_offset; + uint32_t cfg_ptr; + void *params; +} rdd_module_t; + +static inline void _rdd_module_init(rdd_module_t *module) +{ + if (module->init) + module->init(module); +} + +/* TODO: REMOVE */ +#define MWRITE_GROUP_BLOCK_32(group, addr, block, size) _rdd_block_write(group, (addr), block, rdd_size_32, size) +#define MWRITE_GROUP_BLOCK_16(group, addr, block, size) _rdd_block_write(group, (addr), block, rdd_size_16, size) + +static inline uint32_t _rdd_mem_to_base_addr(rdd_mem_t mem) +{ + switch (mem) + { + case rdd_mem_0: + return RUNNER_PRIVATE_0_OFFSET; + case rdd_mem_1: + return RUNNER_PRIVATE_1_OFFSET; + default: + return 0; + } +} + +static inline void _rdd_i_write(rdd_runner_group_t *group, uint32_t addr, uint32_t val, uint32_t i, + rdd_entry_size_t size) +{ + uint32_t *entry; + int mem; + + for (mem = rdd_mem_0; mem < rdd_mem_last; mem++) + { + if (!(group->mem_vector & 1 << mem)) + continue; + + entry = (uint32_t *)(DEVICE_ADDRESS(_rdd_mem_to_base_addr(mem)) + addr); + switch (size) + { + case rdd_size_32: + MWRITE_I_32(entry, i, val); + break; + case rdd_size_16: + MWRITE_I_16(entry, i, val); + break; + default: + MWRITE_I_8(entry, i, val); + break; + } + } +} + +static inline uint32_t _rdd_i_read(rdd_runner_group_t *group, uint32_t addr, uint32_t i, rdd_entry_size_t size) +{ + uint32_t *entry; + int mem; + + for (mem = rdd_mem_0; mem < rdd_mem_last; mem++) + { + if (!(group->mem_vector & 1 << mem)) + continue; + + entry = (uint32_t *)(DEVICE_ADDRESS(_rdd_mem_to_base_addr(mem)) + addr); + switch (size) + { + case rdd_size_32: + return MGET_I_32(entry, i); + case rdd_size_16: + return MGET_I_16(entry, i); + default: + return MGET_I_8(entry, i); + } + } + return 0; +} + +static inline void _rdd_field_write(rdd_runner_group_t *group, uint32_t addr, uint32_t val, uint32_t lsb, uint32_t width, + rdd_entry_size_t size) +{ + uint32_t *entry; + int mem; + + for (mem = rdd_mem_0; mem < rdd_mem_last; mem++) + { + if (!(group->mem_vector & 1 << mem)) + continue; + + entry = (uint32_t *)(DEVICE_ADDRESS(_rdd_mem_to_base_addr(mem)) + addr); + switch (size) + { + case rdd_size_32: + FIELD_MWRITE_32(entry, lsb, width, val); + break; + case rdd_size_16: + FIELD_MWRITE_16(entry, lsb, width, val); + break; + default: + FIELD_MWRITE_8(entry, lsb, width, val); + break; + } + } +} + +static inline uint32_t _rdd_field_read(rdd_runner_group_t *group, uint32_t addr, uint32_t lsb, uint32_t width, + rdd_entry_size_t size) +{ + uint32_t *entry; + int mem; + + for (mem = rdd_mem_0; mem < rdd_mem_last; mem++) + { + if (!(group->mem_vector & 1 << mem)) + continue; + + entry = (uint32_t *)(DEVICE_ADDRESS(_rdd_mem_to_base_addr(mem)) + addr); + switch (size) + { + case rdd_size_32: + return FIELD_MGET_32(entry, lsb, width); + case rdd_size_16: + return FIELD_MGET_16(entry, lsb, width); + default: + return FIELD_MGET_8(entry, lsb, width); + } + } + return 0; +} + +static inline void _rdd_block_write(rdd_runner_group_t *group, const uint32_t addr, uint32_t *block, + uint32_t block_size, uint32_t size) +{ + int mem; + + for (mem = rdd_mem_0; mem < rdd_mem_last; mem++) + { + if (!(group->mem_vector & 1 << mem)) + continue; + switch (block_size) + { + case rdd_size_32: + MWRITE_BLK_32((uint32_t *)(DEVICE_ADDRESS(_rdd_mem_to_base_addr(mem)) + addr), block, size); + break; + case rdd_size_16: + MWRITE_BLK_16((uint16_t *)(DEVICE_ADDRESS(_rdd_mem_to_base_addr(mem)) + addr), block, size); + break; + } + } +} +#endif diff --git a/arch/arm/mach-bcmbca/rdp/rdd_runner_defs.h b/arch/arm/mach-bcmbca/rdp/rdd_runner_defs.h new file mode 100755 index 0000000000..d1febc8660 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_runner_defs.h @@ -0,0 +1,1107 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef _BL_LILAC_DRV_RUNNER_DEFS_H +#define _BL_LILAC_DRV_RUNNER_DEFS_H + +#ifdef RUNNER_A +#define BPM_REPLY_ADDRESS ( BPM_REPLY_RUNNER_A_ADDRESS ) +#else +#define BPM_REPLY_ADDRESS ( BPM_REPLY_RUNNER_B_ADDRESS ) +#endif +#if defined(WL4908) +#define BPM_TRANSITION_STATE_ADDRESS ( BPM_REPLY_ADDRESS + 0x20 ) +#else +#define BPM_TRANSITION_STATE_ADDRESS ( BPM_REPLY_RUNNER_A_ADDRESS + 0x20 ) +#endif + +#define FIREWALL_CFG_REG_RULES_MAP_TABLE_ADDRESS ( FIREWALL_CONFIGURATION_REGISTER_ADDRESS ) +#define FIREWALL_CFG_REG_RULES_TABLE_ADDRESS ( FIREWALL_CONFIGURATION_REGISTER_ADDRESS + 4 ) + +#define LOCAL_SWITCHING_MULTICAST_INGRESS_QUEUE_PTR_ADDRESS ( PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS + d.28 ) + +#define DMA_SYNCHRONIZATION_DUMMY_ADDRESS 0xFFFF0000 +#define DDR_ADDRESS_FOR_DMA_SYNC 0xFFFF0000 + +#define BCR_HASH_BASED_FORWARDING_PORT_COUNT_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_HASH_BASED_FORWARDING_PORT_COUNT_OFFSET ) +#define BCR_TIMER_SCHEDULER_TIMER_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_TIMER_SCHEDULER_PERIOD_OFFSET ) +#define BCR_POLICERS_TIMER_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_POLICERS_PERIOD_OFFSET ) +#define BCR_ACTIVE_POLICERS_VECTOR_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_ACTIVE_POLICERS_VECTOR_OFFSET ) +#define BCR_INTER_LAN_SCHEDULING_MODE_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_INTER_LAN_SCHEDULING_MODE_OFFSET ) +#define BCR_BROADCOM_SWITCH_PORT_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_BROADCOM_SWITCH_PORT_OFFSET ) +#define BCR_DOWNSTREAM_RATE_SHAPER_TIMER_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_DS_RATE_SHAPER_TIMER_OFFSET ) +#define BCR_US_PADDING_MAX_SIZE_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_US_PADDING_MAX_SIZE_OFFSET ) +#define BCR_US_PADDING_CPU_MAX_SIZE_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_US_PADDING_CPU_MAX_SIZE_OFFSET ) +#define BCR_MIRORRING_MODE_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_MIRRORING_PORT_OFFSET ) +#define BCR_US_RATE_CONTROLLER_TIMER_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_US_RATE_CONTROLLER_TIMER_OFFSET ) +#define BCR_US_RATE_LIMIT_SUSTAIN_BUDGET_LIMIT_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_US_RATE_LIMIT_SUSTAIN_BUDGET_LIMIT_OFFSET ) +#define BCR_1ST_EGRESS_ETHER_TYPE_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_EGRESS_ETHER_TYPE_1_OFFSET ) +#define BCR_2ND_EGRESS_ETHER_TYPE_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_EGRESS_ETHER_TYPE_2_OFFSET ) +#define BCR_3RD_EGRESS_ETHER_TYPE_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_EGRESS_ETHER_TYPE_3_OFFSET ) + +/* the following are configured in rdd.. mostly in rdd_tm, not sure if they are used for 63138/63148/4908 */ +#define BCR_DS_CONNECTION_MISS_ACTION_FILTER_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_DS_CONNECTION_MISS_ACTION_OFFSET ) +#define BCR_PCI_FLOW_CACHE_MODE_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_US_PCI_FLOW_CACHE_ENABLE_OFFSET ) +#define BCR_INGRESS_GLOBAL_CONFIG_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_GLOBAL_INGRESS_CONFIG_OFFSET ) +#define BCR_LS_DROP_PRECEDENCE_ELIGIBILITY_VECTOR_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_PCI_LS_DP_ELIGIBILITY_VECTOR_OFFSET ) +#define BCR_DS_INGRESS_POLICERS_MODE_ADDRESS ( SYSTEM_CONFIGURATION_ADDRESS + SYSTEM_CONFIGURATION_DS_INGRESS_POLICERS_MODE_OFFSET ) + + +#define PROFILING_BUFFER_MAIN_RUNNER_ADDRESS INGRESS_HANDLER_BUFFER_ADDRESS + +#define EMAC_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS + +#define TCONT_NUMBER_OF_RATE_CONTROLLERS 32 + +#define CPU_RX_NUMBER_OF_QUEUES 15 /* 8 for cpu_host + 7 for cpu_wlan0 */ + +#define DDR_QUEUE_CHUNK_SIZE 4 + +#define UPSTREAM_RATE_LIMITER_ID 8 + +#define TIMER_SCHEDULER_TASK_PERIOD 1000 +#define BL_LILAC_RDD_US_RATE_CONTROL_TIMER_INTERVAL 4000 +#define UPSTREAM_INGRESS_RATE_LIMITER_BUDGET_ALLOCATOR_TIMER_INTERVAL 1000 +#define POLICER_TIMER_PERIOD 4000 +#define POLICER_EXPONENT 5 +#define EMAC_RATE_LIMITER_TIMER_PERIOD 1000 +#define EMAC_RATE_LIMITER_EXPONENT 3 +#define SERVICE_QUEUE_RATE_LIMITER_TIMER_PERIOD 4000 +#define UPSTREAM_RATE_LIMITER_TIMER_PERIOD 4000 +#define UPSTREAM_RATE_LIMITER_EXPONENT 5 +#define UPSTREAM_QUASI_POLICER_TIMER_PERIOD 1000 +#define UPSTREAM_QUASI_POLICER_EXPONENT 3 +#define RDD_IPV6_HEADER_SIZE 40 +#define DDR_PACKET_PAYLOAD_OFFSET 18 +#define INTERRUPT_COALESCING_TIMER_PERIOD 100 +#define TIMER_7_TIMER_PERIOD 400 /* usec */ +#define TIMER_7_TIMER_HZ ( 1000000 / TIMER_7_TIMER_PERIOD ) /* sec */ +#define SPDSVC_ETH_IFG 20 /* bytes */ +#define SPDSVC_ETH_CRC_LEN 4 /* bytes */ +#define SPDSVC_ETH_OVERHEAD (SPDSVC_ETH_CRC_LEN + SPDSVC_ETH_IFG) /* bytes */ + /* Ethernet packet + 2 VLAN Tags + PPPoE + Overhead */ +#define SPDSVC_BUCKET_SIZE_MIN (1514 + 8 + 8 + SPDSVC_ETH_OVERHEAD) /* bytes */ +#define FREE_SKB_INDEX_TIMER_PERIOD 65000 + +/* timer schedular primitive ids */ +#define CPU_RX_METER_BUDGET_ALLOCATE_CODE_ID 0 /* fast a + fast b */ +#define UPSTREAM_RATE_LIMITER_BUDGET_ALLOCATE_CODE_ID 1 /* fast b */ +#define UPSTREAM_INGRESS_RATE_LIMITER_BUDGET_ALLOCATE_CODE_ID 2 /* pico b */ +#define UPSTREAM_QUASI_BUDGET_ALLOCATE_CODE_ID 3 /* pico b */ +#define DOWNSTREAM_RATE_LIMITER_BUDGET_ALLOCATE_CODE_ID 4 /* pico a */ +#define FREE_SKB_INDEX_ALLOCATE_CODE_ID 5 /* fast a+b, pico a+b */ +#define DOWNSTREAM_DHD_TX_POST_CLOSE_AGGREGATION_CODE_ID 6 /* fast a */ +#define DOWNSTREAM_SERVICE_QUEUES_RATE_LIMITER_BUDGET_ALLOCATE_CODE_ID 7 /* pico a */ + +#define MAC_UNKNOWN_DA_FORWARDING_FILTER_DISABLED 0xFFFFFFFF +#define MAC_UNKNOWN_DA_FORWARDING_POLICER_ENABLE_BIT_OFFSET 29 + +#define WAN_FILTERS_AND_CLASSIFICATON_R8_CPU_INDICATION_OFFSET 15 +#define WAN_FILTERS_AND_CLASSIFICATON_R8_ETHWAN2_INDICATION_OFFSET 14 + +#define DS_GLOBAL_CFG_FLOW_CACHE_MODE_BIT_OFFSET 0 +#define US_GLOBAL_CFG_FLOW_CACHE_MODE_BIT_OFFSET 0 +#define DS_GLOBAL_CFG_BRIDGE_FLOW_CACHE_MODE_BIT_OFFSET 1 +#define US_GLOBAL_CFG_BRIDGE_FLOW_CACHE_MODE_BIT_OFFSET 1 +#define DS_GLOBAL_CFG_BROADCOM_SWITCH_MODE_BIT_OFFSET 2 +#define US_GLOBAL_CFG_BROADCOM_SWITCH_MODE_BIT_OFFSET 2 +#define DS_GLOBAL_CFG_BROADCOM_SWITCH_PHYSICAL_PORT_BIT_OFFSET 3 +#define US_GLOBAL_CFG_EPON_MODE_BIT_OFFSET 4 +#define DS_GLOBAL_CFG_CHIP_REVISION_OFFSET 4 +#define GLOBAL_CFG_MIRRORING_MODE_BIT_OFFSET 5 +#define US_GLOBAL_CFG_CHIP_REVISION_OFFSET 6 +#define US_GLOBAL_CFG_SPDSVC_CONTEXT_BIT_OFFSET 7 +#define DS_GLOBAL_CFG_SPDSVC_CONTEXT_BIT_OFFSET 7 +#ifdef RUNNER_A +#define GLOBAL_CFG_CHIP_REVISION_OFFSET DS_GLOBAL_CFG_CHIP_REVISION_OFFSET +#else +#define GLOBAL_CFG_CHIP_REVISION_OFFSET US_GLOBAL_CFG_CHIP_REVISION_OFFSET +#endif + +#ifdef RUNNER_A +#define FW_MAC_ADDRS_COUNT_ADDRESS DS_FW_MAC_ADDRS_COUNT_ADDRESS +#define FW_MAC_ADDRS_ADDRESS DS_FW_MAC_ADDRS_ADDRESS +#else +#define FW_MAC_ADDRS_COUNT_ADDRESS US_FW_MAC_ADDRS_COUNT_ADDRESS +#define FW_MAC_ADDRS_ADDRESS US_FW_MAC_ADDRS_ADDRESS +#endif + +/* downstream global ingress configuration vector */ +#define GLOBAL_INGRESS_CONFIG_MIRRORING 0 +#define GLOBAL_INGRESS_CONFIG_DS_LITE 1 +#define GLOBAL_INGRESS_CONFIG_FULL_FLOW_CACHE_MODE 2 +#define GLOBAL_INGRESS_CONFIG_IP_MULTICAST_FC_ACCELERATION 3 +#define GLOBAL_INGRESS_CONFIG_NON_IP_FC_ACCELRATION 4 + +#define THREAD_WAKEUP_REQUEST(x) (((x) << 4) + 1) +#define CPU_TX_DESCRIPTOR_ADDRESS_MASK 0xFF80 + +/* Main A */ +#define CPU_TX_FAST_THREAD_NUMBER 0 +#define CPU_RX_THREAD_NUMBER 1 +#define TIMER_SCHEDULER_MAIN_THREAD_NUMBER 4 +#define POLICER_BUDGET_ALLOCATOR_THREAD_NUMBER 5 +#if defined(DSL_63138) || defined(DSL_63148) +#define WAN_DIRECT_THREAD_NUMBER 7 +#endif +#define WAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER 8 +#define WAN_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER 9 +#define ETHWAN2_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER 10 +#define DOWNSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER 11 +#define DOWNSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER 12 +#define DOWNSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER 13 +#define DOWNSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER 14 +#define DHD_TX_COMPLETE_FAST_A_THREAD_NUMBER 16 +#define DHD1_TX_COMPLETE_FAST_A_THREAD_NUMBER 17 +#define DHD2_TX_COMPLETE_FAST_A_THREAD_NUMBER 18 +#define DHD_TX_POST_FAST_A_THREAD_NUMBER 19 +#if defined(DSL_63138) || defined(DSL_63148) +#define CPU_DS_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER 25 +#endif +#define DOWNSTREAM_MULTICAST_THREAD_NUMBER 28 +#define FREE_SKB_INDEX_FAST_THREAD_NUMBER 29 +#define IPSEC_DOWNSTREAM_THREAD_NUMBER 30 + +/* Pico A */ +#define CPU_TX_PICO_THREAD_NUMBER 32 +#define GSO_PICO_THREAD_NUMBER 33 +#define TIMER_SCHEDULER_PICO_A_THREAD_NUMBER 34 +#if defined(WL4908) +#define DS_RX_BUFFER_COPY_THREAD_NUMBER 35 +#endif +#define WLAN_MCAST_THREAD_NUMBER 36 +#define DOWNSTREAM_LAN_ENQUEUE_THREAD_NUMBER 37 +#define DS_TIMER_7_THREAD_NUMBER 38 +#define CPU_RX_INTERRUPT_COALESCING_THREAD_NUMBER 39 +#define FREE_SKB_INDEX_PICO_A_THREAD_NUMBER 40 +#define LOCAL_SWITCHING_LAN_ENQUEUE_THREAD_NUMBER 41 +#define ETH_TX_THREAD_NUMBER 42 +#define SERVICE_QUEUE_ENQUEUE_THREAD_NUMBER 44 +#define SERVICE_QUEUE_DEQUEUE_THREAD_NUMBER 45 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_THREAD_NUMBER 47 + +/* Main B */ +//efine CPU_TX_FAST_THREAD_NUMBER 0 +//efine CPU_RX_THREAD_NUMBER 1 +#define RATE_CONTROLLER_BUDGET_ALLOCATOR_THREAD_NUMBER 3 +//efine TIMER_SCHEDULER_MAIN_THREAD_NUMBER 4 +//efine POLICER_BUDGET_ALLOCATOR_THREAD_NUMBER 5 +#define WAN1_TX_THREAD_NUMBER 6 +#if defined(DSL_63138) || defined(DSL_63148) +#define WAN_TX_THREAD_NUMBER 7 +#endif +#define DHD_TX_POST_FAST_B_THREAD_NUMBER 8 +#if defined(WL4908) +#define US_RX_BUFFER_COPY_THREAD_NUMBER 9 +#define US_RX_BUFFER_COPY1_THREAD_NUMBER 10 +#define US_RX_BUFFER_COPY2_THREAD_NUMBER 11 +#endif +#define WAN_ENQUEUE_THREAD_NUMBER 21 +#define US_TIMER_7_THREAD_NUMBER 27 +//#define FREE_SKB_INDEX_FAST_THREAD_NUMBER 29 + +/* Pico B */ +#define UPSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER 32 +#define UPSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER 33 +#define UPSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER 34 +#define UPSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER 35 +#define FREE_SKB_INDEX_PICO_B_THREAD_NUMBER 36 +#define TIMER_SCHEDULER_PICO_B_THREAD_NUMBER 37 +#define CPU_US_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER 38 +#if defined(DSL_63138) || defined(DSL_63148) +#define LAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER 39 +#endif +#define DHD_RX_THREAD_NUMBER 40 +#define DHD1_RX_THREAD_NUMBER 41 +#define DHD2_RX_THREAD_NUMBER 42 +#define LAN_DISPATCH_THREAD_NUMBER 43 +#if defined(WL4908) +#define LAN1_DISPATCH_THREAD_NUMBER 44 +#define LAN2_DISPATCH_THREAD_NUMBER 45 +#endif + +/* Main A */ +#define CPU_TX_FAST_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(CPU_TX_FAST_THREAD_NUMBER) +#define CPU_RX_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(CPU_RX_THREAD_NUMBER) + +#define TIMER_SCHEDULER_MAIN_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(TIMER_SCHEDULER_MAIN_THREAD_NUMBER) +#define POLICER_BUDGET_ALLOCATOR_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(POLICER_BUDGET_ALLOCATOR_THREAD_NUMBER) +#define WAN_DIRECT_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(WAN_DIRECT_THREAD_NUMBER) +#define WAN1_FILTERS_AND_CLASSIFICATION_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(WAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER) +#define WAN_FILTERS_AND_CLASSIFICATION_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(WAN_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER) +#define ETHWAN2_FILTERS_AND_CLASSIFICATION_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(ETHWAN2_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER) +#define DOWNSTREAM_FLOW_CACHE_SLAVE0_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DOWNSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER) +#define DOWNSTREAM_FLOW_CACHE_SLAVE1_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DOWNSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER) +#define DOWNSTREAM_FLOW_CACHE_SLAVE2_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DOWNSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER) +#define DOWNSTREAM_FLOW_CACHE_SLAVE3_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DOWNSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER) +#define DHD_TX_COMPLETE_FAST_A_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DHD_TX_COMPLETE_FAST_A_THREAD_NUMBER) +#define DHD1_TX_COMPLETE_FAST_A_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DHD1_TX_COMPLETE_FAST_A_THREAD_NUMBER) +#define DHD2_TX_COMPLETE_FAST_A_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DHD2_TX_COMPLETE_FAST_A_THREAD_NUMBER) +#define DHD_TX_POST_FAST_A_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DHD_TX_POST_FAST_A_THREAD_NUMBER) +#if defined(DSL_63138) || defined(DSL_63148) +#define CPU_DS_CLASSIFICATION_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(CPU_DS_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER) +#endif +#define DOWNSTREAM_MULTICAST_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DOWNSTREAM_MULTICAST_THREAD_NUMBER) +#define FREE_SKB_INDEX_FAST_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(FREE_SKB_INDEX_FAST_THREAD_NUMBER) +#define IPSEC_DOWNSTREAM_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(IPSEC_DOWNSTREAM_THREAD_NUMBER) + +/* Pico A */ +#define CPU_TX_PICO_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(CPU_TX_PICO_THREAD_NUMBER) +#define GSO_PICO_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(GSO_PICO_THREAD_NUMBER) +#define TIMER_SCHEDULER_PICO_A_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(TIMER_SCHEDULER_PICO_A_THREAD_NUMBER) +#if defined(WL4908) +#define DS_RX_BUFFER_COPY_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DS_RX_BUFFER_COPY_THREAD_NUMBER) +#endif +#define WLAN_MCAST_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(WLAN_MCAST_THREAD_NUMBER) +#define DOWNSTREAM_LAN_ENQUEUE_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DOWNSTREAM_LAN_ENQUEUE_THREAD_NUMBER) +#define DS_SPDSVC_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DS_SPDSVC_THREAD_NUMBER) +#define CPU_RX_INTERRUPT_COALESCING_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(CPU_RX_INTERRUPT_COALESCING_THREAD_NUMBER) +#define FREE_SKB_INDEX_PICO_A_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(FREE_SKB_INDEX_PICO_A_THREAD_NUMBER) +#define LOCAL_SWITCHING_LAN_ENQUEUE_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(LOCAL_SWITCHING_LAN_ENQUEUE_THREAD_NUMBER) +#define ETH_TX_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(ETH_TX_THREAD_NUMBER) +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DOWNSTREAM_MULTICAST_LAN_ENQUEUE_THREAD_NUMBER) +#define SERVICE_QUEUE_ENQUEUE_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(SERVICE_QUEUE_ENQUEUE_THREAD_NUMBER) +#define SERVICE_QUEUE_DEQUEUE_WAKEUP_THREAD_REQUEST_VALUE THREAD_WAKEUP_REQUEST(SERVICE_QUEUE_DEQUEUE_THREAD_NUMBER) + +/* Main B */ +//efine CPU_TX_FAST_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(CPU_TX_FAST_THREAD_NUMBER) +//efine CPU_RX_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(CPU_RX_THREAD_NUMBER) +#define RATE_CONTROLLER_BUDGET_ALLOCATOR_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(RATE_CONTROLLER_BUDGET_ALLOCATOR_THREAD_NUMBER) +//efine TIMER_SCHEDULER_MAIN_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(TIMER_SCHEDULER_MAIN_THREAD_NUMBER) +//efine POLICER_BUDGET_ALLOCATOR_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(POLICER_BUDGET_ALLOCATOR_THREAD_NUMBER) +#define WAN1_TX_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(WAN1_TX_THREAD_NUMBER) +#if defined(DSL_63138) || defined(DSL_63148) +#define WAN_TX_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(WAN_TX_THREAD_NUMBER) +#endif +#define DHD_TX_POST_FAST_B_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DHD_TX_POST_FAST_B_THREAD_NUMBER) +#if defined(WL4908) +#define US_RX_BUFFER_COPY_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(US_RX_BUFFER_COPY_THREAD_NUMBER) +#define US_RX_BUFFER_COPY1_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(US_RX_BUFFER_COPY1_THREAD_NUMBER) +#define US_RX_BUFFER_COPY2_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(US_RX_BUFFER_COPY2_THREAD_NUMBER) +#endif +#define WAN_ENQUEUE_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(WAN_ENQUEUE_THREAD_NUMBER) +#define US_SPDSVC_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(US_SPDSVC_THREAD_NUMBER) +//efine FREE_SKB_INDEX_FAST_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(FREE_SKB_INDEX_FAST_THREAD_NUMBER) + +/* Pico B */ +#define UPSTREAM_FLOW_CACHE_SLAVE0_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(UPSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER) +#define UPSTREAM_FLOW_CACHE_SLAVE1_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(UPSTREAM_FLOW_CACHE_SLAVE1_THREAD_NUMBER) +#define UPSTREAM_FLOW_CACHE_SLAVE2_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(UPSTREAM_FLOW_CACHE_SLAVE2_THREAD_NUMBER) +#define UPSTREAM_FLOW_CACHE_SLAVE3_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(UPSTREAM_FLOW_CACHE_SLAVE3_THREAD_NUMBER) +#define FREE_SKB_INDEX_PICO_B_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(FREE_SKB_INDEX_PICO_B_THREAD_NUMBER) +#define TIMER_SCHEDULER_PICO_B_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(TIMER_SCHEDULER_PICO_B_THREAD_NUMBER) +#define CPU_US_CLASSIFICATION_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(CPU_US_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER) +#if defined(DSL_63138) || defined(DSL_63148) +#define LAN1_FILTERS_AND_CLASSIFICATION_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(LAN1_FILTERS_AND_CLASSIFICATION_THREAD_NUMBER) +#endif +#define DHD_RX_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DHD_RX_THREAD_NUMBER) +#define DHD1_RX_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DHD1_RX_THREAD_NUMBER) +#define DHD2_RX_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(DHD2_RX_THREAD_NUMBER) +#define LAN_DISPATCH_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(LAN_DISPATCH_THREAD_NUMBER) +#if defined(WL4908) +#define LAN1_DISPATCH_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(LAN1_DISPATCH_THREAD_NUMBER) +#define LAN2_DISPATCH_THREAD_WAKEUP_REQUEST_VALUE THREAD_WAKEUP_REQUEST(LAN2_DISPATCH_THREAD_NUMBER) +#endif + + +#define LAN_FILTERS_LAN_TYPE_CPU_BIT_OFFSET 31 +#define LAN_FILTERS_LAN_TYPE_DIRECT_TO_CPU_BIT_OFFSET 30 + +#define SELF_FIRMWARE_WAKEUP_REQUEST_BIT 2 + +#define DOWNSTREAM_RX_PACKETS_GROUP 0 +#define DOWNSTREAM_RX_BYTES_GROUP 16 + +/* Each Runner counter group has 16 32bit counters or 32 16bit counters. + * There are: 1 eth wan1 + 7 lans = 8 ports --> 64 queues total + * Supports 4 counters per queue: tx_bytes, tx_packets, dropped_bytes, dropped_packets + * Needs: + * 64 32bit counters for tx_bytes --> 4 Runner counter groups: 0, 1, 2, 3 + * 64 32bit counters for tx_packets --> 4 Runner counter groups: 4, 5, 6, 7 + * 64 32bit counters for dropped_bytes --> 4 Runner counter groups: 8, 9, 10, 11 + * 64 16bit counters for dropped_packets --> 2 Runner counter groups: 12, 13 + * Counter allocation in each counter type is 8 WAN queue counters followed by 56 LAN queue counters. + */ +#define WAN_TX_QUEUES_BYTES_GROUP 0 +#define WAN_TX_QUEUES_PACKETS_GROUP 4 +#define WAN_TX_QUEUES_DROPPED_BYTES_GROUP 8 +#define WAN_TX_QUEUES_DROPPED_PACKETS_GROUP 12 + +#define LAN_TX_QUEUES_BYTES_GROUP 0 +#define LAN_TX_QUEUES_PACKETS_GROUP 4 +#define LAN_TX_QUEUES_DROPPED_BYTES_GROUP 8 +#define LAN_TX_QUEUES_DROPPED_PACKETS_GROUP 12 + +/* For DSL wan0, we need: + * 16 32bit counters for tx_bytes --> 1 Runner counter group: 14 + * 16 32bit counters for tx_packets --> 1 Runner counter group: 15 + * 16 32bit counters for dropped_bytes --> 1 Runner counter group: 16 + * 16 16bit counters for dropped_packets --> 1 Runner counter group: 17 + */ +#define WAN0_TX_QUEUES_BYTES_GROUP 14 +#define WAN0_TX_QUEUES_PACKETS_GROUP 15 +#define WAN0_TX_QUEUES_DROPPED_BYTES_GROUP 16 +#define WAN0_TX_QUEUES_DROPPED_PACKETS_GROUP 17 + +/* For Path Stats, we need: + * 64 32bit counters for packets --> 4 Runner counter group: 20 + * 64 32bit counters for bytes --> 4 Runner counter group: 24 + */ +#define PATHSTAT_PACKETS_GROUP 20 +#define PATHSTAT_BYTES_GROUP 24 + +#define DOWNSTREAM_RX_DROPPED_SUMMARY_GROUP 32 +#define DHD_SSID_DROP_PACKET_GROUP 37 +#define UPSTREAM_TX_PACKETS_GROUP 40 +#define UPSTREAM_TX_BYTES_GROUP 56 +#define UPSTREAM_TX_CONGESTION_GROUP 72 +#define BRIDGE_RX_BPM_CONGESTION_GROUP 80 +#define BRIDGE_FILTERED_GROUP 81 +#define BRIDGE_DOWNSTREAM_TX_CONGESTION_GROUP 82 +#define WAN_BRIDGE_PORT_GROUP 83 + +/* The first 16 16bit counters of group 82 are used for LAN port tx discards. + * The last 8 32bit counters of group 82 are used for LAN port tx packets. + * + * 16bit counter 0 is reserved. + * 16bit counter 1 is for LAN0 tx discard count. + * 16bit counter 2 is for LAN1 tx discard count. + * .... + * 16bit counter 7 is for LAN6 tx discard count. + * + * 32bit counter 8 is reserved. + * 32bit counter 9 is for LAN0 tx packet count. + * 32bit counter 10 is for LAN1 tx packet count. + * .... + * 32bit counter 15 is for LAN6 tx packet count. + */ +#define LAN_TX_PACKETS_GROUP 82 +/* The last 8 32bit counters of group 83 are used for LAN port rx packets. + * + * 32bit counters 0 - 8 are reserved. + * 32bit counter 9 is for LAN0 rx packet count. + * 32bit counter 10 is for LAN1 rx packet count. + * .... + * 32bit counter 15 is for LAN6 rx packet count. + */ +#define LAN_RX_PACKETS_GROUP 83 +#define INGRESS_RATE_LIMITER_GROUP 84 +#define UPSTREAM_VARIOUS_PACKETS_GROUP 86 +#define DOWNSTREAM_VARIOUS_PACKETS_GROUP 88 +#define SERVICE_QUEUE_DROP_PACKET_GROUP 90 +#define CPU_RX_METERS_DROPPED_PACKETS_GROUP 91 +#define SERVICE_QUEUE_PACKET_GROUP 92 +#define SUBNET_RX_GROUP 92 +#define SUBNET_RX_BYTES_GROUP 93 +#define SUBNET_TX_GROUP 94 +#define SUBNET_TX_BYTES_GROUP 95 +#define CPU_RX_INTERRUPT_COALESCING_GROUP 96 + +#define WAN_CRC_ERROR_NORMAL_COUNTER_OFFSET 0 +#define WAN_CRC_ERROR_IPTV_COUNTER_OFFSET 1 +#define WAN_BRIDGED_RX_VALID_SUB_GROUP_OFFSET 1 +#define WAN_IPTV_RX_VALID_SUB_GROUP_OFFSET 2 +#define LAN_SUBNET_COUNTER_OFFSET 2 +#define SUBNET_DROPPED_PACKETS_SUB_GROUP_OFFSET 20 +#define ACL_OUI_DROP_COUNTER_OFFSET 32 +#define ACL_LAYER2_DROP_COUNTER_OFFSET 33 +#define ACL_LAYER3_DROP_COUNTER_OFFSET 34 +#define INGRESS_FILTER_DROP_SUB_GROUP_OFFSET 0 +#define LAYER4_FILTER_DROP_SUB_GROUP_OFFSET 16 +#define INVALID_LAYER2_PROTOCOL_DROP_COUNTER_OFFSET 32 +#define FIREWALL_DROP_COUNTER_OFFSET 33 +#define DST_MAC_NON_ROUTER_COUNTER_OFFSET 34 +#define ETHERNET_FLOW_DROP_ACTION_COUNTER_OFFSET 35 +#define EMAC_LOOPBACK_DROP_COUNTER 36 +#define LAN_ENQUEUE_CONGESTION_COUNTER_OFFSET 36 +#define IH_THRESHOLD_CONGESTION_COUNTER_OFFSET 36 +#define VLAN_SWITCHING_DROP_COUNTER_OFFSET 37 +#define SA_LOOKUP_FAILURE_DROP_COUNTER_OFFSET 38 +#define DA_LOOKUP_FAILURE_DROP_COUNTER_OFFSET 39 +#define SA_ACTION_DROP_COUNTER_OFFSET 40 +#define DA_ACTION_DROP_COUNTER_OFFSET 41 +#define FORWARDING_MATRIX_DISABLED_DROP_COUNTER_OFFSET 42 +#define CONNECTION_ACTION_DROP_COUNTER_OFFSET 43 +#define IPTV_LAYER3_DROP_COUNTER_OFFSET 44 +#define DOWNSTREAM_POLICERS_DROP_COUNTER_OFFSET 45 +#define UPSTREAM_POLICERS_DROP_COUNTER_OFFSET 45 +#define INGRESS_FILTER_IP_VALIDATIOH_GROUP_OFFSET 46 +#define IP_HEADER_ERROR_DROP_COUNTER_OFFSET 46 +#define IP_FRAGMENT_DROP_COUNTER_OFFSET 47 +#define TPID_DETECT_DROP_COUNTER_OFFSET 48 +#define DUAL_STACK_LITE_CONGESTION_DROP_COUNTER_OFFSET 49 +#define INVALID_SUBNET_IP_DROP_COUNTER_OFFSET 50 +#define EPON_DDR_QUEUES_COUNTER_OFFSET 51 +#define DOWNSTREAM_PARALLEL_PROCESSING_NO_SLAVE_WAIT_OFFSET 52 +#define DOWNSTREAM_PARALLEL_PROCESSING_REORDER_WAIT_OFFSET 53 +#define ABSOLUTE_ADDRESS_LIST_OVERFLOW_OFFSET 54 +#define DHD_IH_CONGESTION_OFFSET 55 /* DHD_OFFLOAD */ +#define DHD_MALLOC_FAILED_OFFSET 56 /* DHD_OFFLOAD */ +#define CPU_RX_METERS_DROPPED_PACKETS_UPSTREAM_OFFSET 16 + +#define BBH_RESET_WORD_1_DESCRIPTOR_VALUE 0xF0000000 +#define BBH_RESET_WORD_1_DESCRIPTOR_VALUE_MOD_8 0xF0 + +#define CPU_RX_INTCOL_TOTALPKTS_OFFSET 0 +#define CPU_RX_INTCOL_MAXPKTS_OFFSET 1 +#define CPU_RX_INTCOL_TIMEOUTS_OFFSET 2 + +#define BBH_PERIPHERAL_DSL_RX 0 +#define BBH_PERIPHERAL_DSL_TX 32 +#define BBH_PERIPHERAL_WAN_RX BBH_PERIPHERAL_DSL_RX +#define BBH_PERIPHERAL_WAN_TX BBH_PERIPHERAL_DSL_TX +#define BBH_PERIPHERAL_GPON_RX 0 +#define BBH_PERIPHERAL_GPON_TX 32 +#define BBH_PERIPHERAL_EPON_TX 96 +#define BBH_PERIPHERAL_CO_RUNNER 2 +#define BBH_PERIPHERAL_BPM 3 +#define BBH_PERIPHERAL_SBPM 7 +#define BBH_PERIPHERAL_ETH0_TX 60 +#define BBH_PERIPHERAL_ETH0_RX 28 +#define BBH_PERIPHERAL_ETH1_TX 44 +#define BBH_PERIPHERAL_ETH1_RX 12 +#define BBH_PERIPHERAL_ETH2_TX 52 +#define BBH_PERIPHERAL_ETH2_RX 20 +#define BBH_PERIPHERAL_ETH3_TX 40 +#define BBH_PERIPHERAL_ETH3_RX 8 +#define BBH_PERIPHERAL_ETH4_TX 48 +#define BBH_PERIPHERAL_ETH4_RX 16 +#define BBH_PERIPHERAL_IH 6 +#define BBH_PERIPHERAL_MIPS_D 14 + +#define SBPM_REPLY_SET_0 ( 0 << 7 ) +#define SBPM_REPLY_SET_1 ( 1 << 7 ) +#define SBPM_REPLY_SET_2 ( 2 << 7 ) +#define SBPM_REPLY_SET_3 ( 3 << 7 ) +#define SBPM_REPLY_SET_0_OFFSET 0 +#define SBPM_REPLY_SET_1_OFFSET 32 +#define SBPM_REPLY_SET_2_OFFSET 64 +#define SBPM_REPLY_SET_3_OFFSET 96 +#define SBPM_REPLY_GET_NEXT_OFFSET 12 + +#define WAN_SRC_PORT 0 +#define ETH0_SRC_PORT 1 +#define ETH1_SRC_PORT 2 +#define ETH4_SRC_PORT 5 +#define MIPS_C_SRC_PORT 6 +#define WAN_IPTV_SRC_PORT 7 +#define ANY_SRC_PORT 11 /* used by Speed Service */ +#define PCI_0_SRC_PORT 13 /* must match DRV_BPM_SP_SPARE_1 */ +#define SPARE_0_SRC_PORT 12 +#define FAST_RUNNER_A_SRC_PORT 14 +#define FAST_RUNNER_B_SRC_PORT 15 + +#define RUNNER_CLUSTER_A_SRC_PORT 14 +#define RUNNER_CLUSTER_B_SRC_PORT 15 + +#define RDD_DS_IH_PACKET_HEADROOM_OFFSET 18 +#define RDD_US_IH_PACKET_HEADROOM_OFFSET 18 +#define RDD_LAYER2_HEADER_MINIMUM_LENGTH 14 +#define RDD_RUNNER_FLOW_RUNNER_A_IH_BUFFER 14 +#define RDD_RUNNER_FLOW_RUNNER_B_IH_BUFFER 15 +#define RDD_RUNNER_A_IH_BUFFER_BBH_OFFSET ((RDD_RUNNER_FLOW_RUNNER_A_IH_BUFFER * 128 + RDD_DS_IH_PACKET_HEADROOM_OFFSET) / 8) +#define RDD_RUNNER_B_IH_BUFFER_BBH_OFFSET ((RDD_RUNNER_FLOW_RUNNER_B_IH_BUFFER * 128 + RDD_US_IH_PACKET_HEADROOM_OFFSET) / 8) +#define RDD_IH_BUFFER_BBH_ADDRESS 0x8000 +#define RDD_IH_HEADER_DESCRIPTOR_BBH_ADDRESS 0x0 + +/* Parallel processing */ +#define FLOW_CACHE_SLAVE0_VECTOR_MASK 1 +#define FLOW_CACHE_SLAVE1_VECTOR_MASK 2 +#define FLOW_CACHE_SLAVE2_VECTOR_MASK 4 +#define FLOW_CACHE_SLAVE3_VECTOR_MASK 8 +#define CPU_FLOW_CACHE_VECTOR_MASK 16 + +/* Dummy defines for software */ +#define ETH0_RX_DIRECT_DESCRIPTORS_ADDRESS 0 +#define ETH1_RX_DIRECT_DESCRIPTORS_ADDRESS 0 +#define ETH2_RX_DIRECT_DESCRIPTORS_ADDRESS 0 +#define ETH3_RX_DIRECT_DESCRIPTORS_ADDRESS 0 +#define ETH4_RX_DIRECT_DESCRIPTORS_ADDRESS 0 + +#define ETH0_RX_DIRECT_RUNNER_A_TASK_NUMBER 0 +#define ETH1_RX_DIRECT_RUNNER_A_TASK_NUMBER 0 +#define ETH2_RX_DIRECT_RUNNER_A_TASK_NUMBER 0 +#define ETH3_RX_DIRECT_RUNNER_A_TASK_NUMBER 0 +#define ETH4_RX_DIRECT_RUNNER_A_TASK_NUMBER 0 + +#define ETH0_RX_DIRECT_RUNNER_B_TASK_NUMBER 0 +#define ETH1_RX_DIRECT_RUNNER_B_TASK_NUMBER 0 +#define ETH2_RX_DIRECT_RUNNER_B_TASK_NUMBER 0 +#define ETH3_RX_DIRECT_RUNNER_B_TASK_NUMBER 0 +#define ETH4_RX_DIRECT_RUNNER_B_TASK_NUMBER 0 + +#define MAC_ADDRESS_SIZE 6 + +/* Per chip limitation, 63138/63148 SAR can only transmit + * max PTM frame size of 1984 bytes including FCS (4 bytes). + */ +#define PTM_MAX_TX_FRAME_LEN_FCS 1984 + +/* UNIMAC message to enable/disable EEE LPI mode.*/ +#define BBTX_EEE_MODE_CONFIG_MESSAGE 6 + +#ifdef RUNNER_A +#define PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS DS_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS +#define FLOW_CACHE_SLAVE0_THREAD_NUMBER DOWNSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER +#define PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS +#else +#define PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS US_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS +#define FLOW_CACHE_SLAVE0_THREAD_NUMBER UPSTREAM_FLOW_CACHE_SLAVE0_THREAD_NUMBER +#define PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS +#endif + +#ifdef RUNNER_A +#define SPDSVC_CONTEXT_TABLE_ADDRESS DS_SPDSVC_CONTEXT_TABLE_ADDRESS +#define SPDSVC_WAKEUP_REQUEST_VALUE DS_SPDSVC_WAKEUP_REQUEST_VALUE +#else +#define SPDSVC_CONTEXT_TABLE_ADDRESS US_SPDSVC_CONTEXT_TABLE_ADDRESS +#define SPDSVC_WAKEUP_REQUEST_VALUE US_SPDSVC_WAKEUP_REQUEST_VALUE +#endif + +#ifdef RUNNER_A +#define SPDSVC_SET_CONTEXT() \ + insert ds_global_cfg R1 DS_GLOBAL_CFG_SPDSVC_CONTEXT_BIT_OFFSET d.1 +#define SPDSVC_RESET_CONTEXT() \ + insert ds_global_cfg R0 DS_GLOBAL_CFG_SPDSVC_CONTEXT_BIT_OFFSET d.1 +#else /* RUNNER_B */ +#define SPDSVC_SET_CONTEXT() \ + insert us_global_cfg R1 US_GLOBAL_CFG_SPDSVC_CONTEXT_BIT_OFFSET d.1 +#define SPDSVC_RESET_CONTEXT() \ + insert us_global_cfg R0 US_GLOBAL_CFG_SPDSVC_CONTEXT_BIT_OFFSET d.1 +#endif + +/* DHD */ +#define DHD_DOORBELL_IRQ_NUM 2 +#define DHD_MSG_TYPE_TX_POST 0xF +#define DHD_MSG_TYPE_RX_POST 0x11 +#define DHD_TX_POST_FLOW_RING_SIZE 2560 +#define DHD_TX_POST_FLOW_RING_DESCRIPTOR_SIZE 48 +#define DHD_TX_POST_FLOW_RING_SIZE_IN_BYTES ( DHD_TX_POST_FLOW_RING_SIZE * DHD_TX_POST_FLOW_RING_DESCRIPTOR_SIZE ) +#define DHD_RX_POST_FLOW_RING_SIZE 1024 +#define DHD_TX_COMPLETE_FLOW_RING_SIZE 1024 +#define DHD_RX_COMPLETE_FLOW_RING_SIZE 1024 +#define DHD_TX_POST_BUFFERS_THRESHOLD 2048 +#define DHD_DATA_LEN 2048 +#define DHD_RX_POST_RING_NUMBER 1 +#define DHD_TX_COMPLETE_RING_NUMBER 3 +#define DHD_RX_COMPLETE_RING_NUMBER 4 + +#define DHD_RADIO_OFFSET_COMMON_A(index) (DHD_RADIO_INSTANCE_COMMON_A_DATA_ADDRESS + (index * sizeof(RDD_DHD_RADIO_INSTANCE_COMMON_A_ENTRY_DTS))) +#define DHD_RADIO_OFFSET_COMMON_B(index) (DHD_RADIO_INSTANCE_COMMON_B_DATA_ADDRESS + (index * sizeof(RDD_DHD_RADIO_INSTANCE_COMMON_B_ENTRY_DTS))) + +#define UCAST_DROP_COMMAND_LIST_STRING_SIZE 16 +#define UCAST_DROP_COMMAND_LIST_TIMESTAMP_SIZE 8 +#define UCAST_DROP_COMMAND_LIST_TOTAL_SIZE ( UCAST_DROP_COMMAND_LIST_STRING_SIZE + UCAST_DROP_COMMAND_LIST_TIMESTAMP_SIZE ) + +#define WLAN_MCAST_EGRESS_PORT_INDEX 7 + +/* IPsec operation errors */ +#define IPSEC_OPERATION_OK 0 +#define IPSEC_ICV_CHECK_FAIL 1 + +/* DS queues with a filling level less than this threshold can allocate Packet Descriptor using the guaranteed PD Pool budget */ +#define DS_FREE_PACKET_DESCRIPTOR_POOL_GUARANTEED_QUEUE_THRESHOLD 8 + +/* The guaranteed PD Pool budget is sized in function of the number of configured DS queues. To avoid unexpected behavior in + * corner cases, e.g. a transient condition when all DS queues are unconfigured, the guaranteed PD Pool budget is clamped + * to at least this minimum guaranteed pool size value. + */ +#define DS_FREE_PACKET_DESCRIPTOR_POOL_MIN_GUARANTEED_POOL_SIZE 64 + +/* US queues with a filling level less than this threshold can allocate Packet Descriptor using the guaranteed PD Pool budget */ +#define US_FREE_PACKET_DESCRIPTOR_POOL_GUARANTEED_QUEUE_THRESHOLD 72 + +/* The guaranteed PD Pool budget is sized in function of the number of configured US queues. To avoid unexpected behavior in + * corner cases, e.g. a transient condition when all US queues are unconfigured, the guaranteed PD Pool budget is clamped + * to at least this minimum guaranteed pool size value. + * Let's say a typical configuration of - 8 queues in US. Each queue with 72 PDs guaranteed. (8*72 = 576 PDS) + * NG PDs -> 3072-576 = 2496 PDs. + */ +#define US_FREE_PACKET_DESCRIPTOR_POOL_MIN_GUARANTEED_POOL_SIZE (US_FREE_PACKET_DESCRIPTOR_POOL_GUARANTEED_QUEUE_THRESHOLD*8) + +#define INVALID_COUNTER_ID 0 + +#define IPPROTO_IDX_UNDEF 0 /* Undefined, may be used for L2 */ + +#define IPPROTO_IDX_OTHER 1 /* 0 IPv6 ext: Hop-by-Hop Option Header + 61 Any host internel proto + 114 Any Zero HOP + 141 - 252 unassigned range + 253 - 254 Reserved for experimentation + 255 Raw IP Packets */ +#define IPPROTO_IDX_IPV6 2 /* 41 IPv6-in-IPv4 tunneling */ +#define IPPROTO_IDX_GRE 3 /* 47 Cisco GRE tunnels (rfc 1701,1702) */ +#define IPPROTO_IDX_IPIP 4 /* 4 IPIP tunnels e.g. 4in6 */ +#define IPPROTO_IDX_TCP_ACK 5 /* TCP pure acknowledgment */ +#define IPPROTO_IDX_TCP 6 /* 6 Transmission Control Protocol */ +#define IPPROTO_IDX_UDP 7 /* 17 User Datagram Protocol */ + +#define TUPLE_PROTO_PROTOCOL_F_OFFSET 4 +#define TUPLE_PROTO_PROTOCOL_F_WIDTH 3 +#define TUPLE_PROTO_PROTOCOL_F_MASK 0x07 +#define TUPLE_PROTO_PROTOCOL_OFFSET 0 +#define TUPLE_PROTO_LOOKUP_PORT_F_OFFSET 0 +#define TUPLE_PROTO_LOOKUP_PORT_F_WIDTH 4 +#define TUPLE_PROTO_LOOKUP_PORT_F_MASK 0x0F +#define TUPLE_PROTO_LOOKUP_PORT_OFFSET 0 + +/* DEBUG TRACE */ + +// #define DEBUG_TRACE_ENABLE + +#if defined(RUNNER_A) && defined(RUNNER_MAIN) +#define GLBREG R5 +#define BASEADDR h.7a +#define MASKINST insert GLBREG R1 d.25 d.2 +#elif defined(RUNNER_A) && defined(RUNNER_PICO) +#define GLBREG R6 +#define BASEADDR h.7c +#define MASKINST insert GLBREG R0 d.25 d.1 +#elif defined(RUNNER_B) && defined(RUNNER_MAIN) +#define GLBREG R6 +#define BASEADDR h.ea +#define MASKINST insert GLBREG R1 d.25 d.2 +#elif defined(RUNNER_B) && defined(RUNNER_PICO) +#define GLBREG R6 +#define BASEADDR h.ec +#define MASKINST insert GLBREG R0 d.25 d.1 +#endif + +#if !defined(DEBUG_TRACE_ENABLE) + +#define DEBUG_ID_TRACE24( id, trace_word ) +#define DEBUG_ID_TRACE24_C( id, trace_word) +#define DEBUG_ID_TRACE24_CS( id, trace_word) +#define DEBUG_TRACE32( trace_word ) +#define DEBUG_TRACE32_C( trace_word ) +#define DEBUG_TRACE32_CS( trace_word ) +#define DEBUG_ID_TRACE16_CS( id, trace_word_macro ) +#define DEBUG_TRACE_C_ON() +#define DEBUG_TRACE_C_OFF() +#define DEBUG_TRACE_C_OFF_PERM() +#define DEBUG_TRACE_C_ON_PERM() +#define DEBUG_TRACE_MEM_C( mem, numbytes ) +#define DEBUG_TRACE_C_TRIG_DELAYED_OFF_PERM() +#define DEBUG_TRACE_C_DO_DELAYED_OFF_PERM() + +#else /* DEBUG_TRACE */ + +#define DEBUG_ID_TRACE24( id, trace_word ) ;\ + alu GLBREG GLBREG OR BASEADDR <<24 ;\ + alu GLBREG GLBREG AND~ h.ff ;\ + alu GLBREG GLBREG OR id ;\ + nop ;\ + stc32 trace_word GLBREG high ;\ + stc8 GLBREG GLBREG high ;\ + alu GLBREG GLBREG + d.4 <<16 ;\ + MASKINST ;\ + nop ;\ + stc32 R1 GLBREG high + +#define DEBUG_TRACE32( trace_word ) ;\ + alu GLBREG GLBREG OR BASEADDR <<24 ;\ + nop ;\ + stc32 trace_word GLBREG high ;\ + alu GLBREG GLBREG + d.4 <<16 ;\ + MASKINST ;\ + nop ;\ + stc32 R1 GLBREG high + + +// tracec_on: +// bit 0 (1): if set, record traces +// bit 1 (2): if set, do not enable bit 0 on TRACE_C_ON +// bit 2 (4): if set, and TRACE_C_DELAYED_OFF_PERM called, set bit 1. + + +#define DEBUG_TRACE_C_ON() DEBUG_TRACE_C_ON_0(__LINE__) +#define DEBUG_TRACE_C_ON_0(line) DEBUG_TRACE_C_ON_1(line) +#define DEBUG_TRACE_C_ON_1(line) \ + ldc32 tracec_on TRACE_C_TABLE_ADDRESS ;\ + nop ;\ + alu R0 tracec_on AND h.6 ;\ + jmp!=0 :debug_trace_c_on_done_##line ds0 ;\ + alu tracec_on tracec_on OR h.1 ;\ + stc32 tracec_on TRACE_C_TABLE_ADDRESS ;\ +:debug_trace_c_on_done_##line + +#define DEBUG_TRACE_C_OFF() \ + ldc32 tracec_on TRACE_C_TABLE_ADDRESS ;\ + nop ;\ + alu tracec_on tracec_on AND~ h.1 ;\ + stc32 tracec_on TRACE_C_TABLE_ADDRESS + +#define DEBUG_TRACE_C_OFF_PERM() \ + mov tracec_on d.2 clear ;\ + stc32 tracec_on TRACE_C_TABLE_ADDRESS + +#define DEBUG_TRACE_C_ON_PERM() \ + mov tracec_on d.1 clear ;\ + stc32 tracec_on TRACE_C_TABLE_ADDRESS + +#define DEBUG_TRACE_C_TRIG_DELAYED_OFF_PERM() \ + ldc32 tracec_on TRACE_C_TABLE_ADDRESS ;\ + nop ;\ + nop ;\ + alu tracec_on tracec_on OR h.4 ;\ + stc32 tracec_on TRACE_C_TABLE_ADDRESS + + +#define DEBUG_TRACE_C_DO_DELAYED_OFF_PERM() DEBUG_TRACE_C_DO_DELAYED_OFF_PERM_0(__LINE__) +#define DEBUG_TRACE_C_DO_DELAYED_OFF_PERM_0(line) DEBUG_TRACE_C_DO_DELAYED_OFF_PERM_1(line) +#define DEBUG_TRACE_C_DO_DELAYED_OFF_PERM_1(line) \ + ldc32 tracec_on TRACE_C_TABLE_ADDRESS ;\ + nop ;\ + alu R0 tracec_on AND h.4 ;\ + jmp=0 :debug_trace_c_do_delayed_off_perm_done_##line ;\ + mov tracec_on h.2 ;\ + stc32 tracec_on TRACE_C_TABLE_ADDRESS ;\ +:debug_trace_c_do_delayed_off_perm_done_##line + + + +#define DEBUG_ID_TRACE24_C( id, trace_word ) DEBUG_ID_TRACE24_C_0( id, trace_word, __LINE__ ) +#define DEBUG_ID_TRACE24_C_0( id, trace_word, line ) DEBUG_ID_TRACE24_C_1( id, trace_word, line ) +#define DEBUG_ID_TRACE24_C_1( id, trace_word, line ) \ + ldc32 tracec_on TRACE_C_TABLE_ADDRESS ;\ + nop ;\ + jmp_clr :debug_id_trace24_c_done_##line tracec_on d.0 ds0;\ + alu GLBREG GLBREG OR BASEADDR <<24 ;\ + alu GLBREG GLBREG AND~ h.ff ;\ + alu GLBREG GLBREG OR id ;\ + nop ;\ + stc32 trace_word GLBREG high ;\ + stc8 GLBREG GLBREG high ;\ + alu GLBREG GLBREG + d.4 <<16 ;\ + MASKINST ;\ + nop ;\ + stc32 R1 GLBREG high ;\ +:debug_id_trace24_c_done_##line + +#define DEBUG_TRACE32_C( trace_word ) DEBUG_TRACE32_C_0( trace_word, __LINE__ ) +#define DEBUG_TRACE32_C_0( trace_word, line ) DEBUG_TRACE32_C_1( trace_word, line ) +#define DEBUG_TRACE32_C_1( trace_word, line ) \ + ldc32 tracec_on TRACE_C_TABLE_ADDRESS ;\ + nop ;\ + jmp_clr :debug_trace32_c_done_##line tracec_on d.0 ds0;\ + stc32 trace_word GLBREG high ;\ + alu GLBREG GLBREG + d.4 <<16 ;\ + MASKINST ;\ + nop ;\ + stc32 R1 GLBREG high; \ +:debug_trace32_c_done_##line + + +#define DEBUG_ID_TRACE24_CS( id, trace_word_macro ) \ + alu GLBREG GLBREG AND~ h.ff; \ + lcall :debug_id_trace24_cs ;\ + alu trace_word trace_word_macro + d.0 ;\ + alu GLBREG GLBREG OR id + +#define DEBUG_ID_TRACE16_CS( id, trace_word_macro ) \ + alu GLBREG GLBREG AND~ h.ff; \ + mov trace_word d.0 clear; \ + lcall :debug_id_trace24_cs ;\ + insert trace_word trace_word_macro d.0 d.16; \ + alu GLBREG GLBREG OR id + + + +#define DEBUG_TRACE32_CS( trace_word_macro ) \ + lcall :debug_trace32_cs ;\ + alu trace_word trace_word_macro + d.0 ;\ + nop + +#define DEBUG_TRACE_MEM_C( trace_ptr, size ) DEBUG_TRACE_MEM_C_0( trace_ptr, size, __LINE__ ) +#define DEBUG_TRACE_MEM_C_0( trace_ptr, size, line ) DEBUG_TRACE_MEM_C_1( trace_ptr, size, line ) +#define DEBUG_TRACE_MEM_C_1( trace_ptr, size, line ) \ + alu trace_ptr_local trace_ptr + d.0 ;\ + ldc32 tracec_on TRACE_C_TABLE_ADDRESS ;\ + nop ;\ + jmp_clr :debug_id_mem_c_done_##line tracec_on d.0 ds0 ;\ + alu trace_end_ptr trace_ptr_local + size ;\ + nop ;\ +:debug_id_mem_c_loop_##line ;\ + ld32 trace_word trace_ptr_local ;\ + alu GLBREG GLBREG OR BASEADDR <<24 ;\ + alu trace_ptr_local trace_ptr_local + d.4 ;\ + stc32 trace_word GLBREG high ;\ + alu GLBREG GLBREG + d.4 <<16 ;\ + MASKINST ;\ + nop ;\ + jmp_cmp :debug_id_mem_c_loop_##line trace_end_ptr > trace_ptr_local ;\ + nop ;\ + nop ;\ + stc32 R1 GLBREG high ;\ +:debug_id_mem_c_done_##line + + +#endif /* DEBUG_TRACE */ + + +// Alternate use of debug trace memory space: For fixed location counters and values instead of circular trace data +//#define DEBUG_TRACE_FIXED_COUNT_ENABLE + +#if !defined(DEBUG_TRACE_FIXED_COUNT_ENABLE) + +// Don't define them at all for the negative path unless debugging. That way the compile will notify us of any left over. +// #define DEBUG_TRACE_COUNT(c) +// #define DEBUG_TRACE_WRITE(c,v) + +#else + +#if defined(DEBUG_TRACE_ENABLE) +#error DEBUG_TRACE_ENABLE and DEBUG_TRACE_FIXED_COUNT_ENABLE are mutually exclusive, but both are enabled. +#endif + +#define DEBUG_TRACE_COUNT(c) \ +DECLARE_FULL_REG_VAR ( temp_addr ) ;\ +DECLARE_FULL_REG_VAR ( temp_word ) ;\ + mov temp_addr ((BASEADDR << 8) | (c << 2)) <<16 ;\ + nop ;\ + nop ;\ + ldc32 temp_word temp_addr high ;\ + alu temp_word temp_word + d.1 ;\ + stc32 temp_word temp_addr high + +#define DEBUG_TRACE_COUNT_REGOFS(c, r, b) \ +DECLARE_FULL_REG_VAR ( temp_addr ) ;\ +DECLARE_FULL_REG_VAR ( temp_word ) ;\ + mov temp_addr ((BASEADDR << 8) | (c << 2)) <<16 ;\ + insert temp_addr r d.18 b ;\ + nop ;\ + nop ;\ + ldc32 temp_word temp_addr high ;\ + alu temp_word temp_word + d.1 ;\ + stc32 temp_word temp_addr high + +#define DEBUG_TRACE_WRITE(c,v) \ +DECLARE_FULL_REG_VAR ( temp_addr ) ;\ + mov temp_addr ((BASEADDR << 8) | (c << 2)) <<16 ;\ + nop ;\ + nop ;\ + stc32 v temp_addr high + +#endif /* DEBUG_TRACE_FIXED_COUNT_ENABLE */ + + +/* FW TRACE */ + +/* Define the following to enable FWTRACE capability in both the Runner FW and driver. */ +//#define RUNNER_FWTRACE + +#ifdef RUNNER_FWTRACE +/* With the FW Trace tool, we'll run the Runner timer counter with a 20ns interval. Otherwise, it is set to 1us. */ +#define TIMER_PERIOD_NS 20 +#define TIMER_PERIOD_REG_VALUE 15 /* 20ns */ +/* 10ns will cause some timer limit register values to exceed 16-bits. The developer must change them themselves to 0xFFFF to avoid more + frequent timer wakeups than expected */ +//#define TIMER_PERIOD_NS 10 +//#define TIMER_PERIOD_REG_VALUE 8 /* 10ns */ + +/* These are the Runner FW Trace Options: + - RUNNER_FWTRACE_32BIT - Define to have 32-bit timestamps. If not defined, FWTRACE will use 16-bit timestamps. 16-bit is better + for a busy Runner snapshot as you won't wrap + - FWTRACE_READ_TASKID - If defined, the FW Trace macro will read the thread ID from an I/O register. If not defined, it will write the + event ID passed into the macro (built using EVID). + - FWTRACE_ENABLE_TRACE_ALL - If defined, all FWTRACE_EVENTs through the Runner code are active. This is useful for tracing everything + with standard events (Entry, Exit, DMA start, DMA return). With or without these events activated, developers can also use + FWTRACE_EVENT_DEV for user defined events. +*/ +//#define RUNNER_FWTRACE_32BIT //- must match RDD define +#define FWTRACE_READ_TASKID +#define FWTRACE_ENABLE_TRACE_ALL +#define FWTRACE_FUNCTION + +/* FW Tracing */ +#define RUNNER_FWTRACE_ENABLE_BIT 15 +#define RUNNER_FWTRACE_ENABLE_MASK_SWAPPED 0x00000080 +#define RUNNER_FWTRACE_ENABLE_MASK_SWAPPED_CLUSTER 0x00800080 + +/* Event Types */ +#define FW_TRACE_THREAD_ENTRY 1 +#define FW_TRACE_THREAD_EXIT 2 +#define FW_TRACE_DMA_RD 3 +#define FW_TRACE_DMA_RD_RET 4 +#define FW_TRACE_DMA_WR 5 +#define FW_TRACE_DMA_WR_RET 6 +// Additional exit events to distinguish code points +#define FW_TRACE_THREAD_EXIT_2 7 +#define FW_TRACE_THREAD_EXIT_3 8 +#define FW_TRACE_THREAD_EXIT_4 9 +#define FW_TRACE_THREAD_EXIT_5 10 +#define FW_TRACE_THREAD_EXIT_6 11 +#define FW_TRACE_THREAD_EXIT_7 12 +#define FW_TRACE_THREAD_EXIT_8 13 +#define FW_TRACE_DMA_RD_2 14 +#define FW_TRACE_DMA_RD_RET_2 15 + + + +#ifdef FWTRACE_READ_TASKID +#define EVID(ThreadNum, EventNum) (EventNum) +#else +#ifdef RUNNER_FWTRACE_32BIT +#define EVID(ThreadNum, EventNum) (EventNum) +#else +#define EVID(ThreadNum, EventNum) ((ThreadNum << 8) | (EventNum)) +#endif +#endif + +#ifdef RUNNER_A +#ifdef RUNNER_MAIN + #define RUNNER_FWTRACE_CURR_OFFSET RUNNER_FWTRACE_MAINA_CURR_OFFSET_ADDRESS + #define RUNNER_FWTRACE_BASE RUNNER_FWTRACE_MAINA_BASE_ADDRESS + #define RUNNER_FWTRACE_PARAM RUNNER_FWTRACE_MAINA_PARAM_ADDRESS +#endif /* RUNNER_MAIN*/ +#ifdef RUNNER_PICO + #define RUNNER_FWTRACE_CURR_OFFSET (RUNNER_FWTRACE_MAINA_CURR_OFFSET_ADDRESS+2) + #define RUNNER_FWTRACE_BASE RUNNER_FWTRACE_PICOA_BASE_ADDRESS + #define RUNNER_FWTRACE_PARAM RUNNER_FWTRACE_PICOA_PARAM_ADDRESS +#endif /* RUNNER_PICO*/ +#else /* RUNNER_B */ +#ifdef RUNNER_MAIN + #define RUNNER_FWTRACE_CURR_OFFSET RUNNER_FWTRACE_MAINB_CURR_OFFSET_ADDRESS + #define RUNNER_FWTRACE_BASE RUNNER_FWTRACE_MAINB_BASE_ADDRESS + #define RUNNER_FWTRACE_PARAM RUNNER_FWTRACE_MAINB_PARAM_ADDRESS +#endif /* RUNNER_MAIN*/ +#ifdef RUNNER_PICO + #define RUNNER_FWTRACE_CURR_OFFSET (RUNNER_FWTRACE_MAINB_CURR_OFFSET_ADDRESS+2) + #define RUNNER_FWTRACE_BASE RUNNER_FWTRACE_PICOB_BASE_ADDRESS + #define RUNNER_FWTRACE_PARAM RUNNER_FWTRACE_PICOB_PARAM_ADDRESS +#endif /* RUNNER_PICO*/ +#endif /* IF RUNNER_A */ + + +#ifdef FWTRACE_ENABLE_TRACE_ALL +#define FWTRACE_EVENT( task_id, eventId ) FWTRACE_EVENT_A( task_id, eventId, __LINE__ ) +#else +#define FWTRACE_EVENT( task_id, eventId ) +#endif +#define FWTRACE_EVENT_DEV( task_id, eventId ) FWTRACE_EVENT_A( task_id, eventId, __LINE__ ) + +#define FWTRACE_EVENT_A( task_id, eventId, line ) FWTRACE_EVENT_B( task_id, eventId, line ) + +/* Currently these macros are hardcoded for 128 entries for 32-bit and 256 for 16-bit timestamps. */ +#ifndef FWTRACE_FUNCTION + +#ifdef RUNNER_FWTRACE_32BIT +#ifdef FWTRACE_READ_TASKID +#define FWTRACE_EVENT_B( task_id, eventId, line ) ;\ + ldc16 rnr_fwtrace_tmp RUNNER_FWTRACE_CURR_OFFSET ;\ + /* Move in base address for trace */;\ + mov rnr_fwtrace_addr RUNNER_FWTRACE_BASE clear ;\ + /* Check if enabled */ ;\ + jmp_clr :task_id##line##_fwtrace_done rnr_fwtrace_tmp RUNNER_FWTRACE_ENABLE_BIT ds1 ;\ + /* Get current offset address base for task. Curr pointer is 8 bits in rnr_fwtrace_tmp */ ;\ + insert rnr_fwtrace_addr rnr_fwtrace_tmp d.3 d.6 ;\ + /* Check if one-shot full */ ;\ + jmp_set :task_id##line##_fwtrace_done rnr_fwtrace_tmp d.7 ;\ + /* Increment pointer now as we require two nops before load */ ;\ + alu rnr_fwtrace_tmp rnr_fwtrace_tmp + d.1 ;\ + stc16 rnr_fwtrace_tmp RUNNER_FWTRACE_CURR_OFFSET;\ + /* Load reg with taskId, which is bits 20:16 in the periphstatus reg. Reuse enable register */ ;\ + ldio32 rnr_fwtrace_tmp PERIPHERALS_STATUS_REGISTER_IO_ADDRESS ;\ + shift rnr_fwtrace_tmp asr rnr_fwtrace_tmp d.16 ;\ + /* Move thread to upper 16 bits, insert event ID into lower, then write */ ;\ + insert rnr_fwtrace_tmp rnr_fwtrace_tmp d.16 d.5 ;\ + mov rnr_fwtrace_tmp eventId ;\ + stc32 rnr_fwtrace_tmp rnr_fwtrace_addr ;\ + /* Write time */ ;\ + ldio32 rnr_fwtrace_tmp TIMER_VALUE_IO_ADDRESS ;\ + stc32 rnr_fwtrace_tmp rnr_fwtrace_addr d.4 ;\ +:task_id##line##_fwtrace_done +#else +#define FWTRACE_EVENT_B( task_id, eventId, line ) ;\ + ldc16 rnr_fwtrace_tmp RUNNER_FWTRACE_CURR_OFFSET ;\ + /* Move in base address for trace */;\ + mov rnr_fwtrace_addr RUNNER_FWTRACE_BASE clear ;\ + /* Check if enabled */ ;\ + jmp_clr :task_id##line##_fwtrace_done rnr_fwtrace_tmp RUNNER_FWTRACE_ENABLE_BIT ds1 ;\ + /* Get current offset address base for task. Curr pointer is 8 bits in rnr_fwtrace_tmp */ ;\ + insert rnr_fwtrace_addr rnr_fwtrace_tmp d.3 d.6 ;\ + /* Check if one-shot full */ ;\ + jmp_set :task_id##line##_fwtrace_done rnr_fwtrace_tmp d.7 ;\ + /* Increment pointer now as we require two nops before load */ ;\ + alu rnr_fwtrace_tmp rnr_fwtrace_tmp + d.1 ;\ + stc16 rnr_fwtrace_tmp RUNNER_FWTRACE_CURR_OFFSET;\ + mov rnr_fwtrace_tmp task_id <<16;\ + mov rnr_fwtrace_tmp eventId ;\ + stc32 rnr_fwtrace_tmp rnr_fwtrace_addr ;\ + /* Write time */ ;\ + ldio32 rnr_fwtrace_tmp TIMER_VALUE_IO_ADDRESS ;\ + stc32 rnr_fwtrace_tmp rnr_fwtrace_addr d.4 ;\ +:task_id##line##_fwtrace_done +#endif // Read Task Id +#else // 16 bit +#ifdef FWTRACE_READ_TASKID +#define FWTRACE_EVENT_B( task_id, eventId, line ) ;\ + ldc16 rnr_fwtrace_tmp RUNNER_FWTRACE_CURR_OFFSET ;\ + /* Move in base address for trace */;\ + mov rnr_fwtrace_addr RUNNER_FWTRACE_BASE clear ;\ + /* Check if enabled. Bit 15 of 16-bit register */ ;\ + jmp_clr :task_id##line##_fwtrace_done rnr_fwtrace_tmp RUNNER_FWTRACE_ENABLE_BIT ds1 ;\ + /* Get current offset address base for task. Curr pointer is 8 bits in rnr_fwtrace_tmp */ ;\ + insert rnr_fwtrace_addr rnr_fwtrace_tmp d.2 d.8 ;\ + /* Check if one-shot full */ ;\ + jmp_set :task_id##line##_fwtrace_done rnr_fwtrace_tmp d.8 ;\ + /* Increment pointer now as we require two nops before load */ ;\ + alu rnr_fwtrace_tmp rnr_fwtrace_tmp + d.1 ;\ + stc16 rnr_fwtrace_tmp RUNNER_FWTRACE_CURR_OFFSET;\ + /* Load reg with taskId, which is bits 20:16 in the periphstatus reg. */ ;\ + /* Create 16 bit event ID + thread ID for write */ ;\ + ldio16 rnr_fwtrace_tmp (PERIPHERALS_STATUS_REGISTER_IO_ADDRESS+2) ;\ + mov rnr_fwtrace_tmp eventId <<16;\ + insert rnr_fwtrace_tmp rnr_fwtrace_tmp d.24 d.5 ;\ + shift rnr_fwtrace_tmp asr rnr_fwtrace_tmp d.16 ;\ + /* Write event+thread value */ ;\ + stc16 rnr_fwtrace_tmp rnr_fwtrace_addr ;\ + alu rnr_fwtrace_addr rnr_fwtrace_addr + d.2 ;\ + /* Load time and then write to next 16 bit address */ ;\ + ldio16 rnr_fwtrace_tmp TIMER_VALUE_IO_ADDRESS ;\ + /* Write time value */ ;\ + stc16 rnr_fwtrace_tmp rnr_fwtrace_addr ;\ +:task_id##line##_fwtrace_done +#else +#define FWTRACE_EVENT_B( task_id, eventId, line ) ;\ + ldc16 rnr_fwtrace_tmp RUNNER_FWTRACE_CURR_OFFSET ;\ + /* Move in base address for trace */;\ + mov rnr_fwtrace_addr RUNNER_FWTRACE_BASE clear ;\ + /* Check if enabled */ ;\ + jmp_clr :task_id##line##_fwtrace_done rnr_fwtrace_tmp RUNNER_FWTRACE_ENABLE_BIT ds1 ;\ + /* Get current offset address base for task. Curr pointer is 8 bits in rnr_fwtrace_tmp */ ;\ + insert rnr_fwtrace_addr rnr_fwtrace_tmp d.2 d.8 ;\ + /* Check if one-shot full */ ;\ + jmp_set :task_id##line##_fwtrace_done rnr_fwtrace_tmp d.8 ;\ + /* Increment pointer now as we require two nops before load */ ;\ + alu rnr_fwtrace_tmp rnr_fwtrace_tmp + d.1 ;\ + stc16 rnr_fwtrace_tmp RUNNER_FWTRACE_CURR_OFFSET;\ + /* Load time and then merge in event into upper 16 bits */ ;\ + ldio32 rnr_fwtrace_tmp TIMER_VALUE_IO_ADDRESS ;\ + mov rnr_fwtrace_tmp eventId <<16 ;\ + stc32 rnr_fwtrace_tmp rnr_fwtrace_addr ;\ +:task_id##line##_fwtrace_done +#endif +#endif // 16 bit version + +#else +#define FWTRACE_EVENT_B( task_id, eventId, line ) ;\ + lcall :fw_trace_event_b ;\ + mov R6 eventId ;\ + st16 R6 RUNNER_FWTRACE_PARAM;\ +:task_id##line##_fwtrace_done ; +#endif + +#else /* RUNNER_FWTRACE not enabled */ +#define FWTRACE_EVENT( task_id, eventId ) +#define FWTRACE_EVENT_DEV( task_id, eventId ) + +#endif /* RUNNER_FWTRACE */ + +#endif + diff --git a/arch/arm/mach-bcmbca/rdp/rdd_runner_defs_auto.h b/arch/arm/mach-bcmbca/rdp/rdd_runner_defs_auto.h new file mode 100755 index 0000000000..93ebcabad5 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_runner_defs_auto.h @@ -0,0 +1,8240 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + + + +/* This is an automated file. Do not edit its contents. */ + + +#ifndef _RDD_RUNNER_DEFS_AUTO_H +#define _RDD_RUNNER_DEFS_AUTO_H + +#ifdef DSL_63138 +/* PRIVATE_A */ +#define INGRESS_HANDLER_BUFFER_ADDRESS 0x0000 +#define INGRESS_HANDLER_BUFFER_BYTE_SIZE 0x2000 +#define INGRESS_HANDLER_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_INGRESS_HANDLER_BUFFER_SIZE 32 +#define RDD_INGRESS_HANDLER_BUFFER_LOG2_SIZE 5 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS 0x2000 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_BYTE_SIZE 0x4000 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_LOG2_BYTE_SIZE 0x000e +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE 2048 +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_LOG2_SIZE 11 +#define DS_CONNECTION_CONTEXT_BUFFER_ADDRESS 0x6000 +#define DS_CONNECTION_CONTEXT_BUFFER_BYTE_SIZE 0x0400 +#define DS_CONNECTION_CONTEXT_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_LOG2_SIZE 3 +#define DS_GSO_HEADER_BUFFER_ADDRESS 0x6400 +#define DS_GSO_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_GSO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_GSO_PSEUDO_HEADER_BUFFER_ADDRESS 0x6480 +#define DS_GSO_PSEUDO_HEADER_BUFFER_BYTE_SIZE 0x0028 +#define DS_GSO_PSEUDO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x64a8 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0008 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 2 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_ADDRESS 0x64b0 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_BYTE_SIZE 0x0010 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_SIZE 8 +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_LOG2_SIZE 3 +#define DS_CPU_REASON_TO_METER_TABLE_ADDRESS 0x64c0 +#define DS_CPU_REASON_TO_METER_TABLE_BYTE_SIZE 0x0040 +#define DS_CPU_REASON_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE 64 +#define RDD_DS_CPU_REASON_TO_METER_TABLE_LOG2_SIZE 6 +#define DS_GSO_CHUNK_BUFFER_ADDRESS 0x6500 +#define DS_GSO_CHUNK_BUFFER_BYTE_SIZE 0x0080 +#define DS_GSO_CHUNK_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_CPU_RX_METER_TABLE_ADDRESS 0x6580 +#define DS_CPU_RX_METER_TABLE_BYTE_SIZE 0x0080 +#define DS_CPU_RX_METER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_CPU_RX_METER_TABLE_SIZE 16 +#define RDD_DS_CPU_RX_METER_TABLE_LOG2_SIZE 4 +#define DS_POLICER_TABLE_ADDRESS 0x6600 +#define DS_POLICER_TABLE_BYTE_SIZE 0x0100 +#define DS_POLICER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_POLICER_TABLE_SIZE 16 +#define RDD_DS_POLICER_TABLE_LOG2_SIZE 4 +#define IPSEC_DS_BUFFER_POOL_ADDRESS 0x6700 +#define IPSEC_DS_BUFFER_POOL_BYTE_SIZE 0x0160 +#define IPSEC_DS_BUFFER_POOL_LOG2_BYTE_SIZE 0x0009 +#define RDD_IPSEC_DS_BUFFER_POOL_SIZE 2 +#define RDD_IPSEC_DS_BUFFER_POOL_LOG2_SIZE 1 +#define IPSEC_DS_SA_DESC_TABLE_ADDRESS 0x6860 +#define IPSEC_DS_SA_DESC_TABLE_BYTE_SIZE 0x0500 +#define IPSEC_DS_SA_DESC_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_IPSEC_DS_SA_DESC_TABLE_SIZE 16 +#define RDD_IPSEC_DS_SA_DESC_TABLE_LOG2_SIZE 4 +#define IPSEC_US_SA_DESC_TABLE_ADDRESS 0x6d60 +#define IPSEC_US_SA_DESC_TABLE_BYTE_SIZE 0x0500 +#define IPSEC_US_SA_DESC_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_IPSEC_US_SA_DESC_TABLE_SIZE 16 +#define RDD_IPSEC_US_SA_DESC_TABLE_LOG2_SIZE 4 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_ADDRESS 0x7260 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_BYTE_SIZE 0x0300 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_LOG2_SIZE 5 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x7560 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define DS_SPDSVC_CONTEXT_TABLE_ADDRESS 0x7580 +#define DS_SPDSVC_CONTEXT_TABLE_BYTE_SIZE 0x0050 +#define DS_SPDSVC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x75d0 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0010 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 3 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS 0x75e0 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_BYTE_SIZE 0x0100 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_LOG2_SIZE 5 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x76e0 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define WLAN_MCAST_CONTROL_TABLE_ADDRESS 0x7700 +#define WLAN_MCAST_CONTROL_TABLE_BYTE_SIZE 0x0094 +#define WLAN_MCAST_CONTROL_TABLE_LOG2_BYTE_SIZE 0x0008 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_ADDRESS 0x7794 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_BYTE_SIZE 0x0004 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DS_TOTAL_PPS_RATE_LIMITER_ADDRESS 0x7798 +#define DS_TOTAL_PPS_RATE_LIMITER_BYTE_SIZE 0x0008 +#define DS_TOTAL_PPS_RATE_LIMITER_LOG2_BYTE_SIZE 0x0003 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS 0x77a0 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_BYTE_SIZE 0x0020 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE 1 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE2 4 +#define RATE_LIMITER_REMAINDER_TABLE_ADDRESS 0x77c0 +#define RATE_LIMITER_REMAINDER_TABLE_BYTE_SIZE 0x0040 +#define RATE_LIMITER_REMAINDER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE 32 +#define RDD_RATE_LIMITER_REMAINDER_TABLE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS 0x7800 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_SIZE 8 +#define FC_MCAST_CONNECTION2_TABLE_ADDRESS 0x8000 +#define FC_MCAST_CONNECTION2_TABLE_BYTE_SIZE 0x0800 +#define FC_MCAST_CONNECTION2_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_FC_MCAST_CONNECTION2_TABLE_SIZE 128 +#define RDD_FC_MCAST_CONNECTION2_TABLE_LOG2_SIZE 7 +#define ETH_TX_QUEUES_POINTERS_TABLE_ADDRESS 0x8800 +#define ETH_TX_QUEUES_POINTERS_TABLE_BYTE_SIZE 0x0120 +#define ETH_TX_QUEUES_POINTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE 72 +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_LOG2_SIZE 7 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_ADDRESS 0x8920 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_BYTE_SIZE 0x0020 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS 0x8940 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define SBPM_REPLY_ADDRESS 0x8980 +#define SBPM_REPLY_BYTE_SIZE 0x0080 +#define SBPM_REPLY_LOG2_BYTE_SIZE 0x0007 +#define ETH_TX_QUEUES_TABLE_ADDRESS 0x8a00 +#define ETH_TX_QUEUES_TABLE_BYTE_SIZE 0x0480 +#define ETH_TX_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_ETH_TX_QUEUES_TABLE_SIZE 72 +#define RDD_ETH_TX_QUEUES_TABLE_LOG2_SIZE 7 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS 0x8e80 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_BYTE_SIZE 0x0080 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE 1 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE2 4 +#define DS_FORWARDING_MATRIX_TABLE_ADDRESS 0x8f00 +#define DS_FORWARDING_MATRIX_TABLE_BYTE_SIZE 0x0090 +#define DS_FORWARDING_MATRIX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_DS_FORWARDING_MATRIX_TABLE_LOG2_SIZE 4 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 16 +#define RDD_DS_FORWARDING_MATRIX_TABLE_LOG2_SIZE2 4 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0x8f90 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0010 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS 0x8fa0 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_BYTE_SIZE 0x0020 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_SIZE 2 +#define DS_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0x8fc0 +#define DS_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0040 +#define DS_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_L2_UCAST_CONNECTION_BUFFER_SIZE 4 +#define RDD_DS_L2_UCAST_CONNECTION_BUFFER_LOG2_SIZE 2 +#define ETH_TX_MAC_TABLE_ADDRESS 0x9000 +#define ETH_TX_MAC_TABLE_BYTE_SIZE 0x0140 +#define ETH_TX_MAC_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_ETH_TX_MAC_TABLE_SIZE 10 +#define RDD_ETH_TX_MAC_TABLE_LOG2_SIZE 4 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_ADDRESS 0x9140 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_BYTE_SIZE 0x0030 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINA_PARAM_ADDRESS 0x9170 +#define RUNNER_FWTRACE_MAINA_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINA_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_LOG2_SIZE 1 +#define INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS 0x9180 +#define INGRESS_HANDLER_SKB_DATA_POINTER_BYTE_SIZE 0x0080 +#define INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_SIZE 5 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0x9200 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9240 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9280 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_ADDRESS 0x92c0 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0030 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE 3 +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_LOG2_SIZE 2 +#define RUNNER_FWTRACE_PICOA_PARAM_ADDRESS 0x92f0 +#define RUNNER_FWTRACE_PICOA_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_PICOA_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_LOG2_SIZE 1 +#define DS_RATE_LIMITER_TABLE_ADDRESS 0x9300 +#define DS_RATE_LIMITER_TABLE_BYTE_SIZE 0x0100 +#define DS_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_RATE_LIMITER_TABLE_SIZE 32 +#define RDD_DS_RATE_LIMITER_TABLE_LOG2_SIZE 5 +#define DS_WAN_FLOW_TABLE_ADDRESS 0x9400 +#define DS_WAN_FLOW_TABLE_BYTE_SIZE 0x0200 +#define DS_WAN_FLOW_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_WAN_FLOW_TABLE_SIZE 256 +#define RDD_DS_WAN_FLOW_TABLE_LOG2_SIZE 8 +#define DS_WAN_UDP_FILTER_TABLE_ADDRESS 0x9600 +#define DS_WAN_UDP_FILTER_TABLE_BYTE_SIZE 0x0200 +#define DS_WAN_UDP_FILTER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_WAN_UDP_FILTER_TABLE_SIZE 32 +#define RDD_DS_WAN_UDP_FILTER_TABLE_LOG2_SIZE 5 +#define FC_MCAST_PORT_HEADER_BUFFER_ADDRESS 0x9800 +#define FC_MCAST_PORT_HEADER_BUFFER_BYTE_SIZE 0x0200 +#define FC_MCAST_PORT_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE 8 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_LOG2_SIZE 3 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 64 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_LOG2_SIZE2 6 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_ADDRESS 0x9a00 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_BYTE_SIZE 0x0200 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_LOG2_SIZE 3 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_ADDRESS 0x9c00 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_BYTE_SIZE 0x0200 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_LOG2_BYTE_SIZE 0x0009 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE 64 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_LOG2_SIZE 6 +#define ETH0_RX_DESCRIPTORS_ADDRESS 0x9e00 +#define ETH0_RX_DESCRIPTORS_BYTE_SIZE 0x0100 +#define ETH0_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH0_RX_DESCRIPTORS_SIZE 32 +#define RDD_ETH0_RX_DESCRIPTORS_LOG2_SIZE 5 +#define DS_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x9f00 +#define DS_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x9f80 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS 0xa000 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_BYTE_SIZE 0x0200 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE 64 +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_CPU_TX_BBH_DESCRIPTORS_ADDRESS 0xa200 +#define DS_CPU_TX_BBH_DESCRIPTORS_BYTE_SIZE 0x0100 +#define DS_CPU_TX_BBH_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_LOG2_SIZE 5 +#define DS_PROFILING_BUFFER_PICO_RUNNER_ADDRESS 0xa300 +#define DS_PROFILING_BUFFER_PICO_RUNNER_BYTE_SIZE 0x0100 +#define DS_PROFILING_BUFFER_PICO_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define GSO_PICO_QUEUE_ADDRESS 0xa400 +#define GSO_PICO_QUEUE_BYTE_SIZE 0x0200 +#define GSO_PICO_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_GSO_PICO_QUEUE_SIZE 64 +#define RDD_GSO_PICO_QUEUE_LOG2_SIZE 6 +#define DHD_TX_POST_PD_INGRESS_QUEUE_ADDRESS 0xa600 +#define DHD_TX_POST_PD_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define DHD_TX_POST_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_SIZE 32 +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS 0xa700 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_BYTE_SIZE 0x0080 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_SIZE 4 +#define DS_CONNECTION_CACHE_BUFFER_ADDRESS 0xa780 +#define DS_CONNECTION_CACHE_BUFFER_BYTE_SIZE 0x0080 +#define DS_CONNECTION_CACHE_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_CONNECTION_CACHE_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CACHE_BUFFER_LOG2_SIZE 3 +#define IPSEC_DS_QUEUE_ADDRESS 0xa800 +#define IPSEC_DS_QUEUE_BYTE_SIZE 0x0200 +#define IPSEC_DS_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_IPSEC_DS_QUEUE_SIZE 64 +#define RDD_IPSEC_DS_QUEUE_LOG2_SIZE 6 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS 0xaa00 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x00c0 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE 4 +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_ADDRESS 0xaac0 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_BYTE_SIZE 0x0040 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0xab00 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 16 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 4 +#define ETH_TX_LOCAL_REGISTERS_ADDRESS 0xab80 +#define ETH_TX_LOCAL_REGISTERS_BYTE_SIZE 0x0048 +#define ETH_TX_LOCAL_REGISTERS_LOG2_BYTE_SIZE 0x0007 +#define RDD_ETH_TX_LOCAL_REGISTERS_SIZE 9 +#define RDD_ETH_TX_LOCAL_REGISTERS_LOG2_SIZE 4 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS 0xabc8 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_BYTE_SIZE 0x0008 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_SIZE 1 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS 0xabd0 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_BYTE_SIZE 0x0010 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_BYTE_SIZE 0x0004 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 8 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_SIZE 3 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xabe0 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define CPU_TX_FAST_QUEUE_ADDRESS 0xac00 +#define CPU_TX_FAST_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_FAST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_FAST_QUEUE_SIZE 16 +#define RDD_CPU_TX_FAST_QUEUE_LOG2_SIZE 4 +#define DS_QUEUE_PROFILE_TABLE_ADDRESS 0xac80 +#define DS_QUEUE_PROFILE_TABLE_BYTE_SIZE 0x0080 +#define DS_QUEUE_PROFILE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_QUEUE_PROFILE_TABLE_SIZE 8 +#define RDD_DS_QUEUE_PROFILE_TABLE_LOG2_SIZE 3 +#define CPU_TX_PICO_QUEUE_ADDRESS 0xad00 +#define CPU_TX_PICO_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_PICO_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_PICO_QUEUE_SIZE 16 +#define RDD_CPU_TX_PICO_QUEUE_LOG2_SIZE 4 +#define DS_SQ_ENQUEUE_QUEUE_ADDRESS 0xad80 +#define DS_SQ_ENQUEUE_QUEUE_BYTE_SIZE 0x0040 +#define DS_SQ_ENQUEUE_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_SQ_ENQUEUE_QUEUE_SIZE 64 +#define RDD_DS_SQ_ENQUEUE_QUEUE_LOG2_SIZE 6 +#define MULTICAST_HEADER_BUFFER_ADDRESS 0xadc0 +#define MULTICAST_HEADER_BUFFER_BYTE_SIZE 0x0040 +#define MULTICAST_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_ADDRESS 0xae00 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_BYTE_SIZE 0x0080 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE 16 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_LOG2_SIZE 4 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS 0xae80 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xaec0 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define DS_NULL_BUFFER_ADDRESS 0xaee0 +#define DS_NULL_BUFFER_BYTE_SIZE 0x0018 +#define DS_NULL_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_NULL_BUFFER_SIZE 3 +#define RDD_DS_NULL_BUFFER_LOG2_SIZE 2 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS 0xaef8 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_BYTE_SIZE 0x0008 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0003 +#define CPU_RX_PD_INGRESS_QUEUE_ADDRESS 0xaf00 +#define CPU_RX_PD_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define CPU_RX_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE 16 +#define RDD_CPU_RX_PD_INGRESS_QUEUE_LOG2_SIZE 4 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_ADDRESS 0xaf80 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE 64 +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS 0xafc0 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_ADDRESS 0xb000 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE 16 +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_LOG2_SIZE 4 +#define DS_ROUTER_INGRESS_QUEUE_ADDRESS 0xb080 +#define DS_ROUTER_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_ROUTER_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_ROUTER_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_ROUTER_INGRESS_QUEUE_LOG2_SIZE 6 +#define DHD_COMPLETE_RING_BUFFER_ADDRESS 0xb0c0 +#define DHD_COMPLETE_RING_BUFFER_BYTE_SIZE 0x0018 +#define DHD_COMPLETE_RING_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DHD_COMPLETE_RING_BUFFER_SIZE 3 +#define RDD_DHD_COMPLETE_RING_BUFFER_LOG2_SIZE 2 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS 0xb0d8 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_BYTE_SIZE 0x0008 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_SIZE 3 +#define DS_CPU_PARAMETERS_BLOCK_ADDRESS 0xb0e0 +#define DS_CPU_PARAMETERS_BLOCK_BYTE_SIZE 0x0014 +#define DS_CPU_PARAMETERS_BLOCK_LOG2_BYTE_SIZE 0x0005 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_ADDRESS 0xb0f4 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_ADDRESS 0xb0f8 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_BYTE_SIZE 0x0006 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xb0fe +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_TX_POST_HEADER_SCRATCH_ADDRESS 0xb100 +#define DS_DHD_TX_POST_HEADER_SCRATCH_BYTE_SIZE 0x0080 +#define DS_DHD_TX_POST_HEADER_SCRATCH_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE 4 +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_LOG2_SIZE 2 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS 0xb180 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_BYTE_SIZE 0x00a0 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_LOG2_BYTE_SIZE 0x0008 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE 5 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_LOG2_SIZE 3 +#define FC_MCAST_CONNECTION_TABLE_PLUS_ADDRESS 0xb220 +#define FC_MCAST_CONNECTION_TABLE_PLUS_BYTE_SIZE 0x0014 +#define FC_MCAST_CONNECTION_TABLE_PLUS_LOG2_BYTE_SIZE 0x0005 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xb234 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_BUFFERS_BASE_ADDRESS 0xb238 +#define DS_BPM_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_CONNECTION_TABLE_CONFIG_ADDRESS 0xb23c +#define DS_CONNECTION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONNECTION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_DATA_POINTER_DUMMY_TARGET_ADDRESS 0xb240 +#define DS_DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0014 +#define DS_DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE 5 +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_LOG2_SIZE 3 +#define DS_CONTEXT_TABLE_CONFIG_ADDRESS 0xb254 +#define DS_CONTEXT_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONTEXT_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS 0xb258 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_BYTE_SIZE 0x0004 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_SIZE 2 +#define DS_PARALLEL_PROCESSING_SLAVE_LOCK_ADDRESS 0xb25c +#define DS_PARALLEL_PROCESSING_SLAVE_LOCK_BYTE_SIZE 0x0004 +#define DS_PARALLEL_PROCESSING_SLAVE_LOCK_LOG2_BYTE_SIZE 0x0002 +#define SERVICE_QUEUES_WLAN_SCRATCH_ADDRESS 0xb260 +#define SERVICE_QUEUES_WLAN_SCRATCH_BYTE_SIZE 0x0014 +#define SERVICE_QUEUES_WLAN_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define DS_CPU_TX_FLUSH_PAUSE_REQUEST_ADDRESS 0xb274 +#define DS_CPU_TX_FLUSH_PAUSE_REQUEST_BYTE_SIZE 0x0004 +#define DS_CPU_TX_FLUSH_PAUSE_REQUEST_LOG2_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS 0xb278 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_BYTE_SIZE 0x0004 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_SIZE 2 +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_ADDRESS 0xb27c +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_BYTE_SIZE 0x0004 +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_LOG2_BYTE_SIZE 0x0002 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS 0xb280 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xb2c0 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0050 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE 10 +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_LOG2_SIZE 4 +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS 0xb310 +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_BYTE_SIZE 0x000a +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0004 +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xb31a +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_ADDRESS 0xb31c +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_DEBUG_BUFFER_ADDRESS 0xb320 +#define DS_DEBUG_BUFFER_BYTE_SIZE 0x0080 +#define DS_DEBUG_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_DEBUG_BUFFER_SIZE 32 +#define RDD_DS_DEBUG_BUFFER_LOG2_SIZE 5 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb3a0 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS 0xb3b0 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_BYTE_SIZE 0x0010 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_BYTE_SIZE 0x0004 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 8 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_SIZE 3 +#define DS_DHD_FLOW_RING_DROP_COUNTER_ADDRESS 0xb3c0 +#define DS_DHD_FLOW_RING_DROP_COUNTER_BYTE_SIZE 0x0014 +#define DS_DHD_FLOW_RING_DROP_COUNTER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_LOG2_SIZE 3 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xb3d4 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS 0xb3d8 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_BYTE_SIZE 0x0008 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_SIZE 3 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb3e0 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define HASH_BUFFER_ADDRESS 0xb3f0 +#define HASH_BUFFER_BYTE_SIZE 0x0010 +#define HASH_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define GPON_RX_DIRECT_DESCRIPTORS_ADDRESS 0xb400 +#define GPON_RX_DIRECT_DESCRIPTORS_BYTE_SIZE 0x0100 +#define GPON_RX_DIRECT_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE 32 +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_LOG2_SIZE 5 +#define DS_GSO_CONTEXT_TABLE_ADDRESS 0xb500 +#define DS_GSO_CONTEXT_TABLE_BYTE_SIZE 0x0084 +#define DS_GSO_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0008 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xb584 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_FW_MAC_ADDRS_ADDRESS 0xb588 +#define DS_FW_MAC_ADDRS_BYTE_SIZE 0x0080 +#define DS_FW_MAC_ADDRS_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_FW_MAC_ADDRS_SIZE 16 +#define RDD_DS_FW_MAC_ADDRS_LOG2_SIZE 4 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_ADDRESS 0xb608 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_BYTE_SIZE 0x0008 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_LOG2_BYTE_SIZE 0x0003 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS 0xb610 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_BYTE_SIZE 0x0010 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_SIZE 3 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS 0xb620 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_BYTE_SIZE 0x0010 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define ETH_TX_SCRATCH_ADDRESS 0xb630 +#define ETH_TX_SCRATCH_BYTE_SIZE 0x0010 +#define ETH_TX_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define RDD_ETH_TX_SCRATCH_SIZE 16 +#define RDD_ETH_TX_SCRATCH_LOG2_SIZE 4 +#define DS_SYSTEM_CONFIGURATION_ADDRESS 0xb640 +#define DS_SYSTEM_CONFIGURATION_BYTE_SIZE 0x0024 +#define DS_SYSTEM_CONFIGURATION_LOG2_BYTE_SIZE 0x0006 +#define SPDSVC_HOST_BUF_PTR_ADDRESS 0xb664 +#define SPDSVC_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define SPDSVC_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define GSO_TX_DHD_L2_BUFFER_ADDRESS 0xb668 +#define GSO_TX_DHD_L2_BUFFER_BYTE_SIZE 0x0016 +#define GSO_TX_DHD_L2_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_GSO_TX_DHD_L2_BUFFER_SIZE 22 +#define RDD_GSO_TX_DHD_L2_BUFFER_LOG2_SIZE 5 +#define IPTV_COUNTERS_BUFFER_ADDRESS 0xb67e +#define IPTV_COUNTERS_BUFFER_BYTE_SIZE 0x0002 +#define IPTV_COUNTERS_BUFFER_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_TX_POST_INGRESS_QUEUE_ADDRESS 0xb680 +#define DS_DHD_TX_POST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_DHD_TX_POST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_LOG2_SIZE 6 +#define IPSEC_DS_SA_DESC_CAM_TABLE_ADDRESS 0xb6c0 +#define IPSEC_DS_SA_DESC_CAM_TABLE_BYTE_SIZE 0x0020 +#define IPSEC_DS_SA_DESC_CAM_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE 16 +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_LOG2_SIZE 4 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_ADDRESS 0xb6e0 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_BYTE_SIZE 0x0010 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define RUNNER_FLOW_IH_RESPONSE_ADDRESS 0xb6f0 +#define RUNNER_FLOW_IH_RESPONSE_BYTE_SIZE 0x0008 +#define RUNNER_FLOW_IH_RESPONSE_LOG2_BYTE_SIZE 0x0003 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_ADDRESS 0xb6f8 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_BYTE_SIZE 0x0008 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_LOG2_BYTE_SIZE 0x0003 +#define DS_GSO_DESC_TABLE_ADDRESS 0xb700 +#define DS_GSO_DESC_TABLE_BYTE_SIZE 0x0080 +#define DS_GSO_DESC_TABLE_LOG2_BYTE_SIZE 0x0007 +#define WLAN_MCAST_INGRESS_QUEUE_ADDRESS 0xb780 +#define WLAN_MCAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define WLAN_MCAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE 64 +#define RDD_WLAN_MCAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define IPSEC_US_SA_DESC_CAM_TABLE_ADDRESS 0xb7c0 +#define IPSEC_US_SA_DESC_CAM_TABLE_BYTE_SIZE 0x0020 +#define IPSEC_US_SA_DESC_CAM_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE 16 +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_LOG2_SIZE 4 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_ADDRESS 0xb7e0 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_BYTE_SIZE 0x0018 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_LOG2_BYTE_SIZE 0x0005 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_ADDRESS 0xb7f8 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_BYTE_SIZE 0x0005 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_LOG2_BYTE_SIZE 0x0003 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE 5 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_LOG2_SIZE 3 +#define ETH_TX_EMACS_STATUS_ADDRESS 0xb7fd +#define ETH_TX_EMACS_STATUS_BYTE_SIZE 0x0001 +#define ETH_TX_EMACS_STATUS_LOG2_BYTE_SIZE 0x0001 +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xb7fe +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define GPON_RX_NORMAL_DESCRIPTORS_ADDRESS 0xb800 +#define GPON_RX_NORMAL_DESCRIPTORS_BYTE_SIZE 0x0100 +#define GPON_RX_NORMAL_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE 32 +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_LOG2_SIZE 5 +#define CPU_TX_DHD_L2_BUFFER_ADDRESS 0xb900 +#define CPU_TX_DHD_L2_BUFFER_BYTE_SIZE 0x0016 +#define CPU_TX_DHD_L2_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_CPU_TX_DHD_L2_BUFFER_SIZE 22 +#define RDD_CPU_TX_DHD_L2_BUFFER_LOG2_SIZE 5 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_ADDRESS 0xb916 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_BYTE_SIZE 0x0002 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define HASH_BASED_FORWARDING_PORT_TABLE_ADDRESS 0xb918 +#define HASH_BASED_FORWARDING_PORT_TABLE_BYTE_SIZE 0x0004 +#define HASH_BASED_FORWARDING_PORT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE 4 +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_LOG2_SIZE 2 +#define FIREWALL_IPV6_R16_BUFFER_ADDRESS 0xb91c +#define FIREWALL_IPV6_R16_BUFFER_BYTE_SIZE 0x0004 +#define FIREWALL_IPV6_R16_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_ADDRESS 0xb920 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_ADDRESS 0xb930 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_ADDRESS 0xb940 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb950 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_ADDRESS 0xb952 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xb954 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_ADDRESS 0xb956 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_LOG2_BYTE_SIZE 0x0001 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_ADDRESS 0xb958 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_LOG2_BYTE_SIZE 0x0001 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_ADDRESS 0xb95a +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS 0xb95c +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_ANY_SRC_PORT_FLOW_COUNTER_ADDRESS 0xb95e +#define DS_ANY_SRC_PORT_FLOW_COUNTER_BYTE_SIZE 0x0002 +#define DS_ANY_SRC_PORT_FLOW_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define GSO_DESC_PTR_ADDRESS 0xb960 +#define GSO_DESC_PTR_BYTE_SIZE 0x0004 +#define GSO_DESC_PTR_LOG2_BYTE_SIZE 0x0002 +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_ADDRESS 0xb964 +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_BYTE_SIZE 0x0004 +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define GSO_TX_DHD_HOST_BUF_PTR_ADDRESS 0xb968 +#define GSO_TX_DHD_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define GSO_TX_DHD_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE 4 +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_LOG2_SIZE 2 +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_ADDRESS 0xb96c +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_BYTE_SIZE 0x0004 +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_LOG2_BYTE_SIZE 0x0002 +#define CPU_TX_DHD_HOST_BUF_PTR_ADDRESS 0xb970 +#define CPU_TX_DHD_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define CPU_TX_DHD_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE 4 +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_LOG2_SIZE 2 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_ADDRESS 0xb974 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_BYTE_SIZE 0x0002 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_LOG2_BYTE_SIZE 0x0001 +#define DS_MEMLIB_SEMAPHORE_ADDRESS 0xb976 +#define DS_MEMLIB_SEMAPHORE_BYTE_SIZE 0x0002 +#define DS_MEMLIB_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define WAN_PHYSICAL_PORT_ADDRESS 0xb978 +#define WAN_PHYSICAL_PORT_BYTE_SIZE 0x0002 +#define WAN_PHYSICAL_PORT_LOG2_BYTE_SIZE 0x0001 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb97a +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_RUNNER_CONGESTION_STATE_ADDRESS 0xb97c +#define DS_RUNNER_CONGESTION_STATE_BYTE_SIZE 0x0002 +#define DS_RUNNER_CONGESTION_STATE_LOG2_BYTE_SIZE 0x0001 +#define GSO_PICO_QUEUE_PTR_ADDRESS 0xb97e +#define GSO_PICO_QUEUE_PTR_BYTE_SIZE 0x0002 +#define GSO_PICO_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_ADDRESS 0xb980 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_BYTE_SIZE 0x0002 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_ADDRESS 0xb982 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_BYTE_SIZE 0x0002 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_ADDRESS 0xb984 +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_BYTE_SIZE 0x0002 +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_ADDRESS 0xb986 +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_BYTE_SIZE 0x0002 +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_DDR_SA_DESC_SIZE_ADDRESS 0xb988 +#define IPSEC_DS_DDR_SA_DESC_SIZE_BYTE_SIZE 0x0002 +#define IPSEC_DS_DDR_SA_DESC_SIZE_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_QUEUE_PTR_ADDRESS 0xb98a +#define IPSEC_DS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define IPSEC_DS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_IP_LENGTH_ADDRESS 0xb98c +#define IPSEC_DS_IP_LENGTH_BYTE_SIZE 0x0002 +#define IPSEC_DS_IP_LENGTH_LOG2_BYTE_SIZE 0x0001 +#define PRIVATE_A_DUMMY_STORE_ADDRESS 0xb98e +#define PRIVATE_A_DUMMY_STORE_BYTE_SIZE 0x0001 +#define PRIVATE_A_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_ADDRESS 0xb98f +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_BYTE_SIZE 0x0001 +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_LOG2_BYTE_SIZE 0x0001 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xb990 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xb991 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define CPU_TX_DS_PICO_SEMAPHORE_ADDRESS 0xb992 +#define CPU_TX_DS_PICO_SEMAPHORE_BYTE_SIZE 0x0001 +#define CPU_TX_DS_PICO_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define DS_FC_GLOBAL_CFG_ADDRESS 0xb993 +#define DS_FC_GLOBAL_CFG_BYTE_SIZE 0x0001 +#define DS_FC_GLOBAL_CFG_LOG2_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_ADDRESS 0xb994 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_ADDRESS 0xb995 +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_PACKET_BUFFER_SIZE_ASR_8_ADDRESS 0xb996 +#define DS_PACKET_BUFFER_SIZE_ASR_8_BYTE_SIZE 0x0001 +#define DS_PACKET_BUFFER_SIZE_ASR_8_LOG2_BYTE_SIZE 0x0001 +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb997 +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb998 +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_ADDRESS 0xb999 +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_BYTE_SIZE 0x0001 +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS 0xb99a +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_ADDRESS 0xb99b +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_LOG2_BYTE_SIZE 0x0001 +#define DS_IH_CONGESTION_THRESHOLD_ADDRESS 0xb99c +#define DS_IH_CONGESTION_THRESHOLD_BYTE_SIZE 0x0001 +#define DS_IH_CONGESTION_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define DS_FW_MAC_ADDRS_COUNT_ADDRESS 0xb99d +#define DS_FW_MAC_ADDRS_COUNT_BYTE_SIZE 0x0001 +#define DS_FW_MAC_ADDRS_COUNT_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_DMA_SYNCHRONIZATION_ADDRESS 0xb99e +#define DS_DHD_DMA_SYNCHRONIZATION_BYTE_SIZE 0x0001 +#define DS_DHD_DMA_SYNCHRONIZATION_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_SEMAPHORE_ADDRESS 0xb99f +#define DHD_TX_POST_CPU_SEMAPHORE_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define RING_CACHE_DHD_TXPOST_MUTEX_ADDRESS 0xb9a0 +#define RING_CACHE_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define RING_CACHE_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define COMMON_DHD_TXPOST_MUTEX_ADDRESS 0xb9a1 +#define COMMON_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define COMMON_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define TXCPL_INT_DHD_TXPOST_MUTEX_ADDRESS 0xb9a2 +#define TXCPL_INT_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define TXCPL_INT_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_ADDRESS 0xb9a3 +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_BYTE_SIZE 0x0001 +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_US_SA_DESC_NEXT_REPLACE_ADDRESS 0xb9a4 +#define IPSEC_US_SA_DESC_NEXT_REPLACE_BYTE_SIZE 0x0001 +#define IPSEC_US_SA_DESC_NEXT_REPLACE_LOG2_BYTE_SIZE 0x0001 +/* PRIVATE_B */ +#define US_INGRESS_HANDLER_BUFFER_ADDRESS 0x0000 +#define US_INGRESS_HANDLER_BUFFER_BYTE_SIZE 0x2000 +#define US_INGRESS_HANDLER_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_US_INGRESS_HANDLER_BUFFER_SIZE 32 +#define RDD_US_INGRESS_HANDLER_BUFFER_LOG2_SIZE 5 +#define US_CSO_CHUNK_BUFFER_ADDRESS 0x2000 +#define US_CSO_CHUNK_BUFFER_BYTE_SIZE 0x0080 +#define US_CSO_CHUNK_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define US_CSO_PSEUDO_HEADER_BUFFER_ADDRESS 0x2080 +#define US_CSO_PSEUDO_HEADER_BUFFER_BYTE_SIZE 0x0028 +#define US_CSO_PSEUDO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x20a8 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0008 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 2 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_ADDRESS 0x20b0 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_BYTE_SIZE 0x0010 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_SIZE 8 +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_LOG2_SIZE 3 +#define US_CPU_REASON_TO_METER_TABLE_ADDRESS 0x20c0 +#define US_CPU_REASON_TO_METER_TABLE_BYTE_SIZE 0x0040 +#define US_CPU_REASON_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_REASON_TO_METER_TABLE_SIZE 64 +#define RDD_US_CPU_REASON_TO_METER_TABLE_LOG2_SIZE 6 +#define US_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS 0x2100 +#define US_MAIN_PROFILING_BUFFER_RUNNER_BYTE_SIZE 0x0100 +#define US_MAIN_PROFILING_BUFFER_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_LOG2_SIZE 5 +#define US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS 0x2200 +#define US_FREE_PACKET_DESCRIPTORS_POOL_BYTE_SIZE 0x6000 +#define US_FREE_PACKET_DESCRIPTORS_POOL_LOG2_BYTE_SIZE 0x000f +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE 3072 +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_LOG2_SIZE 12 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS 0x8200 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_BYTE_SIZE 0x0180 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE 3 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE2 4 +#define US_QUEUE_PROFILE_TABLE_ADDRESS 0x8380 +#define US_QUEUE_PROFILE_TABLE_BYTE_SIZE 0x0080 +#define US_QUEUE_PROFILE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_QUEUE_PROFILE_TABLE_SIZE 8 +#define RDD_US_QUEUE_PROFILE_TABLE_LOG2_SIZE 3 +#define WAN_CHANNELS_8_39_TABLE_ADDRESS 0x8400 +#define WAN_CHANNELS_8_39_TABLE_BYTE_SIZE 0x0400 +#define WAN_CHANNELS_8_39_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WAN_CHANNELS_8_39_TABLE_SIZE 32 +#define RDD_WAN_CHANNELS_8_39_TABLE_LOG2_SIZE 5 +#define US_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x8800 +#define US_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0180 +#define US_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE 3 +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_LOG2_SIZE 2 +#define US_SBPM_REPLY_ADDRESS 0x8980 +#define US_SBPM_REPLY_BYTE_SIZE 0x0080 +#define US_SBPM_REPLY_LOG2_BYTE_SIZE 0x0007 +#define US_POLICER_TABLE_ADDRESS 0x8a00 +#define US_POLICER_TABLE_BYTE_SIZE 0x0100 +#define US_POLICER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_POLICER_TABLE_SIZE 16 +#define RDD_US_POLICER_TABLE_LOG2_SIZE 4 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_ADDRESS 0x8b00 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_BYTE_SIZE 0x0100 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE 2 +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_LOG2_SIZE 1 +#define US_WAN_FLOW_TABLE_ADDRESS 0x8c00 +#define US_WAN_FLOW_TABLE_BYTE_SIZE 0x0400 +#define US_WAN_FLOW_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_US_WAN_FLOW_TABLE_SIZE 256 +#define RDD_US_WAN_FLOW_TABLE_LOG2_SIZE 8 +#define US_CPU_TX_BBH_DESCRIPTORS_ADDRESS 0x9000 +#define US_CPU_TX_BBH_DESCRIPTORS_BYTE_SIZE 0x0100 +#define US_CPU_TX_BBH_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_LOG2_SIZE 5 +#define US_FORWARDING_MATRIX_TABLE_ADDRESS 0x9100 +#define US_FORWARDING_MATRIX_TABLE_BYTE_SIZE 0x0090 +#define US_FORWARDING_MATRIX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_US_FORWARDING_MATRIX_TABLE_LOG2_SIZE 4 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 16 +#define RDD_US_FORWARDING_MATRIX_TABLE_LOG2_SIZE2 4 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x9190 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0010 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 3 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x91a0 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define DSL_PTM_BOND_TX_HDR_TABLE_ADDRESS 0x91c0 +#define DSL_PTM_BOND_TX_HDR_TABLE_BYTE_SIZE 0x0040 +#define DSL_PTM_BOND_TX_HDR_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DSL_PTM_BOND_TX_HDR_TABLE_SIZE 32 +#define RDD_DSL_PTM_BOND_TX_HDR_TABLE_LOG2_SIZE 5 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_ADDRESS 0x9200 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_BYTE_SIZE 0x0040 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_SIZE 3 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_SIZE2 3 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9240 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9280 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS 0x92c0 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define US_RATE_LIMITER_TABLE_ADDRESS 0x9300 +#define US_RATE_LIMITER_TABLE_BYTE_SIZE 0x0080 +#define US_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_RATE_LIMITER_TABLE_SIZE 16 +#define RDD_US_RATE_LIMITER_TABLE_LOG2_SIZE 4 +#define US_CPU_RX_METER_TABLE_ADDRESS 0x9380 +#define US_CPU_RX_METER_TABLE_BYTE_SIZE 0x0080 +#define US_CPU_RX_METER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_RX_METER_TABLE_SIZE 16 +#define RDD_US_CPU_RX_METER_TABLE_LOG2_SIZE 4 +#define US_CONNECTION_CONTEXT_BUFFER_ADDRESS 0x9400 +#define US_CONNECTION_CONTEXT_BUFFER_BYTE_SIZE 0x0400 +#define US_CONNECTION_CONTEXT_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE 8 +#define RDD_US_CONNECTION_CONTEXT_BUFFER_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS 0x9800 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_SIZE 8 +#define WAN_CHANNELS_0_7_TABLE_ADDRESS 0xa000 +#define WAN_CHANNELS_0_7_TABLE_BYTE_SIZE 0x02c0 +#define WAN_CHANNELS_0_7_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WAN_CHANNELS_0_7_TABLE_SIZE 8 +#define RDD_WAN_CHANNELS_0_7_TABLE_LOG2_SIZE 3 +#define US_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0xa2c0 +#define US_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0040 +#define US_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_L2_UCAST_CONNECTION_BUFFER_SIZE 4 +#define RDD_US_L2_UCAST_CONNECTION_BUFFER_LOG2_SIZE 2 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS 0xa300 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_BYTE_SIZE 0x0080 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_SIZE 5 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0xa380 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define US_PROFILING_BUFFER_PICO_RUNNER_ADDRESS 0xa400 +#define US_PROFILING_BUFFER_PICO_RUNNER_BYTE_SIZE 0x0100 +#define US_PROFILING_BUFFER_PICO_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS 0xa500 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_BYTE_SIZE 0x0080 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_SIZE 4 +#define US_CONNECTION_CACHE_BUFFER_ADDRESS 0xa580 +#define US_CONNECTION_CACHE_BUFFER_BYTE_SIZE 0x0080 +#define US_CONNECTION_CACHE_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CONNECTION_CACHE_BUFFER_SIZE 8 +#define RDD_US_CONNECTION_CACHE_BUFFER_LOG2_SIZE 3 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS 0xa600 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_BYTE_SIZE 0x0060 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE 3 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE2 4 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0xa660 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_ADDRESS 0xa680 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_BYTE_SIZE 0x0060 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define US_FC_L2_UCAST_TUPLE_BUFFER_ADDRESS 0xa6e0 +#define US_FC_L2_UCAST_TUPLE_BUFFER_BYTE_SIZE 0x0020 +#define US_FC_L2_UCAST_TUPLE_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define DHD_RX_POST_FLOW_RING_BUFFER_ADDRESS 0xa700 +#define DHD_RX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x0060 +#define DHD_RX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS 0xa760 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_BYTE_SIZE 0x0020 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_SIZE 2 +#define US_INGRESS_RATE_LIMITER_TABLE_ADDRESS 0xa780 +#define US_INGRESS_RATE_LIMITER_TABLE_BYTE_SIZE 0x0050 +#define US_INGRESS_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE 5 +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_LOG2_SIZE 3 +#define DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_ADDRESS 0xa7d0 +#define DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_BYTE_SIZE 0x0010 +#define DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_SIZE 8 +#define RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_LOG2_SIZE 3 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xa7e0 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define US_SPDSVC_CONTEXT_TABLE_ADDRESS 0xa800 +#define US_SPDSVC_CONTEXT_TABLE_BYTE_SIZE 0x0050 +#define US_SPDSVC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0xa850 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0010 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xa860 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define US_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS 0xa880 +#define US_CPU_RX_PICO_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_CPU_RX_PICO_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_ADDRESS 0xa8c0 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_BYTE_SIZE 0x0040 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define US_ROUTER_INGRESS_QUEUE_ADDRESS 0xa900 +#define US_ROUTER_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_ROUTER_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_ROUTER_INGRESS_QUEUE_SIZE 64 +#define RDD_US_ROUTER_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DHD_TX_POST_HEADER_SCRATCH_ADDRESS 0xa940 +#define US_DHD_TX_POST_HEADER_SCRATCH_BYTE_SIZE 0x0020 +#define US_DHD_TX_POST_HEADER_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS 0xa960 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_BYTE_SIZE 0x0018 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_SIZE 3 +#define US_TOTAL_PPS_RATE_LIMITER_ADDRESS 0xa978 +#define US_TOTAL_PPS_RATE_LIMITER_BYTE_SIZE 0x0008 +#define US_TOTAL_PPS_RATE_LIMITER_LOG2_BYTE_SIZE 0x0003 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xa980 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0001 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define PRIVATE_B_DUMMY_STORE_ADDRESS 0xa981 +#define PRIVATE_B_DUMMY_STORE_BYTE_SIZE 0x0001 +#define PRIVATE_B_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xa982 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_ADDRESS 0xa984 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_BYTE_SIZE 0x0004 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_LOG2_BYTE_SIZE 0x0002 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS 0xa988 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_BYTE_SIZE 0x0001 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xa989 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xa98a +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_ADDRESS 0xa98c +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xa990 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0028 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0006 +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE 40 +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_LOG2_SIZE 6 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS 0xa9b8 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define US_ONE_BUFFER_ADDRESS 0xa9f8 +#define US_ONE_BUFFER_BYTE_SIZE 0x0008 +#define US_ONE_BUFFER_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS 0xaa00 +#define US_CPU_RX_FAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_CPU_RX_FAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DEBUG_BUFFER_ADDRESS 0xaa40 +#define US_DEBUG_BUFFER_BYTE_SIZE 0x0080 +#define US_DEBUG_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_DEBUG_BUFFER_SIZE 32 +#define RDD_US_DEBUG_BUFFER_LOG2_SIZE 5 +#define US_FW_MAC_ADDRS_ADDRESS 0xaac0 +#define US_FW_MAC_ADDRS_BYTE_SIZE 0x0080 +#define US_FW_MAC_ADDRS_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_FW_MAC_ADDRS_SIZE 16 +#define RDD_US_FW_MAC_ADDRS_LOG2_SIZE 4 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS 0xab40 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_BYTE_SIZE 0x0018 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE 3 +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_SIZE 2 +#define US_NULL_BUFFER_ADDRESS 0xab58 +#define US_NULL_BUFFER_BYTE_SIZE 0x0008 +#define US_NULL_BUFFER_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_PARAMETERS_BLOCK_ADDRESS 0xab60 +#define US_CPU_PARAMETERS_BLOCK_BYTE_SIZE 0x0014 +#define US_CPU_PARAMETERS_BLOCK_LOG2_BYTE_SIZE 0x0005 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xab74 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS 0xab78 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_BYTE_SIZE 0x0008 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_SIZE 3 +#define US_DHD_TX_POST_INGRESS_QUEUE_ADDRESS 0xab80 +#define US_DHD_TX_POST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_DHD_TX_POST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS 0xabc0 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x0030 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RUNNER_FWTRACE_MAINB_PARAM_ADDRESS 0xabf0 +#define RUNNER_FWTRACE_MAINB_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINB_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_LOG2_SIZE 1 +#define US_CPU_TX_FAST_QUEUE_ADDRESS 0xac00 +#define US_CPU_TX_FAST_QUEUE_BYTE_SIZE 0x0080 +#define US_CPU_TX_FAST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_TX_FAST_QUEUE_SIZE 16 +#define RDD_US_CPU_TX_FAST_QUEUE_LOG2_SIZE 4 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_ADDRESS 0xac80 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_BYTE_SIZE 0x0060 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE 48 +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_LOG2_SIZE 6 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xace0 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define RUNNER_FWTRACE_PICOB_PARAM_ADDRESS 0xacf0 +#define RUNNER_FWTRACE_PICOB_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_PICOB_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_LOG2_SIZE 1 +#define US_CPU_TX_PICO_QUEUE_ADDRESS 0xad00 +#define US_CPU_TX_PICO_QUEUE_BYTE_SIZE 0x0080 +#define US_CPU_TX_PICO_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_TX_PICO_QUEUE_SIZE 16 +#define RDD_US_CPU_TX_PICO_QUEUE_LOG2_SIZE 4 +#define US_CSO_CONTEXT_TABLE_ADDRESS 0xad80 +#define US_CSO_CONTEXT_TABLE_BYTE_SIZE 0x0054 +#define US_CSO_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define US_BPM_DDR_BUFFERS_BASE_ADDRESS 0xadd4 +#define US_BPM_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS 0xadd8 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_BYTE_SIZE 0x0028 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_BYTE_SIZE 0x0006 +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE 40 +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_SIZE 6 +#define US_DHD_FLOW_RING_DROP_COUNTER_ADDRESS 0xae00 +#define US_DHD_FLOW_RING_DROP_COUNTER_BYTE_SIZE 0x0014 +#define US_DHD_FLOW_RING_DROP_COUNTER_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_LOG2_SIZE 3 +#define US_CONNECTION_TABLE_CONFIG_ADDRESS 0xae14 +#define US_CONNECTION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONNECTION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS 0xae18 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_BYTE_SIZE 0x0006 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xae1e +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xae20 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS 0xae30 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_BYTE_SIZE 0x0010 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_SIZE 3 +#define US_SYSTEM_CONFIGURATION_ADDRESS 0xae40 +#define US_SYSTEM_CONFIGURATION_BYTE_SIZE 0x0024 +#define US_SYSTEM_CONFIGURATION_LOG2_BYTE_SIZE 0x0006 +#define US_CONTEXT_TABLE_CONFIG_ADDRESS 0xae64 +#define US_CONTEXT_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONTEXT_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_ADDRESS 0xae68 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_BYTE_SIZE 0x0020 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_LOG2_SIZE 5 +#define DATA_POINTER_DUMMY_TARGET_ADDRESS 0xae88 +#define DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0008 +#define DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0003 +#define RDD_DATA_POINTER_DUMMY_TARGET_SIZE 2 +#define RDD_DATA_POINTER_DUMMY_TARGET_LOG2_SIZE 1 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS 0xae90 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_BYTE_SIZE 0x0010 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define WAN_TX_SCRATCH_ADDRESS 0xaea0 +#define WAN_TX_SCRATCH_BYTE_SIZE 0x0018 +#define WAN_TX_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define RDD_WAN_TX_SCRATCH_SIZE 24 +#define RDD_WAN_TX_SCRATCH_LOG2_SIZE 5 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_ADDRESS 0xaeb8 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_BYTE_SIZE 0x0012 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE 3 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_SIZE 2 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 6 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_SIZE2 3 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_ADDRESS 0xaeca +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_BYTE_SIZE 0x0002 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS 0xaecc +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_BYTE_SIZE 0x0004 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_SIZE 2 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_ADDRESS 0xaed0 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_BYTE_SIZE 0x0009 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE 9 +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xaed9 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_ADDRESS 0xaeda +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_BYTE_SIZE 0x0002 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_SLAVE_LOCK_ADDRESS 0xaedc +#define US_PARALLEL_PROCESSING_SLAVE_LOCK_BYTE_SIZE 0x0004 +#define US_PARALLEL_PROCESSING_SLAVE_LOCK_LOG2_BYTE_SIZE 0x0002 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_ADDRESS 0xaee0 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_BYTE_SIZE 0x0010 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_ADDRESS 0xaef0 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_ADDRESS 0xaf00 +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_BYTE_SIZE 0x000e +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE 14 +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_LOG2_SIZE 4 +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_ADDRESS 0xaf0e +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS 0xaf10 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_BYTE_SIZE 0x0004 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_SIZE 2 +#define US_CPU_TX_FLUSH_PAUSE_REQUEST_ADDRESS 0xaf14 +#define US_CPU_TX_FLUSH_PAUSE_REQUEST_BYTE_SIZE 0x0004 +#define US_CPU_TX_FLUSH_PAUSE_REQUEST_LOG2_BYTE_SIZE 0x0002 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS 0xaf18 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_BYTE_SIZE 0x0008 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_SIZE 3 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_ADDRESS 0xaf20 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_BYTE_SIZE 0x0004 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_LOG2_BYTE_SIZE 0x0002 +#define IH_BUFFER_BBH_POINTER_ADDRESS 0xaf24 +#define IH_BUFFER_BBH_POINTER_BYTE_SIZE 0x0004 +#define IH_BUFFER_BBH_POINTER_LOG2_BYTE_SIZE 0x0002 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_ADDRESS 0xaf28 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define US_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xaf2c +#define US_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define US_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS 0xaf30 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_BYTE_SIZE 0x0004 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_SIZE 4 +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_SIZE 2 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xaf34 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xaf36 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS 0xaf38 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_BYTE_SIZE 0x0002 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_ANY_SRC_PORT_FLOW_COUNTER_ADDRESS 0xaf3a +#define US_ANY_SRC_PORT_FLOW_COUNTER_BYTE_SIZE 0x0002 +#define US_ANY_SRC_PORT_FLOW_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_ADDRESS 0xaf3c +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_BYTE_SIZE 0x0004 +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_ADDRESS 0xaf40 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_BYTE_SIZE 0x0002 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_LOG2_BYTE_SIZE 0x0001 +#define US_MEMLIB_SEMAPHORE_ADDRESS 0xaf42 +#define US_MEMLIB_SEMAPHORE_BYTE_SIZE 0x0002 +#define US_MEMLIB_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_ADDRESS 0xaf44 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_RUNNER_CONGESTION_STATE_ADDRESS 0xaf46 +#define US_RUNNER_CONGESTION_STATE_BYTE_SIZE 0x0002 +#define US_RUNNER_CONGESTION_STATE_LOG2_BYTE_SIZE 0x0001 +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xaf48 +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_ADDRESS 0xaf4a +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_BYTE_SIZE 0x0002 +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_ADDRESS 0xaf4c +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_BYTE_SIZE 0x0002 +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_FC_GLOBAL_CFG_ADDRESS 0xaf4e +#define US_FC_GLOBAL_CFG_BYTE_SIZE 0x0001 +#define US_FC_GLOBAL_CFG_LOG2_BYTE_SIZE 0x0001 +#define ETHWAN2_SWITCH_PORT_ADDRESS 0xaf4f +#define ETHWAN2_SWITCH_PORT_BYTE_SIZE 0x0001 +#define ETHWAN2_SWITCH_PORT_LOG2_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_ADDRESS 0xaf50 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_ADDRESS 0xaf51 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_PACKET_BUFFER_SIZE_ASR_8_ADDRESS 0xaf52 +#define US_PACKET_BUFFER_SIZE_ASR_8_BYTE_SIZE 0x0001 +#define US_PACKET_BUFFER_SIZE_ASR_8_LOG2_BYTE_SIZE 0x0001 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xaf53 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xaf54 +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_ADDRESS 0xaf55 +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_BYTE_SIZE 0x0001 +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DSL_PTM_BOND_TX_CONTROL_ADDRESS 0xaf56 +#define DSL_PTM_BOND_TX_CONTROL_BYTE_SIZE 0x0001 +#define DSL_PTM_BOND_TX_CONTROL_LOG2_BYTE_SIZE 0x0001 +#define DSL_BUFFER_ALIGNMENT_ADDRESS 0xaf57 +#define DSL_BUFFER_ALIGNMENT_BYTE_SIZE 0x0001 +#define DSL_BUFFER_ALIGNMENT_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS 0xaf58 +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_ADDRESS 0xaf59 +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_LOG2_BYTE_SIZE 0x0001 +#define US_IH_CONGESTION_THRESHOLD_ADDRESS 0xaf5a +#define US_IH_CONGESTION_THRESHOLD_BYTE_SIZE 0x0001 +#define US_IH_CONGESTION_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define US_FW_MAC_ADDRS_COUNT_ADDRESS 0xaf5b +#define US_FW_MAC_ADDRS_COUNT_BYTE_SIZE 0x0001 +#define US_FW_MAC_ADDRS_COUNT_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_DMA_SYNCHRONIZATION_ADDRESS 0xaf5c +#define US_DHD_DMA_SYNCHRONIZATION_BYTE_SIZE 0x0001 +#define US_DHD_DMA_SYNCHRONIZATION_LOG2_BYTE_SIZE 0x0001 +#define ETH1_RX_DESCRIPTORS_ADDRESS 0xb200 +#define ETH1_RX_DESCRIPTORS_BYTE_SIZE 0x0100 +#define ETH1_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH1_RX_DESCRIPTORS_SIZE 32 +#define RDD_ETH1_RX_DESCRIPTORS_LOG2_SIZE 5 +#define US_RUNNER_FLOW_IH_RESPONSE_ADDRESS 0xb6f0 +#define US_RUNNER_FLOW_IH_RESPONSE_BYTE_SIZE 0x0008 +#define US_RUNNER_FLOW_IH_RESPONSE_LOG2_BYTE_SIZE 0x0003 +#define BBH_TX_WAN_CHANNEL_INDEX_ADDRESS 0xbcb8 +#define BBH_TX_WAN_CHANNEL_INDEX_BYTE_SIZE 0x0004 +#define BBH_TX_WAN_CHANNEL_INDEX_LOG2_BYTE_SIZE 0x0002 +/* COMMON_A */ +#define SERVICE_QUEUES_DDR_CACHE_FIFO_ADDRESS 0x0000 +#define SERVICE_QUEUES_DDR_CACHE_FIFO_BYTE_SIZE 0x1800 +#define SERVICE_QUEUES_DDR_CACHE_FIFO_LOG2_BYTE_SIZE 0x000d +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE 384 +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_LOG2_SIZE 9 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS 0x1800 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define CPU_RX_RUNNER_A_SCRATCHPAD_ADDRESS 0x2000 +#define CPU_RX_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define CPU_RX_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS 0x2800 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define RUNNER_FWTRACE_MAINA_BASE_ADDRESS 0x3000 +#define RUNNER_FWTRACE_MAINA_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_MAINA_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_MAINA_BASE_LOG2_SIZE 7 +#define RUNNER_FWTRACE_PICOA_BASE_ADDRESS 0x3400 +#define RUNNER_FWTRACE_PICOA_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_PICOA_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_PICOA_BASE_LOG2_SIZE 7 +#define WLAN_MCAST_DHD_STATION_TABLE_ADDRESS 0x3800 +#define WLAN_MCAST_DHD_STATION_TABLE_BYTE_SIZE 0x0280 +#define WLAN_MCAST_DHD_STATION_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_LOG2_SIZE 6 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS 0x3a80 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_BYTE_SIZE 0x0080 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE 2 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE 1 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 64 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE2 6 +#define MAC_TABLE_CAM_ADDRESS 0x3b00 +#define MAC_TABLE_CAM_BYTE_SIZE 0x0100 +#define MAC_TABLE_CAM_LOG2_BYTE_SIZE 0x0008 +#define RDD_MAC_TABLE_CAM_SIZE 32 +#define RDD_MAC_TABLE_CAM_LOG2_SIZE 5 +#define MAC_TABLE_ADDRESS 0x3c00 +#define MAC_TABLE_BYTE_SIZE 0x0200 +#define MAC_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAC_TABLE_SIZE 64 +#define RDD_MAC_TABLE_LOG2_SIZE 6 +#define ETHWAN2_RX_INGRESS_QUEUE_ADDRESS 0x3e00 +#define ETHWAN2_RX_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define ETHWAN2_RX_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE 32 +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_LOG2_SIZE 5 +#define TRACE_C_TABLE_ADDRESS 0x3f00 +#define TRACE_C_TABLE_BYTE_SIZE 0x0020 +#define TRACE_C_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_TRACE_C_TABLE_SIZE 4 +#define RDD_TRACE_C_TABLE_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_ADDRESS 0x3f20 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_LOG2_SIZE 1 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_ADDRESS 0x3f30 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_ADDRESS 0x3f34 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_LOG2_BYTE_SIZE 0x0002 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_ADDRESS 0x3f38 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_BYTE_SIZE 0x0008 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_LOG2_BYTE_SIZE 0x0003 +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE 2 +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_LOG2_SIZE 1 +#define BPM_REPLY_RUNNER_A_ADDRESS 0x3f40 +#define BPM_REPLY_RUNNER_A_BYTE_SIZE 0x0030 +#define BPM_REPLY_RUNNER_A_LOG2_BYTE_SIZE 0x0006 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_ADDRESS 0x3f70 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_BYTE_SIZE 0x0010 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define MAC_CONTEXT_TABLE_ADDRESS 0x3f80 +#define MAC_CONTEXT_TABLE_BYTE_SIZE 0x0080 +#define MAC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_MAC_CONTEXT_TABLE_SIZE 64 +#define RDD_MAC_CONTEXT_TABLE_LOG2_SIZE 6 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS 0x4000 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_BYTE_SIZE 0x0600 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_LOG2_BYTE_SIZE 0x000b +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE 32 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS 0x4600 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_BYTE_SIZE 0x0200 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_SIZE 8 +#define WLAN_MCAST_FWD_TABLE_ADDRESS 0x4800 +#define WLAN_MCAST_FWD_TABLE_BYTE_SIZE 0x0200 +#define WLAN_MCAST_FWD_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_FWD_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_FWD_TABLE_LOG2_SIZE 6 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_ADDRESS 0x4a00 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_BYTE_SIZE 0x0200 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_LOG2_SIZE 5 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_ADDRESS 0x4c00 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_BYTE_SIZE 0x0180 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE 48 +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_LOG2_SIZE 6 +#define CPU_TX_POST_REQUEST_QUEUE_ADDRESS 0x4d80 +#define CPU_TX_POST_REQUEST_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_POST_REQUEST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE 8 +#define RDD_CPU_TX_POST_REQUEST_QUEUE_LOG2_SIZE 3 +#define WLAN_MCAST_SSID_STATS_TABLE_ADDRESS 0x4e00 +#define WLAN_MCAST_SSID_STATS_TABLE_BYTE_SIZE 0x0180 +#define WLAN_MCAST_SSID_STATS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE 48 +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_LOG2_SIZE 6 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_ADDRESS 0x4f80 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_BYTE_SIZE 0x0060 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE 3 +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_LOG2_SIZE 2 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS 0x4fe0 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_BYTE_SIZE 0x0020 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_SIZE 4 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS 0x5000 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_SIZE 7 +#define PM_COUNTERS_ADDRESS 0x5800 +#define PM_COUNTERS_BYTE_SIZE 0x1840 +#define PM_COUNTERS_LOG2_BYTE_SIZE 0x000d +#define RATE_SHAPERS_STATUS_DESCRIPTOR_ADDRESS 0x7040 +#define RATE_SHAPERS_STATUS_DESCRIPTOR_BYTE_SIZE 0x0080 +#define RATE_SHAPERS_STATUS_DESCRIPTOR_LOG2_BYTE_SIZE 0x0007 +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE 128 +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_LOG2_SIZE 7 +#define INTERRUPT_COALESCING_CONFIG_TABLE_ADDRESS 0x70c0 +#define INTERRUPT_COALESCING_CONFIG_TABLE_BYTE_SIZE 0x0040 +#define INTERRUPT_COALESCING_CONFIG_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE 16 +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_LOG2_SIZE 4 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS 0x7100 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_BYTE_SIZE 0x0100 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_LOG2_SIZE 4 +#define DS_CONNECTION_BUFFER_TABLE_ADDRESS 0x7200 +#define DS_CONNECTION_BUFFER_TABLE_BYTE_SIZE 0x0140 +#define DS_CONNECTION_BUFFER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_DS_CONNECTION_BUFFER_TABLE_LOG2_SIZE 3 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 4 +#define RDD_DS_CONNECTION_BUFFER_TABLE_LOG2_SIZE2 2 +#define MAC_CONTEXT_TABLE_CAM_ADDRESS 0x7340 +#define MAC_CONTEXT_TABLE_CAM_BYTE_SIZE 0x0040 +#define MAC_CONTEXT_TABLE_CAM_LOG2_BYTE_SIZE 0x0006 +#define RDD_MAC_CONTEXT_TABLE_CAM_SIZE 32 +#define RDD_MAC_CONTEXT_TABLE_CAM_LOG2_SIZE 5 +#define DHD_DOORBELL_WRITE_VALUES_ADDRESS 0x7380 +#define DHD_DOORBELL_WRITE_VALUES_BYTE_SIZE 0x0040 +#define DHD_DOORBELL_WRITE_VALUES_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_DOORBELL_WRITE_VALUES_SIZE 16 +#define RDD_DHD_DOORBELL_WRITE_VALUES_LOG2_SIZE 4 +#define DS_DHD_BACKUP_INDEX_CACHE_ADDRESS 0x73c0 +#define DS_DHD_BACKUP_INDEX_CACHE_BYTE_SIZE 0x0040 +#define DS_DHD_BACKUP_INDEX_CACHE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE 32 +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_LOG2_SIZE 5 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_ADDRESS 0x7400 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_BYTE_SIZE 0x0100 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_LOG2_SIZE 5 +#define RING_DESCRIPTORS_TABLE_ADDRESS 0x7500 +#define RING_DESCRIPTORS_TABLE_BYTE_SIZE 0x0100 +#define RING_DESCRIPTORS_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_RING_DESCRIPTORS_TABLE_SIZE 16 +#define RDD_RING_DESCRIPTORS_TABLE_LOG2_SIZE 4 +#define MAC_EXTENSION_TABLE_ADDRESS 0x7600 +#define MAC_EXTENSION_TABLE_BYTE_SIZE 0x0040 +#define MAC_EXTENSION_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_MAC_EXTENSION_TABLE_SIZE 64 +#define RDD_MAC_EXTENSION_TABLE_LOG2_SIZE 6 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_ADDRESS 0x7640 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_BYTE_SIZE 0x0020 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE 16 +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_LOG2_SIZE 4 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_ADDRESS 0x7660 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0014 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_ADDRESS 0x7674 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_ADDRESS 0x7678 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_BYTE_SIZE 0x0008 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_LOG2_BYTE_SIZE 0x0003 +#define SERVICE_QUEUES_CFG_ADDRESS 0x7680 +#define SERVICE_QUEUES_CFG_BYTE_SIZE 0x0014 +#define SERVICE_QUEUES_CFG_LOG2_BYTE_SIZE 0x0005 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_ADDRESS 0x7694 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_BYTE_SIZE 0x0004 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_LOG2_BYTE_SIZE 0x0002 +#define MAC_EXTENSION_TABLE_CAM_ADDRESS 0x7698 +#define MAC_EXTENSION_TABLE_CAM_BYTE_SIZE 0x0020 +#define MAC_EXTENSION_TABLE_CAM_LOG2_BYTE_SIZE 0x0005 +#define RDD_MAC_EXTENSION_TABLE_CAM_SIZE 32 +#define RDD_MAC_EXTENSION_TABLE_CAM_LOG2_SIZE 5 +#define DS_CAM_DHD_DMA_SCRATCH_ADDRESS 0x76b8 +#define DS_CAM_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_CAM_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_ENQ_DHD_DMA_SCRATCH_ADDRESS 0x76bc +#define DS_ENQ_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_ENQ_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define PM_COUNTERS_BUFFER_ADDRESS 0x76c0 +#define PM_COUNTERS_BUFFER_BYTE_SIZE 0x0020 +#define PM_COUNTERS_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define TX_CPL_DHD_DMA_SCRATCH_ADDRESS 0x76e0 +#define TX_CPL_DHD_DMA_SCRATCH_BYTE_SIZE 0x000c +#define TX_CPL_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE 3 +#define RDD_TX_CPL_DHD_DMA_SCRATCH_LOG2_SIZE 2 +#define DS_R2D_DHD_DMA_SCRATCH_ADDRESS 0x76ec +#define DS_R2D_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_R2D_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_CPU_DHD_DMA_SCRATCH_ADDRESS 0x76f0 +#define DS_CPU_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_CPU_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define TIMER_7_TIMER_PERIOD_ADDRESS 0x76f4 +#define TIMER_7_TIMER_PERIOD_BYTE_SIZE 0x0002 +#define TIMER_7_TIMER_PERIOD_LOG2_BYTE_SIZE 0x0001 +#define INTERRUPT_COALESCING_TIMER_PERIOD_ADDRESS 0x76f6 +#define INTERRUPT_COALESCING_TIMER_PERIOD_BYTE_SIZE 0x0002 +#define INTERRUPT_COALESCING_TIMER_PERIOD_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_BUFFERS_THRESHOLD_ADDRESS 0x76f8 +#define DHD_TX_POST_BUFFERS_THRESHOLD_BYTE_SIZE 0x0006 +#define DHD_TX_POST_BUFFERS_THRESHOLD_LOG2_BYTE_SIZE 0x0003 +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_SIZE 3 +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_LOG2_SIZE 2 +#define INTERRUPT_COALESCING_TIMER_ARMED_ADDRESS 0x76fe +#define INTERRUPT_COALESCING_TIMER_ARMED_BYTE_SIZE 0x0002 +#define INTERRUPT_COALESCING_TIMER_ARMED_LOG2_BYTE_SIZE 0x0001 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS 0x7700 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_BYTE_SIZE 0x0004 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_SIZE 4 +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_SIZE 2 +#define DHD_TX_POST_BUFFERS_IN_USE_COUNTER_ADDRESS 0x7704 +#define DHD_TX_POST_BUFFERS_IN_USE_COUNTER_BYTE_SIZE 0x0002 +#define DHD_TX_POST_BUFFERS_IN_USE_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define COMMON_A_DUMMY_STORE_ADDRESS 0x7706 +#define COMMON_A_DUMMY_STORE_BYTE_SIZE 0x0001 +#define COMMON_A_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define FC_SERVICE_QUEUE_MODE_ADDRESS 0x7707 +#define FC_SERVICE_QUEUE_MODE_BYTE_SIZE 0x0001 +#define FC_SERVICE_QUEUE_MODE_LOG2_BYTE_SIZE 0x0001 +#define MAIN_A_DEBUG_TRACE_ADDRESS 0x7a00 +#define MAIN_A_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define MAIN_A_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAIN_A_DEBUG_TRACE_SIZE 512 +#define RDD_MAIN_A_DEBUG_TRACE_LOG2_SIZE 9 +#define PICO_A_DEBUG_TRACE_ADDRESS 0x7c00 +#define PICO_A_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define PICO_A_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_PICO_A_DEBUG_TRACE_SIZE 512 +#define RDD_PICO_A_DEBUG_TRACE_LOG2_SIZE 9 +/* COMMON_B */ +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS 0x8000 +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_SIZE 7 +#define WAN_TX_MIRROR_SCRATCHPAD_ADDRESS 0x8800 +#define WAN_TX_MIRROR_SCRATCHPAD_BYTE_SIZE 0x0800 +#define WAN_TX_MIRROR_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_WAN_TX_MIRROR_SCRATCHPAD_SIZE 8 +#define RDD_WAN_TX_MIRROR_SCRATCHPAD_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS 0x9000 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_BYTE_SIZE 0x0200 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_SIZE 8 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0x9200 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 32 +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS 0x9300 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_BYTE_SIZE 0x0100 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_SIZE 5 +#define WAN_TX_SERVICE_QUEUES_TABLE_ADDRESS 0x9400 +#define WAN_TX_SERVICE_QUEUES_TABLE_BYTE_SIZE 0x0800 +#define WAN_TX_SERVICE_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE 64 +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_LOG2_SIZE 6 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS 0x9c00 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_BYTE_SIZE 0x0100 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_SIZE 5 +#define WAN_TX_RUNNER_B_SCRATCHPAD_ADDRESS 0x9d00 +#define WAN_TX_RUNNER_B_SCRATCHPAD_BYTE_SIZE 0x0100 +#define WAN_TX_RUNNER_B_SCRATCHPAD_LOG2_BYTE_SIZE 0x0008 +#define US_CONNECTION_BUFFER_TABLE_ADDRESS 0x9e00 +#define US_CONNECTION_BUFFER_TABLE_BYTE_SIZE 0x0140 +#define US_CONNECTION_BUFFER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_US_CONNECTION_BUFFER_TABLE_LOG2_SIZE 3 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 4 +#define RDD_US_CONNECTION_BUFFER_TABLE_LOG2_SIZE2 2 +#define IPV6_HOST_ADDRESS_CRC_TABLE_ADDRESS 0x9f40 +#define IPV6_HOST_ADDRESS_CRC_TABLE_BYTE_SIZE 0x0040 +#define IPV6_HOST_ADDRESS_CRC_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE 16 +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_LOG2_SIZE 4 +#define DHD_BACKUP_INFO_CACHE_TABLE_ADDRESS 0x9f80 +#define DHD_BACKUP_INFO_CACHE_TABLE_BYTE_SIZE 0x0080 +#define DHD_BACKUP_INFO_CACHE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE 16 +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_LOG2_SIZE 4 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS 0xa000 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_SIZE 8 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS 0xa800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_SIZE 8 +#define WAN_TX_QUEUES_TABLE_ADDRESS 0xb000 +#define WAN_TX_QUEUES_TABLE_BYTE_SIZE 0x1000 +#define WAN_TX_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000c +#define RDD_WAN_TX_QUEUES_TABLE_SIZE 256 +#define RDD_WAN_TX_QUEUES_TABLE_LOG2_SIZE 8 +#define RUNNER_FWTRACE_MAINB_BASE_ADDRESS 0xc000 +#define RUNNER_FWTRACE_MAINB_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_MAINB_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_MAINB_BASE_LOG2_SIZE 7 +#define US_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS 0xc400 +#define US_RING_PACKET_DESCRIPTORS_CACHE_BYTE_SIZE 0x0100 +#define US_RING_PACKET_DESCRIPTORS_CACHE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_LOG2_SIZE 4 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_ADDRESS 0xc500 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_BYTE_SIZE 0x00c0 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE 3 +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_LOG2_SIZE 2 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_ADDRESS 0xc5c0 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_BYTE_SIZE 0x0040 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0006 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_ADDRESS 0xc600 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_BYTE_SIZE 0x0100 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE 16 +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_LOG2_SIZE 4 +#define FC_FLOW_IP_ADDRESSES_TABLE_ADDRESS 0xc700 +#define FC_FLOW_IP_ADDRESSES_TABLE_BYTE_SIZE 0x00c0 +#define FC_FLOW_IP_ADDRESSES_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE 4 +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_ADDRESS 0xc7c0 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_LOG2_SIZE 1 +#define BPM_REPLY_RUNNER_B_ADDRESS 0xc7d0 +#define BPM_REPLY_RUNNER_B_BYTE_SIZE 0x0030 +#define BPM_REPLY_RUNNER_B_LOG2_BYTE_SIZE 0x0006 +#define US_RATE_CONTROLLERS_TABLE_ADDRESS 0xc800 +#define US_RATE_CONTROLLERS_TABLE_BYTE_SIZE 0x1800 +#define US_RATE_CONTROLLERS_TABLE_LOG2_BYTE_SIZE 0x000d +#define RDD_US_RATE_CONTROLLERS_TABLE_SIZE 128 +#define RDD_US_RATE_CONTROLLERS_TABLE_LOG2_SIZE 7 +#define CPU_RX_RUNNER_B_SCRATCHPAD_ADDRESS 0xe000 +#define CPU_RX_RUNNER_B_SCRATCHPAD_BYTE_SIZE 0x0800 +#define CPU_RX_RUNNER_B_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE 8 +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_LOG2_SIZE 3 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS 0xe800 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_BYTE_SIZE 0x0050 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_BYTE_SIZE 0x0007 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 40 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_SIZE 6 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_ADDRESS 0xe850 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_BYTE_SIZE 0x0010 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_LOG2_BYTE_SIZE 0x0004 +#define IPV4_HOST_ADDRESS_TABLE_ADDRESS 0xe860 +#define IPV4_HOST_ADDRESS_TABLE_BYTE_SIZE 0x0020 +#define IPV4_HOST_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPV4_HOST_ADDRESS_TABLE_SIZE 8 +#define RDD_IPV4_HOST_ADDRESS_TABLE_LOG2_SIZE 3 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS 0xe880 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_BYTE_SIZE 0x0050 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_BYTE_SIZE 0x0007 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 40 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_SIZE 6 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS 0xe8d0 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_BYTE_SIZE 0x0080 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE 2 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE 1 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 64 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE2 6 +#define US_DHD_BACKUP_ENTRY_SCRATCH_ADDRESS 0xe950 +#define US_DHD_BACKUP_ENTRY_SCRATCH_BYTE_SIZE 0x0010 +#define US_DHD_BACKUP_ENTRY_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS 0xe960 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_BYTE_SIZE 0x0020 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_SIZE 4 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_ADDRESS 0xe980 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_BYTE_SIZE 0x0080 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_LOG2_BYTE_SIZE 0x0007 +#define MAIN_B_DEBUG_TRACE_ADDRESS 0xea00 +#define MAIN_B_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define MAIN_B_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAIN_B_DEBUG_TRACE_SIZE 512 +#define RDD_MAIN_B_DEBUG_TRACE_LOG2_SIZE 9 +#define PICO_B_DEBUG_TRACE_ADDRESS 0xec00 +#define PICO_B_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define PICO_B_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_PICO_B_DEBUG_TRACE_SIZE 512 +#define RDD_PICO_B_DEBUG_TRACE_LOG2_SIZE 9 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_ADDRESS 0xee00 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_BYTE_SIZE 0x0080 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_LOG2_BYTE_SIZE 0x0007 +#define LAN0_INGRESS_FIFO_ADDRESS 0xee80 +#define LAN0_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN0_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN5_INGRESS_FIFO_ADDRESS 0xeec0 +#define LAN5_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN5_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN1_INGRESS_FIFO_ADDRESS 0xef00 +#define LAN1_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN1_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN6_INGRESS_FIFO_ADDRESS 0xef40 +#define LAN6_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN6_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN2_INGRESS_FIFO_ADDRESS 0xef80 +#define LAN2_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN2_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN7_INGRESS_FIFO_ADDRESS 0xefc0 +#define LAN7_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN7_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define RUNNER_FWTRACE_PICOB_BASE_ADDRESS 0xf000 +#define RUNNER_FWTRACE_PICOB_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_PICOB_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_PICOB_BASE_LOG2_SIZE 7 +#define LAN3_INGRESS_FIFO_ADDRESS 0xf400 +#define LAN3_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN3_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define US_DHD_BACKUP_INDEX_CACHE_ADDRESS 0xf440 +#define US_DHD_BACKUP_INDEX_CACHE_BYTE_SIZE 0x0040 +#define US_DHD_BACKUP_INDEX_CACHE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE 32 +#define RDD_US_DHD_BACKUP_INDEX_CACHE_LOG2_SIZE 5 +#define LAN4_INGRESS_FIFO_ADDRESS 0xf480 +#define LAN4_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN4_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define DHD_DOORBELL_COUNTERS_ADDRESS 0xf4c0 +#define DHD_DOORBELL_COUNTERS_BYTE_SIZE 0x0030 +#define DHD_DOORBELL_COUNTERS_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_DOORBELL_COUNTERS_SIZE 48 +#define RDD_DHD_DOORBELL_COUNTERS_LOG2_SIZE 6 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ADDRESS 0xf4f0 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_BYTE_SIZE 0x0010 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_LOG2_BYTE_SIZE 0x0004 +#define WAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0xf500 +#define WAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define WAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_ADDRESS 0xf540 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0014 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define US_CAM_DHD_DMA_SCRATCH_ADDRESS 0xf554 +#define US_CAM_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_CAM_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_DHD_BACKUP_FLUSH_SCRATCH_ADDRESS 0xf558 +#define US_DHD_BACKUP_FLUSH_SCRATCH_BYTE_SIZE 0x0008 +#define US_DHD_BACKUP_FLUSH_SCRATCH_LOG2_BYTE_SIZE 0x0003 +#define US_ENQ_DHD_DMA_SCRATCH_ADDRESS 0xf560 +#define US_ENQ_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_ENQ_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_R2D_DHD_DMA_SCRATCH_ADDRESS 0xf564 +#define US_R2D_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_R2D_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_ADDRESS 0xf568 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_BYTE_SIZE 0x0004 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE 4 +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_LOG2_SIZE 2 +#define COMMON_B_DUMMY_STORE_ADDRESS 0xf56c +#define COMMON_B_DUMMY_STORE_BYTE_SIZE 0x0001 +#define COMMON_B_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_ADDRESS 0xf56d +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_BYTE_SIZE 0x0001 +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_LOG2_BYTE_SIZE 0x0001 +/* DDR */ +#define BPM_PACKET_BUFFERS_ADDRESS 0x0000 +#define BPM_PACKET_BUFFERS_BYTE_SIZE 0xf00000 +#define BPM_PACKET_BUFFERS_LOG2_BYTE_SIZE 0x0018 +#define RDD_BPM_PACKET_BUFFERS_SIZE 7680 +#define RDD_BPM_PACKET_BUFFERS_LOG2_SIZE 13 +#define DS_CONNECTION_TABLE_ADDRESS 0x0000 +#define DS_CONNECTION_TABLE_BYTE_SIZE 0x80000 +#define DS_CONNECTION_TABLE_LOG2_BYTE_SIZE 0x0013 +#define RDD_DS_CONNECTION_TABLE_SIZE 32768 +#define RDD_DS_CONNECTION_TABLE_LOG2_SIZE 15 +#define US_CONNECTION_TABLE_ADDRESS 0x80000 +#define US_CONNECTION_TABLE_BYTE_SIZE 0x80000 +#define US_CONNECTION_TABLE_LOG2_BYTE_SIZE 0x0013 +#define RDD_US_CONNECTION_TABLE_SIZE 32768 +#define RDD_US_CONNECTION_TABLE_LOG2_SIZE 15 +#define CONTEXT_TABLE_ADDRESS 0x100000 +#define CONTEXT_TABLE_BYTE_SIZE 0x214200 +#define CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0016 +#define RDD_CONTEXT_TABLE_SIZE 16512 +#define RDD_CONTEXT_TABLE_LOG2_SIZE 15 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_ADDRESS 0x5d1500 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_BYTE_SIZE 0x00a0 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE 8 +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_LOG2_SIZE 3 +#define DHD_RX_POST_DDR_BUFFER_ADDRESS 0x5c1100 +#define DHD_RX_POST_DDR_BUFFER_BYTE_SIZE 0x8000 +#define DHD_RX_POST_DDR_BUFFER_LOG2_BYTE_SIZE 0x000f +#define RDD_DHD_RX_POST_DDR_BUFFER_SIZE 1024 +#define RDD_DHD_RX_POST_DDR_BUFFER_LOG2_SIZE 10 +#define DHD_RX_COMPLETE_DDR_BUFFER_ADDRESS 0x5c9100 +#define DHD_RX_COMPLETE_DDR_BUFFER_BYTE_SIZE 0x8000 +#define DHD_RX_COMPLETE_DDR_BUFFER_LOG2_BYTE_SIZE 0x000f +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE 1024 +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_LOG2_SIZE 10 +#define DHD_TX_POST_DDR_BUFFER_ADDRESS 0x5d15a0 +#define DHD_TX_POST_DDR_BUFFER_BYTE_SIZE 0x1800 +#define DHD_TX_POST_DDR_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE 8 +#define RDD_DHD_TX_POST_DDR_BUFFER_LOG2_SIZE 3 +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 16 +#define RDD_DHD_TX_POST_DDR_BUFFER_LOG2_SIZE2 4 +#define DHD_TX_COMPLETE_DDR_BUFFER_ADDRESS 0x5d2da0 +#define DHD_TX_COMPLETE_DDR_BUFFER_BYTE_SIZE 0x0100 +#define DHD_TX_COMPLETE_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE 16 +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_LOG2_SIZE 4 +#define R2D_WR_ARR_DDR_BUFFER_ADDRESS 0x5d1100 +#define R2D_WR_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define R2D_WR_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_R2D_WR_ARR_DDR_BUFFER_SIZE 128 +#define RDD_R2D_WR_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define D2R_RD_ARR_DDR_BUFFER_ADDRESS 0x5d1200 +#define D2R_RD_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define D2R_RD_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_D2R_RD_ARR_DDR_BUFFER_SIZE 128 +#define RDD_D2R_RD_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define R2D_RD_ARR_DDR_BUFFER_ADDRESS 0x5d1300 +#define R2D_RD_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define R2D_RD_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_R2D_RD_ARR_DDR_BUFFER_SIZE 128 +#define RDD_R2D_RD_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define D2R_WR_ARR_DDR_BUFFER_ADDRESS 0x5d1400 +#define D2R_WR_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define D2R_WR_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_D2R_WR_ARR_DDR_BUFFER_SIZE 128 +#define RDD_D2R_WR_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define DHD_BACKUP_QUEUES_BUFFER_ADDRESS 0x600000 +#define DHD_BACKUP_QUEUES_BUFFER_BYTE_SIZE 0x100000 +#define DHD_BACKUP_QUEUES_BUFFER_LOG2_BYTE_SIZE 0x0014 +#define RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE 524288 +#define RDD_DHD_BACKUP_QUEUES_BUFFER_LOG2_SIZE 19 +#define WLAN_MCAST_DHD_LIST_TABLE_ADDRESS 0x5c0000 +#define WLAN_MCAST_DHD_LIST_TABLE_BYTE_SIZE 0x1000 +#define WLAN_MCAST_DHD_LIST_TABLE_LOG2_BYTE_SIZE 0x000c +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_LOG2_SIZE 6 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_ADDRESS 0x5c1000 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_BYTE_SIZE 0x0001 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_LOG2_BYTE_SIZE 0x0001 +/* PSRAM */ +#endif +#ifdef DSL_63148 +/* PRIVATE_A */ +#define INGRESS_HANDLER_BUFFER_ADDRESS 0x0000 +#define INGRESS_HANDLER_BUFFER_BYTE_SIZE 0x2000 +#define INGRESS_HANDLER_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_INGRESS_HANDLER_BUFFER_SIZE 32 +#define RDD_INGRESS_HANDLER_BUFFER_LOG2_SIZE 5 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS 0x2000 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_BYTE_SIZE 0x4000 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_LOG2_BYTE_SIZE 0x000e +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE 2048 +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_LOG2_SIZE 11 +#define DS_CONNECTION_CONTEXT_BUFFER_ADDRESS 0x6000 +#define DS_CONNECTION_CONTEXT_BUFFER_BYTE_SIZE 0x0400 +#define DS_CONNECTION_CONTEXT_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_LOG2_SIZE 3 +#define DS_GSO_HEADER_BUFFER_ADDRESS 0x6400 +#define DS_GSO_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_GSO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_GSO_PSEUDO_HEADER_BUFFER_ADDRESS 0x6480 +#define DS_GSO_PSEUDO_HEADER_BUFFER_BYTE_SIZE 0x0028 +#define DS_GSO_PSEUDO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x64a8 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0008 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 2 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_ADDRESS 0x64b0 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_BYTE_SIZE 0x0010 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_SIZE 8 +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_LOG2_SIZE 3 +#define DS_CPU_REASON_TO_METER_TABLE_ADDRESS 0x64c0 +#define DS_CPU_REASON_TO_METER_TABLE_BYTE_SIZE 0x0040 +#define DS_CPU_REASON_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE 64 +#define RDD_DS_CPU_REASON_TO_METER_TABLE_LOG2_SIZE 6 +#define DS_GSO_CHUNK_BUFFER_ADDRESS 0x6500 +#define DS_GSO_CHUNK_BUFFER_BYTE_SIZE 0x0080 +#define DS_GSO_CHUNK_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_CPU_RX_METER_TABLE_ADDRESS 0x6580 +#define DS_CPU_RX_METER_TABLE_BYTE_SIZE 0x0080 +#define DS_CPU_RX_METER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_CPU_RX_METER_TABLE_SIZE 16 +#define RDD_DS_CPU_RX_METER_TABLE_LOG2_SIZE 4 +#define DS_POLICER_TABLE_ADDRESS 0x6600 +#define DS_POLICER_TABLE_BYTE_SIZE 0x0100 +#define DS_POLICER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_POLICER_TABLE_SIZE 16 +#define RDD_DS_POLICER_TABLE_LOG2_SIZE 4 +#define IPSEC_DS_BUFFER_POOL_ADDRESS 0x6700 +#define IPSEC_DS_BUFFER_POOL_BYTE_SIZE 0x0160 +#define IPSEC_DS_BUFFER_POOL_LOG2_BYTE_SIZE 0x0009 +#define RDD_IPSEC_DS_BUFFER_POOL_SIZE 2 +#define RDD_IPSEC_DS_BUFFER_POOL_LOG2_SIZE 1 +#define IPSEC_DS_SA_DESC_TABLE_ADDRESS 0x6860 +#define IPSEC_DS_SA_DESC_TABLE_BYTE_SIZE 0x0500 +#define IPSEC_DS_SA_DESC_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_IPSEC_DS_SA_DESC_TABLE_SIZE 16 +#define RDD_IPSEC_DS_SA_DESC_TABLE_LOG2_SIZE 4 +#define IPSEC_US_SA_DESC_TABLE_ADDRESS 0x6d60 +#define IPSEC_US_SA_DESC_TABLE_BYTE_SIZE 0x0500 +#define IPSEC_US_SA_DESC_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_IPSEC_US_SA_DESC_TABLE_SIZE 16 +#define RDD_IPSEC_US_SA_DESC_TABLE_LOG2_SIZE 4 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_ADDRESS 0x7260 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_BYTE_SIZE 0x0300 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_LOG2_SIZE 5 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x7560 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define DS_SPDSVC_CONTEXT_TABLE_ADDRESS 0x7580 +#define DS_SPDSVC_CONTEXT_TABLE_BYTE_SIZE 0x0050 +#define DS_SPDSVC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x75d0 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0010 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 3 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS 0x75e0 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_BYTE_SIZE 0x0100 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_LOG2_SIZE 5 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x76e0 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define WLAN_MCAST_CONTROL_TABLE_ADDRESS 0x7700 +#define WLAN_MCAST_CONTROL_TABLE_BYTE_SIZE 0x0094 +#define WLAN_MCAST_CONTROL_TABLE_LOG2_BYTE_SIZE 0x0008 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_ADDRESS 0x7794 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_BYTE_SIZE 0x0004 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DS_TOTAL_PPS_RATE_LIMITER_ADDRESS 0x7798 +#define DS_TOTAL_PPS_RATE_LIMITER_BYTE_SIZE 0x0008 +#define DS_TOTAL_PPS_RATE_LIMITER_LOG2_BYTE_SIZE 0x0003 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS 0x77a0 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_BYTE_SIZE 0x0020 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE 1 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE2 4 +#define RATE_LIMITER_REMAINDER_TABLE_ADDRESS 0x77c0 +#define RATE_LIMITER_REMAINDER_TABLE_BYTE_SIZE 0x0040 +#define RATE_LIMITER_REMAINDER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE 32 +#define RDD_RATE_LIMITER_REMAINDER_TABLE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS 0x7800 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_SIZE 8 +#define FC_MCAST_CONNECTION2_TABLE_ADDRESS 0x8000 +#define FC_MCAST_CONNECTION2_TABLE_BYTE_SIZE 0x0800 +#define FC_MCAST_CONNECTION2_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_FC_MCAST_CONNECTION2_TABLE_SIZE 128 +#define RDD_FC_MCAST_CONNECTION2_TABLE_LOG2_SIZE 7 +#define ETH_TX_QUEUES_POINTERS_TABLE_ADDRESS 0x8800 +#define ETH_TX_QUEUES_POINTERS_TABLE_BYTE_SIZE 0x0120 +#define ETH_TX_QUEUES_POINTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE 72 +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_LOG2_SIZE 7 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_ADDRESS 0x8920 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_BYTE_SIZE 0x0020 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS 0x8940 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define SBPM_REPLY_ADDRESS 0x8980 +#define SBPM_REPLY_BYTE_SIZE 0x0080 +#define SBPM_REPLY_LOG2_BYTE_SIZE 0x0007 +#define ETH_TX_QUEUES_TABLE_ADDRESS 0x8a00 +#define ETH_TX_QUEUES_TABLE_BYTE_SIZE 0x0480 +#define ETH_TX_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_ETH_TX_QUEUES_TABLE_SIZE 72 +#define RDD_ETH_TX_QUEUES_TABLE_LOG2_SIZE 7 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS 0x8e80 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_BYTE_SIZE 0x0080 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE 1 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE2 4 +#define DS_FORWARDING_MATRIX_TABLE_ADDRESS 0x8f00 +#define DS_FORWARDING_MATRIX_TABLE_BYTE_SIZE 0x0090 +#define DS_FORWARDING_MATRIX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_DS_FORWARDING_MATRIX_TABLE_LOG2_SIZE 4 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 16 +#define RDD_DS_FORWARDING_MATRIX_TABLE_LOG2_SIZE2 4 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0x8f90 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0010 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS 0x8fa0 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_BYTE_SIZE 0x0020 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_SIZE 2 +#define DS_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0x8fc0 +#define DS_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0040 +#define DS_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_L2_UCAST_CONNECTION_BUFFER_SIZE 4 +#define RDD_DS_L2_UCAST_CONNECTION_BUFFER_LOG2_SIZE 2 +#define ETH_TX_MAC_TABLE_ADDRESS 0x9000 +#define ETH_TX_MAC_TABLE_BYTE_SIZE 0x0140 +#define ETH_TX_MAC_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_ETH_TX_MAC_TABLE_SIZE 10 +#define RDD_ETH_TX_MAC_TABLE_LOG2_SIZE 4 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_ADDRESS 0x9140 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_BYTE_SIZE 0x0030 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINA_PARAM_ADDRESS 0x9170 +#define RUNNER_FWTRACE_MAINA_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINA_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_LOG2_SIZE 1 +#define INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS 0x9180 +#define INGRESS_HANDLER_SKB_DATA_POINTER_BYTE_SIZE 0x0080 +#define INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_SIZE 5 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0x9200 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9240 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9280 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_ADDRESS 0x92c0 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0030 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE 3 +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_LOG2_SIZE 2 +#define RUNNER_FWTRACE_PICOA_PARAM_ADDRESS 0x92f0 +#define RUNNER_FWTRACE_PICOA_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_PICOA_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_LOG2_SIZE 1 +#define DS_RATE_LIMITER_TABLE_ADDRESS 0x9300 +#define DS_RATE_LIMITER_TABLE_BYTE_SIZE 0x0100 +#define DS_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_RATE_LIMITER_TABLE_SIZE 32 +#define RDD_DS_RATE_LIMITER_TABLE_LOG2_SIZE 5 +#define DS_WAN_FLOW_TABLE_ADDRESS 0x9400 +#define DS_WAN_FLOW_TABLE_BYTE_SIZE 0x0200 +#define DS_WAN_FLOW_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_WAN_FLOW_TABLE_SIZE 256 +#define RDD_DS_WAN_FLOW_TABLE_LOG2_SIZE 8 +#define DS_WAN_UDP_FILTER_TABLE_ADDRESS 0x9600 +#define DS_WAN_UDP_FILTER_TABLE_BYTE_SIZE 0x0200 +#define DS_WAN_UDP_FILTER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_WAN_UDP_FILTER_TABLE_SIZE 32 +#define RDD_DS_WAN_UDP_FILTER_TABLE_LOG2_SIZE 5 +#define FC_MCAST_PORT_HEADER_BUFFER_ADDRESS 0x9800 +#define FC_MCAST_PORT_HEADER_BUFFER_BYTE_SIZE 0x0200 +#define FC_MCAST_PORT_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE 8 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_LOG2_SIZE 3 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 64 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_LOG2_SIZE2 6 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_ADDRESS 0x9a00 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_BYTE_SIZE 0x0200 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_LOG2_SIZE 3 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_ADDRESS 0x9c00 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_BYTE_SIZE 0x0200 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_LOG2_BYTE_SIZE 0x0009 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE 64 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_LOG2_SIZE 6 +#define ETH0_RX_DESCRIPTORS_ADDRESS 0x9e00 +#define ETH0_RX_DESCRIPTORS_BYTE_SIZE 0x0100 +#define ETH0_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH0_RX_DESCRIPTORS_SIZE 32 +#define RDD_ETH0_RX_DESCRIPTORS_LOG2_SIZE 5 +#define DS_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x9f00 +#define DS_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x9f80 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS 0xa000 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_BYTE_SIZE 0x0200 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE 64 +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_CPU_TX_BBH_DESCRIPTORS_ADDRESS 0xa200 +#define DS_CPU_TX_BBH_DESCRIPTORS_BYTE_SIZE 0x0100 +#define DS_CPU_TX_BBH_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_LOG2_SIZE 5 +#define DS_PROFILING_BUFFER_PICO_RUNNER_ADDRESS 0xa300 +#define DS_PROFILING_BUFFER_PICO_RUNNER_BYTE_SIZE 0x0100 +#define DS_PROFILING_BUFFER_PICO_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define GSO_PICO_QUEUE_ADDRESS 0xa400 +#define GSO_PICO_QUEUE_BYTE_SIZE 0x0200 +#define GSO_PICO_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_GSO_PICO_QUEUE_SIZE 64 +#define RDD_GSO_PICO_QUEUE_LOG2_SIZE 6 +#define DHD_TX_POST_PD_INGRESS_QUEUE_ADDRESS 0xa600 +#define DHD_TX_POST_PD_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define DHD_TX_POST_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_SIZE 32 +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS 0xa700 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_BYTE_SIZE 0x0080 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_SIZE 4 +#define DS_CONNECTION_CACHE_BUFFER_ADDRESS 0xa780 +#define DS_CONNECTION_CACHE_BUFFER_BYTE_SIZE 0x0080 +#define DS_CONNECTION_CACHE_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_CONNECTION_CACHE_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CACHE_BUFFER_LOG2_SIZE 3 +#define IPSEC_DS_QUEUE_ADDRESS 0xa800 +#define IPSEC_DS_QUEUE_BYTE_SIZE 0x0200 +#define IPSEC_DS_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_IPSEC_DS_QUEUE_SIZE 64 +#define RDD_IPSEC_DS_QUEUE_LOG2_SIZE 6 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS 0xaa00 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x00c0 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE 4 +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_ADDRESS 0xaac0 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_BYTE_SIZE 0x0040 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0xab00 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 16 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 4 +#define ETH_TX_LOCAL_REGISTERS_ADDRESS 0xab80 +#define ETH_TX_LOCAL_REGISTERS_BYTE_SIZE 0x0048 +#define ETH_TX_LOCAL_REGISTERS_LOG2_BYTE_SIZE 0x0007 +#define RDD_ETH_TX_LOCAL_REGISTERS_SIZE 9 +#define RDD_ETH_TX_LOCAL_REGISTERS_LOG2_SIZE 4 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS 0xabc8 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_BYTE_SIZE 0x0008 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_SIZE 1 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS 0xabd0 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_BYTE_SIZE 0x0010 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_BYTE_SIZE 0x0004 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 8 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_SIZE 3 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xabe0 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define CPU_TX_FAST_QUEUE_ADDRESS 0xac00 +#define CPU_TX_FAST_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_FAST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_FAST_QUEUE_SIZE 16 +#define RDD_CPU_TX_FAST_QUEUE_LOG2_SIZE 4 +#define DS_QUEUE_PROFILE_TABLE_ADDRESS 0xac80 +#define DS_QUEUE_PROFILE_TABLE_BYTE_SIZE 0x0080 +#define DS_QUEUE_PROFILE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_QUEUE_PROFILE_TABLE_SIZE 8 +#define RDD_DS_QUEUE_PROFILE_TABLE_LOG2_SIZE 3 +#define CPU_TX_PICO_QUEUE_ADDRESS 0xad00 +#define CPU_TX_PICO_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_PICO_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_PICO_QUEUE_SIZE 16 +#define RDD_CPU_TX_PICO_QUEUE_LOG2_SIZE 4 +#define DS_SQ_ENQUEUE_QUEUE_ADDRESS 0xad80 +#define DS_SQ_ENQUEUE_QUEUE_BYTE_SIZE 0x0040 +#define DS_SQ_ENQUEUE_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_SQ_ENQUEUE_QUEUE_SIZE 64 +#define RDD_DS_SQ_ENQUEUE_QUEUE_LOG2_SIZE 6 +#define MULTICAST_HEADER_BUFFER_ADDRESS 0xadc0 +#define MULTICAST_HEADER_BUFFER_BYTE_SIZE 0x0040 +#define MULTICAST_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_ADDRESS 0xae00 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_BYTE_SIZE 0x0080 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE 16 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_LOG2_SIZE 4 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS 0xae80 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xaec0 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define DS_NULL_BUFFER_ADDRESS 0xaee0 +#define DS_NULL_BUFFER_BYTE_SIZE 0x0018 +#define DS_NULL_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_NULL_BUFFER_SIZE 3 +#define RDD_DS_NULL_BUFFER_LOG2_SIZE 2 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS 0xaef8 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_BYTE_SIZE 0x0008 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0003 +#define CPU_RX_PD_INGRESS_QUEUE_ADDRESS 0xaf00 +#define CPU_RX_PD_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define CPU_RX_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE 16 +#define RDD_CPU_RX_PD_INGRESS_QUEUE_LOG2_SIZE 4 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_ADDRESS 0xaf80 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE 64 +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS 0xafc0 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_ADDRESS 0xb000 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE 16 +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_LOG2_SIZE 4 +#define DS_ROUTER_INGRESS_QUEUE_ADDRESS 0xb080 +#define DS_ROUTER_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_ROUTER_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_ROUTER_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_ROUTER_INGRESS_QUEUE_LOG2_SIZE 6 +#define DHD_COMPLETE_RING_BUFFER_ADDRESS 0xb0c0 +#define DHD_COMPLETE_RING_BUFFER_BYTE_SIZE 0x0018 +#define DHD_COMPLETE_RING_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DHD_COMPLETE_RING_BUFFER_SIZE 3 +#define RDD_DHD_COMPLETE_RING_BUFFER_LOG2_SIZE 2 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS 0xb0d8 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_BYTE_SIZE 0x0008 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_SIZE 3 +#define DS_CPU_PARAMETERS_BLOCK_ADDRESS 0xb0e0 +#define DS_CPU_PARAMETERS_BLOCK_BYTE_SIZE 0x0014 +#define DS_CPU_PARAMETERS_BLOCK_LOG2_BYTE_SIZE 0x0005 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_ADDRESS 0xb0f4 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_ADDRESS 0xb0f8 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_BYTE_SIZE 0x0006 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xb0fe +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_TX_POST_HEADER_SCRATCH_ADDRESS 0xb100 +#define DS_DHD_TX_POST_HEADER_SCRATCH_BYTE_SIZE 0x0080 +#define DS_DHD_TX_POST_HEADER_SCRATCH_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE 4 +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_LOG2_SIZE 2 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS 0xb180 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_BYTE_SIZE 0x00a0 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_LOG2_BYTE_SIZE 0x0008 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE 5 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_LOG2_SIZE 3 +#define FC_MCAST_CONNECTION_TABLE_PLUS_ADDRESS 0xb220 +#define FC_MCAST_CONNECTION_TABLE_PLUS_BYTE_SIZE 0x0014 +#define FC_MCAST_CONNECTION_TABLE_PLUS_LOG2_BYTE_SIZE 0x0005 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xb234 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_BUFFERS_BASE_ADDRESS 0xb238 +#define DS_BPM_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_CONNECTION_TABLE_CONFIG_ADDRESS 0xb23c +#define DS_CONNECTION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONNECTION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_DATA_POINTER_DUMMY_TARGET_ADDRESS 0xb240 +#define DS_DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0014 +#define DS_DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE 5 +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_LOG2_SIZE 3 +#define DS_CONTEXT_TABLE_CONFIG_ADDRESS 0xb254 +#define DS_CONTEXT_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONTEXT_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS 0xb258 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_BYTE_SIZE 0x0004 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_SIZE 2 +#define DS_PARALLEL_PROCESSING_SLAVE_LOCK_ADDRESS 0xb25c +#define DS_PARALLEL_PROCESSING_SLAVE_LOCK_BYTE_SIZE 0x0004 +#define DS_PARALLEL_PROCESSING_SLAVE_LOCK_LOG2_BYTE_SIZE 0x0002 +#define SERVICE_QUEUES_WLAN_SCRATCH_ADDRESS 0xb260 +#define SERVICE_QUEUES_WLAN_SCRATCH_BYTE_SIZE 0x0014 +#define SERVICE_QUEUES_WLAN_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define DS_CPU_TX_FLUSH_PAUSE_REQUEST_ADDRESS 0xb274 +#define DS_CPU_TX_FLUSH_PAUSE_REQUEST_BYTE_SIZE 0x0004 +#define DS_CPU_TX_FLUSH_PAUSE_REQUEST_LOG2_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS 0xb278 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_BYTE_SIZE 0x0004 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_SIZE 2 +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_ADDRESS 0xb27c +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_BYTE_SIZE 0x0004 +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_LOG2_BYTE_SIZE 0x0002 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS 0xb280 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xb2c0 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0050 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE 10 +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_LOG2_SIZE 4 +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS 0xb310 +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_BYTE_SIZE 0x000a +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0004 +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xb31a +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_ADDRESS 0xb31c +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_DEBUG_BUFFER_ADDRESS 0xb320 +#define DS_DEBUG_BUFFER_BYTE_SIZE 0x0080 +#define DS_DEBUG_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_DEBUG_BUFFER_SIZE 32 +#define RDD_DS_DEBUG_BUFFER_LOG2_SIZE 5 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb3a0 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS 0xb3b0 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_BYTE_SIZE 0x0010 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_BYTE_SIZE 0x0004 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 8 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_SIZE 3 +#define DS_DHD_FLOW_RING_DROP_COUNTER_ADDRESS 0xb3c0 +#define DS_DHD_FLOW_RING_DROP_COUNTER_BYTE_SIZE 0x0014 +#define DS_DHD_FLOW_RING_DROP_COUNTER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_LOG2_SIZE 3 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xb3d4 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS 0xb3d8 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_BYTE_SIZE 0x0008 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_SIZE 3 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb3e0 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define HASH_BUFFER_ADDRESS 0xb3f0 +#define HASH_BUFFER_BYTE_SIZE 0x0010 +#define HASH_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define GPON_RX_DIRECT_DESCRIPTORS_ADDRESS 0xb400 +#define GPON_RX_DIRECT_DESCRIPTORS_BYTE_SIZE 0x0100 +#define GPON_RX_DIRECT_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE 32 +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_LOG2_SIZE 5 +#define DS_GSO_CONTEXT_TABLE_ADDRESS 0xb500 +#define DS_GSO_CONTEXT_TABLE_BYTE_SIZE 0x0084 +#define DS_GSO_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0008 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xb584 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_FW_MAC_ADDRS_ADDRESS 0xb588 +#define DS_FW_MAC_ADDRS_BYTE_SIZE 0x0080 +#define DS_FW_MAC_ADDRS_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_FW_MAC_ADDRS_SIZE 16 +#define RDD_DS_FW_MAC_ADDRS_LOG2_SIZE 4 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_ADDRESS 0xb608 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_BYTE_SIZE 0x0008 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_LOG2_BYTE_SIZE 0x0003 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS 0xb610 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_BYTE_SIZE 0x0010 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_SIZE 3 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS 0xb620 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_BYTE_SIZE 0x0010 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define ETH_TX_SCRATCH_ADDRESS 0xb630 +#define ETH_TX_SCRATCH_BYTE_SIZE 0x0010 +#define ETH_TX_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define RDD_ETH_TX_SCRATCH_SIZE 16 +#define RDD_ETH_TX_SCRATCH_LOG2_SIZE 4 +#define DS_SYSTEM_CONFIGURATION_ADDRESS 0xb640 +#define DS_SYSTEM_CONFIGURATION_BYTE_SIZE 0x0024 +#define DS_SYSTEM_CONFIGURATION_LOG2_BYTE_SIZE 0x0006 +#define SPDSVC_HOST_BUF_PTR_ADDRESS 0xb664 +#define SPDSVC_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define SPDSVC_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define GSO_TX_DHD_L2_BUFFER_ADDRESS 0xb668 +#define GSO_TX_DHD_L2_BUFFER_BYTE_SIZE 0x0016 +#define GSO_TX_DHD_L2_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_GSO_TX_DHD_L2_BUFFER_SIZE 22 +#define RDD_GSO_TX_DHD_L2_BUFFER_LOG2_SIZE 5 +#define IPTV_COUNTERS_BUFFER_ADDRESS 0xb67e +#define IPTV_COUNTERS_BUFFER_BYTE_SIZE 0x0002 +#define IPTV_COUNTERS_BUFFER_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_TX_POST_INGRESS_QUEUE_ADDRESS 0xb680 +#define DS_DHD_TX_POST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_DHD_TX_POST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_LOG2_SIZE 6 +#define IPSEC_DS_SA_DESC_CAM_TABLE_ADDRESS 0xb6c0 +#define IPSEC_DS_SA_DESC_CAM_TABLE_BYTE_SIZE 0x0020 +#define IPSEC_DS_SA_DESC_CAM_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE 16 +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_LOG2_SIZE 4 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_ADDRESS 0xb6e0 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_BYTE_SIZE 0x0010 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define RUNNER_FLOW_IH_RESPONSE_ADDRESS 0xb6f0 +#define RUNNER_FLOW_IH_RESPONSE_BYTE_SIZE 0x0008 +#define RUNNER_FLOW_IH_RESPONSE_LOG2_BYTE_SIZE 0x0003 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_ADDRESS 0xb6f8 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_BYTE_SIZE 0x0008 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_LOG2_BYTE_SIZE 0x0003 +#define DS_GSO_DESC_TABLE_ADDRESS 0xb700 +#define DS_GSO_DESC_TABLE_BYTE_SIZE 0x0080 +#define DS_GSO_DESC_TABLE_LOG2_BYTE_SIZE 0x0007 +#define WLAN_MCAST_INGRESS_QUEUE_ADDRESS 0xb780 +#define WLAN_MCAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define WLAN_MCAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE 64 +#define RDD_WLAN_MCAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define IPSEC_US_SA_DESC_CAM_TABLE_ADDRESS 0xb7c0 +#define IPSEC_US_SA_DESC_CAM_TABLE_BYTE_SIZE 0x0020 +#define IPSEC_US_SA_DESC_CAM_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE 16 +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_LOG2_SIZE 4 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_ADDRESS 0xb7e0 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_BYTE_SIZE 0x0018 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_LOG2_BYTE_SIZE 0x0005 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_ADDRESS 0xb7f8 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_BYTE_SIZE 0x0005 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_LOG2_BYTE_SIZE 0x0003 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE 5 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_LOG2_SIZE 3 +#define ETH_TX_EMACS_STATUS_ADDRESS 0xb7fd +#define ETH_TX_EMACS_STATUS_BYTE_SIZE 0x0001 +#define ETH_TX_EMACS_STATUS_LOG2_BYTE_SIZE 0x0001 +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xb7fe +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define GPON_RX_NORMAL_DESCRIPTORS_ADDRESS 0xb800 +#define GPON_RX_NORMAL_DESCRIPTORS_BYTE_SIZE 0x0100 +#define GPON_RX_NORMAL_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE 32 +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_LOG2_SIZE 5 +#define CPU_TX_DHD_L2_BUFFER_ADDRESS 0xb900 +#define CPU_TX_DHD_L2_BUFFER_BYTE_SIZE 0x0016 +#define CPU_TX_DHD_L2_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_CPU_TX_DHD_L2_BUFFER_SIZE 22 +#define RDD_CPU_TX_DHD_L2_BUFFER_LOG2_SIZE 5 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_ADDRESS 0xb916 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_BYTE_SIZE 0x0002 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define HASH_BASED_FORWARDING_PORT_TABLE_ADDRESS 0xb918 +#define HASH_BASED_FORWARDING_PORT_TABLE_BYTE_SIZE 0x0004 +#define HASH_BASED_FORWARDING_PORT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE 4 +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_LOG2_SIZE 2 +#define FIREWALL_IPV6_R16_BUFFER_ADDRESS 0xb91c +#define FIREWALL_IPV6_R16_BUFFER_BYTE_SIZE 0x0004 +#define FIREWALL_IPV6_R16_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_ADDRESS 0xb920 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_ADDRESS 0xb930 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_ADDRESS 0xb940 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb950 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_ADDRESS 0xb952 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xb954 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_ADDRESS 0xb956 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_LOG2_BYTE_SIZE 0x0001 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_ADDRESS 0xb958 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_LOG2_BYTE_SIZE 0x0001 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_ADDRESS 0xb95a +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS 0xb95c +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_ANY_SRC_PORT_FLOW_COUNTER_ADDRESS 0xb95e +#define DS_ANY_SRC_PORT_FLOW_COUNTER_BYTE_SIZE 0x0002 +#define DS_ANY_SRC_PORT_FLOW_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define GSO_DESC_PTR_ADDRESS 0xb960 +#define GSO_DESC_PTR_BYTE_SIZE 0x0004 +#define GSO_DESC_PTR_LOG2_BYTE_SIZE 0x0002 +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_ADDRESS 0xb964 +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_BYTE_SIZE 0x0004 +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define GSO_TX_DHD_HOST_BUF_PTR_ADDRESS 0xb968 +#define GSO_TX_DHD_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define GSO_TX_DHD_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE 4 +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_LOG2_SIZE 2 +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_ADDRESS 0xb96c +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_BYTE_SIZE 0x0004 +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_LOG2_BYTE_SIZE 0x0002 +#define CPU_TX_DHD_HOST_BUF_PTR_ADDRESS 0xb970 +#define CPU_TX_DHD_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define CPU_TX_DHD_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE 4 +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_LOG2_SIZE 2 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_ADDRESS 0xb974 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_BYTE_SIZE 0x0002 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_LOG2_BYTE_SIZE 0x0001 +#define DS_MEMLIB_SEMAPHORE_ADDRESS 0xb976 +#define DS_MEMLIB_SEMAPHORE_BYTE_SIZE 0x0002 +#define DS_MEMLIB_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define WAN_PHYSICAL_PORT_ADDRESS 0xb978 +#define WAN_PHYSICAL_PORT_BYTE_SIZE 0x0002 +#define WAN_PHYSICAL_PORT_LOG2_BYTE_SIZE 0x0001 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb97a +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_RUNNER_CONGESTION_STATE_ADDRESS 0xb97c +#define DS_RUNNER_CONGESTION_STATE_BYTE_SIZE 0x0002 +#define DS_RUNNER_CONGESTION_STATE_LOG2_BYTE_SIZE 0x0001 +#define GSO_PICO_QUEUE_PTR_ADDRESS 0xb97e +#define GSO_PICO_QUEUE_PTR_BYTE_SIZE 0x0002 +#define GSO_PICO_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_ADDRESS 0xb980 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_BYTE_SIZE 0x0002 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_ADDRESS 0xb982 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_BYTE_SIZE 0x0002 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_ADDRESS 0xb984 +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_BYTE_SIZE 0x0002 +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_ADDRESS 0xb986 +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_BYTE_SIZE 0x0002 +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_DDR_SA_DESC_SIZE_ADDRESS 0xb988 +#define IPSEC_DS_DDR_SA_DESC_SIZE_BYTE_SIZE 0x0002 +#define IPSEC_DS_DDR_SA_DESC_SIZE_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_QUEUE_PTR_ADDRESS 0xb98a +#define IPSEC_DS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define IPSEC_DS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_IP_LENGTH_ADDRESS 0xb98c +#define IPSEC_DS_IP_LENGTH_BYTE_SIZE 0x0002 +#define IPSEC_DS_IP_LENGTH_LOG2_BYTE_SIZE 0x0001 +#define PRIVATE_A_DUMMY_STORE_ADDRESS 0xb98e +#define PRIVATE_A_DUMMY_STORE_BYTE_SIZE 0x0001 +#define PRIVATE_A_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_ADDRESS 0xb98f +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_BYTE_SIZE 0x0001 +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_LOG2_BYTE_SIZE 0x0001 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xb990 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xb991 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define CPU_TX_DS_PICO_SEMAPHORE_ADDRESS 0xb992 +#define CPU_TX_DS_PICO_SEMAPHORE_BYTE_SIZE 0x0001 +#define CPU_TX_DS_PICO_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define DS_FC_GLOBAL_CFG_ADDRESS 0xb993 +#define DS_FC_GLOBAL_CFG_BYTE_SIZE 0x0001 +#define DS_FC_GLOBAL_CFG_LOG2_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_ADDRESS 0xb994 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_ADDRESS 0xb995 +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_PACKET_BUFFER_SIZE_ASR_8_ADDRESS 0xb996 +#define DS_PACKET_BUFFER_SIZE_ASR_8_BYTE_SIZE 0x0001 +#define DS_PACKET_BUFFER_SIZE_ASR_8_LOG2_BYTE_SIZE 0x0001 +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb997 +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb998 +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_ADDRESS 0xb999 +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_BYTE_SIZE 0x0001 +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS 0xb99a +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_ADDRESS 0xb99b +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_LOG2_BYTE_SIZE 0x0001 +#define DS_IH_CONGESTION_THRESHOLD_ADDRESS 0xb99c +#define DS_IH_CONGESTION_THRESHOLD_BYTE_SIZE 0x0001 +#define DS_IH_CONGESTION_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define DS_FW_MAC_ADDRS_COUNT_ADDRESS 0xb99d +#define DS_FW_MAC_ADDRS_COUNT_BYTE_SIZE 0x0001 +#define DS_FW_MAC_ADDRS_COUNT_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_DMA_SYNCHRONIZATION_ADDRESS 0xb99e +#define DS_DHD_DMA_SYNCHRONIZATION_BYTE_SIZE 0x0001 +#define DS_DHD_DMA_SYNCHRONIZATION_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_SEMAPHORE_ADDRESS 0xb99f +#define DHD_TX_POST_CPU_SEMAPHORE_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define RING_CACHE_DHD_TXPOST_MUTEX_ADDRESS 0xb9a0 +#define RING_CACHE_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define RING_CACHE_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define COMMON_DHD_TXPOST_MUTEX_ADDRESS 0xb9a1 +#define COMMON_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define COMMON_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define TXCPL_INT_DHD_TXPOST_MUTEX_ADDRESS 0xb9a2 +#define TXCPL_INT_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define TXCPL_INT_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_ADDRESS 0xb9a3 +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_BYTE_SIZE 0x0001 +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_US_SA_DESC_NEXT_REPLACE_ADDRESS 0xb9a4 +#define IPSEC_US_SA_DESC_NEXT_REPLACE_BYTE_SIZE 0x0001 +#define IPSEC_US_SA_DESC_NEXT_REPLACE_LOG2_BYTE_SIZE 0x0001 +/* PRIVATE_B */ +#define US_INGRESS_HANDLER_BUFFER_ADDRESS 0x0000 +#define US_INGRESS_HANDLER_BUFFER_BYTE_SIZE 0x2000 +#define US_INGRESS_HANDLER_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_US_INGRESS_HANDLER_BUFFER_SIZE 32 +#define RDD_US_INGRESS_HANDLER_BUFFER_LOG2_SIZE 5 +#define US_CSO_CHUNK_BUFFER_ADDRESS 0x2000 +#define US_CSO_CHUNK_BUFFER_BYTE_SIZE 0x0080 +#define US_CSO_CHUNK_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define US_CSO_PSEUDO_HEADER_BUFFER_ADDRESS 0x2080 +#define US_CSO_PSEUDO_HEADER_BUFFER_BYTE_SIZE 0x0028 +#define US_CSO_PSEUDO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x20a8 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0008 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 2 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_ADDRESS 0x20b0 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_BYTE_SIZE 0x0010 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_SIZE 8 +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_LOG2_SIZE 3 +#define US_CPU_REASON_TO_METER_TABLE_ADDRESS 0x20c0 +#define US_CPU_REASON_TO_METER_TABLE_BYTE_SIZE 0x0040 +#define US_CPU_REASON_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_REASON_TO_METER_TABLE_SIZE 64 +#define RDD_US_CPU_REASON_TO_METER_TABLE_LOG2_SIZE 6 +#define US_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS 0x2100 +#define US_MAIN_PROFILING_BUFFER_RUNNER_BYTE_SIZE 0x0100 +#define US_MAIN_PROFILING_BUFFER_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_LOG2_SIZE 5 +#define US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS 0x2200 +#define US_FREE_PACKET_DESCRIPTORS_POOL_BYTE_SIZE 0x6000 +#define US_FREE_PACKET_DESCRIPTORS_POOL_LOG2_BYTE_SIZE 0x000f +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE 3072 +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_LOG2_SIZE 12 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS 0x8200 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_BYTE_SIZE 0x0180 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE 3 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE2 4 +#define US_QUEUE_PROFILE_TABLE_ADDRESS 0x8380 +#define US_QUEUE_PROFILE_TABLE_BYTE_SIZE 0x0080 +#define US_QUEUE_PROFILE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_QUEUE_PROFILE_TABLE_SIZE 8 +#define RDD_US_QUEUE_PROFILE_TABLE_LOG2_SIZE 3 +#define WAN_CHANNELS_8_39_TABLE_ADDRESS 0x8400 +#define WAN_CHANNELS_8_39_TABLE_BYTE_SIZE 0x0400 +#define WAN_CHANNELS_8_39_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WAN_CHANNELS_8_39_TABLE_SIZE 32 +#define RDD_WAN_CHANNELS_8_39_TABLE_LOG2_SIZE 5 +#define US_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x8800 +#define US_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0180 +#define US_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE 3 +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_LOG2_SIZE 2 +#define US_SBPM_REPLY_ADDRESS 0x8980 +#define US_SBPM_REPLY_BYTE_SIZE 0x0080 +#define US_SBPM_REPLY_LOG2_BYTE_SIZE 0x0007 +#define US_POLICER_TABLE_ADDRESS 0x8a00 +#define US_POLICER_TABLE_BYTE_SIZE 0x0100 +#define US_POLICER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_POLICER_TABLE_SIZE 16 +#define RDD_US_POLICER_TABLE_LOG2_SIZE 4 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_ADDRESS 0x8b00 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_BYTE_SIZE 0x0100 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE 2 +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_LOG2_SIZE 1 +#define US_WAN_FLOW_TABLE_ADDRESS 0x8c00 +#define US_WAN_FLOW_TABLE_BYTE_SIZE 0x0400 +#define US_WAN_FLOW_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_US_WAN_FLOW_TABLE_SIZE 256 +#define RDD_US_WAN_FLOW_TABLE_LOG2_SIZE 8 +#define US_CPU_TX_BBH_DESCRIPTORS_ADDRESS 0x9000 +#define US_CPU_TX_BBH_DESCRIPTORS_BYTE_SIZE 0x0100 +#define US_CPU_TX_BBH_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_LOG2_SIZE 5 +#define US_FORWARDING_MATRIX_TABLE_ADDRESS 0x9100 +#define US_FORWARDING_MATRIX_TABLE_BYTE_SIZE 0x0090 +#define US_FORWARDING_MATRIX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_US_FORWARDING_MATRIX_TABLE_LOG2_SIZE 4 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 16 +#define RDD_US_FORWARDING_MATRIX_TABLE_LOG2_SIZE2 4 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x9190 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0010 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 3 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x91a0 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define DSL_PTM_BOND_TX_HDR_TABLE_ADDRESS 0x91c0 +#define DSL_PTM_BOND_TX_HDR_TABLE_BYTE_SIZE 0x0040 +#define DSL_PTM_BOND_TX_HDR_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DSL_PTM_BOND_TX_HDR_TABLE_SIZE 32 +#define RDD_DSL_PTM_BOND_TX_HDR_TABLE_LOG2_SIZE 5 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_ADDRESS 0x9200 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_BYTE_SIZE 0x0040 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_SIZE 3 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_SIZE2 3 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9240 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9280 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS 0x92c0 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define US_RATE_LIMITER_TABLE_ADDRESS 0x9300 +#define US_RATE_LIMITER_TABLE_BYTE_SIZE 0x0080 +#define US_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_RATE_LIMITER_TABLE_SIZE 16 +#define RDD_US_RATE_LIMITER_TABLE_LOG2_SIZE 4 +#define US_CPU_RX_METER_TABLE_ADDRESS 0x9380 +#define US_CPU_RX_METER_TABLE_BYTE_SIZE 0x0080 +#define US_CPU_RX_METER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_RX_METER_TABLE_SIZE 16 +#define RDD_US_CPU_RX_METER_TABLE_LOG2_SIZE 4 +#define US_CONNECTION_CONTEXT_BUFFER_ADDRESS 0x9400 +#define US_CONNECTION_CONTEXT_BUFFER_BYTE_SIZE 0x0400 +#define US_CONNECTION_CONTEXT_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE 8 +#define RDD_US_CONNECTION_CONTEXT_BUFFER_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS 0x9800 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_SIZE 8 +#define WAN_CHANNELS_0_7_TABLE_ADDRESS 0xa000 +#define WAN_CHANNELS_0_7_TABLE_BYTE_SIZE 0x02c0 +#define WAN_CHANNELS_0_7_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WAN_CHANNELS_0_7_TABLE_SIZE 8 +#define RDD_WAN_CHANNELS_0_7_TABLE_LOG2_SIZE 3 +#define US_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0xa2c0 +#define US_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0040 +#define US_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_L2_UCAST_CONNECTION_BUFFER_SIZE 4 +#define RDD_US_L2_UCAST_CONNECTION_BUFFER_LOG2_SIZE 2 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS 0xa300 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_BYTE_SIZE 0x0080 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_SIZE 5 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0xa380 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define US_PROFILING_BUFFER_PICO_RUNNER_ADDRESS 0xa400 +#define US_PROFILING_BUFFER_PICO_RUNNER_BYTE_SIZE 0x0100 +#define US_PROFILING_BUFFER_PICO_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS 0xa500 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_BYTE_SIZE 0x0080 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_SIZE 4 +#define US_CONNECTION_CACHE_BUFFER_ADDRESS 0xa580 +#define US_CONNECTION_CACHE_BUFFER_BYTE_SIZE 0x0080 +#define US_CONNECTION_CACHE_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CONNECTION_CACHE_BUFFER_SIZE 8 +#define RDD_US_CONNECTION_CACHE_BUFFER_LOG2_SIZE 3 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS 0xa600 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_BYTE_SIZE 0x0060 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE 3 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE2 4 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0xa660 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_ADDRESS 0xa680 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_BYTE_SIZE 0x0060 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define US_FC_L2_UCAST_TUPLE_BUFFER_ADDRESS 0xa6e0 +#define US_FC_L2_UCAST_TUPLE_BUFFER_BYTE_SIZE 0x0020 +#define US_FC_L2_UCAST_TUPLE_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define DHD_RX_POST_FLOW_RING_BUFFER_ADDRESS 0xa700 +#define DHD_RX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x0060 +#define DHD_RX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS 0xa760 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_BYTE_SIZE 0x0020 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_SIZE 2 +#define US_INGRESS_RATE_LIMITER_TABLE_ADDRESS 0xa780 +#define US_INGRESS_RATE_LIMITER_TABLE_BYTE_SIZE 0x0050 +#define US_INGRESS_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE 5 +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_LOG2_SIZE 3 +#define DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_ADDRESS 0xa7d0 +#define DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_BYTE_SIZE 0x0010 +#define DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_SIZE 8 +#define RDD_DSL_PTM_BOND_TX_HDR_DEBUG_TABLE_LOG2_SIZE 3 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xa7e0 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define US_SPDSVC_CONTEXT_TABLE_ADDRESS 0xa800 +#define US_SPDSVC_CONTEXT_TABLE_BYTE_SIZE 0x0050 +#define US_SPDSVC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0xa850 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0010 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xa860 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define US_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS 0xa880 +#define US_CPU_RX_PICO_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_CPU_RX_PICO_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_ADDRESS 0xa8c0 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_BYTE_SIZE 0x0040 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define US_ROUTER_INGRESS_QUEUE_ADDRESS 0xa900 +#define US_ROUTER_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_ROUTER_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_ROUTER_INGRESS_QUEUE_SIZE 64 +#define RDD_US_ROUTER_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DHD_TX_POST_HEADER_SCRATCH_ADDRESS 0xa940 +#define US_DHD_TX_POST_HEADER_SCRATCH_BYTE_SIZE 0x0020 +#define US_DHD_TX_POST_HEADER_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS 0xa960 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_BYTE_SIZE 0x0018 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_SIZE 3 +#define US_TOTAL_PPS_RATE_LIMITER_ADDRESS 0xa978 +#define US_TOTAL_PPS_RATE_LIMITER_BYTE_SIZE 0x0008 +#define US_TOTAL_PPS_RATE_LIMITER_LOG2_BYTE_SIZE 0x0003 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xa980 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0001 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define PRIVATE_B_DUMMY_STORE_ADDRESS 0xa981 +#define PRIVATE_B_DUMMY_STORE_BYTE_SIZE 0x0001 +#define PRIVATE_B_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xa982 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_ADDRESS 0xa984 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_BYTE_SIZE 0x0004 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_LOG2_BYTE_SIZE 0x0002 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS 0xa988 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_BYTE_SIZE 0x0001 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xa989 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xa98a +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_ADDRESS 0xa98c +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xa990 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0028 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0006 +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE 40 +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_LOG2_SIZE 6 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS 0xa9b8 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define US_ONE_BUFFER_ADDRESS 0xa9f8 +#define US_ONE_BUFFER_BYTE_SIZE 0x0008 +#define US_ONE_BUFFER_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS 0xaa00 +#define US_CPU_RX_FAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_CPU_RX_FAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DEBUG_BUFFER_ADDRESS 0xaa40 +#define US_DEBUG_BUFFER_BYTE_SIZE 0x0080 +#define US_DEBUG_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_DEBUG_BUFFER_SIZE 32 +#define RDD_US_DEBUG_BUFFER_LOG2_SIZE 5 +#define US_FW_MAC_ADDRS_ADDRESS 0xaac0 +#define US_FW_MAC_ADDRS_BYTE_SIZE 0x0080 +#define US_FW_MAC_ADDRS_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_FW_MAC_ADDRS_SIZE 16 +#define RDD_US_FW_MAC_ADDRS_LOG2_SIZE 4 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS 0xab40 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_BYTE_SIZE 0x0018 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE 3 +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_SIZE 2 +#define US_NULL_BUFFER_ADDRESS 0xab58 +#define US_NULL_BUFFER_BYTE_SIZE 0x0008 +#define US_NULL_BUFFER_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_PARAMETERS_BLOCK_ADDRESS 0xab60 +#define US_CPU_PARAMETERS_BLOCK_BYTE_SIZE 0x0014 +#define US_CPU_PARAMETERS_BLOCK_LOG2_BYTE_SIZE 0x0005 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xab74 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS 0xab78 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_BYTE_SIZE 0x0008 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_SIZE 3 +#define US_DHD_TX_POST_INGRESS_QUEUE_ADDRESS 0xab80 +#define US_DHD_TX_POST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_DHD_TX_POST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS 0xabc0 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x0030 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RUNNER_FWTRACE_MAINB_PARAM_ADDRESS 0xabf0 +#define RUNNER_FWTRACE_MAINB_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINB_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_LOG2_SIZE 1 +#define US_CPU_TX_FAST_QUEUE_ADDRESS 0xac00 +#define US_CPU_TX_FAST_QUEUE_BYTE_SIZE 0x0080 +#define US_CPU_TX_FAST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_TX_FAST_QUEUE_SIZE 16 +#define RDD_US_CPU_TX_FAST_QUEUE_LOG2_SIZE 4 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_ADDRESS 0xac80 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_BYTE_SIZE 0x0060 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE 48 +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_LOG2_SIZE 6 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xace0 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define RUNNER_FWTRACE_PICOB_PARAM_ADDRESS 0xacf0 +#define RUNNER_FWTRACE_PICOB_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_PICOB_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_LOG2_SIZE 1 +#define US_CPU_TX_PICO_QUEUE_ADDRESS 0xad00 +#define US_CPU_TX_PICO_QUEUE_BYTE_SIZE 0x0080 +#define US_CPU_TX_PICO_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_TX_PICO_QUEUE_SIZE 16 +#define RDD_US_CPU_TX_PICO_QUEUE_LOG2_SIZE 4 +#define US_CSO_CONTEXT_TABLE_ADDRESS 0xad80 +#define US_CSO_CONTEXT_TABLE_BYTE_SIZE 0x0054 +#define US_CSO_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define US_BPM_DDR_BUFFERS_BASE_ADDRESS 0xadd4 +#define US_BPM_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS 0xadd8 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_BYTE_SIZE 0x0028 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_BYTE_SIZE 0x0006 +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE 40 +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_SIZE 6 +#define US_DHD_FLOW_RING_DROP_COUNTER_ADDRESS 0xae00 +#define US_DHD_FLOW_RING_DROP_COUNTER_BYTE_SIZE 0x0014 +#define US_DHD_FLOW_RING_DROP_COUNTER_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_LOG2_SIZE 3 +#define US_CONNECTION_TABLE_CONFIG_ADDRESS 0xae14 +#define US_CONNECTION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONNECTION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS 0xae18 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_BYTE_SIZE 0x0006 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xae1e +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xae20 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS 0xae30 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_BYTE_SIZE 0x0010 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_SIZE 3 +#define US_SYSTEM_CONFIGURATION_ADDRESS 0xae40 +#define US_SYSTEM_CONFIGURATION_BYTE_SIZE 0x0024 +#define US_SYSTEM_CONFIGURATION_LOG2_BYTE_SIZE 0x0006 +#define US_CONTEXT_TABLE_CONFIG_ADDRESS 0xae64 +#define US_CONTEXT_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONTEXT_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_ADDRESS 0xae68 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_BYTE_SIZE 0x0020 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_LOG2_SIZE 5 +#define DATA_POINTER_DUMMY_TARGET_ADDRESS 0xae88 +#define DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0008 +#define DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0003 +#define RDD_DATA_POINTER_DUMMY_TARGET_SIZE 2 +#define RDD_DATA_POINTER_DUMMY_TARGET_LOG2_SIZE 1 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS 0xae90 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_BYTE_SIZE 0x0010 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define WAN_TX_SCRATCH_ADDRESS 0xaea0 +#define WAN_TX_SCRATCH_BYTE_SIZE 0x0018 +#define WAN_TX_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define RDD_WAN_TX_SCRATCH_SIZE 24 +#define RDD_WAN_TX_SCRATCH_LOG2_SIZE 5 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_ADDRESS 0xaeb8 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_BYTE_SIZE 0x0012 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE 3 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_SIZE 2 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 6 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_SIZE2 3 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_ADDRESS 0xaeca +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_BYTE_SIZE 0x0002 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS 0xaecc +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_BYTE_SIZE 0x0004 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_SIZE 2 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_ADDRESS 0xaed0 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_BYTE_SIZE 0x0009 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE 9 +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xaed9 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_ADDRESS 0xaeda +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_BYTE_SIZE 0x0002 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_SLAVE_LOCK_ADDRESS 0xaedc +#define US_PARALLEL_PROCESSING_SLAVE_LOCK_BYTE_SIZE 0x0004 +#define US_PARALLEL_PROCESSING_SLAVE_LOCK_LOG2_BYTE_SIZE 0x0002 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_ADDRESS 0xaee0 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_BYTE_SIZE 0x0010 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_ADDRESS 0xaef0 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_ADDRESS 0xaf00 +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_BYTE_SIZE 0x000e +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE 14 +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_LOG2_SIZE 4 +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_ADDRESS 0xaf0e +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS 0xaf10 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_BYTE_SIZE 0x0004 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_SIZE 2 +#define US_CPU_TX_FLUSH_PAUSE_REQUEST_ADDRESS 0xaf14 +#define US_CPU_TX_FLUSH_PAUSE_REQUEST_BYTE_SIZE 0x0004 +#define US_CPU_TX_FLUSH_PAUSE_REQUEST_LOG2_BYTE_SIZE 0x0002 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS 0xaf18 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_BYTE_SIZE 0x0008 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_SIZE 3 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_ADDRESS 0xaf20 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_BYTE_SIZE 0x0004 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_LOG2_BYTE_SIZE 0x0002 +#define IH_BUFFER_BBH_POINTER_ADDRESS 0xaf24 +#define IH_BUFFER_BBH_POINTER_BYTE_SIZE 0x0004 +#define IH_BUFFER_BBH_POINTER_LOG2_BYTE_SIZE 0x0002 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_ADDRESS 0xaf28 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define US_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xaf2c +#define US_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define US_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS 0xaf30 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_BYTE_SIZE 0x0004 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_SIZE 4 +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_SIZE 2 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xaf34 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xaf36 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS 0xaf38 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_BYTE_SIZE 0x0002 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_ANY_SRC_PORT_FLOW_COUNTER_ADDRESS 0xaf3a +#define US_ANY_SRC_PORT_FLOW_COUNTER_BYTE_SIZE 0x0002 +#define US_ANY_SRC_PORT_FLOW_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_ADDRESS 0xaf3c +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_BYTE_SIZE 0x0004 +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_ADDRESS 0xaf40 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_BYTE_SIZE 0x0002 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_LOG2_BYTE_SIZE 0x0001 +#define US_MEMLIB_SEMAPHORE_ADDRESS 0xaf42 +#define US_MEMLIB_SEMAPHORE_BYTE_SIZE 0x0002 +#define US_MEMLIB_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_ADDRESS 0xaf44 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_RUNNER_CONGESTION_STATE_ADDRESS 0xaf46 +#define US_RUNNER_CONGESTION_STATE_BYTE_SIZE 0x0002 +#define US_RUNNER_CONGESTION_STATE_LOG2_BYTE_SIZE 0x0001 +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xaf48 +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_ADDRESS 0xaf4a +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_BYTE_SIZE 0x0002 +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_ADDRESS 0xaf4c +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_BYTE_SIZE 0x0002 +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_FC_GLOBAL_CFG_ADDRESS 0xaf4e +#define US_FC_GLOBAL_CFG_BYTE_SIZE 0x0001 +#define US_FC_GLOBAL_CFG_LOG2_BYTE_SIZE 0x0001 +#define ETHWAN2_SWITCH_PORT_ADDRESS 0xaf4f +#define ETHWAN2_SWITCH_PORT_BYTE_SIZE 0x0001 +#define ETHWAN2_SWITCH_PORT_LOG2_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_ADDRESS 0xaf50 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_ADDRESS 0xaf51 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_PACKET_BUFFER_SIZE_ASR_8_ADDRESS 0xaf52 +#define US_PACKET_BUFFER_SIZE_ASR_8_BYTE_SIZE 0x0001 +#define US_PACKET_BUFFER_SIZE_ASR_8_LOG2_BYTE_SIZE 0x0001 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xaf53 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xaf54 +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_ADDRESS 0xaf55 +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_BYTE_SIZE 0x0001 +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DSL_PTM_BOND_TX_CONTROL_ADDRESS 0xaf56 +#define DSL_PTM_BOND_TX_CONTROL_BYTE_SIZE 0x0001 +#define DSL_PTM_BOND_TX_CONTROL_LOG2_BYTE_SIZE 0x0001 +#define DSL_BUFFER_ALIGNMENT_ADDRESS 0xaf57 +#define DSL_BUFFER_ALIGNMENT_BYTE_SIZE 0x0001 +#define DSL_BUFFER_ALIGNMENT_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS 0xaf58 +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_ADDRESS 0xaf59 +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_LOG2_BYTE_SIZE 0x0001 +#define US_IH_CONGESTION_THRESHOLD_ADDRESS 0xaf5a +#define US_IH_CONGESTION_THRESHOLD_BYTE_SIZE 0x0001 +#define US_IH_CONGESTION_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define US_FW_MAC_ADDRS_COUNT_ADDRESS 0xaf5b +#define US_FW_MAC_ADDRS_COUNT_BYTE_SIZE 0x0001 +#define US_FW_MAC_ADDRS_COUNT_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_DMA_SYNCHRONIZATION_ADDRESS 0xaf5c +#define US_DHD_DMA_SYNCHRONIZATION_BYTE_SIZE 0x0001 +#define US_DHD_DMA_SYNCHRONIZATION_LOG2_BYTE_SIZE 0x0001 +#define ETH1_RX_DESCRIPTORS_ADDRESS 0xb200 +#define ETH1_RX_DESCRIPTORS_BYTE_SIZE 0x0100 +#define ETH1_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH1_RX_DESCRIPTORS_SIZE 32 +#define RDD_ETH1_RX_DESCRIPTORS_LOG2_SIZE 5 +#define US_RUNNER_FLOW_IH_RESPONSE_ADDRESS 0xb6f0 +#define US_RUNNER_FLOW_IH_RESPONSE_BYTE_SIZE 0x0008 +#define US_RUNNER_FLOW_IH_RESPONSE_LOG2_BYTE_SIZE 0x0003 +#define BBH_TX_WAN_CHANNEL_INDEX_ADDRESS 0xbcb8 +#define BBH_TX_WAN_CHANNEL_INDEX_BYTE_SIZE 0x0004 +#define BBH_TX_WAN_CHANNEL_INDEX_LOG2_BYTE_SIZE 0x0002 +/* COMMON_A */ +#define SERVICE_QUEUES_DDR_CACHE_FIFO_ADDRESS 0x0000 +#define SERVICE_QUEUES_DDR_CACHE_FIFO_BYTE_SIZE 0x1800 +#define SERVICE_QUEUES_DDR_CACHE_FIFO_LOG2_BYTE_SIZE 0x000d +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE 384 +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_LOG2_SIZE 9 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS 0x1800 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define CPU_RX_RUNNER_A_SCRATCHPAD_ADDRESS 0x2000 +#define CPU_RX_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define CPU_RX_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS 0x2800 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define RUNNER_FWTRACE_MAINA_BASE_ADDRESS 0x3000 +#define RUNNER_FWTRACE_MAINA_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_MAINA_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_MAINA_BASE_LOG2_SIZE 7 +#define RUNNER_FWTRACE_PICOA_BASE_ADDRESS 0x3400 +#define RUNNER_FWTRACE_PICOA_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_PICOA_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_PICOA_BASE_LOG2_SIZE 7 +#define WLAN_MCAST_DHD_STATION_TABLE_ADDRESS 0x3800 +#define WLAN_MCAST_DHD_STATION_TABLE_BYTE_SIZE 0x0280 +#define WLAN_MCAST_DHD_STATION_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_LOG2_SIZE 6 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS 0x3a80 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_BYTE_SIZE 0x0080 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE 2 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE 1 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 64 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE2 6 +#define MAC_TABLE_CAM_ADDRESS 0x3b00 +#define MAC_TABLE_CAM_BYTE_SIZE 0x0100 +#define MAC_TABLE_CAM_LOG2_BYTE_SIZE 0x0008 +#define RDD_MAC_TABLE_CAM_SIZE 32 +#define RDD_MAC_TABLE_CAM_LOG2_SIZE 5 +#define MAC_TABLE_ADDRESS 0x3c00 +#define MAC_TABLE_BYTE_SIZE 0x0200 +#define MAC_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAC_TABLE_SIZE 64 +#define RDD_MAC_TABLE_LOG2_SIZE 6 +#define ETHWAN2_RX_INGRESS_QUEUE_ADDRESS 0x3e00 +#define ETHWAN2_RX_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define ETHWAN2_RX_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE 32 +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_LOG2_SIZE 5 +#define TRACE_C_TABLE_ADDRESS 0x3f00 +#define TRACE_C_TABLE_BYTE_SIZE 0x0020 +#define TRACE_C_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_TRACE_C_TABLE_SIZE 4 +#define RDD_TRACE_C_TABLE_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_ADDRESS 0x3f20 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_LOG2_SIZE 1 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_ADDRESS 0x3f30 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_ADDRESS 0x3f34 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_LOG2_BYTE_SIZE 0x0002 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_ADDRESS 0x3f38 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_BYTE_SIZE 0x0008 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_LOG2_BYTE_SIZE 0x0003 +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE 2 +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_LOG2_SIZE 1 +#define BPM_REPLY_RUNNER_A_ADDRESS 0x3f40 +#define BPM_REPLY_RUNNER_A_BYTE_SIZE 0x0030 +#define BPM_REPLY_RUNNER_A_LOG2_BYTE_SIZE 0x0006 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_ADDRESS 0x3f70 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_BYTE_SIZE 0x0010 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define MAC_CONTEXT_TABLE_ADDRESS 0x3f80 +#define MAC_CONTEXT_TABLE_BYTE_SIZE 0x0080 +#define MAC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_MAC_CONTEXT_TABLE_SIZE 64 +#define RDD_MAC_CONTEXT_TABLE_LOG2_SIZE 6 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS 0x4000 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_BYTE_SIZE 0x0600 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_LOG2_BYTE_SIZE 0x000b +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE 32 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS 0x4600 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_BYTE_SIZE 0x0200 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_SIZE 8 +#define WLAN_MCAST_FWD_TABLE_ADDRESS 0x4800 +#define WLAN_MCAST_FWD_TABLE_BYTE_SIZE 0x0200 +#define WLAN_MCAST_FWD_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_FWD_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_FWD_TABLE_LOG2_SIZE 6 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_ADDRESS 0x4a00 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_BYTE_SIZE 0x0200 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_LOG2_SIZE 5 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_ADDRESS 0x4c00 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_BYTE_SIZE 0x0180 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE 48 +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_LOG2_SIZE 6 +#define CPU_TX_POST_REQUEST_QUEUE_ADDRESS 0x4d80 +#define CPU_TX_POST_REQUEST_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_POST_REQUEST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE 8 +#define RDD_CPU_TX_POST_REQUEST_QUEUE_LOG2_SIZE 3 +#define WLAN_MCAST_SSID_STATS_TABLE_ADDRESS 0x4e00 +#define WLAN_MCAST_SSID_STATS_TABLE_BYTE_SIZE 0x0180 +#define WLAN_MCAST_SSID_STATS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE 48 +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_LOG2_SIZE 6 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_ADDRESS 0x4f80 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_BYTE_SIZE 0x0060 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE 3 +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_LOG2_SIZE 2 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS 0x4fe0 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_BYTE_SIZE 0x0020 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_SIZE 4 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS 0x5000 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_SIZE 7 +#define PM_COUNTERS_ADDRESS 0x5800 +#define PM_COUNTERS_BYTE_SIZE 0x1840 +#define PM_COUNTERS_LOG2_BYTE_SIZE 0x000d +#define RATE_SHAPERS_STATUS_DESCRIPTOR_ADDRESS 0x7040 +#define RATE_SHAPERS_STATUS_DESCRIPTOR_BYTE_SIZE 0x0080 +#define RATE_SHAPERS_STATUS_DESCRIPTOR_LOG2_BYTE_SIZE 0x0007 +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE 128 +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_LOG2_SIZE 7 +#define INTERRUPT_COALESCING_CONFIG_TABLE_ADDRESS 0x70c0 +#define INTERRUPT_COALESCING_CONFIG_TABLE_BYTE_SIZE 0x0040 +#define INTERRUPT_COALESCING_CONFIG_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE 16 +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_LOG2_SIZE 4 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS 0x7100 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_BYTE_SIZE 0x0100 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_LOG2_SIZE 4 +#define DS_CONNECTION_BUFFER_TABLE_ADDRESS 0x7200 +#define DS_CONNECTION_BUFFER_TABLE_BYTE_SIZE 0x0140 +#define DS_CONNECTION_BUFFER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_DS_CONNECTION_BUFFER_TABLE_LOG2_SIZE 3 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 4 +#define RDD_DS_CONNECTION_BUFFER_TABLE_LOG2_SIZE2 2 +#define MAC_CONTEXT_TABLE_CAM_ADDRESS 0x7340 +#define MAC_CONTEXT_TABLE_CAM_BYTE_SIZE 0x0040 +#define MAC_CONTEXT_TABLE_CAM_LOG2_BYTE_SIZE 0x0006 +#define RDD_MAC_CONTEXT_TABLE_CAM_SIZE 32 +#define RDD_MAC_CONTEXT_TABLE_CAM_LOG2_SIZE 5 +#define DHD_DOORBELL_WRITE_VALUES_ADDRESS 0x7380 +#define DHD_DOORBELL_WRITE_VALUES_BYTE_SIZE 0x0040 +#define DHD_DOORBELL_WRITE_VALUES_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_DOORBELL_WRITE_VALUES_SIZE 16 +#define RDD_DHD_DOORBELL_WRITE_VALUES_LOG2_SIZE 4 +#define DS_DHD_BACKUP_INDEX_CACHE_ADDRESS 0x73c0 +#define DS_DHD_BACKUP_INDEX_CACHE_BYTE_SIZE 0x0040 +#define DS_DHD_BACKUP_INDEX_CACHE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE 32 +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_LOG2_SIZE 5 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_ADDRESS 0x7400 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_BYTE_SIZE 0x0100 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_LOG2_SIZE 5 +#define RING_DESCRIPTORS_TABLE_ADDRESS 0x7500 +#define RING_DESCRIPTORS_TABLE_BYTE_SIZE 0x0100 +#define RING_DESCRIPTORS_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_RING_DESCRIPTORS_TABLE_SIZE 16 +#define RDD_RING_DESCRIPTORS_TABLE_LOG2_SIZE 4 +#define MAC_EXTENSION_TABLE_ADDRESS 0x7600 +#define MAC_EXTENSION_TABLE_BYTE_SIZE 0x0040 +#define MAC_EXTENSION_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_MAC_EXTENSION_TABLE_SIZE 64 +#define RDD_MAC_EXTENSION_TABLE_LOG2_SIZE 6 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_ADDRESS 0x7640 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_BYTE_SIZE 0x0020 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE 16 +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_LOG2_SIZE 4 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_ADDRESS 0x7660 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0014 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_ADDRESS 0x7674 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_ADDRESS 0x7678 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_BYTE_SIZE 0x0008 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_LOG2_BYTE_SIZE 0x0003 +#define SERVICE_QUEUES_CFG_ADDRESS 0x7680 +#define SERVICE_QUEUES_CFG_BYTE_SIZE 0x0014 +#define SERVICE_QUEUES_CFG_LOG2_BYTE_SIZE 0x0005 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_ADDRESS 0x7694 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_BYTE_SIZE 0x0004 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_LOG2_BYTE_SIZE 0x0002 +#define MAC_EXTENSION_TABLE_CAM_ADDRESS 0x7698 +#define MAC_EXTENSION_TABLE_CAM_BYTE_SIZE 0x0020 +#define MAC_EXTENSION_TABLE_CAM_LOG2_BYTE_SIZE 0x0005 +#define RDD_MAC_EXTENSION_TABLE_CAM_SIZE 32 +#define RDD_MAC_EXTENSION_TABLE_CAM_LOG2_SIZE 5 +#define DS_CAM_DHD_DMA_SCRATCH_ADDRESS 0x76b8 +#define DS_CAM_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_CAM_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_ENQ_DHD_DMA_SCRATCH_ADDRESS 0x76bc +#define DS_ENQ_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_ENQ_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define PM_COUNTERS_BUFFER_ADDRESS 0x76c0 +#define PM_COUNTERS_BUFFER_BYTE_SIZE 0x0020 +#define PM_COUNTERS_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define TX_CPL_DHD_DMA_SCRATCH_ADDRESS 0x76e0 +#define TX_CPL_DHD_DMA_SCRATCH_BYTE_SIZE 0x000c +#define TX_CPL_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE 3 +#define RDD_TX_CPL_DHD_DMA_SCRATCH_LOG2_SIZE 2 +#define DS_R2D_DHD_DMA_SCRATCH_ADDRESS 0x76ec +#define DS_R2D_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_R2D_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_CPU_DHD_DMA_SCRATCH_ADDRESS 0x76f0 +#define DS_CPU_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_CPU_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define TIMER_7_TIMER_PERIOD_ADDRESS 0x76f4 +#define TIMER_7_TIMER_PERIOD_BYTE_SIZE 0x0002 +#define TIMER_7_TIMER_PERIOD_LOG2_BYTE_SIZE 0x0001 +#define INTERRUPT_COALESCING_TIMER_PERIOD_ADDRESS 0x76f6 +#define INTERRUPT_COALESCING_TIMER_PERIOD_BYTE_SIZE 0x0002 +#define INTERRUPT_COALESCING_TIMER_PERIOD_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_BUFFERS_THRESHOLD_ADDRESS 0x76f8 +#define DHD_TX_POST_BUFFERS_THRESHOLD_BYTE_SIZE 0x0006 +#define DHD_TX_POST_BUFFERS_THRESHOLD_LOG2_BYTE_SIZE 0x0003 +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_SIZE 3 +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_LOG2_SIZE 2 +#define INTERRUPT_COALESCING_TIMER_ARMED_ADDRESS 0x76fe +#define INTERRUPT_COALESCING_TIMER_ARMED_BYTE_SIZE 0x0002 +#define INTERRUPT_COALESCING_TIMER_ARMED_LOG2_BYTE_SIZE 0x0001 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS 0x7700 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_BYTE_SIZE 0x0004 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_SIZE 4 +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_SIZE 2 +#define DHD_TX_POST_BUFFERS_IN_USE_COUNTER_ADDRESS 0x7704 +#define DHD_TX_POST_BUFFERS_IN_USE_COUNTER_BYTE_SIZE 0x0002 +#define DHD_TX_POST_BUFFERS_IN_USE_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define COMMON_A_DUMMY_STORE_ADDRESS 0x7706 +#define COMMON_A_DUMMY_STORE_BYTE_SIZE 0x0001 +#define COMMON_A_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define FC_SERVICE_QUEUE_MODE_ADDRESS 0x7707 +#define FC_SERVICE_QUEUE_MODE_BYTE_SIZE 0x0001 +#define FC_SERVICE_QUEUE_MODE_LOG2_BYTE_SIZE 0x0001 +#define MAIN_A_DEBUG_TRACE_ADDRESS 0x7a00 +#define MAIN_A_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define MAIN_A_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAIN_A_DEBUG_TRACE_SIZE 512 +#define RDD_MAIN_A_DEBUG_TRACE_LOG2_SIZE 9 +#define PICO_A_DEBUG_TRACE_ADDRESS 0x7c00 +#define PICO_A_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define PICO_A_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_PICO_A_DEBUG_TRACE_SIZE 512 +#define RDD_PICO_A_DEBUG_TRACE_LOG2_SIZE 9 +/* COMMON_B */ +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS 0x8000 +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_SIZE 7 +#define WAN_TX_MIRROR_SCRATCHPAD_ADDRESS 0x8800 +#define WAN_TX_MIRROR_SCRATCHPAD_BYTE_SIZE 0x0800 +#define WAN_TX_MIRROR_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_WAN_TX_MIRROR_SCRATCHPAD_SIZE 8 +#define RDD_WAN_TX_MIRROR_SCRATCHPAD_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS 0x9000 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_BYTE_SIZE 0x0200 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_SIZE 8 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0x9200 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 32 +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS 0x9300 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_BYTE_SIZE 0x0100 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_SIZE 5 +#define WAN_TX_SERVICE_QUEUES_TABLE_ADDRESS 0x9400 +#define WAN_TX_SERVICE_QUEUES_TABLE_BYTE_SIZE 0x0800 +#define WAN_TX_SERVICE_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE 64 +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_LOG2_SIZE 6 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS 0x9c00 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_BYTE_SIZE 0x0100 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_SIZE 5 +#define WAN_TX_RUNNER_B_SCRATCHPAD_ADDRESS 0x9d00 +#define WAN_TX_RUNNER_B_SCRATCHPAD_BYTE_SIZE 0x0100 +#define WAN_TX_RUNNER_B_SCRATCHPAD_LOG2_BYTE_SIZE 0x0008 +#define US_CONNECTION_BUFFER_TABLE_ADDRESS 0x9e00 +#define US_CONNECTION_BUFFER_TABLE_BYTE_SIZE 0x0140 +#define US_CONNECTION_BUFFER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_US_CONNECTION_BUFFER_TABLE_LOG2_SIZE 3 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 4 +#define RDD_US_CONNECTION_BUFFER_TABLE_LOG2_SIZE2 2 +#define IPV6_HOST_ADDRESS_CRC_TABLE_ADDRESS 0x9f40 +#define IPV6_HOST_ADDRESS_CRC_TABLE_BYTE_SIZE 0x0040 +#define IPV6_HOST_ADDRESS_CRC_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE 16 +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_LOG2_SIZE 4 +#define DHD_BACKUP_INFO_CACHE_TABLE_ADDRESS 0x9f80 +#define DHD_BACKUP_INFO_CACHE_TABLE_BYTE_SIZE 0x0080 +#define DHD_BACKUP_INFO_CACHE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE 16 +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_LOG2_SIZE 4 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS 0xa000 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_SIZE 8 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS 0xa800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_SIZE 8 +#define WAN_TX_QUEUES_TABLE_ADDRESS 0xb000 +#define WAN_TX_QUEUES_TABLE_BYTE_SIZE 0x1000 +#define WAN_TX_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000c +#define RDD_WAN_TX_QUEUES_TABLE_SIZE 256 +#define RDD_WAN_TX_QUEUES_TABLE_LOG2_SIZE 8 +#define RUNNER_FWTRACE_MAINB_BASE_ADDRESS 0xc000 +#define RUNNER_FWTRACE_MAINB_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_MAINB_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_MAINB_BASE_LOG2_SIZE 7 +#define US_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS 0xc400 +#define US_RING_PACKET_DESCRIPTORS_CACHE_BYTE_SIZE 0x0100 +#define US_RING_PACKET_DESCRIPTORS_CACHE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_LOG2_SIZE 4 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_ADDRESS 0xc500 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_BYTE_SIZE 0x00c0 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE 3 +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_LOG2_SIZE 2 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_ADDRESS 0xc5c0 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_BYTE_SIZE 0x0040 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0006 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_ADDRESS 0xc600 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_BYTE_SIZE 0x0100 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE 16 +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_LOG2_SIZE 4 +#define FC_FLOW_IP_ADDRESSES_TABLE_ADDRESS 0xc700 +#define FC_FLOW_IP_ADDRESSES_TABLE_BYTE_SIZE 0x00c0 +#define FC_FLOW_IP_ADDRESSES_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE 4 +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_ADDRESS 0xc7c0 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_LOG2_SIZE 1 +#define BPM_REPLY_RUNNER_B_ADDRESS 0xc7d0 +#define BPM_REPLY_RUNNER_B_BYTE_SIZE 0x0030 +#define BPM_REPLY_RUNNER_B_LOG2_BYTE_SIZE 0x0006 +#define US_RATE_CONTROLLERS_TABLE_ADDRESS 0xc800 +#define US_RATE_CONTROLLERS_TABLE_BYTE_SIZE 0x1800 +#define US_RATE_CONTROLLERS_TABLE_LOG2_BYTE_SIZE 0x000d +#define RDD_US_RATE_CONTROLLERS_TABLE_SIZE 128 +#define RDD_US_RATE_CONTROLLERS_TABLE_LOG2_SIZE 7 +#define CPU_RX_RUNNER_B_SCRATCHPAD_ADDRESS 0xe000 +#define CPU_RX_RUNNER_B_SCRATCHPAD_BYTE_SIZE 0x0800 +#define CPU_RX_RUNNER_B_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE 8 +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_LOG2_SIZE 3 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS 0xe800 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_BYTE_SIZE 0x0050 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_BYTE_SIZE 0x0007 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 40 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_SIZE 6 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_ADDRESS 0xe850 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_BYTE_SIZE 0x0010 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_LOG2_BYTE_SIZE 0x0004 +#define IPV4_HOST_ADDRESS_TABLE_ADDRESS 0xe860 +#define IPV4_HOST_ADDRESS_TABLE_BYTE_SIZE 0x0020 +#define IPV4_HOST_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPV4_HOST_ADDRESS_TABLE_SIZE 8 +#define RDD_IPV4_HOST_ADDRESS_TABLE_LOG2_SIZE 3 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS 0xe880 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_BYTE_SIZE 0x0050 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_BYTE_SIZE 0x0007 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 40 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_SIZE 6 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS 0xe8d0 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_BYTE_SIZE 0x0080 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE 2 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE 1 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 64 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE2 6 +#define US_DHD_BACKUP_ENTRY_SCRATCH_ADDRESS 0xe950 +#define US_DHD_BACKUP_ENTRY_SCRATCH_BYTE_SIZE 0x0010 +#define US_DHD_BACKUP_ENTRY_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS 0xe960 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_BYTE_SIZE 0x0020 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_SIZE 4 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_ADDRESS 0xe980 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_BYTE_SIZE 0x0080 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_LOG2_BYTE_SIZE 0x0007 +#define MAIN_B_DEBUG_TRACE_ADDRESS 0xea00 +#define MAIN_B_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define MAIN_B_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAIN_B_DEBUG_TRACE_SIZE 512 +#define RDD_MAIN_B_DEBUG_TRACE_LOG2_SIZE 9 +#define PICO_B_DEBUG_TRACE_ADDRESS 0xec00 +#define PICO_B_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define PICO_B_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_PICO_B_DEBUG_TRACE_SIZE 512 +#define RDD_PICO_B_DEBUG_TRACE_LOG2_SIZE 9 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_ADDRESS 0xee00 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_BYTE_SIZE 0x0080 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_LOG2_BYTE_SIZE 0x0007 +#define LAN0_INGRESS_FIFO_ADDRESS 0xee80 +#define LAN0_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN0_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN5_INGRESS_FIFO_ADDRESS 0xeec0 +#define LAN5_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN5_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN1_INGRESS_FIFO_ADDRESS 0xef00 +#define LAN1_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN1_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN6_INGRESS_FIFO_ADDRESS 0xef40 +#define LAN6_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN6_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN2_INGRESS_FIFO_ADDRESS 0xef80 +#define LAN2_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN2_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN7_INGRESS_FIFO_ADDRESS 0xefc0 +#define LAN7_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN7_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define RUNNER_FWTRACE_PICOB_BASE_ADDRESS 0xf000 +#define RUNNER_FWTRACE_PICOB_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_PICOB_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_PICOB_BASE_LOG2_SIZE 7 +#define LAN3_INGRESS_FIFO_ADDRESS 0xf400 +#define LAN3_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN3_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define US_DHD_BACKUP_INDEX_CACHE_ADDRESS 0xf440 +#define US_DHD_BACKUP_INDEX_CACHE_BYTE_SIZE 0x0040 +#define US_DHD_BACKUP_INDEX_CACHE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE 32 +#define RDD_US_DHD_BACKUP_INDEX_CACHE_LOG2_SIZE 5 +#define LAN4_INGRESS_FIFO_ADDRESS 0xf480 +#define LAN4_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN4_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define DHD_DOORBELL_COUNTERS_ADDRESS 0xf4c0 +#define DHD_DOORBELL_COUNTERS_BYTE_SIZE 0x0030 +#define DHD_DOORBELL_COUNTERS_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_DOORBELL_COUNTERS_SIZE 48 +#define RDD_DHD_DOORBELL_COUNTERS_LOG2_SIZE 6 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ADDRESS 0xf4f0 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_BYTE_SIZE 0x0010 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_LOG2_BYTE_SIZE 0x0004 +#define WAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0xf500 +#define WAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define WAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_ADDRESS 0xf540 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0014 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define US_CAM_DHD_DMA_SCRATCH_ADDRESS 0xf554 +#define US_CAM_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_CAM_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_DHD_BACKUP_FLUSH_SCRATCH_ADDRESS 0xf558 +#define US_DHD_BACKUP_FLUSH_SCRATCH_BYTE_SIZE 0x0008 +#define US_DHD_BACKUP_FLUSH_SCRATCH_LOG2_BYTE_SIZE 0x0003 +#define US_ENQ_DHD_DMA_SCRATCH_ADDRESS 0xf560 +#define US_ENQ_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_ENQ_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_R2D_DHD_DMA_SCRATCH_ADDRESS 0xf564 +#define US_R2D_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_R2D_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_ADDRESS 0xf568 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_BYTE_SIZE 0x0004 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE 4 +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_LOG2_SIZE 2 +#define COMMON_B_DUMMY_STORE_ADDRESS 0xf56c +#define COMMON_B_DUMMY_STORE_BYTE_SIZE 0x0001 +#define COMMON_B_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_ADDRESS 0xf56d +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_BYTE_SIZE 0x0001 +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_LOG2_BYTE_SIZE 0x0001 +/* DDR */ +#define BPM_PACKET_BUFFERS_ADDRESS 0x0000 +#define BPM_PACKET_BUFFERS_BYTE_SIZE 0xf00000 +#define BPM_PACKET_BUFFERS_LOG2_BYTE_SIZE 0x0018 +#define RDD_BPM_PACKET_BUFFERS_SIZE 7680 +#define RDD_BPM_PACKET_BUFFERS_LOG2_SIZE 13 +#define DS_CONNECTION_TABLE_ADDRESS 0x0000 +#define DS_CONNECTION_TABLE_BYTE_SIZE 0x80000 +#define DS_CONNECTION_TABLE_LOG2_BYTE_SIZE 0x0013 +#define RDD_DS_CONNECTION_TABLE_SIZE 32768 +#define RDD_DS_CONNECTION_TABLE_LOG2_SIZE 15 +#define US_CONNECTION_TABLE_ADDRESS 0x80000 +#define US_CONNECTION_TABLE_BYTE_SIZE 0x80000 +#define US_CONNECTION_TABLE_LOG2_BYTE_SIZE 0x0013 +#define RDD_US_CONNECTION_TABLE_SIZE 32768 +#define RDD_US_CONNECTION_TABLE_LOG2_SIZE 15 +#define CONTEXT_TABLE_ADDRESS 0x100000 +#define CONTEXT_TABLE_BYTE_SIZE 0x214200 +#define CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0016 +#define RDD_CONTEXT_TABLE_SIZE 16512 +#define RDD_CONTEXT_TABLE_LOG2_SIZE 15 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_ADDRESS 0x5d1500 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_BYTE_SIZE 0x00a0 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE 8 +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_LOG2_SIZE 3 +#define DHD_RX_POST_DDR_BUFFER_ADDRESS 0x5c1100 +#define DHD_RX_POST_DDR_BUFFER_BYTE_SIZE 0x8000 +#define DHD_RX_POST_DDR_BUFFER_LOG2_BYTE_SIZE 0x000f +#define RDD_DHD_RX_POST_DDR_BUFFER_SIZE 1024 +#define RDD_DHD_RX_POST_DDR_BUFFER_LOG2_SIZE 10 +#define DHD_RX_COMPLETE_DDR_BUFFER_ADDRESS 0x5c9100 +#define DHD_RX_COMPLETE_DDR_BUFFER_BYTE_SIZE 0x8000 +#define DHD_RX_COMPLETE_DDR_BUFFER_LOG2_BYTE_SIZE 0x000f +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE 1024 +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_LOG2_SIZE 10 +#define DHD_TX_POST_DDR_BUFFER_ADDRESS 0x5d15a0 +#define DHD_TX_POST_DDR_BUFFER_BYTE_SIZE 0x1800 +#define DHD_TX_POST_DDR_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE 8 +#define RDD_DHD_TX_POST_DDR_BUFFER_LOG2_SIZE 3 +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 16 +#define RDD_DHD_TX_POST_DDR_BUFFER_LOG2_SIZE2 4 +#define DHD_TX_COMPLETE_DDR_BUFFER_ADDRESS 0x5d2da0 +#define DHD_TX_COMPLETE_DDR_BUFFER_BYTE_SIZE 0x0100 +#define DHD_TX_COMPLETE_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE 16 +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_LOG2_SIZE 4 +#define R2D_WR_ARR_DDR_BUFFER_ADDRESS 0x5d1100 +#define R2D_WR_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define R2D_WR_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_R2D_WR_ARR_DDR_BUFFER_SIZE 128 +#define RDD_R2D_WR_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define D2R_RD_ARR_DDR_BUFFER_ADDRESS 0x5d1200 +#define D2R_RD_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define D2R_RD_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_D2R_RD_ARR_DDR_BUFFER_SIZE 128 +#define RDD_D2R_RD_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define R2D_RD_ARR_DDR_BUFFER_ADDRESS 0x5d1300 +#define R2D_RD_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define R2D_RD_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_R2D_RD_ARR_DDR_BUFFER_SIZE 128 +#define RDD_R2D_RD_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define D2R_WR_ARR_DDR_BUFFER_ADDRESS 0x5d1400 +#define D2R_WR_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define D2R_WR_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_D2R_WR_ARR_DDR_BUFFER_SIZE 128 +#define RDD_D2R_WR_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define DHD_BACKUP_QUEUES_BUFFER_ADDRESS 0x600000 +#define DHD_BACKUP_QUEUES_BUFFER_BYTE_SIZE 0x100000 +#define DHD_BACKUP_QUEUES_BUFFER_LOG2_BYTE_SIZE 0x0014 +#define RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE 524288 +#define RDD_DHD_BACKUP_QUEUES_BUFFER_LOG2_SIZE 19 +#define WLAN_MCAST_DHD_LIST_TABLE_ADDRESS 0x5c0000 +#define WLAN_MCAST_DHD_LIST_TABLE_BYTE_SIZE 0x1000 +#define WLAN_MCAST_DHD_LIST_TABLE_LOG2_BYTE_SIZE 0x000c +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_LOG2_SIZE 6 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_ADDRESS 0x5c1000 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_BYTE_SIZE 0x0001 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_LOG2_BYTE_SIZE 0x0001 +/* PSRAM */ +#endif +#ifdef WL4908 +/* PRIVATE_A */ +#define INGRESS_HANDLER_BUFFER_ADDRESS 0x0000 +#define INGRESS_HANDLER_BUFFER_BYTE_SIZE 0x2000 +#define INGRESS_HANDLER_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_INGRESS_HANDLER_BUFFER_SIZE 32 +#define RDD_INGRESS_HANDLER_BUFFER_LOG2_SIZE 5 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS 0x2000 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_BYTE_SIZE 0x4000 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_LOG2_BYTE_SIZE 0x000e +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE 2048 +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_LOG2_SIZE 11 +#define DS_CONNECTION_CONTEXT_BUFFER_ADDRESS 0x6000 +#define DS_CONNECTION_CONTEXT_BUFFER_BYTE_SIZE 0x0400 +#define DS_CONNECTION_CONTEXT_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_LOG2_SIZE 3 +#define DS_GSO_HEADER_BUFFER_ADDRESS 0x6400 +#define DS_GSO_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_GSO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_GSO_PSEUDO_HEADER_BUFFER_ADDRESS 0x6480 +#define DS_GSO_PSEUDO_HEADER_BUFFER_BYTE_SIZE 0x0028 +#define DS_GSO_PSEUDO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x64a8 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0008 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 2 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_ADDRESS 0x64b0 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_BYTE_SIZE 0x0010 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_SIZE 8 +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_LOG2_SIZE 3 +#define DS_CPU_REASON_TO_METER_TABLE_ADDRESS 0x64c0 +#define DS_CPU_REASON_TO_METER_TABLE_BYTE_SIZE 0x0040 +#define DS_CPU_REASON_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE 64 +#define RDD_DS_CPU_REASON_TO_METER_TABLE_LOG2_SIZE 6 +#define DS_GSO_CHUNK_BUFFER_ADDRESS 0x6500 +#define DS_GSO_CHUNK_BUFFER_BYTE_SIZE 0x0080 +#define DS_GSO_CHUNK_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_CPU_RX_METER_TABLE_ADDRESS 0x6580 +#define DS_CPU_RX_METER_TABLE_BYTE_SIZE 0x0080 +#define DS_CPU_RX_METER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_CPU_RX_METER_TABLE_SIZE 16 +#define RDD_DS_CPU_RX_METER_TABLE_LOG2_SIZE 4 +#define DS_POLICER_TABLE_ADDRESS 0x6600 +#define DS_POLICER_TABLE_BYTE_SIZE 0x0100 +#define DS_POLICER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_POLICER_TABLE_SIZE 16 +#define RDD_DS_POLICER_TABLE_LOG2_SIZE 4 +#define IPSEC_DS_BUFFER_POOL_ADDRESS 0x6700 +#define IPSEC_DS_BUFFER_POOL_BYTE_SIZE 0x0160 +#define IPSEC_DS_BUFFER_POOL_LOG2_BYTE_SIZE 0x0009 +#define RDD_IPSEC_DS_BUFFER_POOL_SIZE 2 +#define RDD_IPSEC_DS_BUFFER_POOL_LOG2_SIZE 1 +#define IPSEC_DS_SA_DESC_TABLE_ADDRESS 0x6860 +#define IPSEC_DS_SA_DESC_TABLE_BYTE_SIZE 0x0500 +#define IPSEC_DS_SA_DESC_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_IPSEC_DS_SA_DESC_TABLE_SIZE 16 +#define RDD_IPSEC_DS_SA_DESC_TABLE_LOG2_SIZE 4 +#define IPSEC_US_SA_DESC_TABLE_ADDRESS 0x6d60 +#define IPSEC_US_SA_DESC_TABLE_BYTE_SIZE 0x0500 +#define IPSEC_US_SA_DESC_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_IPSEC_US_SA_DESC_TABLE_SIZE 16 +#define RDD_IPSEC_US_SA_DESC_TABLE_LOG2_SIZE 4 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_ADDRESS 0x7260 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_BYTE_SIZE 0x0300 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_LOG2_SIZE 5 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x7560 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define DS_SPDSVC_CONTEXT_TABLE_ADDRESS 0x7580 +#define DS_SPDSVC_CONTEXT_TABLE_BYTE_SIZE 0x0050 +#define DS_SPDSVC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x75d0 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0010 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 3 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS 0x75e0 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_BYTE_SIZE 0x0100 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_LOG2_SIZE 5 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x76e0 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define WLAN_MCAST_CONTROL_TABLE_ADDRESS 0x7700 +#define WLAN_MCAST_CONTROL_TABLE_BYTE_SIZE 0x0094 +#define WLAN_MCAST_CONTROL_TABLE_LOG2_BYTE_SIZE 0x0008 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_ADDRESS 0x7794 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_BYTE_SIZE 0x0004 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DS_TOTAL_PPS_RATE_LIMITER_ADDRESS 0x7798 +#define DS_TOTAL_PPS_RATE_LIMITER_BYTE_SIZE 0x0008 +#define DS_TOTAL_PPS_RATE_LIMITER_LOG2_BYTE_SIZE 0x0003 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS 0x77a0 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_BYTE_SIZE 0x0020 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE 1 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE2 4 +#define RATE_LIMITER_REMAINDER_TABLE_ADDRESS 0x77c0 +#define RATE_LIMITER_REMAINDER_TABLE_BYTE_SIZE 0x0040 +#define RATE_LIMITER_REMAINDER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE 32 +#define RDD_RATE_LIMITER_REMAINDER_TABLE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS 0x7800 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_SIZE 8 +#define FC_MCAST_CONNECTION2_TABLE_ADDRESS 0x8000 +#define FC_MCAST_CONNECTION2_TABLE_BYTE_SIZE 0x0800 +#define FC_MCAST_CONNECTION2_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_FC_MCAST_CONNECTION2_TABLE_SIZE 128 +#define RDD_FC_MCAST_CONNECTION2_TABLE_LOG2_SIZE 7 +#define ETH_TX_QUEUES_POINTERS_TABLE_ADDRESS 0x8800 +#define ETH_TX_QUEUES_POINTERS_TABLE_BYTE_SIZE 0x0120 +#define ETH_TX_QUEUES_POINTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE 72 +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_LOG2_SIZE 7 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_ADDRESS 0x8920 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_BYTE_SIZE 0x0020 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS 0x8940 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define SBPM_REPLY_ADDRESS 0x8980 +#define SBPM_REPLY_BYTE_SIZE 0x0080 +#define SBPM_REPLY_LOG2_BYTE_SIZE 0x0007 +#define DS_WAN_FLOW_TABLE_ADDRESS 0x8a00 +#define DS_WAN_FLOW_TABLE_BYTE_SIZE 0x0200 +#define DS_WAN_FLOW_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_WAN_FLOW_TABLE_SIZE 256 +#define RDD_DS_WAN_FLOW_TABLE_LOG2_SIZE 8 +#define DS_CONNECTION_CONTEXT_REMAINING_BUFFER_ADDRESS 0x8c00 +#define DS_CONNECTION_CONTEXT_REMAINING_BUFFER_BYTE_SIZE 0x0260 +#define DS_CONNECTION_CONTEXT_REMAINING_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_LOG2_SIZE 3 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS 0x8e60 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_BYTE_SIZE 0x0020 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_SIZE 2 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS 0x8e80 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_BYTE_SIZE 0x0080 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE 1 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE2 4 +#define DS_FORWARDING_MATRIX_TABLE_ADDRESS 0x8f00 +#define DS_FORWARDING_MATRIX_TABLE_BYTE_SIZE 0x0090 +#define DS_FORWARDING_MATRIX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_DS_FORWARDING_MATRIX_TABLE_LOG2_SIZE 4 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 16 +#define RDD_DS_FORWARDING_MATRIX_TABLE_LOG2_SIZE2 4 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0x8f90 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0010 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0x8fa0 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define LAN_TX_ACB_COUNTER_TABLE_ADDRESS 0x8fc0 +#define LAN_TX_ACB_COUNTER_TABLE_BYTE_SIZE 0x0040 +#define LAN_TX_ACB_COUNTER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_LAN_TX_ACB_COUNTER_TABLE_SIZE 64 +#define RDD_LAN_TX_ACB_COUNTER_TABLE_LOG2_SIZE 6 +#define DS_WAN_UDP_FILTER_TABLE_ADDRESS 0x9000 +#define DS_WAN_UDP_FILTER_TABLE_BYTE_SIZE 0x0200 +#define DS_WAN_UDP_FILTER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_WAN_UDP_FILTER_TABLE_SIZE 32 +#define RDD_DS_WAN_UDP_FILTER_TABLE_LOG2_SIZE 5 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0x9200 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9240 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9280 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_ADDRESS 0x92c0 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_BYTE_SIZE 0x0030 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINA_PARAM_ADDRESS 0x92f0 +#define RUNNER_FWTRACE_MAINA_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINA_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_LOG2_SIZE 1 +#define DS_RATE_LIMITER_TABLE_ADDRESS 0x9300 +#define DS_RATE_LIMITER_TABLE_BYTE_SIZE 0x0100 +#define DS_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_RATE_LIMITER_TABLE_SIZE 32 +#define RDD_DS_RATE_LIMITER_TABLE_LOG2_SIZE 5 +#define ETH_TX_QUEUES_TABLE_ADDRESS 0x9400 +#define ETH_TX_QUEUES_TABLE_BYTE_SIZE 0x0480 +#define ETH_TX_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_ETH_TX_QUEUES_TABLE_SIZE 72 +#define RDD_ETH_TX_QUEUES_TABLE_LOG2_SIZE 7 +#define INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS 0x9880 +#define INGRESS_HANDLER_SKB_DATA_POINTER_BYTE_SIZE 0x0080 +#define INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_SIZE 5 +#define DS_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x9900 +#define DS_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x9980 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define FC_MCAST_PORT_HEADER_BUFFER_ADDRESS 0x9a00 +#define FC_MCAST_PORT_HEADER_BUFFER_BYTE_SIZE 0x0200 +#define FC_MCAST_PORT_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE 8 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_LOG2_SIZE 3 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 64 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_LOG2_SIZE2 6 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_ADDRESS 0x9c00 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_BYTE_SIZE 0x0200 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_LOG2_BYTE_SIZE 0x0009 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE 64 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_LOG2_SIZE 6 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_ADDRESS 0x9e00 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_BYTE_SIZE 0x0200 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_LOG2_SIZE 3 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS 0xa000 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_BYTE_SIZE 0x0200 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE 64 +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_CPU_TX_BBH_DESCRIPTORS_ADDRESS 0xa200 +#define DS_CPU_TX_BBH_DESCRIPTORS_BYTE_SIZE 0x0100 +#define DS_CPU_TX_BBH_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_LOG2_SIZE 5 +#define DS_PROFILING_BUFFER_PICO_RUNNER_ADDRESS 0xa300 +#define DS_PROFILING_BUFFER_PICO_RUNNER_BYTE_SIZE 0x0100 +#define DS_PROFILING_BUFFER_PICO_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define GSO_PICO_QUEUE_ADDRESS 0xa400 +#define GSO_PICO_QUEUE_BYTE_SIZE 0x0200 +#define GSO_PICO_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_GSO_PICO_QUEUE_SIZE 64 +#define RDD_GSO_PICO_QUEUE_LOG2_SIZE 6 +#define DHD_TX_POST_PD_INGRESS_QUEUE_ADDRESS 0xa600 +#define DHD_TX_POST_PD_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define DHD_TX_POST_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_SIZE 32 +#define RDD_DHD_TX_POST_PD_INGRESS_QUEUE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS 0xa700 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_BYTE_SIZE 0x0080 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_SIZE 4 +#define ETH_TX_LOCAL_REGISTERS_ADDRESS 0xa780 +#define ETH_TX_LOCAL_REGISTERS_BYTE_SIZE 0x0048 +#define ETH_TX_LOCAL_REGISTERS_LOG2_BYTE_SIZE 0x0007 +#define RDD_ETH_TX_LOCAL_REGISTERS_SIZE 9 +#define RDD_ETH_TX_LOCAL_REGISTERS_LOG2_SIZE 4 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS 0xa7c8 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_BYTE_SIZE 0x0008 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_SIZE 1 +#define RUNNER_FWTRACE_PICOA_PARAM_ADDRESS 0xa7d0 +#define RUNNER_FWTRACE_PICOA_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_PICOA_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_LOG2_SIZE 1 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xa7e0 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define IPSEC_DS_QUEUE_ADDRESS 0xa800 +#define IPSEC_DS_QUEUE_BYTE_SIZE 0x0200 +#define IPSEC_DS_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_IPSEC_DS_QUEUE_SIZE 64 +#define RDD_IPSEC_DS_QUEUE_LOG2_SIZE 6 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS 0xaa00 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x00c0 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE 4 +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_ADDRESS 0xaac0 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0030 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE 3 +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_LOG2_SIZE 2 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS 0xaaf0 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_BYTE_SIZE 0x0010 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_BYTE_SIZE 0x0004 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 8 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_SIZE 3 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0xab00 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 16 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 4 +#define DS_QUEUE_PROFILE_TABLE_ADDRESS 0xab80 +#define DS_QUEUE_PROFILE_TABLE_BYTE_SIZE 0x0080 +#define DS_QUEUE_PROFILE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_QUEUE_PROFILE_TABLE_SIZE 8 +#define RDD_DS_QUEUE_PROFILE_TABLE_LOG2_SIZE 3 +#define CPU_TX_FAST_QUEUE_ADDRESS 0xac00 +#define CPU_TX_FAST_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_FAST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_FAST_QUEUE_SIZE 16 +#define RDD_CPU_TX_FAST_QUEUE_LOG2_SIZE 4 +#define DS_SQ_ENQUEUE_QUEUE_ADDRESS 0xac80 +#define DS_SQ_ENQUEUE_QUEUE_BYTE_SIZE 0x0040 +#define DS_SQ_ENQUEUE_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_SQ_ENQUEUE_QUEUE_SIZE 64 +#define RDD_DS_SQ_ENQUEUE_QUEUE_LOG2_SIZE 6 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_ADDRESS 0xacc0 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_BYTE_SIZE 0x0040 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define CPU_TX_PICO_QUEUE_ADDRESS 0xad00 +#define CPU_TX_PICO_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_PICO_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_PICO_QUEUE_SIZE 16 +#define RDD_CPU_TX_PICO_QUEUE_LOG2_SIZE 4 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS 0xad80 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_LOG2_SIZE 6 +#define MULTICAST_HEADER_BUFFER_ADDRESS 0xadc0 +#define MULTICAST_HEADER_BUFFER_BYTE_SIZE 0x0040 +#define MULTICAST_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_ADDRESS 0xae00 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_BYTE_SIZE 0x0080 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE 16 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_LOG2_SIZE 4 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_ADDRESS 0xae80 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE 64 +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xaec0 +#define DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xaee0 +#define DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define CPU_RX_PD_INGRESS_QUEUE_ADDRESS 0xaf00 +#define CPU_RX_PD_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define CPU_RX_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE 16 +#define RDD_CPU_RX_PD_INGRESS_QUEUE_LOG2_SIZE 4 +#define DS_ROUTER_INGRESS_QUEUE_ADDRESS 0xaf80 +#define DS_ROUTER_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_ROUTER_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_ROUTER_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_ROUTER_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xafc0 +#define DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define DS_NULL_BUFFER_ADDRESS 0xafe0 +#define DS_NULL_BUFFER_BYTE_SIZE 0x0018 +#define DS_NULL_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_NULL_BUFFER_SIZE 3 +#define RDD_DS_NULL_BUFFER_LOG2_SIZE 2 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS 0xaff8 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_BYTE_SIZE 0x0008 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0003 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_ADDRESS 0xb000 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE 16 +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_LOG2_SIZE 4 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS 0xb080 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS 0xb0c0 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define DS_DHD_TX_POST_HEADER_SCRATCH_ADDRESS 0xb100 +#define DS_DHD_TX_POST_HEADER_SCRATCH_BYTE_SIZE 0x0080 +#define DS_DHD_TX_POST_HEADER_SCRATCH_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE 4 +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_LOG2_SIZE 2 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS 0xb180 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_BYTE_SIZE 0x00a0 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_LOG2_BYTE_SIZE 0x0008 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE 5 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_LOG2_SIZE 3 +#define DS_DEBUG_BUFFER_ADDRESS 0xb220 +#define DS_DEBUG_BUFFER_BYTE_SIZE 0x0080 +#define DS_DEBUG_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_DEBUG_BUFFER_SIZE 32 +#define RDD_DS_DEBUG_BUFFER_LOG2_SIZE 5 +#define DHD_COMPLETE_RING_BUFFER_ADDRESS 0xb2a0 +#define DHD_COMPLETE_RING_BUFFER_BYTE_SIZE 0x0018 +#define DHD_COMPLETE_RING_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DHD_COMPLETE_RING_BUFFER_SIZE 3 +#define RDD_DHD_COMPLETE_RING_BUFFER_LOG2_SIZE 2 +#define DS_FAST_MALLOC_RESULT_TABLE_ADDRESS 0xb2b8 +#define DS_FAST_MALLOC_RESULT_TABLE_BYTE_SIZE 0x0008 +#define DS_FAST_MALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_FAST_MALLOC_RESULT_TABLE_SIZE 2 +#define RDD_DS_FAST_MALLOC_RESULT_TABLE_LOG2_SIZE 1 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xb2c0 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0050 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE 10 +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_LOG2_SIZE 4 +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS 0xb310 +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_BYTE_SIZE 0x000a +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0004 +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xb31a +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_ADDRESS 0xb31c +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_FW_MAC_ADDRS_ADDRESS 0xb320 +#define DS_FW_MAC_ADDRS_BYTE_SIZE 0x0080 +#define DS_FW_MAC_ADDRS_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_FW_MAC_ADDRS_SIZE 16 +#define RDD_DS_FW_MAC_ADDRS_LOG2_SIZE 4 +#define DS_CPU_PARAMETERS_BLOCK_ADDRESS 0xb3a0 +#define DS_CPU_PARAMETERS_BLOCK_BYTE_SIZE 0x0014 +#define DS_CPU_PARAMETERS_BLOCK_LOG2_BYTE_SIZE 0x0005 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xb3b4 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_PICO_MALLOC_RESULT_TABLE_ADDRESS 0xb3b8 +#define DS_PICO_MALLOC_RESULT_TABLE_BYTE_SIZE 0x0008 +#define DS_PICO_MALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_PICO_MALLOC_RESULT_TABLE_SIZE 2 +#define RDD_DS_PICO_MALLOC_RESULT_TABLE_LOG2_SIZE 1 +#define FC_MCAST_CONNECTION_TABLE_PLUS_ADDRESS 0xb3c0 +#define FC_MCAST_CONNECTION_TABLE_PLUS_BYTE_SIZE 0x0014 +#define FC_MCAST_CONNECTION_TABLE_PLUS_LOG2_BYTE_SIZE 0x0005 +#define DS_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xb3d4 +#define DS_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS 0xb3d8 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_BYTE_SIZE 0x0008 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_SIZE 3 +#define DS_DATA_POINTER_DUMMY_TARGET_ADDRESS 0xb3e0 +#define DS_DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0014 +#define DS_DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE 5 +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_LOG2_SIZE 3 +#define DS_BPM_DDR_BUFFERS_BASE_ADDRESS 0xb3f4 +#define DS_BPM_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_ADDRESS 0xb3f8 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_BYTE_SIZE 0x0006 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xb3fe +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define GPON_RX_DIRECT_DESCRIPTORS_ADDRESS 0xb400 +#define GPON_RX_DIRECT_DESCRIPTORS_BYTE_SIZE 0x0100 +#define GPON_RX_DIRECT_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE 32 +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_LOG2_SIZE 5 +#define DS_GSO_CONTEXT_TABLE_ADDRESS 0xb500 +#define DS_GSO_CONTEXT_TABLE_BYTE_SIZE 0x0084 +#define DS_GSO_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0008 +#define DS_BPM_DDR_1_BUFFERS_BASE_ADDRESS 0xb584 +#define DS_BPM_DDR_1_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_1_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_CONNECTION_TABLE_CONFIG_ADDRESS 0xb588 +#define DS_CONNECTION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONNECTION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_CONTEXT_TABLE_CONFIG_ADDRESS 0xb58c +#define DS_CONTEXT_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONTEXT_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS 0xb590 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_BYTE_SIZE 0x0010 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_BYTE_SIZE 0x0004 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 8 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_SIZE 3 +#define SERVICE_QUEUES_WLAN_SCRATCH_ADDRESS 0xb5a0 +#define SERVICE_QUEUES_WLAN_SCRATCH_BYTE_SIZE 0x0014 +#define SERVICE_QUEUES_WLAN_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS 0xb5b4 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_BYTE_SIZE 0x0004 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_SIZE 2 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS 0xb5b8 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_BYTE_SIZE 0x0004 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_SIZE 2 +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_ADDRESS 0xb5bc +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_BYTE_SIZE 0x0004 +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_LOG2_BYTE_SIZE 0x0002 +#define DS_DHD_FLOW_RING_DROP_COUNTER_ADDRESS 0xb5c0 +#define DS_DHD_FLOW_RING_DROP_COUNTER_BYTE_SIZE 0x0014 +#define DS_DHD_FLOW_RING_DROP_COUNTER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_LOG2_SIZE 3 +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_ADDRESS 0xb5d4 +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS 0xb5d8 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_BYTE_SIZE 0x0008 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_SIZE 3 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb5e0 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define HASH_BUFFER_ADDRESS 0xb5f0 +#define HASH_BUFFER_BYTE_SIZE 0x0010 +#define HASH_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define DS_GSO_DESC_TABLE_ADDRESS 0xb600 +#define DS_GSO_DESC_TABLE_BYTE_SIZE 0x0080 +#define DS_GSO_DESC_TABLE_LOG2_BYTE_SIZE 0x0007 +#define DS_DHD_TX_POST_INGRESS_QUEUE_ADDRESS 0xb680 +#define DS_DHD_TX_POST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_DHD_TX_POST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_SYSTEM_CONFIGURATION_ADDRESS 0xb6c0 +#define DS_SYSTEM_CONFIGURATION_BYTE_SIZE 0x0024 +#define DS_SYSTEM_CONFIGURATION_LOG2_BYTE_SIZE 0x0006 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xb6e4 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_ADDRESS 0xb6e8 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_BYTE_SIZE 0x0008 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_LOG2_BYTE_SIZE 0x0003 +#define RUNNER_FLOW_IH_RESPONSE_ADDRESS 0xb6f0 +#define RUNNER_FLOW_IH_RESPONSE_BYTE_SIZE 0x0008 +#define RUNNER_FLOW_IH_RESPONSE_LOG2_BYTE_SIZE 0x0003 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_ADDRESS 0xb6f8 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_BYTE_SIZE 0x0008 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_LOG2_BYTE_SIZE 0x0003 +#define WLAN_MCAST_INGRESS_QUEUE_ADDRESS 0xb700 +#define WLAN_MCAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define WLAN_MCAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE 64 +#define RDD_WLAN_MCAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb740 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS 0xb750 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_BYTE_SIZE 0x0010 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_SIZE 3 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS 0xb760 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_BYTE_SIZE 0x0010 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define IPSEC_DS_SA_DESC_CAM_TABLE_ADDRESS 0xb770 +#define IPSEC_DS_SA_DESC_CAM_TABLE_BYTE_SIZE 0x0020 +#define IPSEC_DS_SA_DESC_CAM_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE 16 +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_LOG2_SIZE 4 +#define IPSEC_US_SA_DESC_CAM_TABLE_ADDRESS 0xb790 +#define IPSEC_US_SA_DESC_CAM_TABLE_BYTE_SIZE 0x0020 +#define IPSEC_US_SA_DESC_CAM_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE 16 +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_LOG2_SIZE 4 +#define ETH_TX_SCRATCH_ADDRESS 0xb7b0 +#define ETH_TX_SCRATCH_BYTE_SIZE 0x0010 +#define ETH_TX_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define RDD_ETH_TX_SCRATCH_SIZE 16 +#define RDD_ETH_TX_SCRATCH_LOG2_SIZE 4 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_ADDRESS 0xb7c0 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_BYTE_SIZE 0x0018 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_LOG2_BYTE_SIZE 0x0005 +#define GSO_TX_DHD_L2_BUFFER_ADDRESS 0xb7d8 +#define GSO_TX_DHD_L2_BUFFER_BYTE_SIZE 0x0016 +#define GSO_TX_DHD_L2_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_GSO_TX_DHD_L2_BUFFER_SIZE 22 +#define RDD_GSO_TX_DHD_L2_BUFFER_LOG2_SIZE 5 +#define IPTV_COUNTERS_BUFFER_ADDRESS 0xb7ee +#define IPTV_COUNTERS_BUFFER_BYTE_SIZE 0x0002 +#define IPTV_COUNTERS_BUFFER_LOG2_BYTE_SIZE 0x0001 +#define CPU_TX_DHD_L2_BUFFER_ADDRESS 0xb7f0 +#define CPU_TX_DHD_L2_BUFFER_BYTE_SIZE 0x0016 +#define CPU_TX_DHD_L2_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_CPU_TX_DHD_L2_BUFFER_SIZE 22 +#define RDD_CPU_TX_DHD_L2_BUFFER_LOG2_SIZE 5 +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xb806 +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xb808 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define SPDSVC_HOST_BUF_PTR_ADDRESS 0xb80c +#define SPDSVC_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define SPDSVC_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_ADDRESS 0xb810 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_BYTE_SIZE 0x0010 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_ADDRESS 0xb820 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_ADDRESS 0xb830 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_ADDRESS 0xb840 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_ADDRESS 0xb850 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_BYTE_SIZE 0x0005 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_LOG2_BYTE_SIZE 0x0003 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE 5 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_LOG2_SIZE 3 +#define ETH_TX_EMACS_STATUS_ADDRESS 0xb855 +#define ETH_TX_EMACS_STATUS_BYTE_SIZE 0x0001 +#define ETH_TX_EMACS_STATUS_LOG2_BYTE_SIZE 0x0001 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_ADDRESS 0xb856 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_BYTE_SIZE 0x0002 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define HASH_BASED_FORWARDING_PORT_TABLE_ADDRESS 0xb858 +#define HASH_BASED_FORWARDING_PORT_TABLE_BYTE_SIZE 0x0004 +#define HASH_BASED_FORWARDING_PORT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE 4 +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_LOG2_SIZE 2 +#define DS_CPU_TX_DATA_POINTER_DUMMY_TARGET_ADDRESS 0xb85c +#define DS_CPU_TX_DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0004 +#define DS_CPU_TX_DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0002 +#define FIREWALL_IPV6_R16_BUFFER_ADDRESS 0xb860 +#define FIREWALL_IPV6_R16_BUFFER_BYTE_SIZE 0x0004 +#define FIREWALL_IPV6_R16_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb864 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_ADDRESS 0xb866 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xb868 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_ADDRESS 0xb86a +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_LOG2_BYTE_SIZE 0x0001 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_ADDRESS 0xb86c +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_LOG2_BYTE_SIZE 0x0001 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_ADDRESS 0xb86e +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS 0xb870 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_ANY_SRC_PORT_FLOW_COUNTER_ADDRESS 0xb872 +#define DS_ANY_SRC_PORT_FLOW_COUNTER_BYTE_SIZE 0x0002 +#define DS_ANY_SRC_PORT_FLOW_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define GSO_DESC_PTR_ADDRESS 0xb874 +#define GSO_DESC_PTR_BYTE_SIZE 0x0004 +#define GSO_DESC_PTR_LOG2_BYTE_SIZE 0x0002 +#define GSO_TX_DHD_HOST_BUF_PTR_ADDRESS 0xb878 +#define GSO_TX_DHD_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define GSO_TX_DHD_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE 4 +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_LOG2_SIZE 2 +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_ADDRESS 0xb87c +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_BYTE_SIZE 0x0004 +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define CPU_TX_DHD_HOST_BUF_PTR_ADDRESS 0xb880 +#define CPU_TX_DHD_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define CPU_TX_DHD_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE 4 +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_LOG2_SIZE 2 +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_ADDRESS 0xb884 +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_BYTE_SIZE 0x0004 +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_LOG2_BYTE_SIZE 0x0002 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_ADDRESS 0xb888 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_BYTE_SIZE 0x0002 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_LOG2_BYTE_SIZE 0x0001 +#define DS_MEMLIB_SEMAPHORE_ADDRESS 0xb88a +#define DS_MEMLIB_SEMAPHORE_BYTE_SIZE 0x0002 +#define DS_MEMLIB_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define WAN_PHYSICAL_PORT_ADDRESS 0xb88c +#define WAN_PHYSICAL_PORT_BYTE_SIZE 0x0002 +#define WAN_PHYSICAL_PORT_LOG2_BYTE_SIZE 0x0001 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb88e +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_RUNNER_CONGESTION_STATE_ADDRESS 0xb890 +#define DS_RUNNER_CONGESTION_STATE_BYTE_SIZE 0x0002 +#define DS_RUNNER_CONGESTION_STATE_LOG2_BYTE_SIZE 0x0001 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_ADDRESS 0xb892 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_BYTE_SIZE 0x0002 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_LOG2_BYTE_SIZE 0x0001 +#define GSO_PICO_QUEUE_PTR_ADDRESS 0xb894 +#define GSO_PICO_QUEUE_PTR_BYTE_SIZE 0x0002 +#define GSO_PICO_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_ADDRESS 0xb896 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_BYTE_SIZE 0x0002 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_ADDRESS 0xb898 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_BYTE_SIZE 0x0002 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_ADDRESS 0xb89a +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_BYTE_SIZE 0x0002 +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_ADDRESS 0xb89c +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_BYTE_SIZE 0x0002 +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_DDR_SA_DESC_SIZE_ADDRESS 0xb89e +#define IPSEC_DS_DDR_SA_DESC_SIZE_BYTE_SIZE 0x0002 +#define IPSEC_DS_DDR_SA_DESC_SIZE_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_QUEUE_PTR_ADDRESS 0xb8a0 +#define IPSEC_DS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define IPSEC_DS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_IP_LENGTH_ADDRESS 0xb8a2 +#define IPSEC_DS_IP_LENGTH_BYTE_SIZE 0x0002 +#define IPSEC_DS_IP_LENGTH_LOG2_BYTE_SIZE 0x0001 +#define PRIVATE_A_DUMMY_STORE_ADDRESS 0xb8a4 +#define PRIVATE_A_DUMMY_STORE_BYTE_SIZE 0x0001 +#define PRIVATE_A_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_ADDRESS 0xb8a5 +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_BYTE_SIZE 0x0001 +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_LOG2_BYTE_SIZE 0x0001 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xb8a6 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xb8a7 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define CPU_TX_DS_PICO_SEMAPHORE_ADDRESS 0xb8a8 +#define CPU_TX_DS_PICO_SEMAPHORE_BYTE_SIZE 0x0001 +#define CPU_TX_DS_PICO_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define DS_FC_GLOBAL_CFG_ADDRESS 0xb8a9 +#define DS_FC_GLOBAL_CFG_BYTE_SIZE 0x0001 +#define DS_FC_GLOBAL_CFG_LOG2_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_ADDRESS 0xb8aa +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_ADDRESS 0xb8ab +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_PACKET_BUFFER_SIZE_ASR_8_ADDRESS 0xb8ac +#define DS_PACKET_BUFFER_SIZE_ASR_8_BYTE_SIZE 0x0001 +#define DS_PACKET_BUFFER_SIZE_ASR_8_LOG2_BYTE_SIZE 0x0001 +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb8ad +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb8ae +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_ADDRESS 0xb8af +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_BYTE_SIZE 0x0001 +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS 0xb8b0 +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_ADDRESS 0xb8b1 +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_LOG2_BYTE_SIZE 0x0001 +#define DS_IH_CONGESTION_THRESHOLD_ADDRESS 0xb8b2 +#define DS_IH_CONGESTION_THRESHOLD_BYTE_SIZE 0x0001 +#define DS_IH_CONGESTION_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define DS_FAST_MALLOC_RESULT_MUTEX_ADDRESS 0xb8b3 +#define DS_FAST_MALLOC_RESULT_MUTEX_BYTE_SIZE 0x0001 +#define DS_FAST_MALLOC_RESULT_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DS_PICO_MALLOC_RESULT_MUTEX_ADDRESS 0xb8b4 +#define DS_PICO_MALLOC_RESULT_MUTEX_BYTE_SIZE 0x0001 +#define DS_PICO_MALLOC_RESULT_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DS_RX_SBPM_TO_FPM_COPY_SEMAPHORE_ADDRESS 0xb8b5 +#define DS_RX_SBPM_TO_FPM_COPY_SEMAPHORE_BYTE_SIZE 0x0001 +#define DS_RX_SBPM_TO_FPM_COPY_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define DS_FW_MAC_ADDRS_COUNT_ADDRESS 0xb8b6 +#define DS_FW_MAC_ADDRS_COUNT_BYTE_SIZE 0x0001 +#define DS_FW_MAC_ADDRS_COUNT_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_DMA_SYNCHRONIZATION_ADDRESS 0xb8b7 +#define DS_DHD_DMA_SYNCHRONIZATION_BYTE_SIZE 0x0001 +#define DS_DHD_DMA_SYNCHRONIZATION_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_SEMAPHORE_ADDRESS 0xb8b8 +#define DHD_TX_POST_CPU_SEMAPHORE_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define RING_CACHE_DHD_TXPOST_MUTEX_ADDRESS 0xb8b9 +#define RING_CACHE_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define RING_CACHE_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define COMMON_DHD_TXPOST_MUTEX_ADDRESS 0xb8ba +#define COMMON_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define COMMON_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define TXCPL_INT_DHD_TXPOST_MUTEX_ADDRESS 0xb8bb +#define TXCPL_INT_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define TXCPL_INT_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_ADDRESS 0xb8bc +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_BYTE_SIZE 0x0001 +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_US_SA_DESC_NEXT_REPLACE_ADDRESS 0xb8bd +#define IPSEC_US_SA_DESC_NEXT_REPLACE_BYTE_SIZE 0x0001 +#define IPSEC_US_SA_DESC_NEXT_REPLACE_LOG2_BYTE_SIZE 0x0001 +#define ETH_TX_MAC_TABLE_ADDRESS 0xbb00 +#define ETH_TX_MAC_TABLE_BYTE_SIZE 0x0100 +#define ETH_TX_MAC_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH_TX_MAC_TABLE_SIZE 8 +#define RDD_ETH_TX_MAC_TABLE_LOG2_SIZE 3 +#define GPON_RX_NORMAL_DESCRIPTORS_ADDRESS 0xbe00 +#define GPON_RX_NORMAL_DESCRIPTORS_BYTE_SIZE 0x0100 +#define GPON_RX_NORMAL_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE 32 +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_LOG2_SIZE 5 +/* PRIVATE_B */ +#define US_INGRESS_HANDLER_BUFFER_ADDRESS 0x0000 +#define US_INGRESS_HANDLER_BUFFER_BYTE_SIZE 0x2000 +#define US_INGRESS_HANDLER_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_US_INGRESS_HANDLER_BUFFER_SIZE 32 +#define RDD_US_INGRESS_HANDLER_BUFFER_LOG2_SIZE 5 +#define US_CSO_CHUNK_BUFFER_ADDRESS 0x2000 +#define US_CSO_CHUNK_BUFFER_BYTE_SIZE 0x0080 +#define US_CSO_CHUNK_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define US_CSO_PSEUDO_HEADER_BUFFER_ADDRESS 0x2080 +#define US_CSO_PSEUDO_HEADER_BUFFER_BYTE_SIZE 0x0028 +#define US_CSO_PSEUDO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x20a8 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0008 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 2 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_ADDRESS 0x20b0 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_BYTE_SIZE 0x0010 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_SIZE 8 +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_LOG2_SIZE 3 +#define US_CPU_REASON_TO_METER_TABLE_ADDRESS 0x20c0 +#define US_CPU_REASON_TO_METER_TABLE_BYTE_SIZE 0x0040 +#define US_CPU_REASON_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_REASON_TO_METER_TABLE_SIZE 64 +#define RDD_US_CPU_REASON_TO_METER_TABLE_LOG2_SIZE 6 +#define US_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS 0x2100 +#define US_MAIN_PROFILING_BUFFER_RUNNER_BYTE_SIZE 0x0100 +#define US_MAIN_PROFILING_BUFFER_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_LOG2_SIZE 5 +#define US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS 0x2200 +#define US_FREE_PACKET_DESCRIPTORS_POOL_BYTE_SIZE 0x6000 +#define US_FREE_PACKET_DESCRIPTORS_POOL_LOG2_BYTE_SIZE 0x000f +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE 3072 +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_LOG2_SIZE 12 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS 0x8200 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_BYTE_SIZE 0x0180 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE 3 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE2 4 +#define US_QUEUE_PROFILE_TABLE_ADDRESS 0x8380 +#define US_QUEUE_PROFILE_TABLE_BYTE_SIZE 0x0080 +#define US_QUEUE_PROFILE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_QUEUE_PROFILE_TABLE_SIZE 8 +#define RDD_US_QUEUE_PROFILE_TABLE_LOG2_SIZE 3 +#define WAN_CHANNELS_8_39_TABLE_ADDRESS 0x8400 +#define WAN_CHANNELS_8_39_TABLE_BYTE_SIZE 0x0400 +#define WAN_CHANNELS_8_39_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WAN_CHANNELS_8_39_TABLE_SIZE 32 +#define RDD_WAN_CHANNELS_8_39_TABLE_LOG2_SIZE 5 +#define US_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x8800 +#define US_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0180 +#define US_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE 3 +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_LOG2_SIZE 2 +#define US_SBPM_REPLY_ADDRESS 0x8980 +#define US_SBPM_REPLY_BYTE_SIZE 0x0080 +#define US_SBPM_REPLY_LOG2_BYTE_SIZE 0x0007 +#define US_POLICER_TABLE_ADDRESS 0x8a00 +#define US_POLICER_TABLE_BYTE_SIZE 0x0100 +#define US_POLICER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_POLICER_TABLE_SIZE 16 +#define RDD_US_POLICER_TABLE_LOG2_SIZE 4 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_ADDRESS 0x8b00 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_BYTE_SIZE 0x0100 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE 2 +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_LOG2_SIZE 1 +#define US_WAN_FLOW_TABLE_ADDRESS 0x8c00 +#define US_WAN_FLOW_TABLE_BYTE_SIZE 0x0400 +#define US_WAN_FLOW_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_US_WAN_FLOW_TABLE_SIZE 256 +#define RDD_US_WAN_FLOW_TABLE_LOG2_SIZE 8 +#define US_CPU_TX_BBH_DESCRIPTORS_ADDRESS 0x9000 +#define US_CPU_TX_BBH_DESCRIPTORS_BYTE_SIZE 0x0100 +#define US_CPU_TX_BBH_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_LOG2_SIZE 5 +#define US_FORWARDING_MATRIX_TABLE_ADDRESS 0x9100 +#define US_FORWARDING_MATRIX_TABLE_BYTE_SIZE 0x0090 +#define US_FORWARDING_MATRIX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_US_FORWARDING_MATRIX_TABLE_LOG2_SIZE 4 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 16 +#define RDD_US_FORWARDING_MATRIX_TABLE_LOG2_SIZE2 4 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x9190 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0010 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 3 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x91a0 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_ADDRESS 0x91c0 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_BYTE_SIZE 0x0040 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_SIZE 3 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_SIZE2 3 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS 0x9200 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9240 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9280 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x92c0 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define US_FC_L2_UCAST_TUPLE_BUFFER_ADDRESS 0x92e0 +#define US_FC_L2_UCAST_TUPLE_BUFFER_BYTE_SIZE 0x0020 +#define US_FC_L2_UCAST_TUPLE_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define US_RATE_LIMITER_TABLE_ADDRESS 0x9300 +#define US_RATE_LIMITER_TABLE_BYTE_SIZE 0x0080 +#define US_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_RATE_LIMITER_TABLE_SIZE 16 +#define RDD_US_RATE_LIMITER_TABLE_LOG2_SIZE 4 +#define US_CPU_RX_METER_TABLE_ADDRESS 0x9380 +#define US_CPU_RX_METER_TABLE_BYTE_SIZE 0x0080 +#define US_CPU_RX_METER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_RX_METER_TABLE_SIZE 16 +#define RDD_US_CPU_RX_METER_TABLE_LOG2_SIZE 4 +#define US_CONNECTION_CONTEXT_BUFFER_ADDRESS 0x9400 +#define US_CONNECTION_CONTEXT_BUFFER_BYTE_SIZE 0x0400 +#define US_CONNECTION_CONTEXT_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE 8 +#define RDD_US_CONNECTION_CONTEXT_BUFFER_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS 0x9800 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_SIZE 8 +#define WAN_CHANNELS_0_7_TABLE_ADDRESS 0xa000 +#define WAN_CHANNELS_0_7_TABLE_BYTE_SIZE 0x02c0 +#define WAN_CHANNELS_0_7_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WAN_CHANNELS_0_7_TABLE_SIZE 8 +#define RDD_WAN_CHANNELS_0_7_TABLE_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS 0xa2c0 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_BYTE_SIZE 0x0020 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_SIZE 2 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xa2e0 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS 0xa300 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_BYTE_SIZE 0x0080 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_SIZE 5 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0xa380 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define US_CONNECTION_CONTEXT_REMAINING_BUFFER_ADDRESS 0xa400 +#define US_CONNECTION_CONTEXT_REMAINING_BUFFER_BYTE_SIZE 0x0260 +#define US_CONNECTION_CONTEXT_REMAINING_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE 8 +#define RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_LOG2_SIZE 3 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xa660 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS 0xa680 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_BYTE_SIZE 0x0080 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_SIZE 4 +#define US_PROFILING_BUFFER_PICO_RUNNER_ADDRESS 0xa700 +#define US_PROFILING_BUFFER_PICO_RUNNER_BYTE_SIZE 0x0100 +#define US_PROFILING_BUFFER_PICO_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS 0xa800 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_BYTE_SIZE 0x0060 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE 3 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE2 4 +#define DHD_RX_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xa860 +#define DHD_RX_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define DHD_RX_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_ADDRESS 0xa880 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_BYTE_SIZE 0x0060 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xa8e0 +#define US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define DHD_RX_POST_FLOW_RING_BUFFER_ADDRESS 0xa900 +#define DHD_RX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x0060 +#define DHD_RX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xa960 +#define US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xa980 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0001 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define PRIVATE_B_DUMMY_STORE_ADDRESS 0xa981 +#define PRIVATE_B_DUMMY_STORE_BYTE_SIZE 0x0001 +#define PRIVATE_B_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xa982 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_ADDRESS 0xa984 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_BYTE_SIZE 0x0004 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_LOG2_BYTE_SIZE 0x0002 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS 0xa988 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_BYTE_SIZE 0x0001 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xa989 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xa98a +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_ADDRESS 0xa98c +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xa990 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0028 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0006 +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE 40 +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_LOG2_SIZE 6 +#define US_TOTAL_PPS_RATE_LIMITER_ADDRESS 0xa9b8 +#define US_TOTAL_PPS_RATE_LIMITER_BYTE_SIZE 0x0008 +#define US_TOTAL_PPS_RATE_LIMITER_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_ADDRESS 0xa9c0 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_BYTE_SIZE 0x0040 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define US_INGRESS_RATE_LIMITER_TABLE_ADDRESS 0xaa00 +#define US_INGRESS_RATE_LIMITER_TABLE_BYTE_SIZE 0x0050 +#define US_INGRESS_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE 5 +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_LOG2_SIZE 3 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0xaa50 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0010 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xaa60 +#define US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define US_SPDSVC_CONTEXT_TABLE_ADDRESS 0xaa80 +#define US_SPDSVC_CONTEXT_TABLE_BYTE_SIZE 0x0050 +#define US_SPDSVC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RUNNER_FWTRACE_MAINB_PARAM_ADDRESS 0xaad0 +#define RUNNER_FWTRACE_MAINB_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINB_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_LOG2_SIZE 1 +#define US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xaae0 +#define US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define US_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS 0xab00 +#define US_CPU_RX_PICO_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_CPU_RX_PICO_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xab40 +#define US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xab60 +#define US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define US_ROUTER_INGRESS_QUEUE_ADDRESS 0xab80 +#define US_ROUTER_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_ROUTER_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_ROUTER_INGRESS_QUEUE_SIZE 64 +#define RDD_US_ROUTER_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_CPU_TX_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xabc0 +#define US_CPU_TX_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_CPU_TX_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS 0xabe0 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_BYTE_SIZE 0x0018 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_SIZE 3 +#define US_ONE_BUFFER_ADDRESS 0xabf8 +#define US_ONE_BUFFER_BYTE_SIZE 0x0008 +#define US_ONE_BUFFER_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_TX_FAST_QUEUE_ADDRESS 0xac00 +#define US_CPU_TX_FAST_QUEUE_BYTE_SIZE 0x0080 +#define US_CPU_TX_FAST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_TX_FAST_QUEUE_SIZE 16 +#define RDD_US_CPU_TX_FAST_QUEUE_LOG2_SIZE 4 +#define US_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS 0xac80 +#define US_CPU_RX_FAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_CPU_RX_FAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DHD_TX_POST_HEADER_SCRATCH_ADDRESS 0xacc0 +#define US_DHD_TX_POST_HEADER_SCRATCH_BYTE_SIZE 0x0020 +#define US_DHD_TX_POST_HEADER_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS 0xace0 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_BYTE_SIZE 0x0018 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE 3 +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_SIZE 2 +#define US_NULL_BUFFER_ADDRESS 0xacf8 +#define US_NULL_BUFFER_BYTE_SIZE 0x0008 +#define US_NULL_BUFFER_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_TX_PICO_QUEUE_ADDRESS 0xad00 +#define US_CPU_TX_PICO_QUEUE_BYTE_SIZE 0x0080 +#define US_CPU_TX_PICO_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_TX_PICO_QUEUE_SIZE 16 +#define RDD_US_CPU_TX_PICO_QUEUE_LOG2_SIZE 4 +#define US_DEBUG_BUFFER_ADDRESS 0xad80 +#define US_DEBUG_BUFFER_BYTE_SIZE 0x0080 +#define US_DEBUG_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_DEBUG_BUFFER_SIZE 32 +#define RDD_US_DEBUG_BUFFER_LOG2_SIZE 5 +#define US_FW_MAC_ADDRS_ADDRESS 0xae00 +#define US_FW_MAC_ADDRS_BYTE_SIZE 0x0080 +#define US_FW_MAC_ADDRS_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_FW_MAC_ADDRS_SIZE 16 +#define RDD_US_FW_MAC_ADDRS_LOG2_SIZE 4 +#define US_DHD_TX_POST_INGRESS_QUEUE_ADDRESS 0xae80 +#define US_DHD_TX_POST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_DHD_TX_POST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_ADDRESS 0xaec0 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_BYTE_SIZE 0x0060 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE 48 +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_LOG2_SIZE 6 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS 0xaf20 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define US_CPU_PARAMETERS_BLOCK_ADDRESS 0xaf60 +#define US_CPU_PARAMETERS_BLOCK_BYTE_SIZE 0x0014 +#define US_CPU_PARAMETERS_BLOCK_LOG2_BYTE_SIZE 0x0005 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xaf74 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define US_FAST_MALLOC_RESULT_TABLE_ADDRESS 0xaf78 +#define US_FAST_MALLOC_RESULT_TABLE_BYTE_SIZE 0x0008 +#define US_FAST_MALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_FAST_MALLOC_RESULT_TABLE_SIZE 2 +#define RDD_US_FAST_MALLOC_RESULT_TABLE_LOG2_SIZE 1 +#define US_CSO_CONTEXT_TABLE_ADDRESS 0xaf80 +#define US_CSO_CONTEXT_TABLE_BYTE_SIZE 0x0054 +#define US_CSO_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define US_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xafd4 +#define US_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS 0xafd8 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_BYTE_SIZE 0x0028 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_BYTE_SIZE 0x0006 +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE 40 +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_SIZE 6 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS 0xb000 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x0030 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RUNNER_FWTRACE_PICOB_PARAM_ADDRESS 0xb030 +#define RUNNER_FWTRACE_PICOB_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_PICOB_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_LOG2_SIZE 1 +#define US_DHD_FLOW_RING_DROP_COUNTER_ADDRESS 0xb040 +#define US_DHD_FLOW_RING_DROP_COUNTER_BYTE_SIZE 0x0014 +#define US_DHD_FLOW_RING_DROP_COUNTER_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_LOG2_SIZE 3 +#define US_BPM_DDR_BUFFERS_BASE_ADDRESS 0xb054 +#define US_BPM_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define US_PICO_MALLOC_RESULT_TABLE_ADDRESS 0xb058 +#define US_PICO_MALLOC_RESULT_TABLE_BYTE_SIZE 0x0008 +#define US_PICO_MALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_PICO_MALLOC_RESULT_TABLE_SIZE 2 +#define RDD_US_PICO_MALLOC_RESULT_TABLE_LOG2_SIZE 1 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb060 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS 0xb070 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_BYTE_SIZE 0x0010 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_SIZE 3 +#define US_SYSTEM_CONFIGURATION_ADDRESS 0xb080 +#define US_SYSTEM_CONFIGURATION_BYTE_SIZE 0x0024 +#define US_SYSTEM_CONFIGURATION_LOG2_BYTE_SIZE 0x0006 +#define US_BPM_DDR_1_BUFFERS_BASE_ADDRESS 0xb0a4 +#define US_BPM_DDR_1_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_1_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS 0xb0a8 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_BYTE_SIZE 0x0008 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_SIZE 3 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS 0xb0b0 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_BYTE_SIZE 0x0010 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb0c0 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_ADDRESS 0xb0d0 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_BYTE_SIZE 0x0020 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_LOG2_SIZE 5 +#define WAN_TX_SCRATCH_ADDRESS 0xb0f0 +#define WAN_TX_SCRATCH_BYTE_SIZE 0x0018 +#define WAN_TX_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define RDD_WAN_TX_SCRATCH_SIZE 24 +#define RDD_WAN_TX_SCRATCH_LOG2_SIZE 5 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_ADDRESS 0xb108 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_BYTE_SIZE 0x0012 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE 3 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_SIZE 2 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 6 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_SIZE2 3 +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xb11a +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_CONNECTION_TABLE_CONFIG_ADDRESS 0xb11c +#define US_CONNECTION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONNECTION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_ADDRESS 0xb120 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_BYTE_SIZE 0x0009 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE 9 +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xb129 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_ADDRESS 0xb12a +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_BYTE_SIZE 0x0002 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_LOG2_BYTE_SIZE 0x0001 +#define US_CONTEXT_TABLE_CONFIG_ADDRESS 0xb12c +#define US_CONTEXT_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONTEXT_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_ADDRESS 0xb130 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_BYTE_SIZE 0x0010 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_ADDRESS 0xb140 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_ADDRESS 0xb150 +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_BYTE_SIZE 0x000e +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE 14 +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_LOG2_SIZE 4 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_ADDRESS 0xb15e +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_BYTE_SIZE 0x0002 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_LOG2_BYTE_SIZE 0x0001 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS 0xb160 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_BYTE_SIZE 0x0006 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_ADDRESS 0xb166 +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DATA_POINTER_DUMMY_TARGET_ADDRESS 0xb168 +#define DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0008 +#define DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0003 +#define RDD_DATA_POINTER_DUMMY_TARGET_SIZE 2 +#define RDD_DATA_POINTER_DUMMY_TARGET_LOG2_SIZE 1 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS 0xb170 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_BYTE_SIZE 0x0004 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_SIZE 2 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_ADDRESS 0xb174 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_BYTE_SIZE 0x0004 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_LOG2_BYTE_SIZE 0x0002 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS 0xb178 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_BYTE_SIZE 0x0004 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_SIZE 2 +#define IH_BUFFER_BBH_POINTER_ADDRESS 0xb17c +#define IH_BUFFER_BBH_POINTER_BYTE_SIZE 0x0004 +#define IH_BUFFER_BBH_POINTER_LOG2_BYTE_SIZE 0x0002 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS 0xb180 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_BYTE_SIZE 0x0008 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_SIZE 3 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_ADDRESS 0xb188 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define US_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xb18c +#define US_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define US_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS 0xb190 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_BYTE_SIZE 0x0004 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_SIZE 4 +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_SIZE 2 +#define US_CPU_TX_DATA_POINTER_DUMMY_TARGET_ADDRESS 0xb194 +#define US_CPU_TX_DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0004 +#define US_CPU_TX_DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0002 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb198 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb19a +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS 0xb19c +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_BYTE_SIZE 0x0002 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_ANY_SRC_PORT_FLOW_COUNTER_ADDRESS 0xb19e +#define US_ANY_SRC_PORT_FLOW_COUNTER_BYTE_SIZE 0x0002 +#define US_ANY_SRC_PORT_FLOW_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_ADDRESS 0xb1a0 +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_BYTE_SIZE 0x0004 +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_ADDRESS 0xb1a4 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_BYTE_SIZE 0x0002 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_LOG2_BYTE_SIZE 0x0001 +#define US_MEMLIB_SEMAPHORE_ADDRESS 0xb1a6 +#define US_MEMLIB_SEMAPHORE_BYTE_SIZE 0x0002 +#define US_MEMLIB_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_ADDRESS 0xb1a8 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_RUNNER_CONGESTION_STATE_ADDRESS 0xb1aa +#define US_RUNNER_CONGESTION_STATE_BYTE_SIZE 0x0002 +#define US_RUNNER_CONGESTION_STATE_LOG2_BYTE_SIZE 0x0001 +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb1ac +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_ADDRESS 0xb1ae +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_BYTE_SIZE 0x0002 +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_ADDRESS 0xb1b0 +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_BYTE_SIZE 0x0002 +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_ADDRESS 0xb1b2 +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_BYTE_SIZE 0x0002 +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_FC_GLOBAL_CFG_ADDRESS 0xb1b4 +#define US_FC_GLOBAL_CFG_BYTE_SIZE 0x0001 +#define US_FC_GLOBAL_CFG_LOG2_BYTE_SIZE 0x0001 +#define ETHWAN2_SWITCH_PORT_ADDRESS 0xb1b5 +#define ETHWAN2_SWITCH_PORT_BYTE_SIZE 0x0001 +#define ETHWAN2_SWITCH_PORT_LOG2_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_ADDRESS 0xb1b6 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_ADDRESS 0xb1b7 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_PACKET_BUFFER_SIZE_ASR_8_ADDRESS 0xb1b8 +#define US_PACKET_BUFFER_SIZE_ASR_8_BYTE_SIZE 0x0001 +#define US_PACKET_BUFFER_SIZE_ASR_8_LOG2_BYTE_SIZE 0x0001 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb1b9 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb1ba +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_ADDRESS 0xb1bb +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_BYTE_SIZE 0x0001 +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DSL_BUFFER_ALIGNMENT_ADDRESS 0xb1bc +#define DSL_BUFFER_ALIGNMENT_BYTE_SIZE 0x0001 +#define DSL_BUFFER_ALIGNMENT_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS 0xb1bd +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_ADDRESS 0xb1be +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_LOG2_BYTE_SIZE 0x0001 +#define US_IH_CONGESTION_THRESHOLD_ADDRESS 0xb1bf +#define US_IH_CONGESTION_THRESHOLD_BYTE_SIZE 0x0001 +#define US_IH_CONGESTION_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define US_FAST_MALLOC_RESULT_MUTEX_ADDRESS 0xb1c0 +#define US_FAST_MALLOC_RESULT_MUTEX_BYTE_SIZE 0x0001 +#define US_FAST_MALLOC_RESULT_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_MALLOC_RESULT_MUTEX_ADDRESS 0xb1c1 +#define US_PICO_MALLOC_RESULT_MUTEX_BYTE_SIZE 0x0001 +#define US_PICO_MALLOC_RESULT_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DHD_RX_FPM_ALLOC_RESULT_MUTEX_ADDRESS 0xb1c2 +#define DHD_RX_FPM_ALLOC_RESULT_MUTEX_BYTE_SIZE 0x0001 +#define DHD_RX_FPM_ALLOC_RESULT_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define US_RX_SBPM_TO_FPM_COPY_SEMAPHORE_ADDRESS 0xb1c3 +#define US_RX_SBPM_TO_FPM_COPY_SEMAPHORE_BYTE_SIZE 0x0001 +#define US_RX_SBPM_TO_FPM_COPY_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define US_FW_MAC_ADDRS_COUNT_ADDRESS 0xb1c4 +#define US_FW_MAC_ADDRS_COUNT_BYTE_SIZE 0x0001 +#define US_FW_MAC_ADDRS_COUNT_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_DMA_SYNCHRONIZATION_ADDRESS 0xb1c5 +#define US_DHD_DMA_SYNCHRONIZATION_BYTE_SIZE 0x0001 +#define US_DHD_DMA_SYNCHRONIZATION_LOG2_BYTE_SIZE 0x0001 +#define US_RUNNER_FLOW_IH_RESPONSE_ADDRESS 0xb6f0 +#define US_RUNNER_FLOW_IH_RESPONSE_BYTE_SIZE 0x0008 +#define US_RUNNER_FLOW_IH_RESPONSE_LOG2_BYTE_SIZE 0x0003 +#define ETH2_RX_DESCRIPTORS_ADDRESS 0xba00 +#define ETH2_RX_DESCRIPTORS_BYTE_SIZE 0x0100 +#define ETH2_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH2_RX_DESCRIPTORS_SIZE 32 +#define RDD_ETH2_RX_DESCRIPTORS_LOG2_SIZE 5 +#define ETH1_RX_DESCRIPTORS_ADDRESS 0xbc00 +#define ETH1_RX_DESCRIPTORS_BYTE_SIZE 0x0100 +#define ETH1_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH1_RX_DESCRIPTORS_SIZE 32 +#define RDD_ETH1_RX_DESCRIPTORS_LOG2_SIZE 5 +#define ETH0_RX_DESCRIPTORS_ADDRESS 0xbe00 +#define ETH0_RX_DESCRIPTORS_BYTE_SIZE 0x0100 +#define ETH0_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH0_RX_DESCRIPTORS_SIZE 32 +#define RDD_ETH0_RX_DESCRIPTORS_LOG2_SIZE 5 +#define BBH_TX_WAN_CHANNEL_INDEX_ADDRESS 0xbfe8 +#define BBH_TX_WAN_CHANNEL_INDEX_BYTE_SIZE 0x0004 +#define BBH_TX_WAN_CHANNEL_INDEX_LOG2_BYTE_SIZE 0x0002 +/* COMMON_A */ +#define SERVICE_QUEUES_DDR_CACHE_FIFO_ADDRESS 0x0000 +#define SERVICE_QUEUES_DDR_CACHE_FIFO_BYTE_SIZE 0x1000 +#define SERVICE_QUEUES_DDR_CACHE_FIFO_LOG2_BYTE_SIZE 0x000c +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE 256 +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_LOG2_SIZE 8 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS 0x1000 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define CPU_RX_RUNNER_A_SCRATCHPAD_ADDRESS 0x1800 +#define CPU_RX_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define CPU_RX_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_ADDRESS 0x2000 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_BYTE_SIZE 0x0800 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE 8 +#define RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_LOG2_SIZE 3 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS 0x2800 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define RUNNER_FWTRACE_MAINA_BASE_ADDRESS 0x3000 +#define RUNNER_FWTRACE_MAINA_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_MAINA_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_MAINA_BASE_LOG2_SIZE 7 +#define RUNNER_FWTRACE_PICOA_BASE_ADDRESS 0x3400 +#define RUNNER_FWTRACE_PICOA_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_PICOA_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_PICOA_BASE_LOG2_SIZE 7 +#define WLAN_MCAST_DHD_STATION_TABLE_ADDRESS 0x3800 +#define WLAN_MCAST_DHD_STATION_TABLE_BYTE_SIZE 0x0280 +#define WLAN_MCAST_DHD_STATION_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_LOG2_SIZE 6 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS 0x3a80 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_BYTE_SIZE 0x0080 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE 2 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE 1 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 64 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE2 6 +#define MAC_TABLE_CAM_ADDRESS 0x3b00 +#define MAC_TABLE_CAM_BYTE_SIZE 0x0100 +#define MAC_TABLE_CAM_LOG2_BYTE_SIZE 0x0008 +#define RDD_MAC_TABLE_CAM_SIZE 32 +#define RDD_MAC_TABLE_CAM_LOG2_SIZE 5 +#define MAC_TABLE_ADDRESS 0x3c00 +#define MAC_TABLE_BYTE_SIZE 0x0200 +#define MAC_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAC_TABLE_SIZE 64 +#define RDD_MAC_TABLE_LOG2_SIZE 6 +#define ETHWAN2_RX_INGRESS_QUEUE_ADDRESS 0x3e00 +#define ETHWAN2_RX_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define ETHWAN2_RX_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE 32 +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_LOG2_SIZE 5 +#define TRACE_C_TABLE_ADDRESS 0x3f00 +#define TRACE_C_TABLE_BYTE_SIZE 0x0020 +#define TRACE_C_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_TRACE_C_TABLE_SIZE 4 +#define RDD_TRACE_C_TABLE_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_ADDRESS 0x3f20 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_LOG2_SIZE 1 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_ADDRESS 0x3f30 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_ADDRESS 0x3f34 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_LOG2_BYTE_SIZE 0x0002 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_ADDRESS 0x3f38 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_BYTE_SIZE 0x0008 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_LOG2_BYTE_SIZE 0x0003 +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE 2 +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_LOG2_SIZE 1 +#define BPM_REPLY_RUNNER_A_ADDRESS 0x3f40 +#define BPM_REPLY_RUNNER_A_BYTE_SIZE 0x0030 +#define BPM_REPLY_RUNNER_A_LOG2_BYTE_SIZE 0x0006 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_ADDRESS 0x3f70 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_BYTE_SIZE 0x0010 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define MAC_CONTEXT_TABLE_ADDRESS 0x3f80 +#define MAC_CONTEXT_TABLE_BYTE_SIZE 0x0080 +#define MAC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_MAC_CONTEXT_TABLE_SIZE 64 +#define RDD_MAC_CONTEXT_TABLE_LOG2_SIZE 6 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS 0x4000 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_BYTE_SIZE 0x0600 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_LOG2_BYTE_SIZE 0x000b +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE 32 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS 0x4600 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_BYTE_SIZE 0x0200 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_SIZE 8 +#define WLAN_MCAST_FWD_TABLE_ADDRESS 0x4800 +#define WLAN_MCAST_FWD_TABLE_BYTE_SIZE 0x0200 +#define WLAN_MCAST_FWD_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_FWD_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_FWD_TABLE_LOG2_SIZE 6 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_ADDRESS 0x4a00 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_BYTE_SIZE 0x0200 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_LOG2_SIZE 5 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_ADDRESS 0x4c00 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_BYTE_SIZE 0x0180 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE 48 +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_LOG2_SIZE 6 +#define CPU_TX_POST_REQUEST_QUEUE_ADDRESS 0x4d80 +#define CPU_TX_POST_REQUEST_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_POST_REQUEST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE 8 +#define RDD_CPU_TX_POST_REQUEST_QUEUE_LOG2_SIZE 3 +#define WLAN_MCAST_SSID_STATS_TABLE_ADDRESS 0x4e00 +#define WLAN_MCAST_SSID_STATS_TABLE_BYTE_SIZE 0x0180 +#define WLAN_MCAST_SSID_STATS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE 48 +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_LOG2_SIZE 6 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_ADDRESS 0x4f80 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_BYTE_SIZE 0x0060 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE 3 +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_LOG2_SIZE 2 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS 0x4fe0 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_BYTE_SIZE 0x0020 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_SIZE 4 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS 0x5000 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_SIZE 7 +#define PM_COUNTERS_ADDRESS 0x5800 +#define PM_COUNTERS_BYTE_SIZE 0x1840 +#define PM_COUNTERS_LOG2_BYTE_SIZE 0x000d +#define RATE_SHAPERS_STATUS_DESCRIPTOR_ADDRESS 0x7040 +#define RATE_SHAPERS_STATUS_DESCRIPTOR_BYTE_SIZE 0x0080 +#define RATE_SHAPERS_STATUS_DESCRIPTOR_LOG2_BYTE_SIZE 0x0007 +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE 128 +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_LOG2_SIZE 7 +#define INTERRUPT_COALESCING_CONFIG_TABLE_ADDRESS 0x70c0 +#define INTERRUPT_COALESCING_CONFIG_TABLE_BYTE_SIZE 0x0040 +#define INTERRUPT_COALESCING_CONFIG_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE 16 +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_LOG2_SIZE 4 +#define DS_CPU_TX_SCRATCHPAD_ADDRESS 0x7100 +#define DS_CPU_TX_SCRATCHPAD_BYTE_SIZE 0x0100 +#define DS_CPU_TX_SCRATCHPAD_LOG2_BYTE_SIZE 0x0008 +#define DS_CONNECTION_BUFFER_TABLE_ADDRESS 0x7200 +#define DS_CONNECTION_BUFFER_TABLE_BYTE_SIZE 0x0140 +#define DS_CONNECTION_BUFFER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_DS_CONNECTION_BUFFER_TABLE_LOG2_SIZE 3 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 4 +#define RDD_DS_CONNECTION_BUFFER_TABLE_LOG2_SIZE2 2 +#define MAC_CONTEXT_TABLE_CAM_ADDRESS 0x7340 +#define MAC_CONTEXT_TABLE_CAM_BYTE_SIZE 0x0040 +#define MAC_CONTEXT_TABLE_CAM_LOG2_BYTE_SIZE 0x0006 +#define RDD_MAC_CONTEXT_TABLE_CAM_SIZE 32 +#define RDD_MAC_CONTEXT_TABLE_CAM_LOG2_SIZE 5 +#define DHD_DOORBELL_WRITE_VALUES_ADDRESS 0x7380 +#define DHD_DOORBELL_WRITE_VALUES_BYTE_SIZE 0x0040 +#define DHD_DOORBELL_WRITE_VALUES_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_DOORBELL_WRITE_VALUES_SIZE 16 +#define RDD_DHD_DOORBELL_WRITE_VALUES_LOG2_SIZE 4 +#define DS_DHD_BACKUP_INDEX_CACHE_ADDRESS 0x73c0 +#define DS_DHD_BACKUP_INDEX_CACHE_BYTE_SIZE 0x0040 +#define DS_DHD_BACKUP_INDEX_CACHE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE 32 +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_LOG2_SIZE 5 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS 0x7400 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_BYTE_SIZE 0x0100 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_LOG2_SIZE 4 +#define RING_DESCRIPTORS_TABLE_ADDRESS 0x7500 +#define RING_DESCRIPTORS_TABLE_BYTE_SIZE 0x0100 +#define RING_DESCRIPTORS_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_RING_DESCRIPTORS_TABLE_SIZE 16 +#define RDD_RING_DESCRIPTORS_TABLE_LOG2_SIZE 4 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_ADDRESS 0x7600 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_BYTE_SIZE 0x0100 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_LOG2_SIZE 5 +#define MAC_EXTENSION_TABLE_ADDRESS 0x7700 +#define MAC_EXTENSION_TABLE_BYTE_SIZE 0x0040 +#define MAC_EXTENSION_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_MAC_EXTENSION_TABLE_SIZE 64 +#define RDD_MAC_EXTENSION_TABLE_LOG2_SIZE 6 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_ADDRESS 0x7740 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_BYTE_SIZE 0x0020 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE 16 +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_LOG2_SIZE 4 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_ADDRESS 0x7760 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0014 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_ADDRESS 0x7774 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_ADDRESS 0x7778 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_BYTE_SIZE 0x0008 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_LOG2_BYTE_SIZE 0x0003 +#define SERVICE_QUEUES_CFG_ADDRESS 0x7780 +#define SERVICE_QUEUES_CFG_BYTE_SIZE 0x0014 +#define SERVICE_QUEUES_CFG_LOG2_BYTE_SIZE 0x0005 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_ADDRESS 0x7794 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_BYTE_SIZE 0x0004 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_LOG2_BYTE_SIZE 0x0002 +#define MAC_EXTENSION_TABLE_CAM_ADDRESS 0x7798 +#define MAC_EXTENSION_TABLE_CAM_BYTE_SIZE 0x0020 +#define MAC_EXTENSION_TABLE_CAM_LOG2_BYTE_SIZE 0x0005 +#define RDD_MAC_EXTENSION_TABLE_CAM_SIZE 32 +#define RDD_MAC_EXTENSION_TABLE_CAM_LOG2_SIZE 5 +#define DS_CAM_DHD_DMA_SCRATCH_ADDRESS 0x77b8 +#define DS_CAM_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_CAM_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_ENQ_DHD_DMA_SCRATCH_ADDRESS 0x77bc +#define DS_ENQ_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_ENQ_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define PM_COUNTERS_BUFFER_ADDRESS 0x77c0 +#define PM_COUNTERS_BUFFER_BYTE_SIZE 0x0020 +#define PM_COUNTERS_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define TX_CPL_DHD_DMA_SCRATCH_ADDRESS 0x77e0 +#define TX_CPL_DHD_DMA_SCRATCH_BYTE_SIZE 0x000c +#define TX_CPL_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE 3 +#define RDD_TX_CPL_DHD_DMA_SCRATCH_LOG2_SIZE 2 +#define DS_R2D_DHD_DMA_SCRATCH_ADDRESS 0x77ec +#define DS_R2D_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_R2D_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DHD_TX_POST_BUFFERS_THRESHOLD_ADDRESS 0x77f0 +#define DHD_TX_POST_BUFFERS_THRESHOLD_BYTE_SIZE 0x000c +#define DHD_TX_POST_BUFFERS_THRESHOLD_LOG2_BYTE_SIZE 0x0004 +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_SIZE 6 +#define RDD_DHD_TX_POST_BUFFERS_THRESHOLD_LOG2_SIZE 3 +#define DS_CPU_DHD_DMA_SCRATCH_ADDRESS 0x77fc +#define DS_CPU_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_CPU_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS 0x7800 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_BYTE_SIZE 0x0004 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_SIZE 4 +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_SIZE 2 +#define TIMER_7_TIMER_PERIOD_ADDRESS 0x7804 +#define TIMER_7_TIMER_PERIOD_BYTE_SIZE 0x0002 +#define TIMER_7_TIMER_PERIOD_LOG2_BYTE_SIZE 0x0001 +#define INTERRUPT_COALESCING_TIMER_PERIOD_ADDRESS 0x7806 +#define INTERRUPT_COALESCING_TIMER_PERIOD_BYTE_SIZE 0x0002 +#define INTERRUPT_COALESCING_TIMER_PERIOD_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_BUFFERS_IN_USE_COUNTER_ADDRESS 0x7808 +#define DHD_TX_POST_BUFFERS_IN_USE_COUNTER_BYTE_SIZE 0x0004 +#define DHD_TX_POST_BUFFERS_IN_USE_COUNTER_LOG2_BYTE_SIZE 0x0002 +#define RDD_DHD_TX_POST_BUFFERS_IN_USE_COUNTER_SIZE 2 +#define RDD_DHD_TX_POST_BUFFERS_IN_USE_COUNTER_LOG2_SIZE 1 +#define INTERRUPT_COALESCING_TIMER_ARMED_ADDRESS 0x780c +#define INTERRUPT_COALESCING_TIMER_ARMED_BYTE_SIZE 0x0002 +#define INTERRUPT_COALESCING_TIMER_ARMED_LOG2_BYTE_SIZE 0x0001 +#define COMMON_A_DUMMY_STORE_ADDRESS 0x780e +#define COMMON_A_DUMMY_STORE_BYTE_SIZE 0x0001 +#define COMMON_A_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define FC_SERVICE_QUEUE_MODE_ADDRESS 0x780f +#define FC_SERVICE_QUEUE_MODE_BYTE_SIZE 0x0001 +#define FC_SERVICE_QUEUE_MODE_LOG2_BYTE_SIZE 0x0001 +#define MAIN_A_DEBUG_TRACE_ADDRESS 0x7a00 +#define MAIN_A_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define MAIN_A_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAIN_A_DEBUG_TRACE_SIZE 512 +#define RDD_MAIN_A_DEBUG_TRACE_LOG2_SIZE 9 +#define PICO_A_DEBUG_TRACE_ADDRESS 0x7c00 +#define PICO_A_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define PICO_A_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_PICO_A_DEBUG_TRACE_SIZE 512 +#define RDD_PICO_A_DEBUG_TRACE_LOG2_SIZE 9 +/* COMMON_B */ +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS 0x8000 +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_SIZE 7 +#define CPU_RX_RUNNER_B_SCRATCHPAD_ADDRESS 0x8800 +#define CPU_RX_RUNNER_B_SCRATCHPAD_BYTE_SIZE 0x0800 +#define CPU_RX_RUNNER_B_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE 8 +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS 0x9000 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_BYTE_SIZE 0x0200 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_SIZE 8 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0x9200 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 32 +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS 0x9300 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_BYTE_SIZE 0x0100 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_SIZE 5 +#define WAN_TX_SERVICE_QUEUES_TABLE_ADDRESS 0x9400 +#define WAN_TX_SERVICE_QUEUES_TABLE_BYTE_SIZE 0x0800 +#define WAN_TX_SERVICE_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE 64 +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_LOG2_SIZE 6 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS 0x9c00 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_BYTE_SIZE 0x0100 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_SIZE 5 +#define US_CPU_TX_SCRATCHPAD_ADDRESS 0x9d00 +#define US_CPU_TX_SCRATCHPAD_BYTE_SIZE 0x0100 +#define US_CPU_TX_SCRATCHPAD_LOG2_BYTE_SIZE 0x0008 +#define US_CONNECTION_BUFFER_TABLE_ADDRESS 0x9e00 +#define US_CONNECTION_BUFFER_TABLE_BYTE_SIZE 0x0140 +#define US_CONNECTION_BUFFER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_US_CONNECTION_BUFFER_TABLE_LOG2_SIZE 3 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 4 +#define RDD_US_CONNECTION_BUFFER_TABLE_LOG2_SIZE2 2 +#define IPV6_HOST_ADDRESS_CRC_TABLE_ADDRESS 0x9f40 +#define IPV6_HOST_ADDRESS_CRC_TABLE_BYTE_SIZE 0x0040 +#define IPV6_HOST_ADDRESS_CRC_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE 16 +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_LOG2_SIZE 4 +#define DHD_BACKUP_INFO_CACHE_TABLE_ADDRESS 0x9f80 +#define DHD_BACKUP_INFO_CACHE_TABLE_BYTE_SIZE 0x0080 +#define DHD_BACKUP_INFO_CACHE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE 16 +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_LOG2_SIZE 4 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS 0xa000 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_SIZE 8 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS 0xa800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_SIZE 8 +#define WAN_TX_QUEUES_TABLE_ADDRESS 0xb000 +#define WAN_TX_QUEUES_TABLE_BYTE_SIZE 0x1000 +#define WAN_TX_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000c +#define RDD_WAN_TX_QUEUES_TABLE_SIZE 256 +#define RDD_WAN_TX_QUEUES_TABLE_LOG2_SIZE 8 +#define RUNNER_FWTRACE_MAINB_BASE_ADDRESS 0xc000 +#define RUNNER_FWTRACE_MAINB_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_MAINB_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_MAINB_BASE_LOG2_SIZE 7 +#define WAN_TX_RUNNER_B_SCRATCHPAD_ADDRESS 0xc400 +#define WAN_TX_RUNNER_B_SCRATCHPAD_BYTE_SIZE 0x0100 +#define WAN_TX_RUNNER_B_SCRATCHPAD_LOG2_BYTE_SIZE 0x0008 +#define US_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS 0xc500 +#define US_RING_PACKET_DESCRIPTORS_CACHE_BYTE_SIZE 0x0100 +#define US_RING_PACKET_DESCRIPTORS_CACHE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_LOG2_SIZE 4 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_ADDRESS 0xc600 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_BYTE_SIZE 0x0100 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE 16 +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_LOG2_SIZE 4 +#define FC_FLOW_IP_ADDRESSES_TABLE_ADDRESS 0xc700 +#define FC_FLOW_IP_ADDRESSES_TABLE_BYTE_SIZE 0x00c0 +#define FC_FLOW_IP_ADDRESSES_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE 4 +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_ADDRESS 0xc7c0 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_LOG2_SIZE 1 +#define BPM_REPLY_RUNNER_B_ADDRESS 0xc7d0 +#define BPM_REPLY_RUNNER_B_BYTE_SIZE 0x0030 +#define BPM_REPLY_RUNNER_B_LOG2_BYTE_SIZE 0x0006 +#define US_RATE_CONTROLLERS_TABLE_ADDRESS 0xc800 +#define US_RATE_CONTROLLERS_TABLE_BYTE_SIZE 0x1800 +#define US_RATE_CONTROLLERS_TABLE_LOG2_BYTE_SIZE 0x000d +#define RDD_US_RATE_CONTROLLERS_TABLE_SIZE 128 +#define RDD_US_RATE_CONTROLLERS_TABLE_LOG2_SIZE 7 +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_ADDRESS 0xe000 +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_BYTE_SIZE 0x0800 +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE 8 +#define RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_LOG2_SIZE 3 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_ADDRESS 0xe800 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_BYTE_SIZE 0x00c0 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE 3 +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_LOG2_SIZE 2 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_ADDRESS 0xe8c0 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_BYTE_SIZE 0x0040 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0006 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS 0xe900 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_BYTE_SIZE 0x0050 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_BYTE_SIZE 0x0007 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 40 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_SIZE 6 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_ADDRESS 0xe950 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_BYTE_SIZE 0x0010 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_LOG2_BYTE_SIZE 0x0004 +#define IPV4_HOST_ADDRESS_TABLE_ADDRESS 0xe960 +#define IPV4_HOST_ADDRESS_TABLE_BYTE_SIZE 0x0020 +#define IPV4_HOST_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPV4_HOST_ADDRESS_TABLE_SIZE 8 +#define RDD_IPV4_HOST_ADDRESS_TABLE_LOG2_SIZE 3 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS 0xe980 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_BYTE_SIZE 0x0050 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_BYTE_SIZE 0x0007 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 40 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_SIZE 6 +#define US_DHD_BACKUP_ENTRY_SCRATCH_ADDRESS 0xe9d0 +#define US_DHD_BACKUP_ENTRY_SCRATCH_BYTE_SIZE 0x0010 +#define US_DHD_BACKUP_ENTRY_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS 0xe9e0 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_BYTE_SIZE 0x0020 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_SIZE 4 +#define MAIN_B_DEBUG_TRACE_ADDRESS 0xea00 +#define MAIN_B_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define MAIN_B_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAIN_B_DEBUG_TRACE_SIZE 512 +#define RDD_MAIN_B_DEBUG_TRACE_LOG2_SIZE 9 +#define PICO_B_DEBUG_TRACE_ADDRESS 0xec00 +#define PICO_B_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define PICO_B_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_PICO_B_DEBUG_TRACE_SIZE 512 +#define RDD_PICO_B_DEBUG_TRACE_LOG2_SIZE 9 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS 0xee00 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_BYTE_SIZE 0x0080 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE 2 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE 1 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 64 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE2 6 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_ADDRESS 0xee80 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_BYTE_SIZE 0x0080 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_LOG2_BYTE_SIZE 0x0007 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_ADDRESS 0xef00 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_BYTE_SIZE 0x0080 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_LOG2_BYTE_SIZE 0x0007 +#define LAN0_INGRESS_FIFO_ADDRESS 0xef80 +#define LAN0_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN0_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN5_INGRESS_FIFO_ADDRESS 0xefc0 +#define LAN5_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN5_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define RUNNER_FWTRACE_PICOB_BASE_ADDRESS 0xf000 +#define RUNNER_FWTRACE_PICOB_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_PICOB_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_PICOB_BASE_LOG2_SIZE 7 +#define LAN1_INGRESS_FIFO_ADDRESS 0xf400 +#define LAN1_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN1_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN6_INGRESS_FIFO_ADDRESS 0xf440 +#define LAN6_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN6_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN2_INGRESS_FIFO_ADDRESS 0xf480 +#define LAN2_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN2_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN7_INGRESS_FIFO_ADDRESS 0xf4c0 +#define LAN7_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN7_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN3_INGRESS_FIFO_ADDRESS 0xf500 +#define LAN3_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN3_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define US_DHD_BACKUP_INDEX_CACHE_ADDRESS 0xf540 +#define US_DHD_BACKUP_INDEX_CACHE_BYTE_SIZE 0x0040 +#define US_DHD_BACKUP_INDEX_CACHE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE 32 +#define RDD_US_DHD_BACKUP_INDEX_CACHE_LOG2_SIZE 5 +#define LAN4_INGRESS_FIFO_ADDRESS 0xf580 +#define LAN4_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN4_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define DHD_DOORBELL_COUNTERS_ADDRESS 0xf5c0 +#define DHD_DOORBELL_COUNTERS_BYTE_SIZE 0x0030 +#define DHD_DOORBELL_COUNTERS_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_DOORBELL_COUNTERS_SIZE 48 +#define RDD_DHD_DOORBELL_COUNTERS_LOG2_SIZE 6 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ADDRESS 0xf5f0 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_BYTE_SIZE 0x0010 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_LOG2_BYTE_SIZE 0x0004 +#define WAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0xf600 +#define WAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define WAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_ADDRESS 0xf640 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0014 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define US_CAM_DHD_DMA_SCRATCH_ADDRESS 0xf654 +#define US_CAM_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_CAM_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_DHD_BACKUP_FLUSH_SCRATCH_ADDRESS 0xf658 +#define US_DHD_BACKUP_FLUSH_SCRATCH_BYTE_SIZE 0x0008 +#define US_DHD_BACKUP_FLUSH_SCRATCH_LOG2_BYTE_SIZE 0x0003 +#define US_ENQ_DHD_DMA_SCRATCH_ADDRESS 0xf660 +#define US_ENQ_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_ENQ_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_R2D_DHD_DMA_SCRATCH_ADDRESS 0xf664 +#define US_R2D_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_R2D_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_ADDRESS 0xf668 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_BYTE_SIZE 0x0004 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE 4 +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_LOG2_SIZE 2 +#define COMMON_B_DUMMY_STORE_ADDRESS 0xf66c +#define COMMON_B_DUMMY_STORE_BYTE_SIZE 0x0001 +#define COMMON_B_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_ADDRESS 0xf66d +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_BYTE_SIZE 0x0001 +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_LOG2_BYTE_SIZE 0x0001 +/* DDR */ +#define BPM_PACKET_BUFFERS_ADDRESS 0x0000 +#define BPM_PACKET_BUFFERS_BYTE_SIZE 0xf00000 +#define BPM_PACKET_BUFFERS_LOG2_BYTE_SIZE 0x0018 +#define RDD_BPM_PACKET_BUFFERS_SIZE 7680 +#define RDD_BPM_PACKET_BUFFERS_LOG2_SIZE 13 +#define CONTEXT_TABLE_ADDRESS 0x0000 +#define CONTEXT_TABLE_BYTE_SIZE 0x0084 +#define CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0008 +#define NAT_CACHE_TABLE_ADDRESS 0x0000 +#define NAT_CACHE_TABLE_BYTE_SIZE 0x100000 +#define NAT_CACHE_TABLE_LOG2_BYTE_SIZE 0x0014 +#define RDD_NAT_CACHE_TABLE_SIZE 65536 +#define RDD_NAT_CACHE_TABLE_LOG2_SIZE 16 +#define NAT_CACHE_EXTENSION_TABLE_ADDRESS 0x0000 +#define NAT_CACHE_EXTENSION_TABLE_BYTE_SIZE 0x0070 +#define NAT_CACHE_EXTENSION_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_NAT_CACHE_EXTENSION_TABLE_SIZE 7 +#define RDD_NAT_CACHE_EXTENSION_TABLE_LOG2_SIZE 3 +#define NATC_CONTEXT_TABLE_ADDRESS 0x0000 +#define NATC_CONTEXT_TABLE_BYTE_SIZE 0x400000 +#define NATC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0016 +#define RDD_NATC_CONTEXT_TABLE_SIZE 65536 +#define RDD_NATC_CONTEXT_TABLE_LOG2_SIZE 16 +#define CONTEXT_CONTINUATION_TABLE_ADDRESS 0x0000 +#define CONTEXT_CONTINUATION_TABLE_BYTE_SIZE 0x4c0000 +#define CONTEXT_CONTINUATION_TABLE_LOG2_BYTE_SIZE 0x0017 +#define RDD_CONTEXT_CONTINUATION_TABLE_SIZE 65536 +#define RDD_CONTEXT_CONTINUATION_TABLE_LOG2_SIZE 16 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_ADDRESS 0x5d1500 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_BYTE_SIZE 0x00a0 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE 8 +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_LOG2_SIZE 3 +#define DHD_RX_POST_DDR_BUFFER_ADDRESS 0x5c1100 +#define DHD_RX_POST_DDR_BUFFER_BYTE_SIZE 0x8000 +#define DHD_RX_POST_DDR_BUFFER_LOG2_BYTE_SIZE 0x000f +#define RDD_DHD_RX_POST_DDR_BUFFER_SIZE 1024 +#define RDD_DHD_RX_POST_DDR_BUFFER_LOG2_SIZE 10 +#define DHD_RX_COMPLETE_DDR_BUFFER_ADDRESS 0x5c9100 +#define DHD_RX_COMPLETE_DDR_BUFFER_BYTE_SIZE 0x8000 +#define DHD_RX_COMPLETE_DDR_BUFFER_LOG2_BYTE_SIZE 0x000f +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE 1024 +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_LOG2_SIZE 10 +#define DHD_TX_POST_DDR_BUFFER_ADDRESS 0x5d15a0 +#define DHD_TX_POST_DDR_BUFFER_BYTE_SIZE 0x1800 +#define DHD_TX_POST_DDR_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE 8 +#define RDD_DHD_TX_POST_DDR_BUFFER_LOG2_SIZE 3 +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 16 +#define RDD_DHD_TX_POST_DDR_BUFFER_LOG2_SIZE2 4 +#define DHD_TX_COMPLETE_DDR_BUFFER_ADDRESS 0x5d2da0 +#define DHD_TX_COMPLETE_DDR_BUFFER_BYTE_SIZE 0x0100 +#define DHD_TX_COMPLETE_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE 16 +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_LOG2_SIZE 4 +#define R2D_WR_ARR_DDR_BUFFER_ADDRESS 0x5d1100 +#define R2D_WR_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define R2D_WR_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_R2D_WR_ARR_DDR_BUFFER_SIZE 128 +#define RDD_R2D_WR_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define D2R_RD_ARR_DDR_BUFFER_ADDRESS 0x5d1200 +#define D2R_RD_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define D2R_RD_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_D2R_RD_ARR_DDR_BUFFER_SIZE 128 +#define RDD_D2R_RD_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define R2D_RD_ARR_DDR_BUFFER_ADDRESS 0x5d1300 +#define R2D_RD_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define R2D_RD_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_R2D_RD_ARR_DDR_BUFFER_SIZE 128 +#define RDD_R2D_RD_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define D2R_WR_ARR_DDR_BUFFER_ADDRESS 0x5d1400 +#define D2R_WR_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define D2R_WR_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_D2R_WR_ARR_DDR_BUFFER_SIZE 128 +#define RDD_D2R_WR_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define DHD_BACKUP_QUEUES_BUFFER_ADDRESS 0x600000 +#define DHD_BACKUP_QUEUES_BUFFER_BYTE_SIZE 0x100000 +#define DHD_BACKUP_QUEUES_BUFFER_LOG2_BYTE_SIZE 0x0014 +#define RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE 524288 +#define RDD_DHD_BACKUP_QUEUES_BUFFER_LOG2_SIZE 19 +#define WLAN_MCAST_DHD_LIST_TABLE_ADDRESS 0x5c0000 +#define WLAN_MCAST_DHD_LIST_TABLE_BYTE_SIZE 0x1000 +#define WLAN_MCAST_DHD_LIST_TABLE_LOG2_BYTE_SIZE 0x000c +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_LOG2_SIZE 6 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_ADDRESS 0x5c1000 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_BYTE_SIZE 0x0001 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_LOG2_BYTE_SIZE 0x0001 +/* PSRAM */ +#endif +#ifdef WL4908_EAP +/* PRIVATE_A */ +#define INGRESS_HANDLER_BUFFER_ADDRESS 0x0000 +#define INGRESS_HANDLER_BUFFER_BYTE_SIZE 0x2000 +#define INGRESS_HANDLER_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_INGRESS_HANDLER_BUFFER_SIZE 32 +#define RDD_INGRESS_HANDLER_BUFFER_LOG2_SIZE 5 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS 0x2000 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_BYTE_SIZE 0x4000 +#define DS_FREE_PACKET_DESCRIPTORS_POOL_LOG2_BYTE_SIZE 0x000e +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_SIZE 2048 +#define RDD_DS_FREE_PACKET_DESCRIPTORS_POOL_LOG2_SIZE 11 +#define DS_CONNECTION_CONTEXT_BUFFER_ADDRESS 0x6000 +#define DS_CONNECTION_CONTEXT_BUFFER_BYTE_SIZE 0x0400 +#define DS_CONNECTION_CONTEXT_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CONTEXT_BUFFER_LOG2_SIZE 3 +#define DS_GSO_HEADER_BUFFER_ADDRESS 0x6400 +#define DS_GSO_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_GSO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_GSO_PSEUDO_HEADER_BUFFER_ADDRESS 0x6480 +#define DS_GSO_PSEUDO_HEADER_BUFFER_BYTE_SIZE 0x0028 +#define DS_GSO_PSEUDO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x64a8 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0008 +#define DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +#define RDD_DS_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 2 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_ADDRESS 0x64b0 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_BYTE_SIZE 0x0010 +#define DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_SIZE 8 +#define RDD_DS_RATE_SHAPER_BUDGET_ALLOCATOR_TABLE_LOG2_SIZE 3 +#define DS_CPU_REASON_TO_METER_TABLE_ADDRESS 0x64c0 +#define DS_CPU_REASON_TO_METER_TABLE_BYTE_SIZE 0x0040 +#define DS_CPU_REASON_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_REASON_TO_METER_TABLE_SIZE 64 +#define RDD_DS_CPU_REASON_TO_METER_TABLE_LOG2_SIZE 6 +#define DS_GSO_CHUNK_BUFFER_ADDRESS 0x6500 +#define DS_GSO_CHUNK_BUFFER_BYTE_SIZE 0x0080 +#define DS_GSO_CHUNK_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_CPU_RX_METER_TABLE_ADDRESS 0x6580 +#define DS_CPU_RX_METER_TABLE_BYTE_SIZE 0x0080 +#define DS_CPU_RX_METER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_CPU_RX_METER_TABLE_SIZE 16 +#define RDD_DS_CPU_RX_METER_TABLE_LOG2_SIZE 4 +#define DS_POLICER_TABLE_ADDRESS 0x6600 +#define DS_POLICER_TABLE_BYTE_SIZE 0x0100 +#define DS_POLICER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_POLICER_TABLE_SIZE 16 +#define RDD_DS_POLICER_TABLE_LOG2_SIZE 4 +#define IPSEC_DS_BUFFER_POOL_ADDRESS 0x6700 +#define IPSEC_DS_BUFFER_POOL_BYTE_SIZE 0x0160 +#define IPSEC_DS_BUFFER_POOL_LOG2_BYTE_SIZE 0x0009 +#define RDD_IPSEC_DS_BUFFER_POOL_SIZE 2 +#define RDD_IPSEC_DS_BUFFER_POOL_LOG2_SIZE 1 +#define IPSEC_DS_SA_DESC_TABLE_ADDRESS 0x6860 +#define IPSEC_DS_SA_DESC_TABLE_BYTE_SIZE 0x0500 +#define IPSEC_DS_SA_DESC_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_IPSEC_DS_SA_DESC_TABLE_SIZE 16 +#define RDD_IPSEC_DS_SA_DESC_TABLE_LOG2_SIZE 4 +#define IPSEC_US_SA_DESC_TABLE_ADDRESS 0x6d60 +#define IPSEC_US_SA_DESC_TABLE_BYTE_SIZE 0x0500 +#define IPSEC_US_SA_DESC_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_IPSEC_US_SA_DESC_TABLE_SIZE 16 +#define RDD_IPSEC_US_SA_DESC_TABLE_LOG2_SIZE 4 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_ADDRESS 0x7260 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_BYTE_SIZE 0x0300 +#define SERVICE_QUEUES_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_RATE_LIMITER_TABLE_LOG2_SIZE 5 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x7560 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_DS_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define DS_SPDSVC_CONTEXT_TABLE_ADDRESS 0x7580 +#define DS_SPDSVC_CONTEXT_TABLE_BYTE_SIZE 0x0050 +#define DS_SPDSVC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x75d0 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0010 +#define DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +#define RDD_DS_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 3 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS 0x75e0 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_BYTE_SIZE 0x0100 +#define DS_MAIN_PROFILING_BUFFER_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +#define RDD_DS_MAIN_PROFILING_BUFFER_RUNNER_LOG2_SIZE 5 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x76e0 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_DS_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define WLAN_MCAST_CONTROL_TABLE_ADDRESS 0x7700 +#define WLAN_MCAST_CONTROL_TABLE_BYTE_SIZE 0x0094 +#define WLAN_MCAST_CONTROL_TABLE_LOG2_BYTE_SIZE 0x0008 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_ADDRESS 0x7794 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_BYTE_SIZE 0x0004 +#define DS_WAN_UDP_FILTER_CONTROL_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DS_TOTAL_PPS_RATE_LIMITER_ADDRESS 0x7798 +#define DS_TOTAL_PPS_RATE_LIMITER_BYTE_SIZE 0x0008 +#define DS_TOTAL_PPS_RATE_LIMITER_LOG2_BYTE_SIZE 0x0003 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS 0x77a0 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_BYTE_SIZE 0x0020 +#define DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE 1 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +#define RDD_DS_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE2 4 +#define RATE_LIMITER_REMAINDER_TABLE_ADDRESS 0x77c0 +#define RATE_LIMITER_REMAINDER_TABLE_BYTE_SIZE 0x0040 +#define RATE_LIMITER_REMAINDER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_RATE_LIMITER_REMAINDER_TABLE_SIZE 32 +#define RDD_RATE_LIMITER_REMAINDER_TABLE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS 0x7800 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_SIZE 8 +#define FC_MCAST_CONNECTION2_TABLE_ADDRESS 0x8000 +#define FC_MCAST_CONNECTION2_TABLE_BYTE_SIZE 0x0800 +#define FC_MCAST_CONNECTION2_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_FC_MCAST_CONNECTION2_TABLE_SIZE 128 +#define RDD_FC_MCAST_CONNECTION2_TABLE_LOG2_SIZE 7 +#define ETH_TX_QUEUES_POINTERS_TABLE_ADDRESS 0x8800 +#define ETH_TX_QUEUES_POINTERS_TABLE_BYTE_SIZE 0x0120 +#define ETH_TX_QUEUES_POINTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_SIZE 72 +#define RDD_ETH_TX_QUEUES_POINTERS_TABLE_LOG2_SIZE 7 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_ADDRESS 0x8920 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_BYTE_SIZE 0x0020 +#define DS_FC_L2_UCAST_TUPLE_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS 0x8940 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +#define RDD_DS_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define SBPM_REPLY_ADDRESS 0x8980 +#define SBPM_REPLY_BYTE_SIZE 0x0080 +#define SBPM_REPLY_LOG2_BYTE_SIZE 0x0007 +#define DS_WAN_FLOW_TABLE_ADDRESS 0x8a00 +#define DS_WAN_FLOW_TABLE_BYTE_SIZE 0x0200 +#define DS_WAN_FLOW_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_WAN_FLOW_TABLE_SIZE 256 +#define RDD_DS_WAN_FLOW_TABLE_LOG2_SIZE 8 +#define DS_CONNECTION_CONTEXT_REMAINING_BUFFER_ADDRESS 0x8c00 +#define DS_CONNECTION_CONTEXT_REMAINING_BUFFER_BYTE_SIZE 0x0260 +#define DS_CONNECTION_CONTEXT_REMAINING_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CONTEXT_REMAINING_BUFFER_LOG2_SIZE 3 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS 0x8e60 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_BYTE_SIZE 0x0020 +#define DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +#define RDD_DS_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_SIZE 2 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS 0x8e80 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_BYTE_SIZE 0x0080 +#define DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE 1 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +#define RDD_DS_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE2 4 +#define DS_FORWARDING_MATRIX_TABLE_ADDRESS 0x8f00 +#define DS_FORWARDING_MATRIX_TABLE_BYTE_SIZE 0x0090 +#define DS_FORWARDING_MATRIX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_DS_FORWARDING_MATRIX_TABLE_LOG2_SIZE 4 +#define RDD_DS_FORWARDING_MATRIX_TABLE_SIZE2 16 +#define RDD_DS_FORWARDING_MATRIX_TABLE_LOG2_SIZE2 4 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0x8f90 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0010 +#define DS_FC_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0x8fa0 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_DS_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_ADDRESS 0x8fc0 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_BYTE_SIZE 0x0030 +#define DHD_TX_COMPLETE_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_TX_COMPLETE_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINA_PARAM_ADDRESS 0x8ff0 +#define RUNNER_FWTRACE_MAINA_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINA_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINA_PARAM_LOG2_SIZE 1 +#define DS_WAN_UDP_FILTER_TABLE_ADDRESS 0x9000 +#define DS_WAN_UDP_FILTER_TABLE_BYTE_SIZE 0x0200 +#define DS_WAN_UDP_FILTER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_WAN_UDP_FILTER_TABLE_SIZE 32 +#define RDD_DS_WAN_UDP_FILTER_TABLE_LOG2_SIZE 5 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0x9200 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9240 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_DS_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9280 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_DS_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_ADDRESS 0x92c0 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0030 +#define DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_SIZE 3 +#define RDD_DHD_COMPLETE_RING_DESCRIPTOR_BUFFER_LOG2_SIZE 2 +#define RUNNER_FWTRACE_PICOA_PARAM_ADDRESS 0x92f0 +#define RUNNER_FWTRACE_PICOA_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_PICOA_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_PICOA_PARAM_LOG2_SIZE 1 +#define DS_RATE_LIMITER_TABLE_ADDRESS 0x9300 +#define DS_RATE_LIMITER_TABLE_BYTE_SIZE 0x0100 +#define DS_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_RATE_LIMITER_TABLE_SIZE 32 +#define RDD_DS_RATE_LIMITER_TABLE_LOG2_SIZE 5 +#define ETH_TX_QUEUES_TABLE_ADDRESS 0x9400 +#define ETH_TX_QUEUES_TABLE_BYTE_SIZE 0x0480 +#define ETH_TX_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_ETH_TX_QUEUES_TABLE_SIZE 72 +#define RDD_ETH_TX_QUEUES_TABLE_LOG2_SIZE 7 +#define INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS 0x9880 +#define INGRESS_HANDLER_SKB_DATA_POINTER_BYTE_SIZE 0x0080 +#define INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +#define RDD_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_SIZE 5 +#define DS_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x9900 +#define DS_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x9980 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define DS_GRE_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define FC_MCAST_PORT_HEADER_BUFFER_ADDRESS 0x9a00 +#define FC_MCAST_PORT_HEADER_BUFFER_BYTE_SIZE 0x0200 +#define FC_MCAST_PORT_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE 8 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_LOG2_SIZE 3 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_SIZE2 64 +#define RDD_FC_MCAST_PORT_HEADER_BUFFER_LOG2_SIZE2 6 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_ADDRESS 0x9c00 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_BYTE_SIZE 0x0200 +#define DOWNSTREAM_LAN_ENQUEUE_SQ_PD_LOG2_BYTE_SIZE 0x0009 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_SIZE 64 +#define RDD_DOWNSTREAM_LAN_ENQUEUE_SQ_PD_LOG2_SIZE 6 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_ADDRESS 0x9e00 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_BYTE_SIZE 0x0200 +#define DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_SIZE 8 +#define RDD_DS_CONNECTION_CONTEXT_MULTICAST_BUFFER_LOG2_SIZE 3 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_ADDRESS 0xa000 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_BYTE_SIZE 0x0200 +#define CPU_RX_SQ_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_SIZE 64 +#define RDD_CPU_RX_SQ_PD_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_CPU_TX_BBH_DESCRIPTORS_ADDRESS 0xa200 +#define DS_CPU_TX_BBH_DESCRIPTORS_BYTE_SIZE 0x0100 +#define DS_CPU_TX_BBH_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +#define RDD_DS_CPU_TX_BBH_DESCRIPTORS_LOG2_SIZE 5 +#define DS_PROFILING_BUFFER_PICO_RUNNER_ADDRESS 0xa300 +#define DS_PROFILING_BUFFER_PICO_RUNNER_BYTE_SIZE 0x0100 +#define DS_PROFILING_BUFFER_PICO_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define GSO_PICO_QUEUE_ADDRESS 0xa400 +#define GSO_PICO_QUEUE_BYTE_SIZE 0x0200 +#define GSO_PICO_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_GSO_PICO_QUEUE_SIZE 64 +#define RDD_GSO_PICO_QUEUE_LOG2_SIZE 6 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS 0xa600 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x00c0 +#define DS_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_SIZE 4 +#define RDD_DS_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_ADDRESS 0xa6c0 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_BYTE_SIZE 0x0040 +#define DS_CPU_TX_MESSAGE_DATA_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS 0xa700 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_BYTE_SIZE 0x0080 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +#define RDD_DS_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_SIZE 4 +#define ETH_TX_LOCAL_REGISTERS_ADDRESS 0xa780 +#define ETH_TX_LOCAL_REGISTERS_BYTE_SIZE 0x0048 +#define ETH_TX_LOCAL_REGISTERS_LOG2_BYTE_SIZE 0x0007 +#define RDD_ETH_TX_LOCAL_REGISTERS_SIZE 9 +#define RDD_ETH_TX_LOCAL_REGISTERS_LOG2_SIZE 4 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS 0xa7c8 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_BYTE_SIZE 0x0008 +#define DS_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 2 +#define RDD_DS_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_SIZE 1 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS 0xa7d0 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_BYTE_SIZE 0x0010 +#define EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_BYTE_SIZE 0x0004 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 8 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_SIZE 3 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xa7e0 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_DS_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define IPSEC_DS_QUEUE_ADDRESS 0xa800 +#define IPSEC_DS_QUEUE_BYTE_SIZE 0x0200 +#define IPSEC_DS_QUEUE_LOG2_BYTE_SIZE 0x0009 +#define RDD_IPSEC_DS_QUEUE_SIZE 64 +#define RDD_IPSEC_DS_QUEUE_LOG2_SIZE 6 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0xaa00 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 16 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 4 +#define DS_QUEUE_PROFILE_TABLE_ADDRESS 0xaa80 +#define DS_QUEUE_PROFILE_TABLE_BYTE_SIZE 0x0080 +#define DS_QUEUE_PROFILE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_QUEUE_PROFILE_TABLE_SIZE 8 +#define RDD_DS_QUEUE_PROFILE_TABLE_LOG2_SIZE 3 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_ADDRESS 0xab00 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_BYTE_SIZE 0x0080 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_SIZE 16 +#define RDD_DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_LOG2_SIZE 4 +#define DS_SQ_ENQUEUE_QUEUE_ADDRESS 0xab80 +#define DS_SQ_ENQUEUE_QUEUE_BYTE_SIZE 0x0040 +#define DS_SQ_ENQUEUE_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_SQ_ENQUEUE_QUEUE_SIZE 64 +#define RDD_DS_SQ_ENQUEUE_QUEUE_LOG2_SIZE 6 +#define MULTICAST_HEADER_BUFFER_ADDRESS 0xabc0 +#define MULTICAST_HEADER_BUFFER_BYTE_SIZE 0x0040 +#define MULTICAST_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define CPU_TX_FAST_QUEUE_ADDRESS 0xac00 +#define CPU_TX_FAST_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_FAST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_FAST_QUEUE_SIZE 16 +#define RDD_CPU_TX_FAST_QUEUE_LOG2_SIZE 4 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS 0xac80 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_CPU_RX_PICO_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xacc0 +#define DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_DS_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xace0 +#define DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_DS_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define CPU_TX_PICO_QUEUE_ADDRESS 0xad00 +#define CPU_TX_PICO_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_PICO_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_PICO_QUEUE_SIZE 16 +#define RDD_CPU_TX_PICO_QUEUE_LOG2_SIZE 4 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_ADDRESS 0xad80 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DOWNSTREAM_MULTICAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_SIZE 64 +#define RDD_DOWNSTREAM_MULTICAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xadc0 +#define DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_DS_CPU_TX_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define DS_NULL_BUFFER_ADDRESS 0xade0 +#define DS_NULL_BUFFER_BYTE_SIZE 0x0018 +#define DS_NULL_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_NULL_BUFFER_SIZE 3 +#define RDD_DS_NULL_BUFFER_LOG2_SIZE 2 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS 0xadf8 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_BYTE_SIZE 0x0008 +#define DS_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0003 +#define CPU_RX_PD_INGRESS_QUEUE_ADDRESS 0xae00 +#define CPU_RX_PD_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define CPU_RX_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_RX_PD_INGRESS_QUEUE_SIZE 16 +#define RDD_CPU_RX_PD_INGRESS_QUEUE_LOG2_SIZE 4 +#define DS_ROUTER_INGRESS_QUEUE_ADDRESS 0xae80 +#define DS_ROUTER_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_ROUTER_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_ROUTER_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_ROUTER_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS 0xaec0 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define DS_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +#define RDD_DS_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_ADDRESS 0xaf00 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_BYTE_SIZE 0x0080 +#define CPU_RX_FAST_PD_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_SIZE 16 +#define RDD_CPU_RX_FAST_PD_INGRESS_QUEUE_LOG2_SIZE 4 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS 0xaf80 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_CPU_RX_FAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define DHD_COMPLETE_RING_BUFFER_ADDRESS 0xafc0 +#define DHD_COMPLETE_RING_BUFFER_BYTE_SIZE 0x0018 +#define DHD_COMPLETE_RING_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DHD_COMPLETE_RING_BUFFER_SIZE 3 +#define RDD_DHD_COMPLETE_RING_BUFFER_LOG2_SIZE 2 +#define DS_FAST_MALLOC_RESULT_TABLE_ADDRESS 0xafd8 +#define DS_FAST_MALLOC_RESULT_TABLE_BYTE_SIZE 0x0008 +#define DS_FAST_MALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_FAST_MALLOC_RESULT_TABLE_SIZE 2 +#define RDD_DS_FAST_MALLOC_RESULT_TABLE_LOG2_SIZE 1 +#define DS_CPU_PARAMETERS_BLOCK_ADDRESS 0xafe0 +#define DS_CPU_PARAMETERS_BLOCK_BYTE_SIZE 0x0014 +#define DS_CPU_PARAMETERS_BLOCK_LOG2_BYTE_SIZE 0x0005 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_ADDRESS 0xaff4 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_EXTRA_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_PICO_MALLOC_RESULT_TABLE_ADDRESS 0xaff8 +#define DS_PICO_MALLOC_RESULT_TABLE_BYTE_SIZE 0x0008 +#define DS_PICO_MALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_PICO_MALLOC_RESULT_TABLE_SIZE 2 +#define RDD_DS_PICO_MALLOC_RESULT_TABLE_LOG2_SIZE 1 +#define DS_DHD_TX_POST_HEADER_SCRATCH_ADDRESS 0xb000 +#define DS_DHD_TX_POST_HEADER_SCRATCH_BYTE_SIZE 0x0080 +#define DS_DHD_TX_POST_HEADER_SCRATCH_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_SIZE 4 +#define RDD_DS_DHD_TX_POST_HEADER_SCRATCH_LOG2_SIZE 2 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS 0xb080 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_BYTE_SIZE 0x00a0 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_LOG2_BYTE_SIZE 0x0008 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_SIZE 5 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_LOG2_SIZE 3 +#define DS_DEBUG_BUFFER_ADDRESS 0xb120 +#define DS_DEBUG_BUFFER_BYTE_SIZE 0x0080 +#define DS_DEBUG_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_DEBUG_BUFFER_SIZE 32 +#define RDD_DS_DEBUG_BUFFER_LOG2_SIZE 5 +#define FC_MCAST_CONNECTION_TABLE_PLUS_ADDRESS 0xb1a0 +#define FC_MCAST_CONNECTION_TABLE_PLUS_BYTE_SIZE 0x0014 +#define FC_MCAST_CONNECTION_TABLE_PLUS_LOG2_BYTE_SIZE 0x0005 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xb1b4 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS 0xb1b8 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_BYTE_SIZE 0x0008 +#define DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +#define RDD_DS_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_SIZE 3 +#define DS_DATA_POINTER_DUMMY_TARGET_ADDRESS 0xb1c0 +#define DS_DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0014 +#define DS_DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_SIZE 5 +#define RDD_DS_DATA_POINTER_DUMMY_TARGET_LOG2_SIZE 3 +#define DS_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xb1d4 +#define DS_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_ADDRESS 0xb1d8 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_BYTE_SIZE 0x0006 +#define WLAN_MCAST_SSID_STATS_STATE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xb1de +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define DS_MAIN_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define SERVICE_QUEUES_WLAN_SCRATCH_ADDRESS 0xb1e0 +#define SERVICE_QUEUES_WLAN_SCRATCH_BYTE_SIZE 0x0014 +#define SERVICE_QUEUES_WLAN_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define DS_BPM_DDR_BUFFERS_BASE_ADDRESS 0xb1f4 +#define DS_BPM_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_1_BUFFERS_BASE_ADDRESS 0xb1f8 +#define DS_BPM_DDR_1_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define DS_BPM_DDR_1_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define DS_CONNECTION_TABLE_CONFIG_ADDRESS 0xb1fc +#define DS_CONNECTION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONNECTION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_GSO_CONTEXT_TABLE_ADDRESS 0xb200 +#define DS_GSO_CONTEXT_TABLE_BYTE_SIZE 0x0084 +#define DS_GSO_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0008 +#define DS_CONTEXT_TABLE_CONFIG_ADDRESS 0xb284 +#define DS_CONTEXT_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONTEXT_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS 0xb288 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_BYTE_SIZE 0x0004 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +#define RDD_DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_SIZE 2 +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_ADDRESS 0xb28c +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_BYTE_SIZE 0x0004 +#define DS_DEBUG_PERIPHERALS_STATUS_REGISTER_LOG2_BYTE_SIZE 0x0002 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS 0xb290 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_BYTE_SIZE 0x0010 +#define EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_BYTE_SIZE 0x0004 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 8 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_SIZE 3 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb2a0 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define HASH_BUFFER_ADDRESS 0xb2b0 +#define HASH_BUFFER_BYTE_SIZE 0x0010 +#define HASH_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xb2c0 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0050 +#define EMAC_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_SIZE 10 +#define RDD_EMAC_ABSOLUTE_TX_BBH_COUNTER_LOG2_SIZE 4 +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS 0xb310 +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_BYTE_SIZE 0x000a +#define FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0004 +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xb31a +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define DS_PICO_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_ADDRESS 0xb31c +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define DS_CONTEXT_CONTINUATION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define DS_FW_MAC_ADDRS_ADDRESS 0xb320 +#define DS_FW_MAC_ADDRS_BYTE_SIZE 0x0080 +#define DS_FW_MAC_ADDRS_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_FW_MAC_ADDRS_SIZE 16 +#define RDD_DS_FW_MAC_ADDRS_LOG2_SIZE 4 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb3a0 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS 0xb3b0 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_BYTE_SIZE 0x0010 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_SIZE 3 +#define DS_DHD_FLOW_RING_DROP_COUNTER_ADDRESS 0xb3c0 +#define DS_DHD_FLOW_RING_DROP_COUNTER_BYTE_SIZE 0x0014 +#define DS_DHD_FLOW_RING_DROP_COUNTER_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +#define RDD_DS_DHD_FLOW_RING_DROP_COUNTER_LOG2_SIZE 3 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xb3d4 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define DS_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS 0xb3d8 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_BYTE_SIZE 0x0004 +#define DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +#define RDD_DS_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_SIZE 2 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xb3dc +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define TIMER_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS 0xb3e0 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_BYTE_SIZE 0x0010 +#define DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +#define RDD_DS_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define ETH_TX_SCRATCH_ADDRESS 0xb3f0 +#define ETH_TX_SCRATCH_BYTE_SIZE 0x0010 +#define ETH_TX_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define RDD_ETH_TX_SCRATCH_SIZE 16 +#define RDD_ETH_TX_SCRATCH_LOG2_SIZE 4 +#define GPON_RX_DIRECT_DESCRIPTORS_ADDRESS 0xb400 +#define GPON_RX_DIRECT_DESCRIPTORS_BYTE_SIZE 0x0100 +#define GPON_RX_DIRECT_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_SIZE 32 +#define RDD_GPON_RX_DIRECT_DESCRIPTORS_LOG2_SIZE 5 +#define DS_GSO_DESC_TABLE_ADDRESS 0xb500 +#define DS_GSO_DESC_TABLE_BYTE_SIZE 0x0080 +#define DS_GSO_DESC_TABLE_LOG2_BYTE_SIZE 0x0007 +#define DS_DHD_TX_POST_INGRESS_QUEUE_ADDRESS 0xb580 +#define DS_DHD_TX_POST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define DS_DHD_TX_POST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +#define RDD_DS_DHD_TX_POST_INGRESS_QUEUE_LOG2_SIZE 6 +#define DS_SYSTEM_CONFIGURATION_ADDRESS 0xb5c0 +#define DS_SYSTEM_CONFIGURATION_BYTE_SIZE 0x0024 +#define DS_SYSTEM_CONFIGURATION_LOG2_BYTE_SIZE 0x0006 +#define SPDSVC_HOST_BUF_PTR_ADDRESS 0xb5e4 +#define SPDSVC_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define SPDSVC_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define GSO_TX_DHD_L2_BUFFER_ADDRESS 0xb5e8 +#define GSO_TX_DHD_L2_BUFFER_BYTE_SIZE 0x0016 +#define GSO_TX_DHD_L2_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_GSO_TX_DHD_L2_BUFFER_SIZE 22 +#define RDD_GSO_TX_DHD_L2_BUFFER_LOG2_SIZE 5 +#define IPTV_COUNTERS_BUFFER_ADDRESS 0xb5fe +#define IPTV_COUNTERS_BUFFER_BYTE_SIZE 0x0002 +#define IPTV_COUNTERS_BUFFER_LOG2_BYTE_SIZE 0x0001 +#define WLAN_MCAST_INGRESS_QUEUE_ADDRESS 0xb600 +#define WLAN_MCAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define WLAN_MCAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_WLAN_MCAST_INGRESS_QUEUE_SIZE 64 +#define RDD_WLAN_MCAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define IPSEC_DS_SA_DESC_CAM_TABLE_ADDRESS 0xb640 +#define IPSEC_DS_SA_DESC_CAM_TABLE_BYTE_SIZE 0x0020 +#define IPSEC_DS_SA_DESC_CAM_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_SIZE 16 +#define RDD_IPSEC_DS_SA_DESC_CAM_TABLE_LOG2_SIZE 4 +#define IPSEC_US_SA_DESC_CAM_TABLE_ADDRESS 0xb660 +#define IPSEC_US_SA_DESC_CAM_TABLE_BYTE_SIZE 0x0020 +#define IPSEC_US_SA_DESC_CAM_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_SIZE 16 +#define RDD_IPSEC_US_SA_DESC_CAM_TABLE_LOG2_SIZE 4 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_ADDRESS 0xb680 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_BYTE_SIZE 0x0018 +#define SERVICE_QUEUES_OVERALL_RATE_LIMITER_LOG2_BYTE_SIZE 0x0005 +#define CPU_TX_DHD_L2_BUFFER_ADDRESS 0xb698 +#define CPU_TX_DHD_L2_BUFFER_BYTE_SIZE 0x0016 +#define CPU_TX_DHD_L2_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define RDD_CPU_TX_DHD_L2_BUFFER_SIZE 22 +#define RDD_CPU_TX_DHD_L2_BUFFER_LOG2_SIZE 5 +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xb6ae +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define CPU_TX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_ADDRESS 0xb6b0 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_BYTE_SIZE 0x0010 +#define DS_INGRESS_CLASSIFICATION_KEY_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_ADDRESS 0xb6c0 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define CPU_TX_DS_PICO_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_ADDRESS 0xb6d0 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define WLAN_MCAST_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_ADDRESS 0xb6e0 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define GSO_TX_DS_PICO_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define RUNNER_FLOW_IH_RESPONSE_ADDRESS 0xb6f0 +#define RUNNER_FLOW_IH_RESPONSE_BYTE_SIZE 0x0008 +#define RUNNER_FLOW_IH_RESPONSE_LOG2_BYTE_SIZE 0x0003 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS 0xb6f8 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_BYTE_SIZE 0x0008 +#define DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +#define RDD_DS_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_SIZE 3 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_ADDRESS 0xb700 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_BYTE_SIZE 0x0008 +#define GSO_TX_ENQUEUE_PCI_PACKET_CONTEXT_LOG2_BYTE_SIZE 0x0003 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_ADDRESS 0xb708 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_BYTE_SIZE 0x0008 +#define CPU_TX_ENQUEUE_PCI_PACKET_CONTEXT_LOG2_BYTE_SIZE 0x0003 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_ADDRESS 0xb710 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_BYTE_SIZE 0x0005 +#define EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_LOG2_BYTE_SIZE 0x0003 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_SIZE 5 +#define RDD_EMAC_SKB_ENQUEUED_INDEXES_FIFO_COUNTERS_LOG2_SIZE 3 +#define ETH_TX_EMACS_STATUS_ADDRESS 0xb715 +#define ETH_TX_EMACS_STATUS_BYTE_SIZE 0x0001 +#define ETH_TX_EMACS_STATUS_LOG2_BYTE_SIZE 0x0001 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_ADDRESS 0xb716 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_BYTE_SIZE 0x0002 +#define FREE_PACKET_DESCRIPTORS_POOL_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define HASH_BASED_FORWARDING_PORT_TABLE_ADDRESS 0xb718 +#define HASH_BASED_FORWARDING_PORT_TABLE_BYTE_SIZE 0x0004 +#define HASH_BASED_FORWARDING_PORT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_SIZE 4 +#define RDD_HASH_BASED_FORWARDING_PORT_TABLE_LOG2_SIZE 2 +#define DS_CPU_TX_DATA_POINTER_DUMMY_TARGET_ADDRESS 0xb71c +#define DS_CPU_TX_DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0004 +#define DS_CPU_TX_DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0002 +#define FIREWALL_IPV6_R16_BUFFER_ADDRESS 0xb720 +#define FIREWALL_IPV6_R16_BUFFER_BYTE_SIZE 0x0004 +#define FIREWALL_IPV6_R16_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb724 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_ADDRESS 0xb726 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define CPU_RX_PD_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xb728 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DS_CPU_RX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_ADDRESS 0xb72a +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_LOG2_BYTE_SIZE 0x0001 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_ADDRESS 0xb72c +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_BYTE_SIZE 0x0002 +#define DS_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_LOG2_BYTE_SIZE 0x0001 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_ADDRESS 0xb72e +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DS_CPU_RX_FAST_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS 0xb730 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_BYTE_SIZE 0x0002 +#define DS_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_ANY_SRC_PORT_FLOW_COUNTER_ADDRESS 0xb732 +#define DS_ANY_SRC_PORT_FLOW_COUNTER_BYTE_SIZE 0x0002 +#define DS_ANY_SRC_PORT_FLOW_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define GSO_DESC_PTR_ADDRESS 0xb734 +#define GSO_DESC_PTR_BYTE_SIZE 0x0004 +#define GSO_DESC_PTR_LOG2_BYTE_SIZE 0x0002 +#define GSO_TX_DHD_HOST_BUF_PTR_ADDRESS 0xb738 +#define GSO_TX_DHD_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define GSO_TX_DHD_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_SIZE 4 +#define RDD_GSO_TX_DHD_HOST_BUF_PTR_LOG2_SIZE 2 +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_ADDRESS 0xb73c +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_BYTE_SIZE 0x0004 +#define DS_DHD_TX_POST_HOST_DATA_PTR_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define CPU_TX_DHD_HOST_BUF_PTR_ADDRESS 0xb740 +#define CPU_TX_DHD_HOST_BUF_PTR_BYTE_SIZE 0x0004 +#define CPU_TX_DHD_HOST_BUF_PTR_LOG2_BYTE_SIZE 0x0002 +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_SIZE 4 +#define RDD_CPU_TX_DHD_HOST_BUF_PTR_LOG2_SIZE 2 +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_ADDRESS 0xb744 +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_BYTE_SIZE 0x0004 +#define IPSEC_DS_DDR_SA_DESC_TABLE_PTR_LOG2_BYTE_SIZE 0x0002 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_ADDRESS 0xb748 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_BYTE_SIZE 0x0002 +#define DS_TIMER_7_SCHEDULER_NEXT_ENTRY_LOG2_BYTE_SIZE 0x0001 +#define DS_MEMLIB_SEMAPHORE_ADDRESS 0xb74a +#define DS_MEMLIB_SEMAPHORE_BYTE_SIZE 0x0002 +#define DS_MEMLIB_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define WAN_PHYSICAL_PORT_ADDRESS 0xb74c +#define WAN_PHYSICAL_PORT_BYTE_SIZE 0x0002 +#define WAN_PHYSICAL_PORT_LOG2_BYTE_SIZE 0x0001 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb74e +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define DOWNSTREAM_MULTICAST_LAN_ENQUEUE_SERVICE_QUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_RUNNER_CONGESTION_STATE_ADDRESS 0xb750 +#define DS_RUNNER_CONGESTION_STATE_BYTE_SIZE 0x0002 +#define DS_RUNNER_CONGESTION_STATE_LOG2_BYTE_SIZE 0x0001 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_ADDRESS 0xb752 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_BYTE_SIZE 0x0002 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_LOG2_BYTE_SIZE 0x0001 +#define GSO_PICO_QUEUE_PTR_ADDRESS 0xb754 +#define GSO_PICO_QUEUE_PTR_BYTE_SIZE 0x0002 +#define GSO_PICO_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_ADDRESS 0xb756 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_BYTE_SIZE 0x0002 +#define DHD_TX_COMPLETE_BPM_REF_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_ADDRESS 0xb758 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_BYTE_SIZE 0x0002 +#define DHD_TX_POST_CPU_BPM_REF_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_ADDRESS 0xb75a +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_BYTE_SIZE 0x0002 +#define DS_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_ADDRESS 0xb75c +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_BYTE_SIZE 0x0002 +#define DS_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_DDR_SA_DESC_SIZE_ADDRESS 0xb75e +#define IPSEC_DS_DDR_SA_DESC_SIZE_BYTE_SIZE 0x0002 +#define IPSEC_DS_DDR_SA_DESC_SIZE_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_QUEUE_PTR_ADDRESS 0xb760 +#define IPSEC_DS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define IPSEC_DS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_IP_LENGTH_ADDRESS 0xb762 +#define IPSEC_DS_IP_LENGTH_BYTE_SIZE 0x0002 +#define IPSEC_DS_IP_LENGTH_LOG2_BYTE_SIZE 0x0001 +#define PRIVATE_A_DUMMY_STORE_ADDRESS 0xb764 +#define PRIVATE_A_DUMMY_STORE_BYTE_SIZE 0x0001 +#define PRIVATE_A_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_ADDRESS 0xb765 +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_BYTE_SIZE 0x0001 +#define ETH_TX_INTER_LAN_SCHEDULING_OFFSET_LOG2_BYTE_SIZE 0x0001 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xb766 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define DS_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xb767 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define DS_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define CPU_TX_DS_PICO_SEMAPHORE_ADDRESS 0xb768 +#define CPU_TX_DS_PICO_SEMAPHORE_BYTE_SIZE 0x0001 +#define CPU_TX_DS_PICO_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define DS_FC_GLOBAL_CFG_ADDRESS 0xb769 +#define DS_FC_GLOBAL_CFG_BYTE_SIZE 0x0001 +#define DS_FC_GLOBAL_CFG_LOG2_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_ADDRESS 0xb76a +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_ADDRESS 0xb76b +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define DS_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_PACKET_BUFFER_SIZE_ASR_8_ADDRESS 0xb76c +#define DS_PACKET_BUFFER_SIZE_ASR_8_BYTE_SIZE 0x0001 +#define DS_PACKET_BUFFER_SIZE_ASR_8_LOG2_BYTE_SIZE 0x0001 +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb76d +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define DS_MAIN_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb76e +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define DS_PICO_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_ADDRESS 0xb76f +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_BYTE_SIZE 0x0001 +#define DS_RUNNER_FLOW_IH_RESPONSE_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS 0xb770 +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_SLAVE_VECTOR_LOG2_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_ADDRESS 0xb771 +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_BYTE_SIZE 0x0001 +#define DS_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_LOG2_BYTE_SIZE 0x0001 +#define DS_IH_CONGESTION_THRESHOLD_ADDRESS 0xb772 +#define DS_IH_CONGESTION_THRESHOLD_BYTE_SIZE 0x0001 +#define DS_IH_CONGESTION_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define DS_FAST_MALLOC_RESULT_MUTEX_ADDRESS 0xb773 +#define DS_FAST_MALLOC_RESULT_MUTEX_BYTE_SIZE 0x0001 +#define DS_FAST_MALLOC_RESULT_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DS_PICO_MALLOC_RESULT_MUTEX_ADDRESS 0xb774 +#define DS_PICO_MALLOC_RESULT_MUTEX_BYTE_SIZE 0x0001 +#define DS_PICO_MALLOC_RESULT_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DS_RX_SBPM_TO_FPM_COPY_SEMAPHORE_ADDRESS 0xb775 +#define DS_RX_SBPM_TO_FPM_COPY_SEMAPHORE_BYTE_SIZE 0x0001 +#define DS_RX_SBPM_TO_FPM_COPY_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define DS_FW_MAC_ADDRS_COUNT_ADDRESS 0xb776 +#define DS_FW_MAC_ADDRS_COUNT_BYTE_SIZE 0x0001 +#define DS_FW_MAC_ADDRS_COUNT_LOG2_BYTE_SIZE 0x0001 +#define DS_DHD_DMA_SYNCHRONIZATION_ADDRESS 0xb777 +#define DS_DHD_DMA_SYNCHRONIZATION_BYTE_SIZE 0x0001 +#define DS_DHD_DMA_SYNCHRONIZATION_LOG2_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_SEMAPHORE_ADDRESS 0xb778 +#define DHD_TX_POST_CPU_SEMAPHORE_BYTE_SIZE 0x0001 +#define DHD_TX_POST_CPU_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define RING_CACHE_DHD_TXPOST_MUTEX_ADDRESS 0xb779 +#define RING_CACHE_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define RING_CACHE_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define COMMON_DHD_TXPOST_MUTEX_ADDRESS 0xb77a +#define COMMON_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define COMMON_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define TXCPL_INT_DHD_TXPOST_MUTEX_ADDRESS 0xb77b +#define TXCPL_INT_DHD_TXPOST_MUTEX_BYTE_SIZE 0x0001 +#define TXCPL_INT_DHD_TXPOST_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_ADDRESS 0xb77c +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_BYTE_SIZE 0x0001 +#define IPSEC_DS_SA_DESC_NEXT_REPLACE_LOG2_BYTE_SIZE 0x0001 +#define IPSEC_US_SA_DESC_NEXT_REPLACE_ADDRESS 0xb77d +#define IPSEC_US_SA_DESC_NEXT_REPLACE_BYTE_SIZE 0x0001 +#define IPSEC_US_SA_DESC_NEXT_REPLACE_LOG2_BYTE_SIZE 0x0001 +#define ETH_TX_MAC_TABLE_ADDRESS 0xbb00 +#define ETH_TX_MAC_TABLE_BYTE_SIZE 0x0100 +#define ETH_TX_MAC_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH_TX_MAC_TABLE_SIZE 8 +#define RDD_ETH_TX_MAC_TABLE_LOG2_SIZE 3 +#define GPON_RX_NORMAL_DESCRIPTORS_ADDRESS 0xbe00 +#define GPON_RX_NORMAL_DESCRIPTORS_BYTE_SIZE 0x0100 +#define GPON_RX_NORMAL_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_SIZE 32 +#define RDD_GPON_RX_NORMAL_DESCRIPTORS_LOG2_SIZE 5 +/* PRIVATE_B */ +#define US_INGRESS_HANDLER_BUFFER_ADDRESS 0x0000 +#define US_INGRESS_HANDLER_BUFFER_BYTE_SIZE 0x2000 +#define US_INGRESS_HANDLER_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_US_INGRESS_HANDLER_BUFFER_SIZE 32 +#define RDD_US_INGRESS_HANDLER_BUFFER_LOG2_SIZE 5 +#define US_CSO_CHUNK_BUFFER_ADDRESS 0x2000 +#define US_CSO_CHUNK_BUFFER_BYTE_SIZE 0x0080 +#define US_CSO_CHUNK_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define US_CSO_PSEUDO_HEADER_BUFFER_ADDRESS 0x2080 +#define US_CSO_PSEUDO_HEADER_BUFFER_BYTE_SIZE 0x0028 +#define US_CSO_PSEUDO_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x20a8 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0008 +#define US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_SIZE 4 +#define RDD_US_TIMER_7_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 2 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_ADDRESS 0x20b0 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_BYTE_SIZE 0x0010 +#define US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_SIZE 8 +#define RDD_US_RATE_CONTROL_BUDGET_ALLOCATOR_TABLE_LOG2_SIZE 3 +#define US_CPU_REASON_TO_METER_TABLE_ADDRESS 0x20c0 +#define US_CPU_REASON_TO_METER_TABLE_BYTE_SIZE 0x0040 +#define US_CPU_REASON_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_REASON_TO_METER_TABLE_SIZE 64 +#define RDD_US_CPU_REASON_TO_METER_TABLE_LOG2_SIZE 6 +#define US_MAIN_PROFILING_BUFFER_RUNNER_ADDRESS 0x2100 +#define US_MAIN_PROFILING_BUFFER_RUNNER_BYTE_SIZE 0x0100 +#define US_MAIN_PROFILING_BUFFER_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_SIZE 32 +#define RDD_US_MAIN_PROFILING_BUFFER_RUNNER_LOG2_SIZE 5 +#define US_FREE_PACKET_DESCRIPTORS_POOL_ADDRESS 0x2200 +#define US_FREE_PACKET_DESCRIPTORS_POOL_BYTE_SIZE 0x6000 +#define US_FREE_PACKET_DESCRIPTORS_POOL_LOG2_BYTE_SIZE 0x000f +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_SIZE 3072 +#define RDD_US_FREE_PACKET_DESCRIPTORS_POOL_LOG2_SIZE 12 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_ADDRESS 0x8200 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_BYTE_SIZE 0x0180 +#define US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE 3 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_SIZE2 16 +#define RDD_US_INGRESS_FILTERS_LOOKUP_TABLE_LOG2_SIZE2 4 +#define US_QUEUE_PROFILE_TABLE_ADDRESS 0x8380 +#define US_QUEUE_PROFILE_TABLE_BYTE_SIZE 0x0080 +#define US_QUEUE_PROFILE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_QUEUE_PROFILE_TABLE_SIZE 8 +#define RDD_US_QUEUE_PROFILE_TABLE_LOG2_SIZE 3 +#define WAN_CHANNELS_8_39_TABLE_ADDRESS 0x8400 +#define WAN_CHANNELS_8_39_TABLE_BYTE_SIZE 0x0400 +#define WAN_CHANNELS_8_39_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WAN_CHANNELS_8_39_TABLE_SIZE 32 +#define RDD_WAN_CHANNELS_8_39_TABLE_LOG2_SIZE 5 +#define US_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0x8800 +#define US_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0180 +#define US_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_SIZE 3 +#define RDD_US_RUNNER_FLOW_HEADER_BUFFER_LOG2_SIZE 2 +#define US_SBPM_REPLY_ADDRESS 0x8980 +#define US_SBPM_REPLY_BYTE_SIZE 0x0080 +#define US_SBPM_REPLY_LOG2_BYTE_SIZE 0x0007 +#define US_POLICER_TABLE_ADDRESS 0x8a00 +#define US_POLICER_TABLE_BYTE_SIZE 0x0100 +#define US_POLICER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_POLICER_TABLE_SIZE 16 +#define RDD_US_POLICER_TABLE_LOG2_SIZE 4 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_ADDRESS 0x8b00 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_BYTE_SIZE 0x0100 +#define WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_SIZE 2 +#define RDD_WAN_TX_SERVICE_QUEUE_SCHEDULER_TABLE_LOG2_SIZE 1 +#define US_WAN_FLOW_TABLE_ADDRESS 0x8c00 +#define US_WAN_FLOW_TABLE_BYTE_SIZE 0x0400 +#define US_WAN_FLOW_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_US_WAN_FLOW_TABLE_SIZE 256 +#define RDD_US_WAN_FLOW_TABLE_LOG2_SIZE 8 +#define US_CPU_TX_BBH_DESCRIPTORS_ADDRESS 0x9000 +#define US_CPU_TX_BBH_DESCRIPTORS_BYTE_SIZE 0x0100 +#define US_CPU_TX_BBH_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_SIZE 32 +#define RDD_US_CPU_TX_BBH_DESCRIPTORS_LOG2_SIZE 5 +#define US_FORWARDING_MATRIX_TABLE_ADDRESS 0x9100 +#define US_FORWARDING_MATRIX_TABLE_BYTE_SIZE 0x0090 +#define US_FORWARDING_MATRIX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE 9 +#define RDD_US_FORWARDING_MATRIX_TABLE_LOG2_SIZE 4 +#define RDD_US_FORWARDING_MATRIX_TABLE_SIZE2 16 +#define RDD_US_FORWARDING_MATRIX_TABLE_LOG2_SIZE2 4 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_ADDRESS 0x9190 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_BYTE_SIZE 0x0010 +#define US_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_SIZE 8 +#define RDD_US_TIMER_SCHEDULER_PRIMITIVE_TABLE_LOG2_SIZE 3 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x91a0 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_US_MAIN_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_ADDRESS 0x91c0 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_BYTE_SIZE 0x0040 +#define US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_SIZE 3 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_SIZE2 8 +#define RDD_US_TRAFFIC_CLASS_TO_QUEUE_TABLE_LOG2_SIZE2 3 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_ADDRESS 0x9200 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_KEY_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9240 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_US_FAST_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_ADDRESS 0x9280 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_BYTE_SIZE 0x0040 +#define US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_SIZE 16 +#define RDD_US_PICO_CPU_TX_DESCRIPTOR_ABS_DATA_PTR_QUEUE_LOG2_SIZE 4 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_ADDRESS 0x92c0 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_BYTE_SIZE 0x0020 +#define US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_SIZE 4 +#define RDD_US_PICO_TIMER_TASK_DESCRIPTOR_TABLE_LOG2_SIZE 2 +#define US_FC_L2_UCAST_TUPLE_BUFFER_ADDRESS 0x92e0 +#define US_FC_L2_UCAST_TUPLE_BUFFER_BYTE_SIZE 0x0020 +#define US_FC_L2_UCAST_TUPLE_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define US_RATE_LIMITER_TABLE_ADDRESS 0x9300 +#define US_RATE_LIMITER_TABLE_BYTE_SIZE 0x0080 +#define US_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_RATE_LIMITER_TABLE_SIZE 16 +#define RDD_US_RATE_LIMITER_TABLE_LOG2_SIZE 4 +#define US_CPU_RX_METER_TABLE_ADDRESS 0x9380 +#define US_CPU_RX_METER_TABLE_BYTE_SIZE 0x0080 +#define US_CPU_RX_METER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_RX_METER_TABLE_SIZE 16 +#define RDD_US_CPU_RX_METER_TABLE_LOG2_SIZE 4 +#define US_CONNECTION_CONTEXT_BUFFER_ADDRESS 0x9400 +#define US_CONNECTION_CONTEXT_BUFFER_BYTE_SIZE 0x0400 +#define US_CONNECTION_CONTEXT_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_US_CONNECTION_CONTEXT_BUFFER_SIZE 8 +#define RDD_US_CONNECTION_CONTEXT_BUFFER_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_ADDRESS 0x9800 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_CONTEXT_TABLE_LOG2_SIZE 8 +#define WAN_CHANNELS_0_7_TABLE_ADDRESS 0xa000 +#define WAN_CHANNELS_0_7_TABLE_BYTE_SIZE 0x02c0 +#define WAN_CHANNELS_0_7_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WAN_CHANNELS_0_7_TABLE_SIZE 8 +#define RDD_WAN_CHANNELS_0_7_TABLE_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_ADDRESS 0xa2c0 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_BYTE_SIZE 0x0020 +#define US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_SIZE 4 +#define RDD_US_INGRESS_CLASSIFICATION_GENERIC_RULE_CFG_TABLE_LOG2_SIZE 2 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xa2e0 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_US_FAST_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_ADDRESS 0xa300 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_BYTE_SIZE 0x0080 +#define US_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_SIZE 32 +#define RDD_US_INGRESS_HANDLER_SKB_DATA_POINTER_LOG2_SIZE 5 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_ADDRESS 0xa380 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_BYTE_SIZE 0x0080 +#define US_GRE_RUNNER_FLOW_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define US_CONNECTION_CONTEXT_REMAINING_BUFFER_ADDRESS 0xa400 +#define US_CONNECTION_CONTEXT_REMAINING_BUFFER_BYTE_SIZE 0x0260 +#define US_CONNECTION_CONTEXT_REMAINING_BUFFER_LOG2_BYTE_SIZE 0x000a +#define RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_SIZE 8 +#define RDD_US_CONNECTION_CONTEXT_REMAINING_BUFFER_LOG2_SIZE 3 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_ADDRESS 0xa660 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_BYTE_SIZE 0x0020 +#define US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_SIZE 8 +#define RDD_US_PICO_RUNNER_GLOBAL_REGISTERS_INIT_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_ADDRESS 0xa680 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_BYTE_SIZE 0x0080 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_SIZE 16 +#define RDD_US_INGRESS_CLASSIFICATION_RULE_CFG_TABLE_LOG2_SIZE 4 +#define US_PROFILING_BUFFER_PICO_RUNNER_ADDRESS 0xa700 +#define US_PROFILING_BUFFER_PICO_RUNNER_BYTE_SIZE 0x0100 +#define US_PROFILING_BUFFER_PICO_RUNNER_LOG2_BYTE_SIZE 0x0008 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_ADDRESS 0xa800 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_BYTE_SIZE 0x0060 +#define US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE 3 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_SIZE2 16 +#define RDD_US_INGRESS_FILTERS_PARAMETER_TABLE_LOG2_SIZE2 4 +#define DHD_RX_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xa860 +#define DHD_RX_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define DHD_RX_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_DHD_RX_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_ADDRESS 0xa880 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_BYTE_SIZE 0x0060 +#define DHD_RX_COMPLETE_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_RX_COMPLETE_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xa8e0 +#define US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_0_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define DHD_RX_POST_FLOW_RING_BUFFER_ADDRESS 0xa900 +#define DHD_RX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x0060 +#define DHD_RX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_SIZE 3 +#define RDD_DHD_RX_POST_FLOW_RING_BUFFER_LOG2_SIZE 2 +#define US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xa960 +#define US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_0_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xa980 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0001 +#define ETHWAN_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define PRIVATE_B_DUMMY_STORE_ADDRESS 0xa981 +#define PRIVATE_B_DUMMY_STORE_BYTE_SIZE 0x0001 +#define PRIVATE_B_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xa982 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define US_MAIN_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_ADDRESS 0xa984 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_BYTE_SIZE 0x0004 +#define US_ETH0_EEE_MODE_CONFIG_MESSAGE_LOG2_BYTE_SIZE 0x0002 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS 0xa988 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_BYTE_SIZE 0x0001 +#define ETHWAN_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xa989 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_ADDRESS 0xa98a +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_BYTE_SIZE 0x0002 +#define US_PICO_TIMER_CONTROL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_ADDRESS 0xa98c +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_EXTRA_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_ADDRESS 0xa990 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_BYTE_SIZE 0x0028 +#define GPON_ABSOLUTE_TX_BBH_COUNTER_LOG2_BYTE_SIZE 0x0006 +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_SIZE 40 +#define RDD_GPON_ABSOLUTE_TX_BBH_COUNTER_LOG2_SIZE 6 +#define US_TOTAL_PPS_RATE_LIMITER_ADDRESS 0xa9b8 +#define US_TOTAL_PPS_RATE_LIMITER_BYTE_SIZE 0x0008 +#define US_TOTAL_PPS_RATE_LIMITER_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_ADDRESS 0xa9c0 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_BYTE_SIZE 0x0040 +#define US_CPU_TX_MESSAGE_DATA_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define US_INGRESS_RATE_LIMITER_TABLE_ADDRESS 0xaa00 +#define US_INGRESS_RATE_LIMITER_TABLE_BYTE_SIZE 0x0050 +#define US_INGRESS_RATE_LIMITER_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_SIZE 5 +#define RDD_US_INGRESS_RATE_LIMITER_TABLE_LOG2_SIZE 3 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_ADDRESS 0xaa50 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_BYTE_SIZE 0x0010 +#define US_FC_L2_UCAST_CONNECTION_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xaa60 +#define US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_1_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define US_SPDSVC_CONTEXT_TABLE_ADDRESS 0xaa80 +#define US_SPDSVC_CONTEXT_TABLE_BYTE_SIZE 0x0050 +#define US_SPDSVC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RUNNER_FWTRACE_MAINB_PARAM_ADDRESS 0xaad0 +#define RUNNER_FWTRACE_MAINB_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINB_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINB_PARAM_LOG2_SIZE 1 +#define US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xaae0 +#define US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_1_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define US_CPU_RX_PICO_INGRESS_QUEUE_ADDRESS 0xab00 +#define US_CPU_RX_PICO_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_CPU_RX_PICO_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_SIZE 64 +#define RDD_US_CPU_RX_PICO_INGRESS_QUEUE_LOG2_SIZE 6 +#define CAPWAPR0_RX_DESCRIPTORS_ADDRESS 0xab40 +#define CAPWAPR0_RX_DESCRIPTORS_BYTE_SIZE 0x0020 +#define CAPWAPR0_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0005 +#define RDD_CAPWAPR0_RX_DESCRIPTORS_SIZE 4 +#define RDD_CAPWAPR0_RX_DESCRIPTORS_LOG2_SIZE 2 +#define US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xab60 +#define US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_2_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define US_ROUTER_INGRESS_QUEUE_ADDRESS 0xab80 +#define US_ROUTER_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_ROUTER_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_ROUTER_INGRESS_QUEUE_SIZE 64 +#define RDD_US_ROUTER_INGRESS_QUEUE_LOG2_SIZE 6 +#define CAPWAPR1_RX_DESCRIPTORS_ADDRESS 0xabc0 +#define CAPWAPR1_RX_DESCRIPTORS_BYTE_SIZE 0x0020 +#define CAPWAPR1_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0005 +#define RDD_CAPWAPR1_RX_DESCRIPTORS_SIZE 4 +#define RDD_CAPWAPR1_RX_DESCRIPTORS_LOG2_SIZE 2 +#define US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xabe0 +#define US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_2_MCAST_RX_SBPM_TO_FPM_COPY_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define US_CPU_TX_FAST_QUEUE_ADDRESS 0xac00 +#define US_CPU_TX_FAST_QUEUE_BYTE_SIZE 0x0080 +#define US_CPU_TX_FAST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_TX_FAST_QUEUE_SIZE 16 +#define RDD_US_CPU_TX_FAST_QUEUE_LOG2_SIZE 4 +#define US_CPU_RX_FAST_INGRESS_QUEUE_ADDRESS 0xac80 +#define US_CPU_RX_FAST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_CPU_RX_FAST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_SIZE 64 +#define RDD_US_CPU_RX_FAST_INGRESS_QUEUE_LOG2_SIZE 6 +#define CAPWAPR2_RX_DESCRIPTORS_ADDRESS 0xacc0 +#define CAPWAPR2_RX_DESCRIPTORS_BYTE_SIZE 0x0020 +#define CAPWAPR2_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0005 +#define RDD_CAPWAPR2_RX_DESCRIPTORS_SIZE 4 +#define RDD_CAPWAPR2_RX_DESCRIPTORS_LOG2_SIZE 2 +#define US_CPU_TX_FPM_ALLOC_RESULT_TABLE_ADDRESS 0xace0 +#define US_CPU_TX_FPM_ALLOC_RESULT_TABLE_BYTE_SIZE 0x0020 +#define US_CPU_TX_FPM_ALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_SIZE 8 +#define RDD_US_CPU_TX_FPM_ALLOC_RESULT_TABLE_LOG2_SIZE 3 +#define US_CPU_TX_PICO_QUEUE_ADDRESS 0xad00 +#define US_CPU_TX_PICO_QUEUE_BYTE_SIZE 0x0080 +#define US_CPU_TX_PICO_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_TX_PICO_QUEUE_SIZE 16 +#define RDD_US_CPU_TX_PICO_QUEUE_LOG2_SIZE 4 +#define US_DEBUG_BUFFER_ADDRESS 0xad80 +#define US_DEBUG_BUFFER_BYTE_SIZE 0x0080 +#define US_DEBUG_BUFFER_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_DEBUG_BUFFER_SIZE 32 +#define RDD_US_DEBUG_BUFFER_LOG2_SIZE 5 +#define US_FW_MAC_ADDRS_ADDRESS 0xae00 +#define US_FW_MAC_ADDRS_BYTE_SIZE 0x0080 +#define US_FW_MAC_ADDRS_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_FW_MAC_ADDRS_SIZE 16 +#define RDD_US_FW_MAC_ADDRS_LOG2_SIZE 4 +#define US_DHD_TX_POST_INGRESS_QUEUE_ADDRESS 0xae80 +#define US_DHD_TX_POST_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define US_DHD_TX_POST_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_SIZE 64 +#define RDD_US_DHD_TX_POST_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_ADDRESS 0xaec0 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_BYTE_SIZE 0x0060 +#define US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_SIZE 48 +#define RDD_US_OVERALL_RATE_LIMITER_WAN_CHANNEL_PTR_TABLE_LOG2_SIZE 6 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_ADDRESS 0xaf20 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_BYTE_SIZE 0x0018 +#define US_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_SIZE 6 +#define RDD_US_INGRESS_FILTERS_CONFIGURATION_TABLE_LOG2_SIZE 3 +#define US_ONE_BUFFER_ADDRESS 0xaf38 +#define US_ONE_BUFFER_BYTE_SIZE 0x0008 +#define US_ONE_BUFFER_LOG2_BYTE_SIZE 0x0003 +#define US_DHD_TX_POST_HEADER_SCRATCH_ADDRESS 0xaf40 +#define US_DHD_TX_POST_HEADER_SCRATCH_BYTE_SIZE 0x0020 +#define US_DHD_TX_POST_HEADER_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_ADDRESS 0xaf60 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_BYTE_SIZE 0x0018 +#define US_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_SIZE 3 +#define RDD_US_RUNNER_FLOW_HEADER_DESCRIPTOR_LOG2_SIZE 2 +#define US_NULL_BUFFER_ADDRESS 0xaf78 +#define US_NULL_BUFFER_BYTE_SIZE 0x0008 +#define US_NULL_BUFFER_LOG2_BYTE_SIZE 0x0003 +#define US_CSO_CONTEXT_TABLE_ADDRESS 0xaf80 +#define US_CSO_CONTEXT_TABLE_BYTE_SIZE 0x0054 +#define US_CSO_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xafd4 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_ADDRESS 0xafd8 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_BYTE_SIZE 0x0040 +#define US_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_SIZE 32 +#define RDD_US_GPE_COMMAND_PRIMITIVE_TABLE_LOG2_SIZE 5 +#define US_FAST_MALLOC_RESULT_TABLE_ADDRESS 0xb018 +#define US_FAST_MALLOC_RESULT_TABLE_BYTE_SIZE 0x0008 +#define US_FAST_MALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_FAST_MALLOC_RESULT_TABLE_SIZE 2 +#define RDD_US_FAST_MALLOC_RESULT_TABLE_LOG2_SIZE 1 +#define US_CPU_PARAMETERS_BLOCK_ADDRESS 0xb020 +#define US_CPU_PARAMETERS_BLOCK_BYTE_SIZE 0x0014 +#define US_CPU_PARAMETERS_BLOCK_LOG2_BYTE_SIZE 0x0005 +#define US_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_ADDRESS 0xb034 +#define US_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_1_OPTIMIZED_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define US_PICO_MALLOC_RESULT_TABLE_ADDRESS 0xb038 +#define US_PICO_MALLOC_RESULT_TABLE_BYTE_SIZE 0x0008 +#define US_PICO_MALLOC_RESULT_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_PICO_MALLOC_RESULT_TABLE_SIZE 2 +#define RDD_US_PICO_MALLOC_RESULT_TABLE_LOG2_SIZE 1 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_ADDRESS 0xb040 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_BYTE_SIZE 0x0030 +#define US_DHD_TX_POST_FLOW_RING_BUFFER_LOG2_BYTE_SIZE 0x0006 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_ADDRESS 0xb070 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_BYTE_SIZE 0x0028 +#define GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_BYTE_SIZE 0x0006 +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_SIZE 40 +#define RDD_GPON_ABSOLUTE_TX_FIRMWARE_COUNTER_LOG2_SIZE 6 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_ADDRESS 0xb098 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_BYTE_SIZE 0x0008 +#define US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_SIZE 8 +#define RDD_US_BUF_SIZE_TO_TOKEN_COUNT_LOG2_TABLE_LOG2_SIZE 3 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb0a0 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_US_FAST_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define RUNNER_FWTRACE_PICOB_PARAM_ADDRESS 0xb0b0 +#define RUNNER_FWTRACE_PICOB_PARAM_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_PICOB_PARAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_SIZE 2 +#define RDD_RUNNER_FWTRACE_PICOB_PARAM_LOG2_SIZE 1 +#define US_DHD_FLOW_RING_DROP_COUNTER_ADDRESS 0xb0c0 +#define US_DHD_FLOW_RING_DROP_COUNTER_BYTE_SIZE 0x0014 +#define US_DHD_FLOW_RING_DROP_COUNTER_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_SIZE 5 +#define RDD_US_DHD_FLOW_RING_DROP_COUNTER_LOG2_SIZE 3 +#define US_BPM_DDR_BUFFERS_BASE_ADDRESS 0xb0d4 +#define US_BPM_DDR_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_ADDRESS 0xb0d8 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_BYTE_SIZE 0x0006 +#define US_FREE_PACKET_DESCRIPTORS_POOL_DESCRIPTOR_LOG2_BYTE_SIZE 0x0003 +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_ADDRESS 0xb0de +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define US_CPU_RX_PICO_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_ADDRESS 0xb0e0 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_BYTE_SIZE 0x0010 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_SIZE 8 +#define RDD_US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_LOG2_SIZE 3 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_ADDRESS 0xb0f0 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_BYTE_SIZE 0x0010 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_SIZE 8 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_CAM_LOG2_SIZE 3 +#define US_SYSTEM_CONFIGURATION_ADDRESS 0xb100 +#define US_SYSTEM_CONFIGURATION_BYTE_SIZE 0x0024 +#define US_SYSTEM_CONFIGURATION_LOG2_BYTE_SIZE 0x0006 +#define US_BPM_DDR_1_BUFFERS_BASE_ADDRESS 0xb124 +#define US_BPM_DDR_1_BUFFERS_BASE_BYTE_SIZE 0x0004 +#define US_BPM_DDR_1_BUFFERS_BASE_LOG2_BYTE_SIZE 0x0002 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_ADDRESS 0xb128 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_BYTE_SIZE 0x0020 +#define US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_DEFAULT_FLOWS_TABLE_LOG2_SIZE 5 +#define DATA_POINTER_DUMMY_TARGET_ADDRESS 0xb148 +#define DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0008 +#define DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0003 +#define RDD_DATA_POINTER_DUMMY_TARGET_SIZE 2 +#define RDD_DATA_POINTER_DUMMY_TARGET_LOG2_SIZE 1 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_ADDRESS 0xb150 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_BYTE_SIZE 0x0010 +#define US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_SIZE 16 +#define RDD_US_BRIDGE_PORT_TO_LOOKUP_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define WAN_TX_SCRATCH_ADDRESS 0xb160 +#define WAN_TX_SCRATCH_BYTE_SIZE 0x0018 +#define WAN_TX_SCRATCH_LOG2_BYTE_SIZE 0x0005 +#define RDD_WAN_TX_SCRATCH_SIZE 24 +#define RDD_WAN_TX_SCRATCH_LOG2_SIZE 5 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_ADDRESS 0xb178 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_BYTE_SIZE 0x0012 +#define CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE 3 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_SIZE 2 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_SIZE2 6 +#define RDD_CPU_REASON_AND_SRC_BRIDGE_PORT_TO_METER_TABLE_LOG2_SIZE2 3 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_ADDRESS 0xb18a +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_BYTE_SIZE 0x0002 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_LOG2_BYTE_SIZE 0x0001 +#define US_CONNECTION_TABLE_CONFIG_ADDRESS 0xb18c +#define US_CONNECTION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONNECTION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_ADDRESS 0xb190 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_BYTE_SIZE 0x0009 +#define BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_LOG2_BYTE_SIZE 0x0004 +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_SIZE 9 +#define RDD_BROADCOM_SWITCH_PORT_TO_BRIDGE_PORT_MAPPING_TABLE_LOG2_SIZE 4 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_ADDRESS 0xb199 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_BYTE_SIZE 0x0001 +#define US_PICO_FREE_SKB_INDEXES_FIFO_LOCAL_TABLE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_ADDRESS 0xb19a +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_BYTE_SIZE 0x0002 +#define US_BPM_DDR_BUFFER_HEADROOM_SIZE_2_BYTE_RESOLUTION_LOG2_BYTE_SIZE 0x0001 +#define US_CONTEXT_TABLE_CONFIG_ADDRESS 0xb19c +#define US_CONTEXT_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONTEXT_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_ADDRESS 0xb1a0 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_BYTE_SIZE 0x0010 +#define US_INGRESS_CLASSIFICATION_KEY_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_ADDRESS 0xb1b0 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_BYTE_SIZE 0x0010 +#define CPU_TX_DS_EGRESS_DHD_TX_POST_CONTEXT_LOG2_BYTE_SIZE 0x0004 +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_ADDRESS 0xb1c0 +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_BYTE_SIZE 0x000e +#define CPU_TX_DHD_LAYER2_HEADER_BUFFER_LOG2_BYTE_SIZE 0x0004 +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_SIZE 14 +#define RDD_CPU_TX_DHD_LAYER2_HEADER_BUFFER_LOG2_SIZE 4 +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_ADDRESS 0xb1ce +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define US_CPU_RX_FAST_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_ADDRESS 0xb1d0 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_BYTE_SIZE 0x0004 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_SIZE 4 +#define RDD_US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_LOG2_SIZE 2 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_ADDRESS 0xb1d4 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_BYTE_SIZE 0x0004 +#define US_DEBUG_PERIPHERALS_STATUS_REGISTER_LOG2_BYTE_SIZE 0x0002 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_ADDRESS 0xb1d8 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_BYTE_SIZE 0x0004 +#define US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_SIZE 4 +#define RDD_US_PARALLEL_PROCESSING_TASK_REORDER_FIFO_LOG2_SIZE 2 +#define IH_BUFFER_BBH_POINTER_ADDRESS 0xb1dc +#define IH_BUFFER_BBH_POINTER_BYTE_SIZE 0x0004 +#define IH_BUFFER_BBH_POINTER_LOG2_BYTE_SIZE 0x0002 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_ADDRESS 0xb1e0 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_BYTE_SIZE 0x0008 +#define US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_BYTE_SIZE 0x0003 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_SIZE 8 +#define RDD_US_PARALLEL_PROCESSING_CONTEXT_INDEX_CACHE_TABLE_LOG2_SIZE 3 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_ADDRESS 0xb1e8 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_BYTE_SIZE 0x0004 +#define US_CONTEXT_CONTINUATION_TABLE_CONFIG_LOG2_BYTE_SIZE 0x0002 +#define US_DHD_TX_POST_DOORBELL_SCRATCH_ADDRESS 0xb1ec +#define US_DHD_TX_POST_DOORBELL_SCRATCH_BYTE_SIZE 0x0004 +#define US_DHD_TX_POST_DOORBELL_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS 0xb1f0 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_BYTE_SIZE 0x0004 +#define US_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_SIZE 4 +#define RDD_US_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_SIZE 2 +#define US_CPU_TX_DATA_POINTER_DUMMY_TARGET_ADDRESS 0xb1f4 +#define US_CPU_TX_DATA_POINTER_DUMMY_TARGET_BYTE_SIZE 0x0004 +#define US_CPU_TX_DATA_POINTER_DUMMY_TARGET_LOG2_BYTE_SIZE 0x0002 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb1f8 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define LOCAL_SWITCHING_MULTICAST_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb1fa +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_ADDRESS 0xb1fc +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_BYTE_SIZE 0x0002 +#define US_PARALLEL_PROCESSING_IH_BUFFER_VECTOR_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_ANY_SRC_PORT_FLOW_COUNTER_ADDRESS 0xb1fe +#define US_ANY_SRC_PORT_FLOW_COUNTER_BYTE_SIZE 0x0002 +#define US_ANY_SRC_PORT_FLOW_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_ADDRESS 0xb200 +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_BYTE_SIZE 0x0004 +#define US_DHD_TX_POST_HOST_DATA_PTR_BUFFER_LOG2_BYTE_SIZE 0x0002 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_ADDRESS 0xb204 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_BYTE_SIZE 0x0002 +#define US_TIMER_7_SCHEDULER_NEXT_ENTRY_LOG2_BYTE_SIZE 0x0001 +#define US_MEMLIB_SEMAPHORE_ADDRESS 0xb206 +#define US_MEMLIB_SEMAPHORE_BYTE_SIZE 0x0002 +#define US_MEMLIB_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_ADDRESS 0xb208 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define ETHWAN2_RX_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_RUNNER_CONGESTION_STATE_ADDRESS 0xb20a +#define US_RUNNER_CONGESTION_STATE_BYTE_SIZE 0x0002 +#define US_RUNNER_CONGESTION_STATE_LOG2_BYTE_SIZE 0x0001 +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_ADDRESS 0xb20c +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_BYTE_SIZE 0x0002 +#define WAN_ENQUEUE_INGRESS_QUEUE_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_ADDRESS 0xb20e +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_BYTE_SIZE 0x0002 +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_PTR_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_ADDRESS 0xb210 +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_BYTE_SIZE 0x0002 +#define US_DHD_BPM_CONGESTION_UG3_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_ADDRESS 0xb212 +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_BYTE_SIZE 0x0002 +#define US_DHD_BPM_CONGESTION_ALLOC_FAIL_DROP_COUNTER_LOG2_BYTE_SIZE 0x0001 +#define US_FC_GLOBAL_CFG_ADDRESS 0xb214 +#define US_FC_GLOBAL_CFG_BYTE_SIZE 0x0001 +#define US_FC_GLOBAL_CFG_LOG2_BYTE_SIZE 0x0001 +#define ETHWAN2_SWITCH_PORT_ADDRESS 0xb215 +#define ETHWAN2_SWITCH_PORT_BYTE_SIZE 0x0001 +#define ETHWAN2_SWITCH_PORT_LOG2_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_ADDRESS 0xb216 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_ADDRESS 0xb217 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_BYTE_SIZE 0x0001 +#define US_INGRESS_CLASSIFICATION_IP_FLOW_RULE_CFG_DESCRIPTOR_LOG2_BYTE_SIZE 0x0001 +#define US_PACKET_BUFFER_SIZE_ASR_8_ADDRESS 0xb218 +#define US_PACKET_BUFFER_SIZE_ASR_8_BYTE_SIZE 0x0001 +#define US_PACKET_BUFFER_SIZE_ASR_8_LOG2_BYTE_SIZE 0x0001 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb219 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define US_MAIN_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_ADDRESS 0xb21a +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_BYTE_SIZE 0x0001 +#define US_PICO_DMA_SYNCRONIZATION_ADDRESS_LOG2_BYTE_SIZE 0x0001 +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_ADDRESS 0xb21b +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_BYTE_SIZE 0x0001 +#define US_RUNNER_FLOW_IH_RESPONSE_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DSL_BUFFER_ALIGNMENT_ADDRESS 0xb21c +#define DSL_BUFFER_ALIGNMENT_BYTE_SIZE 0x0001 +#define DSL_BUFFER_ALIGNMENT_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_ADDRESS 0xb21d +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_SLAVE_VECTOR_LOG2_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_ADDRESS 0xb21e +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_BYTE_SIZE 0x0001 +#define US_PARALLEL_PROCESSING_CONTEXT_CACHE_MODE_LOG2_BYTE_SIZE 0x0001 +#define US_IH_CONGESTION_THRESHOLD_ADDRESS 0xb21f +#define US_IH_CONGESTION_THRESHOLD_BYTE_SIZE 0x0001 +#define US_IH_CONGESTION_THRESHOLD_LOG2_BYTE_SIZE 0x0001 +#define US_FAST_MALLOC_RESULT_MUTEX_ADDRESS 0xb220 +#define US_FAST_MALLOC_RESULT_MUTEX_BYTE_SIZE 0x0001 +#define US_FAST_MALLOC_RESULT_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define US_PICO_MALLOC_RESULT_MUTEX_ADDRESS 0xb221 +#define US_PICO_MALLOC_RESULT_MUTEX_BYTE_SIZE 0x0001 +#define US_PICO_MALLOC_RESULT_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define DHD_RX_FPM_ALLOC_RESULT_MUTEX_ADDRESS 0xb222 +#define DHD_RX_FPM_ALLOC_RESULT_MUTEX_BYTE_SIZE 0x0001 +#define DHD_RX_FPM_ALLOC_RESULT_MUTEX_LOG2_BYTE_SIZE 0x0001 +#define US_RX_SBPM_TO_FPM_COPY_SEMAPHORE_ADDRESS 0xb223 +#define US_RX_SBPM_TO_FPM_COPY_SEMAPHORE_BYTE_SIZE 0x0001 +#define US_RX_SBPM_TO_FPM_COPY_SEMAPHORE_LOG2_BYTE_SIZE 0x0001 +#define US_FW_MAC_ADDRS_COUNT_ADDRESS 0xb224 +#define US_FW_MAC_ADDRS_COUNT_BYTE_SIZE 0x0001 +#define US_FW_MAC_ADDRS_COUNT_LOG2_BYTE_SIZE 0x0001 +#define US_DHD_DMA_SYNCHRONIZATION_ADDRESS 0xb225 +#define US_DHD_DMA_SYNCHRONIZATION_BYTE_SIZE 0x0001 +#define US_DHD_DMA_SYNCHRONIZATION_LOG2_BYTE_SIZE 0x0001 +#define US_RUNNER_FLOW_IH_RESPONSE_ADDRESS 0xb6f0 +#define US_RUNNER_FLOW_IH_RESPONSE_BYTE_SIZE 0x0008 +#define US_RUNNER_FLOW_IH_RESPONSE_LOG2_BYTE_SIZE 0x0003 +#define ETH2_RX_DESCRIPTORS_ADDRESS 0xba00 +#define ETH2_RX_DESCRIPTORS_BYTE_SIZE 0x0100 +#define ETH2_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH2_RX_DESCRIPTORS_SIZE 32 +#define RDD_ETH2_RX_DESCRIPTORS_LOG2_SIZE 5 +#define ETH1_RX_DESCRIPTORS_ADDRESS 0xbc00 +#define ETH1_RX_DESCRIPTORS_BYTE_SIZE 0x0100 +#define ETH1_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH1_RX_DESCRIPTORS_SIZE 32 +#define RDD_ETH1_RX_DESCRIPTORS_LOG2_SIZE 5 +#define ETH0_RX_DESCRIPTORS_ADDRESS 0xbe00 +#define ETH0_RX_DESCRIPTORS_BYTE_SIZE 0x0100 +#define ETH0_RX_DESCRIPTORS_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETH0_RX_DESCRIPTORS_SIZE 32 +#define RDD_ETH0_RX_DESCRIPTORS_LOG2_SIZE 5 +#define BBH_TX_WAN_CHANNEL_INDEX_ADDRESS 0xbfe8 +#define BBH_TX_WAN_CHANNEL_INDEX_BYTE_SIZE 0x0004 +#define BBH_TX_WAN_CHANNEL_INDEX_LOG2_BYTE_SIZE 0x0002 +/* COMMON_A */ +#define SERVICE_QUEUES_DDR_CACHE_FIFO_ADDRESS 0x0000 +#define SERVICE_QUEUES_DDR_CACHE_FIFO_BYTE_SIZE 0x1000 +#define SERVICE_QUEUES_DDR_CACHE_FIFO_LOG2_BYTE_SIZE 0x000c +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_SIZE 256 +#define RDD_SERVICE_QUEUES_DDR_CACHE_FIFO_LOG2_SIZE 8 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS 0x1000 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define FC_MCAST_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_FC_MCAST_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define CPU_RX_RUNNER_A_SCRATCHPAD_ADDRESS 0x1800 +#define CPU_RX_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define CPU_RX_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_CPU_RX_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_ADDRESS 0x2000 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_BYTE_SIZE 0x0800 +#define DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE 8 +#define RDD_DS_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_LOG2_SIZE 3 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_ADDRESS 0x2800 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_BYTE_SIZE 0x0800 +#define WLAN_MCAST_RUNNER_A_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_SIZE 8 +#define RDD_WLAN_MCAST_RUNNER_A_SCRATCHPAD_LOG2_SIZE 3 +#define RUNNER_FWTRACE_MAINA_BASE_ADDRESS 0x3000 +#define RUNNER_FWTRACE_MAINA_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_MAINA_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_MAINA_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_MAINA_BASE_LOG2_SIZE 7 +#define RUNNER_FWTRACE_PICOA_BASE_ADDRESS 0x3400 +#define RUNNER_FWTRACE_PICOA_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_PICOA_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_PICOA_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_PICOA_BASE_LOG2_SIZE 7 +#define WLAN_MCAST_DHD_STATION_TABLE_ADDRESS 0x3800 +#define WLAN_MCAST_DHD_STATION_TABLE_BYTE_SIZE 0x0280 +#define WLAN_MCAST_DHD_STATION_TABLE_LOG2_BYTE_SIZE 0x000a +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_DHD_STATION_TABLE_LOG2_SIZE 6 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS 0x3a80 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_BYTE_SIZE 0x0080 +#define DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE 2 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE 1 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 64 +#define RDD_DS_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE2 6 +#define MAC_TABLE_CAM_ADDRESS 0x3b00 +#define MAC_TABLE_CAM_BYTE_SIZE 0x0100 +#define MAC_TABLE_CAM_LOG2_BYTE_SIZE 0x0008 +#define RDD_MAC_TABLE_CAM_SIZE 32 +#define RDD_MAC_TABLE_CAM_LOG2_SIZE 5 +#define MAC_TABLE_ADDRESS 0x3c00 +#define MAC_TABLE_BYTE_SIZE 0x0200 +#define MAC_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAC_TABLE_SIZE 64 +#define RDD_MAC_TABLE_LOG2_SIZE 6 +#define ETHWAN2_RX_INGRESS_QUEUE_ADDRESS 0x3e00 +#define ETHWAN2_RX_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define ETHWAN2_RX_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_SIZE 32 +#define RDD_ETHWAN2_RX_INGRESS_QUEUE_LOG2_SIZE 5 +#define TRACE_C_TABLE_ADDRESS 0x3f00 +#define TRACE_C_TABLE_BYTE_SIZE 0x0020 +#define TRACE_C_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_TRACE_C_TABLE_SIZE 4 +#define RDD_TRACE_C_TABLE_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_ADDRESS 0x3f20 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINA_CURR_OFFSET_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINA_CURR_OFFSET_LOG2_SIZE 1 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_ADDRESS 0x3f30 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_ADDRESS 0x3f34 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_FREE_SKB_INDEXES_FIFO_TABLE_LAST_ENTRY_LOG2_BYTE_SIZE 0x0002 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_ADDRESS 0x3f38 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_BYTE_SIZE 0x0008 +#define FREE_SKB_INDEXES_DDR_FIFO_TAIL_LOG2_BYTE_SIZE 0x0003 +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_SIZE 2 +#define RDD_FREE_SKB_INDEXES_DDR_FIFO_TAIL_LOG2_SIZE 1 +#define BPM_REPLY_RUNNER_A_ADDRESS 0x3f40 +#define BPM_REPLY_RUNNER_A_BYTE_SIZE 0x0030 +#define BPM_REPLY_RUNNER_A_LOG2_BYTE_SIZE 0x0006 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_ADDRESS 0x3f70 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_BYTE_SIZE 0x0010 +#define DS_DHD_BACKUP_ENTRY_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define MAC_CONTEXT_TABLE_ADDRESS 0x3f80 +#define MAC_CONTEXT_TABLE_BYTE_SIZE 0x0080 +#define MAC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_MAC_CONTEXT_TABLE_SIZE 64 +#define RDD_MAC_CONTEXT_TABLE_LOG2_SIZE 6 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_ADDRESS 0x4000 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_BYTE_SIZE 0x0600 +#define GPON_SKB_ENQUEUED_INDEXES_FIFO_LOG2_BYTE_SIZE 0x000b +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_SIZE 32 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FIFO_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS 0x4600 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_BYTE_SIZE 0x0200 +#define DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_SIZE 8 +#define WLAN_MCAST_FWD_TABLE_ADDRESS 0x4800 +#define WLAN_MCAST_FWD_TABLE_BYTE_SIZE 0x0200 +#define WLAN_MCAST_FWD_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_FWD_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_FWD_TABLE_LOG2_SIZE 6 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_ADDRESS 0x4a00 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_BYTE_SIZE 0x0200 +#define SERVICE_QUEUES_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_DESCRIPTOR_TABLE_LOG2_SIZE 5 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_ADDRESS 0x4c00 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_BYTE_SIZE 0x0180 +#define WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_SIZE 48 +#define RDD_WLAN_MCAST_SSID_MAC_ADDRESS_TABLE_LOG2_SIZE 6 +#define CPU_TX_POST_REQUEST_QUEUE_ADDRESS 0x4d80 +#define CPU_TX_POST_REQUEST_QUEUE_BYTE_SIZE 0x0080 +#define CPU_TX_POST_REQUEST_QUEUE_LOG2_BYTE_SIZE 0x0007 +#define RDD_CPU_TX_POST_REQUEST_QUEUE_SIZE 8 +#define RDD_CPU_TX_POST_REQUEST_QUEUE_LOG2_SIZE 3 +#define WLAN_MCAST_SSID_STATS_TABLE_ADDRESS 0x4e00 +#define WLAN_MCAST_SSID_STATS_TABLE_BYTE_SIZE 0x0180 +#define WLAN_MCAST_SSID_STATS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_SIZE 48 +#define RDD_WLAN_MCAST_SSID_STATS_TABLE_LOG2_SIZE 6 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_ADDRESS 0x4f80 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_BYTE_SIZE 0x0060 +#define DHD_RADIO_INSTANCE_COMMON_A_DATA_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_SIZE 3 +#define RDD_DHD_RADIO_INSTANCE_COMMON_A_DATA_LOG2_SIZE 2 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS 0x4fe0 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_BYTE_SIZE 0x0020 +#define DS_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +#define RDD_DS_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_SIZE 4 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS 0x5000 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_SIZE 7 +#define PM_COUNTERS_ADDRESS 0x5800 +#define PM_COUNTERS_BYTE_SIZE 0x1840 +#define PM_COUNTERS_LOG2_BYTE_SIZE 0x000d +#define RATE_SHAPERS_STATUS_DESCRIPTOR_ADDRESS 0x7040 +#define RATE_SHAPERS_STATUS_DESCRIPTOR_BYTE_SIZE 0x0080 +#define RATE_SHAPERS_STATUS_DESCRIPTOR_LOG2_BYTE_SIZE 0x0007 +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_SIZE 128 +#define RDD_RATE_SHAPERS_STATUS_DESCRIPTOR_LOG2_SIZE 7 +#define INTERRUPT_COALESCING_CONFIG_TABLE_ADDRESS 0x70c0 +#define INTERRUPT_COALESCING_CONFIG_TABLE_BYTE_SIZE 0x0040 +#define INTERRUPT_COALESCING_CONFIG_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_SIZE 16 +#define RDD_INTERRUPT_COALESCING_CONFIG_TABLE_LOG2_SIZE 4 +#define DS_CPU_TX_SCRATCHPAD_ADDRESS 0x7100 +#define DS_CPU_TX_SCRATCHPAD_BYTE_SIZE 0x0100 +#define DS_CPU_TX_SCRATCHPAD_LOG2_BYTE_SIZE 0x0008 +#define DS_CONNECTION_BUFFER_TABLE_ADDRESS 0x7200 +#define DS_CONNECTION_BUFFER_TABLE_BYTE_SIZE 0x0140 +#define DS_CONNECTION_BUFFER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_DS_CONNECTION_BUFFER_TABLE_LOG2_SIZE 3 +#define RDD_DS_CONNECTION_BUFFER_TABLE_SIZE2 4 +#define RDD_DS_CONNECTION_BUFFER_TABLE_LOG2_SIZE2 2 +#define MAC_CONTEXT_TABLE_CAM_ADDRESS 0x7340 +#define MAC_CONTEXT_TABLE_CAM_BYTE_SIZE 0x0040 +#define MAC_CONTEXT_TABLE_CAM_LOG2_BYTE_SIZE 0x0006 +#define RDD_MAC_CONTEXT_TABLE_CAM_SIZE 32 +#define RDD_MAC_CONTEXT_TABLE_CAM_LOG2_SIZE 5 +#define DHD_DOORBELL_WRITE_VALUES_ADDRESS 0x7380 +#define DHD_DOORBELL_WRITE_VALUES_BYTE_SIZE 0x0040 +#define DHD_DOORBELL_WRITE_VALUES_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_DOORBELL_WRITE_VALUES_SIZE 16 +#define RDD_DHD_DOORBELL_WRITE_VALUES_LOG2_SIZE 4 +#define DS_DHD_BACKUP_INDEX_CACHE_ADDRESS 0x73c0 +#define DS_DHD_BACKUP_INDEX_CACHE_BYTE_SIZE 0x0040 +#define DS_DHD_BACKUP_INDEX_CACHE_LOG2_BYTE_SIZE 0x0006 +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_SIZE 32 +#define RDD_DS_DHD_BACKUP_INDEX_CACHE_LOG2_SIZE 5 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS 0x7400 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_BYTE_SIZE 0x0100 +#define DS_RING_PACKET_DESCRIPTORS_CACHE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +#define RDD_DS_RING_PACKET_DESCRIPTORS_CACHE_LOG2_SIZE 4 +#define RING_DESCRIPTORS_TABLE_ADDRESS 0x7500 +#define RING_DESCRIPTORS_TABLE_BYTE_SIZE 0x0100 +#define RING_DESCRIPTORS_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_RING_DESCRIPTORS_TABLE_SIZE 16 +#define RDD_RING_DESCRIPTORS_TABLE_LOG2_SIZE 4 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_ADDRESS 0x7600 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_BYTE_SIZE 0x0100 +#define SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_SIZE 32 +#define RDD_SERVICE_QUEUES_DDR_QUEUE_ADDRESS_TABLE_LOG2_SIZE 5 +#define MAC_EXTENSION_TABLE_ADDRESS 0x7700 +#define MAC_EXTENSION_TABLE_BYTE_SIZE 0x0040 +#define MAC_EXTENSION_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_MAC_EXTENSION_TABLE_SIZE 64 +#define RDD_MAC_EXTENSION_TABLE_LOG2_SIZE 6 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_ADDRESS 0x7740 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_BYTE_SIZE 0x0020 +#define DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_SIZE 16 +#define RDD_DHD_FLOW_RING_SHADOW_WR_PTR_TABLE_LOG2_SIZE 4 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_ADDRESS 0x7760 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0014 +#define DS_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_ADDRESS 0x7774 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_BYTE_SIZE 0x0004 +#define DDR_ADDRESS_FOR_SKB_DATA_POINTERS_TABLE_LOG2_BYTE_SIZE 0x0002 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_ADDRESS 0x7778 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_BYTE_SIZE 0x0008 +#define DS_DHD_BACKUP_FLUSH_SCRATCH_LOG2_BYTE_SIZE 0x0003 +#define SERVICE_QUEUES_CFG_ADDRESS 0x7780 +#define SERVICE_QUEUES_CFG_BYTE_SIZE 0x0014 +#define SERVICE_QUEUES_CFG_LOG2_BYTE_SIZE 0x0005 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_ADDRESS 0x7794 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_BYTE_SIZE 0x0004 +#define CPU_TX_POST_REQUEST_QUEUE_IDX_LOG2_BYTE_SIZE 0x0002 +#define MAC_EXTENSION_TABLE_CAM_ADDRESS 0x7798 +#define MAC_EXTENSION_TABLE_CAM_BYTE_SIZE 0x0020 +#define MAC_EXTENSION_TABLE_CAM_LOG2_BYTE_SIZE 0x0005 +#define RDD_MAC_EXTENSION_TABLE_CAM_SIZE 32 +#define RDD_MAC_EXTENSION_TABLE_CAM_LOG2_SIZE 5 +#define DS_CAM_DHD_DMA_SCRATCH_ADDRESS 0x77b8 +#define DS_CAM_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_CAM_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_ENQ_DHD_DMA_SCRATCH_ADDRESS 0x77bc +#define DS_ENQ_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_ENQ_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define PM_COUNTERS_BUFFER_ADDRESS 0x77c0 +#define PM_COUNTERS_BUFFER_BYTE_SIZE 0x0020 +#define PM_COUNTERS_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define TX_CPL_DHD_DMA_SCRATCH_ADDRESS 0x77e0 +#define TX_CPL_DHD_DMA_SCRATCH_BYTE_SIZE 0x000c +#define TX_CPL_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define RDD_TX_CPL_DHD_DMA_SCRATCH_SIZE 3 +#define RDD_TX_CPL_DHD_DMA_SCRATCH_LOG2_SIZE 2 +#define DS_R2D_DHD_DMA_SCRATCH_ADDRESS 0x77ec +#define DS_R2D_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_R2D_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define DS_CPU_DHD_DMA_SCRATCH_ADDRESS 0x77f0 +#define DS_CPU_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define DS_CPU_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define TIMER_7_TIMER_PERIOD_ADDRESS 0x77f4 +#define TIMER_7_TIMER_PERIOD_BYTE_SIZE 0x0002 +#define TIMER_7_TIMER_PERIOD_LOG2_BYTE_SIZE 0x0001 +#define INTERRUPT_COALESCING_TIMER_PERIOD_ADDRESS 0x77f6 +#define INTERRUPT_COALESCING_TIMER_PERIOD_BYTE_SIZE 0x0002 +#define INTERRUPT_COALESCING_TIMER_PERIOD_LOG2_BYTE_SIZE 0x0001 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS 0x77f8 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_BYTE_SIZE 0x0004 +#define DS_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_SIZE 4 +#define RDD_DS_RATE_CONTROLLER_EXPONENT_TABLE_LOG2_SIZE 2 +#define INTERRUPT_COALESCING_TIMER_ARMED_ADDRESS 0x77fc +#define INTERRUPT_COALESCING_TIMER_ARMED_BYTE_SIZE 0x0002 +#define INTERRUPT_COALESCING_TIMER_ARMED_LOG2_BYTE_SIZE 0x0001 +#define COMMON_A_DUMMY_STORE_ADDRESS 0x77fe +#define COMMON_A_DUMMY_STORE_BYTE_SIZE 0x0001 +#define COMMON_A_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define FC_SERVICE_QUEUE_MODE_ADDRESS 0x77ff +#define FC_SERVICE_QUEUE_MODE_BYTE_SIZE 0x0001 +#define FC_SERVICE_QUEUE_MODE_LOG2_BYTE_SIZE 0x0001 +#define MAIN_A_DEBUG_TRACE_ADDRESS 0x7a00 +#define MAIN_A_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define MAIN_A_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAIN_A_DEBUG_TRACE_SIZE 512 +#define RDD_MAIN_A_DEBUG_TRACE_LOG2_SIZE 9 +#define PICO_A_DEBUG_TRACE_ADDRESS 0x7c00 +#define PICO_A_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define PICO_A_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_PICO_A_DEBUG_TRACE_SIZE 512 +#define RDD_PICO_A_DEBUG_TRACE_LOG2_SIZE 9 +/* COMMON_B */ +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_ADDRESS 0x8000 +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_SIZE 128 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_LONG_TABLE_LOG2_SIZE 7 +#define CPU_RX_RUNNER_B_SCRATCHPAD_ADDRESS 0x8800 +#define CPU_RX_RUNNER_B_SCRATCHPAD_BYTE_SIZE 0x0800 +#define CPU_RX_RUNNER_B_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_SIZE 8 +#define RDD_CPU_RX_RUNNER_B_SCRATCHPAD_LOG2_SIZE 3 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_ADDRESS 0x9000 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_BYTE_SIZE 0x0200 +#define US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_COUNTERS_TABLE_LOG2_SIZE 8 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0x9200 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0100 +#define LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0008 +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_SIZE 32 +#define RDD_LOCAL_SWITCHING_LAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 5 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS 0x9300 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_BYTE_SIZE 0x0100 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_SIZE 5 +#define WAN_TX_SERVICE_QUEUES_TABLE_ADDRESS 0x9400 +#define WAN_TX_SERVICE_QUEUES_TABLE_BYTE_SIZE 0x0800 +#define WAN_TX_SERVICE_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_SIZE 64 +#define RDD_WAN_TX_SERVICE_QUEUES_TABLE_LOG2_SIZE 6 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_ADDRESS 0x9c00 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_BYTE_SIZE 0x0100 +#define US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_SIZE 32 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_CAM_TABLE_LOG2_SIZE 5 +#define US_CPU_TX_SCRATCHPAD_ADDRESS 0x9d00 +#define US_CPU_TX_SCRATCHPAD_BYTE_SIZE 0x0100 +#define US_CPU_TX_SCRATCHPAD_LOG2_BYTE_SIZE 0x0008 +#define US_CONNECTION_BUFFER_TABLE_ADDRESS 0x9e00 +#define US_CONNECTION_BUFFER_TABLE_BYTE_SIZE 0x0140 +#define US_CONNECTION_BUFFER_TABLE_LOG2_BYTE_SIZE 0x0009 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE 5 +#define RDD_US_CONNECTION_BUFFER_TABLE_LOG2_SIZE 3 +#define RDD_US_CONNECTION_BUFFER_TABLE_SIZE2 4 +#define RDD_US_CONNECTION_BUFFER_TABLE_LOG2_SIZE2 2 +#define IPV6_HOST_ADDRESS_CRC_TABLE_ADDRESS 0x9f40 +#define IPV6_HOST_ADDRESS_CRC_TABLE_BYTE_SIZE 0x0040 +#define IPV6_HOST_ADDRESS_CRC_TABLE_LOG2_BYTE_SIZE 0x0006 +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_SIZE 16 +#define RDD_IPV6_HOST_ADDRESS_CRC_TABLE_LOG2_SIZE 4 +#define DHD_BACKUP_INFO_CACHE_TABLE_ADDRESS 0x9f80 +#define DHD_BACKUP_INFO_CACHE_TABLE_BYTE_SIZE 0x0080 +#define DHD_BACKUP_INFO_CACHE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_SIZE 16 +#define RDD_DHD_BACKUP_INFO_CACHE_TABLE_LOG2_SIZE 4 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS 0xa000 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_BYTE_SIZE 0x0800 +#define DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +#define RDD_DS_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_SIZE 8 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_ADDRESS 0xa800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_BYTE_SIZE 0x0800 +#define US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_BYTE_SIZE 0x000b +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_SIZE 256 +#define RDD_US_INGRESS_CLASSIFICATION_LOOKUP_TABLE_LOG2_SIZE 8 +#define WAN_TX_QUEUES_TABLE_ADDRESS 0xb000 +#define WAN_TX_QUEUES_TABLE_BYTE_SIZE 0x1000 +#define WAN_TX_QUEUES_TABLE_LOG2_BYTE_SIZE 0x000c +#define RDD_WAN_TX_QUEUES_TABLE_SIZE 256 +#define RDD_WAN_TX_QUEUES_TABLE_LOG2_SIZE 8 +#define RUNNER_FWTRACE_MAINB_BASE_ADDRESS 0xc000 +#define RUNNER_FWTRACE_MAINB_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_MAINB_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_MAINB_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_MAINB_BASE_LOG2_SIZE 7 +#define WAN_TX_RUNNER_B_SCRATCHPAD_ADDRESS 0xc400 +#define WAN_TX_RUNNER_B_SCRATCHPAD_BYTE_SIZE 0x0100 +#define WAN_TX_RUNNER_B_SCRATCHPAD_LOG2_BYTE_SIZE 0x0008 +#define US_RING_PACKET_DESCRIPTORS_CACHE_ADDRESS 0xc500 +#define US_RING_PACKET_DESCRIPTORS_CACHE_BYTE_SIZE 0x0100 +#define US_RING_PACKET_DESCRIPTORS_CACHE_LOG2_BYTE_SIZE 0x0008 +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_SIZE 16 +#define RDD_US_RING_PACKET_DESCRIPTORS_CACHE_LOG2_SIZE 4 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_ADDRESS 0xc600 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_BYTE_SIZE 0x0100 +#define DHD_FLOW_RING_CACHE_CTX_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_SIZE 16 +#define RDD_DHD_FLOW_RING_CACHE_CTX_TABLE_LOG2_SIZE 4 +#define FC_FLOW_IP_ADDRESSES_TABLE_ADDRESS 0xc700 +#define FC_FLOW_IP_ADDRESSES_TABLE_BYTE_SIZE 0x00c0 +#define FC_FLOW_IP_ADDRESSES_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_SIZE 4 +#define RDD_FC_FLOW_IP_ADDRESSES_TABLE_LOG2_SIZE 2 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_ADDRESS 0xc7c0 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_BYTE_SIZE 0x0010 +#define RUNNER_FWTRACE_MAINB_CURR_OFFSET_LOG2_BYTE_SIZE 0x0004 +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_SIZE 2 +#define RDD_RUNNER_FWTRACE_MAINB_CURR_OFFSET_LOG2_SIZE 1 +#define BPM_REPLY_RUNNER_B_ADDRESS 0xc7d0 +#define BPM_REPLY_RUNNER_B_BYTE_SIZE 0x0030 +#define BPM_REPLY_RUNNER_B_LOG2_BYTE_SIZE 0x0006 +#define US_RATE_CONTROLLERS_TABLE_ADDRESS 0xc800 +#define US_RATE_CONTROLLERS_TABLE_BYTE_SIZE 0x1800 +#define US_RATE_CONTROLLERS_TABLE_LOG2_BYTE_SIZE 0x000d +#define RDD_US_RATE_CONTROLLERS_TABLE_SIZE 128 +#define RDD_US_RATE_CONTROLLERS_TABLE_LOG2_SIZE 7 +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_ADDRESS 0xe000 +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_BYTE_SIZE 0x0800 +#define US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_LOG2_BYTE_SIZE 0x000b +#define RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_SIZE 8 +#define RDD_US_RX_SBPM_TO_FPM_COPY_SCRATCHPAD_LOG2_SIZE 3 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_ADDRESS 0xe800 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_BYTE_SIZE 0x00c0 +#define DHD_RADIO_INSTANCE_COMMON_B_DATA_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_SIZE 3 +#define RDD_DHD_RADIO_INSTANCE_COMMON_B_DATA_LOG2_SIZE 2 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_ADDRESS 0xe8c0 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_BYTE_SIZE 0x0040 +#define DUMMY_RATE_CONTROLLER_DESCRIPTOR_LOG2_BYTE_SIZE 0x0006 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_ADDRESS 0xe900 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_BYTE_SIZE 0x0050 +#define GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_BYTE_SIZE 0x0007 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_SIZE 40 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_FREE_PTR_LOG2_SIZE 6 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_ADDRESS 0xe950 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_BYTE_SIZE 0x0010 +#define DUMMY_WAN_TX_QUEUE_DESCRIPTOR_LOG2_BYTE_SIZE 0x0004 +#define IPV4_HOST_ADDRESS_TABLE_ADDRESS 0xe960 +#define IPV4_HOST_ADDRESS_TABLE_BYTE_SIZE 0x0020 +#define IPV4_HOST_ADDRESS_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_IPV4_HOST_ADDRESS_TABLE_SIZE 8 +#define RDD_IPV4_HOST_ADDRESS_TABLE_LOG2_SIZE 3 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_ADDRESS 0xe980 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_BYTE_SIZE 0x0050 +#define GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_BYTE_SIZE 0x0007 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_SIZE 40 +#define RDD_GPON_SKB_ENQUEUED_INDEXES_PUT_PTR_LOG2_SIZE 6 +#define US_DHD_BACKUP_ENTRY_SCRATCH_ADDRESS 0xe9d0 +#define US_DHD_BACKUP_ENTRY_SCRATCH_BYTE_SIZE 0x0010 +#define US_DHD_BACKUP_ENTRY_SCRATCH_LOG2_BYTE_SIZE 0x0004 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_ADDRESS 0xe9e0 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_BYTE_SIZE 0x0020 +#define US_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_BYTE_SIZE 0x0005 +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_SIZE 16 +#define RDD_US_DHD_FLOW_RING_CACHE_LKP_TABLE_LOG2_SIZE 4 +#define MAIN_B_DEBUG_TRACE_ADDRESS 0xea00 +#define MAIN_B_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define MAIN_B_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_MAIN_B_DEBUG_TRACE_SIZE 512 +#define RDD_MAIN_B_DEBUG_TRACE_LOG2_SIZE 9 +#define PICO_B_DEBUG_TRACE_ADDRESS 0xec00 +#define PICO_B_DEBUG_TRACE_BYTE_SIZE 0x0200 +#define PICO_B_DEBUG_TRACE_LOG2_BYTE_SIZE 0x0009 +#define RDD_PICO_B_DEBUG_TRACE_SIZE 512 +#define RDD_PICO_B_DEBUG_TRACE_LOG2_SIZE 9 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_ADDRESS 0xee00 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_BYTE_SIZE 0x0080 +#define US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE 2 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE 1 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_SIZE2 64 +#define RDD_US_CPU_REASON_TO_CPU_RX_QUEUE_TABLE_LOG2_SIZE2 6 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_ADDRESS 0xee80 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_BYTE_SIZE 0x0080 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_1_LOG2_BYTE_SIZE 0x0007 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_ADDRESS 0xef00 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_BYTE_SIZE 0x0080 +#define PACKET_SRAM_TO_DDR_COPY_BUFFER_2_LOG2_BYTE_SIZE 0x0007 +#define LAN0_INGRESS_FIFO_ADDRESS 0xef80 +#define LAN0_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN0_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN5_INGRESS_FIFO_ADDRESS 0xefc0 +#define LAN5_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN5_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define RUNNER_FWTRACE_PICOB_BASE_ADDRESS 0xf000 +#define RUNNER_FWTRACE_PICOB_BASE_BYTE_SIZE 0x0400 +#define RUNNER_FWTRACE_PICOB_BASE_LOG2_BYTE_SIZE 0x000a +#define RDD_RUNNER_FWTRACE_PICOB_BASE_SIZE 128 +#define RDD_RUNNER_FWTRACE_PICOB_BASE_LOG2_SIZE 7 +#define LAN1_INGRESS_FIFO_ADDRESS 0xf400 +#define LAN1_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN1_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN6_INGRESS_FIFO_ADDRESS 0xf440 +#define LAN6_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN6_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN2_INGRESS_FIFO_ADDRESS 0xf480 +#define LAN2_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN2_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN7_INGRESS_FIFO_ADDRESS 0xf4c0 +#define LAN7_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN7_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define LAN3_INGRESS_FIFO_ADDRESS 0xf500 +#define LAN3_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN3_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define US_DHD_BACKUP_INDEX_CACHE_ADDRESS 0xf540 +#define US_DHD_BACKUP_INDEX_CACHE_BYTE_SIZE 0x0040 +#define US_DHD_BACKUP_INDEX_CACHE_LOG2_BYTE_SIZE 0x0006 +#define RDD_US_DHD_BACKUP_INDEX_CACHE_SIZE 32 +#define RDD_US_DHD_BACKUP_INDEX_CACHE_LOG2_SIZE 5 +#define LAN4_INGRESS_FIFO_ADDRESS 0xf580 +#define LAN4_INGRESS_FIFO_BYTE_SIZE 0x0040 +#define LAN4_INGRESS_FIFO_LOG2_BYTE_SIZE 0x0006 +#define DHD_DOORBELL_COUNTERS_ADDRESS 0xf5c0 +#define DHD_DOORBELL_COUNTERS_BYTE_SIZE 0x0030 +#define DHD_DOORBELL_COUNTERS_LOG2_BYTE_SIZE 0x0006 +#define RDD_DHD_DOORBELL_COUNTERS_SIZE 48 +#define RDD_DHD_DOORBELL_COUNTERS_LOG2_SIZE 6 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_ADDRESS 0xf5f0 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_BYTE_SIZE 0x0010 +#define US_DHD_BACKUP_QUEUE_MANAGEMENT_INFO_LOG2_BYTE_SIZE 0x0004 +#define WAN_ENQUEUE_INGRESS_QUEUE_ADDRESS 0xf600 +#define WAN_ENQUEUE_INGRESS_QUEUE_BYTE_SIZE 0x0040 +#define WAN_ENQUEUE_INGRESS_QUEUE_LOG2_BYTE_SIZE 0x0006 +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_SIZE 64 +#define RDD_WAN_ENQUEUE_INGRESS_QUEUE_LOG2_SIZE 6 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_ADDRESS 0xf640 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_BYTE_SIZE 0x0014 +#define US_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_BUFFER_LOG2_BYTE_SIZE 0x0005 +#define US_CAM_DHD_DMA_SCRATCH_ADDRESS 0xf654 +#define US_CAM_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_CAM_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_DHD_BACKUP_FLUSH_SCRATCH_ADDRESS 0xf658 +#define US_DHD_BACKUP_FLUSH_SCRATCH_BYTE_SIZE 0x0008 +#define US_DHD_BACKUP_FLUSH_SCRATCH_LOG2_BYTE_SIZE 0x0003 +#define US_ENQ_DHD_DMA_SCRATCH_ADDRESS 0xf660 +#define US_ENQ_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_ENQ_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define US_R2D_DHD_DMA_SCRATCH_ADDRESS 0xf664 +#define US_R2D_DHD_DMA_SCRATCH_BYTE_SIZE 0x0004 +#define US_R2D_DHD_DMA_SCRATCH_LOG2_BYTE_SIZE 0x0002 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_ADDRESS 0xf668 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_BYTE_SIZE 0x0004 +#define CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_LOG2_BYTE_SIZE 0x0002 +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_SIZE 4 +#define RDD_CPU_TX_DESCRIPTOR_QUEUE_TAIL_TABLE_LOG2_SIZE 2 +#define COMMON_B_DUMMY_STORE_ADDRESS 0xf66c +#define COMMON_B_DUMMY_STORE_BYTE_SIZE 0x0001 +#define COMMON_B_DUMMY_STORE_LOG2_BYTE_SIZE 0x0001 +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_ADDRESS 0xf66d +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_BYTE_SIZE 0x0001 +#define DHD_FLOW_RING_CACHE_CTX_NEXT_INDEX_LOG2_BYTE_SIZE 0x0001 +/* DDR */ +#define BPM_PACKET_BUFFERS_ADDRESS 0x0000 +#define BPM_PACKET_BUFFERS_BYTE_SIZE 0xf00000 +#define BPM_PACKET_BUFFERS_LOG2_BYTE_SIZE 0x0018 +#define RDD_BPM_PACKET_BUFFERS_SIZE 7680 +#define RDD_BPM_PACKET_BUFFERS_LOG2_SIZE 13 +#define CONTEXT_TABLE_ADDRESS 0x0000 +#define CONTEXT_TABLE_BYTE_SIZE 0x0084 +#define CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0008 +#define NAT_CACHE_TABLE_ADDRESS 0x0000 +#define NAT_CACHE_TABLE_BYTE_SIZE 0x100000 +#define NAT_CACHE_TABLE_LOG2_BYTE_SIZE 0x0014 +#define RDD_NAT_CACHE_TABLE_SIZE 65536 +#define RDD_NAT_CACHE_TABLE_LOG2_SIZE 16 +#define NAT_CACHE_EXTENSION_TABLE_ADDRESS 0x0000 +#define NAT_CACHE_EXTENSION_TABLE_BYTE_SIZE 0x0070 +#define NAT_CACHE_EXTENSION_TABLE_LOG2_BYTE_SIZE 0x0007 +#define RDD_NAT_CACHE_EXTENSION_TABLE_SIZE 7 +#define RDD_NAT_CACHE_EXTENSION_TABLE_LOG2_SIZE 3 +#define NATC_CONTEXT_TABLE_ADDRESS 0x0000 +#define NATC_CONTEXT_TABLE_BYTE_SIZE 0x400000 +#define NATC_CONTEXT_TABLE_LOG2_BYTE_SIZE 0x0016 +#define RDD_NATC_CONTEXT_TABLE_SIZE 65536 +#define RDD_NATC_CONTEXT_TABLE_LOG2_SIZE 16 +#define CONTEXT_CONTINUATION_TABLE_ADDRESS 0x0000 +#define CONTEXT_CONTINUATION_TABLE_BYTE_SIZE 0x4c0000 +#define CONTEXT_CONTINUATION_TABLE_LOG2_BYTE_SIZE 0x0017 +#define RDD_CONTEXT_CONTINUATION_TABLE_SIZE 65536 +#define RDD_CONTEXT_CONTINUATION_TABLE_LOG2_SIZE 16 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_ADDRESS 0x5d1500 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_BYTE_SIZE 0x00a0 +#define DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_SIZE 8 +#define RDD_DHD_TX_POST_FLOW_RING_MGMT_DESCRIPTOR_TABLE_LOG2_SIZE 3 +#define DHD_RX_POST_DDR_BUFFER_ADDRESS 0x5c1100 +#define DHD_RX_POST_DDR_BUFFER_BYTE_SIZE 0x8000 +#define DHD_RX_POST_DDR_BUFFER_LOG2_BYTE_SIZE 0x000f +#define RDD_DHD_RX_POST_DDR_BUFFER_SIZE 1024 +#define RDD_DHD_RX_POST_DDR_BUFFER_LOG2_SIZE 10 +#define DHD_RX_COMPLETE_DDR_BUFFER_ADDRESS 0x5c9100 +#define DHD_RX_COMPLETE_DDR_BUFFER_BYTE_SIZE 0x8000 +#define DHD_RX_COMPLETE_DDR_BUFFER_LOG2_BYTE_SIZE 0x000f +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_SIZE 1024 +#define RDD_DHD_RX_COMPLETE_DDR_BUFFER_LOG2_SIZE 10 +#define DHD_TX_POST_DDR_BUFFER_ADDRESS 0x5d15a0 +#define DHD_TX_POST_DDR_BUFFER_BYTE_SIZE 0x1800 +#define DHD_TX_POST_DDR_BUFFER_LOG2_BYTE_SIZE 0x000d +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE 8 +#define RDD_DHD_TX_POST_DDR_BUFFER_LOG2_SIZE 3 +#define RDD_DHD_TX_POST_DDR_BUFFER_SIZE2 16 +#define RDD_DHD_TX_POST_DDR_BUFFER_LOG2_SIZE2 4 +#define DHD_TX_COMPLETE_DDR_BUFFER_ADDRESS 0x5d2da0 +#define DHD_TX_COMPLETE_DDR_BUFFER_BYTE_SIZE 0x0100 +#define DHD_TX_COMPLETE_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_SIZE 16 +#define RDD_DHD_TX_COMPLETE_DDR_BUFFER_LOG2_SIZE 4 +#define R2D_WR_ARR_DDR_BUFFER_ADDRESS 0x5d1100 +#define R2D_WR_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define R2D_WR_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_R2D_WR_ARR_DDR_BUFFER_SIZE 128 +#define RDD_R2D_WR_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define D2R_RD_ARR_DDR_BUFFER_ADDRESS 0x5d1200 +#define D2R_RD_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define D2R_RD_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_D2R_RD_ARR_DDR_BUFFER_SIZE 128 +#define RDD_D2R_RD_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define R2D_RD_ARR_DDR_BUFFER_ADDRESS 0x5d1300 +#define R2D_RD_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define R2D_RD_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_R2D_RD_ARR_DDR_BUFFER_SIZE 128 +#define RDD_R2D_RD_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define D2R_WR_ARR_DDR_BUFFER_ADDRESS 0x5d1400 +#define D2R_WR_ARR_DDR_BUFFER_BYTE_SIZE 0x0100 +#define D2R_WR_ARR_DDR_BUFFER_LOG2_BYTE_SIZE 0x0008 +#define RDD_D2R_WR_ARR_DDR_BUFFER_SIZE 128 +#define RDD_D2R_WR_ARR_DDR_BUFFER_LOG2_SIZE 7 +#define DHD_BACKUP_QUEUES_BUFFER_ADDRESS 0x600000 +#define DHD_BACKUP_QUEUES_BUFFER_BYTE_SIZE 0x100000 +#define DHD_BACKUP_QUEUES_BUFFER_LOG2_BYTE_SIZE 0x0014 +#define RDD_DHD_BACKUP_QUEUES_BUFFER_SIZE 524288 +#define RDD_DHD_BACKUP_QUEUES_BUFFER_LOG2_SIZE 19 +#define WLAN_MCAST_DHD_LIST_TABLE_ADDRESS 0x5c0000 +#define WLAN_MCAST_DHD_LIST_TABLE_BYTE_SIZE 0x1000 +#define WLAN_MCAST_DHD_LIST_TABLE_LOG2_BYTE_SIZE 0x000c +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_SIZE 64 +#define RDD_WLAN_MCAST_DHD_LIST_TABLE_LOG2_SIZE 6 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_ADDRESS 0x5c1000 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_BYTE_SIZE 0x0001 +#define WLAN_MCAST_DHD_LIST_FORMAT_TABLE_LOG2_BYTE_SIZE 0x0001 +/* PSRAM */ +#endif +#endif /* _RDD_RUNNER_DEFS_AUTO_H */ diff --git a/arch/arm/mach-bcmbca/rdp/rdd_tm.c b/arch/arm/mach-bcmbca/rdp/rdd_tm.c new file mode 100755 index 0000000000..e84bfd2bad --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_tm.c @@ -0,0 +1,128 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#include "rdd.h" + + +/******************************************************************************/ +/* */ +/* Global Variables */ +/* */ +/******************************************************************************/ + +extern uint8_t *ContextTableBase; +extern uint8_t *g_runner_ddr_base_addr; +extern uint8_t *g_runner_tables_ptr; +extern uint32_t g_ddr_headroom_size; +extern uint32_t g_rate_controllers_pool_idx; +extern BL_LILAC_RDD_BRIDGE_PORT_DTE g_broadcom_switch_physical_port; +extern RDD_WAN_TX_POINTERS_TABLE_DTS *wan_tx_pointers_table_ptr; +extern bdmf_fastlock int_lock_irq; +extern rdpa_bpm_buffer_size_t g_bpm_buffer_size; + + +BL_LILAC_RDD_ERROR_DTE f_rdd_ds_exponent_table_initialize ( void ) +{ + RDD_RATE_CONTROLLER_EXPONENT_TABLE_DTS *exponent_table_ptr; + RDD_RATE_CONTROLLER_EXPONENT_ENTRY_DTS *exponent_entry_ptr; + + /* initialize exponents table */ + exponent_table_ptr = ( RDD_RATE_CONTROLLER_EXPONENT_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_COMMON_0_OFFSET ) + DS_RATE_CONTROLLER_EXPONENT_TABLE_ADDRESS ); + + exponent_entry_ptr = &( exponent_table_ptr->entry[ 0 ] ); + RDD_RATE_CONTROLLER_EXPONENT_ENTRY_EXPONENT_WRITE ( RDD_RATE_CONTROL_EXPONENT0, exponent_entry_ptr ); + + exponent_entry_ptr = &( exponent_table_ptr->entry[ 1 ] ); + RDD_RATE_CONTROLLER_EXPONENT_ENTRY_EXPONENT_WRITE ( RDD_RATE_CONTROL_EXPONENT1, exponent_entry_ptr ); + + exponent_entry_ptr = &( exponent_table_ptr->entry[ 2 ] ); + RDD_RATE_CONTROLLER_EXPONENT_ENTRY_EXPONENT_WRITE ( RDD_RATE_CONTROL_EXPONENT2, exponent_entry_ptr ); + + return ( BL_LILAC_RDD_OK ); +} + +BL_LILAC_RDD_ERROR_DTE rdd_eth_tx_queue_config ( BL_LILAC_RDD_EMAC_ID_DTE xi_emac_id, + BL_LILAC_RDD_QUEUE_ID_DTE xi_queue_id, + uint16_t xi_packet_threshold, + rdd_queue_profile xi_profile_id, + uint8_t xi_counter_id ) +{ + RDD_ETH_TX_QUEUE_DESCRIPTOR_DTS *eth_tx_queue_descriptor_ptr; + RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS *eth_tx_queues_pointers_table_ptr; + RDD_ETH_TX_QUEUE_POINTERS_ENTRY_DTS *eth_tx_queue_pointers_entry_ptr; + uint16_t eth_tx_queue_descriptor_offset; + uint16_t queue_profile_address; + + /* check the validity of the input parameters - emac id */ + if ( ( xi_emac_id < BL_LILAC_RDD_EMAC_ID_START ) || ( xi_emac_id >= BL_LILAC_RDD_EMAC_ID_COUNT ) ) + { + return ( BL_LILAC_RDD_ERROR_ILLEGAL_EMAC_ID ); + } + + /* check the validity of the input parameters - emac tx queue id */ + if ( xi_queue_id > BL_LILAC_RDD_QUEUE_LAST ) + { + return ( BL_LILAC_RDD_ERROR_ILLEGAL_QUEUE_ID ); + } + + if ( xi_emac_id == BL_LILAC_RDD_EMAC_ID_PCI ) + { + /* PCI TX has 4 queues */ + if ( xi_queue_id > BL_LILAC_RDD_QUEUE_3 ) + { + return ( BL_LILAC_RDD_ERROR_ILLEGAL_QUEUE_ID ); + } + + if ( ( xi_profile_id == rdd_queue_profile_disabled ) && ( xi_packet_threshold > 0 ) ) + { + /* PCI TX fifo imposes queue configuration larger than fifo size */ + if ( xi_packet_threshold <= LILAC_RDD_PCI_TX_FIFO_SIZE ) + { + return ( BL_LILAC_RDD_ERROR_PCI_QUEUE_THRESHOLD_TOO_SMALL ); + } + + xi_packet_threshold -= LILAC_RDD_PCI_TX_FIFO_SIZE; + } + } + + eth_tx_queues_pointers_table_ptr = ( RDD_ETH_TX_QUEUES_POINTERS_TABLE_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + ETH_TX_QUEUES_POINTERS_TABLE_ADDRESS ); + + eth_tx_queue_pointers_entry_ptr = &( eth_tx_queues_pointers_table_ptr->entry[ xi_emac_id * RDD_EMAC_NUMBER_OF_QUEUES + xi_queue_id ] ); + + RDD_ETH_TX_QUEUE_POINTERS_ENTRY_TX_QUEUE_POINTER_READ ( eth_tx_queue_descriptor_offset, eth_tx_queue_pointers_entry_ptr ); + + eth_tx_queue_descriptor_ptr = ( RDD_ETH_TX_QUEUE_DESCRIPTOR_DTS * )(DEVICE_ADDRESS( RUNNER_PRIVATE_0_OFFSET ) + eth_tx_queue_descriptor_offset ); + + if ( xi_profile_id == rdd_queue_profile_disabled ) + { + queue_profile_address = 0; + } + else + { + queue_profile_address = DS_QUEUE_PROFILE_TABLE_ADDRESS + xi_profile_id * sizeof ( RDD_QUEUE_PROFILE_DTS ); + } + + RDD_ETH_TX_QUEUE_DESCRIPTOR_PACKET_THRESHOLD_WRITE ( xi_packet_threshold, eth_tx_queue_descriptor_ptr ); + RDD_ETH_TX_QUEUE_DESCRIPTOR_PROFILE_PTR_WRITE ( queue_profile_address, eth_tx_queue_descriptor_ptr ); + + return ( BL_LILAC_RDD_OK ); +} + +BL_LILAC_RDD_ERROR_DTE rdd_mdu_mode_pointer_get ( BL_LILAC_RDD_EMAC_ID_DTE xi_emac_id, + uint16_t *xo_mdu_mode_pointer ) +{ + /* check the validity of the input parameters - emac id */ + if ( ( xi_emac_id < BL_LILAC_RDD_EMAC_ID_0 ) || ( xi_emac_id >= BL_LILAC_RDD_EMAC_ID_COUNT ) ) + { + return ( BL_LILAC_RDD_ERROR_ILLEGAL_EMAC_ID ); + } + + *xo_mdu_mode_pointer = ETH_TX_MAC_TABLE_ADDRESS + xi_emac_id * sizeof ( RDD_ETH_TX_MAC_DESCRIPTOR_DTS ) + LILAC_RDD_EMAC_EGRESS_COUNTER_OFFSET; + + return ( BL_LILAC_RDD_OK ); +} diff --git a/arch/arm/mach-bcmbca/rdp/rdd_tm.h b/arch/arm/mach-bcmbca/rdp/rdd_tm.h new file mode 100755 index 0000000000..3c05947a7a --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdd_tm.h @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef _BL_LILAC_DRV_RUNNER_TM_H +#define _BL_LILAC_DRV_RUNNER_TM_H + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* rdd_eth_tx_queue_config */ +/* */ +/* Title: */ +/* */ +/* Firmware Driver - configure downstream Ethernet TX queue behind an EMAC. */ +/* */ +/* Abstract: */ +/* */ +/* configures EMAC TX queue: */ +/* - the packet threshold indicates how many packets can be TX pending */ +/* behind a TX queue. */ +/* */ +/* Input: */ +/* */ +/* xi_emac_id - EMAC port index (ETH0 - ETH4) */ +/* xi_queue_id - ETH TX queue index */ +/* xi_packet_threshold - ETH TX queue packet threshold. Overriden if WRED */ +/* and/or drop precedence is used */ +/* xi_profile_id - profile ID. If WRED and drop precedence not used, should */ +/* be rdd_queue_profile_disabled. If enabled, xi_packet_threshold MUST be */ +/* equal to minimum low threshold in profile. */ +/* */ +/* Output: */ +/* */ +/* BL_LILAC_RDD_ERROR_DTE - Return status */ +/* BL_LILAC_RDD_OK - No error */ +/* BL_LILAC_RDD_ERROR_ILLEGAL_EMAC_ID - EMAC index is illegal. */ +/* BL_LILAC_RDD_ERROR_ILLEGAL_QUEUE_ID - queue index is greater then 7 */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_eth_tx_queue_config ( BL_LILAC_RDD_EMAC_ID_DTE xi_emac_id, + BL_LILAC_RDD_QUEUE_ID_DTE xi_queue_id, + uint16_t xi_packet_threshold, + rdd_queue_profile xi_profile_id, + uint8_t xi_counter_id ); + + +/******************************************************************************/ +/* */ +/* Description: */ +/* */ +/* This function returns emac egress counter value for mdu mode. */ +/* */ +/* Input: */ +/* */ +/* xi_emac_id */ +/* */ +/* Output: */ +/* */ +/* xo_mdu_mode_pointer */ +/* */ +/******************************************************************************/ +BL_LILAC_RDD_ERROR_DTE rdd_mdu_mode_pointer_get ( BL_LILAC_RDD_EMAC_ID_DTE xi_emac_id, + uint16_t *xo_mdu_mode_pointer ); + +#endif /* _BL_LILAC_DRV_RUNNER_TM_H */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_bbh.h b/arch/arm/mach-bcmbca/rdp/rdp_bbh.h new file mode 100755 index 0000000000..6ac37eb972 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_bbh.h @@ -0,0 +1,13913 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef __RDP_BBH_H_INCLUDED +#define __RDP_BBH_H_INCLUDED + +/* File automatically generated by Reggae at 15/08/2013 10:54:27 */ + +#include "access_macros.h" +#include "packing.h" +#include "rdp_map.h" +/*****************************************************************************************/ +/* The Broad-Bus Handler (BBH) purpose is to manage the interface between the Peripheral */ +/* s (GPON, EPON and SGMII) and between the IH, the Runners, the SRAM/DDR DMA and the SR */ +/* AM/DDR BPM in two levels: the physical level and the protocol level. In the physica */ +/* l level the BBH manages the interfaces both for the RX and TX units. It manages a FIF */ +/* O based interface with the GPON, EPON or EMAC peripherals and the BB interface with t */ +/* he IH, the Runners, the DDR/SRAM DMA and the DDR/SRAM BPM. In the protocol level t */ +/* he BBH manages the RX and TX protocol between the Peripheral and the IH, the Runners, */ +/* the DDR/SRAM DMA and the DDR/SRAM BPM. On the RX side the BBH reads the data from */ +/* the peripheral’s FIFO and writes the packet header into the IH. After the IH header p */ +/* rocessing it reassembles the incoming data in the DDR or in the SRAM, using their DMA */ +/* and writes a packet descriptor (in the Runner SRAM) for each Packet. It is also resp */ +/* onsible of sending wakeup requests to the Runner for every PD it sends. It manages th */ +/* e DDR/SRAM buffers, using the BPM On the TX side it either gets an indication of the */ +/* TX FIFO capacity from the Peripheral (GPON) or gets a request for packet (EPON). The */ +/* n it requests a PD from the Runner accordingly. For both EPON and GPON peripherals it */ +/* also manages a round-robin algorithm for the requests of the different queues. Accor */ +/* ding to the Runner PD, the BBH will then read the data from the DDR or from the SRAM, */ +/* using their DMA. Upon reading the whole packet from the DDR, the BBH will release th */ +/* e DDR/SRAM buffer, using the BPM. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Blocks offsets */ +/*****************************************************************************************/ +/*****************************************************************************************/ +/* Functions offsets and addresses */ +/*****************************************************************************************/ +#define BBH_RX_0_GENERAL_CONFIGURATION_OFFSET ( 0x00000000 ) +#define BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS ( BBH_RX_0_OFFSET + BBH_RX_0_GENERAL_CONFIGURATION_OFFSET ) + +#define BBH_RX_0_PM_COUNTERS_OFFSET ( 0x00000100 ) +#define BBH_RX_0_PM_COUNTERS_ADDRESS ( BBH_RX_0_OFFSET + BBH_RX_0_PM_COUNTERS_OFFSET ) + +#define BBH_RX_0_DEBUG_OFFSET ( 0x00000200 ) +#define BBH_RX_0_DEBUG_ADDRESS ( BBH_RX_0_OFFSET + BBH_RX_0_DEBUG_OFFSET ) + +#define BBH_RX_0_PER_FLOW_PM_COUNTERS_OFFSET ( 0x00000400 ) +#define BBH_RX_0_PER_FLOW_PM_COUNTERS_ADDRESS ( BBH_RX_0_OFFSET + BBH_RX_0_PER_FLOW_PM_COUNTERS_OFFSET ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_OFFSET ( 0x00000000 ) +#define BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS ( BBH_RX_1_OFFSET + BBH_RX_1_GENERAL_CONFIGURATION_OFFSET ) + +#define BBH_RX_1_PM_COUNTERS_OFFSET ( 0x00000100 ) +#define BBH_RX_1_PM_COUNTERS_ADDRESS ( BBH_RX_1_OFFSET + BBH_RX_1_PM_COUNTERS_OFFSET ) + +#define BBH_RX_1_DEBUG_OFFSET ( 0x00000200 ) +#define BBH_RX_1_DEBUG_ADDRESS ( BBH_RX_1_OFFSET + BBH_RX_1_DEBUG_OFFSET ) + +#define BBH_RX_1_PER_FLOW_PM_COUNTERS_OFFSET ( 0x00000400 ) +#define BBH_RX_1_PER_FLOW_PM_COUNTERS_ADDRESS ( BBH_RX_1_OFFSET + BBH_RX_1_PER_FLOW_PM_COUNTERS_OFFSET ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_OFFSET ( 0x00000000 ) +#define BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS ( BBH_RX_2_OFFSET + BBH_RX_2_GENERAL_CONFIGURATION_OFFSET ) + +#define BBH_RX_2_PM_COUNTERS_OFFSET ( 0x00000100 ) +#define BBH_RX_2_PM_COUNTERS_ADDRESS ( BBH_RX_2_OFFSET + BBH_RX_2_PM_COUNTERS_OFFSET ) + +#define BBH_RX_2_DEBUG_OFFSET ( 0x00000200 ) +#define BBH_RX_2_DEBUG_ADDRESS ( BBH_RX_2_OFFSET + BBH_RX_2_DEBUG_OFFSET ) + +#define BBH_RX_2_PER_FLOW_PM_COUNTERS_OFFSET ( 0x00000400 ) +#define BBH_RX_2_PER_FLOW_PM_COUNTERS_ADDRESS ( BBH_RX_2_OFFSET + BBH_RX_2_PER_FLOW_PM_COUNTERS_OFFSET ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_OFFSET ( 0x00000000 ) +#define BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS ( BBH_RX_3_OFFSET + BBH_RX_3_GENERAL_CONFIGURATION_OFFSET ) + +#define BBH_RX_3_PM_COUNTERS_OFFSET ( 0x00000100 ) +#define BBH_RX_3_PM_COUNTERS_ADDRESS ( BBH_RX_3_OFFSET + BBH_RX_3_PM_COUNTERS_OFFSET ) + +#define BBH_RX_3_DEBUG_OFFSET ( 0x00000200 ) +#define BBH_RX_3_DEBUG_ADDRESS ( BBH_RX_3_OFFSET + BBH_RX_3_DEBUG_OFFSET ) + +#define BBH_RX_3_PER_FLOW_PM_COUNTERS_OFFSET ( 0x00000400 ) +#define BBH_RX_3_PER_FLOW_PM_COUNTERS_ADDRESS ( BBH_RX_3_OFFSET + BBH_RX_3_PER_FLOW_PM_COUNTERS_OFFSET ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_OFFSET ( 0x00000000 ) +#define BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS ( BBH_RX_4_OFFSET + BBH_RX_4_GENERAL_CONFIGURATION_OFFSET ) + +#define BBH_RX_4_PM_COUNTERS_OFFSET ( 0x00000100 ) +#define BBH_RX_4_PM_COUNTERS_ADDRESS ( BBH_RX_4_OFFSET + BBH_RX_4_PM_COUNTERS_OFFSET ) + +#define BBH_RX_4_DEBUG_OFFSET ( 0x00000200 ) +#define BBH_RX_4_DEBUG_ADDRESS ( BBH_RX_4_OFFSET + BBH_RX_4_DEBUG_OFFSET ) + +#define BBH_RX_4_PER_FLOW_PM_COUNTERS_OFFSET ( 0x00000400 ) +#define BBH_RX_4_PER_FLOW_PM_COUNTERS_ADDRESS ( BBH_RX_4_OFFSET + BBH_RX_4_PER_FLOW_PM_COUNTERS_OFFSET ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_OFFSET ( 0x00000000 ) +#define BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS ( BBH_RX_5_OFFSET + BBH_RX_5_GENERAL_CONFIGURATION_OFFSET ) + +#define BBH_RX_5_PM_COUNTERS_OFFSET ( 0x00000100 ) +#define BBH_RX_5_PM_COUNTERS_ADDRESS ( BBH_RX_5_OFFSET + BBH_RX_5_PM_COUNTERS_OFFSET ) + +#define BBH_RX_5_DEBUG_OFFSET ( 0x00000200 ) +#define BBH_RX_5_DEBUG_ADDRESS ( BBH_RX_5_OFFSET + BBH_RX_5_DEBUG_OFFSET ) + +#define BBH_RX_5_PER_FLOW_PM_COUNTERS_OFFSET ( 0x00000400 ) +#define BBH_RX_5_PER_FLOW_PM_COUNTERS_ADDRESS ( BBH_RX_5_OFFSET + BBH_RX_5_PER_FLOW_PM_COUNTERS_OFFSET ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_OFFSET ( 0x00000000 ) +#define BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS ( BBH_RX_6_OFFSET + BBH_RX_6_GENERAL_CONFIGURATION_OFFSET ) + +#define BBH_RX_6_PM_COUNTERS_OFFSET ( 0x00000100 ) +#define BBH_RX_6_PM_COUNTERS_ADDRESS ( BBH_RX_6_OFFSET + BBH_RX_6_PM_COUNTERS_OFFSET ) + +#define BBH_RX_6_DEBUG_OFFSET ( 0x00000200 ) +#define BBH_RX_6_DEBUG_ADDRESS ( BBH_RX_6_OFFSET + BBH_RX_6_DEBUG_OFFSET ) + +#define BBH_RX_6_PER_FLOW_PM_COUNTERS_OFFSET ( 0x00000400 ) +#define BBH_RX_6_PER_FLOW_PM_COUNTERS_ADDRESS ( BBH_RX_6_OFFSET + BBH_RX_6_PER_FLOW_PM_COUNTERS_OFFSET ) + +#define BBH_TX_0_CONFIGURATIONS_OFFSET ( 0x00000000 ) +#define BBH_TX_0_CONFIGURATIONS_ADDRESS ( BBH_TX_0_OFFSET + BBH_TX_0_CONFIGURATIONS_OFFSET ) + +#define BBH_TX_0_DEBUG_OFFSET ( 0x00000100 ) +#define BBH_TX_0_DEBUG_ADDRESS ( BBH_TX_0_OFFSET + BBH_TX_0_DEBUG_OFFSET ) + +#define BBH_TX_0_PD_FIFO_OFFSET ( 0x00000200 ) +#define BBH_TX_0_PD_FIFO_ADDRESS ( BBH_TX_0_OFFSET + BBH_TX_0_PD_FIFO_OFFSET ) + +#define BBH_TX_0_CONTEXT_OFFSET ( 0x00000600 ) +#define BBH_TX_0_CONTEXT_ADDRESS ( BBH_TX_0_OFFSET + BBH_TX_0_CONTEXT_OFFSET ) + +#define BBH_TX_0_EPON_PD_FIFO_OFFSET ( 0x00000700 ) +#define BBH_TX_0_EPON_PD_FIFO_ADDRESS ( BBH_TX_0_OFFSET + BBH_TX_0_EPON_PD_FIFO_OFFSET ) + +#define BBH_TX_0_EPON_CFG_OFFSET ( 0x00001000 ) +#define BBH_TX_0_EPON_CFG_ADDRESS ( BBH_TX_0_OFFSET + BBH_TX_0_EPON_CFG_OFFSET ) + +#define BBH_TX_0_EPON_DBG_OFFSET ( 0x00001100 ) +#define BBH_TX_0_EPON_DBG_ADDRESS ( BBH_TX_0_OFFSET + BBH_TX_0_EPON_DBG_OFFSET ) + +#define BBH_TX_0_EPON_STS_FIFO_OFFSET ( 0x00001700 ) +#define BBH_TX_0_EPON_STS_FIFO_ADDRESS ( BBH_TX_0_OFFSET + BBH_TX_0_EPON_STS_FIFO_OFFSET ) + +#define BBH_TX_1_CONFIGURATIONS_OFFSET ( 0x00000000 ) +#define BBH_TX_1_CONFIGURATIONS_ADDRESS ( BBH_TX_1_OFFSET + BBH_TX_1_CONFIGURATIONS_OFFSET ) + +#define BBH_TX_1_DEBUG_OFFSET ( 0x00000100 ) +#define BBH_TX_1_DEBUG_ADDRESS ( BBH_TX_1_OFFSET + BBH_TX_1_DEBUG_OFFSET ) + +#define BBH_TX_1_PD_FIFO_OFFSET ( 0x00000200 ) +#define BBH_TX_1_PD_FIFO_ADDRESS ( BBH_TX_1_OFFSET + BBH_TX_1_PD_FIFO_OFFSET ) + +#define BBH_TX_1_CONTEXT_OFFSET ( 0x00000600 ) +#define BBH_TX_1_CONTEXT_ADDRESS ( BBH_TX_1_OFFSET + BBH_TX_1_CONTEXT_OFFSET ) + +#define BBH_TX_1_EPON_PD_FIFO_OFFSET ( 0x00000700 ) +#define BBH_TX_1_EPON_PD_FIFO_ADDRESS ( BBH_TX_1_OFFSET + BBH_TX_1_EPON_PD_FIFO_OFFSET ) + +#define BBH_TX_1_EPON_CFG_OFFSET ( 0x00001000 ) +#define BBH_TX_1_EPON_CFG_ADDRESS ( BBH_TX_1_OFFSET + BBH_TX_1_EPON_CFG_OFFSET ) + +#define BBH_TX_1_EPON_DBG_OFFSET ( 0x00001100 ) +#define BBH_TX_1_EPON_DBG_ADDRESS ( BBH_TX_1_OFFSET + BBH_TX_1_EPON_DBG_OFFSET ) + +#define BBH_TX_1_EPON_STS_FIFO_OFFSET ( 0x00001700 ) +#define BBH_TX_1_EPON_STS_FIFO_ADDRESS ( BBH_TX_1_OFFSET + BBH_TX_1_EPON_STS_FIFO_OFFSET ) + +#define BBH_TX_2_CONFIGURATIONS_OFFSET ( 0x00000000 ) +#define BBH_TX_2_CONFIGURATIONS_ADDRESS ( BBH_TX_2_OFFSET + BBH_TX_2_CONFIGURATIONS_OFFSET ) + +#define BBH_TX_2_DEBUG_OFFSET ( 0x00000100 ) +#define BBH_TX_2_DEBUG_ADDRESS ( BBH_TX_2_OFFSET + BBH_TX_2_DEBUG_OFFSET ) + +#define BBH_TX_2_PD_FIFO_OFFSET ( 0x00000200 ) +#define BBH_TX_2_PD_FIFO_ADDRESS ( BBH_TX_2_OFFSET + BBH_TX_2_PD_FIFO_OFFSET ) + +#define BBH_TX_2_CONTEXT_OFFSET ( 0x00000600 ) +#define BBH_TX_2_CONTEXT_ADDRESS ( BBH_TX_2_OFFSET + BBH_TX_2_CONTEXT_OFFSET ) + +#define BBH_TX_2_EPON_PD_FIFO_OFFSET ( 0x00000700 ) +#define BBH_TX_2_EPON_PD_FIFO_ADDRESS ( BBH_TX_2_OFFSET + BBH_TX_2_EPON_PD_FIFO_OFFSET ) + +#define BBH_TX_2_EPON_CFG_OFFSET ( 0x00001000 ) +#define BBH_TX_2_EPON_CFG_ADDRESS ( BBH_TX_2_OFFSET + BBH_TX_2_EPON_CFG_OFFSET ) + +#define BBH_TX_2_EPON_DBG_OFFSET ( 0x00001100 ) +#define BBH_TX_2_EPON_DBG_ADDRESS ( BBH_TX_2_OFFSET + BBH_TX_2_EPON_DBG_OFFSET ) + +#define BBH_TX_2_EPON_STS_FIFO_OFFSET ( 0x00001700 ) +#define BBH_TX_2_EPON_STS_FIFO_ADDRESS ( BBH_TX_2_OFFSET + BBH_TX_2_EPON_STS_FIFO_OFFSET ) + +#define BBH_TX_3_CONFIGURATIONS_OFFSET ( 0x00000000 ) +#define BBH_TX_3_CONFIGURATIONS_ADDRESS ( BBH_TX_3_OFFSET + BBH_TX_3_CONFIGURATIONS_OFFSET ) + +#define BBH_TX_3_DEBUG_OFFSET ( 0x00000100 ) +#define BBH_TX_3_DEBUG_ADDRESS ( BBH_TX_3_OFFSET + BBH_TX_3_DEBUG_OFFSET ) + +#define BBH_TX_3_PD_FIFO_OFFSET ( 0x00000200 ) +#define BBH_TX_3_PD_FIFO_ADDRESS ( BBH_TX_3_OFFSET + BBH_TX_3_PD_FIFO_OFFSET ) + +#define BBH_TX_3_CONTEXT_OFFSET ( 0x00000600 ) +#define BBH_TX_3_CONTEXT_ADDRESS ( BBH_TX_3_OFFSET + BBH_TX_3_CONTEXT_OFFSET ) + +#define BBH_TX_3_EPON_PD_FIFO_OFFSET ( 0x00000700 ) +#define BBH_TX_3_EPON_PD_FIFO_ADDRESS ( BBH_TX_3_OFFSET + BBH_TX_3_EPON_PD_FIFO_OFFSET ) + +#define BBH_TX_3_EPON_CFG_OFFSET ( 0x00001000 ) +#define BBH_TX_3_EPON_CFG_ADDRESS ( BBH_TX_3_OFFSET + BBH_TX_3_EPON_CFG_OFFSET ) + +#define BBH_TX_3_EPON_DBG_OFFSET ( 0x00001100 ) +#define BBH_TX_3_EPON_DBG_ADDRESS ( BBH_TX_3_OFFSET + BBH_TX_3_EPON_DBG_OFFSET ) + +#define BBH_TX_3_EPON_STS_FIFO_OFFSET ( 0x00001700 ) +#define BBH_TX_3_EPON_STS_FIFO_ADDRESS ( BBH_TX_3_OFFSET + BBH_TX_3_EPON_STS_FIFO_OFFSET ) + +#define BBH_TX_4_CONFIGURATIONS_OFFSET ( 0x00000000 ) +#define BBH_TX_4_CONFIGURATIONS_ADDRESS ( BBH_TX_4_OFFSET + BBH_TX_4_CONFIGURATIONS_OFFSET ) + +#define BBH_TX_4_DEBUG_OFFSET ( 0x00000100 ) +#define BBH_TX_4_DEBUG_ADDRESS ( BBH_TX_4_OFFSET + BBH_TX_4_DEBUG_OFFSET ) + +#define BBH_TX_4_PD_FIFO_OFFSET ( 0x00000200 ) +#define BBH_TX_4_PD_FIFO_ADDRESS ( BBH_TX_4_OFFSET + BBH_TX_4_PD_FIFO_OFFSET ) + +#define BBH_TX_4_CONTEXT_OFFSET ( 0x00000600 ) +#define BBH_TX_4_CONTEXT_ADDRESS ( BBH_TX_4_OFFSET + BBH_TX_4_CONTEXT_OFFSET ) + +#define BBH_TX_4_EPON_PD_FIFO_OFFSET ( 0x00000700 ) +#define BBH_TX_4_EPON_PD_FIFO_ADDRESS ( BBH_TX_4_OFFSET + BBH_TX_4_EPON_PD_FIFO_OFFSET ) + +#define BBH_TX_4_EPON_CFG_OFFSET ( 0x00001000 ) +#define BBH_TX_4_EPON_CFG_ADDRESS ( BBH_TX_4_OFFSET + BBH_TX_4_EPON_CFG_OFFSET ) + +#define BBH_TX_4_EPON_DBG_OFFSET ( 0x00001100 ) +#define BBH_TX_4_EPON_DBG_ADDRESS ( BBH_TX_4_OFFSET + BBH_TX_4_EPON_DBG_OFFSET ) + +#define BBH_TX_4_EPON_STS_FIFO_OFFSET ( 0x00001700 ) +#define BBH_TX_4_EPON_STS_FIFO_ADDRESS ( BBH_TX_4_OFFSET + BBH_TX_4_EPON_STS_FIFO_OFFSET ) + +#define BBH_TX_5_CONFIGURATIONS_OFFSET ( 0x00000000 ) +#define BBH_TX_5_CONFIGURATIONS_ADDRESS ( BBH_TX_5_OFFSET + BBH_TX_5_CONFIGURATIONS_OFFSET ) + +#define BBH_TX_5_DEBUG_OFFSET ( 0x00000100 ) +#define BBH_TX_5_DEBUG_ADDRESS ( BBH_TX_5_OFFSET + BBH_TX_5_DEBUG_OFFSET ) + +#define BBH_TX_5_PD_FIFO_OFFSET ( 0x00000200 ) +#define BBH_TX_5_PD_FIFO_ADDRESS ( BBH_TX_5_OFFSET + BBH_TX_5_PD_FIFO_OFFSET ) + +#define BBH_TX_5_CONTEXT_OFFSET ( 0x00000600 ) +#define BBH_TX_5_CONTEXT_ADDRESS ( BBH_TX_5_OFFSET + BBH_TX_5_CONTEXT_OFFSET ) + +#define BBH_TX_5_EPON_PD_FIFO_OFFSET ( 0x00000700 ) +#define BBH_TX_5_EPON_PD_FIFO_ADDRESS ( BBH_TX_5_OFFSET + BBH_TX_5_EPON_PD_FIFO_OFFSET ) + +#define BBH_TX_5_EPON_CFG_OFFSET ( 0x00001000 ) +#define BBH_TX_5_EPON_CFG_ADDRESS ( BBH_TX_5_OFFSET + BBH_TX_5_EPON_CFG_OFFSET ) + +#define BBH_TX_5_EPON_DBG_OFFSET ( 0x00001100 ) +#define BBH_TX_5_EPON_DBG_ADDRESS ( BBH_TX_5_OFFSET + BBH_TX_5_EPON_DBG_OFFSET ) + +#define BBH_TX_5_EPON_STS_FIFO_OFFSET ( 0x00001700 ) +#define BBH_TX_5_EPON_STS_FIFO_ADDRESS ( BBH_TX_5_OFFSET + BBH_TX_5_EPON_STS_FIFO_OFFSET ) + +#define BBH_TX_6_CONFIGURATIONS_OFFSET ( 0x00000000 ) +#define BBH_TX_6_CONFIGURATIONS_ADDRESS ( BBH_TX_6_OFFSET + BBH_TX_6_CONFIGURATIONS_OFFSET ) + +#define BBH_TX_6_DEBUG_OFFSET ( 0x00000100 ) +#define BBH_TX_6_DEBUG_ADDRESS ( BBH_TX_6_OFFSET + BBH_TX_6_DEBUG_OFFSET ) + +#define BBH_TX_6_PD_FIFO_OFFSET ( 0x00000200 ) +#define BBH_TX_6_PD_FIFO_ADDRESS ( BBH_TX_6_OFFSET + BBH_TX_6_PD_FIFO_OFFSET ) + +#define BBH_TX_6_CONTEXT_OFFSET ( 0x00000600 ) +#define BBH_TX_6_CONTEXT_ADDRESS ( BBH_TX_6_OFFSET + BBH_TX_6_CONTEXT_OFFSET ) + +#define BBH_TX_6_EPON_PD_FIFO_OFFSET ( 0x00000700 ) +#define BBH_TX_6_EPON_PD_FIFO_ADDRESS ( BBH_TX_6_OFFSET + BBH_TX_6_EPON_PD_FIFO_OFFSET ) + +#define BBH_TX_6_EPON_CFG_OFFSET ( 0x00001000 ) +#define BBH_TX_6_EPON_CFG_ADDRESS ( BBH_TX_6_OFFSET + BBH_TX_6_EPON_CFG_OFFSET ) + +#define BBH_TX_6_EPON_DBG_OFFSET ( 0x00001100 ) +#define BBH_TX_6_EPON_DBG_ADDRESS ( BBH_TX_6_OFFSET + BBH_TX_6_EPON_DBG_OFFSET ) + +#define BBH_TX_6_EPON_STS_FIFO_OFFSET ( 0x00001700 ) +#define BBH_TX_6_EPON_STS_FIFO_ADDRESS ( BBH_TX_6_OFFSET + BBH_TX_6_EPON_STS_FIFO_OFFSET ) + +/* 'd' is module index */ +/* 'i' is block index */ +/* 'j' is function index */ +/* 'e' is function entry */ +/* 'k' is register index */ + +/*****************************************************************************************/ +/* Broad-Bus_configuration */ +/* Each BBH unit has its own position on the BB tree. This position defines the Route ad */ +/* dress when approaching the Runner, S/DMA, S/BPM and IH. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_BPMROUTE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_BPMROUTE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_DMAROUTE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_DMAROUTE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RUNNER1ROUTE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RUNNER1ROUTE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RUNNER0ROUTE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RUNNER0ROUTE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_OFFSET ( 0x00000000 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_BBCFG_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_BBCFG_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_BBCFG_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_BBCFG_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_BBCFG_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_BBCFG_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_BBCFG_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_BBCFG_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_BBCFG_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_BBCFG_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_BBCFG_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_BBCFG_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_BBCFG_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_BBCFG_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_BBCFG_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_BBCFG_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_BBCFG_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_BBCFG_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_BBCFG_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_BBCFG_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_BBCFG_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_BBCFG_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_BBCFG_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_BBCFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_route */ + uint32_t bpmroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_route */ + uint32_t dmaroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner1_route */ + uint32_t runner1route : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner0_route */ + uint32_t runner0route : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_BBCFG ; +#else +typedef struct +{ uint32_t runner0route : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner0_route */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t runner1route : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner1_route */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t dmaroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_route */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t bpmroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_route */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_BBCFG ; +#endif + +/*****************************************************************************************/ +/* Broad-Bus_configuration */ +/* Each BBH unit has its own position on the BB tree. This position defines the Route ad */ +/* dress when approaching the Runner, S/DMA, S/BPM and IH. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_SBPMROUTE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_SBPMROUTE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_SDMAROUTE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_SDMAROUTE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_IHROUTE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_IHROUTE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_OFFSET ( 0x00000004 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG1_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_BBCFG1_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_BBCFG1_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG1_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_BBCFG1_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_BBCFG1_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG1_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_BBCFG1_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_BBCFG1_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG1_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_BBCFG1_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_BBCFG1_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG1_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_BBCFG1_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_BBCFG1_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG1_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_BBCFG1_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_BBCFG1_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG1_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_BBCFG1_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_BBCFG1_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_BBCFG1_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_BBCFG1_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG1_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_BBCFG1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_route */ + uint32_t sbpmroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_route */ + uint32_t sdmaroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_route */ + uint32_t ihroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_BBCFG1 ; +#else +typedef struct +{ uint32_t r1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t ihroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_route */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t sdmaroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_route */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t sbpmroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_route */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_BBCFG1 ; +#endif + +/*****************************************************************************************/ +/* DDR_configuration */ +/* The BBH reassembles the incoming data in the DDR. The data is stored in a fixed buffe */ +/* rs structure. This register defines the DDR buffer size and the TM base address in */ +/* the DDR. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_DDRTMBASE_DDRTMBASE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_DDRTMBASE_DDRTMBASE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_BUFSIZE_BUF2K_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_BUFSIZE_BUF2K_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_BUFSIZE_BUF4K_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_BUFSIZE_BUF16K_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_BUFSIZE_R_VALUE ( 0x3 ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_BPMMSG_14_BIT_BN_WIDTH_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_BPMMSG_15_BIT_BN_WIDTH_VALUE ( 0x1 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_OFFSET ( 0x00000008 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DDRCFG_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_DDRCFG_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_DDRCFG_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DDRCFG_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_DDRCFG_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_DDRCFG_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DDRCFG_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_DDRCFG_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_DDRCFG_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DDRCFG_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_DDRCFG_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_DDRCFG_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DDRCFG_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_DDRCFG_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_DDRCFG_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DDRCFG_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_DDRCFG_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_DDRCFG_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DDRCFG_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_DDRCFG_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_DDRCFG_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_DDRCFG_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_DDRCFG_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_DDRCFG_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_DDRCFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DDRTMBASE */ + uint32_t ddrtmbase : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + uint32_t bpmmsg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_buffer_size */ + uint32_t bufsize : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_DDRCFG ; +#else +typedef struct +{ uint32_t bufsize : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + uint32_t bpmmsg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + /* DDR_buffer_size */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t ddrtmbase : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDRTMBASE */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_DDRCFG ; +#endif + +/*****************************************************************************************/ +/* Runner_PD_base_address */ +/* For every reassembled packet in the DDR the BBH writes a packet descriptor (PD) into */ +/* the Runner. The PDs are arranged in a predefined address space in the Runner SRAM and */ +/* managed in a cyclic FIFO style. This register defines the base address of this cyc */ +/* lic FIFO. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_PDBASE_DIRECT_PDBASE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDBASE_DIRECT_PDBASE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDBASE_NORMAL_PDBASE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDBASE_NORMAL_PDBASE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_PDBASE_OFFSET ( 0x0000000C ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_PDBASE_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDBASE_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_PDBASE_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_PDBASE_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_PDBASE_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDBASE_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_PDBASE_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_PDBASE_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_PDBASE_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDBASE_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_PDBASE_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_PDBASE_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_PDBASE_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDBASE_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_PDBASE_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_PDBASE_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_PDBASE_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDBASE_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_PDBASE_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_PDBASE_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_PDBASE_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDBASE_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_PDBASE_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_PDBASE_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_PDBASE_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDBASE_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_PDBASE_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_PDBASE_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_PDBASE_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_PDBASE_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_PDBASE_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_PDBASE_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_PDBASE_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PD_base_address_for_direct_queue */ + uint32_t direct : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_base_address_for_normal_queue */ + uint32_t normal : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_PDBASE ; +#else +typedef struct +{ uint32_t normal : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_base_address_for_normal_queue */ + uint32_t direct : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_base_address_for_direct_queue */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_PDBASE ; +#endif + +/*****************************************************************************************/ +/* Ruuner_PD_size */ +/* For every reassembled packet in the DDR the BBH writes a packet descriptor (PD) into */ +/* the Runner. The PDs are arranged in a predefined address space in the Runner SRAM and */ +/* managed in a cyclic FIFO style. This register defines the size of this cyclic FIFO */ +/* . */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_DIRECT_MIN_VALUE_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_DIRECT_DEFAULT_VALUE ( 0x20 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_DIRECT_DEFAULT_VALUE_RESET_VALUE ( 0x20 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_DIRECT_MAX_VALUE_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_NORMAL_MIN_VALUE_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_NORMAL_DEFAULT_VALUE ( 0x20 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_NORMAL_DEFAULT_VALUE_RESET_VALUE ( 0x20 ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_NORMAL_MAX_VALUE_VALUE ( 0x40 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_OFFSET ( 0x00000010 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDSIZE_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_PDSIZE_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_PDSIZE_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDSIZE_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_PDSIZE_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_PDSIZE_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDSIZE_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_PDSIZE_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_PDSIZE_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDSIZE_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_PDSIZE_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_PDSIZE_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDSIZE_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_PDSIZE_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_PDSIZE_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDSIZE_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_PDSIZE_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_PDSIZE_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDSIZE_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_PDSIZE_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_PDSIZE_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_PDSIZE_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_PDSIZE_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_PDSIZE_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_PDSIZE_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Number_Of_PDs_for_direct_queue */ + uint32_t direct : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Number_Of_PDs_for_normal_queue */ + uint32_t normal : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_PDSIZE ; +#else +typedef struct +{ uint32_t normal : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Number_Of_PDs_for_normal_queue */ + uint32_t r1 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t direct : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Number_Of_PDs_for_direct_queue */ + uint32_t r2 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_PDSIZE ; +#endif + +/*****************************************************************************************/ +/* Runner_task */ +/* For every reassembled packet in the DDR the BBH writes a packet descriptor (PD) into */ +/* the Runner. The PDs are arranged in a predefined address space in the Runner SRAM and */ +/* managed in a cyclic FIFO style. For every PD written into the Runner, the BBH wake */ +/* s the relevantThread. This register defines the Runner thread number for both Runners */ +/* and both queues (normal or direct). */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_DIRECT1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_DIRECT1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_NORMAL1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_NORMAL1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_DIRECT0_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_DIRECT0_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_NORMAL0_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_NORMAL0_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_OFFSET ( 0x00000014 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_RUNNERTASK_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_RUNNERTASK_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_RUNNERTASK_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_RUNNERTASK_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_RUNNERTASK_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_RUNNERTASK_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_RUNNERTASK_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_RUNNERTASK_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_RUNNERTASK_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_RUNNERTASK_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_RUNNERTASK_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_RUNNERTASK_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_RUNNERTASK_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_RUNNERTASK_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Direct_1_thread */ + uint32_t direct1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Normal_1_thread */ + uint32_t normal1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Direct_0_thread */ + uint32_t direct0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Normal_0_thread */ + uint32_t normal0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK ; +#else +typedef struct +{ uint32_t normal0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Normal_0_thread */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t direct0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Direct_0_thread */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t normal1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Normal_1_thread */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t direct1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Direct_1_thread */ + uint32_t r4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK ; +#endif + +/*****************************************************************************************/ +/* DMA_address_configuration */ +/* The BBH reassembles the incoming data in the DDR. The Data is written into the DDR us */ +/* ing the DMA. The data is organized in a configurable number of chunks of 128 bytes. */ +/* The BBH arranges the written data in the DMA in these chunks. It arranges the data in */ +/* a predefined address space in the DMA memory and manages the chunks in a cyclic FIFO */ +/* style. For every write chunk the BBH writes a write descriptor. The write descripto */ +/* rs are arranged in a predefined space in the DMA memory and managed in a cyclic FIFO */ +/* style as well. This register defines the Data and descriptors base addresses. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_DESCBASE_BASEADDR_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_DESCBASE_BASEADDR_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_DATABASE_BASEADDR_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_DATABASE_BASEADDR_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_OFFSET ( 0x00000018 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMAADDR_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_DMAADDR_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_DMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMAADDR_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_DMAADDR_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_DMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMAADDR_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_DMAADDR_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_DMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMAADDR_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_DMAADDR_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_DMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMAADDR_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_DMAADDR_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_DMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMAADDR_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_DMAADDR_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_DMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMAADDR_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_DMAADDR_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_DMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_DMAADDR_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_DMAADDR_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_DMAADDR_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_DMAADDR_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Descriptor_base_address */ + uint32_t descbase : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Data_base_address */ + uint32_t database : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_DMAADDR ; +#else +typedef struct +{ uint32_t database : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Data_base_address */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t descbase : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Descriptor_base_address */ + uint32_t r2 : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_DMAADDR ; +#endif + +/*****************************************************************************************/ +/* DMA_configuration */ +/* The BBH reassembles the incoming data in the DDR. The Data is written into the DDR us */ +/* ing the DMA. The data is organized in a configurable number of chunks of 128 bytes. */ +/* The BBH arranges the written data in the DMA in these chunks. It arranges the data in */ +/* a predefined address space in the DMA memory and manages the chunks in a cyclic FIFO */ +/* style. For every write chunk the BBH writes a write descriptor. The write descripto */ +/* rs are arranged in a predefined space in the DMA memory and managed in a cyclic FIFO */ +/* style as well. The BBH handles the congestion over the DMA write chunks according */ +/* to 2 priorities (low + high, exclusive). This field defines the number of occupied wr */ +/* ite chunks for dropping normal or high priority packets. If the number of occupied ch */ +/* unk is lower than this threshold, then all packets are passed. If the number of occup */ +/* ied chunk is equal or higher than this threshold, then only exclusive priority packet */ +/* s are passed. This register defines the Data and descriptors FIFO sizes and the ex */ +/* clusive threshold. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_EXCLTH_MIN_VALUE_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_EXCLTH_DEFAULT_VALUE ( 0x8 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_EXCLTH_DEFAULT_VALUE_RESET_VALUE ( 0x8 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_EXCLTH_MAX_VALUE_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_NUMOFCD_MIN_VALUE_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_NUMOFCD_DEFAULT_VALUE ( 0x10 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_NUMOFCD_DEFAULT_VALUE_RESET_VALUE ( 0x10 ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_NUMOFCD_MAX_VALUE_VALUE ( 0x40 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_OFFSET ( 0x0000001C ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_DMACFG_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMACFG_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_DMACFG_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_DMACFG_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_DMACFG_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMACFG_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_DMACFG_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_DMACFG_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_DMACFG_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMACFG_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_DMACFG_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_DMACFG_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_DMACFG_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMACFG_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_DMACFG_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_DMACFG_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_DMACFG_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMACFG_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_DMACFG_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_DMACFG_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_DMACFG_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMACFG_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_DMACFG_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_DMACFG_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_DMACFG_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMACFG_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_DMACFG_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_DMACFG_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_DMACFG_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_DMACFG_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_DMACFG_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_DMACFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Exclusive_threshold */ + uint32_t exclth : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Number_of_Chunk-Descriptors */ + uint32_t numofcd : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_DMACFG ; +#else +typedef struct +{ uint32_t numofcd : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Number_of_Chunk-Descriptors */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t exclth : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Exclusive_threshold */ + uint32_t r2 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_DMACFG ; +#endif + +/*****************************************************************************************/ +/* SDMA_address_configuration */ +/* The BBH reassembles the incoming data in the SRAM. The Data is written into the SRAM */ +/* using the SDMA. The data is organized in a configurable number of chunks of 128 bytes */ +/* . The BBH arranges the written data in the SDMA in these chunks. It arranges the dat */ +/* a in a predefined address space in the SDMA memory and manages the chunks in a cyclic */ +/* FIFO style. For every write chunk the BBH writes a write descriptor. The write desc */ +/* riptors are arranged in a predefined space in the SDMA memory and managed in a cyclic */ +/* FIFO style as well. This register defines the Data and descriptors base addresses. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DESCBASE_BASEADDR_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DESCBASE_BASEADDR_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DATABASE_BASEADDR_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DATABASE_BASEADDR_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_OFFSET ( 0x00000020 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_SDMAADDR_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_SDMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_SDMAADDR_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_SDMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_SDMAADDR_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_SDMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_SDMAADDR_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_SDMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_SDMAADDR_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_SDMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_SDMAADDR_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_SDMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_SDMAADDR_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_SDMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Descriptor_base_address */ + uint32_t descbase : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Data_base_address */ + uint32_t database : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_SDMAADDR ; +#else +typedef struct +{ uint32_t database : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Data_base_address */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t descbase : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Descriptor_base_address */ + uint32_t r2 : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_SDMAADDR ; +#endif + +/*****************************************************************************************/ +/* SDMA_configuration */ +/* The BBH reassembles the incoming data in the SRAM. The Data is written into the SRAM */ +/* using the SDMA. The data is organized in a configurable number of chunks of 128 bytes */ +/* . The BBH arranges the written data in the SDMA in these chunks. It arranges the dat */ +/* a in a predefined address space in the SDMA memory and manages the chunks in a cyclic */ +/* FIFO style. For every write chunk the BBH writes a write descriptor. The write desc */ +/* riptors are arranged in a predefined space in the SDMA memory and managed in a cyclic */ +/* FIFO style as well. The BBH handles the congestion over the SDMA write chunks acc */ +/* ording to 2 priorities (low + high, exclusive). This field defines the number of occu */ +/* pied write chunks for dropping normal or high priority packets. If the number of occu */ +/* pied chunk is lower than this threshold, then all packets are passed. If the number o */ +/* f occupied chunk is equal or higher than this threshold, then only exclusive priority */ +/* packets are passed. This register defines the Data and descriptors FIFO sizes and */ +/* the exclusive threshold. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_EXCLTH_MIN_VALUE_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_EXCLTH_DEFAULT_VALUE ( 0x8 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_EXCLTH_DEFAULT_VALUE_RESET_VALUE ( 0x8 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_EXCLTH_MAX_VALUE_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_NUMOFCD_MIN_VALUE_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_NUMOFCD_DEFAULT_VALUE ( 0x10 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_NUMOFCD_DEFAULT_VALUE_RESET_VALUE ( 0x10 ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_NUMOFCD_MAX_VALUE_VALUE ( 0x40 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_OFFSET ( 0x00000024 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMACFG_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_SDMACFG_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_SDMACFG_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMACFG_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_SDMACFG_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_SDMACFG_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMACFG_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_SDMACFG_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_SDMACFG_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMACFG_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_SDMACFG_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_SDMACFG_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMACFG_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_SDMACFG_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_SDMACFG_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMACFG_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_SDMACFG_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_SDMACFG_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMACFG_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_SDMACFG_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_SDMACFG_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_SDMACFG_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_SDMACFG_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_SDMACFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Exclusive_threshold */ + uint32_t exclth : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Number_of_Chunk-Descriptors */ + uint32_t numofcd : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_SDMACFG ; +#else +typedef struct +{ uint32_t numofcd : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Number_of_Chunk-Descriptors */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t exclth : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Exclusive_threshold */ + uint32_t r2 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_SDMACFG ; +#endif + +/*****************************************************************************************/ +/* Minimum_Packet_size */ +/* There are 4 global configuration for Minimum packet size. Each flow can get one out o */ +/* f these 4 global configurations. Packets shorter than this threshold will be discard */ +/* ed. Min packet size should keep the following restriction: Min packet size < 128 – */ +/* SOP offset */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT3_MINPKT_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT3_MINPKT_VALUE_RESET_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT3_MAX_VALUE_VALUE ( 0x60 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT2_MINPKT_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT2_MINPKT_VALUE_RESET_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT2_MAX_VALUE_VALUE ( 0x60 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT1_MINPKT_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT1_MINPKT_VALUE_RESET_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT1_MAX_VALUE_VALUE ( 0x60 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT0_MINPKT_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT0_MINPKT_VALUE_RESET_VALUE ( 0x40 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT0_MAX_VALUE_VALUE ( 0x60 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_OFFSET ( 0x00000028 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKT0_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MINPKT0_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MINPKT0_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKT0_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MINPKT0_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MINPKT0_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKT0_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MINPKT0_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MINPKT0_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKT0_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MINPKT0_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MINPKT0_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKT0_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MINPKT0_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MINPKT0_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKT0_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MINPKT0_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MINPKT0_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKT0_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MINPKT0_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MINPKT0_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_MINPKT0_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_MINPKT0_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_MINPKT0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Minimum_Packet_3 */ + uint32_t minpkt3 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_Packet_2 */ + uint32_t minpkt2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_Packet_1 */ + uint32_t minpkt1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_Packet_0 */ + uint32_t minpkt0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MINPKT0 ; +#else +typedef struct +{ uint32_t minpkt0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_Packet_0 */ + uint32_t minpkt1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_Packet_1 */ + uint32_t minpkt2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_Packet_2 */ + uint32_t minpkt3 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_Packet_3 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MINPKT0 ; +#endif + +/*****************************************************************************************/ +/* Maximum_Packet_size_0 */ +/* There are 4 global configuration for Maximum packet size. Each flow can get one out o */ +/* f these 4 global configurations. Packets longer than this threshold will be discarde */ +/* d. It should not exceed the DDR buffer size and should keep the following restrictio */ +/* n: Max packet size <= DDR buffer size – SOP offset - reassembly offset*8 */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT1_MAXPKT_VALUE ( 0x600 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT1_MAXPKT_VALUE_RESET_VALUE ( 0x600 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT0_MAXPKT_VALUE ( 0x600 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT0_MAXPKT_VALUE_RESET_VALUE ( 0x600 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_OFFSET ( 0x0000002C ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT0_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT0_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT0_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT0_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT0_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT0_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT0_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT0_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT0_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT0_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT0_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT0_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT0_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT0_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_Packet_1 */ + uint32_t maxpkt1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_Packet_0 */ + uint32_t maxpkt0 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MAXPKT0 ; +#else +typedef struct +{ uint32_t maxpkt0 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_Packet_0 */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t maxpkt1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_Packet_1 */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MAXPKT0 ; +#endif + +/*****************************************************************************************/ +/* Maximum_Packet_size_1 */ +/* There are 4 global configuration for Maximum packet size. Each flow can get one out o */ +/* f these 4 global configurations. Packets longer than this threshold will be discarde */ +/* d. It should not exceed the DDR buffer size and should keep the following restrictio */ +/* n: Max packet size <= DDR buffer size – SOP offset - reassembly offset*8 */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT3_MAXPKT_VALUE ( 0x600 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT3_MAXPKT_VALUE_RESET_VALUE ( 0x600 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT2_MAXPKT_VALUE ( 0x600 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT2_MAXPKT_VALUE_RESET_VALUE ( 0x600 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_OFFSET ( 0x00000030 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT1_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT1_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT1_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT1_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT1_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT1_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT1_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT1_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT1_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT1_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT1_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT1_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT1_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT1_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_Packet_3 */ + uint32_t maxpkt3 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_Packet_2 */ + uint32_t maxpkt2 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MAXPKT1 ; +#else +typedef struct +{ uint32_t maxpkt2 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_Packet_2 */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t maxpkt3 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_Packet_3 */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MAXPKT1 ; +#endif + +/*****************************************************************************************/ +/* IH_configuration */ +/* The BBH writes the packets header into the IH. The start of data offset is configurab */ +/* le. The IH has 16 ingress buffer for all ingress ports. This register defines the */ +/* SOP (start of packet) offset and the ingress buffers which are assigned to the BBH. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_IHCFG_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCFG_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCFG_SOPOFFSET_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCFG_SOPOFFSET_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCFG_IHBUFEN_DEFAULT_VALUE ( 0xF ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCFG_IHBUFEN_DEFAULT_VALUE_RESET_VALUE ( 0xF ) + + +#define BBH_RX_GENERAL_CONFIGURATION_IHCFG_OFFSET ( 0x00000034 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCFG_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCFG_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCFG_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCFG_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCFG_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCFG_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCFG_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCFG_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCFG_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCFG_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCFG_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCFG_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCFG_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCFG_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCFG_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCFG_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCFG_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCFG_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCFG_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCFG_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCFG_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCFG_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCFG_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCFG_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCFG_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCFG_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCFG_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCFG_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_IHCFG_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_IHCFG_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_IHCFG_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCFG_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_IHCFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SOP_offset */ + uint32_t sopoffset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_buffer_enable */ + uint32_t ihbufen : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHCFG ; +#else +typedef struct +{ uint32_t ihbufen : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_buffer_enable */ + uint32_t sopoffset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SOP_offset */ + uint32_t r1 : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHCFG ; +#endif + +/*****************************************************************************************/ +/* Flow_control_configuration */ +/* The BBH manages a flow control indication towards the Ethernet MAC with the following */ +/* considerations: - According to the level of the DDR and/or SRAM allocated buffers */ +/* (status from the BPM). - According to a FW request. This register defines which */ +/* of the above will be considerred (may consider more than one). */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_DMADROPEN_DISABLE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_DMADROPEN_ENABLE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_DMADROPEN_ENABLE_VALUE_RESET_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SBPMDROPEN_DISABLE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SBPMDROPEN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SBPMDROPEN_ENABLE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_BPMDROPEN_DISABLE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_BPMDROPEN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_BPMDROPEN_ENABLE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_RUNNEREN_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_RUNNEREN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SBPMEN_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SBPMEN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_BPMEN_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_BPMEN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_OFFSET ( 0x00000038 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_FLOWCTRL_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_FLOWCTRL_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_FLOWCTRL_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_FLOWCTRL_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_FLOWCTRL_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_FLOWCTRL_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_FLOWCTRL_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_FLOWCTRL_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_FLOWCTRL_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_FLOWCTRL_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_FLOWCTRL_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_FLOWCTRL_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_FLOWCTRL_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_FLOWCTRL_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 21 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_drop_enable */ + uint32_t dmadropen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_drop_enable */ + uint32_t sbpmdropen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_drop_enable */ + uint32_t bpmdropen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_enable */ + uint32_t runneren : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_enable */ + uint32_t sbpmen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_enable */ + uint32_t bpmen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL ; +#else +typedef struct +{ uint32_t bpmen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_enable */ + uint32_t sbpmen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_enable */ + uint32_t runneren : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_enable */ + uint32_t r1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t bpmdropen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_drop_enable */ + uint32_t sbpmdropen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_drop_enable */ + uint32_t dmadropen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_drop_enable */ + uint32_t r2 : 21 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL ; +#endif + +/*****************************************************************************************/ +/* Per_flow_threshold. */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the threshold (x). */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_FLOWTH_DEFAULT_VALUE ( 0x20 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_FLOWTH_DEFAULT_VALUE_RESET_VALUE ( 0x20 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_FLOWTH_MIN_VALUE_VALUE ( 0x20 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_FLOWTH_MAX_VALUE_VALUE ( 0xFF ) + + +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_OFFSET ( 0x0000003C ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWTH_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWTH_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWTH_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWTH_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWTH_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWTH_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWTH_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWTH_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWTH_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWTH_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWTH_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWTH_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWTH_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWTH_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r3 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_threshold */ + uint32_t flowth : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH ; +#else +typedef struct +{ uint32_t flowth : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_threshold */ + uint32_t r3 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH ; +#endif + +/*****************************************************************************************/ +/* Per_flow_sets. */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the 2 sets of the gen */ +/* eral configurations. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OVERRIDE1_NO_OVERRIDE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OVERRIDE1_NO_OVERRIDE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OVERRIDE1_OVERRIDE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_IHCLASS1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_IHCLASS1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL1_GLOBAL_0_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL1_GLOBAL_0_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL1_GLOBAL_1_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL1_GLOBAL_2_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL1_GLOBAL_3_VALUE ( 0x3 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL1_GLOBAL_0_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL1_GLOBAL_0_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL1_GLOBAL_1_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL1_GLOBAL_2_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL1_GLOBAL_3_VALUE ( 0x3 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OVERRIDE0_NO_OVERRIDE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OVERRIDE0_NO_OVERRIDE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OVERRIDE0_OVERRIDE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_IHCLASS0_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_IHCLASS0_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL0_GLOBAL_0_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL0_GLOBAL_0_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL0_GLOBAL_1_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL0_GLOBAL_2_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL0_GLOBAL_3_VALUE ( 0x3 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL0_GLOBAL_0_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL0_GLOBAL_0_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL0_GLOBAL_1_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL0_GLOBAL_2_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL0_GLOBAL_3_VALUE ( 0x3 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OFFSET ( 0x00000040 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWSETS_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWSETS_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWSETS_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWSETS_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWSETS_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWSETS_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWSETS_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWSETS_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWSETS_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWSETS_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWSETS_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWSETS_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWSETS_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWSETS_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_override */ + uint32_t override1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_number */ + uint32_t ihclass1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_packet_size_select_1 */ + uint32_t maxpktsel1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_packet_size_select_1 */ + uint32_t minpktsel1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_override */ + uint32_t override0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_number */ + uint32_t ihclass0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_packet_size_select_0 */ + uint32_t maxpktsel0 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_packet_size_select_0 */ + uint32_t minpktsel0 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS ; +#else +typedef struct +{ uint32_t minpktsel0 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_packet_size_select_0 */ + uint32_t maxpktsel0 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_packet_size_select_0 */ + uint32_t ihclass0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_number */ + uint32_t override0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_override */ + uint32_t r1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t minpktsel1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_packet_size_select_1 */ + uint32_t maxpktsel1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_packet_size_select_1 */ + uint32_t ihclass1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_number */ + uint32_t override1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_override */ + uint32_t r2 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS ; +#endif + +/*****************************************************************************************/ +/* IH_class_select_0 */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the IH class for flow */ +/* 0-7. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_IHCLASS_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_IHCLASS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_OFFSET ( 0x00000044 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS0_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS0_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS0_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS0_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS0_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS0_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS0_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS0_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS0_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS0_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS0_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS0_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS0_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS0_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_class */ + uint32_t ihclass : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHCLASS0 ; +#else +typedef struct +{ uint32_t ihclass : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHCLASS0 ; +#endif + +/*****************************************************************************************/ +/* IH_class_select_1 */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the IH class for flow */ +/* 8-15. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_IHCLASS_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_IHCLASS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_OFFSET ( 0x00000048 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS1_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS1_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS1_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS1_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS1_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS1_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS1_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS1_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS1_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS1_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS1_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS1_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS1_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS1_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_class */ + uint32_t ihclass : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHCLASS1 ; +#else +typedef struct +{ uint32_t ihclass : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHCLASS1 ; +#endif + +/*****************************************************************************************/ +/* IH_class_select_2 */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the IH class for flow */ +/* 16-23. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_IHCLASS_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_IHCLASS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_OFFSET ( 0x0000004C ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS2_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS2_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS2_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS2_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS2_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS2_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS2_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS2_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS2_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS2_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS2_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS2_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS2_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS2_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_class */ + uint32_t ihclass : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHCLASS2 ; +#else +typedef struct +{ uint32_t ihclass : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHCLASS2 ; +#endif + +/*****************************************************************************************/ +/* IH_class_select_3 */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the IH class for flow */ +/* 24-31. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_IHCLASS_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_IHCLASS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_OFFSET ( 0x00000050 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS3_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS3_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS3_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS3_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS3_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS3_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS3_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS3_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS3_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS3_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS3_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS3_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS3_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS3_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_class */ + uint32_t ihclass : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHCLASS3 ; +#else +typedef struct +{ uint32_t ihclass : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHCLASS3 ; +#endif + +/*****************************************************************************************/ +/* IH_class_override */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the IH class select o */ +/* verride for flow 0-31. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_IHOVERRIDE_NO_OVERRIDE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_IHOVERRIDE_NO_OVERRIDE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_IHOVERRIDE_OVERRIDE_VALUE ( 0x1 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_OFFSET ( 0x00000054 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHOVERRIDE_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_IHOVERRIDE_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHOVERRIDE_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_IHOVERRIDE_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHOVERRIDE_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_IHOVERRIDE_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHOVERRIDE_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_IHOVERRIDE_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHOVERRIDE_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_IHOVERRIDE_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHOVERRIDE_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_IHOVERRIDE_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHOVERRIDE_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_IHOVERRIDE_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_class_override */ + uint32_t ihoverride : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE ; +#else +typedef struct +{ uint32_t ihoverride : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_override */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE ; +#endif + +/*****************************************************************************************/ +/* Minimum_packet_select_0 */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the minimum packet si */ +/* ze select for flow 0-15. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_MINPKTSEL_GLOBAL_0_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_MINPKTSEL_GLOBAL_0_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_MINPKTSEL_GLOBAL_1_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_MINPKTSEL_GLOBAL_2_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_MINPKTSEL_GLOBAL_3_VALUE ( 0x3 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_OFFSET ( 0x00000058 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL0_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL0_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL0_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL0_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL0_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL0_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL0_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Mimimum_packet_size_select */ + uint32_t minpktsel : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0 ; +#else +typedef struct +{ uint32_t minpktsel : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Mimimum_packet_size_select */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0 ; +#endif + +/*****************************************************************************************/ +/* Minimum_packet_select_1 */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the minimum packet si */ +/* ze select for flow 16-31. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_MINPKTSEL_GLOBAL_0_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_MINPKTSEL_GLOBAL_0_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_MINPKTSEL_GLOBAL_1_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_MINPKTSEL_GLOBAL_2_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_MINPKTSEL_GLOBAL_3_VALUE ( 0x3 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_OFFSET ( 0x0000005C ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL1_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL1_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL1_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL1_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL1_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL1_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL1_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Mimimum_packet_size_select */ + uint32_t minpktsel : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1 ; +#else +typedef struct +{ uint32_t minpktsel : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Mimimum_packet_size_select */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1 ; +#endif + +/*****************************************************************************************/ +/* Maximum_packet_select_0 */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the maximum packet si */ +/* ze select for flow 0-15. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_MAXPKTSEL_GLOBAL_0_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_MAXPKTSEL_GLOBAL_0_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_MAXPKTSEL_GLOBAL_1_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_MAXPKTSEL_GLOBAL_2_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_MAXPKTSEL_GLOBAL_3_VALUE ( 0x3 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_OFFSET ( 0x00000060 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL0_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL0_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL0_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL0_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL0_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL0_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL0_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Maximum_packet_size_select */ + uint32_t maxpktsel : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0 ; +#else +typedef struct +{ uint32_t maxpktsel : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_packet_size_select */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0 ; +#endif + +/*****************************************************************************************/ +/* Maximum_packet_select_1 */ +/* The DS has 256 flows. There are 4 configuration which are per flow: 1. IH class numb */ +/* er (4 bits) 2. IH class override enable (1 bit) 3. Minimum packet size (2 bits). */ +/* 4. Maximum packet size (2 bits). Flows 0-31 will have full options 9 bit configura */ +/* tions. Flows 32-X will have set 0 configuration (9 global bits). Flows (X+1)-255 wi */ +/* ll have set 1 configurations (additional 9 global bits). X is configurable. For E */ +/* thernet – flow 0 should be configured. This register defines the maximum packet si */ +/* ze select for flow 16-31. */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_MAXPKTSEL_GLOBAL_0_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_MAXPKTSEL_GLOBAL_0_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_MAXPKTSEL_GLOBAL_1_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_MAXPKTSEL_GLOBAL_2_VALUE ( 0x2 ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_MAXPKTSEL_GLOBAL_3_VALUE ( 0x3 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_OFFSET ( 0x00000064 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL1_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL1_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL1_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL1_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL1_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL1_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL1_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Maximum_packet_size_select */ + uint32_t maxpktsel : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1 ; +#else +typedef struct +{ uint32_t maxpktsel : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_packet_size_select */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1 ; +#endif + +/*****************************************************************************************/ +/* PLOAM_configurations */ +/* PLOAM has the following 2 configuration: 1. IH class number (4 bits) 2. IH class o */ +/* verride enable (1 bit) */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_IHOVERRIDE_NO_OVERRIDE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_IHOVERRIDE_NO_OVERRIDE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_IHOVERRIDE_OVERRIDE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_IHCLASS_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_IHCLASS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_OFFSET ( 0x00000068 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_PLOAMCFG_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_PLOAMCFG_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_PLOAMCFG_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_PLOAMCFG_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_PLOAMCFG_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_PLOAMCFG_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_PLOAMCFG_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_PLOAMCFG_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_PLOAMCFG_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_PLOAMCFG_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_PLOAMCFG_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_PLOAMCFG_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_PLOAMCFG_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_PLOAMCFG_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 27 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PLOAM_IH_override */ + uint32_t ihoverride : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PLOAM_IH_class */ + uint32_t ihclass : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG ; +#else +typedef struct +{ uint32_t ihclass : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PLOAM_IH_class */ + uint32_t ihoverride : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PLOAM_IH_override */ + uint32_t r1 : 27 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG ; +#endif + +/*****************************************************************************************/ +/* RX_reset_command */ +/* This register enable reset of internal units (for WA perposes). */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_R_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_R_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_RNRRST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_RNRRST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_RNRRST_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SDMARST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SDMARST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SDMARST_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_DMARST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_DMARST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_DMARST_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CNTXTRST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CNTXTRST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CNTXTRST_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_PWUFIFORST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_PWUFIFORST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_PWUFIFORST_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_RESFIFORST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_RESFIFORST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_RESFIFORST_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SBPMFIFORST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SBPMFIFORST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SBPMFIFORST_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_BPMFIFORST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_BPMFIFORST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_BPMFIFORST_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_REFIFORST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_REFIFORST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_REFIFORST_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_IHBUFEN_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_IHBUFEN_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_IHBUFEN_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_IHCNTXT_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_IHCNTXT_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_IHCNTXT_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_BURSTBUFRST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_BURSTBUFRST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_BURSTBUFRST_RESET_IS_ACTIVE_VALUE ( 0x1 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INBUFRST_RESET_IS_NOT_ACTIVE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INBUFRST_RESET_IS_NOT_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INBUFRST_RESET_IS_ACTIVE_VALUE ( 0x1 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_OFFSET ( 0x0000006C ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_RXRSTRST_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_RXRSTRST_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_RXRSTRST_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_RXRSTRST_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_RXRSTRST_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_RXRSTRST_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_RXRSTRST_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_RXRSTRST_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_RXRSTRST_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_RXRSTRST_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_RXRSTRST_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_RXRSTRST_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_RXRSTRST_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_RXRSTRST_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_write_pointer_reset_command */ + uint32_t rnrrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_write_pointer_reset_command */ + uint32_t sdmarst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_write_pointer_reset_command */ + uint32_t dmarst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_reset_command */ + uint32_t cntxtrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pre_wakeup_FIFO_reset_command */ + uint32_t pwufiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Response_FIFO_reset_command */ + uint32_t resfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_FIFO_reset_command */ + uint32_t sbpmfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_FIFO_reset_command */ + uint32_t bpmfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reassembly_FIFO_reset_command */ + uint32_t refiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_buf_en_reset_command */ + uint32_t ihbufen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_context_reset_command */ + uint32_t ihcntxt : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Burst_buf_reset_command */ + uint32_t burstbufrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Input_buf_reset_command */ + uint32_t inbufrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_RXRSTRST ; +#else +typedef struct +{ uint32_t inbufrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Input_buf_reset_command */ + uint32_t burstbufrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Burst_buf_reset_command */ + uint32_t ihcntxt : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_context_reset_command */ + uint32_t ihbufen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_buf_en_reset_command */ + uint32_t refiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reassembly_FIFO_reset_command */ + uint32_t bpmfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_FIFO_reset_command */ + uint32_t sbpmfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_FIFO_reset_command */ + uint32_t resfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Response_FIFO_reset_command */ + uint32_t pwufiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pre_wakeup_FIFO_reset_command */ + uint32_t cntxtrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_reset_command */ + uint32_t dmarst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_write_pointer_reset_command */ + uint32_t sdmarst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_write_pointer_reset_command */ + uint32_t rnrrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_write_pointer_reset_command */ + uint32_t r : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_RXRSTRST ; +#endif + +/*****************************************************************************************/ +/* RX_debug_select */ +/* Selects one out of 10 possible debug vectors */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_RXDBGSEL_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_RXDBGSEL_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_OFFSET ( 0x00000070 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_RXDBGSEL_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_RXDBGSEL_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_RXDBGSEL_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_RXDBGSEL_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_RXDBGSEL_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_RXDBGSEL_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_RXDBGSEL_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_RXDBGSEL_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_RXDBGSEL_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_RXDBGSEL_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_RXDBGSEL_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_RXDBGSEL_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_RXDBGSEL_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_RXDBGSEL_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RX_debug_select */ + uint32_t rxdbgsel : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL ; +#else +typedef struct +{ uint32_t rxdbgsel : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RX_debug_select */ + uint32_t r1 : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL ; +#endif + +/*****************************************************************************************/ +/* Reassembly_offset */ +/* The BBH writes the packets header into the IH. If the rest of the packet is written i */ +/* nto the DDR, then the address is according to the reassembly offset configurations (t */ +/* his configuration is in 8-bytes resolutions): 128 + 8 * */ +/*****************************************************************************************/ + +#define BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET_MAX_VALUE_VALUE ( 0x32 ) + + +#define BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET ( 0x00000074 ) + +#define BBH_RX_0_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ( BBH_RX_0_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET ) +#define BBH_RX_0_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_READ( r ) READ_32( ( BBH_RX_0_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (r) ) +#define BBH_RX_0_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_WRITE( v ) WRITE_32( ( BBH_RX_0_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (v) ) + +#define BBH_RX_1_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ( BBH_RX_1_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET ) +#define BBH_RX_1_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_READ( r ) READ_32( ( BBH_RX_1_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (r) ) +#define BBH_RX_1_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_WRITE( v ) WRITE_32( ( BBH_RX_1_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (v) ) + +#define BBH_RX_2_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ( BBH_RX_2_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET ) +#define BBH_RX_2_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_READ( r ) READ_32( ( BBH_RX_2_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (r) ) +#define BBH_RX_2_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_WRITE( v ) WRITE_32( ( BBH_RX_2_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (v) ) + +#define BBH_RX_3_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ( BBH_RX_3_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET ) +#define BBH_RX_3_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_READ( r ) READ_32( ( BBH_RX_3_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (r) ) +#define BBH_RX_3_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_WRITE( v ) WRITE_32( ( BBH_RX_3_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (v) ) + +#define BBH_RX_4_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ( BBH_RX_4_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET ) +#define BBH_RX_4_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_READ( r ) READ_32( ( BBH_RX_4_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (r) ) +#define BBH_RX_4_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_WRITE( v ) WRITE_32( ( BBH_RX_4_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (v) ) + +#define BBH_RX_5_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ( BBH_RX_5_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET ) +#define BBH_RX_5_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_READ( r ) READ_32( ( BBH_RX_5_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (r) ) +#define BBH_RX_5_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_WRITE( v ) WRITE_32( ( BBH_RX_5_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (v) ) + +#define BBH_RX_6_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ( BBH_RX_6_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET ) +#define BBH_RX_6_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_READ( r ) READ_32( ( BBH_RX_6_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (r) ) +#define BBH_RX_6_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_WRITE( v ) WRITE_32( ( BBH_RX_6_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ARRAY [ ] ; + +#define BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_WRITE( i, v ) WRITE_32( BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ARRAY [ i ], (v) ) +#define BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_READ( i, r ) READ_32( BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reassemly_offset */ + uint32_t offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET ; +#else +typedef struct +{ uint32_t offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reassemly_offset */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET ; +#endif + +/*****************************************************************************************/ +/* SOP_after_SOP_error */ +/* This counter counts the packets drop due to SOP after SOP error. This counter is cle */ +/* ared when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_SOPASOP_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_SOPASOP_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_SOPASOP_OFFSET ( 0x00000000 ) + +#define BBH_RX_0_PM_COUNTERS_SOPASOP_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_SOPASOP_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_SOPASOP_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_SOPASOP_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_SOPASOP_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_SOPASOP_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_SOPASOP_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_SOPASOP_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_SOPASOP_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_SOPASOP_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_SOPASOP_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_SOPASOP_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_SOPASOP_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_SOPASOP_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_SOPASOP_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_SOPASOP_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_SOPASOP_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_SOPASOP_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_SOPASOP_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_SOPASOP_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_SOPASOP_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_SOPASOP_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_SOPASOP_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_SOPASOP_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_SOPASOP_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_SOPASOP_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_SOPASOP_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_SOPASOP_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_SOPASOP_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_SOPASOP_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_SOPASOP_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_SOPASOP_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_SOPASOP_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_SOPASOP_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_SOPASOP_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_SOPASOP_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_SOPASOP_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_SOPASOP_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_SOPASOP_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_SOPASOP_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_SOPASOP_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_SOPASOP_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_SOPASOP_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_SOPASOP_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_SOPASOP_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_SOPASOP_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_SOPASOP_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_SOPASOP ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_SOPASOP ; +#endif + +/*****************************************************************************************/ +/* Third_flow_error */ +/* This counter counts the packets drop due to Third flow error. This counter is cleare */ +/* d when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_THIRDFLOW_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_THIRDFLOW_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_THIRDFLOW_OFFSET ( 0x00000004 ) + +#define BBH_RX_0_PM_COUNTERS_THIRDFLOW_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_THIRDFLOW_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_THIRDFLOW_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_THIRDFLOW_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_THIRDFLOW_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_THIRDFLOW_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_THIRDFLOW_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_THIRDFLOW_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_THIRDFLOW_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_THIRDFLOW_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_THIRDFLOW_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_THIRDFLOW_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_THIRDFLOW_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_THIRDFLOW_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_THIRDFLOW_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_THIRDFLOW_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_THIRDFLOW_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_THIRDFLOW_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_THIRDFLOW_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_THIRDFLOW_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_THIRDFLOW_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_THIRDFLOW_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_THIRDFLOW_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_THIRDFLOW_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_THIRDFLOW_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_THIRDFLOW_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_THIRDFLOW_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_THIRDFLOW_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_THIRDFLOW_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_THIRDFLOW_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_THIRDFLOW_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_THIRDFLOW_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_THIRDFLOW_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_THIRDFLOW_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_THIRDFLOW_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_THIRDFLOW_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_THIRDFLOW_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_THIRDFLOW_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_THIRDFLOW_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_THIRDFLOW_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_THIRDFLOW_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_THIRDFLOW_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_THIRDFLOW_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_THIRDFLOW_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_THIRDFLOW_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_THIRDFLOW_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_THIRDFLOW_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_THIRDFLOW ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_THIRDFLOW ; +#endif + +/*****************************************************************************************/ +/* Incoming_packets */ +/* This counter counts the number of incoming good packets. It counts the packets from */ +/* all flows together. This counter is cleared when read and freezes when reaches the m */ +/* aximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_INPKT_INPKT_GOOD_PACKETS_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_INPKT_INPKT_GOOD_PACKETS_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_INPKT_OFFSET ( 0x00000008 ) + +#define BBH_RX_0_PM_COUNTERS_INPKT_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_INPKT_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_INPKT_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_INPKT_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_INPKT_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_INPKT_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_INPKT_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_INPKT_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_INPKT_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_INPKT_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_INPKT_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_INPKT_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_INPKT_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_INPKT_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_INPKT_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_INPKT_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_INPKT_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_INPKT_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_INPKT_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_INPKT_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_INPKT_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_INPKT_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_INPKT_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_INPKT_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_INPKT_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_INPKT_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_INPKT_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_INPKT_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_INPKT_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_INPKT_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_INPKT_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_INPKT_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_INPKT_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_INPKT_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_INPKT_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_INPKT_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_INPKT_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_INPKT_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_INPKT_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_INPKT_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_INPKT_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_INPKT_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_INPKT_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_INPKT_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_INPKT_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_INPKT_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_INPKT_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Incoming_packets */ + uint32_t inpkt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_INPKT ; +#else +typedef struct +{ uint32_t inpkt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Incoming_packets */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_INPKT ; +#endif + +/*****************************************************************************************/ +/* Too_short_error */ +/* This counter counts the packets drop due to Too short error. This counter is cleared */ +/* when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_TOOSHORT_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_TOOSHORT_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_TOOSHORT_OFFSET ( 0x0000000C ) + +#define BBH_RX_0_PM_COUNTERS_TOOSHORT_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOSHORT_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_TOOSHORT_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_TOOSHORT_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_TOOSHORT_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_TOOSHORT_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_TOOSHORT_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOSHORT_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_TOOSHORT_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_TOOSHORT_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_TOOSHORT_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_TOOSHORT_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_TOOSHORT_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOSHORT_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_TOOSHORT_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_TOOSHORT_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_TOOSHORT_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_TOOSHORT_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_TOOSHORT_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOSHORT_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_TOOSHORT_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_TOOSHORT_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_TOOSHORT_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_TOOSHORT_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_TOOSHORT_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOSHORT_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_TOOSHORT_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_TOOSHORT_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_TOOSHORT_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_TOOSHORT_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_TOOSHORT_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOSHORT_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_TOOSHORT_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_TOOSHORT_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_TOOSHORT_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_TOOSHORT_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_TOOSHORT_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOSHORT_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_TOOSHORT_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_TOOSHORT_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_TOOSHORT_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_TOOSHORT_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_TOOSHORT_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_TOOSHORT_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_TOOSHORT_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_TOOSHORT_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_TOOSHORT_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_TOOSHORT ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_TOOSHORT ; +#endif + +/*****************************************************************************************/ +/* Too_long_error */ +/* This counter counts the packets drop due to Too long error. This counter is cleared */ +/* when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_TOOLONG_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_TOOLONG_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_TOOLONG_OFFSET ( 0x00000010 ) + +#define BBH_RX_0_PM_COUNTERS_TOOLONG_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOLONG_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_TOOLONG_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_TOOLONG_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_TOOLONG_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_TOOLONG_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_TOOLONG_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOLONG_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_TOOLONG_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_TOOLONG_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_TOOLONG_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_TOOLONG_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_TOOLONG_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOLONG_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_TOOLONG_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_TOOLONG_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_TOOLONG_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_TOOLONG_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_TOOLONG_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOLONG_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_TOOLONG_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_TOOLONG_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_TOOLONG_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_TOOLONG_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_TOOLONG_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOLONG_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_TOOLONG_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_TOOLONG_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_TOOLONG_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_TOOLONG_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_TOOLONG_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOLONG_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_TOOLONG_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_TOOLONG_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_TOOLONG_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_TOOLONG_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_TOOLONG_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOLONG_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_TOOLONG_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_TOOLONG_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_TOOLONG_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_TOOLONG_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_TOOLONG_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_TOOLONG_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_TOOLONG_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_TOOLONG_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_TOOLONG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_TOOLONG ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_TOOLONG ; +#endif + +/*****************************************************************************************/ +/* CRC_error */ +/* This counter counts the packets drop due to CRC error. This counter is cleared when */ +/* read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_CRCERROR_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_CRCERROR_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_CRCERROR_OFFSET ( 0x00000014 ) + +#define BBH_RX_0_PM_COUNTERS_CRCERROR_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERROR_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_CRCERROR_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_CRCERROR_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_CRCERROR_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_CRCERROR_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_CRCERROR_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERROR_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_CRCERROR_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_CRCERROR_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_CRCERROR_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_CRCERROR_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_CRCERROR_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERROR_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_CRCERROR_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_CRCERROR_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_CRCERROR_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_CRCERROR_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_CRCERROR_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERROR_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_CRCERROR_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_CRCERROR_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_CRCERROR_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_CRCERROR_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_CRCERROR_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERROR_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_CRCERROR_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_CRCERROR_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_CRCERROR_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_CRCERROR_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_CRCERROR_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERROR_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_CRCERROR_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_CRCERROR_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_CRCERROR_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_CRCERROR_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_CRCERROR_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERROR_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_CRCERROR_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_CRCERROR_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_CRCERROR_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_CRCERROR_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_CRCERROR_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_CRCERROR_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_CRCERROR_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_CRCERROR_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_CRCERROR_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_CRCERROR ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_CRCERROR ; +#endif + +/*****************************************************************************************/ +/* IPTV_error */ +/* This counter counts the packets drop due to IPTV error. This counter is cleared when */ +/* read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_IPTV_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_IPTV_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_IPTV_OFFSET ( 0x00000018 ) + +#define BBH_RX_0_PM_COUNTERS_IPTV_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IPTV_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_IPTV_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_IPTV_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_IPTV_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_IPTV_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_IPTV_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IPTV_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_IPTV_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_IPTV_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_IPTV_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_IPTV_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_IPTV_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IPTV_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_IPTV_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_IPTV_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_IPTV_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_IPTV_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_IPTV_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IPTV_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_IPTV_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_IPTV_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_IPTV_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_IPTV_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_IPTV_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IPTV_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_IPTV_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_IPTV_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_IPTV_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_IPTV_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_IPTV_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IPTV_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_IPTV_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_IPTV_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_IPTV_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_IPTV_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_IPTV_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IPTV_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_IPTV_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_IPTV_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_IPTV_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_IPTV_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_IPTV_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_IPTV_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_IPTV_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_IPTV_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_IPTV_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_IPTV ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_IPTV ; +#endif + +/*****************************************************************************************/ +/* Runner_congestion_error */ +/* This counter counts the packets drop due to Runner congestion error. This counter is */ +/* cleared when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_RUNNERCONG_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_RUNNERCONG_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_RUNNERCONG_OFFSET ( 0x0000001C ) + +#define BBH_RX_0_PM_COUNTERS_RUNNERCONG_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_RUNNERCONG_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_RUNNERCONG_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_RUNNERCONG_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_RUNNERCONG_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_RUNNERCONG_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_RUNNERCONG_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_RUNNERCONG_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_RUNNERCONG_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_RUNNERCONG_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_RUNNERCONG_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_RUNNERCONG_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_RUNNERCONG_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_RUNNERCONG_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_RUNNERCONG_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_RUNNERCONG_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_RUNNERCONG_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_RUNNERCONG_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_RUNNERCONG_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_RUNNERCONG_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_RUNNERCONG_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_RUNNERCONG_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_RUNNERCONG_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_RUNNERCONG_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_RUNNERCONG_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_RUNNERCONG_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_RUNNERCONG_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_RUNNERCONG_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_RUNNERCONG_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_RUNNERCONG_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_RUNNERCONG_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_RUNNERCONG_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_RUNNERCONG_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_RUNNERCONG_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_RUNNERCONG_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_RUNNERCONG_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_RUNNERCONG_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_RUNNERCONG_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_RUNNERCONG_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_RUNNERCONG_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_RUNNERCONG_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_RUNNERCONG_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_RUNNERCONG_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_RUNNERCONG_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_RUNNERCONG_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_RUNNERCONG_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_RUNNERCONG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_RUNNERCONG ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_RUNNERCONG ; +#endif + +/*****************************************************************************************/ +/* No_BPM_BN_error */ +/* This counter counts the packets drop due to No BPM BN error. This counter is cleared */ +/* when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_NOBPMBN_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_NOBPMBN_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_NOBPMBN_OFFSET ( 0x00000020 ) + +#define BBH_RX_0_PM_COUNTERS_NOBPMBN_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBN_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_NOBPMBN_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_NOBPMBN_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_NOBPMBN_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_NOBPMBN_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_NOBPMBN_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBN_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_NOBPMBN_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_NOBPMBN_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_NOBPMBN_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_NOBPMBN_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_NOBPMBN_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBN_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_NOBPMBN_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_NOBPMBN_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_NOBPMBN_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_NOBPMBN_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_NOBPMBN_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBN_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_NOBPMBN_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_NOBPMBN_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_NOBPMBN_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_NOBPMBN_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_NOBPMBN_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBN_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_NOBPMBN_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_NOBPMBN_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_NOBPMBN_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_NOBPMBN_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_NOBPMBN_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBN_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_NOBPMBN_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_NOBPMBN_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_NOBPMBN_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_NOBPMBN_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_NOBPMBN_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBN_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_NOBPMBN_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_NOBPMBN_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_NOBPMBN_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_NOBPMBN_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_NOBPMBN_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_NOBPMBN_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_NOBPMBN_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_NOBPMBN_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_NOBPMBN_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_NOBPMBN ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_NOBPMBN ; +#endif + +/*****************************************************************************************/ +/* NO_SBPM_SBN_error */ +/* This counter counts the packets drop due to NO SBPM SBN error. This counter is clear */ +/* ed when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_NOSBPMSBN_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_NOSBPMSBN_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_NOSBPMSBN_OFFSET ( 0x00000024 ) + +#define BBH_RX_0_PM_COUNTERS_NOSBPMSBN_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSBPMSBN_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_NOSBPMSBN_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_NOSBPMSBN_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_NOSBPMSBN_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSBPMSBN_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_NOSBPMSBN_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_NOSBPMSBN_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_NOSBPMSBN_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSBPMSBN_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_NOSBPMSBN_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_NOSBPMSBN_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_NOSBPMSBN_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSBPMSBN_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_NOSBPMSBN_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_NOSBPMSBN_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_NOSBPMSBN_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSBPMSBN_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_NOSBPMSBN_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_NOSBPMSBN_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_NOSBPMSBN_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSBPMSBN_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_NOSBPMSBN_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_NOSBPMSBN_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_NOSBPMSBN_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSBPMSBN_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_NOSBPMSBN_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_NOSBPMSBN_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_NOSBPMSBN_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_NOSBPMSBN_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_NOSBPMSBN_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_NOSBPMSBN_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_NOSBPMSBN_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_NOSBPMSBN ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_NOSBPMSBN ; +#endif + +/*****************************************************************************************/ +/* No_DMA_CD_error */ +/* This counter counts the packets drop due to No DMA CD error. This counter is cleared */ +/* when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_NODMACD_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_NODMACD_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_NODMACD_OFFSET ( 0x00000028 ) + +#define BBH_RX_0_PM_COUNTERS_NODMACD_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NODMACD_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_NODMACD_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_NODMACD_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_NODMACD_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_NODMACD_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_NODMACD_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NODMACD_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_NODMACD_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_NODMACD_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_NODMACD_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_NODMACD_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_NODMACD_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NODMACD_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_NODMACD_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_NODMACD_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_NODMACD_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_NODMACD_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_NODMACD_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NODMACD_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_NODMACD_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_NODMACD_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_NODMACD_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_NODMACD_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_NODMACD_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NODMACD_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_NODMACD_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_NODMACD_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_NODMACD_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_NODMACD_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_NODMACD_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NODMACD_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_NODMACD_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_NODMACD_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_NODMACD_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_NODMACD_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_NODMACD_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NODMACD_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_NODMACD_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_NODMACD_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_NODMACD_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_NODMACD_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_NODMACD_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_NODMACD_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_NODMACD_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_NODMACD_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_NODMACD_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_NODMACD ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_NODMACD ; +#endif + +/*****************************************************************************************/ +/* No_SDMA_CD_error */ +/* This counter counts the packets drop due to No SDMA CD error. This counter is cleare */ +/* d when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_NOSDMACD_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_NOSDMACD_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_NOSDMACD_OFFSET ( 0x0000002C ) + +#define BBH_RX_0_PM_COUNTERS_NOSDMACD_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSDMACD_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_NOSDMACD_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_NOSDMACD_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_NOSDMACD_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_NOSDMACD_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_NOSDMACD_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSDMACD_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_NOSDMACD_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_NOSDMACD_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_NOSDMACD_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_NOSDMACD_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_NOSDMACD_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSDMACD_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_NOSDMACD_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_NOSDMACD_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_NOSDMACD_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_NOSDMACD_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_NOSDMACD_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSDMACD_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_NOSDMACD_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_NOSDMACD_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_NOSDMACD_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_NOSDMACD_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_NOSDMACD_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSDMACD_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_NOSDMACD_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_NOSDMACD_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_NOSDMACD_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_NOSDMACD_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_NOSDMACD_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSDMACD_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_NOSDMACD_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_NOSDMACD_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_NOSDMACD_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_NOSDMACD_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_NOSDMACD_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSDMACD_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_NOSDMACD_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_NOSDMACD_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_NOSDMACD_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_NOSDMACD_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_NOSDMACD_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_NOSDMACD_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_NOSDMACD_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_NOSDMACD_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_NOSDMACD_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_NOSDMACD ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_NOSDMACD ; +#endif + +/*****************************************************************************************/ +/* IH_drop_ploam_error */ +/* This counter counts the PLOAMs drop due to Runner congestion or IPTV errors. This co */ +/* unter is cleared when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_IHDROPPLOAM_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_IHDROPPLOAM_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_IHDROPPLOAM_OFFSET ( 0x00000030 ) + +#define BBH_RX_0_PM_COUNTERS_IHDROPPLOAM_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IHDROPPLOAM_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_IHDROPPLOAM_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_IHDROPPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_IHDROPPLOAM_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IHDROPPLOAM_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_IHDROPPLOAM_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_IHDROPPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_IHDROPPLOAM_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IHDROPPLOAM_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_IHDROPPLOAM_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_IHDROPPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_IHDROPPLOAM_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IHDROPPLOAM_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_IHDROPPLOAM_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_IHDROPPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_IHDROPPLOAM_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IHDROPPLOAM_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_IHDROPPLOAM_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_IHDROPPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_IHDROPPLOAM_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IHDROPPLOAM_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_IHDROPPLOAM_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_IHDROPPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_IHDROPPLOAM_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IHDROPPLOAM_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_IHDROPPLOAM_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_IHDROPPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_IHDROPPLOAM_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_IHDROPPLOAM_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_IHDROPPLOAM_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_IHDROPPLOAM_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_IHDROPPLOAM_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_IHDROPPLOAM ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_IHDROPPLOAM ; +#endif + +/*****************************************************************************************/ +/* No_BPM_BN_PLOAM_error */ +/* This counter counts the PLOAMs drop due to No BPM BN error. This counter is cleared */ +/* when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_OFFSET ( 0x00000034 ) + +#define BBH_RX_0_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_NOBPMBNPLOAM_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_NOBPMBNPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_NOBPMBNPLOAM_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_NOBPMBNPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_NOBPMBNPLOAM_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_NOBPMBNPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_NOBPMBNPLOAM_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_NOBPMBNPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_NOBPMBNPLOAM_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_NOBPMBNPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_NOBPMBNPLOAM_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_NOBPMBNPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_NOBPMBNPLOAM_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_NOBPMBNPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_NOBPMBNPLOAM ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_NOBPMBNPLOAM ; +#endif + +/*****************************************************************************************/ +/* CRC_PLOAM_error */ +/* This counter counts the PLOAMs drop due to CRC error. This counter is cleared when r */ +/* ead and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_CRCERRORPLOAM_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_CRCERRORPLOAM_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_CRCERRORPLOAM_OFFSET ( 0x00000038 ) + +#define BBH_RX_0_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERRORPLOAM_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_CRCERRORPLOAM_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_CRCERRORPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERRORPLOAM_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_CRCERRORPLOAM_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_CRCERRORPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERRORPLOAM_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_CRCERRORPLOAM_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_CRCERRORPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERRORPLOAM_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_CRCERRORPLOAM_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_CRCERRORPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERRORPLOAM_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_CRCERRORPLOAM_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_CRCERRORPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERRORPLOAM_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_CRCERRORPLOAM_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_CRCERRORPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERRORPLOAM_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_CRCERRORPLOAM_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_CRCERRORPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_CRCERRORPLOAM_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_CRCERRORPLOAM_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_CRCERRORPLOAM_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_CRCERRORPLOAM_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_CRCERRORPLOAM_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_CRCERRORPLOAM ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_CRCERRORPLOAM ; +#endif + +/*****************************************************************************************/ +/* Epon_sync_fifo_overrun */ +/* This counter counts the events of EPON sync FIFO overrun. This counter is cleared wh */ +/* en read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_EPNFIFOVERUN_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_EPNFIFOVERUN_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_EPNFIFOVERUN_OFFSET ( 0x0000003C ) + +#define BBH_RX_0_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVERUN_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_EPNFIFOVERUN_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_EPNFIFOVERUN_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVERUN_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_EPNFIFOVERUN_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_EPNFIFOVERUN_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVERUN_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_EPNFIFOVERUN_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_EPNFIFOVERUN_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVERUN_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_EPNFIFOVERUN_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_EPNFIFOVERUN_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVERUN_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_EPNFIFOVERUN_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_EPNFIFOVERUN_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVERUN_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_EPNFIFOVERUN_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_EPNFIFOVERUN_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVERUN_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_EPNFIFOVERUN_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_EPNFIFOVERUN_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_EPNFIFOVERUN_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_EPNFIFOVERUN_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_EPNFIFOVERUN_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_EPNFIFOVERUN_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_EPNFIFOVERUN_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_EPNFIFOVERUN ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_EPNFIFOVERUN ; +#endif + +/*****************************************************************************************/ +/* Epon_sync_fifo_overrun_hdr */ +/* This counter counts the events of EPON sync FIFO overrun when header arrives. This c */ +/* ounter is cleared when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_OFFSET ( 0x00000040 ) + +#define BBH_RX_0_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_EPNFIFOVRNHDR_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_EPNFIFOVRNHDR_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_EPNFIFOVRNHDR_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_EPNFIFOVRNHDR_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_EPNFIFOVRNHDR_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_EPNFIFOVRNHDR_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_EPNFIFOVRNHDR_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_EPNFIFOVRNHDR_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_EPNFIFOVRNHDR_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_EPNFIFOVRNHDR_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_EPNFIFOVRNHDR_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_EPNFIFOVRNHDR_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_EPNFIFOVRNHDR_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_EPNFIFOVRNHDR_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_EPNFIFOVRNHDR_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR ; +#endif + +/*****************************************************************************************/ +/* Epon_type_error */ +/* This counter counts the events of EPON type sequence which is wrong, meaning no sop a */ +/* fter header, or sop/header in the middle of packet (before eop). This counter is cle */ +/* ared when read and freezes when reaches the maximum value. */ +/*****************************************************************************************/ + +#define BBH_RX_PM_COUNTERS_EPONTYPERROR_PMVALUE_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PM_COUNTERS_EPONTYPERROR_PMVALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PM_COUNTERS_EPONTYPERROR_OFFSET ( 0x00000044 ) + +#define BBH_RX_0_PM_COUNTERS_EPONTYPERROR_ADDRESS ( BBH_RX_0_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPONTYPERROR_OFFSET ) +#define BBH_RX_0_PM_COUNTERS_EPONTYPERROR_READ( r ) READ_32( ( BBH_RX_0_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (r) ) +#define BBH_RX_0_PM_COUNTERS_EPONTYPERROR_WRITE( v ) WRITE_32( ( BBH_RX_0_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (v) ) + +#define BBH_RX_1_PM_COUNTERS_EPONTYPERROR_ADDRESS ( BBH_RX_1_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPONTYPERROR_OFFSET ) +#define BBH_RX_1_PM_COUNTERS_EPONTYPERROR_READ( r ) READ_32( ( BBH_RX_1_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (r) ) +#define BBH_RX_1_PM_COUNTERS_EPONTYPERROR_WRITE( v ) WRITE_32( ( BBH_RX_1_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (v) ) + +#define BBH_RX_2_PM_COUNTERS_EPONTYPERROR_ADDRESS ( BBH_RX_2_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPONTYPERROR_OFFSET ) +#define BBH_RX_2_PM_COUNTERS_EPONTYPERROR_READ( r ) READ_32( ( BBH_RX_2_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (r) ) +#define BBH_RX_2_PM_COUNTERS_EPONTYPERROR_WRITE( v ) WRITE_32( ( BBH_RX_2_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (v) ) + +#define BBH_RX_3_PM_COUNTERS_EPONTYPERROR_ADDRESS ( BBH_RX_3_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPONTYPERROR_OFFSET ) +#define BBH_RX_3_PM_COUNTERS_EPONTYPERROR_READ( r ) READ_32( ( BBH_RX_3_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (r) ) +#define BBH_RX_3_PM_COUNTERS_EPONTYPERROR_WRITE( v ) WRITE_32( ( BBH_RX_3_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (v) ) + +#define BBH_RX_4_PM_COUNTERS_EPONTYPERROR_ADDRESS ( BBH_RX_4_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPONTYPERROR_OFFSET ) +#define BBH_RX_4_PM_COUNTERS_EPONTYPERROR_READ( r ) READ_32( ( BBH_RX_4_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (r) ) +#define BBH_RX_4_PM_COUNTERS_EPONTYPERROR_WRITE( v ) WRITE_32( ( BBH_RX_4_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (v) ) + +#define BBH_RX_5_PM_COUNTERS_EPONTYPERROR_ADDRESS ( BBH_RX_5_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPONTYPERROR_OFFSET ) +#define BBH_RX_5_PM_COUNTERS_EPONTYPERROR_READ( r ) READ_32( ( BBH_RX_5_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (r) ) +#define BBH_RX_5_PM_COUNTERS_EPONTYPERROR_WRITE( v ) WRITE_32( ( BBH_RX_5_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (v) ) + +#define BBH_RX_6_PM_COUNTERS_EPONTYPERROR_ADDRESS ( BBH_RX_6_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPONTYPERROR_OFFSET ) +#define BBH_RX_6_PM_COUNTERS_EPONTYPERROR_READ( r ) READ_32( ( BBH_RX_6_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (r) ) +#define BBH_RX_6_PM_COUNTERS_EPONTYPERROR_WRITE( v ) WRITE_32( ( BBH_RX_6_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_PM_COUNTERS_EPONTYPERROR_ARRAY [ ] ; + +#define BBH_RX_PM_COUNTERS_EPONTYPERROR_WRITE( i, v ) WRITE_32( BBH_RX_PM_COUNTERS_EPONTYPERROR_ARRAY [ i ], (v) ) +#define BBH_RX_PM_COUNTERS_EPONTYPERROR_READ( i, r ) READ_32( BBH_RX_PM_COUNTERS_EPONTYPERROR_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PM_counter_value */ + uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_EPONTYPERROR ; +#else +typedef struct +{ uint32_t pmvalue : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PM_counter_value */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS_EPONTYPERROR ; +#endif + +/*****************************************************************************************/ +/* Context_0_LSB */ +/* In the case of GPON peripheral, DS flows may arrive interleaved. The BBH supports par */ +/* allel reassembly of up to two interleaved flows (out of 256). For the reassembly proc */ +/* ess the BBH stores a double flow context. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_CNTXTX0LSB_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0LSB_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0LSB_CUROFFSET_CURRENT_OFFSET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0LSB_CUROFFSET_CURRENT_OFFSET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0LSB_FLOWID_FLOW_ID_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0LSB_FLOWID_FLOW_ID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0LSB_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0LSB_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0LSB_INREASS_NOT_IN_REASSEMBLY_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0LSB_INREASS_NOT_IN_REASSEMBLY_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0LSB_INREASS_IN_REASSEMBLY_VALUE ( 0x1 ) + + +#define BBH_RX_DEBUG_CNTXTX0LSB_OFFSET ( 0x00000000 ) + +#define BBH_RX_0_DEBUG_CNTXTX0LSB_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0LSB_OFFSET ) +#define BBH_RX_0_DEBUG_CNTXTX0LSB_READ( r ) READ_32( ( BBH_RX_0_DEBUG_CNTXTX0LSB_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_CNTXTX0LSB_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_CNTXTX0LSB_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_CNTXTX0LSB_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0LSB_OFFSET ) +#define BBH_RX_1_DEBUG_CNTXTX0LSB_READ( r ) READ_32( ( BBH_RX_1_DEBUG_CNTXTX0LSB_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_CNTXTX0LSB_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_CNTXTX0LSB_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_CNTXTX0LSB_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0LSB_OFFSET ) +#define BBH_RX_2_DEBUG_CNTXTX0LSB_READ( r ) READ_32( ( BBH_RX_2_DEBUG_CNTXTX0LSB_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_CNTXTX0LSB_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_CNTXTX0LSB_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_CNTXTX0LSB_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0LSB_OFFSET ) +#define BBH_RX_3_DEBUG_CNTXTX0LSB_READ( r ) READ_32( ( BBH_RX_3_DEBUG_CNTXTX0LSB_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_CNTXTX0LSB_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_CNTXTX0LSB_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_CNTXTX0LSB_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0LSB_OFFSET ) +#define BBH_RX_4_DEBUG_CNTXTX0LSB_READ( r ) READ_32( ( BBH_RX_4_DEBUG_CNTXTX0LSB_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_CNTXTX0LSB_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_CNTXTX0LSB_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_CNTXTX0LSB_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0LSB_OFFSET ) +#define BBH_RX_5_DEBUG_CNTXTX0LSB_READ( r ) READ_32( ( BBH_RX_5_DEBUG_CNTXTX0LSB_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_CNTXTX0LSB_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_CNTXTX0LSB_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_CNTXTX0LSB_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0LSB_OFFSET ) +#define BBH_RX_6_DEBUG_CNTXTX0LSB_READ( r ) READ_32( ( BBH_RX_6_DEBUG_CNTXTX0LSB_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_CNTXTX0LSB_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_CNTXTX0LSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_CNTXTX0LSB_ARRAY [ ] ; + +#define BBH_RX_DEBUG_CNTXTX0LSB_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_CNTXTX0LSB_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_CNTXTX0LSB_READ( i, r ) READ_32( BBH_RX_DEBUG_CNTXTX0LSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_offset */ + uint32_t curoffset : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_ID */ + uint32_t flowid : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_reassembly */ + uint32_t inreass : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_CNTXTX0LSB ; +#else +typedef struct +{ uint32_t inreass : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_reassembly */ + uint32_t r1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t flowid : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_ID */ + uint32_t curoffset : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_offset */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_CNTXTX0LSB ; +#endif + +/*****************************************************************************************/ +/* Context_0_MSB */ +/* In the case of GPON peripheral, DS flows may arrive interleaved. The BBH supports par */ +/* allel reassembly of up to two interleaved flows (out of 256). For the reassembly proc */ +/* ess the BBH stores a double flow context. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_CNTXTX0MSB_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0MSB_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0MSB_FIRSTBN_BN_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0MSB_FIRSTBN_BN_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0MSB_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0MSB_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0MSB_CURBN_BN_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX0MSB_CURBN_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_DEBUG_CNTXTX0MSB_OFFSET ( 0x00000004 ) + +#define BBH_RX_0_DEBUG_CNTXTX0MSB_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0MSB_OFFSET ) +#define BBH_RX_0_DEBUG_CNTXTX0MSB_READ( r ) READ_32( ( BBH_RX_0_DEBUG_CNTXTX0MSB_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_CNTXTX0MSB_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_CNTXTX0MSB_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_CNTXTX0MSB_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0MSB_OFFSET ) +#define BBH_RX_1_DEBUG_CNTXTX0MSB_READ( r ) READ_32( ( BBH_RX_1_DEBUG_CNTXTX0MSB_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_CNTXTX0MSB_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_CNTXTX0MSB_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_CNTXTX0MSB_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0MSB_OFFSET ) +#define BBH_RX_2_DEBUG_CNTXTX0MSB_READ( r ) READ_32( ( BBH_RX_2_DEBUG_CNTXTX0MSB_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_CNTXTX0MSB_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_CNTXTX0MSB_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_CNTXTX0MSB_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0MSB_OFFSET ) +#define BBH_RX_3_DEBUG_CNTXTX0MSB_READ( r ) READ_32( ( BBH_RX_3_DEBUG_CNTXTX0MSB_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_CNTXTX0MSB_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_CNTXTX0MSB_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_CNTXTX0MSB_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0MSB_OFFSET ) +#define BBH_RX_4_DEBUG_CNTXTX0MSB_READ( r ) READ_32( ( BBH_RX_4_DEBUG_CNTXTX0MSB_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_CNTXTX0MSB_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_CNTXTX0MSB_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_CNTXTX0MSB_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0MSB_OFFSET ) +#define BBH_RX_5_DEBUG_CNTXTX0MSB_READ( r ) READ_32( ( BBH_RX_5_DEBUG_CNTXTX0MSB_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_CNTXTX0MSB_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_CNTXTX0MSB_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_CNTXTX0MSB_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0MSB_OFFSET ) +#define BBH_RX_6_DEBUG_CNTXTX0MSB_READ( r ) READ_32( ( BBH_RX_6_DEBUG_CNTXTX0MSB_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_CNTXTX0MSB_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_CNTXTX0MSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_CNTXTX0MSB_ARRAY [ ] ; + +#define BBH_RX_DEBUG_CNTXTX0MSB_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_CNTXTX0MSB_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_CNTXTX0MSB_READ( i, r ) READ_32( BBH_RX_DEBUG_CNTXTX0MSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* First_BN */ + uint32_t firstbn : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_BN */ + uint32_t curbn : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_CNTXTX0MSB ; +#else +typedef struct +{ uint32_t curbn : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_BN */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t firstbn : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* First_BN */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_CNTXTX0MSB ; +#endif + +/*****************************************************************************************/ +/* Context_1_LSB */ +/* In the case of GPON peripheral, DS flows may arrive interleaved. The BBH supports par */ +/* allel reassembly of up to two interleaved flows (out of 256). For the reassembly proc */ +/* ess the BBH stores a double flow context. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_CNTXTX1LSB_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1LSB_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1LSB_CUROFFSET_CURRENT_OFFSET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1LSB_CUROFFSET_CURRENT_OFFSET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1LSB_FLOWID_FLOW_ID_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1LSB_FLOWID_FLOW_ID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1LSB_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1LSB_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1LSB_INREASS_NOT_IN_REASSEMBLY_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1LSB_INREASS_NOT_IN_REASSEMBLY_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1LSB_INREASS_IN_REASSEMBLY_VALUE ( 0x1 ) + + +#define BBH_RX_DEBUG_CNTXTX1LSB_OFFSET ( 0x00000008 ) + +#define BBH_RX_0_DEBUG_CNTXTX1LSB_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1LSB_OFFSET ) +#define BBH_RX_0_DEBUG_CNTXTX1LSB_READ( r ) READ_32( ( BBH_RX_0_DEBUG_CNTXTX1LSB_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_CNTXTX1LSB_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_CNTXTX1LSB_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_CNTXTX1LSB_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1LSB_OFFSET ) +#define BBH_RX_1_DEBUG_CNTXTX1LSB_READ( r ) READ_32( ( BBH_RX_1_DEBUG_CNTXTX1LSB_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_CNTXTX1LSB_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_CNTXTX1LSB_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_CNTXTX1LSB_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1LSB_OFFSET ) +#define BBH_RX_2_DEBUG_CNTXTX1LSB_READ( r ) READ_32( ( BBH_RX_2_DEBUG_CNTXTX1LSB_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_CNTXTX1LSB_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_CNTXTX1LSB_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_CNTXTX1LSB_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1LSB_OFFSET ) +#define BBH_RX_3_DEBUG_CNTXTX1LSB_READ( r ) READ_32( ( BBH_RX_3_DEBUG_CNTXTX1LSB_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_CNTXTX1LSB_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_CNTXTX1LSB_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_CNTXTX1LSB_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1LSB_OFFSET ) +#define BBH_RX_4_DEBUG_CNTXTX1LSB_READ( r ) READ_32( ( BBH_RX_4_DEBUG_CNTXTX1LSB_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_CNTXTX1LSB_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_CNTXTX1LSB_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_CNTXTX1LSB_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1LSB_OFFSET ) +#define BBH_RX_5_DEBUG_CNTXTX1LSB_READ( r ) READ_32( ( BBH_RX_5_DEBUG_CNTXTX1LSB_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_CNTXTX1LSB_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_CNTXTX1LSB_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_CNTXTX1LSB_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1LSB_OFFSET ) +#define BBH_RX_6_DEBUG_CNTXTX1LSB_READ( r ) READ_32( ( BBH_RX_6_DEBUG_CNTXTX1LSB_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_CNTXTX1LSB_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_CNTXTX1LSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_CNTXTX1LSB_ARRAY [ ] ; + +#define BBH_RX_DEBUG_CNTXTX1LSB_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_CNTXTX1LSB_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_CNTXTX1LSB_READ( i, r ) READ_32( BBH_RX_DEBUG_CNTXTX1LSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_offset */ + uint32_t curoffset : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_ID */ + uint32_t flowid : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_reassembly */ + uint32_t inreass : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_CNTXTX1LSB ; +#else +typedef struct +{ uint32_t inreass : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_reassembly */ + uint32_t r1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t flowid : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_ID */ + uint32_t curoffset : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_offset */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_CNTXTX1LSB ; +#endif + +/*****************************************************************************************/ +/* Context_1_MSB */ +/* In the case of GPON peripheral, DS flows may arrive interleaved. The BBH supports par */ +/* allel reassembly of up to two interleaved flows (out of 256). For the reassembly proc */ +/* ess the BBH stores a double flow context. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_CNTXTX1MSB_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1MSB_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1MSB_FIRSTBN_BN_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1MSB_FIRSTBN_BN_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1MSB_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1MSB_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1MSB_CURBN_BN_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_CNTXTX1MSB_CURBN_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_DEBUG_CNTXTX1MSB_OFFSET ( 0x0000000C ) + +#define BBH_RX_0_DEBUG_CNTXTX1MSB_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1MSB_OFFSET ) +#define BBH_RX_0_DEBUG_CNTXTX1MSB_READ( r ) READ_32( ( BBH_RX_0_DEBUG_CNTXTX1MSB_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_CNTXTX1MSB_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_CNTXTX1MSB_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_CNTXTX1MSB_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1MSB_OFFSET ) +#define BBH_RX_1_DEBUG_CNTXTX1MSB_READ( r ) READ_32( ( BBH_RX_1_DEBUG_CNTXTX1MSB_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_CNTXTX1MSB_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_CNTXTX1MSB_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_CNTXTX1MSB_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1MSB_OFFSET ) +#define BBH_RX_2_DEBUG_CNTXTX1MSB_READ( r ) READ_32( ( BBH_RX_2_DEBUG_CNTXTX1MSB_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_CNTXTX1MSB_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_CNTXTX1MSB_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_CNTXTX1MSB_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1MSB_OFFSET ) +#define BBH_RX_3_DEBUG_CNTXTX1MSB_READ( r ) READ_32( ( BBH_RX_3_DEBUG_CNTXTX1MSB_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_CNTXTX1MSB_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_CNTXTX1MSB_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_CNTXTX1MSB_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1MSB_OFFSET ) +#define BBH_RX_4_DEBUG_CNTXTX1MSB_READ( r ) READ_32( ( BBH_RX_4_DEBUG_CNTXTX1MSB_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_CNTXTX1MSB_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_CNTXTX1MSB_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_CNTXTX1MSB_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1MSB_OFFSET ) +#define BBH_RX_5_DEBUG_CNTXTX1MSB_READ( r ) READ_32( ( BBH_RX_5_DEBUG_CNTXTX1MSB_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_CNTXTX1MSB_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_CNTXTX1MSB_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_CNTXTX1MSB_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1MSB_OFFSET ) +#define BBH_RX_6_DEBUG_CNTXTX1MSB_READ( r ) READ_32( ( BBH_RX_6_DEBUG_CNTXTX1MSB_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_CNTXTX1MSB_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_CNTXTX1MSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_CNTXTX1MSB_ARRAY [ ] ; + +#define BBH_RX_DEBUG_CNTXTX1MSB_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_CNTXTX1MSB_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_CNTXTX1MSB_READ( i, r ) READ_32( BBH_RX_DEBUG_CNTXTX1MSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* First_BN */ + uint32_t firstbn : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_BN */ + uint32_t curbn : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_CNTXTX1MSB ; +#else +typedef struct +{ uint32_t curbn : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_BN */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t firstbn : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* First_BN */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_CNTXTX1MSB ; +#endif + +/*****************************************************************************************/ +/* IH_context_0 */ +/* In the case of GPON peripheral, DS flows may arrive interleaved. The BBH supports par */ +/* allel reassembly of up to two interleaved flows (out of 256). For the reassembly proc */ +/* ess the BBH stores a double flow context. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_IHCNTXT0_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_CUROFFSET_CURRENT_OFFSET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_CUROFFSET_CURRENT_OFFSET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_FLOWID_FLOW_ID_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_FLOWID_FLOW_ID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_BUFNUM_BUFFER_NUMBER_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_BUFNUM_BUFFER_NUMBER_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_BUFVALID_NOT_IN_REASSEMBLY_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_BUFVALID_NOT_IN_REASSEMBLY_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_BUFVALID_IN_REASSEMBLY_VALUE ( 0x1 ) +#define BBH_RX_DEBUG_IHCNTXT0_INREASS_NOT_IN_REASSEMBLY_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_INREASS_NOT_IN_REASSEMBLY_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT0_INREASS_IN_REASSEMBLY_VALUE ( 0x1 ) + + +#define BBH_RX_DEBUG_IHCNTXT0_OFFSET ( 0x00000010 ) + +#define BBH_RX_0_DEBUG_IHCNTXT0_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT0_OFFSET ) +#define BBH_RX_0_DEBUG_IHCNTXT0_READ( r ) READ_32( ( BBH_RX_0_DEBUG_IHCNTXT0_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_IHCNTXT0_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_IHCNTXT0_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_IHCNTXT0_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT0_OFFSET ) +#define BBH_RX_1_DEBUG_IHCNTXT0_READ( r ) READ_32( ( BBH_RX_1_DEBUG_IHCNTXT0_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_IHCNTXT0_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_IHCNTXT0_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_IHCNTXT0_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT0_OFFSET ) +#define BBH_RX_2_DEBUG_IHCNTXT0_READ( r ) READ_32( ( BBH_RX_2_DEBUG_IHCNTXT0_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_IHCNTXT0_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_IHCNTXT0_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_IHCNTXT0_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT0_OFFSET ) +#define BBH_RX_3_DEBUG_IHCNTXT0_READ( r ) READ_32( ( BBH_RX_3_DEBUG_IHCNTXT0_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_IHCNTXT0_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_IHCNTXT0_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_IHCNTXT0_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT0_OFFSET ) +#define BBH_RX_4_DEBUG_IHCNTXT0_READ( r ) READ_32( ( BBH_RX_4_DEBUG_IHCNTXT0_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_IHCNTXT0_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_IHCNTXT0_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_IHCNTXT0_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT0_OFFSET ) +#define BBH_RX_5_DEBUG_IHCNTXT0_READ( r ) READ_32( ( BBH_RX_5_DEBUG_IHCNTXT0_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_IHCNTXT0_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_IHCNTXT0_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_IHCNTXT0_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT0_OFFSET ) +#define BBH_RX_6_DEBUG_IHCNTXT0_READ( r ) READ_32( ( BBH_RX_6_DEBUG_IHCNTXT0_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_IHCNTXT0_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_IHCNTXT0_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_IHCNTXT0_ARRAY [ ] ; + +#define BBH_RX_DEBUG_IHCNTXT0_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_IHCNTXT0_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_IHCNTXT0_READ( i, r ) READ_32( BBH_RX_DEBUG_IHCNTXT0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_offset */ + uint32_t curoffset : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_ID */ + uint32_t flowid : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_number */ + uint32_t bufnum : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_valid */ + uint32_t bufvalid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_reassembly */ + uint32_t inreass : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_IHCNTXT0 ; +#else +typedef struct +{ uint32_t inreass : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_reassembly */ + uint32_t bufvalid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_valid */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t bufnum : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_number */ + uint32_t flowid : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_ID */ + uint32_t curoffset : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_offset */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_IHCNTXT0 ; +#endif + +/*****************************************************************************************/ +/* IH_context_1 */ +/* In the case of GPON peripheral, DS flows may arrive interleaved. The BBH supports par */ +/* allel reassembly of up to two interleaved flows (out of 256). For the reassembly proc */ +/* ess the BBH stores a double flow context. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_IHCNTXT1_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_CUROFFSET_CURRENT_OFFSET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_CUROFFSET_CURRENT_OFFSET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_FLOWID_FLOW_ID_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_FLOWID_FLOW_ID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_BUFNUM_BUFFER_NUMBER_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_BUFNUM_BUFFER_NUMBER_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_BUFVALID_NOT_IN_REASSEMBLY_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_BUFVALID_NOT_IN_REASSEMBLY_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_BUFVALID_IN_REASSEMBLY_VALUE ( 0x1 ) +#define BBH_RX_DEBUG_IHCNTXT1_INREASS_NOT_IN_REASSEMBLY_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_INREASS_NOT_IN_REASSEMBLY_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXT1_INREASS_IN_REASSEMBLY_VALUE ( 0x1 ) + + +#define BBH_RX_DEBUG_IHCNTXT1_OFFSET ( 0x00000014 ) + +#define BBH_RX_0_DEBUG_IHCNTXT1_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT1_OFFSET ) +#define BBH_RX_0_DEBUG_IHCNTXT1_READ( r ) READ_32( ( BBH_RX_0_DEBUG_IHCNTXT1_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_IHCNTXT1_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_IHCNTXT1_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_IHCNTXT1_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT1_OFFSET ) +#define BBH_RX_1_DEBUG_IHCNTXT1_READ( r ) READ_32( ( BBH_RX_1_DEBUG_IHCNTXT1_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_IHCNTXT1_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_IHCNTXT1_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_IHCNTXT1_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT1_OFFSET ) +#define BBH_RX_2_DEBUG_IHCNTXT1_READ( r ) READ_32( ( BBH_RX_2_DEBUG_IHCNTXT1_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_IHCNTXT1_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_IHCNTXT1_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_IHCNTXT1_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT1_OFFSET ) +#define BBH_RX_3_DEBUG_IHCNTXT1_READ( r ) READ_32( ( BBH_RX_3_DEBUG_IHCNTXT1_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_IHCNTXT1_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_IHCNTXT1_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_IHCNTXT1_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT1_OFFSET ) +#define BBH_RX_4_DEBUG_IHCNTXT1_READ( r ) READ_32( ( BBH_RX_4_DEBUG_IHCNTXT1_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_IHCNTXT1_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_IHCNTXT1_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_IHCNTXT1_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT1_OFFSET ) +#define BBH_RX_5_DEBUG_IHCNTXT1_READ( r ) READ_32( ( BBH_RX_5_DEBUG_IHCNTXT1_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_IHCNTXT1_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_IHCNTXT1_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_IHCNTXT1_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT1_OFFSET ) +#define BBH_RX_6_DEBUG_IHCNTXT1_READ( r ) READ_32( ( BBH_RX_6_DEBUG_IHCNTXT1_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_IHCNTXT1_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_IHCNTXT1_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_IHCNTXT1_ARRAY [ ] ; + +#define BBH_RX_DEBUG_IHCNTXT1_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_IHCNTXT1_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_IHCNTXT1_READ( i, r ) READ_32( BBH_RX_DEBUG_IHCNTXT1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_offset */ + uint32_t curoffset : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_ID */ + uint32_t flowid : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_number */ + uint32_t bufnum : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_valid */ + uint32_t bufvalid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_reassembly */ + uint32_t inreass : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_IHCNTXT1 ; +#else +typedef struct +{ uint32_t inreass : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_reassembly */ + uint32_t bufvalid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_valid */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t bufnum : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_number */ + uint32_t flowid : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_ID */ + uint32_t curoffset : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_offset */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_IHCNTXT1 ; +#endif + +/*****************************************************************************************/ +/* IH_context_PLOAM */ +/* In the case of GPON peripheral, DS flows may arrive interleaved. The BBH supports par */ +/* allel reassembly of up to two interleaved flows (out of 256). For the reassembly proc */ +/* ess the BBH stores a double flow context. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_IHCNTXTP_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_CUROFFSET_CURRENT_OFFSET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_CUROFFSET_CURRENT_OFFSET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_FLOWID_FLOW_ID_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_FLOWID_FLOW_ID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_BUFNUM_BUFFER_NUMBER_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_BUFNUM_BUFFER_NUMBER_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_BUFVALID_NOT_IN_REASSEMBLY_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_BUFVALID_NOT_IN_REASSEMBLY_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_BUFVALID_IN_REASSEMBLY_VALUE ( 0x1 ) +#define BBH_RX_DEBUG_IHCNTXTP_INREASS_NOT_IN_REASSEMBLY_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_INREASS_NOT_IN_REASSEMBLY_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHCNTXTP_INREASS_IN_REASSEMBLY_VALUE ( 0x1 ) + + +#define BBH_RX_DEBUG_IHCNTXTP_OFFSET ( 0x00000018 ) + +#define BBH_RX_0_DEBUG_IHCNTXTP_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXTP_OFFSET ) +#define BBH_RX_0_DEBUG_IHCNTXTP_READ( r ) READ_32( ( BBH_RX_0_DEBUG_IHCNTXTP_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_IHCNTXTP_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_IHCNTXTP_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_IHCNTXTP_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXTP_OFFSET ) +#define BBH_RX_1_DEBUG_IHCNTXTP_READ( r ) READ_32( ( BBH_RX_1_DEBUG_IHCNTXTP_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_IHCNTXTP_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_IHCNTXTP_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_IHCNTXTP_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXTP_OFFSET ) +#define BBH_RX_2_DEBUG_IHCNTXTP_READ( r ) READ_32( ( BBH_RX_2_DEBUG_IHCNTXTP_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_IHCNTXTP_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_IHCNTXTP_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_IHCNTXTP_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXTP_OFFSET ) +#define BBH_RX_3_DEBUG_IHCNTXTP_READ( r ) READ_32( ( BBH_RX_3_DEBUG_IHCNTXTP_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_IHCNTXTP_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_IHCNTXTP_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_IHCNTXTP_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXTP_OFFSET ) +#define BBH_RX_4_DEBUG_IHCNTXTP_READ( r ) READ_32( ( BBH_RX_4_DEBUG_IHCNTXTP_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_IHCNTXTP_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_IHCNTXTP_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_IHCNTXTP_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXTP_OFFSET ) +#define BBH_RX_5_DEBUG_IHCNTXTP_READ( r ) READ_32( ( BBH_RX_5_DEBUG_IHCNTXTP_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_IHCNTXTP_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_IHCNTXTP_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_IHCNTXTP_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXTP_OFFSET ) +#define BBH_RX_6_DEBUG_IHCNTXTP_READ( r ) READ_32( ( BBH_RX_6_DEBUG_IHCNTXTP_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_IHCNTXTP_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_IHCNTXTP_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_IHCNTXTP_ARRAY [ ] ; + +#define BBH_RX_DEBUG_IHCNTXTP_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_IHCNTXTP_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_IHCNTXTP_READ( i, r ) READ_32( BBH_RX_DEBUG_IHCNTXTP_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_offset */ + uint32_t curoffset : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_ID */ + uint32_t flowid : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_number */ + uint32_t bufnum : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_valid */ + uint32_t bufvalid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_reassembly */ + uint32_t inreass : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_IHCNTXTP ; +#else +typedef struct +{ uint32_t inreass : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_reassembly */ + uint32_t bufvalid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_valid */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t bufnum : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_number */ + uint32_t flowid : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_ID */ + uint32_t curoffset : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Current_offset */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_IHCNTXTP ; +#endif + +/*****************************************************************************************/ +/* IH_free_buffer */ +/* This array describes the status of the 16 IH buffers - free = 1, occupied = 0. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_IHFREEBUF_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHFREEBUF_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_IHFREEBUF_IHFREEBUF_BUFFREE_VALUE ( 0xFFFF ) +#define BBH_RX_DEBUG_IHFREEBUF_IHFREEBUF_BUFFREE_VALUE_RESET_VALUE ( 0xFFFF ) + + +#define BBH_RX_DEBUG_IHFREEBUF_OFFSET ( 0x0000001C ) + +#define BBH_RX_0_DEBUG_IHFREEBUF_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_IHFREEBUF_OFFSET ) +#define BBH_RX_0_DEBUG_IHFREEBUF_READ( r ) READ_32( ( BBH_RX_0_DEBUG_IHFREEBUF_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_IHFREEBUF_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_IHFREEBUF_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_IHFREEBUF_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_IHFREEBUF_OFFSET ) +#define BBH_RX_1_DEBUG_IHFREEBUF_READ( r ) READ_32( ( BBH_RX_1_DEBUG_IHFREEBUF_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_IHFREEBUF_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_IHFREEBUF_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_IHFREEBUF_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_IHFREEBUF_OFFSET ) +#define BBH_RX_2_DEBUG_IHFREEBUF_READ( r ) READ_32( ( BBH_RX_2_DEBUG_IHFREEBUF_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_IHFREEBUF_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_IHFREEBUF_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_IHFREEBUF_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_IHFREEBUF_OFFSET ) +#define BBH_RX_3_DEBUG_IHFREEBUF_READ( r ) READ_32( ( BBH_RX_3_DEBUG_IHFREEBUF_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_IHFREEBUF_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_IHFREEBUF_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_IHFREEBUF_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_IHFREEBUF_OFFSET ) +#define BBH_RX_4_DEBUG_IHFREEBUF_READ( r ) READ_32( ( BBH_RX_4_DEBUG_IHFREEBUF_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_IHFREEBUF_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_IHFREEBUF_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_IHFREEBUF_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_IHFREEBUF_OFFSET ) +#define BBH_RX_5_DEBUG_IHFREEBUF_READ( r ) READ_32( ( BBH_RX_5_DEBUG_IHFREEBUF_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_IHFREEBUF_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_IHFREEBUF_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_IHFREEBUF_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_IHFREEBUF_OFFSET ) +#define BBH_RX_6_DEBUG_IHFREEBUF_READ( r ) READ_32( ( BBH_RX_6_DEBUG_IHFREEBUF_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_IHFREEBUF_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_IHFREEBUF_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_IHFREEBUF_ARRAY [ ] ; + +#define BBH_RX_DEBUG_IHFREEBUF_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_IHFREEBUF_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_IHFREEBUF_READ( i, r ) READ_32( BBH_RX_DEBUG_IHFREEBUF_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_free_buffer */ + uint32_t ihfreebuf : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_IHFREEBUF ; +#else +typedef struct +{ uint32_t ihfreebuf : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_free_buffer */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_IHFREEBUF ; +#endif + +/*****************************************************************************************/ +/* Pre_wakeup_fifo_used_words */ +/* Pre wakeup FIFO used words */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_PWUW_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_PWUW_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_PWUW_UW_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_PWUW_UW_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_DEBUG_PWUW_OFFSET ( 0x00000020 ) + +#define BBH_RX_0_DEBUG_PWUW_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_PWUW_OFFSET ) +#define BBH_RX_0_DEBUG_PWUW_READ( r ) READ_32( ( BBH_RX_0_DEBUG_PWUW_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_PWUW_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_PWUW_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_PWUW_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_PWUW_OFFSET ) +#define BBH_RX_1_DEBUG_PWUW_READ( r ) READ_32( ( BBH_RX_1_DEBUG_PWUW_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_PWUW_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_PWUW_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_PWUW_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_PWUW_OFFSET ) +#define BBH_RX_2_DEBUG_PWUW_READ( r ) READ_32( ( BBH_RX_2_DEBUG_PWUW_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_PWUW_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_PWUW_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_PWUW_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_PWUW_OFFSET ) +#define BBH_RX_3_DEBUG_PWUW_READ( r ) READ_32( ( BBH_RX_3_DEBUG_PWUW_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_PWUW_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_PWUW_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_PWUW_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_PWUW_OFFSET ) +#define BBH_RX_4_DEBUG_PWUW_READ( r ) READ_32( ( BBH_RX_4_DEBUG_PWUW_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_PWUW_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_PWUW_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_PWUW_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_PWUW_OFFSET ) +#define BBH_RX_5_DEBUG_PWUW_READ( r ) READ_32( ( BBH_RX_5_DEBUG_PWUW_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_PWUW_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_PWUW_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_PWUW_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_PWUW_OFFSET ) +#define BBH_RX_6_DEBUG_PWUW_READ( r ) READ_32( ( BBH_RX_6_DEBUG_PWUW_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_PWUW_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_PWUW_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_PWUW_ARRAY [ ] ; + +#define BBH_RX_DEBUG_PWUW_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_PWUW_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_PWUW_READ( i, r ) READ_32( BBH_RX_DEBUG_PWUW_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Used_words */ + uint32_t uw : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_PWUW ; +#else +typedef struct +{ uint32_t uw : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Used_words */ + uint32_t r1 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_PWUW ; +#endif + +/*****************************************************************************************/ +/* ACK_counters */ +/* The register reflects 3 ACK counters: DMA SDMA CONNECT */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_ACKCNT_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_ACKCNT_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_ACKCNT_CONNECT_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_ACKCNT_CONNECT_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_ACKCNT_SDMA_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_ACKCNT_SDMA_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_ACKCNT_DMA_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_ACKCNT_DMA_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_DEBUG_ACKCNT_OFFSET ( 0x00000024 ) + +#define BBH_RX_0_DEBUG_ACKCNT_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_ACKCNT_OFFSET ) +#define BBH_RX_0_DEBUG_ACKCNT_READ( r ) READ_32( ( BBH_RX_0_DEBUG_ACKCNT_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_ACKCNT_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_ACKCNT_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_ACKCNT_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_ACKCNT_OFFSET ) +#define BBH_RX_1_DEBUG_ACKCNT_READ( r ) READ_32( ( BBH_RX_1_DEBUG_ACKCNT_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_ACKCNT_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_ACKCNT_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_ACKCNT_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_ACKCNT_OFFSET ) +#define BBH_RX_2_DEBUG_ACKCNT_READ( r ) READ_32( ( BBH_RX_2_DEBUG_ACKCNT_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_ACKCNT_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_ACKCNT_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_ACKCNT_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_ACKCNT_OFFSET ) +#define BBH_RX_3_DEBUG_ACKCNT_READ( r ) READ_32( ( BBH_RX_3_DEBUG_ACKCNT_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_ACKCNT_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_ACKCNT_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_ACKCNT_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_ACKCNT_OFFSET ) +#define BBH_RX_4_DEBUG_ACKCNT_READ( r ) READ_32( ( BBH_RX_4_DEBUG_ACKCNT_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_ACKCNT_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_ACKCNT_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_ACKCNT_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_ACKCNT_OFFSET ) +#define BBH_RX_5_DEBUG_ACKCNT_READ( r ) READ_32( ( BBH_RX_5_DEBUG_ACKCNT_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_ACKCNT_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_ACKCNT_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_ACKCNT_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_ACKCNT_OFFSET ) +#define BBH_RX_6_DEBUG_ACKCNT_READ( r ) READ_32( ( BBH_RX_6_DEBUG_ACKCNT_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_ACKCNT_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_ACKCNT_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_ACKCNT_ARRAY [ ] ; + +#define BBH_RX_DEBUG_ACKCNT_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_ACKCNT_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_ACKCNT_READ( i, r ) READ_32( BBH_RX_DEBUG_ACKCNT_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Connect */ + uint32_t connect : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA */ + uint32_t sdma : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA */ + uint32_t dma : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_ACKCNT ; +#else +typedef struct +{ uint32_t dma : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA */ + uint32_t sdma : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA */ + uint32_t connect : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Connect */ + uint32_t r1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_ACKCNT ; +#endif + +/*****************************************************************************************/ +/* Runner_counters */ +/* The register reflects 4 Runner pending descriptors counters: Runner 0 normal Runner */ +/* 0 direct Runner 1 normal Runner 1 direct */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_RNRCNT_R4_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R4_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R1D_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R1D_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R3_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R3_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R1N_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R1N_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R2_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R2_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R0D_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R0D_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R0N_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RNRCNT_R0N_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_DEBUG_RNRCNT_OFFSET ( 0x00000028 ) + +#define BBH_RX_0_DEBUG_RNRCNT_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_RNRCNT_OFFSET ) +#define BBH_RX_0_DEBUG_RNRCNT_READ( r ) READ_32( ( BBH_RX_0_DEBUG_RNRCNT_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_RNRCNT_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_RNRCNT_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_RNRCNT_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_RNRCNT_OFFSET ) +#define BBH_RX_1_DEBUG_RNRCNT_READ( r ) READ_32( ( BBH_RX_1_DEBUG_RNRCNT_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_RNRCNT_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_RNRCNT_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_RNRCNT_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_RNRCNT_OFFSET ) +#define BBH_RX_2_DEBUG_RNRCNT_READ( r ) READ_32( ( BBH_RX_2_DEBUG_RNRCNT_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_RNRCNT_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_RNRCNT_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_RNRCNT_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_RNRCNT_OFFSET ) +#define BBH_RX_3_DEBUG_RNRCNT_READ( r ) READ_32( ( BBH_RX_3_DEBUG_RNRCNT_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_RNRCNT_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_RNRCNT_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_RNRCNT_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_RNRCNT_OFFSET ) +#define BBH_RX_4_DEBUG_RNRCNT_READ( r ) READ_32( ( BBH_RX_4_DEBUG_RNRCNT_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_RNRCNT_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_RNRCNT_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_RNRCNT_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_RNRCNT_OFFSET ) +#define BBH_RX_5_DEBUG_RNRCNT_READ( r ) READ_32( ( BBH_RX_5_DEBUG_RNRCNT_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_RNRCNT_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_RNRCNT_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_RNRCNT_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_RNRCNT_OFFSET ) +#define BBH_RX_6_DEBUG_RNRCNT_READ( r ) READ_32( ( BBH_RX_6_DEBUG_RNRCNT_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_RNRCNT_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_RNRCNT_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_RNRCNT_ARRAY [ ] ; + +#define BBH_RX_DEBUG_RNRCNT_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_RNRCNT_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_RNRCNT_READ( i, r ) READ_32( BBH_RX_DEBUG_RNRCNT_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_1_direct */ + uint32_t r1d : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_1_normal */ + uint32_t r1n : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_0_direct */ + uint32_t r0d : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_0_normal */ + uint32_t r0n : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_RNRCNT ; +#else +typedef struct +{ uint32_t r0n : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_0_normal */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r0d : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_0_direct */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1n : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_1_normal */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1d : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_1_direct */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_RNRCNT ; +#endif + +/*****************************************************************************************/ +/* Debug_vector */ +/* selected debug vector */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_DBGVEC_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_DBGVEC_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_DBGVEC_DBGVEC_RESET_VALUE_VALUE ( 0x11000 ) +#define BBH_RX_DEBUG_DBGVEC_DBGVEC_RESET_VALUE_VALUE_RESET_VALUE ( 0x11000 ) + + +#define BBH_RX_DEBUG_DBGVEC_OFFSET ( 0x0000002C ) + +#define BBH_RX_0_DEBUG_DBGVEC_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_DBGVEC_OFFSET ) +#define BBH_RX_0_DEBUG_DBGVEC_READ( r ) READ_32( ( BBH_RX_0_DEBUG_DBGVEC_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_DBGVEC_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_DBGVEC_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_DBGVEC_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_DBGVEC_OFFSET ) +#define BBH_RX_1_DEBUG_DBGVEC_READ( r ) READ_32( ( BBH_RX_1_DEBUG_DBGVEC_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_DBGVEC_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_DBGVEC_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_DBGVEC_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_DBGVEC_OFFSET ) +#define BBH_RX_2_DEBUG_DBGVEC_READ( r ) READ_32( ( BBH_RX_2_DEBUG_DBGVEC_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_DBGVEC_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_DBGVEC_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_DBGVEC_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_DBGVEC_OFFSET ) +#define BBH_RX_3_DEBUG_DBGVEC_READ( r ) READ_32( ( BBH_RX_3_DEBUG_DBGVEC_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_DBGVEC_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_DBGVEC_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_DBGVEC_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_DBGVEC_OFFSET ) +#define BBH_RX_4_DEBUG_DBGVEC_READ( r ) READ_32( ( BBH_RX_4_DEBUG_DBGVEC_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_DBGVEC_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_DBGVEC_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_DBGVEC_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_DBGVEC_OFFSET ) +#define BBH_RX_5_DEBUG_DBGVEC_READ( r ) READ_32( ( BBH_RX_5_DEBUG_DBGVEC_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_DBGVEC_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_DBGVEC_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_DBGVEC_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_DBGVEC_OFFSET ) +#define BBH_RX_6_DEBUG_DBGVEC_READ( r ) READ_32( ( BBH_RX_6_DEBUG_DBGVEC_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_DBGVEC_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_DBGVEC_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_DBGVEC_ARRAY [ ] ; + +#define BBH_RX_DEBUG_DBGVEC_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_DBGVEC_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_DBGVEC_READ( i, r ) READ_32( BBH_RX_DEBUG_DBGVEC_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Debug_vector */ + uint32_t dbgvec : 21 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_DBGVEC ; +#else +typedef struct +{ uint32_t dbgvec : 21 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Debug_vector */ + uint32_t r1 : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_DBGVEC ; +#endif + +/*****************************************************************************************/ +/* DDR_BN_FIFO */ +/* The BBH RX hold a FIFO with 8 BN. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_BNFIFO_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_BNFIFO_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_BNFIFO_VALID_NOT_VALID_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_BNFIFO_VALID_NOT_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_BNFIFO_VALID_VALID_VALUE ( 0x1 ) +#define BBH_RX_DEBUG_BNFIFO_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_BNFIFO_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_BNFIFO_BNENTRY_BN_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_BNFIFO_BNENTRY_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_DEBUG_BNFIFO_OFFSET ( 0x00000030 ) + +#define BBH_RX_0_DEBUG_BNFIFO_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_BNFIFO_OFFSET ) +#define BBH_RX_0_DEBUG_BNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_0_DEBUG_BNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_0_DEBUG_BNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_0_DEBUG_BNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_1_DEBUG_BNFIFO_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_BNFIFO_OFFSET ) +#define BBH_RX_1_DEBUG_BNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_1_DEBUG_BNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_1_DEBUG_BNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_1_DEBUG_BNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_2_DEBUG_BNFIFO_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_BNFIFO_OFFSET ) +#define BBH_RX_2_DEBUG_BNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_2_DEBUG_BNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_2_DEBUG_BNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_2_DEBUG_BNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_3_DEBUG_BNFIFO_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_BNFIFO_OFFSET ) +#define BBH_RX_3_DEBUG_BNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_3_DEBUG_BNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_3_DEBUG_BNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_3_DEBUG_BNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_4_DEBUG_BNFIFO_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_BNFIFO_OFFSET ) +#define BBH_RX_4_DEBUG_BNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_4_DEBUG_BNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_4_DEBUG_BNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_4_DEBUG_BNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_5_DEBUG_BNFIFO_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_BNFIFO_OFFSET ) +#define BBH_RX_5_DEBUG_BNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_5_DEBUG_BNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_5_DEBUG_BNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_5_DEBUG_BNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_6_DEBUG_BNFIFO_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_BNFIFO_OFFSET ) +#define BBH_RX_6_DEBUG_BNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_6_DEBUG_BNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_6_DEBUG_BNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_6_DEBUG_BNFIFO_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_RX_DEBUG_BNFIFO_ARRAY [ ] ; + +#define BBH_RX_DEBUG_BNFIFO_WRITE( i, k, v ) WRITE_I_32( BBH_RX_DEBUG_BNFIFO_ARRAY [ i ], (k), (v) ) +#define BBH_RX_DEBUG_BNFIFO_READ( i, k, r ) READ_I_32( BBH_RX_DEBUG_BNFIFO_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VALID */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BN_entry */ + uint32_t bnentry : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_BNFIFO ; +#else +typedef struct +{ uint32_t bnentry : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BN_entry */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VALID */ + uint32_t r2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_BNFIFO ; +#endif + +/*****************************************************************************************/ +/* SRAM_BN_FIFO */ +/* The BBH RX hold a FIFO with 8 BN. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_SBNFIFO_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_SBNFIFO_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_SBNFIFO_VALID_NOT_VALID_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_SBNFIFO_VALID_NOT_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_SBNFIFO_VALID_VALID_VALUE ( 0x1 ) +#define BBH_RX_DEBUG_SBNFIFO_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_SBNFIFO_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_SBNFIFO_BNENTRY_BN_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_SBNFIFO_BNENTRY_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_DEBUG_SBNFIFO_OFFSET ( 0x00000050 ) + +#define BBH_RX_0_DEBUG_SBNFIFO_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_SBNFIFO_OFFSET ) +#define BBH_RX_0_DEBUG_SBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_0_DEBUG_SBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_0_DEBUG_SBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_0_DEBUG_SBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_1_DEBUG_SBNFIFO_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_SBNFIFO_OFFSET ) +#define BBH_RX_1_DEBUG_SBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_1_DEBUG_SBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_1_DEBUG_SBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_1_DEBUG_SBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_2_DEBUG_SBNFIFO_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_SBNFIFO_OFFSET ) +#define BBH_RX_2_DEBUG_SBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_2_DEBUG_SBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_2_DEBUG_SBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_2_DEBUG_SBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_3_DEBUG_SBNFIFO_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_SBNFIFO_OFFSET ) +#define BBH_RX_3_DEBUG_SBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_3_DEBUG_SBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_3_DEBUG_SBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_3_DEBUG_SBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_4_DEBUG_SBNFIFO_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_SBNFIFO_OFFSET ) +#define BBH_RX_4_DEBUG_SBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_4_DEBUG_SBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_4_DEBUG_SBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_4_DEBUG_SBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_5_DEBUG_SBNFIFO_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_SBNFIFO_OFFSET ) +#define BBH_RX_5_DEBUG_SBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_5_DEBUG_SBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_5_DEBUG_SBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_5_DEBUG_SBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_6_DEBUG_SBNFIFO_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_SBNFIFO_OFFSET ) +#define BBH_RX_6_DEBUG_SBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_6_DEBUG_SBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_6_DEBUG_SBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_6_DEBUG_SBNFIFO_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_RX_DEBUG_SBNFIFO_ARRAY [ ] ; + +#define BBH_RX_DEBUG_SBNFIFO_WRITE( i, k, v ) WRITE_I_32( BBH_RX_DEBUG_SBNFIFO_ARRAY [ i ], (k), (v) ) +#define BBH_RX_DEBUG_SBNFIFO_READ( i, k, r ) READ_I_32( BBH_RX_DEBUG_SBNFIFO_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VALID */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BN_entry */ + uint32_t bnentry : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_SBNFIFO ; +#else +typedef struct +{ uint32_t bnentry : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BN_entry */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VALID */ + uint32_t r2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_SBNFIFO ; +#endif + +/*****************************************************************************************/ +/* IH_response_FIFO */ +/* The BBH RX hold a FIFO with 16 IH 2nd responses. */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_RESFIFO_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RESFIFO_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RESFIFO_VALID_NOT_VALID_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RESFIFO_VALID_NOT_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RESFIFO_VALID_VALID_VALUE ( 0x1 ) +#define BBH_RX_DEBUG_RESFIFO_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RESFIFO_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RESFIFO_RESENTRY_RESPONSE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_RESFIFO_RESENTRY_RESPONSE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_DEBUG_RESFIFO_OFFSET ( 0x00000070 ) + +#define BBH_RX_0_DEBUG_RESFIFO_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_RESFIFO_OFFSET ) +#define BBH_RX_0_DEBUG_RESFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_0_DEBUG_RESFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_0_DEBUG_RESFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_0_DEBUG_RESFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_1_DEBUG_RESFIFO_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_RESFIFO_OFFSET ) +#define BBH_RX_1_DEBUG_RESFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_1_DEBUG_RESFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_1_DEBUG_RESFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_1_DEBUG_RESFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_2_DEBUG_RESFIFO_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_RESFIFO_OFFSET ) +#define BBH_RX_2_DEBUG_RESFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_2_DEBUG_RESFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_2_DEBUG_RESFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_2_DEBUG_RESFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_3_DEBUG_RESFIFO_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_RESFIFO_OFFSET ) +#define BBH_RX_3_DEBUG_RESFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_3_DEBUG_RESFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_3_DEBUG_RESFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_3_DEBUG_RESFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_4_DEBUG_RESFIFO_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_RESFIFO_OFFSET ) +#define BBH_RX_4_DEBUG_RESFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_4_DEBUG_RESFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_4_DEBUG_RESFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_4_DEBUG_RESFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_5_DEBUG_RESFIFO_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_RESFIFO_OFFSET ) +#define BBH_RX_5_DEBUG_RESFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_5_DEBUG_RESFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_5_DEBUG_RESFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_5_DEBUG_RESFIFO_ADDRESS ), (i), (v) ) + +#define BBH_RX_6_DEBUG_RESFIFO_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_RESFIFO_OFFSET ) +#define BBH_RX_6_DEBUG_RESFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_6_DEBUG_RESFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_6_DEBUG_RESFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_6_DEBUG_RESFIFO_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_RX_DEBUG_RESFIFO_ARRAY [ ] ; + +#define BBH_RX_DEBUG_RESFIFO_WRITE( i, k, v ) WRITE_I_32( BBH_RX_DEBUG_RESFIFO_ARRAY [ i ], (k), (v) ) +#define BBH_RX_DEBUG_RESFIFO_READ( i, k, r ) READ_I_32( BBH_RX_DEBUG_RESFIFO_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VALID */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Response_entry */ + uint32_t resentry : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_RESFIFO ; +#else +typedef struct +{ uint32_t resentry : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Response_entry */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VALID */ + uint32_t r2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_RESFIFO ; +#endif + +/*****************************************************************************************/ +/* Epon_sync_fifo_used_words */ +/* EPON sync FIFO used words */ +/*****************************************************************************************/ + +#define BBH_RX_DEBUG_ESUW_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_ESUW_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_ESUW_UW_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_RX_DEBUG_ESUW_UW_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_DEBUG_ESUW_OFFSET ( 0x000000B0 ) + +#define BBH_RX_0_DEBUG_ESUW_ADDRESS ( BBH_RX_0_DEBUG_ADDRESS + BBH_RX_DEBUG_ESUW_OFFSET ) +#define BBH_RX_0_DEBUG_ESUW_READ( r ) READ_32( ( BBH_RX_0_DEBUG_ESUW_ADDRESS ), (r) ) +#define BBH_RX_0_DEBUG_ESUW_WRITE( v ) WRITE_32( ( BBH_RX_0_DEBUG_ESUW_ADDRESS ), (v) ) + +#define BBH_RX_1_DEBUG_ESUW_ADDRESS ( BBH_RX_1_DEBUG_ADDRESS + BBH_RX_DEBUG_ESUW_OFFSET ) +#define BBH_RX_1_DEBUG_ESUW_READ( r ) READ_32( ( BBH_RX_1_DEBUG_ESUW_ADDRESS ), (r) ) +#define BBH_RX_1_DEBUG_ESUW_WRITE( v ) WRITE_32( ( BBH_RX_1_DEBUG_ESUW_ADDRESS ), (v) ) + +#define BBH_RX_2_DEBUG_ESUW_ADDRESS ( BBH_RX_2_DEBUG_ADDRESS + BBH_RX_DEBUG_ESUW_OFFSET ) +#define BBH_RX_2_DEBUG_ESUW_READ( r ) READ_32( ( BBH_RX_2_DEBUG_ESUW_ADDRESS ), (r) ) +#define BBH_RX_2_DEBUG_ESUW_WRITE( v ) WRITE_32( ( BBH_RX_2_DEBUG_ESUW_ADDRESS ), (v) ) + +#define BBH_RX_3_DEBUG_ESUW_ADDRESS ( BBH_RX_3_DEBUG_ADDRESS + BBH_RX_DEBUG_ESUW_OFFSET ) +#define BBH_RX_3_DEBUG_ESUW_READ( r ) READ_32( ( BBH_RX_3_DEBUG_ESUW_ADDRESS ), (r) ) +#define BBH_RX_3_DEBUG_ESUW_WRITE( v ) WRITE_32( ( BBH_RX_3_DEBUG_ESUW_ADDRESS ), (v) ) + +#define BBH_RX_4_DEBUG_ESUW_ADDRESS ( BBH_RX_4_DEBUG_ADDRESS + BBH_RX_DEBUG_ESUW_OFFSET ) +#define BBH_RX_4_DEBUG_ESUW_READ( r ) READ_32( ( BBH_RX_4_DEBUG_ESUW_ADDRESS ), (r) ) +#define BBH_RX_4_DEBUG_ESUW_WRITE( v ) WRITE_32( ( BBH_RX_4_DEBUG_ESUW_ADDRESS ), (v) ) + +#define BBH_RX_5_DEBUG_ESUW_ADDRESS ( BBH_RX_5_DEBUG_ADDRESS + BBH_RX_DEBUG_ESUW_OFFSET ) +#define BBH_RX_5_DEBUG_ESUW_READ( r ) READ_32( ( BBH_RX_5_DEBUG_ESUW_ADDRESS ), (r) ) +#define BBH_RX_5_DEBUG_ESUW_WRITE( v ) WRITE_32( ( BBH_RX_5_DEBUG_ESUW_ADDRESS ), (v) ) + +#define BBH_RX_6_DEBUG_ESUW_ADDRESS ( BBH_RX_6_DEBUG_ADDRESS + BBH_RX_DEBUG_ESUW_OFFSET ) +#define BBH_RX_6_DEBUG_ESUW_READ( r ) READ_32( ( BBH_RX_6_DEBUG_ESUW_ADDRESS ), (r) ) +#define BBH_RX_6_DEBUG_ESUW_WRITE( v ) WRITE_32( ( BBH_RX_6_DEBUG_ESUW_ADDRESS ), (v) ) + + +extern uint32_t BBH_RX_DEBUG_ESUW_ARRAY [ ] ; + +#define BBH_RX_DEBUG_ESUW_WRITE( i, v ) WRITE_32( BBH_RX_DEBUG_ESUW_ARRAY [ i ], (v) ) +#define BBH_RX_DEBUG_ESUW_READ( i, r ) READ_32( BBH_RX_DEBUG_ESUW_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Used_words */ + uint32_t uw : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_ESUW ; +#else +typedef struct +{ uint32_t uw : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Used_words */ + uint32_t r1 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG_ESUW ; +#endif + +/*****************************************************************************************/ +/* Per_flo_error */ +/* This set of 256 counters counts the packets dropped by IH per flow. These counters a */ +/* re cleared when read and freeze when reaches the maximum value. The SW should clear */ +/* these counters in initialization stage by reading each of them. */ +/*****************************************************************************************/ + +#define BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_R1_RESERVED_VALUE ( 0x0 ) +#define BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_PMCNT_DEFAULT_VALUE ( 0x0 ) +#define BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_PMCNT_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_OFFSET ( 0x00000000 ) + +#define BBH_RX_0_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ( BBH_RX_0_PER_FLOW_PM_COUNTERS_ADDRESS + BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_OFFSET ) +#define BBH_RX_0_PER_FLOW_PM_COUNTERS_PERFLOWPM_READ_I( r, i ) READ_I_32( ( BBH_RX_0_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (r) ) +#define BBH_RX_0_PER_FLOW_PM_COUNTERS_PERFLOWPM_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_0_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (v) ) + +#define BBH_RX_1_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ( BBH_RX_1_PER_FLOW_PM_COUNTERS_ADDRESS + BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_OFFSET ) +#define BBH_RX_1_PER_FLOW_PM_COUNTERS_PERFLOWPM_READ_I( r, i ) READ_I_32( ( BBH_RX_1_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (r) ) +#define BBH_RX_1_PER_FLOW_PM_COUNTERS_PERFLOWPM_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_1_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (v) ) + +#define BBH_RX_2_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ( BBH_RX_2_PER_FLOW_PM_COUNTERS_ADDRESS + BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_OFFSET ) +#define BBH_RX_2_PER_FLOW_PM_COUNTERS_PERFLOWPM_READ_I( r, i ) READ_I_32( ( BBH_RX_2_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (r) ) +#define BBH_RX_2_PER_FLOW_PM_COUNTERS_PERFLOWPM_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_2_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (v) ) + +#define BBH_RX_3_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ( BBH_RX_3_PER_FLOW_PM_COUNTERS_ADDRESS + BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_OFFSET ) +#define BBH_RX_3_PER_FLOW_PM_COUNTERS_PERFLOWPM_READ_I( r, i ) READ_I_32( ( BBH_RX_3_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (r) ) +#define BBH_RX_3_PER_FLOW_PM_COUNTERS_PERFLOWPM_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_3_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (v) ) + +#define BBH_RX_4_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ( BBH_RX_4_PER_FLOW_PM_COUNTERS_ADDRESS + BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_OFFSET ) +#define BBH_RX_4_PER_FLOW_PM_COUNTERS_PERFLOWPM_READ_I( r, i ) READ_I_32( ( BBH_RX_4_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (r) ) +#define BBH_RX_4_PER_FLOW_PM_COUNTERS_PERFLOWPM_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_4_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (v) ) + +#define BBH_RX_5_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ( BBH_RX_5_PER_FLOW_PM_COUNTERS_ADDRESS + BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_OFFSET ) +#define BBH_RX_5_PER_FLOW_PM_COUNTERS_PERFLOWPM_READ_I( r, i ) READ_I_32( ( BBH_RX_5_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (r) ) +#define BBH_RX_5_PER_FLOW_PM_COUNTERS_PERFLOWPM_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_5_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (v) ) + +#define BBH_RX_6_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ( BBH_RX_6_PER_FLOW_PM_COUNTERS_ADDRESS + BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_OFFSET ) +#define BBH_RX_6_PER_FLOW_PM_COUNTERS_PERFLOWPM_READ_I( r, i ) READ_I_32( ( BBH_RX_6_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (r) ) +#define BBH_RX_6_PER_FLOW_PM_COUNTERS_PERFLOWPM_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_6_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_ARRAY [ ] ; + +#define BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_WRITE( i, k, v ) WRITE_I_32( BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_ARRAY [ i ], (k), (v) ) +#define BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_READ( i, k, r ) READ_I_32( BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Per_flow_PM */ + uint32_t pmcnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM ; +#else +typedef struct +{ uint32_t pmcnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Per_flow_PM */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM ; +#endif + +/*****************************************************************************************/ +/* BB_Cfg */ +/* Each BBH unit has its own position on the BB tree. This position defines the Route ad */ +/* dress when approaching the Runner, S/DMA or S/BPM. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_BPMROUTE_BPM_ROUTE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_BPMROUTE_BPM_ROUTE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_RUNNERROUTE_RUNNER_ROUTE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_RUNNERROUTE_RUNNER_ROUTE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_DMAROUTE_DMA_ROUTE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_DMAROUTE_DMA_ROUTE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_OFFSET ( 0x00000000 ) + +#define BBH_TX_0_CONFIGURATIONS_BBCFG_TX_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG_TX_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_BBCFG_TX_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_BBCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_BBCFG_TX_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG_TX_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_BBCFG_TX_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_BBCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_BBCFG_TX_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG_TX_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_BBCFG_TX_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_BBCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_BBCFG_TX_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG_TX_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_BBCFG_TX_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_BBCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_BBCFG_TX_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG_TX_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_BBCFG_TX_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_BBCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_BBCFG_TX_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG_TX_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_BBCFG_TX_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_BBCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_BBCFG_TX_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG_TX_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_BBCFG_TX_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_BBCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_BBCFG_TX_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_BBCFG_TX_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_BBCFG_TX_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_BBCFG_TX_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_route_address */ + uint32_t bpmroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_route_address */ + uint32_t runnerroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_route_address */ + uint32_t dmaroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_BBCFG_TX ; +#else +typedef struct +{ uint32_t r1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t dmaroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_route_address */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t runnerroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_route_address */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t bpmroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_route_address */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_BBCFG_TX ; +#endif + +/*****************************************************************************************/ +/* BB_Cfg_1 */ +/* Each BBH unit has its own position on the BB tree. This position defines the Route ad */ +/* dress when approaching the Runner, S/DMA or S/BPM. This register is relevalt only fo */ +/* r Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_RNRSTSROUTE_RNR_STS_ROUTE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_RNRSTSROUTE_RNR_STS_ROUTE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_SBPMROUTE_BPM_ROUTE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_SBPMROUTE_BPM_ROUTE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_SDMAROUTE_DMA_ROUTE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_SDMAROUTE_DMA_ROUTE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_OFFSET ( 0x00000004 ) + +#define BBH_TX_0_CONFIGURATIONS_BBCFG1_TX_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG1_TX_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_BBCFG1_TX_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_BBCFG1_TX_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_BBCFG1_TX_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG1_TX_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_BBCFG1_TX_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_BBCFG1_TX_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_BBCFG1_TX_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG1_TX_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_BBCFG1_TX_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_BBCFG1_TX_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_BBCFG1_TX_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG1_TX_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_BBCFG1_TX_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_BBCFG1_TX_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_BBCFG1_TX_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG1_TX_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_BBCFG1_TX_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_BBCFG1_TX_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_BBCFG1_TX_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG1_TX_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_BBCFG1_TX_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_BBCFG1_TX_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_BBCFG1_TX_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG1_TX_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_BBCFG1_TX_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_BBCFG1_TX_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_BBCFG1_TX_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_BBCFG1_TX_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_BBCFG1_TX_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_BBCFG1_TX_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r3 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* runner_sts_route_address */ + uint32_t rnrstsroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_route_address */ + uint32_t sbpmroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_route_address */ + uint32_t sdmaroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_BBCFG1_TX ; +#else +typedef struct +{ uint32_t sdmaroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_route_address */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t sbpmroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_route_address */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t rnrstsroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* runner_sts_route_address */ + uint32_t r3 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_BBCFG1_TX ; +#endif + +/*****************************************************************************************/ +/* DDR_cfg */ +/* The BBH reads the packet from the DDR. The Packet is arranged in the DDR in the follo */ +/* wing way: There are four Header Numbers located in a dedicated part of the DDR. Addr */ +/* ess of these headers = Base (configurable) + 256 (4 headers) * BN; And a single Heade */ +/* r Number located at the buffer. In addition there is a configurable payload start off */ +/* set (4 bits). The Hn and Offset are delivered in the PD. In addition there is a confi */ +/* gurable offset resolution (1, 2 and 4 bytes) and configurable header size. Order of t */ +/* ransmission is: if H0 is required=> Then H0 is transmitted and consecutive to that is */ +/* the packet payload (main stream applications). If Hn is required then Hn is transmit */ +/* ted and then packet payload (which will start at the PO). When transmitting a packet */ +/* with HN=0, the transmission will be as follows: Start address = Offset* OFFSET_RESO */ +/* LUTION + 0 * HEADER_SIZE Transmission then continues until the packet is over. When */ +/* transmitting a packet with HN>0, the transmission will be as follows: Start address */ +/* = + (HN-1) * 64 HN BASE is a pointer to the first extra buffer in DDR whi */ +/* ch is allocated for HN headers. The size of each extra buffer is 256 bytes, fixed. Th */ +/* e transmission is HEADER_SIZE bytes long, and then transmission jumps to a new addres */ +/* s for the rest of the packet: Continue address = Offset*OFFSET_RESOLUTION + HEADER_S */ +/* IZE */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_TXOFFSET_RST_VALUE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_TXOFFSET_RST_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_HNSIZE_MIN_VALUE_VALUE ( 0x4 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_HNSIZE_MAX_VALUE_VALUE ( 0x40 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_HNSIZE_MAX_VALUE_VALUE_RESET_VALUE ( 0x40 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_BYTERESUL_RES_1B_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_BYTERESUL_RES_1B_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_BYTERESUL_RES_2B_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_BUFSIZE_BUF_2K_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_BUFSIZE_BUF_2K_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_BUFSIZE_BUF_4K_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_BUFSIZE_BUF_16K_VALUE ( 0x2 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_BUFSIZE_BUF_2_5K_VALUE ( 0x3 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_BPMMSG_14_BIT_BN_WIDTH_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_BPMMSG_15_BIT_BN_WIDTH_VALUE ( 0x1 ) + + +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_OFFSET ( 0x00000008 ) + +#define BBH_TX_0_CONFIGURATIONS_DDRCFG_TX_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRCFG_TX_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_DDRCFG_TX_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_DDRCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_DDRCFG_TX_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRCFG_TX_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_DDRCFG_TX_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_DDRCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_DDRCFG_TX_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRCFG_TX_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_DDRCFG_TX_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_DDRCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_DDRCFG_TX_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRCFG_TX_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_DDRCFG_TX_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_DDRCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_DDRCFG_TX_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRCFG_TX_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_DDRCFG_TX_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_DDRCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_DDRCFG_TX_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRCFG_TX_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_DDRCFG_TX_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_DDRCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_DDRCFG_TX_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRCFG_TX_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_DDRCFG_TX_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_DDRCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_DDRCFG_TX_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_DDRCFG_TX_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_DDRCFG_TX_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_DDRCFG_TX_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TX_offset */ + uint32_t txoffset : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HN_size */ + uint32_t hnsize : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PO_bytes_resulotion */ + uint32_t byteresul : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + uint32_t bpmmsg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + uint32_t r0 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_buffer_size */ + uint32_t bufsize : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_DDRCFG_TX ; +#else +typedef struct +{ uint32_t bufsize : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_buffer_size */ + uint32_t r0 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + uint32_t bpmmsg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t byteresul : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PO_bytes_resulotion */ + uint32_t r2 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t hnsize : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HN_size */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t txoffset : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TX_offset */ + uint32_t r4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_DDRCFG_TX ; +#endif + +/*****************************************************************************************/ +/* HN_BASE */ +/* The BBH reads the packet from the DDR. The Packet is arranged in the DDR in the follo */ +/* wing way: There are seven Header Numbers located in a dedicated part of the DDR. Add */ +/* ress of these headers = Base (configurable) + 512 (7 headers) * BN; And a single Head */ +/* er Number located at the buffer. In addition there is a configurable payload start of */ +/* fset (4 bits). The Hn and Offset are delivered in the PD. In addition there is a conf */ +/* igurable offset resolution (1, 2 and 4 bytes) and configurable header size. Order of */ +/* transmission is: if H0 is required=> Then H0 is transmitted and consecutive to that i */ +/* s the packet payload (main stream applications). If Hn is required then Hn is transmi */ +/* tted and then packet payload (which will start at the PO). (Motivation: In the case o */ +/* f Multicast packets with a different VLAN manipulation command per EMAC the main buff */ +/* ers are not replicated, but the Runner/CPU created a unique header per copy of the mu */ +/* lticast packet). When transmitting a packet with HN=0, the transmission will be as f */ +/* ollows: Start address = Offset* OFFSET_RESOLUTION + 0 * HEADER_SIZE Transmission th */ +/* en continues until the packet is over. When transmitting a packet with HN>0, the tra */ +/* nsmission will be as follows: Start address = + (HN-1) * 64 HN BASE is a */ +/* pointer to the first extra buffer in DDR which is allocated for HN headers. The size */ +/* of each extra buffer is 512 bytes, fixed. The transmission is HEADER_SIZE bytes long, */ +/* and then transmission jumps to a new address for the rest of the packet: Continue a */ +/* ddress = Offset*OFFSET_RESOLUTION + HEADER_SIZE */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_HNBASE_HNBASE_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_HNBASE_HNBASE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_HNBASE_OFFSET ( 0x0000000C ) + +#define BBH_TX_0_CONFIGURATIONS_HNBASE_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_HNBASE_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_HNBASE_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_HNBASE_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_HNBASE_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_HNBASE_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_HNBASE_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_HNBASE_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_HNBASE_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_HNBASE_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_HNBASE_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_HNBASE_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_HNBASE_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_HNBASE_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_HNBASE_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_HNBASE_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_HNBASE_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_HNBASE_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_HNBASE_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_HNBASE_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_HNBASE_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_HNBASE_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_HNBASE_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_HNBASE_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_HNBASE_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_HNBASE_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_HNBASE_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_HNBASE_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_HNBASE_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_HNBASE_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_HNBASE_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_HNBASE_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_HNBASE_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_HNBASE_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_HNBASE_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_HNBASE_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_HNBASE_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_HNBASE_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_HNBASE_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_HNBASE_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_HNBASE_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_HNBASE_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_HNBASE_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_HNBASE_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_HNBASE_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_HNBASE_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_HNBASE_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* HN_base */ + uint32_t hnbase : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_HNBASE ; +#else +typedef struct +{ uint32_t hnbase : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HN_base */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_HNBASE ; +#endif + +/*****************************************************************************************/ +/* Task_numbers_LSB */ +/* The BBH manages 40 queues for GPON or 32 queues for EPON. Each of the first 8 Queues */ +/* may have a unique Runner task number. Queues 8-39 have all the same configurable ta */ +/* sk number. This register defines the tasks for Queues 0-3. For Ethernet queue 0 sho */ +/* uld be configured. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_TASKLSB_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_TASK3_TASK_NUMBER_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_TASK3_TASK_NUMBER_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_TASK2_TASK_NUMBER_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_TASK2_TASK_NUMBER_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_TASK1_TASK_NUMBER_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_TASK1_TASK_NUMBER_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_TASK0_TASK_NUMBER_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_TASK0_TASK_NUMBER_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_TASKLSB_OFFSET ( 0x00000010 ) + +#define BBH_TX_0_CONFIGURATIONS_TASKLSB_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKLSB_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_TASKLSB_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_TASKLSB_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKLSB_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_TASKLSB_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_TASKLSB_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKLSB_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_TASKLSB_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_TASKLSB_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKLSB_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_TASKLSB_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_TASKLSB_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKLSB_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_TASKLSB_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_TASKLSB_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKLSB_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_TASKLSB_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_TASKLSB_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKLSB_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_TASKLSB_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_TASKLSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_TASKLSB_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_TASKLSB_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_TASKLSB_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_TASKLSB_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_TASKLSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_3 */ + uint32_t task3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_2 */ + uint32_t task2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_1 */ + uint32_t task1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_0 */ + uint32_t task0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_TASKLSB ; +#else +typedef struct +{ uint32_t task0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_0 */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_1 */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_2 */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_3 */ + uint32_t r4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_TASKLSB ; +#endif + +/*****************************************************************************************/ +/* Task_numbers_MSB */ +/* The BBH manages 40 queues for GPON or 32 queues for EPON. Each of the first 8 Queues */ +/* may have a unique Runner task number. Queues 8-39 have all the same configurable ta */ +/* sk number. This register defines the tasks for Queues 4-7. For Ethernet queue 0 sho */ +/* uld be configured. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_TASKMSB_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_TASK7_TASK_NUMBER_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_TASK7_TASK_NUMBER_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_TASK6_TASK_NUMBER_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_TASK6_TASK_NUMBER_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_TASK5_TASK_NUMBER_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_TASK5_TASK_NUMBER_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_TASK4_TASK_NUMBER_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_TASK4_TASK_NUMBER_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_TASKMSB_OFFSET ( 0x00000014 ) + +#define BBH_TX_0_CONFIGURATIONS_TASKMSB_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKMSB_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_TASKMSB_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_TASKMSB_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKMSB_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_TASKMSB_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_TASKMSB_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKMSB_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_TASKMSB_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_TASKMSB_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKMSB_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_TASKMSB_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_TASKMSB_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKMSB_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_TASKMSB_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_TASKMSB_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKMSB_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_TASKMSB_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_TASKMSB_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKMSB_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_TASKMSB_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_TASKMSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_TASKMSB_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_TASKMSB_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_TASKMSB_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_TASKMSB_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_TASKMSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_7 */ + uint32_t task7 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_6 */ + uint32_t task6 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_5 */ + uint32_t task5 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_4 */ + uint32_t task4 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_TASKMSB ; +#else +typedef struct +{ uint32_t task4 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_4 */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task5 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_5 */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task6 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_6 */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task7 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_7 */ + uint32_t r4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_TASKMSB ; +#endif + +/*****************************************************************************************/ +/* Task_numbers_8-39 */ +/* The BBH manages 40 queues for GPON or 32 queues for EPON. Each of the first 8 Queues */ +/* may have a unique Runner task number. Queues 8-39 have all the same configurable ta */ +/* sk number. This register defines the tasks for Queues 8-39. For Ethernet queue 0 sh */ +/* ould be configured. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_TASK8_39_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASK8_39_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASK8_39_TASK8_39_TASK_NUMBER_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TASK8_39_TASK8_39_TASK_NUMBER_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_TASK8_39_OFFSET ( 0x00000018 ) + +#define BBH_TX_0_CONFIGURATIONS_TASK8_39_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASK8_39_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_TASK8_39_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_TASK8_39_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASK8_39_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_TASK8_39_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_TASK8_39_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASK8_39_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_TASK8_39_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_TASK8_39_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASK8_39_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_TASK8_39_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_TASK8_39_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASK8_39_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_TASK8_39_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_TASK8_39_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASK8_39_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_TASK8_39_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_TASK8_39_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASK8_39_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_TASK8_39_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_TASK8_39_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_TASK8_39_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_TASK8_39_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_TASK8_39_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_TASK8_39_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_TASK8_39_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_8-39 */ + uint32_t task8_39 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_TASK8_39 ; +#else +typedef struct +{ uint32_t task8_39 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_8-39 */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_TASK8_39 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_size_0_7 */ +/* The BBH manages 40 queues for GPON and 32 queues for EPON (FIFO per TCONT/LLID). For */ +/* each queue it manages a PD FIFO. A total of 128 PDs (GPON) or 256 PDs (EPON) are av */ +/* ailable for all queues. For each Queue the SW configures the base and the size with */ +/* in these 128/256 PDs. This register defines the PD FIFO size for queues 0-7. For Et */ +/* hernet queue 0 should be configured. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE7_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE7_DEFAULT_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE7_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE7_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE7_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE7_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE6_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE6_DEFAULT_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE6_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE6_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE6_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE6_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE5_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE5_DEFAULT_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE5_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE5_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE5_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE5_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE4_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE4_DEFAULT_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE4_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE4_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE4_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE4_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE3_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE3_DEFAULT_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE3_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE3_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE3_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE3_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE2_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE2_DEFAULT_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE2_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE2_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE2_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE2_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE1_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE1_DEFAULT_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE1_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE1_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE1_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE1_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE0_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE0_DEFAULT_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE0_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE0_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE0_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_FIFOSIZE0_MAX_EPON_VALUE ( 0xF ) + + +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_OFFSET ( 0x0000001C ) + +#define BBH_TX_0_CONFIGURATIONS_PDSIZE0_7_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE0_7_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_PDSIZE0_7_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_PDSIZE0_7_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_PDSIZE0_7_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE0_7_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_PDSIZE0_7_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_PDSIZE0_7_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_PDSIZE0_7_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE0_7_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_PDSIZE0_7_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_PDSIZE0_7_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_PDSIZE0_7_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE0_7_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_PDSIZE0_7_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_PDSIZE0_7_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_PDSIZE0_7_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE0_7_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_PDSIZE0_7_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_PDSIZE0_7_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_PDSIZE0_7_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE0_7_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_PDSIZE0_7_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_PDSIZE0_7_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_PDSIZE0_7_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE0_7_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_PDSIZE0_7_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_PDSIZE0_7_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_PDSIZE0_7_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_PDSIZE0_7_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_PDSIZE0_7_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_PDSIZE0_7_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* FIFO_size_7 */ + uint32_t fifosize7 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_6 */ + uint32_t fifosize6 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_5 */ + uint32_t fifosize5 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_4 */ + uint32_t fifosize4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_3 */ + uint32_t fifosize3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_2 */ + uint32_t fifosize2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_1 */ + uint32_t fifosize1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_0 */ + uint32_t fifosize0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDSIZE0_7 ; +#else +typedef struct +{ uint32_t fifosize0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_0 */ + uint32_t fifosize1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_1 */ + uint32_t fifosize2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_2 */ + uint32_t fifosize3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_3 */ + uint32_t fifosize4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_4 */ + uint32_t fifosize5 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_5 */ + uint32_t fifosize6 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_6 */ + uint32_t fifosize7 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_7 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDSIZE0_7 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_size_8_39 */ +/* The BBH manages 40 queues for GPON and 32 queues for EPON (FIFO per queue). For each */ +/* queue it manages a PD FIFO. A total of 128 PDs for GPON and 256 PDs for EPON are av */ +/* ailable for all queues. For each Queue the SW configures the base and the size with */ +/* in these 128/256 PDs. This register defines the PD FIFO size for TCONTs 8-39. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE32_39_MAX_EPON_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE32_39_DEFAULT_EPON_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE32_39_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE32_39_DEFAULT_GPON_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE32_39_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE32_39_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE24_31_DEFAULT_GPON_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE24_31_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE24_31_DEFAULT_EPON_VALUE ( 0x4 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE24_31_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x4 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE24_31_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE24_31_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE16_23_DEFAULT_GPON_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE16_23_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE16_23_DEFAULT_EPON_VALUE ( 0x4 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE16_23_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x4 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE16_23_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE16_23_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE8_15_DEFAULT_GPON_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE8_15_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE8_15_DEFAULT_EPON_VALUE ( 0x4 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE8_15_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x4 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE8_15_MAX_GPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_FIFOSIZE8_15_MAX_EPON_VALUE ( 0xF ) + + +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_OFFSET ( 0x00000020 ) + +#define BBH_TX_0_CONFIGURATIONS_PDSIZE8_39_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE8_39_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_PDSIZE8_39_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_PDSIZE8_39_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_PDSIZE8_39_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE8_39_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_PDSIZE8_39_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_PDSIZE8_39_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_PDSIZE8_39_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE8_39_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_PDSIZE8_39_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_PDSIZE8_39_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_PDSIZE8_39_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE8_39_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_PDSIZE8_39_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_PDSIZE8_39_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_PDSIZE8_39_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE8_39_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_PDSIZE8_39_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_PDSIZE8_39_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_PDSIZE8_39_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE8_39_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_PDSIZE8_39_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_PDSIZE8_39_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_PDSIZE8_39_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE8_39_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_PDSIZE8_39_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_PDSIZE8_39_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_PDSIZE8_39_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_PDSIZE8_39_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_PDSIZE8_39_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_PDSIZE8_39_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r3 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_32_39 */ + uint32_t fifosize32_39 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_24_31 */ + uint32_t fifosize24_31 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_16_23 */ + uint32_t fifosize16_23 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_8_15 */ + uint32_t fifosize8_15 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDSIZE8_39 ; +#else +typedef struct +{ uint32_t fifosize8_15 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_8_15 */ + uint32_t fifosize16_23 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_16_23 */ + uint32_t fifosize24_31 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_24_31 */ + uint32_t fifosize32_39 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_32_39 */ + uint32_t r3 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDSIZE8_39 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_base_0_3 */ +/* The BBH manages 40 queues for GPON or 32 queus for EPON (1 for each TCONT/LLID). For */ +/* each queue it manages a PD FIFO. A total of 128 PDs (GPON) or 256 (EPON) are availa */ +/* ble for all queues. For each Queue the SW configures the base and the size within t */ +/* hese 128/256 PDs. This register defines the PD FIFO base for TCONTs 0-3. This confi */ +/* guration is irrelevant for Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE3_DEFAULT_GPON_VALUE ( 0x18 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE3_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x18 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE3_DEFAULT_EPON_VALUE ( 0x30 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE3_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x30 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE3_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE3_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE2_DEFAULT_GPON_VALUE ( 0x10 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE2_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x10 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE2_DEFAULT_EPON_VALUE ( 0x20 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE2_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x20 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE2_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE2_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE1_DEFAULT_GPON_VALUE ( 0x8 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE1_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x8 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE1_DEFAULT_EPON_VALUE ( 0x10 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE1_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x10 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE1_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE1_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE0_DEFAULT_EPON_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE0_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE0_DEFAULT_GPON_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE0_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE0_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_FIFOBASE0_MAX_EPON_VALUE ( 0xFF ) + + +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_OFFSET ( 0x00000024 ) + +#define BBH_TX_0_CONFIGURATIONS_PDBASE0_3_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE0_3_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_PDBASE0_3_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE0_3_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_PDBASE0_3_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE0_3_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_PDBASE0_3_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE0_3_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_PDBASE0_3_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE0_3_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_PDBASE0_3_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE0_3_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_PDBASE0_3_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE0_3_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_PDBASE0_3_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_PDBASE0_3_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_PDBASE0_3_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_PDBASE0_3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* FIFO_base_3 */ + uint32_t fifobase3 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_2 */ + uint32_t fifobase2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_1 */ + uint32_t fifobase1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_0 */ + uint32_t fifobase0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDBASE0_3 ; +#else +typedef struct +{ uint32_t fifobase0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_0 */ + uint32_t fifobase1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_1 */ + uint32_t fifobase2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_2 */ + uint32_t fifobase3 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_3 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDBASE0_3 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_base_4_7 */ +/* The BBH manages 40 queues for GPON or 32 queus for EPON (1 for each TCONT/LLID). For */ +/* each queue it manages a PD FIFO. A total of 128 PDs (GPON) or 256 (EPON) are availa */ +/* ble for all queues. For each Queue the SW configures the base and the size within t */ +/* hese 128/256 PDs. This register defines the PD FIFO base for TCONTs 4-7. This confi */ +/* guration is irrelevant for Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE7_DEFAULT_GPON_VALUE ( 0x38 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE7_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x38 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE7_DEFAULT_EPON_VALUE ( 0x70 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE7_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x70 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE7_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE7_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE6_DEFAULT_GPON_VALUE ( 0x30 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE6_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x30 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE6_DEFAULT_EPON_VALUE ( 0x60 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE6_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x60 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE6_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE6_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE5_DEFAULT_GPON_VALUE ( 0x28 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE5_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x28 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE5_DEFAULT_EPON_VALUE ( 0x50 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE5_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x50 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE5_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE5_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE4_DEFAULT_GPON_VALUE ( 0x20 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE4_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x20 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE4_DEFAULT_EPON_VALUE ( 0x40 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE4_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x40 ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE4_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_FIFOBASE4_MAX_EPON_VALUE ( 0xFF ) + + +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_OFFSET ( 0x00000028 ) + +#define BBH_TX_0_CONFIGURATIONS_PDBASE4_7_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE4_7_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_PDBASE4_7_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE4_7_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_PDBASE4_7_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE4_7_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_PDBASE4_7_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE4_7_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_PDBASE4_7_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE4_7_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_PDBASE4_7_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE4_7_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_PDBASE4_7_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE4_7_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_PDBASE4_7_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_PDBASE4_7_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_PDBASE4_7_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_PDBASE4_7_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* FIFO_base_7 */ + uint32_t fifobase7 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_6 */ + uint32_t fifobase6 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_5 */ + uint32_t fifobase5 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_4 */ + uint32_t fifobase4 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDBASE4_7 ; +#else +typedef struct +{ uint32_t fifobase4 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_4 */ + uint32_t fifobase5 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_5 */ + uint32_t fifobase6 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_6 */ + uint32_t fifobase7 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_7 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDBASE4_7 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_base_8_39 */ +/* The BBH manages 40 queues (GPON) or 32 queus (EPON). For each queue it manages a PD F */ +/* IFO. A total of 128 PDs (GPON) or 256 PDs (EPON) are available for all queues. Fo */ +/* r each Queue the SW configures the base and the size within these 128/256 PDs. This */ +/* register defines the PD FIFO base for queues 8-39. This configuration is irrelevant */ +/* for Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE32_39_DEFAULT_EPON_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE32_39_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE32_39_MAX_EPON_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE32_39_DEFAULT_GPON_VALUE ( 0x70 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE32_39_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x70 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE32_39_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE24_31_DEFAULT_GPON_VALUE ( 0x60 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE24_31_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x60 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE24_31_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE24_31_DEFAULT_EPON_VALUE ( 0xD0 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE24_31_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xD0 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE24_31_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE16_23_DEFAULT_GPON_VALUE ( 0x50 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE16_23_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x50 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE16_23_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE16_23_DEFAULT_EPON_VALUE ( 0xA8 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE16_23_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xA8 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE16_23_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE8_15_DEFAULT_GPON_VALUE ( 0x40 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE8_15_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x40 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE8_15_MAX_GPON_VALUE ( 0x7F ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE8_15_DEFAULT_EPON_VALUE ( 0x80 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE8_15_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x80 ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_FIFOBASE8_15_MAX_EPON_VALUE ( 0xFF ) + + +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_OFFSET ( 0x0000002C ) + +#define BBH_TX_0_CONFIGURATIONS_PDBASE8_39_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE8_39_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_PDBASE8_39_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE8_39_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_PDBASE8_39_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE8_39_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_PDBASE8_39_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE8_39_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_PDBASE8_39_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE8_39_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_PDBASE8_39_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE8_39_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_PDBASE8_39_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE8_39_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_PDBASE8_39_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_PDBASE8_39_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_PDBASE8_39_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_PDBASE8_39_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* FIFO_base_32_39 */ + uint32_t fifobase32_39 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_24_31 */ + uint32_t fifobase24_31 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_16_23 */ + uint32_t fifobase16_23 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_8_15 */ + uint32_t fifobase8_15 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDBASE8_39 ; +#else +typedef struct +{ uint32_t fifobase8_15 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_8_15 */ + uint32_t fifobase16_23 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_16_23 */ + uint32_t fifobase24_31 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_24_31 */ + uint32_t fifobase32_39 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_32_39 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDBASE8_39 ; +#endif + +/*****************************************************************************************/ +/* PD_bytes_threshold_EN */ +/* The BBH requests PDs from the Runner and maintains a pre-fetch PDs FIFO. The PDs pre */ +/* fetch is limited either by the PD FIFO configurable size or according to the total n */ +/* umber of bytes (deducting bytes already requested/transmitted) for preventing HOL. Fu */ +/* ll configuration for the first 8 TCONT and one configuration per group of 8 TCONTs fo */ +/* r the rest. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_PD_LIMIT_DISABLE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_PD_LIMIT_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_PD_LIMIT_ENABLE_VALUE ( 0x1 ) + + +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_OFFSET ( 0x00000030 ) + +#define BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_enable */ + uint32_t pdlimiten : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN ; +#else +typedef struct +{ uint32_t pdlimiten : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_enable */ + uint32_t reserved1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN ; +#endif + +/*****************************************************************************************/ +/* PD_bytes_threshold */ +/* The BBH requests PDs from the Runner and maintains a pre-fetch PDs FIFO. The PDs pre */ +/* fetch is limited either by the PD FIFO configurable size or according to the total n */ +/* umber of bytes (deducting bytes already requested/transmitted) for preventing HOL. Fu */ +/* ll configuration for the first 8 TCONT and one configuration for the rest (TCONTs 8-3 */ +/* 9). Registers 0-3 define the configuration for the first 8 TCONT and register 4 defi */ +/* nes the configuration for TCONTs 8-39 (in the even field). */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_R2_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_R2_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_PDLIMITEVEN_DEFAULT_VALUE ( 0x180 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_PDLIMITEVEN_DEFAULT_VALUE_RESET_VALUE ( 0x180 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_PDLIMITODD_DEFAULT_VALUE ( 0x180 ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_PDLIMITODD_DEFAULT_VALUE_RESET_VALUE ( 0x180 ) + + +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_OFFSET ( 0x00000034 ) + +#define BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_PD_BYTE_TH_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_WRITE( i, k, v ) WRITE_I_32( BBH_TX_CONFIGURATIONS_PD_BYTE_TH_ARRAY [ i ], (k), (v) ) +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_READ( i, k, r ) READ_I_32( BBH_TX_CONFIGURATIONS_PD_BYTE_TH_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_even */ + uint32_t pdlimiteven : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_odd */ + uint32_t pdlimitodd : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PD_BYTE_TH ; +#else +typedef struct +{ uint32_t pdlimitodd : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_odd */ + uint32_t r1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t pdlimiteven : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_even */ + uint32_t r2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PD_BYTE_TH ; +#endif + +/*****************************************************************************************/ +/* DMA_configurations */ +/* The BBH reads the packet data from the DDR in chunks (with a maximal size of 128 byte */ +/* s). For each chunk the BBH writes a read request (descriptor) into the DMA memory sp */ +/* ace. The read descriptors are arranged in a predefined space in the DMA memory and ma */ +/* naged in a cyclic FIFO style. A special configuration limits the maximum number of */ +/* read requests. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_EPNURGNT_NORMAL_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_EPNURGNT_NORMAL_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_EPNURGNT_URGENT_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_MAXREQ_MIN_VALUE_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_MAXREQ_MAX_VALUE_VALUE ( 0x8 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_MAXREQ_MAX_VALUE_VALUE_RESET_VALUE ( 0x8 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_DESCBASE_DESC_BASE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_DESCBASE_DESC_BASE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_OFFSET ( 0x0000004C ) + +#define BBH_TX_0_CONFIGURATIONS_DMACFG_TX_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DMACFG_TX_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_DMACFG_TX_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_DMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_DMACFG_TX_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DMACFG_TX_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_DMACFG_TX_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_DMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_DMACFG_TX_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DMACFG_TX_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_DMACFG_TX_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_DMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_DMACFG_TX_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DMACFG_TX_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_DMACFG_TX_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_DMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_DMACFG_TX_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DMACFG_TX_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_DMACFG_TX_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_DMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_DMACFG_TX_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DMACFG_TX_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_DMACFG_TX_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_DMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_DMACFG_TX_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DMACFG_TX_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_DMACFG_TX_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_DMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_DMACFG_TX_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_DMACFG_TX_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_DMACFG_TX_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_DMACFG_TX_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Epon_read_urgent */ + uint32_t epnurgnt : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_number_of_requests */ + uint32_t maxreq : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Descriptor_FIFO_base */ + uint32_t descbase : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_DMACFG_TX ; +#else +typedef struct +{ uint32_t descbase : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Descriptor_FIFO_base */ + uint32_t r2 : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t maxreq : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_number_of_requests */ + uint32_t r3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t epnurgnt : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Epon_read_urgent */ + uint32_t r4 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_DMACFG_TX ; +#endif + +/*****************************************************************************************/ +/* SDMA_configurations */ +/* The BBH reads the packet data from the SRAM in a fixed size chunks (128 bytes). For */ +/* each chunk the BBH writes a read request (descriptor) into the SDMA memory space. The */ +/* read descriptors are arranged in a predefined space in the SDMA memory and managed i */ +/* n a cyclic FIFO style. A special configuration limits the maximum number of read re */ +/* quests. This register is relevalt only for Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_MAXREQ_MIN_VALUE_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_MAXREQ_MAX_VALUE_VALUE ( 0x4 ) +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_MAXREQ_MAX_VALUE_VALUE_RESET_VALUE ( 0x4 ) +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_DESCBASE_DESC_BASE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_DESCBASE_DESC_BASE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_OFFSET ( 0x00000050 ) + +#define BBH_TX_0_CONFIGURATIONS_SDMACFG_TX_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SDMACFG_TX_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_SDMACFG_TX_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_SDMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_SDMACFG_TX_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SDMACFG_TX_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_SDMACFG_TX_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_SDMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_SDMACFG_TX_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SDMACFG_TX_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_SDMACFG_TX_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_SDMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_SDMACFG_TX_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SDMACFG_TX_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_SDMACFG_TX_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_SDMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_SDMACFG_TX_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SDMACFG_TX_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_SDMACFG_TX_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_SDMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_SDMACFG_TX_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SDMACFG_TX_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_SDMACFG_TX_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_SDMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_SDMACFG_TX_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SDMACFG_TX_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_SDMACFG_TX_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_SDMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_SDMACFG_TX_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_SDMACFG_TX_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_SDMACFG_TX_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_SDMACFG_TX_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_number_of_requests */ + uint32_t maxreq : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Descriptor_FIFO_base */ + uint32_t descbase : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_SDMACFG_TX ; +#else +typedef struct +{ uint32_t descbase : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Descriptor_FIFO_base */ + uint32_t r1 : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t maxreq : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_number_of_requests */ + uint32_t r2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_SDMACFG_TX ; +#endif + +/*****************************************************************************************/ +/* Runner_configurations */ +/* TCONT address: The BBH requests a Packet descriptor from the Runner. The BBH sends a */ +/* wake-up request to the Runner (for a new PD). The wake-up request is written to addr */ +/* ess 0x8000 in the Runner. In the case of GPON peripheral the BBH writes the TCONT */ +/* number in a predefined address at the Runner SRAM and then sends a wake-up request to */ +/* the Runner. This register defines the TCONT address within the Runner address spac */ +/* e. SKB address: When the packet is transmitted from absolute address, then, instead */ +/* of releasing the BN, the BBH writes a 6 bits read counter into the Runner SRAM. It w */ +/* rites it into a pre-defined address + TCONT_NUM (for Ethernet TCONT_NUM = 0). This r */ +/* egister defines the SKB free base address within the Runner address */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_RUNNERCFG_SKBADDR_SKB_ADDRESS_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_RUNNERCFG_SKBADDR_SKB_ADDRESS_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_RUNNERCFG_TCONTADDR_TCONT_ADDRESS_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_RUNNERCFG_TCONTADDR_TCONT_ADDRESS_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_RUNNERCFG_OFFSET ( 0x00000054 ) + +#define BBH_TX_0_CONFIGURATIONS_RUNNERCFG_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_RUNNERCFG_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_RUNNERCFG_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_RUNNERCFG_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_RUNNERCFG_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_RUNNERCFG_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_RUNNERCFG_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_RUNNERCFG_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_RUNNERCFG_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_RUNNERCFG_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_RUNNERCFG_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_RUNNERCFG_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_RUNNERCFG_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_RUNNERCFG_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_RUNNERCFG_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_RUNNERCFG_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_RUNNERCFG_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_RUNNERCFG_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_RUNNERCFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* SKB_address */ + uint32_t skbaddr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TCONT_address */ + uint32_t tcontaddr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_RUNNERCFG ; +#else +typedef struct +{ uint32_t tcontaddr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TCONT_address */ + uint32_t skbaddr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SKB_address */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_RUNNERCFG ; +#endif + +/*****************************************************************************************/ +/* MDU_CFG */ +/* The BBH supports a special configurable mode to enable a faster packet bridging (for */ +/* EMAC and EPON only): -There will be a special configurable mode for transferring the */ +/* PD from the Runner into the BBH TX (for downstream only). -The Runner wont ACK the */ +/* BBH; therefore the BBH wont wake the TX task. -The Runner will push the PDs into t */ +/* he BBH (without any wakeup from the BBH). -Each time that the BBH reads a PD from t */ +/* he PD FIFO, it will write the read pointer into a pre-defined address in the Runner ( */ +/* enable by configuration). The pointer is 6 bits width (one bit larger than needed to */ +/* distinguish between full and empty). -The Runner should manage the congestion over t */ +/* he PD FIFO (in the BBH) by reading the BBH read pointer prior to each PD write. -PD */ +/* drop should be done by the Runner only. The BBH will drop PD when the FIFO is full a */ +/* nd will count each drop. The BBH wont release the BN in this case. FOR EMAC BBH, a p */ +/* re PD FIFO of 32 entries is added (no change of the first BN FIFO). For EPON BBH, */ +/* there will be a full threshold, which can be smaller than the actual size of the FIFO */ +/* . When the BBH will move from full to not full state, the BBH will wakeup the Runner. */ +/* */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_MDUMODE_PTRADDR_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_MDUMODE_PTRADDR_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_MDUMODE_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_MDUMODE_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_MDUMODE_MDUEN_DIS_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_MDUMODE_MDUEN_DIS_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_MDUMODE_MDUEN_EN_VALUE ( 0x1 ) + + +#define BBH_TX_CONFIGURATIONS_MDUMODE_OFFSET ( 0x00000058 ) + +#define BBH_TX_0_CONFIGURATIONS_MDUMODE_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MDUMODE_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_MDUMODE_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_MDUMODE_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MDUMODE_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_MDUMODE_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_MDUMODE_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MDUMODE_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_MDUMODE_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_MDUMODE_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MDUMODE_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_MDUMODE_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_MDUMODE_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MDUMODE_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_MDUMODE_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_MDUMODE_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MDUMODE_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_MDUMODE_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_MDUMODE_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MDUMODE_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_MDUMODE_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_MDUMODE_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_MDUMODE_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_MDUMODE_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_MDUMODE_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_MDUMODE_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_MDUMODE_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PTRADDR */ + uint32_t ptraddr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MDU_EN */ + uint32_t mduen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_MDUMODE ; +#else +typedef struct +{ uint32_t mduen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MDU_EN */ + uint32_t r1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t ptraddr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PTRADDR */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_MDUMODE ; +#endif + +/*****************************************************************************************/ +/* DDR_TM_BASE */ +/* The BBH calculate the DDR physical address according to the Buffer number and buffer */ +/* size and then adds the DDR TM base. The value of this register should match the rele */ +/* vant registers value in the BBH RX and in the Runner. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_DDRTMBASE_DDRTMBASE_DDR_TM_BASE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DDRTMBASE_DDRTMBASE_DDR_TM_BASE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_DDRTMBASE_OFFSET ( 0x0000005C ) + +#define BBH_TX_0_CONFIGURATIONS_DDRTMBASE_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRTMBASE_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_DDRTMBASE_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_DDRTMBASE_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_DDRTMBASE_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRTMBASE_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_DDRTMBASE_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_DDRTMBASE_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_DDRTMBASE_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRTMBASE_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_DDRTMBASE_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_DDRTMBASE_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_DDRTMBASE_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRTMBASE_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_DDRTMBASE_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_DDRTMBASE_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_DDRTMBASE_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRTMBASE_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_DDRTMBASE_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_DDRTMBASE_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_DDRTMBASE_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRTMBASE_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_DDRTMBASE_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_DDRTMBASE_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_DDRTMBASE_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRTMBASE_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_DDRTMBASE_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_DDRTMBASE_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_DDRTMBASE_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_DDRTMBASE_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_DDRTMBASE_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_DDRTMBASE_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_DDRTMBASE_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DDR_TM_BASE */ + uint32_t ddrtmbase : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_DDRTMBASE ; +#else +typedef struct +{ uint32_t ddrtmbase : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_TM_BASE */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_DDRTMBASE ; +#endif + +/*****************************************************************************************/ +/* Debug_select */ +/* This register selects 1 of 8 debug vectors. The selected vector is reflected to DBGO */ +/* UTREG. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_DBGSEL_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DBGSEL_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DBGSEL_DBGSEL_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_DBGSEL_DBGSEL_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_DBGSEL_OFFSET ( 0x00000060 ) + +#define BBH_TX_0_CONFIGURATIONS_DBGSEL_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DBGSEL_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_DBGSEL_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_DBGSEL_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_DBGSEL_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_DBGSEL_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_DBGSEL_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DBGSEL_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_DBGSEL_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_DBGSEL_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_DBGSEL_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_DBGSEL_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_DBGSEL_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DBGSEL_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_DBGSEL_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_DBGSEL_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_DBGSEL_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_DBGSEL_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_DBGSEL_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DBGSEL_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_DBGSEL_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_DBGSEL_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_DBGSEL_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_DBGSEL_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_DBGSEL_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DBGSEL_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_DBGSEL_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_DBGSEL_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_DBGSEL_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_DBGSEL_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_DBGSEL_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DBGSEL_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_DBGSEL_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_DBGSEL_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_DBGSEL_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_DBGSEL_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_DBGSEL_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DBGSEL_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_DBGSEL_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_DBGSEL_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_DBGSEL_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_DBGSEL_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_DBGSEL_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_DBGSEL_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_DBGSEL_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_DBGSEL_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_DBGSEL_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* debug_select */ + uint32_t dbgsel : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_DBGSEL ; +#else +typedef struct +{ uint32_t dbgsel : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* debug_select */ + uint32_t r1 : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_DBGSEL ; +#endif + +/*****************************************************************************************/ +/* TX_reset_command */ +/* This register enables reset of internal units (for possible WA purposes). */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_REQFIFORST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_REQFIFORST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_REQFIFORST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_STSFIFORST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_STSFIFORST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_STSFIFORST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SKBPTRRST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SKBPTRRST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SKBPTRRST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SRAMFIFORST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SRAMFIFORST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SRAMFIFORST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_DDRFIFORST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_DDRFIFORST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_DDRFIFORST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_OKFIFORST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_OKFIFORST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_OKFIFORST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SBPMFIFORST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SBPMFIFORST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SBPMFIFORST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_BPMFIFORST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_BPMFIFORST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_BPMFIFORST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SDMAPTRRST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SDMAPTRRST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_SDMAPTRRST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_DMAPTRRST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_DMAPTRRST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_DMAPTRRST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_PDFIFORST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_PDFIFORST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_PDFIFORST_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_CNTXTRST_NO_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_CNTXTRST_NO_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_CNTXTRST_RESET_VALUE ( 0x1 ) + + +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_OFFSET ( 0x00000064 ) + +#define BBH_TX_0_CONFIGURATIONS_TXRSTCMD_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TXRSTCMD_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_TXRSTCMD_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_TXRSTCMD_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_TXRSTCMD_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TXRSTCMD_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_TXRSTCMD_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_TXRSTCMD_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_TXRSTCMD_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TXRSTCMD_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_TXRSTCMD_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_TXRSTCMD_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_TXRSTCMD_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TXRSTCMD_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_TXRSTCMD_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_TXRSTCMD_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_TXRSTCMD_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TXRSTCMD_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_TXRSTCMD_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_TXRSTCMD_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_TXRSTCMD_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TXRSTCMD_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_TXRSTCMD_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_TXRSTCMD_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_TXRSTCMD_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TXRSTCMD_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_TXRSTCMD_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_TXRSTCMD_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_TXRSTCMD_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_TXRSTCMD_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_TXRSTCMD_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_TXRSTCMD_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REQ_FIFO_reset */ + uint32_t reqfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* STS_FIFOs_reset */ + uint32_t stsfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SKB_PTR_reset */ + uint32_t skbptrrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SRAM_FIFO_reset */ + uint32_t sramfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_FIFO_reset */ + uint32_t ddrfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Order_Keeper_FIFO_reset */ + uint32_t okfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_FIFO_reset */ + uint32_t sbpmfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_FIFO_reset */ + uint32_t bpmfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_write_pointer_reset */ + uint32_t sdmaptrrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_write_pointer_reset */ + uint32_t dmaptrrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PDs_FIFOs_reset */ + uint32_t pdfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_reset */ + uint32_t cntxtrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_TXRSTCMD ; +#else +typedef struct +{ uint32_t cntxtrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_reset */ + uint32_t pdfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PDs_FIFOs_reset */ + uint32_t dmaptrrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_write_pointer_reset */ + uint32_t sdmaptrrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_write_pointer_reset */ + uint32_t bpmfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_FIFO_reset */ + uint32_t sbpmfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_FIFO_reset */ + uint32_t okfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Order_Keeper_FIFO_reset */ + uint32_t ddrfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_FIFO_reset */ + uint32_t sramfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SRAM_FIFO_reset */ + uint32_t skbptrrst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SKB_PTR_reset */ + uint32_t stsfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* STS_FIFOs_reset */ + uint32_t reqfiforst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REQ_FIFO_reset */ + uint32_t r1 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_TXRSTCMD ; +#endif + +/*****************************************************************************************/ +/* EMAC1588 */ +/* EMAC configuration for 1588. An option to force the BBH to wait till the EMAC FIFO is */ +/* empty before issuing a DMA read command (of a 1588 packet only). This register is r */ +/* elevant for Ethernet only. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_EMAC1588_R1_RESERVED_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_EMAC1588_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_EMAC1588_EMAC1588_DONTWAITEMPTY_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_EMAC1588_EMAC1588_DONTWAITEMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_EMAC1588_EMAC1588_WAITEMPTY_VALUE ( 0x1 ) + + +#define BBH_TX_CONFIGURATIONS_EMAC1588_OFFSET ( 0x00000068 ) + +#define BBH_TX_0_CONFIGURATIONS_EMAC1588_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_EMAC1588_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_EMAC1588_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_EMAC1588_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_EMAC1588_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_EMAC1588_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_EMAC1588_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_EMAC1588_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_EMAC1588_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_EMAC1588_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_EMAC1588_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_EMAC1588_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_EMAC1588_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_EMAC1588_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_EMAC1588_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_EMAC1588_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_EMAC1588_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_EMAC1588_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_EMAC1588_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_EMAC1588_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_EMAC1588_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_EMAC1588_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_EMAC1588_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_EMAC1588_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_EMAC1588_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_EMAC1588_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_EMAC1588_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_EMAC1588_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_EMAC1588_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_EMAC1588_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_EMAC1588_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_EMAC1588_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_EMAC1588_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_EMAC1588_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_EMAC1588_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_EMAC1588_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_EMAC1588_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_EMAC1588_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_EMAC1588_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_EMAC1588_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_EMAC1588_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_EMAC1588_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_EMAC1588_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_EMAC1588_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_EMAC1588_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_EMAC1588_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_EMAC1588_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC1588 */ + uint32_t emac1588 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_EMAC1588 ; +#else +typedef struct +{ uint32_t emac1588 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC1588 */ + uint32_t r1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_EMAC1588 ; +#endif + +/*****************************************************************************************/ +/* SBPM_configurations */ +/* When packet transmission is done, the BBH releases the SBPM buffers. This register d */ +/* efines which release command is used: 1. Normal free with context 2. Special free w */ +/* ith context 3. free without context */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_SBPMCFG_R1_RESERVED_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_SBPMCFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_SBPMCFG_SPECIALFREE_NORMAL_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_SBPMCFG_SPECIALFREE_SPECIAL_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_SBPMCFG_SPECIALFREE_SPECIAL_VALUE_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_SBPMCFG_FREENOCNTXT_WITH_CONTEXT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_SBPMCFG_FREENOCNTXT_WITH_CONTEXT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_SBPMCFG_FREENOCNTXT_WITHOUT_CONTEXT_VALUE ( 0x1 ) + + +#define BBH_TX_CONFIGURATIONS_SBPMCFG_OFFSET ( 0x0000006C ) + +#define BBH_TX_0_CONFIGURATIONS_SBPMCFG_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SBPMCFG_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_SBPMCFG_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_SBPMCFG_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_SBPMCFG_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_SBPMCFG_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_SBPMCFG_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SBPMCFG_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_SBPMCFG_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_SBPMCFG_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_SBPMCFG_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_SBPMCFG_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_SBPMCFG_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SBPMCFG_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_SBPMCFG_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_SBPMCFG_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_SBPMCFG_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_SBPMCFG_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_SBPMCFG_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SBPMCFG_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_SBPMCFG_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_SBPMCFG_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_SBPMCFG_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_SBPMCFG_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_SBPMCFG_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SBPMCFG_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_SBPMCFG_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_SBPMCFG_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_SBPMCFG_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_SBPMCFG_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_SBPMCFG_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SBPMCFG_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_SBPMCFG_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_SBPMCFG_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_SBPMCFG_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_SBPMCFG_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_SBPMCFG_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SBPMCFG_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_SBPMCFG_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_SBPMCFG_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_SBPMCFG_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_SBPMCFG_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_SBPMCFG_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_SBPMCFG_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_SBPMCFG_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_SBPMCFG_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_SBPMCFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Special_free_with_context_en */ + uint32_t specialfree : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Free_without_context_en */ + uint32_t freenocntxt : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_SBPMCFG ; +#else +typedef struct +{ uint32_t freenocntxt : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Free_without_context_en */ + uint32_t specialfree : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Special_free_with_context_en */ + uint32_t r1 : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_SBPMCFG ; +#endif + +/*****************************************************************************************/ +/* PD_WKUP_THRESH_0_7 */ +/* The BBH manages 32 queues for EPON (FIFO per LLID). For each queue it manages a PD FI */ +/* FO. When a FIFO occupancy is above this wakeup threshold, the BBH will not wake-up */ +/* the Runner for sending a new PD. This threshold does not represent the actual size of */ +/* the FIFO. If a PD will arrive from the Runner when the FIFO is above the threshold, */ +/* it will not be dropped unless the FIFO is actually full. Relevant only for EPON BBH. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH7_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH7_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH7_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH6_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH6_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH6_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH5_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH5_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH5_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH4_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH4_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH4_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH3_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH3_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH3_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH2_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH2_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH2_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH1_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH1_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH1_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH0_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH0_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WKUPTHRESH0_MAX_EPON_VALUE ( 0xF ) + + +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_OFFSET ( 0x00000070 ) + +#define BBH_TX_0_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH0_7_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_PDWKUPH0_7_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_PDWKUPH0_7_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH0_7_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_PDWKUPH0_7_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_PDWKUPH0_7_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH0_7_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_PDWKUPH0_7_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_PDWKUPH0_7_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH0_7_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_PDWKUPH0_7_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_PDWKUPH0_7_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH0_7_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_PDWKUPH0_7_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_PDWKUPH0_7_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH0_7_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_PDWKUPH0_7_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_PDWKUPH0_7_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH0_7_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_PDWKUPH0_7_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_PDWKUPH0_7_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_PDWKUPH0_7_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_PDWKUPH0_7_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH0_7_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_PDWKUPH0_7_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* FIFO_wake_up_threshold_7 */ + uint32_t wkupthresh7 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_6 */ + uint32_t wkupthresh6 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_5 */ + uint32_t wkupthresh5 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_4 */ + uint32_t wkupthresh4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_3 */ + uint32_t wkupthresh3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_2 */ + uint32_t wkupthresh2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_1 */ + uint32_t wkupthresh1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_0 */ + uint32_t wkupthresh0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDWKUPH0_7 ; +#else +typedef struct +{ uint32_t wkupthresh0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_0 */ + uint32_t wkupthresh1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_1 */ + uint32_t wkupthresh2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_2 */ + uint32_t wkupthresh3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_3 */ + uint32_t wkupthresh4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_4 */ + uint32_t wkupthresh5 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_5 */ + uint32_t wkupthresh6 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_6 */ + uint32_t wkupthresh7 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_7 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDWKUPH0_7 ; +#endif + +/*****************************************************************************************/ +/* PD_WKUP_THRESH_8_31 */ +/* The BBH manages 32 queues for EPON (FIFO per LLID). For each queue it manages a PD FI */ +/* FO. When a FIFO occupancy is above this wakeup threshold, the BBH will not wake-up */ +/* the Runner for sending a new PD. This threshold does not represent the actual size of */ +/* the FIFO. If a PD will arrive from the Runner when the FIFO is above the threshold, */ +/* it will not be dropped unless the FIFO is actually full. For queues 8-31, this confi */ +/* guration is per octet. Relevant only for EPON BBH. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_WKUPTHRESH24_31_DEFAULT_EPON_VALUE ( 0x2 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_WKUPTHRESH24_31_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x2 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_WKUPTHRESH24_31_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_WKUPTHRESH16_23_DEFAULT_EPON_VALUE ( 0x2 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_WKUPTHRESH16_23_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x2 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_WKUPTHRESH16_23_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_R0_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_R0_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_WKUPTHRESH8_15_DEFAULT_EPON_VALUE ( 0x2 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_WKUPTHRESH8_15_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x2 ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_WKUPTHRESH8_15_MAX_EPON_VALUE ( 0xF ) + + +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_OFFSET ( 0x00000074 ) + +#define BBH_TX_0_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH8_31_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH8_31_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH8_31_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH8_31_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH8_31_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH8_31_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH8_31_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_PDWKUPH8_31_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_PDWKUPH8_31_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_PDWKUPH8_31_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_PDWKUPH8_31_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_24_31 */ + uint32_t wkupthresh24_31 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_16_23 */ + uint32_t wkupthresh16_23 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_8_15 */ + uint32_t wkupthresh8_15 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDWKUPH8_31 ; +#else +typedef struct +{ uint32_t wkupthresh8_15 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_8_15 */ + uint32_t r0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t wkupthresh16_23 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_16_23 */ + uint32_t r1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t wkupthresh24_31 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_24_31 */ + uint32_t r2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDWKUPH8_31 ; +#endif + +/*****************************************************************************************/ +/* PD_EMPTY_THRESHOLD */ +/* The BBH manages 32 queues for EPON (FIFO per LLID). For each queue it manages a PD FI */ +/* FO. Usually, the BBH orders PDs from the Runner in RR between all queues. In EPON BBH */ +/* , if a FIFO occupancy is below this threshold, the queue will have higher priority in */ +/* PD ordering arbitration (with RR between all the empty queues). This configuration */ +/* is global for all queues. Relevant only for EPON BBH. */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_PDEMPTY_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDEMPTY_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDEMPTY_EMPTY_MIN_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_PDEMPTY_EMPTY_DEFAULT_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_PDEMPTY_EMPTY_DEFAULT_VALUE_RESET_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_PDEMPTY_EMPTY_MAX_VALUE ( 0xF ) + + +#define BBH_TX_CONFIGURATIONS_PDEMPTY_OFFSET ( 0x00000078 ) + +#define BBH_TX_0_CONFIGURATIONS_PDEMPTY_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDEMPTY_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_PDEMPTY_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_PDEMPTY_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDEMPTY_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_PDEMPTY_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_PDEMPTY_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDEMPTY_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_PDEMPTY_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_PDEMPTY_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDEMPTY_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_PDEMPTY_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_PDEMPTY_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDEMPTY_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_PDEMPTY_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_PDEMPTY_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDEMPTY_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_PDEMPTY_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_PDEMPTY_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDEMPTY_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_PDEMPTY_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_PDEMPTY_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_PDEMPTY_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_PDEMPTY_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_PDEMPTY_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_PDEMPTY_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_PDEMPTY_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Empty_thershold */ + uint32_t empty : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDEMPTY ; +#else +typedef struct +{ uint32_t empty : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Empty_thershold */ + uint32_t r1 : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_PDEMPTY ; +#endif + +/*****************************************************************************************/ +/* ETH_TRANSMIT_TH */ +/* This register contains the Transmit threshold configurations for both DDR/PSRAM packe */ +/* ts; packet is transmitted only if the amount of bytes in the TX FIFO is higher or equ */ +/* al to the transmit threshold or if the whole packet is in the TX FIFO */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_ETHTT_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_URGENTEN_DISABLE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_URGENTEN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_URGENTEN_ENABLE_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_ACCEN_DISABLE_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_ACCEN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_ACCEN_ENABLE_VALUE ( 0x1 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_SRAMTT_DEFAULT_VALUE ( 0x20 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_SRAMTT_DEFAULT_VALUE_RESET_VALUE ( 0x20 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_DDRTT_DEFAULT_VALUE ( 0x1C0 ) +#define BBH_TX_CONFIGURATIONS_ETHTT_DDRTT_DEFAULT_VALUE_RESET_VALUE ( 0x1C0 ) + + +#define BBH_TX_CONFIGURATIONS_ETHTT_OFFSET ( 0x0000007C ) + +#define BBH_TX_0_CONFIGURATIONS_ETHTT_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_ETHTT_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_ETHTT_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_ETHTT_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_ETHTT_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_ETHTT_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_ETHTT_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_ETHTT_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_ETHTT_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_ETHTT_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_ETHTT_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_ETHTT_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_ETHTT_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_ETHTT_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_ETHTT_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_ETHTT_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_ETHTT_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_ETHTT_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_ETHTT_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_ETHTT_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_ETHTT_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_ETHTT_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_ETHTT_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_ETHTT_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_ETHTT_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_ETHTT_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_ETHTT_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_ETHTT_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_ETHTT_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_ETHTT_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_ETHTT_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_ETHTT_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_ETHTT_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_ETHTT_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_ETHTT_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_ETHTT_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_ETHTT_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_ETHTT_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_ETHTT_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_ETHTT_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_ETHTT_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_ETHTT_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_ETHTT_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_ETHTT_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_ETHTT_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_ETHTT_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_ETHTT_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* URGENT_EN */ + uint32_t urgenten : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACCURATE_REQ_EN */ + uint32_t accen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SRAM_TRANSMIT_TH */ + uint32_t sramtt : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_TRANSMIT_TH */ + uint32_t ddrtt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_ETHTT ; +#else +typedef struct +{ uint32_t ddrtt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_TRANSMIT_TH */ + uint32_t r2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t sramtt : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SRAM_TRANSMIT_TH */ + uint32_t r1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t accen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACCURATE_REQ_EN */ + uint32_t urgenten : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* URGENT_EN */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_ETHTT ; +#endif + +/*****************************************************************************************/ +/* DSL_MAXWLEN */ +/* VDSL max word len relevant only for VDSL BBH */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_MAXWLEN_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_MAXWLEN_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_MAXWLEN_MAXWLEN_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_MAXWLEN_MAXWLEN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_MAXWLEN_OFFSET ( 0x00000080 ) + +#define BBH_TX_0_CONFIGURATIONS_MAXWLEN_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MAXWLEN_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_MAXWLEN_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_MAXWLEN_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_MAXWLEN_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_MAXWLEN_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_MAXWLEN_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MAXWLEN_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_MAXWLEN_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_MAXWLEN_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_MAXWLEN_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_MAXWLEN_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_MAXWLEN_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MAXWLEN_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_MAXWLEN_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_MAXWLEN_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_MAXWLEN_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_MAXWLEN_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_MAXWLEN_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MAXWLEN_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_MAXWLEN_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_MAXWLEN_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_MAXWLEN_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_MAXWLEN_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_MAXWLEN_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MAXWLEN_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_MAXWLEN_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_MAXWLEN_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_MAXWLEN_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_MAXWLEN_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_MAXWLEN_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MAXWLEN_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_MAXWLEN_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_MAXWLEN_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_MAXWLEN_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_MAXWLEN_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_MAXWLEN_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MAXWLEN_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_MAXWLEN_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_MAXWLEN_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_MAXWLEN_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_MAXWLEN_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_MAXWLEN_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_MAXWLEN_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_MAXWLEN_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_MAXWLEN_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_MAXWLEN_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* max_word_len */ + uint32_t maxwlen : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_MAXWLEN ; +#else +typedef struct +{ uint32_t maxwlen : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* max_word_len */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_MAXWLEN ; +#endif + +/*****************************************************************************************/ +/* DSL_FLUSH */ +/* VDSL Flush indication relevant only for VDSL BBH */ +/*****************************************************************************************/ + +#define BBH_TX_CONFIGURATIONS_FLUSH_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_FLUSH_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_FLUSH_FLUSH_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONFIGURATIONS_FLUSH_FLUSH_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_CONFIGURATIONS_FLUSH_OFFSET ( 0x00000084 ) + +#define BBH_TX_0_CONFIGURATIONS_FLUSH_ADDRESS ( BBH_TX_0_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_FLUSH_OFFSET ) +#define BBH_TX_0_CONFIGURATIONS_FLUSH_READ( r ) READ_32( ( BBH_TX_0_CONFIGURATIONS_FLUSH_ADDRESS ), (r) ) +#define BBH_TX_0_CONFIGURATIONS_FLUSH_WRITE( v ) WRITE_32( ( BBH_TX_0_CONFIGURATIONS_FLUSH_ADDRESS ), (v) ) + +#define BBH_TX_1_CONFIGURATIONS_FLUSH_ADDRESS ( BBH_TX_1_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_FLUSH_OFFSET ) +#define BBH_TX_1_CONFIGURATIONS_FLUSH_READ( r ) READ_32( ( BBH_TX_1_CONFIGURATIONS_FLUSH_ADDRESS ), (r) ) +#define BBH_TX_1_CONFIGURATIONS_FLUSH_WRITE( v ) WRITE_32( ( BBH_TX_1_CONFIGURATIONS_FLUSH_ADDRESS ), (v) ) + +#define BBH_TX_2_CONFIGURATIONS_FLUSH_ADDRESS ( BBH_TX_2_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_FLUSH_OFFSET ) +#define BBH_TX_2_CONFIGURATIONS_FLUSH_READ( r ) READ_32( ( BBH_TX_2_CONFIGURATIONS_FLUSH_ADDRESS ), (r) ) +#define BBH_TX_2_CONFIGURATIONS_FLUSH_WRITE( v ) WRITE_32( ( BBH_TX_2_CONFIGURATIONS_FLUSH_ADDRESS ), (v) ) + +#define BBH_TX_3_CONFIGURATIONS_FLUSH_ADDRESS ( BBH_TX_3_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_FLUSH_OFFSET ) +#define BBH_TX_3_CONFIGURATIONS_FLUSH_READ( r ) READ_32( ( BBH_TX_3_CONFIGURATIONS_FLUSH_ADDRESS ), (r) ) +#define BBH_TX_3_CONFIGURATIONS_FLUSH_WRITE( v ) WRITE_32( ( BBH_TX_3_CONFIGURATIONS_FLUSH_ADDRESS ), (v) ) + +#define BBH_TX_4_CONFIGURATIONS_FLUSH_ADDRESS ( BBH_TX_4_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_FLUSH_OFFSET ) +#define BBH_TX_4_CONFIGURATIONS_FLUSH_READ( r ) READ_32( ( BBH_TX_4_CONFIGURATIONS_FLUSH_ADDRESS ), (r) ) +#define BBH_TX_4_CONFIGURATIONS_FLUSH_WRITE( v ) WRITE_32( ( BBH_TX_4_CONFIGURATIONS_FLUSH_ADDRESS ), (v) ) + +#define BBH_TX_5_CONFIGURATIONS_FLUSH_ADDRESS ( BBH_TX_5_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_FLUSH_OFFSET ) +#define BBH_TX_5_CONFIGURATIONS_FLUSH_READ( r ) READ_32( ( BBH_TX_5_CONFIGURATIONS_FLUSH_ADDRESS ), (r) ) +#define BBH_TX_5_CONFIGURATIONS_FLUSH_WRITE( v ) WRITE_32( ( BBH_TX_5_CONFIGURATIONS_FLUSH_ADDRESS ), (v) ) + +#define BBH_TX_6_CONFIGURATIONS_FLUSH_ADDRESS ( BBH_TX_6_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_FLUSH_OFFSET ) +#define BBH_TX_6_CONFIGURATIONS_FLUSH_READ( r ) READ_32( ( BBH_TX_6_CONFIGURATIONS_FLUSH_ADDRESS ), (r) ) +#define BBH_TX_6_CONFIGURATIONS_FLUSH_WRITE( v ) WRITE_32( ( BBH_TX_6_CONFIGURATIONS_FLUSH_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_CONFIGURATIONS_FLUSH_ARRAY [ ] ; + +#define BBH_TX_CONFIGURATIONS_FLUSH_WRITE( i, v ) WRITE_32( BBH_TX_CONFIGURATIONS_FLUSH_ARRAY [ i ], (v) ) +#define BBH_TX_CONFIGURATIONS_FLUSH_READ( i, r ) READ_32( BBH_TX_CONFIGURATIONS_FLUSH_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* flush */ + uint32_t flush : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_FLUSH ; +#else +typedef struct +{ uint32_t flush : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* flush */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS_FLUSH ; +#endif + +/*****************************************************************************************/ +/* SRAM_PD_counter */ +/* This counter counts the number of packets which were transmitted from the SRAM. It c */ +/* ounts the packets for all TCONTs together. This counter is cleared when read and fre */ +/* ezes when maximum value is reached. This counter is relevant for Ethernet only. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_SRAMPD_SRAMPD_SRAM_PD_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_SRAMPD_SRAMPD_SRAM_PD_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_SRAMPD_OFFSET ( 0x00000000 ) + +#define BBH_TX_0_DEBUG_SRAMPD_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_SRAMPD_OFFSET ) +#define BBH_TX_0_DEBUG_SRAMPD_READ( r ) READ_32( ( BBH_TX_0_DEBUG_SRAMPD_ADDRESS ), (r) ) +#define BBH_TX_0_DEBUG_SRAMPD_WRITE( v ) WRITE_32( ( BBH_TX_0_DEBUG_SRAMPD_ADDRESS ), (v) ) + +#define BBH_TX_1_DEBUG_SRAMPD_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_SRAMPD_OFFSET ) +#define BBH_TX_1_DEBUG_SRAMPD_READ( r ) READ_32( ( BBH_TX_1_DEBUG_SRAMPD_ADDRESS ), (r) ) +#define BBH_TX_1_DEBUG_SRAMPD_WRITE( v ) WRITE_32( ( BBH_TX_1_DEBUG_SRAMPD_ADDRESS ), (v) ) + +#define BBH_TX_2_DEBUG_SRAMPD_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_SRAMPD_OFFSET ) +#define BBH_TX_2_DEBUG_SRAMPD_READ( r ) READ_32( ( BBH_TX_2_DEBUG_SRAMPD_ADDRESS ), (r) ) +#define BBH_TX_2_DEBUG_SRAMPD_WRITE( v ) WRITE_32( ( BBH_TX_2_DEBUG_SRAMPD_ADDRESS ), (v) ) + +#define BBH_TX_3_DEBUG_SRAMPD_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_SRAMPD_OFFSET ) +#define BBH_TX_3_DEBUG_SRAMPD_READ( r ) READ_32( ( BBH_TX_3_DEBUG_SRAMPD_ADDRESS ), (r) ) +#define BBH_TX_3_DEBUG_SRAMPD_WRITE( v ) WRITE_32( ( BBH_TX_3_DEBUG_SRAMPD_ADDRESS ), (v) ) + +#define BBH_TX_4_DEBUG_SRAMPD_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_SRAMPD_OFFSET ) +#define BBH_TX_4_DEBUG_SRAMPD_READ( r ) READ_32( ( BBH_TX_4_DEBUG_SRAMPD_ADDRESS ), (r) ) +#define BBH_TX_4_DEBUG_SRAMPD_WRITE( v ) WRITE_32( ( BBH_TX_4_DEBUG_SRAMPD_ADDRESS ), (v) ) + +#define BBH_TX_5_DEBUG_SRAMPD_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_SRAMPD_OFFSET ) +#define BBH_TX_5_DEBUG_SRAMPD_READ( r ) READ_32( ( BBH_TX_5_DEBUG_SRAMPD_ADDRESS ), (r) ) +#define BBH_TX_5_DEBUG_SRAMPD_WRITE( v ) WRITE_32( ( BBH_TX_5_DEBUG_SRAMPD_ADDRESS ), (v) ) + +#define BBH_TX_6_DEBUG_SRAMPD_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_SRAMPD_OFFSET ) +#define BBH_TX_6_DEBUG_SRAMPD_READ( r ) READ_32( ( BBH_TX_6_DEBUG_SRAMPD_ADDRESS ), (r) ) +#define BBH_TX_6_DEBUG_SRAMPD_WRITE( v ) WRITE_32( ( BBH_TX_6_DEBUG_SRAMPD_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_DEBUG_SRAMPD_ARRAY [ ] ; + +#define BBH_TX_DEBUG_SRAMPD_WRITE( i, v ) WRITE_32( BBH_TX_DEBUG_SRAMPD_ARRAY [ i ], (v) ) +#define BBH_TX_DEBUG_SRAMPD_READ( i, r ) READ_32( BBH_TX_DEBUG_SRAMPD_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* SRAM_PD */ + uint32_t srampd : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_SRAMPD ; +#else +typedef struct +{ uint32_t srampd : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SRAM_PD */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_SRAMPD ; +#endif + +/*****************************************************************************************/ +/* DDR_PD_counter */ +/* This counter counts the number of packets which were transmitted from the DDR. It co */ +/* unts the packets for all TCONTs together. This counter is cleared when read and free */ +/* zes when maximum value is reached. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_DDRPD_DDRPD_DDR_PD_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_DDRPD_DDRPD_DDR_PD_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_DDRPD_OFFSET ( 0x00000004 ) + +#define BBH_TX_0_DEBUG_DDRPD_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_DDRPD_OFFSET ) +#define BBH_TX_0_DEBUG_DDRPD_READ( r ) READ_32( ( BBH_TX_0_DEBUG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_0_DEBUG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_0_DEBUG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_1_DEBUG_DDRPD_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_DDRPD_OFFSET ) +#define BBH_TX_1_DEBUG_DDRPD_READ( r ) READ_32( ( BBH_TX_1_DEBUG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_1_DEBUG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_1_DEBUG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_2_DEBUG_DDRPD_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_DDRPD_OFFSET ) +#define BBH_TX_2_DEBUG_DDRPD_READ( r ) READ_32( ( BBH_TX_2_DEBUG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_2_DEBUG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_2_DEBUG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_3_DEBUG_DDRPD_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_DDRPD_OFFSET ) +#define BBH_TX_3_DEBUG_DDRPD_READ( r ) READ_32( ( BBH_TX_3_DEBUG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_3_DEBUG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_3_DEBUG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_4_DEBUG_DDRPD_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_DDRPD_OFFSET ) +#define BBH_TX_4_DEBUG_DDRPD_READ( r ) READ_32( ( BBH_TX_4_DEBUG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_4_DEBUG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_4_DEBUG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_5_DEBUG_DDRPD_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_DDRPD_OFFSET ) +#define BBH_TX_5_DEBUG_DDRPD_READ( r ) READ_32( ( BBH_TX_5_DEBUG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_5_DEBUG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_5_DEBUG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_6_DEBUG_DDRPD_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_DDRPD_OFFSET ) +#define BBH_TX_6_DEBUG_DDRPD_READ( r ) READ_32( ( BBH_TX_6_DEBUG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_6_DEBUG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_6_DEBUG_DDRPD_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_DEBUG_DDRPD_ARRAY [ ] ; + +#define BBH_TX_DEBUG_DDRPD_WRITE( i, v ) WRITE_32( BBH_TX_DEBUG_DDRPD_ARRAY [ i ], (v) ) +#define BBH_TX_DEBUG_DDRPD_READ( i, r ) READ_32( BBH_TX_DEBUG_DDRPD_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DDR_PD */ + uint32_t ddrpd : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_DDRPD ; +#else +typedef struct +{ uint32_t ddrpd : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_PD */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_DDRPD ; +#endif + +/*****************************************************************************************/ +/* PD_DROP_counter */ +/* This counter counts the number of PDs which were dropped due to PD FIFO full. It cou */ +/* nts the packets for all TCONTs together. This counter is cleared when read and freez */ +/* es when maximum value is reached. This counter is relevant for Ethernet only. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_PDDROP_R1_RESERVED_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDDROP_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDDROP_PDDROP_PDDROP_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDDROP_PDDROP_PDDROP_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_PDDROP_OFFSET ( 0x00000008 ) + +#define BBH_TX_0_DEBUG_PDDROP_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_PDDROP_OFFSET ) +#define BBH_TX_0_DEBUG_PDDROP_READ( r ) READ_32( ( BBH_TX_0_DEBUG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_0_DEBUG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_0_DEBUG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_1_DEBUG_PDDROP_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_PDDROP_OFFSET ) +#define BBH_TX_1_DEBUG_PDDROP_READ( r ) READ_32( ( BBH_TX_1_DEBUG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_1_DEBUG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_1_DEBUG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_2_DEBUG_PDDROP_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_PDDROP_OFFSET ) +#define BBH_TX_2_DEBUG_PDDROP_READ( r ) READ_32( ( BBH_TX_2_DEBUG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_2_DEBUG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_2_DEBUG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_3_DEBUG_PDDROP_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_PDDROP_OFFSET ) +#define BBH_TX_3_DEBUG_PDDROP_READ( r ) READ_32( ( BBH_TX_3_DEBUG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_3_DEBUG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_3_DEBUG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_4_DEBUG_PDDROP_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_PDDROP_OFFSET ) +#define BBH_TX_4_DEBUG_PDDROP_READ( r ) READ_32( ( BBH_TX_4_DEBUG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_4_DEBUG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_4_DEBUG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_5_DEBUG_PDDROP_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_PDDROP_OFFSET ) +#define BBH_TX_5_DEBUG_PDDROP_READ( r ) READ_32( ( BBH_TX_5_DEBUG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_5_DEBUG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_5_DEBUG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_6_DEBUG_PDDROP_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_PDDROP_OFFSET ) +#define BBH_TX_6_DEBUG_PDDROP_READ( r ) READ_32( ( BBH_TX_6_DEBUG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_6_DEBUG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_6_DEBUG_PDDROP_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_DEBUG_PDDROP_ARRAY [ ] ; + +#define BBH_TX_DEBUG_PDDROP_WRITE( i, v ) WRITE_32( BBH_TX_DEBUG_PDDROP_ARRAY [ i ], (v) ) +#define BBH_TX_DEBUG_PDDROP_READ( i, r ) READ_32( BBH_TX_DEBUG_PDDROP_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_DROP */ + uint32_t pddrop : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDDROP ; +#else +typedef struct +{ uint32_t pddrop : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_DROP */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDDROP ; +#endif + +/*****************************************************************************************/ +/* PD_equal_0_counter */ +/* This counter counts the number of PDs with packet length equal zero. It counts the p */ +/* ackets for all TCONTs together. This counter is cleared when read and freezes when m */ +/* aximum value is reached. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_PDEQ0_R1_RESERVED_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDEQ0_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDEQ0_PDEQ0_PDEQ0_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDEQ0_PDEQ0_PDEQ0_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_PDEQ0_OFFSET ( 0x0000000C ) + +#define BBH_TX_0_DEBUG_PDEQ0_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEQ0_OFFSET ) +#define BBH_TX_0_DEBUG_PDEQ0_READ( r ) READ_32( ( BBH_TX_0_DEBUG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_0_DEBUG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_0_DEBUG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_1_DEBUG_PDEQ0_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEQ0_OFFSET ) +#define BBH_TX_1_DEBUG_PDEQ0_READ( r ) READ_32( ( BBH_TX_1_DEBUG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_1_DEBUG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_1_DEBUG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_2_DEBUG_PDEQ0_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEQ0_OFFSET ) +#define BBH_TX_2_DEBUG_PDEQ0_READ( r ) READ_32( ( BBH_TX_2_DEBUG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_2_DEBUG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_2_DEBUG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_3_DEBUG_PDEQ0_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEQ0_OFFSET ) +#define BBH_TX_3_DEBUG_PDEQ0_READ( r ) READ_32( ( BBH_TX_3_DEBUG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_3_DEBUG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_3_DEBUG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_4_DEBUG_PDEQ0_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEQ0_OFFSET ) +#define BBH_TX_4_DEBUG_PDEQ0_READ( r ) READ_32( ( BBH_TX_4_DEBUG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_4_DEBUG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_4_DEBUG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_5_DEBUG_PDEQ0_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEQ0_OFFSET ) +#define BBH_TX_5_DEBUG_PDEQ0_READ( r ) READ_32( ( BBH_TX_5_DEBUG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_5_DEBUG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_5_DEBUG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_6_DEBUG_PDEQ0_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEQ0_OFFSET ) +#define BBH_TX_6_DEBUG_PDEQ0_READ( r ) READ_32( ( BBH_TX_6_DEBUG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_6_DEBUG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_6_DEBUG_PDEQ0_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_DEBUG_PDEQ0_ARRAY [ ] ; + +#define BBH_TX_DEBUG_PDEQ0_WRITE( i, v ) WRITE_32( BBH_TX_DEBUG_PDEQ0_ARRAY [ i ], (v) ) +#define BBH_TX_DEBUG_PDEQ0_READ( i, r ) READ_32( BBH_TX_DEBUG_PDEQ0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_equal_0 */ + uint32_t pdeq0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDEQ0 ; +#else +typedef struct +{ uint32_t pdeq0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_equal_0 */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDEQ0 ; +#endif + +/*****************************************************************************************/ +/* Get_next_is_null_counter */ +/* This counter counts the number Get next responses with a null BN. It counts the pack */ +/* ets for all TCONTs together. This counter is cleared when read and freezes when maxi */ +/* mum value is reached. This counter is relevant for Ethernet only. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_GETNEXTNULL_R1_RESERVED_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_GETNEXTNULL_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_GETNEXTNULL_GETNEXTNULL_GETNEXTNULL_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_GETNEXTNULL_GETNEXTNULL_GETNEXTNULL_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_GETNEXTNULL_OFFSET ( 0x00000010 ) + +#define BBH_TX_0_DEBUG_GETNEXTNULL_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTNULL_OFFSET ) +#define BBH_TX_0_DEBUG_GETNEXTNULL_READ( r ) READ_32( ( BBH_TX_0_DEBUG_GETNEXTNULL_ADDRESS ), (r) ) +#define BBH_TX_0_DEBUG_GETNEXTNULL_WRITE( v ) WRITE_32( ( BBH_TX_0_DEBUG_GETNEXTNULL_ADDRESS ), (v) ) + +#define BBH_TX_1_DEBUG_GETNEXTNULL_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTNULL_OFFSET ) +#define BBH_TX_1_DEBUG_GETNEXTNULL_READ( r ) READ_32( ( BBH_TX_1_DEBUG_GETNEXTNULL_ADDRESS ), (r) ) +#define BBH_TX_1_DEBUG_GETNEXTNULL_WRITE( v ) WRITE_32( ( BBH_TX_1_DEBUG_GETNEXTNULL_ADDRESS ), (v) ) + +#define BBH_TX_2_DEBUG_GETNEXTNULL_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTNULL_OFFSET ) +#define BBH_TX_2_DEBUG_GETNEXTNULL_READ( r ) READ_32( ( BBH_TX_2_DEBUG_GETNEXTNULL_ADDRESS ), (r) ) +#define BBH_TX_2_DEBUG_GETNEXTNULL_WRITE( v ) WRITE_32( ( BBH_TX_2_DEBUG_GETNEXTNULL_ADDRESS ), (v) ) + +#define BBH_TX_3_DEBUG_GETNEXTNULL_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTNULL_OFFSET ) +#define BBH_TX_3_DEBUG_GETNEXTNULL_READ( r ) READ_32( ( BBH_TX_3_DEBUG_GETNEXTNULL_ADDRESS ), (r) ) +#define BBH_TX_3_DEBUG_GETNEXTNULL_WRITE( v ) WRITE_32( ( BBH_TX_3_DEBUG_GETNEXTNULL_ADDRESS ), (v) ) + +#define BBH_TX_4_DEBUG_GETNEXTNULL_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTNULL_OFFSET ) +#define BBH_TX_4_DEBUG_GETNEXTNULL_READ( r ) READ_32( ( BBH_TX_4_DEBUG_GETNEXTNULL_ADDRESS ), (r) ) +#define BBH_TX_4_DEBUG_GETNEXTNULL_WRITE( v ) WRITE_32( ( BBH_TX_4_DEBUG_GETNEXTNULL_ADDRESS ), (v) ) + +#define BBH_TX_5_DEBUG_GETNEXTNULL_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTNULL_OFFSET ) +#define BBH_TX_5_DEBUG_GETNEXTNULL_READ( r ) READ_32( ( BBH_TX_5_DEBUG_GETNEXTNULL_ADDRESS ), (r) ) +#define BBH_TX_5_DEBUG_GETNEXTNULL_WRITE( v ) WRITE_32( ( BBH_TX_5_DEBUG_GETNEXTNULL_ADDRESS ), (v) ) + +#define BBH_TX_6_DEBUG_GETNEXTNULL_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTNULL_OFFSET ) +#define BBH_TX_6_DEBUG_GETNEXTNULL_READ( r ) READ_32( ( BBH_TX_6_DEBUG_GETNEXTNULL_ADDRESS ), (r) ) +#define BBH_TX_6_DEBUG_GETNEXTNULL_WRITE( v ) WRITE_32( ( BBH_TX_6_DEBUG_GETNEXTNULL_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_DEBUG_GETNEXTNULL_ARRAY [ ] ; + +#define BBH_TX_DEBUG_GETNEXTNULL_WRITE( i, v ) WRITE_32( BBH_TX_DEBUG_GETNEXTNULL_ARRAY [ i ], (v) ) +#define BBH_TX_DEBUG_GETNEXTNULL_READ( i, r ) READ_32( BBH_TX_DEBUG_GETNEXTNULL_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Get_next_is_null */ + uint32_t getnextnull : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_GETNEXTNULL ; +#else +typedef struct +{ uint32_t getnextnull : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Get_next_is_null */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_GETNEXTNULL ; +#endif + +/*****************************************************************************************/ +/* PD_Full_LSB */ +/* Full indication of the PD FIFOs. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_PDFULLLSB_PDFULL_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDFULLLSB_PDFULL_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_PDFULLLSB_OFFSET ( 0x00000020 ) + +#define BBH_TX_0_DEBUG_PDFULLLSB_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLLSB_OFFSET ) +#define BBH_TX_0_DEBUG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_0_DEBUG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_0_DEBUG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_0_DEBUG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_1_DEBUG_PDFULLLSB_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLLSB_OFFSET ) +#define BBH_TX_1_DEBUG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_1_DEBUG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_1_DEBUG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_1_DEBUG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_2_DEBUG_PDFULLLSB_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLLSB_OFFSET ) +#define BBH_TX_2_DEBUG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_2_DEBUG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_2_DEBUG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_2_DEBUG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_3_DEBUG_PDFULLLSB_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLLSB_OFFSET ) +#define BBH_TX_3_DEBUG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_3_DEBUG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_3_DEBUG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_3_DEBUG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_4_DEBUG_PDFULLLSB_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLLSB_OFFSET ) +#define BBH_TX_4_DEBUG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_4_DEBUG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_4_DEBUG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_4_DEBUG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_5_DEBUG_PDFULLLSB_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLLSB_OFFSET ) +#define BBH_TX_5_DEBUG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_5_DEBUG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_5_DEBUG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_5_DEBUG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_6_DEBUG_PDFULLLSB_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLLSB_OFFSET ) +#define BBH_TX_6_DEBUG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_6_DEBUG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_6_DEBUG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_6_DEBUG_PDFULLLSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_DEBUG_PDFULLLSB_ARRAY [ ] ; + +#define BBH_TX_DEBUG_PDFULLLSB_WRITE( i, v ) WRITE_32( BBH_TX_DEBUG_PDFULLLSB_ARRAY [ i ], (v) ) +#define BBH_TX_DEBUG_PDFULLLSB_READ( i, r ) READ_32( BBH_TX_DEBUG_PDFULLLSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PD_full */ + uint32_t pdfull : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDFULLLSB ; +#else +typedef struct +{ uint32_t pdfull : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_full */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDFULLLSB ; +#endif + +/*****************************************************************************************/ +/* PD_Full_MSB */ +/* Full indication of the PD FIFOs. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_PDFULLMSB_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDFULLMSB_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDFULLMSB_PDFULL_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDFULLMSB_PDFULL_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_PDFULLMSB_OFFSET ( 0x00000024 ) + +#define BBH_TX_0_DEBUG_PDFULLMSB_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLMSB_OFFSET ) +#define BBH_TX_0_DEBUG_PDFULLMSB_READ( r ) READ_32( ( BBH_TX_0_DEBUG_PDFULLMSB_ADDRESS ), (r) ) +#define BBH_TX_0_DEBUG_PDFULLMSB_WRITE( v ) WRITE_32( ( BBH_TX_0_DEBUG_PDFULLMSB_ADDRESS ), (v) ) + +#define BBH_TX_1_DEBUG_PDFULLMSB_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLMSB_OFFSET ) +#define BBH_TX_1_DEBUG_PDFULLMSB_READ( r ) READ_32( ( BBH_TX_1_DEBUG_PDFULLMSB_ADDRESS ), (r) ) +#define BBH_TX_1_DEBUG_PDFULLMSB_WRITE( v ) WRITE_32( ( BBH_TX_1_DEBUG_PDFULLMSB_ADDRESS ), (v) ) + +#define BBH_TX_2_DEBUG_PDFULLMSB_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLMSB_OFFSET ) +#define BBH_TX_2_DEBUG_PDFULLMSB_READ( r ) READ_32( ( BBH_TX_2_DEBUG_PDFULLMSB_ADDRESS ), (r) ) +#define BBH_TX_2_DEBUG_PDFULLMSB_WRITE( v ) WRITE_32( ( BBH_TX_2_DEBUG_PDFULLMSB_ADDRESS ), (v) ) + +#define BBH_TX_3_DEBUG_PDFULLMSB_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLMSB_OFFSET ) +#define BBH_TX_3_DEBUG_PDFULLMSB_READ( r ) READ_32( ( BBH_TX_3_DEBUG_PDFULLMSB_ADDRESS ), (r) ) +#define BBH_TX_3_DEBUG_PDFULLMSB_WRITE( v ) WRITE_32( ( BBH_TX_3_DEBUG_PDFULLMSB_ADDRESS ), (v) ) + +#define BBH_TX_4_DEBUG_PDFULLMSB_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLMSB_OFFSET ) +#define BBH_TX_4_DEBUG_PDFULLMSB_READ( r ) READ_32( ( BBH_TX_4_DEBUG_PDFULLMSB_ADDRESS ), (r) ) +#define BBH_TX_4_DEBUG_PDFULLMSB_WRITE( v ) WRITE_32( ( BBH_TX_4_DEBUG_PDFULLMSB_ADDRESS ), (v) ) + +#define BBH_TX_5_DEBUG_PDFULLMSB_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLMSB_OFFSET ) +#define BBH_TX_5_DEBUG_PDFULLMSB_READ( r ) READ_32( ( BBH_TX_5_DEBUG_PDFULLMSB_ADDRESS ), (r) ) +#define BBH_TX_5_DEBUG_PDFULLMSB_WRITE( v ) WRITE_32( ( BBH_TX_5_DEBUG_PDFULLMSB_ADDRESS ), (v) ) + +#define BBH_TX_6_DEBUG_PDFULLMSB_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLMSB_OFFSET ) +#define BBH_TX_6_DEBUG_PDFULLMSB_READ( r ) READ_32( ( BBH_TX_6_DEBUG_PDFULLMSB_ADDRESS ), (r) ) +#define BBH_TX_6_DEBUG_PDFULLMSB_WRITE( v ) WRITE_32( ( BBH_TX_6_DEBUG_PDFULLMSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_DEBUG_PDFULLMSB_ARRAY [ ] ; + +#define BBH_TX_DEBUG_PDFULLMSB_WRITE( i, v ) WRITE_32( BBH_TX_DEBUG_PDFULLMSB_ARRAY [ i ], (v) ) +#define BBH_TX_DEBUG_PDFULLMSB_READ( i, r ) READ_32( BBH_TX_DEBUG_PDFULLMSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_full */ + uint32_t pdfull : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDFULLMSB ; +#else +typedef struct +{ uint32_t pdfull : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_full */ + uint32_t r1 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDFULLMSB ; +#endif + +/*****************************************************************************************/ +/* PD_empty_LSB */ +/* Empty indication of the PD FIFOs. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_PDEMPTYLSB_PDEMPTY_DEFAULT_VALUE ( 0xFFFFFFFF ) +#define BBH_TX_DEBUG_PDEMPTYLSB_PDEMPTY_DEFAULT_VALUE_RESET_VALUE ( 0xFFFFFFFF ) + + +#define BBH_TX_DEBUG_PDEMPTYLSB_OFFSET ( 0x00000028 ) + +#define BBH_TX_0_DEBUG_PDEMPTYLSB_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_0_DEBUG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_0_DEBUG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_0_DEBUG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_0_DEBUG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_1_DEBUG_PDEMPTYLSB_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_1_DEBUG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_1_DEBUG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_1_DEBUG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_1_DEBUG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_2_DEBUG_PDEMPTYLSB_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_2_DEBUG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_2_DEBUG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_2_DEBUG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_2_DEBUG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_3_DEBUG_PDEMPTYLSB_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_3_DEBUG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_3_DEBUG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_3_DEBUG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_3_DEBUG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_4_DEBUG_PDEMPTYLSB_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_4_DEBUG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_4_DEBUG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_4_DEBUG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_4_DEBUG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_5_DEBUG_PDEMPTYLSB_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_5_DEBUG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_5_DEBUG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_5_DEBUG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_5_DEBUG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_6_DEBUG_PDEMPTYLSB_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_6_DEBUG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_6_DEBUG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_6_DEBUG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_6_DEBUG_PDEMPTYLSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_DEBUG_PDEMPTYLSB_ARRAY [ ] ; + +#define BBH_TX_DEBUG_PDEMPTYLSB_WRITE( i, v ) WRITE_32( BBH_TX_DEBUG_PDEMPTYLSB_ARRAY [ i ], (v) ) +#define BBH_TX_DEBUG_PDEMPTYLSB_READ( i, r ) READ_32( BBH_TX_DEBUG_PDEMPTYLSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PD_empty */ + uint32_t pdempty : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDEMPTYLSB ; +#else +typedef struct +{ uint32_t pdempty : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_empty */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDEMPTYLSB ; +#endif + +/*****************************************************************************************/ +/* PD_empty_MSB */ +/* Empty indication of the PD FIFOs. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_PDEMPTYMSB_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDEMPTYMSB_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDEMPTYMSB_PDEMPTY_DEFAULT_VALUE ( 0xFF ) +#define BBH_TX_DEBUG_PDEMPTYMSB_PDEMPTY_DEFAULT_VALUE_RESET_VALUE ( 0xFF ) + + +#define BBH_TX_DEBUG_PDEMPTYMSB_OFFSET ( 0x0000002C ) + +#define BBH_TX_0_DEBUG_PDEMPTYMSB_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYMSB_OFFSET ) +#define BBH_TX_0_DEBUG_PDEMPTYMSB_READ( r ) READ_32( ( BBH_TX_0_DEBUG_PDEMPTYMSB_ADDRESS ), (r) ) +#define BBH_TX_0_DEBUG_PDEMPTYMSB_WRITE( v ) WRITE_32( ( BBH_TX_0_DEBUG_PDEMPTYMSB_ADDRESS ), (v) ) + +#define BBH_TX_1_DEBUG_PDEMPTYMSB_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYMSB_OFFSET ) +#define BBH_TX_1_DEBUG_PDEMPTYMSB_READ( r ) READ_32( ( BBH_TX_1_DEBUG_PDEMPTYMSB_ADDRESS ), (r) ) +#define BBH_TX_1_DEBUG_PDEMPTYMSB_WRITE( v ) WRITE_32( ( BBH_TX_1_DEBUG_PDEMPTYMSB_ADDRESS ), (v) ) + +#define BBH_TX_2_DEBUG_PDEMPTYMSB_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYMSB_OFFSET ) +#define BBH_TX_2_DEBUG_PDEMPTYMSB_READ( r ) READ_32( ( BBH_TX_2_DEBUG_PDEMPTYMSB_ADDRESS ), (r) ) +#define BBH_TX_2_DEBUG_PDEMPTYMSB_WRITE( v ) WRITE_32( ( BBH_TX_2_DEBUG_PDEMPTYMSB_ADDRESS ), (v) ) + +#define BBH_TX_3_DEBUG_PDEMPTYMSB_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYMSB_OFFSET ) +#define BBH_TX_3_DEBUG_PDEMPTYMSB_READ( r ) READ_32( ( BBH_TX_3_DEBUG_PDEMPTYMSB_ADDRESS ), (r) ) +#define BBH_TX_3_DEBUG_PDEMPTYMSB_WRITE( v ) WRITE_32( ( BBH_TX_3_DEBUG_PDEMPTYMSB_ADDRESS ), (v) ) + +#define BBH_TX_4_DEBUG_PDEMPTYMSB_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYMSB_OFFSET ) +#define BBH_TX_4_DEBUG_PDEMPTYMSB_READ( r ) READ_32( ( BBH_TX_4_DEBUG_PDEMPTYMSB_ADDRESS ), (r) ) +#define BBH_TX_4_DEBUG_PDEMPTYMSB_WRITE( v ) WRITE_32( ( BBH_TX_4_DEBUG_PDEMPTYMSB_ADDRESS ), (v) ) + +#define BBH_TX_5_DEBUG_PDEMPTYMSB_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYMSB_OFFSET ) +#define BBH_TX_5_DEBUG_PDEMPTYMSB_READ( r ) READ_32( ( BBH_TX_5_DEBUG_PDEMPTYMSB_ADDRESS ), (r) ) +#define BBH_TX_5_DEBUG_PDEMPTYMSB_WRITE( v ) WRITE_32( ( BBH_TX_5_DEBUG_PDEMPTYMSB_ADDRESS ), (v) ) + +#define BBH_TX_6_DEBUG_PDEMPTYMSB_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYMSB_OFFSET ) +#define BBH_TX_6_DEBUG_PDEMPTYMSB_READ( r ) READ_32( ( BBH_TX_6_DEBUG_PDEMPTYMSB_ADDRESS ), (r) ) +#define BBH_TX_6_DEBUG_PDEMPTYMSB_WRITE( v ) WRITE_32( ( BBH_TX_6_DEBUG_PDEMPTYMSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_DEBUG_PDEMPTYMSB_ARRAY [ ] ; + +#define BBH_TX_DEBUG_PDEMPTYMSB_WRITE( i, v ) WRITE_32( BBH_TX_DEBUG_PDEMPTYMSB_ARRAY [ i ], (v) ) +#define BBH_TX_DEBUG_PDEMPTYMSB_READ( i, r ) READ_32( BBH_TX_DEBUG_PDEMPTYMSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_empty */ + uint32_t pdempty : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDEMPTYMSB ; +#else +typedef struct +{ uint32_t pdempty : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_empty */ + uint32_t r1 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDEMPTYMSB ; +#endif + +/*****************************************************************************************/ +/* PD_VALID */ +/* The BBH manages 40 queues (1 for each TCONT). For each queue it manages a PD FIFO. */ +/* A total of 128 PDs are available for all queue. The SW may read these PDs. The PD v */ +/* alid register indicates whether the relevant PD is valid. The first register refers */ +/* to PDs 0-31. The second register refers to PDs 32-63. The third register refers to */ +/* PDs 64-95. The fourth register refers to PDs 96-127. This register is irrelevant */ +/* for Ethernet. For Ethernet, the valid indication is part of the PD. This register */ +/* is also irrelevant for EPON. For EPON PD FIDOs validinformation, refer to EPON_PD_VAL */ +/* ID registers in this section. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_PDVALID_VALID_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_PDVALID_VALID_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_PDVALID_OFFSET ( 0x00000030 ) + +#define BBH_TX_0_DEBUG_PDVALID_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_PDVALID_OFFSET ) +#define BBH_TX_0_DEBUG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_0_DEBUG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_0_DEBUG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_DEBUG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_DEBUG_PDVALID_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_PDVALID_OFFSET ) +#define BBH_TX_1_DEBUG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_1_DEBUG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_1_DEBUG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_DEBUG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_DEBUG_PDVALID_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_PDVALID_OFFSET ) +#define BBH_TX_2_DEBUG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_2_DEBUG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_2_DEBUG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_DEBUG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_DEBUG_PDVALID_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_PDVALID_OFFSET ) +#define BBH_TX_3_DEBUG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_3_DEBUG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_3_DEBUG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_DEBUG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_DEBUG_PDVALID_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_PDVALID_OFFSET ) +#define BBH_TX_4_DEBUG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_4_DEBUG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_4_DEBUG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_DEBUG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_DEBUG_PDVALID_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_PDVALID_OFFSET ) +#define BBH_TX_5_DEBUG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_5_DEBUG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_5_DEBUG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_DEBUG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_DEBUG_PDVALID_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_PDVALID_OFFSET ) +#define BBH_TX_6_DEBUG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_6_DEBUG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_6_DEBUG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_DEBUG_PDVALID_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_DEBUG_PDVALID_ARRAY [ ] ; + +#define BBH_TX_DEBUG_PDVALID_WRITE( i, k, v ) WRITE_I_32( BBH_TX_DEBUG_PDVALID_ARRAY [ i ], (k), (v) ) +#define BBH_TX_DEBUG_PDVALID_READ( i, k, r ) READ_I_32( BBH_TX_DEBUG_PDVALID_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* valid */ + uint32_t valid : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDVALID ; +#else +typedef struct +{ uint32_t valid : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* valid */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_PDVALID ; +#endif + +/*****************************************************************************************/ +/* BPM_FIFO */ +/* After reading a whole packet from the DDR, the BBH clears the BPM pointer. For that r */ +/* eason it keeps a FIFO (of 8 entries) with the pointers to be cleared. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_BPMFIFO_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_VALID_NOT_VALID_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_VALID_NOT_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_VALID_VALID_VALUE ( 0x1 ) +#define BBH_TX_DEBUG_BPMFIFO_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_P1588_NOT_1588_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_P1588_NOT_1588_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_P1588_IS1588_VALUE ( 0x1 ) +#define BBH_TX_DEBUG_BPMFIFO_ABS_NOT_ABSOLUTE_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_ABS_NOT_ABSOLUTE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_ABS_ABSOLUTE_VALUE ( 0x1 ) +#define BBH_TX_DEBUG_BPMFIFO_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_SRCPORT_SOURCE_PORT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_SRCPORT_SOURCE_PORT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_BN_BN_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_BPMFIFO_BN_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_BPMFIFO_OFFSET ( 0x00000040 ) + +#define BBH_TX_0_DEBUG_BPMFIFO_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_BPMFIFO_OFFSET ) +#define BBH_TX_0_DEBUG_BPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_0_DEBUG_BPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_0_DEBUG_BPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_DEBUG_BPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_DEBUG_BPMFIFO_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_BPMFIFO_OFFSET ) +#define BBH_TX_1_DEBUG_BPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_1_DEBUG_BPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_1_DEBUG_BPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_DEBUG_BPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_DEBUG_BPMFIFO_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_BPMFIFO_OFFSET ) +#define BBH_TX_2_DEBUG_BPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_2_DEBUG_BPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_2_DEBUG_BPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_DEBUG_BPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_DEBUG_BPMFIFO_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_BPMFIFO_OFFSET ) +#define BBH_TX_3_DEBUG_BPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_3_DEBUG_BPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_3_DEBUG_BPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_DEBUG_BPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_DEBUG_BPMFIFO_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_BPMFIFO_OFFSET ) +#define BBH_TX_4_DEBUG_BPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_4_DEBUG_BPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_4_DEBUG_BPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_DEBUG_BPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_DEBUG_BPMFIFO_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_BPMFIFO_OFFSET ) +#define BBH_TX_5_DEBUG_BPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_5_DEBUG_BPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_5_DEBUG_BPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_DEBUG_BPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_DEBUG_BPMFIFO_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_BPMFIFO_OFFSET ) +#define BBH_TX_6_DEBUG_BPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_6_DEBUG_BPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_6_DEBUG_BPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_DEBUG_BPMFIFO_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_DEBUG_BPMFIFO_ARRAY [ ] ; + +#define BBH_TX_DEBUG_BPMFIFO_WRITE( i, k, v ) WRITE_I_32( BBH_TX_DEBUG_BPMFIFO_ARRAY [ i ], (k), (v) ) +#define BBH_TX_DEBUG_BPMFIFO_READ( i, k, r ) READ_I_32( BBH_TX_DEBUG_BPMFIFO_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Valid */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* P1588 */ + uint32_t p1588 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Absolute */ + uint32_t abs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Source_port */ + uint32_t srcport : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BN */ + uint32_t bn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_BPMFIFO ; +#else +typedef struct +{ uint32_t bn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BN */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t srcport : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Source_port */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t abs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Absolute */ + uint32_t p1588 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* P1588 */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Valid */ + uint32_t r4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_BPMFIFO ; +#endif + +/*****************************************************************************************/ +/* SBPM_FIFO */ +/* After reading a whole packet from the SRAM, the BBH clears the SBPM pointer. For that */ +/* reason it keeps a FIFO (of 4 entries) with the pointers to be cleared. Relevant onl */ +/* y for Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_SBPMFIFO_VALID_NOT_VALID_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_SBPMFIFO_VALID_NOT_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_SBPMFIFO_VALID_VALID_VALUE ( 0x1 ) +#define BBH_TX_DEBUG_SBPMFIFO_LASTBN_BN_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_SBPMFIFO_LASTBN_BN_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_SBPMFIFO_SRCPORT_SOURCE_PORT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_SBPMFIFO_SRCPORT_SOURCE_PORT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_SBPMFIFO_HEADBN_BN_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_SBPMFIFO_HEADBN_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_SBPMFIFO_OFFSET ( 0x00000060 ) + +#define BBH_TX_0_DEBUG_SBPMFIFO_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_SBPMFIFO_OFFSET ) +#define BBH_TX_0_DEBUG_SBPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_0_DEBUG_SBPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_0_DEBUG_SBPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_DEBUG_SBPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_DEBUG_SBPMFIFO_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_SBPMFIFO_OFFSET ) +#define BBH_TX_1_DEBUG_SBPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_1_DEBUG_SBPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_1_DEBUG_SBPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_DEBUG_SBPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_DEBUG_SBPMFIFO_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_SBPMFIFO_OFFSET ) +#define BBH_TX_2_DEBUG_SBPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_2_DEBUG_SBPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_2_DEBUG_SBPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_DEBUG_SBPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_DEBUG_SBPMFIFO_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_SBPMFIFO_OFFSET ) +#define BBH_TX_3_DEBUG_SBPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_3_DEBUG_SBPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_3_DEBUG_SBPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_DEBUG_SBPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_DEBUG_SBPMFIFO_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_SBPMFIFO_OFFSET ) +#define BBH_TX_4_DEBUG_SBPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_4_DEBUG_SBPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_4_DEBUG_SBPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_DEBUG_SBPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_DEBUG_SBPMFIFO_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_SBPMFIFO_OFFSET ) +#define BBH_TX_5_DEBUG_SBPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_5_DEBUG_SBPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_5_DEBUG_SBPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_DEBUG_SBPMFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_DEBUG_SBPMFIFO_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_SBPMFIFO_OFFSET ) +#define BBH_TX_6_DEBUG_SBPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_6_DEBUG_SBPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_6_DEBUG_SBPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_DEBUG_SBPMFIFO_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_DEBUG_SBPMFIFO_ARRAY [ ] ; + +#define BBH_TX_DEBUG_SBPMFIFO_WRITE( i, k, v ) WRITE_I_32( BBH_TX_DEBUG_SBPMFIFO_ARRAY [ i ], (k), (v) ) +#define BBH_TX_DEBUG_SBPMFIFO_READ( i, k, r ) READ_I_32( BBH_TX_DEBUG_SBPMFIFO_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Valid */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Last_BN */ + uint32_t lastbn : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Source_port */ + uint32_t srcport : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HEAD_BN */ + uint32_t headbn : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_SBPMFIFO ; +#else +typedef struct +{ uint32_t headbn : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HEAD_BN */ + uint32_t srcport : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Source_port */ + uint32_t lastbn : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Last_BN */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Valid */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_SBPMFIFO ; +#endif + +/*****************************************************************************************/ +/* First_BN_FIFO */ +/* The SBPM Get next unit will maintain a “first BN” FIFO (8 entries). Each PD, which ar */ +/* rives from the Runner, is checked and if it describes a SRAM packet which exceeds 128 */ +/* bytes (including the SOP offset and multicast transmission) it is written into “firs */ +/* t BN” FIFO. Relevant only for Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_FIRSTBNFIFO_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_VALID_NOT_VALID_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_VALID_NOT_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_VALID_VALID_VALUE ( 0x1 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_NUMOFSBN_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_NUMOFSBN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_HEADBN_BN_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_HEADBN_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_FIRSTBNFIFO_OFFSET ( 0x00000080 ) + +#define BBH_TX_0_DEBUG_FIRSTBNFIFO_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_FIRSTBNFIFO_OFFSET ) +#define BBH_TX_0_DEBUG_FIRSTBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_0_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_0_DEBUG_FIRSTBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_DEBUG_FIRSTBNFIFO_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_FIRSTBNFIFO_OFFSET ) +#define BBH_TX_1_DEBUG_FIRSTBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_1_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_1_DEBUG_FIRSTBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_DEBUG_FIRSTBNFIFO_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_FIRSTBNFIFO_OFFSET ) +#define BBH_TX_2_DEBUG_FIRSTBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_2_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_2_DEBUG_FIRSTBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_DEBUG_FIRSTBNFIFO_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_FIRSTBNFIFO_OFFSET ) +#define BBH_TX_3_DEBUG_FIRSTBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_3_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_3_DEBUG_FIRSTBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_DEBUG_FIRSTBNFIFO_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_FIRSTBNFIFO_OFFSET ) +#define BBH_TX_4_DEBUG_FIRSTBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_4_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_4_DEBUG_FIRSTBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_DEBUG_FIRSTBNFIFO_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_FIRSTBNFIFO_OFFSET ) +#define BBH_TX_5_DEBUG_FIRSTBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_5_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_5_DEBUG_FIRSTBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_DEBUG_FIRSTBNFIFO_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_FIRSTBNFIFO_OFFSET ) +#define BBH_TX_6_DEBUG_FIRSTBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_6_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_6_DEBUG_FIRSTBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_DEBUG_FIRSTBNFIFO_ARRAY [ ] ; + +#define BBH_TX_DEBUG_FIRSTBNFIFO_WRITE( i, k, v ) WRITE_I_32( BBH_TX_DEBUG_FIRSTBNFIFO_ARRAY [ i ], (k), (v) ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_READ( i, k, r ) READ_I_32( BBH_TX_DEBUG_FIRSTBNFIFO_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r3 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Valid */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Number_of_SBN */ + uint32_t numofsbn : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HEAD_BN */ + uint32_t headbn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_FIRSTBNFIFO ; +#else +typedef struct +{ uint32_t headbn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HEAD_BN */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t numofsbn : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Number_of_SBN */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Valid */ + uint32_t r3 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_FIRSTBNFIFO ; +#endif + +/*****************************************************************************************/ +/* Get_next_FIFO */ +/* When reading a packet from the SRAM, the BBH should request the next buffer in the pa */ +/* cket’s linked list. Doing it during the packet transmission might damage the performa */ +/* nce; therefore the BBH maintains a pre-fetch of “next” buffers FIFO. Relevant only f */ +/* or Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_GETNEXTFIFO_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_GETNEXTFIFO_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_GETNEXTFIFO_VALID_NOT_VALID_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_GETNEXTFIFO_VALID_NOT_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_GETNEXTFIFO_VALID_VALID_VALUE ( 0x1 ) +#define BBH_TX_DEBUG_GETNEXTFIFO_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_GETNEXTFIFO_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_GETNEXTFIFO_HEADBN_BN_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_GETNEXTFIFO_HEADBN_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_GETNEXTFIFO_OFFSET ( 0x000000A0 ) + +#define BBH_TX_0_DEBUG_GETNEXTFIFO_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTFIFO_OFFSET ) +#define BBH_TX_0_DEBUG_GETNEXTFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_0_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_0_DEBUG_GETNEXTFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_DEBUG_GETNEXTFIFO_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTFIFO_OFFSET ) +#define BBH_TX_1_DEBUG_GETNEXTFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_1_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_1_DEBUG_GETNEXTFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_DEBUG_GETNEXTFIFO_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTFIFO_OFFSET ) +#define BBH_TX_2_DEBUG_GETNEXTFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_2_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_2_DEBUG_GETNEXTFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_DEBUG_GETNEXTFIFO_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTFIFO_OFFSET ) +#define BBH_TX_3_DEBUG_GETNEXTFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_3_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_3_DEBUG_GETNEXTFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_DEBUG_GETNEXTFIFO_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTFIFO_OFFSET ) +#define BBH_TX_4_DEBUG_GETNEXTFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_4_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_4_DEBUG_GETNEXTFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_DEBUG_GETNEXTFIFO_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTFIFO_OFFSET ) +#define BBH_TX_5_DEBUG_GETNEXTFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_5_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_5_DEBUG_GETNEXTFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_DEBUG_GETNEXTFIFO_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTFIFO_OFFSET ) +#define BBH_TX_6_DEBUG_GETNEXTFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_6_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_6_DEBUG_GETNEXTFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_DEBUG_GETNEXTFIFO_ARRAY [ ] ; + +#define BBH_TX_DEBUG_GETNEXTFIFO_WRITE( i, k, v ) WRITE_I_32( BBH_TX_DEBUG_GETNEXTFIFO_ARRAY [ i ], (k), (v) ) +#define BBH_TX_DEBUG_GETNEXTFIFO_READ( i, k, r ) READ_I_32( BBH_TX_DEBUG_GETNEXTFIFO_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Valid */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HEAD_BN */ + uint32_t headbn : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_GETNEXTFIFO ; +#else +typedef struct +{ uint32_t headbn : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HEAD_BN */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Valid */ + uint32_t r2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_GETNEXTFIFO ; +#endif + +/*****************************************************************************************/ +/* Debug_out_reg */ +/* Holds the selected debug vector (1 of 8) according to DBGSEL */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_DBGOUTREG_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_DBGOUTREG_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_DBGOUTREG_DBGVEC_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_DBGOUTREG_DBGVEC_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_DBGOUTREG_OFFSET ( 0x000000C0 ) + +#define BBH_TX_0_DEBUG_DBGOUTREG_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_DBGOUTREG_OFFSET ) +#define BBH_TX_0_DEBUG_DBGOUTREG_READ( r ) READ_32( ( BBH_TX_0_DEBUG_DBGOUTREG_ADDRESS ), (r) ) +#define BBH_TX_0_DEBUG_DBGOUTREG_WRITE( v ) WRITE_32( ( BBH_TX_0_DEBUG_DBGOUTREG_ADDRESS ), (v) ) + +#define BBH_TX_1_DEBUG_DBGOUTREG_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_DBGOUTREG_OFFSET ) +#define BBH_TX_1_DEBUG_DBGOUTREG_READ( r ) READ_32( ( BBH_TX_1_DEBUG_DBGOUTREG_ADDRESS ), (r) ) +#define BBH_TX_1_DEBUG_DBGOUTREG_WRITE( v ) WRITE_32( ( BBH_TX_1_DEBUG_DBGOUTREG_ADDRESS ), (v) ) + +#define BBH_TX_2_DEBUG_DBGOUTREG_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_DBGOUTREG_OFFSET ) +#define BBH_TX_2_DEBUG_DBGOUTREG_READ( r ) READ_32( ( BBH_TX_2_DEBUG_DBGOUTREG_ADDRESS ), (r) ) +#define BBH_TX_2_DEBUG_DBGOUTREG_WRITE( v ) WRITE_32( ( BBH_TX_2_DEBUG_DBGOUTREG_ADDRESS ), (v) ) + +#define BBH_TX_3_DEBUG_DBGOUTREG_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_DBGOUTREG_OFFSET ) +#define BBH_TX_3_DEBUG_DBGOUTREG_READ( r ) READ_32( ( BBH_TX_3_DEBUG_DBGOUTREG_ADDRESS ), (r) ) +#define BBH_TX_3_DEBUG_DBGOUTREG_WRITE( v ) WRITE_32( ( BBH_TX_3_DEBUG_DBGOUTREG_ADDRESS ), (v) ) + +#define BBH_TX_4_DEBUG_DBGOUTREG_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_DBGOUTREG_OFFSET ) +#define BBH_TX_4_DEBUG_DBGOUTREG_READ( r ) READ_32( ( BBH_TX_4_DEBUG_DBGOUTREG_ADDRESS ), (r) ) +#define BBH_TX_4_DEBUG_DBGOUTREG_WRITE( v ) WRITE_32( ( BBH_TX_4_DEBUG_DBGOUTREG_ADDRESS ), (v) ) + +#define BBH_TX_5_DEBUG_DBGOUTREG_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_DBGOUTREG_OFFSET ) +#define BBH_TX_5_DEBUG_DBGOUTREG_READ( r ) READ_32( ( BBH_TX_5_DEBUG_DBGOUTREG_ADDRESS ), (r) ) +#define BBH_TX_5_DEBUG_DBGOUTREG_WRITE( v ) WRITE_32( ( BBH_TX_5_DEBUG_DBGOUTREG_ADDRESS ), (v) ) + +#define BBH_TX_6_DEBUG_DBGOUTREG_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_DBGOUTREG_OFFSET ) +#define BBH_TX_6_DEBUG_DBGOUTREG_READ( r ) READ_32( ( BBH_TX_6_DEBUG_DBGOUTREG_ADDRESS ), (r) ) +#define BBH_TX_6_DEBUG_DBGOUTREG_WRITE( v ) WRITE_32( ( BBH_TX_6_DEBUG_DBGOUTREG_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_DEBUG_DBGOUTREG_ARRAY [ ] ; + +#define BBH_TX_DEBUG_DBGOUTREG_WRITE( i, v ) WRITE_32( BBH_TX_DEBUG_DBGOUTREG_ARRAY [ i ], (v) ) +#define BBH_TX_DEBUG_DBGOUTREG_READ( i, r ) READ_32( BBH_TX_DEBUG_DBGOUTREG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Debug_vector */ + uint32_t dbgvec : 21 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_DBGOUTREG ; +#else +typedef struct +{ uint32_t dbgvec : 21 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Debug_vector */ + uint32_t r1 : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_DBGOUTREG ; +#endif + +/*****************************************************************************************/ +/* EPON_PD_VALID */ +/* The BBH manages 32 queues. For each queue it manages a PD FIFO. A total of 256 PDs */ +/* are available for all queue. The SW may read these PDs. The PD valid register indic */ +/* ates whether the relevant PD is valid. The first register refers to PDs 0-31. The s */ +/* econd register refers to PDs 32-63 and so on. */ +/*****************************************************************************************/ + +#define BBH_TX_DEBUG_EPNPDVALID_VALID_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_DEBUG_EPNPDVALID_VALID_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_DEBUG_EPNPDVALID_OFFSET ( 0x000000D0 ) + +#define BBH_TX_0_DEBUG_EPNPDVALID_ADDRESS ( BBH_TX_0_DEBUG_ADDRESS + BBH_TX_DEBUG_EPNPDVALID_OFFSET ) +#define BBH_TX_0_DEBUG_EPNPDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_0_DEBUG_EPNPDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_0_DEBUG_EPNPDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_DEBUG_EPNPDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_DEBUG_EPNPDVALID_ADDRESS ( BBH_TX_1_DEBUG_ADDRESS + BBH_TX_DEBUG_EPNPDVALID_OFFSET ) +#define BBH_TX_1_DEBUG_EPNPDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_1_DEBUG_EPNPDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_1_DEBUG_EPNPDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_DEBUG_EPNPDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_DEBUG_EPNPDVALID_ADDRESS ( BBH_TX_2_DEBUG_ADDRESS + BBH_TX_DEBUG_EPNPDVALID_OFFSET ) +#define BBH_TX_2_DEBUG_EPNPDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_2_DEBUG_EPNPDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_2_DEBUG_EPNPDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_DEBUG_EPNPDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_DEBUG_EPNPDVALID_ADDRESS ( BBH_TX_3_DEBUG_ADDRESS + BBH_TX_DEBUG_EPNPDVALID_OFFSET ) +#define BBH_TX_3_DEBUG_EPNPDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_3_DEBUG_EPNPDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_3_DEBUG_EPNPDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_DEBUG_EPNPDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_DEBUG_EPNPDVALID_ADDRESS ( BBH_TX_4_DEBUG_ADDRESS + BBH_TX_DEBUG_EPNPDVALID_OFFSET ) +#define BBH_TX_4_DEBUG_EPNPDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_4_DEBUG_EPNPDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_4_DEBUG_EPNPDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_DEBUG_EPNPDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_DEBUG_EPNPDVALID_ADDRESS ( BBH_TX_5_DEBUG_ADDRESS + BBH_TX_DEBUG_EPNPDVALID_OFFSET ) +#define BBH_TX_5_DEBUG_EPNPDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_5_DEBUG_EPNPDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_5_DEBUG_EPNPDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_DEBUG_EPNPDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_DEBUG_EPNPDVALID_ADDRESS ( BBH_TX_6_DEBUG_ADDRESS + BBH_TX_DEBUG_EPNPDVALID_OFFSET ) +#define BBH_TX_6_DEBUG_EPNPDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_6_DEBUG_EPNPDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_6_DEBUG_EPNPDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_DEBUG_EPNPDVALID_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_DEBUG_EPNPDVALID_ARRAY [ ] ; + +#define BBH_TX_DEBUG_EPNPDVALID_WRITE( i, k, v ) WRITE_I_32( BBH_TX_DEBUG_EPNPDVALID_ARRAY [ i ], (k), (v) ) +#define BBH_TX_DEBUG_EPNPDVALID_READ( i, k, r ) READ_I_32( BBH_TX_DEBUG_EPNPDVALID_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* valid */ + uint32_t valid : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_EPNPDVALID ; +#else +typedef struct +{ uint32_t valid : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* valid */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG_EPNPDVALID ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO */ +/* The SW may read the PD RAM. This RAM includes a total of 128 PDs. A special registe */ +/* r marks the valid PDs. Each PD occupies 2 addresses of 32 bits - the odd address ref */ +/* ers to the LSB word of the entry. Please refer to BBH LLD for the context of the PD. */ +/*****************************************************************************************/ + +#define BBH_TX_PD_FIFO_PDFIFO_PDENTRY_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_PD_FIFO_PDFIFO_PDENTRY_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_PD_FIFO_PDFIFO_OFFSET ( 0x00000000 ) + +#define BBH_TX_0_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_0_PD_FIFO_ADDRESS + BBH_TX_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_0_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_0_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_0_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_1_PD_FIFO_ADDRESS + BBH_TX_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_1_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_1_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_1_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_2_PD_FIFO_ADDRESS + BBH_TX_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_2_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_2_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_2_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_3_PD_FIFO_ADDRESS + BBH_TX_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_3_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_3_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_3_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_4_PD_FIFO_ADDRESS + BBH_TX_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_4_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_4_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_4_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_5_PD_FIFO_ADDRESS + BBH_TX_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_5_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_5_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_5_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_6_PD_FIFO_ADDRESS + BBH_TX_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_6_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_6_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_6_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_PD_FIFO_PDFIFO_ARRAY [ ] ; + +#define BBH_TX_PD_FIFO_PDFIFO_WRITE( i, k, v ) WRITE_I_32( BBH_TX_PD_FIFO_PDFIFO_ARRAY [ i ], (k), (v) ) +#define BBH_TX_PD_FIFO_PDFIFO_READ( i, k, r ) READ_I_32( BBH_TX_PD_FIFO_PDFIFO_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PD_entry */ + uint32_t pdentry : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_PD_FIFO_PDFIFO ; +#else +typedef struct +{ uint32_t pdentry : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_entry */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_PD_FIFO_PDFIFO ; +#endif + +/*****************************************************************************************/ +/* Segmentation_context */ +/* Segmentation context */ +/*****************************************************************************************/ + +#define BBH_TX_CONTEXT_SEGCNTXT_RMNCHUNK_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_RMNCHUNK_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_BN_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_BN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_SRCPORT_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_SRCPORT_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_PENDREQ_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_PENDREQ_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_ABS_NOT_ABSOLUTE_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_ABS_NOT_ABSOLUTE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_ABS_ABSOLUTE_VALUE ( 0x1 ) +#define BBH_TX_CONTEXT_SEGCNTXT_INSEG_NOT_IN_SEG_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_INSEG_NOT_IN_SEG_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_CONTEXT_SEGCNTXT_INSEG_IN_SEG_VALUE ( 0x1 ) + + +#define BBH_TX_CONTEXT_SEGCNTXT_OFFSET ( 0x00000000 ) + +#define BBH_TX_0_CONTEXT_SEGCNTXT_ADDRESS ( BBH_TX_0_CONTEXT_ADDRESS + BBH_TX_CONTEXT_SEGCNTXT_OFFSET ) +#define BBH_TX_0_CONTEXT_SEGCNTXT_READ_I( r, i ) READ_I_32( ( BBH_TX_0_CONTEXT_SEGCNTXT_ADDRESS ), (i), (r) ) +#define BBH_TX_0_CONTEXT_SEGCNTXT_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_CONTEXT_SEGCNTXT_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_CONTEXT_SEGCNTXT_ADDRESS ( BBH_TX_1_CONTEXT_ADDRESS + BBH_TX_CONTEXT_SEGCNTXT_OFFSET ) +#define BBH_TX_1_CONTEXT_SEGCNTXT_READ_I( r, i ) READ_I_32( ( BBH_TX_1_CONTEXT_SEGCNTXT_ADDRESS ), (i), (r) ) +#define BBH_TX_1_CONTEXT_SEGCNTXT_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_CONTEXT_SEGCNTXT_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_CONTEXT_SEGCNTXT_ADDRESS ( BBH_TX_2_CONTEXT_ADDRESS + BBH_TX_CONTEXT_SEGCNTXT_OFFSET ) +#define BBH_TX_2_CONTEXT_SEGCNTXT_READ_I( r, i ) READ_I_32( ( BBH_TX_2_CONTEXT_SEGCNTXT_ADDRESS ), (i), (r) ) +#define BBH_TX_2_CONTEXT_SEGCNTXT_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_CONTEXT_SEGCNTXT_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_CONTEXT_SEGCNTXT_ADDRESS ( BBH_TX_3_CONTEXT_ADDRESS + BBH_TX_CONTEXT_SEGCNTXT_OFFSET ) +#define BBH_TX_3_CONTEXT_SEGCNTXT_READ_I( r, i ) READ_I_32( ( BBH_TX_3_CONTEXT_SEGCNTXT_ADDRESS ), (i), (r) ) +#define BBH_TX_3_CONTEXT_SEGCNTXT_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_CONTEXT_SEGCNTXT_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_CONTEXT_SEGCNTXT_ADDRESS ( BBH_TX_4_CONTEXT_ADDRESS + BBH_TX_CONTEXT_SEGCNTXT_OFFSET ) +#define BBH_TX_4_CONTEXT_SEGCNTXT_READ_I( r, i ) READ_I_32( ( BBH_TX_4_CONTEXT_SEGCNTXT_ADDRESS ), (i), (r) ) +#define BBH_TX_4_CONTEXT_SEGCNTXT_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_CONTEXT_SEGCNTXT_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_CONTEXT_SEGCNTXT_ADDRESS ( BBH_TX_5_CONTEXT_ADDRESS + BBH_TX_CONTEXT_SEGCNTXT_OFFSET ) +#define BBH_TX_5_CONTEXT_SEGCNTXT_READ_I( r, i ) READ_I_32( ( BBH_TX_5_CONTEXT_SEGCNTXT_ADDRESS ), (i), (r) ) +#define BBH_TX_5_CONTEXT_SEGCNTXT_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_CONTEXT_SEGCNTXT_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_CONTEXT_SEGCNTXT_ADDRESS ( BBH_TX_6_CONTEXT_ADDRESS + BBH_TX_CONTEXT_SEGCNTXT_OFFSET ) +#define BBH_TX_6_CONTEXT_SEGCNTXT_READ_I( r, i ) READ_I_32( ( BBH_TX_6_CONTEXT_SEGCNTXT_ADDRESS ), (i), (r) ) +#define BBH_TX_6_CONTEXT_SEGCNTXT_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_CONTEXT_SEGCNTXT_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_CONTEXT_SEGCNTXT_ARRAY [ ] ; + +#define BBH_TX_CONTEXT_SEGCNTXT_WRITE( i, k, v ) WRITE_I_32( BBH_TX_CONTEXT_SEGCNTXT_ARRAY [ i ], (k), (v) ) +#define BBH_TX_CONTEXT_SEGCNTXT_READ( i, k, r ) READ_I_32( BBH_TX_CONTEXT_SEGCNTXT_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Remaining_chunks */ + uint32_t rmnchunk : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_Number */ + uint32_t bn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Source_port */ + uint32_t srcport : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pending_requests */ + uint32_t pendreq : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Absolute */ + uint32_t abs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_segmentation */ + uint32_t inseg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONTEXT_SEGCNTXT ; +#else +typedef struct +{ uint32_t inseg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* In_segmentation */ + uint32_t abs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Absolute */ + uint32_t pendreq : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pending_requests */ + uint32_t srcport : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Source_port */ + uint32_t bn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_Number */ + uint32_t rmnchunk : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Remaining_chunks */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONTEXT_SEGCNTXT ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO */ +/* The SW may read the PD RAM. This RAM includes a total of 256 PDs. A special registe */ +/* r marks the valid PDs. Each PD occupies 2 addresses of 32 bits - the odd address ref */ +/* ers to the LSB word of the entry. Please refer to BBH LLD for the context of the PD. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_PD_FIFO_PDFIFO_PDENTRY_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_PD_FIFO_PDFIFO_PDENTRY_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_PD_FIFO_PDFIFO_OFFSET ( 0x00000000 ) + +#define BBH_TX_0_EPON_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_0_EPON_PD_FIFO_ADDRESS + BBH_TX_EPON_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_0_EPON_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_0_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_0_EPON_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_EPON_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_1_EPON_PD_FIFO_ADDRESS + BBH_TX_EPON_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_1_EPON_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_1_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_1_EPON_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_EPON_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_2_EPON_PD_FIFO_ADDRESS + BBH_TX_EPON_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_2_EPON_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_2_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_2_EPON_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_EPON_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_3_EPON_PD_FIFO_ADDRESS + BBH_TX_EPON_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_3_EPON_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_3_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_3_EPON_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_EPON_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_4_EPON_PD_FIFO_ADDRESS + BBH_TX_EPON_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_4_EPON_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_4_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_4_EPON_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_EPON_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_5_EPON_PD_FIFO_ADDRESS + BBH_TX_EPON_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_5_EPON_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_5_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_5_EPON_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_EPON_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_6_EPON_PD_FIFO_ADDRESS + BBH_TX_EPON_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_6_EPON_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_6_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_6_EPON_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_EPON_PD_FIFO_PDFIFO_ARRAY [ ] ; + +#define BBH_TX_EPON_PD_FIFO_PDFIFO_WRITE( i, k, v ) WRITE_I_32( BBH_TX_EPON_PD_FIFO_PDFIFO_ARRAY [ i ], (k), (v) ) +#define BBH_TX_EPON_PD_FIFO_PDFIFO_READ( i, k, r ) READ_I_32( BBH_TX_EPON_PD_FIFO_PDFIFO_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PD_entry */ + uint32_t pdentry : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_PD_FIFO_PDFIFO ; +#else +typedef struct +{ uint32_t pdentry : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_entry */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_PD_FIFO_PDFIFO ; +#endif + +/*****************************************************************************************/ +/* Task_numbers_LSB */ +/* The BBH manages 40 queues for GPON or 32 queues for EPON. Each of the first 8 Queues */ +/* may have a unique Runner task number. Queues 8-39 have all the same configurable ta */ +/* sk number. This register defines the tasks for Queues 0-3. For Ethernet queue 0 sho */ +/* uld be configured. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_TASKLSB_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKLSB_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKLSB_TASK3_TASK_NUMBER_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKLSB_TASK3_TASK_NUMBER_VALUE_RESET_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKLSB_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKLSB_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKLSB_TASK2_TASK_NUMBER_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKLSB_TASK2_TASK_NUMBER_VALUE_RESET_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKLSB_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKLSB_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKLSB_TASK1_TASK_NUMBER_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKLSB_TASK1_TASK_NUMBER_VALUE_RESET_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKLSB_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKLSB_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKLSB_TASK0_TASK_NUMBER_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKLSB_TASK0_TASK_NUMBER_VALUE_RESET_VALUE ( 0x6 ) + + +#define BBH_TX_EPON_CFG_TASKLSB_OFFSET ( 0x00000000 ) + +#define BBH_TX_0_EPON_CFG_TASKLSB_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKLSB_OFFSET ) +#define BBH_TX_0_EPON_CFG_TASKLSB_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_TASKLSB_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKLSB_OFFSET ) +#define BBH_TX_1_EPON_CFG_TASKLSB_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_TASKLSB_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKLSB_OFFSET ) +#define BBH_TX_2_EPON_CFG_TASKLSB_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_TASKLSB_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKLSB_OFFSET ) +#define BBH_TX_3_EPON_CFG_TASKLSB_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_TASKLSB_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKLSB_OFFSET ) +#define BBH_TX_4_EPON_CFG_TASKLSB_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_TASKLSB_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKLSB_OFFSET ) +#define BBH_TX_5_EPON_CFG_TASKLSB_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_TASKLSB_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_TASKLSB_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKLSB_OFFSET ) +#define BBH_TX_6_EPON_CFG_TASKLSB_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_TASKLSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_TASKLSB_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_TASKLSB_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_TASKLSB_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_TASKLSB_READ( i, r ) READ_32( BBH_TX_EPON_CFG_TASKLSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_3 */ + uint32_t task3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_2 */ + uint32_t task2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_1 */ + uint32_t task1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_0 */ + uint32_t task0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_TASKLSB ; +#else +typedef struct +{ uint32_t task0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_0 */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_1 */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_2 */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_3 */ + uint32_t r4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_TASKLSB ; +#endif + +/*****************************************************************************************/ +/* Task_numbers_MSB */ +/* The BBH manages 40 queues for GPON or 32 queues for EPON. Each of the first 8 Queues */ +/* may have a unique Runner task number. Queues 8-39 have all the same configurable ta */ +/* sk number. This register defines the tasks for Queues 4-7. For Ethernet queue 0 sho */ +/* uld be configured. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_TASKMSB_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKMSB_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKMSB_TASK7_TASK_NUMBER_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKMSB_TASK7_TASK_NUMBER_VALUE_RESET_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKMSB_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKMSB_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKMSB_TASK6_TASK_NUMBER_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKMSB_TASK6_TASK_NUMBER_VALUE_RESET_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKMSB_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKMSB_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKMSB_TASK5_TASK_NUMBER_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKMSB_TASK5_TASK_NUMBER_VALUE_RESET_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKMSB_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKMSB_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASKMSB_TASK4_TASK_NUMBER_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASKMSB_TASK4_TASK_NUMBER_VALUE_RESET_VALUE ( 0x6 ) + + +#define BBH_TX_EPON_CFG_TASKMSB_OFFSET ( 0x00000004 ) + +#define BBH_TX_0_EPON_CFG_TASKMSB_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKMSB_OFFSET ) +#define BBH_TX_0_EPON_CFG_TASKMSB_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_TASKMSB_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKMSB_OFFSET ) +#define BBH_TX_1_EPON_CFG_TASKMSB_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_TASKMSB_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKMSB_OFFSET ) +#define BBH_TX_2_EPON_CFG_TASKMSB_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_TASKMSB_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKMSB_OFFSET ) +#define BBH_TX_3_EPON_CFG_TASKMSB_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_TASKMSB_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKMSB_OFFSET ) +#define BBH_TX_4_EPON_CFG_TASKMSB_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_TASKMSB_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKMSB_OFFSET ) +#define BBH_TX_5_EPON_CFG_TASKMSB_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_TASKMSB_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_TASKMSB_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKMSB_OFFSET ) +#define BBH_TX_6_EPON_CFG_TASKMSB_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_TASKMSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_TASKMSB_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_TASKMSB_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_TASKMSB_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_TASKMSB_READ( i, r ) READ_32( BBH_TX_EPON_CFG_TASKMSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_7 */ + uint32_t task7 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_6 */ + uint32_t task6 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_5 */ + uint32_t task5 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_4 */ + uint32_t task4 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_TASKMSB ; +#else +typedef struct +{ uint32_t task4 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_4 */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task5 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_5 */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task6 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_6 */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t task7 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_7 */ + uint32_t r4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_TASKMSB ; +#endif + +/*****************************************************************************************/ +/* Task_numbers_8-39 */ +/* The BBH manages 40 queues for GPON or 32 queues for EPON. Each of the first 8 Queues */ +/* may have a unique Runner task number. Queues 8-39 have all the same configurable ta */ +/* sk number. This register defines the tasks for Queues 8-39. For Ethernet queue 0 sh */ +/* ould be configured. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_TASK8_39_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASK8_39_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_TASK8_39_TASK8_39_TASK_NUMBER_VALUE ( 0x6 ) +#define BBH_TX_EPON_CFG_TASK8_39_TASK8_39_TASK_NUMBER_VALUE_RESET_VALUE ( 0x6 ) + + +#define BBH_TX_EPON_CFG_TASK8_39_OFFSET ( 0x00000008 ) + +#define BBH_TX_0_EPON_CFG_TASK8_39_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASK8_39_OFFSET ) +#define BBH_TX_0_EPON_CFG_TASK8_39_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_TASK8_39_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASK8_39_OFFSET ) +#define BBH_TX_1_EPON_CFG_TASK8_39_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_TASK8_39_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASK8_39_OFFSET ) +#define BBH_TX_2_EPON_CFG_TASK8_39_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_TASK8_39_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASK8_39_OFFSET ) +#define BBH_TX_3_EPON_CFG_TASK8_39_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_TASK8_39_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASK8_39_OFFSET ) +#define BBH_TX_4_EPON_CFG_TASK8_39_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_TASK8_39_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASK8_39_OFFSET ) +#define BBH_TX_5_EPON_CFG_TASK8_39_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_TASK8_39_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_TASK8_39_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASK8_39_OFFSET ) +#define BBH_TX_6_EPON_CFG_TASK8_39_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_TASK8_39_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_TASK8_39_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_TASK8_39_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_TASK8_39_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_TASK8_39_READ( i, r ) READ_32( BBH_TX_EPON_CFG_TASK8_39_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_8-39 */ + uint32_t task8_39 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_TASK8_39 ; +#else +typedef struct +{ uint32_t task8_39 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_8-39 */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_TASK8_39 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_size_0_3 */ +/* The BBH manages 40 queues for GPON and 32 queues for EPON (FIFO per TCONT/LLID). For */ +/* each queue it manages a PD FIFO. A total of 128 PDs (GPON) or 256 PDs (EPON) are av */ +/* ailable for all queues. For each Queue the SW configures the base and the size with */ +/* in these 128/256 PDs. This register defines the PD FIFO size for queues 0-3. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PDSIZE0_3_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE3_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE3_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE3_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE2_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE2_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE2_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE1_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE1_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE1_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE0_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE0_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_FIFOSIZE0_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) + + +#define BBH_TX_EPON_CFG_PDSIZE0_3_OFFSET ( 0x0000000C ) + +#define BBH_TX_0_EPON_CFG_PDSIZE0_3_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE0_3_OFFSET ) +#define BBH_TX_0_EPON_CFG_PDSIZE0_3_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PDSIZE0_3_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PDSIZE0_3_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PDSIZE0_3_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PDSIZE0_3_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE0_3_OFFSET ) +#define BBH_TX_1_EPON_CFG_PDSIZE0_3_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PDSIZE0_3_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PDSIZE0_3_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PDSIZE0_3_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PDSIZE0_3_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE0_3_OFFSET ) +#define BBH_TX_2_EPON_CFG_PDSIZE0_3_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PDSIZE0_3_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PDSIZE0_3_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PDSIZE0_3_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PDSIZE0_3_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE0_3_OFFSET ) +#define BBH_TX_3_EPON_CFG_PDSIZE0_3_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PDSIZE0_3_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PDSIZE0_3_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PDSIZE0_3_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PDSIZE0_3_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE0_3_OFFSET ) +#define BBH_TX_4_EPON_CFG_PDSIZE0_3_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PDSIZE0_3_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PDSIZE0_3_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PDSIZE0_3_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PDSIZE0_3_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE0_3_OFFSET ) +#define BBH_TX_5_EPON_CFG_PDSIZE0_3_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PDSIZE0_3_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PDSIZE0_3_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PDSIZE0_3_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PDSIZE0_3_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE0_3_OFFSET ) +#define BBH_TX_6_EPON_CFG_PDSIZE0_3_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PDSIZE0_3_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PDSIZE0_3_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PDSIZE0_3_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PDSIZE0_3_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PDSIZE0_3_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PDSIZE0_3_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PDSIZE0_3_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PDSIZE0_3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_3 */ + uint32_t fifosize3 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_2 */ + uint32_t fifosize2 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_1 */ + uint32_t fifosize1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_0 */ + uint32_t fifosize0 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDSIZE0_3 ; +#else +typedef struct +{ uint32_t fifosize0 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_0 */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t fifosize1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_1 */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t fifosize2 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_2 */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t fifosize3 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_3 */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDSIZE0_3 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_size_4_7 */ +/* The BBH manages 40 queues for GPON and 32 queues for EPON (FIFO per TCONT/LLID). For */ +/* each queue it manages a PD FIFO. A total of 128 PDs (GPON) or 256 PDs (EPON) are av */ +/* ailable for all queues. For each Queue the SW configures the base and the size with */ +/* in these 128/256 PDs. This register defines the PD FIFO size for queues 4-7. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PDSIZE4_7_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE7_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE7_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE7_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE6_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE6_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE6_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE5_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE5_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE5_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE4_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE4_DEFAULT_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_FIFOSIZE4_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xF ) + + +#define BBH_TX_EPON_CFG_PDSIZE4_7_OFFSET ( 0x00000010 ) + +#define BBH_TX_0_EPON_CFG_PDSIZE4_7_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE4_7_OFFSET ) +#define BBH_TX_0_EPON_CFG_PDSIZE4_7_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PDSIZE4_7_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PDSIZE4_7_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PDSIZE4_7_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PDSIZE4_7_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE4_7_OFFSET ) +#define BBH_TX_1_EPON_CFG_PDSIZE4_7_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PDSIZE4_7_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PDSIZE4_7_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PDSIZE4_7_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PDSIZE4_7_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE4_7_OFFSET ) +#define BBH_TX_2_EPON_CFG_PDSIZE4_7_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PDSIZE4_7_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PDSIZE4_7_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PDSIZE4_7_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PDSIZE4_7_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE4_7_OFFSET ) +#define BBH_TX_3_EPON_CFG_PDSIZE4_7_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PDSIZE4_7_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PDSIZE4_7_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PDSIZE4_7_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PDSIZE4_7_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE4_7_OFFSET ) +#define BBH_TX_4_EPON_CFG_PDSIZE4_7_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PDSIZE4_7_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PDSIZE4_7_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PDSIZE4_7_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PDSIZE4_7_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE4_7_OFFSET ) +#define BBH_TX_5_EPON_CFG_PDSIZE4_7_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PDSIZE4_7_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PDSIZE4_7_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PDSIZE4_7_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PDSIZE4_7_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE4_7_OFFSET ) +#define BBH_TX_6_EPON_CFG_PDSIZE4_7_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PDSIZE4_7_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PDSIZE4_7_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PDSIZE4_7_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PDSIZE4_7_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PDSIZE4_7_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PDSIZE4_7_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PDSIZE4_7_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PDSIZE4_7_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_7 */ + uint32_t fifosize7 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_6 */ + uint32_t fifosize6 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_5 */ + uint32_t fifosize5 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_4 */ + uint32_t fifosize4 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDSIZE4_7 ; +#else +typedef struct +{ uint32_t fifosize4 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_4 */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t fifosize5 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_5 */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t fifosize6 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_6 */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t fifosize7 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_7 */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDSIZE4_7 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_size_8_31 */ +/* The BBH manages 40 queues for GPON and 32 queues for EPON (FIFO per queue). For each */ +/* queue it manages a PD FIFO. A total of 128 PDs for GPON and 256 PDs for EPON are av */ +/* ailable for all queues. For each Queue the SW configures the base and the size with */ +/* in these 128/256 PDs. This register defines the PD FIFO size for TCONTs 8-31. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PDSIZE8_31_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_FIFOSIZE24_31_DEFAULT_EPON_VALUE ( 0x4 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_FIFOSIZE24_31_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x4 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_FIFOSIZE24_31_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_FIFOSIZE16_23_DEFAULT_EPON_VALUE ( 0x4 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_FIFOSIZE16_23_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x4 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_FIFOSIZE16_23_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_FIFOSIZE8_15_DEFAULT_EPON_VALUE ( 0x4 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_FIFOSIZE8_15_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x4 ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_FIFOSIZE8_15_MAX_EPON_VALUE ( 0xF ) + + +#define BBH_TX_EPON_CFG_PDSIZE8_31_OFFSET ( 0x00000014 ) + +#define BBH_TX_0_EPON_CFG_PDSIZE8_31_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE8_31_OFFSET ) +#define BBH_TX_0_EPON_CFG_PDSIZE8_31_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PDSIZE8_31_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PDSIZE8_31_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PDSIZE8_31_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PDSIZE8_31_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE8_31_OFFSET ) +#define BBH_TX_1_EPON_CFG_PDSIZE8_31_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PDSIZE8_31_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PDSIZE8_31_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PDSIZE8_31_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PDSIZE8_31_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE8_31_OFFSET ) +#define BBH_TX_2_EPON_CFG_PDSIZE8_31_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PDSIZE8_31_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PDSIZE8_31_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PDSIZE8_31_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PDSIZE8_31_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE8_31_OFFSET ) +#define BBH_TX_3_EPON_CFG_PDSIZE8_31_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PDSIZE8_31_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PDSIZE8_31_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PDSIZE8_31_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PDSIZE8_31_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE8_31_OFFSET ) +#define BBH_TX_4_EPON_CFG_PDSIZE8_31_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PDSIZE8_31_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PDSIZE8_31_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PDSIZE8_31_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PDSIZE8_31_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE8_31_OFFSET ) +#define BBH_TX_5_EPON_CFG_PDSIZE8_31_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PDSIZE8_31_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PDSIZE8_31_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PDSIZE8_31_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PDSIZE8_31_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE8_31_OFFSET ) +#define BBH_TX_6_EPON_CFG_PDSIZE8_31_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PDSIZE8_31_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PDSIZE8_31_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PDSIZE8_31_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PDSIZE8_31_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PDSIZE8_31_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PDSIZE8_31_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PDSIZE8_31_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PDSIZE8_31_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r3 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_24_31 */ + uint32_t fifosize24_31 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_16_23 */ + uint32_t fifosize16_23 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_8_15 */ + uint32_t fifosize8_15 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDSIZE8_31 ; +#else +typedef struct +{ uint32_t fifosize8_15 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_8_15 */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t fifosize16_23 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_16_23 */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t fifosize24_31 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_size_24_31 */ + uint32_t r3 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDSIZE8_31 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_base_0_3 */ +/* The BBH manages 40 queues for GPON or 32 queus for EPON (1 for each TCONT/LLID). For */ +/* each queue it manages a PD FIFO. A total of 128 PDs (GPON) or 256 (EPON) are availa */ +/* ble for all queues. For each Queue the SW configures the base and the size within t */ +/* hese 128/256 PDs. This register defines the PD FIFO base for TCONTs 0-3. This confi */ +/* guration is irrelevant for Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE3_DEFAULT_EPON_VALUE ( 0x30 ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE3_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x30 ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE3_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE2_DEFAULT_EPON_VALUE ( 0x20 ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE2_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x20 ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE2_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE1_DEFAULT_EPON_VALUE ( 0x10 ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE1_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x10 ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE1_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE0_DEFAULT_EPON_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE0_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDBASE0_3_FIFOBASE0_MAX_EPON_VALUE ( 0xFF ) + + +#define BBH_TX_EPON_CFG_PDBASE0_3_OFFSET ( 0x00000018 ) + +#define BBH_TX_0_EPON_CFG_PDBASE0_3_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE0_3_OFFSET ) +#define BBH_TX_0_EPON_CFG_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PDBASE0_3_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE0_3_OFFSET ) +#define BBH_TX_1_EPON_CFG_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PDBASE0_3_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE0_3_OFFSET ) +#define BBH_TX_2_EPON_CFG_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PDBASE0_3_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE0_3_OFFSET ) +#define BBH_TX_3_EPON_CFG_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PDBASE0_3_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE0_3_OFFSET ) +#define BBH_TX_4_EPON_CFG_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PDBASE0_3_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE0_3_OFFSET ) +#define BBH_TX_5_EPON_CFG_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PDBASE0_3_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PDBASE0_3_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE0_3_OFFSET ) +#define BBH_TX_6_EPON_CFG_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PDBASE0_3_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PDBASE0_3_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PDBASE0_3_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PDBASE0_3_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PDBASE0_3_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PDBASE0_3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* FIFO_base_3 */ + uint32_t fifobase3 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_2 */ + uint32_t fifobase2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_1 */ + uint32_t fifobase1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_0 */ + uint32_t fifobase0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDBASE0_3 ; +#else +typedef struct +{ uint32_t fifobase0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_0 */ + uint32_t fifobase1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_1 */ + uint32_t fifobase2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_2 */ + uint32_t fifobase3 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_3 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDBASE0_3 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_base_4_7 */ +/* The BBH manages 40 queues for GPON or 32 queus for EPON (1 for each TCONT/LLID). For */ +/* each queue it manages a PD FIFO. A total of 128 PDs (GPON) or 256 (EPON) are availa */ +/* ble for all queues. For each Queue the SW configures the base and the size within t */ +/* hese 128/256 PDs. This register defines the PD FIFO base for TCONTs 4-7. This confi */ +/* guration is irrelevant for Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE7_DEFAULT_EPON_VALUE ( 0x70 ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE7_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x70 ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE7_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE6_DEFAULT_EPON_VALUE ( 0x60 ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE6_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x60 ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE6_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE5_DEFAULT_EPON_VALUE ( 0x50 ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE5_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x50 ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE5_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE4_DEFAULT_EPON_VALUE ( 0x40 ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE4_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x40 ) +#define BBH_TX_EPON_CFG_PDBASE4_7_FIFOBASE4_MAX_EPON_VALUE ( 0xFF ) + + +#define BBH_TX_EPON_CFG_PDBASE4_7_OFFSET ( 0x0000001C ) + +#define BBH_TX_0_EPON_CFG_PDBASE4_7_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE4_7_OFFSET ) +#define BBH_TX_0_EPON_CFG_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PDBASE4_7_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE4_7_OFFSET ) +#define BBH_TX_1_EPON_CFG_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PDBASE4_7_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE4_7_OFFSET ) +#define BBH_TX_2_EPON_CFG_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PDBASE4_7_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE4_7_OFFSET ) +#define BBH_TX_3_EPON_CFG_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PDBASE4_7_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE4_7_OFFSET ) +#define BBH_TX_4_EPON_CFG_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PDBASE4_7_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE4_7_OFFSET ) +#define BBH_TX_5_EPON_CFG_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PDBASE4_7_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PDBASE4_7_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE4_7_OFFSET ) +#define BBH_TX_6_EPON_CFG_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PDBASE4_7_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PDBASE4_7_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PDBASE4_7_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PDBASE4_7_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PDBASE4_7_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PDBASE4_7_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* FIFO_base_7 */ + uint32_t fifobase7 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_6 */ + uint32_t fifobase6 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_5 */ + uint32_t fifobase5 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_4 */ + uint32_t fifobase4 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDBASE4_7 ; +#else +typedef struct +{ uint32_t fifobase4 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_4 */ + uint32_t fifobase5 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_5 */ + uint32_t fifobase6 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_6 */ + uint32_t fifobase7 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_7 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDBASE4_7 ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO_base_8_39 */ +/* The BBH manages 40 queues (GPON) or 32 queus (EPON). For each queue it manages a PD F */ +/* IFO. A total of 128 PDs (GPON) or 256 PDs (EPON) are available for all queues. Fo */ +/* r each Queue the SW configures the base and the size within these 128/256 PDs. This */ +/* register defines the PD FIFO base for queues 8-39. This configuration is irrelevant */ +/* for Ethernet. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE32_39_MAX_EPON_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE32_39_DEFAULT_GPON_VALUE ( 0x70 ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE32_39_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x70 ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE24_31_DEFAULT_EPON_VALUE ( 0xD0 ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE24_31_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xD0 ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE24_31_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE16_23_DEFAULT_EPON_VALUE ( 0xA8 ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE16_23_DEFAULT_EPON_VALUE_RESET_VALUE ( 0xA8 ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE16_23_MAX_EPON_VALUE ( 0xFF ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE8_15_DEFAULT_EPON_VALUE ( 0x80 ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE8_15_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x80 ) +#define BBH_TX_EPON_CFG_PDBASE8_39_FIFOBASE8_15_MAX_EPON_VALUE ( 0xFF ) + + +#define BBH_TX_EPON_CFG_PDBASE8_39_OFFSET ( 0x00000020 ) + +#define BBH_TX_0_EPON_CFG_PDBASE8_39_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE8_39_OFFSET ) +#define BBH_TX_0_EPON_CFG_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PDBASE8_39_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE8_39_OFFSET ) +#define BBH_TX_1_EPON_CFG_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PDBASE8_39_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE8_39_OFFSET ) +#define BBH_TX_2_EPON_CFG_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PDBASE8_39_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE8_39_OFFSET ) +#define BBH_TX_3_EPON_CFG_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PDBASE8_39_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE8_39_OFFSET ) +#define BBH_TX_4_EPON_CFG_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PDBASE8_39_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE8_39_OFFSET ) +#define BBH_TX_5_EPON_CFG_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PDBASE8_39_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PDBASE8_39_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE8_39_OFFSET ) +#define BBH_TX_6_EPON_CFG_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PDBASE8_39_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PDBASE8_39_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PDBASE8_39_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PDBASE8_39_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PDBASE8_39_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PDBASE8_39_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* FIFO_base_32_39 */ + uint32_t fifobase32_39 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_24_31 */ + uint32_t fifobase24_31 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_16_23 */ + uint32_t fifobase16_23 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_8_15 */ + uint32_t fifobase8_15 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDBASE8_39 ; +#else +typedef struct +{ uint32_t fifobase8_15 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_8_15 */ + uint32_t fifobase16_23 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_16_23 */ + uint32_t fifobase24_31 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_24_31 */ + uint32_t fifobase32_39 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_base_32_39 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDBASE8_39 ; +#endif + +/*****************************************************************************************/ +/* PD_bytes_threshold_EN */ +/* The BBH requests PDs from the Runner and maintains a pre-fetch PDs FIFO. The PDs pre */ +/* fetch is limited either by the PD FIFO configurable size or according to the total n */ +/* umber of bytes (deducting bytes already requested/transmitted) for preventing HOL. Fu */ +/* ll configuration for the first 8 TCONT and one configuration per group of 8 TCONTs fo */ +/* r the rest. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PD_BYTE_TH_EN_RESERVED1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_EN_RESERVED1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_EN_PDLIMITEN_PD_LIMIT_DISABLE_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_EN_PDLIMITEN_PD_LIMIT_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_EN_PDLIMITEN_PD_LIMIT_ENABLE_VALUE ( 0x1 ) + + +#define BBH_TX_EPON_CFG_PD_BYTE_TH_EN_OFFSET ( 0x00000024 ) + +#define BBH_TX_0_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_0_EPON_CFG_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_1_EPON_CFG_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_2_EPON_CFG_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_3_EPON_CFG_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_4_EPON_CFG_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_5_EPON_CFG_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_6_EPON_CFG_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PD_BYTE_TH_EN_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PD_BYTE_TH_EN_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PD_BYTE_TH_EN_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_EN_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PD_BYTE_TH_EN_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_enable */ + uint32_t pdlimiten : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PD_BYTE_TH_EN ; +#else +typedef struct +{ uint32_t pdlimiten : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_enable */ + uint32_t reserved1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PD_BYTE_TH_EN ; +#endif + +/*****************************************************************************************/ +/* PD_bytes_threshold */ +/* The BBH requests PDs from the Runner and maintains a pre-fetch PDs FIFO. The PDs pre */ +/* fetch is limited either by the PD FIFO configurable size or according to the total n */ +/* umber of bytes (deducting bytes already requested/transmitted) for preventing HOL. Fu */ +/* ll configuration for the first 8 TCONT and one configuration for the rest (TCONTs 8-3 */ +/* 9). Registers 0-3 define the configuration for the first 8 TCONT and register 4 defi */ +/* nes the configuration for TCONTs 8-39 (in the even field). */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PD_BYTE_TH_R2_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_R2_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_PDLIMITEVEN_DEFAULT_VALUE ( 0x180 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_PDLIMITEVEN_DEFAULT_VALUE_RESET_VALUE ( 0x180 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_PDLIMITODD_DEFAULT_VALUE ( 0x180 ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_PDLIMITODD_DEFAULT_VALUE_RESET_VALUE ( 0x180 ) + + +#define BBH_TX_EPON_CFG_PD_BYTE_TH_OFFSET ( 0x00000028 ) + +#define BBH_TX_0_EPON_CFG_PD_BYTE_TH_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_OFFSET ) +#define BBH_TX_0_EPON_CFG_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_0_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_0_EPON_CFG_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_EPON_CFG_PD_BYTE_TH_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_OFFSET ) +#define BBH_TX_1_EPON_CFG_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_1_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_1_EPON_CFG_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_EPON_CFG_PD_BYTE_TH_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_OFFSET ) +#define BBH_TX_2_EPON_CFG_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_2_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_2_EPON_CFG_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_EPON_CFG_PD_BYTE_TH_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_OFFSET ) +#define BBH_TX_3_EPON_CFG_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_3_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_3_EPON_CFG_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_EPON_CFG_PD_BYTE_TH_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_OFFSET ) +#define BBH_TX_4_EPON_CFG_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_4_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_4_EPON_CFG_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_EPON_CFG_PD_BYTE_TH_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_OFFSET ) +#define BBH_TX_5_EPON_CFG_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_5_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_5_EPON_CFG_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_EPON_CFG_PD_BYTE_TH_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_OFFSET ) +#define BBH_TX_6_EPON_CFG_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_6_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_6_EPON_CFG_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PD_BYTE_TH_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PD_BYTE_TH_WRITE( i, k, v ) WRITE_I_32( BBH_TX_EPON_CFG_PD_BYTE_TH_ARRAY [ i ], (k), (v) ) +#define BBH_TX_EPON_CFG_PD_BYTE_TH_READ( i, k, r ) READ_I_32( BBH_TX_EPON_CFG_PD_BYTE_TH_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_even */ + uint32_t pdlimiteven : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_odd */ + uint32_t pdlimitodd : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PD_BYTE_TH ; +#else +typedef struct +{ uint32_t pdlimitodd : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_odd */ + uint32_t r1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t pdlimiteven : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_limit_even */ + uint32_t r2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PD_BYTE_TH ; +#endif + +/*****************************************************************************************/ +/* Runner_configurations */ +/* TCONT/LLID address: The BBH requests a Packet descriptor from the Runner. The BBH se */ +/* nds a wake-up request to the Runner (for a new PD). The wake-up request is written to */ +/* address 0x8000 in the Runner. In the case of GPON/EPON peripheral the BBH writes */ +/* the TCONT/LLID number in a predefined address at the Runner SRAM and then sends a wak */ +/* e-up request to the Runner. This register defines the TCONT/LLID address within the */ +/* Runner address space. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_RUNNERCFG_R0_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_RUNNERCFG_R0_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_RUNNERCFG_TCONTADDR_TCONT_ADDRESS_VALUE ( 0x1797 ) +#define BBH_TX_EPON_CFG_RUNNERCFG_TCONTADDR_TCONT_ADDRESS_VALUE_RESET_VALUE ( 0x1797 ) + + +#define BBH_TX_EPON_CFG_RUNNERCFG_OFFSET ( 0x0000003C ) + +#define BBH_TX_0_EPON_CFG_RUNNERCFG_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_RUNNERCFG_OFFSET ) +#define BBH_TX_0_EPON_CFG_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_RUNNERCFG_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_RUNNERCFG_OFFSET ) +#define BBH_TX_1_EPON_CFG_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_RUNNERCFG_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_RUNNERCFG_OFFSET ) +#define BBH_TX_2_EPON_CFG_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_RUNNERCFG_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_RUNNERCFG_OFFSET ) +#define BBH_TX_3_EPON_CFG_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_RUNNERCFG_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_RUNNERCFG_OFFSET ) +#define BBH_TX_4_EPON_CFG_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_RUNNERCFG_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_RUNNERCFG_OFFSET ) +#define BBH_TX_5_EPON_CFG_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_RUNNERCFG_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_RUNNERCFG_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_RUNNERCFG_OFFSET ) +#define BBH_TX_6_EPON_CFG_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_RUNNERCFG_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_RUNNERCFG_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_RUNNERCFG_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_RUNNERCFG_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_RUNNERCFG_READ( i, r ) READ_32( BBH_TX_EPON_CFG_RUNNERCFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TCONT_address */ + uint32_t tcontaddr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_RUNNERCFG ; +#else +typedef struct +{ uint32_t tcontaddr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TCONT_address */ + uint32_t r0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_RUNNERCFG ; +#endif + +/*****************************************************************************************/ +/* MDU_CFG */ +/* The BBH supports a special configurable mode to enable a faster packet bridging: -Th */ +/* ere will be a special configurable mode for transferring the PD from the Runner into */ +/* the BBH TX. -The Runner wont ACK the BBH; therefore the BBH wont wake the TX task. */ +/* -The Runner will push the PDs into the BBH (without any wakeup from the BBH). -E */ +/* ach time that the BBH reads a PD from the PD FIFO, it will write the read pointer int */ +/* o a pre-defined address in the Runner (enable by configuration). The pointer is 6 bit */ +/* s width (one bit larger than needed to distinguish between full and empty). -The Run */ +/* ner should manage the congestion over the PD FIFO (in the BBH) by reading the BBH rea */ +/* d pointer prior to each PD write. -PD drop should be done by the Runner only. The B */ +/* BH will drop PD when the FIFO is full and will count each drop. The BBH wont release */ +/* the BN in this case. For EPON BBH, there will be a full threshold, which can be smal */ +/* ler than the actual size of the FIFO. When the BBH will move from full to not full st */ +/* ate, the BBH will wakeup the Runner. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_MDUMODE_PTRADDR_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_MDUMODE_PTRADDR_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_MDUMODE_R1_RESET_VALUE_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_MDUMODE_R1_RESET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_MDUMODE_MDUEN_DIS_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_MDUMODE_MDUEN_DIS_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_MDUMODE_MDUEN_EN_VALUE ( 0x1 ) + + +#define BBH_TX_EPON_CFG_MDUMODE_OFFSET ( 0x00000040 ) + +#define BBH_TX_0_EPON_CFG_MDUMODE_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_MDUMODE_OFFSET ) +#define BBH_TX_0_EPON_CFG_MDUMODE_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_MDUMODE_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_MDUMODE_OFFSET ) +#define BBH_TX_1_EPON_CFG_MDUMODE_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_MDUMODE_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_MDUMODE_OFFSET ) +#define BBH_TX_2_EPON_CFG_MDUMODE_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_MDUMODE_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_MDUMODE_OFFSET ) +#define BBH_TX_3_EPON_CFG_MDUMODE_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_MDUMODE_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_MDUMODE_OFFSET ) +#define BBH_TX_4_EPON_CFG_MDUMODE_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_MDUMODE_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_MDUMODE_OFFSET ) +#define BBH_TX_5_EPON_CFG_MDUMODE_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_MDUMODE_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_MDUMODE_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_MDUMODE_OFFSET ) +#define BBH_TX_6_EPON_CFG_MDUMODE_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_MDUMODE_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_MDUMODE_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_MDUMODE_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_MDUMODE_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_MDUMODE_READ( i, r ) READ_32( BBH_TX_EPON_CFG_MDUMODE_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PTRADDR */ + uint32_t ptraddr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MDU_EN */ + uint32_t mduen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_MDUMODE ; +#else +typedef struct +{ uint32_t mduen : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MDU_EN */ + uint32_t r1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t ptraddr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PTRADDR */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_MDUMODE ; +#endif + +/*****************************************************************************************/ +/* REQ_CFG */ +/* Configurations related to EPON Request interface. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_REQCFG_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_REQCFG_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_REQCFG_CMP_WIDTH_WIDTH_11_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_REQCFG_CMP_WIDTH_WIDTH_11_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_REQCFG_CMP_WIDTH_WIDTH_14_VALUE ( 0x1 ) +#define BBH_TX_EPON_CFG_REQCFG_STPLENERR_CONTINUE_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_REQCFG_STPLENERR_CONTINUE_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_REQCFG_STPLENERR_STOP_VALUE ( 0x1 ) + + +#define BBH_TX_EPON_CFG_REQCFG_OFFSET ( 0x00000044 ) + +#define BBH_TX_0_EPON_CFG_REQCFG_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_REQCFG_OFFSET ) +#define BBH_TX_0_EPON_CFG_REQCFG_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_REQCFG_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_REQCFG_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_REQCFG_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_REQCFG_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_REQCFG_OFFSET ) +#define BBH_TX_1_EPON_CFG_REQCFG_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_REQCFG_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_REQCFG_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_REQCFG_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_REQCFG_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_REQCFG_OFFSET ) +#define BBH_TX_2_EPON_CFG_REQCFG_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_REQCFG_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_REQCFG_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_REQCFG_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_REQCFG_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_REQCFG_OFFSET ) +#define BBH_TX_3_EPON_CFG_REQCFG_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_REQCFG_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_REQCFG_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_REQCFG_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_REQCFG_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_REQCFG_OFFSET ) +#define BBH_TX_4_EPON_CFG_REQCFG_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_REQCFG_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_REQCFG_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_REQCFG_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_REQCFG_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_REQCFG_OFFSET ) +#define BBH_TX_5_EPON_CFG_REQCFG_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_REQCFG_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_REQCFG_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_REQCFG_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_REQCFG_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_REQCFG_OFFSET ) +#define BBH_TX_6_EPON_CFG_REQCFG_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_REQCFG_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_REQCFG_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_REQCFG_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_REQCFG_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_REQCFG_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_REQCFG_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_REQCFG_READ( i, r ) READ_32( BBH_TX_EPON_CFG_REQCFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* comp_width */ + uint32_t cmp_width : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Stop_on_len_error */ + uint32_t stplenerr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_REQCFG ; +#else +typedef struct +{ uint32_t stplenerr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Stop_on_len_error */ + uint32_t cmp_width : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* comp_width */ + uint32_t r1 : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_REQCFG ; +#endif + +/*****************************************************************************************/ +/* PD_WKUP_THRESH_0_3 */ +/* The BBH manages 32 queues for EPON (FIFO per LLID). For each queue it manages a PD FI */ +/* FO. When a FIFO occupancy is above this wakeup threshold, the BBH will not wake-up */ +/* the Runner for sending a new PD. This threshold does not represent the actual size of */ +/* the FIFO. If a PD will arrive from the Runner when the FIFO is above the threshold, */ +/* it will not be dropped unless the FIFO is actually full. Relevant only for EPON BBH. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PDWKUPH0_3_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH3_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH3_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH3_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH2_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH2_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH2_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH1_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH1_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH1_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH0_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH0_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WKUPTHRESH0_MAX_EPON_VALUE ( 0xF ) + + +#define BBH_TX_EPON_CFG_PDWKUPH0_3_OFFSET ( 0x00000048 ) + +#define BBH_TX_0_EPON_CFG_PDWKUPH0_3_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH0_3_OFFSET ) +#define BBH_TX_0_EPON_CFG_PDWKUPH0_3_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PDWKUPH0_3_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PDWKUPH0_3_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PDWKUPH0_3_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PDWKUPH0_3_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH0_3_OFFSET ) +#define BBH_TX_1_EPON_CFG_PDWKUPH0_3_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PDWKUPH0_3_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PDWKUPH0_3_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PDWKUPH0_3_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PDWKUPH0_3_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH0_3_OFFSET ) +#define BBH_TX_2_EPON_CFG_PDWKUPH0_3_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PDWKUPH0_3_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PDWKUPH0_3_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PDWKUPH0_3_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PDWKUPH0_3_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH0_3_OFFSET ) +#define BBH_TX_3_EPON_CFG_PDWKUPH0_3_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PDWKUPH0_3_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PDWKUPH0_3_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PDWKUPH0_3_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PDWKUPH0_3_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH0_3_OFFSET ) +#define BBH_TX_4_EPON_CFG_PDWKUPH0_3_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PDWKUPH0_3_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PDWKUPH0_3_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PDWKUPH0_3_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PDWKUPH0_3_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH0_3_OFFSET ) +#define BBH_TX_5_EPON_CFG_PDWKUPH0_3_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PDWKUPH0_3_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PDWKUPH0_3_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PDWKUPH0_3_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PDWKUPH0_3_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH0_3_OFFSET ) +#define BBH_TX_6_EPON_CFG_PDWKUPH0_3_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PDWKUPH0_3_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PDWKUPH0_3_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PDWKUPH0_3_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PDWKUPH0_3_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PDWKUPH0_3_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PDWKUPH0_3_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PDWKUPH0_3_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PDWKUPH0_3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_3 */ + uint32_t wkupthresh3 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_2 */ + uint32_t wkupthresh2 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_1 */ + uint32_t wkupthresh1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_0 */ + uint32_t wkupthresh0 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDWKUPH0_3 ; +#else +typedef struct +{ uint32_t wkupthresh0 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_0 */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t wkupthresh1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_1 */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t wkupthresh2 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_2 */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t wkupthresh3 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_3 */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDWKUPH0_3 ; +#endif + +/*****************************************************************************************/ +/* PD_WKUP_THRESH_4_7 */ +/* The BBH manages 32 queues for EPON (FIFO per LLID). For each queue it manages a PD FI */ +/* FO. When a FIFO occupancy is above this wakeup threshold, the BBH will not wake-up */ +/* the Runner for sending a new PD. This threshold does not represent the actual size of */ +/* the FIFO. If a PD will arrive from the Runner when the FIFO is above the threshold, */ +/* it will not be dropped unless the FIFO is actually full. Relevant only for EPON BBH. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PDWKUPH4_7_R4_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_R4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH7_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH7_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH7_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_R3_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_R3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH6_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH6_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH6_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH5_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH5_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH5_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH4_DEFAULT_EPON_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH4_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x7 ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WKUPTHRESH4_MAX_EPON_VALUE ( 0xF ) + + +#define BBH_TX_EPON_CFG_PDWKUPH4_7_OFFSET ( 0x0000004C ) + +#define BBH_TX_0_EPON_CFG_PDWKUPH4_7_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH4_7_OFFSET ) +#define BBH_TX_0_EPON_CFG_PDWKUPH4_7_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PDWKUPH4_7_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PDWKUPH4_7_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PDWKUPH4_7_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PDWKUPH4_7_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH4_7_OFFSET ) +#define BBH_TX_1_EPON_CFG_PDWKUPH4_7_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PDWKUPH4_7_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PDWKUPH4_7_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PDWKUPH4_7_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PDWKUPH4_7_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH4_7_OFFSET ) +#define BBH_TX_2_EPON_CFG_PDWKUPH4_7_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PDWKUPH4_7_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PDWKUPH4_7_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PDWKUPH4_7_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PDWKUPH4_7_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH4_7_OFFSET ) +#define BBH_TX_3_EPON_CFG_PDWKUPH4_7_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PDWKUPH4_7_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PDWKUPH4_7_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PDWKUPH4_7_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PDWKUPH4_7_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH4_7_OFFSET ) +#define BBH_TX_4_EPON_CFG_PDWKUPH4_7_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PDWKUPH4_7_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PDWKUPH4_7_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PDWKUPH4_7_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PDWKUPH4_7_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH4_7_OFFSET ) +#define BBH_TX_5_EPON_CFG_PDWKUPH4_7_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PDWKUPH4_7_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PDWKUPH4_7_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PDWKUPH4_7_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PDWKUPH4_7_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH4_7_OFFSET ) +#define BBH_TX_6_EPON_CFG_PDWKUPH4_7_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PDWKUPH4_7_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PDWKUPH4_7_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PDWKUPH4_7_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PDWKUPH4_7_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PDWKUPH4_7_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PDWKUPH4_7_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PDWKUPH4_7_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PDWKUPH4_7_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_7 */ + uint32_t wkupthresh7 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_6 */ + uint32_t wkupthresh6 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_5 */ + uint32_t wkupthresh5 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_4 */ + uint32_t wkupthresh4 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDWKUPH4_7 ; +#else +typedef struct +{ uint32_t wkupthresh4 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_4 */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t wkupthresh5 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_5 */ + uint32_t r2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t wkupthresh6 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_6 */ + uint32_t r3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t wkupthresh7 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_7 */ + uint32_t r4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDWKUPH4_7 ; +#endif + +/*****************************************************************************************/ +/* PD_WKUP_THRESH_8_31 */ +/* The BBH manages 32 queues for EPON (FIFO per LLID). For each queue it manages a PD FI */ +/* FO. When a FIFO occupancy is above this wakeup threshold, the BBH will not wake-up */ +/* the Runner for sending a new PD. This threshold does not represent the actual size of */ +/* the FIFO. If a PD will arrive from the Runner when the FIFO is above the threshold, */ +/* it will not be dropped unless the FIFO is actually full. For queues 8-31, this confi */ +/* guration is per octet. Relevant only for EPON BBH. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PDWKUPH8_31_R2_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_WKUPTHRESH24_31_DEFAULT_EPON_VALUE ( 0x2 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_WKUPTHRESH24_31_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x2 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_WKUPTHRESH24_31_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_WKUPTHRESH16_23_DEFAULT_EPON_VALUE ( 0x2 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_WKUPTHRESH16_23_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x2 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_WKUPTHRESH16_23_MAX_EPON_VALUE ( 0xF ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_R0_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_R0_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_WKUPTHRESH8_15_DEFAULT_EPON_VALUE ( 0x2 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_WKUPTHRESH8_15_DEFAULT_EPON_VALUE_RESET_VALUE ( 0x2 ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_WKUPTHRESH8_15_MAX_EPON_VALUE ( 0xF ) + + +#define BBH_TX_EPON_CFG_PDWKUPH8_31_OFFSET ( 0x00000050 ) + +#define BBH_TX_0_EPON_CFG_PDWKUPH8_31_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH8_31_OFFSET ) +#define BBH_TX_0_EPON_CFG_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PDWKUPH8_31_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH8_31_OFFSET ) +#define BBH_TX_1_EPON_CFG_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PDWKUPH8_31_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH8_31_OFFSET ) +#define BBH_TX_2_EPON_CFG_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PDWKUPH8_31_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH8_31_OFFSET ) +#define BBH_TX_3_EPON_CFG_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PDWKUPH8_31_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH8_31_OFFSET ) +#define BBH_TX_4_EPON_CFG_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PDWKUPH8_31_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH8_31_OFFSET ) +#define BBH_TX_5_EPON_CFG_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PDWKUPH8_31_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PDWKUPH8_31_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH8_31_OFFSET ) +#define BBH_TX_6_EPON_CFG_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PDWKUPH8_31_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PDWKUPH8_31_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PDWKUPH8_31_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PDWKUPH8_31_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PDWKUPH8_31_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PDWKUPH8_31_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r2 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_24_31 */ + uint32_t wkupthresh24_31 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_16_23 */ + uint32_t wkupthresh16_23 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_8_15 */ + uint32_t wkupthresh8_15 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDWKUPH8_31 ; +#else +typedef struct +{ uint32_t wkupthresh8_15 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_8_15 */ + uint32_t r0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t wkupthresh16_23 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_16_23 */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t wkupthresh24_31 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FIFO_wake_up_threshold_24_31 */ + uint32_t r2 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDWKUPH8_31 ; +#endif + +/*****************************************************************************************/ +/* PD_EMPTY_THRESHOLD */ +/* The BBH manages 32 queues for EPON (FIFO per LLID). For each queue it manages a PD FI */ +/* FO. Usually, the BBH orders PDs from the Runner in RR between all queues. In EPON BBH */ +/* , if a FIFO occupancy is below this threshold, the queue will have higher priority in */ +/* PD ordering arbitration (with RR between all the empty queues). This configuration */ +/* is global for all queues. Relevant only for EPON BBH. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_CFG_PDEMPTY_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDEMPTY_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDEMPTY_EMPTY_MIN_VALUE ( 0x0 ) +#define BBH_TX_EPON_CFG_PDEMPTY_EMPTY_DEFAULT_VALUE ( 0x1 ) +#define BBH_TX_EPON_CFG_PDEMPTY_EMPTY_DEFAULT_VALUE_RESET_VALUE ( 0x1 ) +#define BBH_TX_EPON_CFG_PDEMPTY_EMPTY_MAX_VALUE ( 0xF ) + + +#define BBH_TX_EPON_CFG_PDEMPTY_OFFSET ( 0x00000054 ) + +#define BBH_TX_0_EPON_CFG_PDEMPTY_ADDRESS ( BBH_TX_0_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDEMPTY_OFFSET ) +#define BBH_TX_0_EPON_CFG_PDEMPTY_READ( r ) READ_32( ( BBH_TX_0_EPON_CFG_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_CFG_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_CFG_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_CFG_PDEMPTY_ADDRESS ( BBH_TX_1_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDEMPTY_OFFSET ) +#define BBH_TX_1_EPON_CFG_PDEMPTY_READ( r ) READ_32( ( BBH_TX_1_EPON_CFG_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_CFG_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_CFG_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_CFG_PDEMPTY_ADDRESS ( BBH_TX_2_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDEMPTY_OFFSET ) +#define BBH_TX_2_EPON_CFG_PDEMPTY_READ( r ) READ_32( ( BBH_TX_2_EPON_CFG_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_CFG_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_CFG_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_CFG_PDEMPTY_ADDRESS ( BBH_TX_3_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDEMPTY_OFFSET ) +#define BBH_TX_3_EPON_CFG_PDEMPTY_READ( r ) READ_32( ( BBH_TX_3_EPON_CFG_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_CFG_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_CFG_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_CFG_PDEMPTY_ADDRESS ( BBH_TX_4_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDEMPTY_OFFSET ) +#define BBH_TX_4_EPON_CFG_PDEMPTY_READ( r ) READ_32( ( BBH_TX_4_EPON_CFG_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_CFG_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_CFG_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_CFG_PDEMPTY_ADDRESS ( BBH_TX_5_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDEMPTY_OFFSET ) +#define BBH_TX_5_EPON_CFG_PDEMPTY_READ( r ) READ_32( ( BBH_TX_5_EPON_CFG_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_CFG_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_CFG_PDEMPTY_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_CFG_PDEMPTY_ADDRESS ( BBH_TX_6_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDEMPTY_OFFSET ) +#define BBH_TX_6_EPON_CFG_PDEMPTY_READ( r ) READ_32( ( BBH_TX_6_EPON_CFG_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_CFG_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_CFG_PDEMPTY_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_CFG_PDEMPTY_ARRAY [ ] ; + +#define BBH_TX_EPON_CFG_PDEMPTY_WRITE( i, v ) WRITE_32( BBH_TX_EPON_CFG_PDEMPTY_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_CFG_PDEMPTY_READ( i, r ) READ_32( BBH_TX_EPON_CFG_PDEMPTY_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Empty_thershold */ + uint32_t empty : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDEMPTY ; +#else +typedef struct +{ uint32_t empty : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Empty_thershold */ + uint32_t r1 : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG_PDEMPTY ; +#endif + +/*****************************************************************************************/ +/* DDR_PD_counter */ +/* This counter counts the number of packets which were transmitted from the DDR. It co */ +/* unts the packets for all TCONTs together. This counter is cleared when read and free */ +/* zes when maximum value is reached. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_DBG_DDRPD_DDRPD_DDR_PD_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_DDRPD_DDRPD_DDR_PD_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_DBG_DDRPD_OFFSET ( 0x00000004 ) + +#define BBH_TX_0_EPON_DBG_DDRPD_ADDRESS ( BBH_TX_0_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_DDRPD_OFFSET ) +#define BBH_TX_0_EPON_DBG_DDRPD_READ( r ) READ_32( ( BBH_TX_0_EPON_DBG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_DBG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_DBG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_DBG_DDRPD_ADDRESS ( BBH_TX_1_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_DDRPD_OFFSET ) +#define BBH_TX_1_EPON_DBG_DDRPD_READ( r ) READ_32( ( BBH_TX_1_EPON_DBG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_DBG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_DBG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_DBG_DDRPD_ADDRESS ( BBH_TX_2_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_DDRPD_OFFSET ) +#define BBH_TX_2_EPON_DBG_DDRPD_READ( r ) READ_32( ( BBH_TX_2_EPON_DBG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_DBG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_DBG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_DBG_DDRPD_ADDRESS ( BBH_TX_3_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_DDRPD_OFFSET ) +#define BBH_TX_3_EPON_DBG_DDRPD_READ( r ) READ_32( ( BBH_TX_3_EPON_DBG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_DBG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_DBG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_DBG_DDRPD_ADDRESS ( BBH_TX_4_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_DDRPD_OFFSET ) +#define BBH_TX_4_EPON_DBG_DDRPD_READ( r ) READ_32( ( BBH_TX_4_EPON_DBG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_DBG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_DBG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_DBG_DDRPD_ADDRESS ( BBH_TX_5_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_DDRPD_OFFSET ) +#define BBH_TX_5_EPON_DBG_DDRPD_READ( r ) READ_32( ( BBH_TX_5_EPON_DBG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_DBG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_DBG_DDRPD_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_DBG_DDRPD_ADDRESS ( BBH_TX_6_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_DDRPD_OFFSET ) +#define BBH_TX_6_EPON_DBG_DDRPD_READ( r ) READ_32( ( BBH_TX_6_EPON_DBG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_DBG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_DBG_DDRPD_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_DBG_DDRPD_ARRAY [ ] ; + +#define BBH_TX_EPON_DBG_DDRPD_WRITE( i, v ) WRITE_32( BBH_TX_EPON_DBG_DDRPD_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_DBG_DDRPD_READ( i, r ) READ_32( BBH_TX_EPON_DBG_DDRPD_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DDR_PD */ + uint32_t ddrpd : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_DDRPD ; +#else +typedef struct +{ uint32_t ddrpd : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_PD */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_DDRPD ; +#endif + +/*****************************************************************************************/ +/* PD_DROP_counter */ +/* This counter counts the number of PDs which were dropped due to PD FIFO full. It cou */ +/* nts the packets for all TCONTs together. This counter is cleared when read and freez */ +/* es when maximum value is reached. This counter is relevant for Ethernet only. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_DBG_PDDROP_R1_RESERVED_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_PDDROP_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_PDDROP_PDDROP_PDDROP_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_PDDROP_PDDROP_PDDROP_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_DBG_PDDROP_OFFSET ( 0x00000008 ) + +#define BBH_TX_0_EPON_DBG_PDDROP_ADDRESS ( BBH_TX_0_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDDROP_OFFSET ) +#define BBH_TX_0_EPON_DBG_PDDROP_READ( r ) READ_32( ( BBH_TX_0_EPON_DBG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_DBG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_DBG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_DBG_PDDROP_ADDRESS ( BBH_TX_1_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDDROP_OFFSET ) +#define BBH_TX_1_EPON_DBG_PDDROP_READ( r ) READ_32( ( BBH_TX_1_EPON_DBG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_DBG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_DBG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_DBG_PDDROP_ADDRESS ( BBH_TX_2_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDDROP_OFFSET ) +#define BBH_TX_2_EPON_DBG_PDDROP_READ( r ) READ_32( ( BBH_TX_2_EPON_DBG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_DBG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_DBG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_DBG_PDDROP_ADDRESS ( BBH_TX_3_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDDROP_OFFSET ) +#define BBH_TX_3_EPON_DBG_PDDROP_READ( r ) READ_32( ( BBH_TX_3_EPON_DBG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_DBG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_DBG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_DBG_PDDROP_ADDRESS ( BBH_TX_4_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDDROP_OFFSET ) +#define BBH_TX_4_EPON_DBG_PDDROP_READ( r ) READ_32( ( BBH_TX_4_EPON_DBG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_DBG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_DBG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_DBG_PDDROP_ADDRESS ( BBH_TX_5_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDDROP_OFFSET ) +#define BBH_TX_5_EPON_DBG_PDDROP_READ( r ) READ_32( ( BBH_TX_5_EPON_DBG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_DBG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_DBG_PDDROP_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_DBG_PDDROP_ADDRESS ( BBH_TX_6_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDDROP_OFFSET ) +#define BBH_TX_6_EPON_DBG_PDDROP_READ( r ) READ_32( ( BBH_TX_6_EPON_DBG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_DBG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_DBG_PDDROP_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_DBG_PDDROP_ARRAY [ ] ; + +#define BBH_TX_EPON_DBG_PDDROP_WRITE( i, v ) WRITE_32( BBH_TX_EPON_DBG_PDDROP_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_DBG_PDDROP_READ( i, r ) READ_32( BBH_TX_EPON_DBG_PDDROP_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_DROP */ + uint32_t pddrop : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_PDDROP ; +#else +typedef struct +{ uint32_t pddrop : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_DROP */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_PDDROP ; +#endif + +/*****************************************************************************************/ +/* PD_equal_0_counter */ +/* This counter counts the number of PDs with packet length equal zero. It counts the p */ +/* ackets for all TCONTs together. This counter is cleared when read and freezes when m */ +/* aximum value is reached. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_DBG_PDEQ0_R1_RESERVED_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_PDEQ0_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_PDEQ0_PDEQ0_PDEQ0_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_PDEQ0_PDEQ0_PDEQ0_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_DBG_PDEQ0_OFFSET ( 0x0000000C ) + +#define BBH_TX_0_EPON_DBG_PDEQ0_ADDRESS ( BBH_TX_0_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEQ0_OFFSET ) +#define BBH_TX_0_EPON_DBG_PDEQ0_READ( r ) READ_32( ( BBH_TX_0_EPON_DBG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_DBG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_DBG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_DBG_PDEQ0_ADDRESS ( BBH_TX_1_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEQ0_OFFSET ) +#define BBH_TX_1_EPON_DBG_PDEQ0_READ( r ) READ_32( ( BBH_TX_1_EPON_DBG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_DBG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_DBG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_DBG_PDEQ0_ADDRESS ( BBH_TX_2_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEQ0_OFFSET ) +#define BBH_TX_2_EPON_DBG_PDEQ0_READ( r ) READ_32( ( BBH_TX_2_EPON_DBG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_DBG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_DBG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_DBG_PDEQ0_ADDRESS ( BBH_TX_3_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEQ0_OFFSET ) +#define BBH_TX_3_EPON_DBG_PDEQ0_READ( r ) READ_32( ( BBH_TX_3_EPON_DBG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_DBG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_DBG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_DBG_PDEQ0_ADDRESS ( BBH_TX_4_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEQ0_OFFSET ) +#define BBH_TX_4_EPON_DBG_PDEQ0_READ( r ) READ_32( ( BBH_TX_4_EPON_DBG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_DBG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_DBG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_DBG_PDEQ0_ADDRESS ( BBH_TX_5_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEQ0_OFFSET ) +#define BBH_TX_5_EPON_DBG_PDEQ0_READ( r ) READ_32( ( BBH_TX_5_EPON_DBG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_DBG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_DBG_PDEQ0_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_DBG_PDEQ0_ADDRESS ( BBH_TX_6_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEQ0_OFFSET ) +#define BBH_TX_6_EPON_DBG_PDEQ0_READ( r ) READ_32( ( BBH_TX_6_EPON_DBG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_DBG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_DBG_PDEQ0_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_DBG_PDEQ0_ARRAY [ ] ; + +#define BBH_TX_EPON_DBG_PDEQ0_WRITE( i, v ) WRITE_32( BBH_TX_EPON_DBG_PDEQ0_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_DBG_PDEQ0_READ( i, r ) READ_32( BBH_TX_EPON_DBG_PDEQ0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_equal_0 */ + uint32_t pdeq0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_PDEQ0 ; +#else +typedef struct +{ uint32_t pdeq0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_equal_0 */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_PDEQ0 ; +#endif + +/*****************************************************************************************/ +/* PD_Full_LSB */ +/* Full indication of the PD FIFOs. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_DBG_PDFULLLSB_PDFULL_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_PDFULLLSB_PDFULL_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_DBG_PDFULLLSB_OFFSET ( 0x00000020 ) + +#define BBH_TX_0_EPON_DBG_PDFULLLSB_ADDRESS ( BBH_TX_0_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDFULLLSB_OFFSET ) +#define BBH_TX_0_EPON_DBG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_0_EPON_DBG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_DBG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_DBG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_DBG_PDFULLLSB_ADDRESS ( BBH_TX_1_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDFULLLSB_OFFSET ) +#define BBH_TX_1_EPON_DBG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_1_EPON_DBG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_DBG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_DBG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_DBG_PDFULLLSB_ADDRESS ( BBH_TX_2_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDFULLLSB_OFFSET ) +#define BBH_TX_2_EPON_DBG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_2_EPON_DBG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_DBG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_DBG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_DBG_PDFULLLSB_ADDRESS ( BBH_TX_3_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDFULLLSB_OFFSET ) +#define BBH_TX_3_EPON_DBG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_3_EPON_DBG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_DBG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_DBG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_DBG_PDFULLLSB_ADDRESS ( BBH_TX_4_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDFULLLSB_OFFSET ) +#define BBH_TX_4_EPON_DBG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_4_EPON_DBG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_DBG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_DBG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_DBG_PDFULLLSB_ADDRESS ( BBH_TX_5_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDFULLLSB_OFFSET ) +#define BBH_TX_5_EPON_DBG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_5_EPON_DBG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_DBG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_DBG_PDFULLLSB_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_DBG_PDFULLLSB_ADDRESS ( BBH_TX_6_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDFULLLSB_OFFSET ) +#define BBH_TX_6_EPON_DBG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_6_EPON_DBG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_DBG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_DBG_PDFULLLSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_DBG_PDFULLLSB_ARRAY [ ] ; + +#define BBH_TX_EPON_DBG_PDFULLLSB_WRITE( i, v ) WRITE_32( BBH_TX_EPON_DBG_PDFULLLSB_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_DBG_PDFULLLSB_READ( i, r ) READ_32( BBH_TX_EPON_DBG_PDFULLLSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PD_full */ + uint32_t pdfull : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_PDFULLLSB ; +#else +typedef struct +{ uint32_t pdfull : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_full */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_PDFULLLSB ; +#endif + +/*****************************************************************************************/ +/* PD_empty_LSB */ +/* Empty indication of the PD FIFOs. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_DBG_PDEMPTYLSB_PDEMPTY_DEFAULT_VALUE ( 0xFFFFFFFF ) +#define BBH_TX_EPON_DBG_PDEMPTYLSB_PDEMPTY_DEFAULT_VALUE_RESET_VALUE ( 0xFFFFFFFF ) + + +#define BBH_TX_EPON_DBG_PDEMPTYLSB_OFFSET ( 0x00000028 ) + +#define BBH_TX_0_EPON_DBG_PDEMPTYLSB_ADDRESS ( BBH_TX_0_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_0_EPON_DBG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_0_EPON_DBG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_DBG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_DBG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_DBG_PDEMPTYLSB_ADDRESS ( BBH_TX_1_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_1_EPON_DBG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_1_EPON_DBG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_DBG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_DBG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_DBG_PDEMPTYLSB_ADDRESS ( BBH_TX_2_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_2_EPON_DBG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_2_EPON_DBG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_DBG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_DBG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_DBG_PDEMPTYLSB_ADDRESS ( BBH_TX_3_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_3_EPON_DBG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_3_EPON_DBG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_DBG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_DBG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_DBG_PDEMPTYLSB_ADDRESS ( BBH_TX_4_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_4_EPON_DBG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_4_EPON_DBG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_DBG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_DBG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_DBG_PDEMPTYLSB_ADDRESS ( BBH_TX_5_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_5_EPON_DBG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_5_EPON_DBG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_DBG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_DBG_PDEMPTYLSB_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_DBG_PDEMPTYLSB_ADDRESS ( BBH_TX_6_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_6_EPON_DBG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_6_EPON_DBG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_DBG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_DBG_PDEMPTYLSB_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_DBG_PDEMPTYLSB_ARRAY [ ] ; + +#define BBH_TX_EPON_DBG_PDEMPTYLSB_WRITE( i, v ) WRITE_32( BBH_TX_EPON_DBG_PDEMPTYLSB_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_DBG_PDEMPTYLSB_READ( i, r ) READ_32( BBH_TX_EPON_DBG_PDEMPTYLSB_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PD_empty */ + uint32_t pdempty : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_PDEMPTYLSB ; +#else +typedef struct +{ uint32_t pdempty : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_empty */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_PDEMPTYLSB ; +#endif + +/*****************************************************************************************/ +/* EPON_PD_VALID */ +/* The BBH manages 32 queues. For each queue it manages a PD FIFO. A total of 256 PDs */ +/* are available for all queue. The SW may read these PDs. The PD valid register indic */ +/* ates whether the relevant PD is valid. The first register refers to PDs 0-31. The s */ +/* econd register refers to PDs 32-63 and so on. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_DBG_PDVALID_VALID_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_PDVALID_VALID_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_DBG_PDVALID_OFFSET ( 0x000000D0 ) + +#define BBH_TX_0_EPON_DBG_PDVALID_ADDRESS ( BBH_TX_0_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDVALID_OFFSET ) +#define BBH_TX_0_EPON_DBG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_0_EPON_DBG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_0_EPON_DBG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_EPON_DBG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_EPON_DBG_PDVALID_ADDRESS ( BBH_TX_1_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDVALID_OFFSET ) +#define BBH_TX_1_EPON_DBG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_1_EPON_DBG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_1_EPON_DBG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_EPON_DBG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_EPON_DBG_PDVALID_ADDRESS ( BBH_TX_2_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDVALID_OFFSET ) +#define BBH_TX_2_EPON_DBG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_2_EPON_DBG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_2_EPON_DBG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_EPON_DBG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_EPON_DBG_PDVALID_ADDRESS ( BBH_TX_3_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDVALID_OFFSET ) +#define BBH_TX_3_EPON_DBG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_3_EPON_DBG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_3_EPON_DBG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_EPON_DBG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_EPON_DBG_PDVALID_ADDRESS ( BBH_TX_4_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDVALID_OFFSET ) +#define BBH_TX_4_EPON_DBG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_4_EPON_DBG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_4_EPON_DBG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_EPON_DBG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_EPON_DBG_PDVALID_ADDRESS ( BBH_TX_5_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDVALID_OFFSET ) +#define BBH_TX_5_EPON_DBG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_5_EPON_DBG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_5_EPON_DBG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_EPON_DBG_PDVALID_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_EPON_DBG_PDVALID_ADDRESS ( BBH_TX_6_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDVALID_OFFSET ) +#define BBH_TX_6_EPON_DBG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_6_EPON_DBG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_6_EPON_DBG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_EPON_DBG_PDVALID_ADDRESS ), (i), (v) ) + + +extern uint32_t BBH_TX_EPON_DBG_PDVALID_ARRAY [ ] ; + +#define BBH_TX_EPON_DBG_PDVALID_WRITE( i, k, v ) WRITE_I_32( BBH_TX_EPON_DBG_PDVALID_ARRAY [ i ], (k), (v) ) +#define BBH_TX_EPON_DBG_PDVALID_READ( i, k, r ) READ_I_32( BBH_TX_EPON_DBG_PDVALID_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* valid */ + uint32_t valid : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_PDVALID ; +#else +typedef struct +{ uint32_t valid : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* valid */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_PDVALID ; +#endif + +/*****************************************************************************************/ +/* REQ_length_error_counter */ +/* This counter counts the number of times a length error (mismatch between a request fr */ +/* om the MAC and a PD from the Runner) occured. This counter is cleared when read and */ +/* freezes when maximum value is reached. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_DBG_LENERR_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_LENERR_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_LENERR_LENERR_LEN_ERR_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_LENERR_LENERR_LEN_ERR_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_DBG_LENERR_OFFSET ( 0x000000F0 ) + +#define BBH_TX_0_EPON_DBG_LENERR_ADDRESS ( BBH_TX_0_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_LENERR_OFFSET ) +#define BBH_TX_0_EPON_DBG_LENERR_READ( r ) READ_32( ( BBH_TX_0_EPON_DBG_LENERR_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_DBG_LENERR_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_DBG_LENERR_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_DBG_LENERR_ADDRESS ( BBH_TX_1_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_LENERR_OFFSET ) +#define BBH_TX_1_EPON_DBG_LENERR_READ( r ) READ_32( ( BBH_TX_1_EPON_DBG_LENERR_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_DBG_LENERR_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_DBG_LENERR_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_DBG_LENERR_ADDRESS ( BBH_TX_2_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_LENERR_OFFSET ) +#define BBH_TX_2_EPON_DBG_LENERR_READ( r ) READ_32( ( BBH_TX_2_EPON_DBG_LENERR_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_DBG_LENERR_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_DBG_LENERR_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_DBG_LENERR_ADDRESS ( BBH_TX_3_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_LENERR_OFFSET ) +#define BBH_TX_3_EPON_DBG_LENERR_READ( r ) READ_32( ( BBH_TX_3_EPON_DBG_LENERR_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_DBG_LENERR_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_DBG_LENERR_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_DBG_LENERR_ADDRESS ( BBH_TX_4_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_LENERR_OFFSET ) +#define BBH_TX_4_EPON_DBG_LENERR_READ( r ) READ_32( ( BBH_TX_4_EPON_DBG_LENERR_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_DBG_LENERR_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_DBG_LENERR_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_DBG_LENERR_ADDRESS ( BBH_TX_5_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_LENERR_OFFSET ) +#define BBH_TX_5_EPON_DBG_LENERR_READ( r ) READ_32( ( BBH_TX_5_EPON_DBG_LENERR_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_DBG_LENERR_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_DBG_LENERR_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_DBG_LENERR_ADDRESS ( BBH_TX_6_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_LENERR_OFFSET ) +#define BBH_TX_6_EPON_DBG_LENERR_READ( r ) READ_32( ( BBH_TX_6_EPON_DBG_LENERR_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_DBG_LENERR_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_DBG_LENERR_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_DBG_LENERR_ARRAY [ ] ; + +#define BBH_TX_EPON_DBG_LENERR_WRITE( i, v ) WRITE_32( BBH_TX_EPON_DBG_LENERR_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_DBG_LENERR_READ( i, r ) READ_32( BBH_TX_EPON_DBG_LENERR_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LEN_ERR */ + uint32_t lenerr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_LENERR ; +#else +typedef struct +{ uint32_t lenerr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LEN_ERR */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_LENERR ; +#endif + +/*****************************************************************************************/ +/* Flushed_packets_counter */ +/* This counter counts the number of packets that were flushed (bn was released without */ +/* sending the data to the EPON MAC) due to flush request. The counter is global for al */ +/* l queues. The counter is read clear. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_DBG_FLUSHPKTS_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_FLUSHPKTS_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_FLUSHPKTS_FLSHPKTS_FLSH_PKTS_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_FLUSHPKTS_FLSHPKTS_FLSH_PKTS_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_DBG_FLUSHPKTS_OFFSET ( 0x000000F4 ) + +#define BBH_TX_0_EPON_DBG_FLUSHPKTS_ADDRESS ( BBH_TX_0_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_FLUSHPKTS_OFFSET ) +#define BBH_TX_0_EPON_DBG_FLUSHPKTS_READ( r ) READ_32( ( BBH_TX_0_EPON_DBG_FLUSHPKTS_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_DBG_FLUSHPKTS_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_DBG_FLUSHPKTS_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_DBG_FLUSHPKTS_ADDRESS ( BBH_TX_1_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_FLUSHPKTS_OFFSET ) +#define BBH_TX_1_EPON_DBG_FLUSHPKTS_READ( r ) READ_32( ( BBH_TX_1_EPON_DBG_FLUSHPKTS_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_DBG_FLUSHPKTS_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_DBG_FLUSHPKTS_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_DBG_FLUSHPKTS_ADDRESS ( BBH_TX_2_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_FLUSHPKTS_OFFSET ) +#define BBH_TX_2_EPON_DBG_FLUSHPKTS_READ( r ) READ_32( ( BBH_TX_2_EPON_DBG_FLUSHPKTS_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_DBG_FLUSHPKTS_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_DBG_FLUSHPKTS_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_DBG_FLUSHPKTS_ADDRESS ( BBH_TX_3_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_FLUSHPKTS_OFFSET ) +#define BBH_TX_3_EPON_DBG_FLUSHPKTS_READ( r ) READ_32( ( BBH_TX_3_EPON_DBG_FLUSHPKTS_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_DBG_FLUSHPKTS_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_DBG_FLUSHPKTS_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_DBG_FLUSHPKTS_ADDRESS ( BBH_TX_4_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_FLUSHPKTS_OFFSET ) +#define BBH_TX_4_EPON_DBG_FLUSHPKTS_READ( r ) READ_32( ( BBH_TX_4_EPON_DBG_FLUSHPKTS_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_DBG_FLUSHPKTS_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_DBG_FLUSHPKTS_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_DBG_FLUSHPKTS_ADDRESS ( BBH_TX_5_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_FLUSHPKTS_OFFSET ) +#define BBH_TX_5_EPON_DBG_FLUSHPKTS_READ( r ) READ_32( ( BBH_TX_5_EPON_DBG_FLUSHPKTS_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_DBG_FLUSHPKTS_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_DBG_FLUSHPKTS_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_DBG_FLUSHPKTS_ADDRESS ( BBH_TX_6_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_FLUSHPKTS_OFFSET ) +#define BBH_TX_6_EPON_DBG_FLUSHPKTS_READ( r ) READ_32( ( BBH_TX_6_EPON_DBG_FLUSHPKTS_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_DBG_FLUSHPKTS_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_DBG_FLUSHPKTS_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_DBG_FLUSHPKTS_ARRAY [ ] ; + +#define BBH_TX_EPON_DBG_FLUSHPKTS_WRITE( i, v ) WRITE_32( BBH_TX_EPON_DBG_FLUSHPKTS_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_DBG_FLUSHPKTS_READ( i, r ) READ_32( BBH_TX_EPON_DBG_FLUSHPKTS_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FLSH_PKTS */ + uint32_t flshpkts : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_FLUSHPKTS ; +#else +typedef struct +{ uint32_t flshpkts : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FLSH_PKTS */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_FLUSHPKTS ; +#endif + +/*****************************************************************************************/ +/* REQ_FIFO_address */ +/* Address in REQ FIFO for SW read. Total number of entries in the FIFO is 8. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_DBG_REQFIFOADD_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_REQFIFOADD_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_REQFIFOADD_ADRS_ADDRESS_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_REQFIFOADD_ADRS_ADDRESS_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_DBG_REQFIFOADD_OFFSET ( 0x00000100 ) + +#define BBH_TX_0_EPON_DBG_REQFIFOADD_ADDRESS ( BBH_TX_0_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFOADD_OFFSET ) +#define BBH_TX_0_EPON_DBG_REQFIFOADD_READ( r ) READ_32( ( BBH_TX_0_EPON_DBG_REQFIFOADD_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_DBG_REQFIFOADD_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_DBG_REQFIFOADD_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_DBG_REQFIFOADD_ADDRESS ( BBH_TX_1_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFOADD_OFFSET ) +#define BBH_TX_1_EPON_DBG_REQFIFOADD_READ( r ) READ_32( ( BBH_TX_1_EPON_DBG_REQFIFOADD_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_DBG_REQFIFOADD_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_DBG_REQFIFOADD_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_DBG_REQFIFOADD_ADDRESS ( BBH_TX_2_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFOADD_OFFSET ) +#define BBH_TX_2_EPON_DBG_REQFIFOADD_READ( r ) READ_32( ( BBH_TX_2_EPON_DBG_REQFIFOADD_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_DBG_REQFIFOADD_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_DBG_REQFIFOADD_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_DBG_REQFIFOADD_ADDRESS ( BBH_TX_3_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFOADD_OFFSET ) +#define BBH_TX_3_EPON_DBG_REQFIFOADD_READ( r ) READ_32( ( BBH_TX_3_EPON_DBG_REQFIFOADD_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_DBG_REQFIFOADD_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_DBG_REQFIFOADD_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_DBG_REQFIFOADD_ADDRESS ( BBH_TX_4_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFOADD_OFFSET ) +#define BBH_TX_4_EPON_DBG_REQFIFOADD_READ( r ) READ_32( ( BBH_TX_4_EPON_DBG_REQFIFOADD_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_DBG_REQFIFOADD_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_DBG_REQFIFOADD_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_DBG_REQFIFOADD_ADDRESS ( BBH_TX_5_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFOADD_OFFSET ) +#define BBH_TX_5_EPON_DBG_REQFIFOADD_READ( r ) READ_32( ( BBH_TX_5_EPON_DBG_REQFIFOADD_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_DBG_REQFIFOADD_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_DBG_REQFIFOADD_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_DBG_REQFIFOADD_ADDRESS ( BBH_TX_6_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFOADD_OFFSET ) +#define BBH_TX_6_EPON_DBG_REQFIFOADD_READ( r ) READ_32( ( BBH_TX_6_EPON_DBG_REQFIFOADD_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_DBG_REQFIFOADD_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_DBG_REQFIFOADD_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_DBG_REQFIFOADD_ARRAY [ ] ; + +#define BBH_TX_EPON_DBG_REQFIFOADD_WRITE( i, v ) WRITE_32( BBH_TX_EPON_DBG_REQFIFOADD_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_DBG_REQFIFOADD_READ( i, r ) READ_32( BBH_TX_EPON_DBG_REQFIFOADD_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Address */ + uint32_t adrs : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_REQFIFOADD ; +#else +typedef struct +{ uint32_t adrs : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Address */ + uint32_t r1 : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_REQFIFOADD ; +#endif + +/*****************************************************************************************/ +/* REQ_FIFO_data */ +/* Read data from the REQ FIFO */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_DBG_REQFIFODATA_R1_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_REQFIFODATA_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_REQFIFODATA_FLUSH_Q_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_REQFIFODATA_FLUSH_Q_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_REQFIFODATA_LEN_Q_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_REQFIFODATA_LEN_Q_VALUE_RESET_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_REQFIFODATA_Q_Q_VALUE ( 0x0 ) +#define BBH_TX_EPON_DBG_REQFIFODATA_Q_Q_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_DBG_REQFIFODATA_OFFSET ( 0x00000104 ) + +#define BBH_TX_0_EPON_DBG_REQFIFODATA_ADDRESS ( BBH_TX_0_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFODATA_OFFSET ) +#define BBH_TX_0_EPON_DBG_REQFIFODATA_READ( r ) READ_32( ( BBH_TX_0_EPON_DBG_REQFIFODATA_ADDRESS ), (r) ) +#define BBH_TX_0_EPON_DBG_REQFIFODATA_WRITE( v ) WRITE_32( ( BBH_TX_0_EPON_DBG_REQFIFODATA_ADDRESS ), (v) ) + +#define BBH_TX_1_EPON_DBG_REQFIFODATA_ADDRESS ( BBH_TX_1_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFODATA_OFFSET ) +#define BBH_TX_1_EPON_DBG_REQFIFODATA_READ( r ) READ_32( ( BBH_TX_1_EPON_DBG_REQFIFODATA_ADDRESS ), (r) ) +#define BBH_TX_1_EPON_DBG_REQFIFODATA_WRITE( v ) WRITE_32( ( BBH_TX_1_EPON_DBG_REQFIFODATA_ADDRESS ), (v) ) + +#define BBH_TX_2_EPON_DBG_REQFIFODATA_ADDRESS ( BBH_TX_2_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFODATA_OFFSET ) +#define BBH_TX_2_EPON_DBG_REQFIFODATA_READ( r ) READ_32( ( BBH_TX_2_EPON_DBG_REQFIFODATA_ADDRESS ), (r) ) +#define BBH_TX_2_EPON_DBG_REQFIFODATA_WRITE( v ) WRITE_32( ( BBH_TX_2_EPON_DBG_REQFIFODATA_ADDRESS ), (v) ) + +#define BBH_TX_3_EPON_DBG_REQFIFODATA_ADDRESS ( BBH_TX_3_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFODATA_OFFSET ) +#define BBH_TX_3_EPON_DBG_REQFIFODATA_READ( r ) READ_32( ( BBH_TX_3_EPON_DBG_REQFIFODATA_ADDRESS ), (r) ) +#define BBH_TX_3_EPON_DBG_REQFIFODATA_WRITE( v ) WRITE_32( ( BBH_TX_3_EPON_DBG_REQFIFODATA_ADDRESS ), (v) ) + +#define BBH_TX_4_EPON_DBG_REQFIFODATA_ADDRESS ( BBH_TX_4_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFODATA_OFFSET ) +#define BBH_TX_4_EPON_DBG_REQFIFODATA_READ( r ) READ_32( ( BBH_TX_4_EPON_DBG_REQFIFODATA_ADDRESS ), (r) ) +#define BBH_TX_4_EPON_DBG_REQFIFODATA_WRITE( v ) WRITE_32( ( BBH_TX_4_EPON_DBG_REQFIFODATA_ADDRESS ), (v) ) + +#define BBH_TX_5_EPON_DBG_REQFIFODATA_ADDRESS ( BBH_TX_5_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFODATA_OFFSET ) +#define BBH_TX_5_EPON_DBG_REQFIFODATA_READ( r ) READ_32( ( BBH_TX_5_EPON_DBG_REQFIFODATA_ADDRESS ), (r) ) +#define BBH_TX_5_EPON_DBG_REQFIFODATA_WRITE( v ) WRITE_32( ( BBH_TX_5_EPON_DBG_REQFIFODATA_ADDRESS ), (v) ) + +#define BBH_TX_6_EPON_DBG_REQFIFODATA_ADDRESS ( BBH_TX_6_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFODATA_OFFSET ) +#define BBH_TX_6_EPON_DBG_REQFIFODATA_READ( r ) READ_32( ( BBH_TX_6_EPON_DBG_REQFIFODATA_ADDRESS ), (r) ) +#define BBH_TX_6_EPON_DBG_REQFIFODATA_WRITE( v ) WRITE_32( ( BBH_TX_6_EPON_DBG_REQFIFODATA_ADDRESS ), (v) ) + + +extern uint32_t BBH_TX_EPON_DBG_REQFIFODATA_ARRAY [ ] ; + +#define BBH_TX_EPON_DBG_REQFIFODATA_WRITE( i, v ) WRITE_32( BBH_TX_EPON_DBG_REQFIFODATA_ARRAY [ i ], (v) ) +#define BBH_TX_EPON_DBG_REQFIFODATA_READ( i, r ) READ_32( BBH_TX_EPON_DBG_REQFIFODATA_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Req_flush */ + uint32_t flush : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Req_length */ + uint32_t len : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Req_Q */ + uint32_t q : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_REQFIFODATA ; +#else +typedef struct +{ uint32_t q : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Req_Q */ + uint32_t len : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Req_length */ + uint32_t flush : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Req_flush */ + uint32_t r1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG_REQFIFODATA ; +#endif + +/*****************************************************************************************/ +/* PD_FIFO */ +/* The SW may read the PD RAM. This RAM includes a total of 256 PDs. A special registe */ +/* r marks the valid PDs. Each PD occupies 2 addresses of 32 bits - the odd address ref */ +/* ers to the LSB word of the entry. Please refer to BBH LLD for the context of the PD. */ +/*****************************************************************************************/ + +#define BBH_TX_EPON_STS_FIFO_PDFIFO_PDENTRY_DEFAULT_VALUE ( 0x0 ) +#define BBH_TX_EPON_STS_FIFO_PDFIFO_PDENTRY_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define BBH_TX_EPON_STS_FIFO_PDFIFO_OFFSET ( 0x00000000 ) + +#define BBH_TX_0_EPON_STS_FIFO_PDFIFO_ADDRESS ( BBH_TX_0_EPON_STS_FIFO_ADDRESS + BBH_TX_EPON_STS_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_0_EPON_STS_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_0_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_0_EPON_STS_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_0_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_1_EPON_STS_FIFO_PDFIFO_ADDRESS ( BBH_TX_1_EPON_STS_FIFO_ADDRESS + BBH_TX_EPON_STS_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_1_EPON_STS_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_1_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_1_EPON_STS_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_1_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_2_EPON_STS_FIFO_PDFIFO_ADDRESS ( BBH_TX_2_EPON_STS_FIFO_ADDRESS + BBH_TX_EPON_STS_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_2_EPON_STS_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_2_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_2_EPON_STS_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_2_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_3_EPON_STS_FIFO_PDFIFO_ADDRESS ( BBH_TX_3_EPON_STS_FIFO_ADDRESS + BBH_TX_EPON_STS_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_3_EPON_STS_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_3_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_3_EPON_STS_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_3_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_4_EPON_STS_FIFO_PDFIFO_ADDRESS ( BBH_TX_4_EPON_STS_FIFO_ADDRESS + BBH_TX_EPON_STS_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_4_EPON_STS_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_4_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_4_EPON_STS_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_4_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_5_EPON_STS_FIFO_PDFIFO_ADDRESS ( BBH_TX_5_EPON_STS_FIFO_ADDRESS + BBH_TX_EPON_STS_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_5_EPON_STS_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_5_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_5_EPON_STS_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_5_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + +#define BBH_TX_6_EPON_STS_FIFO_PDFIFO_ADDRESS ( BBH_TX_6_EPON_STS_FIFO_ADDRESS + BBH_TX_EPON_STS_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_6_EPON_STS_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_6_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_6_EPON_STS_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_6_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + + + +/* XXX: Temporary added for EPON bring-up manually, should be generated by Reggae automatically */ + +#define BBH_RX_7_GENERAL_CONFIGURATION_OFFSET ( 0x00000000 ) +#define BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS ( BBH_RX_7_OFFSET + BBH_RX_7_GENERAL_CONFIGURATION_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_OFFSET ( 0x00000100 ) +#define BBH_RX_7_PM_COUNTERS_ADDRESS ( BBH_RX_7_OFFSET + BBH_RX_7_PM_COUNTERS_OFFSET ) +#define BBH_RX_7_DEBUG_OFFSET ( 0x00000200 ) +#define BBH_RX_7_DEBUG_ADDRESS ( BBH_RX_7_OFFSET + BBH_RX_7_DEBUG_OFFSET ) +#define BBH_RX_7_PER_FLOW_PM_COUNTERS_OFFSET ( 0x00000400 ) +#define BBH_RX_7_PER_FLOW_PM_COUNTERS_ADDRESS ( BBH_RX_7_OFFSET + BBH_RX_7_PER_FLOW_PM_COUNTERS_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_OFFSET ( 0x00000000 ) +#define BBH_TX_7_CONFIGURATIONS_ADDRESS ( BBH_TX_7_OFFSET + BBH_TX_7_CONFIGURATIONS_OFFSET ) +#define BBH_TX_7_DEBUG_OFFSET ( 0x00000100 ) +#define BBH_TX_7_DEBUG_ADDRESS ( BBH_TX_7_OFFSET + BBH_TX_7_DEBUG_OFFSET ) +#define BBH_TX_7_PD_FIFO_OFFSET ( 0x00000200 ) +#define BBH_TX_7_PD_FIFO_ADDRESS ( BBH_TX_7_OFFSET + BBH_TX_7_PD_FIFO_OFFSET ) +#define BBH_TX_7_CONTEXT_OFFSET ( 0x00000600 ) +#define BBH_TX_7_CONTEXT_ADDRESS ( BBH_TX_7_OFFSET + BBH_TX_7_CONTEXT_OFFSET ) +#define BBH_TX_7_EPON_PD_FIFO_OFFSET ( 0x00000700 ) +#define BBH_TX_7_EPON_PD_FIFO_ADDRESS ( BBH_TX_7_OFFSET + BBH_TX_7_EPON_PD_FIFO_OFFSET ) +#define BBH_TX_7_EPON_CFG_OFFSET ( 0x00001000 ) +#define BBH_TX_7_EPON_CFG_ADDRESS ( BBH_TX_7_OFFSET + BBH_TX_7_EPON_CFG_OFFSET ) +#define BBH_TX_7_EPON_DBG_OFFSET ( 0x00001100 ) +#define BBH_TX_7_EPON_DBG_ADDRESS ( BBH_TX_7_OFFSET + BBH_TX_7_EPON_DBG_OFFSET ) +#define BBH_TX_7_EPON_STS_FIFO_OFFSET ( 0x00001700 ) +#define BBH_TX_7_EPON_STS_FIFO_ADDRESS ( BBH_TX_7_OFFSET + BBH_TX_7_EPON_STS_FIFO_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_BBCFG_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_BBCFG_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_BBCFG_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_BBCFG_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_BBCFG1_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_BBCFG1_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_BBCFG1_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_BBCFG1_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DDRCFG_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_DDRCFG_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_DDRCFG_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_DDRCFG_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PDBASE_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDBASE_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PDBASE_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PDBASE_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_PDBASE_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PDSIZE_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PDSIZE_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PDSIZE_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_PDSIZE_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_RUNNERTASK_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_RUNNERTASK_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMAADDR_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_DMAADDR_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_DMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_DMAADDR_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_DMACFG_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_DMACFG_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_DMACFG_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_DMACFG_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_DMACFG_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_SDMAADDR_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_SDMAADDR_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_SDMACFG_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_SDMACFG_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_SDMACFG_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_SDMACFG_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKT0_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MINPKT0_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MINPKT0_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MINPKT0_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT0_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT0_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT1_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT1_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCFG_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCFG_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCFG_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCFG_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHCFG_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_FLOWCTRL_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_FLOWCTRL_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWTH_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWTH_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWSETS_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWSETS_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS0_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS0_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS1_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS1_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS2_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS2_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS3_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS3_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHOVERRIDE_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_IHOVERRIDE_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL0_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL1_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL0_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL0_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL1_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL1_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PLOAMCFG_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_PLOAMCFG_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_RXRSTRST_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_RXRSTRST_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_RXDBGSEL_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_RXDBGSEL_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS ), (v) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ( BBH_RX_7_GENERAL_CONFIGURATION_ADDRESS + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_OFFSET ) +#define BBH_RX_7_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_READ( r ) READ_32( ( BBH_RX_7_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (r) ) +#define BBH_RX_7_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_WRITE( v ) WRITE_32( ( BBH_RX_7_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_SOPASOP_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_SOPASOP_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_SOPASOP_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_SOPASOP_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_SOPASOP_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_SOPASOP_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_THIRDFLOW_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_THIRDFLOW_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_THIRDFLOW_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_THIRDFLOW_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_THIRDFLOW_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_THIRDFLOW_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_INPKT_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_INPKT_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_INPKT_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_INPKT_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_INPKT_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_INPKT_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_TOOSHORT_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOSHORT_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_TOOSHORT_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_TOOSHORT_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_TOOSHORT_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_TOOSHORT_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_TOOLONG_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_TOOLONG_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_TOOLONG_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_TOOLONG_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_TOOLONG_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_TOOLONG_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_CRCERROR_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERROR_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_CRCERROR_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_CRCERROR_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_CRCERROR_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_CRCERROR_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_IPTV_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IPTV_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_IPTV_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_IPTV_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_IPTV_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_IPTV_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_RUNNERCONG_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_RUNNERCONG_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_RUNNERCONG_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_RUNNERCONG_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_RUNNERCONG_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_RUNNERCONG_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_NOBPMBN_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBN_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_NOBPMBN_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_NOBPMBN_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_NOBPMBN_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_NOBPMBN_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_NOSBPMSBN_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSBPMSBN_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_NOSBPMSBN_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_NOSBPMSBN_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_NOSBPMSBN_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_NODMACD_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NODMACD_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_NODMACD_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_NODMACD_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_NODMACD_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_NODMACD_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_NOSDMACD_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOSDMACD_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_NOSDMACD_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_NOSDMACD_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_NOSDMACD_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_NOSDMACD_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_IHDROPPLOAM_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_IHDROPPLOAM_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_IHDROPPLOAM_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_IHDROPPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_IHDROPPLOAM_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_NOBPMBNPLOAM_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_NOBPMBNPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_CRCERRORPLOAM_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_CRCERRORPLOAM_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_CRCERRORPLOAM_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_CRCERRORPLOAM_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPNFIFOVERUN_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_EPNFIFOVERUN_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_EPNFIFOVERUN_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_EPNFIFOVERUN_ADDRESS ), (v) ) +#define BBH_RX_7_PM_COUNTERS_EPONTYPERROR_ADDRESS ( BBH_RX_7_PM_COUNTERS_ADDRESS + BBH_RX_PM_COUNTERS_EPONTYPERROR_OFFSET ) +#define BBH_RX_7_PM_COUNTERS_EPONTYPERROR_READ( r ) READ_32( ( BBH_RX_7_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (r) ) +#define BBH_RX_7_PM_COUNTERS_EPONTYPERROR_WRITE( v ) WRITE_32( ( BBH_RX_7_PM_COUNTERS_EPONTYPERROR_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_CNTXTX0LSB_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0LSB_OFFSET ) +#define BBH_RX_7_DEBUG_CNTXTX0LSB_READ( r ) READ_32( ( BBH_RX_7_DEBUG_CNTXTX0LSB_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_CNTXTX0LSB_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_CNTXTX0LSB_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_CNTXTX0MSB_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX0MSB_OFFSET ) +#define BBH_RX_7_DEBUG_CNTXTX0MSB_READ( r ) READ_32( ( BBH_RX_7_DEBUG_CNTXTX0MSB_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_CNTXTX0MSB_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_CNTXTX0MSB_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_CNTXTX1LSB_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1LSB_OFFSET ) +#define BBH_RX_7_DEBUG_CNTXTX1LSB_READ( r ) READ_32( ( BBH_RX_7_DEBUG_CNTXTX1LSB_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_CNTXTX1LSB_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_CNTXTX1LSB_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_CNTXTX1MSB_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_CNTXTX1MSB_OFFSET ) +#define BBH_RX_7_DEBUG_CNTXTX1MSB_READ( r ) READ_32( ( BBH_RX_7_DEBUG_CNTXTX1MSB_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_CNTXTX1MSB_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_CNTXTX1MSB_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_IHCNTXT0_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT0_OFFSET ) +#define BBH_RX_7_DEBUG_IHCNTXT0_READ( r ) READ_32( ( BBH_RX_7_DEBUG_IHCNTXT0_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_IHCNTXT0_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_IHCNTXT0_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_IHCNTXT1_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXT1_OFFSET ) +#define BBH_RX_7_DEBUG_IHCNTXT1_READ( r ) READ_32( ( BBH_RX_7_DEBUG_IHCNTXT1_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_IHCNTXT1_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_IHCNTXT1_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_IHCNTXTP_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_IHCNTXTP_OFFSET ) +#define BBH_RX_7_DEBUG_IHCNTXTP_READ( r ) READ_32( ( BBH_RX_7_DEBUG_IHCNTXTP_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_IHCNTXTP_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_IHCNTXTP_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_IHFREEBUF_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_IHFREEBUF_OFFSET ) +#define BBH_RX_7_DEBUG_IHFREEBUF_READ( r ) READ_32( ( BBH_RX_7_DEBUG_IHFREEBUF_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_IHFREEBUF_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_IHFREEBUF_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_PWUW_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_PWUW_OFFSET ) +#define BBH_RX_7_DEBUG_PWUW_READ( r ) READ_32( ( BBH_RX_7_DEBUG_PWUW_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_PWUW_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_PWUW_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_ACKCNT_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_ACKCNT_OFFSET ) +#define BBH_RX_7_DEBUG_ACKCNT_READ( r ) READ_32( ( BBH_RX_7_DEBUG_ACKCNT_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_ACKCNT_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_ACKCNT_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_RNRCNT_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_RNRCNT_OFFSET ) +#define BBH_RX_7_DEBUG_RNRCNT_READ( r ) READ_32( ( BBH_RX_7_DEBUG_RNRCNT_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_RNRCNT_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_RNRCNT_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_DBGVEC_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_DBGVEC_OFFSET ) +#define BBH_RX_7_DEBUG_DBGVEC_READ( r ) READ_32( ( BBH_RX_7_DEBUG_DBGVEC_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_DBGVEC_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_DBGVEC_ADDRESS ), (v) ) +#define BBH_RX_7_DEBUG_BNFIFO_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_BNFIFO_OFFSET ) +#define BBH_RX_7_DEBUG_BNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_7_DEBUG_BNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_7_DEBUG_BNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_7_DEBUG_BNFIFO_ADDRESS ), (i), (v) ) +#define BBH_RX_7_DEBUG_SBNFIFO_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_SBNFIFO_OFFSET ) +#define BBH_RX_7_DEBUG_SBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_7_DEBUG_SBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_7_DEBUG_SBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_7_DEBUG_SBNFIFO_ADDRESS ), (i), (v) ) +#define BBH_RX_7_DEBUG_RESFIFO_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_RESFIFO_OFFSET ) +#define BBH_RX_7_DEBUG_RESFIFO_READ_I( r, i ) READ_I_32( ( BBH_RX_7_DEBUG_RESFIFO_ADDRESS ), (i), (r) ) +#define BBH_RX_7_DEBUG_RESFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_7_DEBUG_RESFIFO_ADDRESS ), (i), (v) ) +#define BBH_RX_7_DEBUG_ESUW_ADDRESS ( BBH_RX_7_DEBUG_ADDRESS + BBH_RX_DEBUG_ESUW_OFFSET ) +#define BBH_RX_7_DEBUG_ESUW_READ( r ) READ_32( ( BBH_RX_7_DEBUG_ESUW_ADDRESS ), (r) ) +#define BBH_RX_7_DEBUG_ESUW_WRITE( v ) WRITE_32( ( BBH_RX_7_DEBUG_ESUW_ADDRESS ), (v) ) +#define BBH_RX_7_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ( BBH_RX_7_PER_FLOW_PM_COUNTERS_ADDRESS + BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_OFFSET ) +#define BBH_RX_7_PER_FLOW_PM_COUNTERS_PERFLOWPM_READ_I( r, i ) READ_I_32( ( BBH_RX_7_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (r) ) +#define BBH_RX_7_PER_FLOW_PM_COUNTERS_PERFLOWPM_WRITE_I( v, i ) WRITE_I_32( ( BBH_RX_7_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS ), (i), (v) ) +#define BBH_TX_7_CONFIGURATIONS_BBCFG_TX_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG_TX_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_BBCFG_TX_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_BBCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_BBCFG_TX_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_BBCFG1_TX_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_BBCFG1_TX_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_BBCFG1_TX_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_BBCFG1_TX_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_BBCFG1_TX_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_DDRCFG_TX_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRCFG_TX_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_DDRCFG_TX_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_DDRCFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_DDRCFG_TX_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_HNBASE_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_HNBASE_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_HNBASE_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_HNBASE_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_HNBASE_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_HNBASE_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_TASKLSB_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKLSB_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_TASKLSB_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_TASKLSB_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_TASKMSB_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASKMSB_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_TASKMSB_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_TASKMSB_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_TASK8_39_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TASK8_39_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_TASK8_39_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_TASK8_39_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_PDSIZE0_7_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE0_7_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_PDSIZE0_7_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_PDSIZE0_7_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_PDSIZE0_7_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_PDSIZE8_39_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDSIZE8_39_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_PDSIZE8_39_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_PDSIZE8_39_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_PDSIZE8_39_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_PDBASE0_3_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE0_3_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_PDBASE0_3_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_PDBASE4_7_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE4_7_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_PDBASE4_7_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_PDBASE8_39_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDBASE8_39_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_PDBASE8_39_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_ADDRESS ), (i), (v) ) +#define BBH_TX_7_CONFIGURATIONS_DMACFG_TX_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DMACFG_TX_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_DMACFG_TX_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_DMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_DMACFG_TX_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_SDMACFG_TX_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SDMACFG_TX_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_SDMACFG_TX_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_SDMACFG_TX_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_SDMACFG_TX_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_RUNNERCFG_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_RUNNERCFG_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_RUNNERCFG_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_MDUMODE_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MDUMODE_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_MDUMODE_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_MDUMODE_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_DDRTMBASE_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DDRTMBASE_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_DDRTMBASE_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_DDRTMBASE_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_DDRTMBASE_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_DBGSEL_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_DBGSEL_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_DBGSEL_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_DBGSEL_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_DBGSEL_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_DBGSEL_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_TXRSTCMD_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_TXRSTCMD_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_TXRSTCMD_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_TXRSTCMD_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_TXRSTCMD_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_EMAC1588_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_EMAC1588_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_EMAC1588_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_EMAC1588_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_EMAC1588_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_EMAC1588_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_SBPMCFG_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_SBPMCFG_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_SBPMCFG_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_SBPMCFG_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_SBPMCFG_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_SBPMCFG_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH0_7_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_PDWKUPH0_7_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_PDWKUPH0_7_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_PDWKUPH0_7_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDWKUPH8_31_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_PDWKUPH8_31_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_PDEMPTY_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_PDEMPTY_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_PDEMPTY_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_PDEMPTY_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_ETHTT_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_ETHTT_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_ETHTT_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_ETHTT_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_ETHTT_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_ETHTT_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_MAXWLEN_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_MAXWLEN_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_MAXWLEN_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_MAXWLEN_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_MAXWLEN_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_MAXWLEN_ADDRESS ), (v) ) +#define BBH_TX_7_CONFIGURATIONS_FLUSH_ADDRESS ( BBH_TX_7_CONFIGURATIONS_ADDRESS + BBH_TX_CONFIGURATIONS_FLUSH_OFFSET ) +#define BBH_TX_7_CONFIGURATIONS_FLUSH_READ( r ) READ_32( ( BBH_TX_7_CONFIGURATIONS_FLUSH_ADDRESS ), (r) ) +#define BBH_TX_7_CONFIGURATIONS_FLUSH_WRITE( v ) WRITE_32( ( BBH_TX_7_CONFIGURATIONS_FLUSH_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_SRAMPD_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_SRAMPD_OFFSET ) +#define BBH_TX_7_DEBUG_SRAMPD_READ( r ) READ_32( ( BBH_TX_7_DEBUG_SRAMPD_ADDRESS ), (r) ) +#define BBH_TX_7_DEBUG_SRAMPD_WRITE( v ) WRITE_32( ( BBH_TX_7_DEBUG_SRAMPD_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_DDRPD_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_DDRPD_OFFSET ) +#define BBH_TX_7_DEBUG_DDRPD_READ( r ) READ_32( ( BBH_TX_7_DEBUG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_7_DEBUG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_7_DEBUG_DDRPD_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_PDDROP_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_PDDROP_OFFSET ) +#define BBH_TX_7_DEBUG_PDDROP_READ( r ) READ_32( ( BBH_TX_7_DEBUG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_7_DEBUG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_7_DEBUG_PDDROP_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_PDEQ0_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEQ0_OFFSET ) +#define BBH_TX_7_DEBUG_PDEQ0_READ( r ) READ_32( ( BBH_TX_7_DEBUG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_7_DEBUG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_7_DEBUG_PDEQ0_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_GETNEXTNULL_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTNULL_OFFSET ) +#define BBH_TX_7_DEBUG_GETNEXTNULL_READ( r ) READ_32( ( BBH_TX_7_DEBUG_GETNEXTNULL_ADDRESS ), (r) ) +#define BBH_TX_7_DEBUG_GETNEXTNULL_WRITE( v ) WRITE_32( ( BBH_TX_7_DEBUG_GETNEXTNULL_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_PDFULLLSB_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLLSB_OFFSET ) +#define BBH_TX_7_DEBUG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_7_DEBUG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_7_DEBUG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_7_DEBUG_PDFULLLSB_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_PDFULLMSB_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_PDFULLMSB_OFFSET ) +#define BBH_TX_7_DEBUG_PDFULLMSB_READ( r ) READ_32( ( BBH_TX_7_DEBUG_PDFULLMSB_ADDRESS ), (r) ) +#define BBH_TX_7_DEBUG_PDFULLMSB_WRITE( v ) WRITE_32( ( BBH_TX_7_DEBUG_PDFULLMSB_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_PDEMPTYLSB_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_7_DEBUG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_7_DEBUG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_7_DEBUG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_7_DEBUG_PDEMPTYLSB_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_PDEMPTYMSB_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_PDEMPTYMSB_OFFSET ) +#define BBH_TX_7_DEBUG_PDEMPTYMSB_READ( r ) READ_32( ( BBH_TX_7_DEBUG_PDEMPTYMSB_ADDRESS ), (r) ) +#define BBH_TX_7_DEBUG_PDEMPTYMSB_WRITE( v ) WRITE_32( ( BBH_TX_7_DEBUG_PDEMPTYMSB_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_PDVALID_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_PDVALID_OFFSET ) +#define BBH_TX_7_DEBUG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_7_DEBUG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_7_DEBUG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_DEBUG_PDVALID_ADDRESS ), (i), (v) ) +#define BBH_TX_7_DEBUG_BPMFIFO_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_BPMFIFO_OFFSET ) +#define BBH_TX_7_DEBUG_BPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_7_DEBUG_BPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_7_DEBUG_BPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_DEBUG_BPMFIFO_ADDRESS ), (i), (v) ) +#define BBH_TX_7_DEBUG_SBPMFIFO_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_SBPMFIFO_OFFSET ) +#define BBH_TX_7_DEBUG_SBPMFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_7_DEBUG_SBPMFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_7_DEBUG_SBPMFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_DEBUG_SBPMFIFO_ADDRESS ), (i), (v) ) +#define BBH_TX_7_DEBUG_FIRSTBNFIFO_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_FIRSTBNFIFO_OFFSET ) +#define BBH_TX_7_DEBUG_FIRSTBNFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_7_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_7_DEBUG_FIRSTBNFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_DEBUG_FIRSTBNFIFO_ADDRESS ), (i), (v) ) +#define BBH_TX_7_DEBUG_GETNEXTFIFO_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_GETNEXTFIFO_OFFSET ) +#define BBH_TX_7_DEBUG_GETNEXTFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_7_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_7_DEBUG_GETNEXTFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_DEBUG_GETNEXTFIFO_ADDRESS ), (i), (v) ) +#define BBH_TX_7_DEBUG_DBGOUTREG_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_DBGOUTREG_OFFSET ) +#define BBH_TX_7_DEBUG_DBGOUTREG_READ( r ) READ_32( ( BBH_TX_7_DEBUG_DBGOUTREG_ADDRESS ), (r) ) +#define BBH_TX_7_DEBUG_DBGOUTREG_WRITE( v ) WRITE_32( ( BBH_TX_7_DEBUG_DBGOUTREG_ADDRESS ), (v) ) +#define BBH_TX_7_DEBUG_EPNPDVALID_ADDRESS ( BBH_TX_7_DEBUG_ADDRESS + BBH_TX_DEBUG_EPNPDVALID_OFFSET ) +#define BBH_TX_7_DEBUG_EPNPDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_7_DEBUG_EPNPDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_7_DEBUG_EPNPDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_DEBUG_EPNPDVALID_ADDRESS ), (i), (v) ) +#define BBH_TX_7_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_7_PD_FIFO_ADDRESS + BBH_TX_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_7_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_7_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_7_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) +#define BBH_TX_7_CONTEXT_SEGCNTXT_ADDRESS ( BBH_TX_7_CONTEXT_ADDRESS + BBH_TX_CONTEXT_SEGCNTXT_OFFSET ) +#define BBH_TX_7_CONTEXT_SEGCNTXT_READ_I( r, i ) READ_I_32( ( BBH_TX_7_CONTEXT_SEGCNTXT_ADDRESS ), (i), (r) ) +#define BBH_TX_7_CONTEXT_SEGCNTXT_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_CONTEXT_SEGCNTXT_ADDRESS ), (i), (v) ) +#define BBH_TX_7_EPON_PD_FIFO_PDFIFO_ADDRESS ( BBH_TX_7_EPON_PD_FIFO_ADDRESS + BBH_TX_EPON_PD_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_7_EPON_PD_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_7_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_7_EPON_PD_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_EPON_PD_FIFO_PDFIFO_ADDRESS ), (i), (v) ) +#define BBH_TX_7_EPON_CFG_TASKLSB_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKLSB_OFFSET ) +#define BBH_TX_7_EPON_CFG_TASKLSB_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_TASKLSB_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_TASKLSB_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_TASKLSB_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_TASKMSB_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASKMSB_OFFSET ) +#define BBH_TX_7_EPON_CFG_TASKMSB_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_TASKMSB_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_TASKMSB_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_TASKMSB_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_TASK8_39_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_TASK8_39_OFFSET ) +#define BBH_TX_7_EPON_CFG_TASK8_39_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_TASK8_39_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_TASK8_39_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_TASK8_39_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PDSIZE0_3_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE0_3_OFFSET ) +#define BBH_TX_7_EPON_CFG_PDSIZE0_3_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PDSIZE0_3_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PDSIZE0_3_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PDSIZE0_3_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PDSIZE4_7_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE4_7_OFFSET ) +#define BBH_TX_7_EPON_CFG_PDSIZE4_7_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PDSIZE4_7_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PDSIZE4_7_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PDSIZE4_7_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PDSIZE8_31_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDSIZE8_31_OFFSET ) +#define BBH_TX_7_EPON_CFG_PDSIZE8_31_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PDSIZE8_31_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PDSIZE8_31_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PDSIZE8_31_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PDBASE0_3_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE0_3_OFFSET ) +#define BBH_TX_7_EPON_CFG_PDBASE0_3_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PDBASE0_3_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PDBASE0_3_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PDBASE0_3_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PDBASE4_7_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE4_7_OFFSET ) +#define BBH_TX_7_EPON_CFG_PDBASE4_7_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PDBASE4_7_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PDBASE4_7_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PDBASE4_7_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PDBASE8_39_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDBASE8_39_OFFSET ) +#define BBH_TX_7_EPON_CFG_PDBASE8_39_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PDBASE8_39_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PDBASE8_39_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PDBASE8_39_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_EN_OFFSET ) +#define BBH_TX_7_EPON_CFG_PD_BYTE_TH_EN_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PD_BYTE_TH_EN_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PD_BYTE_TH_EN_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PD_BYTE_TH_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PD_BYTE_TH_OFFSET ) +#define BBH_TX_7_EPON_CFG_PD_BYTE_TH_READ_I( r, i ) READ_I_32( ( BBH_TX_7_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (r) ) +#define BBH_TX_7_EPON_CFG_PD_BYTE_TH_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_EPON_CFG_PD_BYTE_TH_ADDRESS ), (i), (v) ) +#define BBH_TX_7_EPON_CFG_RUNNERCFG_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_RUNNERCFG_OFFSET ) +#define BBH_TX_7_EPON_CFG_RUNNERCFG_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_RUNNERCFG_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_RUNNERCFG_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_RUNNERCFG_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_MDUMODE_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_MDUMODE_OFFSET ) +#define BBH_TX_7_EPON_CFG_MDUMODE_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_MDUMODE_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_MDUMODE_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_MDUMODE_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_REQCFG_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_REQCFG_OFFSET ) +#define BBH_TX_7_EPON_CFG_REQCFG_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_REQCFG_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_REQCFG_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_REQCFG_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PDWKUPH0_3_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH0_3_OFFSET ) +#define BBH_TX_7_EPON_CFG_PDWKUPH0_3_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PDWKUPH0_3_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PDWKUPH0_3_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PDWKUPH0_3_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PDWKUPH4_7_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH4_7_OFFSET ) +#define BBH_TX_7_EPON_CFG_PDWKUPH4_7_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PDWKUPH4_7_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PDWKUPH4_7_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PDWKUPH4_7_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PDWKUPH8_31_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDWKUPH8_31_OFFSET ) +#define BBH_TX_7_EPON_CFG_PDWKUPH8_31_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PDWKUPH8_31_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PDWKUPH8_31_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PDWKUPH8_31_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_CFG_PDEMPTY_ADDRESS ( BBH_TX_7_EPON_CFG_ADDRESS + BBH_TX_EPON_CFG_PDEMPTY_OFFSET ) +#define BBH_TX_7_EPON_CFG_PDEMPTY_READ( r ) READ_32( ( BBH_TX_7_EPON_CFG_PDEMPTY_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_CFG_PDEMPTY_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_CFG_PDEMPTY_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_DBG_DDRPD_ADDRESS ( BBH_TX_7_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_DDRPD_OFFSET ) +#define BBH_TX_7_EPON_DBG_DDRPD_READ( r ) READ_32( ( BBH_TX_7_EPON_DBG_DDRPD_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_DBG_DDRPD_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_DBG_DDRPD_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_DBG_PDDROP_ADDRESS ( BBH_TX_7_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDDROP_OFFSET ) +#define BBH_TX_7_EPON_DBG_PDDROP_READ( r ) READ_32( ( BBH_TX_7_EPON_DBG_PDDROP_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_DBG_PDDROP_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_DBG_PDDROP_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_DBG_PDEQ0_ADDRESS ( BBH_TX_7_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEQ0_OFFSET ) +#define BBH_TX_7_EPON_DBG_PDEQ0_READ( r ) READ_32( ( BBH_TX_7_EPON_DBG_PDEQ0_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_DBG_PDEQ0_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_DBG_PDEQ0_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_DBG_PDFULLLSB_ADDRESS ( BBH_TX_7_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDFULLLSB_OFFSET ) +#define BBH_TX_7_EPON_DBG_PDFULLLSB_READ( r ) READ_32( ( BBH_TX_7_EPON_DBG_PDFULLLSB_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_DBG_PDFULLLSB_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_DBG_PDFULLLSB_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_DBG_PDEMPTYLSB_ADDRESS ( BBH_TX_7_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDEMPTYLSB_OFFSET ) +#define BBH_TX_7_EPON_DBG_PDEMPTYLSB_READ( r ) READ_32( ( BBH_TX_7_EPON_DBG_PDEMPTYLSB_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_DBG_PDEMPTYLSB_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_DBG_PDEMPTYLSB_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_DBG_PDVALID_ADDRESS ( BBH_TX_7_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_PDVALID_OFFSET ) +#define BBH_TX_7_EPON_DBG_PDVALID_READ_I( r, i ) READ_I_32( ( BBH_TX_7_EPON_DBG_PDVALID_ADDRESS ), (i), (r) ) +#define BBH_TX_7_EPON_DBG_PDVALID_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_EPON_DBG_PDVALID_ADDRESS ), (i), (v) ) +#define BBH_TX_7_EPON_DBG_LENERR_ADDRESS ( BBH_TX_7_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_LENERR_OFFSET ) +#define BBH_TX_7_EPON_DBG_LENERR_READ( r ) READ_32( ( BBH_TX_7_EPON_DBG_LENERR_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_DBG_LENERR_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_DBG_LENERR_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_DBG_FLUSHPKTS_ADDRESS ( BBH_TX_7_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_FLUSHPKTS_OFFSET ) +#define BBH_TX_7_EPON_DBG_FLUSHPKTS_READ( r ) READ_32( ( BBH_TX_7_EPON_DBG_FLUSHPKTS_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_DBG_FLUSHPKTS_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_DBG_FLUSHPKTS_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_DBG_REQFIFOADD_ADDRESS ( BBH_TX_7_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFOADD_OFFSET ) +#define BBH_TX_7_EPON_DBG_REQFIFOADD_READ( r ) READ_32( ( BBH_TX_7_EPON_DBG_REQFIFOADD_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_DBG_REQFIFOADD_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_DBG_REQFIFOADD_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_DBG_REQFIFODATA_ADDRESS ( BBH_TX_7_EPON_DBG_ADDRESS + BBH_TX_EPON_DBG_REQFIFODATA_OFFSET ) +#define BBH_TX_7_EPON_DBG_REQFIFODATA_READ( r ) READ_32( ( BBH_TX_7_EPON_DBG_REQFIFODATA_ADDRESS ), (r) ) +#define BBH_TX_7_EPON_DBG_REQFIFODATA_WRITE( v ) WRITE_32( ( BBH_TX_7_EPON_DBG_REQFIFODATA_ADDRESS ), (v) ) +#define BBH_TX_7_EPON_STS_FIFO_PDFIFO_ADDRESS ( BBH_TX_7_EPON_STS_FIFO_ADDRESS + BBH_TX_EPON_STS_FIFO_PDFIFO_OFFSET ) +#define BBH_TX_7_EPON_STS_FIFO_PDFIFO_READ_I( r, i ) READ_I_32( ( BBH_TX_7_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (r) ) +#define BBH_TX_7_EPON_STS_FIFO_PDFIFO_WRITE_I( v, i ) WRITE_I_32( ( BBH_TX_7_EPON_STS_FIFO_PDFIFO_ADDRESS ), (i), (v) ) + + + +extern uint32_t BBH_TX_EPON_STS_FIFO_PDFIFO_ARRAY [ ] ; + +#define BBH_TX_EPON_STS_FIFO_PDFIFO_WRITE( i, k, v ) WRITE_I_32( BBH_TX_EPON_STS_FIFO_PDFIFO_ARRAY [ i ], (k), (v) ) +#define BBH_TX_EPON_STS_FIFO_PDFIFO_READ( i, k, r ) READ_I_32( BBH_TX_EPON_STS_FIFO_PDFIFO_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PD_entry */ + uint32_t pdentry : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_STS_FIFO_PDFIFO ; +#else +typedef struct +{ uint32_t pdentry : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_entry */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_STS_FIFO_PDFIFO ; +#endif + +typedef struct +{ + /* Broad-Bus_configuration */ + BBH_RX_GENERAL_CONFIGURATION_BBCFG bbcfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Broad-Bus_configuration */ + BBH_RX_GENERAL_CONFIGURATION_BBCFG1 bbcfg1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_configuration */ + BBH_RX_GENERAL_CONFIGURATION_DDRCFG ddrcfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_PD_base_address */ + BBH_RX_GENERAL_CONFIGURATION_PDBASE pdbase __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ruuner_PD_size */ + BBH_RX_GENERAL_CONFIGURATION_PDSIZE pdsize __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_task */ + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK runnertask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_address_configuration */ + BBH_RX_GENERAL_CONFIGURATION_DMAADDR dmaaddr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_configuration */ + BBH_RX_GENERAL_CONFIGURATION_DMACFG dmacfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_address_configuration */ + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR sdmaaddr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_configuration */ + BBH_RX_GENERAL_CONFIGURATION_SDMACFG sdmacfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_Packet_size */ + BBH_RX_GENERAL_CONFIGURATION_MINPKT0 minpkt0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_Packet_size_0 */ + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0 maxpkt0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_Packet_size_1 */ + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1 maxpkt1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_configuration */ + BBH_RX_GENERAL_CONFIGURATION_IHCFG ihcfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flow_control_configuration */ + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL flowctrl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Per_flow_threshold. */ + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH perflowth __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Per_flow_sets. */ + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS perflowsets __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_select_0 */ + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0 ihclass0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_select_1 */ + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1 ihclass1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_select_2 */ + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2 ihclass2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_select_3 */ + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3 ihclass3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_class_override */ + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE ihoverride __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_packet_select_0 */ + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0 minpktsel0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Minimum_packet_select_1 */ + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1 minpktsel1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_packet_select_0 */ + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0 maxpktsel0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Maximum_packet_select_1 */ + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1 maxpktsel1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PLOAM_configurations */ + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG ploamcfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RX_reset_command */ + BBH_RX_GENERAL_CONFIGURATION_RXRSTRST rxrstrst __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RX_debug_select */ + BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL rxdbgsel __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reassembly_offset */ + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET reassemblyoffset __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_GENERAL_CONFIGURATION ; + +typedef struct +{ + /* SOP_after_SOP_error */ + BBH_RX_PM_COUNTERS_SOPASOP sopasop __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Third_flow_error */ + BBH_RX_PM_COUNTERS_THIRDFLOW thirdflow __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Incoming_packets */ + BBH_RX_PM_COUNTERS_INPKT inpkt __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Too_short_error */ + BBH_RX_PM_COUNTERS_TOOSHORT tooshort __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Too_long_error */ + BBH_RX_PM_COUNTERS_TOOLONG toolong __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CRC_error */ + BBH_RX_PM_COUNTERS_CRCERROR crcerror __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IPTV_error */ + BBH_RX_PM_COUNTERS_IPTV iptv __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_congestion_error */ + BBH_RX_PM_COUNTERS_RUNNERCONG runnercong __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* No_BPM_BN_error */ + BBH_RX_PM_COUNTERS_NOBPMBN nobpmbn __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NO_SBPM_SBN_error */ + BBH_RX_PM_COUNTERS_NOSBPMSBN nosbpmsbn __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* No_DMA_CD_error */ + BBH_RX_PM_COUNTERS_NODMACD nodmacd __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* No_SDMA_CD_error */ + BBH_RX_PM_COUNTERS_NOSDMACD nosdmacd __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_drop_ploam_error */ + BBH_RX_PM_COUNTERS_IHDROPPLOAM ihdropploam __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* No_BPM_BN_PLOAM_error */ + BBH_RX_PM_COUNTERS_NOBPMBNPLOAM nobpmbnploam __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CRC_PLOAM_error */ + BBH_RX_PM_COUNTERS_CRCERRORPLOAM crcerrorploam __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Epon_sync_fifo_overrun */ + BBH_RX_PM_COUNTERS_EPNFIFOVERUN epnfifoverun __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Epon_sync_fifo_overrun_hdr */ + BBH_RX_PM_COUNTERS_EPNFIFOVRNHDR epnfifovrnhdr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Epon_type_error */ + BBH_RX_PM_COUNTERS_EPONTYPERROR epontyperror __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PM_COUNTERS ; + +/*****************************************************************************************/ +/* Debug features. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define BBH_RX_DEBUG_BNFIFO_NUMBER ( 8 ) +#define BBH_RX_DEBUG_SBNFIFO_NUMBER ( 8 ) +#define BBH_RX_DEBUG_RESFIFO_NUMBER ( 16 ) +typedef struct +{ + /* Context_0_LSB */ + BBH_RX_DEBUG_CNTXTX0LSB cntxtx0lsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_0_MSB */ + BBH_RX_DEBUG_CNTXTX0MSB cntxtx0msb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_1_LSB */ + BBH_RX_DEBUG_CNTXTX1LSB cntxtx1lsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_1_MSB */ + BBH_RX_DEBUG_CNTXTX1MSB cntxtx1msb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_context_0 */ + BBH_RX_DEBUG_IHCNTXT0 ihcntxt0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_context_1 */ + BBH_RX_DEBUG_IHCNTXT1 ihcntxt1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_context_PLOAM */ + BBH_RX_DEBUG_IHCNTXTP ihcntxtp __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_free_buffer */ + BBH_RX_DEBUG_IHFREEBUF ihfreebuf __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pre_wakeup_fifo_used_words */ + BBH_RX_DEBUG_PWUW pwuw __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACK_counters */ + BBH_RX_DEBUG_ACKCNT ackcnt __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_counters */ + BBH_RX_DEBUG_RNRCNT rnrcnt __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Debug_vector */ + BBH_RX_DEBUG_DBGVEC dbgvec __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_BN_FIFO */ + BBH_RX_DEBUG_BNFIFO bnfifo [ BBH_RX_DEBUG_BNFIFO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SRAM_BN_FIFO */ + BBH_RX_DEBUG_SBNFIFO sbnfifo [ BBH_RX_DEBUG_SBNFIFO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_response_FIFO */ + BBH_RX_DEBUG_RESFIFO resfifo [ BBH_RX_DEBUG_RESFIFO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Epon_sync_fifo_used_words */ + BBH_RX_DEBUG_ESUW esuw __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_DEBUG ; + +/*****************************************************************************************/ +/* The BBH naintains per flow PM packets dropped by IH. These registers are relevant fo */ +/* r GPON only. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_NUMBER ( 256 ) +typedef struct +{ + /* Per_flo_error */ + BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM perflowpm [ BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX_PER_FLOW_PM_COUNTERS ; + +/*****************************************************************************************/ +/* These configurations and control registers contain parameters that determine the BBH */ +/* TX functionality. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define BBH_TX_CONFIGURATIONS_PD_BYTE_TH_NUMBER ( 5 ) +typedef struct +{ + /* BB_Cfg */ + BBH_TX_CONFIGURATIONS_BBCFG_TX bbcfg_tx __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BB_Cfg_1 */ + BBH_TX_CONFIGURATIONS_BBCFG1_TX bbcfg1_tx __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_cfg */ + BBH_TX_CONFIGURATIONS_DDRCFG_TX ddrcfg_tx __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HN_BASE */ + BBH_TX_CONFIGURATIONS_HNBASE hnbase __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_numbers_LSB */ + BBH_TX_CONFIGURATIONS_TASKLSB tasklsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_numbers_MSB */ + BBH_TX_CONFIGURATIONS_TASKMSB taskmsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_numbers_8-39 */ + BBH_TX_CONFIGURATIONS_TASK8_39 task8_39 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_size_0_7 */ + BBH_TX_CONFIGURATIONS_PDSIZE0_7 pdsize0_7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_size_8_39 */ + BBH_TX_CONFIGURATIONS_PDSIZE8_39 pdsize8_39 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_base_0_3 */ + BBH_TX_CONFIGURATIONS_PDBASE0_3 pdbase0_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_base_4_7 */ + BBH_TX_CONFIGURATIONS_PDBASE4_7 pdbase4_7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_base_8_39 */ + BBH_TX_CONFIGURATIONS_PDBASE8_39 pdbase8_39 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_bytes_threshold_EN */ + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN pd_byte_th_en __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_bytes_threshold */ + BBH_TX_CONFIGURATIONS_PD_BYTE_TH pd_byte_th [ BBH_TX_CONFIGURATIONS_PD_BYTE_TH_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 4 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_configurations */ + BBH_TX_CONFIGURATIONS_DMACFG_TX dmacfg_tx __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SDMA_configurations */ + BBH_TX_CONFIGURATIONS_SDMACFG_TX sdmacfg_tx __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_configurations */ + BBH_TX_CONFIGURATIONS_RUNNERCFG runnercfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MDU_CFG */ + BBH_TX_CONFIGURATIONS_MDUMODE mdumode __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_TM_BASE */ + BBH_TX_CONFIGURATIONS_DDRTMBASE ddrtmbase __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Debug_select */ + BBH_TX_CONFIGURATIONS_DBGSEL dbgsel __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TX_reset_command */ + BBH_TX_CONFIGURATIONS_TXRSTCMD txrstcmd __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC1588 */ + BBH_TX_CONFIGURATIONS_EMAC1588 emac1588 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_configurations */ + BBH_TX_CONFIGURATIONS_SBPMCFG sbpmcfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_WKUP_THRESH_0_7 */ + BBH_TX_CONFIGURATIONS_PDWKUPH0_7 pdwkuph0_7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_WKUP_THRESH_8_31 */ + BBH_TX_CONFIGURATIONS_PDWKUPH8_31 pdwkuph8_31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_EMPTY_THRESHOLD */ + BBH_TX_CONFIGURATIONS_PDEMPTY pdempty __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH_TRANSMIT_TH */ + BBH_TX_CONFIGURATIONS_ETHTT ethtt __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSL_MAXWLEN */ + BBH_TX_CONFIGURATIONS_MAXWLEN maxwlen __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSL_FLUSH */ + BBH_TX_CONFIGURATIONS_FLUSH flush __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONFIGURATIONS ; + +/*****************************************************************************************/ +/* Debug features */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define BBH_TX_DEBUG_PDVALID_NUMBER ( 4 ) +#define BBH_TX_DEBUG_BPMFIFO_NUMBER ( 8 ) +#define BBH_TX_DEBUG_SBPMFIFO_NUMBER ( 4 ) +#define BBH_TX_DEBUG_FIRSTBNFIFO_NUMBER ( 8 ) +#define BBH_TX_DEBUG_GETNEXTFIFO_NUMBER ( 8 ) +#define BBH_TX_DEBUG_EPNPDVALID_NUMBER ( 8 ) +typedef struct +{ + /* SRAM_PD_counter */ + BBH_TX_DEBUG_SRAMPD srampd __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_PD_counter */ + BBH_TX_DEBUG_DDRPD ddrpd __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_DROP_counter */ + BBH_TX_DEBUG_PDDROP pddrop __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_equal_0_counter */ + BBH_TX_DEBUG_PDEQ0 pdeq0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Get_next_is_null_counter */ + BBH_TX_DEBUG_GETNEXTNULL getnextnull __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 12 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_Full_LSB */ + BBH_TX_DEBUG_PDFULLLSB pdfulllsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_Full_MSB */ + BBH_TX_DEBUG_PDFULLMSB pdfullmsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_empty_LSB */ + BBH_TX_DEBUG_PDEMPTYLSB pdemptylsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_empty_MSB */ + BBH_TX_DEBUG_PDEMPTYMSB pdemptymsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_VALID */ + BBH_TX_DEBUG_PDVALID pdvalid [ BBH_TX_DEBUG_PDVALID_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_FIFO */ + BBH_TX_DEBUG_BPMFIFO bpmfifo [ BBH_TX_DEBUG_BPMFIFO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_FIFO */ + BBH_TX_DEBUG_SBPMFIFO sbpmfifo [ BBH_TX_DEBUG_SBPMFIFO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 16 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* First_BN_FIFO */ + BBH_TX_DEBUG_FIRSTBNFIFO firstbnfifo [ BBH_TX_DEBUG_FIRSTBNFIFO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Get_next_FIFO */ + BBH_TX_DEBUG_GETNEXTFIFO getnextfifo [ BBH_TX_DEBUG_GETNEXTFIFO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Debug_out_reg */ + BBH_TX_DEBUG_DBGOUTREG dbgoutreg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved3 [ 12 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EPON_PD_VALID */ + BBH_TX_DEBUG_EPNPDVALID epnpdvalid [ BBH_TX_DEBUG_EPNPDVALID_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_DEBUG ; + +/*****************************************************************************************/ +/* PD FIFOs RAM for GPON and ETH. For EPON PD FIFOs, refer to EPON_PD_FIFO section. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define BBH_TX_PD_FIFO_PDFIFO_NUMBER ( 256 ) +typedef struct +{ + /* PD_FIFO */ + BBH_TX_PD_FIFO_PDFIFO pdfifo [ BBH_TX_PD_FIFO_PDFIFO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_PD_FIFO ; + +/*****************************************************************************************/ +/* Segmentation context */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define BBH_TX_CONTEXT_SEGCNTXT_NUMBER ( 40 ) +typedef struct +{ + /* Segmentation_context */ + BBH_TX_CONTEXT_SEGCNTXT segcntxt [ BBH_TX_CONTEXT_SEGCNTXT_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_CONTEXT ; + +/*****************************************************************************************/ +/* PD FIFOs RAM for EPON. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define BBH_TX_EPON_PD_FIFO_PDFIFO_NUMBER ( 512 ) +typedef struct +{ + /* PD_FIFO */ + BBH_TX_EPON_PD_FIFO_PDFIFO pdfifo [ BBH_TX_EPON_PD_FIFO_PDFIFO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_PD_FIFO ; + +/*****************************************************************************************/ +/* These configurations and control registers contain parameters that determine the EPON */ +/* BBH TX specific functionality. For global configurations, refer to Configurations se */ +/* ction. In this section, all the configurations that are related to PDs are reffere */ +/* d to EPON status messages. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define BBH_TX_EPON_CFG_PD_BYTE_TH_NUMBER ( 5 ) +typedef struct +{ + /* Task_numbers_LSB */ + BBH_TX_EPON_CFG_TASKLSB tasklsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_numbers_MSB */ + BBH_TX_EPON_CFG_TASKMSB taskmsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_numbers_8-39 */ + BBH_TX_EPON_CFG_TASK8_39 task8_39 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_size_0_3 */ + BBH_TX_EPON_CFG_PDSIZE0_3 pdsize0_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_size_4_7 */ + BBH_TX_EPON_CFG_PDSIZE4_7 pdsize4_7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_size_8_31 */ + BBH_TX_EPON_CFG_PDSIZE8_31 pdsize8_31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_base_0_3 */ + BBH_TX_EPON_CFG_PDBASE0_3 pdbase0_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_base_4_7 */ + BBH_TX_EPON_CFG_PDBASE4_7 pdbase4_7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_FIFO_base_8_39 */ + BBH_TX_EPON_CFG_PDBASE8_39 pdbase8_39 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_bytes_threshold_EN */ + BBH_TX_EPON_CFG_PD_BYTE_TH_EN pd_byte_th_en __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_bytes_threshold */ + BBH_TX_EPON_CFG_PD_BYTE_TH pd_byte_th [ BBH_TX_EPON_CFG_PD_BYTE_TH_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_configurations */ + BBH_TX_EPON_CFG_RUNNERCFG runnercfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MDU_CFG */ + BBH_TX_EPON_CFG_MDUMODE mdumode __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REQ_CFG */ + BBH_TX_EPON_CFG_REQCFG reqcfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_WKUP_THRESH_0_3 */ + BBH_TX_EPON_CFG_PDWKUPH0_3 pdwkuph0_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_WKUP_THRESH_4_7 */ + BBH_TX_EPON_CFG_PDWKUPH4_7 pdwkuph4_7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_WKUP_THRESH_8_31 */ + BBH_TX_EPON_CFG_PDWKUPH8_31 pdwkuph8_31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_EMPTY_THRESHOLD */ + BBH_TX_EPON_CFG_PDEMPTY pdempty __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_CFG ; + +/*****************************************************************************************/ +/* Debug features of EPON Status interface. In this section, a PD is reffered to Status */ +/* message and not a regular packet descriptor. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define BBH_TX_EPON_DBG_PDVALID_NUMBER ( 8 ) +typedef struct +{ + /* DDR_PD_counter */ + BBH_TX_EPON_DBG_DDRPD ddrpd __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_DROP_counter */ + BBH_TX_EPON_DBG_PDDROP pddrop __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_equal_0_counter */ + BBH_TX_EPON_DBG_PDEQ0 pdeq0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 16 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_Full_LSB */ + BBH_TX_EPON_DBG_PDFULLLSB pdfulllsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 4 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PD_empty_LSB */ + BBH_TX_EPON_DBG_PDEMPTYLSB pdemptylsb __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved3 [ 164 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EPON_PD_VALID */ + BBH_TX_EPON_DBG_PDVALID pdvalid [ BBH_TX_EPON_DBG_PDVALID_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REQ_length_error_counter */ + BBH_TX_EPON_DBG_LENERR lenerr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Flushed_packets_counter */ + BBH_TX_EPON_DBG_FLUSHPKTS flushpkts __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved4 [ 8 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REQ_FIFO_address */ + BBH_TX_EPON_DBG_REQFIFOADD reqfifoadd __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REQ_FIFO_data */ + BBH_TX_EPON_DBG_REQFIFODATA reqfifodata __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_DBG ; + +/*****************************************************************************************/ +/* Status FIFOs RAM for EPON. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define BBH_TX_EPON_STS_FIFO_PDFIFO_NUMBER ( 512 ) +typedef struct +{ + /* PD_FIFO */ + BBH_TX_EPON_STS_FIFO_PDFIFO pdfifo [ BBH_TX_EPON_STS_FIFO_PDFIFO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX_EPON_STS_FIFO ; + +typedef struct +{ + /* general_configuration function */ + BBH_RX_GENERAL_CONFIGURATION general_configuration __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved0 [ 136 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pm_counters function */ + BBH_RX_PM_COUNTERS pm_counters __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 184 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* debug function */ + BBH_RX_DEBUG debug __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 332 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* per_flow_pm_counters function */ + BBH_RX_PER_FLOW_PM_COUNTERS per_flow_pm_counters __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_RX ; + +typedef struct +{ + /* configurations function */ + BBH_TX_CONFIGURATIONS configurations __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved0 [ 124 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* debug function */ + BBH_TX_DEBUG debug __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 56 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pd_fifo function */ + BBH_TX_PD_FIFO pd_fifo __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* context function */ + BBH_TX_CONTEXT context __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 96 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* epon_pd_fifo function */ + BBH_TX_EPON_PD_FIFO epon_pd_fifo __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved3 [ 256 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* epon_cfg function */ + BBH_TX_EPON_CFG epon_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved4 [ 168 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* epon_dbg function */ + BBH_TX_EPON_DBG epon_dbg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved5 [ 1468 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* epon_sts_fifo function */ + BBH_TX_EPON_STS_FIFO epon_sts_fifo __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BBH_TX ; + +#define BBH_RX_NUMBER ( 7 ) +#define BBH_TX_NUMBER ( 7 ) +typedef struct +{ + /* RX */ + BBH_RX rx [ BBH_RX_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 39564 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TX */ + BBH_TX tx [ BBH_TX_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BBH_FOR_ALL ; +#endif /* BBH_H_INCLUDED */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_bbh_arrays.c b/arch/arm/mach-bcmbca/rdp/rdp_bbh_arrays.c new file mode 100755 index 0000000000..62e82994a8 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_bbh_arrays.c @@ -0,0 +1,2241 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ +/* File automatically generated by Reggae at 17/01/2013 10:24:42 */ + +#include "rdp_subsystem_common.h" +#include "rdp_bbh.h" + +#ifdef __OREN__ +#define NUM_OF_BBH_BLOCKS 8 +#else +#define NUM_OF_BBH_BLOCKS 7 +#endif + +uint32_t BBH_RX_GENERAL_CONFIGURATION_BBCFG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_BBCFG_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_BBCFG_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_BBCFG_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_BBCFG_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_BBCFG_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_BBCFG_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_BBCFG_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_BBCFG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_BBCFG_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_BBCFG1_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_BBCFG1_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_BBCFG1_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_BBCFG1_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_BBCFG1_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_BBCFG1_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_BBCFG1_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_BBCFG1_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_BBCFG1_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_BBCFG1_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_DDRCFG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_DDRCFG_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_DDRCFG_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_DDRCFG_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_DDRCFG_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_DDRCFG_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_DDRCFG_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_DDRCFG_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_DDRCFG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_DDRCFG_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_PDBASE_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_PDBASE_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_PDBASE_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_PDBASE_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_PDBASE_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_PDBASE_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_PDBASE_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_PDBASE_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_PDBASE_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_PDBASE_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_PDSIZE_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_PDSIZE_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_PDSIZE_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_PDSIZE_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_PDSIZE_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_PDSIZE_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_PDSIZE_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_PDSIZE_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_PDSIZE_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_PDSIZE_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_RUNNERTASK_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_DMAADDR_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_DMAADDR_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_DMAADDR_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_DMAADDR_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_DMAADDR_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_DMAADDR_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_DMAADDR_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_DMAADDR_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_DMAADDR_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_DMAADDR_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_DMACFG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_DMACFG_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_DMACFG_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_DMACFG_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_DMACFG_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_DMACFG_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_DMACFG_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_DMACFG_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_DMACFG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_DMACFG_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_SDMAADDR_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_SDMACFG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_SDMACFG_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_SDMACFG_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_SDMACFG_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_SDMACFG_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_SDMACFG_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_SDMACFG_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_SDMACFG_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_SDMACFG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_SDMACFG_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_MINPKT0_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_MINPKT0_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_MINPKT0_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_MINPKT0_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_MINPKT0_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_MINPKT0_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_MINPKT0_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_MINPKT0_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_MINPKT0_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_MINPKT0_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT0_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_MAXPKT1_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_IHCFG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_IHCFG_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_IHCFG_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_IHCFG_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_IHCFG_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_IHCFG_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_IHCFG_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_IHCFG_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_IHCFG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_IHCFG_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_FLOWCTRL_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWTH_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_PERFLOWSETS_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS0_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS1_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS2_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_IHCLASS3_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_IHOVERRIDE_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL0_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_MINPKTSEL1_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL0_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_MAXPKTSEL1_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_PLOAMCFG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_RXRSTRST_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_RXDBGSEL_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_ARRAY); + +uint32_t BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS, + BBH_RX_1_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS, + BBH_RX_2_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS, + BBH_RX_3_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS, + BBH_RX_4_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS, + BBH_RX_5_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS, + BBH_RX_6_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_SOPASOP_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_SOPASOP_ADDRESS, + BBH_RX_1_PM_COUNTERS_SOPASOP_ADDRESS, + BBH_RX_2_PM_COUNTERS_SOPASOP_ADDRESS, + BBH_RX_3_PM_COUNTERS_SOPASOP_ADDRESS, + BBH_RX_4_PM_COUNTERS_SOPASOP_ADDRESS, + BBH_RX_5_PM_COUNTERS_SOPASOP_ADDRESS, + BBH_RX_6_PM_COUNTERS_SOPASOP_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_SOPASOP_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_SOPASOP_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_THIRDFLOW_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_THIRDFLOW_ADDRESS, + BBH_RX_1_PM_COUNTERS_THIRDFLOW_ADDRESS, + BBH_RX_2_PM_COUNTERS_THIRDFLOW_ADDRESS, + BBH_RX_3_PM_COUNTERS_THIRDFLOW_ADDRESS, + BBH_RX_4_PM_COUNTERS_THIRDFLOW_ADDRESS, + BBH_RX_5_PM_COUNTERS_THIRDFLOW_ADDRESS, + BBH_RX_6_PM_COUNTERS_THIRDFLOW_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_THIRDFLOW_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_THIRDFLOW_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_INPKT_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_INPKT_ADDRESS, + BBH_RX_1_PM_COUNTERS_INPKT_ADDRESS, + BBH_RX_2_PM_COUNTERS_INPKT_ADDRESS, + BBH_RX_3_PM_COUNTERS_INPKT_ADDRESS, + BBH_RX_4_PM_COUNTERS_INPKT_ADDRESS, + BBH_RX_5_PM_COUNTERS_INPKT_ADDRESS, + BBH_RX_6_PM_COUNTERS_INPKT_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_INPKT_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_INPKT_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_TOOSHORT_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_TOOSHORT_ADDRESS, + BBH_RX_1_PM_COUNTERS_TOOSHORT_ADDRESS, + BBH_RX_2_PM_COUNTERS_TOOSHORT_ADDRESS, + BBH_RX_3_PM_COUNTERS_TOOSHORT_ADDRESS, + BBH_RX_4_PM_COUNTERS_TOOSHORT_ADDRESS, + BBH_RX_5_PM_COUNTERS_TOOSHORT_ADDRESS, + BBH_RX_6_PM_COUNTERS_TOOSHORT_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_TOOSHORT_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_TOOSHORT_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_TOOLONG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_TOOLONG_ADDRESS, + BBH_RX_1_PM_COUNTERS_TOOLONG_ADDRESS, + BBH_RX_2_PM_COUNTERS_TOOLONG_ADDRESS, + BBH_RX_3_PM_COUNTERS_TOOLONG_ADDRESS, + BBH_RX_4_PM_COUNTERS_TOOLONG_ADDRESS, + BBH_RX_5_PM_COUNTERS_TOOLONG_ADDRESS, + BBH_RX_6_PM_COUNTERS_TOOLONG_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_TOOLONG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_TOOLONG_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_CRCERROR_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_CRCERROR_ADDRESS, + BBH_RX_1_PM_COUNTERS_CRCERROR_ADDRESS, + BBH_RX_2_PM_COUNTERS_CRCERROR_ADDRESS, + BBH_RX_3_PM_COUNTERS_CRCERROR_ADDRESS, + BBH_RX_4_PM_COUNTERS_CRCERROR_ADDRESS, + BBH_RX_5_PM_COUNTERS_CRCERROR_ADDRESS, + BBH_RX_6_PM_COUNTERS_CRCERROR_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_CRCERROR_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_CRCERROR_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_IPTV_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_IPTV_ADDRESS, + BBH_RX_1_PM_COUNTERS_IPTV_ADDRESS, + BBH_RX_2_PM_COUNTERS_IPTV_ADDRESS, + BBH_RX_3_PM_COUNTERS_IPTV_ADDRESS, + BBH_RX_4_PM_COUNTERS_IPTV_ADDRESS, + BBH_RX_5_PM_COUNTERS_IPTV_ADDRESS, + BBH_RX_6_PM_COUNTERS_IPTV_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_IPTV_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_IPTV_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_RUNNERCONG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_RUNNERCONG_ADDRESS, + BBH_RX_1_PM_COUNTERS_RUNNERCONG_ADDRESS, + BBH_RX_2_PM_COUNTERS_RUNNERCONG_ADDRESS, + BBH_RX_3_PM_COUNTERS_RUNNERCONG_ADDRESS, + BBH_RX_4_PM_COUNTERS_RUNNERCONG_ADDRESS, + BBH_RX_5_PM_COUNTERS_RUNNERCONG_ADDRESS, + BBH_RX_6_PM_COUNTERS_RUNNERCONG_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_RUNNERCONG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_RUNNERCONG_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_NOBPMBN_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_NOBPMBN_ADDRESS, + BBH_RX_1_PM_COUNTERS_NOBPMBN_ADDRESS, + BBH_RX_2_PM_COUNTERS_NOBPMBN_ADDRESS, + BBH_RX_3_PM_COUNTERS_NOBPMBN_ADDRESS, + BBH_RX_4_PM_COUNTERS_NOBPMBN_ADDRESS, + BBH_RX_5_PM_COUNTERS_NOBPMBN_ADDRESS, + BBH_RX_6_PM_COUNTERS_NOBPMBN_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_NOBPMBN_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_NOBPMBN_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_NOSBPMSBN_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_NOSBPMSBN_ADDRESS, + BBH_RX_1_PM_COUNTERS_NOSBPMSBN_ADDRESS, + BBH_RX_2_PM_COUNTERS_NOSBPMSBN_ADDRESS, + BBH_RX_3_PM_COUNTERS_NOSBPMSBN_ADDRESS, + BBH_RX_4_PM_COUNTERS_NOSBPMSBN_ADDRESS, + BBH_RX_5_PM_COUNTERS_NOSBPMSBN_ADDRESS, + BBH_RX_6_PM_COUNTERS_NOSBPMSBN_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_NOSBPMSBN_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_NOSBPMSBN_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_NODMACD_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_NODMACD_ADDRESS, + BBH_RX_1_PM_COUNTERS_NODMACD_ADDRESS, + BBH_RX_2_PM_COUNTERS_NODMACD_ADDRESS, + BBH_RX_3_PM_COUNTERS_NODMACD_ADDRESS, + BBH_RX_4_PM_COUNTERS_NODMACD_ADDRESS, + BBH_RX_5_PM_COUNTERS_NODMACD_ADDRESS, + BBH_RX_6_PM_COUNTERS_NODMACD_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_NODMACD_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_NODMACD_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_NOSDMACD_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_NOSDMACD_ADDRESS, + BBH_RX_1_PM_COUNTERS_NOSDMACD_ADDRESS, + BBH_RX_2_PM_COUNTERS_NOSDMACD_ADDRESS, + BBH_RX_3_PM_COUNTERS_NOSDMACD_ADDRESS, + BBH_RX_4_PM_COUNTERS_NOSDMACD_ADDRESS, + BBH_RX_5_PM_COUNTERS_NOSDMACD_ADDRESS, + BBH_RX_6_PM_COUNTERS_NOSDMACD_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_NOSDMACD_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_NOSDMACD_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_IHDROPPLOAM_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_IHDROPPLOAM_ADDRESS, + BBH_RX_1_PM_COUNTERS_IHDROPPLOAM_ADDRESS, + BBH_RX_2_PM_COUNTERS_IHDROPPLOAM_ADDRESS, + BBH_RX_3_PM_COUNTERS_IHDROPPLOAM_ADDRESS, + BBH_RX_4_PM_COUNTERS_IHDROPPLOAM_ADDRESS, + BBH_RX_5_PM_COUNTERS_IHDROPPLOAM_ADDRESS, + BBH_RX_6_PM_COUNTERS_IHDROPPLOAM_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_IHDROPPLOAM_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_IHDROPPLOAM_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS, + BBH_RX_1_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS, + BBH_RX_2_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS, + BBH_RX_3_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS, + BBH_RX_4_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS, + BBH_RX_5_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS, + BBH_RX_6_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_NOBPMBNPLOAM_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_NOBPMBNPLOAM_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_CRCERRORPLOAM_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_CRCERRORPLOAM_ADDRESS, + BBH_RX_1_PM_COUNTERS_CRCERRORPLOAM_ADDRESS, + BBH_RX_2_PM_COUNTERS_CRCERRORPLOAM_ADDRESS, + BBH_RX_3_PM_COUNTERS_CRCERRORPLOAM_ADDRESS, + BBH_RX_4_PM_COUNTERS_CRCERRORPLOAM_ADDRESS, + BBH_RX_5_PM_COUNTERS_CRCERRORPLOAM_ADDRESS, + BBH_RX_6_PM_COUNTERS_CRCERRORPLOAM_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_CRCERRORPLOAM_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_CRCERRORPLOAM_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_EPNFIFOVERUN_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_EPNFIFOVERUN_ADDRESS, + BBH_RX_1_PM_COUNTERS_EPNFIFOVERUN_ADDRESS, + BBH_RX_2_PM_COUNTERS_EPNFIFOVERUN_ADDRESS, + BBH_RX_3_PM_COUNTERS_EPNFIFOVERUN_ADDRESS, + BBH_RX_4_PM_COUNTERS_EPNFIFOVERUN_ADDRESS, + BBH_RX_5_PM_COUNTERS_EPNFIFOVERUN_ADDRESS, + BBH_RX_6_PM_COUNTERS_EPNFIFOVERUN_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_EPNFIFOVERUN_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_EPNFIFOVERUN_ARRAY); + +uint32_t BBH_RX_PM_COUNTERS_EPONTYPERROR_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PM_COUNTERS_EPONTYPERROR_ADDRESS, + BBH_RX_1_PM_COUNTERS_EPONTYPERROR_ADDRESS, + BBH_RX_2_PM_COUNTERS_EPONTYPERROR_ADDRESS, + BBH_RX_3_PM_COUNTERS_EPONTYPERROR_ADDRESS, + BBH_RX_4_PM_COUNTERS_EPONTYPERROR_ADDRESS, + BBH_RX_5_PM_COUNTERS_EPONTYPERROR_ADDRESS, + BBH_RX_6_PM_COUNTERS_EPONTYPERROR_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PM_COUNTERS_EPONTYPERROR_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PM_COUNTERS_EPONTYPERROR_ARRAY); + +uint32_t BBH_RX_DEBUG_CNTXTX0LSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_CNTXTX0LSB_ADDRESS, + BBH_RX_1_DEBUG_CNTXTX0LSB_ADDRESS, + BBH_RX_2_DEBUG_CNTXTX0LSB_ADDRESS, + BBH_RX_3_DEBUG_CNTXTX0LSB_ADDRESS, + BBH_RX_4_DEBUG_CNTXTX0LSB_ADDRESS, + BBH_RX_5_DEBUG_CNTXTX0LSB_ADDRESS, + BBH_RX_6_DEBUG_CNTXTX0LSB_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_CNTXTX0LSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_CNTXTX0LSB_ARRAY); + +uint32_t BBH_RX_DEBUG_CNTXTX0MSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_CNTXTX0MSB_ADDRESS, + BBH_RX_1_DEBUG_CNTXTX0MSB_ADDRESS, + BBH_RX_2_DEBUG_CNTXTX0MSB_ADDRESS, + BBH_RX_3_DEBUG_CNTXTX0MSB_ADDRESS, + BBH_RX_4_DEBUG_CNTXTX0MSB_ADDRESS, + BBH_RX_5_DEBUG_CNTXTX0MSB_ADDRESS, + BBH_RX_6_DEBUG_CNTXTX0MSB_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_CNTXTX0MSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_CNTXTX0MSB_ARRAY); + +uint32_t BBH_RX_DEBUG_CNTXTX1LSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_CNTXTX1LSB_ADDRESS, + BBH_RX_1_DEBUG_CNTXTX1LSB_ADDRESS, + BBH_RX_2_DEBUG_CNTXTX1LSB_ADDRESS, + BBH_RX_3_DEBUG_CNTXTX1LSB_ADDRESS, + BBH_RX_4_DEBUG_CNTXTX1LSB_ADDRESS, + BBH_RX_5_DEBUG_CNTXTX1LSB_ADDRESS, + BBH_RX_6_DEBUG_CNTXTX1LSB_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_CNTXTX1LSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_CNTXTX1LSB_ARRAY); + +uint32_t BBH_RX_DEBUG_CNTXTX1MSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_CNTXTX1MSB_ADDRESS, + BBH_RX_1_DEBUG_CNTXTX1MSB_ADDRESS, + BBH_RX_2_DEBUG_CNTXTX1MSB_ADDRESS, + BBH_RX_3_DEBUG_CNTXTX1MSB_ADDRESS, + BBH_RX_4_DEBUG_CNTXTX1MSB_ADDRESS, + BBH_RX_5_DEBUG_CNTXTX1MSB_ADDRESS, + BBH_RX_6_DEBUG_CNTXTX1MSB_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_CNTXTX1MSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_CNTXTX1MSB_ARRAY); + +uint32_t BBH_RX_DEBUG_IHCNTXT0_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_IHCNTXT0_ADDRESS, + BBH_RX_1_DEBUG_IHCNTXT0_ADDRESS, + BBH_RX_2_DEBUG_IHCNTXT0_ADDRESS, + BBH_RX_3_DEBUG_IHCNTXT0_ADDRESS, + BBH_RX_4_DEBUG_IHCNTXT0_ADDRESS, + BBH_RX_5_DEBUG_IHCNTXT0_ADDRESS, + BBH_RX_6_DEBUG_IHCNTXT0_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_IHCNTXT0_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_IHCNTXT0_ARRAY); + +uint32_t BBH_RX_DEBUG_IHCNTXT1_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_IHCNTXT1_ADDRESS, + BBH_RX_1_DEBUG_IHCNTXT1_ADDRESS, + BBH_RX_2_DEBUG_IHCNTXT1_ADDRESS, + BBH_RX_3_DEBUG_IHCNTXT1_ADDRESS, + BBH_RX_4_DEBUG_IHCNTXT1_ADDRESS, + BBH_RX_5_DEBUG_IHCNTXT1_ADDRESS, + BBH_RX_6_DEBUG_IHCNTXT1_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_IHCNTXT1_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_IHCNTXT1_ARRAY); + +uint32_t BBH_RX_DEBUG_IHCNTXTP_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_IHCNTXTP_ADDRESS, + BBH_RX_1_DEBUG_IHCNTXTP_ADDRESS, + BBH_RX_2_DEBUG_IHCNTXTP_ADDRESS, + BBH_RX_3_DEBUG_IHCNTXTP_ADDRESS, + BBH_RX_4_DEBUG_IHCNTXTP_ADDRESS, + BBH_RX_5_DEBUG_IHCNTXTP_ADDRESS, + BBH_RX_6_DEBUG_IHCNTXTP_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_IHCNTXTP_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_IHCNTXTP_ARRAY); + +uint32_t BBH_RX_DEBUG_IHFREEBUF_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_IHFREEBUF_ADDRESS, + BBH_RX_1_DEBUG_IHFREEBUF_ADDRESS, + BBH_RX_2_DEBUG_IHFREEBUF_ADDRESS, + BBH_RX_3_DEBUG_IHFREEBUF_ADDRESS, + BBH_RX_4_DEBUG_IHFREEBUF_ADDRESS, + BBH_RX_5_DEBUG_IHFREEBUF_ADDRESS, + BBH_RX_6_DEBUG_IHFREEBUF_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_IHFREEBUF_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_IHFREEBUF_ARRAY); + +uint32_t BBH_RX_DEBUG_PWUW_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_PWUW_ADDRESS, + BBH_RX_1_DEBUG_PWUW_ADDRESS, + BBH_RX_2_DEBUG_PWUW_ADDRESS, + BBH_RX_3_DEBUG_PWUW_ADDRESS, + BBH_RX_4_DEBUG_PWUW_ADDRESS, + BBH_RX_5_DEBUG_PWUW_ADDRESS, + BBH_RX_6_DEBUG_PWUW_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_PWUW_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_PWUW_ARRAY); + +uint32_t BBH_RX_DEBUG_ACKCNT_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_ACKCNT_ADDRESS, + BBH_RX_1_DEBUG_ACKCNT_ADDRESS, + BBH_RX_2_DEBUG_ACKCNT_ADDRESS, + BBH_RX_3_DEBUG_ACKCNT_ADDRESS, + BBH_RX_4_DEBUG_ACKCNT_ADDRESS, + BBH_RX_5_DEBUG_ACKCNT_ADDRESS, + BBH_RX_6_DEBUG_ACKCNT_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_ACKCNT_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_ACKCNT_ARRAY); + +uint32_t BBH_RX_DEBUG_RNRCNT_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_RNRCNT_ADDRESS, + BBH_RX_1_DEBUG_RNRCNT_ADDRESS, + BBH_RX_2_DEBUG_RNRCNT_ADDRESS, + BBH_RX_3_DEBUG_RNRCNT_ADDRESS, + BBH_RX_4_DEBUG_RNRCNT_ADDRESS, + BBH_RX_5_DEBUG_RNRCNT_ADDRESS, + BBH_RX_6_DEBUG_RNRCNT_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_RNRCNT_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_RNRCNT_ARRAY); + +uint32_t BBH_RX_DEBUG_DBGVEC_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_DBGVEC_ADDRESS, + BBH_RX_1_DEBUG_DBGVEC_ADDRESS, + BBH_RX_2_DEBUG_DBGVEC_ADDRESS, + BBH_RX_3_DEBUG_DBGVEC_ADDRESS, + BBH_RX_4_DEBUG_DBGVEC_ADDRESS, + BBH_RX_5_DEBUG_DBGVEC_ADDRESS, + BBH_RX_6_DEBUG_DBGVEC_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_DBGVEC_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_DBGVEC_ARRAY); + +uint32_t BBH_RX_DEBUG_BNFIFO_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_BNFIFO_ADDRESS, + BBH_RX_1_DEBUG_BNFIFO_ADDRESS, + BBH_RX_2_DEBUG_BNFIFO_ADDRESS, + BBH_RX_3_DEBUG_BNFIFO_ADDRESS, + BBH_RX_4_DEBUG_BNFIFO_ADDRESS, + BBH_RX_5_DEBUG_BNFIFO_ADDRESS, + BBH_RX_6_DEBUG_BNFIFO_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_BNFIFO_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_BNFIFO_ARRAY); + +uint32_t BBH_RX_DEBUG_SBNFIFO_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_SBNFIFO_ADDRESS, + BBH_RX_1_DEBUG_SBNFIFO_ADDRESS, + BBH_RX_2_DEBUG_SBNFIFO_ADDRESS, + BBH_RX_3_DEBUG_SBNFIFO_ADDRESS, + BBH_RX_4_DEBUG_SBNFIFO_ADDRESS, + BBH_RX_5_DEBUG_SBNFIFO_ADDRESS, + BBH_RX_6_DEBUG_SBNFIFO_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_SBNFIFO_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_SBNFIFO_ARRAY); + +uint32_t BBH_RX_DEBUG_RESFIFO_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_RESFIFO_ADDRESS, + BBH_RX_1_DEBUG_RESFIFO_ADDRESS, + BBH_RX_2_DEBUG_RESFIFO_ADDRESS, + BBH_RX_3_DEBUG_RESFIFO_ADDRESS, + BBH_RX_4_DEBUG_RESFIFO_ADDRESS, + BBH_RX_5_DEBUG_RESFIFO_ADDRESS, + BBH_RX_6_DEBUG_RESFIFO_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_RESFIFO_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_RESFIFO_ARRAY); + +uint32_t BBH_RX_DEBUG_ESUW_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_DEBUG_ESUW_ADDRESS, + BBH_RX_1_DEBUG_ESUW_ADDRESS, + BBH_RX_2_DEBUG_ESUW_ADDRESS, + BBH_RX_3_DEBUG_ESUW_ADDRESS, + BBH_RX_4_DEBUG_ESUW_ADDRESS, + BBH_RX_5_DEBUG_ESUW_ADDRESS, + BBH_RX_6_DEBUG_ESUW_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_DEBUG_ESUW_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_DEBUG_ESUW_ARRAY); + +uint32_t BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_RX_0_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS, + BBH_RX_1_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS, + BBH_RX_2_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS, + BBH_RX_3_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS, + BBH_RX_4_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS, + BBH_RX_5_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS, + BBH_RX_6_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS, +#ifdef __OREN__ + BBH_RX_7_PER_FLOW_PM_COUNTERS_PERFLOWPM_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_RX_PER_FLOW_PM_COUNTERS_PERFLOWPM_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_BBCFG_TX_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_BBCFG_TX_ADDRESS, + BBH_TX_1_CONFIGURATIONS_BBCFG_TX_ADDRESS, + BBH_TX_2_CONFIGURATIONS_BBCFG_TX_ADDRESS, + BBH_TX_3_CONFIGURATIONS_BBCFG_TX_ADDRESS, + BBH_TX_4_CONFIGURATIONS_BBCFG_TX_ADDRESS, + BBH_TX_5_CONFIGURATIONS_BBCFG_TX_ADDRESS, + BBH_TX_6_CONFIGURATIONS_BBCFG_TX_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_BBCFG_TX_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_BBCFG_TX_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_BBCFG1_TX_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_BBCFG1_TX_ADDRESS, + BBH_TX_1_CONFIGURATIONS_BBCFG1_TX_ADDRESS, + BBH_TX_2_CONFIGURATIONS_BBCFG1_TX_ADDRESS, + BBH_TX_3_CONFIGURATIONS_BBCFG1_TX_ADDRESS, + BBH_TX_4_CONFIGURATIONS_BBCFG1_TX_ADDRESS, + BBH_TX_5_CONFIGURATIONS_BBCFG1_TX_ADDRESS, + BBH_TX_6_CONFIGURATIONS_BBCFG1_TX_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_BBCFG1_TX_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_BBCFG1_TX_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_DDRCFG_TX_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_DDRCFG_TX_ADDRESS, + BBH_TX_1_CONFIGURATIONS_DDRCFG_TX_ADDRESS, + BBH_TX_2_CONFIGURATIONS_DDRCFG_TX_ADDRESS, + BBH_TX_3_CONFIGURATIONS_DDRCFG_TX_ADDRESS, + BBH_TX_4_CONFIGURATIONS_DDRCFG_TX_ADDRESS, + BBH_TX_5_CONFIGURATIONS_DDRCFG_TX_ADDRESS, + BBH_TX_6_CONFIGURATIONS_DDRCFG_TX_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_DDRCFG_TX_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_DDRCFG_TX_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_HNBASE_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_HNBASE_ADDRESS, + BBH_TX_1_CONFIGURATIONS_HNBASE_ADDRESS, + BBH_TX_2_CONFIGURATIONS_HNBASE_ADDRESS, + BBH_TX_3_CONFIGURATIONS_HNBASE_ADDRESS, + BBH_TX_4_CONFIGURATIONS_HNBASE_ADDRESS, + BBH_TX_5_CONFIGURATIONS_HNBASE_ADDRESS, + BBH_TX_6_CONFIGURATIONS_HNBASE_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_HNBASE_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_HNBASE_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_TASKLSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_TASKLSB_ADDRESS, + BBH_TX_1_CONFIGURATIONS_TASKLSB_ADDRESS, + BBH_TX_2_CONFIGURATIONS_TASKLSB_ADDRESS, + BBH_TX_3_CONFIGURATIONS_TASKLSB_ADDRESS, + BBH_TX_4_CONFIGURATIONS_TASKLSB_ADDRESS, + BBH_TX_5_CONFIGURATIONS_TASKLSB_ADDRESS, + BBH_TX_6_CONFIGURATIONS_TASKLSB_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_TASKLSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_TASKLSB_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_TASKMSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_TASKMSB_ADDRESS, + BBH_TX_1_CONFIGURATIONS_TASKMSB_ADDRESS, + BBH_TX_2_CONFIGURATIONS_TASKMSB_ADDRESS, + BBH_TX_3_CONFIGURATIONS_TASKMSB_ADDRESS, + BBH_TX_4_CONFIGURATIONS_TASKMSB_ADDRESS, + BBH_TX_5_CONFIGURATIONS_TASKMSB_ADDRESS, + BBH_TX_6_CONFIGURATIONS_TASKMSB_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_TASKMSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_TASKMSB_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_TASK8_39_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_TASK8_39_ADDRESS, + BBH_TX_1_CONFIGURATIONS_TASK8_39_ADDRESS, + BBH_TX_2_CONFIGURATIONS_TASK8_39_ADDRESS, + BBH_TX_3_CONFIGURATIONS_TASK8_39_ADDRESS, + BBH_TX_4_CONFIGURATIONS_TASK8_39_ADDRESS, + BBH_TX_5_CONFIGURATIONS_TASK8_39_ADDRESS, + BBH_TX_6_CONFIGURATIONS_TASK8_39_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_TASK8_39_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_TASK8_39_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_PDSIZE0_7_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_PDSIZE0_7_ADDRESS, + BBH_TX_1_CONFIGURATIONS_PDSIZE0_7_ADDRESS, + BBH_TX_2_CONFIGURATIONS_PDSIZE0_7_ADDRESS, + BBH_TX_3_CONFIGURATIONS_PDSIZE0_7_ADDRESS, + BBH_TX_4_CONFIGURATIONS_PDSIZE0_7_ADDRESS, + BBH_TX_5_CONFIGURATIONS_PDSIZE0_7_ADDRESS, + BBH_TX_6_CONFIGURATIONS_PDSIZE0_7_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_PDSIZE0_7_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_PDSIZE0_7_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_PDSIZE8_39_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_PDSIZE8_39_ADDRESS, + BBH_TX_1_CONFIGURATIONS_PDSIZE8_39_ADDRESS, + BBH_TX_2_CONFIGURATIONS_PDSIZE8_39_ADDRESS, + BBH_TX_3_CONFIGURATIONS_PDSIZE8_39_ADDRESS, + BBH_TX_4_CONFIGURATIONS_PDSIZE8_39_ADDRESS, + BBH_TX_5_CONFIGURATIONS_PDSIZE8_39_ADDRESS, + BBH_TX_6_CONFIGURATIONS_PDSIZE8_39_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_PDSIZE8_39_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_PDSIZE8_39_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_PDBASE0_3_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_PDBASE0_3_ADDRESS, + BBH_TX_1_CONFIGURATIONS_PDBASE0_3_ADDRESS, + BBH_TX_2_CONFIGURATIONS_PDBASE0_3_ADDRESS, + BBH_TX_3_CONFIGURATIONS_PDBASE0_3_ADDRESS, + BBH_TX_4_CONFIGURATIONS_PDBASE0_3_ADDRESS, + BBH_TX_5_CONFIGURATIONS_PDBASE0_3_ADDRESS, + BBH_TX_6_CONFIGURATIONS_PDBASE0_3_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_PDBASE0_3_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_PDBASE0_3_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_PDBASE4_7_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_PDBASE4_7_ADDRESS, + BBH_TX_1_CONFIGURATIONS_PDBASE4_7_ADDRESS, + BBH_TX_2_CONFIGURATIONS_PDBASE4_7_ADDRESS, + BBH_TX_3_CONFIGURATIONS_PDBASE4_7_ADDRESS, + BBH_TX_4_CONFIGURATIONS_PDBASE4_7_ADDRESS, + BBH_TX_5_CONFIGURATIONS_PDBASE4_7_ADDRESS, + BBH_TX_6_CONFIGURATIONS_PDBASE4_7_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_PDBASE4_7_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_PDBASE4_7_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_PDBASE8_39_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_PDBASE8_39_ADDRESS, + BBH_TX_1_CONFIGURATIONS_PDBASE8_39_ADDRESS, + BBH_TX_2_CONFIGURATIONS_PDBASE8_39_ADDRESS, + BBH_TX_3_CONFIGURATIONS_PDBASE8_39_ADDRESS, + BBH_TX_4_CONFIGURATIONS_PDBASE8_39_ADDRESS, + BBH_TX_5_CONFIGURATIONS_PDBASE8_39_ADDRESS, + BBH_TX_6_CONFIGURATIONS_PDBASE8_39_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_PDBASE8_39_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_PDBASE8_39_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_EN_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_PD_BYTE_TH_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_PD_BYTE_TH_ADDRESS, + BBH_TX_1_CONFIGURATIONS_PD_BYTE_TH_ADDRESS, + BBH_TX_2_CONFIGURATIONS_PD_BYTE_TH_ADDRESS, + BBH_TX_3_CONFIGURATIONS_PD_BYTE_TH_ADDRESS, + BBH_TX_4_CONFIGURATIONS_PD_BYTE_TH_ADDRESS, + BBH_TX_5_CONFIGURATIONS_PD_BYTE_TH_ADDRESS, + BBH_TX_6_CONFIGURATIONS_PD_BYTE_TH_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_PD_BYTE_TH_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_PD_BYTE_TH_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_DMACFG_TX_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_DMACFG_TX_ADDRESS, + BBH_TX_1_CONFIGURATIONS_DMACFG_TX_ADDRESS, + BBH_TX_2_CONFIGURATIONS_DMACFG_TX_ADDRESS, + BBH_TX_3_CONFIGURATIONS_DMACFG_TX_ADDRESS, + BBH_TX_4_CONFIGURATIONS_DMACFG_TX_ADDRESS, + BBH_TX_5_CONFIGURATIONS_DMACFG_TX_ADDRESS, + BBH_TX_6_CONFIGURATIONS_DMACFG_TX_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_DMACFG_TX_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_DMACFG_TX_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_SDMACFG_TX_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_SDMACFG_TX_ADDRESS, + BBH_TX_1_CONFIGURATIONS_SDMACFG_TX_ADDRESS, + BBH_TX_2_CONFIGURATIONS_SDMACFG_TX_ADDRESS, + BBH_TX_3_CONFIGURATIONS_SDMACFG_TX_ADDRESS, + BBH_TX_4_CONFIGURATIONS_SDMACFG_TX_ADDRESS, + BBH_TX_5_CONFIGURATIONS_SDMACFG_TX_ADDRESS, + BBH_TX_6_CONFIGURATIONS_SDMACFG_TX_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_SDMACFG_TX_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_SDMACFG_TX_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_RUNNERCFG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_RUNNERCFG_ADDRESS, + BBH_TX_1_CONFIGURATIONS_RUNNERCFG_ADDRESS, + BBH_TX_2_CONFIGURATIONS_RUNNERCFG_ADDRESS, + BBH_TX_3_CONFIGURATIONS_RUNNERCFG_ADDRESS, + BBH_TX_4_CONFIGURATIONS_RUNNERCFG_ADDRESS, + BBH_TX_5_CONFIGURATIONS_RUNNERCFG_ADDRESS, + BBH_TX_6_CONFIGURATIONS_RUNNERCFG_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_RUNNERCFG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_RUNNERCFG_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_MDUMODE_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_MDUMODE_ADDRESS, + BBH_TX_1_CONFIGURATIONS_MDUMODE_ADDRESS, + BBH_TX_2_CONFIGURATIONS_MDUMODE_ADDRESS, + BBH_TX_3_CONFIGURATIONS_MDUMODE_ADDRESS, + BBH_TX_4_CONFIGURATIONS_MDUMODE_ADDRESS, + BBH_TX_5_CONFIGURATIONS_MDUMODE_ADDRESS, + BBH_TX_6_CONFIGURATIONS_MDUMODE_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_MDUMODE_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_MDUMODE_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_DDRTMBASE_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_DDRTMBASE_ADDRESS, + BBH_TX_1_CONFIGURATIONS_DDRTMBASE_ADDRESS, + BBH_TX_2_CONFIGURATIONS_DDRTMBASE_ADDRESS, + BBH_TX_3_CONFIGURATIONS_DDRTMBASE_ADDRESS, + BBH_TX_4_CONFIGURATIONS_DDRTMBASE_ADDRESS, + BBH_TX_5_CONFIGURATIONS_DDRTMBASE_ADDRESS, + BBH_TX_6_CONFIGURATIONS_DDRTMBASE_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_DDRTMBASE_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_DDRTMBASE_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_DBGSEL_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_DBGSEL_ADDRESS, + BBH_TX_1_CONFIGURATIONS_DBGSEL_ADDRESS, + BBH_TX_2_CONFIGURATIONS_DBGSEL_ADDRESS, + BBH_TX_3_CONFIGURATIONS_DBGSEL_ADDRESS, + BBH_TX_4_CONFIGURATIONS_DBGSEL_ADDRESS, + BBH_TX_5_CONFIGURATIONS_DBGSEL_ADDRESS, + BBH_TX_6_CONFIGURATIONS_DBGSEL_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_DBGSEL_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_DBGSEL_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_TXRSTCMD_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_TXRSTCMD_ADDRESS, + BBH_TX_1_CONFIGURATIONS_TXRSTCMD_ADDRESS, + BBH_TX_2_CONFIGURATIONS_TXRSTCMD_ADDRESS, + BBH_TX_3_CONFIGURATIONS_TXRSTCMD_ADDRESS, + BBH_TX_4_CONFIGURATIONS_TXRSTCMD_ADDRESS, + BBH_TX_5_CONFIGURATIONS_TXRSTCMD_ADDRESS, + BBH_TX_6_CONFIGURATIONS_TXRSTCMD_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_TXRSTCMD_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_TXRSTCMD_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_EMAC1588_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_EMAC1588_ADDRESS, + BBH_TX_1_CONFIGURATIONS_EMAC1588_ADDRESS, + BBH_TX_2_CONFIGURATIONS_EMAC1588_ADDRESS, + BBH_TX_3_CONFIGURATIONS_EMAC1588_ADDRESS, + BBH_TX_4_CONFIGURATIONS_EMAC1588_ADDRESS, + BBH_TX_5_CONFIGURATIONS_EMAC1588_ADDRESS, + BBH_TX_6_CONFIGURATIONS_EMAC1588_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_EMAC1588_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_EMAC1588_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_SBPMCFG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_SBPMCFG_ADDRESS, + BBH_TX_1_CONFIGURATIONS_SBPMCFG_ADDRESS, + BBH_TX_2_CONFIGURATIONS_SBPMCFG_ADDRESS, + BBH_TX_3_CONFIGURATIONS_SBPMCFG_ADDRESS, + BBH_TX_4_CONFIGURATIONS_SBPMCFG_ADDRESS, + BBH_TX_5_CONFIGURATIONS_SBPMCFG_ADDRESS, + BBH_TX_6_CONFIGURATIONS_SBPMCFG_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_SBPMCFG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_SBPMCFG_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_PDWKUPH0_7_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_PDWKUPH0_7_ADDRESS, + BBH_TX_1_CONFIGURATIONS_PDWKUPH0_7_ADDRESS, + BBH_TX_2_CONFIGURATIONS_PDWKUPH0_7_ADDRESS, + BBH_TX_3_CONFIGURATIONS_PDWKUPH0_7_ADDRESS, + BBH_TX_4_CONFIGURATIONS_PDWKUPH0_7_ADDRESS, + BBH_TX_5_CONFIGURATIONS_PDWKUPH0_7_ADDRESS, + BBH_TX_6_CONFIGURATIONS_PDWKUPH0_7_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_PDWKUPH0_7_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_PDWKUPH0_7_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_PDWKUPH8_31_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_PDWKUPH8_31_ADDRESS, + BBH_TX_1_CONFIGURATIONS_PDWKUPH8_31_ADDRESS, + BBH_TX_2_CONFIGURATIONS_PDWKUPH8_31_ADDRESS, + BBH_TX_3_CONFIGURATIONS_PDWKUPH8_31_ADDRESS, + BBH_TX_4_CONFIGURATIONS_PDWKUPH8_31_ADDRESS, + BBH_TX_5_CONFIGURATIONS_PDWKUPH8_31_ADDRESS, + BBH_TX_6_CONFIGURATIONS_PDWKUPH8_31_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_PDWKUPH8_31_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_PDWKUPH8_31_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_PDEMPTY_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_PDEMPTY_ADDRESS, + BBH_TX_1_CONFIGURATIONS_PDEMPTY_ADDRESS, + BBH_TX_2_CONFIGURATIONS_PDEMPTY_ADDRESS, + BBH_TX_3_CONFIGURATIONS_PDEMPTY_ADDRESS, + BBH_TX_4_CONFIGURATIONS_PDEMPTY_ADDRESS, + BBH_TX_5_CONFIGURATIONS_PDEMPTY_ADDRESS, + BBH_TX_6_CONFIGURATIONS_PDEMPTY_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_PDEMPTY_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_PDEMPTY_ARRAY); + +uint32_t BBH_TX_CONFIGURATIONS_ETHTT_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONFIGURATIONS_ETHTT_ADDRESS, + BBH_TX_1_CONFIGURATIONS_ETHTT_ADDRESS, + BBH_TX_2_CONFIGURATIONS_ETHTT_ADDRESS, + BBH_TX_3_CONFIGURATIONS_ETHTT_ADDRESS, + BBH_TX_4_CONFIGURATIONS_ETHTT_ADDRESS, + BBH_TX_5_CONFIGURATIONS_ETHTT_ADDRESS, + BBH_TX_6_CONFIGURATIONS_ETHTT_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONFIGURATIONS_ETHTT_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONFIGURATIONS_ETHTT_ARRAY); + +uint32_t BBH_TX_DEBUG_SRAMPD_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_SRAMPD_ADDRESS, + BBH_TX_1_DEBUG_SRAMPD_ADDRESS, + BBH_TX_2_DEBUG_SRAMPD_ADDRESS, + BBH_TX_3_DEBUG_SRAMPD_ADDRESS, + BBH_TX_4_DEBUG_SRAMPD_ADDRESS, + BBH_TX_5_DEBUG_SRAMPD_ADDRESS, + BBH_TX_6_DEBUG_SRAMPD_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_SRAMPD_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_SRAMPD_ARRAY); + +uint32_t BBH_TX_DEBUG_DDRPD_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_DDRPD_ADDRESS, + BBH_TX_1_DEBUG_DDRPD_ADDRESS, + BBH_TX_2_DEBUG_DDRPD_ADDRESS, + BBH_TX_3_DEBUG_DDRPD_ADDRESS, + BBH_TX_4_DEBUG_DDRPD_ADDRESS, + BBH_TX_5_DEBUG_DDRPD_ADDRESS, + BBH_TX_6_DEBUG_DDRPD_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_DDRPD_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_DDRPD_ARRAY); + +uint32_t BBH_TX_DEBUG_PDDROP_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_PDDROP_ADDRESS, + BBH_TX_1_DEBUG_PDDROP_ADDRESS, + BBH_TX_2_DEBUG_PDDROP_ADDRESS, + BBH_TX_3_DEBUG_PDDROP_ADDRESS, + BBH_TX_4_DEBUG_PDDROP_ADDRESS, + BBH_TX_5_DEBUG_PDDROP_ADDRESS, + BBH_TX_6_DEBUG_PDDROP_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_PDDROP_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_PDDROP_ARRAY); + +uint32_t BBH_TX_DEBUG_PDEQ0_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_PDEQ0_ADDRESS, + BBH_TX_1_DEBUG_PDEQ0_ADDRESS, + BBH_TX_2_DEBUG_PDEQ0_ADDRESS, + BBH_TX_3_DEBUG_PDEQ0_ADDRESS, + BBH_TX_4_DEBUG_PDEQ0_ADDRESS, + BBH_TX_5_DEBUG_PDEQ0_ADDRESS, + BBH_TX_6_DEBUG_PDEQ0_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_PDEQ0_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_PDEQ0_ARRAY); + +uint32_t BBH_TX_DEBUG_GETNEXTNULL_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_GETNEXTNULL_ADDRESS, + BBH_TX_1_DEBUG_GETNEXTNULL_ADDRESS, + BBH_TX_2_DEBUG_GETNEXTNULL_ADDRESS, + BBH_TX_3_DEBUG_GETNEXTNULL_ADDRESS, + BBH_TX_4_DEBUG_GETNEXTNULL_ADDRESS, + BBH_TX_5_DEBUG_GETNEXTNULL_ADDRESS, + BBH_TX_6_DEBUG_GETNEXTNULL_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_GETNEXTNULL_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_GETNEXTNULL_ARRAY); + +uint32_t BBH_TX_DEBUG_PDFULLLSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_PDFULLLSB_ADDRESS, + BBH_TX_1_DEBUG_PDFULLLSB_ADDRESS, + BBH_TX_2_DEBUG_PDFULLLSB_ADDRESS, + BBH_TX_3_DEBUG_PDFULLLSB_ADDRESS, + BBH_TX_4_DEBUG_PDFULLLSB_ADDRESS, + BBH_TX_5_DEBUG_PDFULLLSB_ADDRESS, + BBH_TX_6_DEBUG_PDFULLLSB_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_PDFULLLSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_PDFULLLSB_ARRAY); + +uint32_t BBH_TX_DEBUG_PDFULLMSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_PDFULLMSB_ADDRESS, + BBH_TX_1_DEBUG_PDFULLMSB_ADDRESS, + BBH_TX_2_DEBUG_PDFULLMSB_ADDRESS, + BBH_TX_3_DEBUG_PDFULLMSB_ADDRESS, + BBH_TX_4_DEBUG_PDFULLMSB_ADDRESS, + BBH_TX_5_DEBUG_PDFULLMSB_ADDRESS, + BBH_TX_6_DEBUG_PDFULLMSB_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_PDFULLMSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_PDFULLMSB_ARRAY); + +uint32_t BBH_TX_DEBUG_PDEMPTYLSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_PDEMPTYLSB_ADDRESS, + BBH_TX_1_DEBUG_PDEMPTYLSB_ADDRESS, + BBH_TX_2_DEBUG_PDEMPTYLSB_ADDRESS, + BBH_TX_3_DEBUG_PDEMPTYLSB_ADDRESS, + BBH_TX_4_DEBUG_PDEMPTYLSB_ADDRESS, + BBH_TX_5_DEBUG_PDEMPTYLSB_ADDRESS, + BBH_TX_6_DEBUG_PDEMPTYLSB_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_PDEMPTYLSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_PDEMPTYLSB_ARRAY); + +uint32_t BBH_TX_DEBUG_PDEMPTYMSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_PDEMPTYMSB_ADDRESS, + BBH_TX_1_DEBUG_PDEMPTYMSB_ADDRESS, + BBH_TX_2_DEBUG_PDEMPTYMSB_ADDRESS, + BBH_TX_3_DEBUG_PDEMPTYMSB_ADDRESS, + BBH_TX_4_DEBUG_PDEMPTYMSB_ADDRESS, + BBH_TX_5_DEBUG_PDEMPTYMSB_ADDRESS, + BBH_TX_6_DEBUG_PDEMPTYMSB_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_PDEMPTYMSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_PDEMPTYMSB_ARRAY); + +uint32_t BBH_TX_DEBUG_PDVALID_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_PDVALID_ADDRESS, + BBH_TX_1_DEBUG_PDVALID_ADDRESS, + BBH_TX_2_DEBUG_PDVALID_ADDRESS, + BBH_TX_3_DEBUG_PDVALID_ADDRESS, + BBH_TX_4_DEBUG_PDVALID_ADDRESS, + BBH_TX_5_DEBUG_PDVALID_ADDRESS, + BBH_TX_6_DEBUG_PDVALID_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_PDVALID_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_PDVALID_ARRAY); + +uint32_t BBH_TX_DEBUG_BPMFIFO_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_BPMFIFO_ADDRESS, + BBH_TX_1_DEBUG_BPMFIFO_ADDRESS, + BBH_TX_2_DEBUG_BPMFIFO_ADDRESS, + BBH_TX_3_DEBUG_BPMFIFO_ADDRESS, + BBH_TX_4_DEBUG_BPMFIFO_ADDRESS, + BBH_TX_5_DEBUG_BPMFIFO_ADDRESS, + BBH_TX_6_DEBUG_BPMFIFO_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_BPMFIFO_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_BPMFIFO_ARRAY); + +uint32_t BBH_TX_DEBUG_SBPMFIFO_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_SBPMFIFO_ADDRESS, + BBH_TX_1_DEBUG_SBPMFIFO_ADDRESS, + BBH_TX_2_DEBUG_SBPMFIFO_ADDRESS, + BBH_TX_3_DEBUG_SBPMFIFO_ADDRESS, + BBH_TX_4_DEBUG_SBPMFIFO_ADDRESS, + BBH_TX_5_DEBUG_SBPMFIFO_ADDRESS, + BBH_TX_6_DEBUG_SBPMFIFO_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_SBPMFIFO_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_SBPMFIFO_ARRAY); + +uint32_t BBH_TX_DEBUG_FIRSTBNFIFO_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_FIRSTBNFIFO_ADDRESS, + BBH_TX_1_DEBUG_FIRSTBNFIFO_ADDRESS, + BBH_TX_2_DEBUG_FIRSTBNFIFO_ADDRESS, + BBH_TX_3_DEBUG_FIRSTBNFIFO_ADDRESS, + BBH_TX_4_DEBUG_FIRSTBNFIFO_ADDRESS, + BBH_TX_5_DEBUG_FIRSTBNFIFO_ADDRESS, + BBH_TX_6_DEBUG_FIRSTBNFIFO_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_FIRSTBNFIFO_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_FIRSTBNFIFO_ARRAY); + +uint32_t BBH_TX_DEBUG_GETNEXTFIFO_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_GETNEXTFIFO_ADDRESS, + BBH_TX_1_DEBUG_GETNEXTFIFO_ADDRESS, + BBH_TX_2_DEBUG_GETNEXTFIFO_ADDRESS, + BBH_TX_3_DEBUG_GETNEXTFIFO_ADDRESS, + BBH_TX_4_DEBUG_GETNEXTFIFO_ADDRESS, + BBH_TX_5_DEBUG_GETNEXTFIFO_ADDRESS, + BBH_TX_6_DEBUG_GETNEXTFIFO_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_GETNEXTFIFO_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_GETNEXTFIFO_ARRAY); + +uint32_t BBH_TX_DEBUG_DBGOUTREG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_DBGOUTREG_ADDRESS, + BBH_TX_1_DEBUG_DBGOUTREG_ADDRESS, + BBH_TX_2_DEBUG_DBGOUTREG_ADDRESS, + BBH_TX_3_DEBUG_DBGOUTREG_ADDRESS, + BBH_TX_4_DEBUG_DBGOUTREG_ADDRESS, + BBH_TX_5_DEBUG_DBGOUTREG_ADDRESS, + BBH_TX_6_DEBUG_DBGOUTREG_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_DBGOUTREG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_DBGOUTREG_ARRAY); + +uint32_t BBH_TX_DEBUG_EPNPDVALID_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_DEBUG_EPNPDVALID_ADDRESS, + BBH_TX_1_DEBUG_EPNPDVALID_ADDRESS, + BBH_TX_2_DEBUG_EPNPDVALID_ADDRESS, + BBH_TX_3_DEBUG_EPNPDVALID_ADDRESS, + BBH_TX_4_DEBUG_EPNPDVALID_ADDRESS, + BBH_TX_5_DEBUG_EPNPDVALID_ADDRESS, + BBH_TX_6_DEBUG_EPNPDVALID_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_DEBUG_EPNPDVALID_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_DEBUG_EPNPDVALID_ARRAY); + +uint32_t BBH_TX_PD_FIFO_PDFIFO_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_1_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_2_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_3_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_4_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_5_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_6_PD_FIFO_PDFIFO_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_PD_FIFO_PDFIFO_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_PD_FIFO_PDFIFO_ARRAY); + +uint32_t BBH_TX_CONTEXT_SEGCNTXT_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_CONTEXT_SEGCNTXT_ADDRESS, + BBH_TX_1_CONTEXT_SEGCNTXT_ADDRESS, + BBH_TX_2_CONTEXT_SEGCNTXT_ADDRESS, + BBH_TX_3_CONTEXT_SEGCNTXT_ADDRESS, + BBH_TX_4_CONTEXT_SEGCNTXT_ADDRESS, + BBH_TX_5_CONTEXT_SEGCNTXT_ADDRESS, + BBH_TX_6_CONTEXT_SEGCNTXT_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_CONTEXT_SEGCNTXT_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_CONTEXT_SEGCNTXT_ARRAY); + +uint32_t BBH_TX_EPON_PD_FIFO_PDFIFO_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_1_EPON_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_2_EPON_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_3_EPON_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_4_EPON_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_5_EPON_PD_FIFO_PDFIFO_ADDRESS, + BBH_TX_6_EPON_PD_FIFO_PDFIFO_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_PD_FIFO_PDFIFO_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_PD_FIFO_PDFIFO_ARRAY); + +uint32_t BBH_TX_EPON_CFG_TASKLSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_TASKLSB_ADDRESS, + BBH_TX_1_EPON_CFG_TASKLSB_ADDRESS, + BBH_TX_2_EPON_CFG_TASKLSB_ADDRESS, + BBH_TX_3_EPON_CFG_TASKLSB_ADDRESS, + BBH_TX_4_EPON_CFG_TASKLSB_ADDRESS, + BBH_TX_5_EPON_CFG_TASKLSB_ADDRESS, + BBH_TX_6_EPON_CFG_TASKLSB_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_TASKLSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_TASKLSB_ARRAY); + +uint32_t BBH_TX_EPON_CFG_TASKMSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_TASKMSB_ADDRESS, + BBH_TX_1_EPON_CFG_TASKMSB_ADDRESS, + BBH_TX_2_EPON_CFG_TASKMSB_ADDRESS, + BBH_TX_3_EPON_CFG_TASKMSB_ADDRESS, + BBH_TX_4_EPON_CFG_TASKMSB_ADDRESS, + BBH_TX_5_EPON_CFG_TASKMSB_ADDRESS, + BBH_TX_6_EPON_CFG_TASKMSB_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_TASKMSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_TASKMSB_ARRAY); + +uint32_t BBH_TX_EPON_CFG_TASK8_39_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_TASK8_39_ADDRESS, + BBH_TX_1_EPON_CFG_TASK8_39_ADDRESS, + BBH_TX_2_EPON_CFG_TASK8_39_ADDRESS, + BBH_TX_3_EPON_CFG_TASK8_39_ADDRESS, + BBH_TX_4_EPON_CFG_TASK8_39_ADDRESS, + BBH_TX_5_EPON_CFG_TASK8_39_ADDRESS, + BBH_TX_6_EPON_CFG_TASK8_39_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_TASK8_39_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_TASK8_39_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PDSIZE0_3_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PDSIZE0_3_ADDRESS, + BBH_TX_1_EPON_CFG_PDSIZE0_3_ADDRESS, + BBH_TX_2_EPON_CFG_PDSIZE0_3_ADDRESS, + BBH_TX_3_EPON_CFG_PDSIZE0_3_ADDRESS, + BBH_TX_4_EPON_CFG_PDSIZE0_3_ADDRESS, + BBH_TX_5_EPON_CFG_PDSIZE0_3_ADDRESS, + BBH_TX_6_EPON_CFG_PDSIZE0_3_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PDSIZE0_3_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PDSIZE0_3_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PDSIZE4_7_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PDSIZE4_7_ADDRESS, + BBH_TX_1_EPON_CFG_PDSIZE4_7_ADDRESS, + BBH_TX_2_EPON_CFG_PDSIZE4_7_ADDRESS, + BBH_TX_3_EPON_CFG_PDSIZE4_7_ADDRESS, + BBH_TX_4_EPON_CFG_PDSIZE4_7_ADDRESS, + BBH_TX_5_EPON_CFG_PDSIZE4_7_ADDRESS, + BBH_TX_6_EPON_CFG_PDSIZE4_7_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PDSIZE4_7_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PDSIZE4_7_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PDSIZE8_31_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PDSIZE8_31_ADDRESS, + BBH_TX_1_EPON_CFG_PDSIZE8_31_ADDRESS, + BBH_TX_2_EPON_CFG_PDSIZE8_31_ADDRESS, + BBH_TX_3_EPON_CFG_PDSIZE8_31_ADDRESS, + BBH_TX_4_EPON_CFG_PDSIZE8_31_ADDRESS, + BBH_TX_5_EPON_CFG_PDSIZE8_31_ADDRESS, + BBH_TX_6_EPON_CFG_PDSIZE8_31_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PDSIZE8_31_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PDSIZE8_31_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PDBASE0_3_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PDBASE0_3_ADDRESS, + BBH_TX_1_EPON_CFG_PDBASE0_3_ADDRESS, + BBH_TX_2_EPON_CFG_PDBASE0_3_ADDRESS, + BBH_TX_3_EPON_CFG_PDBASE0_3_ADDRESS, + BBH_TX_4_EPON_CFG_PDBASE0_3_ADDRESS, + BBH_TX_5_EPON_CFG_PDBASE0_3_ADDRESS, + BBH_TX_6_EPON_CFG_PDBASE0_3_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PDBASE0_3_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PDBASE0_3_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PDBASE4_7_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PDBASE4_7_ADDRESS, + BBH_TX_1_EPON_CFG_PDBASE4_7_ADDRESS, + BBH_TX_2_EPON_CFG_PDBASE4_7_ADDRESS, + BBH_TX_3_EPON_CFG_PDBASE4_7_ADDRESS, + BBH_TX_4_EPON_CFG_PDBASE4_7_ADDRESS, + BBH_TX_5_EPON_CFG_PDBASE4_7_ADDRESS, + BBH_TX_6_EPON_CFG_PDBASE4_7_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PDBASE4_7_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PDBASE4_7_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PDBASE8_39_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PDBASE8_39_ADDRESS, + BBH_TX_1_EPON_CFG_PDBASE8_39_ADDRESS, + BBH_TX_2_EPON_CFG_PDBASE8_39_ADDRESS, + BBH_TX_3_EPON_CFG_PDBASE8_39_ADDRESS, + BBH_TX_4_EPON_CFG_PDBASE8_39_ADDRESS, + BBH_TX_5_EPON_CFG_PDBASE8_39_ADDRESS, + BBH_TX_6_EPON_CFG_PDBASE8_39_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PDBASE8_39_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PDBASE8_39_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PD_BYTE_TH_EN_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_1_EPON_CFG_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_2_EPON_CFG_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_3_EPON_CFG_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_4_EPON_CFG_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_5_EPON_CFG_PD_BYTE_TH_EN_ADDRESS, + BBH_TX_6_EPON_CFG_PD_BYTE_TH_EN_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PD_BYTE_TH_EN_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PD_BYTE_TH_EN_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PD_BYTE_TH_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PD_BYTE_TH_ADDRESS, + BBH_TX_1_EPON_CFG_PD_BYTE_TH_ADDRESS, + BBH_TX_2_EPON_CFG_PD_BYTE_TH_ADDRESS, + BBH_TX_3_EPON_CFG_PD_BYTE_TH_ADDRESS, + BBH_TX_4_EPON_CFG_PD_BYTE_TH_ADDRESS, + BBH_TX_5_EPON_CFG_PD_BYTE_TH_ADDRESS, + BBH_TX_6_EPON_CFG_PD_BYTE_TH_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PD_BYTE_TH_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PD_BYTE_TH_ARRAY); + +uint32_t BBH_TX_EPON_CFG_RUNNERCFG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_RUNNERCFG_ADDRESS, + BBH_TX_1_EPON_CFG_RUNNERCFG_ADDRESS, + BBH_TX_2_EPON_CFG_RUNNERCFG_ADDRESS, + BBH_TX_3_EPON_CFG_RUNNERCFG_ADDRESS, + BBH_TX_4_EPON_CFG_RUNNERCFG_ADDRESS, + BBH_TX_5_EPON_CFG_RUNNERCFG_ADDRESS, + BBH_TX_6_EPON_CFG_RUNNERCFG_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_RUNNERCFG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_RUNNERCFG_ARRAY); + +uint32_t BBH_TX_EPON_CFG_MDUMODE_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_MDUMODE_ADDRESS, + BBH_TX_1_EPON_CFG_MDUMODE_ADDRESS, + BBH_TX_2_EPON_CFG_MDUMODE_ADDRESS, + BBH_TX_3_EPON_CFG_MDUMODE_ADDRESS, + BBH_TX_4_EPON_CFG_MDUMODE_ADDRESS, + BBH_TX_5_EPON_CFG_MDUMODE_ADDRESS, + BBH_TX_6_EPON_CFG_MDUMODE_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_MDUMODE_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_MDUMODE_ARRAY); + +uint32_t BBH_TX_EPON_CFG_REQCFG_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_REQCFG_ADDRESS, + BBH_TX_1_EPON_CFG_REQCFG_ADDRESS, + BBH_TX_2_EPON_CFG_REQCFG_ADDRESS, + BBH_TX_3_EPON_CFG_REQCFG_ADDRESS, + BBH_TX_4_EPON_CFG_REQCFG_ADDRESS, + BBH_TX_5_EPON_CFG_REQCFG_ADDRESS, + BBH_TX_6_EPON_CFG_REQCFG_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_REQCFG_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_REQCFG_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PDWKUPH0_3_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PDWKUPH0_3_ADDRESS, + BBH_TX_1_EPON_CFG_PDWKUPH0_3_ADDRESS, + BBH_TX_2_EPON_CFG_PDWKUPH0_3_ADDRESS, + BBH_TX_3_EPON_CFG_PDWKUPH0_3_ADDRESS, + BBH_TX_4_EPON_CFG_PDWKUPH0_3_ADDRESS, + BBH_TX_5_EPON_CFG_PDWKUPH0_3_ADDRESS, + BBH_TX_6_EPON_CFG_PDWKUPH0_3_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PDWKUPH0_3_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PDWKUPH0_3_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PDWKUPH4_7_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PDWKUPH4_7_ADDRESS, + BBH_TX_1_EPON_CFG_PDWKUPH4_7_ADDRESS, + BBH_TX_2_EPON_CFG_PDWKUPH4_7_ADDRESS, + BBH_TX_3_EPON_CFG_PDWKUPH4_7_ADDRESS, + BBH_TX_4_EPON_CFG_PDWKUPH4_7_ADDRESS, + BBH_TX_5_EPON_CFG_PDWKUPH4_7_ADDRESS, + BBH_TX_6_EPON_CFG_PDWKUPH4_7_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PDWKUPH4_7_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PDWKUPH4_7_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PDWKUPH8_31_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PDWKUPH8_31_ADDRESS, + BBH_TX_1_EPON_CFG_PDWKUPH8_31_ADDRESS, + BBH_TX_2_EPON_CFG_PDWKUPH8_31_ADDRESS, + BBH_TX_3_EPON_CFG_PDWKUPH8_31_ADDRESS, + BBH_TX_4_EPON_CFG_PDWKUPH8_31_ADDRESS, + BBH_TX_5_EPON_CFG_PDWKUPH8_31_ADDRESS, + BBH_TX_6_EPON_CFG_PDWKUPH8_31_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PDWKUPH8_31_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PDWKUPH8_31_ARRAY); + +uint32_t BBH_TX_EPON_CFG_PDEMPTY_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_CFG_PDEMPTY_ADDRESS, + BBH_TX_1_EPON_CFG_PDEMPTY_ADDRESS, + BBH_TX_2_EPON_CFG_PDEMPTY_ADDRESS, + BBH_TX_3_EPON_CFG_PDEMPTY_ADDRESS, + BBH_TX_4_EPON_CFG_PDEMPTY_ADDRESS, + BBH_TX_5_EPON_CFG_PDEMPTY_ADDRESS, + BBH_TX_6_EPON_CFG_PDEMPTY_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_CFG_PDEMPTY_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_CFG_PDEMPTY_ARRAY); + +uint32_t BBH_TX_EPON_DBG_DDRPD_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_DBG_DDRPD_ADDRESS, + BBH_TX_1_EPON_DBG_DDRPD_ADDRESS, + BBH_TX_2_EPON_DBG_DDRPD_ADDRESS, + BBH_TX_3_EPON_DBG_DDRPD_ADDRESS, + BBH_TX_4_EPON_DBG_DDRPD_ADDRESS, + BBH_TX_5_EPON_DBG_DDRPD_ADDRESS, + BBH_TX_6_EPON_DBG_DDRPD_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_DBG_DDRPD_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_DBG_DDRPD_ARRAY); + +uint32_t BBH_TX_EPON_DBG_PDDROP_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_DBG_PDDROP_ADDRESS, + BBH_TX_1_EPON_DBG_PDDROP_ADDRESS, + BBH_TX_2_EPON_DBG_PDDROP_ADDRESS, + BBH_TX_3_EPON_DBG_PDDROP_ADDRESS, + BBH_TX_4_EPON_DBG_PDDROP_ADDRESS, + BBH_TX_5_EPON_DBG_PDDROP_ADDRESS, + BBH_TX_6_EPON_DBG_PDDROP_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_DBG_PDDROP_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_DBG_PDDROP_ARRAY); + +uint32_t BBH_TX_EPON_DBG_PDEQ0_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_DBG_PDEQ0_ADDRESS, + BBH_TX_1_EPON_DBG_PDEQ0_ADDRESS, + BBH_TX_2_EPON_DBG_PDEQ0_ADDRESS, + BBH_TX_3_EPON_DBG_PDEQ0_ADDRESS, + BBH_TX_4_EPON_DBG_PDEQ0_ADDRESS, + BBH_TX_5_EPON_DBG_PDEQ0_ADDRESS, + BBH_TX_6_EPON_DBG_PDEQ0_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_DBG_PDEQ0_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_DBG_PDEQ0_ARRAY); + +uint32_t BBH_TX_EPON_DBG_PDFULLLSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_DBG_PDFULLLSB_ADDRESS, + BBH_TX_1_EPON_DBG_PDFULLLSB_ADDRESS, + BBH_TX_2_EPON_DBG_PDFULLLSB_ADDRESS, + BBH_TX_3_EPON_DBG_PDFULLLSB_ADDRESS, + BBH_TX_4_EPON_DBG_PDFULLLSB_ADDRESS, + BBH_TX_5_EPON_DBG_PDFULLLSB_ADDRESS, + BBH_TX_6_EPON_DBG_PDFULLLSB_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_DBG_PDFULLLSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_DBG_PDFULLLSB_ARRAY); + +uint32_t BBH_TX_EPON_DBG_PDEMPTYLSB_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_DBG_PDEMPTYLSB_ADDRESS, + BBH_TX_1_EPON_DBG_PDEMPTYLSB_ADDRESS, + BBH_TX_2_EPON_DBG_PDEMPTYLSB_ADDRESS, + BBH_TX_3_EPON_DBG_PDEMPTYLSB_ADDRESS, + BBH_TX_4_EPON_DBG_PDEMPTYLSB_ADDRESS, + BBH_TX_5_EPON_DBG_PDEMPTYLSB_ADDRESS, + BBH_TX_6_EPON_DBG_PDEMPTYLSB_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_DBG_PDEMPTYLSB_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_DBG_PDEMPTYLSB_ARRAY); + +uint32_t BBH_TX_EPON_DBG_PDVALID_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_DBG_PDVALID_ADDRESS, + BBH_TX_1_EPON_DBG_PDVALID_ADDRESS, + BBH_TX_2_EPON_DBG_PDVALID_ADDRESS, + BBH_TX_3_EPON_DBG_PDVALID_ADDRESS, + BBH_TX_4_EPON_DBG_PDVALID_ADDRESS, + BBH_TX_5_EPON_DBG_PDVALID_ADDRESS, + BBH_TX_6_EPON_DBG_PDVALID_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_DBG_PDVALID_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_DBG_PDVALID_ARRAY); + +uint32_t BBH_TX_EPON_DBG_LENERR_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_DBG_LENERR_ADDRESS, + BBH_TX_1_EPON_DBG_LENERR_ADDRESS, + BBH_TX_2_EPON_DBG_LENERR_ADDRESS, + BBH_TX_3_EPON_DBG_LENERR_ADDRESS, + BBH_TX_4_EPON_DBG_LENERR_ADDRESS, + BBH_TX_5_EPON_DBG_LENERR_ADDRESS, + BBH_TX_6_EPON_DBG_LENERR_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_DBG_LENERR_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_DBG_LENERR_ARRAY); + +uint32_t BBH_TX_EPON_DBG_FLUSHPKTS_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_DBG_FLUSHPKTS_ADDRESS, + BBH_TX_1_EPON_DBG_FLUSHPKTS_ADDRESS, + BBH_TX_2_EPON_DBG_FLUSHPKTS_ADDRESS, + BBH_TX_3_EPON_DBG_FLUSHPKTS_ADDRESS, + BBH_TX_4_EPON_DBG_FLUSHPKTS_ADDRESS, + BBH_TX_5_EPON_DBG_FLUSHPKTS_ADDRESS, + BBH_TX_6_EPON_DBG_FLUSHPKTS_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_DBG_FLUSHPKTS_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_DBG_FLUSHPKTS_ARRAY); + +uint32_t BBH_TX_EPON_DBG_REQFIFOADD_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_DBG_REQFIFOADD_ADDRESS, + BBH_TX_1_EPON_DBG_REQFIFOADD_ADDRESS, + BBH_TX_2_EPON_DBG_REQFIFOADD_ADDRESS, + BBH_TX_3_EPON_DBG_REQFIFOADD_ADDRESS, + BBH_TX_4_EPON_DBG_REQFIFOADD_ADDRESS, + BBH_TX_5_EPON_DBG_REQFIFOADD_ADDRESS, + BBH_TX_6_EPON_DBG_REQFIFOADD_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_DBG_REQFIFOADD_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_DBG_REQFIFOADD_ARRAY); + +uint32_t BBH_TX_EPON_DBG_REQFIFODATA_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_DBG_REQFIFODATA_ADDRESS, + BBH_TX_1_EPON_DBG_REQFIFODATA_ADDRESS, + BBH_TX_2_EPON_DBG_REQFIFODATA_ADDRESS, + BBH_TX_3_EPON_DBG_REQFIFODATA_ADDRESS, + BBH_TX_4_EPON_DBG_REQFIFODATA_ADDRESS, + BBH_TX_5_EPON_DBG_REQFIFODATA_ADDRESS, + BBH_TX_6_EPON_DBG_REQFIFODATA_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_DBG_REQFIFODATA_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_DBG_REQFIFODATA_ARRAY); + +uint32_t BBH_TX_EPON_STS_FIFO_PDFIFO_ARRAY [ NUM_OF_BBH_BLOCKS ] = +{ + BBH_TX_0_EPON_STS_FIFO_PDFIFO_ADDRESS, + BBH_TX_1_EPON_STS_FIFO_PDFIFO_ADDRESS, + BBH_TX_2_EPON_STS_FIFO_PDFIFO_ADDRESS, + BBH_TX_3_EPON_STS_FIFO_PDFIFO_ADDRESS, + BBH_TX_4_EPON_STS_FIFO_PDFIFO_ADDRESS, + BBH_TX_5_EPON_STS_FIFO_PDFIFO_ADDRESS, + BBH_TX_6_EPON_STS_FIFO_PDFIFO_ADDRESS, +#ifdef __OREN__ + BBH_TX_7_EPON_STS_FIFO_PDFIFO_ADDRESS, +#endif +} ; + +EXPORT_SYMBOL(BBH_TX_EPON_STS_FIFO_PDFIFO_ARRAY); diff --git a/arch/arm/mach-bcmbca/rdp/rdp_bpm.h b/arch/arm/mach-bcmbca/rdp/rdp_bpm.h new file mode 100755 index 0000000000..f395c17215 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_bpm.h @@ -0,0 +1,3328 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef __BPM_H_INCLUDED +#define __BPM_H_INCLUDED + +/* File automatically generated by Reggae at 15/08/2013 10:54:33 */ + +#include "access_macros.h" +#include "packing.h" +#include "rdp_map.h" + +/*****************************************************************************************/ +/* BPM module is resposible for DDR buffers pool managment. Total there are 15K buffers */ +/* (BNs). BPM module has an interface with Broad Bus handlers of Ethernet MACs (0-4), GP */ +/* ON, Runner A, Runner B, MIPS-C and MIPS-D. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Blocks offsets */ +/*****************************************************************************************/ +/*****************************************************************************************/ +/* Functions offsets and addresses */ +/*****************************************************************************************/ +#define BPM_MODULE_REGS_OFFSET ( 0x00000000 ) +#define BPM_MODULE_REGS_ADDRESS ( BPM_MODULE_OFFSET + BPM_MODULE_REGS_OFFSET ) + +/* 'd' is module index */ +/* 'i' is block index */ +/* 'j' is function index */ +/* 'e' is function entry */ +/* 'k' is register index */ + +/*****************************************************************************************/ +/* Request_pointer */ +/* CPU request a free pointer from BPM by WRITE tp ptr_req (data pattern is not importan */ +/* t) BPM in its turn will de assert bit req indicating that a valid pointer is ready f */ +/* or cpu usage (see ptr bits description). This register returns to default values by */ +/* soft reset. */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_REQ_PTR_RDY_NOT_READY_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_RDY_NOT_READY_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_RDY_READY_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_REQ_PTR_BSY_NOT_BUSY_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_BSY_NOT_BUSY_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_BSY_BUSY_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_REQ_PTR_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_SP_ADDR_SOURCE_ADRESS_OF_PORT_FOR_BN_ALLOC_VALUE ( 0x6 ) +#define BPM_MODULE_REGS_REQ_PTR_SP_ADDR_SOURCE_ADRESS_OF_PORT_FOR_BN_ALLOC_VALUE_RESET_VALUE ( 0x6 ) +#define BPM_MODULE_REGS_REQ_PTR_NACK_STATUS_CPU_IN_ACK_STATE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_NACK_STATUS_CPU_IN_ACK_STATE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_NACK_STATUS_CPU_IN_NACK_STATE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_REQ_PTR_BN_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_BN_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_BN_VALID_NOT_VALID_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_BN_VALID_NOT_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_REQ_PTR_BN_VALID_VALID_VALUE ( 0x1 ) + + +#define BPM_MODULE_REGS_REQ_PTR_OFFSET ( 0x00000000 ) + +#define BPM_MODULE_REGS_REQ_PTR_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_REQ_PTR_OFFSET ) +#define BPM_MODULE_REGS_REQ_PTR_READ( r ) READ_32( ( BPM_MODULE_REGS_REQ_PTR_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_REQ_PTR_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_REQ_PTR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Ready_bit_for_Alloc_request */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Busy_bit_for_Alloc_request */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* nack_status */ + uint32_t nack_status : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* source_port_address */ + uint32_t sp_addr : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bufer_number */ + uint32_t bn : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bufer_number_valid */ + uint32_t bn_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_REQ_PTR ; +#else +typedef struct + /* bufer_number_valid */ +{ uint32_t bn_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + /* bufer_number_valid */ + + uint32_t bn : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + /* bufer_number */ + + uint32_t sp_addr : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + /* source_port_address */ + + uint32_t nack_status : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + /* nack_status */ + + uint32_t rsv : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + /* rsv */ + + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + /* Busy_bit_for_Alloc_request */ + + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + /* Ready_bit_for_Alloc_request */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_REQ_PTR ; +#endif + +/*****************************************************************************************/ +/* Free_pointer */ +/* Free buffer pointer from cpu to bpm. When cpu requests bmp to release an occupied poi */ +/* nter, it WRITes ro free_ptrt reg. Once the buffer is free, bpm will de assert the REA */ +/* DY bi and de-assert BUSY bit, indicating completion of the free process. This regis */ +/* ter returns to default values by soft reset. */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_FREE_PTR_RDY_VALUE_ON_POWER_OR_REQUEST__IN_PROGRESS_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_RDY_VALUE_ON_POWER_OR_REQUEST__IN_PROGRESS_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_RDY_REQUEST_NOT_IN_PROGRESS_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_FREE_PTR_BSY_REQUEST_NOT__IN_PROGRESS_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_BSY_REQUEST_NOT__IN_PROGRESS_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_BSY_REQUEST__IN_PROGRESS_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_FREE_PTR_RSV2_RESERVED_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_RSV2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_OWN_SA_RESERVED_VALUE ( 0x6 ) +#define BPM_MODULE_REGS_FREE_PTR_OWN_SA_RESERVED_VALUE_RESET_VALUE ( 0x6 ) +#define BPM_MODULE_REGS_FREE_PTR_RSV1_RESERVED_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_RSV1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_BN_POINTER_ADDRESS_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_BN_POINTER_ADDRESS_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_FREE_PTR_OFFSET ( 0x00000004 ) + +#define BPM_MODULE_REGS_FREE_PTR_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_FREE_PTR_OFFSET ) +#define BPM_MODULE_REGS_FREE_PTR_READ( r ) READ_32( ( BPM_MODULE_REGS_FREE_PTR_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_FREE_PTR_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_FREE_PTR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* ready */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Owner_Source_Address_of_BN */ + uint32_t own_sa : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Bufer_Number */ + uint32_t bn : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_FREE_PTR ; +#else +typedef struct +{ uint32_t bn : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Bufer_Number */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t own_sa : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Owner_Source_Address_of_BN */ + uint32_t rsv2 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ready */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_FREE_PTR ; +#endif + +/*****************************************************************************************/ +/* Multi_Cast_Counter_set_for_pointer */ +/* MCNT request pointer from cpu to bpm. When cpu requests bmp to set MCNT an occupied p */ +/* ointer, it will set bit req. Once the MCNT of buffer is set, bpm will de assert the */ +/* bit request, indicating completion of the MCNT setting process. This register retu */ +/* rns to default values by soft reset. */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_MCNT_PTR_RDY_REQUEST_IN_PROGRESS_OR_POWER_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_RDY_REQUEST_IN_PROGRESS_OR_POWER_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_RDY_REQUEST_IS_NOT_IN_PROGRESS_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_MCNT_PTR_BSY_REQUEST_IS_NOT_PROGRESS_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_BSY_REQUEST_IS_NOT_PROGRESS_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_BSY_REQUEST_IN_PROGRESS_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_MCNT_PTR_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_MCNT_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_MCNT_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_RSV1_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_BN_RDY_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_BN_RDY_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_MCNT_PTR_OFFSET ( 0x00000008 ) + +#define BPM_MODULE_REGS_MCNT_PTR_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_MCNT_PTR_OFFSET ) +#define BPM_MODULE_REGS_MCNT_PTR_READ( r ) READ_32( ( BPM_MODULE_REGS_MCNT_PTR_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_MCNT_PTR_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_MCNT_PTR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* ready */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MCNT */ + uint32_t mcnt : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Bufer_Number */ + uint32_t bn : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_MCNT_PTR ; +#else +typedef struct +{ uint32_t bn : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Bufer_Number */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t mcnt : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MCNT */ + uint32_t rsv2 : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ready */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_MCNT_PTR ; +#endif + +/*****************************************************************************************/ +/* Init_of_BPM_Core_RAMs */ +/* Init RAMs request. When cpu requests bmp to init RAMSr, it will WRITE to ram_init reg */ +/* ister (pattern is not important). Once the RAMs are initilizied, bpm will de assert t */ +/* he busy bit (BSY) and will assrt ready bit (RDY), indicating completion of the init R */ +/* AM process. This register returns to default values by TM reset. */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_RAM_INIT_RDY_NON_BUSY_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_RAM_INIT_RDY_NON_BUSY_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_RAM_INIT_RDY_BUSY_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_RAM_INIT_BSY_NOT_READY_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_RAM_INIT_BSY_NOT_READY_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_RAM_INIT_BSY_READY_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_RAM_INIT_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_RAM_INIT_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_RAM_INIT_OFFSET ( 0x0000000C ) + +#define BPM_MODULE_REGS_RAM_INIT_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_RAM_INIT_OFFSET ) +#define BPM_MODULE_REGS_RAM_INIT_READ( r ) READ_32( ( BPM_MODULE_REGS_RAM_INIT_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_RAM_INIT_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_RAM_INIT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* ready */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_RAM_INIT ; +#else +typedef struct +{ uint32_t rsv : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ready */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_RAM_INIT ; +#endif + +/*****************************************************************************************/ +/* free_pointer_interrupt */ +/* Free pointer interrupt indication and pointer number will hold untill read clear by S */ +/* W. This happen if there is a pointer that is already in bpm hand but some user want */ +/* to free it again */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_FREE_PTR_INT_RSV_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_INT_RSV_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_INT_INTSP_SOURCE_PORT_IRQ_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_INT_INTSP_SOURCE_PORT_IRQ_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_INT_PTRNUM_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_FREE_PTR_INT_PTRNUM_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_FREE_PTR_INT_OFFSET ( 0x00000010 ) + +#define BPM_MODULE_REGS_FREE_PTR_INT_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_FREE_PTR_INT_OFFSET ) +#define BPM_MODULE_REGS_FREE_PTR_INT_READ( r ) READ_32( ( BPM_MODULE_REGS_FREE_PTR_INT_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_FREE_PTR_INT_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_FREE_PTR_INT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Source_Port_IRQ */ + uint32_t intsp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pointer_number */ + uint32_t ptrnum : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_FREE_PTR_INT ; +#else +typedef struct +{ uint32_t ptrnum : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pointer_number */ + uint32_t intsp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Source_Port_IRQ */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_FREE_PTR_INT ; +#endif + +/*****************************************************************************************/ +/* Read_ram_address */ +/* If CPU wants to read data from one of RAMs, it has to indicate in the register the RA */ +/* M number out of 6 RAMs and the address. Issue a req and when data is ready the bit wi */ +/* ll go down. Address field in the selected RAM. Each RAM includes 80 rows. In order */ +/* to re-create BN from the RAM data there is an convention procedure: (1) 5-lowest bit */ +/* s in BN says where BN is located in row (2) 7-middle bits says location of row in RAM */ +/* , in order to convert middle field of BN from 7-bit row location, please refer to Lil */ +/* ac issue 916 in Bugzilla. (3) 3-highest bits say which memory is used for BN storage */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_READ_RAM_ADDR_REQ_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_READ_RAM_ADDR_REQ_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_READ_RAM_ADDR_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_READ_RAM_ADDR_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_READ_RAM_ADDR_SELRAM_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_READ_RAM_ADDR_SELRAM_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_READ_RAM_ADDR_RAMADDR_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_READ_RAM_ADDR_RAMADDR_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_READ_RAM_ADDR_OFFSET ( 0x00000014 ) + +#define BPM_MODULE_REGS_READ_RAM_ADDR_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_READ_RAM_ADDR_OFFSET ) +#define BPM_MODULE_REGS_READ_RAM_ADDR_READ( r ) READ_32( ( BPM_MODULE_REGS_READ_RAM_ADDR_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_READ_RAM_ADDR_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_READ_RAM_ADDR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* req_read */ + uint32_t req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 21 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* select_1_ram_out_of_6 */ + uint32_t selram : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ram_addr */ + uint32_t ramaddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_READ_RAM_ADDR ; +#else +typedef struct +{ uint32_t ramaddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ram_addr */ + uint32_t selram : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* select_1_ram_out_of_6 */ + uint32_t rsv : 21 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* req_read */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_READ_RAM_ADDR ; +#endif + +/*****************************************************************************************/ +/* MCNT_pointer_interrupt */ +/* MCNT pointer interrupt indication and pointer number will hold untill read clear by s */ +/* w. This happen if there is a pointer that is already in bpm hand but some user want */ +/* to free it again */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_MCNT_PTR_INT_RSV_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_INT_RSV_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_INT_INTSP_IRQ_SOURCE_PORT_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_INT_INTSP_IRQ_SOURCE_PORT_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_INT_PTRNUM_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_MCNT_PTR_INT_PTRNUM_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_MCNT_PTR_INT_OFFSET ( 0x00000018 ) + +#define BPM_MODULE_REGS_MCNT_PTR_INT_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_MCNT_PTR_INT_OFFSET ) +#define BPM_MODULE_REGS_MCNT_PTR_INT_READ( r ) READ_32( ( BPM_MODULE_REGS_MCNT_PTR_INT_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_MCNT_PTR_INT_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_MCNT_PTR_INT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IRQ_Source_Port */ + uint32_t intsp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pointer_number */ + uint32_t ptrnum : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_MCNT_PTR_INT ; +#else +typedef struct +{ uint32_t ptrnum : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pointer_number */ + uint32_t intsp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IRQ_Source_Port */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_MCNT_PTR_INT ; +#endif + +/*****************************************************************************************/ +/* read_ram_data0 */ +/* Read RAM data after a read ram bits 31-0 req */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_READ_RAM_DATA0_DATA_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_READ_RAM_DATA0_DATA_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_READ_RAM_DATA0_OFFSET ( 0x0000001C ) + +#define BPM_MODULE_REGS_READ_RAM_DATA0_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_READ_RAM_DATA0_OFFSET ) +#define BPM_MODULE_REGS_READ_RAM_DATA0_READ( r ) READ_32( ( BPM_MODULE_REGS_READ_RAM_DATA0_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_READ_RAM_DATA0_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_READ_RAM_DATA0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* data */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_READ_RAM_DATA0 ; +#else +typedef struct +{ uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_READ_RAM_DATA0 ; +#endif + +/*****************************************************************************************/ +/* read_ram_data1 */ +/* Read RAM data after a read ram bits 63-32 req */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_READ_RAM_DATA1_DATA_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_READ_RAM_DATA1_DATA_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_READ_RAM_DATA1_OFFSET ( 0x00000020 ) + +#define BPM_MODULE_REGS_READ_RAM_DATA1_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_READ_RAM_DATA1_OFFSET ) +#define BPM_MODULE_REGS_READ_RAM_DATA1_READ( r ) READ_32( ( BPM_MODULE_REGS_READ_RAM_DATA1_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_READ_RAM_DATA1_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_READ_RAM_DATA1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* data */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_READ_RAM_DATA1 ; +#else +typedef struct +{ uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_READ_RAM_DATA1 ; +#endif + +/*****************************************************************************************/ +/* read_ram_data2 */ +/* Read RAM data after a read ram bits 96-64 req */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_READ_RAM_DATA2_DATA_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_READ_RAM_DATA2_DATA_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_READ_RAM_DATA2_OFFSET ( 0x00000024 ) + +#define BPM_MODULE_REGS_READ_RAM_DATA2_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_READ_RAM_DATA2_OFFSET ) +#define BPM_MODULE_REGS_READ_RAM_DATA2_READ( r ) READ_32( ( BPM_MODULE_REGS_READ_RAM_DATA2_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_READ_RAM_DATA2_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_READ_RAM_DATA2_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* data */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_READ_RAM_DATA2 ; +#else +typedef struct +{ uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_READ_RAM_DATA2 ; +#endif + +/*****************************************************************************************/ +/* Source_Port_enable */ +/* Source Ports Enable */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_SP_EN_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC4_EN_EMAC4_SP_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC4_EN_EMAC4_SP_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC4_EN_EMAC4_SP_ENABLE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC3_EN_EMAC3_SP_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC3_EN_EMAC3_SP_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC3_EN_EMAC3_SP_ENABLE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC2_EN_EMAC2_SP_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC2_EN_EMAC2_SP_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC2_EN_EMAC2_SP_ENABLE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC1_EN_EMAC1_SP_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC1_EN_EMAC1_SP_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC1_EN_EMAC1_SP_ENABLE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC0_EN_EMAC0_SP_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC0_EN_EMAC0_SP_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_EMAC0_EN_EMAC0_SP_ENABLE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_SP_EN_GPON_EN_GPON_SP_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_GPON_EN_GPON_SP_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_GPON_EN_GPON_SP_ENABLE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_SP_EN_RNRB_EN_RUNNER_B_SP_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_RNRB_EN_RUNNER_B_SP_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_RNRB_EN_RUNNER_B_SP_ENABLE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_SP_EN_RNRA_EN_RUNNER_A_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_RNRA_EN_RUNNER_A_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SP_EN_RNRA_EN_RUNNER_A__ENABLE_VALUE ( 0x1 ) + + +#define BPM_MODULE_REGS_BPM_SP_EN_OFFSET ( 0x00000028 ) + +#define BPM_MODULE_REGS_BPM_SP_EN_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_SP_EN_OFFSET ) +#define BPM_MODULE_REGS_BPM_SP_EN_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_SP_EN_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_SP_EN_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_SP_EN_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC4_SP_EN */ + uint32_t emac4_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC3_SP_EN */ + uint32_t emac3_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC2_SP_EN */ + uint32_t emac2_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC1_SP_EN */ + uint32_t emac1_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC0_SP_EN */ + uint32_t emac0_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_SP_EN */ + uint32_t gpon_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_B_SP_EN */ + uint32_t rnrb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_A_SP_EN */ + uint32_t rnra_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_SP_EN ; +#else +typedef struct +{ uint32_t rnra_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_A_SP_EN */ + uint32_t rnrb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_B_SP_EN */ + uint32_t gpon_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_SP_EN */ + uint32_t emac0_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC0_SP_EN */ + uint32_t emac1_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC1_SP_EN */ + uint32_t emac2_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC2_SP_EN */ + uint32_t emac3_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC3_SP_EN */ + uint32_t emac4_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC4_SP_EN */ + uint32_t rsv : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_SP_EN ; +#endif + +/*****************************************************************************************/ +/* Global_Threshold */ +/* Global Threshold for Allocated Buffers. There are 6 options: 1K, 2K,3k …6K buffers. */ +/* BPM will issue BN in the accepted range upon to Global threshold setup. Ths register */ +/* also holds global hysteresis value for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_GL_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAH_GL_BAH_VALUE ( 0x400 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAH_GL_BAH_VALUE_RESET_VALUE ( 0x400 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_2P5K_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_5K_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_5K_VALUE_RESET_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_7P5K_VALUE ( 0x2 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_10K_VALUE ( 0x3 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_12P5K_VALUE ( 0x4 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_15K_VALUE ( 0x5 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_17p5K_VALUE ( 0x6 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_20K_VALUE ( 0x7 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_22p5K_VALUE ( 0x8 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_25K_VALUE ( 0x9 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_27p5K_VALUE ( 0xA ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_GLOBAL_THRESHOLD_30K_VALUE ( 0xB ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_RSV1_VALUE ( 0x6 ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_GL_BAT_RSV_VALUE ( 0x7 ) + + +#define BPM_MODULE_REGS_BPM_GL_TRSH_OFFSET ( 0x0000002C ) + +#define BPM_MODULE_REGS_BPM_GL_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_GL_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_GL_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_GL_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_GL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GL_BAH */ + uint32_t gl_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GL_BAT */ + uint32_t gl_bat : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_GL_TRSH ; +#else +typedef struct +{ uint32_t gl_bat : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GL_BAT */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t gl_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GL_BAH */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_GL_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG0_Threshold */ +/* Threshold for Allocated Buffers of UG0 Ths register also holds UG0 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG0_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_TRSH_UG0_BAH_BAH_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG0_TRSH_UG0_BAH_BAH_VALUE_RESET_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG0_TRSH_RSV_RSV1_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_TRSH_RSV_RSV1_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_TRSH_UG0_BAT_BAT_VALUE ( 0x1400 ) +#define BPM_MODULE_REGS_BPM_UG0_TRSH_UG0_BAT_BAT_VALUE_RESET_VALUE ( 0x1400 ) + + +#define BPM_MODULE_REGS_BPM_UG0_TRSH_OFFSET ( 0x00000030 ) + +#define BPM_MODULE_REGS_BPM_UG0_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG0_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG0_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG0_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG0_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG0_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG0_TRSH ; +#else +typedef struct +{ uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG0_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG1_Threshold */ +/* Threshold for Allocated Buffers of UG1 Ths register also holds UG1 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG1_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_TRSH_UG0_BAH_BAH_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG1_TRSH_UG0_BAH_BAH_VALUE_RESET_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG1_TRSH_RSV_RSV1_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_TRSH_RSV_RSV1_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_TRSH_UG0_BAT_BAT_VALUE ( 0x1400 ) +#define BPM_MODULE_REGS_BPM_UG1_TRSH_UG0_BAT_BAT_VALUE_RESET_VALUE ( 0x1400 ) + + +#define BPM_MODULE_REGS_BPM_UG1_TRSH_OFFSET ( 0x00000034 ) + +#define BPM_MODULE_REGS_BPM_UG1_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG1_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG1_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG1_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG1_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG1_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG1_TRSH ; +#else +typedef struct +{ uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG1_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG2_Threshold */ +/* Threshold for Allocated Buffers of UG2 Ths register also holds UG2 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG2_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_TRSH_UG0_BAH_BAH_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG2_TRSH_UG0_BAH_BAH_VALUE_RESET_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG2_TRSH_RSV_RSV1_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_TRSH_RSV_RSV1_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_TRSH_UG0_BAT_BAT_VALUE ( 0x1400 ) +#define BPM_MODULE_REGS_BPM_UG2_TRSH_UG0_BAT_BAT_VALUE_RESET_VALUE ( 0x1400 ) + + +#define BPM_MODULE_REGS_BPM_UG2_TRSH_OFFSET ( 0x00000038 ) + +#define BPM_MODULE_REGS_BPM_UG2_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG2_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG2_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG2_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG2_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG2_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG2_TRSH ; +#else +typedef struct +{ uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG2_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG3_Threshold */ +/* Threshold for Allocated Buffers of UG3 Ths register also holds UG3 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG3_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_TRSH_UG0_BAH_BAH_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG3_TRSH_UG0_BAH_BAH_VALUE_RESET_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG3_TRSH_RSV_RSV1_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_TRSH_RSV_RSV1_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_TRSH_UG0_BAT_BAT_VALUE ( 0x1400 ) +#define BPM_MODULE_REGS_BPM_UG3_TRSH_UG0_BAT_BAT_VALUE_RESET_VALUE ( 0x1400 ) + + +#define BPM_MODULE_REGS_BPM_UG3_TRSH_OFFSET ( 0x0000003C ) + +#define BPM_MODULE_REGS_BPM_UG3_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG3_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG3_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG3_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG3_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG3_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG3_TRSH ; +#else +typedef struct +{ uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG3_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG4_Threshold */ +/* Threshold for Allocated Buffers of UG4 Ths register also holds UG4 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG4_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_TRSH_UG0_BAH_BAH_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG4_TRSH_UG0_BAH_BAH_VALUE_RESET_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG4_TRSH_RSV_RSV1_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_TRSH_RSV_RSV1_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_TRSH_UG0_BAT_BAT_VALUE ( 0x1400 ) +#define BPM_MODULE_REGS_BPM_UG4_TRSH_UG0_BAT_BAT_VALUE_RESET_VALUE ( 0x1400 ) + + +#define BPM_MODULE_REGS_BPM_UG4_TRSH_OFFSET ( 0x00000040 ) + +#define BPM_MODULE_REGS_BPM_UG4_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG4_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG4_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG4_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG4_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG4_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG4_TRSH ; +#else +typedef struct +{ uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG4_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG5_Threshold */ +/* Threshold for Allocated Buffers of UG5 Ths register also holds UG5 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG5_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_TRSH_UG0_BAH_BAH_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG5_TRSH_UG0_BAH_BAH_VALUE_RESET_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG5_TRSH_RSV_RSV1_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_TRSH_RSV_RSV1_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_TRSH_UG0_BAT_BAT_VALUE ( 0x1400 ) +#define BPM_MODULE_REGS_BPM_UG5_TRSH_UG0_BAT_BAT_VALUE_RESET_VALUE ( 0x1400 ) + + +#define BPM_MODULE_REGS_BPM_UG5_TRSH_OFFSET ( 0x00000044 ) + +#define BPM_MODULE_REGS_BPM_UG5_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG5_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG5_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG5_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG5_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG5_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG5_TRSH ; +#else +typedef struct +{ uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG5_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG6_Threshold */ +/* Threshold for Allocated Buffers of UG6 Ths register also holds UG6 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG6_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_TRSH_UG0_BAH_BAH_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG6_TRSH_UG0_BAH_BAH_VALUE_RESET_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG6_TRSH_RSV_RSV1_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_TRSH_RSV_RSV1_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_TRSH_UG0_BAT_BAT_VALUE ( 0x1400 ) +#define BPM_MODULE_REGS_BPM_UG6_TRSH_UG0_BAT_BAT_VALUE_RESET_VALUE ( 0x1400 ) + + +#define BPM_MODULE_REGS_BPM_UG6_TRSH_OFFSET ( 0x00000048 ) + +#define BPM_MODULE_REGS_BPM_UG6_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG6_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG6_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG6_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG6_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG6_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG6_TRSH ; +#else +typedef struct +{ uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG6_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG7_Threshold */ +/* Threshold for Allocated Buffers of UG7 Ths register also holds UG7 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG7_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_TRSH_UG0_BAH_BAH_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG7_TRSH_UG0_BAH_BAH_VALUE_RESET_VALUE ( 0x200 ) +#define BPM_MODULE_REGS_BPM_UG7_TRSH_RSV_RSV1_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_TRSH_RSV_RSV1_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_TRSH_UG0_BAT_BAT_VALUE ( 0x1400 ) +#define BPM_MODULE_REGS_BPM_UG7_TRSH_UG0_BAT_BAT_VALUE_RESET_VALUE ( 0x1400 ) + + +#define BPM_MODULE_REGS_BPM_UG7_TRSH_OFFSET ( 0x0000004C ) + +#define BPM_MODULE_REGS_BPM_UG7_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG7_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG7_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG7_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG7_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG7_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG7_TRSH ; +#else +typedef struct +{ uint32_t ug0_bat : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAT */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug0_bah : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAH */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG7_TRSH ; +#endif + +/*****************************************************************************************/ +/* BPM_UG_MAP_R0 */ +/* This register is using for mapping of following Source Ports to UG0…7: -CPU (or MIPS */ +/* C) -Runner A -Runner B -GPON MAC -Eth0-3 MAC */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_EMAC3_EMAC3_MAP_VALUE ( 0x7 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_EMAC3_EMAC3_MAP_VALUE_RESET_VALUE ( 0x7 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_EMAC2_EMAC2_MAP_VALUE ( 0x6 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_EMAC2_EMAC2_MAP_VALUE_RESET_VALUE ( 0x6 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_EMAC1_EMAC1_MAP_VALUE ( 0x5 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_EMAC1_EMAC1_MAP_VALUE_RESET_VALUE ( 0x5 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_EMAC0_EMAC0_MAP_VALUE ( 0x4 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_EMAC0_EMAC0_MAP_VALUE_RESET_VALUE ( 0x4 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_GPON_GPON_MAP_VALUE ( 0x3 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_GPON_GPON_MAP_VALUE_RESET_VALUE ( 0x3 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_RNR_B_RNR_B_MAP_VALUE ( 0x2 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_RNR_B_RNR_B_MAP_VALUE_RESET_VALUE ( 0x2 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_RNR_A_RNR_A_MAP_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_RNR_A_RNR_A_MAP_VALUE_RESET_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_CPU__CPU_MAP_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_CPU__CPU_MAP_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_OFFSET ( 0x00000050 ) + +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG_MAP_R0_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG_MAP_R0_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R0_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG_MAP_R0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* EMAC3_mapping */ + uint32_t emac3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC2_mapping */ + uint32_t emac2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC1_mapping */ + uint32_t emac1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC0_mapping */ + uint32_t emac0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_mapping */ + uint32_t gpon : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_B_mapping */ + uint32_t rnr_b : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_A_mapping */ + uint32_t rnr_a : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CPU_mapping */ + uint32_t cpu_ : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG_MAP_R0 ; +#else +typedef struct +{ uint32_t cpu_ : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CPU_mapping */ + uint32_t rnr_a : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_A_mapping */ + uint32_t rnr_b : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_B_mapping */ + uint32_t gpon : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_mapping */ + uint32_t emac0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC0_mapping */ + uint32_t emac1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC1_mapping */ + uint32_t emac2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC2_mapping */ + uint32_t emac3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC3_mapping */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG_MAP_R0 ; +#endif + +/*****************************************************************************************/ +/* BPM_dbg */ +/* BPM select the debug bus */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_DBG_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_DBG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_DBG_SEL_DBG_DEFUALT_VALUE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_DBG_SEL_DBG_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_DBG_OFFSET ( 0x00000054 ) + +#define BPM_MODULE_REGS_BPM_DBG_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_DBG_OFFSET ) +#define BPM_MODULE_REGS_BPM_DBG_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_DBG_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_DBG_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_DBG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* select */ + uint32_t sel : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_DBG ; +#else +typedef struct +{ uint32_t sel : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* select */ + uint32_t rsv : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_DBG ; +#endif + +/*****************************************************************************************/ +/* BPM_UG0_BAC */ +/* BPM UG0 allocated BN counter */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG0_BAC_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_BAC_UG0BAC_BAC_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_BAC_UG0BAC_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_UG0_BAC_OFFSET ( 0x00000058 ) + +#define BPM_MODULE_REGS_BPM_UG0_BAC_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG0_BAC_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG0_BAC_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG0_BAC_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG0_BAC_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG0_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAC */ + uint32_t ug0bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG0_BAC ; +#else +typedef struct +{ uint32_t ug0bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAC */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG0_BAC ; +#endif + +/*****************************************************************************************/ +/* BPM_UG1_BAC */ +/* BPM UG1 allocated BN Counter */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG1_BAC_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_BAC_UG1BAC_UG1BAC_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_BAC_UG1BAC_UG1BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_UG1_BAC_OFFSET ( 0x0000005C ) + +#define BPM_MODULE_REGS_BPM_UG1_BAC_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG1_BAC_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG1_BAC_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG1_BAC_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG1_BAC_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG1_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAC */ + uint32_t ug1bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG1_BAC ; +#else +typedef struct +{ uint32_t ug1bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG1_BAC ; +#endif + +/*****************************************************************************************/ +/* BPM_UG2_BAC */ +/* BPM UG2 allocated BN Counter */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG2_BAC_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_BAC_UG2BAC_UG2_BAC_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_BAC_UG2BAC_UG2_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_UG2_BAC_OFFSET ( 0x00000060 ) + +#define BPM_MODULE_REGS_BPM_UG2_BAC_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG2_BAC_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG2_BAC_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG2_BAC_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG2_BAC_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG2_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAC */ + uint32_t ug2bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG2_BAC ; +#else +typedef struct +{ uint32_t ug2bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG2_BAC ; +#endif + +/*****************************************************************************************/ +/* BPM_UG3_BAC */ +/* BPM UG3 allocated BN Counter */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG3_BAC_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_BAC_UG3BAC_UG3_BAC_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_BAC_UG3BAC_UG3_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_UG3_BAC_OFFSET ( 0x00000064 ) + +#define BPM_MODULE_REGS_BPM_UG3_BAC_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG3_BAC_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG3_BAC_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG3_BAC_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG3_BAC_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG3_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAC */ + uint32_t ug3bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG3_BAC ; +#else +typedef struct +{ uint32_t ug3bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG3_BAC */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG3_BAC ; +#endif + +/*****************************************************************************************/ +/* BPM_UG4_BAC */ +/* BPM UG4 allocated BN Counter */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG4_BAC_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_BAC_UG4BAC_UG4_BAC_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_BAC_UG4BAC_UG4_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_UG4_BAC_OFFSET ( 0x00000068 ) + +#define BPM_MODULE_REGS_BPM_UG4_BAC_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG4_BAC_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG4_BAC_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG4_BAC_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG4_BAC_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG4_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t ug4bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG4_BAC ; +#else +typedef struct +{ uint32_t ug4bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG4_BAC ; +#endif + +/*****************************************************************************************/ +/* BPM_UG5_BAC */ +/* BPM UG5 allocated BN Counter */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG5_BAC_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_BAC_UG5BAC_UG5_BAC_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_BAC_UG5BAC_UG5_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_UG5_BAC_OFFSET ( 0x0000006C ) + +#define BPM_MODULE_REGS_BPM_UG5_BAC_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG5_BAC_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG5_BAC_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG5_BAC_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG5_BAC_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG5_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t ug5bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG5_BAC ; +#else +typedef struct +{ uint32_t ug5bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG5_BAC ; +#endif + +/*****************************************************************************************/ +/* BPM_UG6_BAC */ +/* BPM UG6 allocated BN Counter */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG6_BAC_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_BAC_UG6BAC_UG6_BAC_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_BAC_UG6BAC_UG6_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_UG6_BAC_OFFSET ( 0x00000070 ) + +#define BPM_MODULE_REGS_BPM_UG6_BAC_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG6_BAC_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG6_BAC_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG6_BAC_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG6_BAC_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG6_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t ug6bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG6_BAC ; +#else +typedef struct +{ uint32_t ug6bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG6_BAC ; +#endif + +/*****************************************************************************************/ +/* BPM_UG7_BAC */ +/* BPM UG7 allocated BN Counter */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG7_BAC_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_BAC_UG7BAC_UG7_BAC_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_BAC_UG7BAC_UG7_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_UG7_BAC_OFFSET ( 0x00000074 ) + +#define BPM_MODULE_REGS_BPM_UG7_BAC_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG7_BAC_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG7_BAC_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG7_BAC_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG7_BAC_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG7_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t ug7bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG7_BAC ; +#else +typedef struct +{ uint32_t ug7bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG7_BAC ; +#endif + +/*****************************************************************************************/ +/* BPM_GL_BAC */ +/* BPM global BN Counter */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_GL_BAC_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_GL_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_GL_BAC_BAC_BAC_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_GL_BAC_BAC_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_GL_BAC_OFFSET ( 0x00000078 ) + +#define BPM_MODULE_REGS_BPM_GL_BAC_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_GL_BAC_OFFSET ) +#define BPM_MODULE_REGS_BPM_GL_BAC_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_GL_BAC_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_GL_BAC_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_GL_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_GL_BAC ; +#else +typedef struct +{ uint32_t bac : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_GL_BAC ; +#endif + +/*****************************************************************************************/ +/* BPM_route_address_register_0 */ +/* BPM route addresses of Runner A/B, GPON RX and EMAC0 RX. Route address configuratio */ +/* n is defined according to topological structure of broad bus */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_RADDR0_RSV4_RSV4_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR0_RSV4_RSV4_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR0_EMAC0_RX_RADDR_EMAC0_RX_ROUTE_ADDRESS_VALUE ( 0x1F ) +#define BPM_MODULE_REGS_BPM_RADDR0_EMAC0_RX_RADDR_EMAC0_RX_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x1F ) +#define BPM_MODULE_REGS_BPM_RADDR0_RSV3_RSV3_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR0_RSV3_RSV3_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR0_GPON_RX_RADDR_GPON_RX_ROUTE_ADDRESS_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_RADDR0_GPON_RX_RADDR_GPON_RX_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_RADDR0_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR0_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR0_RUNB_RADDR_RUNNER_B_ROUTE_ADDRESS_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR0_RUNB_RADDR_RUNNER_B_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR0_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR0_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR0_RUNA_RADDR_RUNNER_A_ROUTE_ADDRESS_VALUE ( 0x2 ) +#define BPM_MODULE_REGS_BPM_RADDR0_RUNA_RADDR_RUNNER_A_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x2 ) + + +#define BPM_MODULE_REGS_BPM_RADDR0_OFFSET ( 0x00000084 ) + +#define BPM_MODULE_REGS_BPM_RADDR0_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_RADDR0_OFFSET ) +#define BPM_MODULE_REGS_BPM_RADDR0_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_RADDR0_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_RADDR0_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_RADDR0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* emac0_Rx_route_address */ + uint32_t emac0_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gpon_Rx_route_address */ + uint32_t gpon_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* runner_B_route_address */ + uint32_t runb_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* runner_A_route_address */ + uint32_t runa_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RADDR0 ; +#else +typedef struct +{ uint32_t runa_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* runner_A_route_address */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t runb_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* runner_B_route_address */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t gpon_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gpon_Rx_route_address */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t emac0_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* emac0_Rx_route_address */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RADDR0 ; +#endif + +/*****************************************************************************************/ +/* BPM_route_address_register_1 */ +/* BPM route addresses of EMAC 1/2/3/4 RX. Route address configuration is defined accor */ +/* ding to topological structure of broad bus */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_RADDR1_RSV4_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR1_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR1_EMAC4_RX_RADDR_EMAC4_RX_ROUTE_ADDRESS_VALUE ( 0x11 ) +#define BPM_MODULE_REGS_BPM_RADDR1_EMAC4_RX_RADDR_EMAC4_RX_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x11 ) +#define BPM_MODULE_REGS_BPM_RADDR1_RSV3_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR1_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR1_EMAC3_RX_RADDR_CONFIGURABLE_EMAC3_RX_ROUTE_ADDRESS_VALUE ( 0x9 ) +#define BPM_MODULE_REGS_BPM_RADDR1_EMAC3_RX_RADDR_CONFIGURABLE_EMAC3_RX_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x9 ) +#define BPM_MODULE_REGS_BPM_RADDR1_RSV2_RSV2_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR1_RSV2_RSV2_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR1_EMAC2_RX_RADDR_EMAC2_ROUTE_ADDRESS_VALUE ( 0x17 ) +#define BPM_MODULE_REGS_BPM_RADDR1_EMAC2_RX_RADDR_EMAC2_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x17 ) +#define BPM_MODULE_REGS_BPM_RADDR1_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR1_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR1_EMAC1_RX_RADDR_EMAC1_ROUTE_ADDRESS_VALUE ( 0xF ) +#define BPM_MODULE_REGS_BPM_RADDR1_EMAC1_RX_RADDR_EMAC1_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0xF ) + + +#define BPM_MODULE_REGS_BPM_RADDR1_OFFSET ( 0x00000088 ) + +#define BPM_MODULE_REGS_BPM_RADDR1_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_RADDR1_OFFSET ) +#define BPM_MODULE_REGS_BPM_RADDR1_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_RADDR1_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_RADDR1_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_RADDR1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* emac4_rx_route_address */ + uint32_t emac4_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* emac3_rx_route_address */ + uint32_t emac3_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* emac2_rx_route_address */ + uint32_t emac2_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* emac1_rx__route_address */ + uint32_t emac1_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RADDR1 ; +#else +typedef struct +{ uint32_t emac1_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* emac1_rx__route_address */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t emac2_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* emac2_rx_route_address */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t emac3_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* emac3_rx_route_address */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t emac4_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* emac4_rx_route_address */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RADDR1 ; +#endif + +/*****************************************************************************************/ +/* BPM_runner_message_control_register */ +/* BPM runner message control register includes enables for wake-up messages, select con */ +/* trol bit for transition message and task numbers for wake-up messages to Runners */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_MIPSD_RPLY_TN_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_MIPSD_RPLY_TN_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_TRANS_WKUP_TN_ASK_NUMBER_FOR_RUNNER_ANB_TRANSITION_WAKEUP_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_TRANS_WKUP_TN_ASK_NUMBER_FOR_RUNNER_ANB_TRANSITION_WAKEUP_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RSV3_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_B_RPLY_WKUP_TN_TASK_NUMBER_FOR_RUNNER_B_WAKE_UP_ON_REPLY_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_B_RPLY_WKUP_TN_TASK_NUMBER_FOR_RUNNER_B_WAKE_UP_ON_REPLY_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_A_RPLY_WKUP_TN_TASK_NUMBER_FOR_RUNNER_A_WAKE_UP_ON_REPLY_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_A_RPLY_WKUP_TN_TASK_NUMBER_FOR_RUNNER_A_WAKE_UP_ON_REPLY_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_MIPSD_RPLY_WKUP_EN_REPLY_WAKE_UP_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_MIPSD_RPLY_WKUP_EN_REPLY_WAKE_UP_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_MIPSD_RPLY_WKUP_EN_REPLY_WAKE_UP_ENABLE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_SEL_TRANS_MSG_TRANSITION_MESSAGE_SELECTED_TO_RUNNER_A_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_SEL_TRANS_MSG_TRANSITION_MESSAGE_SELECTED_TO_RUNNER_A_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_SEL_TRANS_MSG_TRANSITION_MESSAGE_SELECTED_TO_RUNNER_B_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_TRANS_WKUP_EN_TRANSITION_WAKE_UP_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_TRANS_WKUP_EN_TRANSITION_WAKE_UP_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_TRANS_WKUP_EN_TRANSITION_WAKE_UP_ENABLE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_RPLY_WKUP_EN_REPLY_WAKE_UP_DISABLE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_RPLY_WKUP_EN_REPLY_WAKE_UP_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_RPLY_WKUP_EN_REPLY_WAKE_UP_ENABLE_VALUE ( 0x1 ) + + +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_OFFSET ( 0x0000008C ) + +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_OFFSET ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MIPSD_RPLY_TN */ + uint32_t mipsd_rply_tn : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_Number_for_Runner_Transition_WakeUp */ + uint32_t rnr_trans_wkup_tn : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_Number_for_Runner_B_Wake_Up_on_Reply */ + uint32_t rnr_b_rply_wkup_tn : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_Number_for_Runner_A_Wake_Up_on_Reply */ + uint32_t rnr_a_rply_wkup_tn : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MIPSD_Reply_Wake_Up_enable */ + uint32_t mipsd_rply_wkup_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_Selector_for_Transition_Message */ + uint32_t rnr_sel_trans_msg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_Transition_Wake_Up_enable */ + uint32_t rnr_trans_wkup_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_Reply_Wake_Up_enable */ + uint32_t rnr_rply_wkup_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RNR_MSG_CTRL ; +#else +typedef struct +{ uint32_t rnr_rply_wkup_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_Reply_Wake_Up_enable */ + uint32_t rnr_trans_wkup_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_Transition_Wake_Up_enable */ + uint32_t rnr_sel_trans_msg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_Selector_for_Transition_Message */ + uint32_t mipsd_rply_wkup_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MIPSD_Reply_Wake_Up_enable */ + uint32_t rnr_a_rply_wkup_tn : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_Number_for_Runner_A_Wake_Up_on_Reply */ + uint32_t rsv2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rnr_b_rply_wkup_tn : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_Number_for_Runner_B_Wake_Up_on_Reply */ + uint32_t rsv3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rnr_trans_wkup_tn : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Task_Number_for_Runner_Transition_WakeUp */ + uint32_t mipsd_rply_tn : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MIPSD_RPLY_TN */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RNR_MSG_CTRL ; +#endif + +/*****************************************************************************************/ +/* Runner_Target_address_for_Reply_message */ +/* Runner Target address for Reply message as results of Alloc request from Runner. The */ +/* register is separeted to two fields: for runner A and B */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_RNR_RPLY_TA_RNR_B_TA_TARGET_ADDRESS_FOR_RUNNER_B_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_RPLY_TA_RNR_B_TA_TARGET_ADDRESS_FOR_RUNNER_B_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_RPLY_TA_RNR_A_TA_TARGET_ADDRESS_FOR_RUNNER_A_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RNR_RPLY_TA_RNR_A_TA_TARGET_ADDRESS_FOR_RUNNER_A_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_RNR_RPLY_TA_OFFSET ( 0x00000090 ) + +#define BPM_MODULE_REGS_BPM_RNR_RPLY_TA_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_RNR_RPLY_TA_OFFSET ) +#define BPM_MODULE_REGS_BPM_RNR_RPLY_TA_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_RNR_RPLY_TA_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_RNR_RPLY_TA_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_RNR_RPLY_TA_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Target_address_for_Runner_B */ + uint32_t rnr_b_ta : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Target_address_for_Runner_A */ + uint32_t rnr_a_ta : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RNR_RPLY_TA ; +#else +typedef struct +{ uint32_t rnr_a_ta : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Target_address_for_Runner_A */ + uint32_t rnr_b_ta : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Target_address_for_Runner_B */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RNR_RPLY_TA ; +#endif + +/*****************************************************************************************/ +/* Runner_Target_Address_for_Wake-Up_message_on_Reply */ +/* Runner Target Address for Wake-Up message for both Runners as result of Reply to All */ +/* oc request whenever Wake-Up is on */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_RNR_B_TADDR_RPLY_WKUP_TARGET_ADDRESS_ON_WAKE_UP_REPLY_TO_RUNNER_B_VALUE ( 0x8000 ) +#define BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_RNR_B_TADDR_RPLY_WKUP_TARGET_ADDRESS_ON_WAKE_UP_REPLY_TO_RUNNER_B_VALUE_RESET_VALUE ( 0x8000 ) +#define BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_RNR_A_TADDR_RPLY_WKUP_TARGET_ADDRESS_ON_WAKE_UP_REPLY_TO_RUNNER_A_VALUE ( 0x8000 ) +#define BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_RNR_A_TADDR_RPLY_WKUP_TARGET_ADDRESS_ON_WAKE_UP_REPLY_TO_RUNNER_A_VALUE_RESET_VALUE ( 0x8000 ) + + +#define BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_OFFSET ( 0x00000094 ) + +#define BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_OFFSET ) +#define BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Target_Address_on_Wake_Up_reply_to_Runner_B */ + uint32_t rnr_b_taddr_rply_wkup : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Target_Address_on_Wake_Up_reply_to_Runner_A */ + uint32_t rnr_a_taddr_rply_wkup : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA ; +#else +typedef struct +{ uint32_t rnr_a_taddr_rply_wkup : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Target_Address_on_Wake_Up_reply_to_Runner_A */ + uint32_t rnr_b_taddr_rply_wkup : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Target_Address_on_Wake_Up_reply_to_Runner_B */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA ; +#endif + +/*****************************************************************************************/ +/* User_Group_Status_register */ +/* This register is status set of all 8 Ugs: - ACK/NACK state (according to current numb */ +/* er of allocated BNs for the UG and appropriate UG Buffer Allocated Max/Hysteresis thr */ +/* esholds) - EXCLUSIVE/NON_EXCLUSIVE state (according to current number of allocated */ +/* BNs for the UG and appropriate UG Exclusive/Hysteresis thresholds) */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG_STATUS_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG7_EXCL_STTS_NON_EXCL_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG7_EXCL_STTS_NON_EXCL_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG7_EXCL_STTS_EXCL_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG6_EXCL_STTS_NON_EXCL_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG6_EXCL_STTS_NON_EXCL_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG6_EXCL_STTS_EXCL_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG5_EXCL_STTS_NON_EXCL_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG5_EXCL_STTS_NON_EXCL_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG5_EXCL_STTS_EXCL_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG4_EXCL_STTS_NON_EXCL_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG4_EXCL_STTS_NON_EXCL_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG4_EXCL_STTS_EXCL_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG3_EXCL_STTS_NON_EXCL_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG3_EXCL_STTS_NON_EXCL_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG3_EXCL_STTS_EXCL_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG2_EXCL_STTS_NON_EXCL_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG2_EXCL_STTS_NON_EXCL_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG2_EXCL_STTS_EXCL_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG1_EXCL_STTS_NON_EXCL_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG1_EXCL_STTS_NON_EXCL_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG1_EXCL_STTS_EXCL_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG0_EXCL_STTS_NON_EXCL_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG0_EXCL_STTS_NON_EXCL_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG0_EXCL_STTS_EXCL_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_RSV1_GPON_IS_NOT_IN_EXCLUSIVE_MODE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_RSV1_GPON_IS_NOT_IN_EXCLUSIVE_MODE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_RSV1_GPON_IS_IN_EXCLUSIVE_MODE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG7_STTS_UG7_STATUS_NACK_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG7_STTS_UG7_STATUS_NACK_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG7_STTS_UG7_STATUS_ACK_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG6_STTS_UG6_STATUS_NACK_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG6_STTS_UG6_STATUS_NACK_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG6_STTS_UG6_STATUS_ACK_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG5_STTS_UG5_STATUS_NACK_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG5_STTS_UG5_STATUS_NACK_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG5_STTS_UG5_STATUS_ACK_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG4_STTS_UG4_STATUS_NACK_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG4_STTS_UG4_STATUS_NACK_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG4_STTS_UG4_STATUS_ACK_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG3_STTS_UG3_STATUS_NACK_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG3_STTS_UG3_STATUS_NACK_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG3_STTS_UG3_STATUS_ACK_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG2_STTS_UG2_STATUS_NACK_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG2_STTS_UG2_STATUS_NACK_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG2_STTS_UG2_STATUS_ACK_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG1_STTS_UG1_STATUS_NACK_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG1_STTS_UG1_STATUS_NACK_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG1_STTS_UG1_STATUS_ACK_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG0_STTS_UG0_STATUS_NACK_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG0_STTS_UG0_STATUS_NACK_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_UG0_STTS_UG0_STATUS_ACK_VALUE ( 0x1 ) + + +#define BPM_MODULE_REGS_BPM_UG_STATUS_OFFSET ( 0x00000098 ) + +#define BPM_MODULE_REGS_BPM_UG_STATUS_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG_STATUS_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG_STATUS_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG_STATUS_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG_STATUS_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv2 */ + uint32_t rsv2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG7_excl_status */ + uint32_t ug7_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG6_excl_status */ + uint32_t ug6_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG5_excl_status */ + uint32_t ug5_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG4_excl_status */ + uint32_t ug4_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG3_excl_status */ + uint32_t ug3_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG2_excl_status */ + uint32_t ug2_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG1_excl_status */ + uint32_t ug1_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_excl_status */ + uint32_t ug0_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG7_status */ + uint32_t ug7_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG6_status */ + uint32_t ug6_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG5_status */ + uint32_t ug5_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG4_status */ + uint32_t ug4_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG3_status */ + uint32_t ug3_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG2_status */ + uint32_t ug2_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG1_status */ + uint32_t ug1_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_status */ + uint32_t ug0_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG_STATUS ; +#else +typedef struct +{ uint32_t ug0_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_status */ + uint32_t ug1_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG1_status */ + uint32_t ug2_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG2_status */ + uint32_t ug3_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG3_status */ + uint32_t ug4_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG4_status */ + uint32_t ug5_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG5_status */ + uint32_t ug6_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG6_status */ + uint32_t ug7_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG7_status */ + uint32_t rsv1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t ug0_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_excl_status */ + uint32_t ug1_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG1_excl_status */ + uint32_t ug2_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG2_excl_status */ + uint32_t ug3_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG3_excl_status */ + uint32_t ug4_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG4_excl_status */ + uint32_t ug5_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG5_excl_status */ + uint32_t ug6_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG6_excl_status */ + uint32_t ug7_excl_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG7_excl_status */ + uint32_t rsv2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG_STATUS ; +#endif + +/*****************************************************************************************/ +/* BPM_ISR_register */ +/* This register includes status bits of each BPM source interrupt (at also can be cause */ +/* d by test interrupt trigger) */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_ISR_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ISR_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ISR_MCNT_ISR_MCNT_ISR_IS_NON_ACTIVE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ISR_MCNT_ISR_MCNT_ISR_IS_NON_ACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ISR_MCNT_ISR_MCNT_ISR_IS_ACTIVE_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_ISR_FREE_ISR_FREE_ISR_IS_INACTIVE_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ISR_FREE_ISR_FREE_ISR_IS_INACTIVE_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ISR_FREE_ISR_FREE_ISR_IS_ACTIVE_VALUE ( 0x1 ) + + +#define BPM_MODULE_REGS_BPM_ISR_OFFSET ( 0x0000009C ) + +#define BPM_MODULE_REGS_BPM_ISR_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_ISR_OFFSET ) +#define BPM_MODULE_REGS_BPM_ISR_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_ISR_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_ISR_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_ISR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MCNT_Interrupt_source */ + uint32_t mcnt_isr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Free_Interrupt_source */ + uint32_t free_isr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_ISR ; +#else +typedef struct +{ uint32_t free_isr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Free_Interrupt_source */ + uint32_t mcnt_isr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MCNT_Interrupt_source */ + uint32_t rsv : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_ISR ; +#endif + +/*****************************************************************************************/ +/* BPM_IER_register */ +/* This register includes enable controls per each source. Enable bit affects on BPM IRQ */ +/* output to Interrupt Controller */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_IER_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_IER_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_IER_MCNT_IER_MCNT_IRQ_DISABLED_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_IER_MCNT_IER_MCNT_IRQ_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_IER_MCNT_IER_MCNT_IRQ_ENABLED_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_IER_FREE_IER_FREE_IRQ_DISABLED_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_IER_FREE_IER_FREE_IRQ_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_IER_FREE_IER_FREE_IRQ_ENABLED_VALUE ( 0x1 ) + + +#define BPM_MODULE_REGS_BPM_IER_OFFSET ( 0x00000100 ) + +#define BPM_MODULE_REGS_BPM_IER_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_IER_OFFSET ) +#define BPM_MODULE_REGS_BPM_IER_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_IER_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_IER_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_IER_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Enable_for_MCNT_IRQ */ + uint32_t mcnt_ier : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Enable_for_Free_IRQ */ + uint32_t free_ier : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_IER ; +#else +typedef struct +{ uint32_t free_ier : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Enable_for_Free_IRQ */ + uint32_t mcnt_ier : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Enable_for_MCNT_IRQ */ + uint32_t rsv : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_IER ; +#endif + +/*****************************************************************************************/ +/* BPM_ITR_register */ +/* This register allows emulate BPM IRQs by serring relevant bit in ITR register */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_ITR_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ITR_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ITR_MCNT_ITR_MCNT_IRQ_DISABLED_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ITR_MCNT_ITR_MCNT_IRQ_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ITR_MCNT_ITR_MCNT_IRQ_ENABLED_VALUE ( 0x1 ) +#define BPM_MODULE_REGS_BPM_ITR_FREE_ITR_FREE_TEST_IRQ_DISABLED_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ITR_FREE_ITR_FREE_TEST_IRQ_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_ITR_FREE_ITR_FREE_TEST_IRQ_ENABLED_VALUE ( 0x1 ) + + +#define BPM_MODULE_REGS_BPM_ITR_OFFSET ( 0x00000104 ) + +#define BPM_MODULE_REGS_BPM_ITR_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_ITR_OFFSET ) +#define BPM_MODULE_REGS_BPM_ITR_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_ITR_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_ITR_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_ITR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MCNT_Test_IRQ */ + uint32_t mcnt_itr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Free_Test_IRQ */ + uint32_t free_itr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_ITR ; +#else +typedef struct +{ uint32_t free_itr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Free_Test_IRQ */ + uint32_t mcnt_itr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MCNT_Test_IRQ */ + uint32_t rsv : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_ITR ; +#endif + +/*****************************************************************************************/ +/* BPM_UG_MAP_R1 */ +/* Each Source Port is mapped to specified UG. This register is using for mapping of th */ +/* e following Source Ports to UG0…7: -Eth MAC4 -MIPSD -PCIe 0/1 -USB 0/1 -Two spar */ +/* e ports */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_SPARE1_SPARE2_MAP_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_SPARE1_SPARE2_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_SPARE0_SPARE1_MAP_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_SPARE0_SPARE1_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_USB1_SPARE0_MAP_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_USB1_SPARE0_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_USB0_USB_MAP_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_USB0_USB_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_PCIE1_PCIE1_MAP_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_PCIE1_PCIE1_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_PCIE0_PCIE0_MAP_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_PCIE0_PCIE0_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_MIPSD_EMAC5_MAP_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_MIPSD_EMAC5_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_EMAC4_EMAC4_MAP_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_EMAC4_EMAC4_MAP_VALUE_RESET_VALUE ( 0x0 ) + + +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_OFFSET ( 0x00000108 ) + +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG_MAP_R1_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG_MAP_R1_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG_MAP_R1_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG_MAP_R1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Spare1_mapping */ + uint32_t spare1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Spare0_mapping */ + uint32_t spare0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USB1_mapping */ + uint32_t usb1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USB0_mapping */ + uint32_t usb0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE1_mapping */ + uint32_t pcie1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE0_mapping */ + uint32_t pcie0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MIPSD_mapping */ + uint32_t mipsd : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC4_mapping */ + uint32_t emac4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG_MAP_R1 ; +#else +typedef struct +{ uint32_t emac4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC4_mapping */ + uint32_t mipsd : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MIPSD_mapping */ + uint32_t pcie0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE0_mapping */ + uint32_t pcie1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE1_mapping */ + uint32_t usb0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USB0_mapping */ + uint32_t usb1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USB1_mapping */ + uint32_t spare0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Spare0_mapping */ + uint32_t spare1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Spare1_mapping */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG_MAP_R1 ; +#endif + +/*****************************************************************************************/ +/* User_Group_0_Exclusive_Thresholds */ +/* User Group 0 Exclusive Thresholds: high exclusive threshold (when the high threshold */ +/* is crossed up - BPM sends Enter EXCLUSIVE message to al BBH clients in this group) an */ +/* d hysteresis to low threshold (when this threshold is crossed down - BPM sends Exit E */ +/* XCLUSIVE message to al BBH clients in this group). The exclusive status is also aplie */ +/* d in reply messages */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE_RESET_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_RSV1_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE ( 0x1000 ) +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE_RESET_VALUE ( 0x1000 ) + + +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_OFFSET ( 0x0000010C ) + +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH ; +#else +typedef struct +{ uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* User_Group_1_Exclusive_Thresholds */ +/* User Group 1 Exclusive Thresholds: high exclusive threshold (when the high threshold */ +/* is crossed up - BPM sends Enter EXCLUSIVE message to al BBH clients in this group) an */ +/* d hysteresis to low threshold (when this threshold is crossed down - BPM sends Exit E */ +/* XCLUSIVE message to al BBH clients in this group). The exclusive status is also aplie */ +/* d in reply messages */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE_RESET_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_RSV1_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE ( 0x1000 ) +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE_RESET_VALUE ( 0x1000 ) + + +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_OFFSET ( 0x00000110 ) + +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH ; +#else +typedef struct +{ uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* User_Group_2_Exclusive_Thresholds */ +/* User Group 2 Exclusive Thresholds: high exclusive threshold (when the high threshold */ +/* is crossed up - BPM sends Enter EXCLUSIVE message to al BBH clients in this group) an */ +/* d hysteresis to low threshold (when this threshold is crossed down - BPM sends Exit E */ +/* XCLUSIVE message to al BBH clients in this group). The exclusive status is also aplie */ +/* d in reply messages */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE_RESET_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_RSV1_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE ( 0x1000 ) +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE_RESET_VALUE ( 0x1000 ) + + +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_OFFSET ( 0x00000114 ) + +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH ; +#else +typedef struct +{ uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* User_Group_3_Exclusive_Thresholds */ +/* User Group 3 Exclusive Thresholds: high exclusive threshold (when the high threshold */ +/* is crossed up - BPM sends Enter EXCLUSIVE message to al BBH clients in this group) an */ +/* d hysteresis to low threshold (when this threshold is crossed down - BPM sends Exit E */ +/* XCLUSIVE message to al BBH clients in this group). The exclusive status is also aplie */ +/* d in reply messages */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE_RESET_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_RSV1_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE ( 0x1000 ) +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE_RESET_VALUE ( 0x1000 ) + + +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_OFFSET ( 0x00000118 ) + +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH ; +#else +typedef struct +{ uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* User_Group_4_Exclusive_Thresholds */ +/* User Group 4 Exclusive Thresholds: high exclusive threshold (when the high threshold */ +/* is crossed up - BPM sends Enter EXCLUSIVE message to al BBH clients in this group) an */ +/* d hysteresis to low threshold (when this threshold is crossed down - BPM sends Exit E */ +/* XCLUSIVE message to al BBH clients in this group). The exclusive status is also aplie */ +/* d in reply messages */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE_RESET_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_RSV1_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE ( 0x1000 ) +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE_RESET_VALUE ( 0x1000 ) + + +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_OFFSET ( 0x0000011C ) + +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH ; +#else +typedef struct +{ uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* User_Group_5_Exclusive_Thresholds */ +/* User Group 5 Exclusive Thresholds: high exclusive threshold (when the high threshold */ +/* is crossed up - BPM sends Enter EXCLUSIVE message to al BBH clients in this group) an */ +/* d hysteresis to low threshold (when this threshold is crossed down - BPM sends Exit E */ +/* XCLUSIVE message to al BBH clients in this group). The exclusive status is also aplie */ +/* d in reply messages */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE_RESET_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_RSV1_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE ( 0x1000 ) +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE_RESET_VALUE ( 0x1000 ) + + +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_OFFSET ( 0x00000120 ) + +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH ; +#else +typedef struct +{ uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* User_Group_6_Exclusive_Thresholds */ +/* User Group 6 Exclusive Thresholds: high exclusive threshold (when the high threshold */ +/* is crossed up - BPM sends Enter EXCLUSIVE message to al BBH clients in this group) an */ +/* d hysteresis to low threshold (when this threshold is crossed down - BPM sends Exit E */ +/* XCLUSIVE message to al BBH clients in this group). The exclusive status is also aplie */ +/* d in reply messages */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE_RESET_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_RSV1_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE ( 0x1000 ) +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE_RESET_VALUE ( 0x1000 ) + + +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_OFFSET ( 0x00000124 ) + +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH ; +#else +typedef struct +{ uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* User_Group_7_Exclusive_Thresholds */ +/* User Group 7 Exclusive Thresholds: high exclusive threshold (when the high threshold */ +/* is crossed up - BPM sends Enter EXCLUSIVE message to al BBH clients in this group) an */ +/* d hysteresis to low threshold (when this threshold is crossed down - BPM sends Exit E */ +/* XCLUSIVE message to al BBH clients in this group). The exclusive status is also aplie */ +/* d in reply messages */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_UG_EXCL_HYST_UG_EXCLUSIVE_HYSTERESIS_VALUE_RESET_VALUE ( 0x100 ) +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_RSV1_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE ( 0x1000 ) +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_UG_EXCL_TR_UG_EXCLUSIVE_THRESHOLD_VALUE_RESET_VALUE ( 0x1000 ) + + +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_OFFSET ( 0x00000128 ) + +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_OFFSET ) +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH ; +#else +typedef struct +{ uint32_t ug_excl_tr : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_high_threshold */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ug_excl_hyst : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_exclusive_hysteresis */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* BPM_route_address_register_2 */ +/* BPM route addresses of MIPSD */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_RADDR2_RSV_RSV_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR2_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_RADDR2_MIPSD_RADDR_MIPSD_ROUTE_ADDRESS_VALUE ( 0x6 ) +#define BPM_MODULE_REGS_BPM_RADDR2_MIPSD_RADDR_MIPSD_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x6 ) + + +#define BPM_MODULE_REGS_BPM_RADDR2_OFFSET ( 0x0000012C ) + +#define BPM_MODULE_REGS_BPM_RADDR2_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_RADDR2_OFFSET ) +#define BPM_MODULE_REGS_BPM_RADDR2_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_RADDR2_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_RADDR2_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_RADDR2_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MIPSD_route_address */ + uint32_t mipsd_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RADDR2 ; +#else +typedef struct +{ uint32_t mipsd_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MIPSD_route_address */ + uint32_t rsv : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_RADDR2 ; +#endif + +/*****************************************************************************************/ +/* BPM_MIPSD_RPLY_TA */ +/* Target address for Reply message as results of Alloc request from MIPSD. The register */ +/* is separeted to two fields: (1) for regular reply on Alloc (2) for wake-up reply */ +/* (as regular Runner default = 0x8000) */ +/*****************************************************************************************/ + +#define BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_RPLY_TA_BROADBUS_ADDRESS_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_RPLY_TA_BROADBUS_ADDRESS_VALUE_RESET_VALUE ( 0x0 ) +#define BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_WKUP_RPLY_TA_BROADBUS_ADDRESS_VALUE ( 0x8000 ) +#define BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_WKUP_RPLY_TA_BROADBUS_ADDRESS_VALUE_RESET_VALUE ( 0x8000 ) + + +#define BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_OFFSET ( 0x00000130 ) + +#define BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_OFFSET ) +#define BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RPLY_TA */ + uint32_t rply_ta : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* WKUP_RPLY_TA */ + uint32_t wkup_rply_ta : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA ; +#else +typedef struct +{ uint32_t wkup_rply_ta : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* WKUP_RPLY_TA */ + uint32_t rply_ta : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RPLY_TA */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA ; +#endif + +#define BPM_MODULE_REGS_BPM_SPARE_BN_MSG_FORMAT_14_BIT_BN_WIDTH ( 0x0 ) +#define BPM_MODULE_REGS_BPM_SPARE_BN_MSG_FORMAT_15_BIT_BN_WIDTH ( 0x1 ) +#define BPM_MODULE_REGS_BPM_SPARE_OFFSET ( 0x0000013C ) +#define BPM_MODULE_REGS_BPM_SPARE_ADDRESS ( BPM_MODULE_REGS_ADDRESS + BPM_MODULE_REGS_BPM_SPARE_OFFSET ) +#define BPM_MODULE_REGS_BPM_SPARE_READ( r ) READ_32( ( BPM_MODULE_REGS_BPM_SPARE_ADDRESS ), (r) ) +#define BPM_MODULE_REGS_BPM_SPARE_WRITE( v ) WRITE_32( ( BPM_MODULE_REGS_BPM_SPARE_ADDRESS ), (v) ) +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + uint32_t rsv : 23 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + uint32_t bn_msg_format : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + uint32_t spare_bits : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_SPARE ; +#else +typedef struct +{ uint32_t spare_bits : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + uint32_t bn_msg_format : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + uint32_t rsv : 23 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS_BPM_SPARE ; +#endif +typedef struct +{ + /* Request_pointer */ + BPM_MODULE_REGS_REQ_PTR req_ptr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Free_pointer */ + BPM_MODULE_REGS_FREE_PTR free_ptr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Multi_Cast_Counter_set_for_pointer */ + BPM_MODULE_REGS_MCNT_PTR mcnt_ptr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Init_of_BPM_Core_RAMs */ + BPM_MODULE_REGS_RAM_INIT ram_init __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* free_pointer_interrupt */ + BPM_MODULE_REGS_FREE_PTR_INT free_ptr_int __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Read_ram_address */ + BPM_MODULE_REGS_READ_RAM_ADDR read_ram_addr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MCNT_pointer_interrupt */ + BPM_MODULE_REGS_MCNT_PTR_INT mcnt_ptr_int __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* read_ram_data0 */ + BPM_MODULE_REGS_READ_RAM_DATA0 read_ram_data0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* read_ram_data1 */ + BPM_MODULE_REGS_READ_RAM_DATA1 read_ram_data1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* read_ram_data2 */ + BPM_MODULE_REGS_READ_RAM_DATA2 read_ram_data2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Source_Port_enable */ + BPM_MODULE_REGS_BPM_SP_EN bpm_sp_en __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Threshold */ + BPM_MODULE_REGS_BPM_GL_TRSH bpm_gl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_Threshold */ + BPM_MODULE_REGS_BPM_UG0_TRSH bpm_ug0_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG1_Threshold */ + BPM_MODULE_REGS_BPM_UG1_TRSH bpm_ug1_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG2_Threshold */ + BPM_MODULE_REGS_BPM_UG2_TRSH bpm_ug2_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG3_Threshold */ + BPM_MODULE_REGS_BPM_UG3_TRSH bpm_ug3_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG4_Threshold */ + BPM_MODULE_REGS_BPM_UG4_TRSH bpm_ug4_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG5_Threshold */ + BPM_MODULE_REGS_BPM_UG5_TRSH bpm_ug5_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG6_Threshold */ + BPM_MODULE_REGS_BPM_UG6_TRSH bpm_ug6_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG7_Threshold */ + BPM_MODULE_REGS_BPM_UG7_TRSH bpm_ug7_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_UG_MAP_R0 */ + BPM_MODULE_REGS_BPM_UG_MAP_R0 bpm_ug_map_r0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_dbg */ + BPM_MODULE_REGS_BPM_DBG bpm_dbg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_UG0_BAC */ + BPM_MODULE_REGS_BPM_UG0_BAC bpm_ug0_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_UG1_BAC */ + BPM_MODULE_REGS_BPM_UG1_BAC bpm_ug1_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_UG2_BAC */ + BPM_MODULE_REGS_BPM_UG2_BAC bpm_ug2_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_UG3_BAC */ + BPM_MODULE_REGS_BPM_UG3_BAC bpm_ug3_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_UG4_BAC */ + BPM_MODULE_REGS_BPM_UG4_BAC bpm_ug4_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_UG5_BAC */ + BPM_MODULE_REGS_BPM_UG5_BAC bpm_ug5_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_UG6_BAC */ + BPM_MODULE_REGS_BPM_UG6_BAC bpm_ug6_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_UG7_BAC */ + BPM_MODULE_REGS_BPM_UG7_BAC bpm_ug7_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_GL_BAC */ + BPM_MODULE_REGS_BPM_GL_BAC bpm_gl_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 8 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_route_address_register_0 */ + BPM_MODULE_REGS_BPM_RADDR0 bpm_raddr0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_route_address_register_1 */ + BPM_MODULE_REGS_BPM_RADDR1 bpm_raddr1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_runner_message_control_register */ + BPM_MODULE_REGS_BPM_RNR_MSG_CTRL bpm_rnr_msg_ctrl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_Target_address_for_Reply_message */ + BPM_MODULE_REGS_BPM_RNR_RPLY_TA bpm_rnr_rply_ta __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_Target_Address_for_Wake-Up_message_on_Reply */ + BPM_MODULE_REGS_BPM_RNR_WKUP_RPLY_TA bpm_rnr_wkup_rply_ta __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_Status_register */ + BPM_MODULE_REGS_BPM_UG_STATUS bpm_ug_status __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_ISR_register */ + BPM_MODULE_REGS_BPM_ISR bpm_isr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 96 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_IER_register */ + BPM_MODULE_REGS_BPM_IER bpm_ier __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_ITR_register */ + BPM_MODULE_REGS_BPM_ITR bpm_itr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_UG_MAP_R1 */ + BPM_MODULE_REGS_BPM_UG_MAP_R1 bpm_ug_map_r1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_0_Exclusive_Thresholds */ + BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH bpm_ug0_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_1_Exclusive_Thresholds */ + BPM_MODULE_REGS_BPM_UG1_EXCL_TRSH bpm_ug1_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_2_Exclusive_Thresholds */ + BPM_MODULE_REGS_BPM_UG2_EXCL_TRSH bpm_ug2_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_3_Exclusive_Thresholds */ + BPM_MODULE_REGS_BPM_UG3_EXCL_TRSH bpm_ug3_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_4_Exclusive_Thresholds */ + BPM_MODULE_REGS_BPM_UG4_EXCL_TRSH bpm_ug4_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_5_Exclusive_Thresholds */ + BPM_MODULE_REGS_BPM_UG5_EXCL_TRSH bpm_ug5_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_6_Exclusive_Thresholds */ + BPM_MODULE_REGS_BPM_UG6_EXCL_TRSH bpm_ug6_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_7_Exclusive_Thresholds */ + BPM_MODULE_REGS_BPM_UG7_EXCL_TRSH bpm_ug7_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_route_address_register_2 */ + BPM_MODULE_REGS_BPM_RADDR2 bpm_raddr2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BPM_MIPSD_RPLY_TA */ + BPM_MODULE_REGS_BPM_MIPSD_RPLY_TA bpm_mipsd_rply_ta __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + BPM_MODULE_REGS_BPM_SPARE bpm_spare __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE_REGS ; + +typedef struct +{ + /* regs function */ + BPM_MODULE_REGS regs __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +BPM_MODULE ; + +typedef struct +{ + /* MODULE */ + BPM_MODULE module __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +BPM_FOR_ALL ; +#endif /* BPM_H_INCLUDED */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring.c b/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring.c new file mode 100755 index 0000000000..0317351de0 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring.c @@ -0,0 +1,306 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + + */ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the implementation of the Runner CPU ring interface */ +/* */ +/******************************************************************************/ + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ +#define INTERN_PRINT printf + +#if !defined(RDP_SIM) || defined(XRDP) +#include "rdp_cpu_ring.h" +#include "rdp_cpu_ring_inline.h" +#include "rdp_mm.h" + +#define ____cacheline_aligned +#define shell_print(dummy,format,...) xprintf(format, ##__VA_ARGS__) + +#if !defined(XRDP) && !defined(__KERNEL__) && !defined(__UBOOT__) +#error "rdp_cpu_ring is supported only in CFE and Kernel modules or XRDP simulator" +#endif + +RING_DESCTIPTOR ____cacheline_aligned host_ring[D_NUM_OF_RING_DESCRIPTORS] = + { }; +EXPORT_SYMBOL(host_ring); + +/*delete a preallocated ring*/ +int rdp_cpu_ring_delete_ring(uint32_t ring_id) +{ + RING_DESCTIPTOR *pDescriptor; + int rc; + + pDescriptor = &host_ring[ring_id]; + if (!pDescriptor->num_of_entries) { + INTERN_PRINT("ERROR:deleting ring_id %d which does not exists!", + ring_id); + return -1; + } + + rc = rdp_cpu_ring_buffers_free(pDescriptor); + if (rc) { + INTERN_PRINT + ("ERROR: failed free ring buffers ring_id %d, err %d\n", + ring_id, rc); + return rc; + } + + /* free any buffers in buff_cache */ + while (pDescriptor->buff_cache_cnt) { + pDescriptor->databuf_free(pDescriptor-> + buff_cache[--pDescriptor-> + buff_cache_cnt], 0, + pDescriptor); + } + + /*free buff_cache */ + if (pDescriptor->buff_cache) + CACHED_FREE(pDescriptor->buff_cache); + + /*delete the ring of descriptors in case of non-coherent */ +#ifndef RDP_SIM + if (pDescriptor->base) { + rdp_mm_aligned_free((void *)(pDescriptor->base), + pDescriptor->num_of_entries * + pDescriptor->size_of_entry); + } +#endif + pDescriptor->num_of_entries = 0; + + return 0; +} + +EXPORT_SYMBOL(rdp_cpu_ring_delete_ring); + +int rdp_cpu_ring_create_ring(uint32_t ring_id, + uint8_t ring_type, + uint32_t entries, + bdmf_phys_addr_t * ring_head, + uint32_t packetSize, + RING_CB_FUNC * ringCb, uint32_t ring_prio) +{ + return rdp_cpu_ring_create_ring_ex(ring_id, ring_type, entries, + ring_head, NULL, packetSize, ringCb, + ring_prio); +} + +EXPORT_SYMBOL(rdp_cpu_ring_create_ring); + +/* Using void * instead of (rdpa_cpu_rxq_ic_cfg_t *) to avoid CFE compile errors*/ +int rdp_cpu_ring_create_ring_ex(uint32_t ring_id, + uint8_t ring_type, + uint32_t entries, + bdmf_phys_addr_t * ring_head, + bdmf_phys_addr_t * rw_idx_addr, + uint32_t packetSize, + RING_CB_FUNC * ringCb, uint32_t ring_prio) +{ + RING_DESCTIPTOR *pDescriptor; + bdmf_phys_addr_t phy_addr = 0; + + if (ring_id >= RING_ID_NUM_OF) { + INTERN_PRINT("ERROR: ring_id %d out of range(%d)", ring_id, + RING_ID_NUM_OF); + return -1; + } + + pDescriptor = &host_ring[ring_id]; + + if (pDescriptor->num_of_entries) { + INTERN_PRINT + ("ERROR: ring_id %d already exists! must be deleted first", + ring_id); + return -1; + } + + if (!entries) { + INTERN_PRINT("ERROR: can't create ring with 0 packets\n"); + return -1; + } + + /*set ring parameters */ + pDescriptor->ring_id = ring_id; + pDescriptor->num_of_entries = entries; + pDescriptor->num_of_entries_mask = pDescriptor->num_of_entries - 1; + pDescriptor->ring_prio = ring_prio; + +#ifdef XRDP + if (ring_type == rdpa_ring_feed) + pDescriptor->size_of_entry = sizeof(CPU_FEED_DESCRIPTOR); + else if (ring_type == rdpa_ring_recycle) + pDescriptor->size_of_entry = sizeof(CPU_RECYCLE_DESCRIPTOR); + else if (ring_type == rdpa_ring_cpu_tx) + pDescriptor->size_of_entry = + sizeof(RDD_RING_CPU_TX_DESCRIPTOR_DTS); + else if (ring_type == rdpa_ring_data) +#endif + pDescriptor->size_of_entry = sizeof(CPU_RX_DESCRIPTOR); + + INTERN_PRINT + ("Creating CPU ring for queue number %d with %d packets descriptor=0x%p, size_of_entry %d\n", + ring_id, entries, pDescriptor, pDescriptor->size_of_entry); + + pDescriptor->buff_cache_cnt = 0; + pDescriptor->packet_size = packetSize; + pDescriptor->type = ring_type; + + pDescriptor->databuf_alloc = rdp_databuf_alloc; + pDescriptor->databuf_free = rdp_databuf_free; + pDescriptor->data_dump = rdp_packet_dump; + + if (ringCb) { /* overwrite if needed */ + pDescriptor->data_dump = ringCb->data_dump; + pDescriptor->buff_mem_context = ringCb->buff_mem_context; +#ifndef XRDP + pDescriptor->databuf_alloc = ringCb->databuf_alloc; + pDescriptor->databuf_free = ringCb->databuf_free; +#endif + } + + /*TODO:update the comment allocate buff_cache which helps to reduce the overhead of when + * allocating data buffers to ring descriptor */ + pDescriptor->buff_cache = + (uint8_t + **) (CACHED_MALLOC_ATOMIC(sizeof(uint8_t *) * MAX_BUFS_IN_CACHE)); + if (pDescriptor->buff_cache == NULL) { + INTERN_PRINT + ("failed to allocate memory for cache of data buffers \n"); + return -1; + } + + /*allocate ring descriptors - must be non-cacheable memory */ + pDescriptor->base = + rdp_mm_aligned_alloc((pDescriptor->size_of_entry * entries), + &phy_addr); + if (pDescriptor->base == NULL) { + INTERN_PRINT("failed to allocate memory for ring descriptor\n"); + rdp_cpu_ring_delete_ring(ring_id); + return -1; + } + + if (rdp_cpu_ring_buffers_init(pDescriptor, ring_id)) + return -1; + +#ifndef XRDP + /*set the ring header to the first entry */ + pDescriptor->head = (CPU_RX_DESCRIPTOR *) pDescriptor->base; + + /*using pointer arithmetics calculate the end of the ring */ + pDescriptor->end = (CPU_RX_DESCRIPTOR *) pDescriptor->base + entries; +#endif + + *ring_head = phy_addr; + +#ifndef XRDP + INTERN_PRINT("Done initializing Ring %d Base=0x%pK End=0x%pK " + "calculated entries= %ld RDD Base=%lxK descriptor=0x%p\n", + ring_id, pDescriptor->base, pDescriptor->end, + (long)(pDescriptor->end - + (CPU_RX_DESCRIPTOR *) pDescriptor->base), + (unsigned long)phy_addr, pDescriptor); +#else + INTERN_PRINT + ("Done initializing Ring %d Base=0x%p num of entries= %d RDD Base=%lx descriptor=0x%p\n", + ring_id, pDescriptor->base, pDescriptor->num_of_entries, + (unsigned long)phy_addr, pDescriptor); +#endif + + return 0; +} + +EXPORT_SYMBOL(rdp_cpu_ring_create_ring_ex); + +#if defined(__UBOOT__) || !(defined(CONFIG_BCM63138) || defined(CONFIG_BCM63148)) +/*this API copies the next available packet from ring to given pointer*/ +int rdp_cpu_ring_read_packet_copy(uint32_t ring_id, CPU_RX_PARAMS * rxParams) +{ + RING_DESCTIPTOR *pDescriptor = &host_ring[ring_id]; +#ifndef XRDP + volatile CPU_RX_DESCRIPTOR *pTravel = + (volatile CPU_RX_DESCRIPTOR *)pDescriptor->head; +#endif + void *client_pdata; + uint32_t ret = 0; + + /* Data offset field is field ONLY in CFE driver on BCM6858 + * To ensure correct work of another platforms the data offset field should be zeroed */ + rxParams->data_offset = 0; + + client_pdata = (void *)rxParams->data_ptr; + +#ifndef XRDP + ret = ReadPacketFromRing(pDescriptor, pTravel, rxParams); +#else + ret = ReadPacketFromRing(pDescriptor, rxParams); +#endif + if (ret) + goto exit; + + /*copy the data to user buffer */ + /*TODO: investigate why INV_RANGE is needed before memcpy, */ + INV_RANGE((rxParams->data_ptr + rxParams->data_offset), + rxParams->packet_size); + memcpy(client_pdata, + (void *)(rxParams->data_ptr + rxParams->data_offset), + rxParams->packet_size); + + /*Assign the data buffer back to ring */ + INV_RANGE((rxParams->data_ptr + rxParams->data_offset), + rxParams->packet_size); +#ifndef XRDP + AssignPacketBuffertoRing(pDescriptor, pTravel, rxParams->data_ptr); +#else + AssignPacketBuffertoRing(pDescriptor, rxParams->data_ptr); +#endif + +exit: + rxParams->data_ptr = client_pdata; + return ret; +} +#endif + +/* Callback Functions */ + +void rdp_packet_dump(uint32_t ringId, rdpa_cpu_rx_info_t * info) +{ + char name[10]; + + sprintf(name, "Queue-%d", ringId); +#if !defined( __UBOOT__) && defined(__KERNEL__) + rdpa_cpu_rx_dump_packet(name, rdpa_cpu_host, ringId, info, 0); +#endif +} + +EXPORT_SYMBOL(rdp_packet_dump); + +void *rdp_databuf_alloc(RING_DESCTIPTOR * pDescriptor) +{ + void *pBuf = KMALLOC(BCM_PKTBUF_SIZE, 64); + + if (pBuf) { + INV_RANGE(pBuf, BCM_PKTBUF_SIZE); + return pBuf; + } + return NULL; +} + +void rdp_databuf_free(void *pBuf, uint32_t context, + RING_DESCTIPTOR * pDescriptor) +{ + KFREE(pBuf); +} + +#endif diff --git a/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring.h b/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring.h new file mode 100755 index 0000000000..8b26b81ca7 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring.h @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the implementation of the Runner CPU ring interface */ +/* */ +/******************************************************************************/ + +#ifndef _RDP_CPU_RING_H_ +#define _RDP_CPU_RING_H_ + +#if !defined(RDP_SIM) || defined(XRDP) + +#if defined(__KERNEL__) || defined(__UBOOT__) +#include "bcm_pkt_lengths.h" +#include "bcm_mm.h" +#if defined(__UBOOT__) && defined(XRDP) +#include "rdp_subsystem_common.h" +#endif +#endif + +#include "rdpa_types.h" +#include "rdpa_cpu_basic.h" +#include "rdd.h" +#include "rdp_cpu_ring_defs.h" + +#ifdef __UBOOT__ + +#ifndef XRDP +#define RDP_CPU_RING_MAX_QUEUES 1 +#define RDP_WLAN_MAX_QUEUES 0 +#endif +#define rdpa_cpu_rx_info_t int + +#else + +#include "rdpa_cpu.h" +#include "bdmf_system.h" +#include "bdmf_shell.h" +#include "bdmf_dev.h" + +#ifdef XRDP +#include "rdd_cpu_rx.h" +#define RDPA_PKT_MIN_ALIGN 128 +#ifndef RDP_SIM +#define DEF_DATA_RING_SIZE 1024 +#else +#define DEF_DATA_RING_SIZE 128 +#endif + +#define RECYCLE_RING_SIZE (DEF_DATA_RING_SIZE * RDD_CPU_RING_DESCRIPTORS_TABLE_SIZE) +#define FEED_RING_SIZE (DEF_DATA_RING_SIZE * RDD_CPU_RING_DESCRIPTORS_TABLE_SIZE) +#else +#define RDPA_PKT_MIN_ALIGN 0 +#define RDP_CPU_RING_MAX_QUEUES RDPA_CPU_MAX_QUEUES +#define RDP_WLAN_MAX_QUEUES RDPA_WLAN_MAX_QUEUES +#endif + +/* extern const bdmf_attr_enum_table_t rdpa_cpu_reason_enum_table; */ +#endif + +#ifdef RDP_SIM +#include "rdp_cpu_sim.h" +#define BCM_PKTBUF_SIZE 2048 +#endif + + +#ifndef XRDP +#define CPU_RING_DEBUG +#endif +#ifdef CPU_RING_DEBUG + #define DO_DEBUG(a_) a_ +#else + #define DO_DEBUG(a_) +#endif + + +typedef struct +{ + uint8_t* data_ptr; + uint8_t data_offset; + uint16_t packet_size; + uint16_t flow_id; + uint16_t reason; + uint16_t src_bridge_port; + uint16_t dst_ssid; + uint16_t ptp_index; + uint16_t free_index; + uint32_t wl_metadata; + +#ifdef XRDP + uint8_t color; + uint8_t mcast_tx_prio:3; +#else + uint8_t reserved:3; +#endif + uint8_t is_rx_offload:1; + uint8_t is_ipsec_upstream:1; + uint8_t is_ucast:1; + uint8_t is_exception:1; + uint8_t is_csum_verified:1; +#ifdef CONFIG_CPU_REDIRECT_MODE_SUPPORT + uint8_t cpu_redirect_egress_queue; + uint8_t cpu_redirect_wan_flow; +#endif + uint8_t omci_enc_key_index; +} +CPU_RX_PARAMS; + + +#define MAX_BUFS_IN_CACHE 32 +typedef struct RING_DESCTIPTOR RING_DESCTIPTOR; +typedef void* (*databuf_alloc_func)(RING_DESCTIPTOR *pDescriptor); +typedef void (*databuf_free_func)(void *pBuf, uint32_t context, RING_DESCTIPTOR *pDescriptor); +typedef void (*data_dump_func)(uint32_t rindId, rdpa_cpu_rx_info_t *info); +typedef void* (*memory_create_func)(RING_DESCTIPTOR *pDescriptor); +typedef void (*memory_delete_func)(void *buffMem); + +struct RING_DESCTIPTOR +{ + uint32_t ring_id; + uint32_t ring_prio; + uint32_t num_of_entries; + uint32_t num_of_entries_mask; + uint32_t size_of_entry; + uint32_t packet_size; + rdpa_ring_type_t type; + void* base; +#ifndef XRDP + CPU_RX_DESCRIPTOR* head; + CPU_RX_DESCRIPTOR* end; +#endif + uint32_t buff_cache_cnt; + uint8_t **buff_cache; + void *buff_mem_context; + databuf_alloc_func databuf_alloc; + databuf_free_func databuf_free; + data_dump_func data_dump; + memory_create_func memory_create; + memory_delete_func memory_delete; +#ifdef XRDP + uint16_t shadow_read_idx; + uint16_t shadow_write_idx; + uint16_t accum_inc; + uint16_t lowest_filling_level; + uint16_t *read_idx; + uint16_t *write_idx; +#endif /* XRDP */ +#ifdef CPU_RING_DEBUG + uint32_t stats_received; /* for every queue */ + uint32_t stats_dropped; /* for every queue */ + uint32_t stats_buff_err; /* buffer allocation failure */ + int dump_enable; +#endif /* CPU_RING_DEBUG */ +}; + +typedef struct +{ +#ifndef XRDP + databuf_alloc_func databuf_alloc; + databuf_free_func databuf_free; +#endif + data_dump_func data_dump; + void *buff_mem_context; +} RING_CB_FUNC; + +int rdp_cpu_ring_read_packet_copy(uint32_t ringId, CPU_RX_PARAMS* rxParams); + +int rdp_cpu_ring_create_ring(uint32_t ring_id, + uint8_t ring_type, + uint32_t entries, + bdmf_phys_addr_t *ring_head, uint32_t packetSize, + RING_CB_FUNC *cbFunc, + uint32_t prio); + +int rdp_cpu_ring_create_ring_ex(uint32_t ring_id, + uint8_t ring_type, + uint32_t entries, + bdmf_phys_addr_t* ring_head, + bdmf_phys_addr_t* rw_idx_addr, + uint32_t packetSize, + RING_CB_FUNC* ringCb, + uint32_t prio); + +int rdp_cpu_ring_delete_ring(uint32_t ringId); + +int cpu_ring_shell_admin_ring(void *shell_priv, uint32_t ring_id, uint32_t admin_status); + +/* Callback Functions */ + +void rdp_packet_dump(uint32_t ringId, rdpa_cpu_rx_info_t *info); + +/* BPM (or CFE)*/ + +void* rdp_databuf_alloc(RING_DESCTIPTOR *pDescriptor); + +void rdp_databuf_free(void *pBuf, uint32_t context, RING_DESCTIPTOR *pDescriptor); + +/* Kmem_Cache */ + +void* rdp_databuf_alloc_cache(RING_DESCTIPTOR *pDescriptor); + +void rdp_databuf_free_cache(void *pBuf, uint32_t context, RING_DESCTIPTOR *pDescriptor); + +extern bdmf_fastlock feed_ring_lock; + +#else /* !defined(RDP_SIM) || defined(XRDP) */ +#include "rdp_cpu_ring_sim.h" +#define RDP_CPU_RING_MAX_QUEUES RDPA_CPU_MAX_QUEUES +#define RDP_WLAN_MAX_QUEUES RDPA_WLAN_MAX_QUEUES +#endif /* !defined(RDP_SIM) || defined(XRDP) */ + +/*array of possible rings private data*/ +#ifndef XRDP +#define RING_ID_NUM_OF (RDP_CPU_RING_MAX_QUEUES + RDP_WLAN_MAX_QUEUES) +#endif +#define D_NUM_OF_RING_DESCRIPTORS RING_ID_NUM_OF +#endif /* _RDP_CPU_RING_H_ */ diff --git a/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring_defs.h b/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring_defs.h new file mode 100755 index 0000000000..dc6e75eb13 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring_defs.h @@ -0,0 +1,167 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + * + */ + + +#ifndef _RDP_CPU_RING_DEFS_H +#define _RDP_CPU_RING_DEFS_H + +#include "access_macros.h" + +typedef enum +{ + OWNERSHIP_RUNNER, + OWNERSHIP_HOST +}E_DESCRIPTOR_OWNERSHIP; + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + union{ + uint32_t word0; + struct{ + uint32_t flow_id:12; + uint32_t is_chksum_verified:1; + uint32_t source_port:5; + uint32_t packet_length:14; + }; + struct{ + uint32_t reserved7:1; + uint32_t ipsec_error:3; + uint32_t reserved8:2; + uint32_t cpu_rx_queue:4; + uint32_t is_ipsec_upstream:1; + uint32_t reserved9:1; + uint32_t is_checksum_verified:1; + uint32_t src_port:5; + uint32_t pkt_length:14; + }; + }; + union{ + uint32_t word1; + struct{ + uint32_t payload_offset_flag:1; + uint32_t reason:6; + uint32_t dst_ssid:16; + uint32_t reserved1:4; + uint32_t is_exception:1; + uint32_t descriptor_type:4; + /* uint32_t abs_flag:1; */ + /* uint32_t flow_id:8; */ + + }; + }; + union{ + uint32_t word2; + struct{ + uint32_t ownership:1; + uint32_t reserved2:2; + uint32_t host_buffer_data_pointer:29; + }; + }; + union{ + uint32_t word3; + struct{ + uint16_t is_rx_offload:1; + uint16_t is_ucast:1; + uint16_t wl_tx_prio:4; + uint16_t reserved4:6; + uint16_t ip_sync_1588_idx:4; + union { + uint16_t ssid_vector; + uint16_t wl_metadata; + struct{ + uint16_t wl_tx_priority:2; /* Must be removed with Oren FW change */ + uint16_t wl_chain_id:14; + }; + struct{ + uint16_t reserved6:2; + uint16_t ssid:4; + uint16_t flow_ring_idx:10; + }; + }; + }; + }; +} +CPU_RX_DESCRIPTOR; +#else +typedef struct +{ + union{ + uint32_t word0; + struct{ + uint32_t packet_length:14; + uint32_t source_port:5; + uint32_t is_chksum_verified:1; + uint32_t flow_id:12; + /* uint32_t descriptor_type:4; */ + /* uint32_t reserved0:9; */ + }; + struct{ + uint32_t pkt_length:14; + uint32_t src_port:5; + uint32_t is_checksum_verified:1; + uint32_t reserved9:1; + uint32_t is_ipsec_upstream:1; + uint32_t cpu_rx_queue:4; + uint32_t reserved8:2; + uint32_t ipsec_error:3; + uint32_t reserved7:1; + }; + }; + + union{ + uint32_t word1; + struct{ + /* uint32_t flow_id:8; */ + /* uint32_t abs_flag:1; */ + uint32_t descriptor_type:4; + uint32_t is_exception:1; + uint32_t reserved1:4; + uint32_t dst_ssid:16; + uint32_t reason:6; + uint32_t payload_offset_flag:1; + }; + }; + + union{ + uint32_t word2; + uint32_t data_ptr; + struct{ + uint32_t host_buffer_data_pointer:31; + uint32_t ownership:1; + }; + }; + union{ + uint32_t word3; + struct{ + union { + uint16_t free_index; + uint16_t wl_metadata; + uint16_t ssid_vector; + struct { + uint16_t flow_ring_idx:10; + uint16_t ssid:4; + uint16_t reserved6:2; + }; + struct { + uint16_t wl_chain_id:14; + uint16_t wl_tx_priority:2; + }; + }; + uint16_t ip_sync_1588_idx:4; + uint16_t reserved4:6; + uint16_t wl_tx_prio:4; + uint16_t is_ucast:1; + uint16_t is_rx_offload:1; + }; + }; +} +CPU_RX_DESCRIPTOR; +#endif + +#endif /*_RDP_CPU_RING_DEFS_H */ diff --git a/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring_inline.h b/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring_inline.h new file mode 100755 index 0000000000..2eb675b4fa --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_cpu_ring_inline.h @@ -0,0 +1,209 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the implementation of the Runner CPU ring interface */ +/* */ +/******************************************************************************/ + +#ifndef _RDP_CPU_RING_INLINE_H_ +#define _RDP_CPU_RING_INLINE_H_ + +#ifndef RDP_SIM + +#include "rdp_cpu_ring.h" + +#if defined(__KERNEL__) || defined(__UBOOT__) + +static inline void AssignPacketBuffertoRing(RING_DESCTIPTOR *pDescriptor, volatile CPU_RX_DESCRIPTOR *pTravel, void *pBuf) +{ + /* assign the buffer address to ring and set the ownership to runner + * by clearing bit 31 which is used as ownership flag */ + + pTravel->word2 = swap4bytes(((VIRT_TO_PHYS(pBuf)) & 0x7fffffff)); + + /* advance the head ptr, wrap around if needed*/ + if (++pDescriptor->head == pDescriptor->end) + pDescriptor->head = pDescriptor->base; +} + +#if defined(BCM_DSL_RDP) +static inline int ReadPacketFromRing(RING_DESCTIPTOR *pDescriptor, volatile CPU_RX_DESCRIPTOR *pTravel, CPU_RX_PARAMS *rxParams) +{ + /* pTravel is in uncached mem so reading 32bits at a time into + cached mem improves performance*/ + CPU_RX_DESCRIPTOR rxDesc; + + rxDesc.word2 = pTravel->word2; + //printk("ReadPacketFromRing addr=%p ddr= %x\n",pTravel, rxDesc.word2); + rxDesc.word2 = swap4bytes(rxDesc.word2); + + //printk("ReadPacketFromRing swapped bufaddr= %x\n", rxDesc.word2); + if ((rxDesc.word2 & 0x80000000)) + { + rxDesc.ownership = 0; /*clear the ownership bit */ + rxParams->data_ptr = (uint8_t *)PHYS_TO_CACHED(rxDesc.word2); + + rxDesc.word0 = pTravel->word0; + rxDesc.word0 = swap4bytes(rxDesc.word0); + + rxParams->packet_size = rxDesc.packet_length; + rxParams->src_bridge_port = (BL_LILAC_RDD_BRIDGE_PORT_DTE)rxDesc.source_port; + rxParams->flow_id = rxDesc.flow_id; + +#if defined(CONFIG_RUNNER_CSO) + rxParams->is_csum_verified = rxDesc.is_chksum_verified; +#endif + rxDesc.word1 = pTravel->word1; + rxDesc.word1 = swap4bytes(rxDesc.word1); + + rxParams->dst_ssid = rxDesc.dst_ssid; + + rxDesc.word3 = pTravel->word3; + rxDesc.word3 = swap4bytes(rxDesc.word3); + + if (rxDesc.is_rx_offload) + { + rxParams->reason = rdpa_cpu_rx_reason_ipsec; /* hardcoded, in use by ipsec only */ + rxParams->free_index = rxDesc.free_index; + rxParams->is_rx_offload = rxDesc.is_rx_offload; + rxParams->is_ipsec_upstream = rxDesc.is_ipsec_upstream; + } + else + { + rxParams->reason = (rdpa_cpu_reason)rxDesc.reason; + rxParams->wl_metadata = rxDesc.wl_metadata; + rxParams->ptp_index = pTravel->ip_sync_1588_idx; + rxParams->wl_metadata = 0; + } + + return 0; + } + + return BL_LILAC_RDD_ERROR_CPU_RX_QUEUE_EMPTY; +} + +#else +static inline int ReadPacketFromRing(RING_DESCTIPTOR *pDescriptor, volatile CPU_RX_DESCRIPTOR *pTravel, CPU_RX_PARAMS *rxParams) +{ + /* pTravel is in uncached mem so reading 32bits at a time into + cached mem improves performance*/ + CPU_RX_DESCRIPTOR rxDesc; + + rxDesc.word2 = pTravel->word2; + if ((rxDesc.ownership == OWNERSHIP_HOST)) + { + rxParams->data_ptr = (uint8_t *)PHYS_TO_CACHED(rxDesc.word2); + + rxDesc.word0 = pTravel->word0; + rxParams->packet_size = rxDesc.packet_length; + rxParams->src_bridge_port = (BL_LILAC_RDD_BRIDGE_PORT_DTE)rxDesc.source_port; + rxParams->flow_id = rxDesc.flow_id; + + rxDesc.word1 = pTravel->word1 ; + rxParams->reason = (rdpa_cpu_reason)rxDesc.reason; + rxParams->dst_ssid = rxDesc.dst_ssid; + rxDesc.word3 = pTravel->word3 ; + rxParams->wl_metadata = rxDesc.wl_metadata; + rxParams->ptp_index = pTravel->ip_sync_1588_idx; + + return 0; + } + + return BL_LILAC_RDD_ERROR_CPU_RX_QUEUE_EMPTY; +} +#endif + +static inline int rdp_cpu_ring_buffers_free(RING_DESCTIPTOR *pDescriptor) +{ + volatile CPU_RX_DESCRIPTOR *pTravel; + uint32_t i; + + for (pTravel =(volatile CPU_RX_DESCRIPTOR*)pDescriptor->base, i = 0 ; i < pDescriptor->num_of_entries; + pTravel++, i++) + { + if (pTravel->word2) + { +#ifdef _BYTE_ORDER_LITTLE_ENDIAN_ + // little-endian ownership is MSb of LSB + pTravel->word2 = swap4bytes(pTravel->word2 | 0x80); +#else + // big-endian ownership is MSb of MSB + pTravel->ownership = OWNERSHIP_HOST; +#endif + pDescriptor->databuf_free((void *)PHYS_TO_CACHED(pTravel->host_buffer_data_pointer), 0, pDescriptor); + pTravel->word2 = 0; + } + } + + return 0; +} + +static inline int rdp_cpu_ring_buffers_init(RING_DESCTIPTOR *pDescriptor, uint32_t ring_id) +{ + volatile CPU_RX_DESCRIPTOR *pTravel; + void *dataPtr; + uint32_t i; + + for (pTravel =(volatile CPU_RX_DESCRIPTOR*)pDescriptor->base, i = 0; i < pDescriptor->num_of_entries; + pTravel++ ,i++) + { + memset((void*)pTravel,0,sizeof(*pTravel)); + + /*allocate actual packet in DDR*/ + + dataPtr = pDescriptor->databuf_alloc(pDescriptor); + + if (dataPtr) + { +#ifdef _BYTE_ORDER_LITTLE_ENDIAN_ + /* since ARM is little-endian and runner is big-endian + * we need to byte-swap dataPtr and clear ownership + */ + pTravel->word2 = swap4bytes(VIRT_TO_PHYS(dataPtr)) & ~0x80; +#else + pTravel->host_buffer_data_pointer = VIRT_TO_PHYS(dataPtr); + pTravel->ownership = OWNERSHIP_RUNNER; +#endif + } + else + { + pTravel->host_buffer_data_pointer = 0; /* NULL */ + printk("failed to allocate packet map entry=%d\n", i); + rdp_cpu_ring_delete_ring(ring_id); + return -1; + } + } + return 0; +} + +#endif /* defined(__KERNEL__) || defined(__UBOOT__) */ +#endif /* RDP_SIM */ + +static inline int rdp_cpu_ring_is_ownership_host(volatile CPU_RX_DESCRIPTOR *pTravel) +{ +#ifdef _BYTE_ORDER_LITTLE_ENDIAN_ + return pTravel->word2 & 0x80; +#else + return pTravel->ownership == OWNERSHIP_HOST; +#endif +} + +static inline void rdp_cpu_ring_set_ownership_runner(volatile CPU_RX_DESCRIPTOR *pTravel) +{ +#ifdef _BYTE_ORDER_LITTLE_ENDIAN_ + pTravel->word2 &= ~0x80; +#else + pTravel->ownership = OWNERSHIP_RUNNER; +#endif +} + +#endif /* _RDP_CPU_RING_INLINE_H_ */ diff --git a/arch/arm/mach-bcmbca/rdp/rdp_dma.h b/arch/arm/mach-bcmbca/rdp/rdp_dma.h new file mode 100755 index 0000000000..a5bf5a9b36 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_dma.h @@ -0,0 +1,1862 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef __DMA_H_INCLUDED +#define __DMA_H_INCLUDED + +/* File automatically generated by Reggae at 15/08/2013 10:54:36 */ + +#include "access_macros.h" +#include "packing.h" +#include "rdp_map.h" + +/*****************************************************************************************/ +/* The Direct Memory Access (DMA) module serves peripheral (EMACs and GPON) requests for */ +/* writes and reads from DDR and packet SRAM. DMA connects the peripherals to DDR. S */ +/* DMA connects the same peripherals to packet SRAM. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Blocks offsets */ +/*****************************************************************************************/ +/*****************************************************************************************/ +/* Functions offsets and addresses */ +/*****************************************************************************************/ +#define DMA_REGS_0_CONFIG_OFFSET ( 0x00000000 ) +#define DMA_REGS_0_CONFIG_ADDRESS ( DMA_REGS_0_OFFSET + DMA_REGS_0_CONFIG_OFFSET ) + +#define DMA_REGS_0_DEBUG_OFFSET ( 0x00000100 ) +#define DMA_REGS_0_DEBUG_ADDRESS ( DMA_REGS_0_OFFSET + DMA_REGS_0_DEBUG_OFFSET ) + +#define DMA_REGS_1_CONFIG_OFFSET ( 0x00000000 ) +#define DMA_REGS_1_CONFIG_ADDRESS ( DMA_REGS_1_OFFSET + DMA_REGS_1_CONFIG_OFFSET ) + +#define DMA_REGS_1_DEBUG_OFFSET ( 0x00000100 ) +#define DMA_REGS_1_DEBUG_ADDRESS ( DMA_REGS_1_OFFSET + DMA_REGS_1_DEBUG_OFFSET ) + +/* 'd' is module index */ +/* 'i' is block index */ +/* 'j' is function index */ +/* 'e' is function entry */ +/* 'k' is register index */ + +/*****************************************************************************************/ +/* BB_SOURCE */ +/* Broadbus source address of DMA and SDMA */ +/*****************************************************************************************/ + +#define DMA_REGS_CONFIG_SOURCE_R1_DEFAULT_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_SOURCE_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_SOURCE_SOURCE_DEFAULT_DMA_VALUE ( 0x16 ) +#define DMA_REGS_CONFIG_SOURCE_SOURCE_DEFAULT_DMA_VALUE_RESET_VALUE ( 0x16 ) +#define DMA_REGS_CONFIG_SOURCE_SOURCE_DEFAULT_SDMA_VALUE ( 0x18 ) +#define DMA_REGS_CONFIG_SOURCE_SOURCE_DEFAULT_SDMA_VALUE_RESET_VALUE ( 0x18 ) + + +#define DMA_REGS_CONFIG_SOURCE_OFFSET ( 0x00000000 ) + +#define DMA_REGS_0_CONFIG_SOURCE_ADDRESS ( DMA_REGS_0_CONFIG_ADDRESS + DMA_REGS_CONFIG_SOURCE_OFFSET ) +#define DMA_REGS_0_CONFIG_SOURCE_READ( r ) READ_32( ( DMA_REGS_0_CONFIG_SOURCE_ADDRESS ), (r) ) +#define DMA_REGS_0_CONFIG_SOURCE_WRITE( v ) WRITE_32( ( DMA_REGS_0_CONFIG_SOURCE_ADDRESS ), (v) ) + +#define DMA_REGS_1_CONFIG_SOURCE_ADDRESS ( DMA_REGS_1_CONFIG_ADDRESS + DMA_REGS_CONFIG_SOURCE_OFFSET ) +#define DMA_REGS_1_CONFIG_SOURCE_READ( r ) READ_32( ( DMA_REGS_1_CONFIG_SOURCE_ADDRESS ), (r) ) +#define DMA_REGS_1_CONFIG_SOURCE_WRITE( v ) WRITE_32( ( DMA_REGS_1_CONFIG_SOURCE_ADDRESS ), (v) ) + + +extern uint32_t DMA_REGS_CONFIG_SOURCE_ARRAY [ ] ; + +#define DMA_REGS_CONFIG_SOURCE_WRITE( i, v ) WRITE_32( DMA_REGS_CONFIG_SOURCE_ARRAY [ i ], (v) ) +#define DMA_REGS_CONFIG_SOURCE_READ( i, r ) READ_32( DMA_REGS_CONFIG_SOURCE_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 27 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bb_source */ + uint32_t source : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_SOURCE ; +#else +typedef struct +{ uint32_t source : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bb_source */ + uint32_t r1 : 27 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_SOURCE ; +#endif + +/*****************************************************************************************/ +/* MEMORY_ALLOCATION */ +/* This array of registers defines the memory allocation for the peripherals, for upstre */ +/* am. The allocation is of number of 128byte buffers out of the total 32 buffers for s */ +/* dma or 96 buffers in dma in the upload data RAM. For the DMA, the buffers are divid */ +/* ed between 2 physical RAMs 964 in the first, 32 in the second). The decision which cl */ +/* ients FIFO is located in which memory is done by the register in address 0x98. The a */ +/* llocation is done by defining a base address (aligned to 128 bytes) and the number of */ +/* allocated buffers. Note that the memory allocation should not contain wrap around. */ +/* For example, if three buffers are needed, do not allocate buffers 30, 31 and 0. The */ +/* number of allocated CDs is the same of data buffers - one chunk descriptor per buffe */ +/* r, therefore allocation in CD RAM is defined only by offset address. The order of */ +/* peripherals within the array is: Ethernet 0 Ethernet 1 Ethernet 2 Ethernet 3 Eth */ +/* ernet 4 GPON/EPON */ +/*****************************************************************************************/ + +#define DMA_REGS_CONFIG_MALLOC_R3_R3_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_R3_R3_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_EMAC0_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_EMAC0_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_EMAC0_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_EMAC0_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_EMAC1_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_EMAC1_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_EMAC1_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_EMAC1_VALUE_RESET_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_EMAC2_VALUE ( 0xA ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_EMAC2_VALUE_RESET_VALUE ( 0xA ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_EMAC3_VALUE ( 0xF ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_EMAC3_VALUE_RESET_VALUE ( 0xF ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_EMAC2_VALUE ( 0x12 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_EMAC2_VALUE_RESET_VALUE ( 0x12 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_EMAC4_VALUE ( 0x14 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_EMAC4_VALUE_RESET_VALUE ( 0x14 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_GPON_VALUE ( 0x19 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_SDMA_GPON_VALUE_RESET_VALUE ( 0x19 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_EMAC3_VALUE ( 0x1B ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_EMAC3_VALUE_RESET_VALUE ( 0x1B ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_EMAC4_VALUE ( 0x24 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_EMAC4_VALUE_RESET_VALUE ( 0x24 ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_GPON_VALUE ( 0x2D ) +#define DMA_REGS_CONFIG_MALLOC_CDOFFSET_DEFAULT_DMA_GPON_VALUE_RESET_VALUE ( 0x2D ) +#define DMA_REGS_CONFIG_MALLOC_R2_R2_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_R2_R2_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_MIN_DMA_SDMA_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_EMAC0_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_EMAC0_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_EMAC1_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_EMAC1_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_EMAC2_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_EMAC2_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_EMAC3_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_EMAC3_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_EMAC4_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_EMAC4_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_GPON_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_SDMA_GPON_VALUE_RESET_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_EMAC0_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_EMAC0_VALUE_RESET_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_EMAC1_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_EMAC1_VALUE_RESET_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_EMAC2_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_EMAC2_VALUE_RESET_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_EMAC3_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_EMAC3_VALUE_RESET_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_EMAC4_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_EMAC4_VALUE_RESET_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_GPON_VALUE ( 0x12 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_DEFAULT_DMA_GPON_VALUE_RESET_VALUE ( 0x12 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_MAX_SDMA_VALUE ( 0x20 ) +#define DMA_REGS_CONFIG_MALLOC_NUMOFBUFF_MAX_DMA_VALUE ( 0x3F ) +#define DMA_REGS_CONFIG_MALLOC_R1_R1_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_R1_R1_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_EMAC0_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_EMAC0_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_EMAC0_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_EMAC0_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_EMAC1_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_EMAC1_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_EMAC1_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_EMAC1_VALUE_RESET_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_EMAC2_VALUE ( 0xA ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_EMAC2_VALUE_RESET_VALUE ( 0xA ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_EMAC3_VALUE ( 0xF ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_EMAC3_VALUE_RESET_VALUE ( 0xF ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_EMAC2_VALUE ( 0x12 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_EMAC2_VALUE_RESET_VALUE ( 0x12 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_EMAC4_VALUE ( 0x14 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_EMAC4_VALUE_RESET_VALUE ( 0x14 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_GPON_VALUE ( 0x19 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_SDMA_GPON_VALUE_RESET_VALUE ( 0x19 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_EMAC3_VALUE ( 0x1B ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_EMAC3_VALUE_RESET_VALUE ( 0x1B ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_EMAC4_VALUE ( 0x24 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_EMAC4_VALUE_RESET_VALUE ( 0x24 ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_GPON_VALUE ( 0x2D ) +#define DMA_REGS_CONFIG_MALLOC_DATATOFFSET_DEFAULT_DMA_GPON_VALUE_RESET_VALUE ( 0x2D ) + + +#define DMA_REGS_CONFIG_MALLOC_OFFSET ( 0x00000004 ) + +#define DMA_REGS_0_CONFIG_MALLOC_ADDRESS ( DMA_REGS_0_CONFIG_ADDRESS + DMA_REGS_CONFIG_MALLOC_OFFSET ) +#define DMA_REGS_0_CONFIG_MALLOC_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_CONFIG_MALLOC_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_CONFIG_MALLOC_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_CONFIG_MALLOC_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_CONFIG_MALLOC_ADDRESS ( DMA_REGS_1_CONFIG_ADDRESS + DMA_REGS_CONFIG_MALLOC_OFFSET ) +#define DMA_REGS_1_CONFIG_MALLOC_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_CONFIG_MALLOC_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_CONFIG_MALLOC_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_CONFIG_MALLOC_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_CONFIG_MALLOC_ARRAY [ ] ; + +#define DMA_REGS_CONFIG_MALLOC_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_CONFIG_MALLOC_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_CONFIG_MALLOC_READ( i, k, r ) READ_I_32( DMA_REGS_CONFIG_MALLOC_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved3 */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CD_memory_offset_address */ + uint32_t cdoffset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved2 */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* number_of_buffers */ + uint32_t numofbuff : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ + uint32_t r1 : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data_memory_offset_address */ + uint32_t datatoffset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_MALLOC ; +#else +typedef struct +{ uint32_t datatoffset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data_memory_offset_address */ + uint32_t r1 : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ + uint32_t numofbuff : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* number_of_buffers */ + uint32_t r2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved2 */ + uint32_t cdoffset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CD_memory_offset_address */ + uint32_t r3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved3 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_MALLOC ; +#endif + +/*****************************************************************************************/ +/* READ_REQ_BASE_ADDRESS */ +/* This array of registers controls the base address of each peripheral within the read */ +/* requests RAM. Each peripheral gets memory enough for storing up to 8 read requests */ +/* (total of 48 requests in the RAM), starting from a configurable base address. The ba */ +/* se address is aligned to 8 therefore the only valid values are: 0, 8, 16, 24, 32, 4 */ +/* 0. */ +/*****************************************************************************************/ + +#define DMA_REGS_CONFIG_READ_BASE_R1_R1_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_READ_BASE_R1_R1_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_MIN_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_EMAC0_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_EMAC0_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_EMAC1_VALUE ( 0x8 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_EMAC1_VALUE_RESET_VALUE ( 0x8 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_EMAC2_VALUE ( 0x10 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_EMAC2_VALUE_RESET_VALUE ( 0x10 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_EMAC3_VALUE ( 0x18 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_EMAC3_VALUE_RESET_VALUE ( 0x18 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_EMAC4_VALUE ( 0x20 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_EMAC4_VALUE_RESET_VALUE ( 0x20 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_GPON_VALUE ( 0x28 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x28 ) +#define DMA_REGS_CONFIG_READ_BASE_BASE_MAX_VALUE ( 0x28 ) + + +#define DMA_REGS_CONFIG_READ_BASE_OFFSET ( 0x0000001C ) + +#define DMA_REGS_0_CONFIG_READ_BASE_ADDRESS ( DMA_REGS_0_CONFIG_ADDRESS + DMA_REGS_CONFIG_READ_BASE_OFFSET ) +#define DMA_REGS_0_CONFIG_READ_BASE_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_CONFIG_READ_BASE_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_CONFIG_READ_BASE_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_CONFIG_READ_BASE_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_CONFIG_READ_BASE_ADDRESS ( DMA_REGS_1_CONFIG_ADDRESS + DMA_REGS_CONFIG_READ_BASE_OFFSET ) +#define DMA_REGS_1_CONFIG_READ_BASE_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_CONFIG_READ_BASE_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_CONFIG_READ_BASE_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_CONFIG_READ_BASE_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_CONFIG_READ_BASE_ARRAY [ ] ; + +#define DMA_REGS_CONFIG_READ_BASE_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_CONFIG_READ_BASE_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_CONFIG_READ_BASE_READ( i, k, r ) READ_I_32( DMA_REGS_CONFIG_READ_BASE_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved1 */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* base_address */ + uint32_t base : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_READ_BASE ; +#else +typedef struct +{ uint32_t base : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* base_address */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_READ_BASE ; +#endif + +/*****************************************************************************************/ +/* URGENT_THRESHOLDS */ +/* the in/out of urgent thresholds mark the number of write requests in the queue in whi */ +/* ch the peripherals priority is changed. The two thresholds should create hysteresis. */ +/* The moving into urgent threshold must always be greater than the moving out of urgen */ +/* t threshold. */ +/*****************************************************************************************/ + +#define DMA_REGS_CONFIG_U_THRESH_R2_R2_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_U_THRESH_R2_R2_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_MIN_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_EMAC0_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_EMAC0_VALUE_RESET_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_EMAC1_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_EMAC1_VALUE_RESET_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_EMAC2_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_EMAC2_VALUE_RESET_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_EMAC3_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_EMAC3_VALUE_RESET_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_EMAC4_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_EMAC4_VALUE_RESET_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_GPON_VALUE ( 0x4 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_SDMA_GPON_VALUE_RESET_VALUE ( 0x4 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_EMAC0_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_EMAC0_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_EMAC1_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_EMAC1_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_EMAC2_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_EMAC2_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_EMAC3_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_EMAC3_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_EMAC4_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_EMAC4_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_GPON_VALUE ( 0xC ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_DEFAULT_DMA_GPON_VALUE_RESET_VALUE ( 0xC ) +#define DMA_REGS_CONFIG_U_THRESH_OUT_OF_U_MAX_VALUE ( 0x1F ) +#define DMA_REGS_CONFIG_U_THRESH_R1_R1_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_U_THRESH_R1_R1_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_MIN_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_EMAC0_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_EMAC0_VALUE_RESET_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_EMAC1_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_EMAC1_VALUE_RESET_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_EMAC2_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_EMAC2_VALUE_RESET_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_EMAC3_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_EMAC3_VALUE_RESET_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_EMAC4_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_EMAC4_VALUE_RESET_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_GPON_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_SDMA_GPON_VALUE_RESET_VALUE ( 0x5 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_EMAC0_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_EMAC0_VALUE_RESET_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_EMAC1_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_EMAC1_VALUE_RESET_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_EMAC2_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_EMAC2_VALUE_RESET_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_EMAC3_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_EMAC3_VALUE_RESET_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_EMAC4_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_EMAC4_VALUE_RESET_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_GPON_VALUE ( 0xE ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_DEFAULT_DMA_GPON_VALUE_RESET_VALUE ( 0xE ) +#define DMA_REGS_CONFIG_U_THRESH_INTO_U_MAX_VALUE ( 0x1F ) + + +#define DMA_REGS_CONFIG_U_THRESH_OFFSET ( 0x00000034 ) + +#define DMA_REGS_0_CONFIG_U_THRESH_ADDRESS ( DMA_REGS_0_CONFIG_ADDRESS + DMA_REGS_CONFIG_U_THRESH_OFFSET ) +#define DMA_REGS_0_CONFIG_U_THRESH_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_CONFIG_U_THRESH_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_CONFIG_U_THRESH_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_CONFIG_U_THRESH_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_CONFIG_U_THRESH_ADDRESS ( DMA_REGS_1_CONFIG_ADDRESS + DMA_REGS_CONFIG_U_THRESH_OFFSET ) +#define DMA_REGS_1_CONFIG_U_THRESH_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_CONFIG_U_THRESH_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_CONFIG_U_THRESH_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_CONFIG_U_THRESH_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_CONFIG_U_THRESH_ARRAY [ ] ; + +#define DMA_REGS_CONFIG_U_THRESH_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_CONFIG_U_THRESH_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_CONFIG_U_THRESH_READ( i, k, r ) READ_I_32( DMA_REGS_CONFIG_U_THRESH_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved2 */ + uint32_t r2 : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* out_of_urgent_threshold */ + uint32_t out_of_u : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* into_urgent_threshold */ + uint32_t into_u : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_U_THRESH ; +#else +typedef struct +{ uint32_t into_u : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* into_urgent_threshold */ + uint32_t r1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ + uint32_t out_of_u : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* out_of_urgent_threshold */ + uint32_t r2 : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved2 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_U_THRESH ; +#endif + +/*****************************************************************************************/ +/* STRICT_PRIORITY */ +/* The arbitration between the requests of the different peripherals is done in two stag */ +/* es: 1. Strict priority - chooses the peripherals with the highest priority among all */ +/* perpherals who have a request pending. 2. Weighted Round-Robin between all peripher */ +/* als with the same priority. This array of registers allow configuration of the pri */ +/* ority of each peripheral (both rx and tx) in the following manner: There are 8 level */ +/* s of priorities, when each bit in the register represents a different level of priori */ +/* ty. One should assert the relevant bit according to the desired priority - For the */ +/* lowest - 00000001 For the highest - 10000000 */ +/*****************************************************************************************/ + +#define DMA_REGS_CONFIG_PRI_R1_R2_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PRI_R1_R2_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PRI_TXPRI_LOW_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PRI_TXPRI_DEFAULT_TX_VALUE ( 0x80 ) +#define DMA_REGS_CONFIG_PRI_TXPRI_DEFAULT_TX_VALUE_RESET_VALUE ( 0x80 ) +#define DMA_REGS_CONFIG_PRI_TXPRI_HIGH_VALUE ( 0x80 ) +#define DMA_REGS_CONFIG_PRI_RXPRI_LOW_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PRI_RXPRI_DEFAULT_RX_VALUE ( 0x80 ) +#define DMA_REGS_CONFIG_PRI_RXPRI_DEFAULT_RX_VALUE_RESET_VALUE ( 0x80 ) +#define DMA_REGS_CONFIG_PRI_RXPRI_HIGH_VALUE ( 0x80 ) + + +#define DMA_REGS_CONFIG_PRI_OFFSET ( 0x0000004C ) + +#define DMA_REGS_0_CONFIG_PRI_ADDRESS ( DMA_REGS_0_CONFIG_ADDRESS + DMA_REGS_CONFIG_PRI_OFFSET ) +#define DMA_REGS_0_CONFIG_PRI_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_CONFIG_PRI_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_CONFIG_PRI_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_CONFIG_PRI_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_CONFIG_PRI_ADDRESS ( DMA_REGS_1_CONFIG_ADDRESS + DMA_REGS_CONFIG_PRI_OFFSET ) +#define DMA_REGS_1_CONFIG_PRI_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_CONFIG_PRI_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_CONFIG_PRI_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_CONFIG_PRI_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_CONFIG_PRI_ARRAY [ ] ; + +#define DMA_REGS_CONFIG_PRI_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_CONFIG_PRI_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_CONFIG_PRI_READ( i, k, r ) READ_I_32( DMA_REGS_CONFIG_PRI_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved2 */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* priority_of_tx_side */ + uint32_t txpri : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* priority_of_rx_side */ + uint32_t rxpri : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_PRI ; +#else +typedef struct +{ uint32_t rxpri : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* priority_of_rx_side */ + uint32_t txpri : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* priority_of_tx_side */ + uint32_t r1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved2 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_PRI ; +#endif + +/*****************************************************************************************/ +/* WEIGHT_OF_ROUND_ROBIN */ +/* The second phase of the arbitration between requests is weighted round robin between */ +/* requests of peripherals with the same priority. This array of registers allow config */ +/* urtion of the weight of each peripheral (rx and tx). The actual weight will be weight */ +/* + 1, meaning configuration of 0 is actual weight of 1. */ +/*****************************************************************************************/ + +#define DMA_REGS_CONFIG_WEIGHT_R2_DEFAULT_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_TXWEIGHT_MIN_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_TXWEIGHT_MIN_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_TXWEIGHT_DEFAULT_SDMA_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_TXWEIGHT_DEFAULT_SDMA_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_TXWEIGHT_DEFAULT_EMAC_DMA_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_WEIGHT_TXWEIGHT_DEFAULT_EMAC_DMA_VALUE_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_WEIGHT_TXWEIGHT_DEFAULT_GPON_DMA_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_WEIGHT_TXWEIGHT_DEFAULT_GPON_DMA_VALUE_RESET_VALUE ( 0x3 ) +#define DMA_REGS_CONFIG_WEIGHT_TXWEIGHT_MAX_VALUE ( 0x7 ) +#define DMA_REGS_CONFIG_WEIGHT_R1_DEFAULT_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_DEFAULT_EMACS_DMA_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_DEFAULT_EMACS_DMA_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_MIN_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_MIN_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_DEFAULT_EMACS_SDMA_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_DEFAULT_EMACS_SDMA_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_DEFAULT_GPON_DMA_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_DEFAULT_GPON_DMA_VALUE_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_DEFAULT_GPON_SDMA_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_DEFAULT_GPON_SDMA_VALUE_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_WEIGHT_RXWEIGHT_MAX_VALUE ( 0x7 ) + + +#define DMA_REGS_CONFIG_WEIGHT_OFFSET ( 0x00000064 ) + +#define DMA_REGS_0_CONFIG_WEIGHT_ADDRESS ( DMA_REGS_0_CONFIG_ADDRESS + DMA_REGS_CONFIG_WEIGHT_OFFSET ) +#define DMA_REGS_0_CONFIG_WEIGHT_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_CONFIG_WEIGHT_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_CONFIG_WEIGHT_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_CONFIG_WEIGHT_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_CONFIG_WEIGHT_ADDRESS ( DMA_REGS_1_CONFIG_ADDRESS + DMA_REGS_CONFIG_WEIGHT_OFFSET ) +#define DMA_REGS_1_CONFIG_WEIGHT_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_CONFIG_WEIGHT_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_CONFIG_WEIGHT_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_CONFIG_WEIGHT_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_CONFIG_WEIGHT_ARRAY [ ] ; + +#define DMA_REGS_CONFIG_WEIGHT_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_CONFIG_WEIGHT_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_CONFIG_WEIGHT_READ( i, k, r ) READ_I_32( DMA_REGS_CONFIG_WEIGHT_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r2 : 21 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* weight_of_tx_side */ + uint32_t txweight : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* weight_of_rx_side */ + uint32_t rxweight : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_WEIGHT ; +#else +typedef struct +{ uint32_t rxweight : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* weight_of_rx_side */ + uint32_t r1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t txweight : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* weight_of_tx_side */ + uint32_t r2 : 21 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_WEIGHT ; +#endif + +/*****************************************************************************************/ +/* BB_ROUTE_DMA_PERIPH */ +/* Broadbus route address from the DMA to the peripherals. Register per peripheral (rx a */ +/* nd tx). The route address is same for DMA and SDMA because of the symmetry of the BB */ +/* tree. */ +/*****************************************************************************************/ + +#define DMA_REGS_CONFIG_BB_ROUTE_R2_R2_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_BB_ROUTE_R2_R2_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_GPON_VALUE ( 0x11 ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x11 ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_EMAC3_VALUE ( 0x12 ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_EMAC3_VALUE_RESET_VALUE ( 0x12 ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_EMAC1_VALUE ( 0x16 ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_EMAC1_VALUE_RESET_VALUE ( 0x16 ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_EMAC4_VALUE ( 0x19 ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_EMAC4_VALUE_RESET_VALUE ( 0x19 ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_EMAC2_VALUE ( 0x1A ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_EMAC2_VALUE_RESET_VALUE ( 0x1A ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_EMAC0_VALUE ( 0x1E ) +#define DMA_REGS_CONFIG_BB_ROUTE_TXROUTE_DEFAULT_EMAC0_VALUE_RESET_VALUE ( 0x1E ) +#define DMA_REGS_CONFIG_BB_ROUTE_R1_R1_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_BB_ROUTE_R1_R1_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_GPON_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_GPON_VALUE_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_EMAC3_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_EMAC3_VALUE_RESET_VALUE ( 0x2 ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_EMAC1_VALUE ( 0x6 ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_EMAC1_VALUE_RESET_VALUE ( 0x6 ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_EMAC4_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_EMAC4_VALUE_RESET_VALUE ( 0x9 ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_EMAC2_VALUE ( 0xA ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_EMAC2_VALUE_RESET_VALUE ( 0xA ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_EMAC0_VALUE ( 0xE ) +#define DMA_REGS_CONFIG_BB_ROUTE_RXROUTE_DEFAULT_EMAC0_VALUE_RESET_VALUE ( 0xE ) + + +#define DMA_REGS_CONFIG_BB_ROUTE_OFFSET ( 0x0000007C ) + +#define DMA_REGS_0_CONFIG_BB_ROUTE_ADDRESS ( DMA_REGS_0_CONFIG_ADDRESS + DMA_REGS_CONFIG_BB_ROUTE_OFFSET ) +#define DMA_REGS_0_CONFIG_BB_ROUTE_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_CONFIG_BB_ROUTE_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_CONFIG_BB_ROUTE_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_CONFIG_BB_ROUTE_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_CONFIG_BB_ROUTE_ADDRESS ( DMA_REGS_1_CONFIG_ADDRESS + DMA_REGS_CONFIG_BB_ROUTE_OFFSET ) +#define DMA_REGS_1_CONFIG_BB_ROUTE_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_CONFIG_BB_ROUTE_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_CONFIG_BB_ROUTE_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_CONFIG_BB_ROUTE_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_CONFIG_BB_ROUTE_ARRAY [ ] ; + +#define DMA_REGS_CONFIG_BB_ROUTE_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_CONFIG_BB_ROUTE_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_CONFIG_BB_ROUTE_READ( i, k, r ) READ_I_32( DMA_REGS_CONFIG_BB_ROUTE_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved2 */ + uint32_t r2 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bb_route_to_tx_side */ + uint32_t txroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bb_route_to_rx_side */ + uint32_t rxroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_BB_ROUTE ; +#else +typedef struct +{ uint32_t rxroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bb_route_to_rx_side */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ + uint32_t txroute : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bb_route_to_tx_side */ + uint32_t r2 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved2 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_BB_ROUTE ; +#endif + +/*****************************************************************************************/ +/* POINTERS_RESET */ +/* Resets the pointers of the peripherals FIFOs within the DMA. Bit per peripheral side */ +/* (rx and tx). For rx side resets the data and CD FIFOs. For tx side resets the read */ +/* requests FIFO. */ +/*****************************************************************************************/ + +#define DMA_REGS_CONFIG_PTRRST_R1_DEFAULT_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_GPONTX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_GPONTX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_GPONTX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_GPONRX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_GPONRX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_GPONRX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_ETH4TX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH4TX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH4TX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_ETH4RX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH4RX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH4RX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_ETH3TX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH3TX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH3TX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_ETH3RX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH3RX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH3RX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_ETH2TX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH2TX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH2TX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_ETH2RX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH2RX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH2RX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_ETH1TX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH1TX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH1TX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_ETH1RX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH1RX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH1RX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_ETH0TX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH0TX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH0TX_RESET_VALUE ( 0x1 ) +#define DMA_REGS_CONFIG_PTRRST_ETH0RX_OFF_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH0RX_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_PTRRST_ETH0RX_RESET_VALUE ( 0x1 ) + + +#define DMA_REGS_CONFIG_PTRRST_OFFSET ( 0x00000094 ) + +#define DMA_REGS_0_CONFIG_PTRRST_ADDRESS ( DMA_REGS_0_CONFIG_ADDRESS + DMA_REGS_CONFIG_PTRRST_OFFSET ) +#define DMA_REGS_0_CONFIG_PTRRST_READ( r ) READ_32( ( DMA_REGS_0_CONFIG_PTRRST_ADDRESS ), (r) ) +#define DMA_REGS_0_CONFIG_PTRRST_WRITE( v ) WRITE_32( ( DMA_REGS_0_CONFIG_PTRRST_ADDRESS ), (v) ) + +#define DMA_REGS_1_CONFIG_PTRRST_ADDRESS ( DMA_REGS_1_CONFIG_ADDRESS + DMA_REGS_CONFIG_PTRRST_OFFSET ) +#define DMA_REGS_1_CONFIG_PTRRST_READ( r ) READ_32( ( DMA_REGS_1_CONFIG_PTRRST_ADDRESS ), (r) ) +#define DMA_REGS_1_CONFIG_PTRRST_WRITE( v ) WRITE_32( ( DMA_REGS_1_CONFIG_PTRRST_ADDRESS ), (v) ) + + +extern uint32_t DMA_REGS_CONFIG_PTRRST_ARRAY [ ] ; + +#define DMA_REGS_CONFIG_PTRRST_WRITE( i, v ) WRITE_32( DMA_REGS_CONFIG_PTRRST_ARRAY [ i ], (v) ) +#define DMA_REGS_CONFIG_PTRRST_READ( i, r ) READ_32( DMA_REGS_CONFIG_PTRRST_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gpon_tx_reset */ + uint32_t gpontx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gpon_rx_reset */ + uint32_t gponrx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_4_tx_reset */ + uint32_t eth4tx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_4_rx_reset */ + uint32_t eth4rx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_3_tx_reset */ + uint32_t eth3tx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_3_rx_reset */ + uint32_t eth3rx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_2_tx_reset */ + uint32_t eth2tx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_2_rx_reset */ + uint32_t eth2rx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_1_tx_reset */ + uint32_t eth1tx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_1_rx_reset */ + uint32_t eth1rx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_0_tx_reset */ + uint32_t eth0tx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_0_rx_reset */ + uint32_t eth0rx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_PTRRST ; +#else +typedef struct +{ uint32_t eth0rx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_0_rx_reset */ + uint32_t eth0tx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_0_tx_reset */ + uint32_t eth1rx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_1_rx_reset */ + uint32_t eth1tx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_1_tx_reset */ + uint32_t eth2rx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_2_rx_reset */ + uint32_t eth2tx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_2_tx_reset */ + uint32_t eth3rx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_3_rx_reset */ + uint32_t eth3tx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_3_tx_reset */ + uint32_t eth4rx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_4_rx_reset */ + uint32_t eth4tx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ethernet_4_tx_reset */ + uint32_t gponrx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gpon_rx_reset */ + uint32_t gpontx : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gpon_tx_reset */ + uint32_t r1 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_PTRRST ; +#endif + +/*****************************************************************************************/ +/* MEM_SEL */ +/* For DMA, there are 2 data memories for write data (upstream), Each client has a confi */ +/* gurable number of 128 bytes buffers in one of the memories (see MEMORY_ALLOCATION reg */ +/* ister). The first memory has total of 64 byffers, while the second has 32 buffers. */ +/* This register configures in which one of the memories the clients buffers are located */ +/* (1 bit per client, 0 first memory, 1 second memory). The CD buffers will also be lo */ +/* cated accordingly. */ +/*****************************************************************************************/ + +#define DMA_REGS_CONFIG_MEM_SEL_R1_RESERVED_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MEM_SEL_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MEM_SEL_MEM_SEL_FIRST_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MEM_SEL_MEM_SEL_FIRST_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_CONFIG_MEM_SEL_MEM_SEL_SECOND_VALUE ( 0x1 ) + + +#define DMA_REGS_CONFIG_MEM_SEL_OFFSET ( 0x00000098 ) + +#define DMA_REGS_0_CONFIG_MEM_SEL_ADDRESS ( DMA_REGS_0_CONFIG_ADDRESS + DMA_REGS_CONFIG_MEM_SEL_OFFSET ) +#define DMA_REGS_0_CONFIG_MEM_SEL_READ( r ) READ_32( ( DMA_REGS_0_CONFIG_MEM_SEL_ADDRESS ), (r) ) +#define DMA_REGS_0_CONFIG_MEM_SEL_WRITE( v ) WRITE_32( ( DMA_REGS_0_CONFIG_MEM_SEL_ADDRESS ), (v) ) + +#define DMA_REGS_1_CONFIG_MEM_SEL_ADDRESS ( DMA_REGS_1_CONFIG_ADDRESS + DMA_REGS_CONFIG_MEM_SEL_OFFSET ) +#define DMA_REGS_1_CONFIG_MEM_SEL_READ( r ) READ_32( ( DMA_REGS_1_CONFIG_MEM_SEL_ADDRESS ), (r) ) +#define DMA_REGS_1_CONFIG_MEM_SEL_WRITE( v ) WRITE_32( ( DMA_REGS_1_CONFIG_MEM_SEL_ADDRESS ), (v) ) + + +extern uint32_t DMA_REGS_CONFIG_MEM_SEL_ARRAY [ ] ; + +#define DMA_REGS_CONFIG_MEM_SEL_WRITE( i, v ) WRITE_32( DMA_REGS_CONFIG_MEM_SEL_ARRAY [ i ], (v) ) +#define DMA_REGS_CONFIG_MEM_SEL_READ( i, r ) READ_32( DMA_REGS_CONFIG_MEM_SEL_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mem_sel */ + uint32_t mem_sel : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_MEM_SEL ; +#else +typedef struct +{ uint32_t mem_sel : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mem_sel */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG_MEM_SEL ; +#endif + +/*****************************************************************************************/ +/* NOT_EMPTY_VECTOR */ +/* Each peripheral, according to its source address, is represented in a bit on the not */ +/* empty vector. If the bit is asserted, the requests queue of the relevant peripheral */ +/* is not empty. The not empty vector is used by the DMA scheduler to determine which p */ +/* eripheral is the next to be served. */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_NEMPTY_R1_R1_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_R1_R1_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_GPONTXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_GPONTXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_GPONTXNE_NOT_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH4TXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH4TXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH4TXNE_NOT_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH3TXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH3TXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH3TXNE_NOT_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH2TXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH2TXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH2TXNE_NOT_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH1TXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH1TXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH1TXNE_NOT_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH0TXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH0TXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH0TXNE_NOT_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_GPONRXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_GPONRXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_GPONRXNE_NOT_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH4RXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH4RXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH4RXNE_NOT_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH3RXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH3RXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH3RXNE_NOR_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH2RXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH2RXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH2RXNE_NOT_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH1RXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH1RXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH1RXNE_NOT_EMPTY_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH0RXNE_EMPTY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH0RXNE_EMPTY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_NEMPTY_ETH0RXNE_NOT_EMPTY_VALUE ( 0x1 ) + + +#define DMA_REGS_DEBUG_NEMPTY_OFFSET ( 0x00000000 ) + +#define DMA_REGS_0_DEBUG_NEMPTY_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_NEMPTY_OFFSET ) +#define DMA_REGS_0_DEBUG_NEMPTY_READ( r ) READ_32( ( DMA_REGS_0_DEBUG_NEMPTY_ADDRESS ), (r) ) +#define DMA_REGS_0_DEBUG_NEMPTY_WRITE( v ) WRITE_32( ( DMA_REGS_0_DEBUG_NEMPTY_ADDRESS ), (v) ) + +#define DMA_REGS_1_DEBUG_NEMPTY_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_NEMPTY_OFFSET ) +#define DMA_REGS_1_DEBUG_NEMPTY_READ( r ) READ_32( ( DMA_REGS_1_DEBUG_NEMPTY_ADDRESS ), (r) ) +#define DMA_REGS_1_DEBUG_NEMPTY_WRITE( v ) WRITE_32( ( DMA_REGS_1_DEBUG_NEMPTY_ADDRESS ), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_NEMPTY_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_NEMPTY_WRITE( i, v ) WRITE_32( DMA_REGS_DEBUG_NEMPTY_ARRAY [ i ], (v) ) +#define DMA_REGS_DEBUG_NEMPTY_READ( i, r ) READ_32( DMA_REGS_DEBUG_NEMPTY_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved1 */ + uint32_t r1 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_TX_not_empty_indications */ + uint32_t gpontxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet4_TX_not_empty_indications */ + uint32_t eth4txne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet3_TX_not_empty_indications */ + uint32_t eth3txne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet2_TX_not_empty_indications */ + uint32_t eth2txne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet1_TX_not_empty_indications */ + uint32_t eth1txne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet0_TX_not_empty_indications */ + uint32_t eth0txne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_RX_not_empty_indications */ + uint32_t gponrxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet4_RX_not_empty_indications */ + uint32_t eth4rxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet3_RX_not_empty_indications */ + uint32_t eth3rxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet2_RX_not_empty_indications */ + uint32_t eth2rxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet1_RX_not_empty_indications */ + uint32_t eth1rxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet0_RX_not_empty_indications */ + uint32_t eth0rxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_NEMPTY ; +#else +typedef struct +{ uint32_t eth0rxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet0_RX_not_empty_indications */ + uint32_t eth1rxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet1_RX_not_empty_indications */ + uint32_t eth2rxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet2_RX_not_empty_indications */ + uint32_t eth3rxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet3_RX_not_empty_indications */ + uint32_t eth4rxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet4_RX_not_empty_indications */ + uint32_t gponrxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_RX_not_empty_indications */ + uint32_t eth0txne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet0_TX_not_empty_indications */ + uint32_t eth1txne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet1_TX_not_empty_indications */ + uint32_t eth2txne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet2_TX_not_empty_indications */ + uint32_t eth3txne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet3_TX_not_empty_indications */ + uint32_t eth4txne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet4_TX_not_empty_indications */ + uint32_t gpontxne : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_TX_not_empty_indications */ + uint32_t r1 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_NEMPTY ; +#endif + +/*****************************************************************************************/ +/* URGENT_VECTOR */ +/* Each peripheral, according to its source address, is represented in a bit on the urge */ +/* nt vector. If the bit is asserted, the requests queue of the relevant peripheral is */ +/* in urgent state. The urgent vector is used by the DMA scheduler to determine which p */ +/* eripheral is the next to be served. */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_URGNT_R1_R1_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_R1_R1_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_GPONTXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_GPONTXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_GPONTXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_ETH4TXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH4TXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH4TXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_ETH3TXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH3TXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH3TXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_ETH2TXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH2TXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH2TXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_ETH1TXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH1TXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH1TXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_ETH0TXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH0TXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH0TXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_GPONRXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_GPONRXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_GPONRXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_ETH4RXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH4RXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH4RXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_ETH3RXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH3RXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH3RXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_ETH2RXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH2RXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH2RXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_ETH1RXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH1RXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH1RXU_URGENT_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_URGNT_ETH0RXU_NOT_URGENT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH0RXU_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_URGNT_ETH0RXU_URGENT_VALUE ( 0x1 ) + + +#define DMA_REGS_DEBUG_URGNT_OFFSET ( 0x00000004 ) + +#define DMA_REGS_0_DEBUG_URGNT_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_URGNT_OFFSET ) +#define DMA_REGS_0_DEBUG_URGNT_READ( r ) READ_32( ( DMA_REGS_0_DEBUG_URGNT_ADDRESS ), (r) ) +#define DMA_REGS_0_DEBUG_URGNT_WRITE( v ) WRITE_32( ( DMA_REGS_0_DEBUG_URGNT_ADDRESS ), (v) ) + +#define DMA_REGS_1_DEBUG_URGNT_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_URGNT_OFFSET ) +#define DMA_REGS_1_DEBUG_URGNT_READ( r ) READ_32( ( DMA_REGS_1_DEBUG_URGNT_ADDRESS ), (r) ) +#define DMA_REGS_1_DEBUG_URGNT_WRITE( v ) WRITE_32( ( DMA_REGS_1_DEBUG_URGNT_ADDRESS ), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_URGNT_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_URGNT_WRITE( i, v ) WRITE_32( DMA_REGS_DEBUG_URGNT_ARRAY [ i ], (v) ) +#define DMA_REGS_DEBUG_URGNT_READ( i, r ) READ_32( DMA_REGS_DEBUG_URGNT_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved1 */ + uint32_t r1 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_TX_urgent_indication */ + uint32_t gpontxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet4_TX_urgent_indication */ + uint32_t eth4txu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet3_TX_urgent_indication */ + uint32_t eth3txu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet2_TX_urgent_indication */ + uint32_t eth2txu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet1_TX_urgent_indication */ + uint32_t eth1txu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet0_TX_urgent_indication */ + uint32_t eth0txu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_RX_urgent_indication */ + uint32_t gponrxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet4_RX_urgent_indication */ + uint32_t eth4rxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet3_RX_urgent_indication */ + uint32_t eth3rxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet2_RX_urgent_indication */ + uint32_t eth2rxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet1_RX_urgent_indication */ + uint32_t eth1rxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet0_RX_urgent_indication */ + uint32_t eth0rxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_URGNT ; +#else +typedef struct +{ uint32_t eth0rxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet0_RX_urgent_indication */ + uint32_t eth1rxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet1_RX_urgent_indication */ + uint32_t eth2rxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet2_RX_urgent_indication */ + uint32_t eth3rxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet3_RX_urgent_indication */ + uint32_t eth4rxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet4_RX_urgent_indication */ + uint32_t gponrxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_RX_urgent_indication */ + uint32_t eth0txu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet0_TX_urgent_indication */ + uint32_t eth1txu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet1_TX_urgent_indication */ + uint32_t eth2txu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet2_TX_urgent_indication */ + uint32_t eth3txu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet3_TX_urgent_indication */ + uint32_t eth4txu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethernet4_TX_urgent_indication */ + uint32_t gpontxu : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_TX_urgent_indication */ + uint32_t r1 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_URGNT ; +#endif + +/*****************************************************************************************/ +/* SELECTED_SOURCE_NUM */ +/* The decision of the dma schedule rand the next peripheral to be served, represented b */ +/* y its source address */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_SELSRC_R1_R1_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_SELSRC_R1_R1_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH0_RX_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH0_RX_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH1_RX_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH2_RX_VALUE ( 0x2 ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH3_RX_VALUE ( 0x3 ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH4_RX_VALUE ( 0x4 ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_GPON_RX_VALUE ( 0x5 ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH0_TX_VALUE ( 0x8 ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH1_TX_VALUE ( 0x9 ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH2_TX_VALUE ( 0xA ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH3_TX_VALUE ( 0xB ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_ETH4_TX_VALUE ( 0xC ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_GPON_TX_VALUE ( 0xD ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_DEFAULT_VALUE ( 0x1F ) +#define DMA_REGS_DEBUG_SELSRC_SEL_SRC_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) + + +#define DMA_REGS_DEBUG_SELSRC_OFFSET ( 0x00000008 ) + +#define DMA_REGS_0_DEBUG_SELSRC_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_SELSRC_OFFSET ) +#define DMA_REGS_0_DEBUG_SELSRC_READ( r ) READ_32( ( DMA_REGS_0_DEBUG_SELSRC_ADDRESS ), (r) ) +#define DMA_REGS_0_DEBUG_SELSRC_WRITE( v ) WRITE_32( ( DMA_REGS_0_DEBUG_SELSRC_ADDRESS ), (v) ) + +#define DMA_REGS_1_DEBUG_SELSRC_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_SELSRC_OFFSET ) +#define DMA_REGS_1_DEBUG_SELSRC_READ( r ) READ_32( ( DMA_REGS_1_DEBUG_SELSRC_ADDRESS ), (r) ) +#define DMA_REGS_1_DEBUG_SELSRC_WRITE( v ) WRITE_32( ( DMA_REGS_1_DEBUG_SELSRC_ADDRESS ), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_SELSRC_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_SELSRC_WRITE( i, v ) WRITE_32( DMA_REGS_DEBUG_SELSRC_ARRAY [ i ], (v) ) +#define DMA_REGS_DEBUG_SELSRC_READ( i, r ) READ_32( DMA_REGS_DEBUG_SELSRC_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved1 */ + uint32_t r1 : 27 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* selected_source */ + uint32_t sel_src : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_SELSRC ; +#else +typedef struct +{ uint32_t sel_src : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* selected_source */ + uint32_t r1 : 27 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_SELSRC ; +#endif + +/*****************************************************************************************/ +/* REQUEST_COUNTERS_RX */ +/* the number of write requests currently pending for each rx peripheral. */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_REQ_CNT_RX_R1_R1_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_REQ_CNT_RX_R1_R1_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_REQ_CNT_RX_REQ_CNT_MIN_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_REQ_CNT_RX_REQ_CNT_MIN_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_REQ_CNT_RX_REQ_CNT_MAX_VALUE ( 0x20 ) + + +#define DMA_REGS_DEBUG_REQ_CNT_RX_OFFSET ( 0x0000000C ) + +#define DMA_REGS_0_DEBUG_REQ_CNT_RX_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_REQ_CNT_RX_OFFSET ) +#define DMA_REGS_0_DEBUG_REQ_CNT_RX_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_DEBUG_REQ_CNT_RX_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_DEBUG_REQ_CNT_RX_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_DEBUG_REQ_CNT_RX_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_DEBUG_REQ_CNT_RX_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_REQ_CNT_RX_OFFSET ) +#define DMA_REGS_1_DEBUG_REQ_CNT_RX_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_DEBUG_REQ_CNT_RX_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_DEBUG_REQ_CNT_RX_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_DEBUG_REQ_CNT_RX_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_REQ_CNT_RX_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_REQ_CNT_RX_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_DEBUG_REQ_CNT_RX_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_DEBUG_REQ_CNT_RX_READ( i, k, r ) READ_I_32( DMA_REGS_DEBUG_REQ_CNT_RX_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved1 */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* write_requests_counter */ + uint32_t req_cnt : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_REQ_CNT_RX ; +#else +typedef struct +{ uint32_t req_cnt : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* write_requests_counter */ + uint32_t r1 : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved1 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_REQ_CNT_RX ; +#endif + +/*****************************************************************************************/ +/* REQUEST_COUNTERS_TX */ +/* the number of read requestscurrently pending for each TX peripheral. */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_REQ_CNT_TX_R1_R3_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_REQ_CNT_TX_R1_R3_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_REQ_CNT_TX_REQ_CNT_MIN_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_REQ_CNT_TX_REQ_CNT_MIN_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_REQ_CNT_TX_REQ_CNT_MAX_VALUE ( 0x8 ) + + +#define DMA_REGS_DEBUG_REQ_CNT_TX_OFFSET ( 0x00000024 ) + +#define DMA_REGS_0_DEBUG_REQ_CNT_TX_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_REQ_CNT_TX_OFFSET ) +#define DMA_REGS_0_DEBUG_REQ_CNT_TX_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_DEBUG_REQ_CNT_TX_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_DEBUG_REQ_CNT_TX_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_DEBUG_REQ_CNT_TX_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_DEBUG_REQ_CNT_TX_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_REQ_CNT_TX_OFFSET ) +#define DMA_REGS_1_DEBUG_REQ_CNT_TX_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_DEBUG_REQ_CNT_TX_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_DEBUG_REQ_CNT_TX_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_DEBUG_REQ_CNT_TX_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_REQ_CNT_TX_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_REQ_CNT_TX_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_DEBUG_REQ_CNT_TX_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_DEBUG_REQ_CNT_TX_READ( i, k, r ) READ_I_32( DMA_REGS_DEBUG_REQ_CNT_TX_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* read_requests_counter */ + uint32_t req_cnt : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_REQ_CNT_TX ; +#else +typedef struct +{ uint32_t req_cnt : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* read_requests_counter */ + uint32_t r1 : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_REQ_CNT_TX ; +#endif + +/*****************************************************************************************/ +/* ACC_REQUEST_COUNTERS_RX */ +/* the accumulated number of write requests served so far for each peripheral. Wrap arou */ +/* nd on max value, not read clear. */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_REQ_CNT_RX_ACC_REQ_CNT_CNT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_REQ_CNT_RX_ACC_REQ_CNT_CNT_VALUE_RESET_VALUE ( 0x0 ) + + +#define DMA_REGS_DEBUG_REQ_CNT_RX_ACC_OFFSET ( 0x0000003C ) + +#define DMA_REGS_0_DEBUG_REQ_CNT_RX_ACC_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_REQ_CNT_RX_ACC_OFFSET ) +#define DMA_REGS_0_DEBUG_REQ_CNT_RX_ACC_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_DEBUG_REQ_CNT_RX_ACC_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_DEBUG_REQ_CNT_RX_ACC_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_DEBUG_REQ_CNT_RX_ACC_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_DEBUG_REQ_CNT_RX_ACC_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_REQ_CNT_RX_ACC_OFFSET ) +#define DMA_REGS_1_DEBUG_REQ_CNT_RX_ACC_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_DEBUG_REQ_CNT_RX_ACC_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_DEBUG_REQ_CNT_RX_ACC_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_DEBUG_REQ_CNT_RX_ACC_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_REQ_CNT_RX_ACC_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_REQ_CNT_RX_ACC_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_DEBUG_REQ_CNT_RX_ACC_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_DEBUG_REQ_CNT_RX_ACC_READ( i, k, r ) READ_I_32( DMA_REGS_DEBUG_REQ_CNT_RX_ACC_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* write_requests_counter */ + uint32_t req_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_REQ_CNT_RX_ACC ; +#else +typedef struct +{ uint32_t req_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* write_requests_counter */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_REQ_CNT_RX_ACC ; +#endif + +/*****************************************************************************************/ +/* ACC_REQUEST_COUNTERS_TX */ +/* the accumulated number of read requests served so far for each peripheral. Wrap aroun */ +/* d on max value, not read clear. */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_REQ_CNT_TX_ACC_REQ_CNT_CNT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_REQ_CNT_TX_ACC_REQ_CNT_CNT_VALUE_RESET_VALUE ( 0x0 ) + + +#define DMA_REGS_DEBUG_REQ_CNT_TX_ACC_OFFSET ( 0x00000054 ) + +#define DMA_REGS_0_DEBUG_REQ_CNT_TX_ACC_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_REQ_CNT_TX_ACC_OFFSET ) +#define DMA_REGS_0_DEBUG_REQ_CNT_TX_ACC_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_DEBUG_REQ_CNT_TX_ACC_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_DEBUG_REQ_CNT_TX_ACC_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_DEBUG_REQ_CNT_TX_ACC_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_DEBUG_REQ_CNT_TX_ACC_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_REQ_CNT_TX_ACC_OFFSET ) +#define DMA_REGS_1_DEBUG_REQ_CNT_TX_ACC_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_DEBUG_REQ_CNT_TX_ACC_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_DEBUG_REQ_CNT_TX_ACC_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_DEBUG_REQ_CNT_TX_ACC_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_REQ_CNT_TX_ACC_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_REQ_CNT_TX_ACC_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_DEBUG_REQ_CNT_TX_ACC_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_DEBUG_REQ_CNT_TX_ACC_READ( i, k, r ) READ_I_32( DMA_REGS_DEBUG_REQ_CNT_TX_ACC_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* write_requests_counter */ + uint32_t req_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_REQ_CNT_TX_ACC ; +#else +typedef struct +{ uint32_t req_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* write_requests_counter */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_REQ_CNT_TX_ACC ; +#endif + +/*****************************************************************************************/ +/* RAM_ADDRES */ +/* the address and cs of the ram the user wishes to read using the indirect access read */ +/* mechanism. */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_RDADD_R2_DEFAULT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_R2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_CDCS1_OFF_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_CDCS1_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_CDCS1_ON_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_RDADD_DATACS1_OFF_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_DATACS1_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_DATACS1_ON_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_RDADD_RDCS_OFF_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_RDCS_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_RDCS_ON_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_RDADD_RRCS_OFF_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_RRCS_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_RRCS_ON_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_RDADD_CDCS_OFF_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_CDCS_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_CDCS_ON_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_RDADD_DATACS_OFF_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_DATACS_OFF_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_DATACS_ON_VALUE ( 0x1 ) +#define DMA_REGS_DEBUG_RDADD_R1_DEFAULT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_ADDRESS_ADD_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDADD_ADDRESS_ADD_VALUE_RESET_VALUE ( 0x0 ) + + +#define DMA_REGS_DEBUG_RDADD_OFFSET ( 0x00000100 ) + +#define DMA_REGS_0_DEBUG_RDADD_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_RDADD_OFFSET ) +#define DMA_REGS_0_DEBUG_RDADD_READ( r ) READ_32( ( DMA_REGS_0_DEBUG_RDADD_ADDRESS ), (r) ) +#define DMA_REGS_0_DEBUG_RDADD_WRITE( v ) WRITE_32( ( DMA_REGS_0_DEBUG_RDADD_ADDRESS ), (v) ) + +#define DMA_REGS_1_DEBUG_RDADD_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_RDADD_OFFSET ) +#define DMA_REGS_1_DEBUG_RDADD_READ( r ) READ_32( ( DMA_REGS_1_DEBUG_RDADD_ADDRESS ), (r) ) +#define DMA_REGS_1_DEBUG_RDADD_WRITE( v ) WRITE_32( ( DMA_REGS_1_DEBUG_RDADD_ADDRESS ), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_RDADD_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_RDADD_WRITE( i, v ) WRITE_32( DMA_REGS_DEBUG_RDADD_ARRAY [ i ], (v) ) +#define DMA_REGS_DEBUG_RDADD_READ( i, r ) READ_32( DMA_REGS_DEBUG_RDADD_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r2 : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cd_ram_cs1 */ + uint32_t cdcs1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data_ram_cs_1 */ + uint32_t datacs1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rd_data_cs */ + uint32_t rdcs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rr_ram_cd */ + uint32_t rrcs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cd_ram_cs */ + uint32_t cdcs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data_ram_cs */ + uint32_t datacs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* address */ + uint32_t address : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_RDADD ; +#else +typedef struct +{ uint32_t address : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* address */ + uint32_t r1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t datacs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data_ram_cs */ + uint32_t cdcs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cd_ram_cs */ + uint32_t rrcs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rr_ram_cd */ + uint32_t rdcs : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rd_data_cs */ + uint32_t datacs1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data_ram_cs_1 */ + uint32_t cdcs1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cd_ram_cs1 */ + uint32_t r2 : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_RDADD ; +#endif + +/*****************************************************************************************/ +/* INDIRECT_READ_REQUEST_VALID */ +/* After determining the address and cs, the user should assert this bit for indicating */ +/* that the address and cs are valid. */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_RDVALID_R1_DEFAULT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDVALID_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDVALID_VALID_NOT_VALID_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDVALID_VALID_NOT_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDVALID_VALID_VALID_VALUE ( 0x1 ) + + +#define DMA_REGS_DEBUG_RDVALID_OFFSET ( 0x00000104 ) + +#define DMA_REGS_0_DEBUG_RDVALID_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_RDVALID_OFFSET ) +#define DMA_REGS_0_DEBUG_RDVALID_READ( r ) READ_32( ( DMA_REGS_0_DEBUG_RDVALID_ADDRESS ), (r) ) +#define DMA_REGS_0_DEBUG_RDVALID_WRITE( v ) WRITE_32( ( DMA_REGS_0_DEBUG_RDVALID_ADDRESS ), (v) ) + +#define DMA_REGS_1_DEBUG_RDVALID_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_RDVALID_OFFSET ) +#define DMA_REGS_1_DEBUG_RDVALID_READ( r ) READ_32( ( DMA_REGS_1_DEBUG_RDVALID_ADDRESS ), (r) ) +#define DMA_REGS_1_DEBUG_RDVALID_WRITE( v ) WRITE_32( ( DMA_REGS_1_DEBUG_RDVALID_ADDRESS ), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_RDVALID_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_RDVALID_WRITE( i, v ) WRITE_32( DMA_REGS_DEBUG_RDVALID_ARRAY [ i ], (v) ) +#define DMA_REGS_DEBUG_RDVALID_READ( i, r ) READ_32( DMA_REGS_DEBUG_RDVALID_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* valid */ + uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_RDVALID ; +#else +typedef struct +{ uint32_t valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* valid */ + uint32_t r1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_RDVALID ; +#endif + +/*****************************************************************************************/ +/* INDIRECT_READ_DATA */ +/* The returned read data from the selected RAM. Array of 4 registers (128 bits total). */ +/* The width of the different memories is as follows: write data - 128 bits chunk des */ +/* criptors - 36 bits read requests - 42 bits read data - 64 bits The the memories */ +/* with width smaller than 128, the data will appear in the first registers of the array */ +/* , for example: data from the cd RAM will appear in - {reg1[5:0], reg0[31:0]}. */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_RDDATA_DATA_DATA_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDDATA_DATA_DATA_VALUE_RESET_VALUE ( 0x0 ) + + +#define DMA_REGS_DEBUG_RDDATA_OFFSET ( 0x00000108 ) + +#define DMA_REGS_0_DEBUG_RDDATA_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_RDDATA_OFFSET ) +#define DMA_REGS_0_DEBUG_RDDATA_READ_I( r, i ) READ_I_32( ( DMA_REGS_0_DEBUG_RDDATA_ADDRESS ), (i), (r) ) +#define DMA_REGS_0_DEBUG_RDDATA_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_0_DEBUG_RDDATA_ADDRESS ), (i), (v) ) + +#define DMA_REGS_1_DEBUG_RDDATA_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_RDDATA_OFFSET ) +#define DMA_REGS_1_DEBUG_RDDATA_READ_I( r, i ) READ_I_32( ( DMA_REGS_1_DEBUG_RDDATA_ADDRESS ), (i), (r) ) +#define DMA_REGS_1_DEBUG_RDDATA_WRITE_I( v, i ) WRITE_I_32( ( DMA_REGS_1_DEBUG_RDDATA_ADDRESS ), (i), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_RDDATA_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_RDDATA_WRITE( i, k, v ) WRITE_I_32( DMA_REGS_DEBUG_RDDATA_ARRAY [ i ], (k), (v) ) +#define DMA_REGS_DEBUG_RDDATA_READ( i, k, r ) READ_I_32( DMA_REGS_DEBUG_RDDATA_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* data */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_RDDATA ; +#else +typedef struct +{ uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_RDDATA ; +#endif + +/*****************************************************************************************/ +/* READ_DATA_READY */ +/* When assertd indicats that the data in the previous array is valid.Willremain asserte */ +/* d until the user deasserts the valid bit in regiser RDVALID. */ +/*****************************************************************************************/ + +#define DMA_REGS_DEBUG_RDDATARDY_R1_DEFAULT_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDDATARDY_R1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDDATARDY_READY_NOT_READY_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDDATARDY_READY_NOT_READY_VALUE_RESET_VALUE ( 0x0 ) +#define DMA_REGS_DEBUG_RDDATARDY_READY_READY_VALUE ( 0x1 ) + + +#define DMA_REGS_DEBUG_RDDATARDY_OFFSET ( 0x00000118 ) + +#define DMA_REGS_0_DEBUG_RDDATARDY_ADDRESS ( DMA_REGS_0_DEBUG_ADDRESS + DMA_REGS_DEBUG_RDDATARDY_OFFSET ) +#define DMA_REGS_0_DEBUG_RDDATARDY_READ( r ) READ_32( ( DMA_REGS_0_DEBUG_RDDATARDY_ADDRESS ), (r) ) +#define DMA_REGS_0_DEBUG_RDDATARDY_WRITE( v ) WRITE_32( ( DMA_REGS_0_DEBUG_RDDATARDY_ADDRESS ), (v) ) + +#define DMA_REGS_1_DEBUG_RDDATARDY_ADDRESS ( DMA_REGS_1_DEBUG_ADDRESS + DMA_REGS_DEBUG_RDDATARDY_OFFSET ) +#define DMA_REGS_1_DEBUG_RDDATARDY_READ( r ) READ_32( ( DMA_REGS_1_DEBUG_RDDATARDY_ADDRESS ), (r) ) +#define DMA_REGS_1_DEBUG_RDDATARDY_WRITE( v ) WRITE_32( ( DMA_REGS_1_DEBUG_RDDATARDY_ADDRESS ), (v) ) + + +extern uint32_t DMA_REGS_DEBUG_RDDATARDY_ARRAY [ ] ; + +#define DMA_REGS_DEBUG_RDDATARDY_WRITE( i, v ) WRITE_32( DMA_REGS_DEBUG_RDDATARDY_ARRAY [ i ], (v) ) +#define DMA_REGS_DEBUG_RDDATARDY_READ( i, r ) READ_32( DMA_REGS_DEBUG_RDDATARDY_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ready */ + uint32_t ready : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_RDDATARDY ; +#else +typedef struct +{ uint32_t ready : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ready */ + uint32_t r1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG_RDDATARDY ; +#endif + +/*****************************************************************************************/ +/* The registers in this section allow configuration of the following: 1. memory alloca */ +/* tions 2. priority and weight for arbitration 3. urgent thresholds 4. route address */ +/* es Most of the registers control the configuration of a single peripheral. They ar */ +/* e arranged in arrays according to their configuration topic. The order of peripher */ +/* als within each array is: Ethernet 0 Ethernet 1 Ethernet 2 Ethernet 3 Ethernet 4 */ +/* GPON */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define DMA_REGS_CONFIG_MALLOC_NUMBER ( 6 ) +#define DMA_REGS_CONFIG_READ_BASE_NUMBER ( 6 ) +#define DMA_REGS_CONFIG_U_THRESH_NUMBER ( 6 ) +#define DMA_REGS_CONFIG_PRI_NUMBER ( 6 ) +#define DMA_REGS_CONFIG_WEIGHT_NUMBER ( 6 ) +#define DMA_REGS_CONFIG_BB_ROUTE_NUMBER ( 6 ) +typedef struct +{ + /* BB_SOURCE */ + DMA_REGS_CONFIG_SOURCE source __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MEMORY_ALLOCATION */ + DMA_REGS_CONFIG_MALLOC malloc [ DMA_REGS_CONFIG_MALLOC_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* READ_REQ_BASE_ADDRESS */ + DMA_REGS_CONFIG_READ_BASE read_base [ DMA_REGS_CONFIG_READ_BASE_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* URGENT_THRESHOLDS */ + DMA_REGS_CONFIG_U_THRESH u_thresh [ DMA_REGS_CONFIG_U_THRESH_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* STRICT_PRIORITY */ + DMA_REGS_CONFIG_PRI pri [ DMA_REGS_CONFIG_PRI_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* WEIGHT_OF_ROUND_ROBIN */ + DMA_REGS_CONFIG_WEIGHT weight [ DMA_REGS_CONFIG_WEIGHT_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BB_ROUTE_DMA_PERIPH */ + DMA_REGS_CONFIG_BB_ROUTE bb_route [ DMA_REGS_CONFIG_BB_ROUTE_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* POINTERS_RESET */ + DMA_REGS_CONFIG_PTRRST ptrrst __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MEM_SEL */ + DMA_REGS_CONFIG_MEM_SEL mem_sel __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_CONFIG ; + +/*****************************************************************************************/ +/* request counters per peripheral */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define DMA_REGS_DEBUG_REQ_CNT_RX_NUMBER ( 6 ) +#define DMA_REGS_DEBUG_REQ_CNT_TX_NUMBER ( 6 ) +#define DMA_REGS_DEBUG_REQ_CNT_RX_ACC_NUMBER ( 6 ) +#define DMA_REGS_DEBUG_REQ_CNT_TX_ACC_NUMBER ( 6 ) +#define DMA_REGS_DEBUG_RDDATA_NUMBER ( 4 ) +typedef struct +{ + /* NOT_EMPTY_VECTOR */ + DMA_REGS_DEBUG_NEMPTY nempty __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* URGENT_VECTOR */ + DMA_REGS_DEBUG_URGNT urgnt __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SELECTED_SOURCE_NUM */ + DMA_REGS_DEBUG_SELSRC selsrc __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REQUEST_COUNTERS_RX */ + DMA_REGS_DEBUG_REQ_CNT_RX req_cnt_rx [ DMA_REGS_DEBUG_REQ_CNT_RX_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REQUEST_COUNTERS_TX */ + DMA_REGS_DEBUG_REQ_CNT_TX req_cnt_tx [ DMA_REGS_DEBUG_REQ_CNT_TX_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACC_REQUEST_COUNTERS_RX */ + DMA_REGS_DEBUG_REQ_CNT_RX_ACC req_cnt_rx_acc [ DMA_REGS_DEBUG_REQ_CNT_RX_ACC_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACC_REQUEST_COUNTERS_TX */ + DMA_REGS_DEBUG_REQ_CNT_TX_ACC req_cnt_tx_acc [ DMA_REGS_DEBUG_REQ_CNT_TX_ACC_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 148 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RAM_ADDRES */ + DMA_REGS_DEBUG_RDADD rdadd __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* INDIRECT_READ_REQUEST_VALID */ + DMA_REGS_DEBUG_RDVALID rdvalid __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* INDIRECT_READ_DATA */ + DMA_REGS_DEBUG_RDDATA rddata [ DMA_REGS_DEBUG_RDDATA_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* READ_DATA_READY */ + DMA_REGS_DEBUG_RDDATARDY rddatardy __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS_DEBUG ; + +typedef struct +{ + /* config function */ + DMA_REGS_CONFIG config __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved0 [ 100 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* debug function */ + DMA_REGS_DEBUG debug __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +DMA_REGS ; + +#define DMA_REGS_NUMBER ( 2 ) +typedef struct +{ + /* REGS */ + DMA_REGS regs [ DMA_REGS_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +DMA_FOR_ALL ; +#endif /* DMA_H_INCLUDED */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_dma_arrays.c b/arch/arm/mach-bcmbca/rdp/rdp_dma_arrays.c new file mode 100755 index 0000000000..8e6c880e5b --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_dma_arrays.c @@ -0,0 +1,174 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/* File automatically generated by Reggae at 15/01/2013 09:25:30 */ + +/* Addresses for Multiple blocks and/or functions */ + +#include "rdp_subsystem_common.h" +#include "rdp_dma.h" + +uint32_t DMA_REGS_CONFIG_SOURCE_ARRAY [ 2 ] = +{ + DMA_REGS_0_CONFIG_SOURCE_ADDRESS, + DMA_REGS_1_CONFIG_SOURCE_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_CONFIG_SOURCE_ARRAY); + +uint32_t DMA_REGS_CONFIG_MALLOC_ARRAY [ 2 ] = +{ + DMA_REGS_0_CONFIG_MALLOC_ADDRESS, + DMA_REGS_1_CONFIG_MALLOC_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_CONFIG_MALLOC_ARRAY); + +uint32_t DMA_REGS_CONFIG_READ_BASE_ARRAY [ 2 ] = +{ + DMA_REGS_0_CONFIG_READ_BASE_ADDRESS, + DMA_REGS_1_CONFIG_READ_BASE_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_CONFIG_READ_BASE_ARRAY); + +uint32_t DMA_REGS_CONFIG_U_THRESH_ARRAY [ 2 ] = +{ + DMA_REGS_0_CONFIG_U_THRESH_ADDRESS, + DMA_REGS_1_CONFIG_U_THRESH_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_CONFIG_U_THRESH_ARRAY); + +uint32_t DMA_REGS_CONFIG_PRI_ARRAY [ 2 ] = +{ + DMA_REGS_0_CONFIG_PRI_ADDRESS, + DMA_REGS_1_CONFIG_PRI_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_CONFIG_PRI_ARRAY); + +uint32_t DMA_REGS_CONFIG_WEIGHT_ARRAY [ 2 ] = +{ + DMA_REGS_0_CONFIG_WEIGHT_ADDRESS, + DMA_REGS_1_CONFIG_WEIGHT_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_CONFIG_WEIGHT_ARRAY); + +uint32_t DMA_REGS_CONFIG_BB_ROUTE_ARRAY [ 2 ] = +{ + DMA_REGS_0_CONFIG_BB_ROUTE_ADDRESS, + DMA_REGS_1_CONFIG_BB_ROUTE_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_CONFIG_BB_ROUTE_ARRAY); + +uint32_t DMA_REGS_CONFIG_PTRRST_ARRAY [ 2 ] = +{ + DMA_REGS_0_CONFIG_PTRRST_ADDRESS, + DMA_REGS_1_CONFIG_PTRRST_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_CONFIG_PTRRST_ARRAY); + +uint32_t DMA_REGS_CONFIG_MEM_SEL_ARRAY [ 2 ] = +{ + DMA_REGS_0_CONFIG_MEM_SEL_ADDRESS, + DMA_REGS_1_CONFIG_MEM_SEL_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_CONFIG_MEM_SEL_ARRAY); + +uint32_t DMA_REGS_DEBUG_NEMPTY_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_NEMPTY_ADDRESS, + DMA_REGS_1_DEBUG_NEMPTY_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_NEMPTY_ARRAY); + +uint32_t DMA_REGS_DEBUG_URGNT_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_URGNT_ADDRESS, + DMA_REGS_1_DEBUG_URGNT_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_URGNT_ARRAY); + +uint32_t DMA_REGS_DEBUG_SELSRC_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_SELSRC_ADDRESS, + DMA_REGS_1_DEBUG_SELSRC_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_SELSRC_ARRAY); + +uint32_t DMA_REGS_DEBUG_REQ_CNT_RX_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_REQ_CNT_RX_ADDRESS, + DMA_REGS_1_DEBUG_REQ_CNT_RX_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_REQ_CNT_RX_ARRAY); + +uint32_t DMA_REGS_DEBUG_REQ_CNT_TX_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_REQ_CNT_TX_ADDRESS, + DMA_REGS_1_DEBUG_REQ_CNT_TX_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_REQ_CNT_TX_ARRAY); + +uint32_t DMA_REGS_DEBUG_REQ_CNT_RX_ACC_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_REQ_CNT_RX_ACC_ADDRESS, + DMA_REGS_1_DEBUG_REQ_CNT_RX_ACC_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_REQ_CNT_RX_ACC_ARRAY); + +uint32_t DMA_REGS_DEBUG_REQ_CNT_TX_ACC_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_REQ_CNT_TX_ACC_ADDRESS, + DMA_REGS_1_DEBUG_REQ_CNT_TX_ACC_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_REQ_CNT_TX_ACC_ARRAY); + +uint32_t DMA_REGS_DEBUG_RDADD_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_RDADD_ADDRESS, + DMA_REGS_1_DEBUG_RDADD_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_RDADD_ARRAY); + +uint32_t DMA_REGS_DEBUG_RDVALID_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_RDVALID_ADDRESS, + DMA_REGS_1_DEBUG_RDVALID_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_RDVALID_ARRAY); + +uint32_t DMA_REGS_DEBUG_RDDATA_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_RDDATA_ADDRESS, + DMA_REGS_1_DEBUG_RDDATA_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_RDDATA_ARRAY); + +uint32_t DMA_REGS_DEBUG_RDDATARDY_ARRAY [ 2 ] = +{ + DMA_REGS_0_DEBUG_RDDATARDY_ADDRESS, + DMA_REGS_1_DEBUG_RDDATARDY_ADDRESS +} ; + +EXPORT_SYMBOL(DMA_REGS_DEBUG_RDDATARDY_ARRAY); diff --git a/arch/arm/mach-bcmbca/rdp/rdp_drv_bbh.c b/arch/arm/mach-bcmbca/rdp/rdp_drv_bbh.c new file mode 100755 index 0000000000..53c5e6886c --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_drv_bbh.c @@ -0,0 +1,1042 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the implementation of the Lilac BBH driver */ +/* */ +/******************************************************************************/ + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ + +#include "rdp_subsystem_common.h" +#include "rdp_drv_bbh.h" + +/******************************************************************************/ +/* */ +/* Types and values definitions */ +/* */ +/******************************************************************************/ + +#define CS_NUMBER_OF_BITS_IN_REGISTER ( 32 ) + +#define CS_RX_MAXIMAL_FLOW_INDEX_FOR_MINPKTSEL0_AND_MAXPKTSEL0_REGISTERS ( 15 ) + +#define CS_RX_FIELD_LENGTH_FOR_MINPKTSEL_AND_MAXPKTSEL_REGISTERS ( 2 ) + +#define CS_RX_MAXIMAL_FLOW_INDEX_FOR_IHCLASS0_REGISTER ( 7 ) +#define CS_RX_MAXIMAL_FLOW_INDEX_FOR_IHCLASS1_REGISTER ( 15 ) +#define CS_RX_MAXIMAL_FLOW_INDEX_FOR_IHCLASS2_REGISTER ( 23 ) + +#define CS_RX_FIELD_LENGTH_FOR_IHCLASS_REGISTERS ( 4 ) + +/* ingress buffer size */ +#define CS_DRV_BBH_RX_INGRESS_BUFFER_SIZE ( 128 ) + +/* DDR buffer size */ +#define CS_DRV_BBH_RX_DDR_BUFFER_SIZE_2K ( 2048 ) +#define CS_DRV_BBH_RX_DDR_BUFFER_SIZE_2_5K ( 2560 ) +#define CS_DRV_BBH_RX_DDR_BUFFER_SIZE_4K ( 4096 ) +#define CS_DRV_BBH_RX_DDR_BUFFER_SIZE_16K ( 16384 ) + +/* The max Tcont number in the GMP */ +#define CS_DRV_MAX_NUM_OF_TCONTS_SW ( 32 ) +/* The max physical Tcont id number */ +#define CS_DRV_MAX_NUM_OF_TCONTS_PHYSICAL ( 39 ) + +/******************************************************************************/ +/* */ +/* Macros definitions */ +/* */ +/******************************************************************************/ + +/* gets a sequence of bits out of a given value (value), according to a given length (length) + and ls_bit_number */ +#define MS_GET_BITS( value , ls_bit_number, length ) ( ( ( value ) >> ( ls_bit_number ) ) & ( ( 1 << ( length ) ) - 1 ) ) + +/* writes a sequence of bits (write_value) with a given length (length) to a given + value (value). the offset is according to ls_bit_number */ +#define MS_SET_BITS( value , ls_bit_number , length , write_value ) ( ( value ) &= ~ ( ( ( 1 << ( length ) ) - 1 ) << ( ls_bit_number ) ) , ( value ) |= ( ( write_value ) << ( ls_bit_number ) ) ) + + +/******************************************************************************/ +/* */ +/* Global variables definitions */ +/* */ +/******************************************************************************/ + + +/******************************************************************************/ +/* */ +/* Functions prototypes */ +/* */ +/******************************************************************************/ + +uint8_t f_convert_tx_pd_fifo_size_from_user_to_hw_format ( uint8_t xi_pd_fifo_size ) ; +uint8_t f_convert_tx_pd_fifo_size_from_hw_to_user_format ( uint8_t xi_pd_fifo_size ) ; + +int32_t f_minimum_packet_size_is_valid ( uint8_t xi_minimum_packet_size , + uint8_t xi_packet_header_offset ) ; +int32_t f_maximum_packet_size_is_valid ( uint16_t xi_maximum_packet_size , + uint8_t xi_packet_header_offset , + uint8_t xi_reassembly_offset_in_8_byte, + uint8_t xi_ddr_buffer_size ) ; + + + +/******************************************************************************/ +/* */ +/* API functions implementations */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_bbh_tx_set_configuration */ +/* */ +/* Title: */ +/* */ +/* BBH Driver - TX Set configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets configuration of the TX part of BBH block. */ +/* */ +/* Input: */ +/* */ +/* xi_port_index - Port index */ +/* */ +/* xi_bbh_tx_configuration - BBH TX configuration. */ +/* */ +/* Output: */ +/* */ +/* DRV_BBH_ERROR - Return code */ +/* DRV_BBH_NO_ERROR - No error */ +/* DRV_BBH_INVALID_PORT_INDEX - Invalid port index */ +/* */ +/******************************************************************************/ +DRV_BBH_ERROR fi_bl_drv_bbh_tx_set_configuration ( DRV_BBH_PORT_INDEX xi_port_index , + const DRV_BBH_TX_CONFIGURATION * xi_bbh_tx_configuration ) +{ + + BBH_TX_CONFIGURATIONS_BBCFG_TX tx_bbcfg_tx ; + BBH_TX_CONFIGURATIONS_BBCFG1_TX tx_bbcfg1_tx ; + BBH_TX_CONFIGURATIONS_DDRCFG_TX tx_ddrcfg_tx ; + BBH_TX_CONFIGURATIONS_HNBASE tx_hnbase ; + BBH_TX_CONFIGURATIONS_TASKLSB tx_tasklsb ; + BBH_TX_CONFIGURATIONS_TASKMSB tx_taskmsb ; + BBH_TX_CONFIGURATIONS_TASK8_39 tx_task8_39 ; + BBH_TX_CONFIGURATIONS_PDSIZE0_7 tx_pdsize0_7 ; + BBH_TX_CONFIGURATIONS_PDSIZE8_39 tx_pdsize8_39 ; + BBH_TX_CONFIGURATIONS_PDBASE0_3 tx_pdbase0_3 ; + BBH_TX_CONFIGURATIONS_PDBASE4_7 tx_pdbase4_7 ; + BBH_TX_CONFIGURATIONS_PDBASE8_39 tx_pdbase8_39 ; + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN tx_pd_byte_th_en ; + BBH_TX_CONFIGURATIONS_PD_BYTE_TH tx_pd_byte_th ; + BBH_TX_CONFIGURATIONS_DMACFG_TX tx_dmacfg_tx ; + BBH_TX_CONFIGURATIONS_SDMACFG_TX tx_sdmacfg_tx ; + BBH_TX_CONFIGURATIONS_RUNNERCFG tx_runnercfg ; + BBH_TX_CONFIGURATIONS_MDUMODE tx_mdumode ; + BBH_TX_CONFIGURATIONS_DDRTMBASE tx_ddrtmbase ; + BBH_TX_CONFIGURATIONS_EMAC1588 tx_emac1588 ; + +#if defined(DSL_63138) || defined(DSL_63148) + if ( xi_port_index != DRV_BBH_EMAC_0 && + xi_port_index != DRV_BBH_EMAC_1 && + xi_port_index != DRV_BBH_DSL) +#else + if ( xi_port_index >= DRV_BBH_NUMBER_OF_PORTS ) +#endif + { + return ( DRV_BBH_INVALID_PORT_INDEX ) ; + } + + if ( ( xi_bbh_tx_configuration->multicast_header_size < DRV_BBH_MINIMAL_MULTICAST_HEADER_SIZE ) || + ( xi_bbh_tx_configuration->multicast_header_size > DRV_BBH_MAXIMAL_MULTICAST_HEADER_SIZE ) ) + { + return ( DRV_BBH_INVALID_MULTICAST_HEADER_SIZE ) ; + } + + if ( ( xi_bbh_tx_configuration->pd_fifo_size_0 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_0 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_1 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_1 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_2 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_2 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_3 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_3 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_4 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_4 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_5 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_5 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_6 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_6 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_7 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_7 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_8_15 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_8_15 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_16_23 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_16_23 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_24_31 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_24_31 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_32_39 < DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_bbh_tx_configuration->pd_fifo_size_32_39 > DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ) ) + { + return ( DRV_BBH_INVALID_TX_PD_FIFO_SIZE ) ; + } + + if ( ( xi_bbh_tx_configuration->pd_prefetch_byte_threshold_0_in_32_byte > DRV_BBH_TX_MAXIMAL_PD_PREFETCH_BYTE_THRESHOLD_IN_32_BYTE ) || + ( xi_bbh_tx_configuration->pd_prefetch_byte_threshold_1_in_32_byte > DRV_BBH_TX_MAXIMAL_PD_PREFETCH_BYTE_THRESHOLD_IN_32_BYTE ) || + ( xi_bbh_tx_configuration->pd_prefetch_byte_threshold_2_in_32_byte > DRV_BBH_TX_MAXIMAL_PD_PREFETCH_BYTE_THRESHOLD_IN_32_BYTE ) || + ( xi_bbh_tx_configuration->pd_prefetch_byte_threshold_3_in_32_byte > DRV_BBH_TX_MAXIMAL_PD_PREFETCH_BYTE_THRESHOLD_IN_32_BYTE ) || + ( xi_bbh_tx_configuration->pd_prefetch_byte_threshold_4_in_32_byte > DRV_BBH_TX_MAXIMAL_PD_PREFETCH_BYTE_THRESHOLD_IN_32_BYTE ) || + ( xi_bbh_tx_configuration->pd_prefetch_byte_threshold_5_in_32_byte > DRV_BBH_TX_MAXIMAL_PD_PREFETCH_BYTE_THRESHOLD_IN_32_BYTE ) || + ( xi_bbh_tx_configuration->pd_prefetch_byte_threshold_6_in_32_byte > DRV_BBH_TX_MAXIMAL_PD_PREFETCH_BYTE_THRESHOLD_IN_32_BYTE ) || + ( xi_bbh_tx_configuration->pd_prefetch_byte_threshold_7_in_32_byte > DRV_BBH_TX_MAXIMAL_PD_PREFETCH_BYTE_THRESHOLD_IN_32_BYTE ) || + ( xi_bbh_tx_configuration->pd_prefetch_byte_threshold_8_39_in_32_byte > DRV_BBH_TX_MAXIMAL_PD_PREFETCH_BYTE_THRESHOLD_IN_32_BYTE ) ) + { + return ( DRV_BBH_INVALID_PD_PREFETCH_BYTE_THRESHOLD ) ; + } + + if ( ( xi_bbh_tx_configuration->dma_read_requests_maximal_number < DRV_BBH_TX_MINIMAL_VALUE_FOR_DMA_READ_REQUESTS_MAXIMAL_NUMBER ) || + ( xi_bbh_tx_configuration->dma_read_requests_maximal_number > DRV_BBH_TX_MAXIMAL_VALUE_FOR_DMA_READ_REQUESTS_MAXIMAL_NUMBER ) ) + { + return ( DRV_BBH_INVALID_DMA_READ_REQUESTS_MAXIMAL_NUMBER ) ; + } + + if ( ( xi_bbh_tx_configuration->sdma_read_requests_maximal_number < DRV_BBH_TX_MINIMAL_VALUE_FOR_SDMA_READ_REQUESTS_MAXIMAL_NUMBER ) || + ( xi_bbh_tx_configuration->sdma_read_requests_maximal_number > DRV_BBH_TX_MAXIMAL_VALUE_FOR_SDMA_READ_REQUESTS_MAXIMAL_NUMBER ) ) + { + return ( DRV_BBH_INVALID_SDMA_READ_REQUESTS_MAXIMAL_NUMBER ) ; + } + + + BBH_TX_CONFIGURATIONS_BBCFG_TX_READ( xi_port_index , tx_bbcfg_tx ) ; + tx_bbcfg_tx.dmaroute = xi_bbh_tx_configuration->dma_route_address ; + tx_bbcfg_tx.runnerroute = xi_bbh_tx_configuration->runner_route_address ; + tx_bbcfg_tx.bpmroute = xi_bbh_tx_configuration->bpm_route_address ; + BBH_TX_CONFIGURATIONS_BBCFG_TX_WRITE( xi_port_index , tx_bbcfg_tx ) ; + + BBH_TX_CONFIGURATIONS_BBCFG1_TX_READ( xi_port_index , tx_bbcfg1_tx ) ; + tx_bbcfg1_tx.sdmaroute = xi_bbh_tx_configuration->sdma_route_address; + tx_bbcfg1_tx.sbpmroute = xi_bbh_tx_configuration->sbpm_route_address; + tx_bbcfg1_tx.rnrstsroute = xi_bbh_tx_configuration->runner_sts_route ; + BBH_TX_CONFIGURATIONS_BBCFG1_TX_WRITE( xi_port_index , tx_bbcfg1_tx ) ; + + BBH_TX_CONFIGURATIONS_DDRCFG_TX_READ( xi_port_index , tx_ddrcfg_tx ) ; + tx_ddrcfg_tx.bufsize = xi_bbh_tx_configuration->ddr_buffer_size ; + tx_ddrcfg_tx.bpmmsg = xi_bbh_tx_configuration->ddr_bpm_message_format ; + tx_ddrcfg_tx.byteresul = xi_bbh_tx_configuration->payload_offset_resolution ; + tx_ddrcfg_tx.hnsize = xi_bbh_tx_configuration->multicast_header_size ; + BBH_TX_CONFIGURATIONS_DDRCFG_TX_WRITE( xi_port_index , tx_ddrcfg_tx ) ; + + BBH_TX_CONFIGURATIONS_HNBASE_READ( xi_port_index , tx_hnbase ) ; + tx_hnbase.hnbase = xi_bbh_tx_configuration->multicast_headers_base_address_in_byte ; + BBH_TX_CONFIGURATIONS_HNBASE_WRITE( xi_port_index , tx_hnbase ) ; + + BBH_TX_CONFIGURATIONS_TASKLSB_READ( xi_port_index , tx_tasklsb ) ; + tx_tasklsb.task0 = xi_bbh_tx_configuration->task_0 ; + tx_tasklsb.task1 = xi_bbh_tx_configuration->task_1 ; + tx_tasklsb.task2 = xi_bbh_tx_configuration->task_2 ; + tx_tasklsb.task3 = xi_bbh_tx_configuration->task_3 ; + BBH_TX_CONFIGURATIONS_TASKLSB_WRITE( xi_port_index , tx_tasklsb ) ; + + BBH_TX_CONFIGURATIONS_TASKMSB_READ( xi_port_index , tx_taskmsb ) ; + tx_taskmsb.task4 = xi_bbh_tx_configuration->task_4 ; + tx_taskmsb.task5 = xi_bbh_tx_configuration->task_5 ; + tx_taskmsb.task6 = xi_bbh_tx_configuration->task_6 ; + tx_taskmsb.task7 = xi_bbh_tx_configuration->task_7 ; + BBH_TX_CONFIGURATIONS_TASKMSB_WRITE( xi_port_index , tx_taskmsb ) ; + + BBH_TX_CONFIGURATIONS_TASK8_39_READ( xi_port_index , tx_task8_39 ) ; + tx_task8_39.task8_39 = xi_bbh_tx_configuration->task_8_39 ; + BBH_TX_CONFIGURATIONS_TASK8_39_WRITE( xi_port_index , tx_task8_39 ) ; + + BBH_TX_CONFIGURATIONS_PDSIZE0_7_READ( xi_port_index , tx_pdsize0_7 ) ; + tx_pdsize0_7.fifosize0 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_0 ) ; + tx_pdsize0_7.fifosize1 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_1 ) ; + tx_pdsize0_7.fifosize2 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_2 ) ; + tx_pdsize0_7.fifosize3 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_3 ) ; + tx_pdsize0_7.fifosize4 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_4 ) ; + tx_pdsize0_7.fifosize5 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_5 ) ; + tx_pdsize0_7.fifosize6 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_6 ) ; + tx_pdsize0_7.fifosize7 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_7 ) ; + BBH_TX_CONFIGURATIONS_PDSIZE0_7_WRITE( xi_port_index , tx_pdsize0_7 ) ; + + BBH_TX_CONFIGURATIONS_PDSIZE8_39_READ( xi_port_index , tx_pdsize8_39 ) ; + tx_pdsize8_39.fifosize8_15 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_8_15 ) ; + tx_pdsize8_39.fifosize16_23 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_16_23 ) ; + tx_pdsize8_39.fifosize24_31 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_24_31 ) ; + tx_pdsize8_39.fifosize32_39 = f_convert_tx_pd_fifo_size_from_user_to_hw_format ( xi_bbh_tx_configuration->pd_fifo_size_32_39 ) ; + BBH_TX_CONFIGURATIONS_PDSIZE8_39_WRITE( xi_port_index , tx_pdsize8_39 ) ; + + BBH_TX_CONFIGURATIONS_PDBASE0_3_READ( xi_port_index , tx_pdbase0_3 ) ; + tx_pdbase0_3.fifobase0 = xi_bbh_tx_configuration->pd_fifo_base_0 ; + tx_pdbase0_3.fifobase1 = xi_bbh_tx_configuration->pd_fifo_base_1 ; + tx_pdbase0_3.fifobase2 = xi_bbh_tx_configuration->pd_fifo_base_2 ; + tx_pdbase0_3.fifobase3 = xi_bbh_tx_configuration->pd_fifo_base_3 ; + BBH_TX_CONFIGURATIONS_PDBASE0_3_WRITE( xi_port_index , tx_pdbase0_3 ) ; + + BBH_TX_CONFIGURATIONS_PDBASE4_7_READ( xi_port_index , tx_pdbase4_7 ) ; + tx_pdbase4_7.fifobase4 = xi_bbh_tx_configuration->pd_fifo_base_4 ; + tx_pdbase4_7.fifobase5 = xi_bbh_tx_configuration->pd_fifo_base_5 ; + tx_pdbase4_7.fifobase6 = xi_bbh_tx_configuration->pd_fifo_base_6 ; + tx_pdbase4_7.fifobase7 = xi_bbh_tx_configuration->pd_fifo_base_7 ; + BBH_TX_CONFIGURATIONS_PDBASE4_7_WRITE( xi_port_index , tx_pdbase4_7 ) ; + + BBH_TX_CONFIGURATIONS_PDBASE8_39_READ( xi_port_index , tx_pdbase8_39 ) ; + tx_pdbase8_39.fifobase8_15 = xi_bbh_tx_configuration->pd_fifo_base_8_15 ; + tx_pdbase8_39.fifobase16_23 = xi_bbh_tx_configuration->pd_fifo_base_16_23 ; + tx_pdbase8_39.fifobase24_31 = xi_bbh_tx_configuration->pd_fifo_base_24_31 ; + tx_pdbase8_39.fifobase32_39 = xi_bbh_tx_configuration->pd_fifo_base_32_39 ; + BBH_TX_CONFIGURATIONS_PDBASE8_39_WRITE( xi_port_index , tx_pdbase8_39 ) ; + + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_READ( xi_port_index , tx_pd_byte_th_en ) ; + tx_pd_byte_th_en.pdlimiten = xi_bbh_tx_configuration->pd_prefetch_byte_threshold_enable ; + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_EN_WRITE( xi_port_index , tx_pd_byte_th_en ) ; + + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_READ( xi_port_index , 0 , tx_pd_byte_th ) ; + tx_pd_byte_th.pdlimiteven = xi_bbh_tx_configuration->pd_prefetch_byte_threshold_0_in_32_byte ; + tx_pd_byte_th.pdlimitodd = xi_bbh_tx_configuration->pd_prefetch_byte_threshold_1_in_32_byte ; + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_WRITE( xi_port_index , 0 , tx_pd_byte_th ) ; + + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_READ( xi_port_index , 1 , tx_pd_byte_th ) ; + tx_pd_byte_th.pdlimiteven = xi_bbh_tx_configuration->pd_prefetch_byte_threshold_2_in_32_byte ; + tx_pd_byte_th.pdlimitodd = xi_bbh_tx_configuration->pd_prefetch_byte_threshold_3_in_32_byte ; + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_WRITE( xi_port_index , 1 , tx_pd_byte_th ) ; + + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_READ( xi_port_index , 2 , tx_pd_byte_th ) ; + tx_pd_byte_th.pdlimiteven = xi_bbh_tx_configuration->pd_prefetch_byte_threshold_4_in_32_byte ; + tx_pd_byte_th.pdlimitodd = xi_bbh_tx_configuration->pd_prefetch_byte_threshold_5_in_32_byte ; + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_WRITE( xi_port_index , 2 , tx_pd_byte_th ) ; + + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_READ( xi_port_index , 3 , tx_pd_byte_th ) ; + tx_pd_byte_th.pdlimiteven = xi_bbh_tx_configuration->pd_prefetch_byte_threshold_6_in_32_byte ; + tx_pd_byte_th.pdlimitodd = xi_bbh_tx_configuration->pd_prefetch_byte_threshold_7_in_32_byte ; + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_WRITE( xi_port_index , 3 , tx_pd_byte_th ) ; + + /* TCONTs 8-39 have a common configuration */ + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_READ( xi_port_index , 4 , tx_pd_byte_th ) ; + tx_pd_byte_th.pdlimiteven = xi_bbh_tx_configuration->pd_prefetch_byte_threshold_8_39_in_32_byte ; + BBH_TX_CONFIGURATIONS_PD_BYTE_TH_WRITE( xi_port_index , 4 , tx_pd_byte_th ) ; + + BBH_TX_CONFIGURATIONS_DMACFG_TX_READ( xi_port_index , tx_dmacfg_tx ) ; + tx_dmacfg_tx.descbase = xi_bbh_tx_configuration->dma_read_requests_fifo_base_address ; + tx_dmacfg_tx.maxreq = xi_bbh_tx_configuration->dma_read_requests_maximal_number ; + tx_dmacfg_tx.epnurgnt = xi_bbh_tx_configuration->epnurgnt ; + BBH_TX_CONFIGURATIONS_DMACFG_TX_WRITE( xi_port_index , tx_dmacfg_tx ) ; + + BBH_TX_CONFIGURATIONS_SDMACFG_TX_READ( xi_port_index , tx_sdmacfg_tx ) ; + tx_sdmacfg_tx.descbase = xi_bbh_tx_configuration->sdma_read_requests_fifo_base_address ; + tx_sdmacfg_tx.maxreq = xi_bbh_tx_configuration->sdma_read_requests_maximal_number ; + BBH_TX_CONFIGURATIONS_SDMACFG_TX_WRITE( xi_port_index , tx_sdmacfg_tx ) ; + + BBH_TX_CONFIGURATIONS_RUNNERCFG_READ( xi_port_index , tx_runnercfg ) ; + tx_runnercfg.tcontaddr = xi_bbh_tx_configuration->tcont_address_in_8_byte ; + tx_runnercfg.skbaddr = xi_bbh_tx_configuration->skb_address ; + BBH_TX_CONFIGURATIONS_RUNNERCFG_WRITE( xi_port_index , tx_runnercfg ) ; + + BBH_TX_CONFIGURATIONS_MDUMODE_READ( xi_port_index , tx_mdumode ) ; + tx_mdumode.mduen = xi_bbh_tx_configuration->mdu_mode_enable ; + tx_mdumode.ptraddr = xi_bbh_tx_configuration->mdu_mode_read_pointer_address_in_8_byte ; + BBH_TX_CONFIGURATIONS_MDUMODE_WRITE( xi_port_index , tx_mdumode ) ; + + BBH_TX_CONFIGURATIONS_DDRTMBASE_READ( xi_port_index , tx_ddrtmbase ) ; + tx_ddrtmbase.ddrtmbase = xi_bbh_tx_configuration->ddr_tm_base_address ; + BBH_TX_CONFIGURATIONS_DDRTMBASE_WRITE( xi_port_index , tx_ddrtmbase ) ; + + BBH_TX_CONFIGURATIONS_EMAC1588_READ( xi_port_index , tx_emac1588 ) ; + tx_emac1588.emac1588 = xi_bbh_tx_configuration->emac_1588_enable ; + BBH_TX_CONFIGURATIONS_EMAC1588_WRITE( xi_port_index , tx_emac1588 ) ; + + return ( DRV_BBH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_bbh_tx_set_configuration ) ; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_bbh_rx_set_configuration */ +/* */ +/* Title: */ +/* */ +/* BBH Driver - RX Set configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets configuration of the RX part of BBH block. */ +/* */ +/* Input: */ +/* */ +/* xi_port_index - Port index */ +/* */ +/* xi_rx_configuration - RX configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_BBH_ERROR - Return code */ +/* DRV_BBH_NO_ERROR - No error */ +/* DRV_BBH_INVALID_PORT_INDEX - Invalid port index */ +/* */ +/******************************************************************************/ +DRV_BBH_ERROR fi_bl_drv_bbh_rx_set_configuration ( DRV_BBH_PORT_INDEX xi_port_index , + const DRV_BBH_RX_CONFIGURATION * xi_rx_configuration ) +{ + BBH_RX_GENERAL_CONFIGURATION_BBCFG rx_bbcfg ; + BBH_RX_GENERAL_CONFIGURATION_BBCFG1 rx_bbcfg1 ; + BBH_RX_GENERAL_CONFIGURATION_DDRCFG rx_ddrcfg ; + BBH_RX_GENERAL_CONFIGURATION_PDBASE rx_pdbase ; + BBH_RX_GENERAL_CONFIGURATION_PDSIZE rx_pdsize ; + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK rx_runnertask ; + BBH_RX_GENERAL_CONFIGURATION_DMAADDR rx_dmaaddr ; + BBH_RX_GENERAL_CONFIGURATION_DMACFG rx_dmacfg ; + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR rx_sdmaaddr ; + BBH_RX_GENERAL_CONFIGURATION_SDMACFG rx_sdmacfg ; + BBH_RX_GENERAL_CONFIGURATION_MINPKT0 rx_minpkt0 ; + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0 rx_maxpkt0 ; + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1 rx_maxpkt1 ; + BBH_RX_GENERAL_CONFIGURATION_IHCFG rx_ihcfg ; + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH rx_perflowth ; + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG rx_ploamcfg ; + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET rx_reassemblyoffset ; + DRV_BBH_ERROR error_code ; + +#if defined(DSL_63138) || defined(DSL_63148) + if ( xi_port_index != DRV_BBH_EMAC_0 && + xi_port_index != DRV_BBH_EMAC_1 && + xi_port_index != DRV_BBH_DSL) +#else + if ( xi_port_index >= DRV_BBH_NUMBER_OF_PORTS ) +#endif + { + return ( DRV_BBH_INVALID_PORT_INDEX ) ; + } + + if ( ( xi_rx_configuration->pd_fifo_size_normal_queue < DRV_BBH_RX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_rx_configuration->pd_fifo_size_normal_queue > DRV_BBH_RX_MAXIMAL_PD_FIFO_SIZE ) ) + { + return ( DRV_BBH_INVALID_RX_PD_FIFO_SIZE ) ; + } + + if ( ( xi_rx_configuration->pd_fifo_size_direct_queue < DRV_BBH_RX_MINIMAL_PD_FIFO_SIZE ) || + ( xi_rx_configuration->pd_fifo_size_direct_queue > DRV_BBH_RX_MAXIMAL_PD_FIFO_SIZE ) ) + { + return ( DRV_BBH_INVALID_RX_PD_FIFO_SIZE ) ; + } + + if ( ( xi_rx_configuration->dma_data_and_chunk_descriptor_fifos_size < DRV_BBH_RX_MINIMAL_DMA_OR_SDMA_DATA_FIFO_SIZE ) || + ( xi_rx_configuration->dma_data_and_chunk_descriptor_fifos_size > DRV_BBH_RX_MAXIMAL_DMA_OR_SDMA_DATA_FIFO_SIZE ) ) + { + return ( DRV_BBH_INVALID_DMA_DATA_AND_CHUNK_DESCRIPTOR_FIFOS_SIZE ) ; + } + + if ( ( xi_rx_configuration->dma_exclusive_threshold < DRV_BBH_RX_MINIMAL_DMA_OR_SDMA_DATA_FIFO_SIZE ) || + ( xi_rx_configuration->dma_exclusive_threshold > DRV_BBH_RX_MAXIMAL_DMA_OR_SDMA_DATA_FIFO_SIZE ) ) + { + return ( DRV_BBH_INVALID_DMA_EXCLUSIVE_THRESHOLD ) ; + } + + if ( ( xi_rx_configuration->sdma_data_and_chunk_descriptor_fifos_size < DRV_BBH_RX_MINIMAL_DMA_OR_SDMA_DATA_FIFO_SIZE ) || + ( xi_rx_configuration->sdma_data_and_chunk_descriptor_fifos_size > DRV_BBH_RX_MAXIMAL_DMA_OR_SDMA_DATA_FIFO_SIZE ) ) + { + return ( DRV_BBH_INVALID_SDMA_DATA_AND_CHUNK_DESCRIPTOR_FIFOS_SIZE ) ; + } + + if ( ( xi_rx_configuration->sdma_exclusive_threshold < DRV_BBH_RX_MINIMAL_DMA_OR_SDMA_DATA_FIFO_SIZE ) || + ( xi_rx_configuration->sdma_exclusive_threshold > DRV_BBH_RX_MAXIMAL_DMA_OR_SDMA_DATA_FIFO_SIZE ) ) + { + return ( DRV_BBH_INVALID_SDMA_EXCLUSIVE_THRESHOLD ) ; + } + + if ( ( ! f_minimum_packet_size_is_valid ( xi_rx_configuration->minimum_packet_size_0 , xi_rx_configuration->packet_header_offset ) ) || + ( ! f_minimum_packet_size_is_valid ( xi_rx_configuration->minimum_packet_size_1 , xi_rx_configuration->packet_header_offset ) ) || + ( ! f_minimum_packet_size_is_valid ( xi_rx_configuration->minimum_packet_size_2 , xi_rx_configuration->packet_header_offset ) ) || + ( ! f_minimum_packet_size_is_valid ( xi_rx_configuration->minimum_packet_size_3 , xi_rx_configuration->packet_header_offset ) ) ) + { + return ( DRV_BBH_INVALID_MINIMUM_PACKET_SIZE ) ; + } + + if ( ( ! f_maximum_packet_size_is_valid ( xi_rx_configuration->maximum_packet_size_0 , + xi_rx_configuration->packet_header_offset , + xi_rx_configuration->reassembly_offset_in_8_byte, + xi_rx_configuration->ddr_buffer_size ) ) || + ( ! f_maximum_packet_size_is_valid ( xi_rx_configuration->maximum_packet_size_1 , + xi_rx_configuration->packet_header_offset , + xi_rx_configuration->reassembly_offset_in_8_byte, + xi_rx_configuration->ddr_buffer_size ) ) || + ( ! f_maximum_packet_size_is_valid ( xi_rx_configuration->maximum_packet_size_2 , + xi_rx_configuration->packet_header_offset , + xi_rx_configuration->reassembly_offset_in_8_byte, + xi_rx_configuration->ddr_buffer_size ) ) || + ( ! f_maximum_packet_size_is_valid ( xi_rx_configuration->maximum_packet_size_3 , + xi_rx_configuration->packet_header_offset , + xi_rx_configuration->reassembly_offset_in_8_byte, + xi_rx_configuration->ddr_buffer_size ) ) ) + { + return ( DRV_BBH_INVALID_MAXIMUM_PACKET_SIZE ) ; + } + + if ( xi_rx_configuration->packet_header_offset > DRV_BBH_RX_MAXIMAL_PACKET_HEADER_OFFSET ) + { + return ( DRV_BBH_INVALID_PACKET_HEADER_OFFSET ) ; + } + + if ( xi_rx_configuration->flows_32_255_group_divider < DRV_BBH_RX_MINIMAL_FLOWS_32_255_GROUP_DIVIDER ) + { + return ( DRV_BBH_INVALID_FLOWS_32_255_GROUP_DIVIDER ) ; + } + + if ( xi_rx_configuration->ploam_default_ih_class > DRV_BBH_RX_MAXIMAL_IH_CLASS ) + { + return ( DRV_BBH_INVALID_IH_CLASS ) ; + } + + if ( xi_rx_configuration->reassembly_offset_in_8_byte > DRV_BBH_RX_MAXIMAL_REASSEMBLY_OFFSET_IN_8_BYTE ) + { + return ( DRV_BBH_INVALID_REASSEMBLY_OFFSET ) ; + } + + + BBH_RX_GENERAL_CONFIGURATION_BBCFG_READ( xi_port_index , rx_bbcfg ) ; + rx_bbcfg.runner0route = xi_rx_configuration->runner_0_route_address ; + rx_bbcfg.runner1route = xi_rx_configuration->runner_1_route_address ; + rx_bbcfg.dmaroute = xi_rx_configuration->dma_route_address ; + rx_bbcfg.bpmroute = xi_rx_configuration->bpm_route_address ; + BBH_RX_GENERAL_CONFIGURATION_BBCFG_WRITE( xi_port_index , rx_bbcfg ) ; + + BBH_RX_GENERAL_CONFIGURATION_BBCFG1_READ( xi_port_index , rx_bbcfg1 ) ; + rx_bbcfg1.ihroute = xi_rx_configuration->ih_route_address ; + rx_bbcfg1.sdmaroute = xi_rx_configuration->sdma_route_address ; + rx_bbcfg1.sbpmroute = xi_rx_configuration->sbpm_route_address ; + BBH_RX_GENERAL_CONFIGURATION_BBCFG1_WRITE( xi_port_index , rx_bbcfg1 ) ; + + BBH_RX_GENERAL_CONFIGURATION_DDRCFG_READ( xi_port_index , rx_ddrcfg ) ; + rx_ddrcfg.bufsize = xi_rx_configuration->ddr_buffer_size ; + rx_ddrcfg.bpmmsg = xi_rx_configuration->ddr_bpm_message_format ; + rx_ddrcfg.ddrtmbase = xi_rx_configuration->ddr_tm_base_address ; + BBH_RX_GENERAL_CONFIGURATION_DDRCFG_WRITE( xi_port_index , rx_ddrcfg ) ; + + BBH_RX_GENERAL_CONFIGURATION_PDBASE_READ( xi_port_index , rx_pdbase ) ; + rx_pdbase.normal = xi_rx_configuration->pd_fifo_base_address_normal_queue_in_8_byte ; + rx_pdbase.direct = xi_rx_configuration->pd_fifo_base_address_direct_queue_in_8_byte ; + BBH_RX_GENERAL_CONFIGURATION_PDBASE_WRITE( xi_port_index , rx_pdbase ) ; + + BBH_RX_GENERAL_CONFIGURATION_PDSIZE_READ( xi_port_index , rx_pdsize ) ; + rx_pdsize.normal = xi_rx_configuration->pd_fifo_size_normal_queue ; + rx_pdsize.direct = xi_rx_configuration->pd_fifo_size_direct_queue ; + BBH_RX_GENERAL_CONFIGURATION_PDSIZE_WRITE( xi_port_index , rx_pdsize ) ; + + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_READ( xi_port_index , rx_runnertask ) ; + rx_runnertask.normal0 = xi_rx_configuration->runner_0_task_normal_queue ; + rx_runnertask.direct0 = xi_rx_configuration->runner_0_task_direct_queue ; + rx_runnertask.normal1 = xi_rx_configuration->runner_1_task_normal_queue ; + rx_runnertask.direct1 = xi_rx_configuration->runner_1_task_direct_queue ; + BBH_RX_GENERAL_CONFIGURATION_RUNNERTASK_WRITE( xi_port_index , rx_runnertask ) ; + + BBH_RX_GENERAL_CONFIGURATION_DMAADDR_READ( xi_port_index , rx_dmaaddr ) ; + rx_dmaaddr.database = xi_rx_configuration->dma_data_fifo_base_address ; + rx_dmaaddr.descbase = xi_rx_configuration->dma_chunk_descriptor_fifo_base_address ; + BBH_RX_GENERAL_CONFIGURATION_DMAADDR_WRITE( xi_port_index , rx_dmaaddr ) ; + + BBH_RX_GENERAL_CONFIGURATION_DMACFG_READ( xi_port_index , rx_dmacfg ) ; + rx_dmacfg.numofcd = xi_rx_configuration->dma_data_and_chunk_descriptor_fifos_size ; + rx_dmacfg.exclth = xi_rx_configuration->dma_exclusive_threshold ; + BBH_RX_GENERAL_CONFIGURATION_DMACFG_WRITE( xi_port_index , rx_dmacfg ) ; + + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_READ( xi_port_index , rx_sdmaaddr ) ; + rx_sdmaaddr.database = xi_rx_configuration->sdma_data_fifo_base_address ; + rx_sdmaaddr.descbase = xi_rx_configuration->sdma_chunk_descriptor_fifo_base_address ; + BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_WRITE( xi_port_index , rx_sdmaaddr ) ; + + BBH_RX_GENERAL_CONFIGURATION_SDMACFG_READ( xi_port_index , rx_sdmacfg ) ; + rx_sdmacfg.numofcd = xi_rx_configuration->sdma_data_and_chunk_descriptor_fifos_size ; + rx_sdmacfg.exclth = xi_rx_configuration->sdma_exclusive_threshold ; + BBH_RX_GENERAL_CONFIGURATION_SDMACFG_WRITE( xi_port_index , rx_sdmacfg ) ; + + BBH_RX_GENERAL_CONFIGURATION_MINPKT0_READ( xi_port_index , rx_minpkt0 ) ; + rx_minpkt0.minpkt0 = xi_rx_configuration->minimum_packet_size_0 ; + rx_minpkt0.minpkt1 = xi_rx_configuration->minimum_packet_size_1 ; + rx_minpkt0.minpkt2 = xi_rx_configuration->minimum_packet_size_2 ; + rx_minpkt0.minpkt3 = xi_rx_configuration->minimum_packet_size_3 ; + BBH_RX_GENERAL_CONFIGURATION_MINPKT0_WRITE( xi_port_index , rx_minpkt0 ) ; + + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_READ( xi_port_index , rx_maxpkt0 ) ; + rx_maxpkt0.maxpkt0 = xi_rx_configuration->maximum_packet_size_0 ; + rx_maxpkt0.maxpkt1 = xi_rx_configuration->maximum_packet_size_1 ; + BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_WRITE( xi_port_index , rx_maxpkt0 ) ; + + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_READ( xi_port_index , rx_maxpkt1 ) ; + rx_maxpkt1.maxpkt2 = xi_rx_configuration->maximum_packet_size_2 ; + rx_maxpkt1.maxpkt3 = xi_rx_configuration->maximum_packet_size_3 ; + BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_WRITE( xi_port_index , rx_maxpkt1 ) ; + + BBH_RX_GENERAL_CONFIGURATION_IHCFG_READ( xi_port_index , rx_ihcfg ) ; + rx_ihcfg.ihbufen = xi_rx_configuration->ih_ingress_buffers_bitmask ; + rx_ihcfg.sopoffset = xi_rx_configuration->packet_header_offset ; + BBH_RX_GENERAL_CONFIGURATION_IHCFG_WRITE( xi_port_index , rx_ihcfg ) ; + + + error_code = fi_bl_drv_bbh_rx_set_triggers_of_flow_control_and_drop ( xi_port_index , + xi_rx_configuration->flow_control_triggers_bitmask , + xi_rx_configuration->drop_triggers_bitmask ) ; + if ( error_code != DRV_BBH_NO_ERROR ) + { + return ( error_code ) ; + } + + + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_READ( xi_port_index , rx_perflowth ) ; + rx_perflowth.flowth = xi_rx_configuration->flows_32_255_group_divider ; + BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_WRITE( xi_port_index , rx_perflowth ) ; + + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_READ( xi_port_index , rx_ploamcfg ) ; + rx_ploamcfg.ihclass = xi_rx_configuration->ploam_default_ih_class ; + rx_ploamcfg.ihoverride = xi_rx_configuration->ploam_ih_class_override ; + BBH_RX_GENERAL_CONFIGURATION_PLOAMCFG_WRITE( xi_port_index , rx_ploamcfg ) ; + + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_READ( xi_port_index , rx_reassemblyoffset ) ; + rx_reassemblyoffset.offset = xi_rx_configuration->reassembly_offset_in_8_byte ; + BBH_RX_GENERAL_CONFIGURATION_REASSEMBLYOFFSET_WRITE( xi_port_index , rx_reassemblyoffset ) ; + + return ( DRV_BBH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_bbh_rx_set_configuration ) ; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_bbh_rx_set_triggers_of_flow_control_and_drop */ +/* */ +/* Title: */ +/* */ +/* BBH Driver - RX Set triggers for flow control and drop */ +/* */ +/* Abstract: */ +/* */ +/* This function sets triggers for sending flow control to MAC, and */ +/* triggers for dropping packets. For flow control, there are 3 possible */ +/* triggers: BPM is in exclusive state, SBPM is in exclusive state, Runner */ +/* request. For drop, there are 2 possible triggers: BPM is in exclusive */ +/* state, SBPM is in exclusive state. The triggers are turned on/off */ +/* according to the given bitmask. Values of the enumeration */ +/* DRV_BBH_RX_FLOW_CONTROL_TRIGGER should be ORed, as a */ +/* description of the desired triggers for flow control. Values of the */ +/* enumeration DRV_BBH_RX_DROP_TRIGGER should be ORed, as a */ +/* description of the desired triggers for drop. */ +/* */ +/* Input: */ +/* */ +/* xi_port_index - Port index */ +/* */ +/* xi_flow_control_triggers_bitmask - Flow control triggers bitmask */ +/* */ +/* xi_drop_triggers_bitmask - Drop triggers bitmask */ +/* */ +/* Output: */ +/* */ +/* DRV_BBH_ERROR - Return code */ +/* DRV_BBH_NO_ERROR - No error */ +/* DRV_BBH_INVALID_PORT_INDEX - Invalid port index */ +/* */ +/******************************************************************************/ +DRV_BBH_ERROR fi_bl_drv_bbh_rx_set_triggers_of_flow_control_and_drop ( DRV_BBH_PORT_INDEX xi_port_index , + uint8_t xi_flow_control_triggers_bitmask , + uint8_t xi_drop_triggers_bitmask ) +{ + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL rx_flowctrl ; + int32_t flow_control_trigger_bpm_is_in_exclusive_state_enable ; + int32_t flow_control_trigger_sbpm_is_in_exclusive_state_enable ; + int32_t flow_control_trigger_runner_request_enable ; + int32_t drop_trigger_bpm_is_in_exclusive_state_enable ; + int32_t drop_trigger_sbpm_is_in_exclusive_state_enable ; + +#if defined(DSL_63138) || defined(DSL_63148) + if ( xi_port_index != DRV_BBH_EMAC_0 && + xi_port_index != DRV_BBH_EMAC_1 && + xi_port_index != DRV_BBH_DSL) +#else + if ( xi_port_index >= DRV_BBH_NUMBER_OF_PORTS ) +#endif + { + return ( DRV_BBH_INVALID_PORT_INDEX ) ; + } + + + if ( ( xi_flow_control_triggers_bitmask & DRV_BBH_RX_FLOW_CONTROL_TRIGGER_BPM_IS_IN_EXCLUSIVE_STATE ) == 0 ) + { + flow_control_trigger_bpm_is_in_exclusive_state_enable = 0 ; + } + else + { + flow_control_trigger_bpm_is_in_exclusive_state_enable = 1 ; + } + + if ( ( xi_flow_control_triggers_bitmask & DRV_BBH_RX_FLOW_CONTROL_TRIGGER_SBPM_IS_IN_EXCLUSIVE_STATE ) == 0 ) + { + flow_control_trigger_sbpm_is_in_exclusive_state_enable = 0 ; + } + else + { + flow_control_trigger_sbpm_is_in_exclusive_state_enable = 1 ; + } + + if ( ( xi_flow_control_triggers_bitmask & DRV_BBH_RX_FLOW_CONTROL_TRIGGER_RUNNER_REQUEST ) == 0 ) + { + flow_control_trigger_runner_request_enable = 0 ; + } + else + { + flow_control_trigger_runner_request_enable = 1 ; + } + + + if ( ( xi_drop_triggers_bitmask & DRV_BBH_RX_DROP_TRIGGER_BPM_IS_IN_EXCLUSIVE_STATE ) == 0 ) + { + drop_trigger_bpm_is_in_exclusive_state_enable = 0 ; + } + else + { + drop_trigger_bpm_is_in_exclusive_state_enable = 1 ; + } + + if ( ( xi_drop_triggers_bitmask & DRV_BBH_RX_DROP_TRIGGER_SBPM_IS_IN_EXCLUSIVE_STATE ) == 0 ) + { + drop_trigger_sbpm_is_in_exclusive_state_enable = 0 ; + } + else + { + drop_trigger_sbpm_is_in_exclusive_state_enable = 1 ; + } + + + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_READ( xi_port_index , rx_flowctrl ) ; + rx_flowctrl.bpmen = flow_control_trigger_bpm_is_in_exclusive_state_enable ; + rx_flowctrl.sbpmen = flow_control_trigger_sbpm_is_in_exclusive_state_enable ; + rx_flowctrl.runneren = flow_control_trigger_runner_request_enable ; + rx_flowctrl.bpmdropen = drop_trigger_bpm_is_in_exclusive_state_enable ; + rx_flowctrl.sbpmdropen = drop_trigger_sbpm_is_in_exclusive_state_enable ; + BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_WRITE( xi_port_index , rx_flowctrl ) ; + + return ( DRV_BBH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_bbh_rx_set_triggers_of_flow_control_and_drop ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_bbh_rx_set_per_flow_configuration */ +/* */ +/* Title: */ +/* */ +/* BBH Driver - RX Set per flow configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets per-flow configuration in the RX part of BBH block. */ +/* Each one of flows 0-31 has its own configuration. Flows 32-255 are */ +/* divided into 2 groups (32 to x, x+1 to 255). Each group has its own */ +/* configuration. The groups-divider (x) is configured in "RX Set */ +/* configuration" API. In Ethernet case, only flow 0 is relevant. */ +/* */ +/* Input: */ +/* */ +/* xi_port_index - Port index */ +/* */ +/* xi_flow_index - Flow index */ +/* */ +/* xi_per_flow_configuration - Per flow configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_BBH_ERROR - Return code */ +/* DRV_BBH_NO_ERROR - No error */ +/* DRV_BBH_INVALID_PORT_INDEX - Invalid port index */ +/* */ +/******************************************************************************/ +DRV_BBH_ERROR fi_bl_drv_bbh_rx_set_per_flow_configuration ( DRV_BBH_PORT_INDEX xi_port_index , + DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION xi_flow_index , + const DRV_BBH_PER_FLOW_CONFIGURATION * xi_per_flow_configuration ) +{ + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS rx_perflowsets ; + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0 rx_minpktsel ; + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0 rx_maxpktsel ; + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0 rx_ihclass ; + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE rx_ihoverride ; + + +#if defined(DSL_63138) || defined(DSL_63148) + if ( xi_port_index != DRV_BBH_EMAC_0 && + xi_port_index != DRV_BBH_EMAC_1 && + xi_port_index != DRV_BBH_DSL) +#else + if ( xi_port_index >= DRV_BBH_NUMBER_OF_PORTS ) +#endif + { + return ( DRV_BBH_INVALID_PORT_INDEX ) ; + } + + if ( xi_flow_index > DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION_GROUP_1 ) + { + return ( DRV_BBH_INVALID_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION ) ; + } + + /* for Ethernet port, only flow 0 is relevant */ + if ( xi_port_index != DRV_BBH_GPON +#if defined(__OREN__) + && xi_port_index != DRV_BBH_EPON +#endif + && xi_flow_index > 0 ) + { + return ( DRV_BBH_ILLEGAL_FLOW_INDEX_FOR_ETHERNET_PORT ) ; + } + + if ( xi_per_flow_configuration->minimum_packet_size_selection > DRV_BBH_RX_MAXIMAL_SELECTION_FOR_MINIMUM_OR_MAXIMUM_PACKET_SIZE ) + { + return ( DRV_BBH_INVALID_MINIMUM_PACKET_SIZE_SELECTION ) ; + } + + if ( xi_per_flow_configuration->maximum_packet_size_selection > DRV_BBH_RX_MAXIMAL_SELECTION_FOR_MINIMUM_OR_MAXIMUM_PACKET_SIZE ) + { + return ( DRV_BBH_INVALID_MAXIMUM_PACKET_SIZE_SELECTION ) ; + } + + if ( xi_per_flow_configuration->default_ih_class > DRV_BBH_RX_MAXIMAL_IH_CLASS ) + { + return ( DRV_BBH_INVALID_IH_CLASS ) ; + } + + + /* if it is one of the two groups */ + if ( xi_flow_index >= DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION_GROUP_0 ) + { + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_READ( xi_port_index , rx_perflowsets ) ; + + switch ( xi_flow_index ) + { + case DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION_GROUP_0: + rx_perflowsets.minpktsel0 = xi_per_flow_configuration->minimum_packet_size_selection ; + rx_perflowsets.maxpktsel0 = xi_per_flow_configuration->maximum_packet_size_selection ; + rx_perflowsets.ihclass0 = xi_per_flow_configuration->default_ih_class ; + rx_perflowsets.override0 = xi_per_flow_configuration->ih_class_override ; + break ; + + case DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION_GROUP_1: + rx_perflowsets.minpktsel1 = xi_per_flow_configuration->minimum_packet_size_selection ; + rx_perflowsets.maxpktsel1 = xi_per_flow_configuration->maximum_packet_size_selection ; + rx_perflowsets.ihclass1 = xi_per_flow_configuration->default_ih_class ; + rx_perflowsets.override1 = xi_per_flow_configuration->ih_class_override ; + break ; + } + + BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_WRITE( xi_port_index , rx_perflowsets ) ; + + return ( DRV_BBH_NO_ERROR ) ; + } + + + /* if it is one of flows 0-31: */ + + /* minimum & maximum packet length selection */ + + /* flows 0-15 */ + if ( xi_flow_index <= CS_RX_MAXIMAL_FLOW_INDEX_FOR_MINPKTSEL0_AND_MAXPKTSEL0_REGISTERS ) + { + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_READ( xi_port_index , rx_minpktsel ) ; + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_READ( xi_port_index , rx_maxpktsel ) ; + } + /* flows 16-31 */ + else + { + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_READ( xi_port_index , rx_minpktsel ) ; + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_READ( xi_port_index , rx_maxpktsel ) ; + } + + MS_SET_BITS( rx_minpktsel.minpktsel , + ( xi_flow_index * CS_RX_FIELD_LENGTH_FOR_MINPKTSEL_AND_MAXPKTSEL_REGISTERS ) % CS_NUMBER_OF_BITS_IN_REGISTER , + CS_RX_FIELD_LENGTH_FOR_MINPKTSEL_AND_MAXPKTSEL_REGISTERS , + xi_per_flow_configuration->minimum_packet_size_selection ) ; + + MS_SET_BITS( rx_maxpktsel.maxpktsel , + ( xi_flow_index * CS_RX_FIELD_LENGTH_FOR_MINPKTSEL_AND_MAXPKTSEL_REGISTERS ) % CS_NUMBER_OF_BITS_IN_REGISTER , + CS_RX_FIELD_LENGTH_FOR_MINPKTSEL_AND_MAXPKTSEL_REGISTERS , + xi_per_flow_configuration->maximum_packet_size_selection ) ; + + /* flows 0-15 */ + if ( xi_flow_index <= CS_RX_MAXIMAL_FLOW_INDEX_FOR_MINPKTSEL0_AND_MAXPKTSEL0_REGISTERS ) + { + + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_WRITE( xi_port_index , rx_minpktsel ) ; + + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_WRITE( xi_port_index , rx_maxpktsel ) ; + } + /* flows 16-31 */ + else + { + + BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_WRITE( xi_port_index , rx_minpktsel ) ; + + BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_WRITE( xi_port_index , rx_maxpktsel ) ; + } + + + /* default IH class */ + + /* flows 0-7 */ + if ( xi_flow_index <= CS_RX_MAXIMAL_FLOW_INDEX_FOR_IHCLASS0_REGISTER ) + { + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_READ( xi_port_index , rx_ihclass ) ; + } + /* flows 8-15 */ + else if ( xi_flow_index <= CS_RX_MAXIMAL_FLOW_INDEX_FOR_IHCLASS1_REGISTER ) + { + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_READ( xi_port_index , rx_ihclass ) ; + } + /* flows 16-23 */ + else if ( xi_flow_index <= CS_RX_MAXIMAL_FLOW_INDEX_FOR_IHCLASS2_REGISTER ) + { + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_READ( xi_port_index , rx_ihclass ) ; + } + /* flows 24-31 */ + else + { + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_READ( xi_port_index , rx_ihclass ) ; + } + + + MS_SET_BITS( rx_ihclass.ihclass , + ( xi_flow_index * CS_RX_FIELD_LENGTH_FOR_IHCLASS_REGISTERS ) % CS_NUMBER_OF_BITS_IN_REGISTER , + CS_RX_FIELD_LENGTH_FOR_IHCLASS_REGISTERS , + xi_per_flow_configuration->default_ih_class ) ; + + /* flows 0-7 */ + if ( xi_flow_index <= CS_RX_MAXIMAL_FLOW_INDEX_FOR_IHCLASS0_REGISTER ) + { + BBH_RX_GENERAL_CONFIGURATION_IHCLASS0_WRITE( xi_port_index , rx_ihclass ) ; + + } + /* flows 8-15 */ + else if ( xi_flow_index <= CS_RX_MAXIMAL_FLOW_INDEX_FOR_IHCLASS1_REGISTER ) + { + BBH_RX_GENERAL_CONFIGURATION_IHCLASS1_WRITE( xi_port_index , rx_ihclass ) ; + + } + /* flows 16-23 */ + else if ( xi_flow_index <= CS_RX_MAXIMAL_FLOW_INDEX_FOR_IHCLASS2_REGISTER ) + { + BBH_RX_GENERAL_CONFIGURATION_IHCLASS2_WRITE( xi_port_index , rx_ihclass ) ; + + } + /* flows 24-31 */ + else + { + BBH_RX_GENERAL_CONFIGURATION_IHCLASS3_WRITE( xi_port_index , rx_ihclass ) ; + + } + + + /* IH class override */ + + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_READ( xi_port_index , rx_ihoverride ) ; + + MS_SET_BITS( rx_ihoverride.ihoverride , + xi_flow_index , + 1 , + xi_per_flow_configuration->ih_class_override ) ; + + BBH_RX_GENERAL_CONFIGURATION_IHOVERRIDE_WRITE( xi_port_index , rx_ihoverride ) ; + + + return ( DRV_BBH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_bbh_rx_set_per_flow_configuration ) ; + + +/******************************************************************************/ +/* */ +/* Internal functions implementation */ +/* */ +/******************************************************************************/ + +/* this function assumes that the input paramter is valid! */ +uint8_t f_convert_tx_pd_fifo_size_from_user_to_hw_format ( uint8_t xi_pd_fifo_size ) +{ + return ( xi_pd_fifo_size - 1 ) ; +} + +/* this function assumes that the input paramter is valid! */ +uint8_t f_convert_tx_pd_fifo_size_from_hw_to_user_format ( uint8_t xi_pd_fifo_size ) +{ + return ( xi_pd_fifo_size + 1 ) ; +} + +int32_t f_minimum_packet_size_is_valid ( uint8_t xi_minimum_packet_size , + uint8_t xi_packet_header_offset ) +{ + if ( xi_minimum_packet_size > DRV_BBH_RX_MAXIMAL_VALUE_FOR_MINIMUM_PACKET_SIZE ) + { + return ( 0 ) ; + } + + if ( xi_minimum_packet_size >= CS_DRV_BBH_RX_INGRESS_BUFFER_SIZE - xi_packet_header_offset ) + { + return ( 0 ) ; + } + + return ( 1 ) ; +} + + +int32_t f_maximum_packet_size_is_valid ( uint16_t xi_maximum_packet_size , + uint8_t xi_packet_header_offset , + uint8_t xi_reassembly_offset_in_8_byte, + uint8_t xi_ddr_buffer_size ) +{ + uint16_t ddr_buffer_size_in_byte; + uint16_t reassembly_offset_in_byte = xi_reassembly_offset_in_8_byte * 8 ; + + if ( xi_maximum_packet_size > DRV_BBH_RX_MAXIMAL_VALUE_FOR_MAXIMUM_PACKET_SIZE ) + { + return ( 0 ) ; + } + + switch ( xi_ddr_buffer_size ) + { + case DRV_BBH_DDR_BUFFER_SIZE_2_KB: + default: + ddr_buffer_size_in_byte = CS_DRV_BBH_RX_DDR_BUFFER_SIZE_2K; + break; + case DRV_BBH_DDR_BUFFER_SIZE_2_5_KB: + ddr_buffer_size_in_byte = CS_DRV_BBH_RX_DDR_BUFFER_SIZE_2_5K; + break; + case DRV_BBH_DDR_BUFFER_SIZE_4_KB: + ddr_buffer_size_in_byte = CS_DRV_BBH_RX_DDR_BUFFER_SIZE_4K; + break; + case DRV_BBH_DDR_BUFFER_SIZE_16_KB: + ddr_buffer_size_in_byte = CS_DRV_BBH_RX_DDR_BUFFER_SIZE_16K; + break; + } + + if ( xi_maximum_packet_size > ddr_buffer_size_in_byte - xi_packet_header_offset - reassembly_offset_in_byte ) + { + return ( 0 ) ; + } + + return ( 1 ) ; +} diff --git a/arch/arm/mach-bcmbca/rdp/rdp_drv_bbh.h b/arch/arm/mach-bcmbca/rdp/rdp_drv_bbh.h new file mode 100755 index 0000000000..f03e8a2925 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_drv_bbh.h @@ -0,0 +1,977 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This header file defines all datatypes and functions exported for the */ +/* Lilac BBH driver. */ +/* */ +/******************************************************************************/ + + +#ifndef DRV_BBH_H_INCLUDED +#define DRV_BBH_H_INCLUDED + +#ifdef __cplusplus +extern "C" +{ +#endif + + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ + +#include "rdp_bbh.h" + + +/******************************************************************************/ +/* */ +/* Types and values definitions */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* Error codes returned by BBH driver APIs */ +/******************************************************************************/ +typedef enum +{ + DRV_BBH_NO_ERROR , + DRV_BBH_INVALID_PORT_INDEX , + DRV_BBH_INVALID_MULTICAST_HEADER_SIZE , + DRV_BBH_INVALID_TX_PD_FIFO_SIZE , + DRV_BBH_INVALID_PD_PREFETCH_BYTE_THRESHOLD , + DRV_BBH_INVALID_DMA_READ_REQUESTS_MAXIMAL_NUMBER , + DRV_BBH_INVALID_SDMA_READ_REQUESTS_MAXIMAL_NUMBER , + DRV_BBH_INVALID_RX_PD_FIFO_SIZE , + DRV_BBH_INVALID_DMA_DATA_AND_CHUNK_DESCRIPTOR_FIFOS_SIZE , + DRV_BBH_INVALID_DMA_EXCLUSIVE_THRESHOLD , + DRV_BBH_INVALID_SDMA_DATA_AND_CHUNK_DESCRIPTOR_FIFOS_SIZE , + DRV_BBH_INVALID_SDMA_EXCLUSIVE_THRESHOLD , + DRV_BBH_INVALID_MINIMUM_PACKET_SIZE , + DRV_BBH_INVALID_MAXIMUM_PACKET_SIZE , + DRV_BBH_INVALID_PACKET_HEADER_OFFSET , + DRV_BBH_INVALID_FLOWS_32_255_GROUP_DIVIDER , + DRV_BBH_INVALID_IH_CLASS , + DRV_BBH_INVALID_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION , + DRV_BBH_ILLEGAL_FLOW_INDEX_FOR_ETHERNET_PORT , + DRV_BBH_INVALID_MINIMUM_PACKET_SIZE_SELECTION , + DRV_BBH_INVALID_MAXIMUM_PACKET_SIZE_SELECTION , + DRV_BBH_INVALID_REASSEMBLY_OFFSET , + DRV_BBH_API_IS_FOR_GPON_PORT_ONLY, + DRV_BBH_TCONT_ID_IS_OUT_OF_RANGE +} +DRV_BBH_ERROR ; + +/* Minimal Multicast header size */ +#define DRV_BBH_MINIMAL_MULTICAST_HEADER_SIZE ( 4 ) +/* Maximal Multicast header size */ +#define DRV_BBH_MAXIMAL_MULTICAST_HEADER_SIZE ( 64 ) + +/* Minimal PD FIFO size in TX */ +#define DRV_BBH_TX_MINIMAL_PD_FIFO_SIZE ( 1 ) +/* Maximal PD FIFO size in TX */ +#define DRV_BBH_TX_MAXIMAL_PD_FIFO_SIZE ( 8 ) + +/* Maximal PD prefetch byte threshold, in 32 byte resolution */ +#define DRV_BBH_TX_MAXIMAL_PD_PREFETCH_BYTE_THRESHOLD_IN_32_BYTE ( 4095 ) + +/* Minimal value for DMA read requests maximal number */ +#define DRV_BBH_TX_MINIMAL_VALUE_FOR_DMA_READ_REQUESTS_MAXIMAL_NUMBER ( 1 ) +/* Maximal value for DMA read requests maximal number */ +#define DRV_BBH_TX_MAXIMAL_VALUE_FOR_DMA_READ_REQUESTS_MAXIMAL_NUMBER ( 8 ) + +/* Minimal value for SDMA read requests maximal number */ +#define DRV_BBH_TX_MINIMAL_VALUE_FOR_SDMA_READ_REQUESTS_MAXIMAL_NUMBER ( 1 ) +/* Maximal value for SDMA read requests maximal number */ +#define DRV_BBH_TX_MAXIMAL_VALUE_FOR_SDMA_READ_REQUESTS_MAXIMAL_NUMBER ( 4 ) + + +/* Minimal PD FIFO size in RX */ +#define DRV_BBH_RX_MINIMAL_PD_FIFO_SIZE ( 2 ) +/* Maximal PD FIFO size in RX */ +#define DRV_BBH_RX_MAXIMAL_PD_FIFO_SIZE ( 64 ) + +/* Minimal DMA/SDMA data FIFO size */ +#define DRV_BBH_RX_MINIMAL_DMA_OR_SDMA_DATA_FIFO_SIZE ( 2 ) +/* Maximal DMA/SDMA data FIFO size */ +#define DRV_BBH_RX_MAXIMAL_DMA_OR_SDMA_DATA_FIFO_SIZE ( 64 ) + +/* Maximal value for minimum packet size in RX */ +#define DRV_BBH_RX_MAXIMAL_VALUE_FOR_MINIMUM_PACKET_SIZE ( 96 ) + +/* Maximal value for maximum packet size in RX */ +#define DRV_BBH_RX_MAXIMAL_VALUE_FOR_MAXIMUM_PACKET_SIZE ( 16383 ) + +/* Maximal packet header offset */ +#define DRV_BBH_RX_MAXIMAL_PACKET_HEADER_OFFSET ( 63 ) + +/* Number of Flows */ +#define DRV_BBH_RX_NUMBER_OF_FLOWS ( 256 ) + +/* Minimal Flows 32-255 group divider */ +#define DRV_BBH_RX_MINIMAL_FLOWS_32_255_GROUP_DIVIDER ( 32 ) + +/* Maximal IH class */ +#define DRV_BBH_RX_MAXIMAL_IH_CLASS ( 15 ) + +/* Maximal selection for minimum or maximum packet size */ +#define DRV_BBH_RX_MAXIMAL_SELECTION_FOR_MINIMUM_OR_MAXIMUM_PACKET_SIZE ( 3 ) + +/* Maximal reassembly offset (in 8 byte resolution) */ +#define DRV_BBH_RX_MAXIMAL_REASSEMBLY_OFFSET_IN_8_BYTE ( 50 ) + + +/******************************************************************************/ +/* BBH Port index: there are 7 instances of the BBH block. BBH 0-5 refer to */ +/* EMAC 0-5 and BBH 6 refers to GPON (EMAC 5 is the one MUXed with GPON). */ +/******************************************************************************/ +typedef enum +{ + DRV_BBH_EMAC_0 , + DRV_BBH_EMAC_1 , + DRV_BBH_EMAC_2 , + DRV_BBH_EMAC_3 , + DRV_BBH_EMAC_4 , + DRV_BBH_EMAC_5 , + DRV_BBH_GPON , + DRV_BBH_DSL = DRV_BBH_GPON , + DRV_BBH_EPON, + DRV_BBH_NUMBER_OF_PORTS +} +DRV_BBH_PORT_INDEX ; + + +/******************************************************************************/ +typedef enum +{ + DRV_BBH_DDR_BPM_MESSAGE_FORMAT_14_BIT_BN_WIDTH , + DRV_BBH_DDR_BPM_MESSAGE_FORMAT_15_BIT_BN_WIDTH +} +DRV_BBH_DDR_BPM_MESSAGE_FORMAT ; +/* DDR buffer size */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_BBH_DDR_BUFFER_SIZE_2_KB , + DRV_BBH_DDR_BUFFER_SIZE_4_KB , + DRV_BBH_DDR_BUFFER_SIZE_16_KB , + DRV_BBH_DDR_BUFFER_SIZE_2_5_KB +} +DRV_BBH_DDR_BUFFER_SIZE ; + + +/******************************************************************************/ +/* Payload offset resolution */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_BBH_PAYLOAD_OFFSET_RESOLUTION_1_B , + DRV_BBH_PAYLOAD_OFFSET_RESOLUTION_2_B +} +DRV_BBH_PAYLOAD_OFFSET_RESOLUTION ; + + +/******************************************************************************/ +/* BBH TX internal units */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_BBH_TX_INTERNAL_UNIT_SEGMENTATION_CONTEXT_TABLE = 1 << 0 , + DRV_BBH_TX_INTERNAL_UNIT_ALL_40_PDS_FIFOS = 1 << 1 , + DRV_BBH_TX_INTERNAL_UNIT_WRITE_POINTER_IN_THE_DMA = 1 << 2 , + DRV_BBH_TX_INTERNAL_UNIT_WRITE_POINTER_IN_THE_SDMA = 1 << 3 , + DRV_BBH_TX_INTERNAL_UNIT_BPM_RELEASE_FIFO = 1 << 4 , + DRV_BBH_TX_INTERNAL_UNIT_SBPM_RELEASE_FIFO = 1 << 5 , + DRV_BBH_TX_INTERNAL_UNIT_ORDER_KEEPER_FIFO = 1 << 6 , + DRV_BBH_TX_INTERNAL_UNIT_DDR_DATA_FIFO = 1 << 7 , + DRV_BBH_TX_INTERNAL_UNIT_SRAM_DATA_FIFO = 1 << 8 , + DRV_BBH_TX_INTERNAL_UNIT_SKB_POINTERS = 1 << 9 +} +DRV_BBH_TX_INTERNAL_UNIT ; + + +/******************************************************************************/ +/* Flow control triggers */ +/******************************************************************************/ +typedef enum +{ + DRV_BBH_RX_FLOW_CONTROL_TRIGGER_BPM_IS_IN_EXCLUSIVE_STATE = 1 << 0 , + DRV_BBH_RX_FLOW_CONTROL_TRIGGER_SBPM_IS_IN_EXCLUSIVE_STATE = 1 << 1 , + DRV_BBH_RX_FLOW_CONTROL_TRIGGER_RUNNER_REQUEST = 1 << 2 , +} +DRV_BBH_RX_FLOW_CONTROL_TRIGGER ; + + +/******************************************************************************/ +/* Drop triggers */ +/******************************************************************************/ +typedef enum +{ + DRV_BBH_RX_DROP_TRIGGER_BPM_IS_IN_EXCLUSIVE_STATE = 1 << 0 , + DRV_BBH_RX_DROP_TRIGGER_SBPM_IS_IN_EXCLUSIVE_STATE = 1 << 1 , +} +DRV_BBH_RX_DROP_TRIGGER ; + + +/******************************************************************************/ +/* Flow index for per flow configuration: */ +/* Each one of flows 0-31 has its own configuration. Flows 32-255 are divided */ +/* into 2 groups (32 to x, x+1 to 255). Each group has its own configuration. */ +/* The groups-divider (x) is configured in "RX Set configuration" API. */ +/* The allowed values for this type are: 0-31, */ +/* DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION_GROUP_0, */ +/* DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION_GROUP_1 */ +/******************************************************************************/ +typedef uint8_t DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION ; +#define DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION_GROUP_0 ( 32 ) +#define DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION_GROUP_1 ( 33 ) + + +/******************************************************************************/ +/* BBH RX internal units */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_BBH_RX_INTERNAL_UNIT_INPUT_BUFFER = 1 << 0 , + DRV_BBH_RX_INTERNAL_UNIT_BURST_BUFFER = 1 << 1 , + DRV_BBH_RX_INTERNAL_UNIT_IH_CONTEXT = 1 << 2 , + DRV_BBH_RX_INTERNAL_UNIT_IH_BUFFER_ENABLE = 1 << 3 , + DRV_BBH_RX_INTERNAL_UNIT_REASSEMBLY_FIFO = 1 << 4 , + DRV_BBH_RX_INTERNAL_UNIT_BPM_FIFO = 1 << 5 , + DRV_BBH_RX_INTERNAL_UNIT_SBPM_FIFO = 1 << 6 , + DRV_BBH_RX_INTERNAL_UNIT_IH_RESPONSE_FIFO = 1 << 7 , + DRV_BBH_RX_INTERNAL_UNIT_PRE_WAKEUP_FIFO = 1 << 8 , + DRV_BBH_RX_INTERNAL_UNIT_REASSEMBLY_CONTEXT_TABLE = 1 << 9 , + DRV_BBH_RX_INTERNAL_UNIT_DMA_WRITE_POINTER = 1 << 10 , + DRV_BBH_RX_INTERNAL_UNIT_SDMA_WRITE_POINTER = 1 << 11 , + DRV_BBH_RX_INTERNAL_UNIT_RUNNER_WRITE_POINTER = 1 << 12 +} +DRV_BBH_RX_INTERNAL_UNIT ; + + +/******************************************************************************/ +/* TX configuration */ +/******************************************************************************/ +typedef struct +{ + /* DMA route address. */ + uint8_t dma_route_address ; + + /* BPM route address. */ + uint8_t bpm_route_address ; + + /* SDMA route address. */ + uint8_t sdma_route_address ; + + /* SBPM route address. */ + uint8_t sbpm_route_address ; + + /* Runner route address. */ + uint8_t runner_route_address ; + + /* Runner route address. */ + uint8_t runner_sts_route ; + + /* The data is arranged in the DDR in a fixed size buffers. */ + DRV_BBH_DDR_BUFFER_SIZE ddr_buffer_size ; + + DRV_BBH_DDR_BPM_MESSAGE_FORMAT ddr_bpm_message_format ; + /* The payload offset itself is indicated in the PD sent from runner to + BBH. */ + DRV_BBH_PAYLOAD_OFFSET_RESOLUTION payload_offset_resolution ; + + /* Multicast header size. */ + uint8_t multicast_header_size ; + + /* Multicast headers base address, in byte resolution. This base address + should be aligned to 512 bytes, therefore the 9 LSB bits are always + zero (and will be ignored). The address is relative to DDR TM base. */ + uint32_t multicast_headers_base_address_in_byte ; + + /* Runner task to be woken up, per TCONT. In Ethernet case, only Task 0 + is relevant. */ + uint8_t task_0 ; + + /* Runner task to be woken up, per TCONT. In Ethernet case, only Task 0 + is relevant. */ + uint8_t task_1 ; + + /* Runner task to be woken up, per TCONT. In Ethernet case, only Task 0 + is relevant. */ + uint8_t task_2 ; + + /* Runner task to be woken up, per TCONT. In Ethernet case, only Task 0 + is relevant. */ + uint8_t task_3 ; + + /* Runner task to be woken up, per TCONT. In Ethernet case, only Task 0 + is relevant. */ + uint8_t task_4 ; + + /* Runner task to be woken up, per TCONT. In Ethernet case, only Task 0 + is relevant. */ + uint8_t task_5 ; + + /* Runner task to be woken up, per TCONT. In Ethernet case, only Task 0 + is relevant. */ + uint8_t task_6 ; + + /* Runner task to be woken up, per TCONT. In Ethernet case, only Task 0 + is relevant. */ + uint8_t task_7 ; + + /* Runner task to be woken up, for TCONTs 8-39. In Ethernet case, only + Task 0 is relevant. */ + uint8_t task_8_39 ; + + /* PD FIFO size, per TCONT. A total of 128 PDs is available for all + queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_0 ; + + /* PD FIFO size, per TCONT. A total of 128 PDs is available for all + queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_1 ; + + /* PD FIFO size, per TCONT. A total of 128 PDs is available for all + queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_2 ; + + /* PD FIFO size, per TCONT. A total of 128 PDs is available for all + queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_3 ; + + /* PD FIFO size, per TCONT. A total of 128 PDs is available for all + queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_4 ; + + /* PD FIFO size, per TCONT. A total of 128 PDs is available for all + queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_5 ; + + /* PD FIFO size, per TCONT. A total of 128 PDs is available for all + queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_6 ; + + /* PD FIFO size, per TCONT. A total of 128 PDs is available for all + queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_7 ; + + /* PD FIFO size, for TCONTs 8-15. A total of 128 PDs is available for all + queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_8_15 ; + + /* PD FIFO size, for TCONTs 16-23. A total of 128 PDs is available for + all queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_16_23 ; + + /* PD FIFO size, for TCONTs 24-31. A total of 128 PDs is available for + all queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_24_31 ; + + /* PD FIFO size, for TCONTs 32-39. A total of 128 PDs is available for + all queues. For Ethernet, queue 0 should be configured. */ + uint8_t pd_fifo_size_32_39 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_0 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_1 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_2 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_3 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_4 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_5 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_6 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_7 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_8_15 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_16_23 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_24_31 ; + + /* Base within the 128 PDs array. Should correspond to the FIFOs sizes + configuration. */ + uint8_t pd_fifo_base_32_39 ; + + /* PD prefetch byte threshold enable (for preventing HOL blocking). */ + int32_t pd_prefetch_byte_threshold_enable ; + + /* PD prefetch byte threshold (in 32 byte resolution), per TCONT. + Relevant if "PD prefetch byte threshold enable" is set. */ + uint16_t pd_prefetch_byte_threshold_0_in_32_byte ; + + /* PD prefetch byte threshold (in 32 byte resolution), per TCONT. + Relevant if "PD prefetch byte threshold enable" is set. */ + uint16_t pd_prefetch_byte_threshold_1_in_32_byte ; + + /* PD prefetch byte threshold (in 32 byte resolution), per TCONT. + Relevant if "PD prefetch byte threshold enable" is set. */ + uint16_t pd_prefetch_byte_threshold_2_in_32_byte ; + + /* PD prefetch byte threshold (in 32 byte resolution), per TCONT. + Relevant if "PD prefetch byte threshold enable" is set. */ + uint16_t pd_prefetch_byte_threshold_3_in_32_byte ; + + /* PD prefetch byte threshold (in 32 byte resolution), per TCONT. + Relevant if "PD prefetch byte threshold enable" is set. */ + uint16_t pd_prefetch_byte_threshold_4_in_32_byte ; + + /* PD prefetch byte threshold (in 32 byte resolution), per TCONT. + Relevant if "PD prefetch byte threshold enable" is set. */ + uint16_t pd_prefetch_byte_threshold_5_in_32_byte ; + + /* PD prefetch byte threshold (in 32 byte resolution), per TCONT. + Relevant if "PD prefetch byte threshold enable" is set. */ + uint16_t pd_prefetch_byte_threshold_6_in_32_byte ; + + /* PD prefetch byte threshold (in 32 byte resolution), per TCONT. + Relevant if "PD prefetch byte threshold enable" is set. */ + uint16_t pd_prefetch_byte_threshold_7_in_32_byte ; + + /* PD prefetch byte threshold (in 32 byte resolution), for TCONTs 8-39. + Relevant if "PD prefetch byte threshold enable" is set. */ + uint16_t pd_prefetch_byte_threshold_8_39_in_32_byte ; + + /* This value should be identical to the relevant configuration in the + DMA. */ + uint8_t dma_read_requests_fifo_base_address ; + + /* DMA read requests maximal number. */ + uint8_t dma_read_requests_maximal_number ; + + /* Epon_read_urgent */ + uint8_t epnurgnt ; + + /* The value should be identical to the relevant configuration in the + SDMA. */ + uint8_t sdma_read_requests_fifo_base_address ; + + /* SDMA read requests maximal number */ + uint8_t sdma_read_requests_maximal_number ; + + /* Defines the TCONT address within the Runner address space. The address + is in 8 bytes resolution. In GPON case, the BBH writes the relevant + TCONT number into this address before sending a wake-up request to the + Runner, for requesting a PD. */ + uint16_t tcont_address_in_8_byte ; + + /* When the packet is transmitted from absolute address, instead of + releasing the BN, the BBH writes a 6 bits read counter into the Runner + SRAM. It writes it into a pre-defined address + TCONT_NUM. This value + defines the SKB free base address within the Runner address. */ + uint16_t skb_address ; + + /* In MDU mode, the runner pushes PDs to BBH without any wakeups from the + BBH. Despite its name, this mode may be used in SFU case as well. */ + int32_t mdu_mode_enable ; + + /* In MDU mode, Each time that the BBH reads a PD from the PD FIFO, it'll + write the read pointer into this address (in the Runner). The address + is in 8-bytes resolution. */ + uint16_t mdu_mode_read_pointer_address_in_8_byte ; + + /* The address is in bytes resolution. Should be aligned to 128 bytes. + Should match the relevant registers value in the BBH RX and in the + Runner. */ + uint32_t ddr_tm_base_address ; + + /* When this bit is set, the BBH will wait till the EMAC FIFO is empty + before issuing a DMA read command (of a 1588 packet only). This + configuration is relevant for Ethernet only. */ + int32_t emac_1588_enable ; +} +DRV_BBH_TX_CONFIGURATION ; + + +/******************************************************************************/ +/* TX Counters */ +/******************************************************************************/ +typedef struct +{ + /* This counter counts the number of packets which were transmitted from + the SRAM. This counter is relevant for Ethernet only. */ + uint32_t tx_packets_from_sram ; + + /* This counter counts the number of packets which were transmitted from + the DDR. It counts the packets for all TCONTs together. */ + uint32_t tx_packets_from_ddr ; + + /* This counter counts the number of PDs which were dropped due to PD + FIFO full. This counter is relevant for Ethernet only. */ + uint16_t dropped_pd ; + + /* This counter counts the number of PDs with packet length equal zero. + It counts the packets for all TCONTs together. */ + uint16_t pd_with_zero_packet_length ; + + /* This counter counts the number Get next responses with a null BN. This + counter is relevant for Ethernet only. */ + uint16_t get_next_null ; +} +DRV_BBH_TX_COUNTERS ; + + +/******************************************************************************/ +/* RX configuration */ +/******************************************************************************/ +typedef struct +{ + /* DMA route address. */ + uint8_t dma_route_address ; + + /* BPM route address. */ + uint8_t bpm_route_address ; + + /* SDMA route address. */ + uint8_t sdma_route_address ; + + /* SBPM route address. */ + uint8_t sbpm_route_address ; + + /* Runner 0 route address. */ + uint8_t runner_0_route_address ; + + /* Runner 1 route address. */ + uint8_t runner_1_route_address ; + + /* IH route address. */ + uint8_t ih_route_address ; + + /* The data is arranged in the DDR in a fixed size buffers. */ + DRV_BBH_DDR_BUFFER_SIZE ddr_buffer_size ; + + DRV_BBH_DDR_BPM_MESSAGE_FORMAT ddr_bpm_message_format ; + /* The address is in bytes resolution. Should be aligned to 128 bytes. + Should match the relevant registers value in the BBH TX and in the + Runner. */ + uint32_t ddr_tm_base_address ; + + /* For every reassembled packet in the DDR the BBH writes a packet + descriptor (PD) into the Runner. The PDs are arranged in a predefined + address space in the Runner SRAM and managed in a cyclic FIFO style. + The address is in 8-byte resolution. Same configuration for both + Runner 0 and 1. */ + uint16_t pd_fifo_base_address_normal_queue_in_8_byte ; + + /* The address is in 8-byte resolution. Same configuration for both + Runner 0 and 1. */ + uint16_t pd_fifo_base_address_direct_queue_in_8_byte ; + + /* Same configuration for both Runner 0 and 1. This value should be + identical to the number of RIBs (runner ingress buffers) configuration + in the IH block. */ + uint8_t pd_fifo_size_normal_queue ; + + /* Same configuration for both Runner 0 and 1. This value should be + identical to the number of IH ingress buffers configuration in the IH + block. */ + uint8_t pd_fifo_size_direct_queue ; + + /* For every PD written into the Runner, the BBH wakes the relevant + task. */ + uint8_t runner_0_task_normal_queue ; + + /* For every PD written into the Runner, the BBH wakes the relevant + task. */ + uint8_t runner_0_task_direct_queue ; + + /* For every PD written into the Runner, the BBH wakes the relevant + task. */ + uint8_t runner_1_task_normal_queue ; + + /* For every PD written into the Runner, the BBH wakes the relevant + task. */ + uint8_t runner_1_task_direct_queue ; + + /* The address is in chunk resolution (128 bytes). The value should be + identical to the relevant configuration in the DMA. */ + uint8_t dma_data_fifo_base_address ; + + /* The address is in chunk descriptor resolution (8 bytes). The value + should be identical to the relevant configuration in the DMA. */ + uint8_t dma_chunk_descriptor_fifo_base_address ; + + /* This value defines the size of both data FIFO and chunk descriptor + FIFO. */ + uint8_t dma_data_and_chunk_descriptor_fifos_size ; + + /* This value defines the number of occupied DMA write chunks for + dropping low or high priority packets. */ + uint8_t dma_exclusive_threshold ; + + /* The address is in chunk resolution (128 bytes). The value should be + identical to the relevant configuration in the SDMA. */ + uint8_t sdma_data_fifo_base_address ; + + /* The address is in chunk descriptor resolution (8 bytes). The value + should be identical to the relevant configuration in the SDMA. */ + uint8_t sdma_chunk_descriptor_fifo_base_address ; + + /* This value defines the size of both data FIFO and chunk descriptor + FIFO. */ + uint8_t sdma_data_and_chunk_descriptor_fifos_size ; + + /* This value defines the number of occupied SDMA write chunks for + dropping low or high priority packets. */ + uint8_t sdma_exclusive_threshold ; + + /* There are 4 global configurations for Minimum packet size. Each flow + can get one out of these 4 global configurations. Packets shorter than + this threshold will be discarded. */ + uint8_t minimum_packet_size_0 ; + + /* There are 4 global configurations for Minimum packet size. Each flow + can get one out of these 4 global configurations. Packets shorter than + this threshold will be discarded. */ + uint8_t minimum_packet_size_1 ; + + /* There are 4 global configurations for Minimum packet size. Each flow + can get one out of these 4 global configurations. Packets shorter than + this threshold will be discarded. */ + uint8_t minimum_packet_size_2 ; + + /* There are 4 global configurations for Minimum packet size. Each flow + can get one out of these 4 global configurations. Packets shorter than + this threshold will be discarded. */ + uint8_t minimum_packet_size_3 ; + + /* There are 4 global configurations for Maximum packet size. Each flow + can get one out of these 4 global configurations. Packets longer than + this threshold will be discarded. Should not exceed DDR buffer size. */ + uint16_t maximum_packet_size_0 ; + + /* There are 4 global configurations for Maximum packet size. Each flow + can get one out of these 4 global configurations. Packets longer than + this threshold will be discarded. Should not exceed DDR buffer size. */ + uint16_t maximum_packet_size_1 ; + + /* There are 4 global configurations for Maximum packet size. Each flow + can get one out of these 4 global configurations. Packets longer than + this threshold will be discarded. Should not exceed DDR buffer size. */ + uint16_t maximum_packet_size_2 ; + + /* There are 4 global configurations for Maximum packet size. Each flow + can get one out of these 4 global configurations. Packets longer than + this threshold will be discarded. Should not exceed DDR buffer size. */ + uint16_t maximum_packet_size_3 ; + + /* Each bit in the bitmask corresponds to 1 of the 16 IH ingress buffers. + The bitmask specifies which ingress buffers are assigned to the + relevant BBH. This configuration should correspond to the IH ingress + queue configurations. */ + uint16_t ih_ingress_buffers_bitmask ; + + /* Packet header offset in the ingress buffer. This value should match + the relevant configuration in the IH block and in the Runner. */ + uint8_t packet_header_offset ; + + /* Triggers for flow control to MAC. Values of the enumeration + DRV_BBH_RX_FLOW_CONTROL_TRIGGER should be ORed, as a description + of the desired triggers. */ + uint8_t flow_control_triggers_bitmask ; + + /* Triggers for drop. Values of the enumeration + DRV_BBH_RX_DROP_TRIGGER should be ORed, as a description of the + desired triggers. */ + uint8_t drop_triggers_bitmask ; + + /* DS Flows 0-31 have full configuration each. Flows 32-255 are divided + into 2 groups: 32-x, (x+1)-255. Each group has its configuration. This + value defines the divider (x). Relevant for GPON only. */ + uint8_t flows_32_255_group_divider ; + + /* Default IH class for PLOAM. Relevant for GPON only. */ + uint8_t ploam_default_ih_class ; + + /* IH class override for PLOAM. Relevant for GPON only. */ + int32_t ploam_ih_class_override ; + + /* The BBH writes the packets header into the IH. If the rest of the packet + is written into the DDR, then the address is according to the reassembly + offset configurations */ + uint8_t reassembly_offset_in_8_byte ; +} +DRV_BBH_RX_CONFIGURATION ; + + +/******************************************************************************/ +/* Per flow configuration */ +/******************************************************************************/ +typedef struct +{ + /* Selects one of the 4 global configurations configured in "RX Set per + flow configuration" API. */ + uint8_t minimum_packet_size_selection ; + + /* Selects one of the 4 global configurations configured in "RX Set per + flow configuration" API. */ + uint8_t maximum_packet_size_selection ; + + /* Default IH class. */ + uint8_t default_ih_class ; + + /* IH class override. */ + int32_t ih_class_override ; +} +DRV_BBH_PER_FLOW_CONFIGURATION ; + + +/******************************************************************************/ +/* RX Counters */ +/******************************************************************************/ +typedef struct +{ + /* This counter counts the number of incoming good packets. It counts the + packets from all flows together. */ + uint32_t incoming_packets ; + + /* This counter counts the packets drop due to Too short error. */ + uint32_t too_short_error ; + + /* This counter counts the packets drop due to Too long error. */ + uint32_t too_long_error ; + + /* This counter counts the packets drop due to CRC error. */ + uint32_t crc_error ; + + /* This counter counts the packets drop due to Runner Congestion + indication (by IH). */ + uint32_t runner_congestion ; + + /* This counter counts the packets drop due to No BPM BN error. */ + uint32_t no_bpm_bn_error ; + + /* This counter counts the packets drop due to No SBPM SBN error. */ + uint32_t no_sbpm_sbn_error ; + + /* This counter counts the packets drop due to No DMA CD error. */ + uint32_t no_dma_cd_error ; + + /* This counter counts the packets drop due to No SDMA CD error. */ + uint32_t no_sdma_cd_error ; +} +DRV_BBH_RX_COUNTERS ; + + +/******************************************************************************/ +/* RX Error Counters */ +/******************************************************************************/ +typedef struct +{ + /* This counter counts the packets drop due to SOP after SOP error. */ + uint32_t sop_after_sop_error ; + + /* This counter counts the packets drop due to Third flow error. */ + uint32_t third_flow_error ; + + /* This counter counts the PLOAMs drop due to Runner Congestion or IPTV + Filter errors. */ + uint32_t ih_drop_error_for_ploam ; + + /* This counter counts the PLOAMs drop due to No BPM BN error. */ + uint32_t no_bpm_bn_error_for_ploam ; + + /* This counter counts the PLOAMs drop due to CRC error. */ + uint32_t crc_error_for_ploam ; +} +DRV_BBH_RX_ERROR_COUNTERS ; + + +/******************************************************************************/ +/* */ +/* Functions prototypes */ +/* */ +/******************************************************************************/ + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_bbh_tx_set_configuration */ +/* */ +/* Title: */ +/* */ +/* BBH Driver - TX Set configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets configuration of the TX part of BBH block. */ +/* */ +/* Input: */ +/* */ +/* xi_port_index - Port index */ +/* */ +/* xi_bbh_tx_configuration - BBH TX configuration. */ +/* */ +/* Output: */ +/* */ +/* DRV_BBH_ERROR - Return code */ +/* DRV_BBH_NO_ERROR - No error */ +/* DRV_BBH_INVALID_PORT_INDEX - Invalid port index */ +/* */ +/******************************************************************************/ +DRV_BBH_ERROR fi_bl_drv_bbh_tx_set_configuration ( DRV_BBH_PORT_INDEX xi_port_index , + const DRV_BBH_TX_CONFIGURATION * xi_bbh_tx_configuration ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_bbh_rx_set_configuration */ +/* */ +/* Title: */ +/* */ +/* BBH Driver - RX Set configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets configuration of the RX part of BBH block. */ +/* */ +/* Input: */ +/* */ +/* xi_port_index - Port index */ +/* */ +/* xi_rx_configuration - RX configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_BBH_ERROR - Return code */ +/* DRV_BBH_NO_ERROR - No error */ +/* DRV_BBH_INVALID_PORT_INDEX - Invalid port index */ +/* */ +/******************************************************************************/ +DRV_BBH_ERROR fi_bl_drv_bbh_rx_set_configuration ( DRV_BBH_PORT_INDEX xi_port_index , + const DRV_BBH_RX_CONFIGURATION * xi_rx_configuration ) ; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_bbh_rx_set_triggers_of_flow_control_and_drop */ +/* */ +/* Title: */ +/* */ +/* BBH Driver - RX Set triggers for flow control and drop */ +/* */ +/* Abstract: */ +/* */ +/* This function sets triggers for sending flow control to MAC, and */ +/* triggers for dropping packets. For flow control, there are 3 possible */ +/* triggers: BPM is in exclusive state, SBPM is in exclusive state, Runner */ +/* request. For drop, there are 2 possible triggers: BPM is in exclusive */ +/* state, SBPM is in exclusive state. The triggers are turned on/off */ +/* according to the given bitmask. Values of the enumeration */ +/* DRV_BBH_RX_FLOW_CONTROL_TRIGGER should be ORed, as a */ +/* description of the desired triggers for flow control. Values of the */ +/* enumeration DRV_BBH_RX_DROP_TRIGGER should be ORed, as a */ +/* description of the desired triggers for drop. */ +/* */ +/* Input: */ +/* */ +/* xi_port_index - Port index */ +/* */ +/* xi_flow_control_triggers_bitmask - Flow control triggers bitmask */ +/* */ +/* xi_drop_triggers_bitmask - Drop triggers bitmask */ +/* */ +/* Output: */ +/* */ +/* DRV_BBH_ERROR - Return code */ +/* DRV_BBH_NO_ERROR - No error */ +/* DRV_BBH_INVALID_PORT_INDEX - Invalid port index */ +/* */ +/******************************************************************************/ +DRV_BBH_ERROR fi_bl_drv_bbh_rx_set_triggers_of_flow_control_and_drop ( DRV_BBH_PORT_INDEX xi_port_index , + uint8_t xi_flow_control_triggers_bitmask , + uint8_t xi_drop_triggers_bitmask ) ; + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_bbh_rx_set_per_flow_configuration */ +/* */ +/* Title: */ +/* */ +/* BBH Driver - RX Set per flow configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets per-flow configuration in the RX part of BBH block. */ +/* Each one of flows 0-31 has its own configuration. Flows 32-255 are */ +/* divided into 2 groups (32 to x, x+1 to 255). Each group has its own */ +/* configuration. The groups-divider (x) is configured in "RX Set */ +/* configuration" API. In Ethernet case, only flow 0 is relevant. */ +/* */ +/* Input: */ +/* */ +/* xi_port_index - Port index */ +/* */ +/* xi_flow_index - Flow index */ +/* */ +/* xi_per_flow_configuration - Per flow configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_BBH_ERROR - Return code */ +/* DRV_BBH_NO_ERROR - No error */ +/* DRV_BBH_INVALID_PORT_INDEX - Invalid port index */ +/* */ +/******************************************************************************/ +DRV_BBH_ERROR fi_bl_drv_bbh_rx_set_per_flow_configuration ( DRV_BBH_PORT_INDEX xi_port_index , + DRV_BBH_RX_FLOW_INDEX_FOR_PER_FLOW_CONFIGURATION xi_flow_index , + const DRV_BBH_PER_FLOW_CONFIGURATION * xi_per_flow_configuration ) ; + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_drv_bpm.c b/arch/arm/mach-bcmbca/rdp/rdp_drv_bpm.c new file mode 100755 index 0000000000..cade427db4 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_drv_bpm.c @@ -0,0 +1,708 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the implementation of the Lilac BPM driver */ +/* */ +/******************************************************************************/ + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ + +#include "rdp_subsystem_common.h" +#include "rdp_drv_bpm.h" + + + +/******************************************************************************/ +/* */ +/* Default values definitions */ +/* */ +/******************************************************************************/ + +#define CS_DRV_BPM_SINGLE_MEM ( 2560 ) +#define CS_DRV_BPM_BN_ALIGMENT ( 1536 ) +#define CS_DRV_BPM_UG_ALIGMENT ( 4 ) +#if defined(DSL_63138) +#define CS_DRV_BPM_GLOBAL_THRESHOLD_MASK ( 0xf ) +#define CS_DRV_BPM_FREE_BUFFER_PTR_MASK ( 0x7fff ) +#define CS_DRV_BPM_MCNT_BUFFER_PTR_MASK ( 0x7fff ) +#define CS_DRV_BPM_UG_MASK ( 0x7fff ) +#define CS_DRV_BPM_GLOBAL_HYSTERSIS_MASK ( 0x7fff ) +#else +#define CS_DRV_BPM_GLOBAL_THRESHOLD_MASK ( 0x7 ) +#define CS_DRV_BPM_FREE_BUFFER_PTR_MASK ( 0x3fff ) +#define CS_DRV_BPM_MCNT_BUFFER_PTR_MASK ( 0x3fff ) +#define CS_DRV_BPM_UG_MASK ( 0x3fff ) +#define CS_DRV_BPM_GLOBAL_HYSTERSIS_MASK ( 0x3fff ) +#endif +#define CS_DRV_BPM_FREE_BUFFER_OWNER_MASK ( 0x1f ) +#define CS_DRV_BPM_MCNT_VALUE_MASK ( 0x7 ) +#define CS_DRV_BPM_WAKEUP_TN_MASK ( 0x3f ) +#define CS_DRV_BPM_MEM_SELECT_MASK ( 0x7000 ) +#define CS_DRV_BPM_ADDRESS_FIELD_MASK ( 0xfe0 ) +#define CS_DRV_BPM_BITS_INDEX_MASK ( 0x1f ) +#define CS_DRV_BPM_NUM_OF_BITS_FOR_BN ( 3 ) +#define CS_DRV_BPM_RNR_TA ( 0x1540 ) + +/* Low */ +#define CS_LOW ( 0 ) +/* High */ +#define CS_HIGH ( 1 ) + +/******************************************************************************/ +/* */ +/* Macros definitions */ +/* */ +/******************************************************************************/ + +/* gets bit #i from a given number */ +#define MS_DRV_BPM_GET_BIT_I( number , i ) ( ( ( 1 << i ) & ( number ) ) >> i ) + +/******************************************************************************/ +/* */ +/* static function declaration */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Init & cleanup module, license */ +/* */ +/******************************************************************************/ + + +/******************************************************************************/ +/* */ +/* API functions implementations */ +/* */ +/******************************************************************************/ + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_init */ +/* */ +/* Title: */ +/* BPM driver - BPM initialize */ +/* */ +/* Abstract: */ +/* BPM module initialization is made once in the system lifetime */ +/* This API performs the following: */ +/* 1. Write a value to register ram_init. */ +/* 2. Setting Route Addresses to each Source Port */ +/* 3. Set BPM global threshold, thresholds for all UG and Exclusive UGs */ +/* according to input parameters. */ +/* 4. Mapping SP to UGs using registers BPM_UG_MAP_0, BPM_UG_MAP_1. */ +/*This function sets general configuration of the BPM block */ +/* */ +/* */ +/* Input: */ +/* global_configuration - global threshold and hysteresis (struct) */ +/* ug_configuration - user groups threshold and hysteresis (struct) */ +/* xi_replay_address - runner replay address */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_init(DRV_BPM_GLOBAL_CONFIGURATION * xi_global_configuration, + DRV_BPM_USER_GROUPS_THRESHOLDS * xi_ug_configuration, + uint16_t xi_replay_address, + E_DRV_BPM_SPARE_MESSAGE_FORMAT xi_bpm_spare_message_format ) +{ + BPM_MODULE_REGS_RAM_INIT bpm_init; + DRV_BPM_ERROR error; + BPM_MODULE_REGS_BPM_RADDR0 raddr0; + BPM_MODULE_REGS_BPM_RADDR1 raddr1; + BPM_MODULE_REGS_BPM_RADDR2 raddr2; + uint8_t ug_index; + DRV_BPM_RUNNER_MSG_CTRL_PARAMS runner_msg_ctrl_params ; + BPM_MODULE_REGS_BPM_SPARE bpm_spare_register; + + /* Write to register ram_init value */ + BPM_MODULE_REGS_RAM_INIT_READ(bpm_init); + bpm_init.bsy = BPM_MODULE_REGS_RAM_INIT_BSY_READY_VALUE; + bpm_init.rdy = BPM_MODULE_REGS_RAM_INIT_RDY_BUSY_VALUE; + BPM_MODULE_REGS_RAM_INIT_WRITE(bpm_init); + + /* Set BPM global configuration */ + error = fi_bl_drv_bpm_set_global_threshold ( xi_global_configuration->threshold , xi_global_configuration->hysteresis ); + + /* Set User Group [0-7] threshold configuration*/ + for ( ug_index = 0 ; ug_index < DRV_BPM_NUMBER_OF_USER_GROUPS ; ug_index++ ) + { + error = fi_bl_drv_bpm_set_user_group_thresholds ( ug_index, &xi_ug_configuration->ug_arr[ug_index] ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + } + + /* Write to register bpm_raddr0 value 0x1F010002 : + emac0 Rx route address = 0x1f + gpon Rx route address = 0x01 + runner B route address = 0x02 + runner A route address = 0 */ + BPM_MODULE_REGS_BPM_RADDR0_READ (raddr0 ); + raddr0.emac0_rx_raddr = BPM_MODULE_REGS_BPM_RADDR0_EMAC0_RX_RADDR_EMAC0_RX_ROUTE_ADDRESS_VALUE ; + raddr0.gpon_rx_raddr = BPM_MODULE_REGS_BPM_RADDR0_GPON_RX_RADDR_GPON_RX_ROUTE_ADDRESS_VALUE ; + raddr0.runa_raddr = BPM_MODULE_REGS_BPM_RADDR0_RUNA_RADDR_RUNNER_A_ROUTE_ADDRESS_VALUE; + raddr0.runb_raddr = BPM_MODULE_REGS_BPM_RADDR0_RUNB_RADDR_RUNNER_B_ROUTE_ADDRESS_VALUE; + BPM_MODULE_REGS_BPM_RADDR0_WRITE( raddr0 ); + + /* Write to register bpm_raddr1 value 0x1109170f + emac4 rx route address = 0x11 + emac3 rx route address = 0x9 + emac2 rx route address = 0x1b + emac1 rx route address = 0x0f*/ + BPM_MODULE_REGS_BPM_RADDR1_READ( raddr1 ); + raddr1.emac1_rx_raddr = BPM_MODULE_REGS_BPM_RADDR1_EMAC1_RX_RADDR_EMAC1_ROUTE_ADDRESS_VALUE; + raddr1.emac2_rx_raddr = BPM_MODULE_REGS_BPM_RADDR1_EMAC2_RX_RADDR_EMAC2_ROUTE_ADDRESS_VALUE; + raddr1.emac3_rx_raddr = BPM_MODULE_REGS_BPM_RADDR1_EMAC3_RX_RADDR_CONFIGURABLE_EMAC3_RX_ROUTE_ADDRESS_VALUE; + raddr1.emac4_rx_raddr = BPM_MODULE_REGS_BPM_RADDR1_EMAC4_RX_RADDR_EMAC4_RX_ROUTE_ADDRESS_VALUE ; + BPM_MODULE_REGS_BPM_RADDR1_WRITE( raddr1 ); + + /* Write to register bpm_raddr2 value 0x06 */ + BPM_MODULE_REGS_BPM_RADDR2_READ ( raddr2 ); + raddr2.mipsd_raddr = BPM_MODULE_REGS_BPM_RADDR2_MIPSD_RADDR_MIPSD_ROUTE_ADDRESS_VALUE; + BPM_MODULE_REGS_BPM_RADDR2_WRITE( raddr2 ); + + /* Each Source Port is mapped to specified UG. */ + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_MIPS_C , DRV_BPM_USER_GROUP_7 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_RNR_A , DRV_BPM_USER_GROUP_6 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_RNR_B , DRV_BPM_USER_GROUP_6 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_GPON , DRV_BPM_USER_GROUP_5 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_EMAC0 , DRV_BPM_USER_GROUP_0 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_EMAC1 , DRV_BPM_USER_GROUP_1 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_EMAC2 , DRV_BPM_USER_GROUP_2 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_EMAC3 , DRV_BPM_USER_GROUP_3 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_EMAC4 , DRV_BPM_USER_GROUP_4 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_USB0 , DRV_BPM_USER_GROUP_4 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_USB1 , DRV_BPM_USER_GROUP_4 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_PCI0 , DRV_BPM_USER_GROUP_4 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_PCI1 , DRV_BPM_USER_GROUP_4 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_MIPS_D , DRV_BPM_USER_GROUP_7 ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_sp_enable ( DRV_BPM_SP_RNR_A , DRV_BPM_ENABLE ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_bpm_sp_enable ( DRV_BPM_SP_RNR_B , DRV_BPM_ENABLE ); + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + /* Set Runner Message Control parameters */ + error = fi_bl_drv_bpm_get_runner_msg_ctrl ( & runner_msg_ctrl_params ) ; + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + runner_msg_ctrl_params.runner_a_reply_target_address = xi_replay_address >> 3 ; + runner_msg_ctrl_params.runner_b_reply_target_address = xi_replay_address >> 3 ; + + error = fi_bl_drv_bpm_set_runner_msg_ctrl ( & runner_msg_ctrl_params ) ; + if ( error != DRV_BPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + BPM_MODULE_REGS_BPM_SPARE_READ( bpm_spare_register ); + bpm_spare_register.bn_msg_format = xi_bpm_spare_message_format; + BPM_MODULE_REGS_BPM_SPARE_WRITE( bpm_spare_register ); + return ( DRV_BPM_ERROR_NO_ERROR ); + +} +EXPORT_SYMBOL ( fi_bl_drv_bpm_init ); + +/*******************************************************************************/ +/* fi_bl_drv_bpm_sp_enable */ +/* */ +/* Title: */ +/* BPM driver - Source Ports Enable */ +/* */ +/* Abstract: */ +/* Source Ports Enable */ +/* */ +/* Registers: */ +/* BPM_SP_EN */ +/* */ +/* Input: */ +/* */ +/* xi_source_port - One of the BPM source port: GPON, EMAC0-4, RNR_A/B */ +/* */ +/* xi_enable - enable/ disable */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* DRV_BPM_ERROR_INVALID_SOURCE_PORT - invalid source port */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_sp_enable(DRV_BPM_SP_USR xi_source_port, + E_DRV_BPM_ENABLE xi_enable ) +{ + BPM_MODULE_REGS_BPM_SP_EN bpm_sp_enable; + + BPM_MODULE_REGS_BPM_SP_EN_READ( bpm_sp_enable); + + switch(xi_source_port) + { + case DRV_BPM_SP_RNR_A: + bpm_sp_enable.rnra_en = xi_enable; + break; + case DRV_BPM_SP_RNR_B: + bpm_sp_enable.rnrb_en = xi_enable; + break; + case DRV_BPM_SP_GPON: + bpm_sp_enable.gpon_en = xi_enable; + break; + case DRV_BPM_SP_EMAC0: + bpm_sp_enable.emac0_en = xi_enable; + break; + case DRV_BPM_SP_EMAC1: + bpm_sp_enable.emac1_en = xi_enable; + break; + case DRV_BPM_SP_EMAC2: + bpm_sp_enable.emac2_en = xi_enable; + break; + case DRV_BPM_SP_EMAC3: + bpm_sp_enable.emac3_en = xi_enable; + break; + case DRV_BPM_SP_EMAC4: + bpm_sp_enable.emac4_en = xi_enable; + break; + default: + return ( DRV_BPM_ERROR_INVALID_SOURCE_PORT ); + } + + BPM_MODULE_REGS_BPM_SP_EN_WRITE( bpm_sp_enable); + + return ( DRV_BPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_bpm_sp_enable ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_set_global_threshold */ +/* */ +/* Title: */ +/* BPM driver - Set BPM Global threshold */ +/* */ +/* Abstract: */ +/* This function sets the global Threshold for Allocated Buffers. */ +/* */ +/* Input: */ +/* */ +/* xi_global_threshold - Global Threshold for Allocated Buffers */ +/* xi_global_hystersis - Global Buffer Allocation Hysteresis threshold */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_set_global_threshold ( DRV_BPM_GLOBAL_THRESHOLD xi_global_threshold, + uint32_t xi_global_hysteresis ) +{ + BPM_MODULE_REGS_BPM_GL_TRSH global_configuration; + + BPM_MODULE_REGS_BPM_GL_TRSH_READ(global_configuration); + + global_configuration.gl_bah = ( xi_global_hysteresis & CS_DRV_BPM_GLOBAL_HYSTERSIS_MASK); + global_configuration.gl_bat = ( xi_global_threshold & CS_DRV_BPM_GLOBAL_THRESHOLD_MASK); + + BPM_MODULE_REGS_BPM_GL_TRSH_WRITE(global_configuration); + + return ( DRV_BPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_bpm_set_global_threshold ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_set_user_group_thresholds */ +/* */ +/* Title: */ +/* BPM driver - Set BPM User Group threshold configuration */ +/* */ +/* Abstract: */ +/* Threshold for Allocated Buffers of UG */ +/* Ths register also holds UG0 hysteresis value for ACK/NACK transition setting*/ +/* This register is affected by soft reset. */ +/* */ +/* Input: */ +/* xi_ug - user group */ +/* xi_configuration - thresholds configuration for the user group (struct) */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_set_user_group_thresholds (DRV_BPM_USER_GROUP xi_ug, + DRV_BPM_USER_GROUP_CONFIGURATION * xi_configuration) +{ + DRV_BPM_UG_THRESHOLD ug_configuration; + DRV_BPM_UG_THRESHOLD ug_exclusive_configuration; + uint32_t ug_start_address = ( BPM_MODULE_REGS_BPM_UG0_TRSH_ADDRESS + CS_DRV_BPM_UG_ALIGMENT * xi_ug ); + uint32_t ug_exclusive_start_address = ( BPM_MODULE_REGS_BPM_UG0_EXCL_TRSH_ADDRESS + CS_DRV_BPM_UG_ALIGMENT * xi_ug ); + + READ_32( ug_start_address, ug_configuration); + + ug_configuration.ug_hysteresis = ( xi_configuration->hysteresis & CS_DRV_BPM_UG_MASK ); + ug_configuration.ug_threshold = ( xi_configuration->threshold & CS_DRV_BPM_UG_MASK ); + + WRITE_32( ug_start_address, ug_configuration); + + READ_32( ug_exclusive_start_address , ug_exclusive_configuration); + + ug_exclusive_configuration.ug_hysteresis = ( xi_configuration->exclusive_hysteresis & CS_DRV_BPM_UG_MASK ); + ug_exclusive_configuration.ug_threshold = ( xi_configuration->exclusive_threshold & CS_DRV_BPM_UG_MASK ); + + WRITE_32( ug_exclusive_start_address , ug_exclusive_configuration); + + return ( DRV_BPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_bpm_set_user_group_thresholds ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_set_user_group_mapping */ +/* */ +/* Title: */ +/* BPM driver - Set User Group Mapping */ +/* */ +/* Abstract: */ +/* This function maps a User group for a specific Source port */ +/* */ +/* Input: */ +/* xi_source_port - One of BPM source ports */ +/* xi_user_group - one of BPM User group 0-7 */ +/* */ +/* Output: error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* DRV_BPM_ERROR_INVALID_SOURCE_PORT - invalid source port */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_USR xi_source_port, + DRV_BPM_USER_GROUP xi_user_group ) +{ + BPM_MODULE_REGS_BPM_UG_MAP_R0 bpm_ug_mapping_r0; + BPM_MODULE_REGS_BPM_UG_MAP_R1 bpm_ug_mapping_r1; + + BPM_MODULE_REGS_BPM_UG_MAP_R0_READ(bpm_ug_mapping_r0); + BPM_MODULE_REGS_BPM_UG_MAP_R1_READ(bpm_ug_mapping_r1); + + switch ( xi_source_port ) + { + case DRV_BPM_SP_MIPS_C: + bpm_ug_mapping_r0.cpu_ = xi_user_group; + break ; + case DRV_BPM_SP_EMAC0: + bpm_ug_mapping_r0.emac0 = xi_user_group; + break ; + case DRV_BPM_SP_EMAC1: + bpm_ug_mapping_r0.emac1 = xi_user_group; + break ; + case DRV_BPM_SP_EMAC2: + bpm_ug_mapping_r0.emac2 = xi_user_group; + break ; + case DRV_BPM_SP_EMAC3: + bpm_ug_mapping_r0.emac3 = xi_user_group; + break ; + case DRV_BPM_SP_EMAC4: + bpm_ug_mapping_r1.emac4= xi_user_group; + break ; + case DRV_BPM_SP_GPON: + bpm_ug_mapping_r0.gpon = xi_user_group; + break ; + case DRV_BPM_SP_RNR_A: + bpm_ug_mapping_r0.rnr_a = xi_user_group; + break ; + case DRV_BPM_SP_RNR_B: + bpm_ug_mapping_r0.rnr_b = xi_user_group; + break ; + case DRV_BPM_SP_USB0: + bpm_ug_mapping_r1.usb0 = xi_user_group; + break ; + case DRV_BPM_SP_USB1: + bpm_ug_mapping_r1.usb1= xi_user_group; + break ; + case DRV_BPM_SP_PCI0: + bpm_ug_mapping_r1.pcie0 = xi_user_group; + break ; + case DRV_BPM_SP_PCI1: + bpm_ug_mapping_r1.pcie1 = xi_user_group; + break ; + case DRV_BPM_SP_MIPS_D: + bpm_ug_mapping_r1.mipsd = xi_user_group; + break ; + case DRV_BPM_SP_SPARE_0: + bpm_ug_mapping_r1.spare0 = xi_user_group; + break ; + case DRV_BPM_SP_SPARE_1: + bpm_ug_mapping_r1.spare1 = xi_user_group; + break ; + default: + return ( DRV_BPM_ERROR_INVALID_SOURCE_PORT ); + } + + BPM_MODULE_REGS_BPM_UG_MAP_R0_WRITE (bpm_ug_mapping_r0); + BPM_MODULE_REGS_BPM_UG_MAP_R1_WRITE (bpm_ug_mapping_r1); + + return ( DRV_BPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_bpm_set_user_group_mapping ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_req_buffer */ +/* */ +/* Title: */ +/* BPM driver - Request Buffer */ +/* */ +/* Abstract: */ +/* cpu requests a free buffer pointer */ +/* */ +/* Input: */ +/* xi_source_port - used by CPU for Buffer Request allocation on behalf */ +/* another port */ +/* xo_bn - returned 14 bits of DDR buffer pointer value */ +/* */ +/* Output: error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* DRV_BPM_ERROR_BPM_BUSY - BPM busy in previous operation */ +/* DRV_BPM_ERROR_NO_FREE_BUFFER - BPM has no free buffer */ +/* to allocate */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_req_buffer(DRV_BPM_SP_USR xi_source_port, + uint32_t * const xo_bn) +{ + + BPM_MODULE_REGS_REQ_PTR req_ptr; + int32_t num_count = 10; + + BPM_MODULE_REGS_REQ_PTR_READ(req_ptr); + req_ptr.sp_addr = xi_source_port; + BPM_MODULE_REGS_REQ_PTR_WRITE(req_ptr); + + while( num_count-- > 0 ) + { + BPM_MODULE_REGS_REQ_PTR_READ(req_ptr); + if( req_ptr.bsy != BPM_MODULE_REGS_REQ_PTR_BSY_BUSY_VALUE ) + { + break; + } + } + + if( num_count == -1 ) + { + return ( DRV_BPM_ERROR_BPM_BUSY ); + } + else + { + if( req_ptr.nack_status == BPM_MODULE_REGS_REQ_PTR_NACK_STATUS_CPU_IN_NACK_STATE_VALUE ) + { + return ( DRV_BPM_ERROR_NO_FREE_BUFFER ); + } + else /* buffer number is valid */ + { + * xo_bn = req_ptr.bn; + } + } + + return ( DRV_BPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_bpm_req_buffer ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_set_runner_msg_ctrl */ +/* */ +/* Title: */ +/* BPM Driver - Set Runner message control */ +/* */ +/* Abstract: */ +/* Enables runner wake-up messages, */ +/* select control bit for transition message and task numbers for wake-up */ +/* messages to Runners */ +/* */ +/* Registers: */ +/* BPM_RNR_MSG_CTRL,BPM_RNR_RPLY_TA */ +/* */ +/* Input: */ +/* */ +/* xi_runner_messsage_control_parameters - struct */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_set_runner_msg_ctrl(DRV_BPM_RUNNER_MSG_CTRL_PARAMS * xi_runner_msg_ctrl_params) +{ + BPM_MODULE_REGS_BPM_RNR_MSG_CTRL runner_message_control; + BPM_MODULE_REGS_BPM_RNR_RPLY_TA bpm_rnr_rply_ta_register; + + BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_READ( runner_message_control ); + + runner_message_control.rnr_rply_wkup_en = ( xi_runner_msg_ctrl_params->reply_wakeup_enable == 1 ) ? + DRV_BPM_ENABLE : DRV_BPM_DISABLE ; + runner_message_control.rnr_trans_wkup_en = ( xi_runner_msg_ctrl_params->transition_wakeup_enable == 1 ) ? + DRV_BPM_ENABLE : DRV_BPM_DISABLE ; + runner_message_control.rnr_sel_trans_msg = ( xi_runner_msg_ctrl_params->select_transition_msg == 1 ) ? + BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_SEL_TRANS_MSG_TRANSITION_MESSAGE_SELECTED_TO_RUNNER_B_VALUE : + BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_RNR_SEL_TRANS_MSG_TRANSITION_MESSAGE_SELECTED_TO_RUNNER_A_VALUE ; + runner_message_control.rnr_a_rply_wkup_tn = xi_runner_msg_ctrl_params->runner_a_reply_wakeup_task_number & CS_DRV_BPM_WAKEUP_TN_MASK; + runner_message_control.rnr_b_rply_wkup_tn = xi_runner_msg_ctrl_params->runner_b_reply_wakeup_task_number & CS_DRV_BPM_WAKEUP_TN_MASK; + runner_message_control.rnr_trans_wkup_tn = xi_runner_msg_ctrl_params->runner_transition_wakeup_task_number & CS_DRV_BPM_WAKEUP_TN_MASK; + + BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_WRITE( runner_message_control ); + + BPM_MODULE_REGS_BPM_RNR_RPLY_TA_READ ( bpm_rnr_rply_ta_register ); + + bpm_rnr_rply_ta_register.rnr_a_ta = xi_runner_msg_ctrl_params->runner_a_reply_target_address ; + bpm_rnr_rply_ta_register.rnr_b_ta = xi_runner_msg_ctrl_params->runner_b_reply_target_address ; + + BPM_MODULE_REGS_BPM_RNR_RPLY_TA_WRITE (bpm_rnr_rply_ta_register); + + return ( DRV_BPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_bpm_set_runner_msg_ctrl ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_get_runner_msg_ctrl */ +/* */ +/* Title: */ +/* BPM Driver - Get Runner message control */ +/* */ +/* Abstract: */ +/* Enables runner wake-up messages, */ +/* select control bit for transition message and task numbers for wake-up */ +/* messages to Runners */ +/* */ +/* Registers: */ +/* BPM_RNR_MSG_CTRL,BPM_RNR_RPLY_TA */ +/* */ +/* Input: */ +/* */ +/* xo_runner_messsage_control_parameters - struct */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_get_runner_msg_ctrl(DRV_BPM_RUNNER_MSG_CTRL_PARAMS * const xo_runner_msg_ctrl_params) +{ + BPM_MODULE_REGS_BPM_RNR_MSG_CTRL runner_message_control; + BPM_MODULE_REGS_BPM_RNR_RPLY_TA bpm_rnr_rply_ta_register; + + BPM_MODULE_REGS_BPM_RNR_MSG_CTRL_READ( runner_message_control ); + + xo_runner_msg_ctrl_params->reply_wakeup_enable = ( runner_message_control.rnr_rply_wkup_en == 1 ) ? + DRV_BPM_ENABLE : DRV_BPM_DISABLE; + + xo_runner_msg_ctrl_params->transition_wakeup_enable = ( runner_message_control.rnr_trans_wkup_en == 1 ) ? + DRV_BPM_ENABLE : DRV_BPM_DISABLE; + + xo_runner_msg_ctrl_params->select_transition_msg = ( runner_message_control.rnr_sel_trans_msg == 1 ) ? + DRV_BPM_ENABLE : DRV_BPM_DISABLE; + + xo_runner_msg_ctrl_params->runner_a_reply_wakeup_task_number = runner_message_control.rnr_a_rply_wkup_tn; + xo_runner_msg_ctrl_params->runner_b_reply_wakeup_task_number = runner_message_control.rnr_b_rply_wkup_tn; + xo_runner_msg_ctrl_params->runner_transition_wakeup_task_number = runner_message_control.rnr_trans_wkup_tn; + + BPM_MODULE_REGS_BPM_RNR_RPLY_TA_READ (bpm_rnr_rply_ta_register); + + xo_runner_msg_ctrl_params->runner_a_reply_target_address = ( uint16_t ) bpm_rnr_rply_ta_register.rnr_a_ta; + xo_runner_msg_ctrl_params->runner_b_reply_target_address = ( uint16_t ) bpm_rnr_rply_ta_register.rnr_b_ta; + + return ( DRV_BPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_bpm_get_runner_msg_ctrl ); diff --git a/arch/arm/mach-bcmbca/rdp/rdp_drv_bpm.h b/arch/arm/mach-bcmbca/rdp/rdp_drv_bpm.h new file mode 100755 index 0000000000..0b5adadd4d --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_drv_bpm.h @@ -0,0 +1,585 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This header file defines all datatypes and functions exported for the */ +/* Lilac BPM driver. */ +/* */ +/******************************************************************************/ + +#ifndef LILAC_DRV_BPM_H_INCLUDED +#define LILAC_DRV_BPM_H_INCLUDED + + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ +#include "rdp_bpm.h" + +/******************************************************************************/ +/* */ +/* Types and values definitions */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* Error codes returned by BPM driver APIs */ +/******************************************************************************/ +typedef enum +{ + DRV_BPM_ERROR_NO_ERROR = 0, + DRV_BPM_ERROR_BPM_BUSY , + DRV_BPM_ERROR_NO_FREE_BUFFER, + DRV_BPM_ERROR_INVALID_SOURCE_PORT, + DRV_BPM_ERROR_INVALID_USER_GROUP + +}DRV_BPM_ERROR; + + +/******************************************************************************/ +/* BPM source ports */ +/******************************************************************************/ +typedef enum +{ + DRV_BPM_SP_GPON = 0, + DRV_BPM_SP_EMAC0, + DRV_BPM_SP_EMAC1, + DRV_BPM_SP_EMAC2, + DRV_BPM_SP_EMAC3, + DRV_BPM_SP_EMAC4, + DRV_BPM_SP_MIPS_C, + DRV_BPM_SP_MIPS_D, + DRV_BPM_SP_PCI0, + DRV_BPM_SP_PCI1, + DRV_BPM_SP_USB0, + DRV_BPM_SP_USB1, + DRV_BPM_SP_SPARE_0, + DRV_BPM_SP_SPARE_1, + DRV_BPM_SP_RNR_A, + DRV_BPM_SP_RNR_B + +}DRV_BPM_SP_USR; + +/******************************************************************************/ +/* BPM Global threshold values */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_BPM_GLOBAL_THRESHOLD_2_5K = 0, + DRV_BPM_GLOBAL_THRESHOLD_5K, + DRV_BPM_GLOBAL_THRESHOLD_7_5K, + DRV_BPM_GLOBAL_THRESHOLD_10K, + DRV_BPM_GLOBAL_THRESHOLD_12_5K, + DRV_BPM_GLOBAL_THRESHOLD_15K, + DRV_BPM_GLOBAL_THRESHOLD_17_5K, + DRV_BPM_GLOBAL_THRESHOLD_20K, + DRV_BPM_GLOBAL_THRESHOLD_22_5K, + DRV_BPM_GLOBAL_THRESHOLD_25K, + DRV_BPM_GLOBAL_THRESHOLD_27_5K, + DRV_BPM_GLOBAL_THRESHOLD_30K + +}DRV_BPM_GLOBAL_THRESHOLD; + +/******************************************************************************/ +/* BPM User Groups index: */ +/******************************************************************************/ +typedef enum +{ + DRV_BPM_USER_GROUP_0, + DRV_BPM_USER_GROUP_1, + DRV_BPM_USER_GROUP_2, + DRV_BPM_USER_GROUP_3, + DRV_BPM_USER_GROUP_4, + DRV_BPM_USER_GROUP_5, + DRV_BPM_USER_GROUP_6, + DRV_BPM_USER_GROUP_7, + DRV_BPM_NUMBER_OF_USER_GROUPS + +}DRV_BPM_USER_GROUP; + +/******************************************************************************/ +/* Boolean */ +/******************************************************************************/ +typedef enum +{ + DRV_BPM_DISABLE = 0, + DRV_BPM_ENABLE = 1 + +}E_DRV_BPM_ENABLE; + +/******************************************************************************/ +/* BPM Global Configuration struct */ +/******************************************************************************/ +typedef struct +{ + /* Global hysteresis */ + uint32_t hysteresis ; + + /* Global threshold */ + DRV_BPM_GLOBAL_THRESHOLD threshold ; +} +DRV_BPM_GLOBAL_CONFIGURATION ; + + +/******************************************************************************/ +/* BPM User Group mapping struct */ +/******************************************************************************/ +typedef struct +{ + DRV_BPM_USER_GROUP sp_gpon_mapping; + DRV_BPM_USER_GROUP sp_emac0_mapping; + DRV_BPM_USER_GROUP sp_emac1_mapping; + DRV_BPM_USER_GROUP sp_emac2_mapping; + DRV_BPM_USER_GROUP sp_emac3_mapping; + DRV_BPM_USER_GROUP sp_emac4_mapping; + DRV_BPM_USER_GROUP sp_mips_c_mapping; + DRV_BPM_USER_GROUP sp_mips_d_mapping; + DRV_BPM_USER_GROUP sp_pci0_mapping; + DRV_BPM_USER_GROUP sp_pci1_mapping; + DRV_BPM_USER_GROUP sp_usb0_mapping; + DRV_BPM_USER_GROUP sp_usb1_mapping; + DRV_BPM_USER_GROUP sp_rnr_a_mapping; + DRV_BPM_USER_GROUP sp_rnr_b_mapping; +} +DRV_BPM_USER_GROUP_MAPPING ; + +/******************************************************************************/ +/* BPM User Group thresholds struct */ +/******************************************************************************/ +#if defined(DSL_63138) +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 1 ; + /* UG hysteresis */ + uint32_t ug_hysteresis : 15 ; + /* reserved */ + uint32_t rsv : 1 ; + /* UG threshold */ + uint32_t ug_threshold : 15 ; +} +DRV_BPM_UG_THRESHOLD ; +#else +typedef struct +{ + /* UG threshold */ + uint32_t ug_threshold : 15 ; + /* reserved */ + uint32_t rsv : 1 ; + /* UG hysteresis */ + uint32_t ug_hysteresis : 15 ; + /* rsv */ + uint32_t rsv2 : 1 ; +} +DRV_BPM_UG_THRESHOLD ; +#endif +#else // DSL_63138 +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 2 ; + /* UG hysteresis */ + uint32_t ug_hysteresis : 14 ; + /* reserved */ + uint32_t rsv : 2 ; + /* UG threshold */ + uint32_t ug_threshold : 14 ; +} +DRV_BPM_UG_THRESHOLD ; +#else +typedef struct +{ + /* UG threshold */ + uint32_t ug_threshold : 14 ; + /* reserved */ + uint32_t rsv : 2 ; + /* UG hysteresis */ + uint32_t ug_hysteresis : 14 ; + /* rsv */ + uint32_t rsv2 : 2 ; +} +DRV_BPM_UG_THRESHOLD ; +#endif +#endif // DSL_63138 + +/******************************************************************************/ +/* BPM User Group configuration struct */ +/******************************************************************************/ +typedef struct +{ + /* threshold */ + uint32_t threshold ; + + /* hysteresis */ + uint32_t hysteresis ; + + /* Exclusive threshold */ + uint32_t exclusive_threshold ; + + /* Exclusive hysteresis */ + uint32_t exclusive_hysteresis ; + +} +DRV_BPM_USER_GROUP_CONFIGURATION ; + +/******************************************************************************/ +/* BPM User Group thresholds struct - contains array of 8 user groups */ +/******************************************************************************/ +typedef struct +{ + DRV_BPM_USER_GROUP_CONFIGURATION ug_arr[ DRV_BPM_NUMBER_OF_USER_GROUPS ] ; +} +DRV_BPM_USER_GROUPS_THRESHOLDS ; + +/*******************************************************************************/ +/* Runner message control parameters - struct */ +/*******************************************************************************/ +typedef struct +{ + /* Enable/Disable wake-up message after each reply on *Alloc request from Runner */ + E_DRV_BPM_ENABLE reply_wakeup_enable ; + + /* Enable/Disable wake-up message after each transition state of any peripheral */ + E_DRV_BPM_ENABLE transition_wakeup_enable; + + /*select for sending transition message: Runner A or B*/ + E_DRV_BPM_ENABLE select_transition_msg; + + /*Task number for Runner A Wake-Up as result of Reply on Alloc request*/ + uint32_t runner_a_reply_wakeup_task_number; + + /*Task number for Runner B Wake-Up as result of Reply on Alloc request*/ + uint32_t runner_b_reply_wakeup_task_number; + + /*Task number for any slected Runner Wake-Up as result of Transition*/ + uint32_t runner_transition_wakeup_task_number; + + /*Target address for Runner A*/ + uint16_t runner_a_reply_target_address; + + /*Target address for Runner B*/ + uint16_t runner_b_reply_target_address; +} +DRV_BPM_RUNNER_MSG_CTRL_PARAMS ; + +/*******************************************************************************/ +/* MIPS D message control parameters - struct */ +/*******************************************************************************/ +typedef struct +{ + /*Enable/Disable wake-up message */ + E_DRV_BPM_ENABLE mips_d_reply_wakeup_enable; + + /*Task number for Runner A Wake-Up as resultof Reply on Alloc request*/ + uint16_t mips_d_reply_wakeup_task_number ; + + /*Target address for MIPS-D*/ + uint16_t mips_d_reply_target_address ; +} +DRV_BPM_MIPS_D_MSG_CTRL_PARAMS ; + + +/******************************************************************************/ +/* BPM User Group status struct */ +/******************************************************************************/ +typedef struct +{ + /*User group status - ack/nack*/ + E_DRV_BPM_ENABLE ug_status ; + + /*User group exclusive status - non-exclusive/exclusive*/ + E_DRV_BPM_ENABLE ug_exclusive_status ; +} +DRV_BPM_USER_GROUP_STATUS ; + +/******************************************************************************/ +/* BPM Interrupts status struct */ +/******************************************************************************/ +typedef struct +{ + E_DRV_BPM_ENABLE free_interrupt ; + E_DRV_BPM_ENABLE multicast_counter_interrupt; +} +DRV_BPM_ISR ; + +typedef enum +{ + DRV_SPARE_BN_MESSAGE_FORMAT_14_bit_BN_WIDTH , + DRV_SPARE_BN_MESSAGE_FORMAT_15_bit_BN_WIDTH +} +E_DRV_BPM_SPARE_MESSAGE_FORMAT ; + +/*******************************************************************************/ +/* */ +/* Functions prototypes */ +/* */ +/*******************************************************************************/ + + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_init */ +/* */ +/* Title: */ +/* BPM driver - BPM initialize */ +/* */ +/* Abstruct: */ +/* BPM module initialization is made once in the system lifetime */ +/* This API performs the following: */ +/* 1. Write a value to register ram_init. */ +/* 2. Setting Route Addresses to each Source Port */ +/* 3. Set BPM global threshold, thresholds for all UG and Exclusive UGs */ +/* according to input parameters. */ +/* 4. Mapping SP to UGs using registers BPM_UG_MAP_0, BPM_UG_MAP_1. */ +/*This function sets general configuration of the BPM block */ +/* */ +/* */ +/* Input: */ +/* global_configuration - global threshold and hysteresis (struct) */ +/* ug_configuration - user groups threshold and hysteresis (struct) */ +/* xi_replay_address - runner replay address */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_init(DRV_BPM_GLOBAL_CONFIGURATION * xi_global_configuration, + DRV_BPM_USER_GROUPS_THRESHOLDS * xi_ug_configuration, + uint16_t xi_replay_address, + E_DRV_BPM_SPARE_MESSAGE_FORMAT xi_bpm_spare_message_format ) ; + +/*******************************************************************************/ +/*fi_bl_drv_bpm_sp_enable */ +/* */ +/* Title: */ +/* BPM driver - Source Ports Enable */ +/* */ +/* Abstruct: */ +/* Source Ports Enable */ +/* */ +/* Registers: */ +/* BPM_SP_EN */ +/* */ +/* Input: */ +/* */ +/* xi_source_port - One of the BPM source port: GPON, EMAC0-4, RNR_A/B */ +/* */ +/* xi_enable - enable/ disable */ +/* */ +/* Output: error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* DRV_BPM_ERROR_INVALID_SOURCE_PORT - invalid source port */ +/* DRV_BPM_ERROR_INVALID_SOURCE_PORT - invalid source port */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_sp_enable(DRV_BPM_SP_USR xi_source_port, + E_DRV_BPM_ENABLE xi_enable ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_set_global_threshold */ +/* */ +/* Title: */ +/* BPM driver - Set BPM Global threshold */ +/* */ +/* Abstruct: */ +/* This function sets the global Threshold for Allocated Buffers. */ +/* */ +/* Input: */ +/* */ +/* xi_global_threshold - Global Threshold for Allocated Buffers */ +/* xi_global_hystersis - Global Buffer Allocation Hysteresis threshold */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_set_global_threshold ( DRV_BPM_GLOBAL_THRESHOLD xi_global_threshold, + uint32_t xi_global_hysteresis ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_get_global_threshold */ +/* */ +/* Title: */ +/* BPM driver - Get BPM Global threshold */ +/* */ +/* Abstruct: */ +/* This function returns the global Threshold for Allocated Buffers. */ +/* */ +/* Input: */ +/* */ +/* xo_global_threshold - Global Threshold for Allocated Buffers */ +/* xo_global_hysteresis - Global Buffer Allocation Hysteresis threshold */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_get_global_threshold (DRV_BPM_GLOBAL_THRESHOLD * const xo_global_threshold, + uint32_t * const xo_global_hysteresis ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_set_user_group_thresholds */ +/* */ +/* Title: */ +/* BPM driver - Set BPM User Group threshold configuration */ +/* */ +/* Abstruct: */ +/* Threshold for Allocated Buffers of UG */ +/* Ths register also holds UG0 hysteresis value for ACK/NACK transition setting*/ +/* This register is affected by soft reset. */ +/* */ +/* Input: */ +/* xi_ug - user group */ +/* xi_configuration - thresholds configuration for the user group (struct) */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_set_user_group_thresholds (DRV_BPM_USER_GROUP xi_ug, + DRV_BPM_USER_GROUP_CONFIGURATION * xi_configuration); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_get_user_group_thresholds */ +/* */ +/* Title: */ +/* BPM driver - Get BPM User Group threshold configuration */ +/* */ +/* Abstruct: */ +/* This function returns Threshold for Allocated Buffers of UG */ +/* */ +/* Input: */ +/* xi_ug - user group */ +/* xo_configuration - thresholds configuration for the user group (struct) */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_get_user_group_thresholds (DRV_BPM_USER_GROUP xi_ug, + DRV_BPM_USER_GROUP_CONFIGURATION * const xo_configuration); + + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_set_user_group_mapping */ +/* */ +/* Title: */ +/* BPM driver - Set User Group Mapping */ +/* */ +/* Abstruct: */ +/* This function maps a User group for a specific Source port */ +/* */ +/* Input: */ +/* xi_source_port - One of BPM source ports */ +/* xi_user_group - one of BPM User group 0-7 */ +/* */ +/* Output: error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* DRV_BPM_ERROR_INVALID_SOURCE_PORT - invalid source port */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_set_user_group_mapping ( DRV_BPM_SP_USR xi_source_port, + DRV_BPM_USER_GROUP xi_user_group ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_req_buffer */ +/* */ +/* Title: */ +/* BPM driver - Request Buffer */ +/* */ +/* Abstruct: */ +/* cpu requests a free buffer pointer */ +/* */ +/* Input: */ +/* xi_source_port - used by CPU for Buffer Request allocation on behalf */ +/* another port */ +/* xo_bn - returned 14 bits of DDR buffer pointer value */ +/* */ +/* Output: error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* DRV_BPM_ERROR_BPM_BUSY - BPM busy in previous operation */ +/* DRV_BPM_ERROR_NO_FREE_BUFFER - BPM has no free buffer to allocate*/ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_req_buffer(DRV_BPM_SP_USR xi_source_port, + uint32_t * const xo_bn); + + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_set_runner_msg_ctrl */ +/* */ +/* Title: */ +/* BPM Driver - Set Runner message control */ +/* */ +/* Abstruct: */ +/* Enables runner wake-up messages, */ +/* select control bit for transition message and task numbers for wake-up */ +/* messages to Runners */ +/* */ +/* Registers: */ +/* BPM_RNR_MSG_CTRL,BPM_RNR_RPLY_TA */ +/* */ +/* Input: */ +/* */ +/* xi_runner_messsage_control_parameters - struct */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_set_runner_msg_ctrl(DRV_BPM_RUNNER_MSG_CTRL_PARAMS * xi_runner_messsage_control_parameters); + + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_bpm_get_runner_msg_ctrl */ +/* */ +/* Title: */ +/* BPM Driver - Get Runner message control */ +/* */ +/* Abstruct: */ +/* Enables runner wake-up messages, */ +/* select control bit for transition message and task numbers for wake-up */ +/* messages to Runners */ +/* */ +/* Registers: */ +/* BPM_RNR_MSG_CTRL,BPM_RNR_RPLY_TA */ +/* */ +/* Input: */ +/* */ +/* xo_runner_messsage_control_parameters - struct */ +/* */ +/* Output: */ +/* DRV_BPM_ERROR - error code */ +/* DRV_BPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_BPM_ERROR fi_bl_drv_bpm_get_runner_msg_ctrl(DRV_BPM_RUNNER_MSG_CTRL_PARAMS * const xo_runner_messsage_control_parameters); + +#endif + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_drv_ih.c b/arch/arm/mach-bcmbca/rdp/rdp_drv_ih.c new file mode 100755 index 0000000000..24507e3231 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_drv_ih.c @@ -0,0 +1,1877 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the implementation of the Lilac IH driver */ +/* */ +/******************************************************************************/ + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ + +#include "rdp_subsystem_common.h" +#include "rdp_drv_ih.h" + +#define IH_ENG_TRIPLE_TAG_DETECTION_BIT_SHIFT 8 + +/******************************************************************************/ +/* */ +/* Types and values definitions */ +/* */ +/******************************************************************************/ + +/* "all ones" (bitwise) value */ +#define CS_ALL_ONES_VALUE ( 0xFFFFFFFF ) + +/* bit 12 in an address to common memory, selectes between the two sections */ +#define CS_COMMON_MEMORY_SECTION_SELECTION_BIT ( 12 ) + +/* there are 2 registesr which store the classifier-to-class mapping. + each register stores mapping of 8 classifiers */ +#define CS_NUMBER_OF_CLASSIFIERS_IN_CLASSIFIER_TO_CLASS_MAPPING_REGISTERS ( 8 ) + +/* each register stores configuration of 4 ingress queues */ +#define CS_NUMBER_OF_INGRESS_QUEUES_IN_PRIORITY_AND_CONGESTION_THRESHOLD_REGISTERS ( 4 ) + +/* each DSCP-to-TCI table resides in 8 registers */ +#define CS_NUMBER_OF_REGISTERS_OF_DSCP_TO_TCI_TABLE ( 8 ) + +/* each register stores 8 entries */ +#define CS_NUMBER_OF_ENTRIES_IN_DSCP_TO_TCI_TABLE_REGISTER ( 8 ) + +static DRV_IH_TARGET_MATRIX_PER_SP_CONFIG trgt_mtrx_sp_shadow[DRV_IH_TARGET_MATRIX_NUMBER_OF_DESTINATION_PORTS] = {}; + + +/******************************************************************************/ +/* */ +/* Macros definitions */ +/* */ +/******************************************************************************/ + +/* gets bit #i from a given number */ +#define MS_GET_BIT_I( number , i ) ( ( ( 1 << ( i ) ) & ( number ) ) >> ( i ) ) +/* sets bit #i of a given number to a given value */ +#define MS_SET_BIT_I( number , i , bit_value ) ( ( number ) &= ( ~ ( 1 << ( i ) ) ) , ( number ) |= ( ( bit_value ) << ( i ) ) ) + + +/* the following macros are for accessing, using the same macro, a register + in a sequence of several identical registers. these macros use arrays of + addresses of the corresponding registers. it is needed since the offset + betweeen the registers is not uniform */ + +uint32_t gs_lookup_configuration_lkup_tbl_lut_cfg_address [ DRV_IH_NUMBER_OF_LOOKUP_TABLES ] = +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_ADDRESS +} ; + + +uint32_t gs_lookup_configuration_lkup_tbl_cam_cfg_address [ DRV_IH_NUMBER_OF_LOOKUP_TABLES ] = +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_ADDRESS +} ; + + + +uint32_t gs_lookup_configuration_lkup_tbl_lut_cnxt_cfg_address [ DRV_IH_NUMBER_OF_LOOKUP_TABLES ] = +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_ADDRESS +} ; + + + +uint32_t gs_lookup_configuration_lkup_tbl_cam_cnxt_cfg_address [ DRV_IH_NUMBER_OF_LOOKUP_TABLES ] = +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_ADDRESS +} ; + + + +uint32_t gs_lookup_configuration_lkup_tbl_key_cfg_address [ DRV_IH_NUMBER_OF_LOOKUP_TABLES ] = +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_ADDRESS +} ; + + +uint32_t gs_lookup_configuration_lkup_tbl_key_p0_maskl_address [ DRV_IH_NUMBER_OF_LOOKUP_TABLES ] = +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL_ADDRESS +} ; + + +uint32_t gs_lookup_configuration_lkup_tbl_key_p0_maskh_address [ DRV_IH_NUMBER_OF_LOOKUP_TABLES ] = +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_ADDRESS +} ; + + +uint32_t gs_lookup_configuration_lkup_tbl_key_p1_maskl_address [ DRV_IH_NUMBER_OF_LOOKUP_TABLES ] = +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL_ADDRESS +} ; + + +uint32_t gs_lookup_configuration_lkup_tbl_key_p1_maskh_address [ DRV_IH_NUMBER_OF_LOOKUP_TABLES ] = +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_ADDRESS +} ; + + + +uint32_t gs_lookup_configuration_lkup_tbl_gl_mask_address [ DRV_IH_NUMBER_OF_LOOKUP_TABLES ] = +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_ADDRESS , + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_ADDRESS +} ; + + +uint32_t gs_general_configuration_ih_class_search_cfg_address [ DRV_IH_NUMBER_OF_CLASSES ] = +{ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_ADDRESS +} ; + + +uint32_t gs_general_configuration_ih_class_general_cfg_address [ DRV_IH_NUMBER_OF_CLASSES ] = +{ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_ADDRESS , + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_ADDRESS +} ; + +/*** Lookup table configuration ***/ + +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TLUT_CFG_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_lut_cfg_address [ i ] ) , (r) ) +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TLUT_CFG_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_lut_cfg_address [ i ] ) , (v) ) + +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TCAM_CFG_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_cam_cfg_address [ i ] ) , (r) ) +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TCAM_CFG_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_cam_cfg_address [ i ] ) , (v) ) + +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TLUT_CNXT_CFG_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_lut_cnxt_cfg_address [ i ] ) , (r) ) +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TLUT_CNXT_CFG_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_lut_cnxt_cfg_address [ i ] ) , (v) ) + +#define MS_DRV_IH_LOOKUP_LOOKUP_CONFIGURATION_LKUP_TCAM_CNXT_CFG_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_cam_cnxt_cfg_address [ i ] ) , (r) ) +#define MS_DRV_IH_LOOKUP_LOOKUP_CONFIGURATION_LKUP_TCAM_CNXT_CFG_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_cam_cnxt_cfg_address [ i ] ) , (v) ) + +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_CFG_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_key_cfg_address [ i ] ) , (r) ) +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_CFG_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_key_cfg_address [ i ] ) , (v) ) + +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P0_MASKL_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_key_p0_maskl_address [ i ] ) , (r) ) +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P0_MASKL_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_key_p0_maskl_address [ i ] ) , (v) ) + +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P0_MASKH_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_key_p0_maskh_address [ i ] ) , (r) ) +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P0_MASKH_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_key_p0_maskh_address [ i ] ) , (v) ) + +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P1_MASKL_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_key_p1_maskl_address [ i ] ) , (r) ) +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P1_MASKL_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_key_p1_maskl_address [ i ] ) , (v) ) + +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P1_MASKH_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_key_p1_maskh_address [ i ] ) , (r) ) +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P1_MASKH_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_key_p1_maskh_address [ i ] ) , (v) ) + +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_gl_mask_address [ i ] ) , (r) ) +#define MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_lookup_configuration_lkup_tbl_gl_mask_address [ i ] ) , (v) ) + + +/*** Class configuration ***/ + +#define MS_DRV_IH_GENERAL_CONFIGURATION_IH_CLASS_SEARCH_CFG_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_general_configuration_ih_class_search_cfg_address [ i ] ) , (r) ) +#define MS_DRV_IH_GENERAL_CONFIGURATION_IH_CLASS_SEARCH_CFG_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_general_configuration_ih_class_search_cfg_address [ i ] ) , (v) ) + +#define MS_DRV_IH_GENERAL_CONFIGURATION_IH_CLASS_GENERAL_CFG_READ_I( r , i ) READ_32( DEVICE_ADDRESS( gs_general_configuration_ih_class_general_cfg_address [ i ] ) , (r) ) +#define MS_DRV_IH_GENERAL_CONFIGURATION_IH_CLASS_GENERAL_CFG_WRITE_I( v , i ) WRITE_32( DEVICE_ADDRESS( gs_general_configuration_ih_class_general_cfg_address [ i ] ) , (v) ) + +/******************************************************************************/ +/* Common memory section */ +/* There are 2 sections in the runners common memory: A and B. */ +/******************************************************************************/ +typedef enum +{ + CS_COMMON_MEMORY_SECTION_A , + CS_COMMON_MEMORY_SECTION_B +} +DRV_IH_COMMON_MEMORY_SECTION_DTS ; + + +/******************************************************************************/ +/* */ +/* Global variables definitions */ +/* */ +/******************************************************************************/ +int32_t gs_class_is_configured [ DRV_IH_NUMBER_OF_CLASSES ] = { 0 } ; + +/******************************************************************************/ +/* */ +/* Functions prototypes */ +/* */ +/******************************************************************************/ + +int32_t f_check_item_index( uint32_t xi_item_index , + uint32_t xi_number_of_items ) ; + +DRV_IH_ERROR f_configure_lut_all_parameters ( uint8_t xi_table_index , + const DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG * xi_lookup_table_60_bit_key_config , + int32_t xi_five_tupple_enable ) ; + + +DRV_IH_ERROR fi_get_lut_all_parameters ( uint8_t xi_table_index , + DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG * const xo_lookup_table_60_bit_key_config , + int32_t * const xo_five_tupple_enable ) ; + +DRV_IH_COMMON_MEMORY_SECTION_DTS f_get_lookup_table_location( uint8_t xi_table_index ) ; + +int32_t f_verify_class_search_validity( DRV_IH_CLASS_SEARCH xi_class_search , + DRV_IH_COMMON_MEMORY_SECTION_DTS xi_desired_lookup_table_location ) ; + +/* In 120 bit key lookup table, each key value actually occupies two table + entries. therefore it is needed to multiply by 2 the maximal search depth + and table size parameters obtained from the user. */ +int32_t f_multiply_by_2_table_size ( DRV_IH_LOOKUP_TABLE_SIZE xi_table_size , + DRV_IH_LOOKUP_TABLE_SIZE * xo_multiplied_table_size ) ; +int32_t f_divide_by_2_table_size ( DRV_IH_LOOKUP_TABLE_SIZE xi_table_size , + DRV_IH_LOOKUP_TABLE_SIZE * xo_divided_table_size ) ; +int32_t f_multiply_by_2_maximal_search_depth ( DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH xi_maximal_search_depth , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH * xo_multiplied_maximal_search_depth ) ; +int32_t f_divide_by_2_maximal_search_depth ( DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH xi_maximal_search_depth , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH * xo_divided_maximal_search_depth ) ; + +void p_mac_address_array_to_hw_format ( uint8_t xi_mac_address [ DRV_IH_NUMBER_OF_BYTES_IN_MAC_ADDRESS ] , + uint32_t * xo_address_4_ls_bytes , + uint16_t * xo_addres_2_ms_bytes ) ; + +/******************************************************************************/ +/* */ +/* Init & cleanup module, license */ +/* */ +/******************************************************************************/ + + +/******************************************************************************/ +/* */ +/* API functions implementations */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_general_configuration */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set general configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets general configuration of the IH block. */ +/* */ +/* Input: */ +/* */ +/* xi_ih_general_config - IH general configuration. */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_general_configuration ( const DRV_IH_GENERAL_CONFIG * xi_ih_general_config ) +{ + IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR rnra_ihrsp_addr ; + IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR rnrb_ihrsp_addr ; + IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR rnra_cngs_rpt_addr ; + IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR rnrb_cngs_rpt_addr ; + IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG rnr_cngs_rpt_cfg ; + IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG ih_misc_cfg ; + + + IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_READ( rnra_ihrsp_addr ) ; + rnra_ihrsp_addr.rnra_ihrsp_addr = xi_ih_general_config->runner_a_ih_response_address ; + IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_WRITE( rnra_ihrsp_addr ) ; + + IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_READ( rnrb_ihrsp_addr ) ; + rnrb_ihrsp_addr.rnrb_ihrsp_addr = xi_ih_general_config->runner_b_ih_response_address ; + IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_WRITE( rnrb_ihrsp_addr ) ; + + IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_READ( rnra_cngs_rpt_addr ) ; + rnra_cngs_rpt_addr.rnra_cngs_rpt_addr = xi_ih_general_config->runner_a_ih_congestion_report_address ; + IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_WRITE( rnra_cngs_rpt_addr ) ; + + IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_READ( rnrb_cngs_rpt_addr ) ; + rnrb_cngs_rpt_addr.rnrb_cngs_rpt_addr = xi_ih_general_config->runner_b_ih_congestion_report_address ; + IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_WRITE( rnrb_cngs_rpt_addr ) ; + + IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_READ( rnr_cngs_rpt_cfg ) ; + rnr_cngs_rpt_cfg.rnra_cngs_rpt_en = xi_ih_general_config->runner_a_ih_congestion_report_enable ; + rnr_cngs_rpt_cfg.rnrb_cngs_rpt_en = xi_ih_general_config->runner_b_ih_congestion_report_enable ; + IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_WRITE( rnr_cngs_rpt_cfg ) ; + + IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_READ( ih_misc_cfg ) ; + ih_misc_cfg.lut_en_direct_mode = xi_ih_general_config->lut_searches_enable_in_direct_mode ; + ih_misc_cfg.sn_stamp_dm_pkt = xi_ih_general_config->sn_stamping_enable_in_direct_mode ; + ih_misc_cfg.hlength_min_trsh = xi_ih_general_config->header_length_minimum ; + ih_misc_cfg.cngs_dscrd_dis = xi_ih_general_config->congestion_discard_disable ; + ih_misc_cfg.nval_cam_search_en = xi_ih_general_config->cam_search_enable_upon_invalid_lut_entry ; + IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_WRITE( ih_misc_cfg ) ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL ( fi_bl_drv_ih_set_general_configuration ) ; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_packet_header_offsets */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set packet header offsets */ +/* */ +/* Abstract: */ +/* */ +/* This function sets packet header offset for each physical port. */ +/* */ +/* Input: */ +/* */ +/* xi_packet_header_offsets - Packet header offsets */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_packet_header_offsets ( const DRV_IH_PACKET_HEADER_OFFSETS * xi_packet_header_offsets ) +{ + IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG phl_offset_cfg ; + IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG phh_offset_cfg ; + + + IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_READ( phl_offset_cfg ) ; + phl_offset_cfg.eth0_ph_offset = xi_packet_header_offsets->eth0_packet_header_offset ; + phl_offset_cfg.eth1_ph_offset = xi_packet_header_offsets->eth1_packet_header_offset ; + phl_offset_cfg.eth2_ph_offset = xi_packet_header_offsets->eth2_packet_header_offset ; + phl_offset_cfg.eth3_ph_offset = xi_packet_header_offsets->eth3_packet_header_offset ; + IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_WRITE( phl_offset_cfg ) ; + + IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_READ( phh_offset_cfg ) ; + phh_offset_cfg.eth4_ph_offset = xi_packet_header_offsets->eth4_packet_header_offset ; + phh_offset_cfg.gpon_ph_offset = xi_packet_header_offsets->gpon_packet_header_offset ; + phh_offset_cfg.rnra_ph_offset = xi_packet_header_offsets->runner_a_packet_header_offset ; + phh_offset_cfg.rnrb_ph_offset = xi_packet_header_offsets->runner_b_packet_header_offset ; + IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_WRITE( phh_offset_cfg ) ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL ( fi_bl_drv_ih_set_packet_header_offsets ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_runner_buffers_configuration */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Runner Buffers configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets runner-buffers related configuration, for each */ +/* runner. */ +/* */ +/* Input: */ +/* */ +/* xi_runner_buffers_config - Runner Buffers Configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_runner_buffers_configuration ( const DRV_IH_RUNNER_BUFFERS_CONFIG * xi_runner_buffers_config ) +{ + IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE rnra_rb_base ; + IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE rnrb_rb_base ; + IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG rbpm_bat_cfg ; + + + IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_READ( rnra_rb_base ) ; + rnra_rb_base.rnra_common_rb_base = xi_runner_buffers_config->runner_a_ih_managed_rb_base_address ; + rnra_rb_base.rnra_asigned_rb_base = xi_runner_buffers_config->runner_a_runner_managed_rb_base_address ; + IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_WRITE( rnra_rb_base ) ; + + IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_READ( rnrb_rb_base ) ; + rnrb_rb_base.rnrb_common_rb_base = xi_runner_buffers_config->runner_b_ih_managed_rb_base_address ; + rnrb_rb_base.rnrb_asigned_rb_base = xi_runner_buffers_config->runner_b_runner_managed_rb_base_address ; + IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_WRITE( rnrb_rb_base ) ; + + IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_READ( rbpm_bat_cfg ) ; + rbpm_bat_cfg.rnra_bpm_bat = xi_runner_buffers_config->runner_a_maximal_number_of_buffers ; + rbpm_bat_cfg.rnrb_bpm_bat = xi_runner_buffers_config->runner_b_maximal_number_of_buffers ; + IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_WRITE( rbpm_bat_cfg ) ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL ( fi_bl_drv_ih_set_runner_buffers_configuration ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_runners_load_thresholds */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Runners Load Thresholds */ +/* */ +/* Abstract: */ +/* */ +/* This function sets thresholds related to runner load, for each runner. */ +/* The thresholds are in number of occupied Runner Buffers. */ +/* */ +/* Input: */ +/* */ +/* xi_runners_load_thresholds - Runners Load Thresholds (in number of */ +/* occupied Runner Buffers) */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_runners_load_thresholds ( const DRV_IH_RUNNERS_LOAD_THRESHOLDS * xi_runners_load_thresholds ) +{ + IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG rnra_cngs_trsh_cfg ; + IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG rnrb_cngs_trsh_cfg ; + + + if ( xi_runners_load_thresholds->runner_a_high_congestion_threshold > DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ) + { + return ( DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS ) ; + } + + if ( xi_runners_load_thresholds->runner_b_high_congestion_threshold > DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ) + { + return ( DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS ) ; + } + + if ( xi_runners_load_thresholds->runner_a_exclusive_congestion_threshold > DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ) + { + return ( DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS ) ; + } + + if ( xi_runners_load_thresholds->runner_b_exclusive_congestion_threshold > DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ) + { + return ( DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS ) ; + } + + if ( xi_runners_load_thresholds->runner_a_load_balancing_threshold > DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ) + { + return ( DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS ) ; + } + + if ( xi_runners_load_thresholds->runner_b_load_balancing_threshold > DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ) + { + return ( DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS ) ; + } + + if ( xi_runners_load_thresholds->runner_a_load_balancing_hysteresis > DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ) + { + return ( DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS ) ; + } + + if ( xi_runners_load_thresholds->runner_b_load_balancing_hysteresis > DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ) + { + return ( DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS ) ; + } + + + IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_READ( rnra_cngs_trsh_cfg ) ; + rnra_cngs_trsh_cfg.high_cngs_trsh = xi_runners_load_thresholds->runner_a_high_congestion_threshold ; + rnra_cngs_trsh_cfg.excl_cngs_trsh = xi_runners_load_thresholds->runner_a_exclusive_congestion_threshold ; + rnra_cngs_trsh_cfg.lb_thsh = xi_runners_load_thresholds->runner_a_load_balancing_threshold ; + rnra_cngs_trsh_cfg.lb_hyst = xi_runners_load_thresholds->runner_a_load_balancing_hysteresis ; + IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_WRITE( rnra_cngs_trsh_cfg ) ; + + IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_READ( rnrb_cngs_trsh_cfg ) ; + rnrb_cngs_trsh_cfg.high_cngs_trsh = xi_runners_load_thresholds->runner_b_high_congestion_threshold ; + rnrb_cngs_trsh_cfg.excl_cngs_trsh = xi_runners_load_thresholds->runner_b_exclusive_congestion_threshold ; + rnrb_cngs_trsh_cfg.lb_thsh = xi_runners_load_thresholds->runner_b_load_balancing_threshold ; + rnrb_cngs_trsh_cfg.lb_hyst = xi_runners_load_thresholds->runner_b_load_balancing_hysteresis ; + IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_WRITE( rnrb_cngs_trsh_cfg ) ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL ( fi_bl_drv_ih_set_runners_load_thresholds ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_route_addresses */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Route Addresses */ +/* */ +/* Abstract: */ +/* */ +/* This function sets route address for each physical port. The route */ +/* address is used for broad-bus access for sending responses, message and */ +/* data. */ +/* */ +/* Input: */ +/* */ +/* xi_route_addresses - Route Addresses */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_route_addresses ( const DRV_IH_ROUTE_ADDRESSES * xi_route_addresses ) +{ + IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG raddr0_cfg ; + IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG raddr1_cfg ; + + + IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_READ( raddr0_cfg ) ; + raddr0_cfg.eth0_raddr = xi_route_addresses->eth0_route_address ; + raddr0_cfg.eth1_raddr = xi_route_addresses->eth1_route_address ; + raddr0_cfg.eth2_raddr = xi_route_addresses->eth2_route_address ; + raddr0_cfg.eth3_raddr = xi_route_addresses->eth3_route_address ; + IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_WRITE( raddr0_cfg ) ; + + IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_READ( raddr1_cfg ) ; + raddr1_cfg.eth4_raddr = xi_route_addresses->eth4_route_address ; + raddr1_cfg.gpon_raddr = xi_route_addresses->gpon_route_address ; + raddr1_cfg.rnra_raddr = xi_route_addresses->runner_a_route_address ; + raddr1_cfg.rnrb_raddr = xi_route_addresses->runner_b_route_address ; + IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_WRITE( raddr1_cfg ) ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL ( fi_bl_drv_ih_set_route_addresses ) ; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_logical_ports_configuration */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Logical Ports Configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets configuration of the following logical ports: */ +/* Ethernet 0-4, GPON, Runner A, Runner B and PCIE 0-1. The following */ +/* parameters are configured per port: Parsing layer depth, Proprietary tag */ +/* size. */ +/* */ +/* Input: */ +/* */ +/* xi_logical_ports_config - Logical Ports Configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_logical_ports_configuration ( const DRV_IH_LOGICAL_PORTS_CONFIG * xi_logical_ports_config ) +{ + IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG parse_layer_per_port_cfg ; + IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0 prop_size_per_port_cfg0 ; + IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1 prop_size_per_port_cfg1 ; + + + IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_READ( parse_layer_per_port_cfg ) ; + parse_layer_per_port_cfg.eth0_parse_layer_stg = xi_logical_ports_config->eth0_config.parsing_layer_depth ; + parse_layer_per_port_cfg.eth1_parse_layer_stg = xi_logical_ports_config->eth1_config.parsing_layer_depth ; + parse_layer_per_port_cfg.eth2_parse_layer_stg = xi_logical_ports_config->eth2_config.parsing_layer_depth ; + parse_layer_per_port_cfg.eth3_parse_layer_stg = xi_logical_ports_config->eth3_config.parsing_layer_depth ; + parse_layer_per_port_cfg.eth4_parse_layer_stg = xi_logical_ports_config->eth4_config.parsing_layer_depth ; + parse_layer_per_port_cfg.gpon_parse_layer_stg = xi_logical_ports_config->gpon_config.parsing_layer_depth ; + parse_layer_per_port_cfg.rnra_parse_layer_stg = xi_logical_ports_config->runner_a_config.parsing_layer_depth ; + parse_layer_per_port_cfg.rnrb_parse_layer_stg = xi_logical_ports_config->runner_b_config.parsing_layer_depth ; + parse_layer_per_port_cfg.pcie0_parse_layer_stg = xi_logical_ports_config->pcie0_config.parsing_layer_depth ; + parse_layer_per_port_cfg.pcie1_parse_layer_stg = xi_logical_ports_config->pcie1_config.parsing_layer_depth ; + IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_WRITE( parse_layer_per_port_cfg ) ; + + IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_READ( prop_size_per_port_cfg0 ) ; + prop_size_per_port_cfg0.eth0_prop_tag_size = xi_logical_ports_config->eth0_config.proprietary_tag_size ; + prop_size_per_port_cfg0.eth1_prop_tag_size = xi_logical_ports_config->eth1_config.proprietary_tag_size ; + prop_size_per_port_cfg0.eth2_prop_tag_size = xi_logical_ports_config->eth2_config.proprietary_tag_size ; + prop_size_per_port_cfg0.eth3_prop_tag_size = xi_logical_ports_config->eth3_config.proprietary_tag_size ; + prop_size_per_port_cfg0.eth4_prop_tag_size = xi_logical_ports_config->eth4_config.proprietary_tag_size ; + prop_size_per_port_cfg0.gpon_prop_tag_size = xi_logical_ports_config->gpon_config.proprietary_tag_size ; + prop_size_per_port_cfg0.rnra_prop_tag_size = xi_logical_ports_config->runner_a_config.proprietary_tag_size ; + prop_size_per_port_cfg0.rnrb_prop_tag_size = xi_logical_ports_config->runner_b_config.proprietary_tag_size ; + IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_WRITE( prop_size_per_port_cfg0 ) ; + + IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_READ( prop_size_per_port_cfg1 ) ; + prop_size_per_port_cfg1.pcie0_prop_tag_size = xi_logical_ports_config->pcie0_config.proprietary_tag_size ; + prop_size_per_port_cfg1.pcie1_prop_tag_size = xi_logical_ports_config->pcie1_config.proprietary_tag_size ; + IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_WRITE( prop_size_per_port_cfg1 ) ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL ( fi_bl_drv_ih_set_logical_ports_configuration ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_lut_60_bit_key */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure Lookup Table 60 bit key */ +/* */ +/* Abstract: */ +/* */ +/* This function configures a lookup table with 60-bit key. There is a */ +/* total of 10 tables. Note that when configuring a lookup table with */ +/* 120-bit key (with dedicated API), it occupies 2 tables. The lookup key */ +/* is obtained by ORing two 60-bit parts taken from the parser result. Each */ +/* part has a configurable offset, and optionally a shift & rotate */ +/* operation. Initially 64 bits are taken from the configured offset, then */ +/* shift & rotate is optionally done, then the 4 MS-bits are omitted. Then */ +/* each part is masked with its own mask. Then ORing the left 60 bits of */ +/* the 2 parts yields the key. Then a key-extension can optionally be done, */ +/* i.e. ORing the MS-bits of the key with one of the following values: (1) */ +/* 5-bit Source Port from Header Descriptor. (2) 8-bit GEM Flow ID from */ +/* Header Descriptor. (3) 1-bit WAN/LAN indication extracted from */ +/* configuration of the source port. The global mask is applied on both key */ +/* & LUT entry when comparing between them. Move indication: When "Source */ +/* port search enable" parameter is enabled, additional comparison will be */ +/* done, between source-port (from Header descriptor) and bits 56:52 of LUT */ +/* entry, where source-port value should reside. In this case, the global */ +/* mask must mask these bits for the regular comparison between the key and */ +/* LUT entry, which would be a MAC address comparison. If both comparisons */ +/* match, the result would be "hit". If only MAC address comparison */ +/* matches, the result would be "move". */ +/* */ +/* Input: */ +/* */ +/* xi_table_index - Table index */ +/* */ +/* xi_lookup_table_60_bit_key_config - Lookup table 60 bit key */ +/* configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_lut_60_bit_key ( uint8_t xi_table_index , + const DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG * xi_lookup_table_60_bit_key_config ) +{ + DRV_IH_ERROR error_code ; + + /* five_tupple_enable parameter is false here since it's a 60 bit key */ + error_code = f_configure_lut_all_parameters( xi_table_index , + xi_lookup_table_60_bit_key_config , + 0 ) ; + + return ( error_code ) ; +} +EXPORT_SYMBOL( fi_bl_drv_ih_configure_lut_60_bit_key ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_class */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure Class */ +/* */ +/* Abstract: */ +/* */ +/* This function configures an IH class. Ingress handler class is type of */ +/* ingress traffic, e.g. IPTV, bridged, routed. Each class includes */ +/* predefined set of settings, such as: target runner, destination memory, */ +/* QoS, definition of look-up searches. There are up to 16 classes. Each */ +/* physical port has a default class (For GPON port, default class is per */ +/* GEM flow). IH may override the default class according to */ +/* enable-override configuration and to classification based on reduced */ +/* Parser results, called "Classifier Key Word" (Parser Summary Word plus */ +/* source port). Default classes and override-enable configurations are in */ +/* BBH. In runner flow, runner assigns an initial class (which can be */ +/* overridden by IH). Class override is done using classifiers, which are */ +/* configured using Configure Classifier API. */ +/* */ +/* Input: */ +/* */ +/* xi_class_index - Class index */ +/* */ +/* xi_class_config - Class Configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* DRV_IH_ERROR_CLASS_SEARCH_AND_LUT_LOCATION_MISMATCH - mismatch */ +/* between class search and lookup table location */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_class ( uint8_t xi_class_index , + const DRV_IH_CLASS_CONFIG * xi_class_config ) +{ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG ih_class_search_cfg ; + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG ih_class_general_cfg ; + int32_t result ; + + result = f_check_item_index( xi_class_index , + DRV_IH_NUMBER_OF_CLASSES ) ; + if ( result == 0 ) + { + return ( DRV_IH_ERROR_INVALID_INDEX ) ; + } + + result = f_check_item_index( xi_class_config->dscp_to_tci_table_index , + DRV_IH_NUMBER_OF_DSCP_TO_TCI_TABLES ) ; + if ( result == 0 ) + { + return ( DRV_IH_ERROR_INVALID_INDEX ) ; + } + + /* Tables used for searches 1 & 2 must be located at common memory A */ + + result = f_verify_class_search_validity( xi_class_config->class_search_1 , + CS_COMMON_MEMORY_SECTION_A ) ; + if ( result == 0 ) + { + return ( DRV_IH_ERROR_CLASS_SEARCH_AND_LUT_LOCATION_MISMATCH ) ; + } + + result = f_verify_class_search_validity( xi_class_config->class_search_2 , + CS_COMMON_MEMORY_SECTION_A ) ; + if ( result == 0 ) + { + return ( DRV_IH_ERROR_CLASS_SEARCH_AND_LUT_LOCATION_MISMATCH ) ; + } + + /* Tables used for searches 3 & 4 must be located at common memory B */ + + result = f_verify_class_search_validity( xi_class_config->class_search_3 , + CS_COMMON_MEMORY_SECTION_B ) ; + if ( result == 0 ) + { + return ( DRV_IH_ERROR_CLASS_SEARCH_AND_LUT_LOCATION_MISMATCH ) ; + } + + result = f_verify_class_search_validity( xi_class_config->class_search_4 , + CS_COMMON_MEMORY_SECTION_B ) ; + if ( result == 0 ) + { + return ( DRV_IH_ERROR_CLASS_SEARCH_AND_LUT_LOCATION_MISMATCH ) ; + } + + MS_DRV_IH_GENERAL_CONFIGURATION_IH_CLASS_SEARCH_CFG_READ_I( ih_class_search_cfg , xi_class_index ) ; + ih_class_search_cfg.search1_lkup_tbl_ref = xi_class_config->class_search_1 ; + ih_class_search_cfg.search2_lkup_tbl_ref = xi_class_config->class_search_2 ; + ih_class_search_cfg.search3_lkup_tbl_ref = xi_class_config->class_search_3 ; + ih_class_search_cfg.search4_lkup_tbl_ref = xi_class_config->class_search_4 ; + ih_class_search_cfg.dp_extr_cfg = xi_class_config->destination_port_extraction ; + ih_class_search_cfg.drop_on_miss_extr_cfg = xi_class_config->drop_on_miss ; + ih_class_search_cfg.qos_extr_cfg = xi_class_config->ingress_qos_override ; + MS_DRV_IH_GENERAL_CONFIGURATION_IH_CLASS_SEARCH_CFG_WRITE_I( ih_class_search_cfg , xi_class_index ) ; + + MS_DRV_IH_GENERAL_CONFIGURATION_IH_CLASS_GENERAL_CFG_READ_I( ih_class_general_cfg , xi_class_index ) ; + ih_class_general_cfg.dscp2tci_trans_tbl = xi_class_config->dscp_to_tci_table_index ; + ih_class_general_cfg.dm_default = xi_class_config->direct_mode_default ; + ih_class_general_cfg.dm_override = xi_class_config->direct_mode_override ; + ih_class_general_cfg.tm_default = xi_class_config->target_memory_default ; + ih_class_general_cfg.tm_override = xi_class_config->target_memory_override ; + ih_class_general_cfg.qos_default = xi_class_config->ingress_qos_default ; + /* qos_override paramter is actually redundant (qos_extr_cfg is sufficient), so it is not exposed to the user */ + ih_class_general_cfg.qos_override = ( xi_class_config->ingress_qos_override == DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ? 0 : 1 ) ; + ih_class_general_cfg.tr_default = xi_class_config->target_runner_default ; + ih_class_general_cfg.rnr_ovr_dm = xi_class_config->target_runner_override_in_direct_mode ; + ih_class_general_cfg.rnr_default_dm = xi_class_config->target_runner_for_direct_mode ; + ih_class_general_cfg.lb_en = xi_class_config->load_balancing_enable ; + ih_class_general_cfg.pref_lb_en = xi_class_config->preference_load_balancing_enable ; + MS_DRV_IH_GENERAL_CONFIGURATION_IH_CLASS_GENERAL_CFG_WRITE_I( ih_class_general_cfg , xi_class_index ) ; + + gs_class_is_configured [ xi_class_index ] = 1 ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_ih_configure_class ) ; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_source_port_to_ingress_queue_mapping */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set source port to ingress queue mapping */ +/* */ +/* Abstract: */ +/* */ +/* This function sets the mapping of physical source ports (eth0-4, GPON, */ +/* runner A, runner B) to ingress queues. There are 8 ingress queues. BBH */ +/* or runner (in case of runner flow) writes the Header Descriptor to one */ +/* of these queues, according to the configuration of the source port. */ +/* */ +/* Input: */ +/* */ +/* xi_source_port_to_ingress_queue_mapping - Source port to ingress queue */ +/* mapping */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_source_port_to_ingress_queue_mapping ( const DRV_IH_SOURCE_PORT_TO_INGRESS_QUEUE_MAPPING * xi_source_port_to_ingress_queue_mapping ) +{ + IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG sp2iq_map_cfg ; + + + if ( ( xi_source_port_to_ingress_queue_mapping->eth0_ingress_queue >= DRV_IH_NUMBER_OF_INGRESS_QUEUES ) || + ( xi_source_port_to_ingress_queue_mapping->eth1_ingress_queue >= DRV_IH_NUMBER_OF_INGRESS_QUEUES ) || + ( xi_source_port_to_ingress_queue_mapping->eth2_ingress_queue >= DRV_IH_NUMBER_OF_INGRESS_QUEUES ) || + ( xi_source_port_to_ingress_queue_mapping->eth3_ingress_queue >= DRV_IH_NUMBER_OF_INGRESS_QUEUES ) || + ( xi_source_port_to_ingress_queue_mapping->eth4_ingress_queue >= DRV_IH_NUMBER_OF_INGRESS_QUEUES ) || + ( xi_source_port_to_ingress_queue_mapping->gpon_ingress_queue >= DRV_IH_NUMBER_OF_INGRESS_QUEUES ) || + ( xi_source_port_to_ingress_queue_mapping->runner_a_ingress_queue >= DRV_IH_NUMBER_OF_INGRESS_QUEUES ) || + ( xi_source_port_to_ingress_queue_mapping->runner_b_ingress_queue >= DRV_IH_NUMBER_OF_INGRESS_QUEUES ) ) + { + return ( DRV_IH_ERROR_INVALID_INGRESS_QUEUE ) ; + } + + + IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_READ( sp2iq_map_cfg ) ; + sp2iq_map_cfg.eth0_iq_map = xi_source_port_to_ingress_queue_mapping->eth0_ingress_queue ; + sp2iq_map_cfg.eth1_iq_map = xi_source_port_to_ingress_queue_mapping->eth1_ingress_queue ; + sp2iq_map_cfg.eth2_iq_map = xi_source_port_to_ingress_queue_mapping->eth2_ingress_queue ; + sp2iq_map_cfg.eth3_iq_map = xi_source_port_to_ingress_queue_mapping->eth3_ingress_queue ; + sp2iq_map_cfg.eth4_iq_map = xi_source_port_to_ingress_queue_mapping->eth4_ingress_queue ; + sp2iq_map_cfg.gpon_iq_map = xi_source_port_to_ingress_queue_mapping->gpon_ingress_queue ; + sp2iq_map_cfg.rnra_iq_map = xi_source_port_to_ingress_queue_mapping->runner_a_ingress_queue ; + sp2iq_map_cfg.rnrb_iq_map = xi_source_port_to_ingress_queue_mapping->runner_b_ingress_queue ; + IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_WRITE( sp2iq_map_cfg ) ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_ih_set_source_port_to_ingress_queue_mapping ) ; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_ingress_queue */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure ingress queue */ +/* */ +/* Abstract: */ +/* */ +/* This function configures an ingress queue. There are 8 queues. All of */ +/* them reside in the same Ingress-queue (IQ) array of 16 entries (ingress */ +/* buffers). E.g. queue 0 occupies entries 0-1, queue 1 occupies entries */ +/* 2-3, etc. */ +/* */ +/* Input: */ +/* */ +/* xi_ingress_queue_index - Ingress queue index */ +/* */ +/* xi_ingress_queue_config - Ingress queue configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_ingress_queue ( uint8_t xi_ingress_queue_index , + const DRV_IH_INGRESS_QUEUE_CONFIG * xi_ingress_queue_config ) +{ + IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG iq_base_cfg ; + IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG iq_size_cfg ; + IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG iq_weight_cfg ; + IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG iql_prior_cfg ; + IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG iqh_prior_cfg ; + IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG iql_cngs_thrs_cfg ; + IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG iqh_cngs_thrs_cfg ; + int32_t result ; + uint8_t queue_size_encoding ; + + + result = f_check_item_index( xi_ingress_queue_index , + DRV_IH_NUMBER_OF_INGRESS_QUEUES ) ; + if ( result == 0 ) + { + return ( DRV_IH_ERROR_INVALID_INDEX ) ; + } + + if ( xi_ingress_queue_config->base_location >= DRV_IH_INGRESS_QUEUES_ARRAY_SIZE ) + { + return ( DRV_IH_ERROR_INVALID_INGRESS_QUEUE_BASE_LOCATION ) ; + } + + if ( ( xi_ingress_queue_config->size > DRV_IH_INGRESS_QUEUES_ARRAY_SIZE ) || + ( xi_ingress_queue_config->size < DRV_IH_MINIMAL_INGRESS_QUEUE_SIZE) ) + { + return ( DRV_IH_ERROR_INVALID_INGRESS_QUEUE_SIZE ) ; + } + + if ( xi_ingress_queue_config->priority > DRV_IH_MAXIMAL_INGRESS_QUEUE_PRIORITY ) + { + return ( DRV_IH_ERROR_INVALID_INGRESS_QUEUE_PRIORITY ) ; + } + + if ( xi_ingress_queue_config->weight > DRV_IH_MAXIMAL_INGRESS_QUEUE_WEIGHT ) + { + return ( DRV_IH_ERROR_INVALID_INGRESS_QUEUE_WEIGHT ) ; + } + + if ( xi_ingress_queue_config->congestion_threshold > DRV_IH_MAXIMAL_INGRESS_QUEUE_CONGESTION_THRESHOLD ) + { + return ( DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS ) ; + } + + + /* in HW, the value 0 for size means 16 (it is 4-bit field) */ + queue_size_encoding = xi_ingress_queue_config->size ; + if ( queue_size_encoding == DRV_IH_INGRESS_QUEUES_ARRAY_SIZE ) + { + queue_size_encoding = 0 ; + } + + + /* handle configuration which resides in one register for all queues */ + + IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_READ( iq_base_cfg ) ; + IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_READ( iq_size_cfg ) ; + IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_READ( iq_weight_cfg ) ; + + switch ( xi_ingress_queue_index ) + { + case 0: + iq_base_cfg.iq0_base = xi_ingress_queue_config->base_location ; + iq_size_cfg.iq0_size = queue_size_encoding ; + iq_weight_cfg.iq0_weight = xi_ingress_queue_config->weight ; + break ; + case 1: + iq_base_cfg.iq1_base = xi_ingress_queue_config->base_location ; + iq_size_cfg.iq1_size = queue_size_encoding ; + iq_weight_cfg.iq1_weight = xi_ingress_queue_config->weight ; + break ; + case 2: + iq_base_cfg.iq2_base = xi_ingress_queue_config->base_location ; + iq_size_cfg.iq2_size = queue_size_encoding ; + iq_weight_cfg.iq2_weight = xi_ingress_queue_config->weight ; + break ; + case 3: + iq_base_cfg.iq3_base = xi_ingress_queue_config->base_location ; + iq_size_cfg.iq3_size = queue_size_encoding ; + iq_weight_cfg.iq3_weight = xi_ingress_queue_config->weight ; + break ; + case 4: + iq_base_cfg.iq4_base = xi_ingress_queue_config->base_location ; + iq_size_cfg.iq4_size = queue_size_encoding ; + iq_weight_cfg.iq4_weight = xi_ingress_queue_config->weight ; + break ; + case 5: + iq_base_cfg.iq5_base = xi_ingress_queue_config->base_location ; + iq_size_cfg.iq5_size = queue_size_encoding ; + iq_weight_cfg.iq5_weight = xi_ingress_queue_config->weight ; + break ; + case 6: + iq_base_cfg.iq6_base = xi_ingress_queue_config->base_location ; + iq_size_cfg.iq6_size = queue_size_encoding ; + iq_weight_cfg.iq6_weight = xi_ingress_queue_config->weight ; + break ; + case 7: + iq_base_cfg.iq7_base = xi_ingress_queue_config->base_location ; + iq_size_cfg.iq7_size = queue_size_encoding ; + iq_weight_cfg.iq7_weight = xi_ingress_queue_config->weight ; + break ; + } + + IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_WRITE( iq_base_cfg ) ; + IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_WRITE( iq_size_cfg ) ; + IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_WRITE( iq_weight_cfg ) ; + + /* handle configuration which is split into 2 registers */ + + if ( xi_ingress_queue_index < CS_NUMBER_OF_INGRESS_QUEUES_IN_PRIORITY_AND_CONGESTION_THRESHOLD_REGISTERS ) + { + IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_READ( iql_prior_cfg ) ; + IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_READ( iql_cngs_thrs_cfg ) ; + + switch ( xi_ingress_queue_index ) + { + case 0: + /* "one hot" format */ + iql_prior_cfg.iq0_prior = ( 1 << xi_ingress_queue_config->priority ) ; + iql_cngs_thrs_cfg.iq0_cngs_thrs = xi_ingress_queue_config->congestion_threshold ; + break ; + case 1: + /* "one hot" format */ + iql_prior_cfg.iq1_prior = ( 1 << xi_ingress_queue_config->priority ) ; + iql_cngs_thrs_cfg.iq1_cngs_thrs = xi_ingress_queue_config->congestion_threshold ; + break ; + case 2: + /* "one hot" format */ + iql_prior_cfg.iq2_prior = ( 1 << xi_ingress_queue_config->priority ) ; + iql_cngs_thrs_cfg.iq2_cngs_thrs = xi_ingress_queue_config->congestion_threshold ; + break ; + case 3: + /* "one hot" format */ + iql_prior_cfg.iq3_prior = ( 1 << xi_ingress_queue_config->priority ) ; + iql_cngs_thrs_cfg.iq3_cngs_thrs = xi_ingress_queue_config->congestion_threshold ; + break ; + } + + IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_WRITE( iql_prior_cfg ) ; + IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_WRITE( iql_cngs_thrs_cfg ) ; + } + else + { + IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_READ( iqh_prior_cfg ) ; + IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_READ( iqh_cngs_thrs_cfg ) ; + + switch ( xi_ingress_queue_index ) + { + case 4: + /* "one hot" format */ + iqh_prior_cfg.iq4_prior = ( 1 << xi_ingress_queue_config->priority ) ; + iqh_cngs_thrs_cfg.iq4_cngs_thrs = xi_ingress_queue_config->congestion_threshold ; + break ; + case 5: + /* "one hot" format */ + iqh_prior_cfg.iq5_prior = ( 1 << xi_ingress_queue_config->priority ) ; + iqh_cngs_thrs_cfg.iq5_cngs_thrs = xi_ingress_queue_config->congestion_threshold ; + break ; + case 6: + /* "one hot" format */ + iqh_prior_cfg.iq6_prior = ( 1 << xi_ingress_queue_config->priority ) ; + iqh_cngs_thrs_cfg.iq6_cngs_thrs = xi_ingress_queue_config->congestion_threshold ; + break ; + case 7: + /* "one hot" format */ + iqh_prior_cfg.iq7_prior = ( 1 << xi_ingress_queue_config->priority ) ; + iqh_cngs_thrs_cfg.iq7_cngs_thrs = xi_ingress_queue_config->congestion_threshold ; + break ; + } + + IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_WRITE( iqh_prior_cfg ) ; + IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_WRITE( iqh_cngs_thrs_cfg ) ; + } + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_ih_configure_ingress_queue ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_target_matrix */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Target Matrix */ +/* */ +/* Abstract: */ +/* */ +/* This function sets the per-source-port configuration in the target */ +/* matrix, i.e. all entries which belong to the given source port. */ +/* Each entry consists of the following parameters: target memory */ +/* (DDR/SRAM), direct mode (true/false). */ +/* The function will fail when trying to configure an "Always DDR" entry */ +/* with Target memory = SRAM, or "Always SRAM" entry with */ +/* Target memory = DDR. */ +/* */ +/* Input: */ +/* */ +/* xi_source_port - Source port */ +/* */ +/* xi_per_sp_config - Per-source-port configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_target_matrix ( DRV_IH_TARGET_MATRIX_SOURCE_PORT xi_source_port , + const DRV_IH_TARGET_MATRIX_PER_SP_CONFIG * xi_per_sp_config ) +{ + /* we will use this variable for any source port, not only for eth0 (the registers are similar) */ + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG trgt_mtrx_sp_cfg ; + + + if ( xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ALWAYS_DDR ].target_memory == DRV_IH_TARGET_MEMORY_SRAM ) + { + return ( DRV_IH_ERROR_DESTINATION_PORT_AND_TARGET_MEMORY_MISMATCH ) ; + } + + if ( xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ALWAYS_SRAM ].target_memory == DRV_IH_TARGET_MEMORY_DDR ) + { + return ( DRV_IH_ERROR_DESTINATION_PORT_AND_TARGET_MEMORY_MISMATCH ) ; + } + + + /* Here we don't do read-modify-write, we only write. + this is because these registers are write-only. */ + + trgt_mtrx_sp_cfg.dp_eth0_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH0 ].target_memory ; + trgt_mtrx_sp_cfg.dp_eth0_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH0 ].direct_mode ; + + trgt_mtrx_sp_cfg.dp_eth1_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH1 ].target_memory ; + trgt_mtrx_sp_cfg.dp_eth1_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH1 ].direct_mode ; + + trgt_mtrx_sp_cfg.dp_eth2_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH2 ].target_memory ; + trgt_mtrx_sp_cfg.dp_eth2_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH2 ].direct_mode ; + + trgt_mtrx_sp_cfg.dp_eth3_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH3 ].target_memory ; + trgt_mtrx_sp_cfg.dp_eth3_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH3 ].direct_mode ; + + trgt_mtrx_sp_cfg.dp_eth4_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH4 ].target_memory ; + trgt_mtrx_sp_cfg.dp_eth4_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH4 ].direct_mode ; + + trgt_mtrx_sp_cfg.dp_gpon_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_GPON ].target_memory ; + trgt_mtrx_sp_cfg.dp_gpon_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_GPON ].direct_mode ; + + trgt_mtrx_sp_cfg.dp_pcie0_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE0 ].target_memory ; + trgt_mtrx_sp_cfg.dp_pcie0_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE0 ].direct_mode ; + + trgt_mtrx_sp_cfg.dp_pcie1_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE1 ].target_memory ; + trgt_mtrx_sp_cfg.dp_pcie1_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE1 ].direct_mode ; + + trgt_mtrx_sp_cfg.dp_cpu_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_CPU ].target_memory ; + trgt_mtrx_sp_cfg.dp_cpu_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_CPU ].direct_mode ; + + trgt_mtrx_sp_cfg.dp_mc_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_MULTICAST ].target_memory ; + trgt_mtrx_sp_cfg.dp_mc_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_MULTICAST ].direct_mode ; + + /* no configuration of target memory for "ALWAYS_DDR" port */ + trgt_mtrx_sp_cfg.dp_ddr_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ALWAYS_DDR ].direct_mode ; + + /* no configuration of target memory for "ALWAYS_SRAM" port */ + trgt_mtrx_sp_cfg.dp_sram_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ALWAYS_SRAM ].direct_mode ; + + trgt_mtrx_sp_cfg.dp_spare_tm_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_SPARE ].target_memory ; + trgt_mtrx_sp_cfg.dp_spare_ls_cfg = xi_per_sp_config->entry [ DRV_IH_TARGET_MATRIX_DESTINATION_PORT_SPARE ].direct_mode ; + + trgt_mtrx_sp_cfg.rsv1 = IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_RSV1_RSV_VALUE ; + trgt_mtrx_sp_cfg.rsv2 = IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_RSV2_RSV_VALUE ; + + /* write entry according to souce port */ + switch ( xi_source_port ) + { + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH0: + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_WRITE( trgt_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH1: + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_WRITE( trgt_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH2: + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_WRITE( trgt_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH3: + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_WRITE( trgt_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH4: + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_WRITE( trgt_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_GPON: + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_WRITE( trgt_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE0: + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_WRITE( trgt_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE1: + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_WRITE( trgt_mtrx_sp_cfg ) ; + break ; + default: + return ( DRV_IH_ERROR_INVALID_PORT ) ; + break ; + } + + /* create shadow */ + memcpy((uint8_t *)&(trgt_mtrx_sp_shadow[xi_source_port]), (uint8_t *)xi_per_sp_config, sizeof(DRV_IH_TARGET_MATRIX_PER_SP_CONFIG)); + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_ih_set_target_matrix ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_forward */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Target Forward */ +/* */ +/* Abstract: */ +/* */ +/* This function sets the "forward-enable" bit for the given source */ +/* port and destination port. */ +/* The "forward-enable" is only indication to FW (IH doesn't drop if */ +/* forwarding is disabled). */ +/* */ +/* Input: */ +/* */ +/* xi_source_port - Source port */ +/* */ +/* xi_destination_port - Destination port */ +/* */ +/* xi_forward - Forward */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_forward ( DRV_IH_TARGET_MATRIX_SOURCE_PORT xi_source_port , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT xi_destination_port , + int32_t xi_forward ) +{ + /* we will use this variable for any source port, not only for eth0 (the registers are similar) */ + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG fw_en_mtrx_sp_cfg ; + + + /* read entry according to souce port */ + switch ( xi_source_port ) + { + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH0: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_READ( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH1: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_READ( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH2: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_READ( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH3: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_READ( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH4: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_READ( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_GPON: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_READ( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE0: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_READ( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE1: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_READ( fw_en_mtrx_sp_cfg ) ; + break ; + default: + return ( DRV_IH_ERROR_INVALID_PORT ) ; + break ; + } + + /* modify entry according to destination port */ + switch ( xi_destination_port ) + { + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH0: + fw_en_mtrx_sp_cfg.dp_eth0_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH1: + fw_en_mtrx_sp_cfg.dp_eth1_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH2: + fw_en_mtrx_sp_cfg.dp_eth2_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH3: + fw_en_mtrx_sp_cfg.dp_eth3_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH4: + fw_en_mtrx_sp_cfg.dp_eth4_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_GPON: + fw_en_mtrx_sp_cfg.dp_gpon_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE0: + fw_en_mtrx_sp_cfg.dp_pcie0_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE1: + fw_en_mtrx_sp_cfg.dp_pcie1_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_CPU: + fw_en_mtrx_sp_cfg.dp_cpu_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_MULTICAST: + fw_en_mtrx_sp_cfg.dp_mc_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ALWAYS_DDR: + fw_en_mtrx_sp_cfg.dp_ddr_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ALWAYS_SRAM: + fw_en_mtrx_sp_cfg.dp_sram_fw_en_cfg = xi_forward ; + break ; + case DRV_IH_TARGET_MATRIX_DESTINATION_PORT_SPARE: + fw_en_mtrx_sp_cfg.dp_spare_fw_en_cfg = xi_forward ; + break ; + default: + return ( DRV_IH_ERROR_INVALID_PORT ) ; + break ; + } + + /* write entry according to souce port */ + switch ( xi_source_port ) + { + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH0: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_WRITE( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH1: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_WRITE( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH2: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_WRITE( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH3: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_WRITE( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH4: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_WRITE( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_GPON: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_WRITE( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE0: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_WRITE( fw_en_mtrx_sp_cfg ) ; + break ; + case DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE1: + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_WRITE( fw_en_mtrx_sp_cfg ) ; + break ; + default: + return ( DRV_IH_ERROR_INVALID_PORT ) ; + break ; + } + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_ih_set_forward ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_wan_ports */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure WAN ports */ +/* */ +/* Abstract: */ +/* */ +/* This function configures, for each logical port, whether it belongs to */ +/* WAN traffic. IH uses this configuration for WAN indication in the parser */ +/* result (and Classifier Key Word). */ +/* */ +/* Input: */ +/* */ +/* xi_wan_ports_config - WAN ports configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_wan_ports ( const DRV_IH_WAN_PORTS_CONFIG * xi_wan_ports_config ) +{ + IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG wan_per_port_cfg ; + + IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_READ( wan_per_port_cfg ) ; + wan_per_port_cfg.eth0_trf_map = xi_wan_ports_config->eth0 ; + wan_per_port_cfg.eth1_trf_map = xi_wan_ports_config->eth1 ; + wan_per_port_cfg.eth2_trf_map = xi_wan_ports_config->eth2 ; + wan_per_port_cfg.eth3_trf_map = xi_wan_ports_config->eth3 ; + wan_per_port_cfg.eth4_trf_map = xi_wan_ports_config->eth4 ; + wan_per_port_cfg.gpon_trf_map = xi_wan_ports_config->gpon ; + wan_per_port_cfg.rnra_trf_map = xi_wan_ports_config->runner_a ; + wan_per_port_cfg.rnrb_trf_map = xi_wan_ports_config->runner_b ; + wan_per_port_cfg.pcie0_trf_map = xi_wan_ports_config->pcie0 ; + wan_per_port_cfg.pcie1_trf_map = xi_wan_ports_config->pcie1 ; + IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_WRITE( wan_per_port_cfg ) ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_ih_configure_wan_ports ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_parser */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure Parser */ +/* */ +/* Abstract: */ +/* */ +/* This function configures general parameters in the parser accelerator in */ +/* IH. */ +/* */ +/* Input: */ +/* */ +/* xi_parser_config - Parser Configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_parser ( const DRV_IH_PARSER_CONFIG * xi_parser_config ) +{ + IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG parser_cfg ; + IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG ipv6_hdr_ext_fltr_mask_cfg ; + IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE snap_org_code ; + IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG gre_protocol_cfg ; + IH_REGS_PARSER_CORE_CONFIGURATION_ENG eng_cfg ; + + IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_READ( parser_cfg ) ; + parser_cfg.tcp_flags_filt = xi_parser_config->tcp_flags ; + parser_cfg.exception_en = xi_parser_config->exception_status_bits ; + parser_cfg.ppp_code_1_ipv6 = xi_parser_config->ppp_code_1_ipv6 ; + IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_WRITE( parser_cfg ) ; + + IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_READ( ipv6_hdr_ext_fltr_mask_cfg ) ; + ipv6_hdr_ext_fltr_mask_cfg.hop_by_hop_match = MS_GET_BIT_I( xi_parser_config->ipv6_extension_header_bitmask , 0 ) ; + ipv6_hdr_ext_fltr_mask_cfg.routing_eh = MS_GET_BIT_I( xi_parser_config->ipv6_extension_header_bitmask , 1 ) ; + ipv6_hdr_ext_fltr_mask_cfg.dest_opt_eh = MS_GET_BIT_I( xi_parser_config->ipv6_extension_header_bitmask , 2 ) ; + IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_WRITE( ipv6_hdr_ext_fltr_mask_cfg ) ; + + IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_READ( snap_org_code ) ; + snap_org_code.code = xi_parser_config->snap_user_defined_organization_code ; + snap_org_code.en_rfc1042 = xi_parser_config->snap_rfc1042_encapsulation_enable ; + snap_org_code.en_8021q = xi_parser_config->snap_802_1q_encapsulation_enable ; + IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_WRITE( snap_org_code ) ; + + IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_READ( gre_protocol_cfg ) ; + gre_protocol_cfg.gre_protocol = xi_parser_config->gre_protocol ; + IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_WRITE( gre_protocol_cfg ) ; + IH_REGS_PARSER_CORE_CONFIGURATION_ENG_READ( eng_cfg ) ; + eng_cfg.cfg = xi_parser_config->eng_cfg ; + IH_REGS_PARSER_CORE_CONFIGURATION_ENG_WRITE( eng_cfg ) ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL( fi_bl_drv_ih_configure_parser ) ; + +/******************************************************************************/ +/* */ +/* Internal functions implementation */ +/* */ +/******************************************************************************/ + + +/* this function checks validity of item index, comparing to number of items. + this function is intended for items whose legal indices are 0 to xi_number_of_items - 1. + in case of invalid index, this function returns false and prints to logger a compatible + message. otherwise, true is returned. */ +int32_t f_check_item_index( uint32_t xi_item_index , + uint32_t xi_number_of_items ) +{ + if ( xi_item_index >= xi_number_of_items ) + { + + return ( 0 ) ; + } + + return ( 1 ) ; +} + + +/* this function configures all paramters of a lookup table, including + "five tupple enable" paramter which is not exposed to the user. + this function perfroms validity checks of parameters. */ +DRV_IH_ERROR f_configure_lut_all_parameters ( uint8_t xi_table_index , + const DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG * xi_lookup_table_60_bit_key_config , + int32_t xi_five_tupple_enable ) +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG lkup_tbl_lut_cfg ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG lkup_tbl_cam_cfg ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG lkup_tbl_lut_cnxt_cfg ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG lkup_tbl_cam_cnxt_cfg ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG lkup_tbl_key_cfg ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL lkup_tbl_key_p0_maskl ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH lkup_tbl_key_p0_maskh ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL lkup_tbl_key_p1_maskl ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH lkup_tbl_key_p1_maskh ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK lkup_tbl_gl_mask ; + int32_t result ; + + + result = f_check_item_index( xi_table_index , + DRV_IH_NUMBER_OF_LOOKUP_TABLES ) ; + if ( result == 0 ) + { + return ( DRV_IH_ERROR_INVALID_INDEX ) ; + } + + if ( ( xi_lookup_table_60_bit_key_config->part_0_start_offset_in_4_byte > DRV_IH_MAXIMAL_START_OFFSET_SEATCH_KEY_PART ) || + ( xi_lookup_table_60_bit_key_config->part_1_start_offset_in_4_byte > DRV_IH_MAXIMAL_START_OFFSET_SEATCH_KEY_PART ) ) + { + return ( DRV_IH_ERROR_INVALID_START_OFFSET_SEATCH_KEY_PART ) ; + } + + if ( ( xi_lookup_table_60_bit_key_config->part_0_shift_offset_in_4_bit > DRV_IH_MAXIMAL_SHIFT_OFFSET_SEATCH_KEY_PART ) || + ( xi_lookup_table_60_bit_key_config->part_1_shift_offset_in_4_bit > DRV_IH_MAXIMAL_SHIFT_OFFSET_SEATCH_KEY_PART ) ) + { + return ( DRV_IH_ERROR_INVALID_SHIFT_OFFSET_SEATCH_KEY_PART ) ; + } + + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TLUT_CFG_READ_I( lkup_tbl_lut_cfg , xi_table_index ) ; + lkup_tbl_lut_cfg.base_address = xi_lookup_table_60_bit_key_config->table_base_address_in_8_byte ; + + lkup_tbl_lut_cfg.table_size = xi_lookup_table_60_bit_key_config->table_size ; + + lkup_tbl_lut_cfg.max_hop = xi_lookup_table_60_bit_key_config->maximal_search_depth ; + + lkup_tbl_lut_cfg.hash_type = xi_lookup_table_60_bit_key_config->hash_type ; + + lkup_tbl_lut_cfg.sa_search_en = xi_lookup_table_60_bit_key_config->sa_search_enable ; + + lkup_tbl_lut_cfg.aging_en = xi_lookup_table_60_bit_key_config->aging_enable ; + + lkup_tbl_lut_cfg.five_tuple_en = xi_five_tupple_enable ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TLUT_CFG_WRITE_I( lkup_tbl_lut_cfg , xi_table_index ) ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TCAM_CFG_READ_I( lkup_tbl_cam_cfg , xi_table_index ) ; + lkup_tbl_cam_cfg.cam_en = xi_lookup_table_60_bit_key_config->cam_enable ; + lkup_tbl_cam_cfg.base_address = xi_lookup_table_60_bit_key_config->cam_base_address_in_8_byte ; + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TCAM_CFG_WRITE_I( lkup_tbl_cam_cfg , xi_table_index ) ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TLUT_CNXT_CFG_READ_I( lkup_tbl_lut_cnxt_cfg , xi_table_index ) ; + lkup_tbl_lut_cnxt_cfg.base_address = xi_lookup_table_60_bit_key_config->context_table_base_address_in_8_byte ; + lkup_tbl_lut_cnxt_cfg.cnxt_entry_size = xi_lookup_table_60_bit_key_config->context_table_entry_size ; + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TLUT_CNXT_CFG_WRITE_I( lkup_tbl_lut_cnxt_cfg , xi_table_index ) ; + + MS_DRV_IH_LOOKUP_LOOKUP_CONFIGURATION_LKUP_TCAM_CNXT_CFG_READ_I( lkup_tbl_cam_cnxt_cfg , xi_table_index ) ; + lkup_tbl_cam_cnxt_cfg.base_address = xi_lookup_table_60_bit_key_config->cam_context_base_address_in_8_byte ; + MS_DRV_IH_LOOKUP_LOOKUP_CONFIGURATION_LKUP_TCAM_CNXT_CFG_WRITE_I( lkup_tbl_cam_cnxt_cfg , xi_table_index ) ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_CFG_READ_I( lkup_tbl_key_cfg , xi_table_index ) ; + lkup_tbl_key_cfg.start_offset_p0 = xi_lookup_table_60_bit_key_config->part_0_start_offset_in_4_byte ; + lkup_tbl_key_cfg.shift_offset_p0 = xi_lookup_table_60_bit_key_config->part_0_shift_offset_in_4_bit ; + lkup_tbl_key_cfg.start_offset_p1 = xi_lookup_table_60_bit_key_config->part_1_start_offset_in_4_byte ; + lkup_tbl_key_cfg.shift_offset_p1 = xi_lookup_table_60_bit_key_config->part_1_shift_offset_in_4_bit ; + lkup_tbl_key_cfg.key_ext = xi_lookup_table_60_bit_key_config->key_extension ; + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_CFG_WRITE_I( lkup_tbl_key_cfg , xi_table_index ) ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P0_MASKL_READ_I( lkup_tbl_key_p0_maskl , xi_table_index ) ; + lkup_tbl_key_p0_maskl.maskl = xi_lookup_table_60_bit_key_config->part_0_mask_low ; + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P0_MASKL_WRITE_I( lkup_tbl_key_p0_maskl , xi_table_index ) ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P0_MASKH_READ_I( lkup_tbl_key_p0_maskh , xi_table_index ) ; + lkup_tbl_key_p0_maskh.maskh = xi_lookup_table_60_bit_key_config->part_0_mask_high ; + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P0_MASKH_WRITE_I( lkup_tbl_key_p0_maskh , xi_table_index ) ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P1_MASKL_READ_I( lkup_tbl_key_p1_maskl , xi_table_index ) ; + lkup_tbl_key_p1_maskl.maskl = xi_lookup_table_60_bit_key_config->part_1_mask_low ; + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P1_MASKL_WRITE_I( lkup_tbl_key_p1_maskl , xi_table_index ) ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P1_MASKH_READ_I( lkup_tbl_key_p1_maskh , xi_table_index ) ; + lkup_tbl_key_p1_maskh.maskh = xi_lookup_table_60_bit_key_config->part_1_mask_high ; + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P1_MASKH_WRITE_I( lkup_tbl_key_p1_maskh , xi_table_index ) ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_READ_I( lkup_tbl_gl_mask , xi_table_index ) ; + lkup_tbl_gl_mask.mask_nibble_code = xi_lookup_table_60_bit_key_config->global_mask_in_4_bit ; + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_WRITE_I( lkup_tbl_gl_mask , xi_table_index ) ; + + return ( DRV_IH_NO_ERROR ) ; +} + + +/* this function gets all paramters configuration of a lookup table, including + "five tupple enable" paramter which is not exposed to the user. */ +/* this function is exported for IHD shell commands */ +DRV_IH_ERROR fi_get_lut_all_parameters ( uint8_t xi_table_index , + DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG * const xo_lookup_table_60_bit_key_config , + int32_t * const xo_five_tupple_enable ) +{ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG lkup_tbl_lut_cfg ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG lkup_tbl_cam_cfg ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG lkup_tbl_lut_cnxt_cfg ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG lkup_tbl_cam_cnxt_cfg ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG lkup_tbl_key_cfg ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL lkup_tbl_key_p0_maskl ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH lkup_tbl_key_p0_maskh ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL lkup_tbl_key_p1_maskl ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH lkup_tbl_key_p1_maskh ; + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK lkup_tbl_gl_mask ; + int32_t result ; + + result = f_check_item_index( xi_table_index , + DRV_IH_NUMBER_OF_LOOKUP_TABLES ) ; + if ( result == 0 ) + { + return ( DRV_IH_ERROR_INVALID_INDEX ) ; + } + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TLUT_CFG_READ_I( lkup_tbl_lut_cfg , xi_table_index ) ; + xo_lookup_table_60_bit_key_config->table_base_address_in_8_byte = lkup_tbl_lut_cfg.base_address ; + xo_lookup_table_60_bit_key_config->table_size = lkup_tbl_lut_cfg.table_size ; + xo_lookup_table_60_bit_key_config->maximal_search_depth = lkup_tbl_lut_cfg.max_hop ; + xo_lookup_table_60_bit_key_config->hash_type = lkup_tbl_lut_cfg.hash_type ; + xo_lookup_table_60_bit_key_config->sa_search_enable = lkup_tbl_lut_cfg.sa_search_en ; + xo_lookup_table_60_bit_key_config->aging_enable = lkup_tbl_lut_cfg.aging_en ; + * xo_five_tupple_enable = lkup_tbl_lut_cfg.five_tuple_en ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TCAM_CFG_READ_I( lkup_tbl_cam_cfg , xi_table_index ) ; + xo_lookup_table_60_bit_key_config->cam_enable = lkup_tbl_cam_cfg.cam_en ; + xo_lookup_table_60_bit_key_config->cam_base_address_in_8_byte = lkup_tbl_cam_cfg.base_address ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TLUT_CNXT_CFG_READ_I( lkup_tbl_lut_cnxt_cfg , xi_table_index ) ; + xo_lookup_table_60_bit_key_config->context_table_base_address_in_8_byte = lkup_tbl_lut_cnxt_cfg.base_address ; + xo_lookup_table_60_bit_key_config->context_table_entry_size = lkup_tbl_lut_cnxt_cfg.cnxt_entry_size ; + + MS_DRV_IH_LOOKUP_LOOKUP_CONFIGURATION_LKUP_TCAM_CNXT_CFG_READ_I( lkup_tbl_cam_cnxt_cfg , xi_table_index ) ; + xo_lookup_table_60_bit_key_config->cam_context_base_address_in_8_byte = lkup_tbl_cam_cnxt_cfg.base_address ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_CFG_READ_I( lkup_tbl_key_cfg , xi_table_index ) ; + xo_lookup_table_60_bit_key_config->part_0_start_offset_in_4_byte = lkup_tbl_key_cfg.start_offset_p0 ; + xo_lookup_table_60_bit_key_config->part_0_shift_offset_in_4_bit = lkup_tbl_key_cfg.shift_offset_p0 ; + xo_lookup_table_60_bit_key_config->part_1_start_offset_in_4_byte = lkup_tbl_key_cfg.start_offset_p1 ; + xo_lookup_table_60_bit_key_config->part_1_shift_offset_in_4_bit = lkup_tbl_key_cfg.shift_offset_p1 ; + xo_lookup_table_60_bit_key_config->key_extension = lkup_tbl_key_cfg.key_ext ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P0_MASKL_READ_I( lkup_tbl_key_p0_maskl , xi_table_index ) ; + xo_lookup_table_60_bit_key_config->part_0_mask_low = lkup_tbl_key_p0_maskl.maskl ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P0_MASKH_READ_I( lkup_tbl_key_p0_maskh , xi_table_index ) ; + xo_lookup_table_60_bit_key_config->part_0_mask_high = lkup_tbl_key_p0_maskh.maskh ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P1_MASKL_READ_I( lkup_tbl_key_p1_maskl , xi_table_index ) ; + xo_lookup_table_60_bit_key_config->part_1_mask_low = lkup_tbl_key_p1_maskl.maskl ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TKEY_P1_MASKH_READ_I( lkup_tbl_key_p1_maskh , xi_table_index ) ; + xo_lookup_table_60_bit_key_config->part_1_mask_high = lkup_tbl_key_p1_maskh.maskh ; + + MS_DRV_IH_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_READ_I( lkup_tbl_gl_mask , xi_table_index ) ; + xo_lookup_table_60_bit_key_config->global_mask_in_4_bit = lkup_tbl_gl_mask.mask_nibble_code ; + + return ( DRV_IH_NO_ERROR ) ; +} +EXPORT_SYMBOL ( fi_get_lut_all_parameters ) ; + + +/* checks in which common memory section a lookup table is located. + this function assumes that xi_table_index is valid! */ +DRV_IH_COMMON_MEMORY_SECTION_DTS f_get_lookup_table_location( uint8_t xi_table_index ) +{ + DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG lookup_table_config ; + int32_t five_tupple_enable ; + uint8_t common_memory_section_selection_bit ; + + fi_get_lut_all_parameters ( xi_table_index , + & lookup_table_config , + & five_tupple_enable ) ; + + common_memory_section_selection_bit = MS_GET_BIT_I( lookup_table_config.table_base_address_in_8_byte , + CS_COMMON_MEMORY_SECTION_SELECTION_BIT ) ; + + if ( common_memory_section_selection_bit == 0 ) + { + + return ( CS_COMMON_MEMORY_SECTION_A ) ; + } + else + { + + return ( CS_COMMON_MEMORY_SECTION_B ) ; + } +} + + +/* verifies that the lookup table of a given class search is located at the desired location */ +int32_t f_verify_class_search_validity( DRV_IH_CLASS_SEARCH xi_class_search , + DRV_IH_COMMON_MEMORY_SECTION_DTS xi_desired_lookup_table_location ) +{ + DRV_IH_COMMON_MEMORY_SECTION_DTS lookup_table_location ; + + if ( xi_class_search != DRV_IH_CLASS_SEARCH_DISABLED ) + { + lookup_table_location = f_get_lookup_table_location( xi_class_search ) ; + + if ( lookup_table_location != xi_desired_lookup_table_location ) + { + + return ( 0 ) ; + } + } + + + return ( 1 ) ; +} diff --git a/arch/arm/mach-bcmbca/rdp/rdp_drv_ih.h b/arch/arm/mach-bcmbca/rdp/rdp_drv_ih.h new file mode 100755 index 0000000000..851b214c29 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_drv_ih.h @@ -0,0 +1,2756 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This header file defines all datatypes and functions exported for the */ +/* Lilac IH driver */ +/* */ +/******************************************************************************/ + + +#ifndef DRV_IH_H_INCLUDED +#define DRV_IH_H_INCLUDED + +#ifdef __cplusplus +extern "C" +{ +#endif + + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ + +#include "rdp_ih.h" + + +/******************************************************************************/ +/* */ +/* Types and values definitions */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* Error codes returned by IH driver APIs */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_NO_ERROR , + DRV_IH_ERROR_INVALID_INDEX , + DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS , + DRV_IH_ERROR_INVALID_INGRESS_QUEUE , + DRV_IH_ERROR_INVALID_INGRESS_QUEUE_BASE_LOCATION , + DRV_IH_ERROR_INVALID_INGRESS_QUEUE_SIZE , + DRV_IH_ERROR_INVALID_INGRESS_QUEUE_PRIORITY , + DRV_IH_ERROR_INVALID_INGRESS_QUEUE_WEIGHT , + DRV_IH_ERROR_DESTINATION_PORT_AND_TARGET_MEMORY_MISMATCH , + DRV_IH_ERROR_INVALID_PORT , + DRV_IH_ERROR_INVALID_L3_OFFSET , + DRV_IH_ERROR_INVALID_VID , + DRV_IH_ERROR_INVALID_DSCP , + DRV_IH_ERROR_INVALID_TCI , + DRV_IH_ERROR_INVALID_TABLE_SIZE , + DRV_IH_ERROR_INVALID_MAXIMAL_SEARCH_DEPTH , + DRV_IH_ERROR_INVALID_START_OFFSET_SEATCH_KEY_PART , + DRV_IH_ERROR_INVALID_SHIFT_OFFSET_SEATCH_KEY_PART , + DRV_IH_ERROR_TABLE_IS_NOT_60_BIT_KEY , + DRV_IH_ERROR_TABLE_IS_NOT_120_BIT_KEY , + DRV_IH_ERROR_CLASS_SEARCH_AND_LUT_LOCATION_MISMATCH , + DRV_IH_ERROR_VALUE_IS_WRITE_ONLY +} +DRV_IH_ERROR ; + +/* Maximal value for maximal number of runner buffers allocated to runner */ +#define DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ( 64 ) +/* Maximal ingress queue congestion threshold. + Needed to allow threshold=65 for following scenario: maximal number of + runner buffers is 64, and we want to never reach the threshold (i.e. + IH will never stop serving the queue). */ +#define DRV_IH_MAXIMAL_INGRESS_QUEUE_CONGESTION_THRESHOLD ( DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS + 1 ) +/* Number of lookup tables */ +#define DRV_IH_NUMBER_OF_LOOKUP_TABLES ( 10 ) +/* Number of classes */ +#define DRV_IH_NUMBER_OF_CLASSES ( 16 ) +/* Number of classifiers */ +#define DRV_IH_NUMBER_OF_CLASSIFIERS ( 16 ) +/* maximal start offset for part (0 or 1) of a search key (in 4 byte resolution) */ +#define DRV_IH_MAXIMAL_START_OFFSET_SEATCH_KEY_PART ( 14 ) +/* maximal shift offset for part (0 or 1) of a search key (in 4 bit resolution) */ +#define DRV_IH_MAXIMAL_SHIFT_OFFSET_SEATCH_KEY_PART ( 15 ) +/* Number of DSCP-to-TCI tables. these tables are used for untagged IP packets */ +#define DRV_IH_NUMBER_OF_DSCP_TO_TCI_TABLES ( 2 ) +/* Number of ingress queues */ +#define DRV_IH_NUMBER_OF_INGRESS_QUEUES ( 8 ) +/* Ingress queues array size */ +#define DRV_IH_INGRESS_QUEUES_ARRAY_SIZE ( 16 ) +/* Minimal ingress queue size. */ +#define DRV_IH_MINIMAL_INGRESS_QUEUE_SIZE ( 1 ) +/* Maximal ingress queue priority. lower priority value means lower priority. */ +#define DRV_IH_MAXIMAL_INGRESS_QUEUE_PRIORITY ( 7 ) +/* Maximal ingress queue weight. lower weight value means lower weight. + Weight is relevant only for two or more queues with the same priority */ +#define DRV_IH_MAXIMAL_INGRESS_QUEUE_WEIGHT ( 15 ) +/* number of bytes in MAC address */ +#define DRV_IH_NUMBER_OF_BYTES_IN_MAC_ADDRESS ( 6 ) +/* number of DA filters with mask */ +#define DRV_IH_NUMBER_OF_DA_FILTERS_WITH_MASK ( 2 ) +/* number of DA filters (with and without mask) */ +#define DRV_IH_NUMBER_OF_DA_FILTERS ( 8 ) +/* Number of user-defined ethertypes */ +#define DRV_IH_NUMBER_OF_USER_DEFINED_ETHERTYPES ( 4 ) +/* Maximal L3 offset */ +#define DRV_IH_MAXIMAL_L3_OFFSET ( 15 ) +/* Number of user-defined IP L4 protocols */ +#define DRV_IH_NUMBER_OF_USER_DEFINED_IP_L4_PROTOCOLS ( 4 ) +/* Number of PPP Protocol Codes */ +#define DRV_IH_NUMBER_OF_PPP_PROTOCOL_CODES ( 2 ) +/* Number of VID filters */ +#define DRV_IH_NUMBER_OF_VID_FILTERS ( 12 ) +/* Maximal VID value */ +#define DRV_IH_MAXIMAL_VID_VALUE ( 4095 ) +/* Number of IP filters */ +#define DRV_IH_NUMBER_OF_IP_FILTERS ( 4 ) +/* Maximal DSCP value */ +#define DRV_IH_MAXIMAL_DSCP_VALUE ( 63 ) +/* Maximal TCI value */ +#define DRV_IH_MAXIMAL_TCI_VALUE ( 7 ) + + +/******************************************************************************/ +/* General configuration */ +/******************************************************************************/ +typedef struct +{ + /* In runner flow, IH response is sent to runner after completing writing + the runner buffer. */ + uint16_t runner_a_ih_response_address ; + + /* In runner flow, IH response is sent to runner after completing writing + the runner buffer. */ + uint16_t runner_b_ih_response_address ; + + /* In case of change of runner congestion state, IH sends Runner + Congestion report to predefined buffer with number of allocated RBs + for relevant runner. */ + uint16_t runner_a_ih_congestion_report_address ; + + /* In case of change of runner congestion state, IH sends Runner + Congestion report to predefined buffer with number of allocated RBs + for relevant runner. */ + uint16_t runner_b_ih_congestion_report_address ; + + /* Runner A IH congestion report enable */ + int32_t runner_a_ih_congestion_report_enable ; + + /* Runner B IH congestion report enable */ + int32_t runner_b_ih_congestion_report_enable ; + + /* Enable/disable LUT searches when the default direct mode of a class is + enabled. */ + int32_t lut_searches_enable_in_direct_mode ; + + /* SN stamping enable in direct mode. */ + int32_t sn_stamping_enable_in_direct_mode ; + + /* If a packet's header length is below this threshold, IH will disable + Parsing & Look-up processing, however the RIB will be assigned + and + stamped with SN. */ + uint8_t header_length_minimum ; + + /* When this field is set to true, IH will ignore the runner congestion + state, and discard packets only when there are no available RIBs. */ + int32_t congestion_discard_disable ; + + /* If true, IH will go to CAM (if CAM is enabled) upon encountering an + invalid LUT entry. If false, IH will stop the search. */ + int32_t cam_search_enable_upon_invalid_lut_entry ; +} +DRV_IH_GENERAL_CONFIG ; + + +/******************************************************************************/ +/* Packet header offsets */ +/******************************************************************************/ +typedef struct +{ + /* Eth0 packet header offset */ + uint8_t eth0_packet_header_offset ; + + /* Eth1 packet header offset */ + uint8_t eth1_packet_header_offset ; + + /* Eth2 packet header offset */ + uint8_t eth2_packet_header_offset ; + + /* Eth3 packet header offset */ + uint8_t eth3_packet_header_offset ; + + /* Eth4 packet header offset */ + uint8_t eth4_packet_header_offset ; + + /* GPON packet header offset */ + uint8_t gpon_packet_header_offset ; + + /* Runner A packet header offset */ + uint8_t runner_a_packet_header_offset ; + + /* Runner B packet header offset */ + uint8_t runner_b_packet_header_offset ; +} +DRV_IH_PACKET_HEADER_OFFSETS ; + + +/******************************************************************************/ +/* Runner maximal number of buffers */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_16 , + DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_24 , + DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_32 , + DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_48 , + DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_64 +} +DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ; + + +/******************************************************************************/ +/* Runner Buffers Configuration */ +/******************************************************************************/ +typedef struct +{ + /* Runner A IH managed RB base address */ + uint16_t runner_a_ih_managed_rb_base_address ; + + /* Runner B IH managed RB base address */ + uint16_t runner_b_ih_managed_rb_base_address ; + + /* Runner A runner managed RB base address */ + uint16_t runner_a_runner_managed_rb_base_address ; + + /* Runner B runner managed RB base address */ + uint16_t runner_b_runner_managed_rb_base_address ; + + /* Runner A maximal number of buffers */ + DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS runner_a_maximal_number_of_buffers ; + + /* Runner B maximal number of buffers */ + DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS runner_b_maximal_number_of_buffers ; +} +DRV_IH_RUNNER_BUFFERS_CONFIG ; + + +/******************************************************************************/ +/* Runners Load Thresholds */ +/******************************************************************************/ +typedef struct +{ + /* Threshold for dropping low priority packets */ + uint8_t runner_a_high_congestion_threshold ; + + /* Threshold for dropping low priority packets */ + uint8_t runner_b_high_congestion_threshold ; + + /* Threshold for dropping low & high priority packets */ + uint8_t runner_a_exclusive_congestion_threshold ; + + /* Threshold for dropping low & high priority packets */ + uint8_t runner_b_exclusive_congestion_threshold ; + + /* Threshold for turning-on load balancing */ + uint8_t runner_a_load_balancing_threshold ; + + /* Threshold for turning-on load balancing */ + uint8_t runner_b_load_balancing_threshold ; + + /* Threshold for turning-off load balancing */ + uint8_t runner_a_load_balancing_hysteresis ; + + /* Threshold for turning-off load balancing */ + uint8_t runner_b_load_balancing_hysteresis ; +} +DRV_IH_RUNNERS_LOAD_THRESHOLDS ; + + +/******************************************************************************/ +/* Route Addresses */ +/******************************************************************************/ +typedef struct +{ + /* Eth0 route address */ + uint8_t eth0_route_address ; + + /* Eth1 route address */ + uint8_t eth1_route_address ; + + /* Eth2 route address */ + uint8_t eth2_route_address ; + + /* Eth3 route address */ + uint8_t eth3_route_address ; + + /* Eth4 route address */ + uint8_t eth4_route_address ; + + /* GPON route address */ + uint8_t gpon_route_address ; + + /* Runner A route address */ + uint8_t runner_a_route_address ; + + /* Runner B route address */ + uint8_t runner_b_route_address ; +} +DRV_IH_ROUTE_ADDRESSES ; + + +/******************************************************************************/ +/* Parsing layer depth */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_PARSING_LAYER_DEPTH_VLAN , + DRV_IH_PARSING_LAYER_DEPTH_LAYER2 , + DRV_IH_PARSING_LAYER_DEPTH_LAYER3 , + DRV_IH_PARSING_LAYER_DEPTH_LAYER4 +} +DRV_IH_PARSING_LAYER_DEPTH ; + + +/******************************************************************************/ +/* Proprietary tag size */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_PROPRIETARY_TAG_SIZE_0 = 0 , + DRV_IH_PROPRIETARY_TAG_SIZE_4 = 4 , + DRV_IH_PROPRIETARY_TAG_SIZE_6 = 6 , + DRV_IH_PROPRIETARY_TAG_SIZE_8 = 8 +} +DRV_IH_PROPRIETARY_TAG_SIZE ; + + +/******************************************************************************/ +/* Logical Port Configuration */ +/******************************************************************************/ +typedef struct +{ + /* Parsing layer depth */ + DRV_IH_PARSING_LAYER_DEPTH parsing_layer_depth ; + + /* Proprietary tag size */ + DRV_IH_PROPRIETARY_TAG_SIZE proprietary_tag_size ; +} +DRV_IH_LOGICAL_PORT_CONFIG ; + + +/******************************************************************************/ +/* Logical Ports Configuration */ +/******************************************************************************/ +typedef struct +{ + /* Eth0 configuration */ + DRV_IH_LOGICAL_PORT_CONFIG eth0_config ; + + /* Eth1 configuration */ + DRV_IH_LOGICAL_PORT_CONFIG eth1_config ; + + /* Eth2 configuration */ + DRV_IH_LOGICAL_PORT_CONFIG eth2_config ; + + /* Eth3 configuration */ + DRV_IH_LOGICAL_PORT_CONFIG eth3_config ; + + /* Eth4 configuration */ + DRV_IH_LOGICAL_PORT_CONFIG eth4_config ; + + /* GPON configuration */ + DRV_IH_LOGICAL_PORT_CONFIG gpon_config ; + + /* Runner A configuration */ + DRV_IH_LOGICAL_PORT_CONFIG runner_a_config ; + + /* Runner B configuration */ + DRV_IH_LOGICAL_PORT_CONFIG runner_b_config ; + + /* PCIE0 configuration */ + DRV_IH_LOGICAL_PORT_CONFIG pcie0_config ; + + /* PCIE1 configuration */ + DRV_IH_LOGICAL_PORT_CONFIG pcie1_config ; +} +DRV_IH_LOGICAL_PORTS_CONFIG ; + + + + +/******************************************************************************/ +/* Lookup table size */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_LOOKUP_TABLE_SIZE_32_ENTRIES , + DRV_IH_LOOKUP_TABLE_SIZE_64_ENTRIES , + DRV_IH_LOOKUP_TABLE_SIZE_128_ENTRIES , + DRV_IH_LOOKUP_TABLE_SIZE_256_ENTRIES , + DRV_IH_LOOKUP_TABLE_SIZE_512_ENTRIES , + DRV_IH_LOOKUP_TABLE_SIZE_1024_ENTRIES , + DRV_IH_LOOKUP_TABLE_SIZE_2048_ENTRIES , + DRV_IH_LOOKUP_TABLE_SIZE_4096_ENTRIES +} +DRV_IH_LOOKUP_TABLE_SIZE ; + + +/******************************************************************************/ +/* Lookup table hash type */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_LOOKUP_TABLE_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS , + DRV_IH_LOOKUP_TABLE_HASH_TYPE_CRC16 +} +DRV_IH_LOOKUP_TABLE_HASH_TYPE ; + + + +/******************************************************************************/ +/* Lookup table maximal search depth */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_1_STEP , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_2_STEPS , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_4_STEPS , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_8_STEPS , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_16_STEPS , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_32_STEPS , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_64_STEPS , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_128_STEPS , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_256_STEPS , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_512_STEPS , + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_1024_STEPS +} +DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH ; + + +/******************************************************************************/ +/* Lookup context table entry size */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_1_BYTE , + DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_2_BYTES , + DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_4_BYTES , + DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_INTERNAL_ENTRY +} +DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE ; + + +/******************************************************************************/ +/* Lookup key extension */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE , + DRV_IH_LOOKUP_KEY_EXTENSION_SOURCE_PORT , + DRV_IH_LOOKUP_KEY_EXTENSION_GEM_FLOW_ID , + DRV_IH_LOOKUP_KEY_EXTENSION_WAN +} +DRV_IH_LOOKUP_KEY_EXTENSION ; + + +/******************************************************************************/ +/* Lookup table 60 bit key configuration */ +/******************************************************************************/ +typedef struct +{ + /* Table base address in 8 byte resolution */ + uint16_t table_base_address_in_8_byte ; + + /* Table size */ + DRV_IH_LOOKUP_TABLE_SIZE table_size ; + + /* Maximal search depth */ + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH maximal_search_depth ; + + /* Hash type */ + DRV_IH_LOOKUP_TABLE_HASH_TYPE hash_type ; + + /* This flag invokes additional comparison of source port for "move" + indication */ + int32_t sa_search_enable ; + + /* When this flag is enabled, look-up engine will de-assert aging bit in + case of search match */ + int32_t aging_enable ; + + /* CAM enable */ + int32_t cam_enable ; + + /* CAM base address in 8 byte resolution */ + uint16_t cam_base_address_in_8_byte ; + + /* Context table base address in 8 byte resolution */ + uint16_t context_table_base_address_in_8_byte ; + + /* Context table entry size */ + DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE context_table_entry_size ; + + /* CAM context base address in 8 byte resolution */ + uint16_t cam_context_base_address_in_8_byte ; + + /* Part 0 start offset in 4 byte resolution */ + uint8_t part_0_start_offset_in_4_byte ; + + /* Part 0 shift offset in 4 bit resolution */ + uint8_t part_0_shift_offset_in_4_bit ; + + /* Part 1 start offset in 4 byte resolution */ + uint8_t part_1_start_offset_in_4_byte ; + + /* Part 1 shift offset in 4 bit resolution */ + uint8_t part_1_shift_offset_in_4_bit ; + + /* Extension option for search key (always concatenated with MS bits) */ + DRV_IH_LOOKUP_KEY_EXTENSION key_extension ; + + /* Lower 32 bits of part 0 mask */ + uint32_t part_0_mask_low ; + + /* higher 28 bits of part 0 mask */ + uint32_t part_0_mask_high ; + + /* Lower 32 bits of part 1 mask */ + uint32_t part_1_mask_low ; + + /* higher 28 bits of part 1 mask */ + uint32_t part_1_mask_high ; + + /* Global mask in 4 bit resolution (only 15 LS bits are used, 15*4=60 + bits mask) */ + uint16_t global_mask_in_4_bit ; +} +DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG ; + + +/******************************************************************************/ +/* Lookup table 120 bit key configuration */ +/******************************************************************************/ +typedef struct +{ + /* Table base address in 8 byte resolution */ + uint16_t table_base_address_in_8_byte ; + + /* Table size */ + DRV_IH_LOOKUP_TABLE_SIZE table_size ; + + /* Maximal search depth */ + DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH maximal_search_depth ; + + /* Hash type */ + DRV_IH_LOOKUP_TABLE_HASH_TYPE hash_type ; + + /* When this flag is enabled, look-up engine will de-assert aging bit in + case of search match */ + int32_t aging_enable ; + + /* CAM enable */ + int32_t cam_enable ; + + /* CAM base address in 8 byte resolution */ + uint16_t cam_base_address_in_8_byte ; + + /* Context table base address in 8 byte resolution */ + uint16_t context_table_base_address_in_8_byte ; + + /* Context table entry size */ + DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE context_table_entry_size ; + + /* CAM context base address in 8 byte resolution */ + uint16_t cam_context_base_address_in_8_byte ; + + /* Primary key part 0 start offset in 4 byte resolution */ + uint8_t primary_key_part_0_start_offset_in_4_byte ; + + /* Primary key part 0 shift offset in 4 bit resolution */ + uint8_t primary_key_part_0_shift_offset_in_4_bit ; + + /* Primary key part 1 start offset in 4 byte resolution */ + uint8_t primary_key_part_1_start_offset_in_4_byte ; + + /* Primary key part 1 shift offset in 4 bit resolution */ + uint8_t primary_key_part_1_shift_offset_in_4_bit ; + + /* Extension option for search key (always concatenated with MS bits) */ + DRV_IH_LOOKUP_KEY_EXTENSION primary_key_extension ; + + /* Lower 32 bits of part 0 mask */ + uint32_t primary_key_part_0_mask_low ; + + /* higher 28 bits of part 0 mask */ + uint32_t primary_key_part_0_mask_high ; + + /* Lower 32 bits of part 1 mask */ + uint32_t primary_key_part_1_mask_low ; + + /* higher 28 bits of part 1 mask */ + uint32_t primary_key_part_1_mask_high ; + + /* Secondary key part 0 start offset in 4 byte resolution */ + uint8_t secondary_key_part_0_start_offset_in_4_byte ; + + /* Secondary key part 0 shift offset in 4 bit resolution */ + uint8_t secondary_key_part_0_shift_offset_in_4_bit ; + + /* Secondary key part 1 start offset in 4 byte resolution */ + uint8_t secondary_key_part_1_start_offset_in_4_byte ; + + /* Secondary key part 1 shift offset in 4 bit resolution */ + uint8_t secondary_key_part_1_shift_offset_in_4_bit ; + + /* Extension option for search key (always concatenated with MS bits) */ + DRV_IH_LOOKUP_KEY_EXTENSION secondary_key_extension ; + + /* Lower 32 bits of part 0 mask */ + uint32_t secondary_key_part_0_mask_low ; + + /* higher 28 bits of part 0 mask */ + uint32_t secondary_key_part_0_mask_high ; + + /* Lower 32 bits of part 1 mask */ + uint32_t secondary_key_part_1_mask_low ; + + /* higher 28 bits of part 1 mask */ + uint32_t secondary_key_part_1_mask_high ; + + /* Global mask in 4 bit resolution (only 15 LS bits are used, 15*4=60 + bits mask) */ + uint16_t global_mask_in_4_bit ; +} +DRV_IH_LOOKUP_TABLE_120_BIT_KEY_CONFIG ; + + +/******************************************************************************/ +/* Class search */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_0 , + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_1 , + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_2 , + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_3 , + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_4 , + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_5 , + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_6 , + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_7 , + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_8 , + DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_9 , + DRV_IH_CLASS_SEARCH_DISABLED = 15 +} +DRV_IH_CLASS_SEARCH ; + + +/******************************************************************************/ +/* Operation based on class search */ +/* There are several operations which can be either diabled or based on */ +/* search 1 or based on search 3. */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED , + DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 , + DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH3 +} +DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH ; + + +/******************************************************************************/ +/* Target memory */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_TARGET_MEMORY_DDR , + DRV_IH_TARGET_MEMORY_SRAM +} +DRV_IH_TARGET_MEMORY ; + + +/******************************************************************************/ +/* Ingress QOS */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_INGRESS_QOS_LOW = 0 , + DRV_IH_INGRESS_QOS_HIGH = 1 , + DRV_IH_INGRESS_QOS_EXCLUSIVE = 3 +} +DRV_IH_INGRESS_QOS ; + + +/******************************************************************************/ +/* Runner cluster */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_RUNNER_CLUSTER_A , + DRV_IH_RUNNER_CLUSTER_B +} +DRV_IH_RUNNER_CLUSTER ; + + +/******************************************************************************/ +/* Class Configuration */ +/******************************************************************************/ +typedef struct +{ + /* Class search 1 */ + DRV_IH_CLASS_SEARCH class_search_1 ; + + /* Class search 2 */ + DRV_IH_CLASS_SEARCH class_search_2 ; + + /* Class search 3 */ + DRV_IH_CLASS_SEARCH class_search_3 ; + + /* Class search 4 */ + DRV_IH_CLASS_SEARCH class_search_4 ; + + /* Destination Port extraction. Destination Port is used when accessing target matrix. */ + DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH destination_port_extraction ; + + /* Drop on miss */ + DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH drop_on_miss ; + + /* DSCP to TCI table index. Used for untagged IP packets. */ + uint8_t dscp_to_tci_table_index ; + + /* Direct mode default */ + int32_t direct_mode_default ; + + /* Direct mode override. If true, direct-mode is taken from Target Matrix */ + int32_t direct_mode_override ; + + /* Target memory default */ + DRV_IH_TARGET_MEMORY target_memory_default ; + + /* Target memory override. If true, target memory is taken from Target + Matrix */ + int32_t target_memory_override ; + + /* Ingress QoS default */ + DRV_IH_INGRESS_QOS ingress_qos_default ; + + /* Ingress QoS override. */ + DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH ingress_qos_override ; + + /* Target Runner Default */ + DRV_IH_RUNNER_CLUSTER target_runner_default ; + + /* Target Runner override in direct mode. If enabled, no load balancing + is performed. Direct mode decision might be done based on Target + Matrix. */ + int32_t target_runner_override_in_direct_mode ; + + /* Target Runner for direct mode. If "Target Runner override in direct + mode" is enabled, this target runner is chosen instead of the default + target runner */ + DRV_IH_RUNNER_CLUSTER target_runner_for_direct_mode ; + + /* Load balancing enable. Enable: Behavior according to Preference Load + Balancing. Disable: default target runner is used. */ + int32_t load_balancing_enable ; + + /* Preference Load Balancing enable. Enable: prefer default runner. + Disable: prefer previous runner. Irrelevant if load balancing is + disabled. */ + int32_t preference_load_balancing_enable ; +} +DRV_IH_CLASS_CONFIG ; + + +/******************************************************************************/ +/* Logical port */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_LOGICAL_PORT_ETH0 = 0x0 , + DRV_IH_LOGICAL_PORT_ETH1 = 0x1 , + DRV_IH_LOGICAL_PORT_ETH2 = 0x2 , + DRV_IH_LOGICAL_PORT_ETH3 = 0x3 , + DRV_IH_LOGICAL_PORT_ETH4 = 0x4, + DRV_IH_LOGICAL_PORT_GPON = 0x5 , + DRV_IH_LOGICAL_PORT_RUNNER_A = 0x6 , + DRV_IH_LOGICAL_PORT_RUNNER_B = 0xE , + DRV_IH_LOGICAL_PORT_PCIE0 = 0x7 , + DRV_IH_LOGICAL_PORT_PCIE1 = 0x8 +} +DRV_IH_LOGICAL_PORT ; + + +/******************************************************************************/ +/* L2 protocol */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_L2_PROTOCOL_UNKNOWN = 0x0 , + DRV_IH_L2_PROTOCOL_PPPOE_DISCOVERY = 0x1 , + DRV_IH_L2_PROTOCOL_PPPOE_SESSION = 0x2 , + DRV_IH_L2_PROTOCOL_IPV4OE = 0x4 , + DRV_IH_L2_PROTOCOL_IPV6OE = 0x5 , + DRV_IH_L2_PROTOCOL_USER_DEFINED_0 = 0x8 , + DRV_IH_L2_PROTOCOL_USER_DEFINED_1 = 0x9 , + DRV_IH_L2_PROTOCOL_USER_DEFINED_2 = 0xA , + DRV_IH_L2_PROTOCOL_USER_DEFINED_3 = 0xB , + DRV_IH_L2_PROTOCOL_ARP = 0xC , + DRV_IH_L2_PROTOCOL_TYPE1588 = 0xD , + DRV_IH_L2_PROTOCOL_TYPE8021X = 0xE , + DRV_IH_L2_PROTOCOL_TYPE8011AGCFM = 0xF +} +DRV_IH_L2_PROTOCOL ; + + +/******************************************************************************/ +/* L3 protocol */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_L3_PROTOCOL_NONE , + DRV_IH_L3_PROTOCOL_IPV4 , + DRV_IH_L3_PROTOCOL_IPV6 +} +DRV_IH_L3_PROTOCOL ; + + +/******************************************************************************/ +/* L4 protocol */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_L4_PROTOCOL_NONE = 0x0 , + DRV_IH_L4_PROTOCOL_TCP = 0x1 , + DRV_IH_L4_PROTOCOL_UDP = 0x2 , + DRV_IH_L4_PROTOCOL_IGMP = 0x3 , + DRV_IH_L4_PROTOCOL_ICMP = 0x4 , + DRV_IH_L4_PROTOCOL_ICMPV6 = 0x5 , + DRV_IH_L4_PROTOCOL_ESP = 0x6 , + DRV_IH_L4_PROTOCOL_GRE = 0x7 , + DRV_IH_L4_PROTOCOL_USER_DEFINED_0 = 0x8 , + DRV_IH_L4_PROTOCOL_USER_DEFINED_1 = 0x9 , + DRV_IH_L4_PROTOCOL_USER_DEFINED_2 = 0xA , + DRV_IH_L4_PROTOCOL_USER_DEFINED_3 = 0xB , + DRV_IH_L4_PROTOCOL_IPV6 = 0xD , + DRV_IH_L4_PROTOCOL_AH = 0xE , + DRV_IH_L4_PROTOCOL_NOT_PARSED = 0XF +} +DRV_IH_L4_PROTOCOL ; + + +/******************************************************************************/ +/* Classifier configuration */ +/******************************************************************************/ +typedef struct +{ + /* L2 protocol */ + DRV_IH_L2_PROTOCOL l2_protocol ; + + /* L3 protocol */ + DRV_IH_L3_PROTOCOL l3_protocol ; + + /* L4 protocol */ + DRV_IH_L4_PROTOCOL l4_protocol ; + + /* DA filter any hit */ + int32_t da_filter_any_hit ; + + /* Matched DA filter (There are 6 DA filters) */ + uint8_t matched_da_filter ; + + /* Multicast DA indication */ + int32_t multicast_da_indication ; + + /* Broadcast DA indication */ + int32_t broadcast_da_indication ; + + /* VID filter any hit */ + int32_t vid_filter_any_hit ; + + /* Matched VID filter (There are 12 VID filters) */ + uint8_t matched_vid_filter ; + + /* IP filter any hit */ + int32_t ip_filter_any_hit ; + + /* Matched IP filter (There are 4 IP filters) */ + uint8_t matched_ip_filter ; + + /* WAN indication */ + int32_t wan_indication ; + + /* Five tuple valid */ + int32_t five_tuple_valid ; + + /* Logical source port */ + DRV_IH_LOGICAL_PORT logical_source_port ; + + /* Error */ + int32_t error ; + + /* 32 bit mask */ + uint32_t mask ; + + /* Resulting class */ + uint8_t resulting_class ; +} +DRV_IH_CLASSIFIER_CONFIG ; + + +/******************************************************************************/ +/* Source port to ingress queue mapping */ +/******************************************************************************/ +typedef struct +{ + /* Eth0 ingress queue */ + uint8_t eth0_ingress_queue ; + + /* Eth1 ingress queue */ + uint8_t eth1_ingress_queue ; + + /* Eth2 ingress queue */ + uint8_t eth2_ingress_queue ; + + /* Eth3 ingress queue */ + uint8_t eth3_ingress_queue ; + + /* Eth4 ingress queue */ + uint8_t eth4_ingress_queue ; + + /* GPON ingress queue */ + uint8_t gpon_ingress_queue ; + + /* Runner A ingress queue */ + uint8_t runner_a_ingress_queue ; + + /* Runner B ingress queue */ + uint8_t runner_b_ingress_queue ; +} +DRV_IH_SOURCE_PORT_TO_INGRESS_QUEUE_MAPPING ; + + +/******************************************************************************/ +/* Ingress queue configuration */ +/******************************************************************************/ +typedef struct +{ + /* Base location in the 16-entries ingress queue array */ + uint8_t base_location ; + + /* Size. Sum of sizes of all queues is up to 16 */ + uint8_t size ; + + /* Priority. lower value means lower priority. allowed values: 0-7 */ + uint8_t priority ; + + /* Weight. lower weight value means lower weight. Weight is relevant only + for two or more queues with the same priority. */ + uint8_t weight ; + + /* Congestion threshold. When the number of total Runner Buffers (either + Runner A or Runner B) reaches the defined threshold per queue - IH + stops serving this queue. */ + uint8_t congestion_threshold ; +} +DRV_IH_INGRESS_QUEUE_CONFIG ; + + +/******************************************************************************/ +/* Target Matrix source port */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH0 , + DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH1 , + DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH2 , + DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH3 , + DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH4 , + DRV_IH_TARGET_MATRIX_SOURCE_PORT_GPON , + DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE0 , + DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE1 , + + DRV_IH_TARGET_MATRIX_NUMBER_OF_SOURCE_PORTS +} +DRV_IH_TARGET_MATRIX_SOURCE_PORT ; + + +/******************************************************************************/ +/* Target Matrix destination port */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH0 , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH1 , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH2 , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH3 , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH4 , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_GPON , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE0 , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE1 , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_CPU , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_MULTICAST , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ALWAYS_DDR , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ALWAYS_SRAM , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT_SPARE , + + DRV_IH_TARGET_MATRIX_NUMBER_OF_DESTINATION_PORTS +} +DRV_IH_TARGET_MATRIX_DESTINATION_PORT ; + + +/******************************************************************************/ +/* Target matrix entry */ +/******************************************************************************/ +typedef struct +{ + /* target memory */ + DRV_IH_TARGET_MEMORY target_memory ; + + /* direct mode */ + int32_t direct_mode ; +} +DRV_IH_TARGET_MATRIX_ENTRY ; + + + +/******************************************************************************/ +/* Target matrix per SP configuration */ +/******************************************************************************/ +typedef struct +{ + /* an array of all entries of a certain source port. */ + DRV_IH_TARGET_MATRIX_ENTRY entry [ DRV_IH_TARGET_MATRIX_NUMBER_OF_DESTINATION_PORTS ] ; +} +DRV_IH_TARGET_MATRIX_PER_SP_CONFIG ; + + +/******************************************************************************/ +/* WAN ports configuration */ +/* value of true indicates that the corresponding port belongs to WAN */ +/******************************************************************************/ +typedef struct +{ + /* Eth0 */ + int32_t eth0 ; + + /* Eth1 */ + int32_t eth1 ; + + /* Eth2 */ + int32_t eth2 ; + + /* Eth3 */ + int32_t eth3 ; + + /* Eth4 */ + int32_t eth4 ; + + /* GPON */ + int32_t gpon ; + + /* Runner A */ + int32_t runner_a ; + + /* Runner B */ + int32_t runner_b ; + + /* PCIE0 */ + int32_t pcie0 ; + + /* PCIE1 */ + int32_t pcie1 ; +} +DRV_IH_WAN_PORTS_CONFIG ; + + +/******************************************************************************/ +/* Ethertypes for QTAG nesting */ +/* The first 2 Ethertypes indices are for the user defined Ethertypes */ +/* configured by Set Ethertypes for QTAG Identification API. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_USER_DEFIEND_0 , + DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_USER_DEFIEND_1 , + DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_8100 , + DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_88A8 , + DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_9100 , + DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_9200 , + + DRV_IH_NUMBER_OF_ETHERTYPES_FOR_QTAG_NESTING +} +DRV_IH_ETHERTYPE_FOR_QTAG_NESTING ; + + +/******************************************************************************/ +/* Critical Bits */ +/******************************************************************************/ +typedef struct +{ + int32_t iq_fifo_full ; + + int32_t iq0_fifo_full ; + + int32_t iq1_fifo_full ; + + int32_t iq2_fifo_full ; + + int32_t iq3_fifo_full ; + + int32_t iq4_fifo_full ; + + int32_t iq5_fifo_full ; + + int32_t iq6_fifo_full ; + + int32_t iq7_fifo_full ; + + int32_t lookup_1_stuck ; + + int32_t lookup_2_stuck ; + + int32_t lookup_3_stuck ; + + int32_t lookup_4_stuck ; + + int32_t look_up_packet_command_fifo_full ; + + int32_t egress_tx_data_fifo_full ; + + int32_t egress_tx_message_fifo_full ; + + int32_t egress_queue_packet_command_fifo_full ; +} +DRV_IH_CRITICAL_BITS ; + + +/******************************************************************************/ +/* Parser Configuration */ +/******************************************************************************/ +typedef struct +{ + /* Defines which TCP flags set will cause TCP_FLAG bit in summary word to + be set */ + uint8_t tcp_flags ; + + /* 4-bits mask which defines which status bits will cause exception bit + in summary word to be set. The cause vector is {IP fragment, IP + version error, IP checksum error, IP header length error}. */ + uint8_t exception_status_bits ; + + /* when this flag is set, PPP with code 1 is identified as IPV6 (instead of IPV4) */ + int32_t ppp_code_1_ipv6 ; + + /* 3-bits mask which defines which IPV6 extension headers types will cause + 'IPV6 extension header' indication in the summary word. the bits order is: + {Destination Options (MSB), Routing Header, Hop-by-Hop Options (LSB)} */ + uint8_t ipv6_extension_header_bitmask ; + + /* SNAP user defined organization Code. 24 bit value. This is a + user-defined code which is used in addition to RFC1042 and 802.1Q (in + case they are enalbed). */ + uint32_t snap_user_defined_organization_code ; + + /* SNAP RFC1042 encapsulation enable. */ + int32_t snap_rfc1042_encapsulation_enable ; + + /* SNAP 802.1Q encapsulation enable. */ + int32_t snap_802_1q_encapsulation_enable ; + + /* GRE protocol. Used for VPN. 16 bit value which is compared to "Protocol + type" field of the GRE header. */ + uint16_t gre_protocol ; + + uint32_t eng_cfg; +} +DRV_IH_PARSER_CONFIG ; + + +/******************************************************************************/ +/* IP Filter Selection */ +/* The enumeration values are compatible with the values used by the HW. */ +/******************************************************************************/ +typedef enum +{ + DRV_IH_IP_FILTER_SELECTION_SOURCE_IP , + DRV_IH_IP_FILTER_SELECTION_DESTINATION_IP +} +DRV_IH_IP_FILTER_SELECTION ; + + + +/******************************************************************************/ +/* */ +/* Functions prototypes */ +/* */ +/******************************************************************************/ + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_general_configuration */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set general configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets general configuration of the IH block. */ +/* */ +/* Input: */ +/* */ +/* xi_ih_general_config - IH general configuration. */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_general_configuration ( const DRV_IH_GENERAL_CONFIG * xi_ih_general_config ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_packet_header_offsets */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set packet header offsets */ +/* */ +/* Abstract: */ +/* */ +/* This function sets packet header offset for each physical port. */ +/* */ +/* Input: */ +/* */ +/* xi_packet_header_offsets - Packet header offsets */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_packet_header_offsets ( const DRV_IH_PACKET_HEADER_OFFSETS * xi_packet_header_offsets ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_runner_buffers_configuration */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Runner Buffers configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets runner-buffers related configuration, for each */ +/* runner. */ +/* */ +/* Input: */ +/* */ +/* xi_runner_buffers_config - Runner Buffers Configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_runner_buffers_configuration ( const DRV_IH_RUNNER_BUFFERS_CONFIG * xi_runner_buffers_config ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_runners_load_thresholds */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Runners Load Thresholds */ +/* */ +/* Abstract: */ +/* */ +/* This function sets thresholds related to runner load, for each runner. */ +/* The thresholds are in number of occupied Runner Buffers. */ +/* */ +/* Input: */ +/* */ +/* xi_runners_load_thresholds - Runners Load Thresholds (in number of */ +/* occupied Runner Buffers) */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_runners_load_thresholds ( const DRV_IH_RUNNERS_LOAD_THRESHOLDS * xi_runners_load_thresholds ) ; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_route_addresses */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Route Addresses */ +/* */ +/* Abstract: */ +/* */ +/* This function sets route address for each physical port. The route */ +/* address is used for broad-bus access for sending responses, message and */ +/* data. */ +/* */ +/* Input: */ +/* */ +/* xi_route_addresses - Route Addresses */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_route_addresses ( const DRV_IH_ROUTE_ADDRESSES * xi_route_addresses ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_logical_ports_configuration */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Logical Ports Configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function sets configuration of the following logical ports: */ +/* Ethernet 0-4, GPON, Runner A, Runner B and PCIE 0-1. The following */ +/* parameters are configured per port: Parsing layer depth, Proprietary tag */ +/* size. */ +/* */ +/* Input: */ +/* */ +/* xi_logical_ports_config - Logical Ports Configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_logical_ports_configuration ( const DRV_IH_LOGICAL_PORTS_CONFIG * xi_logical_ports_config ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_lut_60_bit_key */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure Lookup Table 60 bit key */ +/* */ +/* Abstract: */ +/* */ +/* This function configures a lookup table with 60-bit key. There is a */ +/* total of 10 tables. Note that when configuring a lookup table with */ +/* 120-bit key (with dedicated API), it occupies 2 tables. The lookup key */ +/* is obtained by ORing two 60-bit parts taken from the parser result. Each */ +/* part has a configurable offset, and optionally a shift & rotate */ +/* operation. Initially 64 bits are taken from the configured offset, then */ +/* shift & rotate is optionally done, then the 4 MS-bits are omitted. Then */ +/* each part is masked with its own mask. Then ORing the left 60 bits of */ +/* the 2 parts yields the key. Then a key-extension can optionally be done, */ +/* i.e. ORing the MS-bits of the key with one of the following values: (1) */ +/* 5-bit Source Port from Header Descriptor. (2) 8-bit GEM Flow ID from */ +/* Header Descriptor. (3) 1-bit WAN/LAN indication extracted from */ +/* configuration of the source port. The global mask is applied on both key */ +/* & LUT entry when comparing between them. Move indication: When "Source */ +/* port search enable" parameter is enabled, additional comparison will be */ +/* done, between source-port (from Header descriptor) and bits 56:52 of LUT */ +/* entry, where source-port value should reside. In this case, the global */ +/* mask must mask these bits for the regular comparison between the key and */ +/* LUT entry, which would be a MAC address comparison. If both comparisons */ +/* match, the result would be "hit". If only MAC address comparison */ +/* matches, the result would be "move". */ +/* */ +/* Input: */ +/* */ +/* xi_table_index - Table index */ +/* */ +/* xi_lookup_table_60_bit_key_config - Lookup table 60 bit key */ +/* configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_lut_60_bit_key ( uint8_t xi_table_index , + const DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG * xi_lookup_table_60_bit_key_config ) ; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_class */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure Class */ +/* */ +/* Abstract: */ +/* */ +/* This function configures an IH class. Ingress handler class is type of */ +/* ingress traffic, e.g. IPTV, bridged, routed. Each class includes */ +/* predefined set of settings, such as: target runner, destination memory, */ +/* QoS, definition of look-up searches. There are up to 16 classes. Each */ +/* physical port has a default class (For GPON port, default class is per */ +/* GEM flow). IH may override the default class according to */ +/* enable-override configuration and to classification based on reduced */ +/* Parser results, called "Classifier Key Word" (Parser Summary Word plus */ +/* source port). Default classes and override-enable configurations are in */ +/* BBH. In runner flow, runner assigns an initial class (which can be */ +/* overridden by IH). Class override is done using classifiers, which are */ +/* configured using Configure Classifier API. */ +/* */ +/* Input: */ +/* */ +/* xi_class_index - Class index */ +/* */ +/* xi_class_config - Class Configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_class ( uint8_t xi_class_index , + const DRV_IH_CLASS_CONFIG * xi_class_config ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_classifier_configuration */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get Classifier configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function gets the configuration of a Classifier. */ +/* */ +/* Input: */ +/* */ +/* xi_classifier_index - Classifier index */ +/* */ +/* Output: */ +/* */ +/* xo_classifier_config - Classifier configuration */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_classifier_configuration ( uint8_t xi_classifier_index , + DRV_IH_CLASSIFIER_CONFIG * const xo_classifier_config ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_remove_classifier */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Remove Classifier */ +/* */ +/* Abstract: */ +/* */ +/* This function removes a classifier which was configured by Configure */ +/* Classifier API. There is no "enable" bit - this function actually sets */ +/* the mask to 0 and the key to 11...1 (bitwise) so there will never be a */ +/* match. */ +/* */ +/* Input: */ +/* */ +/* xi_classifier_index - Classifier index */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_remove_classifier ( uint8_t xi_classifier_index ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_source_port_to_ingress_queue_mapping */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set source port to ingress queue mapping */ +/* */ +/* Abstract: */ +/* */ +/* This function sets the mapping of physical source ports (eth0-4, GPON, */ +/* runner A, runner B) to ingress queues. There are 8 ingress queues. BBH */ +/* or runner (in case of runner flow) writes the Header Descriptor to one */ +/* of these queues, according to the configuration of the source port. */ +/* */ +/* Input: */ +/* */ +/* xi_source_port_to_ingress_queue_mapping - Source port to ingress queue */ +/* mapping */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_source_port_to_ingress_queue_mapping ( const DRV_IH_SOURCE_PORT_TO_INGRESS_QUEUE_MAPPING * xi_source_port_to_ingress_queue_mapping ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_ingress_queue */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure ingress queue */ +/* */ +/* Abstract: */ +/* */ +/* This function configures an ingress queue. There are 8 queues. All of */ +/* them reside in the same Ingress-queue (IQ) array of 16 entries (ingress */ +/* buffers). E.g. queue 0 occupies entries 0-1, queue 1 occupies entries */ +/* 2-3, etc. */ +/* */ +/* Input: */ +/* */ +/* xi_ingress_queue_index - Ingress queue index */ +/* */ +/* xi_ingress_queue_config - Ingress queue configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_ingress_queue ( uint8_t xi_ingress_queue_index , + const DRV_IH_INGRESS_QUEUE_CONFIG * xi_ingress_queue_config ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_target_matrix */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Target Matrix */ +/* */ +/* Abstract: */ +/* */ +/* This function sets the per-source-port configuration in the target */ +/* matrix, i.e. all entries which belong to the given source port. */ +/* Each entry consists of the following parameters: target memory */ +/* (DDR/SRAM), direct mode (true/false). */ +/* The function will fail when trying to configure an "Always DDR" entry */ +/* with Target memory = SRAM, or "Always SRAM" entry with */ +/* Target memory = DDR. */ +/* */ +/* Input: */ +/* */ +/* xi_source_port - Source port */ +/* */ +/* xi_per_sp_config - Per-source-port configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_target_matrix ( DRV_IH_TARGET_MATRIX_SOURCE_PORT xi_source_port , + const DRV_IH_TARGET_MATRIX_PER_SP_CONFIG * xi_per_sp_config ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_forward */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Target Forward */ +/* */ +/* Abstract: */ +/* */ +/* This function sets the "forward-enable" bit for the given source */ +/* port and destination port. */ +/* The "forward-enable" is only indication to FW (IH doesn't drop if */ +/* forwarding is disabled). */ +/* */ +/* Input: */ +/* */ +/* xi_source_port - Source port */ +/* */ +/* xi_destination_port - Destination port */ +/* */ +/* xi_forward - Forward */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_forward ( DRV_IH_TARGET_MATRIX_SOURCE_PORT xi_source_port , + DRV_IH_TARGET_MATRIX_DESTINATION_PORT xi_destination_port , + int32_t xi_forward ) ; + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_wan_ports */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure WAN ports */ +/* */ +/* Abstract: */ +/* */ +/* This function configures, for each logical port, whether it belongs to */ +/* WAN traffic. IH uses this configuration for WAN indication in the parser */ +/* result (and Classifier Key Word). */ +/* */ +/* Input: */ +/* */ +/* xi_wan_ports_config - WAN ports configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_wan_ports ( const DRV_IH_WAN_PORTS_CONFIG * xi_wan_ports_config ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_allocated_runner_buffers_counters */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get allocated runner buffers counters */ +/* */ +/* Abstract: */ +/* */ +/* This function returns the current number of allocated Runner Buffers of */ +/* each runner. */ +/* */ +/* Input: */ +/* */ +/* Output: */ +/* */ +/* xo_runner_a_counter - Runner A counter */ +/* */ +/* xo_runner_b_counter - Runner B counter */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_allocated_runner_buffers_counters ( uint32_t * const xo_runner_a_counter , + uint32_t * const xo_runner_b_counter ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_critical_bits */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get Critical Bits */ +/* */ +/* Abstract: */ +/* */ +/* This function returns the status of the critical bits (debug */ +/* indications). */ +/* */ +/* Input: */ +/* */ +/* Output: */ +/* */ +/* xo_critical_bits - Critical Bits */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_critical_bits ( DRV_IH_CRITICAL_BITS * const xo_critical_bits ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_parser */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure Parser */ +/* */ +/* Abstract: */ +/* */ +/* This function configures general parameters in the parser accelerator in */ +/* IH. */ +/* */ +/* Input: */ +/* */ +/* xi_parser_config - Parser Configuration */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_parser ( const DRV_IH_PARSER_CONFIG * xi_parser_config ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_da_filter_enable_status */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get DA filter enable status */ +/* */ +/* Abstract: */ +/* */ +/* This function gets the enable status of a DA filter. */ +/* */ +/* Input: */ +/* */ +/* xi_filter_index - Filter index */ +/* */ +/* Output: */ +/* */ +/* xo_enable - Enable */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_da_filter_enable_status ( uint8_t xi_filter_index , + int32_t * const xo_enable ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_ethertypes_for_qtag_identification */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set Ethertypes for QTAG identification */ +/* */ +/* Abstract: */ +/* */ +/* This function sets two user-defined Ethertypes for QTAG (VLAN tag) */ +/* identification. */ +/* */ +/* Input: */ +/* */ +/* xi_ethertype_0 - Ethertype 0 */ +/* */ +/* xi_ethertype_1 - Ethertype 1 */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_ethertypes_for_qtag_identification ( uint16_t xi_ethertype_0 , + uint16_t xi_ethertype_1 ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_ethertypes_for_qtag_identification */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get Ethertypes for QTAG identification */ +/* */ +/* Abstract: */ +/* */ +/* This function gets the two user-defined Ethertypes for QTAG (VLAN tag) */ +/* identification */ +/* */ +/* Input: */ +/* */ +/* Output: */ +/* */ +/* xo_ethertype_0 - Ethertype 0 */ +/* */ +/* xo_ethertype_1 - Ethertype 1 */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_ethertypes_for_qtag_identification ( uint16_t * const xo_ethertype_0 , + uint16_t * const xo_ethertype_1 ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_qtag_nesting */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure QTAG Nesting */ +/* */ +/* Abstract: */ +/* */ +/* This function configures, for 6 possible Ethertypes, whether each */ +/* Ethertype can be used for QTAG identification, as inner and as outer */ +/* tag. Note that when packet has a single tag, parser treats it as outer */ +/* tag. */ +/* */ +/* Input: */ +/* */ +/* xi_ethertype_index - Ethertype index */ +/* */ +/* xi_use_as_outer - Use as outer */ +/* */ +/* xi_use_as_inner - Use as inner */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_qtag_nesting ( DRV_IH_ETHERTYPE_FOR_QTAG_NESTING xi_ethertype_index , + int32_t xi_use_as_outer , + int32_t xi_use_as_inner ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_qtag_nesting_configuration */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get QTAG Nesting configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function gets the QTAG Nesting configuration of an Ethertype. */ +/* */ +/* Input: */ +/* */ +/* xi_ethertype_index - Ethertype index */ +/* */ +/* Output: */ +/* */ +/* xo_use_as_outer - Use as outer */ +/* */ +/* xo_use_as_inner - Use as inner */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_qtag_nesting_configuration ( DRV_IH_ETHERTYPE_FOR_QTAG_NESTING xi_ethertype_index , + int32_t * const xo_use_as_outer , + int32_t * const xo_use_as_inner ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_user_ethertype */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure User Ethertype */ +/* */ +/* Abstract: */ +/* */ +/* This function configures user defined Ethertype, to be indicated in "L2 */ +/* Protocol" field in parser result. There are up to 4 user defined */ +/* Ethertypes. For such an Ethertype, the API configures which L3 protocol */ +/* comes after it, and its offset (for L3 parsing). In order to take */ +/* effect, the user Ethertype should be enabled using Enable User Ethertype */ +/* API. */ +/* */ +/* Input: */ +/* */ +/* xi_ethertype_index - Ethertype index */ +/* */ +/* xi_ethertype_value - Ethertype value */ +/* */ +/* xi_l3_protocol - L3 protocol */ +/* */ +/* xi_l3_offset - L3 offset */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_user_ethertype ( uint8_t xi_ethertype_index , + uint16_t xi_ethertype_value , + DRV_IH_L3_PROTOCOL xi_l3_protocol , + uint8_t xi_l3_offset ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_user_ethertype_configuration */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get User Ethertype configuration */ +/* */ +/* Abstract: */ +/* */ +/* This function gets user defined Ethertype configuration. */ +/* */ +/* Input: */ +/* */ +/* xi_ethertype_index - Ethertype index */ +/* */ +/* Output: */ +/* */ +/* xo_ethertype_value - Ethertype value */ +/* */ +/* xo_l3_protocol - L3 protocol */ +/* */ +/* xo_l3_offset - L3 offset */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_user_ethertype_configuration ( uint8_t xi_ethertype_index , + uint16_t * const xo_ethertype_value , + DRV_IH_L3_PROTOCOL * const xo_l3_protocol , + uint8_t * const xo_l3_offset ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_enable_user_ethertype */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Enable User Ethertype */ +/* */ +/* Abstract: */ +/* */ +/* This function enables/disables a user-defined Ethertype which was */ +/* configured by Configure User Ethertype API. */ +/* */ +/* Input: */ +/* */ +/* xi_ethertype_index - Ethertype index */ +/* */ +/* xi_enable - Enable */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_enable_user_ethertype ( uint8_t xi_ethertype_index , + int32_t xi_enable ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_user_ethertype_enable_status */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get User Ethertype enable status */ +/* */ +/* Abstract: */ +/* */ +/* This function gets the enable status of a user-defined Ethertype. */ +/* */ +/* Input: */ +/* */ +/* xi_ethertype_index - Ethertype index */ +/* */ +/* Output: */ +/* */ +/* xo_enable - Enable */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_user_ethertype_enable_status ( uint8_t xi_ethertype_index , + int32_t * const xo_enable ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_user_ip_l4_protocol */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set user IP L4 protocol */ +/* */ +/* Abstract: */ +/* */ +/* This function sets a user-defined L4 Protocol ID to be matched to */ +/* Protocol field in IP header and to be indicated in the output summary */ +/* word. There are up to 4 user-defined L4 protocols. */ +/* */ +/* Input: */ +/* */ +/* xi_l4_protocol_index - L4 protocol index */ +/* */ +/* xi_l4_protocol_value - L4 protocol value */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_user_ip_l4_protocol ( uint8_t xi_l4_protocol_index , + uint8_t xi_l4_protocol_value ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_user_ip_l4_protocol */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get user IP L4 protocol */ +/* */ +/* Abstract: */ +/* */ +/* This function gets a user-defined L4 Protocol. */ +/* */ +/* Input: */ +/* */ +/* xi_l4_protocol_index - L4 protocol index */ +/* */ +/* Output: */ +/* */ +/* xo_l4_protocol_value - L4 protocol value */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_user_ip_l4_protocol ( uint8_t xi_l4_protocol_index , + uint8_t * const xo_l4_protocol_value ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_ppp_code */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set PPP code */ +/* */ +/* Abstract: */ +/* */ +/* This function sets PPP Protocol Code to indicate L3 is IP. */ +/* */ +/* Input: */ +/* */ +/* xi_ppp_code_index - PPP code index */ +/* */ +/* xi_ppp_code - PPP code */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_ppp_code ( uint8_t xi_ppp_code_index , + uint16_t xi_ppp_code ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_ppp_code */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get PPP code */ +/* */ +/* Abstract: */ +/* */ +/* This function gets PPP Protocol Code. */ +/* */ +/* Input: */ +/* */ +/* xi_ppp_code_index - PPP code index */ +/* */ +/* Output: */ +/* */ +/* xo_ppp_code - PPP code */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_ppp_code ( uint8_t xi_ppp_code_index , + uint16_t * const xo_ppp_code ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_vid_filter */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set VID filter */ +/* */ +/* Abstract: */ +/* */ +/* This function sets a VID filter. There are up to 12 VID filters. The */ +/* filter has to be enabled by Enable VID filter API in order to take */ +/* effect. */ +/* */ +/* Input: */ +/* */ +/* xi_filter_index - Filter index */ +/* */ +/* xi_vid - VID */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_vid_filter ( uint8_t xi_filter_index , + uint16_t xi_vid ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_vid_filter */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get VID filter */ +/* */ +/* Abstract: */ +/* */ +/* This function gets a VID filter. There are up to 12 VID filters. */ +/* */ +/* Input: */ +/* */ +/* xi_filter_index - Filter index */ +/* */ +/* Output: */ +/* */ +/* xo_vid - VID */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_vid_filter ( uint8_t xi_filter_index , + uint16_t * const xo_vid ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_enable_vid_filter */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Enable VID filter */ +/* */ +/* Abstract: */ +/* */ +/* This function enables/disables a VID filter. There are up to 12 VID */ +/* filters. Before enabling a filter, it should be configured by Set VID */ +/* filter API. */ +/* */ +/* Input: */ +/* */ +/* xi_filter_index - Filter index */ +/* */ +/* xi_enable - Enable */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_enable_vid_filter ( uint8_t xi_filter_index , + int32_t xi_enable ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_vid_filter_enable_status */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get VID filter enable status */ +/* */ +/* Abstract: */ +/* */ +/* This function gets the enable status of a VID filter. There are up to 12 */ +/* VID filters. */ +/* */ +/* Input: */ +/* */ +/* xi_filter_index - Filter index */ +/* */ +/* Output: */ +/* */ +/* xo_enable - Enable */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_vid_filter_enable_status ( uint8_t xi_filter_index , + int32_t * const xo_enable ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_ip_filter */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set IP filter */ +/* */ +/* Abstract: */ +/* */ +/* This function sets an IP filter. There are up to 4 IP filters. The */ +/* filter has to be enabled by Enable IP filter API in order to take */ +/* effect. */ +/* */ +/* Input: */ +/* */ +/* xi_filter_index - Filter index */ +/* */ +/* xi_ip_address - IP address */ +/* */ +/* xi_ip_address_mask - IP address mask */ +/* */ +/* xi_selection - selection (SIP/DIP) */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_ip_filter ( uint8_t xi_filter_index , + uint32_t xi_ip_address , + uint32_t xi_ip_address_mask , + DRV_IH_IP_FILTER_SELECTION xi_selection ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_ip_filter */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get IP filter */ +/* */ +/* Abstract: */ +/* */ +/* This function gets an IP filter. There are up to 4 IP filters. */ +/* */ +/* Input: */ +/* */ +/* xi_filter_index - Filter index */ +/* */ +/* Output: */ +/* */ +/* xo_ip_address - IP address */ +/* */ +/* xo_ip_address_mask - IP address mask */ +/* */ +/* xo_selection - selection (SIP/DIP) */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_ip_filter ( uint8_t xi_filter_index , + uint32_t * const xo_ip_address , + uint32_t * const xo_ip_address_mask , + DRV_IH_IP_FILTER_SELECTION * const xo_selection ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_enable_ip_filter */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Enable IP filter */ +/* */ +/* Abstract: */ +/* */ +/* This function enables/disables an IP filter. There are up to 4 IP */ +/* filters. Before enabling a filter, it should be configured by Set IP */ +/* filter API. */ +/* */ +/* Input: */ +/* */ +/* xi_filter_index - Filter index */ +/* */ +/* xi_enable - Enable */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_enable_ip_filter ( uint8_t xi_filter_index , + int32_t xi_enable ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_ip_filter_enable_status */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get IP filter enable status */ +/* */ +/* Abstract: */ +/* */ +/* This function gets the enable status of an IP filter. There are up to 4 */ +/* IP filters. */ +/* */ +/* Input: */ +/* */ +/* xi_filter_index - Filter index */ +/* */ +/* Output: */ +/* */ +/* xo_enable - Enable */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_ip_filter_enable_status ( uint8_t xi_filter_index , + int32_t * const xo_enable ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_dscp_to_tci_table_entry */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set DSCP to TCI table entry */ +/* */ +/* Abstract: */ +/* */ +/* This function sets an entry in a DSCP to TCI table. There are 2 such */ +/* tables. Each class is configured with one of these tables. The table has */ +/* to be enabled by Enable DSCP to TCI table API in order to take effect. */ +/* If a class is configured with a table which is not enabled, the TCI will */ +/* be 0. */ +/* */ +/* Input: */ +/* */ +/* xi_table_index - Table index */ +/* */ +/* xi_dscp - DSCP */ +/* */ +/* xi_tci - TCI */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_dscp_to_tci_table_entry ( uint8_t xi_table_index , + uint8_t xi_dscp , + uint8_t xi_tci ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_dscp_to_tci_table_entry */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get DSCP to TCI table entry */ +/* */ +/* Abstract: */ +/* */ +/* This function gets an entry in a DSCP to TCI table. There are 2 such */ +/* tables. */ +/* */ +/* Input: */ +/* */ +/* xi_table_index - Table index */ +/* */ +/* xi_dscp - DSCP */ +/* */ +/* Output: */ +/* */ +/* xo_tci - TCI */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_dscp_to_tci_table_entry ( uint8_t xi_table_index , + uint8_t xi_dscp , + uint8_t * const xo_tci ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_set_default_tci */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Set default TCI */ +/* */ +/* Abstract: */ +/* */ +/* This function sets default TCI, per DSCP to TCI table. The default is */ +/* used in case of non-IP untagged packet. The default TCI will take effect */ +/* only after enabling the DSCP to TCI table, by Enable DSCP to TCI table */ +/* API. If a class is configured with a table which is not enabled, the TCI */ +/* will be 0. */ +/* */ +/* Input: */ +/* */ +/* xi_table_index - Table index */ +/* */ +/* xi_default_tci - Default TCI */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_set_default_tci ( uint8_t xi_table_index , + uint8_t xi_default_tci ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_default_tci */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get default TCI */ +/* */ +/* Abstract: */ +/* */ +/* This function gets the default TCI, per DSCP to TCI table. */ +/* */ +/* Input: */ +/* */ +/* xi_table_index - Table index */ +/* */ +/* Output: */ +/* */ +/* xo_default_tci - Default TCI */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_default_tci ( uint8_t xi_table_index , + uint8_t * const xo_default_tci ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_enable_dscp_to_tci_table */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Enable DSCP to TCI table */ +/* */ +/* Abstract: */ +/* */ +/* This function enables/disables a DSCP to TCI table. There are 2 such */ +/* tables. Each class is configured with one of these tables. Before */ +/* enabling a table, it should be configured by Set DSCP to TCI table API */ +/* and Set default TCI API. */ +/* */ +/* Input: */ +/* */ +/* xi_table_index - Table index */ +/* */ +/* xi_enable - Enable */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_enable_dscp_to_tci_table ( uint8_t xi_table_index , + int32_t xi_enable ) ; + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_get_dscp_to_tci_table_enable_status */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Get DSCP to TCI table enable status */ +/* */ +/* Abstract: */ +/* */ +/* This function gets the enable status of a DSCP to TCI table. There are 2 */ +/* such tables. */ +/* */ +/* Input: */ +/* */ +/* xi_table_index - Table index */ +/* */ +/* Output: */ +/* */ +/* xo_enable - Enable */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_get_dscp_to_tci_table_enable_status ( uint8_t xi_table_index , + int32_t * const xo_enable ) ; +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* fi_bl_drv_ih_configure_parser_core_cfg_eng_3rd_tag_detection */ +/* */ +/* Title: */ +/* */ +/* IH Driver - Configure Parser ENG register */ +/* */ +/* Abstract: */ +/* */ +/* This function configures the ENG register (bits 8-13 are for triple */ +/* tag detection) */ +/* */ +/* Input: */ +/* */ +/* xi_enable - ENG register bit value */ +/* */ +/* xi_tpid_index - ENG register internal bit index */ +/* */ +/* Output: */ +/* */ +/* DRV_IH_ERROR - Return code */ +/* DRV_IH_NO_ERROR - No error */ +/* DRV_IH_ERROR_INVALID_INDEX - Invalid index */ +/* */ +/******************************************************************************/ +DRV_IH_ERROR fi_bl_drv_ih_configure_parser_core_cfg_eng_3rd_tag_detection ( uint32_t xi_enable, + uint8_t xi_tpid_index ); + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_drv_sbpm.c b/arch/arm/mach-bcmbca/rdp/rdp_drv_sbpm.c new file mode 100755 index 0000000000..07180162ce --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_drv_sbpm.c @@ -0,0 +1,720 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the implementation of the Lilac BPM driver */ +/* */ +/******************************************************************************/ + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ + + +#include "packing.h" +#include "rdp_subsystem_common.h" +#include "rdp_drv_sbpm.h" + + +/******************************************************************************/ +/* */ +/* Default values definitions */ +/* */ +/******************************************************************************/ + +#define CS_DRV_SBPM_MAX_NUMBER_OF_BUFFERS ( 0x3FF ) +#define CS_DRV_SBPM_THRESHOLD_MASK ( 0x3FF ) +#define CS_DRV_SBPM_NULL_VALUE ( 0x3FF ) +#define CS_DRV_SBPM_UG_ALIGNMENT ( 4 ) +#define CS_DRV_SBPM_NUMBER_OF_TRIALS_ON_REQUEST ( 10 ) +#define CS_DRV_SBPM_IIR_LOW_PART_MASK ( 0x1ff ) +#define CS_DRV_SBPM_IIR_HIGH_PART_MASK ( 0xffe00 ) +#define CS_DRV_SBPM_IIR_SHIFT ( 22 ) +#define CS_DRV_SBPM_MAX_MULTICAST_VALUE ( 7 ) +#define CS_DRV_SBPM_SBPM_EXCL_MEM_GAP ( SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_ADDRESS - SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_ADDRESS ) +#define CS_DRV_SBPM_SEARCH_DEPTH ( 0x2b ) + +/* Low */ +#define CS_LOW ( 0 ) +/* High */ +#define CS_HIGH ( 1 ) + +/******************************************************************************/ +/* */ +/* Macros definitions */ +/* */ +/******************************************************************************/ + +/* gets bit #i from a given number */ +#define MS_DRV_SBPM_GET_BIT_I( number , i ) ( ( ( 1 << i ) & ( number ) ) >> i ) + +/******************************************************************************/ +/* */ +/* static function declaration */ +/* */ +/******************************************************************************/ + + +/******************************************************************************/ +/* */ +/* Init & cleanup module, license */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* API functions implementations */ +/* */ +/******************************************************************************/ + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_init */ +/* */ +/* Title: */ +/* SBPM driver - BPM initialize */ +/* */ +/* Abstruct: */ +/* This function initialize and sets general configuration of the SBPM block. */ +/* SBPM module initialization is made once in the system lifetime */ +/* */ +/* This API performs the following: */ +/* 1. Disable all SBPM source ports. */ +/* 2. Builds the free linked list using the HW accelerator. */ +/* 3. Sets SBPM configuration: */ +/* a. Global threshold. */ +/* b. User group configuration (threshold, hysteresis, exclusive */ +/* threshold/ hysteresis). */ +/* c. Sets route address of each source port. */ +/* d. Source port to user group mapping. */ +/* */ +/* Input: */ +/* xi_base_address - The start address of the BN list */ +/* xi_list_size - The number of buffers in the list */ +/* xi_global_configuration - global threshold and hysteresis (struct) */ +/* xi_user_group_configuration - user groups threshold and hysteresis (struct) */ +/* xi_replay_address - runner replay address */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* DRV_SBPM_ERROR_BUFFER_NUMBER_EXCEEDS_MAXIMUM_VALUE - */ +/* the amount of buffers exceeds the maximum value */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_init ( uint16_t xi_base_address , + uint16_t xi_list_size, + uint16_t xi_replay_address, + const DRV_SBPM_GLOBAL_CONFIGURATION * xi_global_configuration, + const DRV_SBPM_USER_GROUPS_THRESHOLDS * xi_user_group_configuration) + +{ + SBPM_BLOCK_REGS_SBPM_SP_EN sbpm_sp_enable; + SBPM_BLOCK_REGS_INIT_FREE_LIST sbpm_init; +#ifndef __UBOOT__ + DRV_SBPM_ISR default_interrupts_mask; +#endif + DRV_SBPM_ERROR error; + SBPM_BLOCK_REGS_RADDR_0 raddr0; + SBPM_BLOCK_REGS_RADDR_1 raddr1; + SBPM_BLOCK_REGS_RADDR_2 raddr2; + SBPM_BLOCK_REGS_RADDR_3 raddr3; + uint8_t ug_index; + DRV_SBPM_ERROR_HANDLING_PARAMETERS error_handling_params ; + DRV_SBPM_RUNNER_MSG_CTRL_PARAMS runner_msg_ctrl_params ; + + + /*Validate parameters*/ + if ( xi_base_address + xi_list_size > CS_DRV_SBPM_MAX_NUMBER_OF_BUFFERS ) + { + return ( DRV_SBPM_ERROR_BUFFER_NUMBER_EXCEEDS_MAXIMUM_VALUE ); + } + + + /*disable all SBPM source ports*/ + SBPM_BLOCK_REGS_SBPM_SP_EN_READ( sbpm_sp_enable ) ; + sbpm_sp_enable.rnra_sp_en = DRV_SBPM_DISABLE; + sbpm_sp_enable.rnrb_sp_en = DRV_SBPM_DISABLE; + sbpm_sp_enable.gpon_sp_en = DRV_SBPM_DISABLE; + sbpm_sp_enable.eth0_sp_en = DRV_SBPM_DISABLE; + sbpm_sp_enable.eth1_sp_en = DRV_SBPM_DISABLE; + sbpm_sp_enable.eth2_sp_en = DRV_SBPM_DISABLE; + sbpm_sp_enable.eth3_sp_en = DRV_SBPM_DISABLE; + sbpm_sp_enable.eth4_sp_en = DRV_SBPM_DISABLE; + SBPM_BLOCK_REGS_SBPM_SP_EN_WRITE( sbpm_sp_enable ) ; + + + /* Write to register init_free_list - Builds the free linked list using the HW accelerator */ + SBPM_BLOCK_REGS_INIT_FREE_LIST_READ(sbpm_init); + + sbpm_init.init_num_bn = xi_list_size; + sbpm_init.init_head_bn_addr = xi_base_address; + sbpm_init.bsy = SBPM_BLOCK_REGS_INIT_FREE_LIST_BSY_NO_REQUEST_VALUE; + sbpm_init.rdy= SBPM_BLOCK_REGS_INIT_FREE_LIST_RDY_DEFAULT_VALUE; + sbpm_init.init_en = DRV_SBPM_ENABLE; + + SBPM_BLOCK_REGS_INIT_FREE_LIST_WRITE(sbpm_init); + + /* Set BPM global configuration */ + error = fi_bl_drv_sbpm_set_global_threshold ( xi_global_configuration->threshold , xi_global_configuration->hysteresis ); + + /* Set User Group [0-7] threshold configuration*/ + for ( ug_index = 0 ; ug_index < DRV_SBPM_NUMBER_OF_USER_GROUPS ; ug_index++ ) + { + error = fi_bl_drv_sbpm_set_user_group_thresholds ( ug_index, &xi_user_group_configuration->ug_arr[ug_index] ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + } + + /* Set route address of each source port*/ + SBPM_BLOCK_REGS_RADDR_0_READ (raddr0 ); + raddr0.eth0_tx_raddr = SBPM_BLOCK_REGS_RADDR_0_ETH0_TX_RADDR_ETH0_TX_RADDR_VALUE; + raddr0.eth0_rx_raddr = SBPM_BLOCK_REGS_RADDR_0_ETH0_RX_RADDR_ETH0_RX_RADDR_VALUE; + raddr0.eth1_tx_raddr = SBPM_BLOCK_REGS_RADDR_0_ETH1_TX_RADDR_ETH1_TX_RADDR_VALUE ; + raddr0.eth1_rx_raddr = SBPM_BLOCK_REGS_RADDR_0_ETH1_RX_RADDR_ETH1_RX_RADDR_VALUE ; + SBPM_BLOCK_REGS_RADDR_0_WRITE( raddr0 ); + + SBPM_BLOCK_REGS_RADDR_1_READ (raddr1 ); + raddr1.eth2_tx_raddr = SBPM_BLOCK_REGS_RADDR_1_ETH2_TX_RADDR_ETH2_TX_RADDR_VALUE ; + raddr1.eth2_rx_raddr = SBPM_BLOCK_REGS_RADDR_1_ETH2_RX_RADDR_ETH2_RX_RADDR_VALUE ; + raddr1.eth3_tx_raddr = SBPM_BLOCK_REGS_RADDR_1_ETH3_TX_RADDR_ETH3_TX_RADDR_VALUE; + raddr1.eth3_rx_raddr = SBPM_BLOCK_REGS_RADDR_1_ETH3_RX_RADDR_ETH3_RX_ADDR_VALUE; + SBPM_BLOCK_REGS_RADDR_1_WRITE( raddr1 ); + + SBPM_BLOCK_REGS_RADDR_2_READ (raddr2 ); + raddr2.eth4_tx_raddr = SBPM_BLOCK_REGS_RADDR_2_ETH4_TX_RADDR_ETH4_TX_RADDR_VALUE ; + raddr2.eth4_rx_raddr = SBPM_BLOCK_REGS_RADDR_2_ETH4_RX_RADDR_ETH4_RX_ADDR_VALUE ; + raddr2.gpon_tx_raddr = SBPM_BLOCK_REGS_RADDR_2_GPON_TX_RADDR_GPON_TX_RADDR_VALUE; + raddr2.gpon_rx_raddr = SBPM_BLOCK_REGS_RADDR_2_GPON_RX_RADDR_GPON_RX_RADDR_VALUE; + SBPM_BLOCK_REGS_RADDR_2_WRITE( raddr2 ); + + SBPM_BLOCK_REGS_RADDR_3_READ (raddr3 ); + raddr3.mipsd_raddr = SBPM_BLOCK_REGS_RADDR_3_MIPSD_RADDR_MIPSD_RADDR_VALUE ; + raddr3.rnrb_raddr = SBPM_BLOCK_REGS_RADDR_3_RNRB_RADDR_RNRB_RADDR_VALUE ; + raddr3.rnra_raddr = SBPM_BLOCK_REGS_RADDR_3_RNRA_RADDR_RNRA_RADDR_VALUE; + SBPM_BLOCK_REGS_RADDR_3_WRITE( raddr3 ); + + /* Each Source Port is mapped to specified UG. */ + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_EMAC0 , DRV_SBPM_USER_GROUP_0 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_EMAC1 , DRV_SBPM_USER_GROUP_1 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_EMAC2 , DRV_SBPM_USER_GROUP_2 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_EMAC3 , DRV_SBPM_USER_GROUP_3 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_EMAC4 , DRV_SBPM_USER_GROUP_4 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_USB0 , DRV_SBPM_USER_GROUP_4 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_USB1 , DRV_SBPM_USER_GROUP_4 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_PCI0 , DRV_SBPM_USER_GROUP_4 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_PCI1 , DRV_SBPM_USER_GROUP_4 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_GPON , DRV_SBPM_USER_GROUP_5 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_RNR_A , DRV_SBPM_USER_GROUP_6 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_RNR_B , DRV_SBPM_USER_GROUP_6 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_MIPS_C , DRV_SBPM_USER_GROUP_7 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + error = fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_MIPS_D , DRV_SBPM_USER_GROUP_7 ); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + /*Enable Interrupts in interrupt enablae register*/ +#ifndef __UBOOT__ + default_interrupts_mask.bac_underrun = DRV_SBPM_ENABLE; + default_interrupts_mask.multicast_counter_overflow = DRV_SBPM_ENABLE; + default_interrupts_mask.check_last_error = DRV_SBPM_ENABLE; + default_interrupts_mask.max_search_error = DRV_SBPM_ENABLE; + error = fi_bl_drv_sbpm_set_interrupt_enable_register ( &default_interrupts_mask); + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } +#endif + /* Set Error Handling Parameters */ + error_handling_params.search_deapth = CS_DRV_SBPM_SEARCH_DEPTH ; + error_handling_params.max_search_enable = DRV_SBPM_DISABLE ; + error_handling_params.check_last_enable = DRV_SBPM_ENABLE ; + error_handling_params.freeze_counters = DRV_SBPM_DISABLE ; + + error = fi_bl_drv_sbpm_set_error_handling_parameters ( & error_handling_params ) ; + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + /* Set Runner Message Control parameters */ + error = fi_bl_drv_sbpm_get_runner_msg_ctrl ( & runner_msg_ctrl_params ) ; + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + runner_msg_ctrl_params.runner_reply_target_address = xi_replay_address >> 3 ; + + error = fi_bl_drv_sbpm_set_runner_msg_ctrl ( & runner_msg_ctrl_params ) ; + if ( error != DRV_SBPM_ERROR_NO_ERROR ) + { + return ( error ); + } + + return ( DRV_SBPM_ERROR_NO_ERROR ); + +} +EXPORT_SYMBOL ( fi_bl_drv_sbpm_init ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_sp_enable */ +/* */ +/* Title: */ +/* BPM driver - Source Ports Enable */ +/* */ +/* Abstract: */ +/* Source Ports Enable */ +/* */ +/* Registers: */ +/* BPM_SP_EN */ +/* */ +/* Input: */ +/* */ +/* xi_sp_enable - source port enable of each port. */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* DRV_SBPM_ERROR_INVALID_SOURCE_PORT - invalid source port */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_sp_enable ( const DRV_SBPM_SP_ENABLE * xi_sp_enable ) +{ + SBPM_BLOCK_REGS_SBPM_SP_EN sbpm_sp_enable ; + + SBPM_BLOCK_REGS_SBPM_SP_EN_READ( sbpm_sp_enable ) ; + + sbpm_sp_enable.rnra_sp_en = xi_sp_enable->rnra_sp_enable ; + sbpm_sp_enable.rnrb_sp_en = xi_sp_enable->rnrb_sp_enable ; + sbpm_sp_enable.eth0_sp_en = xi_sp_enable->eth0_sp_enable ; + sbpm_sp_enable.eth1_sp_en = xi_sp_enable->eth1_sp_enable ; + sbpm_sp_enable.eth2_sp_en = xi_sp_enable->eth2_sp_enable ; + sbpm_sp_enable.eth3_sp_en = xi_sp_enable->eth3_sp_enable ; + sbpm_sp_enable.eth4_sp_en = xi_sp_enable->eth4_sp_enable ; + sbpm_sp_enable.gpon_sp_en = xi_sp_enable->gpon_or_eth5_sp_enable ; + + SBPM_BLOCK_REGS_SBPM_SP_EN_WRITE( sbpm_sp_enable) ; + + return ( DRV_SBPM_ERROR_NO_ERROR ) ; +} +EXPORT_SYMBOL ( fi_bl_drv_sbpm_sp_enable ) ; + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_set_global_threshold */ +/* */ +/* Title: */ +/* SBPM driver - Set SBPM Global threshold */ +/* */ +/* Abstruct: */ +/* This function sets the global Threshold for Allocated Buffers. */ +/* */ +/* Input: */ +/* */ +/* xi_global_threshold - Global Threshold for Allocated Buffers */ +/* xi_global_hystersis - how many BNs need to free in order to get out from */ +/* global NACK state */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_set_global_threshold ( uint16_t xi_global_threshold, + uint16_t xi_global_hysteresis ) +{ + SBPM_BLOCK_REGS_SBPM_GL_TRSH global_configuration; + + SBPM_BLOCK_REGS_SBPM_GL_TRSH_READ(global_configuration); + + global_configuration.gl_bah = ( xi_global_hysteresis & CS_DRV_SBPM_THRESHOLD_MASK ); + global_configuration.gl_bat = ( xi_global_threshold & CS_DRV_SBPM_THRESHOLD_MASK ); + + SBPM_BLOCK_REGS_SBPM_GL_TRSH_WRITE(global_configuration); + + return ( DRV_SBPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_sbpm_set_global_threshold ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_set_user_group_thresholds */ +/* */ +/* Title: */ +/* SBPM driver - Set SBPM User Group threshold configuration */ +/* */ +/* Abstruct: */ +/* This function sets the threshold and hysteresis for a specific user group. */ +/* */ +/* Input: */ +/* xi_user_group - user group */ +/* xi_configuration - thresholds configuration for the user group (struct) */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* DRV_SBPM_ERROR_INVALID_USER_GROUP -user group id out of range */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_set_user_group_thresholds (DRV_SBPM_USER_GROUP xi_user_group, + const DRV_SBPM_USER_GROUP_CONFIGURATION * xi_configuration) +{ + DRV_SBPM_UG_THRESHOLD ug_configuration; + DRV_SBPM_UG_THRESHOLD ug_exclusive_configuration; + uint32_t ug_start_address; + uint32_t ug_exclusive_start_address; + + if ( ! ME_DRV_SBPM_USER_GROUP_IN_RANGE ( xi_user_group ) ) + { + return ( DRV_SBPM_ERROR_INVALID_USER_GROUP ); + } + + ug_start_address = ( uint32_t ) ( SBPM_BLOCK_REGS_SBPM_UG0_TRSH_ADDRESS + CS_DRV_SBPM_UG_ALIGNMENT * ( uint32_t ) xi_user_group ); + + if ( xi_user_group == DRV_SBPM_USER_GROUP_0 ) + { + ug_exclusive_start_address = ( uint32_t ) SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_ADDRESS; + } + else + { + ug_exclusive_start_address = ( uint32_t ) ( SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_ADDRESS + CS_DRV_SBPM_SBPM_EXCL_MEM_GAP + CS_DRV_SBPM_UG_ALIGNMENT * ( uint32_t ) ( xi_user_group - 1 ) ); + } + + READ_32( ug_start_address, ug_configuration); + + ug_configuration.ug_hysteresis = ( uint32_t ) ( xi_configuration->hysteresis & CS_DRV_SBPM_THRESHOLD_MASK ); + ug_configuration.ug_threshold = ( uint32_t ) ( xi_configuration->threshold & CS_DRV_SBPM_THRESHOLD_MASK ); + + WRITE_32( ug_start_address, ug_configuration); + + + READ_32( ug_exclusive_start_address , ug_exclusive_configuration); + + ug_exclusive_configuration.ug_hysteresis = ( uint32_t ) ( xi_configuration->exclusive_hysteresis & CS_DRV_SBPM_THRESHOLD_MASK ); + ug_exclusive_configuration.ug_threshold = ( uint32_t ) ( xi_configuration->exclusive_threshold & CS_DRV_SBPM_THRESHOLD_MASK ); + + WRITE_32( ug_exclusive_start_address , ug_exclusive_configuration); + + return ( DRV_SBPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_sbpm_set_user_group_thresholds ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_set_user_group_mapping */ +/* */ +/* Title: */ +/* SBPM driver - Set User Group Mapping */ +/* */ +/* Abstruct: */ +/* This function maps a User group for a specific Source port */ +/* */ +/* Input: */ +/* xi_source_port - One of SBPM source ports */ +/* xi_user_group - one of SBPM User group 0-7 */ +/* */ +/* Output: error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* DRV_SBPM_ERROR_INVALID_SOURCE_PORT - invalid source port */ +/* DRV_SBPM_ERROR_INVALID_USER_GROUP -user group id out of range */ +/* */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_USR xi_source_port, + DRV_SBPM_USER_GROUP xi_user_group ) +{ + SBPM_BLOCK_REGS_SBPM_UG_MAP_0 sbpm_ug_mapping_r0; + SBPM_BLOCK_REGS_UG_MAP_REG_1 sbpm_ug_mapping_r1; + + SBPM_BLOCK_REGS_SBPM_UG_MAP_0_READ(sbpm_ug_mapping_r0); + SBPM_BLOCK_REGS_UG_MAP_REG_1_READ (sbpm_ug_mapping_r1); + + if ( ! ME_DRV_SBPM_USER_GROUP_IN_RANGE ( xi_user_group ) ) + { + return ( DRV_SBPM_ERROR_INVALID_USER_GROUP ); + } + + switch ( xi_source_port ) + { + case DRV_SBPM_SP_MIPS_C: + sbpm_ug_mapping_r0.cpu = xi_user_group; + break ; + case DRV_SBPM_SP_EMAC0: + sbpm_ug_mapping_r0.emac0 = xi_user_group; + break ; + case DRV_SBPM_SP_EMAC1: + sbpm_ug_mapping_r0.emac1 = xi_user_group; + break ; + case DRV_SBPM_SP_EMAC2: + sbpm_ug_mapping_r0.emac2 = xi_user_group; + break ; + case DRV_SBPM_SP_EMAC3: + sbpm_ug_mapping_r0.emac3 = xi_user_group; + break ; + case DRV_SBPM_SP_EMAC4: + sbpm_ug_mapping_r1.emac4= xi_user_group; + break ; + case DRV_SBPM_SP_GPON: + sbpm_ug_mapping_r0.gpon = xi_user_group; + break ; + case DRV_SBPM_SP_RNR_A: + sbpm_ug_mapping_r0.rnra = xi_user_group; + break ; + case DRV_SBPM_SP_RNR_B: + sbpm_ug_mapping_r0.rnrb = xi_user_group; + break ; + case DRV_SBPM_SP_USB0: + sbpm_ug_mapping_r1.usb0 = xi_user_group; + break ; + case DRV_SBPM_SP_USB1: + sbpm_ug_mapping_r1.usb1= xi_user_group; + break ; + case DRV_SBPM_SP_PCI0: + sbpm_ug_mapping_r1.pcie0 = xi_user_group; + break ; + case DRV_SBPM_SP_PCI1: + sbpm_ug_mapping_r1.pcie1 = xi_user_group; + break ; + case DRV_SBPM_SP_MIPS_D: + sbpm_ug_mapping_r1.mipsd = xi_user_group; + break ; + case DRV_SBPM_SP_SPARE_0: + sbpm_ug_mapping_r1.spare0 = xi_user_group; + break ; + case DRV_SBPM_SP_SPARE_1: + sbpm_ug_mapping_r1.spare1 = xi_user_group; + break ; + default: + return ( DRV_SBPM_ERROR_INVALID_SOURCE_PORT ); + } + + SBPM_BLOCK_REGS_SBPM_UG_MAP_0_WRITE (sbpm_ug_mapping_r0); + SBPM_BLOCK_REGS_UG_MAP_REG_1_WRITE (sbpm_ug_mapping_r1); + + return ( DRV_SBPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_sbpm_set_user_group_mapping ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_set_error_handling_parameters */ +/* */ +/* Title: */ +/* */ +/* SBPM driver - Set Error Handling Parameters */ +/* */ +/* Abstruct: */ +/* */ +/* This function set the parameters and thresholds used for error handling: */ +/* maximum search threshold in case of free buffer without context, enabling */ +/* max search, and enabling checking last BN. */ +/* */ +/* Registers: */ +/* */ +/* SBPM_IER */ +/* */ +/* Input: */ +/* */ +/* xi_sbpm_error_handling_parameters - SBPM Error handling parameters (struct)*/ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_set_error_handling_parameters ( const DRV_SBPM_ERROR_HANDLING_PARAMETERS * xi_sbpm_error_handling_parameters ) +{ + SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS error_handling_reg ; + + SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_READ ( error_handling_reg ) ; + + error_handling_reg.search_depth = xi_sbpm_error_handling_parameters -> search_deapth ; + error_handling_reg.max_search_en = xi_sbpm_error_handling_parameters -> max_search_enable ; + error_handling_reg.chck_last_en = xi_sbpm_error_handling_parameters -> check_last_enable ; + error_handling_reg.freeze_in_error = xi_sbpm_error_handling_parameters -> freeze_counters ; + + SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_WRITE ( error_handling_reg); + + return ( DRV_SBPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_sbpm_set_error_handling_parameters ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_set_runner_msg_ctrl */ +/* */ +/* Title: */ +/* SBPM Driver - Set Runner message control */ +/* */ +/* Abstruct: */ +/*This function sets the runner control parameters which includes enables for */ +/*wake-up and status messages, select control bit for runner to receive message*/ +/*and task number for wake-up messages to Runners. */ +/* */ +/* Registers: */ +/* SBPM_RNR_MSG_CTRL,SBPM_RNR_RPLY_TA */ +/* */ +/* Input: */ +/* */ +/* xi_runner_messsage_control_parameters - struct */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_set_runner_msg_ctrl(DRV_SBPM_RUNNER_MSG_CTRL_PARAMS * xi_runner_messsage_control_parameters) +{ + SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL runner_message_control; + SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA runner_rply_ta_register; + + SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_READ (runner_message_control); + + runner_message_control.task_num = xi_runner_messsage_control_parameters -> runner_reply_wakeup_task_number; + runner_message_control.stat_wkup_en = xi_runner_messsage_control_parameters -> status_wakeup_enable ? + DRV_SBPM_ENABLE : DRV_SBPM_DISABLE; + runner_message_control.stat_msg_en = xi_runner_messsage_control_parameters -> status_message_enable ? + DRV_SBPM_ENABLE : DRV_SBPM_DISABLE; + runner_message_control.rnr_num = xi_runner_messsage_control_parameters-> select_runner ? + SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_RNR_NUM_RUNNER_B_VALUE : + SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_RNR_NUM_RUNNER_A_VALUE ; + runner_message_control.rnr_stat_msg_base_addr = xi_runner_messsage_control_parameters -> message_base_address; + + SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_WRITE (runner_message_control); + + + SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_READ (runner_rply_ta_register); + + runner_rply_ta_register.rnr_reply_msg_base_addr = xi_runner_messsage_control_parameters -> runner_reply_target_address ; + + SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_WRITE (runner_rply_ta_register); + + return ( DRV_SBPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_sbpm_set_runner_msg_ctrl ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_get_runner_msg_ctrl */ +/* */ +/* Title: */ +/* SBPM Driver - Get Runner message control */ +/* */ +/* Abstruct: */ +/* This function returns the runner control parameters which includes enables */ +/* for wake-up and status messages, select control bit for runner to receive */ +/* message and task number for wake-up messages to Runners. */ +/* */ +/* Registers: */ +/* SBPM_RNR_MSG_CTRL,SBPM_RNR_RPLY_TA */ +/* */ +/* Input: */ +/* */ +/* xo_runner_messsage_control_parameters - struct */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_get_runner_msg_ctrl(DRV_SBPM_RUNNER_MSG_CTRL_PARAMS * const xo_runner_messsage_control_parameters) +{ + SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL runner_message_control; + SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA runner_rply_ta_register; + + SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_READ (runner_message_control); + + xo_runner_messsage_control_parameters -> runner_reply_wakeup_task_number = runner_message_control.task_num ; + xo_runner_messsage_control_parameters -> status_wakeup_enable = runner_message_control.stat_wkup_en ? + DRV_SBPM_ENABLE : DRV_SBPM_DISABLE; + xo_runner_messsage_control_parameters -> status_message_enable = runner_message_control.stat_msg_en ? + DRV_SBPM_ENABLE : DRV_SBPM_DISABLE; + xo_runner_messsage_control_parameters-> select_runner = runner_message_control.rnr_num ? + DRV_SBPM_RUNNER_SELECT_RUNNER_B : + DRV_SBPM_RUNNER_SELECT_RUNNER_A ; + xo_runner_messsage_control_parameters -> message_base_address = runner_message_control.rnr_stat_msg_base_addr ; + + SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_READ (runner_rply_ta_register); + + xo_runner_messsage_control_parameters -> runner_reply_target_address = runner_rply_ta_register.rnr_reply_msg_base_addr ; + + return ( DRV_SBPM_ERROR_NO_ERROR ); +} +EXPORT_SYMBOL ( fi_bl_drv_sbpm_get_runner_msg_ctrl ); + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_drv_sbpm.h b/arch/arm/mach-bcmbca/rdp/rdp_drv_sbpm.h new file mode 100755 index 0000000000..8f2f6c3d9f --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_drv_sbpm.h @@ -0,0 +1,583 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This header file defines all datatypes and functions exported for the */ +/* Lilac SBPM driver. */ +/* */ +/******************************************************************************/ + +#ifndef LILAC_DRV_SBPM_H_INCLUDED +#define LILAC_DRV_SBPM_H_INCLUDED + + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ +#include "rdp_sbpm.h" + +/******************************************************************************/ +/* */ +/* Types and values definitions */ +/* */ +/******************************************************************************/ + +/******************************************************************************/ +/* Error codes returned by SBPM driver APIs */ +/******************************************************************************/ +typedef enum +{ + DRV_SBPM_ERROR_NO_ERROR = 0, + DRV_SBPM_ERROR_SBPM_BUSY , + DRV_SBPM_ERROR_NO_FREE_BUFFER, + DRV_SBPM_ERROR_INVALID_SOURCE_PORT, + DRV_SBPM_ERROR_INVALID_USER_GROUP, + DRV_SBPM_ERROR_BUFFER_NUMBER_EXCEEDS_MAXIMUM_VALUE, + DRV_SBPM_ERROR_TRYING_TO_CONNECT_TO_NULL_POINTER, + DRV_SBPM_ERROR_TRYING_TO_FREE_NULL_POINTER, + DRV_SBPM_ERROR_MULTICAST_VALUE_EXCEEDS_MAXIMUM_VALUE + +}DRV_SBPM_ERROR; + + +/******************************************************************************/ +/* BPM source ports */ +/******************************************************************************/ +typedef enum +{ + DRV_SBPM_SP_GPON, + DRV_SBPM_SP_EMAC0, + DRV_SBPM_SP_EMAC1, + DRV_SBPM_SP_EMAC2, + DRV_SBPM_SP_EMAC3, + DRV_SBPM_SP_EMAC4, + DRV_SBPM_SP_MIPS_C, + DRV_SBPM_SP_MIPS_D, + DRV_SBPM_SP_PCI0, + DRV_SBPM_SP_PCI1, + DRV_SBPM_SP_USB0, + DRV_SBPM_SP_USB1, + DRV_SBPM_SP_SPARE_0, + DRV_SBPM_SP_SPARE_1, + DRV_SBPM_SP_RNR_A, + DRV_SBPM_SP_RNR_B, + DRV_SBPM_SP_NUMBER_OF_SOURCE_PORTS + +}DRV_SBPM_SP_USR; + + +/******************************************************************************/ +/* BPM User Groups index: */ +/******************************************************************************/ +typedef enum +{ + DRV_SBPM_USER_GROUP_0, + DRV_SBPM_USER_GROUP_1, + DRV_SBPM_USER_GROUP_2, + DRV_SBPM_USER_GROUP_3, + DRV_SBPM_USER_GROUP_4, + DRV_SBPM_USER_GROUP_5, + DRV_SBPM_USER_GROUP_6, + DRV_SBPM_USER_GROUP_7, + DRV_SBPM_NUMBER_OF_USER_GROUPS + +}DRV_SBPM_USER_GROUP; + +#define ME_DRV_SBPM_USER_GROUP_IN_RANGE(v) ( (v) >= DRV_SBPM_USER_GROUP_0 && (v) < DRV_SBPM_NUMBER_OF_USER_GROUPS ) + + +/******************************************************************************/ +/* Boolean */ +/******************************************************************************/ +typedef enum +{ + DRV_SBPM_DISABLE = 0, + DRV_SBPM_ENABLE = 1 + +}E_DRV_SBPM_ENABLE; + +/******************************************************************************/ +/* Ack state */ +/******************************************************************************/ +typedef enum +{ + DRV_SBPM_NACK_STATE = 0, + DRV_SBPM_ACK_STATE = 1 + +}E_DRV_SBPM_ACK_STATE; + +/******************************************************************************/ +/* Exclusive state */ +/******************************************************************************/ +typedef enum +{ + DRV_SBPM_NON_EXCLUSIVE_STATE = 0, + DRV_SBPM_EXCLUSIVE_STATE = 1 + +}E_DRV_SBPM_EXCLUSIVE_STATE; + +/******************************************************************************/ +/* Runner selection for receiving status messages */ +/******************************************************************************/ +typedef enum +{ + DRV_SBPM_RUNNER_SELECT_RUNNER_A = 0, + DRV_SBPM_RUNNER_SELECT_RUNNER_B = 1 + +}DRV_SBPM_RUNNER_SELECT; + + +/******************************************************************************/ +/* SBPM Global Configuration struct */ +/******************************************************************************/ +typedef struct +{ + /* Global hysteresis */ + uint32_t hysteresis ; + + /* Global threshold */ + uint32_t threshold ; +} +DRV_SBPM_GLOBAL_CONFIGURATION ; + + +/******************************************************************************/ +/* BPM User Group mapping struct */ +/******************************************************************************/ +typedef struct +{ + DRV_SBPM_USER_GROUP sp_gpon_mapping; + DRV_SBPM_USER_GROUP sp_emac0_mapping; + DRV_SBPM_USER_GROUP sp_emac1_mapping; + DRV_SBPM_USER_GROUP sp_emac2_mapping; + DRV_SBPM_USER_GROUP sp_emac3_mapping; + DRV_SBPM_USER_GROUP sp_emac4_mapping; + DRV_SBPM_USER_GROUP sp_mips_c_mapping; + DRV_SBPM_USER_GROUP sp_mips_d_mapping; + DRV_SBPM_USER_GROUP sp_pci0_mapping; + DRV_SBPM_USER_GROUP sp_pci1_mapping; + DRV_SBPM_USER_GROUP sp_usb0_mapping; + DRV_SBPM_USER_GROUP sp_usb1_mapping; + DRV_SBPM_USER_GROUP sp_rnr_a_mapping; + DRV_SBPM_USER_GROUP sp_rnr_b_mapping; +} +DRV_SBPM_USER_GROUP_MAPPING ; + +/******************************************************************************/ +/* SBPM User Group thresholds struct */ +/******************************************************************************/ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 ; + /* UG hysteresis */ + uint32_t ug_hysteresis : 10 ; + /* reserved */ + uint32_t rsv : 6 ; + /* UG threshold */ + uint32_t ug_threshold : 10 ; +} +DRV_SBPM_UG_THRESHOLD ; + +/******************************************************************************/ +/* SBPM User Group configuration struct */ +/******************************************************************************/ +typedef struct +{ + /* threshold */ + uint32_t threshold ; + + /* hysteresis */ + uint32_t hysteresis ; + + /* Exclusive threshold */ + uint32_t exclusive_threshold ; + + /* Exclusive hysteresis */ + uint32_t exclusive_hysteresis ; + +} +DRV_SBPM_USER_GROUP_CONFIGURATION ; + +/******************************************************************************/ +/* SBPM User Group thresholds struct - contains array of 8 user groups */ +/******************************************************************************/ +typedef struct +{ + DRV_SBPM_USER_GROUP_CONFIGURATION ug_arr[ DRV_SBPM_NUMBER_OF_USER_GROUPS ] ; +} +DRV_SBPM_USER_GROUPS_THRESHOLDS ; + +/******************************************************************************/ +/* Source port enable struct */ +/******************************************************************************/ +typedef struct +{ + int32_t rnra_sp_enable ; + + int32_t rnrb_sp_enable ; + + int32_t eth0_sp_enable ; + + int32_t eth1_sp_enable ; + + int32_t eth2_sp_enable ; + + int32_t eth3_sp_enable ; + + int32_t eth4_sp_enable ; + + int32_t gpon_or_eth5_sp_enable ; +} +DRV_SBPM_SP_ENABLE ; + +/*******************************************************************************/ +/* Runner message control parameters - struct */ +/*******************************************************************************/ +typedef struct +{ + + /*Task number for runner used in SBPM Status Message Wake-Up */ + uint16_t runner_reply_wakeup_task_number ; + + /* Enable/Disable wake-up message after each reply on Alloc request from Runner */ + E_DRV_SBPM_ENABLE status_wakeup_enable ; + + /* Enable/Disable wake-up message after each transition state of any peripheral */ + E_DRV_SBPM_ENABLE status_message_enable; + + /*select runner for receiving status messages: Runner A or B*/ + DRV_SBPM_RUNNER_SELECT select_runner; + + /*status message base address */ + uint16_t message_base_address; + + /*Target address for both Runners*/ + uint16_t runner_reply_target_address; + +} +DRV_SBPM_RUNNER_MSG_CTRL_PARAMS ; + +/*******************************************************************************/ +/* wakeup reply set parameters - struct */ +/*******************************************************************************/ +typedef struct +{ + /*Task number for Wake-Up as resultof reply */ + uint16_t reply_wakeup_task_number ; + + /*Enable/Disable wake-up message on alloc reply message */ + E_DRV_SBPM_ENABLE alloc_reply_wakeup_enable; + + /*Enable/Disable wake-up message on bn connect reply message */ + E_DRV_SBPM_ENABLE connect_reply_wakeup_enable; + + /*Enable/Disable wake-up message on get_next reply message */ + E_DRV_SBPM_ENABLE get_next_reply_wakeup_enable; + + /*Enable/Disable wake-up message on multicast update reply message */ + E_DRV_SBPM_ENABLE mcnt_reply_wakeup_enable; +} +DRV_SBPM_WAKEUP_REPLY_SET_PARAMS ; + +/*******************************************************************************/ +/* MIPS D message control parameters - struct */ +/*******************************************************************************/ +typedef struct +{ + /*Task number for Wake-Up as resultof Reply on Alloc request*/ + DRV_SBPM_WAKEUP_REPLY_SET_PARAMS mips_d_wakeup_reply_set ; + + /*Target address for MIPS-D*/ + uint16_t mips_d_reply_target_address ; + +} +DRV_SBPM_MIPS_D_MSG_CTRL_PARAMS ; + +/******************************************************************************/ +/* SBPM User Group status struct */ +/******************************************************************************/ +typedef struct +{ + /*User group status - ack/nack*/ + E_DRV_SBPM_ACK_STATE ug_status ; + + /*User group exclusive status - non-exclusive/exclusive*/ + E_DRV_SBPM_EXCLUSIVE_STATE ug_exclusive_status ; +} +DRV_SBPM_USER_GROUP_STATUS ; + +/******************************************************************************/ +/* SBPM Interrupts status struct */ +/******************************************************************************/ +typedef struct +{ + E_DRV_SBPM_ENABLE bac_underrun ; + E_DRV_SBPM_ENABLE multicast_counter_overflow; + E_DRV_SBPM_ENABLE check_last_error; + E_DRV_SBPM_ENABLE max_search_error; +} +DRV_SBPM_ISR ; + +/******************************************************************************/ +/* SBPM Interrupt information struct */ +/******************************************************************************/ +typedef struct +{ + uint16_t cmd_sa ; + uint16_t cmd_type ; + uint32_t cmd_data [2] ; +} +DRV_SBPM_IIR ; + +/******************************************************************************/ +/* SBPM Error Handling parameters struct */ +/******************************************************************************/ +typedef struct +{ + uint16_t search_deapth ; + E_DRV_SBPM_ENABLE max_search_enable ; + E_DRV_SBPM_ENABLE check_last_enable ; + E_DRV_SBPM_ENABLE freeze_counters; +} +DRV_SBPM_ERROR_HANDLING_PARAMETERS ; + +/*******************************************************************************/ +/* */ +/* Functions prototypes */ +/* */ +/*******************************************************************************/ + + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_init */ +/* */ +/* Title: */ +/* SBPM driver - BPM initialize */ +/* */ +/* Abstruct: */ +/* This function initialize and sets general configuration of the SBPM block. */ +/* SBPM module initialization is made once in the system lifetime */ +/* */ +/* This API performs the following: */ +/* 1. Disable all SBPM source ports. */ +/* 2. Builds the free linked list using the HW accelerator. */ +/* 3. Sets SBPM configuration: */ +/* a. Global threshold. */ +/* b. User group configuration (threshold, hysteresis, exclusive */ +/* threshold/ hysteresis). */ +/* c. Sets route address of each source port. */ +/* d. Source port to user group mapping. */ +/* */ +/* Input: */ +/* xi_base_address - The start address of the BN list */ +/* xi_list_size - The number of buffers in the list */ +/* xi_global_configuration - global threshold and hysteresis (struct) */ +/* xi_user_group_configuration - user groups threshold and hysteresis (struct) */ +/* xi_replay_address - runner replay address */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* DRV_SBPM_ERROR_BUFFER_NUMBER_EXCEEDS_MAXIMUM_VALUE - */ +/* the amount of buffers exceeds the maximum value */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_init(uint16_t xi_base_address , + uint16_t xi_list_size, + uint16_t xi_replay_address, + const DRV_SBPM_GLOBAL_CONFIGURATION * xi_global_configuration, + const DRV_SBPM_USER_GROUPS_THRESHOLDS * xi_user_group_configuration ) ; + + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_sp_enable */ +/* */ +/* Title: */ +/* BPM driver - Source Ports Enable */ +/* */ +/* Abstract: */ +/* Source Ports Enable */ +/* */ +/* Registers: */ +/* BPM_SP_EN */ +/* */ +/* Input: */ +/* */ +/* xi_sp_enable - source port enable of each port. */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* DRV_SBPM_ERROR_INVALID_SOURCE_PORT - invalid source port */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_sp_enable ( const DRV_SBPM_SP_ENABLE * xi_sp_enable ) ; + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_set_global_threshold */ +/* */ +/* Title: */ +/* SBPM driver - Set SBPM Global threshold */ +/* */ +/* Abstruct: */ +/* This function sets the global Threshold for Allocated Buffers. */ +/* */ +/* Input: */ +/* */ +/* xi_global_threshold - Global Threshold for Allocated Buffers */ +/* xi_global_hystersis - how many BNs need to free in order to get out from */ +/* global NACK state */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_set_global_threshold ( uint16_t xi_global_threshold, + uint16_t xi_global_hysteresis ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_set_user_group_thresholds */ +/* */ +/* Title: */ +/* SBPM driver - Set SBPM User Group threshold configuration */ +/* */ +/* Abstruct: */ +/* This function sets the threshold and hysteresis for a specific user group. */ +/* */ +/* Input: */ +/* xi_user_group - user group */ +/* xi_configuration - thresholds configuration for the user group (struct) */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* DRV_SBPM_ERROR_INVALID_USER_GROUP -user group id out of range */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_set_user_group_thresholds (DRV_SBPM_USER_GROUP xi_user_group, + const DRV_SBPM_USER_GROUP_CONFIGURATION * xi_configuration); + + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_set_user_group_mapping */ +/* */ +/* Title: */ +/* SBPM driver - Set User Group Mapping */ +/* */ +/* Abstruct: */ +/* This function maps a User group for a specific Source port */ +/* */ +/* Input: */ +/* xi_source_port - One of SBPM source ports */ +/* xi_user_group - one of SBPM User group 0-7 */ +/* */ +/* Output: error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* DRV_SBPM_ERROR_INVALID_SOURCE_PORT - invalid source port */ +/* DRV_SBPM_ERROR_INVALID_USER_GROUP -user group id out of range */ +/* */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_set_user_group_mapping ( DRV_SBPM_SP_USR xi_source_port, + DRV_SBPM_USER_GROUP xi_user_group ); + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_set_error_handling_parameters */ +/* */ +/* Title: */ +/* */ +/* SBPM driver - Set Error Handling Parameters */ +/* */ +/* Abstruct: */ +/* */ +/* This function set the parameters and thresholds used for error handling: */ +/* maximum search threshold in case of free buffer without context, enabling */ +/* max search, and enabling checking last BN. */ +/* */ +/* Registers: */ +/* */ +/* SBPM_IER */ +/* */ +/* Input: */ +/* */ +/* xi_sbpm_error_handling_parameters - SBPM Error handling parameters (struct)*/ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_set_error_handling_parameters ( const DRV_SBPM_ERROR_HANDLING_PARAMETERS * xi_sbpm_error_handling_parameters ); + + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_set_runner_msg_ctrl */ +/* */ +/* Title: */ +/* SBPM Driver - Set Runner message control */ +/* */ +/* Abstruct: */ +/*This function sets the runner control parameters which includes enables for */ +/*wake-up and status messages, select control bit for runner to receive message*/ +/*and task number for wake-up messages to Runners. */ +/* */ +/* Registers: */ +/* SBPM_RNR_MSG_CTRL,SBPM_RNR_RPLY_TA */ +/* */ +/* Input: */ +/* */ +/* xi_runner_messsage_control_parameters - struct */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_set_runner_msg_ctrl(DRV_SBPM_RUNNER_MSG_CTRL_PARAMS * xi_runner_messsage_control_parameters); + + +/*******************************************************************************/ +/* */ +/* fi_bl_drv_sbpm_get_runner_msg_ctrl */ +/* */ +/* Title: */ +/* SBPM Driver - Get Runner message control */ +/* */ +/* Abstruct: */ +/* This function returns the runner control parameters which includes enables */ +/* for wake-up and status messages, select control bit for runner to receive */ +/* message and task number for wake-up messages to Runners. */ +/* */ +/* Registers: */ +/* SBPM_RNR_MSG_CTRL,SBPM_RNR_RPLY_TA */ +/* */ +/* Input: */ +/* */ +/* xo_runner_messsage_control_parameters - struct */ +/* */ +/* Output: */ +/* DRV_SBPM_ERROR - error code */ +/* DRV_SBPM_ERROR_NO_ERROR - no error */ +/* */ +/*******************************************************************************/ +DRV_SBPM_ERROR fi_bl_drv_sbpm_get_runner_msg_ctrl(DRV_SBPM_RUNNER_MSG_CTRL_PARAMS * const xo_runner_messsage_control_parameters); + +#endif + + + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_ih.h b/arch/arm/mach-bcmbca/rdp/rdp_ih.h new file mode 100755 index 0000000000..91dea7c0ca --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_ih.h @@ -0,0 +1,28579 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef __IH_H_INCLUDED +#define __IH_H_INCLUDED + +/* File automatically generated by Reggae at 15/08/2013 10:54:43 */ + +#include "access_macros.h" +#include "packing.h" +#include "rdp_map.h" + +/*****************************************************************************************/ +/* Lilac Ingres Handler. Ingres Handler in Lilac is responsible for incoming ingres traf */ +/* fic pre-processing. It includes re-used accelerators from Ginger: Parser & Look-up en */ +/* gine. The main features of IH (Ingres Handler) are as following: (1) Runner proccessi */ +/* ng offload (Parsing, Lookup engine), (2) Ingres QoS, (3) Target Memory decision: DDR */ +/* or SRAM, (4) Runner load balancing */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Blocks offsets */ +/*****************************************************************************************/ +/*****************************************************************************************/ +/* Functions offsets and addresses */ +/*****************************************************************************************/ +#define IH_REGS_LOOKUP_CONFIGURATION_OFFSET ( 0x00000000 ) +#define IH_REGS_LOOKUP_CONFIGURATION_ADDRESS ( IH_REGS_OFFSET + IH_REGS_LOOKUP_CONFIGURATION_OFFSET ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_OFFSET ( 0x00000400 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS ( IH_REGS_OFFSET + IH_REGS_PARSER_CORE_CONFIGURATION_OFFSET ) + +#define IH_REGS_GENERAL_CONFIGURATION_OFFSET ( 0x00000800 ) +#define IH_REGS_GENERAL_CONFIGURATION_ADDRESS ( IH_REGS_OFFSET + IH_REGS_GENERAL_CONFIGURATION_OFFSET ) + +/* 'd' is module index */ +/* 'i' is block index */ +/* 'j' is function index */ +/* 'e' is function entry */ +/* 'k' is register index */ + +/*****************************************************************************************/ +/* LKUP_TBL0_LUT_CFG */ +/* Look-up table 0: Configuration of LUT: table params + main flag */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_AGING_EN_AGING_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_AGING_EN_AGING_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_2_STEPS_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_4_STEPS_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_8_STEPS_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_16_STEPS_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_32_STEPS_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_64_STEPS_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_128_STEPS_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_256_STEPS_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_512_STEPS_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_MAX_1K_STEPS_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_TABLE_SIZE_MAX_64_ENTRIES_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_TABLE_SIZE_MAX_128_ENTRIES_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_TABLE_SIZE_MAX_256_ENTRIES_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_TABLE_SIZE_MAX_512_ENTRIES_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_TABLE_SIZE_MAX_1K_ENTRIES_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_TABLE_SIZE_MAX_2K_ENTRIES_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_TABLE_SIZE_MAX_4K_ENTRIES_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_OFFSET ( 0x00000000 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t reserved : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG ; +#else +typedef struct +{ + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t reserved : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL1_LUT_CFG */ +/* Look-up table 1: Configuration of LUT: table params + main flags */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_AGING_EN_AGING_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_AGING_EN_AGING_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_2_STEPS_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_4_STEPS_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_8_STEPS_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_16_STEPS_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_32_STEPS_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_64_STEPS_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_128_STEPS_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_256_STEPS_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_512_STEPS_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_MAX_1K_STEPS_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_TABLE_SIZE_MAX_64_ENTRIES_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_TABLE_SIZE_MAX_128_ENTRIES_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_TABLE_SIZE_MAX_256_ENTRIES_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_TABLE_SIZE_MAX_512_ENTRIES_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_TABLE_SIZE_MAX_1K_ENTRIES_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_TABLE_SIZE_MAX_2K_ENTRIES_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_TABLE_SIZE_MAX_4K_ENTRIES_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_R2_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_R2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_OFFSET ( 0x00000004 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG ; +#else +typedef struct +{ + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL2_LUT_CFG */ +/* Look-up table 2: Configuration of LUT: table params + main flags */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_AGING_EN_AGING_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_AGING_EN_AGING_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_2_STEPS_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_4_STEPS_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_8_STEPS_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_16_STEPS_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_32_STEPS_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_64_STEPS_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_128_STEPS_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_256_STEPS_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_512_STEPS_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_MAX_1K_STEPS_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_TABLE_SIZE_MAX_64_ENTRIES_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_TABLE_SIZE_MAX_128_ENTRIES_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_TABLE_SIZE_MAX_256_ENTRIES_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_TABLE_SIZE_MAX_512_ENTRIES_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_TABLE_SIZE_MAX_1K_ENTRIES_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_TABLE_SIZE_MAX_2K_ENTRIES_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_TABLE_SIZE_MAX_4K_ENTRIES_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_R2_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_R2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_OFFSET ( 0x00000008 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG ; +#else +typedef struct +{ + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL3_LUT_CFG */ +/* Look-up table 3: Configuration of LUT: table params + main flags */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_AGING_EN_AGING_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_AGING_EN_AGING_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_2_STEPS_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_4_STEPS_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_8_STEPS_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_16_STEPS_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_32_STEPS_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_64_STEPS_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_128_STEPS_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_256_STEPS_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_512_STEPS_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_MAX_1K_STEPS_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_TABLE_SIZE_MAX_64_ENTRIES_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_TABLE_SIZE_MAX_128_ENTRIES_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_TABLE_SIZE_MAX_256_ENTRIES_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_TABLE_SIZE_MAX_512_ENTRIES_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_TABLE_SIZE_MAX_1K_ENTRIES_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_TABLE_SIZE_MAX_2K_ENTRIES_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_TABLE_SIZE_MAX_4K_ENTRIES_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_R2_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_R2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_OFFSET ( 0x0000000C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG ; +#else +typedef struct +{ + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL4_LUT_CFG */ +/* Look-up table 4: Configuration of LUT: table params + main flags */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_AGING_EN_AGING_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_AGING_EN_AGING_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_2_STEPS_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_4_STEPS_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_8_STEPS_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_16_STEPS_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_32_STEPS_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_64_STEPS_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_128_STEPS_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_256_STEPS_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_512_STEPS_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_MAX_1K_STEPS_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_TABLE_SIZE_MAX_64_ENTRIES_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_TABLE_SIZE_MAX_128_ENTRIES_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_TABLE_SIZE_MAX_256_ENTRIES_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_TABLE_SIZE_MAX_512_ENTRIES_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_TABLE_SIZE_MAX_1K_ENTRIES_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_TABLE_SIZE_MAX_2K_ENTRIES_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_TABLE_SIZE_MAX_4K_ENTRIES_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_R2_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_R2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_OFFSET ( 0x00000010 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG ; +#else +typedef struct +{ + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL5_LUT_CFG */ +/* Look-up table 5: Configuration of LUT: table params + main flags */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_AGING_EN_AGING_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_AGING_EN_AGING_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_2_STEPS_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_4_STEPS_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_8_STEPS_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_16_STEPS_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_32_STEPS_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_64_STEPS_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_128_STEPS_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_256_STEPS_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_512_STEPS_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_MAX_1K_STEPS_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_TABLE_SIZE_MAX_64_ENTRIES_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_TABLE_SIZE_MAX_128_ENTRIES_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_TABLE_SIZE_MAX_256_ENTRIES_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_TABLE_SIZE_MAX_512_ENTRIES_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_TABLE_SIZE_MAX_1K_ENTRIES_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_TABLE_SIZE_MAX_2K_ENTRIES_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_TABLE_SIZE_MAX_4K_ENTRIES_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_R2_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_R2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_OFFSET ( 0x00000014 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG ; +#else +typedef struct +{ + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL6_LUT_CFG */ +/* Look-up table 6: Configuration of LUT: table params + main flags */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_AGING_EN_AGING_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_AGING_EN_AGING_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_2_STEPS_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_4_STEPS_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_8_STEPS_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_16_STEPS_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_32_STEPS_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_64_STEPS_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_128_STEPS_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_256_STEPS_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_512_STEPS_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_MAX_1K_STEPS_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_TABLE_SIZE_MAX_64_ENTRIES_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_TABLE_SIZE_MAX_128_ENTRIES_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_TABLE_SIZE_MAX_256_ENTRIES_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_TABLE_SIZE_MAX_512_ENTRIES_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_TABLE_SIZE_MAX_1K_ENTRIES_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_TABLE_SIZE_MAX_2K_ENTRIES_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_TABLE_SIZE_MAX_4K_ENTRIES_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_R2_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_R2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_OFFSET ( 0x00000018 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG ; +#else +typedef struct +{ + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL7_LUT_CFG */ +/* Look-up table 7: Configuration of LUT: table params + main flags */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_AGING_EN_AGING_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_AGING_EN_AGING_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_2_STEPS_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_4_STEPS_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_8_STEPS_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_16_STEPS_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_32_STEPS_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_64_STEPS_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_128_STEPS_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_256_STEPS_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_512_STEPS_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_MAX_1K_STEPS_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_TABLE_SIZE_MAX_64_ENTRIES_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_TABLE_SIZE_MAX_128_ENTRIES_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_TABLE_SIZE_MAX_256_ENTRIES_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_TABLE_SIZE_MAX_512_ENTRIES_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_TABLE_SIZE_MAX_1K_ENTRIES_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_TABLE_SIZE_MAX_2K_ENTRIES_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_TABLE_SIZE_MAX_4K_ENTRIES_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_R2_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_R2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_OFFSET ( 0x0000001C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG ; +#else +typedef struct +{ + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL8_LUT_CFG */ +/* Look-up table 8: Configuration of LUT: table params + main flags */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_AGING_EN_AGING_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_AGING_EN_AGING_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_2_STEPS_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_4_STEPS_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_8_STEPS_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_16_STEPS_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_32_STEPS_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_64_STEPS_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_128_STEPS_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_256_STEPS_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_512_STEPS_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_MAX_1K_STEPS_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_TABLE_SIZE_MAX_64_ENTRIES_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_TABLE_SIZE_MAX_128_ENTRIES_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_TABLE_SIZE_MAX_256_ENTRIES_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_TABLE_SIZE_MAX_512_ENTRIES_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_TABLE_SIZE_MAX_1K_ENTRIES_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_TABLE_SIZE_MAX_2K_ENTRIES_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_TABLE_SIZE_MAX_4K_ENTRIES_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_R2_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_R2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_OFFSET ( 0x00000020 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG ; +#else +typedef struct +{ + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL9_LUT_CFG */ +/* Look-up table 9: Configuration of LUT: table params + main flags */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_FIVE_TUPLE_EN_FIVE_TUPLE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_AGING_EN_AGING_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_AGING_EN_AGING_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_SA_SEARCH_EN_SA_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_1_STEP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_2_STEPS_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_4_STEPS_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_8_STEPS_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_16_STEPS_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_32_STEPS_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_64_STEPS_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_128_STEPS_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_256_STEPS_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_512_STEPS_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_MAX_1K_STEPS_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_TABLE_SIZE_MAX_32_ENTRIES_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_TABLE_SIZE_MAX_64_ENTRIES_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_TABLE_SIZE_MAX_128_ENTRIES_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_TABLE_SIZE_MAX_256_ENTRIES_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_TABLE_SIZE_MAX_512_ENTRIES_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_TABLE_SIZE_MAX_1K_ENTRIES_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_TABLE_SIZE_MAX_2K_ENTRIES_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_TABLE_SIZE_MAX_4K_ENTRIES_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_R2_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_R2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_OFFSET ( 0x00000024 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG ; +#else +typedef struct +{ + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sa_search_en */ + uint32_t sa_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* aging_en */ + uint32_t aging_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* five_tuple_en */ + uint32_t five_tuple_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL0_CAM_CFG */ +/* Look-up table 0: CAM configurations (base addr + cam extention enable) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_OFFSET ( 0x00000028 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL1_CAM_CFG */ +/* Look-up table 1: CAM configurations (base CAM addr + CAM extention enable) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_OFFSET ( 0x0000002C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL2_CAM_CFG */ +/* Look-up table 2: CAM configurations (base addr + cam extention enable) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_OFFSET ( 0x00000030 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL3_CAM_CFG */ +/* Look-up table 3: CAM configurations (CAM base addr + CAM extention enable) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_OFFSET ( 0x00000034 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL4_CAM_CFG */ +/* Look-up table 4: CAM configurations (CAM base addr + CAM extention enable) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_OFFSET ( 0x00000038 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL5_CAM_CFG */ +/* Look-up table 5: CAM configurations (CAM base addr + CAM extention enable) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_OFFSET ( 0x0000003C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL6_CAM_CFG */ +/* Look-up table 6: CAM configurations (CAM base addr + CAM extention enable) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_OFFSET ( 0x00000040 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL7_CAM_CFG */ +/* Look-up table 7: CAM configurations (CAM base addr + CAM extention enable) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_OFFSET ( 0x00000044 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL8_CAM_CFG */ +/* Look-up table 8: CAM configurations (CAM base addr + CAM extention enable) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_OFFSET ( 0x00000048 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL9_CAM_CFG */ +/* Look-up table 9: CAM configurations (CAM base addr + CAM extention enable) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_OFFSET ( 0x0000004C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL0_LUT_CNXT_CFG */ +/* Look-up table 0: LUT Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_TWO_BYTES_ENTRY_SIZE_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_FOUR_BYTES_ENTRY_SIZE_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_INTERNAL_ENTRY_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_OFFSET ( 0x00000050 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL1_LUT_CNXT_CFG */ +/* Look-up table 1: LUT Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_TWO_BYTES_ENTRY_SIZE_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_FOUR_BYTES_ENTRY_SIZE_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_INTERNAL_ENTRY_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_OFFSET ( 0x00000054 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL2_LUT_CNXT_CFG */ +/* Look-up table 2: LUT Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_TWO_BYTES_ENTRY_SIZE_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_FOUR_BYTES_ENTRY_SIZE_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_INTERNAL_ENTRY_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_OFFSET ( 0x00000058 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL3_LUT_CNXT_CFG */ +/* Look-up table 3: LUT Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_TWO_BYTES_ENTRY_SIZE_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_FOUR_BYTES_ENTRY_SIZE_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_INTERNAL_ENTRY_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_OFFSET ( 0x0000005C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL4_LUT_CNXT_CFG */ +/* Look-up table 4: LUT Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_TWO_BYTES_ENTRY_SIZE_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_FOUR_BYTES_ENTRY_SIZE_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_INTERNAL_ENTRY_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_OFFSET ( 0x00000060 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL5_LUT_CNXT_CFG */ +/* Look-up table 5: LUT Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_TWO_BYTES_ENTRY_SIZE_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_FOUR_BYTES_ENTRY_SIZE_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_INTERNAL_ENTRY_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_OFFSET ( 0x00000064 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL6_LUT_CNXT_CFG */ +/* Look-up table 6: LUT Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_TWO_BYTES_ENTRY_SIZE_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_FOUR_BYTES_ENTRY_SIZE_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_INTERNAL_ENTRY_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_RESREVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_RESREVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_OFFSET ( 0x00000068 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL7_LUT_CNXT_CFG */ +/* Look-up table 7: LUT Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_TWO_BYTES_ENTRY_SIZE_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_FOUR_BYTES_ENTRY_SIZE_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_INTERNAL_ENTRY_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_OFFSET ( 0x0000006C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL8_LUT_CNXT_CFG */ +/* Look-up table 8: LUT Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_TWO_BYTES_ENTRY_SIZE_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_FOUR_BYTES_ENTRY_SIZE_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_INTERNAL_ENTRY_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_OFFSET ( 0x00000070 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL9_LUT_CNXT_CFG */ +/* Look-up table 9: LUT Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_ONE_BYTE_ENTRY_SIZE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_TWO_BYTES_ENTRY_SIZE_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_FOUR_BYTES_ENTRY_SIZE_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_CNXT_ENTRY_SIZE_INTERNAL_ENTRY_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_OFFSET ( 0x00000074 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_entry_size */ + uint32_t cnxt_entry_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL0_CAM_CNXT_CFG */ +/* Look-up table 0: CAM Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_OFFSET ( 0x0000007C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL1_CAM_CNXT_CFG */ +/* Look-up table 1: CAM Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_OFFSET ( 0x00000080 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL2_CAM_CNXT_CFG */ +/* Look-up table 2: CAM Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_OFFSET ( 0x00000084 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL3_CAM_CNXT_CFG */ +/* Look-up table 3: CAM Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_OFFSET ( 0x00000088 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL4_CAM_CNXT_CFG */ +/* Look-up table 4: CAM Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_OFFSET ( 0x0000008C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL5_CAM_CNXT_CFG */ +/* Look-up table 5: CAM Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_OFFSET ( 0x00000090 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL6_CAM_CNXT_CFG */ +/* Look-up table 6: CAM Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_OFFSET ( 0x00000094 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL7_CAM_CNXT_CFG */ +/* Look-up table 7: CAM Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_OFFSET ( 0x00000098 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL8_CAM_CNXT_CFG */ +/* Look-up table 8: CAM Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_OFFSET ( 0x0000009C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL9_CAM_CNXT_CFG */ +/* Look-up table 9: CAM Context Table configurations (base addr + entry context size) */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_OFFSET ( 0x00000100 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG ; +#else +typedef struct +{ + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL0_KEY_CFG */ +/* Look-up table 0: Search key configuration parameters. Key is based on two parts, e */ +/* ach part includes 60-bit that generated on Parser Results (64 byte) array. The genera */ +/* tion of each part requries start_offset (from which word start collect 60 bit) and sh */ +/* ift_rotate paramter (in order to get flexibilty on variety of search key generation). */ +/* Each part has its own mask (mask low on 32 low bits and mask high on 28 high bits), */ +/* then two parts are ORed. There is an option to add source port/GEM flow ID/WAN (tak */ +/* en from Ingres Header Descriptor) to LSB of the search key. */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_KEY_EXT_NO_EXT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_KEY_EXT_NO_EXT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_KEY_EXT_SP_ADD_EN_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_KEY_EXT_GEMFID_ADD_EN_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_KEY_EXT_WAN_ADD_EN_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P1_RESERVED_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_START_OFFSET_P0_RESERVED_VALUE ( 0xF ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_OFFSET ( 0x00000104 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG ; +#else +typedef struct +{ + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL0_KEY_P0_MASKL */ +/* Look-up table 0: MAsk on bits [31:0] of Part 0 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL_OFFSET ( 0x00000108 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL0_KEY_P0_MASKH */ +/* Look-up table 0: Mask on bits [59:32] of Part 0 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_RESERVED_RSV_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_RESERVED_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_OFFSET ( 0x0000010C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL0_KEY_P1_MASKL */ +/* Look-up table 0: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL_OFFSET ( 0x00000110 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL0_KEY_P1_MASKH */ +/* Look-up table 0: Mask on bits [59:32] of Part 1 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_RESERVED_RSV_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_RESERVED_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_OFFSET ( 0x00000114 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL1_KEY_CFG */ +/* Look-up table 1: Search key configuration parameters. Key is based on two parts, e */ +/* ach part includes 60-bit that generated on Parser Results (64 byte) array. The genera */ +/* tion of each part requries start_offset (from which word start collect 60 bit) and sh */ +/* ift_rotate paramter (in order to get flexibilty on variety of search key generation). */ +/* Each part has its own mask (mask low on 32 low bits and mask high on 28 high bits), */ +/* then two parts are ORed. There is an option to add source port (taken from Ingres H */ +/* eader Descriptor) to 5 MSB of the search key. */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_KEY_EXT_NO_EXT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_KEY_EXT_NO_EXT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_KEY_EXT_SP_ADD_EN_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_KEY_EXT_GEMFID_ADD_EN_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_KEY_EXT_WAN_ADD_EN_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P1_RESERVED_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_START_OFFSET_P0_RESERVED_VALUE ( 0xF ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_OFFSET ( 0x00000118 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG ; +#else +typedef struct +{ + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL1_KEY_P0_MASKL */ +/* Look-up table 0: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL_OFFSET ( 0x0000011C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL1_KEY_P0_MASKH */ +/* Look-up table 0: Mask on bits [59:32] of Part 0 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_RESERVED_RSV_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_RESERVED_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_OFFSET ( 0x00000120 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL1_KEY_P1_MASKL */ +/* Look-up table 1: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL_OFFSET ( 0x00000124 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL1_KEY_P1_MASKH */ +/* Look-up table 1: Mask on bits [59:32] of Part 1 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_RESERVED_RSV_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_RESERVED_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_OFFSET ( 0x00000128 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL2_KEY_CFG */ +/* Look-up table 2: Search key configuration parameters. Key is based on two parts, e */ +/* ach part includes 60-bit that generated on Parser Results (64 byte) array. The genera */ +/* tion of each part requries start_offset (from which word start collect 60 bit) and sh */ +/* ift_rotate paramter (in order to get flexibilty on variety of search key generation). */ +/* Each part has its own mask (mask low on 32 low bits and mask high on 28 high bits), */ +/* then two parts are ORed. There is an option to add source port (taken from Ingres H */ +/* eader Descriptor) to 5 MSB of the search key. */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_KEY_EXT_NO_EXT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_KEY_EXT_NO_EXT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_KEY_EXT_SP_ADD_EN_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_KEY_EXT_GEMFID_ADD_EN_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_KEY_EXT_WAN_ADD_EN_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P1_RESERVED_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_START_OFFSET_P0_RESERVED_VALUE ( 0xF ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_OFFSET ( 0x0000012C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG ; +#else +typedef struct +{ + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL2_KEY_P0_MASKL */ +/* Look-up table 0: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL_OFFSET ( 0x00000130 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL2_KEY_P0_MASKH */ +/* Look-up table 2: Mask on bits [59:32] of Part 0 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_RESERVED_RSV_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_RESERVED_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_OFFSET ( 0x00000134 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL2_KEY_P1_MASKL */ +/* Look-up table 1: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL_OFFSET ( 0x00000138 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL2_KEY_P1_MASKH */ +/* Look-up table 3: Mask on bits [59:32] of Part 1 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_RESERVED_RSV_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_RESERVED_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_OFFSET ( 0x0000013C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL3_KEY_CFG */ +/* Look-up table 2: Search key configuration parameters. Key is based on two parts, e */ +/* ach part includes 60-bit that generated on Parser Results (64 byte) array. The genera */ +/* tion of each part requries start_offset (from which word start collect 60 bit) and sh */ +/* ift_rotate paramter (in order to get flexibilty on variety of search key generation). */ +/* Each part has its own mask (mask low on 32 low bits and mask high on 28 high bits), */ +/* then two parts are ORed. There is an option to add source port (taken from Ingres H */ +/* eader Descriptor) to 5 MSB of the search key. */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_KEY_EXT_NO_EXT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_KEY_EXT_NO_EXT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_KEY_EXT_SP_ADD_EN_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_KEY_EXT_GEMFID_ADD_EN_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_KEY_EXT_WAN_ADD_EN_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P1_RESERVED_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_START_OFFSET_P0_RESERVED_VALUE ( 0xF ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_OFFSET ( 0x00000140 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG ; +#else +typedef struct +{ + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL3_KEY_P0_MASKL */ +/* Look-up table 3: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL_OFFSET ( 0x00000144 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL3_KEY_P0_MASKH */ +/* Look-up table 2: Mask on bits [59:32] of Part 0 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_RESERVED_RSV_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_RESERVED_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_OFFSET ( 0x00000148 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL3_KEY_P1_MASKL */ +/* Look-up table 1: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL_OFFSET ( 0x0000014C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL3_KEY_P1_MASKH */ +/* Look-up table 3: Mask on bits [59:32] of Part 1 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_OFFSET ( 0x00000150 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL4_KEY_CFG */ +/* Look-up table 4: Search key configuration parameters. Key is based on two parts, e */ +/* ach part includes 60-bit that generated on Parser Results (64 byte) array. The genera */ +/* tion of each part requries start_offset (from which word start collect 60 bit) and sh */ +/* ift_rotate paramter (in order to get flexibilty on variety of search key generation). */ +/* Each part has its own mask (mask low on 32 low bits and mask high on 28 high bits), */ +/* then two parts are ORed. There is an option to add source port (taken from Ingres H */ +/* eader Descriptor) to 5 MSB of the search key. */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_KEY_EXT_NO_EXT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_KEY_EXT_NO_EXT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_KEY_EXT_SP_ADD_EN_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_KEY_EXT_GEMFID_ADD_EN_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_KEY_EXT_WAN_ADD_EN_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P1_RESERVED_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_START_OFFSET_P0_RESERVED_VALUE ( 0xF ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_OFFSET ( 0x00000154 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG ; +#else +typedef struct +{ + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL4_KEY_P0_MASKL */ +/* Look-up table 4: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL_OFFSET ( 0x00000158 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL4_KEY_P0_MASKH */ +/* Look-up table 4: Mask on bits [59:32] of Part 0 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_OFFSET ( 0x0000015C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL4_KEY_P1_MASKL */ +/* Look-up table 4: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL_OFFSET ( 0x00000160 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL4_KEY_P1_MASKH */ +/* Look-up table 4: Mask on bits [59:32] of Part 1 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_OFFSET ( 0x00000164 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL5_KEY_CFG */ +/* Look-up table 5: Search key configuration parameters. Key is based on two parts, e */ +/* ach part includes 60-bit that generated on Parser Results (64 byte) array. The genera */ +/* tion of each part requries start_offset (from which word start collect 60 bit) and sh */ +/* ift_rotate paramter (in order to get flexibilty on variety of search key generation). */ +/* Each part has its own mask (mask low on 32 low bits and mask high on 28 high bits), */ +/* then two parts are ORed. There is an option to add source port (taken from Ingres H */ +/* eader Descriptor) to 5 MSB of the search key. */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_KEY_EXT_NO_EXT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_KEY_EXT_NO_EXT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_KEY_EXT_SP_ADD_EN_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_KEY_EXT_GEMFID_ADD_EN_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_KEY_EXT_WAN_ADD_EN_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P1_RESERVED_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_START_OFFSET_P0_RESERVED_VALUE ( 0xF ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_OFFSET ( 0x00000168 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG ; +#else +typedef struct +{ + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL5_KEY_P0_MASKL */ +/* Look-up table 4: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL_OFFSET ( 0x0000016C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL5_KEY_P0_MASKH */ +/* Look-up table 5: Mask on bits [59:32] of Part 0 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_OFFSET ( 0x00000170 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL5_KEY_P1_MASKL */ +/* Look-up table 5: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL_OFFSET ( 0x00000174 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL5_KEY_P1_MASKH */ +/* Look-up table 5: Mask on bits [59:32] of Part 1 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_OFFSET ( 0x00000178 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL6_KEY_CFG */ +/* Look-up table 6: Search key configuration parameters. Key is based on two parts, e */ +/* ach part includes 60-bit that generated on Parser Results (64 byte) array. The genera */ +/* tion of each part requries start_offset (from which word start collect 60 bit) and sh */ +/* ift_rotate paramter (in order to get flexibilty on variety of search key generation). */ +/* Each part has its own mask (mask low on 32 low bits and mask high on 28 high bits), */ +/* then two parts are ORed. There is an option to add source port (taken from Ingres H */ +/* eader Descriptor) to 5 MSB of the search key. */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_KEY_EXT_NO_EXT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_KEY_EXT_NO_EXT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_KEY_EXT_SP_ADD_EN_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_KEY_EXT_GEMFID_ADD_EN_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_KEY_EXT_WAN_ADD_EN_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P1_RESERVED_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_START_OFFSET_P0_RESERVED_VALUE ( 0xF ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_OFFSET ( 0x0000017C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG ; +#else +typedef struct +{ + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL6_KEY_P0_MASKL */ +/* Look-up table 6: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL_OFFSET ( 0x00000180 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL6_KEY_P0_MASKH */ +/* Look-up table 6: Mask on bits [59:32] of Part 0 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_OFFSET ( 0x00000184 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL6_KEY_P1_MASKL */ +/* Look-up table 6: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL_OFFSET ( 0x00000188 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL6_KEY_P1_MASKH */ +/* Look-up table 6: Mask on bits [59:32] of Part 1 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_OFFSET ( 0x0000018C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL7_KEY_CFG */ +/* Look-up table 7: Search key configuration parameters. Key is based on two parts, e */ +/* ach part includes 60-bit that generated on Parser Results (64 byte) array. The genera */ +/* tion of each part requries start_offset (from which word start collect 60 bit) and sh */ +/* ift_rotate paramter (in order to get flexibilty on variety of search key generation). */ +/* Each part has its own mask (mask low on 32 low bits and mask high on 28 high bits), */ +/* then two parts are ORed. There is an option to add source port (taken from Ingres H */ +/* eader Descriptor) to 5 MSB of the search key. */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_KEY_EXT_NO_EXT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_KEY_EXT_NO_EXT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_KEY_EXT_SP_ADD_EN_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_KEY_EXT_GEMFID_ADD_EN_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_KEY_EXT_WAN_ADD_EN_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P1_RESERVED_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_START_OFFSET_P0_RESERVED_VALUE ( 0xF ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_OFFSET ( 0x00000190 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG ; +#else +typedef struct +{ + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL7_KEY_P0_MASKL */ +/* Look-up table 7: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL_OFFSET ( 0x00000194 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL7_KEY_P0_MASKH */ +/* Look-up table 7: Mask on bits [59:32] of Part 0 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_OFFSET ( 0x00000198 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL7_KEY_P1_MASKL */ +/* Look-up table 7: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL_OFFSET ( 0x0000019C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL7_KEY_P1_MASKH */ +/* Look-up table 7: Mask on bits [59:32] of Part 1 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_OFFSET ( 0x00000200 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL8_KEY_CFG */ +/* Look-up table 8: Search key configuration parameters. Key is based on two parts, e */ +/* ach part includes 60-bit that generated on Parser Results (64 byte) array. The genera */ +/* tion of each part requries start_offset (from which word start collect 60 bit) and sh */ +/* ift_rotate paramter (in order to get flexibilty on variety of search key generation). */ +/* Each part has its own mask (mask low on 32 low bits and mask high on 28 high bits), */ +/* then two parts are ORed. There is an option to add source port (taken from Ingres H */ +/* eader Descriptor) to 5 MSB of the search key. */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_KEY_EXT_NO_EXT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_KEY_EXT_NO_EXT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_KEY_EXT_SP_ADD_EN_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_KEY_EXT_GEMFID_ADD_EN_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_KEY_EXT_WAN_ADD_EN_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P1_RESERVED_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_START_OFFSET_P0_RESERVED_VALUE ( 0xF ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_OFFSET ( 0x00000204 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG ; +#else +typedef struct +{ + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL8_KEY_P0_MASKL */ +/* Look-up table 8: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL_OFFSET ( 0x00000208 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL8_KEY_P0_MASKH */ +/* Look-up table 8: Mask on bits [59:32] of Part 0 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_OFFSET ( 0x0000020C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL8_KEY_P1_MASKL */ +/* Look-up table 8: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL_OFFSET ( 0x00000210 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL8_KEY_P1_MASKH */ +/* Look-up table 8: Mask on bits [59:32] of Part 1 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_OFFSET ( 0x00000214 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL9_KEY_CFG */ +/* Look-up table 9: Search key configuration parameters. Key is based on two parts, e */ +/* ach part includes 60-bit that generated on Parser Results (64 byte) array. The genera */ +/* tion of each part requries start_offset (from which word start collect 60 bit) and sh */ +/* ift_rotate paramter (in order to get flexibilty on variety of search key generation). */ +/* Each part has its own mask (mask low on 32 low bits and mask high on 28 high bits), */ +/* then two parts are ORed. There is an option to add source port (taken from Ingres H */ +/* eader Descriptor) to 5 MSB of the search key. */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_KEY_EXT_NO_EXT_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_KEY_EXT_NO_EXT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_KEY_EXT_SP_ADD_EN_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_KEY_EXT_GEMFID_ADD_EN_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_KEY_EXT_WAN_ADD_EN_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P1_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P1_RESERVED_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_4_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_8_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_12_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_16_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_20_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_24_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_28_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_32_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_36_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_40_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_44_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_48_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_52_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_56_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_SHIFT_OFFSET_P0_SHIFT_60_VALUE ( 0xF ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_0_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_1_VALUE ( 0x1 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_2_VALUE ( 0x2 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_3_VALUE ( 0x3 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_4_VALUE ( 0x4 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_5_VALUE ( 0x5 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_6_VALUE ( 0x6 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_7_VALUE ( 0x7 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_8_VALUE ( 0x8 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_9_VALUE ( 0x9 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_10_VALUE ( 0xA ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_11_VALUE ( 0xB ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_12_VALUE ( 0xC ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_13_VALUE ( 0xD ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_START_14_VALUE ( 0xE ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_START_OFFSET_P0_RESERVED_VALUE ( 0xF ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_OFFSET ( 0x00000218 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG ; +#else +typedef struct +{ + /* start_offset_p0 */ + uint32_t start_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p0 */ + uint32_t shift_offset_p0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* start_offset_p1 */ + uint32_t start_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* shift_offset_p1 */ + uint32_t shift_offset_p1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_EXT */ + uint32_t key_ext : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t resreved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL9_KEY_P0_MASKL */ +/* Look-up table 9: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL_OFFSET ( 0x0000021C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL9_KEY_P0_MASKH */ +/* Look-up table 9: Mask on bits [59:32] of Part 0 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_OFFSET ( 0x00000220 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL9_KEY_P1_MASKL */ +/* Look-up table 9: Mask on bits [31:0] of Part 1 Key is based on two parts, each par */ +/* t includes 60-bit that generated on Parser Results (64 byte) array. Each Part has i */ +/* ts own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL_MASKL_MASKL_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL_MASKL_MASKL_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL_OFFSET ( 0x00000224 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL ; +#else +typedef struct +{ + /* MASKL */ + uint32_t maskl : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL9_KEY_P1_MASKH */ +/* Look-up table 9: Mask on bits [59:32] of Part 1 Key is based on two parts, each pa */ +/* rt includes 60-bit that generated on Parser Results (64 byte) array. Each Part has */ +/* its own mask that represnted by two registers: MASKL and MASKH */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_RESERVED_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_MASKH_MASKH_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_MASKH_MASKH_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_OFFSET ( 0x00000228 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH ; +#else +typedef struct +{ + /* MASKH */ + uint32_t maskh : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL0_GL_MASK */ +/* Look-up table 0: Global Mask on 60-bits Global Mask is applied in two cases: (1 */ +/* ) On general key generation, the global mask is ANDed with final result of key (after */ +/* choosing start offset, shift offsets and ORing of two parts of the key). (2) On */ +/* comparison between HASH result to LUT entry that done by look-up engine. Each Glob */ +/* al Mask is represnted by one register in bibble (4-bit) resolution, i.e. value of glo */ +/* bal_mask register = 0x13 means that the 60-bit key will be masked with following: 0xF */ +/* 00FF */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_OFFSET ( 0x0000022C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK ; +#else +typedef struct +{ + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL1_GL_MASK */ +/* Look-up table 1: Global Mask on 60-bits Global Mask is applied in two cases: (1 */ +/* ) On general key generation, the global mask is ANDed with final result of key (after */ +/* choosing start offset, shift offsets and ORing of two parts of the key). (2) On */ +/* comparison between HASH result to LUT entry that done by look-up engine. Each Glob */ +/* al Mask is represnted by one register in bibble (4-bit) resolution, i.e. value of glo */ +/* bal_mask register = 0x13 means that the 60-bit key will be masked with following: 0xF */ +/* 00FF */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_OFFSET ( 0x00000230 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK ; +#else +typedef struct +{ + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL2_GL_MASK */ +/* Look-up table 2: Global Mask on 60-bits Global Mask is applied in two cases: (1 */ +/* ) On general key generation, the global mask is ANDed with final result of key (after */ +/* choosing start offset, shift offsets and ORing of two parts of the key). (2) On */ +/* comparison between HASH result to LUT entry that done by look-up engine. Each Glob */ +/* al Mask is represnted by one register in bibble (4-bit) resolution, i.e. value of glo */ +/* bal_mask register = 0x13 means that the 60-bit key will be masked with following: 0xF */ +/* 00FF */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_OFFSET ( 0x00000234 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK ; +#else +typedef struct +{ + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL3_GL_MASK */ +/* Look-up table 3: Global Mask on 60-bits Global Mask is applied in two cases: (1 */ +/* ) On general key generation, the global mask is ANDed with final result of key (after */ +/* choosing start offset, shift offsets and ORing of two parts of the key). (2) On */ +/* comparison between HASH result to LUT entry that done by look-up engine. Each Glob */ +/* al Mask is represnted by one register in bibble (4-bit) resolution, i.e. value of glo */ +/* bal_mask register = 0x13 means that the 60-bit key will be masked with following: 0xF */ +/* 00FF */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_OFFSET ( 0x00000238 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK ; +#else +typedef struct +{ + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL4_GL_MASK */ +/* Look-up table 4: Global Mask on 60-bits Global Mask is applied in two cases: (1 */ +/* ) On general key generation, the global mask is ANDed with final result of key (after */ +/* choosing start offset, shift offsets and ORing of two parts of the key). (2) On */ +/* comparison between HASH result to LUT entry that done by look-up engine. Each Glob */ +/* al Mask is represnted by one register in bibble (4-bit) resolution, i.e. value of glo */ +/* bal_mask register = 0x13 means that the 60-bit key will be masked with following: 0xF */ +/* 00FF */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_OFFSET ( 0x0000023C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK ; +#else +typedef struct +{ + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL5_GL_MASK */ +/* Look-up table 5: Global Mask on 60-bits Global Mask is applied in two cases: (1 */ +/* ) On general key generation, the global mask is ANDed with final result of key (after */ +/* choosing start offset, shift offsets and ORing of two parts of the key). (2) On */ +/* comparison between HASH result to LUT entry that done by look-up engine. Each Glob */ +/* al Mask is represnted by one register in bibble (4-bit) resolution, i.e. value of glo */ +/* bal_mask register = 0x13 means that the 60-bit key will be masked with following: 0xF */ +/* 00FF */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_OFFSET ( 0x00000240 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK ; +#else +typedef struct +{ + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL6_GL_MASK */ +/* Look-up table 6: Global Mask on 60-bits Global Mask is applied in two cases: (1 */ +/* ) On general key generation, the global mask is ANDed with final result of key (after */ +/* choosing start offset, shift offsets and ORing of two parts of the key). (2) On */ +/* comparison between HASH result to LUT entry that done by look-up engine. Each Glob */ +/* al Mask is represnted by one register in bibble (4-bit) resolution, i.e. value of glo */ +/* bal_mask register = 0x13 means that the 60-bit key will be masked with following: 0xF */ +/* 00FF */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_OFFSET ( 0x00000244 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK ; +#else +typedef struct +{ + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL7_GL_MASK */ +/* Look-up table 7: Global Mask on 60-bits Global Mask is applied in two cases: (1 */ +/* ) On general key generation, the global mask is ANDed with final result of key (after */ +/* choosing start offset, shift offsets and ORing of two parts of the key). (2) On */ +/* comparison between HASH result to LUT entry that done by look-up engine. Each Glob */ +/* al Mask is represnted by one register in bibble (4-bit) resolution, i.e. value of glo */ +/* bal_mask register = 0x13 means that the 60-bit key will be masked with following: 0xF */ +/* 00FF */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_OFFSET ( 0x00000248 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK ; +#else +typedef struct +{ + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL8_GL_MASK */ +/* Look-up table 8: Global Mask on 60-bits Global Mask is applied in two cases: (1 */ +/* ) On general key generation, the global mask is ANDed with final result of key (after */ +/* choosing start offset, shift offsets and ORing of two parts of the key). (2) On */ +/* comparison between HASH result to LUT entry that done by look-up engine. Each Glob */ +/* al Mask is represnted by one register in bibble (4-bit) resolution, i.e. value of glo */ +/* bal_mask register = 0x13 means that the 60-bit key will be masked with following: 0xF */ +/* 00FF */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_OFFSET ( 0x0000024C ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK ; +#else +typedef struct +{ + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK ; +#endif + +/*****************************************************************************************/ +/* LKUP_TBL9_GL_MASK */ +/* Look-up table 9: Global Mask on 60-bits Global Mask is applied in two cases: (1 */ +/* ) On general key generation, the global mask is ANDed with final result of key (after */ +/* choosing start offset, shift offsets and ORing of two parts of the key). (2) On */ +/* comparison between HASH result to LUT entry that done by look-up engine. Each Glob */ +/* al Mask is represnted by one register in bibble (4-bit) resolution, i.e. value of glo */ +/* bal_mask register = 0x13 means that the 60-bit key will be masked with following: 0xF */ +/* 00FF */ +/*****************************************************************************************/ + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_R1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE ( 0x0 ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_MASK_NIBBLE_CODE_MASK_NIBBLE_CODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_OFFSET ( 0x00000250 ) + +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_ADDRESS ( IH_REGS_LOOKUP_CONFIGURATION_ADDRESS + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_OFFSET ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_READ( r ) READ_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_ADDRESS ), (r) ) +#define IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_WRITE( v ) WRITE_32( ( IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK ; +#else +typedef struct +{ + /* MASK_NIBBLE_CODE */ + uint32_t mask_nibble_code : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK ; +#endif + +/*****************************************************************************************/ +/* DA_FILT0_VAL_L */ +/* Config DA filter 31:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_OFFSET ( 0x00000000 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L ; +#else +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L ; +#endif + +/*****************************************************************************************/ +/* DA_FILT0_MASK_L */ +/* Config DA Filter mask 15:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_DA_FILT0_MASK_L_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_DA_FILT0_MASK_L_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_OFFSET ( 0x00000004 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_MASK_L */ + uint32_t da_filt0_mask_l : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L ; +#else +typedef struct +{ + /* DA_FILT_MASK_L */ + uint32_t da_filt0_mask_l : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L ; +#endif + +/*****************************************************************************************/ +/* DA_FILT0_CFG_H */ +/* DA Filter0 Value & Mask highest bits 15:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_DA_FILT_MASK_MSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_DA_FILT_MASK_MSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_DA_FILT_VAL_MSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_DA_FILT_VAL_MSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_OFFSET ( 0x00000008 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_MASK_MSB */ + uint32_t da_filt_mask_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_VAL_MSB */ + uint32_t da_filt_val_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H ; +#else +typedef struct +{ + /* DA_FILT_VAL_MSB */ + uint32_t da_filt_val_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_MASK_MSB */ + uint32_t da_filt_mask_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H ; +#endif + +/*****************************************************************************************/ +/* PARSER_CFG */ +/* Parser Configuration */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_EXCEPTION_EN_0_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_EXCEPTION_EN_0_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_PPP_CODE_1_IPV6_DEFAULT_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_PPP_CODE_1_IPV6_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_EXCEPTION_EN_RESET_VALUE ( 0xF ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_EXCEPTION_EN_RESET_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_TCP_FLAGS_FILT_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_TCP_FLAGS_FILT_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_OFFSET ( 0x0000000C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RESERVED */ + uint32_t reserved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exception_en_0 */ + uint32_t exception_en_0 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ppp_code_1_ipv6 */ + uint32_t ppp_code_1_ipv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EXCEPTION_EN */ + uint32_t exception_en : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TCP_FLAGS_TCP_FILTER */ + uint32_t tcp_flags_filt : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG ; +#else +typedef struct +{ + /* TCP_FLAGS_TCP_FILTER */ + uint32_t tcp_flags_filt : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EXCEPTION_EN */ + uint32_t exception_en : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ppp_code_1_ipv6 */ + uint32_t ppp_code_1_ipv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exception_en_0 */ + uint32_t exception_en_0 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESERVED */ + uint32_t reserved1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG ; +#endif + +/*****************************************************************************************/ +/* QTAG_Ethertype */ +/* Ethertype values to identify the presence of VLAN QTAG */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_0_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_OFFSET ( 0x00000010 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Ethertyp_for_Qtag_1 */ + uint32_t ethtype_qtag_1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethertyp_for_Qtag_0 */ + uint32_t ethtype_qtag_0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE ; +#else +typedef struct +{ + /* Ethertyp_for_Qtag_0 */ + uint32_t ethtype_qtag_0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ethertyp_for_Qtag_1 */ + uint32_t ethtype_qtag_1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE ; +#endif + +/*****************************************************************************************/ +/* QTAG_Nesting */ +/* Qtag Nesting config */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_RESERVED1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_RESERVED1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG5_NEST_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG5_NEST_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG4_NEST_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG4_NEST_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG3_NEST_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG3_NEST_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG2_NEST_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG2_NEST_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG1_NEST_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG1_NEST_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG0_NEST_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG0_NEST_DISABLED_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_OFFSET ( 0x00000014 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_5_Nesting_Config */ + uint32_t qtag5_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_4_Nesting_Config */ + uint32_t qtag4_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_3_Nesting_Config */ + uint32_t qtag3_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_2_Nesting_Config */ + uint32_t qtag2_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_1_Nesting_Config */ + uint32_t qtag1_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_0_Nesting_Config */ + uint32_t qtag0_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST ; +#else +typedef struct +{ + /* QTAG_0_Nesting_Config */ + uint32_t qtag0_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_1_Nesting_Config */ + uint32_t qtag1_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_2_Nesting_Config */ + uint32_t qtag2_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_3_Nesting_Config */ + uint32_t qtag3_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_4_Nesting_Config */ + uint32_t qtag4_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_5_Nesting_Config */ + uint32_t qtag5_nest : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST ; +#endif + +/*****************************************************************************************/ +/* Snap_organization_code */ +/* Identifies SNAP tunneling organization code */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_RESERVED1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_RESERVED1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_8021Q_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_8021Q_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_8021Q_ENABLED_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_RFC1042_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_RFC1042_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_RFC1042_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_CODE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_CODE_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_OFFSET ( 0x00000018 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* 802.1Q_ehternet_encapsulation */ + uint32_t en_8021q : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RFC1042_ethernet_encapsulation_enable */ + uint32_t en_rfc1042 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Organization_Code */ + uint32_t code : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE ; +#else +typedef struct +{ + /* Organization_Code */ + uint32_t code : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RFC1042_ethernet_encapsulation_enable */ + uint32_t en_rfc1042 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* 802.1Q_ehternet_encapsulation */ + uint32_t en_8021q : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE ; +#endif + +/*****************************************************************************************/ +/* User_Ethertype_configurtion_0_1 */ +/* Configures user Ethertype values */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_0_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_OFFSET ( 0x0000001C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* User_Ethertype_1 */ + uint32_t ethype_1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_0 */ + uint32_t ethype_0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1 ; +#else +typedef struct +{ + /* User_Ethertype_0 */ + uint32_t ethype_0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_1 */ + uint32_t ethype_1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1 ; +#endif + +/*****************************************************************************************/ +/* User_Ethertype_configurtion_2_3 */ +/* Configures user Ethertype values */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_3_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_3_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_2_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_2_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_OFFSET ( 0x00000020 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* User_Ethertype_3 */ + uint32_t ethype_3 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_2 */ + uint32_t ethype_2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3 ; +#else +typedef struct +{ + /* User_Ethertype_2 */ + uint32_t ethype_2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_3 */ + uint32_t ethype_3 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3 ; +#endif + +/*****************************************************************************************/ +/* User_Ethertype_Configuration */ +/* Configure protocol and enables user Ethertype */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_3_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_3_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_2_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_2_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_0_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_RSV_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_RSV_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_3_RESER_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_3_RESER_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_2_RESER_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_2_RESER_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_1_RESER_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_1_RESER_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_0_RESER_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_0_RESER_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_OFFSET ( 0x00000024 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* User_Ethertype_2_L3_Offset */ + uint32_t ethtype_user_offset_3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_2_L3_Offset */ + uint32_t ethtype_user_offset_2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_1_L3_Offset */ + uint32_t ethtype_user_offset_1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_0_L3_Offset */ + uint32_t ethtype_user_offset_0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_Enable */ + uint32_t ethtype_user_en : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_3 */ + uint32_t ethtype_user_prot_3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_2 */ + uint32_t ethtype_user_prot_2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_1 */ + uint32_t ethtype_user_prot_1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_0_protocol */ + uint32_t ethtype_user_prot_0 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG ; +#else +typedef struct +{ + /* User_Ethertype_0_protocol */ + uint32_t ethtype_user_prot_0 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_1 */ + uint32_t ethtype_user_prot_1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_2 */ + uint32_t ethtype_user_prot_2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_3 */ + uint32_t ethtype_user_prot_3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_Enable */ + uint32_t ethtype_user_en : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_0_L3_Offset */ + uint32_t ethtype_user_offset_0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_1_L3_Offset */ + uint32_t ethtype_user_offset_1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_2_L3_Offset */ + uint32_t ethtype_user_offset_2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_2_L3_Offset */ + uint32_t ethtype_user_offset_3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG ; +#endif + +/*****************************************************************************************/ +/* VID_Configuration_0_1 */ +/* Config VID Filter 0 & 1 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED_0_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_OFFSET ( 0x00000028 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* VID_1_Enable */ + uint32_t vid_1_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_1 */ + uint32_t vid_1 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_0_Enable */ + uint32_t vid_0_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_0 */ + uint32_t vid_0 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1 ; +#else +typedef struct +{ + /* VID_0 */ + uint32_t vid_0 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_0_Enable */ + uint32_t vid_0_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_1 */ + uint32_t vid_1 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_1_Enable */ + uint32_t vid_1_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1 ; +#endif + +/*****************************************************************************************/ +/* VID_Configuration_2_3 */ +/* Config VID Filter 2 & 3 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED_0_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_OFFSET ( 0x0000002C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* VID_3_Enable */ + uint32_t vid_3_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_3 */ + uint32_t vid_3 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_2_Enable */ + uint32_t vid_2_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_2 */ + uint32_t vid_2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3 ; +#else +typedef struct +{ + /* VID_2 */ + uint32_t vid_2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_2_Enable */ + uint32_t vid_2_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_3 */ + uint32_t vid_3 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_3_Enable */ + uint32_t vid_3_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3 ; +#endif + +/*****************************************************************************************/ +/* VID_Configuration_4_5 */ +/* Config VID Filter 4 & 5 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED_0_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_OFFSET ( 0x00000030 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* VID_5_Enable */ + uint32_t vid_5_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_5 */ + uint32_t vid_5 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_4_Enable */ + uint32_t vid_4_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_4 */ + uint32_t vid_4 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5 ; +#else +typedef struct +{ + /* VID_4 */ + uint32_t vid_4 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_4_Enable */ + uint32_t vid_4_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_5 */ + uint32_t vid_5 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_5_Enable */ + uint32_t vid_5_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5 ; +#endif + +/*****************************************************************************************/ +/* VID_Configuration_6_7 */ +/* Config VID Filter 6 & 7 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED_0_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_OFFSET ( 0x00000034 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* VID_7_Enable */ + uint32_t vid_7_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_7 */ + uint32_t vid_7 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_6_Enable */ + uint32_t vid_6_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_6 */ + uint32_t vid_6 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7 ; +#else +typedef struct +{ + /* VID_6 */ + uint32_t vid_6 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_6_Enable */ + uint32_t vid_6_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_7 */ + uint32_t vid_7 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_7_Enable */ + uint32_t vid_7_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7 ; +#endif + +/*****************************************************************************************/ +/* VID_Configuration_8_9 */ +/* Config VID Filter 8 & 9 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_VID_9_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_VID_9_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_VID_9_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_RESERVED_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_RESERVED_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_VID_9_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_VID_9_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_VID_8_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_VID_8_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_VID_8_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_RESERVED_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_RESERVED_0_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_VID_8_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_VID_8_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_OFFSET ( 0x00000038 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* VID_9_Enable */ + uint32_t vid_9_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_9 */ + uint32_t vid_9 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_8_Enable */ + uint32_t vid_8_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_8 */ + uint32_t vid_8 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9 ; +#else +typedef struct +{ + /* VID_8 */ + uint32_t vid_8 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_8_Enable */ + uint32_t vid_8_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_9 */ + uint32_t vid_9 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_9_Enable */ + uint32_t vid_9_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9 ; +#endif + +/*****************************************************************************************/ +/* VID_Configuration_10_11 */ +/* Config VID Filter 10 & 11 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_VID_11_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_VID_11_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_VID_11_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_RESERVED_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_RESERVED_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_VID_11_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_VID_11_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_VID_10_EN_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_VID_10_EN_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_VID_10_EN_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_RESERVED_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_RESERVED_0_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_VID_10_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_VID_10_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_OFFSET ( 0x0000003C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* VID_11_Enable */ + uint32_t vid_11_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_11 */ + uint32_t vid_11 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_10_Enable */ + uint32_t vid_10_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_10 */ + uint32_t vid_10 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11 ; +#else +typedef struct +{ + /* VID_10 */ + uint32_t vid_10 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_10_Enable */ + uint32_t vid_10_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_11 */ + uint32_t vid_11 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved_1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_11_Enable */ + uint32_t vid_11_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11 ; +#endif + +/*****************************************************************************************/ +/* User_defined_IP_Protocl */ +/* IP Protocols to be matched to IP Protocol field and to be indicated in the output sum */ +/* mary word */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_3_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_3_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_2_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_2_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_0_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_OFFSET ( 0x00000040 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* USER__IP_protocol_3 */ + uint32_t user_ip_prot_3 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USER_IP_protocol_2 */ + uint32_t user_ip_prot_2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USER_IP_protocol_1 */ + uint32_t user_ip_prot_1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USER_IP_protocol_0 */ + uint32_t user_ip_prot_0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT ; +#else +typedef struct +{ + /* USER_IP_protocol_0 */ + uint32_t user_ip_prot_0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USER_IP_protocol_1 */ + uint32_t user_ip_prot_1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USER_IP_protocol_2 */ + uint32_t user_ip_prot_2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USER__IP_protocol_3 */ + uint32_t user_ip_prot_3 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT ; +#endif + +/*****************************************************************************************/ +/* PPP_IP_Protocol_Code */ +/* PPP Protocol Code to indicate L3 is IP */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_1_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_1_RESET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_0_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_0_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_OFFSET ( 0x00000044 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PPP_Protocol_Code_1 */ + uint32_t ppp_code_1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PPP_Protocol_Code_0 */ + uint32_t ppp_code_0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE ; +#else +typedef struct +{ + /* PPP_Protocol_Code_0 */ + uint32_t ppp_code_0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PPP_Protocol_Code_1 */ + uint32_t ppp_code_1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE ; +#endif + +/*****************************************************************************************/ +/* IP_FILTER0_CFG */ +/* Config the IP Address filtering. Notice that the enable bit is located in the IP_FI */ +/* LTERS_CFG[4] */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_IP_ADDRESS_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_IP_ADDRESS_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_OFFSET ( 0x00000048 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IP_address */ + uint32_t ip_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG ; +#else +typedef struct +{ + /* IP_address */ + uint32_t ip_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG ; +#endif + +/*****************************************************************************************/ +/* IP_FILTER1_CFG */ +/* Config the IP Address filtering. Notice that the enable bit is located in the IP_FI */ +/* LTERS_CFG[5] */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_IP_ADDRESS_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_IP_ADDRESS_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_OFFSET ( 0x0000004C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IP_address */ + uint32_t ip_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG ; +#else +typedef struct +{ + /* IP_address */ + uint32_t ip_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG ; +#endif + +/*****************************************************************************************/ +/* IP_FILTER2_CFG */ +/* Config the IP Address filtering. Notice that the enable bit is located in the IP_FI */ +/* LTERS_CFG[6] */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG_IP_ADDRESS_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG_IP_ADDRESS_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG_OFFSET ( 0x00000050 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IP_address */ + uint32_t ip_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG ; +#else +typedef struct +{ + /* IP_address */ + uint32_t ip_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG ; +#endif + +/*****************************************************************************************/ +/* IP_FILTER3_CFG */ +/* Config the IP Address filtering. Notice that the enable bit is located in the IP_FI */ +/* LTERS_CFG[7] */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG_IP_ADDRESS_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG_IP_ADDRESS_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG_OFFSET ( 0x00000054 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IP_address */ + uint32_t ip_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG ; +#else +typedef struct +{ + /* IP_address */ + uint32_t ip_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG ; +#endif + +/*****************************************************************************************/ +/* DA_FILT1_VAL_L */ +/* Config DA filter1 31:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_OFFSET ( 0x00000058 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L ; +#else +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L ; +#endif + +/*****************************************************************************************/ +/* DA_FILT1_MASK_L */ +/* Config DA Filter1 mask 31:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_DA_FILT0_MASK_L_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_DA_FILT0_MASK_L_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_OFFSET ( 0x0000005C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_MASK_L */ + uint32_t da_filt0_mask_l : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L ; +#else +typedef struct +{ + /* DA_FILT_MASK_L */ + uint32_t da_filt0_mask_l : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L ; +#endif + +/*****************************************************************************************/ +/* DA_FILT1_CFG_H */ +/* DA Filter1 Value & Mask highest bits 15:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_DA_FILT_MASK_MSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_DA_FILT_MASK_MSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_DA_FILT_VAL_MSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_DA_FILT_VAL_MSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_OFFSET ( 0x00000060 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_MASK_MSB */ + uint32_t da_filt_mask_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_VAL_MSB */ + uint32_t da_filt_val_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H ; +#else +typedef struct +{ + /* DA_FILT_VAL_MSB */ + uint32_t da_filt_val_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_MASK_MSB */ + uint32_t da_filt_mask_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H ; +#endif + +/*****************************************************************************************/ +/* DA_FILT2_VAL_L */ +/* Config DA filter2 31:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_OFFSET ( 0x00000064 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L ; +#else +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L ; +#endif + +/*****************************************************************************************/ +/* DA_FILT2_VAL_H */ +/* Config DA filter2 47:32 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_RSV_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_RSV_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_OFFSET ( 0x00000068 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H ; +#else +typedef struct +{ + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H ; +#endif + +/*****************************************************************************************/ +/* DA_FILT3_VAL_L */ +/* Config DA filter3 31:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_OFFSET ( 0x0000006C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L ; +#else +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L ; +#endif + +/*****************************************************************************************/ +/* DA_FILT3_VAL_H */ +/* Config DA filter3 47:32 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_RSV_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_RSV_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_OFFSET ( 0x00000070 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H ; +#else +typedef struct +{ + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H ; +#endif + +/*****************************************************************************************/ +/* DA_FILT4_VAL_L */ +/* Config DA filter4 31:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_OFFSET ( 0x00000074 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L ; +#else +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L ; +#endif + +/*****************************************************************************************/ +/* DA_FILT4_VAL_H */ +/* Config DA Filter4 47:32 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_RSV_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_RSV_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_OFFSET ( 0x00000078 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H ; +#else +typedef struct +{ + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H ; +#endif + +/*****************************************************************************************/ +/* DA_FILT5_VAL_L */ +/* Config DA filter5 31:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_OFFSET ( 0x0000007C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L ; +#else +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L ; +#endif + +/*****************************************************************************************/ +/* DA_FILT5_VAL_H */ +/* Config DA Filter5 47:32 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_RSV_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_RSV_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_OFFSET ( 0x00000080 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H ; +#else +typedef struct +{ + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H ; +#endif + +/*****************************************************************************************/ +/* DA_FILT_VALID_CFG */ +/* Valid configuration of all DA filters: there is a dedicated bit per each DA filter th */ +/* at says if the current DA filter is valid or not. Used for on-the-fly DA filter value */ +/* (mask) modifications, since the DA filter parameters are not assigned on single SW r */ +/* egister. */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_RSV_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_RSV_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT7_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT7_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT7_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT6_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT6_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT6_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT5_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT5_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT5_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT4_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT4_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT4_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT3_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT3_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT3_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT2_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT2_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT2_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT1_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT1_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT1_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT0_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT0_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_DA_FILT0_VALID_VALID_VALUE ( 0x1 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_OFFSET ( 0x00000084 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT7_VALID */ + uint32_t da_filt7_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT6_VALID */ + uint32_t da_filt6_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT5_VALID */ + uint32_t da_filt5_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT4_VALID */ + uint32_t da_filt4_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT3_VALID */ + uint32_t da_filt3_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT2_VALID */ + uint32_t da_filt2_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT1_VALID */ + uint32_t da_filt1_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT0_VALID */ + uint32_t da_filt0_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG ; +#else +typedef struct +{ + /* DA_FILT0_VALID */ + uint32_t da_filt0_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT1_VALID */ + uint32_t da_filt1_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT2_VALID */ + uint32_t da_filt2_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT3_VALID */ + uint32_t da_filt3_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT4_VALID */ + uint32_t da_filt4_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT5_VALID */ + uint32_t da_filt5_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT6_VALID */ + uint32_t da_filt6_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT7_VALID */ + uint32_t da_filt7_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG ; +#endif + +/*****************************************************************************************/ +/* IP_FILTER0_MASK_CFG */ +/* Config the IP Address masking. Notice that the enable bit is located in the IP_FILT */ +/* ERS_CFG[4] */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_IP_ADDRESS_MASK_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_IP_ADDRESS_MASK_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_OFFSET ( 0x00000088 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IP_address_mask */ + uint32_t ip_address_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG ; +#else +typedef struct +{ + /* IP_address_mask */ + uint32_t ip_address_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG ; +#endif + +/*****************************************************************************************/ +/* IP_FILTER1_MASK_CFG */ +/* Config the IP Address masking. Notice that the enable bit is located in the IP_FILT */ +/* ERS_CFG[5] */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_IP_ADDRESS_MASK_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_IP_ADDRESS_MASK_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_OFFSET ( 0x0000008C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IP_address_mask */ + uint32_t ip_address_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG ; +#else +typedef struct +{ + /* IP_address_mask */ + uint32_t ip_address_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG ; +#endif + +/*****************************************************************************************/ +/* IP_FILTER2_MASK_CFG */ +/* Config the IP Address masking. Notice that the enable bit is located in the IP_FILT */ +/* ERS_CFG[6] */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG_IP_ADDRESS_MASK_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG_IP_ADDRESS_MASK_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG_OFFSET ( 0x00000090 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IP_address_mask */ + uint32_t ip_address_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG ; +#else +typedef struct +{ + /* IP_address_mask */ + uint32_t ip_address_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG ; +#endif + +/*****************************************************************************************/ +/* IP_FILTER3_MASK_CFG */ +/* Config the IP Address masking. Notice that the enable bit is located in the IP_FILT */ +/* ERS_CFG[7] */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG_IP_ADDRESS_MASK_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG_IP_ADDRESS_MASK_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG_OFFSET ( 0x00000094 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IP_address_mask */ + uint32_t ip_address_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG ; +#else +typedef struct +{ + /* IP_address_mask */ + uint32_t ip_address_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG ; +#endif + +/*****************************************************************************************/ +/* IP_FILTERS_CFG */ +/* IP Address Filters (0..3) configurations: (1) SIP or DIP selection config per each */ +/* filter (1) Valid bit per each filter */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_RSV_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_RSV_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_RSV_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_DIP_EN_SIP_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_DIP_EN_SIP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_DIP_EN_DIP_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_DIP_EN_SIP_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_DIP_EN_SIP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_DIP_EN_DIP_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_DIP_EN_SIP_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_DIP_EN_SIP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_DIP_EN_DIP_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_DIP_EN_SIP_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_DIP_EN_SIP_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_DIP_EN_DIP_VALUE ( 0x1 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_OFFSET ( 0x00000098 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER3_VALID */ + uint32_t ip_filter3_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER2_VALID */ + uint32_t ip_filter2_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER1_VALID */ + uint32_t ip_filter1_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER0_VALID */ + uint32_t ip_filter0_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER3_DIP_EN */ + uint32_t ip_filter3_dip_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER2_DIP_EN */ + uint32_t ip_filter2_dip_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER1_DIP_EN */ + uint32_t ip_filter1_dip_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER0_DIP_EN */ + uint32_t ip_filter0_dip_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG ; +#else +typedef struct +{ + /* IP_FILTER0_DIP_EN */ + uint32_t ip_filter0_dip_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER1_DIP_EN */ + uint32_t ip_filter1_dip_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER2_DIP_EN */ + uint32_t ip_filter2_dip_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER3_DIP_EN */ + uint32_t ip_filter3_dip_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER0_VALID */ + uint32_t ip_filter0_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER1_VALID */ + uint32_t ip_filter1_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER2_VALID */ + uint32_t ip_filter2_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER3_VALID */ + uint32_t ip_filter3_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG ; +#endif + +/*****************************************************************************************/ +/* GRE_PROTOCOL_CFG */ +/* GRE Protocol */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_RSV_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_RSV_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_RSV_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_GRE_PROTOCOL_PROTOCOL_VALUE ( 0x880B ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_GRE_PROTOCOL_PROTOCOL_VALUE_RESET_VALUE ( 0x880B ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_OFFSET ( 0x0000009C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GRE_PROTOCOL */ + uint32_t gre_protocol : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG ; +#else +typedef struct +{ + /* GRE_PROTOCOL */ + uint32_t gre_protocol : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL0_R0 */ +/* DSCP to TCI Conversion Table 0. Register 0 that stores convetion code for the follow */ +/* ing DSCP values: 0x0..0x7. Used for conversion in case of IP untagged packet Th */ +/* e coding of each field is done in the following way: TCI converted field should matc */ +/* h DSCP index (from 0 to 63). This index is applied by the following equation: registe */ +/* r_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_OFFSET ( 0x00000100 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL0_R1 */ +/* DSCP to TCI Conversion Table 0. Register 1 that stores convetion code for the follow */ +/* ing DSCP values: 0x8..0xf. Used for conversion in case of IP untagged packet Th */ +/* e coding of each field is done in the following way: TCI converted field should matc */ +/* h DSCP index (from 0 to 63). This index is applied by the following equation: registe */ +/* r_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_OFFSET ( 0x00000104 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL0_R2 */ +/* DSCP to TCI Conversion Table 0. Register 2 that stores convetion code for the follow */ +/* ing DSCP values: 0x10..0x17. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should ma */ +/* tch DSCP index (from 0 to 63). This index is applied by the following equation: regis */ +/* ter_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_OFFSET ( 0x00000108 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL0_R3 */ +/* DSCP to TCI Conversion Table 0. Register 3 that stores convetion code for the follow */ +/* ing DSCP values: 0x18..0x1f. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should ma */ +/* tch DSCP index (from 0 to 63). This index is applied by the following equation: regis */ +/* ter_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_OFFSET ( 0x0000010C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL0_R4 */ +/* DSCP to TCI Conversion Table 0. Register 4 that stores conversion code for the follo */ +/* wing DSCP values: 0x20..0x27. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should m */ +/* atch DSCP index (from 0 to 63). This index is applied by the following equation: regi */ +/* ster_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_OFFSET ( 0x00000110 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL0_R5 */ +/* DSCP to TCI Conversion Table 0. Register 5 that stores conversion code for the follo */ +/* wing DSCP values: 0x28..0x2f. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should m */ +/* atch DSCP index (from 0 to 63). This index is applied by the following equation: regi */ +/* ster_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_OFFSET ( 0x00000114 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL0_R6 */ +/* DSCP to TCI Conversion Table 0. Register 6 that stores conversion code for the follo */ +/* wing DSCP values: 0x30..0x37. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should m */ +/* atch DSCP index (from 0 to 63). This index is applied by the following equation: regi */ +/* ster_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_OFFSET ( 0x00000118 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL0_R7 */ +/* DSCP to TCI Conversion Table 0. Register 7 that stores conversion code for the follo */ +/* wing DSCP values: 0x3c..0x3f. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should */ +/* match DSCP index (from 0 to 63). This index is applied by the following equation: re */ +/* gister_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_OFFSET ( 0x0000011C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL1_R0 */ +/* DSCP to TCI Conversion Table 1. Register 0 that stores convetion code for the follow */ +/* ing DSCP values: 0x0..0x7. Used for conversion in case of IP untagged packet Th */ +/* e coding of each field is done in the following way: TCI converted field should matc */ +/* h DSCP index (from 0 to 63). This index is applied by the following equation: registe */ +/* r_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_OFFSET ( 0x00000120 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL1_R1 */ +/* DSCP to TCI Conversion Table 1. Register 1 that stores convetion code for the follow */ +/* ing DSCP values: 0x8..0xf. Used for conversion in case of IP untagged packet Th */ +/* e coding of each field is done in the following way: TCI converted field should matc */ +/* h DSCP index (from 0 to 63). This index is applied by the following equation: registe */ +/* r_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_OFFSET ( 0x00000124 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL1_R2 */ +/* DSCP to TCI Conversion Table 1. Register 2 that stores convetion code for the follow */ +/* ing DSCP values: 0x10..0x17. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should ma */ +/* tch DSCP index (from 0 to 63). This index is applied by the following equation: regis */ +/* ter_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_OFFSET ( 0x00000128 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL1_R3 */ +/* DSCP to TCI Conversion Table 1. Register 3 that stores convetion code for the follow */ +/* ing DSCP values: 0x18..0x1f. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should ma */ +/* tch DSCP index (from 0 to 63). This index is applied by the following equation: regis */ +/* ter_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_OFFSET ( 0x0000012C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL1_R4 */ +/* DSCP to TCI Conversion Table 1. Register 4 that stores conversion code for the follo */ +/* wing DSCP values: 0x20..0x27. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should m */ +/* atch DSCP index (from 0 to 63). This index is applied by the following equation: regi */ +/* ster_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_OFFSET ( 0x00000130 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL1_R5 */ +/* DSCP to TCI Conversion Table 1. Register 5 that stores conversion code for the follo */ +/* wing DSCP values: 0x28..0x2f. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should m */ +/* atch DSCP index (from 0 to 63). This index is applied by the following equation: regi */ +/* ster_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_OFFSET ( 0x00000134 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL1_R6 */ +/* DSCP to TCI Conversion Table 1. Register 6 that stores conversion code for the follo */ +/* wing DSCP values: 0x30..0x37. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should m */ +/* atch DSCP index (from 0 to 63). This index is applied by the following equation: regi */ +/* ster_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_OFFSET ( 0x00000138 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6 ; +#endif + +/*****************************************************************************************/ +/* DSCP2TCI_TBL1_R7 */ +/* DSCP to TCI Conversion Table 1. Register 7 that stores conversion code for the follo */ +/* wing DSCP values: 0x3c..0x3f. Used for conversion in case of IP untagged packet */ +/* The coding of each field is done in the following way: TCI converted field should m */ +/* atch DSCP index (from 0 to 63). This index is applied by the following equation: regi */ +/* ster_index*8+octet(or field) index */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV8_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV8_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O7_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O7_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV7_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV7_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O6_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O6_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV6_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV6_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O5_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O5_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV5_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV5_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O4_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O4_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O3_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O3_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O2_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O2_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O1_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O1_TCI_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O0_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_DSCP_O0_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_OFFSET ( 0x0000013C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7 ; +#else +typedef struct +{ + /* DSCP_O0 */ + uint32_t dscp_o0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O1 */ + uint32_t dscp_o1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O2 */ + uint32_t dscp_o2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O3 */ + uint32_t dscp_o3 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O4 */ + uint32_t dscp_o4 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv5 */ + uint32_t rsv5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O5 */ + uint32_t dscp_o5 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv6 */ + uint32_t rsv6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O6 */ + uint32_t dscp_o6 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv7 */ + uint32_t rsv7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_O7 */ + uint32_t dscp_o7 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv8 */ + uint32_t rsv8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7 ; +#endif + +/*****************************************************************************************/ +/* DEFAULT_TCI_TBL0 */ +/* Default TCI Table 0. Used for conversion in case of non-IP untagged packet */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_DEFAULT_TCI_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_DEFAULT_TCI_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_OFFSET ( 0x00000140 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DEFAULT_TCI */ + uint32_t default_tci : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0 ; +#else +typedef struct +{ + /* DEFAULT_TCI */ + uint32_t default_tci : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0 ; +#endif + +/*****************************************************************************************/ +/* DEFAULT_TCI_TBL1 */ +/* Default TCI Table 1. Used for conversion in case of non-IP untagged packet */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_DEFAULT_TCI_TCI_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_DEFAULT_TCI_TCI_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_OFFSET ( 0x00000144 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DEFAULT_TCI */ + uint32_t default_tci : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1 ; +#else +typedef struct +{ + /* DEFAULT_TCI */ + uint32_t default_tci : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1 ; +#endif + +/*****************************************************************************************/ +/* DSCP_TBL_VALID_CFG */ +/* Valid configuration of DSCP Tables */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_RSV_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_RSV_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_TBL1_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_TBL1_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_TBL1_VALID_VALID_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_TBL0_VALID_NON_VALID_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_TBL0_VALID_NON_VALID_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_TBL0_VALID_VALID_VALUE ( 0x1 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_OFFSET ( 0x00000148 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TBL1_VALID */ + uint32_t tbl1_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TBL0_VALID */ + uint32_t tbl0_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG ; +#else +typedef struct +{ + /* TBL0_VALID */ + uint32_t tbl0_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TBL1_VALID */ + uint32_t tbl1_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 30 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG ; +#endif + +/*****************************************************************************************/ +/* DA_FILT6_VAL_L */ +/* Config DA filter6 31:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_OFFSET ( 0x0000014C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L ; +#else +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L ; +#endif + +/*****************************************************************************************/ +/* DA_FILT6_VAL_H */ +/* Config DA Filter6 47:32 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_RSV_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_RSV_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_OFFSET ( 0x00000150 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H ; +#else +typedef struct +{ + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H ; +#endif + +/*****************************************************************************************/ +/* DA_FILT7_VAL_L */ +/* Config DA filter7 31:0 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_DA_FILT_LSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_OFFSET ( 0x00000154 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L ; +#else +typedef struct +{ + /* DA_FILT_LSB */ + uint32_t da_filt_lsb : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L ; +#endif + +/*****************************************************************************************/ +/* DA_FILT7_VAL_H */ +/* Config DA Filter7 47:32 */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_RSV_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_RSV_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_DA_FILT_MSB_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_OFFSET ( 0x00000158 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H ; +#else +typedef struct +{ + /* DA_FILT_MSB */ + uint32_t da_filt_msb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H ; +#endif + +/*****************************************************************************************/ +/* IPV6_HDR_EXT_FLTR_MASK_CFG */ +/* IPV6 Header Extension Filter Mask register */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_RSV_FILTER_CONFIG_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_RSV_FILTER_CONFIG_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_DEST_OPT_EH_MASK_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_DEST_OPT_EH_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_DEST_OPT_EH_UNMASK_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_ROUTING_EH_MASK_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_ROUTING_EH_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_ROUTING_EH_UNMASK_VALUE ( 0x1 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_HOP_BY_HOP_MATCH_MASK_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_HOP_BY_HOP_MATCH_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_HOP_BY_HOP_MATCH_UNMASK_VALUE ( 0x1 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_OFFSET ( 0x0000015C ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dest_opt_eh */ + uint32_t dest_opt_eh : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* routing_eh */ + uint32_t routing_eh : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hop_by_hop_match */ + uint32_t hop_by_hop_match : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG ; +#else +typedef struct +{ + /* hop_by_hop_match */ + uint32_t hop_by_hop_match : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* routing_eh */ + uint32_t routing_eh : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dest_opt_eh */ + uint32_t dest_opt_eh : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG ; +#endif + +/*****************************************************************************************/ +/* ENG */ +/* Engineering Configuration reserved for Broadlight use */ +/*****************************************************************************************/ + +#define IH_REGS_PARSER_CORE_CONFIGURATION_ENG_CFG_RESET_VALUE ( 0x0 ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_ENG_CFG_RESET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_PARSER_CORE_CONFIGURATION_ENG_OFFSET ( 0x00000160 ) + +#define IH_REGS_PARSER_CORE_CONFIGURATION_ENG_ADDRESS ( IH_REGS_PARSER_CORE_CONFIGURATION_ADDRESS + IH_REGS_PARSER_CORE_CONFIGURATION_ENG_OFFSET ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_ENG_READ( r ) READ_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_ENG_ADDRESS ), (r) ) +#define IH_REGS_PARSER_CORE_CONFIGURATION_ENG_WRITE( v ) WRITE_32( ( IH_REGS_PARSER_CORE_CONFIGURATION_ENG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* CFG */ + uint32_t cfg : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_ENG ; +#else +typedef struct +{ + /* CFG */ + uint32_t cfg : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION_ENG ; +#endif + +/*****************************************************************************************/ +/* SP2IQ_MAP_CFG */ +/* Source Port mapping to IH Ingress Queue num, says per physical port to which IQ it be */ +/* longs (from 0 to 7) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_RNRB_IQ_MAP_MAP_VALUE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_RNRB_IQ_MAP_MAP_VALUE_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_RNRA_IQ_MAP_MAP_VALUE_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_RNRA_IQ_MAP_MAP_VALUE_VALUE_RESET_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_GPON_IQ_MAP_MAP_VALUE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_GPON_IQ_MAP_MAP_VALUE_VALUE_RESET_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ETH4_IQ_MAP_MAP_VALUE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ETH4_IQ_MAP_MAP_VALUE_VALUE_RESET_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ETH3_IQ_MAP_MAP_VALUE_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ETH3_IQ_MAP_MAP_VALUE_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ETH2_IQ_MAP_MAP_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ETH2_IQ_MAP_MAP_VALUE_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ETH1_IQ_MAP_MAP_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ETH1_IQ_MAP_MAP_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ETH0_IQ_MAP_MAP_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ETH0_IQ_MAP_MAP_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_OFFSET ( 0x00000000 ) + +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RNRB_IQ_MAP */ + uint32_t rnrb_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_IQ_MAP */ + uint32_t rnra_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_IQ_MAP */ + uint32_t gpon_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_IQ_MAP */ + uint32_t eth4_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_IQ_MAP */ + uint32_t eth3_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_IQ_MAP */ + uint32_t eth2_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_IQ_MAP */ + uint32_t eth1_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH0_IQ_MAP */ + uint32_t eth0_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG ; +#else +typedef struct +{ + /* ETH0_IQ_MAP */ + uint32_t eth0_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_IQ_MAP */ + uint32_t eth1_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_IQ_MAP */ + uint32_t eth2_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_IQ_MAP */ + uint32_t eth3_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_IQ_MAP */ + uint32_t eth4_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_IQ_MAP */ + uint32_t gpon_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_IQ_MAP */ + uint32_t rnra_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_IQ_MAP */ + uint32_t rnrb_iq_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG ; +#endif + +/*****************************************************************************************/ +/* IQ_BASE_CFG */ +/* Base location of each Ingres Queue in 16-entry IQ array. Note: this configuration sh */ +/* ould be aligned with configuration of IQ size. Default configuration of IQ array: */ +/* IQ# Port Num of Ingres Buffers ================================== 0 : Eth0 : */ +/* 2 1 : Eth1 : 2 2 : Eth2 : 2 3 : Eth3 : 2 4 : Eth4 : 2 5 */ +/* : GPON : 4 6 : RNRA : 1 7 : RNRB : 1 */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ7_BASE_BASE_VALUE_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ7_BASE_BASE_VALUE_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ6_BASE_BASE_VALUE_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ6_BASE_BASE_VALUE_VALUE_RESET_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ5_BASE_BASE_VALUE_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ5_BASE_BASE_VALUE_VALUE_RESET_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ4_BASE_BASE_VALUE_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ4_BASE_BASE_VALUE_VALUE_RESET_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ3_BASE_BASE_VALUE_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ3_BASE_BASE_VALUE_VALUE_RESET_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ2_BASE_BASE_VALUE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ2_BASE_BASE_VALUE_VALUE_RESET_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ1_BASE_BASE_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ1_BASE_BASE_VALUE_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ0_BASE_BASE_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_IQ0_BASE_BASE_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_OFFSET ( 0x00000004 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IQ7_BASE */ + uint32_t iq7_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_BASE */ + uint32_t iq6_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_BASE */ + uint32_t iq5_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_BASE */ + uint32_t iq4_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_BASE */ + uint32_t iq3_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_BASE */ + uint32_t iq2_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_BASE */ + uint32_t iq1_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ0_BASE */ + uint32_t iq0_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG ; +#else +typedef struct +{ + /* IQ0_BASE */ + uint32_t iq0_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_BASE */ + uint32_t iq1_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_BASE */ + uint32_t iq2_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_BASE */ + uint32_t iq3_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_BASE */ + uint32_t iq4_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_BASE */ + uint32_t iq5_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_BASE */ + uint32_t iq6_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ7_BASE */ + uint32_t iq7_base : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG ; +#endif + +/*****************************************************************************************/ +/* IQ_SIZE_CFG */ +/* Size (= num of ingress buffers) per each Ingres Queue in 16-entry IQ array. Note: */ +/* this configuration should be aligned with configuration of IQ base. Total num of ent */ +/* eties should be <= 16 Note: value 0x0 means that number of entries is sixteen!! D */ +/* efault configuration of IQ array: IQ# Port Num of Ingres Buffers ============= */ +/* ===================== 0 : Eth0 : 2 1 : Eth1 : 2 2 : Eth2 : 2 3 : */ +/* Eth3 : 2 4 : Eth4 : 2 5 : GPON : 4 6 : RNRA : 1 7 : RNRB : 1 */ +/* */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ7_SIZE_SIZE_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ7_SIZE_SIZE_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ6_SIZE_SIZE_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ6_SIZE_SIZE_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ5_SIZE_SIZE_VALUE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ5_SIZE_SIZE_VALUE_VALUE_RESET_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ4_SIZE_SIZE_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ4_SIZE_SIZE_VALUE_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ3_SIZE_SIZE_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ3_SIZE_SIZE_VALUE_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ2_SIZE_SIZE_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ2_SIZE_SIZE_VALUE_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ1_SIZE_SIZE_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ1_SIZE_SIZE_VALUE_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ0_SIZE_SIZE_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_IQ0_SIZE_SIZE_VALUE_VALUE_RESET_VALUE ( 0x2 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_OFFSET ( 0x00000008 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IQ7_SIZE */ + uint32_t iq7_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_SIZE */ + uint32_t iq6_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_SIZE */ + uint32_t iq5_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_SIZE */ + uint32_t iq4_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_SIZE */ + uint32_t iq3_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_SIZE */ + uint32_t iq2_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_SIZE */ + uint32_t iq1_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ0_SIZE */ + uint32_t iq0_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG ; +#else +typedef struct +{ + /* IQ0_SIZE */ + uint32_t iq0_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_SIZE */ + uint32_t iq1_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_SIZE */ + uint32_t iq2_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_SIZE */ + uint32_t iq3_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_SIZE */ + uint32_t iq4_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_SIZE */ + uint32_t iq5_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_SIZE */ + uint32_t iq6_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ7_SIZE */ + uint32_t iq7_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG ; +#endif + +/*****************************************************************************************/ +/* IQL_PRIOR_CFG */ +/* Priority of each Ingres Queues [3...0]. Note: this configuration defined by one ho */ +/* t (8 bits max) Default configuration of IQ array: IQ# Port Priority ======= */ +/* =========================== 0 : Eth0 : 8b010 1 : Eth1 : 8b010 2 : Eth2 */ +/* : 8b010 3 : Eth3 : 8b010 4 : Eth4 : 8b010 5 : GPON : 8b100 6 : */ +/* RNRA : 8b001 7 : RNRB : 8b001 */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_IQ3_PRIOR_PRIOR_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_IQ3_PRIOR_PRIOR_VALUE_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_IQ2_PRIOR_PRIOR_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_IQ2_PRIOR_PRIOR_VALUE_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_IQ1_PRIOR_PRIOR_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_IQ1_PRIOR_PRIOR_VALUE_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_IQ0_PRIOR_PRIOR_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_IQ0_PRIOR_PRIOR_VALUE_VALUE_RESET_VALUE ( 0x2 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_OFFSET ( 0x0000000C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IQ3_PRIOR */ + uint32_t iq3_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_PRIOR */ + uint32_t iq2_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_PRIOR */ + uint32_t iq1_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ0_PRIOR */ + uint32_t iq0_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG ; +#else +typedef struct +{ + /* IQ0_PRIOR */ + uint32_t iq0_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_PRIOR */ + uint32_t iq1_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_PRIOR */ + uint32_t iq2_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_PRIOR */ + uint32_t iq3_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG ; +#endif + +/*****************************************************************************************/ +/* IQH_PRIOR_CFG */ +/* Priority of each Ingres Queues [7...4]. Note: this configuration defined by one ho */ +/* t (8 bits max) Default configuration of IQ array: IQ# Port Priority ======= */ +/* =========================== 0 : Eth0 : 8b010 1 : Eth1 : 8b010 2 : Eth2 */ +/* : 8b010 3 : Eth3 : 8b010 4 : Eth4 : 8b010 5 : GPON : 8b100 6 : */ +/* RNRA : 8b001 7 : RNRB : 8b001 */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_IQ7_PRIOR_PRIOR_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_IQ7_PRIOR_PRIOR_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_IQ6_PRIOR_PRIOR_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_IQ6_PRIOR_PRIOR_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_IQ5_PRIOR_PRIOR_VALUE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_IQ5_PRIOR_PRIOR_VALUE_VALUE_RESET_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_IQ4_PRIOR_PRIOR_VALUE_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_IQ4_PRIOR_PRIOR_VALUE_VALUE_RESET_VALUE ( 0x2 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_OFFSET ( 0x00000010 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IQ7_PRIOR */ + uint32_t iq7_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_PRIOR */ + uint32_t iq6_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_PRIOR */ + uint32_t iq5_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_PRIOR */ + uint32_t iq4_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG ; +#else +typedef struct +{ + /* IQ4_PRIOR */ + uint32_t iq4_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_PRIOR */ + uint32_t iq5_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_PRIOR */ + uint32_t iq6_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ7_PRIOR */ + uint32_t iq7_prior : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG ; +#endif + +/*****************************************************************************************/ +/* PHL_OFFSET_CFG */ +/* Packet Header offset per Ingres Physical port in byte resolution Note: this config */ +/* uration says where the Header of packet is started. This configuration is used both b */ +/* y Parser and by Egress Queue DMA. The motivation: store room in the beginning of Runn */ +/* er Buffer for FW Default configuration of Packet Header offset is 0x0. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ETH3_PH_OFFSET_PH_OFFSET_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ETH3_PH_OFFSET_PH_OFFSET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ETH2_PH_OFFSET_PH_OFFSET_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ETH2_PH_OFFSET_PH_OFFSET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ETH1_PH_OFFSET_PH_OFFSET_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ETH1_PH_OFFSET_PH_OFFSET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ETH0_PH_OFFSET_PH_OFFSET_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ETH0_PH_OFFSET_PH_OFFSET_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_OFFSET ( 0x00000014 ) + +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV4 */ + uint32_t rsv4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_PH_OFFSET */ + uint32_t eth3_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV3 */ + uint32_t rsv3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_PH_OFFSET */ + uint32_t eth2_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_PH_OFFSET */ + uint32_t eth1_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH0_PH_OFFSET */ + uint32_t eth0_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG ; +#else +typedef struct +{ + /* ETH0_PH_OFFSET */ + uint32_t eth0_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_PH_OFFSET */ + uint32_t eth1_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_PH_OFFSET */ + uint32_t eth2_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV3 */ + uint32_t rsv3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_PH_OFFSET */ + uint32_t eth3_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV4 */ + uint32_t rsv4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG ; +#endif + +/*****************************************************************************************/ +/* PHH_OFFSET_CFG */ +/* Packet Header offset per Ingres Physical port in byte resolution Note: this config */ +/* uration says where the Header of packet is started. This configuration is used both b */ +/* y Parser and by Egress Queue DMA. The motivation: store room in the beginning of Runn */ +/* er Buffer for FW Default configuration of Packet Header offset is 0x0. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RNRB_PH_OFFSET_PH_OFFSET_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RNRB_PH_OFFSET_PH_OFFSET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RNRA_PH_OFFSET_PH_OFFSET_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RNRA_PH_OFFSET_PH_OFFSET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_GPON_PH_OFFSET_PH_OFFSET_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_GPON_PH_OFFSET_PH_OFFSET_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_ETH4_PH_OFFSET_PH_OFFSET_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_ETH4_PH_OFFSET_PH_OFFSET_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_OFFSET ( 0x00000018 ) + +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV4 */ + uint32_t rsv4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_PH_OFFSET */ + uint32_t rnrb_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV3 */ + uint32_t rsv3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_PH_OFFSET */ + uint32_t rnra_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_PH_OFFSET */ + uint32_t gpon_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_PH_OFFSET */ + uint32_t eth4_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG ; +#else +typedef struct +{ + /* ETH4_PH_OFFSET */ + uint32_t eth4_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_PH_OFFSET */ + uint32_t gpon_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_PH_OFFSET */ + uint32_t rnra_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV3 */ + uint32_t rsv3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_PH_OFFSET */ + uint32_t rnrb_ph_offset : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV4 */ + uint32_t rsv4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG ; +#endif + +/*****************************************************************************************/ +/* IQ_WEIGHT_CFG */ +/* Weight Arbiration of each Ingres Queue Note: this configuration has a meaning oly */ +/* for two or more queus with the same priority Default configuration of IQ array: */ +/* IQ# Port Weight ================================== 0 : Eth0 : 1 1 : E */ +/* th1 : 1 2 : Eth2 : 1 3 : Eth3 : 1 4 : Eth4 : 1 5 : GPON : 1 */ +/* 6 : RNRA : 1 7 : RNRB : 1 */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ7_WEIGHT_WEIGHT_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ7_WEIGHT_WEIGHT_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ6_WEIGHT_WEIGHT_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ6_WEIGHT_WEIGHT_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ5_WEIGHT_WEIGHT_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ5_WEIGHT_WEIGHT_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ4_WEIGHT_WEIGHT_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ4_WEIGHT_WEIGHT_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ3_WEIGHT_WEIGHT_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ3_WEIGHT_WEIGHT_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ2_WEIGHT_WEIGHT_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ2_WEIGHT_WEIGHT_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ1_WEIGHT_WEIGHT_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ1_WEIGHT_WEIGHT_VALUE_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ0_WEIGHT_WEIGHT_VALUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_IQ0_WEIGHT_WEIGHT_VALUE_VALUE_RESET_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_OFFSET ( 0x00000020 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IQ7_WEIGHT */ + uint32_t iq7_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_WEIGHT */ + uint32_t iq6_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_WEIGHT */ + uint32_t iq5_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_WEIGHT */ + uint32_t iq4_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_WEIGHT */ + uint32_t iq3_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_WEIGHT */ + uint32_t iq2_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_WEIGHT */ + uint32_t iq1_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ0_WEIGHT */ + uint32_t iq0_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG ; +#else +typedef struct +{ + /* IQ0_WEIGHT */ + uint32_t iq0_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_WEIGHT */ + uint32_t iq1_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_WEIGHT */ + uint32_t iq2_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_WEIGHT */ + uint32_t iq3_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_WEIGHT */ + uint32_t iq4_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_WEIGHT */ + uint32_t iq5_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_WEIGHT */ + uint32_t iq6_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ7_WEIGHT */ + uint32_t iq7_weight : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG ; +#endif + +/*****************************************************************************************/ +/* IQL_CNGS_THRS_CFG */ +/* Ingres congestion threshold of Low Ingres Queues[ 3...0]. When the number of tot */ +/* al Runner Buffers (eigher Runner A or Runner B) reachs the defined threshold per queu */ +/* e - Ingres Handler stops serving this queue till one of two events will occur: (1) */ +/* num of Runner buffers is decreased down to threshold (2) one of BBH clients that ass */ +/* igned to the queue will get Service Enable message initiated in appropriate MAC (by r */ +/* eaching predefined threshold in Data FIFO). Note: this configuration should be ali */ +/* gned with a threshold of max runner buffers (per each Runner) Default configuratio */ +/* n of IQ array (always allow servecing, do not stop on ingress congestion): IQ# Po */ +/* rt Priority ================================== 0 : Eth0 : 32 1 : Eth1 : 3 */ +/* 2 2 : Eth2 : 32 3 : Eth3 : 32 4 : Eth4 : 32 5 : GPON : 32 6 */ +/* : RNRA : 32 7 : RNRB : 32 */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_IQ3_CNGS_THRS_CNGS_THRS_VALUE_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_IQ3_CNGS_THRS_CNGS_THRS_VALUE_VALUE_RESET_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_IQ2_CNGS_THRS_CNGS_THRS_VALUE_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_IQ2_CNGS_THRS_CNGS_THRS_VALUE_VALUE_RESET_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_IQ1_CNGS_THRS_CNGS_THRS_VALUE_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_IQ1_CNGS_THRS_CNGS_THRS_VALUE_VALUE_RESET_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_IQ0_CNGS_THRS_CNGS_THRS_VALUE_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_IQ0_CNGS_THRS_CNGS_THRS_VALUE_VALUE_RESET_VALUE ( 0x40 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_OFFSET ( 0x00000024 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_CNGS_THRS */ + uint32_t iq3_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_CNGS_THRS */ + uint32_t iq2_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_CNGS_THRS */ + uint32_t iq1_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ0_CNGS_THRS */ + uint32_t iq0_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG ; +#else +typedef struct +{ + /* IQ0_CNGS_THRS */ + uint32_t iq0_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_CNGS_THRS */ + uint32_t iq1_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_CNGS_THRS */ + uint32_t iq2_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_CNGS_THRS */ + uint32_t iq3_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG ; +#endif + +/*****************************************************************************************/ +/* IQH_CNGS_THRS_CFG */ +/* Ingres congestion threshold of Low Ingres Queues[ 7...4]. When the number of tot */ +/* al Runner Buffers (eigher Runner A or Runner B) reachs the defined threshold per queu */ +/* e - Ingres Handler stops serving this queue till one of two events will occur: (1) */ +/* num of Runner buffers is decreased down to threshold (2) one of BBH clients that ass */ +/* igned to the queue will get Service Enable message initiated in appropriate MAC (by r */ +/* eaching predefined threshold in Data FIFO). Note: this configuration should be ali */ +/* gned with a threshold of max runner buffers (per each Runner) Default configuratio */ +/* n of IQ array (always allow servecing, do not stop on ingress congestion): IQ# Po */ +/* rt Priority ================================== 0 : Eth0 : 32 1 : Eth1 : 3 */ +/* 2 2 : Eth2 : 32 3 : Eth3 : 32 4 : Eth4 : 32 5 : GPON : 32 6 */ +/* : RNRA : 32 7 : RNRB : 32 */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_IQ7_CNGS_THRS_CNGS_THRS_VALUE_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_IQ7_CNGS_THRS_CNGS_THRS_VALUE_VALUE_RESET_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_IQ6_CNGS_THRS_CNGS_THRS_VALUE_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_IQ6_CNGS_THRS_CNGS_THRS_VALUE_VALUE_RESET_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_IQ5_CNGS_THRS_CNGS_THRS_VALUE_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_IQ5_CNGS_THRS_CNGS_THRS_VALUE_VALUE_RESET_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_IQ4_CNGS_THRS_CNGS_THRS_VALUE_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_IQ4_CNGS_THRS_CNGS_THRS_VALUE_VALUE_RESET_VALUE ( 0x40 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_OFFSET ( 0x00000028 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ7_CNGS_THRS */ + uint32_t iq7_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_CNGS_THRS */ + uint32_t iq6_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_CNGS_THRS */ + uint32_t iq5_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_CNGS_THRS */ + uint32_t iq4_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG ; +#else +typedef struct +{ + /* IQ4_CNGS_THRS */ + uint32_t iq4_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_CNGS_THRS */ + uint32_t iq5_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_CNGS_THRS */ + uint32_t iq6_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ7_CNGS_THRS */ + uint32_t iq7_cngs_thrs : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG ; +#endif + +/*****************************************************************************************/ +/* RNRA_RB_BASE */ +/* Base Address of Runner Buffers sending for Runner A The major part of Runner Buff */ +/* ers are managed by Ingres Handler per Runner. The number of Runner Buffers is define */ +/* d per Runner, max number of managed buffers is 64; default is 32 However there are */ +/* assigned Runner Buffers managed by Runner itself (FW pipe), the number of assigned n */ +/* on-managed Runner Buffer is up to FW control(up to 4 RIBs) The base address of assig */ +/* ned buffers is different from the common managed buffers. Each Runner Buffer has o */ +/* ffset of 0x32 according to its on number. Note: Default configuration of base add */ +/* ress is 0x0. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_RNRA_ASIGNED_RB_BASE_BASE_ADDRESS_OFFSET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_RNRA_ASIGNED_RB_BASE_BASE_ADDRESS_OFFSET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_RNRA_COMMON_RB_BASE_BASE_ADDRESS_OFFSET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_RNRA_COMMON_RB_BASE_BASE_ADDRESS_OFFSET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_OFFSET ( 0x00000030 ) + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RNRA_ASIGNED_RB_BASE */ + uint32_t rnra_asigned_rb_base : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_COMMON_RB_BASE */ + uint32_t rnra_common_rb_base : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE ; +#else +typedef struct +{ + /* RNRA_COMMON_RB_BASE */ + uint32_t rnra_common_rb_base : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_ASIGNED_RB_BASE */ + uint32_t rnra_asigned_rb_base : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE ; +#endif + +/*****************************************************************************************/ +/* RNRB_RB_BASE */ +/* Base Address of Runner Buffers sending for Runner B The major part of Runner Buff */ +/* ers are managed by Ingres Handler per Runner. The number of Runner Buffers is define */ +/* d per Runner, max number of managed buffers is 64; default is 32 However there are */ +/* assigned Runner Buffers managed by Runner itself (FW pipe), the number of assigned n */ +/* on-managed Runner Buffer is up to FW control(up to 4 RIBs) The base address of assig */ +/* ned buffers is different from the common managed buffers. Each Runner Buffer has o */ +/* ffset of 0x32 according to its on number. Note: Default configuration of base add */ +/* ress is 0x0. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_RNRB_ASIGNED_RB_BASE_BASE_ADDRESS_OFFSET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_RNRB_ASIGNED_RB_BASE_BASE_ADDRESS_OFFSET_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_RNRB_COMMON_RB_BASE_BASE_ADDRESS_OFFSET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_RNRB_COMMON_RB_BASE_BASE_ADDRESS_OFFSET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_OFFSET ( 0x00000034 ) + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RNRB_ASIGNED_RB_BASE */ + uint32_t rnrb_asigned_rb_base : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_COMMON_RB_BASE */ + uint32_t rnrb_common_rb_base : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE ; +#else +typedef struct +{ + /* RNRB_COMMON_RB_BASE */ + uint32_t rnrb_common_rb_base : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_ASIGNED_RB_BASE */ + uint32_t rnrb_asigned_rb_base : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE ; +#endif + +/*****************************************************************************************/ +/* RNRA_IHRSP_ADDR */ +/* Address of IH response for Runner A The content of IH Response is defined in chap */ +/* ter 3.1.3.15 in strpublicLilacArchTMIHmicro_archLilac_IH_LLD_v0.5.doc */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_RNRA_IHRSP_ADDR_ADDRESS_OFFSET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_RNRA_IHRSP_ADDR_ADDRESS_OFFSET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_OFFSET ( 0x00000038 ) + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_IHRSP_ADDR */ + uint32_t rnra_ihrsp_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR ; +#else +typedef struct +{ + /* RNRA_IHRSP_ADDR */ + uint32_t rnra_ihrsp_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR ; +#endif + +/*****************************************************************************************/ +/* RNRB_IHRSP_ADDR */ +/* Address of IH response for Runner B The content of IH Response is defined in chap */ +/* ter 3.1.3.15 in strpublicLilacArchTMIHmicro_archLilac_IH_LLD_v0.5.doc */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_RNRB_IHRSP_ADDR_ADDRESS_OFFSET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_RNRB_IHRSP_ADDR_ADDRESS_OFFSET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_OFFSET ( 0x0000003C ) + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_IHRSP_ADDR */ + uint32_t rnrb_ihrsp_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR ; +#else +typedef struct +{ + /* RNRB_IHRSP_ADDR */ + uint32_t rnrb_ihrsp_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR ; +#endif + +/*****************************************************************************************/ +/* RNRA_CNGS_RPT_ADDR */ +/* Address of IH congestion report for Runner A IH sends the total number of the Run */ +/* ner when the congestion state is changed. Default address is 0x0 */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_RNRA_CNGS_RPT_ADDR_ADDRESS_OFFSET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_RNRA_CNGS_RPT_ADDR_ADDRESS_OFFSET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_OFFSET ( 0x00000040 ) + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_CNGS_RPT_ADDR */ + uint32_t rnra_cngs_rpt_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR ; +#else +typedef struct +{ + /* RNRA_CNGS_RPT_ADDR */ + uint32_t rnra_cngs_rpt_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR ; +#endif + +/*****************************************************************************************/ +/* RNRB_CNGS_RPT_ADDR */ +/* Address of IH congestion report for Runner B IH sends the total number of the Run */ +/* ner when the congestion state is changed. Default address is 0x0 */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_RNRB_CNGS_RPT_ADDR_ADDRESS_OFFSET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_RNRB_CNGS_RPT_ADDR_ADDRESS_OFFSET_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_OFFSET ( 0x00000044 ) + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_CNGS_RPT_ADDR */ + uint32_t rnrb_cngs_rpt_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR ; +#else +typedef struct +{ + /* RNRB_CNGS_RPT_ADDR */ + uint32_t rnrb_cngs_rpt_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR ; +#endif + +/*****************************************************************************************/ +/* RNR_CNGS_RPT_CFG */ +/* Enable of sending Congestion Report per each Runner. IH sends the total number of */ +/* the Runner when the congestion state is changed. The sending of this report is upon t */ +/* o enabled per Runner. Default address is 0x0 (not to send report) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_THRESHOLD_DISABLE_DIS_CNGS_RPT_SEND_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_THRESHOLD_DISABLE_DIS_CNGS_RPT_SEND_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_THRESHOLD_DISABLE_EN_CNGS_RPT_SEND_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_RNRB_CNGS_RPT_EN_DIS_CNGS_RPT_SEND_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_RNRB_CNGS_RPT_EN_DIS_CNGS_RPT_SEND_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_RNRB_CNGS_RPT_EN_EN_CNGS_RPT_SEND_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_RNRA_CNGS_RPT_EN_DIS_CNGS_RPT_SEND_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_RNRA_CNGS_RPT_EN_DIS_CNGS_RPT_SEND_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_RNRA_CNGS_RPT_EN_EN_CNGS_RPT_SEND_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_OFFSET ( 0x00000048 ) + +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* THRESHOLD_DISABLE */ + uint32_t threshold_disable : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_CNGS_RPT_EN */ + uint32_t rnrb_cngs_rpt_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_CNGS_RPT_EN */ + uint32_t rnra_cngs_rpt_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG ; +#else +typedef struct +{ + /* RNRA_CNGS_RPT_EN */ + uint32_t rnra_cngs_rpt_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_CNGS_RPT_EN */ + uint32_t rnrb_cngs_rpt_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THRESHOLD_DISABLE */ + uint32_t threshold_disable : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG ; +#endif + +/*****************************************************************************************/ +/* RADDR0_CFG */ +/* Route Addres configuration of following ports: Eth0, Eth1, Eth2, Eth3. Used for br */ +/* oadbus access for the following ports: for sending responses, message and data. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ETH3_RADDR_ROUTE_ADDRESS_VALUE ( 0x48 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ETH3_RADDR_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x48 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ETH2_RADDR_ROUTE_ADDRESS_VALUE ( 0x54 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ETH2_RADDR_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x54 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ETH1_RADDR_ROUTE_ADDRESS_VALUE ( 0x4C ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ETH1_RADDR_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x4C ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ETH0_RADDR_ROUTE_ADDRESS_VALUE ( 0x5C ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ETH0_RADDR_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x5C ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_OFFSET ( 0x0000004C ) + +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_RADDR */ + uint32_t eth3_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_RADDR */ + uint32_t eth2_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_RADDR */ + uint32_t eth1_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH0_RADDR */ + uint32_t eth0_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG ; +#else +typedef struct +{ + /* ETH0_RADDR */ + uint32_t eth0_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_RADDR */ + uint32_t eth1_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_RADDR */ + uint32_t eth2_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_RADDR */ + uint32_t eth3_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG ; +#endif + +/*****************************************************************************************/ +/* RADDR1_CFG */ +/* Route Addres configuration of following ports: Eth4, GPON, Runner A, Runner B Used */ +/* for broadbus access for the following ports: for sending responses, message and data */ +/* . */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RNRB_RADDR_ROUTE_ADDRESS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RNRB_RADDR_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RNRA_RADDR_ROUTE_ADDRESS_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RNRA_RADDR_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_GPON_RADDR_ROUTE_ADDRESS_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_GPON_RADDR_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_ETH4_RADDR_ROUTE_ADDRESS_VALUE ( 0x50 ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_ETH4_RADDR_ROUTE_ADDRESS_VALUE_RESET_VALUE ( 0x50 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_OFFSET ( 0x00000050 ) + +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_RADDR */ + uint32_t rnrb_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_RADDR */ + uint32_t rnra_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_RADDR */ + uint32_t gpon_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_RADDR */ + uint32_t eth4_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG ; +#else +typedef struct +{ + /* ETH4_RADDR */ + uint32_t eth4_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_RADDR */ + uint32_t gpon_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_RADDR */ + uint32_t rnra_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_RADDR */ + uint32_t rnrb_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG ; +#endif + +/*****************************************************************************************/ +/* RBPM_BAT_CFG */ +/* Runner Buffer Allocation Threshold (per Runner) IH manages pool of common Runner B */ +/* uffers per each Runner. The maximal number of buffers is defined by the following opt */ +/* ions: 0x0 - 16 max buffers 0x1 - 24 max buffers 0x2 - 32 max buffers 0x3 - 48 max */ +/* buffers 0x4 - 64 max buffers Default is 0x0 (32 buffers) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRB_BPM_BAT_MAX_16_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRB_BPM_BAT_MAX_24_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRB_BPM_BAT_MAX_32_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRB_BPM_BAT_MAX_32_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRB_BPM_BAT_MAX_48_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRB_BPM_BAT_MAX_64_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRA_BPM_BAT_MAX_16_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRA_BPM_BAT_MAX_24_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRA_BPM_BAT_MAX_32_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRA_BPM_BAT_MAX_32_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRA_BPM_BAT_MAX_48_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_RNRA_BPM_BAT_MAX_64_VALUE ( 0x4 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_OFFSET ( 0x00000054 ) + +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_BPM_BAT */ + uint32_t rnrb_bpm_bat : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_BPM_BAT */ + uint32_t rnra_bpm_bat : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG ; +#else +typedef struct +{ + /* RNRA_BPM_BAT */ + uint32_t rnra_bpm_bat : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_BPM_BAT */ + uint32_t rnrb_bpm_bat : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG ; +#endif + +/*****************************************************************************************/ +/* RBPM_BAC_STAT */ +/* Runner Buffer Allocated Counter (per Runner) - represents the status of allocated buf */ +/* fers at moment of read access to register Background: IH manages pool of common R */ +/* unner Buffers per each Runner. The maximal number of buffers is defined by the follow */ +/* ing options: 0x0 - 16 max buffers 0x1 - 24 max buffers 0x2 - 32 max buffers 0x3 - */ +/* 48 max buffers 0x4 - 64 max buffers Default is 0x0 (no buffers) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_RNRB_BPM_BAC_BAC_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_RNRB_BPM_BAC_BAC_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_RNRA_BPM_BAC_BAC_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_RNRA_BPM_BAC_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_OFFSET ( 0x00000058 ) + +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv2 */ + uint32_t rsv2 : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_BPM_BAC */ + uint32_t rnrb_bpm_bac : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_BPM_BAC */ + uint32_t rnra_bpm_bac : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT ; +#else +typedef struct +{ + /* RNRA_BPM_BAC */ + uint32_t rnra_bpm_bac : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_BPM_BAC */ + uint32_t rnrb_bpm_bac : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT ; +#endif + +/*****************************************************************************************/ +/* TRGT_MTRX_ETH0_SP_CFG */ +/* Target matrix configuration for Source Port Eth0 Used for decision on Target memor */ +/* y and Local switch as function of extracted destination port that can be as following */ +/* : - Eth0 - Eth1 - Eth2 - Eth3 - Eth4 - GPON - PCIe - Multicast (MC) - CPU - */ +/* Always DDR (relevant for local switch info) - Always SRAM(relevant for local switch */ +/* info) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_SPARE_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_SRAM_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_DDR_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_MC_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_CPU_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_GPON_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH4_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH3_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH2_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_SPARE_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_MC_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_CPU_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_PCIE0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_GPON_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH4_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH3_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH2_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_DP_ETH0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_OFFSET ( 0x0000005C ) + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* TRGT_MTRX_ETH1_SP_CFG */ +/* Target matrix configuration for Source Port Eth1 Used for decision on Target memor */ +/* y and Local switch as function of extracted destination port that can be as following */ +/* : - Eth0 - Eth1 - Eth2 - Eth3 - Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU */ +/* - Always DDR (relevant for local switch info) - Always SRAM(relevant for local swi */ +/* tch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_SPARE_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_SRAM_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_DDR_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_MC_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_CPU_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_GPON_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH4_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH3_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH2_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_SPARE_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_MC_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_CPU_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_PCIE0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_GPON_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH4_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH3_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH2_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_DP_ETH0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_OFFSET ( 0x00000060 ) + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* TRGT_MTRX_ETH2_SP_CFG */ +/* Target matrix configuration for Source Port Eth2 Used for decision on Target memor */ +/* y and Local switch as function of extracted destination port that can be as following */ +/* : - Eth0 - Eth1 - Eth2 - Eth3 - Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU */ +/* - Always DDR (relevant for local switch info) - Always SRAM(relevant for local swi */ +/* tch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_SPARE_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_SRAM_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_DDR_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_MC_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_CPU_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_GPON_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH4_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH3_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH2_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_SPARE_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_MC_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_CPU_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_PCIE0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_GPON_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH4_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH3_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH2_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_DP_ETH0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_OFFSET ( 0x00000064 ) + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* TRGT_MTRX_ETH3_SP_CFG */ +/* Target matrix configuration for Source Port Eth3 Used for decision on Target memor */ +/* y and Local switch as function of extracted destination port that can be as following */ +/* : - Eth0 - Eth1 - Eth2 - Eth3 - Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU */ +/* - Always DDR (relevant for local switch info) - Always SRAM(relevant for local swi */ +/* tch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_SPARE_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_SRAM_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_DDR_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_MC_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_CPU_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_GPON_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH4_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH3_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH2_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_SPARE_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_MC_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_CPU_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_PCIE0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_GPON_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH4_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH3_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH2_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_DP_ETH0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_OFFSET ( 0x00000068 ) + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* TRGT_MTRX_ETH4_SP_CFG */ +/* Target matrix configuration for Source Port Eth4 Used for decision on Target memor */ +/* y and Local switch as function of extracted destination port that can be as following */ +/* : - Eth0 - Eth1 - Eth2 - Eth3 - Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU */ +/* - Always DDR (relevant for local switch info) - Always SRAM(relevant for local swi */ +/* tch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_SPARE_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_SRAM_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_DDR_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_MC_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_CPU_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_GPON_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH4_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH3_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH2_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_SPARE_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_MC_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_CPU_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_PCIE0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_GPON_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH4_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH3_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH2_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_DP_ETH0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_OFFSET ( 0x0000006C ) + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* TRGT_MTRX_GPON_SP_CFG */ +/* Target matrix configuration for Source Port GPON Used for decision on Target memor */ +/* y and Local switch as function of extracted destination port that can be as following */ +/* : - Eth0 - Eth1 - Eth2 - Eth3 - Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU */ +/* - Always DDR (relevant for local switch info) - Always SRAM(relevant for local swi */ +/* tch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_SPARE_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_SRAM_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_DDR_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_MC_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_CPU_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_GPON_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH4_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH3_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH2_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_SPARE_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_MC_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_CPU_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_PCIE0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_GPON_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH4_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH3_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH2_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_DP_ETH0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_OFFSET ( 0x00000070 ) + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_MISC_CFG */ +/* Ingres handler Miscellenous Control: - Look-up enable in Direct Mode - Serail Num */ +/* ber stamping enable for Short Packets */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_NVAL_CAM_SEARCH_EN_DIS_SEARCH_IN_CAM_AFTER_INVAL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_NVAL_CAM_SEARCH_EN_DIS_SEARCH_IN_CAM_AFTER_INVAL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_NVAL_CAM_SEARCH_EN_EN_SEARCH_IN_CAM_AFTER_INVAL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_CNGS_DSCRD_DIS_CNGS_DISCARD_EN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_CNGS_DSCRD_DIS_CNGS_DISCARD_EN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_CNGS_DSCRD_DIS_CNGS_DISCARD_DIS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_HLENGTH_MIN_TRSH_HLENGTH_MIN_TRSH_VAL_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_HLENGTH_MIN_TRSH_HLENGTH_MIN_TRSH_VAL_VALUE_RESET_VALUE ( 0x40 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_SN_STAMP_DM_PKT_DIS_STAMPING_SN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_SN_STAMP_DM_PKT_DIS_STAMPING_SN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_SN_STAMP_DM_PKT_EN_STAMPING_SN_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_LUT_EN_DIRECT_MODE_DISABLE_LOOKUP_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_LUT_EN_DIRECT_MODE_ENABLE_LOOKUP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_LUT_EN_DIRECT_MODE_ENABLE_LOOKUP_VALUE_RESET_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_OFFSET ( 0x00000074 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NVAL_CAM_SEARCH_EN */ + uint32_t nval_cam_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CNGS_DSCRD_DIS */ + uint32_t cngs_dscrd_dis : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HLENGTH_MIN_TRSH */ + uint32_t hlength_min_trsh : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_STAMP_DM_PKT */ + uint32_t sn_stamp_dm_pkt : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LUT_EN_DIRECT_MODE */ + uint32_t lut_en_direct_mode : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG ; +#else +typedef struct +{ + /* LUT_EN_DIRECT_MODE */ + uint32_t lut_en_direct_mode : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_STAMP_DM_PKT */ + uint32_t sn_stamp_dm_pkt : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HLENGTH_MIN_TRSH */ + uint32_t hlength_min_trsh : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CNGS_DSCRD_DIS */ + uint32_t cngs_dscrd_dis : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NVAL_CAM_SEARCH_EN */ + uint32_t nval_cam_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY0 */ +/* IH Class - Key0 configuration Note: used for IH class identification by Parser Cla */ +/* ssifier, based on the Parser Summary Word comparison. Per each class there is a KEY c */ +/* onfiguration and MASK that applied on the Parser Sumary word. If the match based on K */ +/* EY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header De */ +/* scriptor upon to override enable bit. The priority is always to lower Class ID (for e */ +/* xample: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_OFFSET ( 0x00000078 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY1 */ +/* IH Class - Key1 configuration Note: used for IH class identification by Parser Cla */ +/* ssifier, based on the Parser Summary Word comparison. Per each class there is a KEY c */ +/* onfiguration and MASK that applied on the Parser Sumary word. If the match based on K */ +/* EY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header De */ +/* scriptor upon to override enable bit. The priority is always to lower Class ID (for e */ +/* xample: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_OFFSET ( 0x0000007C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY2 */ +/* IH Class - Key2 configuration Note: used for IH class identification by Parser Cla */ +/* ssifier, based on the Parser Summary Word comparison. Per each class there is a KEY c */ +/* onfiguration and MASK that applied on the Parser Sumary word. If the match based on K */ +/* EY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header De */ +/* scriptor upon to override enable bit. The priority is always to lower Class ID (for e */ +/* xample: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_OFFSET ( 0x00000080 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY3 */ +/* IH Class - Key3 configuration Note: used for IH class identification by Parser Cla */ +/* ssifier, based on the Parser Summary Word comparison. Per each class there is a KEY c */ +/* onfiguration and MASK that applied on the Parser Sumary word. If the match based on K */ +/* EY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header De */ +/* scriptor upon to override enable bit. The priority is always to lower Class ID (for e */ +/* xample: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_OFFSET ( 0x00000084 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY4 */ +/* IH Class - Key4 configuration Note: used for IH class identification by Parser Cla */ +/* ssifier, based on the Parser Summary Word comparison. Per each class there is a KEY c */ +/* onfiguration and MASK that applied on the Parser Sumary word. If the match based on K */ +/* EY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header De */ +/* scriptor upon to override enable bit. The priority is always to lower Class ID (for e */ +/* xample: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_OFFSET ( 0x00000088 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY5 */ +/* IH Class - Key5 configuration Note: used for IH class identification by Parser Cla */ +/* ssifier, based on the Parser Summary Word comparison. Per each class there is a KEY c */ +/* onfiguration and MASK that applied on the Parser Sumary word. If the match based on K */ +/* EY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header De */ +/* scriptor upon to override enable bit. The priority is always to lower Class ID (for e */ +/* xample: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_OFFSET ( 0x0000008C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY6 */ +/* IH Class - Key6 configuration Note: used for IH class identification by Parser Cla */ +/* ssifier, based on the Parser Summary Word comparison. Per each class there is a KEY c */ +/* onfiguration and MASK that applied on the Parser Sumary word. If the match based on K */ +/* EY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header De */ +/* scriptor upon to override enable bit. The priority is always to lower Class ID (for e */ +/* xample: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_OFFSET ( 0x00000090 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY7 */ +/* IH Class - Key7 configuration Note: used for IH class identification by Parser Cla */ +/* ssifier, based on the Parser Summary Word comparison. Per each class there is a KEY c */ +/* onfiguration and MASK that applied on the Parser Sumary word. If the match based on K */ +/* EY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header De */ +/* scriptor upon to override enable bit. The priority is always to lower Class ID (for e */ +/* xample: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_OFFSET ( 0x00000094 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY8 */ +/* IH Class - Key8 configuration Note: used for IH class identification by Parser Cla */ +/* ssifier, based on the Parser Summary Word comparison. Per each class there is a KEY c */ +/* onfiguration and MASK that applied on the Parser Sumary word. If the match based on K */ +/* EY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header De */ +/* scriptor upon to override enable bit. The priority is always to lower Class ID (for e */ +/* xample: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_OFFSET ( 0x00000098 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY9 */ +/* IH Class - Key9 configuration Note: used for IH class identification by Parser Cla */ +/* ssifier, based on the Parser Summary Word comparison. Per each class there is a KEY c */ +/* onfiguration and MASK that applied on the Parser Sumary word. If the match based on K */ +/* EY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header De */ +/* scriptor upon to override enable bit. The priority is always to lower Class ID (for e */ +/* xample: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_OFFSET ( 0x0000009C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY10 */ +/* IH Class - Key10 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_OFFSET ( 0x00000100 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY11 */ +/* IH Class - Key11 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_OFFSET ( 0x00000104 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY12 */ +/* IH Class - Key12 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_OFFSET ( 0x00000108 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY13 */ +/* IH Class - Key13 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_OFFSET ( 0x0000010C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY14 */ +/* IH Class - Key14 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_OFFSET ( 0x00000110 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_KEY15 */ +/* IH Class - Key15 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_ERR_NO_ERROR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_ERR_ERROR_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_ERR_ERROR_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_ETH0_PORT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_ETH1_PORT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_ETH2_PORT_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_ETH3_PORT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_ETH4_PORT_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_GPON_PORT_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_RNRA_PORT_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_PCIE0_PORT_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_PCIE1_PORT_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_RNRB_PORT_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_SP_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x1F ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_5TPL_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_5TPL_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_WAN_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_WAN_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_IP_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_IP_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_IP_FLTR_IP_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_IP_FLTR_IP_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_IP_FLTR_IP_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_IP_FLTR_IP_FILTER3_MATCH_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER6_MATCH_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER7_MATCH_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER8_MATCH_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER9_MATCH_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER10_MATCH_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_VID_FILTER11_MATCH_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_RSV2_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_RSV3_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_VID_FLTR_RSV4_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_BC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_BC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_BC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_MC_FLTR_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_MC_FLTR_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_MC_FLTR_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_ANYHIT_NO_HIT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_ANYHIT_HIT_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_FLTR_DA_FILTER0_MATCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_FLTR_DA_FILTER1_MATCH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_FLTR_DA_FILTER2_MATCH_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_FLTR_DA_FILTER3_MATCH_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_FLTR_DA_FILTER4_MATCH_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_FLTR_DA_FILTER5_MATCH_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_FLTR_RSV1_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_DA_FLTR_RSV2_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_TCP_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_UDP_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_IGMP_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_ICMP_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_ICMPV6_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_ESP_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_GRE_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_RSV1_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_IPV6_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_AH_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_NOT_PARSED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L4_NOT_PARSED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L3_NONE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L3_IPV4_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L3_IPV6_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_UNKNOWN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_PPPOE_DISCOVERY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_PPPOE_SESSION_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_IPV4OE_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_IPV6OE_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_USER0_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_USER1_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_USER2_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_USER3_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_ARP_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_TYPE1588_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_TYPE8021X_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_IH_CLASS_KEY_L2_TYPE8011AGCFM_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_OFFSET ( 0x00000114 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_L2 */ + uint32_t ih_class_key_l2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L3 */ + uint32_t ih_class_key_l3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_L4 */ + uint32_t ih_class_key_l4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_FLTR */ + uint32_t ih_class_key_da_fltr : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_DA_ANYHIT */ + uint32_t ih_class_key_da_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_MC_FLTR */ + uint32_t ih_class_key_mc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_BC_FLTR */ + uint32_t ih_class_key_bc_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_FLTR */ + uint32_t ih_class_key_vid_fltr : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_VID_ANYHIT */ + uint32_t ih_class_key_vid_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_FLTR */ + uint32_t ih_class_key_ip_fltr : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_IP_ANYHIT */ + uint32_t ih_class_key_ip_anyhit : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_WAN_FLTR */ + uint32_t ih_class_key_wan_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_5TPL_FLTR */ + uint32_t ih_class_key_5tpl_fltr : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_SP */ + uint32_t ih_class_key_sp : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY_ERR */ + uint32_t ih_class_key_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK0 */ +/* IH Class - Mask0 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0_OFFSET ( 0x00000118 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK1 */ +/* IH Class - Mask1 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1_OFFSET ( 0x0000011C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK2 */ +/* IH Class - Mask2 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2_OFFSET ( 0x00000120 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK3 */ +/* IH Class - Mask3 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3_OFFSET ( 0x00000124 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK4 */ +/* IH Class - Mask4 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4_OFFSET ( 0x00000128 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK5 */ +/* IH Class - Mask5 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5_OFFSET ( 0x0000012C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK6 */ +/* IH Class - Mask6 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6_OFFSET ( 0x00000130 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK7 */ +/* IH Class - Mask7 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7_OFFSET ( 0x00000134 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK8 */ +/* IH Class - Mask8 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8_OFFSET ( 0x00000138 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK9 */ +/* IH Class - Mask9 configuration Note: used for IH class identification by Parser Cl */ +/* assifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header D */ +/* escriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9_OFFSET ( 0x0000013C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK10 */ +/* IH Class - Mask10 configuration Note: used for IH class identification by Parser C */ +/* lassifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header */ +/* Descriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10_OFFSET ( 0x00000140 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK11 */ +/* IH Class - Mask11 configuration Note: used for IH class identification by Parser C */ +/* lassifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header */ +/* Descriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11_OFFSET ( 0x00000144 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK12 */ +/* IH Class - Mask12 configuration Note: used for IH class identification by Parser C */ +/* lassifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header */ +/* Descriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12_OFFSET ( 0x00000148 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK13 */ +/* IH Class - Mask13 configuration Note: used for IH class identification by Parser C */ +/* lassifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header */ +/* Descriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13_OFFSET ( 0x0000014C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK14 */ +/* IH Class - Mask13 configuration Note: used for IH class identification by Parser C */ +/* lassifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header */ +/* Descriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14_OFFSET ( 0x00000150 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS_MASK15 */ +/* IH Class - Mask15 configuration Note: used for IH class identification by Parser C */ +/* lassifier, based on the Parser Summary Word comparison. Per each class there is a KEY */ +/* configuration and MASK that applied on the Parser Sumary word. If the match based on */ +/* KEY & MASK is OK, Classifier may override IH class provided by BBH/Runner in Header */ +/* Descriptor upon to override enable bit. The priority is always to lower Class ID (for */ +/* example: if Class 3, 4 and 15 has match - Class 3 is choosen. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15_IH_CLASS_MASK_MASK_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15_IH_CLASS_MASK_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15_OFFSET ( 0x00000154 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15 ; +#else +typedef struct +{ + /* IH_CLASS_KEY_MASK */ + uint32_t ih_class_mask : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15 ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS0_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class0 These parameters used for defau */ +/* lt setting per current IH class, used also as characterization of this ingres traffic */ +/* . The set of aparametrs include: o Ingres QoS setting for class & override enab */ +/* le by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting per */ +/* class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_OFFSET ( 0x00000158 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS1_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class1 These parameters used for defau */ +/* lt setting per current IH class, used also as characterization of this ingres traffic */ +/* . The set of aparametrs include: o Ingres QoS setting for class & override enab */ +/* le by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting per */ +/* class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_OFFSET ( 0x0000015C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS2_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class2 These parameters used for defau */ +/* lt setting per current IH class, used also as characterization of this ingres traffic */ +/* . The set of aparametrs include: o Ingres QoS setting for class & override enab */ +/* le by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting per */ +/* class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_OFFSET ( 0x00000160 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS3_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class3 These parameters used for defau */ +/* lt setting per current IH class, used also as characterization of this ingres traffic */ +/* . The set of aparametrs include: o Ingres QoS setting for class & override enab */ +/* le by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting per */ +/* class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_OFFSET ( 0x00000164 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS4_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class4 These parameters used for defau */ +/* lt setting per current IH class, used also as characterization of this ingres traffic */ +/* . The set of aparametrs include: o Ingres QoS setting for class & override enab */ +/* le by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting per */ +/* class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_OFFSET ( 0x00000168 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS5_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class5 These parameters used for defau */ +/* lt setting per current IH class, used also as characterization of this ingres traffic */ +/* . The set of aparametrs include: o Ingres QoS setting for class & override enab */ +/* le by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting per */ +/* class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_OFFSET ( 0x0000016C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS6_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class6 These parameters used for defau */ +/* lt setting per current IH class, used also as characterization of this ingres traffic */ +/* . The set of aparametrs include: o Ingres QoS setting for class & override enab */ +/* le by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting per */ +/* class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_OFFSET ( 0x00000170 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS7_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class7 These parameters used for defau */ +/* lt setting per current IH class, used also as characterization of this ingres traffic */ +/* . The set of aparametrs include: o Ingres QoS setting for class & override enab */ +/* le by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting per */ +/* class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_OFFSET ( 0x00000174 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS8_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class8 These parameters used for defau */ +/* lt setting per current IH class, used also as characterization of this ingres traffic */ +/* . The set of aparametrs include: o Ingres QoS setting for class & override enab */ +/* le by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting per */ +/* class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_OFFSET ( 0x00000178 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS9_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class9 These parameters used for defau */ +/* lt setting per current IH class, used also as characterization of this ingres traffic */ +/* . The set of aparametrs include: o Ingres QoS setting for class & override enab */ +/* le by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting per */ +/* class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_OFFSET ( 0x0000017C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS10_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class10 These parameters used for defa */ +/* ult setting per current IH class, used also as characterization of this ingres traffi */ +/* c. The set of aparametrs include: o Ingres QoS setting for class & override ena */ +/* ble by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting pe */ +/* r class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_OFFSET ( 0x00000180 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS11_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class11 These parameters used for defa */ +/* ult setting per current IH class, used also as characterization of this ingres traffi */ +/* c. The set of aparametrs include: o Ingres QoS setting for class & override ena */ +/* ble by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting pe */ +/* r class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_OFFSET ( 0x00000184 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS12_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class12 These parameters used for defa */ +/* ult setting per current IH class, used also as characterization of this ingres traffi */ +/* c. The set of aparametrs include: o Ingres QoS setting for class & override ena */ +/* ble by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting pe */ +/* r class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_OFFSET ( 0x00000188 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS13_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class13 These parameters used for defa */ +/* ult setting per current IH class, used also as characterization of this ingres traffi */ +/* c. The set of aparametrs include: o Ingres QoS setting for class & override ena */ +/* ble by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting pe */ +/* r class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_OFFSET ( 0x0000018C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS14_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class14 These parameters used for defa */ +/* ult setting per current IH class, used also as characterization of this ingres traffi */ +/* c. The set of aparametrs include: o Ingres QoS setting for class & override ena */ +/* ble by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting pe */ +/* r class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_OFFSET ( 0x00000190 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS15_GENERAL_CFG */ +/* Set of defaults (general parameters) for IH class15 These parameters used for defa */ +/* ult setting per current IH class, used also as characterization of this ingres traffi */ +/* c. The set of aparametrs include: o Ingres QoS setting for class & override ena */ +/* ble by LUT o Destination memory setting per class & override enable by LUT o Direct */ +/* mode setting per class & override enable by LUT o Default target Runner setting pe */ +/* r class & load balancing enable + preference enable for load balancing o DSCP to TCI */ +/* translation: reference to translation table o */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_SPARE_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_SPARE_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_SPARE_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_RNR_DEFAULT_DM_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_RNR_DEFAULT_DM_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_RNR_OVR_DM_NON_OVERIIDE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_RNR_OVR_DM_OVERIIDE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_DSCP2TCI_TRANS_TBL_TABLE1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_PREF_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_PREF_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_LB_EN_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_LB_EN_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_LB_EN_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_TR_DEFAULT_RNRA_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_TR_DEFAULT_RNRB_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_DM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_DM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_DM_DEFAULT_NON_DIRECT_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_DM_DEFAULT_DIRECT_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_TM_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_TM_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_TM_DEFAULT_DDR_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_TM_DEFAULT_DDR_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_TM_DEFAULT_SRAM_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_QOS_OVERRIDE_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_QOS_OVERRIDE_ENABLED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_QOS_DEFAULT_LOW_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_QOS_DEFAULT_HIGH_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_QOS_DEFAULT_RESERVED_EXCL_PLOAM_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_QOS_DEFAULT_EXCL_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_OFFSET ( 0x00000194 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG ; +#else +typedef struct +{ + /* QOS_DEFAULT */ + uint32_t qos_default : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_OVERRIDE */ + uint32_t qos_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_DEFAULT */ + uint32_t tm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TM_OVERRIDE */ + uint32_t tm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_DEFAULT */ + uint32_t dm_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DM_OVERRIDE */ + uint32_t dm_override : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TR_DEFAULT */ + uint32_t tr_default : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_EN */ + uint32_t lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PREF_LB_EN */ + uint32_t pref_lb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TRANS_TBL */ + uint32_t dscp2tci_trans_tbl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_OVR_DM */ + uint32_t rnr_ovr_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_DEFAULT_DM */ + uint32_t rnr_default_dm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS0_SEARCH_CFG */ +/* Set of search parametrs for IH class0 These parameters used for search setting per */ +/* current IH class, used also as characterization of this ingres traffic. The set o */ +/* f search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sear */ +/* ches (for SA search we can define dummy table that corresponds to same MAC table as f */ +/* or DA search, but with different key settings) QoS extraction info: - extract fr */ +/* om search 1 or from search 3 (one hot or none of them) Destination port extraction */ +/* info: - extract from search 1 or from search 3 (one hot or non of them) Drop on */ +/* miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or no */ +/* n of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_OFFSET ( 0x00000198 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS1_SEARCH_CFG */ +/* Set of search parametrs for IH class1 These parameters used for search setting per */ +/* current IH class, used also as characterization of this ingres traffic. The set o */ +/* f search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sear */ +/* ches (for SA search we can define dummy table that corresponds to same MAC table as f */ +/* or DA search, but with different key settings) QoS extraction info: - extract fr */ +/* om search 1 or from search 3 (one hot or none of them) Destination port extraction */ +/* info: - extract from search 1 or from search 3 (one hot or non of them) Drop on */ +/* miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or no */ +/* n of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_OFFSET ( 0x0000019C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS2_SEARCH_CFG */ +/* Set of search parametrs for IH class2 These parameters used for search setting per */ +/* current IH class, used also as characterization of this ingres traffic. The set o */ +/* f search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sear */ +/* ches (for SA search we can define dummy table that corresponds to same MAC table as f */ +/* or DA search, but with different key settings) QoS extraction info: - extract fr */ +/* om search 1 or from search 3 (one hot or none of them) Destination port extraction */ +/* info: - extract from search 1 or from search 3 (one hot or non of them) Drop on */ +/* miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or no */ +/* n of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_OFFSET ( 0x00000200 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS3_SEARCH_CFG */ +/* Set of search parametrs for IH class3 These parameters used for search setting per */ +/* current IH class, used also as characterization of this ingres traffic. The set o */ +/* f search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sear */ +/* ches (for SA search we can define dummy table that corresponds to same MAC table as f */ +/* or DA search, but with different key settings) QoS extraction info: - extract fr */ +/* om search 1 or from search 3 (one hot or none of them) Destination port extraction */ +/* info: - extract from search 1 or from search 3 (one hot or non of them) Drop on */ +/* miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or no */ +/* n of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_OFFSET ( 0x00000204 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS4_SEARCH_CFG */ +/* Set of search parametrs for IH class1 These parameters used for search setting per */ +/* current IH class, used also as characterization of this ingres traffic. The set o */ +/* f search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sear */ +/* ches (for SA search we can define dummy table that corresponds to same MAC table as f */ +/* or DA search, but with different key settings) QoS extraction info: - extract fr */ +/* om search 1 or from search 3 (one hot or none of them) Destination port extraction */ +/* info: - extract from search 1 or from search 3 (one hot or non of them) Drop on */ +/* miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or no */ +/* n of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_OFFSET ( 0x00000208 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS5_SEARCH_CFG */ +/* Set of search parametrs for IH class5 These parameters used for search setting per */ +/* current IH class, used also as characterization of this ingres traffic. The set o */ +/* f search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sear */ +/* ches (for SA search we can define dummy table that corresponds to same MAC table as f */ +/* or DA search, but with different key settings) QoS extraction info: - extract fr */ +/* om search 1 or from search 3 (one hot or none of them) Destination port extraction */ +/* info: - extract from search 1 or from search 3 (one hot or non of them) Drop on */ +/* miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or no */ +/* n of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_OFFSET ( 0x0000020C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS6_SEARCH_CFG */ +/* Set of search parametrs for IH class6 These parameters used for search setting per */ +/* current IH class, used also as characterization of this ingres traffic. The set o */ +/* f search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sear */ +/* ches (for SA search we can define dummy table that corresponds to same MAC table as f */ +/* or DA search, but with different key settings) QoS extraction info: - extract fr */ +/* om search 1 or from search 3 (one hot or none of them) Destination port extraction */ +/* info: - extract from search 1 or from search 3 (one hot or non of them) Drop on */ +/* miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or no */ +/* n of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_OFFSET ( 0x00000210 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS7_SEARCH_CFG */ +/* Set of search parametrs for IH class7 These parameters used for search setting per */ +/* current IH class, used also as characterization of this ingres traffic. The set o */ +/* f search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sear */ +/* ches (for SA search we can define dummy table that corresponds to same MAC table as f */ +/* or DA search, but with different key settings) QoS extraction info: - extract fr */ +/* om search 1 or from search 3 (one hot or none of them) Destination port extraction */ +/* info: - extract from search 1 or from search 3 (one hot or non of them) Drop on */ +/* miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or no */ +/* n of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_OFFSET ( 0x00000214 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS8_SEARCH_CFG */ +/* Set of search parametrs for IH class8 These parameters used for search setting per */ +/* current IH class, used also as characterization of this ingres traffic. The set o */ +/* f search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sear */ +/* ches (for SA search we can define dummy table that corresponds to same MAC table as f */ +/* or DA search, but with different key settings) QoS extraction info: - extract fr */ +/* om search 1 or from search 3 (one hot or none of them) Destination port extraction */ +/* info: - extract from search 1 or from search 3 (one hot or non of them) Drop on */ +/* miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or no */ +/* n of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_OFFSET ( 0x00000218 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS9_SEARCH_CFG */ +/* Set of search parametrs for IH class9 These parameters used for search setting per */ +/* current IH class, used also as characterization of this ingres traffic. The set o */ +/* f search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sear */ +/* ches (for SA search we can define dummy table that corresponds to same MAC table as f */ +/* or DA search, but with different key settings) QoS extraction info: - extract fr */ +/* om search 1 or from search 3 (one hot or none of them) Destination port extraction */ +/* info: - extract from search 1 or from search 3 (one hot or non of them) Drop on */ +/* miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or no */ +/* n of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_OFFSET ( 0x0000021C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS10_SEARCH_CFG */ +/* Set of search parametrs for IH class10 These parameters used for search setting pe */ +/* r current IH class, used also as characterization of this ingres traffic. The set */ +/* of search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sea */ +/* rches (for SA search we can define dummy table that corresponds to same MAC table as */ +/* for DA search, but with different key settings) QoS extraction info: - extract f */ +/* rom search 1 or from search 3 (one hot or none of them) Destination port extractio */ +/* n info: - extract from search 1 or from search 3 (one hot or non of them) Drop o */ +/* n miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or n */ +/* on of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_OFFSET ( 0x00000220 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS11_SEARCH_CFG */ +/* Set of search parametrs for IH class11 These parameters used for search setting pe */ +/* r current IH class, used also as characterization of this ingres traffic. The set */ +/* of search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sea */ +/* rches (for SA search we can define dummy table that corresponds to same MAC table as */ +/* for DA search, but with different key settings) QoS extraction info: - extract f */ +/* rom search 1 or from search 3 (one hot or none of them) Destination port extractio */ +/* n info: - extract from search 1 or from search 3 (one hot or non of them) Drop o */ +/* n miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or n */ +/* on of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_OFFSET ( 0x00000224 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS12_SEARCH_CFG */ +/* Set of search parametrs for IH class12 These parameters used for search setting pe */ +/* r current IH class, used also as characterization of this ingres traffic. The set */ +/* of search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sea */ +/* rches (for SA search we can define dummy table that corresponds to same MAC table as */ +/* for DA search, but with different key settings) QoS extraction info: - extract f */ +/* rom search 1 or from search 3 (one hot or none of them) Destination port extractio */ +/* n info: - extract from search 1 or from search 3 (one hot or non of them) Drop o */ +/* n miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or n */ +/* on of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_OFFSET ( 0x00000228 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS13_SEARCH_CFG */ +/* Set of search parametrs for IH class13 These parameters used for search setting pe */ +/* r current IH class, used also as characterization of this ingres traffic. The set */ +/* of search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sea */ +/* rches (for SA search we can define dummy table that corresponds to same MAC table as */ +/* for DA search, but with different key settings) QoS extraction info: - extract f */ +/* rom search 1 or from search 3 (one hot or none of them) Destination port extractio */ +/* n info: - extract from search 1 or from search 3 (one hot or non of them) Drop o */ +/* n miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or n */ +/* on of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_OFFSET ( 0x0000022C ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS14_SEARCH_CFG */ +/* Set of search parametrs for IH class14 These parameters used for search setting pe */ +/* r current IH class, used also as characterization of this ingres traffic. The set */ +/* of search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sea */ +/* rches (for SA search we can define dummy table that corresponds to same MAC table as */ +/* for DA search, but with different key settings) QoS extraction info: - extract f */ +/* rom search 1 or from search 3 (one hot or none of them) Destination port extractio */ +/* n info: - extract from search 1 or from search 3 (one hot or non of them) Drop o */ +/* n miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or n */ +/* on of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_OFFSET ( 0x00000230 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLASS15_SEARCH_CFG */ +/* Set of search parametrs for IH class15 These parameters used for search setting pe */ +/* r current IH class, used also as characterization of this ingres traffic. The set */ +/* of search parametrs include: o Detailed assignment of 4 LUT tables for up to 4 sea */ +/* rches (for SA search we can define dummy table that corresponds to same MAC table as */ +/* for DA search, but with different key settings) QoS extraction info: - extract f */ +/* rom search 1 or from search 3 (one hot or none of them) Destination port extractio */ +/* n info: - extract from search 1 or from search 3 (one hot or non of them) Drop o */ +/* n miss info: - consider “drop on miss” from search 1 or from search 3 (one hot or n */ +/* on of them) */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_NONE_DROP_ON_SEARCH_MISS_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH1_MISS_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_DROP_ON_SEARCH3_MISS_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_DROP_ON_MISS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_DP_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_DP_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_DP_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_QOS_EXTR_CFG_NONE_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_QOS_EXTR_CFG_FROM_SEARCH3_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_QOS_EXTR_CFG_RESERVED_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH4_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH3_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH2_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_LKUP_TBL9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV1_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV2_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV3_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV4_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_RSV5_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_SEARCH1_LKUP_TBL_REF_SEARCH_DISABLED_VALUE_RESET_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_OFFSET ( 0x00000234 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG ; +#else +typedef struct +{ + /* SEARCH1_LKUP_TBL_REF */ + uint32_t search1_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH2_LKUP_TBL_REF */ + uint32_t search2_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH3_LKUP_TBL_REF */ + uint32_t search3_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SEARCH4_LKUP_TBL_REF */ + uint32_t search4_lkup_tbl_ref : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QOS_EXTR_CFG */ + uint32_t qos_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_EXTR_CFG */ + uint32_t dp_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DROP_ON_MISS_EXTR_CFG */ + uint32_t drop_on_miss_extr_cfg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG ; +#endif + +/*****************************************************************************************/ +/* RNRA_CNGS_TRSH_CFG */ +/* Congestion thresholds of Runner A Includes: - Load balaning congestion threshold */ +/* (start load balanicng upon to enable bit) - Load balancing hysteresis - High priori */ +/* ty congestion threshold (drop low priority packets) - Exclusive priority congestion */ +/* threshold (drop low/high priority packets) Note: should be according to max number */ +/* of RBs */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_EXCL_CNGS_TRSH_THRESHOLD_VALUE ( 0x1C ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_EXCL_CNGS_TRSH_THRESHOLD_VALUE_RESET_VALUE ( 0x1C ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_HIGH_CNGS_TRSH_THRESHOLD_VALUE ( 0x16 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_HIGH_CNGS_TRSH_THRESHOLD_VALUE_RESET_VALUE ( 0x16 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_LB_HYST_THRESHOLD_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_LB_HYST_THRESHOLD_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_LB_THSH_THRESHOLD_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_LB_THSH_THRESHOLD_VALUE_RESET_VALUE ( 0x8 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_OFFSET ( 0x00000238 ) + +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EXCL_CNGS_TRSH */ + uint32_t excl_cngs_trsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HIGH_CNGS_TRSH */ + uint32_t high_cngs_trsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_HYST */ + uint32_t lb_hyst : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_THSH */ + uint32_t lb_thsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG ; +#else +typedef struct +{ + /* LB_THSH */ + uint32_t lb_thsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_HYST */ + uint32_t lb_hyst : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HIGH_CNGS_TRSH */ + uint32_t high_cngs_trsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EXCL_CNGS_TRSH */ + uint32_t excl_cngs_trsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG ; +#endif + +/*****************************************************************************************/ +/* RNRB_CNGS_TRSH_CFG */ +/* Congestion thresholds of Runner B Includes: - Load balaning congestion threshold */ +/* (start load balanicng upon to enable bit) - Load balancing hysteresis - High priori */ +/* ty congestion threshold (drop low priority packets) - Exclusive priority congestion */ +/* threshold (drop low/high priority packets) Note: should be according to max number */ +/* of RBs */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_RSV4_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_EXCL_CNGS_TRSH_THRESHOLD_VALUE ( 0x1C ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_EXCL_CNGS_TRSH_THRESHOLD_VALUE_RESET_VALUE ( 0x1C ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_RSV3_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_HIGH_CNGS_TRSH_THRESHOLD_VALUE ( 0x16 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_HIGH_CNGS_TRSH_THRESHOLD_VALUE_RESET_VALUE ( 0x16 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_LB_HYST_THRESHOLD_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_LB_HYST_THRESHOLD_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_LB_THSH_THRESHOLD_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_LB_THSH_THRESHOLD_VALUE_RESET_VALUE ( 0x8 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_OFFSET ( 0x0000023C ) + +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EXCL_CNGS_TRSH */ + uint32_t excl_cngs_trsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HIGH_CNGS_TRSH */ + uint32_t high_cngs_trsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_HYST */ + uint32_t lb_hyst : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_THSH */ + uint32_t lb_thsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG ; +#else +typedef struct +{ + /* LB_THSH */ + uint32_t lb_thsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LB_HYST */ + uint32_t lb_hyst : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HIGH_CNGS_TRSH */ + uint32_t high_cngs_trsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv3 */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EXCL_CNGS_TRSH */ + uint32_t excl_cngs_trsh : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV4 */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG ; +#endif + +/*****************************************************************************************/ +/* WAN_PER_PORT_CFG */ +/* Each phyisical ingres port has its own configuration if it belongs to WAN or non-WAN */ +/* traffic */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_PCIE1_TRF_MAP_NON_WAN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_PCIE1_TRF_MAP_NON_WAN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_PCIE1_TRF_MAP_WAN_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_PCIE0_TRF_MAP_NON_WAN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_PCIE0_TRF_MAP_NON_WAN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_PCIE0_TRF_MAP_WAN_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_RNRB_TRF_MAP_NON_WAN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_RNRB_TRF_MAP_NON_WAN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_RNRB_TRF_MAP_WAN_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_RNRA_TRF_MAP_NON_WAN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_RNRA_TRF_MAP_NON_WAN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_RNRA_TRF_MAP_WAN_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_GPON_TRF_MAP_NON_WAN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_GPON_TRF_MAP_WAN_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_GPON_TRF_MAP_WAN_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH4_TRF_MAP_NON_WAN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH4_TRF_MAP_NON_WAN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH4_TRF_MAP_WAN_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH3_TRF_MAP_NON_WAN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH3_TRF_MAP_NON_WAN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH3_TRF_MAP_WAN_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH2_TRF_MAP_NON_WAN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH2_TRF_MAP_NON_WAN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH2_TRF_MAP_WAN_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH1_TRF_MAP_NON_WAN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH1_TRF_MAP_NON_WAN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH1_TRF_MAP_WAN_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH0_TRF_MAP_NON_WAN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH0_TRF_MAP_NON_WAN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ETH0_TRF_MAP_WAN_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_OFFSET ( 0x00000240 ) + +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE1_TRF_MAP */ + uint32_t pcie1_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE0_TRF_MAP */ + uint32_t pcie0_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_TRF_MAP */ + uint32_t rnrb_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_TRF_MAP */ + uint32_t rnra_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_TRF_MAP */ + uint32_t gpon_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_TRF_MAP */ + uint32_t eth4_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_TRF_MAP */ + uint32_t eth3_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_TRF_MAP */ + uint32_t eth2_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_TRF_MAP */ + uint32_t eth1_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH0_TRF_MAP */ + uint32_t eth0_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG ; +#else +typedef struct +{ + /* ETH0_TRF_MAP */ + uint32_t eth0_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_TRF_MAP */ + uint32_t eth1_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_TRF_MAP */ + uint32_t eth2_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_TRF_MAP */ + uint32_t eth3_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_TRF_MAP */ + uint32_t eth4_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_TRF_MAP */ + uint32_t gpon_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_TRF_MAP */ + uint32_t rnra_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_TRF_MAP */ + uint32_t rnrb_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE0_TRF_MAP */ + uint32_t pcie0_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE1_TRF_MAP */ + uint32_t pcie1_trf_map : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG ; +#endif + +/*****************************************************************************************/ +/* PARSE_LAYER_PER_PORT_CFG */ +/* Each phyisical ingres port has its own configuration related to Parsing Layer Depth */ +/* Note: pcie0 and pcie1 are sharing same configuration */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_PCIE1_PARSE_LAYER_STG_PARSE_LAYER_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_PCIE1_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_PCIE0_PARSE_LAYER_STG_PARSE_LAYER_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_PCIE0_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_RNRB_PARSE_LAYER_STG_PARSE_LAYER_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_RNRB_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_RNRA_PARSE_LAYER_STG_PARSE_LAYER_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_RNRA_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_GPON_PARSE_LAYER_STG_PARSE_LAYER_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_GPON_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH4_PARSE_LAYER_STG_PARSE_LAYER_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH4_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH3_PARSE_LAYER_STG_PARSE_LAYER_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH3_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH2_PARSE_LAYER_STG_PARSE_LAYER_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH2_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH1_PARSE_LAYER_STG_PARSE_LAYER_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH1_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH0_PARSE_LAYER_STG_PARSE_LAYER_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ETH0_PARSE_LAYER_STG_PARSE_LAYER_VALUE_RESET_VALUE ( 0x3 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_OFFSET ( 0x00000244 ) + +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE1_PARSE_LAYER_STG */ + uint32_t pcie1_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE0_PARSE_LAYER_STG */ + uint32_t pcie0_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_PARSE_LAYER_STG */ + uint32_t rnrb_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_PARSE_LAYER_STG */ + uint32_t rnra_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_PARSE_LAYER_STG */ + uint32_t gpon_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_PARSE_LAYER_STG */ + uint32_t eth4_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_PARSE_LAYER_STG */ + uint32_t eth3_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_PARSE_LAYER_STG */ + uint32_t eth2_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_PARSE_LAYER_STG */ + uint32_t eth1_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH0_PARSE_LAYER_STG */ + uint32_t eth0_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG ; +#else +typedef struct +{ + /* ETH0_PARSE_LAYER_STG */ + uint32_t eth0_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_PARSE_LAYER_STG */ + uint32_t eth1_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_PARSE_LAYER_STG */ + uint32_t eth2_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_PARSE_LAYER_STG */ + uint32_t eth3_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_PARSE_LAYER_STG */ + uint32_t eth4_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_PARSE_LAYER_STG */ + uint32_t gpon_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_PARSE_LAYER_STG */ + uint32_t rnra_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_PARSE_LAYER_STG */ + uint32_t rnrb_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE0_PARSE_LAYER_STG */ + uint32_t pcie0_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE1_PARSE_LAYER_STG */ + uint32_t pcie1_parse_layer_stg : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG ; +#endif + +/*****************************************************************************************/ +/* PROP_SIZE_PER_PORT_CFG0 */ +/* Each phyisical ingres port has its own configuration related to Propitiatory tag size */ +/* , valid option are 0, 4 ,6 or 8 bytes. The option of 2 bytes is reserved for user, b */ +/* ut supported by HW. This option should be masked by driver API. This register is rel */ +/* ated to following source ports (source port is taken from Packet Header Descriptor): */ +/* - Eth0-4 - GPON (or Eth5) - Runner A/B */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_TAG_SIZE_0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_TAG_SIZE_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RESERVED_TAG_SIZE_2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_TAG_SIZE_4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_TAG_SIZE_6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_TAG_SIZE_8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV10_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV11_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV12_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV13_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV14_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRB_PROP_TAG_SIZE_RSV15_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_TAG_SIZE_0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_TAG_SIZE_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RESERVED_TAG_SIZE_2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_TAG_SIZE_4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_TAG_SIZE_6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_TAG_SIZE_8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV10_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV11_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV12_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV13_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV14_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_RNRA_PROP_TAG_SIZE_RSV15_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_TAG_SIZE_0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_TAG_SIZE_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RESERVED_TAG_SIZE_2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_TAG_SIZE_4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_TAG_SIZE_6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_TAG_SIZE_8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV10_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV11_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV12_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV13_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV14_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_GPON_PROP_TAG_SIZE_RSV15_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_TAG_SIZE_0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_TAG_SIZE_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RESERVED_TAG_SIZE_2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_TAG_SIZE_4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_TAG_SIZE_6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_TAG_SIZE_8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV10_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV11_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV12_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV13_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV14_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH4_PROP_TAG_SIZE_RSV15_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_TAG_SIZE_0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_TAG_SIZE_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RESERVED_TAG_SIZE_2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_TAG_SIZE_4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_TAG_SIZE_6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_TAG_SIZE_8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV10_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV11_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV12_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV13_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV14_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH3_PROP_TAG_SIZE_RSV15_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_TAG_SIZE_0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_TAG_SIZE_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RESERVED_TAG_SIZE_2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_TAG_SIZE_4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_TAG_SIZE_6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_TAG_SIZE_8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV10_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV11_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV12_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV13_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV14_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH2_PROP_TAG_SIZE_RSV15_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_TAG_SIZE_0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_TAG_SIZE_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RESERVED_TAG_SIZE_2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_TAG_SIZE_4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_TAG_SIZE_6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_TAG_SIZE_8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV10_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV11_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV12_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV13_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV14_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH1_PROP_TAG_SIZE_RSV15_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_TAG_SIZE_0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_TAG_SIZE_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RESERVED_TAG_SIZE_2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_TAG_SIZE_4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_TAG_SIZE_6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_TAG_SIZE_8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV10_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV11_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV12_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV13_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV14_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ETH0_PROP_TAG_SIZE_RSV15_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_OFFSET ( 0x00000248 ) + +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RNRB_PROP_TAG_SIZE */ + uint32_t rnrb_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_PROP_TAG_SIZE */ + uint32_t rnra_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_PROP_TAG_SIZE */ + uint32_t gpon_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_PROP_TAG_SIZE */ + uint32_t eth4_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_PROP_TAG_SIZE */ + uint32_t eth3_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_PROP_TAG_SIZE */ + uint32_t eth2_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_PROP_TAG_SIZE */ + uint32_t eth1_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH0_PROP_TAG_SIZE */ + uint32_t eth0_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0 ; +#else +typedef struct +{ + /* ETH0_PROP_TAG_SIZE */ + uint32_t eth0_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_PROP_TAG_SIZE */ + uint32_t eth1_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_PROP_TAG_SIZE */ + uint32_t eth2_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_PROP_TAG_SIZE */ + uint32_t eth3_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_PROP_TAG_SIZE */ + uint32_t eth4_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_PROP_TAG_SIZE */ + uint32_t gpon_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_PROP_TAG_SIZE */ + uint32_t rnra_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_PROP_TAG_SIZE */ + uint32_t rnrb_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0 ; +#endif + +/*****************************************************************************************/ +/* PROP_SIZE_PER_PORT_CFG1 */ +/* Each phyisical ingres port has its own configuration related to Propitiatory tag size */ +/* , valid option are 0, 4 ,6 or 8 bytes. The option of 2 bytes is reserved for user, b */ +/* ut supported by HW. This option should be masked by driver API. This register is rel */ +/* ated to following source ports (source port is taken from Packet Header Descriptor): */ +/* - Pcie0 - Pcie1 */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_TAG_SIZE_0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_TAG_SIZE_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RESERVED_TAG_SIZE_2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_TAG_SIZE_4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_TAG_SIZE_6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_TAG_SIZE_8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV10_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV11_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV12_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV13_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV14_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE1_PROP_TAG_SIZE_RSV15_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_TAG_SIZE_0_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_TAG_SIZE_0_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV1_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RESERVED_TAG_SIZE_2_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV3_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_TAG_SIZE_4_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV5_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_TAG_SIZE_6_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV7_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_TAG_SIZE_8_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV9_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV10_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV11_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV12_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV13_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV14_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_PCIE0_PROP_TAG_SIZE_RSV15_VALUE ( 0xF ) + + +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_OFFSET ( 0x0000024C ) + +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE1_PROP_TAG_SIZE */ + uint32_t pcie1_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE0_PROP_TAG_SIZE */ + uint32_t pcie0_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1 ; +#else +typedef struct +{ + /* PCIE0_PROP_TAG_SIZE */ + uint32_t pcie0_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE1_PROP_TAG_SIZE */ + uint32_t pcie1_prop_tag_size : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1 ; +#endif + +/*****************************************************************************************/ +/* IH_CLSF_MAPL_CFG */ +/* There are 16 Classifier sets (keys+mask) that in case of match performs mapping of ma */ +/* tched set to IH class. The register includes Class ID for lowest sets [0...7] */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET7_MAP_CLASS_ID_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET7_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0x7 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET6_MAP_CLASS_ID_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET6_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0x6 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET5_MAP_CLASS_ID_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET5_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0x5 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET4_MAP_CLASS_ID_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET4_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0x4 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET3_MAP_CLASS_ID_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET3_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0x3 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET2_MAP_CLASS_ID_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET2_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0x2 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET1_MAP_CLASS_ID_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET1_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET0_MAP_CLASS_ID_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_CLSF_SET0_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_OFFSET ( 0x00000250 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* CLSF_SET7_MAP */ + uint32_t clsf_set7_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET6_MAP */ + uint32_t clsf_set6_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET5_MAP */ + uint32_t clsf_set5_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET4_MAP */ + uint32_t clsf_set4_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET3_MAP */ + uint32_t clsf_set3_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET2_MAP */ + uint32_t clsf_set2_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET1_MAP */ + uint32_t clsf_set1_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET0_MAP */ + uint32_t clsf_set0_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG ; +#else +typedef struct +{ + /* CLSF_SET0_MAP */ + uint32_t clsf_set0_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET1_MAP */ + uint32_t clsf_set1_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET2_MAP */ + uint32_t clsf_set2_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET3_MAP */ + uint32_t clsf_set3_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET4_MAP */ + uint32_t clsf_set4_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET5_MAP */ + uint32_t clsf_set5_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET6_MAP */ + uint32_t clsf_set6_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET7_MAP */ + uint32_t clsf_set7_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG ; +#endif + +/*****************************************************************************************/ +/* IH_CLSF_MAPH_CFG */ +/* There are 16 Classifier sets (keys+mask) that in case of match performs mapping of ma */ +/* tched set to IH class. The register includes Class ID for highest sets [8...15] */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET15_MAP_CLASS_ID_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET15_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0xF ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET14_MAP_CLASS_ID_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET14_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0xE ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET13_MAP_CLASS_ID_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET13_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0xD ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET12_MAP_CLASS_ID_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET12_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0xC ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET11_MAP_CLASS_ID_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET11_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0xB ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET10_MAP_CLASS_ID_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET10_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0xA ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET9_MAP_CLASS_ID_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET9_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0x9 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET8_MAP_CLASS_ID_VALUE ( 0x8 ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_CLSF_SET8_MAP_CLASS_ID_VALUE_RESET_VALUE ( 0x8 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_OFFSET ( 0x00000254 ) + +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* CLSF_SET15_MAP */ + uint32_t clsf_set15_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET14_MAP */ + uint32_t clsf_set14_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET13_MAP */ + uint32_t clsf_set13_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET12_MAP */ + uint32_t clsf_set12_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET11_MAP */ + uint32_t clsf_set11_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET10_MAP */ + uint32_t clsf_set10_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET9_MAP */ + uint32_t clsf_set9_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET8_MAP */ + uint32_t clsf_set8_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG ; +#else +typedef struct +{ + /* CLSF_SET8_MAP */ + uint32_t clsf_set8_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET9_MAP */ + uint32_t clsf_set9_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET10_MAP */ + uint32_t clsf_set10_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET11_MAP */ + uint32_t clsf_set11_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET12_MAP */ + uint32_t clsf_set12_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET13_MAP */ + uint32_t clsf_set13_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET14_MAP */ + uint32_t clsf_set14_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CLSF_SET15_MAP */ + uint32_t clsf_set15_map : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG ; +#endif + +/*****************************************************************************************/ +/* TRGT_MTRX_PCIE0_SP_CFG */ +/* Target matrix configuration for Source Port PCIE0 Used for decision on Target memo */ +/* ry and Local switch as function of extracted destination port that can be as followin */ +/* g: - Eth0 - Eth1 - Eth2 - Eth3 - Eth4 - GPON - PCIe0/1 - Multicast (MC) - CP */ +/* U - Always DDR (relevant for local switch info) - Always SRAM(relevant for local sw */ +/* itch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_SPARE_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_SRAM_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_DDR_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_MC_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_CPU_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_GPON_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH4_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH3_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH2_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_SPARE_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_MC_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_CPU_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_PCIE0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_GPON_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH4_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH3_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH2_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_DP_ETH0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_OFFSET ( 0x00000258 ) + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* TRGT_MTRX_PCIE1_SP_CFG */ +/* Target matrix configuration for Source Port PCIE0 Used for decision on Target memo */ +/* ry and Local switch as function of extracted destination port that can be as followin */ +/* g: - Eth0 - Eth1 - Eth2 - Eth3 - Eth4 - GPON - PCIe0/1 - Multicast (MC) - CP */ +/* U - Always DDR (relevant for local switch info) - Always SRAM(relevant for local sw */ +/* itch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_SPARE_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_SPARE_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_SRAM_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_SRAM_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_DDR_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_DDR_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_MC_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_MC_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_CPU_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_CPU_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_GPON_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_GPON_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH4_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH4_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH3_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH3_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH2_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH2_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH1_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH1_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH0_LS_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH0_LS_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_SPARE_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_SPARE_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_MC_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_MC_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_CPU_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_CPU_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_PCIE0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_GPON_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_GPON_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH4_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH4_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH3_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH3_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH2_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH2_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH1_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH1_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH0_TM_CFG_DDR_TARGET_MEMORY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_DP_ETH0_TM_CFG_SRAM_TARGET_MEMORY_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_OFFSET ( 0x0000025C ) + +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_TM_CFG */ + uint32_t dp_eth0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_TM_CFG */ + uint32_t dp_eth1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_TM_CFG */ + uint32_t dp_eth2_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_TM_CFG */ + uint32_t dp_eth3_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_TM_CFG */ + uint32_t dp_eth4_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_TM_CFG */ + uint32_t dp_gpon_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_TM_CFG */ + uint32_t dp_pcie0_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_TM_CFG */ + uint32_t dp_cpu_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_TM_CFG */ + uint32_t dp_mc_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_TM_CFG */ + uint32_t dp_pcie1_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_TM_CFG */ + uint32_t dp_spare_tm_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_LS_CFG */ + uint32_t dp_eth0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_LS_CFG */ + uint32_t dp_eth1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_LS_CFG */ + uint32_t dp_eth2_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_LS_CFG */ + uint32_t dp_eth3_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_LS_CFG */ + uint32_t dp_eth4_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_LS_CFG */ + uint32_t dp_gpon_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_LS_CFG */ + uint32_t dp_pcie0_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_LS_CFG */ + uint32_t dp_cpu_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_LS_CFG */ + uint32_t dp_mc_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_LS_CFG */ + uint32_t dp_ddr_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_LS_CFG */ + uint32_t dp_sram_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_LS_CFG */ + uint32_t dp_pcie1_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_LS_CFG */ + uint32_t dp_spare_ls_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* FW_EN_MTRX_ETH0_SP_CFG */ +/* Forward Enable configurations for each path in target matrix, while Source Port = Eth */ +/* 0 Used by FW as enable information for each path in Target Matrix. Forwarded in RI */ +/* B, Configuration per following destination ports: - Eth0 - Eth1 - Eth2 - Eth3 - */ +/* Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU - Always DDR (relevant for local sw */ +/* itch info) - Always SRAM(relevant for local switch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_SPARE_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_SPARE_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_SPARE_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_SPARE_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_PCIE1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_SRAM_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_DDR_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_CPU_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_MC_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_PCIE0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_GPON_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH4_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH3_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH2_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_DP_ETH0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_OFFSET ( 0x00000260 ) + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* FW_EN_MTRX_ETH1_SP_CFG */ +/* Forward Enable configurations for each path in target matrix, while Source Port = Eth */ +/* 1 Used by FW as enable information for each path in Target Matrix. Forwarded in RI */ +/* B, Configuration per following destination ports: - Eth0 - Eth1 - Eth2 - Eth3 - */ +/* Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU - Always DDR (relevant for local sw */ +/* itch info) - Always SRAM(relevant for local switch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_SPARE_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_SPARE_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_SPARE_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_SPARE_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_PCIE1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_SRAM_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_DDR_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_CPU_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_MC_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_PCIE0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_GPON_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH4_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH3_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH2_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_DP_ETH0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_OFFSET ( 0x00000264 ) + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* FW_EN_MTRX_ETH2_SP_CFG */ +/* Forward Enable configurations for each path in target matrix, while Source Port = Eth */ +/* 2 Used by FW as enable information for each path in Target Matrix. Forwarded in RI */ +/* B, Configuration per following destination ports: - Eth0 - Eth1 - Eth2 - Eth3 - */ +/* Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU - Always DDR (relevant for local sw */ +/* itch info) - Always SRAM(relevant for local switch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_SPARE_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_SPARE_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_SPARE_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_SPARE_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_PCIE1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_SRAM_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_DDR_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_CPU_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_MC_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_PCIE0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_GPON_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH4_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH3_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH2_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_DP_ETH0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_OFFSET ( 0x00000268 ) + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* FW_EN_MTRX_ETH3_SP_CFG */ +/* Forward Enable configurations for each path in target matrix, while Source Port = Eth */ +/* 3 Used by FW as enable information for each path in Target Matrix. Forwarded in RI */ +/* B, Configuration per following destination ports: - Eth0 - Eth1 - Eth2 - Eth3 - */ +/* Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU - Always DDR (relevant for local sw */ +/* itch info) - Always SRAM(relevant for local switch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_SPARE_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_SPARE_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_SPARE_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_SPARE_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_PCIE1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_SRAM_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_DDR_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_CPU_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_MC_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_PCIE0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_GPON_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH4_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH3_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH2_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_DP_ETH0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_OFFSET ( 0x0000026C ) + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* FW_EN_MTRX_ETH4_SP_CFG */ +/* Forward Enable configurations for each path in target matrix, while Source Port = Eth */ +/* 4 Used by FW as enable information for each path in Target Matrix. Forwarded in RI */ +/* B, Configuration per following destination ports: - Eth0 - Eth1 - Eth2 - Eth3 - */ +/* Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU - Always DDR (relevant for local sw */ +/* itch info) - Always SRAM(relevant for local switch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_SPARE_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_SPARE_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_SPARE_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_SPARE_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_PCIE1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_SRAM_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_DDR_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_CPU_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_MC_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_PCIE0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_GPON_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH4_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH3_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH2_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_DP_ETH0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_OFFSET ( 0x00000270 ) + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* FW_EN_MTRX_GPON_SP_CFG */ +/* Forward Enable configurations for each path in target matrix, while Source Port = GPO */ +/* N Used by FW as enable information for each path in Target Matrix. Forwarded in RI */ +/* B, Configuration per following destination ports: - Eth0 - Eth1 - Eth2 - Eth3 - */ +/* Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU - Always DDR (relevant for local sw */ +/* itch info) - Always SRAM(relevant for local switch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_SPARE_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_SPARE_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_SPARE_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_SPARE_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_PCIE1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_SRAM_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_DDR_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_CPU_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_MC_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_PCIE0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_GPON_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH4_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH3_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH2_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_DP_ETH0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_OFFSET ( 0x00000274 ) + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* FW_EN_MTRX_PCIE0_SP_CFG */ +/* Forward Enable configurations for each path in target matrix, while Source Port = PCI */ +/* E0 Used by FW as enable information for each path in Target Matrix. Forwarded in R */ +/* IB, Configuration per following destination ports: - Eth0 - Eth1 - Eth2 - Eth3 - */ +/* Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU - Always DDR (relevant for local s */ +/* witch info) - Always SRAM(relevant for local switch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_SPARE_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_SPARE_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_SPARE_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_SPARE_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_PCIE1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_SRAM_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_DDR_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_CPU_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_MC_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_PCIE0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_GPON_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH4_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH3_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH2_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_DP_ETH0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_OFFSET ( 0x00000278 ) + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* FW_EN_MTRX_PCIE1_SP_CFG */ +/* Forward Enable configurations for each path in target matrix, while Source Port = PCI */ +/* E1 Used by FW as enable information for each path in Target Matrix. Forwarded in R */ +/* IB, Configuration per following destination ports: - Eth0 - Eth1 - Eth2 - Eth3 - */ +/* Eth4 - GPON - PCIe0/1 - Multicast (MC) - CPU - Always DDR (relevant for local s */ +/* witch info) - Always SRAM(relevant for local switch info) -Spare */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_SPARE_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_SPARE_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_SPARE_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_SPARE_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_SPARE_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_PCIE1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_PCIE1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_SRAM_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_SRAM_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_DDR_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_DDR_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_CPU_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_CPU_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_MC_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_MC_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_PCIE0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_PCIE0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_GPON_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_GPON_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH4_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH4_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH3_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH3_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH2_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH2_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH1_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH1_FW_EN_CFG_TRUE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH0_FW_EN_CFG_FALSE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_DP_ETH0_FW_EN_CFG_TRUE_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_OFFSET ( 0x0000027C ) + +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG ; +#else +typedef struct +{ + /* DP_ETH0_FW_EN_CFG */ + uint32_t dp_eth0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH1_FW_EN_CFG */ + uint32_t dp_eth1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH2_FW_EN_CFG */ + uint32_t dp_eth2_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH3_FW_EN_CFG */ + uint32_t dp_eth3_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_ETH4_FW_EN_CFG */ + uint32_t dp_eth4_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_GPON_FW_EN_CFG */ + uint32_t dp_gpon_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE0_FW_EN_CFG */ + uint32_t dp_pcie0_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_MC_FW_EN_CFG */ + uint32_t dp_mc_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_CPU_FW_EN_CFG */ + uint32_t dp_cpu_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_DDR_FW_EN_CFG */ + uint32_t dp_ddr_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SRAM_FW_EN_CFG */ + uint32_t dp_sram_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_PCIE1_FW_EN_CFG */ + uint32_t dp_pcie1_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DP_SPARE_FW_EN_CFG */ + uint32_t dp_spare_fw_en_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SPARE */ + uint32_t spare : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG ; +#endif + +/*****************************************************************************************/ +/* PH_MEM_RD_RQST_CFG */ +/* Packet Header Memory Read request register. The read of Packet Header memory is us */ +/* ed for debug needs. We can actually print out all Ingress Buffers = (Packet Headers f */ +/* iled by BBH/Runner to their slots). The read is done by inderect way: user puts addre */ +/* ss of RAM (address space from 0x0 to 0xFF) and performs polling on BSY bit, while the */ +/* BSY=0 -> read succeeded and data is ready in registers PH_MEM_RD_DATA_LOW/PH_MEM_RD_ */ +/* DATA_HIGH */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_PH_MEM_RD_RQST_BSY_NON_BUSY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_PH_MEM_RD_RQST_BSY_NON_BUSY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_PH_MEM_RD_RQST_BSY_BUSY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_PH_MEM_RD_RQST_ADDR_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_PH_MEM_RD_RQST_ADDR_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_OFFSET ( 0x00000280 ) + +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* PH_MEM_RD_RQST_BSY */ + uint32_t ph_mem_rd_rqst_bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 23 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PH_MEM_RD_RQST_ADDR */ + uint32_t ph_mem_rd_rqst_addr : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG ; +#else +typedef struct +{ + /* PH_MEM_RD_RQST_ADDR */ + uint32_t ph_mem_rd_rqst_addr : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 23 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PH_MEM_RD_RQST_BSY */ + uint32_t ph_mem_rd_rqst_bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG ; +#endif + +/*****************************************************************************************/ +/* PH_MEM_RD_DATA_LOW */ +/* Packet Header Memory Read data low [31:0] The read of Packet Header memory is used */ +/* for debug needs. We can actually print out all Ingress Buffers = (Packet Headers fil */ +/* ed by BBH/Runner to their slots). The read is done by inderect way: user puts address */ +/* of RAM (address space from 0x0 to 0xFF) and performs polling on BSY bit, while the B */ +/* SY=0 -> read succeeded and data is ready in registers PH_MEM_RD_DATA_LOW/PH_MEM_RD_DA */ +/* TA_HIGH */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW_DATA_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW_DATA_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW_OFFSET ( 0x00000284 ) + +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DATA */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW ; +#else +typedef struct +{ + /* DATA */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW ; +#endif + +/*****************************************************************************************/ +/* PH_MEM_RD_DATA_HIGH */ +/* Packet Header Memory Read data high [63:32] The read of Packet Header memory is us */ +/* ed for debug needs. We can actually print out all Ingress Buffers = (Packet Headers f */ +/* iled by BBH/Runner to their slots). The read is done by inderect way: user puts addre */ +/* ss of RAM (address space from 0x0 to 0xFF) and performs polling on BSY bit, while the */ +/* BSY=0 -> read succeeded and data is ready in registers PH_MEM_RD_DATA_LOW/PH_MEM_RD_ */ +/* DATA_HIGH */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH_DATA_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH_DATA_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH_OFFSET ( 0x00000288 ) + +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DATA */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH ; +#else +typedef struct +{ + /* DATA */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH ; +#endif + +/*****************************************************************************************/ +/* SN_REG_0 */ +/* Serial Number status register0 for ports: - Eth0 - Eth1 This register is used fo */ +/* r debug only */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_SN_ETH1_SN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_SN_ETH1_SN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_SN_ETH0_SN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_SN_ETH0_SN_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_OFFSET ( 0x0000028C ) + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_SN_REG_0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* SN_ETH1 */ + uint32_t sn_eth1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_ETH0 */ + uint32_t sn_eth0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_SN_REG_0 ; +#else +typedef struct +{ + /* SN_ETH0 */ + uint32_t sn_eth0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_ETH1 */ + uint32_t sn_eth1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_SN_REG_0 ; +#endif + +/*****************************************************************************************/ +/* SN_REG_1 */ +/* Serial Number status register1 for ports: - Eth2 - Eth3 This register is used for */ +/* debug only */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_SN_ETH3_SN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_SN_ETH3_SN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_SN_ETH2_SN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_SN_ETH2_SN_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_OFFSET ( 0x00000290 ) + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_SN_REG_1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* SN_ETH3 */ + uint32_t sn_eth3 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_ETH2 */ + uint32_t sn_eth2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_SN_REG_1 ; +#else +typedef struct +{ + /* SN_ETH2 */ + uint32_t sn_eth2 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_ETH3 */ + uint32_t sn_eth3 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_SN_REG_1 ; +#endif + +/*****************************************************************************************/ +/* SN_REG_2 */ +/* Serial Number status register2 for ports: - Eth4 - GPON This register is used for */ +/* debug only */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_SN_GPON_SN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_SN_GPON_SN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_SN_ETH4_SN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_SN_ETH4_SN_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_OFFSET ( 0x00000294 ) + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_SN_REG_2_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* SN_GPON */ + uint32_t sn_gpon : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_ETH4 */ + uint32_t sn_eth4 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_SN_REG_2 ; +#else +typedef struct +{ + /* SN_ETH4 */ + uint32_t sn_eth4 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_GPON */ + uint32_t sn_gpon : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_SN_REG_2 ; +#endif + +/*****************************************************************************************/ +/* SN_REG_3 */ +/* Serial Number status register3 for ports: - Runner A - Runner B This register is u */ +/* sed for debug only */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_SN_RNRB_SN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_SN_RNRB_SN_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_SN_RNRA_SN_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_SN_RNRA_SN_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_OFFSET ( 0x00000298 ) + +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_SN_REG_3_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* SN_RNRB */ + uint32_t sn_rnrb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_RNRA */ + uint32_t sn_rnra : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_SN_REG_3 ; +#else +typedef struct +{ + /* SN_RNRA */ + uint32_t sn_rnra : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_RNRB */ + uint32_t sn_rnrb : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_SN_REG_3 ; +#endif + +/*****************************************************************************************/ +/* LOCAL_MEM_RD_RQST_CFG */ +/* Local Memory Read request register. The read of one of 5 Local memories is used fo */ +/* r debug needs. We can actually print out all in-pipe Runner Buffers = (Packet Headers */ +/* + Parser results + Look-up results: memory filling depends on pipe stage). The read */ +/* is done by inderect way: user puts RAM number(0,1,2,3 or 4) & address of RAM (address */ +/* space from 0x0 to 0x1F) and performs polling on BSY bit, while the BSY=0 -> read suc */ +/* ceeded and data is ready in registers LOCAL_MEM_RD_DATA_LOW/LOCAL_MEM_RD_DATA_HIGH */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_LOCAL_MEM_RD_RQST_BSY_NON_BUSY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_LOCAL_MEM_RD_RQST_BSY_NON_BUSY_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_LOCAL_MEM_RD_RQST_BSY_BUSY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_LOCAL_MEM_RD_RQST_NUM_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_LOCAL_MEM_RD_RQST_NUM_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_LOCAL_MEM_RD_RQST_ADDR_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_LOCAL_MEM_RD_RQST_ADDR_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_OFFSET ( 0x0000029C ) + +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* LOCAL_MEM_RD_RQST_BSY */ + uint32_t local_mem_rd_rqst_bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 23 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LOCAL_MEM_RD_RQST_NUM */ + uint32_t local_mem_rd_rqst_num : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LOCAL_MEM_RD_RQST_ADDR */ + uint32_t local_mem_rd_rqst_addr : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG ; +#else +typedef struct +{ + /* LOCAL_MEM_RD_RQST_ADDR */ + uint32_t local_mem_rd_rqst_addr : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LOCAL_MEM_RD_RQST_NUM */ + uint32_t local_mem_rd_rqst_num : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 23 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LOCAL_MEM_RD_RQST_BSY */ + uint32_t local_mem_rd_rqst_bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG ; +#endif + +/*****************************************************************************************/ +/* LOCAL_MEM_RD_DATA_LOW */ +/* Packet Header Memory Read data low [31:0] The read of Packet Header memory is used */ +/* for debug needs. We can actually print out all Ingress Buffers = (Packet Headers fil */ +/* ed by BBH/Runner to their slots). The read is done by inderect way: user puts address */ +/* of RAM (address space from 0x0 to 0xFF) and performs polling on BSY bit, while the B */ +/* SY=0 -> read succeeded and data is ready in registers PH_MEM_RD_DATA_LOW/PH_MEM_RD_DA */ +/* TA_HIGH */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW_DATA_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW_DATA_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW_OFFSET ( 0x000002A0 ) + +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DATA */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW ; +#else +typedef struct +{ + /* DATA */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW ; +#endif + +/*****************************************************************************************/ +/* LOCAL_MEM_RD_DATA_HIGH */ +/* Packet Header Memory Read data high [63:32] The read of Packet Header memory is us */ +/* ed for debug needs. We can actually print out all Ingress Buffers = (Packet Headers f */ +/* iled by BBH/Runner to their slots). The read is done by inderect way: user puts addre */ +/* ss of RAM (address space from 0x0 to 0xFF) and performs polling on BSY bit, while the */ +/* BSY=0 -> read succeeded and data is ready in registers PH_MEM_RD_DATA_LOW/PH_MEM_RD_ */ +/* DATA_HIGH */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH_DATA_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH_DATA_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH_OFFSET ( 0x000002A4 ) + +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* DATA */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH ; +#else +typedef struct +{ + /* DATA */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH ; +#endif + +/*****************************************************************************************/ +/* DBG_KEY1_LOW */ +/* Serach Key1 low part [31:0] The read of Search Key is used for debug needs. We can */ +/* actually print out all generated key (according to key configs + parser results). Ke */ +/* y of appropriate search is located under two registers: DBG_KEYxx_LOW/DBG_KEYxx_HIGH */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW_KEY_VALUE_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW_KEY_VALUE_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW_OFFSET ( 0x000002A8 ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW ; +#else +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW ; +#endif + +/*****************************************************************************************/ +/* DBG_KEY1_HIGH */ +/* Serach Key1 high part [63:32] The read of Search Key is used for debug needs. We c */ +/* an actually print out all generated key (according to key configs + parser results). */ +/* Key of appropriate search is located under two registers: DBG_KEYxx_LOW/DBG_KEYxx_HIG */ +/* H */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_KEY_VALUE_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_KEY_VALUE_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_OFFSET ( 0x000002AC ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_VALUE */ + uint32_t key_value : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH ; +#else +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH ; +#endif + +/*****************************************************************************************/ +/* DBG_KEY2_LOW */ +/* Search Key2 low part [31:0] The read of Search Key is used for debug needs. We can */ +/* actually print out all generated key (according to key configs + parser results). Ke */ +/* y of appropriate search is located under two registers: DBG_KEYxx_LOW/DBG_KEYxx_HIGH */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW_KEY_VALUE_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW_KEY_VALUE_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW_OFFSET ( 0x000002B0 ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW ; +#else +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW ; +#endif + +/*****************************************************************************************/ +/* DBG_KEY2_HIGH */ +/* Search Key2 high part [63:32] The read of Search Key is used for debug needs. We c */ +/* an actually print out all generated key (according to key configs + parser results). */ +/* Key of appropriate search is located under two registers: DBG_KEYxx_LOW/DBG_KEYxx_HIG */ +/* H */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_KEY_VALUE_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_KEY_VALUE_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_OFFSET ( 0x000002B4 ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_VALUE */ + uint32_t key_value : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH ; +#else +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH ; +#endif + +/*****************************************************************************************/ +/* DBG_KEY3_LOW */ +/* Search Key3 low part [31:0] The read of Search Key is used for debug needs. We can */ +/* actually print out all generated key (according to key configs + parser results). Ke */ +/* y of appropriate search is located under two registers: DBG_KEYxx_LOW/DBG_KEYxx_HIGH */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW_KEY_VALUE_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW_KEY_VALUE_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW_OFFSET ( 0x000002B8 ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW ; +#else +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW ; +#endif + +/*****************************************************************************************/ +/* DBG_KEY3_HIGH */ +/* Search Key3 high part [63:32] The read of Search Key is used for debug needs. We c */ +/* an actually print out all generated key (according to key configs + parser results). */ +/* Key of appropriate search is located under two registers: DBG_KEYxx_LOW/DBG_KEYxx_HIG */ +/* H */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_KEY_VALUE_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_KEY_VALUE_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_OFFSET ( 0x000002BC ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_VALUE */ + uint32_t key_value : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH ; +#else +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH ; +#endif + +/*****************************************************************************************/ +/* DBG_KEY4_LOW */ +/* Search Key4 low part [31:0] The read of Search Key is used for debug needs. We can */ +/* actually print out all generated key (according to key configs + parser results). Ke */ +/* y of appropriate search is located under two registers: DBG_KEYxx_LOW/DBG_KEYxx_HIGH */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW_KEY_VALUE_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW_KEY_VALUE_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW_OFFSET ( 0x000002C0 ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW ; +#else +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW ; +#endif + +/*****************************************************************************************/ +/* DBG_KEY4_HIGH */ +/* Search Key4 high part [63:32] The read of Search Key is used for debug needs. We c */ +/* an actually print out all generated key (according to key configs + parser results). */ +/* Key of appropriate search is located under two registers: DBG_KEYxx_LOW/DBG_KEYxx_HIG */ +/* H */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_KEY_VALUE_VALUE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_KEY_VALUE_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_OFFSET ( 0x000002C4 ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* KEY_VALUE */ + uint32_t key_value : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH ; +#else +typedef struct +{ + /* KEY_VALUE */ + uint32_t key_value : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH ; +#endif + +/*****************************************************************************************/ +/* DBG_IQ_STAT */ +/* Status debug register for Ingress Queue Ingress Queue status is used for debug nee */ +/* ds. We can actually print out several status, like Main IQ FIFO statuses, local RAM o */ +/* ccupancy status, each ingress queue status */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_RSV2_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ7_FIFO_FULL_NON_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ7_FIFO_FULL_NON_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ7_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ6_FIFO_FULL_NON_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ6_FIFO_FULL_NON_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ6_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ5_FIFO_FULL_NON_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ5_FIFO_FULL_NON_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ5_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ4_FIFO_FULL_NON_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ4_FIFO_FULL_NON_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ4_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ3_FIFO_FULL_NON_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ3_FIFO_FULL_NON_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ3_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ2_FIFO_FULL_NON_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ2_FIFO_FULL_NON_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ2_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ1_FIFO_FULL_NON_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ1_FIFO_FULL_NON_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ1_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ0_FIFO_FULL_NON_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ0_FIFO_FULL_NON_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ0_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ7_FIFO_EMPTY_NON_EMPTY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ7_FIFO_EMPTY_EMPTY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ7_FIFO_EMPTY_EMPTY_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ6_FIFO_EMPTY_NON_EMPTY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ6_FIFO_EMPTY_EMPTY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ6_FIFO_EMPTY_EMPTY_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ5_FIFO_EMPTY_NON_EMPTY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ5_FIFO_EMPTY_EMPTY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ5_FIFO_EMPTY_EMPTY_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ4_FIFO_EMPTY_NON_EMPTY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ4_FIFO_EMPTY_EMPTY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ4_FIFO_EMPTY_EMPTY_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ3_FIFO_EMPTY_NON_EMPTY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ3_FIFO_EMPTY_EMPTY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ3_FIFO_EMPTY_EMPTY_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ2_FIFO_EMPTY_NON_EMPTY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ2_FIFO_EMPTY_EMPTY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ2_FIFO_EMPTY_EMPTY_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ1_FIFO_EMPTY_NON_EMPTY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ1_FIFO_EMPTY_EMPTY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ1_FIFO_EMPTY_EMPTY_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ0_FIFO_EMPTY_NON_EMPTY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ0_FIFO_EMPTY_EMPTY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ0_FIFO_EMPTY_EMPTY_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ_FIFO_FULL_NOT_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ_FIFO_FULL_NOT_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ_FIFO_EMPTY_NON_EMPTY_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ_FIFO_EMPTY_EMPTY_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_IQ_FIFO_EMPTY_EMPTY_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM4_STTS_NON_OCCUPIED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM4_STTS_NON_OCCUPIED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM4_STTS_OCCUPIED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM3_STTS_NON_OCCUPIED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM3_STTS_NON_OCCUPIED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM3_STTS_OCCUPIED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM2_STTS_NON_OCCUPIED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM2_STTS_NON_OCCUPIED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM2_STTS_OCCUPIED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM1_STTS_NON_OCCUPIED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM1_STTS_NON_OCCUPIED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM1_STTS_OCCUPIED_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM0_STTS_NON_OCCUPIED_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM0_STTS_NON_OCCUPIED_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_LOCAL_RAM0_STTS_OCCUPIED_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_OFFSET ( 0x000002C8 ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ7_FIFO_FULL */ + uint32_t iq7_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_FIFO_FULL */ + uint32_t iq6_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_FIFO_FULL */ + uint32_t iq5_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_FIFO_FULL */ + uint32_t iq4_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_FIFO_FULL */ + uint32_t iq3_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_FIFO_FULL */ + uint32_t iq2_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_FIFO_FULL */ + uint32_t iq1_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ0_FIFO_FULL */ + uint32_t iq0_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ7_FIFO_EMPTY */ + uint32_t iq7_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_FIFO_EMPTY */ + uint32_t iq6_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_FIFO_EMPTY */ + uint32_t iq5_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_FIFO_EMPTY */ + uint32_t iq4_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_FIFO_EMPTY */ + uint32_t iq3_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_FIFO_EMPTY */ + uint32_t iq2_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_FIFO_EMPTY */ + uint32_t iq1_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ0_FIFO_EMPTY */ + uint32_t iq0_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ_FIFO_FULL */ + uint32_t iq_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ_FIFO_EMPTY */ + uint32_t iq_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Local_ram4_stts */ + uint32_t local_ram4_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Local_ram3_stts */ + uint32_t local_ram3_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Local_ram2_stts */ + uint32_t local_ram2_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Local_ram1_stts */ + uint32_t local_ram1_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Local_ram0_stts */ + uint32_t local_ram0_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT ; +#else +typedef struct +{ + /* Local_ram0_stts */ + uint32_t local_ram0_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Local_ram1_stts */ + uint32_t local_ram1_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Local_ram2_stts */ + uint32_t local_ram2_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Local_ram3_stts */ + uint32_t local_ram3_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Local_ram4_stts */ + uint32_t local_ram4_stts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ_FIFO_EMPTY */ + uint32_t iq_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ_FIFO_FULL */ + uint32_t iq_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ0_FIFO_EMPTY */ + uint32_t iq0_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_FIFO_EMPTY */ + uint32_t iq1_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_FIFO_EMPTY */ + uint32_t iq2_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_FIFO_EMPTY */ + uint32_t iq3_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_FIFO_EMPTY */ + uint32_t iq4_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_FIFO_EMPTY */ + uint32_t iq5_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_FIFO_EMPTY */ + uint32_t iq6_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ7_FIFO_EMPTY */ + uint32_t iq7_fifo_empty : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ0_FIFO_FULL */ + uint32_t iq0_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ1_FIFO_FULL */ + uint32_t iq1_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ2_FIFO_FULL */ + uint32_t iq2_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ3_FIFO_FULL */ + uint32_t iq3_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ4_FIFO_FULL */ + uint32_t iq4_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ5_FIFO_FULL */ + uint32_t iq5_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ6_FIFO_FULL */ + uint32_t iq6_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ7_FIFO_FULL */ + uint32_t iq7_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ + uint32_t rsv2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT ; +#endif + +/*****************************************************************************************/ +/* DBG_RBOUT_SEL */ +/* Debug Runner Buffer output selection */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_SHRTPKT_OUT_DISABLE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_SHRTPKT_OUT_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_SHRTPKT_OUT_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_BAC_BBHCLASS_OUT_DISABLE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_BAC_BBHCLASS_OUT_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_BAC_BBHCLASS_OUT_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY4_OUT_DISABLE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY4_OUT_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY4_OUT_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY3_OUT_DISABLE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY3_OUT_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY3_OUT_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY2_OUT_DISABLE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY2_OUT_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY2_OUT_ENABLE_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY1_OUT_DISABLE_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY1_OUT_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_DBG_KEY1_OUT_ENABLE_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_OFFSET ( 0x000002CC ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_SHRTPKT_OUT */ + uint32_t dbg_shrtpkt_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_BAC_ORGCLASS_OUT */ + uint32_t dbg_bac_bbhclass_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY4_OUT */ + uint32_t dbg_key4_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY3_OUT */ + uint32_t dbg_key3_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY2_OUT */ + uint32_t dbg_key2_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY1_OUT */ + uint32_t dbg_key1_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL ; +#else +typedef struct +{ + /* DBG_KEY1_OUT */ + uint32_t dbg_key1_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY2_OUT */ + uint32_t dbg_key2_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY3_OUT */ + uint32_t dbg_key3_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY4_OUT */ + uint32_t dbg_key4_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_BAC_ORGCLASS_OUT */ + uint32_t dbg_bac_bbhclass_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_SHRTPKT_OUT */ + uint32_t dbg_shrtpkt_out : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 26 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL ; +#endif + +/*****************************************************************************************/ +/* DBG_CRITICAL_STAT */ +/* Status/alarm register, which includes indicators of system failures: like stuck in lo */ +/* ok-up procedure, egress FIFO full, etc. */ +/*****************************************************************************************/ + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_RSV_RSV_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_EQ_PKT_CMD_FIFO_FULL_NOT_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_EQ_PKT_CMD_FIFO_FULL_NOT_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_EQ_PKT_CMD_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_EQ_MSGTX_FIFO_FULL_NOT_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_EQ_MSGTX_FIFO_FULL_NOT_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_EQ_MSGTX_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_EQ_DATATX_FIFO_FULL_NOT_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_EQ_DATATX_FIFO_FULL_NOT_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_EQ_DATATX_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LUT_PKT_CMD_FIFO_FULL_NOT_FULL_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LUT_PKT_CMD_FIFO_FULL_NOT_FULL_VALUE_RESET_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LUT_PKT_CMD_FIFO_FULL_FULL_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP4_STUCK_N_STUCK_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP4_STUCK_N_NOT_STUCK_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP4_STUCK_N_NOT_STUCK_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP3_STUCK_N_STUCK_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP3_STUCK_N_NOT_STUCK_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP3_STUCK_N_NOT_STUCK_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP2_STUCK_N_STUCK_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP2_STUCK_N_NOT_STUCK_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP2_STUCK_N_NOT_STUCK_VALUE_RESET_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP1_STUCK_N_STUCK_VALUE ( 0x0 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP1_STUCK_N_NOT_STUCK_VALUE ( 0x1 ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_LKUP1_STUCK_N_NOT_STUCK_VALUE_RESET_VALUE ( 0x1 ) + + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_OFFSET ( 0x000002D0 ) + +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_ADDRESS ( IH_REGS_GENERAL_CONFIGURATION_ADDRESS + IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_OFFSET ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_READ( r ) READ_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_ADDRESS ), (r) ) +#define IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_WRITE( v ) WRITE_32( ( IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EQ_PKT_CMD_FIFO_FULL */ + uint32_t eq_pkt_cmd_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EQ_MSGTX_FIFO_FULL */ + uint32_t eq_msgtx_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EQ_DATATX_FIFO_FULL */ + uint32_t eq_datatx_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LUT_PKT_CMD_FIFO_FULL */ + uint32_t lut_pkt_cmd_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP4_STUCK_N */ + uint32_t lkup4_stuck_n : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP3_STUCK_N */ + uint32_t lkup3_stuck_n : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP2_STUCK_N */ + uint32_t lkup2_stuck_n : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP1_STUCK_N */ + uint32_t lkup1_stuck_n : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT ; +#else +typedef struct +{ + /* LKUP1_STUCK_N */ + uint32_t lkup1_stuck_n : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP2_STUCK_N */ + uint32_t lkup2_stuck_n : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP3_STUCK_N */ + uint32_t lkup3_stuck_n : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP4_STUCK_N */ + uint32_t lkup4_stuck_n : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LUT_PKT_CMD_FIFO_FULL */ + uint32_t lut_pkt_cmd_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EQ_DATATX_FIFO_FULL */ + uint32_t eq_datatx_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EQ_MSGTX_FIFO_FULL */ + uint32_t eq_msgtx_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EQ_PKT_CMD_FIFO_FULL */ + uint32_t eq_pkt_cmd_fifo_full : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ + uint32_t rsv : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT ; +#endif + +typedef struct +{ + /* LKUP_TBL0_LUT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CFG lkup_tbl0_lut_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL1_LUT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CFG lkup_tbl1_lut_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL2_LUT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CFG lkup_tbl2_lut_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL3_LUT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CFG lkup_tbl3_lut_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL4_LUT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CFG lkup_tbl4_lut_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL5_LUT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CFG lkup_tbl5_lut_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL6_LUT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CFG lkup_tbl6_lut_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL7_LUT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CFG lkup_tbl7_lut_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL8_LUT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CFG lkup_tbl8_lut_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL9_LUT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CFG lkup_tbl9_lut_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL0_CAM_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CFG lkup_tbl0_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL1_CAM_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CFG lkup_tbl1_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL2_CAM_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CFG lkup_tbl2_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL3_CAM_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CFG lkup_tbl3_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL4_CAM_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CFG lkup_tbl4_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL5_CAM_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CFG lkup_tbl5_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL6_CAM_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CFG lkup_tbl6_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL7_CAM_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CFG lkup_tbl7_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL8_CAM_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CFG lkup_tbl8_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL9_CAM_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CFG lkup_tbl9_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL0_LUT_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_LUT_CNXT_CFG lkup_tbl0_lut_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL1_LUT_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_LUT_CNXT_CFG lkup_tbl1_lut_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL2_LUT_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_LUT_CNXT_CFG lkup_tbl2_lut_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL3_LUT_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_LUT_CNXT_CFG lkup_tbl3_lut_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL4_LUT_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_LUT_CNXT_CFG lkup_tbl4_lut_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL5_LUT_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_LUT_CNXT_CFG lkup_tbl5_lut_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL6_LUT_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_LUT_CNXT_CFG lkup_tbl6_lut_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL7_LUT_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_LUT_CNXT_CFG lkup_tbl7_lut_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL8_LUT_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_LUT_CNXT_CFG lkup_tbl8_lut_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL9_LUT_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_LUT_CNXT_CFG lkup_tbl9_lut_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 4 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL0_CAM_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_CAM_CNXT_CFG lkup_tbl0_cam_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL1_CAM_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_CAM_CNXT_CFG lkup_tbl1_cam_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL2_CAM_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_CAM_CNXT_CFG lkup_tbl2_cam_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL3_CAM_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_CAM_CNXT_CFG lkup_tbl3_cam_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL4_CAM_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_CAM_CNXT_CFG lkup_tbl4_cam_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL5_CAM_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_CAM_CNXT_CFG lkup_tbl5_cam_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL6_CAM_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_CAM_CNXT_CFG lkup_tbl6_cam_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL7_CAM_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_CAM_CNXT_CFG lkup_tbl7_cam_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL8_CAM_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_CAM_CNXT_CFG lkup_tbl8_cam_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 96 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL9_CAM_CNXT_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_CAM_CNXT_CFG lkup_tbl9_cam_cnxt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL0_KEY_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_CFG lkup_tbl0_key_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL0_KEY_P0_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKL lkup_tbl0_key_p0_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL0_KEY_P0_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P0_MASKH lkup_tbl0_key_p0_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL0_KEY_P1_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKL lkup_tbl0_key_p1_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL0_KEY_P1_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_KEY_P1_MASKH lkup_tbl0_key_p1_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL1_KEY_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_CFG lkup_tbl1_key_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL1_KEY_P0_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKL lkup_tbl1_key_p0_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL1_KEY_P0_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P0_MASKH lkup_tbl1_key_p0_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL1_KEY_P1_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKL lkup_tbl1_key_p1_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL1_KEY_P1_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_KEY_P1_MASKH lkup_tbl1_key_p1_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL2_KEY_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_CFG lkup_tbl2_key_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL2_KEY_P0_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKL lkup_tbl2_key_p0_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL2_KEY_P0_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P0_MASKH lkup_tbl2_key_p0_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL2_KEY_P1_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKL lkup_tbl2_key_p1_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL2_KEY_P1_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_KEY_P1_MASKH lkup_tbl2_key_p1_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL3_KEY_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_CFG lkup_tbl3_key_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL3_KEY_P0_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKL lkup_tbl3_key_p0_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL3_KEY_P0_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P0_MASKH lkup_tbl3_key_p0_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL3_KEY_P1_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKL lkup_tbl3_key_p1_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL3_KEY_P1_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_KEY_P1_MASKH lkup_tbl3_key_p1_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL4_KEY_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_CFG lkup_tbl4_key_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL4_KEY_P0_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKL lkup_tbl4_key_p0_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL4_KEY_P0_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P0_MASKH lkup_tbl4_key_p0_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL4_KEY_P1_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKL lkup_tbl4_key_p1_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL4_KEY_P1_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_KEY_P1_MASKH lkup_tbl4_key_p1_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL5_KEY_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_CFG lkup_tbl5_key_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL5_KEY_P0_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKL lkup_tbl5_key_p0_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL5_KEY_P0_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P0_MASKH lkup_tbl5_key_p0_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL5_KEY_P1_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKL lkup_tbl5_key_p1_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL5_KEY_P1_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_KEY_P1_MASKH lkup_tbl5_key_p1_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL6_KEY_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_CFG lkup_tbl6_key_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL6_KEY_P0_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKL lkup_tbl6_key_p0_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL6_KEY_P0_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P0_MASKH lkup_tbl6_key_p0_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL6_KEY_P1_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKL lkup_tbl6_key_p1_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL6_KEY_P1_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_KEY_P1_MASKH lkup_tbl6_key_p1_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL7_KEY_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_CFG lkup_tbl7_key_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL7_KEY_P0_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKL lkup_tbl7_key_p0_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL7_KEY_P0_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P0_MASKH lkup_tbl7_key_p0_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL7_KEY_P1_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKL lkup_tbl7_key_p1_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved3 [ 96 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL7_KEY_P1_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_KEY_P1_MASKH lkup_tbl7_key_p1_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL8_KEY_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_CFG lkup_tbl8_key_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL8_KEY_P0_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKL lkup_tbl8_key_p0_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL8_KEY_P0_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P0_MASKH lkup_tbl8_key_p0_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL8_KEY_P1_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKL lkup_tbl8_key_p1_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL8_KEY_P1_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_KEY_P1_MASKH lkup_tbl8_key_p1_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL9_KEY_CFG */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_CFG lkup_tbl9_key_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL9_KEY_P0_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKL lkup_tbl9_key_p0_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL9_KEY_P0_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P0_MASKH lkup_tbl9_key_p0_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL9_KEY_P1_MASKL */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKL lkup_tbl9_key_p1_maskl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL9_KEY_P1_MASKH */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_KEY_P1_MASKH lkup_tbl9_key_p1_maskh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL0_GL_MASK */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL0_GL_MASK lkup_tbl0_gl_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL1_GL_MASK */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL1_GL_MASK lkup_tbl1_gl_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL2_GL_MASK */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL2_GL_MASK lkup_tbl2_gl_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL3_GL_MASK */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL3_GL_MASK lkup_tbl3_gl_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL4_GL_MASK */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL4_GL_MASK lkup_tbl4_gl_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL5_GL_MASK */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL5_GL_MASK lkup_tbl5_gl_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL6_GL_MASK */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL6_GL_MASK lkup_tbl6_gl_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL7_GL_MASK */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL7_GL_MASK lkup_tbl7_gl_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL8_GL_MASK */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL8_GL_MASK lkup_tbl8_gl_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LKUP_TBL9_GL_MASK */ + IH_REGS_LOOKUP_CONFIGURATION_LKUP_TBL9_GL_MASK lkup_tbl9_gl_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_LOOKUP_CONFIGURATION ; + +typedef struct +{ + /* DA_FILT0_VAL_L */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L da_filt0_val_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT0_MASK_L */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L da_filt0_mask_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT0_CFG_H */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT0_CFG_H da_filt0_cfg_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PARSER_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_PARSER_CFG parser_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_Ethertype */ + IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE qtag_ethtype __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* QTAG_Nesting */ + IH_REGS_PARSER_CORE_CONFIGURATION_QTAG_NEST qtag_nest __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Snap_organization_code */ + IH_REGS_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE snap_org_code __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_configurtion_0_1 */ + IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1 user_ethtype_0_1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_configurtion_2_3 */ + IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3 user_ethtype_2_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Ethertype_Configuration */ + IH_REGS_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG user_ethtype_config __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_Configuration_0_1 */ + IH_REGS_PARSER_CORE_CONFIGURATION_VID_0_1 vid_0_1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_Configuration_2_3 */ + IH_REGS_PARSER_CORE_CONFIGURATION_VID_2_3 vid_2_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_Configuration_4_5 */ + IH_REGS_PARSER_CORE_CONFIGURATION_VID_4_5 vid_4_5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_Configuration_6_7 */ + IH_REGS_PARSER_CORE_CONFIGURATION_VID_6_7 vid_6_7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_Configuration_8_9 */ + IH_REGS_PARSER_CORE_CONFIGURATION_VID_8_9 vid_8_9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* VID_Configuration_10_11 */ + IH_REGS_PARSER_CORE_CONFIGURATION_VID_10_11 vid_10_11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_defined_IP_Protocl */ + IH_REGS_PARSER_CORE_CONFIGURATION_USER_IP_PROT user_ip_prot __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PPP_IP_Protocol_Code */ + IH_REGS_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE ppp_ip_prot_code __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER0_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG ip_filter0_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER1_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG ip_filter1_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER2_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_CFG ip_filter2_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER3_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_CFG ip_filter3_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT1_VAL_L */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L da_filt1_val_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT1_MASK_L */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L da_filt1_mask_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT1_CFG_H */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT1_CFG_H da_filt1_cfg_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT2_VAL_L */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L da_filt2_val_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT2_VAL_H */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H da_filt2_val_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT3_VAL_L */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L da_filt3_val_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT3_VAL_H */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H da_filt3_val_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT4_VAL_L */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L da_filt4_val_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT4_VAL_H */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H da_filt4_val_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT5_VAL_L */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L da_filt5_val_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT5_VAL_H */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H da_filt5_val_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT_VALID_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG da_filt_valid_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER0_MASK_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG ip_filter0_mask_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER1_MASK_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG ip_filter1_mask_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER2_MASK_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER2_MASK_CFG ip_filter2_mask_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTER3_MASK_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTER3_MASK_CFG ip_filter3_mask_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IP_FILTERS_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG ip_filters_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GRE_PROTOCOL_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG gre_protocol_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 96 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL0_R0 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R0 dscp2tci_tbl0_r0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL0_R1 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R1 dscp2tci_tbl0_r1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL0_R2 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R2 dscp2tci_tbl0_r2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL0_R3 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R3 dscp2tci_tbl0_r3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL0_R4 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R4 dscp2tci_tbl0_r4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL0_R5 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R5 dscp2tci_tbl0_r5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL0_R6 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R6 dscp2tci_tbl0_r6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL0_R7 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL0_R7 dscp2tci_tbl0_r7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL1_R0 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R0 dscp2tci_tbl1_r0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL1_R1 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R1 dscp2tci_tbl1_r1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL1_R2 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R2 dscp2tci_tbl1_r2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL1_R3 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R3 dscp2tci_tbl1_r3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL1_R4 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R4 dscp2tci_tbl1_r4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL1_R5 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R5 dscp2tci_tbl1_r5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL1_R6 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R6 dscp2tci_tbl1_r6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP2TCI_TBL1_R7 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP2TCI_TBL1_R7 dscp2tci_tbl1_r7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DEFAULT_TCI_TBL0 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL0 default_tci_tbl0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DEFAULT_TCI_TBL1 */ + IH_REGS_PARSER_CORE_CONFIGURATION_DEFAULT_TCI_TBL1 default_tci_tbl1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DSCP_TBL_VALID_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_DSCP_TBL_VALID_CFG dscp_tbl_valid_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT6_VAL_L */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L da_filt6_val_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT6_VAL_H */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H da_filt6_val_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT7_VAL_L */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L da_filt7_val_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DA_FILT7_VAL_H */ + IH_REGS_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H da_filt7_val_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IPV6_HDR_EXT_FLTR_MASK_CFG */ + IH_REGS_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG ipv6_hdr_ext_fltr_mask_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENG */ + IH_REGS_PARSER_CORE_CONFIGURATION_ENG eng __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_PARSER_CORE_CONFIGURATION ; + +typedef struct +{ + /* SP2IQ_MAP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_SP2IQ_MAP_CFG sp2iq_map_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ_BASE_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IQ_BASE_CFG iq_base_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ_SIZE_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IQ_SIZE_CFG iq_size_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQL_PRIOR_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IQL_PRIOR_CFG iql_prior_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQH_PRIOR_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IQH_PRIOR_CFG iqh_prior_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PHL_OFFSET_CFG */ + IH_REGS_GENERAL_CONFIGURATION_PHL_OFFSET_CFG phl_offset_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PHH_OFFSET_CFG */ + IH_REGS_GENERAL_CONFIGURATION_PHH_OFFSET_CFG phh_offset_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 4 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQ_WEIGHT_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IQ_WEIGHT_CFG iq_weight_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQL_CNGS_THRS_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IQL_CNGS_THRS_CFG iql_cngs_thrs_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IQH_CNGS_THRS_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IQH_CNGS_THRS_CFG iqh_cngs_thrs_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 4 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_RB_BASE */ + IH_REGS_GENERAL_CONFIGURATION_RNRA_RB_BASE rnra_rb_base __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_RB_BASE */ + IH_REGS_GENERAL_CONFIGURATION_RNRB_RB_BASE rnrb_rb_base __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_IHRSP_ADDR */ + IH_REGS_GENERAL_CONFIGURATION_RNRA_IHRSP_ADDR rnra_ihrsp_addr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_IHRSP_ADDR */ + IH_REGS_GENERAL_CONFIGURATION_RNRB_IHRSP_ADDR rnrb_ihrsp_addr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_CNGS_RPT_ADDR */ + IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_RPT_ADDR rnra_cngs_rpt_addr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_CNGS_RPT_ADDR */ + IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_RPT_ADDR rnrb_cngs_rpt_addr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_CNGS_RPT_CFG */ + IH_REGS_GENERAL_CONFIGURATION_RNR_CNGS_RPT_CFG rnr_cngs_rpt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RADDR0_CFG */ + IH_REGS_GENERAL_CONFIGURATION_RADDR0_CFG raddr0_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RADDR1_CFG */ + IH_REGS_GENERAL_CONFIGURATION_RADDR1_CFG raddr1_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RBPM_BAT_CFG */ + IH_REGS_GENERAL_CONFIGURATION_RBPM_BAT_CFG rbpm_bat_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RBPM_BAC_STAT */ + IH_REGS_GENERAL_CONFIGURATION_RBPM_BAC_STAT rbpm_bac_stat __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRGT_MTRX_ETH0_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH0_SP_CFG trgt_mtrx_eth0_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRGT_MTRX_ETH1_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH1_SP_CFG trgt_mtrx_eth1_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRGT_MTRX_ETH2_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH2_SP_CFG trgt_mtrx_eth2_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRGT_MTRX_ETH3_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH3_SP_CFG trgt_mtrx_eth3_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRGT_MTRX_ETH4_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_ETH4_SP_CFG trgt_mtrx_eth4_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRGT_MTRX_GPON_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_GPON_SP_CFG trgt_mtrx_gpon_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_MISC_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_MISC_CFG ih_misc_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY0 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY0 ih_class_key0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY1 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY1 ih_class_key1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY2 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY2 ih_class_key2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY3 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY3 ih_class_key3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY4 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY4 ih_class_key4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY5 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY5 ih_class_key5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY6 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY6 ih_class_key6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY7 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY7 ih_class_key7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY8 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY8 ih_class_key8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY9 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY9 ih_class_key9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved3 [ 96 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY10 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY10 ih_class_key10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY11 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY11 ih_class_key11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY12 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY12 ih_class_key12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY13 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY13 ih_class_key13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY14 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY14 ih_class_key14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_KEY15 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_KEY15 ih_class_key15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK0 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK0 ih_class_mask0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK1 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK1 ih_class_mask1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK2 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK2 ih_class_mask2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK3 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK3 ih_class_mask3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK4 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK4 ih_class_mask4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK5 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK5 ih_class_mask5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK6 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK6 ih_class_mask6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK7 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK7 ih_class_mask7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK8 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK8 ih_class_mask8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK9 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK9 ih_class_mask9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK10 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK10 ih_class_mask10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK11 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK11 ih_class_mask11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK12 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK12 ih_class_mask12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK13 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK13 ih_class_mask13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK14 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK14 ih_class_mask14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS_MASK15 */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS_MASK15 ih_class_mask15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS0_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_GENERAL_CFG ih_class0_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS1_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_GENERAL_CFG ih_class1_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS2_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_GENERAL_CFG ih_class2_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS3_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_GENERAL_CFG ih_class3_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS4_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_GENERAL_CFG ih_class4_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS5_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_GENERAL_CFG ih_class5_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS6_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_GENERAL_CFG ih_class6_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS7_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_GENERAL_CFG ih_class7_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS8_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_GENERAL_CFG ih_class8_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS9_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_GENERAL_CFG ih_class9_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS10_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_GENERAL_CFG ih_class10_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS11_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_GENERAL_CFG ih_class11_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS12_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_GENERAL_CFG ih_class12_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS13_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_GENERAL_CFG ih_class13_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS14_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_GENERAL_CFG ih_class14_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS15_GENERAL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_GENERAL_CFG ih_class15_general_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS0_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS0_SEARCH_CFG ih_class0_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS1_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS1_SEARCH_CFG ih_class1_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved4 [ 96 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS2_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS2_SEARCH_CFG ih_class2_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS3_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS3_SEARCH_CFG ih_class3_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS4_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS4_SEARCH_CFG ih_class4_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS5_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS5_SEARCH_CFG ih_class5_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS6_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS6_SEARCH_CFG ih_class6_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS7_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS7_SEARCH_CFG ih_class7_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS8_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS8_SEARCH_CFG ih_class8_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS9_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS9_SEARCH_CFG ih_class9_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS10_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS10_SEARCH_CFG ih_class10_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS11_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS11_SEARCH_CFG ih_class11_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS12_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS12_SEARCH_CFG ih_class12_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS13_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS13_SEARCH_CFG ih_class13_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS14_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS14_SEARCH_CFG ih_class14_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLASS15_SEARCH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLASS15_SEARCH_CFG ih_class15_search_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_CNGS_TRSH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_RNRA_CNGS_TRSH_CFG rnra_cngs_trsh_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_CNGS_TRSH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_RNRB_CNGS_TRSH_CFG rnrb_cngs_trsh_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* WAN_PER_PORT_CFG */ + IH_REGS_GENERAL_CONFIGURATION_WAN_PER_PORT_CFG wan_per_port_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PARSE_LAYER_PER_PORT_CFG */ + IH_REGS_GENERAL_CONFIGURATION_PARSE_LAYER_PER_PORT_CFG parse_layer_per_port_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROP_SIZE_PER_PORT_CFG0 */ + IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG0 prop_size_per_port_cfg0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROP_SIZE_PER_PORT_CFG1 */ + IH_REGS_GENERAL_CONFIGURATION_PROP_SIZE_PER_PORT_CFG1 prop_size_per_port_cfg1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLSF_MAPL_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPL_CFG ih_clsf_mapl_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IH_CLSF_MAPH_CFG */ + IH_REGS_GENERAL_CONFIGURATION_IH_CLSF_MAPH_CFG ih_clsf_maph_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRGT_MTRX_PCIE0_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE0_SP_CFG trgt_mtrx_pcie0_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRGT_MTRX_PCIE1_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_TRGT_MTRX_PCIE1_SP_CFG trgt_mtrx_pcie1_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FW_EN_MTRX_ETH0_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH0_SP_CFG fw_en_mtrx_eth0_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FW_EN_MTRX_ETH1_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH1_SP_CFG fw_en_mtrx_eth1_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FW_EN_MTRX_ETH2_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH2_SP_CFG fw_en_mtrx_eth2_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FW_EN_MTRX_ETH3_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH3_SP_CFG fw_en_mtrx_eth3_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FW_EN_MTRX_ETH4_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_ETH4_SP_CFG fw_en_mtrx_eth4_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FW_EN_MTRX_GPON_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_GPON_SP_CFG fw_en_mtrx_gpon_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FW_EN_MTRX_PCIE0_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE0_SP_CFG fw_en_mtrx_pcie0_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FW_EN_MTRX_PCIE1_SP_CFG */ + IH_REGS_GENERAL_CONFIGURATION_FW_EN_MTRX_PCIE1_SP_CFG fw_en_mtrx_pcie1_sp_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PH_MEM_RD_RQST_CFG */ + IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_RQST_CFG ph_mem_rd_rqst_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PH_MEM_RD_DATA_LOW */ + IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_LOW ph_mem_rd_data_low __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PH_MEM_RD_DATA_HIGH */ + IH_REGS_GENERAL_CONFIGURATION_PH_MEM_RD_DATA_HIGH ph_mem_rd_data_high __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_REG_0 */ + IH_REGS_GENERAL_CONFIGURATION_SN_REG_0 sn_reg_0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_REG_1 */ + IH_REGS_GENERAL_CONFIGURATION_SN_REG_1 sn_reg_1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_REG_2 */ + IH_REGS_GENERAL_CONFIGURATION_SN_REG_2 sn_reg_2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SN_REG_3 */ + IH_REGS_GENERAL_CONFIGURATION_SN_REG_3 sn_reg_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LOCAL_MEM_RD_RQST_CFG */ + IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_RQST_CFG local_mem_rd_rqst_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LOCAL_MEM_RD_DATA_LOW */ + IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_LOW local_mem_rd_data_low __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LOCAL_MEM_RD_DATA_HIGH */ + IH_REGS_GENERAL_CONFIGURATION_LOCAL_MEM_RD_DATA_HIGH local_mem_rd_data_high __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY1_LOW */ + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_LOW dbg_key1_low __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY1_HIGH */ + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY1_HIGH dbg_key1_high __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY2_LOW */ + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_LOW dbg_key2_low __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY2_HIGH */ + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY2_HIGH dbg_key2_high __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY3_LOW */ + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_LOW dbg_key3_low __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY3_HIGH */ + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY3_HIGH dbg_key3_high __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY4_LOW */ + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_LOW dbg_key4_low __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_KEY4_HIGH */ + IH_REGS_GENERAL_CONFIGURATION_DBG_KEY4_HIGH dbg_key4_high __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_IQ_STAT */ + IH_REGS_GENERAL_CONFIGURATION_DBG_IQ_STAT dbg_iq_stat __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_RBOUT_SEL */ + IH_REGS_GENERAL_CONFIGURATION_DBG_RBOUT_SEL dbg_rbout_sel __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DBG_CRITICAL_STAT */ + IH_REGS_GENERAL_CONFIGURATION_DBG_CRITICAL_STAT dbg_critical_stat __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS_GENERAL_CONFIGURATION ; + +typedef struct +{ + /* lookup_configuration function */ + IH_REGS_LOOKUP_CONFIGURATION lookup_configuration __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved0 [ 624 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* parser_core_configuration function */ + IH_REGS_PARSER_CORE_CONFIGURATION parser_core_configuration __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 764 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* general_configuration function */ + IH_REGS_GENERAL_CONFIGURATION general_configuration __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +IH_REGS ; + +typedef struct +{ + /* REGS */ + IH_REGS regs __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +IH_FOR_ALL ; +#endif /* IH_H_INCLUDED */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_map.h b/arch/arm/mach-bcmbca/rdp/rdp_map.h new file mode 100755 index 0000000000..c6b7ed822d --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_map.h @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef __9631X8_RDP_MAP_H +#define __9631X8_RDP_MAP_H + +#include + +/*****************************************************************************************/ +/* BBH Blocks offsets */ +/*****************************************************************************************/ +#define BBH_TX_0_OFFSET ( RDP_BASE + 0x000e8000 ) +#define BBH_TX_1_OFFSET ( RDP_BASE + 0x000ea000 ) +#define BBH_TX_2_OFFSET ( RDP_BASE + 0x000ec000 ) +#define BBH_TX_3_OFFSET ( RDP_BASE + 0x000ee000 ) +#define BBH_TX_4_OFFSET ( RDP_BASE + 0x000f0000 ) +#define BBH_TX_5_OFFSET ( RDP_BASE + 0x000f2000 ) +#define BBH_TX_6_OFFSET ( RDP_BASE + 0x000f4000 ) +#define BBH_TX_7_OFFSET ( RDP_BASE + 0x000f6000 ) +#define BBH_RX_0_OFFSET ( RDP_BASE + 0x000de000 ) +#define BBH_RX_1_OFFSET ( RDP_BASE + 0x000de800 ) +#define BBH_RX_2_OFFSET ( RDP_BASE + 0x000df000 ) +#define BBH_RX_3_OFFSET ( RDP_BASE + 0x000df800 ) +#define BBH_RX_4_OFFSET ( RDP_BASE + 0x000e0000 ) +#define BBH_RX_5_OFFSET ( RDP_BASE + 0x000e0400 ) +#define BBH_RX_6_OFFSET ( RDP_BASE + 0x000e1000 ) +#define BBH_RX_7_OFFSET ( RDP_BASE + 0x000e2000 ) +/*****************************************************************************************/ +/* BPM Blocks offsets */ +/*****************************************************************************************/ +#define BPM_MODULE_OFFSET ( RDP_BASE + 0x000c4000 ) +/*****************************************************************************************/ +/* SBPM Blocks offsets */ +/*****************************************************************************************/ +#define SBPM_BLOCK_OFFSET ( RDP_BASE + 0x000c8000 ) +/*****************************************************************************************/ +/* DMA Blocks offsets */ +/*****************************************************************************************/ +#define DMA_REGS_0_OFFSET ( RDP_BASE + 0x000d1000 ) +#define DMA_REGS_1_OFFSET ( RDP_BASE + 0x000d1800 ) +/*****************************************************************************************/ +/* IH Blocks offsets */ +/*****************************************************************************************/ +#define IH_REGS_OFFSET ( RDP_BASE + 0x000d0000 ) +/*****************************************************************************************/ +/* PSRAM Blocks offsets */ +/*****************************************************************************************/ +#define PSRAM_BLOCK_OFFSET ( RDP_BASE + 0x000a0000 ) +/*****************************************************************************************/ +/* RUNNER Blocks offsets */ +/*****************************************************************************************/ +#define RUNNER_COMMON_0_OFFSET ( RDP_BASE + 0x00000000 ) +#define RUNNER_COMMON_1_OFFSET ( RDP_BASE + 0x00040000 ) +#define RUNNER_PRIVATE_0_OFFSET ( RDP_BASE + 0x00010000 ) +#define RUNNER_PRIVATE_1_OFFSET ( RDP_BASE + 0x00050000 ) +#define RUNNER_INST_MAIN_0_OFFSET ( RDP_BASE + 0x00020000 ) +#define RUNNER_INST_MAIN_1_OFFSET ( RDP_BASE + 0x00060000 ) +#define RUNNER_CNTXT_MAIN_0_OFFSET ( RDP_BASE + 0x00028000 ) +#define RUNNER_CNTXT_MAIN_1_OFFSET ( RDP_BASE + 0x00068000 ) +#define RUNNER_PRED_MAIN_0_OFFSET ( RDP_BASE + 0x0002c000 ) +#define RUNNER_PRED_MAIN_1_OFFSET ( RDP_BASE + 0x0006c000 ) +#define RUNNER_INST_PICO_0_OFFSET ( RDP_BASE + 0x00030000 ) +#define RUNNER_INST_PICO_1_OFFSET ( RDP_BASE + 0x00070000 ) +#define RUNNER_CNTXT_PICO_0_OFFSET ( RDP_BASE + 0x00038000 ) +#define RUNNER_CNTXT_PICO_1_OFFSET ( RDP_BASE + 0x00078000 ) +#define RUNNER_PRED_PICO_0_OFFSET ( RDP_BASE + 0x0003c000 ) +#define RUNNER_PRED_PICO_1_OFFSET ( RDP_BASE + 0x0007c000 ) +#define RUNNER_REGS_0_OFFSET ( RDP_BASE + 0x00099000 ) +#define RUNNER_REGS_1_OFFSET ( RDP_BASE + 0x0009a000 ) +/*****************************************************************************************/ +/* UBUS MASTER Blocks offsets */ +/*****************************************************************************************/ +#define UBUS_MASTER_1_RDP_UBUS_MASTER_BRDG_REG_EN ( RDP_BASE + 0x000d2000 ) +#define UBUS_MASTER_1_RDP_UBUS_MASTER_BRDG_REG_REQ_CNTRL ( RDP_BASE + 0x000d2004 ) +#define UBUS_MASTER_1_RDP_UBUS_MASTER_BRDG_REG_HP ( RDP_BASE + 0x000d200c ) +#define UBUS_MASTER_2_RDP_UBUS_MASTER_BRDG_REG_EN ( RDP_BASE + 0x000d2400 ) +#define UBUS_MASTER_2_RDP_UBUS_MASTER_BRDG_REG_REQ_CNTRL ( RDP_BASE + 0x000d2404 ) +#define UBUS_MASTER_2_RDP_UBUS_MASTER_BRDG_REG_HP ( RDP_BASE + 0x000d240c ) +#define UBUS_MASTER_3_RDP_UBUS_MASTER_BRDG_REG_EN ( RDP_BASE + 0x000d2800 ) +#define UBUS_MASTER_3_RDP_UBUS_MASTER_BRDG_REG_REQ_CNTRL ( RDP_BASE + 0x000d2804 ) +#define UBUS_MASTER_3_RDP_UBUS_MASTER_BRDG_REG_HP ( RDP_BASE + 0x000d280c ) + +#endif diff --git a/arch/arm/mach-bcmbca/rdp/rdp_misc.c b/arch/arm/mach-bcmbca/rdp/rdp_misc.c new file mode 100644 index 0000000000..15cc3dd7af --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_misc.c @@ -0,0 +1,86 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#include "hwapi_mac.h" +#include "rdp_drv_bbh.h" +#include "rdp_ubus.h" + +int rdp_post_init(void) +{ + /* Ethernet WAN */ + mac_hwapi_init_emac(DRV_BBH_EMAC_0); + mac_hwapi_set_unimac_cfg(DRV_BBH_EMAC_0,1); + mac_hwapi_set_rxtx_enable(DRV_BBH_EMAC_0,0,0);/* Ethernet WAN EMAC will be enabled when the WAN service gets created */ + mac_hwapi_set_tx_max_frame_len(DRV_BBH_EMAC_0, 2048); /* Why do we set the max frame len here 'hard-coded' ??? FIXME */ + + /* SF2 */ + mac_hwapi_init_emac(DRV_BBH_EMAC_1); + mac_hwapi_set_unimac_cfg(DRV_BBH_EMAC_1,1); + mac_hwapi_set_rxtx_enable(DRV_BBH_EMAC_1,1,1); + mac_hwapi_set_tx_max_frame_len(DRV_BBH_EMAC_1, 2048); /* Why do we set the max frame len here 'hard-coded' ??? FIXME */ + mac_hwapi_set_backpressure_ext(DRV_BBH_EMAC_1, 1); /* Enable backpressure towards SF2 */ + + return 0; +} + +void rdp_enable_ubus_masters(void) +{ + UBUS_UBUS_MASTER_BRDG_REG_EN ubus_en; + UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL ubus_req_ctl; + UBUS_UBUS_MASTER_BRDG_REG_HP ubus_hp; + + /* Configuration taken from simulation registers. */ + + /*first Ubus Master*/ + READ_32(UBUS_MASTER_1_RDP_UBUS_MASTER_BRDG_REG_REQ_CNTRL,ubus_req_ctl); + ubus_req_ctl.max_pkt_len = 0x90; + ubus_req_ctl.endian_mode = UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ENDIAN_MODE_LB_VALUE; + WRITE_32(UBUS_MASTER_1_RDP_UBUS_MASTER_BRDG_REG_REQ_CNTRL,ubus_req_ctl); + + READ_32(UBUS_MASTER_1_RDP_UBUS_MASTER_BRDG_REG_HP,ubus_hp); + ubus_hp.hp_en = 1; + ubus_hp.hp_cnt_high = 1; + ubus_hp.hp_cnt_total = 2; + WRITE_32(UBUS_MASTER_1_RDP_UBUS_MASTER_BRDG_REG_HP,ubus_hp); + + READ_32(UBUS_MASTER_1_RDP_UBUS_MASTER_BRDG_REG_EN,ubus_en); + ubus_en.en = 1; + WRITE_32(UBUS_MASTER_1_RDP_UBUS_MASTER_BRDG_REG_EN,ubus_en); + + /*second Ubus Master*/ + READ_32(UBUS_MASTER_2_RDP_UBUS_MASTER_BRDG_REG_REQ_CNTRL,ubus_req_ctl); + ubus_req_ctl.max_pkt_len = 0x90; + ubus_req_ctl.endian_mode = UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ENDIAN_MODE_LB_VALUE; + WRITE_32(UBUS_MASTER_2_RDP_UBUS_MASTER_BRDG_REG_REQ_CNTRL,ubus_req_ctl); + + READ_32(UBUS_MASTER_2_RDP_UBUS_MASTER_BRDG_REG_HP,ubus_hp); + ubus_hp.hp_en = 1; + ubus_hp.hp_cnt_high = 11; + ubus_hp.hp_cnt_total = 13; + WRITE_32(UBUS_MASTER_2_RDP_UBUS_MASTER_BRDG_REG_HP,ubus_hp); + + READ_32(UBUS_MASTER_2_RDP_UBUS_MASTER_BRDG_REG_EN,ubus_en); + ubus_en.en = 1; + WRITE_32(UBUS_MASTER_2_RDP_UBUS_MASTER_BRDG_REG_EN,ubus_en); + + /*third Ubus Master*/ + READ_32(UBUS_MASTER_3_RDP_UBUS_MASTER_BRDG_REG_REQ_CNTRL,ubus_req_ctl); + ubus_req_ctl.max_pkt_len = 0x90; + ubus_req_ctl.endian_mode = UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ENDIAN_MODE_LB_VALUE; + WRITE_32(UBUS_MASTER_3_RDP_UBUS_MASTER_BRDG_REG_REQ_CNTRL,ubus_req_ctl); + + READ_32(UBUS_MASTER_3_RDP_UBUS_MASTER_BRDG_REG_HP,ubus_hp); + ubus_hp.hp_en = 1; + ubus_hp.hp_comb = 1; + ubus_hp.hp_cnt_high = 1; + ubus_hp.hp_cnt_total = 6; + WRITE_32(UBUS_MASTER_3_RDP_UBUS_MASTER_BRDG_REG_HP,ubus_hp); + + READ_32(UBUS_MASTER_3_RDP_UBUS_MASTER_BRDG_REG_EN,ubus_en); + ubus_en.en = 1; + WRITE_32(UBUS_MASTER_3_RDP_UBUS_MASTER_BRDG_REG_EN,ubus_en); + + // UBUS arbitration configuration, done through clocks and reset (via PMC) +} diff --git a/arch/arm/mach-bcmbca/rdp/rdp_mm.h b/arch/arm/mach-bcmbca/rdp/rdp_mm.h new file mode 100755 index 0000000000..7e16a9b598 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_mm.h @@ -0,0 +1,180 @@ +/* + <:copyright-BRCM:2014-2016:DUAL/GPL:standard + + Copyright (c) 2014-2016 Broadcom + All Rights Reserved + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, as published by + the Free Software Foundation (the "GPL"). + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + + A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + :> +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains inline functions for runner host memory management */ +/* */ +/******************************************************************************/ +#ifndef _RDP_MM_H_ +#define _RDP_MM_H_ +#include "bdmf_data_types.h" + +#if !defined(RDP_SIM) +#define rdp_mm_aligned_alloc(_size, _phy_addr_p) __rdp_mm_aligned_alloc((_size), (_phy_addr_p), GFP_DMA) +#define rdp_mm_aligned_alloc_atomic(_size, _phy_addr_p) __rdp_mm_aligned_alloc((_size), (_phy_addr_p), GFP_ATOMIC) + +#if defined(__UBOOT__) +#undef rdp_mm_aligned_alloc +#undef rdp_mm_aligned_alloc_atomic +#define rdp_mm_aligned_alloc(_size, _phy_addr_p) __rdp_mm_aligned_alloc((_size), (_phy_addr_p), 0) +#define rdp_mm_aligned_alloc_atomic(_size, _phy_addr_p) __rdp_mm_aligned_alloc((_size), (_phy_addr_p), 0) +#endif + +static inline void *__rdp_mm_aligned_alloc(uint32_t size, + bdmf_phys_addr_t * phy_addr_p, + gfp_t gfp) +{ +#if !defined(__UBOOT__) && defined(__KERNEL__) && (defined(CONFIG_ARM) || defined(CONFIG_ARM64)) + dma_addr_t phy_addr; + uint32_t size_padded_aligned = (size + (sizeof(dma_addr_t) << 1) - 1) & ~(sizeof(dma_addr_t) - 1); /* must be multiple of pointer size */ + dma_addr_t *mem; + + if (rdp_dummy_dev == NULL) + return NULL; + + /* memory allocation of dma_alloc_coherent for ARM is aligned to page size which is aligned to cache */ + mem = + (dma_addr_t *) dma_alloc_coherent(rdp_dummy_dev, + size_padded_aligned, &phy_addr, + gfp); + if (unlikely(mem == NULL)) + return NULL; + /* printk("\n\tsize %u, size32 %u, mem %p, &mem[size] %p, phy_addr 0x%08x\n\n", size, size32, mem, &mem[(size32-sizeof(void *))>>2], phy_addr); */ + mem[(size_padded_aligned / sizeof(dma_addr_t)) - 1] = phy_addr; + *phy_addr_p = (bdmf_phys_addr_t) phy_addr; + return (void *)mem; +#else + /* we are trying to make sure the start of the ring is cache line aligned, + * and we need an additional memory to hold (void *) just right before the + * start of the ring. So we are allocating 1 more cache line + sizeof(void *) */ + unsigned long cache_line = DMA_CACHE_LINE; + void *mem = + (void *)NONCACHED_MALLOC_ATOMIC(size + cache_line + sizeof(void *)); + void **ptr = + (void **)(((uintptr_t) mem + cache_line + (sizeof(void *))) & + ~(cache_line - 1)); + ptr[-1] = mem; + *phy_addr_p = VIRT_TO_PHYS(ptr); + + return (void *)ptr; +#endif +} + +static inline void rdp_mm_aligned_free(void *ptr, uint32_t size) +{ +#if !defined(__UBOOT__) && defined(__KERNEL__) && (defined(CONFIG_ARM) || defined(CONFIG_ARM64)) + uint32_t size_padded_aligned = (size + (sizeof(void *) << 1) - 1) & ~(sizeof(void *) - 1); /* must be multiple of pointer size */ + dma_addr_t *mem = ptr; + dma_addr_t phy_addr = + mem[(size_padded_aligned / sizeof(dma_addr_t)) - 1]; + dma_free_coherent(rdp_dummy_dev, size_padded_aligned, ptr, phy_addr); +#else + NONCACHED_FREE(((void **)ptr)[-1]); +#endif +} + +#else /* for simulator */ + +#define rdp_mm_aligned_alloc(_size, _phy_addr_p) __rdp_mm_aligned_alloc((_size), (_phy_addr_p)) +#define rdp_mm_aligned_alloc_atomic(_size, _phy_addr_p) __rdp_mm_aligned_alloc((_size), (_phy_addr_p)) +static inline void *__rdp_mm_aligned_alloc(uint32_t size, + bdmf_phys_addr_t * phy_addr_p) +{ +#ifdef XRDP + void *mem; + void **ptr; + uint32_t size_padded_aligned; + + size_padded_aligned = (2 * size) + sizeof(void *); + mem = bdmf_alloc_rsv(size_padded_aligned, phy_addr_p); + if (!mem) + return NULL; + *phy_addr_p += (size + sizeof(void *)); + *phy_addr_p &= ~(size - 1); + ptr = rsv_phys_to_virt(*phy_addr_p); + ptr[-1] = mem; + return ptr; +#else + void *phys_addr = malloc(size); + + *phy_addr_p = (bdmf_phys_addr_t) phys_addr; + return phys_addr; +#endif +} + +static inline void rdp_mm_aligned_free(void *ptr, uint32_t size) +{ +#ifdef XRDP +/* in case of simulator we don't free the memory because we don't manage shared memory segments */ +#ifdef XRDP_EMULATION + bdmf_free(((void **)ptr)[-1]); +#endif +#else + free(ptr); +#endif +} +#endif + +static inline void rdp_mm_setl_context(void *__to, unsigned int __val, + unsigned int __n) +{ + volatile unsigned int *dst = (volatile unsigned int *)__to; + int i; + + for (i = 0; i < (__n / 4); i++, dst++) { + if ((i & 0x3) == 3) + continue; + + *dst = __val; /* DSL */ + } +} + +static inline void rdp_mm_setl(void *__to, unsigned int __val, unsigned int __n) +{ + volatile unsigned int *dst = (volatile unsigned int *)__to; + int i; + + for (i = 0; i < (__n / 4); i++, dst++) { + *dst = __val; /* DSL */ + } +} + +static inline void rdp_mm_cpyl_context(void *__to, void *__from, + unsigned int __n) +{ + volatile unsigned int *src = (unsigned int *)__from; + volatile unsigned int *dst = (unsigned int *)__to; + int i, n = __n / 4; + + for (i = 0; i < n; i++, src++, dst++) { + if ((i & 0x3) == 3) + continue; + + *dst = swap4bytes(*src); + } +} + +#endif diff --git a/arch/arm/mach-bcmbca/rdp/rdp_runner.h b/arch/arm/mach-bcmbca/rdp/rdp_runner.h new file mode 100755 index 0000000000..9667f571ba --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_runner.h @@ -0,0 +1,7018 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef __RUNNER_H_INCLUDED +#define __RUNNER_H_INCLUDED + +/* File automatically generated by Reggae at 15/08/2013 10:55:07 */ + +#include "access_macros.h" +#ifndef __PACKING_ATTRIBUTE_STRUCT_END__ +#include "packing.h" +#endif +#include "rdp_map.h" + +/*****************************************************************************************/ +/* Runner VPB address space */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Blocks offsets */ +/*****************************************************************************************/ +/*****************************************************************************************/ +/* Functions offsets and addresses */ +/*****************************************************************************************/ +#define RUNNER_COMMON_0_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_COMMON_0_MEM_ADDRESS ( RUNNER_COMMON_0_OFFSET + RUNNER_COMMON_0_MEM_OFFSET ) + +/** Number of entries of the function into block **/ +#define RUNNER_COMMON_MEM_COUNTER ( 4096 ) +/** Number of registers per entry **/ +#define RUNNER_COMMON_MEM_IN_OFFSET ( 8 ) + +#define RUNNER_COMMON_1_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_COMMON_1_MEM_ADDRESS ( RUNNER_COMMON_1_OFFSET + RUNNER_COMMON_1_MEM_OFFSET ) + +#define RUNNER_PRIVATE_0_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_PRIVATE_0_MEM_ADDRESS ( RUNNER_PRIVATE_0_OFFSET + RUNNER_PRIVATE_0_MEM_OFFSET ) + +/** Number of entries of the function into block **/ +#define RUNNER_PRIVATE_MEM_COUNTER ( 6144 ) +/** Number of registers per entry **/ +#define RUNNER_PRIVATE_MEM_IN_OFFSET ( 8 ) + +#define RUNNER_PRIVATE_1_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_PRIVATE_1_MEM_ADDRESS ( RUNNER_PRIVATE_1_OFFSET + RUNNER_PRIVATE_1_MEM_OFFSET ) + +#define RUNNER_INST_MAIN_0_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_INST_MAIN_0_MEM_ADDRESS ( RUNNER_INST_MAIN_0_OFFSET + RUNNER_INST_MAIN_0_MEM_OFFSET ) + +/** Number of entries of the function into block **/ +#define RUNNER_INST_MAIN_MEM_COUNTER ( 7168 ) + +/** Number of registers per entry **/ +#define RUNNER_INST_MAIN_MEM_IN_OFFSET ( 4 ) + +#define RUNNER_INST_MAIN_1_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_INST_MAIN_1_MEM_ADDRESS ( RUNNER_INST_MAIN_1_OFFSET + RUNNER_INST_MAIN_1_MEM_OFFSET ) + +#define RUNNER_CNTXT_MAIN_0_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_CNTXT_MAIN_0_MEM_ADDRESS ( RUNNER_CNTXT_MAIN_0_OFFSET + RUNNER_CNTXT_MAIN_0_MEM_OFFSET ) + +/** Number of entries of the function into block **/ +#define RUNNER_CNTXT_MAIN_MEM_COUNTER ( 1024 ) +/** Number of registers per entry **/ +#define RUNNER_CNTXT_MAIN_MEM_IN_OFFSET ( 4 ) + +#define RUNNER_CNTXT_MAIN_1_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_CNTXT_MAIN_1_MEM_ADDRESS ( RUNNER_CNTXT_MAIN_1_OFFSET + RUNNER_CNTXT_MAIN_1_MEM_OFFSET ) + +#define RUNNER_PRED_MAIN_0_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_PRED_MAIN_0_MEM_ADDRESS ( RUNNER_PRED_MAIN_0_OFFSET + RUNNER_PRED_MAIN_0_MEM_OFFSET ) + +#define RUNNER_PRED_MAIN_1_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_PRED_MAIN_1_MEM_ADDRESS ( RUNNER_PRED_MAIN_1_OFFSET + RUNNER_PRED_MAIN_1_MEM_OFFSET ) + +#define RUNNER_INST_PICO_0_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_INST_PICO_0_MEM_ADDRESS ( RUNNER_INST_PICO_0_OFFSET + RUNNER_INST_PICO_0_MEM_OFFSET ) + +/** Number of entries of the function into block **/ +#define RUNNER_INST_PICO_MEM_COUNTER ( 4096 ) + +/** Number of registers per entry **/ +#define RUNNER_INST_PICO_MEM_IN_OFFSET ( 4 ) + +#define RUNNER_INST_PICO_1_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_INST_PICO_1_MEM_ADDRESS ( RUNNER_INST_PICO_1_OFFSET + RUNNER_INST_PICO_1_MEM_OFFSET ) + +#define RUNNER_CNTXT_PICO_0_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_CNTXT_PICO_0_MEM_ADDRESS ( RUNNER_CNTXT_PICO_0_OFFSET + RUNNER_CNTXT_PICO_0_MEM_OFFSET ) + +/** Number of entries of the function into block **/ +#define RUNNER_CNTXT_PICO_MEM_COUNTER ( 512 ) +/** Number of registers per entry **/ +#define RUNNER_CNTXT_PICO_MEM_IN_OFFSET ( 4 ) + +#define RUNNER_CNTXT_PICO_1_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_CNTXT_PICO_1_MEM_ADDRESS ( RUNNER_CNTXT_PICO_1_OFFSET + RUNNER_CNTXT_PICO_1_MEM_OFFSET ) + +#define RUNNER_PRED_PICO_0_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_PRED_PICO_0_MEM_ADDRESS ( RUNNER_PRED_PICO_0_OFFSET + RUNNER_PRED_PICO_0_MEM_OFFSET ) + +#define RUNNER_PRED_PICO_1_MEM_OFFSET ( 0x00000000 ) +#define RUNNER_PRED_PICO_1_MEM_ADDRESS ( RUNNER_PRED_PICO_1_OFFSET + RUNNER_PRED_PICO_1_MEM_OFFSET ) + +#define RUNNER_REGS_0_CFG_OFFSET ( 0x00000000 ) +#define RUNNER_REGS_0_CFG_ADDRESS ( RUNNER_REGS_0_OFFSET + RUNNER_REGS_0_CFG_OFFSET ) + +#define RUNNER_REGS_1_CFG_OFFSET ( 0x00000000 ) +#define RUNNER_REGS_1_CFG_ADDRESS ( RUNNER_REGS_1_OFFSET + RUNNER_REGS_1_CFG_OFFSET ) + +/* 'd' is module index */ +/* 'i' is block index */ +/* 'j' is function index */ +/* 'e' is function entry */ +/* 'k' is register index */ + +/*****************************************************************************************/ +/* Data_memory_entry */ +/* Data memory entry */ +/*****************************************************************************************/ + +#define RUNNER_COMMON_MEM_HIGH_DATA_MEM_DATA_VALUE ( 0x0 ) +#define RUNNER_COMMON_MEM_HIGH_DATA_MEM_DATA_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_COMMON_MEM_HIGH_OFFSET ( 0x00000000 ) + +#define RUNNER_COMMON_0_MEM_HIGH_ADDRESS ( RUNNER_COMMON_0_MEM_ADDRESS + RUNNER_COMMON_MEM_HIGH_OFFSET ) +#define RUNNER_COMMON_0_MEM_HIGH_READ( e, r ) READ_32( ( RUNNER_COMMON_0_MEM_HIGH_ADDRESS + e * 8 ), (r) ) +#define RUNNER_COMMON_0_MEM_HIGH_WRITE( e, v ) WRITE_32( ( RUNNER_COMMON_0_MEM_HIGH_ADDRESS + e * 8 ), (v) ) + +#define RUNNER_COMMON_1_MEM_HIGH_ADDRESS ( RUNNER_COMMON_1_MEM_ADDRESS + RUNNER_COMMON_MEM_HIGH_OFFSET ) +#define RUNNER_COMMON_1_MEM_HIGH_READ( e, r ) READ_32( ( RUNNER_COMMON_1_MEM_HIGH_ADDRESS + e * 8 ), (r) ) +#define RUNNER_COMMON_1_MEM_HIGH_WRITE( e, v ) WRITE_32( ( RUNNER_COMMON_1_MEM_HIGH_ADDRESS + e * 8 ), (v) ) + + +extern uint32_t RUNNER_COMMON_MEM_HIGH_ARRAY [ ] ; + +#define RUNNER_COMMON_MEM_HIGH_WRITE( i, e, v ) WRITE_32( RUNNER_COMMON_MEM_HIGH_ARRAY [ i ] + e * 8, (v) ) +#define RUNNER_COMMON_MEM_HIGH_READ( i, e, r ) READ_32( RUNNER_COMMON_MEM_HIGH_ARRAY [ i ] + e * 8, (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* data_memory */ + uint32_t data_mem : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_COMMON_MEM_HIGH ; +#else +typedef struct +{ uint32_t data_mem : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data_memory */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_COMMON_MEM_HIGH ; +#endif + +/*****************************************************************************************/ +/* Data_memory_entry */ +/* Data memory entry */ +/*****************************************************************************************/ + +#define RUNNER_COMMON_MEM_LOW_DATA_MEM_DATA_VALUE ( 0x0 ) +#define RUNNER_COMMON_MEM_LOW_DATA_MEM_DATA_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_COMMON_MEM_LOW_OFFSET ( 0x00000004 ) + +#define RUNNER_COMMON_0_MEM_LOW_ADDRESS ( RUNNER_COMMON_0_MEM_ADDRESS + RUNNER_COMMON_MEM_LOW_OFFSET ) +#define RUNNER_COMMON_0_MEM_LOW_READ( e, r ) READ_32( ( RUNNER_COMMON_0_MEM_LOW_ADDRESS + e * 8 ), (r) ) +#define RUNNER_COMMON_0_MEM_LOW_WRITE( e, v ) WRITE_32( ( RUNNER_COMMON_0_MEM_LOW_ADDRESS + e * 8 ), (v) ) + +#define RUNNER_COMMON_1_MEM_LOW_ADDRESS ( RUNNER_COMMON_1_MEM_ADDRESS + RUNNER_COMMON_MEM_LOW_OFFSET ) +#define RUNNER_COMMON_1_MEM_LOW_READ( e, r ) READ_32( ( RUNNER_COMMON_1_MEM_LOW_ADDRESS + e * 8 ), (r) ) +#define RUNNER_COMMON_1_MEM_LOW_WRITE( e, v ) WRITE_32( ( RUNNER_COMMON_1_MEM_LOW_ADDRESS + e * 8 ), (v) ) + + +extern uint32_t RUNNER_COMMON_MEM_LOW_ARRAY [ ] ; + +#define RUNNER_COMMON_MEM_LOW_WRITE( i, e, v ) WRITE_32( RUNNER_COMMON_MEM_LOW_ARRAY [ i ] + e * 8, (v) ) +#define RUNNER_COMMON_MEM_LOW_READ( i, e, r ) READ_32( RUNNER_COMMON_MEM_LOW_ARRAY [ i ] + e * 8, (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* data_memory */ + uint32_t data_mem : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_COMMON_MEM_LOW ; +#else +typedef struct +{ uint32_t data_mem : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data_memory */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_COMMON_MEM_LOW ; +#endif + +/*****************************************************************************************/ +/* Data_memory_entry */ +/* Data memory entry */ +/*****************************************************************************************/ + +#define RUNNER_PRIVATE_MEM_HIGH_DATA_MEM_DATA_VALUE ( 0x0 ) +#define RUNNER_PRIVATE_MEM_HIGH_DATA_MEM_DATA_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_PRIVATE_MEM_HIGH_OFFSET ( 0x00000000 ) + +#define RUNNER_PRIVATE_0_MEM_HIGH_ADDRESS ( RUNNER_PRIVATE_0_MEM_ADDRESS + RUNNER_PRIVATE_MEM_HIGH_OFFSET ) +#define RUNNER_PRIVATE_0_MEM_HIGH_READ( e, r ) READ_32( ( RUNNER_PRIVATE_0_MEM_HIGH_ADDRESS + e * 8 ), (r) ) +#define RUNNER_PRIVATE_0_MEM_HIGH_WRITE( e, v ) WRITE_32( ( RUNNER_PRIVATE_0_MEM_HIGH_ADDRESS + e * 8 ), (v) ) + +#define RUNNER_PRIVATE_1_MEM_HIGH_ADDRESS ( RUNNER_PRIVATE_1_MEM_ADDRESS + RUNNER_PRIVATE_MEM_HIGH_OFFSET ) +#define RUNNER_PRIVATE_1_MEM_HIGH_READ( e, r ) READ_32( ( RUNNER_PRIVATE_1_MEM_HIGH_ADDRESS + e * 8 ), (r) ) +#define RUNNER_PRIVATE_1_MEM_HIGH_WRITE( e, v ) WRITE_32( ( RUNNER_PRIVATE_1_MEM_HIGH_ADDRESS + e * 8 ), (v) ) + + +extern uint32_t RUNNER_PRIVATE_MEM_HIGH_ARRAY [ ] ; + +#define RUNNER_PRIVATE_MEM_HIGH_WRITE( i, e, v ) WRITE_32( RUNNER_PRIVATE_MEM_HIGH_ARRAY [ i ] + e * 8, (v) ) +#define RUNNER_PRIVATE_MEM_HIGH_READ( i, e, r ) READ_32( RUNNER_PRIVATE_MEM_HIGH_ARRAY [ i ] + e * 8, (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* data_memory */ + uint32_t data_mem : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRIVATE_MEM_HIGH ; +#else +typedef struct +{ uint32_t data_mem : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data_memory */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRIVATE_MEM_HIGH ; +#endif + +/*****************************************************************************************/ +/* Data_memory_entry */ +/* Data memory entry */ +/*****************************************************************************************/ + +#define RUNNER_PRIVATE_MEM_LOW_DATA_MEM_DATA_VALUE ( 0x0 ) +#define RUNNER_PRIVATE_MEM_LOW_DATA_MEM_DATA_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_PRIVATE_MEM_LOW_OFFSET ( 0x00000004 ) + +#define RUNNER_PRIVATE_0_MEM_LOW_ADDRESS ( RUNNER_PRIVATE_0_MEM_ADDRESS + RUNNER_PRIVATE_MEM_LOW_OFFSET ) +#define RUNNER_PRIVATE_0_MEM_LOW_READ( e, r ) READ_32( ( RUNNER_PRIVATE_0_MEM_LOW_ADDRESS + e * 8 ), (r) ) +#define RUNNER_PRIVATE_0_MEM_LOW_WRITE( e, v ) WRITE_32( ( RUNNER_PRIVATE_0_MEM_LOW_ADDRESS + e * 8 ), (v) ) + +#define RUNNER_PRIVATE_1_MEM_LOW_ADDRESS ( RUNNER_PRIVATE_1_MEM_ADDRESS + RUNNER_PRIVATE_MEM_LOW_OFFSET ) +#define RUNNER_PRIVATE_1_MEM_LOW_READ( e, r ) READ_32( ( RUNNER_PRIVATE_1_MEM_LOW_ADDRESS + e * 8 ), (r) ) +#define RUNNER_PRIVATE_1_MEM_LOW_WRITE( e, v ) WRITE_32( ( RUNNER_PRIVATE_1_MEM_LOW_ADDRESS + e * 8 ), (v) ) + + +extern uint32_t RUNNER_PRIVATE_MEM_LOW_ARRAY [ ] ; + +#define RUNNER_PRIVATE_MEM_LOW_WRITE( i, e, v ) WRITE_32( RUNNER_PRIVATE_MEM_LOW_ARRAY [ i ] + e * 8, (v) ) +#define RUNNER_PRIVATE_MEM_LOW_READ( i, e, r ) READ_32( RUNNER_PRIVATE_MEM_LOW_ARRAY [ i ] + e * 8, (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* data_memory */ + uint32_t data_mem : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRIVATE_MEM_LOW ; +#else +typedef struct +{ uint32_t data_mem : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data_memory */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRIVATE_MEM_LOW ; +#endif + +/*****************************************************************************************/ +/* Instruction_memory_entry */ +/* Instruction memory entry */ +/*****************************************************************************************/ + +#define RUNNER_INST_MAIN_MEM_ENTRY_INSTRUCTION_INSTRUCTION_VALUE ( 0x0 ) +#define RUNNER_INST_MAIN_MEM_ENTRY_INSTRUCTION_INSTRUCTION_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_INST_MAIN_MEM_ENTRY_OFFSET ( 0x00000000 ) + +#define RUNNER_INST_MAIN_0_MEM_ENTRY_ADDRESS ( RUNNER_INST_MAIN_0_MEM_ADDRESS + RUNNER_INST_MAIN_MEM_ENTRY_OFFSET ) +#define RUNNER_INST_MAIN_0_MEM_ENTRY_READ( e, r ) READ_32( ( RUNNER_INST_MAIN_0_MEM_ENTRY_ADDRESS + e * 4 ), (r) ) +#define RUNNER_INST_MAIN_0_MEM_ENTRY_WRITE( e, v ) WRITE_32( ( RUNNER_INST_MAIN_0_MEM_ENTRY_ADDRESS + e * 4 ), (v) ) + +#define RUNNER_INST_MAIN_1_MEM_ENTRY_ADDRESS ( RUNNER_INST_MAIN_1_MEM_ADDRESS + RUNNER_INST_MAIN_MEM_ENTRY_OFFSET ) +#define RUNNER_INST_MAIN_1_MEM_ENTRY_READ( e, r ) READ_32( ( RUNNER_INST_MAIN_1_MEM_ENTRY_ADDRESS + e * 4 ), (r) ) +#define RUNNER_INST_MAIN_1_MEM_ENTRY_WRITE( e, v ) WRITE_32( ( RUNNER_INST_MAIN_1_MEM_ENTRY_ADDRESS + e * 4 ), (v) ) + + +extern uint32_t RUNNER_INST_MAIN_MEM_ENTRY_ARRAY [ ] ; + +#define RUNNER_INST_MAIN_MEM_ENTRY_WRITE( i, e, v ) WRITE_32( RUNNER_INST_MAIN_MEM_ENTRY_ARRAY [ i ] + e * 4, (v) ) +#define RUNNER_INST_MAIN_MEM_ENTRY_READ( i, e, r ) READ_32( RUNNER_INST_MAIN_MEM_ENTRY_ARRAY [ i ] + e * 4, (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Instructions_memory */ + uint32_t instruction : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_INST_MAIN_MEM_ENTRY ; +#else +typedef struct +{ uint32_t instruction : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Instructions_memory */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_INST_MAIN_MEM_ENTRY ; +#endif + +/*****************************************************************************************/ +/* Context_mem_entry */ +/* Context mem entry */ +/*****************************************************************************************/ + +#define RUNNER_CNTXT_MAIN_MEM_ENTRY_CONTEXT_ENTRY_CONTEXT_MEM_ENTRY_VALUE ( 0x0 ) +#define RUNNER_CNTXT_MAIN_MEM_ENTRY_CONTEXT_ENTRY_CONTEXT_MEM_ENTRY_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_CNTXT_MAIN_MEM_ENTRY_OFFSET ( 0x00000000 ) + +#define RUNNER_CNTXT_MAIN_0_MEM_ENTRY_ADDRESS ( RUNNER_CNTXT_MAIN_0_MEM_ADDRESS + RUNNER_CNTXT_MAIN_MEM_ENTRY_OFFSET ) +#define RUNNER_CNTXT_MAIN_0_MEM_ENTRY_READ( e, r ) READ_32( ( RUNNER_CNTXT_MAIN_0_MEM_ENTRY_ADDRESS + e * 4 ), (r) ) +#define RUNNER_CNTXT_MAIN_0_MEM_ENTRY_WRITE( e, v ) WRITE_32( ( RUNNER_CNTXT_MAIN_0_MEM_ENTRY_ADDRESS + e * 4 ), (v) ) + +#define RUNNER_CNTXT_MAIN_1_MEM_ENTRY_ADDRESS ( RUNNER_CNTXT_MAIN_1_MEM_ADDRESS + RUNNER_CNTXT_MAIN_MEM_ENTRY_OFFSET ) +#define RUNNER_CNTXT_MAIN_1_MEM_ENTRY_READ( e, r ) READ_32( ( RUNNER_CNTXT_MAIN_1_MEM_ENTRY_ADDRESS + e * 4 ), (r) ) +#define RUNNER_CNTXT_MAIN_1_MEM_ENTRY_WRITE( e, v ) WRITE_32( ( RUNNER_CNTXT_MAIN_1_MEM_ENTRY_ADDRESS + e * 4 ), (v) ) + + +extern uint32_t RUNNER_CNTXT_MAIN_MEM_ENTRY_ARRAY [ ] ; + +#define RUNNER_CNTXT_MAIN_MEM_ENTRY_WRITE( i, e, v ) WRITE_32( RUNNER_CNTXT_MAIN_MEM_ENTRY_ARRAY [ i ] + e * 4, (v) ) +#define RUNNER_CNTXT_MAIN_MEM_ENTRY_READ( i, e, r ) READ_32( RUNNER_CNTXT_MAIN_MEM_ENTRY_ARRAY [ i ] + e * 4, (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Context_mem_entry */ + uint32_t context_entry : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_CNTXT_MAIN_MEM_ENTRY ; +#else +typedef struct +{ uint32_t context_entry : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_mem_entry */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_CNTXT_MAIN_MEM_ENTRY ; +#endif + +/*****************************************************************************************/ +/* prediction_memory_core */ +/* Prediction memory MAIN core */ +/*****************************************************************************************/ + + + +#define RUNNER_PRED_MAIN_MEM_ENTRY_OFFSET ( 0x00000000 ) + +#define RUNNER_PRED_MAIN_0_MEM_ENTRY_ADDRESS ( RUNNER_PRED_MAIN_0_MEM_ADDRESS + RUNNER_PRED_MAIN_MEM_ENTRY_OFFSET ) +#define RUNNER_PRED_MAIN_0_MEM_ENTRY_READ_I( r, i ) READ_I_16( ( RUNNER_PRED_MAIN_0_MEM_ENTRY_ADDRESS ), (i), (r) ) +#define RUNNER_PRED_MAIN_0_MEM_ENTRY_WRITE_I( v, i ) WRITE_I_16( ( RUNNER_PRED_MAIN_0_MEM_ENTRY_ADDRESS ), (i), (v) ) + +#define RUNNER_PRED_MAIN_1_MEM_ENTRY_ADDRESS ( RUNNER_PRED_MAIN_1_MEM_ADDRESS + RUNNER_PRED_MAIN_MEM_ENTRY_OFFSET ) +#define RUNNER_PRED_MAIN_1_MEM_ENTRY_READ_I( r, i ) READ_I_16( ( RUNNER_PRED_MAIN_1_MEM_ENTRY_ADDRESS ), (i), (r) ) +#define RUNNER_PRED_MAIN_1_MEM_ENTRY_WRITE_I( v, i ) WRITE_I_16( ( RUNNER_PRED_MAIN_1_MEM_ENTRY_ADDRESS ), (i), (v) ) + + +extern uint32_t RUNNER_PRED_MAIN_MEM_ENTRY_ARRAY [ ] ; + +#define RUNNER_PRED_MAIN_MEM_ENTRY_WRITE( i, k, v ) WRITE_I_16( RUNNER_PRED_MAIN_MEM_ENTRY_ARRAY [ i ], (k), (v) ) +#define RUNNER_PRED_MAIN_MEM_ENTRY_READ( i, k, r ) READ_I_16( RUNNER_PRED_MAIN_MEM_ENTRY_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MEM_PRED_MAIN */ + uint16_t pred_mem : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRED_MAIN_MEM_ENTRY ; +#else +typedef struct +{ uint16_t pred_mem : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MEM_PRED_MAIN */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRED_MAIN_MEM_ENTRY ; +#endif + +/*****************************************************************************************/ +/* Instruction_memory_entry */ +/* Instruction memory entry */ +/*****************************************************************************************/ + +#define RUNNER_INST_PICO_MEM_ENTRY_INSTRUCTION_INSTRUCTION_VALUE ( 0x0 ) +#define RUNNER_INST_PICO_MEM_ENTRY_INSTRUCTION_INSTRUCTION_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_INST_PICO_MEM_ENTRY_OFFSET ( 0x00000000 ) + +#define RUNNER_INST_PICO_0_MEM_ENTRY_ADDRESS ( RUNNER_INST_PICO_0_MEM_ADDRESS + RUNNER_INST_PICO_MEM_ENTRY_OFFSET ) +#define RUNNER_INST_PICO_0_MEM_ENTRY_READ( e, r ) READ_32( ( RUNNER_INST_PICO_0_MEM_ENTRY_ADDRESS + e * 4 ), (r) ) +#define RUNNER_INST_PICO_0_MEM_ENTRY_WRITE( e, v ) WRITE_32( ( RUNNER_INST_PICO_0_MEM_ENTRY_ADDRESS + e * 4 ), (v) ) + +#define RUNNER_INST_PICO_1_MEM_ENTRY_ADDRESS ( RUNNER_INST_PICO_1_MEM_ADDRESS + RUNNER_INST_PICO_MEM_ENTRY_OFFSET ) +#define RUNNER_INST_PICO_1_MEM_ENTRY_READ( e, r ) READ_32( ( RUNNER_INST_PICO_1_MEM_ENTRY_ADDRESS + e * 4 ), (r) ) +#define RUNNER_INST_PICO_1_MEM_ENTRY_WRITE( e, v ) WRITE_32( ( RUNNER_INST_PICO_1_MEM_ENTRY_ADDRESS + e * 4 ), (v) ) + + +extern uint32_t RUNNER_INST_PICO_MEM_ENTRY_ARRAY [ ] ; + +#define RUNNER_INST_PICO_MEM_ENTRY_WRITE( i, e, v ) WRITE_32( RUNNER_INST_PICO_MEM_ENTRY_ARRAY [ i ] + e * 4, (v) ) +#define RUNNER_INST_PICO_MEM_ENTRY_READ( i, e, r ) READ_32( RUNNER_INST_PICO_MEM_ENTRY_ARRAY [ i ] + e * 4, (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Instructions_memory */ + uint32_t instruction : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_INST_PICO_MEM_ENTRY ; +#else +typedef struct +{ uint32_t instruction : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Instructions_memory */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_INST_PICO_MEM_ENTRY ; +#endif + +/*****************************************************************************************/ +/* Context_mem_entry */ +/* Context mem entry */ +/*****************************************************************************************/ + +#define RUNNER_CNTXT_PICO_MEM_ENTRY_CONTEXT_ENTRY_CONTEXT_MEM_ENTRY_VALUE ( 0x0 ) +#define RUNNER_CNTXT_PICO_MEM_ENTRY_CONTEXT_ENTRY_CONTEXT_MEM_ENTRY_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_CNTXT_PICO_MEM_ENTRY_OFFSET ( 0x00000000 ) + +#define RUNNER_CNTXT_PICO_0_MEM_ENTRY_ADDRESS ( RUNNER_CNTXT_PICO_0_MEM_ADDRESS + RUNNER_CNTXT_PICO_MEM_ENTRY_OFFSET ) +#define RUNNER_CNTXT_PICO_0_MEM_ENTRY_READ( e, r ) READ_32( ( RUNNER_CNTXT_PICO_0_MEM_ENTRY_ADDRESS + e * 4 ), (r) ) +#define RUNNER_CNTXT_PICO_0_MEM_ENTRY_WRITE( e, v ) WRITE_32( ( RUNNER_CNTXT_PICO_0_MEM_ENTRY_ADDRESS + e * 4 ), (v) ) + +#define RUNNER_CNTXT_PICO_1_MEM_ENTRY_ADDRESS ( RUNNER_CNTXT_PICO_1_MEM_ADDRESS + RUNNER_CNTXT_PICO_MEM_ENTRY_OFFSET ) +#define RUNNER_CNTXT_PICO_1_MEM_ENTRY_READ( e, r ) READ_32( ( RUNNER_CNTXT_PICO_1_MEM_ENTRY_ADDRESS + e * 4 ), (r) ) +#define RUNNER_CNTXT_PICO_1_MEM_ENTRY_WRITE( e, v ) WRITE_32( ( RUNNER_CNTXT_PICO_1_MEM_ENTRY_ADDRESS + e * 4 ), (v) ) + + +extern uint32_t RUNNER_CNTXT_PICO_MEM_ENTRY_ARRAY [ ] ; + +#define RUNNER_CNTXT_PICO_MEM_ENTRY_WRITE( i, e, v ) WRITE_32( RUNNER_CNTXT_PICO_MEM_ENTRY_ARRAY [ i ] + e * 4, (v) ) +#define RUNNER_CNTXT_PICO_MEM_ENTRY_READ( i, e, r ) READ_32( RUNNER_CNTXT_PICO_MEM_ENTRY_ARRAY [ i ] + e * 4, (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Context_mem_entry */ + uint32_t context_entry : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_CNTXT_PICO_MEM_ENTRY ; +#else +typedef struct +{ uint32_t context_entry : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Context_mem_entry */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_CNTXT_PICO_MEM_ENTRY ; +#endif + +/*****************************************************************************************/ +/* Prediction_memory_pico */ +/* Prediction memory PICO core */ +/*****************************************************************************************/ + + + +#define RUNNER_PRED_PICO_MEM_ENTRY_OFFSET ( 0x00000000 ) + +#define RUNNER_PRED_PICO_0_MEM_ENTRY_ADDRESS ( RUNNER_PRED_PICO_0_MEM_ADDRESS + RUNNER_PRED_PICO_MEM_ENTRY_OFFSET ) +#define RUNNER_PRED_PICO_0_MEM_ENTRY_READ_I( r, i ) READ_I_16( ( RUNNER_PRED_PICO_0_MEM_ENTRY_ADDRESS ), (i), (r) ) +#define RUNNER_PRED_PICO_0_MEM_ENTRY_WRITE_I( v, i ) WRITE_I_16( ( RUNNER_PRED_PICO_0_MEM_ENTRY_ADDRESS ), (i), (v) ) + +#define RUNNER_PRED_PICO_1_MEM_ENTRY_ADDRESS ( RUNNER_PRED_PICO_1_MEM_ADDRESS + RUNNER_PRED_PICO_MEM_ENTRY_OFFSET ) +#define RUNNER_PRED_PICO_1_MEM_ENTRY_READ_I( r, i ) READ_I_16( ( RUNNER_PRED_PICO_1_MEM_ENTRY_ADDRESS ), (i), (r) ) +#define RUNNER_PRED_PICO_1_MEM_ENTRY_WRITE_I( v, i ) WRITE_I_16( ( RUNNER_PRED_PICO_1_MEM_ENTRY_ADDRESS ), (i), (v) ) + + +extern uint32_t RUNNER_PRED_PICO_MEM_ENTRY_ARRAY [ ] ; + +#define RUNNER_PRED_PICO_MEM_ENTRY_WRITE( i, k, v ) WRITE_I_16( RUNNER_PRED_PICO_MEM_ENTRY_ARRAY [ i ], (k), (v) ) +#define RUNNER_PRED_PICO_MEM_ENTRY_READ( i, k, r ) READ_I_16( RUNNER_PRED_PICO_MEM_ENTRY_ARRAY [ i ], (k), (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MEM_PRED_PICO */ + uint16_t mem_pred_pico : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRED_PICO_MEM_ENTRY ; +#else +typedef struct +{ uint16_t mem_pred_pico : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MEM_PRED_PICO */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRED_PICO_MEM_ENTRY ; +#endif + +/*****************************************************************************************/ +/* Global_control */ +/* Global control */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_GLOBAL_CTRL_RESERVED2_RESREVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_RESERVED2_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_MAIN_CNTXT_REB_EN_DISABLE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_MAIN_CNTXT_REB_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_MAIN_CNTXT_REB_EN_ENABLE_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_RESERVED1_RESREVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_RESERVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PRVT_B_LS_0_REGULER_MODE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PRVT_B_LS_0_LS_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PRVT_B_LS_0_LS_VALUE_RESET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PRVT_A_LS_0_REGULER_MODE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PRVT_A_LS_0_LS_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PRVT_A_LS_0_LS_VALUE_RESET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_CMN_LS_0_REGULER_MODE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_CMN_LS_0_LS_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_CMN_LS_0_LS_VALUE_RESET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_DMA_LS_0_REGULER_MODE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_DMA_LS_0_LS_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_DMA_LS_0_LS_VALUE_RESET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PRED_LS_0_REGULER_MODE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PRED_LS_0_LS_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PRED_LS_0_LS_VALUE_RESET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_CNTXT_LS_0_REGULER_MODE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_CNTXT_LS_0_LS_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_CNTXT_LS_0_LS_VALUE_RESET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PGM_LS_0_REGULER_MODE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PGM_LS_0_LS_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PGM_LS_0_LS_VALUE_RESET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_MICRO_SEC_VAL_DEFAULT_FREQUENCY_VALUE ( 0x15E ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_MICRO_SEC_VAL_DEFAULT_FREQUENCY_VALUE_RESET_VALUE ( 0x15E ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_RESERVED0_RESREVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_RESERVED0_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PICO_EN_RUNNER_DISABLED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PICO_EN_RUNNER_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_PICO_EN_RUNNER_ENABLED_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_MAIN_EN_RUNNER_DISABLED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_MAIN_EN_RUNNER_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_MAIN_EN_RUNNER_ENABLED_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_GLOBAL_CTRL_OFFSET ( 0x00000000 ) + +#define RUNNER_REGS_0_CFG_GLOBAL_CTRL_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_GLOBAL_CTRL_OFFSET ) +#define RUNNER_REGS_0_CFG_GLOBAL_CTRL_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_GLOBAL_CTRL_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_GLOBAL_CTRL_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_GLOBAL_CTRL_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_GLOBAL_CTRL_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_GLOBAL_CTRL_OFFSET ) +#define RUNNER_REGS_1_CFG_GLOBAL_CTRL_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_GLOBAL_CTRL_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_GLOBAL_CTRL_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_GLOBAL_CTRL_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_GLOBAL_CTRL_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_GLOBAL_CTRL_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_GLOBAL_CTRL_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_GLOBAL_CTRL_READ( i, r ) READ_32( RUNNER_REGS_CFG_GLOBAL_CTRL_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t reserved2 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* main_cntx_reb_en */ + uint32_t main_cntxt_reb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t reserved1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PRVT_B_mem_tie_to_0 */ + uint32_t prvt_b_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PRVT_A_mem_tie_to_0 */ + uint32_t prvt_a_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CMN_mem_tie_to_0 */ + uint32_t cmn_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_mem_tie_to_0 */ + uint32_t dma_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PRED_mem_tie_to_0 */ + uint32_t pred_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CNTXT_mem_tie_to_0 */ + uint32_t cntxt_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PGM_mem_tie_to_0 */ + uint32_t pgm_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Micro_sec_val */ + uint32_t micro_sec_val : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PICO_enable */ + uint32_t pico_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MAIN_enable */ + uint32_t main_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_GLOBAL_CTRL ; +#else +typedef struct +{ uint32_t main_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MAIN_enable */ + uint32_t pico_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PICO_enable */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t micro_sec_val : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Micro_sec_val */ + uint32_t pgm_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PGM_mem_tie_to_0 */ + uint32_t cntxt_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CNTXT_mem_tie_to_0 */ + uint32_t pred_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PRED_mem_tie_to_0 */ + uint32_t dma_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_mem_tie_to_0 */ + uint32_t cmn_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CMN_mem_tie_to_0 */ + uint32_t prvt_a_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PRVT_A_mem_tie_to_0 */ + uint32_t prvt_b_ls_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PRVT_B_mem_tie_to_0 */ + uint32_t reserved1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ + uint32_t main_cntxt_reb_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* main_cntx_reb_en */ + uint32_t reserved2 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_GLOBAL_CTRL ; +#endif + +/*****************************************************************************************/ +/* CPU_Wakeup */ +/* Writing to this register generates a request towards the runner scheduler. */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_CPU_WAKEUP_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CPU_WAKEUP_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CPU_WAKEUP_URGENT_REQ_NOT_URGENT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CPU_WAKEUP_URGENT_REQ_NOT_URGENT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CPU_WAKEUP_URGENT_REQ_URGENT_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CPU_WAKEUP_REQ_TRGT_MAIN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CPU_WAKEUP_REQ_TRGT_MAIN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CPU_WAKEUP_REQ_TRGT_PICO_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CPU_WAKEUP_THREAD_NUM_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CPU_WAKEUP_THREAD_NUM_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_CPU_WAKEUP_OFFSET ( 0x00000004 ) + +#define RUNNER_REGS_0_CFG_CPU_WAKEUP_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_CPU_WAKEUP_OFFSET ) +#define RUNNER_REGS_0_CFG_CPU_WAKEUP_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_CPU_WAKEUP_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_CPU_WAKEUP_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_CPU_WAKEUP_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_CPU_WAKEUP_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_CPU_WAKEUP_OFFSET ) +#define RUNNER_REGS_1_CFG_CPU_WAKEUP_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_CPU_WAKEUP_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_CPU_WAKEUP_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_CPU_WAKEUP_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_CPU_WAKEUP_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_CPU_WAKEUP_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_CPU_WAKEUP_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_CPU_WAKEUP_READ( i, r ) READ_32( RUNNER_REGS_CFG_CPU_WAKEUP_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved0 : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Urgent_Request */ + uint32_t urgent_req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Req_target */ + uint32_t req_trgt : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Thread_Number */ + uint32_t thread_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_CPU_WAKEUP ; +#else +typedef struct +{ uint32_t thread_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Thread_Number */ + uint32_t req_trgt : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Req_target */ + uint32_t urgent_req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Urgent_Request */ + uint32_t reserved0 : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_CPU_WAKEUP ; +#endif + +/*****************************************************************************************/ +/* Interrupt_Control */ +/* Interrupt control */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_INT_CTRL_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT9_STS_INTERRUPT_IS_NOT_SET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT9_STS_INTERRUPT_IS_NOT_SET_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT9_STS_INTERRUPT_IS_SET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT8_STS_INTERRUPT_IS_NOT_SET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT8_STS_INTERRUPT_IS_NOT_SET_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT8_STS_INTERRUPT_IS_SET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT7_STS_INTERRUPT_IS_NOT_SET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT7_STS_INTERRUPT_IS_NOT_SET_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT7_STS_INTERRUPT_IS_SET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT6_STS_INTERRUPT_IS_NOT_SET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT6_STS_INTERRUPT_IS_NOT_SET_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT6_STS_INTERRUPT_IS_SET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT5_STS_INTERRUPT_IS_NOT_SET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT5_STS_INTERRUPT_IS_NOT_SET_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT5_STS_INTERRUPT_IS_SET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT4_STS_INTERRUPT_IS_NOT_SET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT4_STS_INTERRUPT_IS_NOT_SET_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT4_STS_INTERRUPT_IS_SET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT3_STS_INTERRUPT_IS_NOT_SET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT3_STS_INTERRUPT_IS_NOT_SET_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT3_STS_INTERRUPT_IS_SET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT2_STS_INTERRUPT_IS_NOT_SET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT2_STS_INTERRUPT_IS_NOT_SET_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT2_STS_INTERRUPT_IS_SET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT1_STS_INTERRUPT_CLEARED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT1_STS_INTERRUPT_CLEARED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT0_STS_INTERRUPT_CLEARED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_CTRL_INT0_STS_INTERRUPT_CLEARED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_INT_CTRL_OFFSET ( 0x00000008 ) + +#define RUNNER_REGS_0_CFG_INT_CTRL_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_INT_CTRL_OFFSET ) +#define RUNNER_REGS_0_CFG_INT_CTRL_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_INT_CTRL_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_INT_CTRL_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_INT_CTRL_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_INT_CTRL_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_INT_CTRL_OFFSET ) +#define RUNNER_REGS_1_CFG_INT_CTRL_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_INT_CTRL_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_INT_CTRL_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_INT_CTRL_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_INT_CTRL_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_INT_CTRL_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_INT_CTRL_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_INT_CTRL_READ( i, r ) READ_32( RUNNER_REGS_CFG_INT_CTRL_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt9_status */ + uint32_t int9_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt8_status */ + uint32_t int8_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt7_status */ + uint32_t int7_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt6_status */ + uint32_t int6_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt5_status */ + uint32_t int5_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt4_status */ + uint32_t int4_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt3_status */ + uint32_t int3_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt2_status */ + uint32_t int2_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_1_status */ + uint32_t int1_sts : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_0_status */ + uint32_t int0_sts : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_INT_CTRL ; +#else +typedef struct +{ uint32_t int0_sts : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_0_status */ + uint32_t int1_sts : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_1_status */ + uint32_t int2_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt2_status */ + uint32_t int3_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt3_status */ + uint32_t int4_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt4_status */ + uint32_t int5_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt5_status */ + uint32_t int6_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt6_status */ + uint32_t int7_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt7_status */ + uint32_t int8_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt8_status */ + uint32_t int9_sts : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt9_status */ + uint32_t reserved0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_INT_CTRL ; +#endif + +/*****************************************************************************************/ +/* Interrupt_Mask */ +/* Interrupt mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_INT_MASK_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT9_MASK_INTERRUPT_MASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT9_MASK_INTERRUPT_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT8_MASK_INTERRUPT_MASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT8_MASK_INTERRUPT_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT7_MASK_INTERRUPT_MASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT7_MASK_INTERRUPT_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT6_MASK_INTERRUPT_MASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT6_MASK_INTERRUPT_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT5_MASK_INTERRUPT_MASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT5_MASK_INTERRUPT_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT4_MASK_INTERRUPT_MASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT4_MASK_INTERRUPT_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT3_MASK_INTERRUPT_MASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT3_MASK_INTERRUPT_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT2_MASK_INTERRUPT_MASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT2_MASK_INTERRUPT_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT1_MASK_INTERRUPT_MASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT1_MASK_INTERRUPT_MASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT0_MASK_INTERRUPT_MASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_INT_MASK_INT0_MASK_INTERRUPT_MASK_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_INT_MASK_OFFSET ( 0x0000000C ) + +#define RUNNER_REGS_0_CFG_INT_MASK_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_INT_MASK_OFFSET ) +#define RUNNER_REGS_0_CFG_INT_MASK_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_INT_MASK_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_INT_MASK_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_INT_MASK_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_INT_MASK_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_INT_MASK_OFFSET ) +#define RUNNER_REGS_1_CFG_INT_MASK_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_INT_MASK_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_INT_MASK_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_INT_MASK_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_INT_MASK_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_INT_MASK_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_INT_MASK_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_INT_MASK_READ( i, r ) READ_32( RUNNER_REGS_CFG_INT_MASK_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_9_mask */ + uint32_t int9_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_8_mask */ + uint32_t int8_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Inerrupt_7_mask */ + uint32_t int7_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_6_mask */ + uint32_t int6_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_5_mask */ + uint32_t int5_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_4_mask */ + uint32_t int4_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_3_mask */ + uint32_t int3_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_2_mask */ + uint32_t int2_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_1_mask */ + uint32_t int1_mask : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_0_mask */ + uint32_t int0_mask : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_INT_MASK ; +#else +typedef struct +{ uint32_t int0_mask : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_0_mask */ + uint32_t int1_mask : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_1_mask */ + uint32_t int2_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_2_mask */ + uint32_t int3_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_3_mask */ + uint32_t int4_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_4_mask */ + uint32_t int5_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_5_mask */ + uint32_t int6_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_6_mask */ + uint32_t int7_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Inerrupt_7_mask */ + uint32_t int8_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_8_mask */ + uint32_t int9_mask : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_9_mask */ + uint32_t reserved0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_INT_MASK ; +#endif + +/*****************************************************************************************/ +/* Look-up_table_Configuration */ +/* Look-up table Configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP0_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEP_1_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEP_1_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEPS_2_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEPS_4_VALUE ( 0x2 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEPS_8_VALUE ( 0x3 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEPS_16_VALUE ( 0x4 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEPS_32_VALUE ( 0x5 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEPS_64_VALUE ( 0x6 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEPS_128_VALUE ( 0x7 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEPS_256_VALUE ( 0x8 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEPS_512_VALUE ( 0x9 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_STEPS_1K_VALUE ( 0xA ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define RUNNER_REGS_CFG_LKUP0_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define RUNNER_REGS_CFG_LKUP0_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_TABLE_SIZE_ENTRIES_32_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_TABLE_SIZE_ENTRIES_32_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_TABLE_SIZE_ENTRIES_64_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_TABLE_SIZE_ENTRIES_128_VALUE ( 0x2 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_TABLE_SIZE_ENTRIES_256_VALUE ( 0x3 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_TABLE_SIZE_ENTRIES_512_VALUE ( 0x4 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_TABLE_SIZE_ENTRIES_1K_VALUE ( 0x5 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_TABLE_SIZE_ENTRIES_2K_VALUE ( 0x6 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_TABLE_SIZE_ENTRIES_4K_VALUE ( 0x7 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_LKUP0_CFG_OFFSET ( 0x00000010 ) + +#define RUNNER_REGS_0_CFG_LKUP0_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP0_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP0_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP0_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP0_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP0_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP0_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP0_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP0_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP0_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP0_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP0_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP0_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP0_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP0_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP0_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP0_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP0_CFG ; +#else +typedef struct +{ uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t r1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t reserved1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP0_CFG ; +#endif + +/*****************************************************************************************/ +/* Look-up_table_Configuration */ +/* Look-up table Configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP1_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEP_1_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEP_1_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEPS_2_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEPS_4_VALUE ( 0x2 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEPS_8_VALUE ( 0x3 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEPS_16_VALUE ( 0x4 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEPS_32_VALUE ( 0x5 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEPS_64_VALUE ( 0x6 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEPS_128_VALUE ( 0x7 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEPS_256_VALUE ( 0x8 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEPS_512_VALUE ( 0x9 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_STEPS_1K_VALUE ( 0xA ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define RUNNER_REGS_CFG_LKUP1_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define RUNNER_REGS_CFG_LKUP1_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_TABLE_SIZE_ENTRIES_32_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_TABLE_SIZE_ENTRIES_32_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_TABLE_SIZE_ENTRIES_64_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_TABLE_SIZE_ENTRIES_128_VALUE ( 0x2 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_TABLE_SIZE_ENTRIES_256_VALUE ( 0x3 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_TABLE_SIZE_ENTRIES_512_VALUE ( 0x4 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_TABLE_SIZE_ENTRIES_1K_VALUE ( 0x5 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_TABLE_SIZE_ENTRIES_2K_VALUE ( 0x6 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_TABLE_SIZE_ENTRIES_4K_VALUE ( 0x7 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_LKUP1_CFG_OFFSET ( 0x00000014 ) + +#define RUNNER_REGS_0_CFG_LKUP1_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP1_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP1_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP1_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP1_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP1_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP1_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP1_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP1_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP1_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP1_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP1_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP1_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP1_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP1_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP1_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP1_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP1_CFG ; +#else +typedef struct +{ uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t reserved1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP1_CFG ; +#endif + +/*****************************************************************************************/ +/* Look-up_table_Configuration */ +/* Look-up table Configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP2_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEP_1_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEP_1_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEPS_2_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEPS_4_VALUE ( 0x2 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEPS_8_VALUE ( 0x3 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEPS_16_VALUE ( 0x4 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEPS_32_VALUE ( 0x5 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEPS_64_VALUE ( 0x6 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEPS_128_VALUE ( 0x7 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEPS_256_VALUE ( 0x8 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEPS_512_VALUE ( 0x9 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_STEPS_1K_VALUE ( 0xA ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define RUNNER_REGS_CFG_LKUP2_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define RUNNER_REGS_CFG_LKUP2_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_TABLE_SIZE_ENTRIES_32_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_TABLE_SIZE_ENTRIES_32_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_TABLE_SIZE_ENTRIES_64_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_TABLE_SIZE_ENTRIES_128_VALUE ( 0x2 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_TABLE_SIZE_ENTRIES_256_VALUE ( 0x3 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_TABLE_SIZE_ENTRIES_512_VALUE ( 0x4 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_TABLE_SIZE_ENTRIES_1K_VALUE ( 0x5 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_TABLE_SIZE_ENTRIES_2K_VALUE ( 0x6 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_TABLE_SIZE_ENTRIES_4K_VALUE ( 0x7 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_LKUP2_CFG_OFFSET ( 0x00000018 ) + +#define RUNNER_REGS_0_CFG_LKUP2_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP2_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP2_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP2_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP2_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP2_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP2_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP2_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP2_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP2_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP2_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP2_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP2_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP2_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP2_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP2_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP2_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP2_CFG ; +#else +typedef struct +{ uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t reserved1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP2_CFG ; +#endif + +/*****************************************************************************************/ +/* Look-up_table_Configuration */ +/* Look-up table Configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP3_CFG_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEP_1_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEP_1_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEPS_2_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEPS_4_VALUE ( 0x2 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEPS_8_VALUE ( 0x3 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEPS_16_VALUE ( 0x4 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEPS_32_VALUE ( 0x5 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEPS_64_VALUE ( 0x6 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEPS_128_VALUE ( 0x7 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEPS_256_VALUE ( 0x8 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEPS_512_VALUE ( 0x9 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_STEPS_1K_VALUE ( 0xA ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_RESERVED0_VALUE ( 0xB ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_RESERVED1_VALUE ( 0xC ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_RESERVED2_VALUE ( 0xD ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_RESERVED3_VALUE ( 0xE ) +#define RUNNER_REGS_CFG_LKUP3_CFG_MAX_HOP_RESERVED4_VALUE ( 0xF ) +#define RUNNER_REGS_CFG_LKUP3_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_HASH_TYPE_CRC16_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_TABLE_SIZE_ENTRIES_32_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_TABLE_SIZE_ENTRIES_32_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_TABLE_SIZE_ENTRIES_64_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_TABLE_SIZE_ENTRIES_128_VALUE ( 0x2 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_TABLE_SIZE_ENTRIES_256_VALUE ( 0x3 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_TABLE_SIZE_ENTRIES_512_VALUE ( 0x4 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_TABLE_SIZE_ENTRIES_1K_VALUE ( 0x5 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_TABLE_SIZE_ENTRIES_2K_VALUE ( 0x6 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_TABLE_SIZE_ENTRIES_4K_VALUE ( 0x7 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_LKUP3_CFG_OFFSET ( 0x0000001C ) + +#define RUNNER_REGS_0_CFG_LKUP3_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP3_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP3_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP3_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP3_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP3_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP3_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP3_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP3_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP3_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP3_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP3_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP3_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP3_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP3_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP3_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP3_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP3_CFG ; +#else +typedef struct +{ uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_base_address */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t table_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Table_Size */ + uint32_t hash_type : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Hash_Type */ + uint32_t max_hop : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Hop */ + uint32_t reserved1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP3_CFG ; +#endif + +/*****************************************************************************************/ +/* Look-up_table_CAM_configuration */ +/* Look-up table CAM configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_OFFSET ( 0x00000020 ) + +#define RUNNER_REGS_0_CFG_LKUP0_CAM_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP0_CAM_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP0_CAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP0_CAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP0_CAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP0_CAM_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP0_CAM_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP0_CAM_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP0_CAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP0_CAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP0_CAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP0_CAM_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP0_CAM_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP0_CAM_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP0_CAM_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP0_CAM_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP0_CAM_CFG ; +#else +typedef struct +{ uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP0_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* Look-up_table_CAM_configuration */ +/* Look-up table CAM configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_OFFSET ( 0x00000024 ) + +#define RUNNER_REGS_0_CFG_LKUP1_CAM_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP1_CAM_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP1_CAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP1_CAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP1_CAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP1_CAM_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP1_CAM_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP1_CAM_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP1_CAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP1_CAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP1_CAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP1_CAM_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP1_CAM_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP1_CAM_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP1_CAM_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP1_CAM_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP1_CAM_CFG ; +#else +typedef struct +{ uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP1_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* Look-up_table_CAM_configuration */ +/* Look-up table CAM configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_OFFSET ( 0x00000028 ) + +#define RUNNER_REGS_0_CFG_LKUP2_CAM_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP2_CAM_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP2_CAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP2_CAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP2_CAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP2_CAM_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP2_CAM_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP2_CAM_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP2_CAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP2_CAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP2_CAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP2_CAM_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP2_CAM_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP2_CAM_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP2_CAM_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP2_CAM_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP2_CAM_CFG ; +#else +typedef struct +{ uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP2_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* Look-up_table_CAM_configuration */ +/* Look-up table CAM configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_RESREVED1_RESREVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_RESREVED1_RESREVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_CAM_EN_CAM_DISABLED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_CAM_EN_CAM_ENABLED_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_OFFSET ( 0x0000002C ) + +#define RUNNER_REGS_0_CFG_LKUP3_CAM_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP3_CAM_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP3_CAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP3_CAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP3_CAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP3_CAM_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP3_CAM_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP3_CAM_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP3_CAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP3_CAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP3_CAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP3_CAM_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP3_CAM_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP3_CAM_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP3_CAM_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP3_CAM_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Resreved */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP3_CAM_CFG ; +#else +typedef struct +{ uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t reserved0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t cam_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_enable */ + uint32_t resreved1 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Resreved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP3_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* PSRAM_config_Register */ +/* PSRAM config Register. Contains configurations such as buffer size and ddr base addre */ +/* ss that are used for PSRAM address calculations (from buffer number) when DMA instruc */ +/* tion addr_calc flag is set. */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PSRAM_CFG_RSERVED2_RSERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_RSERVED2_RSERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_DMA_BASE_DEFAULT_VALUE ( 0x30 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_DMA_BASE_DEFAULT_VALUE_RESET_VALUE ( 0x30 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_BUFFER_SIZE_BUFFER_SIZE_2K_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_BUFFER_SIZE_BUFFER_SIZE_2K_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_BUFFER_SIZE_BUFFER_SIZE_4K_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_BUFFER_SIZE_BUFFER_SIZE_16K_VALUE ( 0x2 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_BUFFER_SIZE_BUFFER_SIZE_128BYTE_VALUE ( 0x3 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_RSERVED1_RSERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_RSERVED1_RSERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_BUFFER_OFFSET_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_CFG_BUFFER_OFFSET_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PSRAM_CFG_OFFSET ( 0x00000030 ) + +#define RUNNER_REGS_0_CFG_PSRAM_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PSRAM_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_PSRAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PSRAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PSRAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PSRAM_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PSRAM_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PSRAM_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_PSRAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PSRAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PSRAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PSRAM_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PSRAM_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PSRAM_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PSRAM_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PSRAM_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_PSRAM_CFG_ARRAY [ i ], (r) ) + +#ifdef CONFIG_BCM6848 +/* XXX: Please apply this change to DSL platforms if start using PSRAM for DSL */ +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Rserved */ + uint32_t rserved2 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* New Address calc */ + uint32_t new_address_calc : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_base_address */ + uint32_t dma_base : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_size */ + uint32_t buffer_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ + uint32_t rserved1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_Offset */ + uint32_t buffer_offset : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_CFG ; +#else +typedef struct +{ + /* Buffer_Offset */ + uint32_t buffer_offset : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ + uint32_t rserved1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_size */ + uint32_t buffer_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_base_address */ + uint32_t dma_base : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* New Address calc */ + uint32_t new_address_calc : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ + uint32_t rserved2 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_CFG ; +#endif +#else +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Rserved */ + uint32_t rserved2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_base_address */ + uint32_t dma_base : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_size */ + uint32_t buffer_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ + uint32_t rserved1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_Offset */ + uint32_t buffer_offset : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_CFG ; +#else +typedef struct +{ uint32_t buffer_offset : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_Offset */ + uint32_t rserved1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ + uint32_t buffer_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_size */ + uint32_t dma_base : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_base_address */ + uint32_t rserved2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_CFG ; +#endif +#endif + +/*****************************************************************************************/ +/* CAM_configuration */ +/* CAM configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_CAM_CFG_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CAM_CFG_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CAM_CFG_STOP_VALUE_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CAM_CFG_STOP_VALUE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_CAM_CFG_OFFSET ( 0x00000034 ) + +#define RUNNER_REGS_0_CFG_CAM_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_CAM_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_CAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_CAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_CAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_CAM_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_CAM_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_CAM_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_CAM_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_CAM_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_CAM_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_CAM_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_CAM_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_CAM_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_CAM_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_CAM_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_CAM_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserevd */ + uint32_t reserved0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Stop_Value */ + uint32_t stop_value : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_CAM_CFG ; +#else +typedef struct +{ uint32_t stop_value : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Stop_Value */ + uint32_t reserved0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserevd */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_CAM_CFG ; +#endif + +/*****************************************************************************************/ +/* Counters_Configuration */ +/* Counters Configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_CNTR_CFG_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CNTR_CFG_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CNTR_CFG_BASE_ADDRESS_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CNTR_CFG_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_CNTR_CFG_OFFSET ( 0x00000038 ) + +#define RUNNER_REGS_0_CFG_CNTR_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_CNTR_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_CNTR_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_CNTR_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_CNTR_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_CNTR_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_CNTR_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_CNTR_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_CNTR_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_CNTR_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_CNTR_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_CNTR_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_CNTR_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_CNTR_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_CNTR_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_CNTR_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_CNTR_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved0 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_CNTR_CFG ; +#else +typedef struct +{ uint32_t base_address : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Base_Address */ + uint32_t reserved0 : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_CNTR_CFG ; +#endif + +/*****************************************************************************************/ +/* DDR_config_Register */ +/* DDR config Register. Contains configurations such as buffer size and ddr base address */ +/* that are used for DDR address calculations (from buffer number) when DMA instruction */ +/* addr_calc flag is set. */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_DDR_CFG_RSERVED2_RSERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_CFG_RSERVED2_RSERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_CFG_DMA_BASE_DEFAULT_VALUE ( 0x30 ) +#define RUNNER_REGS_CFG_DDR_CFG_DMA_BASE_DEFAULT_VALUE_RESET_VALUE ( 0x30 ) +#define RUNNER_REGS_CFG_DDR_CFG_BUFFER_SIZE_BUFFER_SIZE_2K_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_CFG_BUFFER_SIZE_BUFFER_SIZE_2K_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_CFG_BUFFER_SIZE_BUFFER_SIZE_4K_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_DDR_CFG_BUFFER_SIZE_BUFFER_SIZE_16K_VALUE ( 0x2 ) +#define RUNNER_REGS_CFG_DDR_CFG_BUFFER_SIZE_RESERVED_VALUE ( 0x3 ) +#define RUNNER_REGS_CFG_DDR_CFG_RSERVED1_RSERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_CFG_RSERVED1_RSERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_CFG_BUFFER_OFFSET_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_CFG_BUFFER_OFFSET_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_DDR_CFG_OFFSET ( 0x0000003C ) + +#define RUNNER_REGS_0_CFG_DDR_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_DDR_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_DDR_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_DDR_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_DDR_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_DDR_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_DDR_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_DDR_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_DDR_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_DDR_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_DDR_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_DDR_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_DDR_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_DDR_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_DDR_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_DDR_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_DDR_CFG_ARRAY [ i ], (r) ) + +#if defined(CONFIG_BCM6848) || defined(DSL_63138) +/* XXX: Please apply this change to DSL platforms if start using PSRAM for DSL */ +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Rserved */ + uint32_t rserved2 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* New Address calc */ + uint32_t new_address_calc : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_base_address */ + uint32_t dma_base : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_size */ + uint32_t buffer_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ + uint32_t rserved1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_Offset */ + uint32_t buffer_offset : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_CFG ; +#else +typedef struct +{ uint32_t buffer_offset : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_Offset */ + uint32_t rserved1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ + uint32_t buffer_size : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_size */ + uint32_t dma_base : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* New Address calc */ + uint32_t new_address_calc : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ + uint32_t rserved2 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_CFG ; +#endif +#else +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Rserved */ + uint32_t rserved2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_base_address */ + uint32_t dma_base : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_size */ + uint32_t buffer_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ + uint32_t rserved1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_Offset */ + uint32_t buffer_offset : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_CFG ; +#else +typedef struct +{ uint32_t buffer_offset : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_Offset */ + uint32_t rserved1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ + uint32_t buffer_size : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Buffer_size */ + uint32_t dma_base : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DMA_base_address */ + uint32_t rserved2 : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Rserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_CFG ; +#endif +#endif + +/*****************************************************************************************/ +/* Semaphore_Status_and_Control */ +/* This register is used for taking and releasing the Semaphores 0-3 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RESERVED3_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RESERVED3_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RELEASE3_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RELEASE3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS3_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS3_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS3_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RESERVED2_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RESERVED2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RELEASE2_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RELEASE2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS2_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS2_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS2_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RELEASE1_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RELEASE1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS1_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS1_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS1_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RELEASE0_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_RELEASE0_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS0_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS0_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_STATUS0_OWNERSHIP_TAKEN_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_OFFSET ( 0x00000040 ) + +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_0_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_OFFSET ) +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_0_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_0_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_0_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_0_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_0_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_OFFSET ) +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_0_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_0_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_0_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_0_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_READ( i, r ) READ_32( RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_3_Release_Request */ + uint32_t release3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_3_Status */ + uint32_t status3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_2_Release_Request */ + uint32_t release2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_2_Status */ + uint32_t status2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_1_Release_Request */ + uint32_t release1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_1_Status */ + uint32_t status1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved_for_eco */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_0_Release_Request */ + uint32_t release0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_0_Status */ + uint32_t status0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0 ; +#else +typedef struct +{ uint32_t status0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_0_Status */ + uint32_t release0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_0_Release_Request */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved_for_eco */ + uint32_t status1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_1_Status */ + uint32_t release1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_1_Release_Request */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_2_Status */ + uint32_t release2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_2_Release_Request */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_3_Status */ + uint32_t release3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_3_Release_Request */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0 ; +#endif + +/*****************************************************************************************/ +/* Semaphore_Status_and_Control */ +/* This register is used for taking and releasing the Semaphores 4-7 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RESERVED3_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RESERVED3_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RELEASE7_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RELEASE7_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS7_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS7_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS7_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RESERVED2_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RESERVED2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RELEASE6_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RELEASE6_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS6_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS6_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS6_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RELEASE5_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RELEASE5_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS5_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS5_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS5_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RELEASE4_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_RELEASE4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS4_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS4_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_STATUS4_OWNERSHIP_TAKEN_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_OFFSET ( 0x00000044 ) + +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_OFFSET ) +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_OFFSET ) +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_READ( i, r ) READ_32( RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7Release_Request */ + uint32_t release7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7_Status */ + uint32_t status7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Release_Request */ + uint32_t release6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Status */ + uint32_t status6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Release_Request */ + uint32_t release5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Status */ + uint32_t status5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Release_Request */ + uint32_t release4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Status */ + uint32_t status4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1 ; +#else +typedef struct +{ uint32_t status4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Status */ + uint32_t release4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Release_Request */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Status */ + uint32_t release5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Release_Request */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Status */ + uint32_t release6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Release_Request */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7_Status */ + uint32_t release7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7Release_Request */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1 ; +#endif + +/*****************************************************************************************/ +/* Semaphore_Status_and_Control */ +/* This register is used for taking and releasing the Semaphores 8-11 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RESERVED3_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RESERVED3_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RELEASE11_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RELEASE11_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS11_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS11_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS11_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RESERVED2_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RESERVED2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RELEASE10_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RELEASE10_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS10_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS10_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS10_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RELEASE9_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RELEASE9_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS9_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS9_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS9_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RELEASE8_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_RELEASE8_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS8_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS8_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_STATUS8_OWNERSHIP_TAKEN_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_OFFSET ( 0x00000048 ) + +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_2_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_OFFSET ) +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_2_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_2_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_2_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_2_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_2_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_OFFSET ) +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_2_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_2_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_2_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_2_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_READ( i, r ) READ_32( RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_11_Release_Request */ + uint32_t release11 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_11_Status */ + uint32_t status11 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_10_Release_Request */ + uint32_t release10 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_10_Status */ + uint32_t status10 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_9_Release_Request */ + uint32_t release9 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_9_Status */ + uint32_t status9 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_8_Release_Request */ + uint32_t release8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_8_Status */ + uint32_t status8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2 ; +#else +typedef struct +{ uint32_t status8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_8_Status */ + uint32_t release8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_8_Release_Request */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status9 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_9_Status */ + uint32_t release9 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_9_Release_Request */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status10 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_10_Status */ + uint32_t release10 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_10_Release_Request */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status11 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_11_Status */ + uint32_t release11 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_11_Release_Request */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2 ; +#endif + +/*****************************************************************************************/ +/* Semaphore_Status_and_Control */ +/* This register is used for taking and releasing the Semaphores 12-15 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RESERVED3_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RESERVED3_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RELEASE7_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RELEASE7_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS7_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS7_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS7_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RESERVED2_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RESERVED2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RELEASE6_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RELEASE6_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS6_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS6_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS6_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RELEASE5_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RELEASE5_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS5_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS5_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS5_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RELEASE4_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_RELEASE4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS4_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS4_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_STATUS4_OWNERSHIP_TAKEN_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_OFFSET ( 0x0000004C ) + +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_3_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_OFFSET ) +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_3_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_3_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_3_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MIPSC_SEMAPHOR_STS_3_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_3_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_OFFSET ) +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_3_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_3_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_3_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MIPSC_SEMAPHOR_STS_3_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_READ( i, r ) READ_32( RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7Release_Request */ + uint32_t release7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7_Status */ + uint32_t status7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Release_Request */ + uint32_t release6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Status */ + uint32_t status6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Release_Request */ + uint32_t release5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Status */ + uint32_t status5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Release_Request */ + uint32_t release4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Status */ + uint32_t status4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3 ; +#else +typedef struct +{ uint32_t status4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Status */ + uint32_t release4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Release_Request */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Status */ + uint32_t release5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Release_Request */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Status */ + uint32_t release6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Release_Request */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7_Status */ + uint32_t release7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7Release_Request */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3 ; +#endif + +/*****************************************************************************************/ +/* DDR_look-up_Global_Mask */ +/* DDR look-up Global Mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK0_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK0_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK0_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK0_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK0_OFFSET ( 0x00000050 ) + +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK0_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_DDR_LKUP_MASK0_OFFSET ) +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK0_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_DDR_LKUP_MASK0_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK0_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_DDR_LKUP_MASK0_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK0_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_DDR_LKUP_MASK0_OFFSET ) +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK0_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_DDR_LKUP_MASK0_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK0_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_DDR_LKUP_MASK0_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_DDR_LKUP_MASK0_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK0_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_DDR_LKUP_MASK0_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK0_READ( i, r ) READ_32( RUNNER_REGS_CFG_DDR_LKUP_MASK0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved0 */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_LKUP_MASK0 ; +#else +typedef struct +{ uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved0 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_LKUP_MASK0 ; +#endif + +/*****************************************************************************************/ +/* DDR_look-up_Global_Mask */ +/* DDR look-up Global Mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK1_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK1_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK1_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK1_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK1_OFFSET ( 0x00000054 ) + +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_DDR_LKUP_MASK1_OFFSET ) +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_DDR_LKUP_MASK1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_DDR_LKUP_MASK1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_DDR_LKUP_MASK1_OFFSET ) +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_DDR_LKUP_MASK1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_DDR_LKUP_MASK1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_DDR_LKUP_MASK1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_DDR_LKUP_MASK1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK1_READ( i, r ) READ_32( RUNNER_REGS_CFG_DDR_LKUP_MASK1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved0 */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_LKUP_MASK1 ; +#else +typedef struct +{ uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved0 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_LKUP_MASK1 ; +#endif + +/*****************************************************************************************/ +/* DDR_look-up_Global_Mask */ +/* DDR look-up Global Mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK2_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK2_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK2_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK2_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK2_OFFSET ( 0x00000058 ) + +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK2_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_DDR_LKUP_MASK2_OFFSET ) +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK2_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_DDR_LKUP_MASK2_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK2_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_DDR_LKUP_MASK2_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK2_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_DDR_LKUP_MASK2_OFFSET ) +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK2_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_DDR_LKUP_MASK2_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK2_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_DDR_LKUP_MASK2_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_DDR_LKUP_MASK2_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK2_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_DDR_LKUP_MASK2_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK2_READ( i, r ) READ_32( RUNNER_REGS_CFG_DDR_LKUP_MASK2_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved0 */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_LKUP_MASK2 ; +#else +typedef struct +{ uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved0 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_LKUP_MASK2 ; +#endif + +/*****************************************************************************************/ +/* DDR_look-up_Global_Mask */ +/* DDR look-up Global Mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK3_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK3_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK3_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK3_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK3_OFFSET ( 0x0000005C ) + +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK3_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_DDR_LKUP_MASK3_OFFSET ) +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK3_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_DDR_LKUP_MASK3_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_DDR_LKUP_MASK3_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_DDR_LKUP_MASK3_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK3_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_DDR_LKUP_MASK3_OFFSET ) +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK3_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_DDR_LKUP_MASK3_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_DDR_LKUP_MASK3_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_DDR_LKUP_MASK3_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_DDR_LKUP_MASK3_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_DDR_LKUP_MASK3_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_DDR_LKUP_MASK3_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_DDR_LKUP_MASK3_READ( i, r ) READ_32( RUNNER_REGS_CFG_DDR_LKUP_MASK3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved0 */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_LKUP_MASK3 ; +#else +typedef struct +{ uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved0 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_DDR_LKUP_MASK3 ; +#endif + +/*****************************************************************************************/ +/* PSRAM_look-up_Global_Mask */ +/* PSRAM look-up Global Mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_OFFSET ( 0x00000060 ) + +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK0_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_OFFSET ) +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK0_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK0_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK0_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK0_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK0_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_OFFSET ) +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK0_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK0_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK0_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK0_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_READ( i, r ) READ_32( RUNNER_REGS_CFG_PSRAM_LKUP_MASK0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved0 */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_LKUP_MASK0 ; +#else +typedef struct +{ uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved0 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_LKUP_MASK0 ; +#endif + +/*****************************************************************************************/ +/* PSRAM_look-up_Global_Mask */ +/* PSRAM look-up Global Mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_OFFSET ( 0x00000064 ) + +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_OFFSET ) +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_OFFSET ) +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_READ( i, r ) READ_32( RUNNER_REGS_CFG_PSRAM_LKUP_MASK1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved0 */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_LKUP_MASK1 ; +#else +typedef struct +{ uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved0 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_LKUP_MASK1 ; +#endif + +/*****************************************************************************************/ +/* PSRAM_look-up_Global_Mask */ +/* PSRAM look-up Global Mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_OFFSET ( 0x00000068 ) + +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK2_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_OFFSET ) +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK2_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK2_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK2_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK2_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK2_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_OFFSET ) +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK2_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK2_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK2_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK2_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_READ( i, r ) READ_32( RUNNER_REGS_CFG_PSRAM_LKUP_MASK2_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved0 */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_LKUP_MASK2 ; +#else +typedef struct +{ uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved0 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_LKUP_MASK2 ; +#endif + +/*****************************************************************************************/ +/* PSRAM_look-up_Global_Mask */ +/* PSRAM look-up Global Mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_GLOBAL_MASK_KEY_5_TUPLE_KEY_DEFAULT_VALUE_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_OFFSET ( 0x0000006C ) + +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK3_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_OFFSET ) +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK3_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK3_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK3_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PSRAM_LKUP_MASK3_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK3_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_OFFSET ) +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK3_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK3_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK3_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PSRAM_LKUP_MASK3_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_READ( i, r ) READ_32( RUNNER_REGS_CFG_PSRAM_LKUP_MASK3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved0 */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_LKUP_MASK3 ; +#else +typedef struct +{ uint32_t global_mask : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Mask */ + uint32_t reserved0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved0 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PSRAM_LKUP_MASK3 ; +#endif + +/*****************************************************************************************/ +/* Look-up_global_mask */ +/* Look-up global mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_BASE_ADDRESS_DEFAULT_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_OFFSET ( 0x00000070 ) + +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK0_H_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK0_H_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK0_H_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK0_H_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK0_H_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK0_H_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK0_H_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK0_H_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK0_H_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK0_H_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_H */ + uint32_t base_address : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H ; +#else +typedef struct +{ uint32_t base_address : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_H */ + uint32_t reserved1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H ; +#endif + +/*****************************************************************************************/ +/* Look-up_global_mask */ +/* Look-up global mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L_BASE_ADDRESS_DEFAULT_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L_OFFSET ( 0x00000074 ) + +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK0_L_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK0_L_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK0_L_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK0_L_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK0_L_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK0_L_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK0_L_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK0_L_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK0_L_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK0_L_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Global_mask_L */ + uint32_t base_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L ; +#else +typedef struct +{ uint32_t base_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_L */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L ; +#endif + +/*****************************************************************************************/ +/* Look-up_global_mask */ +/* Look-up global mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_BASE_ADDRESS_DEFAULT_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_OFFSET ( 0x00000078 ) + +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK1_H_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK1_H_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK1_H_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK1_H_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK1_H_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK1_H_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK1_H_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK1_H_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK1_H_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK1_H_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_H */ + uint32_t base_address : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H ; +#else +typedef struct +{ uint32_t base_address : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_H */ + uint32_t reserved1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H ; +#endif + +/*****************************************************************************************/ +/* Look-up_global_mask */ +/* Look-up global mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L_BASE_ADDRESS_DEFAULT_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L_OFFSET ( 0x0000007C ) + +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK1_L_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK1_L_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK1_L_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK1_L_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK1_L_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK1_L_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK1_L_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK1_L_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK1_L_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK1_L_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Global_mask_L */ + uint32_t base_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L ; +#else +typedef struct +{ uint32_t base_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_L */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L ; +#endif + +/*****************************************************************************************/ +/* Look-up_global_mask */ +/* Look-up global mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_BASE_ADDRESS_DEFAULT_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_OFFSET ( 0x00000080 ) + +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK2_H_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK2_H_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK2_H_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK2_H_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK2_H_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK2_H_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK2_H_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK2_H_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK2_H_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK2_H_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_H */ + uint32_t base_address : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H ; +#else +typedef struct +{ uint32_t base_address : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_H */ + uint32_t reserved1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H ; +#endif + +/*****************************************************************************************/ +/* Look-up_global_mask */ +/* Look-up global mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L_BASE_ADDRESS_DEFAULT_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L_OFFSET ( 0x00000084 ) + +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK2_L_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK2_L_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK2_L_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK2_L_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK2_L_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK2_L_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK2_L_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK2_L_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK2_L_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK2_L_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Global_mask_L */ + uint32_t base_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L ; +#else +typedef struct +{ uint32_t base_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_L */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L ; +#endif + +/*****************************************************************************************/ +/* Look-up_global_mask */ +/* Look-up global mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_BASE_ADDRESS_DEFAULT_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_OFFSET ( 0x00000088 ) + +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK3_H_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK3_H_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK3_H_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK3_H_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK3_H_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK3_H_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK3_H_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK3_H_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK3_H_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK3_H_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_H */ + uint32_t base_address : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H ; +#else +typedef struct +{ uint32_t base_address : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_H */ + uint32_t reserved1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H ; +#endif + +/*****************************************************************************************/ +/* Look-up_global_mask */ +/* Look-up global mask */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L_BASE_ADDRESS_DEFAULT_VALUE ( 0xFF ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L_BASE_ADDRESS_DEFAULT_VALUE_RESET_VALUE ( 0xFF ) + + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L_OFFSET ( 0x0000008C ) + +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK3_L_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK3_L_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK3_L_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP_GLBL_MASK3_L_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP_GLBL_MASK3_L_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK3_L_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK3_L_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK3_L_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP_GLBL_MASK3_L_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP_GLBL_MASK3_L_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Global_mask_L */ + uint32_t base_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L ; +#else +typedef struct +{ uint32_t base_address : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_mask_L */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L ; +#endif + +/*****************************************************************************************/ +/* Look_up_configuration */ +/* Lookup hash configuration. */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_LKUP_CFG_R1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_CFG_R1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_CFG_LKUP_NVAL_CAM_SEARCH_DONT_SEARCH_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_CFG_LKUP_NVAL_CAM_SEARCH_DONT_SEARCH_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_LKUP_CFG_LKUP_NVAL_CAM_SEARCH_SEARCH_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_LKUP_CFG_OFFSET ( 0x00000090 ) + +#define RUNNER_REGS_0_CFG_LKUP_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_LKUP_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_LKUP_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_LKUP_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_LKUP_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_LKUP_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_LKUP_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_LKUP_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_LKUP_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_LKUP_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_LKUP_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_LKUP_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_LKUP_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_LKUP_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_LKUP_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_LKUP_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t r1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Lkup_nval_cam_search */ + uint32_t lkup_nval_cam_search : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_CFG ; +#else +typedef struct +{ uint32_t lkup_nval_cam_search : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Lkup_nval_cam_search */ + uint32_t r1 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_LKUP_CFG ; +#endif + +/*****************************************************************************************/ +/* Main_profiling_sts */ +/* main profiling status */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_TRACE_WRITE_PNT_TRACE_WRITE_POINTER_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_TRACE_WRITE_PNT_TRACE_WRITE_POINTER_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_RESERVED2_RESERVED2_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_RESERVED2_RESERVED2_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_PROFILING_ACTIVE_PROFILING_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_PROFILING_ACTIVE_PROFILING_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_IDLE_NO_ACTIVE_TASK_IDLE_NO_ACTIVE_TASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_IDLE_NO_ACTIVE_TASK_IDLE_NO_ACTIVE_TASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_CURR_THREAD_NUM_CURR_THREAD_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_CURR_THREAD_NUM_CURR_THREAD_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_AGU_NEXT_PC_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_AGU_NEXT_PC_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_OFFSET ( 0x000000B0 ) + +#define RUNNER_REGS_0_CFG_MAIN_PROFILING_STS_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_PROFILING_STS_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_PROFILING_STS_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_PROFILING_STS_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_PROFILING_STS_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_PROFILING_STS_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_PROFILING_STS_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_PROFILING_STS_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_PROFILING_STS_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_PROFILING_STS_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_PROFILING_STS_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_PROFILING_STS_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_PROFILING_STS_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_PROFILING_STS_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_STS_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_PROFILING_STS_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Trace_write_pointer */ + uint32_t trace_write_pnt : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved2 */ + uint32_t reserved2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Profiling_active */ + uint32_t profiling_active : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IDLE_no_active_task */ + uint32_t idle_no_active_task : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CURR_thread_num */ + uint32_t curr_thread_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved1 */ + uint32_t reserved1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* AGU_next_pc */ + uint32_t agu_next_pc : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_PROFILING_STS ; +#else +typedef struct +{ uint32_t agu_next_pc : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* AGU_next_pc */ + uint32_t reserved1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved1 */ + uint32_t curr_thread_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CURR_thread_num */ + uint32_t idle_no_active_task : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IDLE_no_active_task */ + uint32_t profiling_active : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Profiling_active */ + uint32_t reserved2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved2 */ + uint32_t trace_write_pnt : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Trace_write_pointer */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_PROFILING_STS ; +#endif + +/*****************************************************************************************/ +/* Main_profiling_cfg */ +/* main profiling confuguration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_TRACE_BASE_ADDR_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_TRACE_BASE_ADDR_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_PROF_STOP_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_PROF_STOP_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_PROF_START_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_PROF_START_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_TRACE_PC_EN_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_TRACE_PC_EN_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_PROF_TASK2_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_PROF_TASK2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_PROF_TASK1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_PROF_TASK1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_OFFSET ( 0x000000B4 ) + +#define RUNNER_REGS_0_CFG_MAIN_PROFILING_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_PROFILING_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_PROFILING_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_PROFILING_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_PROFILING_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_PROFILING_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_PROFILING_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_PROFILING_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_PROFILING_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_PROFILING_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_PROFILING_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_PROFILING_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_PROFILING_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_PROFILING_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_PROFILING_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_PROFILING_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRACE_BASE_ADDR */ + uint32_t trace_base_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_STOP */ + uint32_t prof_stop : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_START */ + uint32_t prof_start : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRACE_PC_EN */ + uint32_t trace_pc_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_TASK2 */ + uint32_t prof_task2 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_TASK1 */ + uint32_t prof_task1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_PROFILING_CFG ; +#else +typedef struct +{ uint32_t prof_task1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_TASK1 */ + uint32_t prof_task2 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_TASK2 */ + uint32_t trace_pc_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRACE_PC_EN */ + uint32_t rsv1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t prof_start : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_START */ + uint32_t prof_stop : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_STOP */ + uint32_t trace_base_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRACE_BASE_ADDR */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_PROFILING_CFG ; +#endif + +/*****************************************************************************************/ +/* Main_stall_cnt1 */ +/* main stall count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_STALL_CNT1_ACC_STALL_CNT_RESERVED1_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_STALL_CNT1_ACC_STALL_CNT_RESERVED1_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_STALL_CNT1_LD_STALL_CNT_RESERVED1_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_STALL_CNT1_LD_STALL_CNT_RESERVED1_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_STALL_CNT1_OFFSET ( 0x000000B8 ) + +#define RUNNER_REGS_0_CFG_MAIN_STALL_CNT1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_STALL_CNT1_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_STALL_CNT1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_STALL_CNT1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_STALL_CNT1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_STALL_CNT1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_STALL_CNT1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_STALL_CNT1_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_STALL_CNT1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_STALL_CNT1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_STALL_CNT1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_STALL_CNT1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_STALL_CNT1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_STALL_CNT1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_STALL_CNT1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_STALL_CNT1_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_STALL_CNT1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* ACC_STALL_CNT */ + uint32_t acc_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LD_STALL_CNT */ + uint32_t ld_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_STALL_CNT1 ; +#else +typedef struct +{ uint32_t ld_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LD_STALL_CNT */ + uint32_t acc_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACC_STALL_CNT */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_STALL_CNT1 ; +#endif + +/*****************************************************************************************/ +/* Main_stall_cnt2 */ +/* main stall count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_STALL_CNT2_STORE_STALL_CNT_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_STALL_CNT2_STORE_STALL_CNT_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_STALL_CNT2_LDIO_STALL_CNT_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_STALL_CNT2_LDIO_STALL_CNT_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_STALL_CNT2_OFFSET ( 0x000000BC ) + +#define RUNNER_REGS_0_CFG_MAIN_STALL_CNT2_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_STALL_CNT2_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_STALL_CNT2_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_STALL_CNT2_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_STALL_CNT2_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_STALL_CNT2_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_STALL_CNT2_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_STALL_CNT2_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_STALL_CNT2_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_STALL_CNT2_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_STALL_CNT2_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_STALL_CNT2_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_STALL_CNT2_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_STALL_CNT2_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_STALL_CNT2_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_STALL_CNT2_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_STALL_CNT2_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* STORE_STALL_CNT */ + uint32_t store_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LDIO_STALL_CNT */ + uint32_t ldio_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_STALL_CNT2 ; +#else +typedef struct +{ uint32_t ldio_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LDIO_STALL_CNT */ + uint32_t store_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* STORE_STALL_CNT */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_STALL_CNT2 ; +#endif + +/*****************************************************************************************/ +/* Main_task_cnt1 */ +/* main task1 count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_TASK1_CNT_TASK1_CNT_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_TASK1_CNT_TASK1_CNT_RESERVED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_TASK1_CNT_OFFSET ( 0x000000C0 ) + +#define RUNNER_REGS_0_CFG_MAIN_TASK1_CNT_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_TASK1_CNT_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_TASK1_CNT_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_TASK1_CNT_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_TASK1_CNT_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_TASK1_CNT_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_TASK1_CNT_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_TASK1_CNT_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_TASK1_CNT_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_TASK1_CNT_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_TASK1_CNT_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_TASK1_CNT_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_TASK1_CNT_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_TASK1_CNT_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_TASK1_CNT_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_TASK1_CNT_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_TASK1_CNT_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* TASK1_CNT */ + uint32_t task1_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_TASK1_CNT ; +#else +typedef struct +{ uint32_t task1_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TASK1_CNT */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_TASK1_CNT ; +#endif + +/*****************************************************************************************/ +/* Main_task_cnt2 */ +/* main task2 count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_TASK2_CNT_TASK2_CNT_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_TASK2_CNT_TASK2_CNT_RESERVED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_TASK2_CNT_OFFSET ( 0x000000C4 ) + +#define RUNNER_REGS_0_CFG_MAIN_TASK2_CNT_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_TASK2_CNT_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_TASK2_CNT_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_TASK2_CNT_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_TASK2_CNT_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_TASK2_CNT_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_TASK2_CNT_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_TASK2_CNT_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_TASK2_CNT_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_TASK2_CNT_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_TASK2_CNT_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_TASK2_CNT_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_TASK2_CNT_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_TASK2_CNT_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_TASK2_CNT_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_TASK2_CNT_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_TASK2_CNT_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* TASK2_CNT */ + uint32_t task2_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_TASK2_CNT ; +#else +typedef struct +{ uint32_t task2_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TASK2_CNT */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_TASK2_CNT ; +#endif + +/*****************************************************************************************/ +/* Main_idle_cnt1 */ +/* main idle count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_IDLE_CNT1_IDLE_CNT_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_IDLE_CNT1_IDLE_CNT_RESERVED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_IDLE_CNT1_OFFSET ( 0x000000C8 ) + +#define RUNNER_REGS_0_CFG_MAIN_IDLE_CNT1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_IDLE_CNT1_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_IDLE_CNT1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_IDLE_CNT1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_IDLE_CNT1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_IDLE_CNT1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_IDLE_CNT1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_IDLE_CNT1_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_IDLE_CNT1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_IDLE_CNT1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_IDLE_CNT1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_IDLE_CNT1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_IDLE_CNT1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_IDLE_CNT1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_IDLE_CNT1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_IDLE_CNT1_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_IDLE_CNT1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IDLE */ + uint32_t idle_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_IDLE_CNT1 ; +#else +typedef struct +{ uint32_t idle_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IDLE */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_IDLE_CNT1 ; +#endif + +/*****************************************************************************************/ +/* Version */ +/* Version register */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_VERSION_ADDR_VERSION_VERSION_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_VERSION_ADDR_VERSION_VERSION_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_VERSION_ADDR_OFFSET ( 0x000000E0 ) + +#define RUNNER_REGS_0_CFG_VERSION_ADDR_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_VERSION_ADDR_OFFSET ) +#define RUNNER_REGS_0_CFG_VERSION_ADDR_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_VERSION_ADDR_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_VERSION_ADDR_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_VERSION_ADDR_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_VERSION_ADDR_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_VERSION_ADDR_OFFSET ) +#define RUNNER_REGS_1_CFG_VERSION_ADDR_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_VERSION_ADDR_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_VERSION_ADDR_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_VERSION_ADDR_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_VERSION_ADDR_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_VERSION_ADDR_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_VERSION_ADDR_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_VERSION_ADDR_READ( i, r ) READ_32( RUNNER_REGS_CFG_VERSION_ADDR_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Version */ + uint32_t version : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_VERSION_ADDR ; +#else +typedef struct +{ uint32_t version : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Version */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_VERSION_ADDR ; +#endif + +/*****************************************************************************************/ +/* Ramrd_mask_config */ +/* Ramrd mask for range search. The register holds 2 mask that can be chosen by runner c */ +/* ore for range seraches. */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK1_MASK_VALUE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK1_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK0_MASK_VALUE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK0_MASK_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_OFFSET ( 0x000000EC ) + +#define RUNNER_REGS_0_CFG_RAMRD_RANGE_MASK_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_RAMRD_RANGE_MASK_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_RAMRD_RANGE_MASK_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_RAMRD_RANGE_MASK_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_RAMRD_RANGE_MASK_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_RAMRD_RANGE_MASK_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_RAMRD_RANGE_MASK_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_RAMRD_RANGE_MASK_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_RAMRD_RANGE_MASK_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_RAMRD_RANGE_MASK_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* MASK1 */ + uint32_t mask1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK0 */ + uint32_t mask0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG ; +#else +typedef struct +{ uint32_t mask0 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK0 */ + uint32_t mask1 : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MASK1 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG ; +#endif + +/*****************************************************************************************/ +/* Metal_fix */ +/* 32 bit register for metal fixes. */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_METAL_FIX_REG_METAL_FIX_METAL_FIX_REG_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_METAL_FIX_REG_METAL_FIX_METAL_FIX_REG_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_METAL_FIX_REG_OFFSET ( 0x000000F0 ) + +#define RUNNER_REGS_0_CFG_METAL_FIX_REG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_METAL_FIX_REG_OFFSET ) +#define RUNNER_REGS_0_CFG_METAL_FIX_REG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_METAL_FIX_REG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_METAL_FIX_REG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_METAL_FIX_REG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_METAL_FIX_REG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_METAL_FIX_REG_OFFSET ) +#define RUNNER_REGS_1_CFG_METAL_FIX_REG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_METAL_FIX_REG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_METAL_FIX_REG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_METAL_FIX_REG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_METAL_FIX_REG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_METAL_FIX_REG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_METAL_FIX_REG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_METAL_FIX_REG_READ( i, r ) READ_32( RUNNER_REGS_CFG_METAL_FIX_REG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Metal_fix */ + uint32_t metal_fix : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_METAL_FIX_REG ; +#else +typedef struct +{ uint32_t metal_fix : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Metal_fix */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_METAL_FIX_REG ; +#endif + +/*****************************************************************************************/ +/* Timer_target */ +/* Controls which timer is associated with which core */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_TIMER_TARGET_RESERVED_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_0_2_MAIN_CORE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_0_2_MAIN_CORE_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_0_2_PICO_CORE_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_1_3_MAIN_CORE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_1_3_MAIN_CORE_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_1_3_PICO_CORE_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_4_6_MAIN_CORE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_4_6_MAIN_CORE_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_4_6_PICO_CORE_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_5_7_MAIN_CORE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_5_7_MAIN_CORE_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_TIMER_TARGET_TIMER_5_7_PICO_CORE_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_TIMER_TARGET_OFFSET ( 0x000000F4 ) + +#define RUNNER_REGS_0_CFG_TIMER_TARGET_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_TIMER_TARGET_OFFSET ) +#define RUNNER_REGS_0_CFG_TIMER_TARGET_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_TIMER_TARGET_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_TIMER_TARGET_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_TIMER_TARGET_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_TIMER_TARGET_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_TIMER_TARGET_OFFSET ) +#define RUNNER_REGS_1_CFG_TIMER_TARGET_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_TIMER_TARGET_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_TIMER_TARGET_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_TIMER_TARGET_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_TIMER_TARGET_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_TIMER_TARGET_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_TIMER_TARGET_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_TIMER_TARGET_READ( i, r ) READ_32( RUNNER_REGS_CFG_TIMER_TARGET_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Timer_0_2 */ + uint32_t timer_0_2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Timer_1_3 */ + uint32_t timer_1_3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Timer_4_6 */ + uint32_t timer_4_6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Timer_5_7 */ + uint32_t timer_5_7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_TIMER_TARGET ; +#else +typedef struct +{ uint32_t timer_5_7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Timer_5_7 */ + uint32_t timer_4_6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Timer_4_6 */ + uint32_t timer_1_3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Timer_1_3 */ + uint32_t timer_0_2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Timer_0_2 */ + uint32_t reserved : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_TIMER_TARGET ; +#endif + +/*****************************************************************************************/ +/* Scheduler_main_config */ +/* Main scheduler configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_RESERVED_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_RESERVED_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_ARB_CLASS_USE_STRICT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_ARB_CLASS_USE_STRICT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_ARB_CLASS_USE_RR_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_USE_CLASS_B_DONT_USE_CLASS_B_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_USE_CLASS_B_DONT_USE_CLASS_B_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_USE_CLASS_B_USE_CLASS_B_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_USE_CLASS_A_DONT_USE_CLASS_A_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_USE_CLASS_A_DONT_USE_CLASS_A_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_USE_CLASS_A_USE_CLASS_A_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_31_24_STRICT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_31_24_STRICT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_31_24_RR_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_23_16_STRICT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_23_16_STRICT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_23_16_RR_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_15_8_STIRCT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_15_8_STIRCT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_15_8_RR_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_7_0_STRICT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_7_0_STRICT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_CLASS_7_0_RR_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_OFFSET ( 0x000000F8 ) + +#define RUNNER_REGS_0_CFG_MAIN_SCH_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_SCH_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_SCH_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_SCH_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_SCH_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_SCH_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_SCH_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_SCH_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_SCH_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_SCH_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_SCH_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_SCH_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_SCH_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_SCH_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_SCH_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_SCH_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserver */ + uint32_t reserved : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* New_class_arb */ + uint32_t arb_class : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Use_class_b */ + uint32_t use_class_b : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Use_class_a */ + uint32_t use_class_a : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_31_24 */ + uint32_t class_31_24 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_23_16 */ + uint32_t class_23_16 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_15_8 */ + uint32_t class_15_8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_7_0 */ + uint32_t class_7_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_SCH_CFG ; +#else +typedef struct +{ uint32_t class_7_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_7_0 */ + uint32_t class_15_8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_15_8 */ + uint32_t class_23_16 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_23_16 */ + uint32_t class_31_24 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_31_24 */ + uint32_t use_class_a : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Use_class_a */ + uint32_t use_class_b : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Use_class_b */ + uint32_t arb_class : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* New_class_arb */ + uint32_t reserved : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserver */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_SCH_CFG ; +#endif + +/*****************************************************************************************/ +/* Scheduler_pico_config */ +/* Pico scheduler configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_SCH_CFG_RESERVED_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_RESERVED_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_ARB_CLASS_USE_STRICT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_ARB_CLASS_USE_STRICT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_ARB_CLASS_USE_RR_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_USE_CLASS_B_DONT_USE_CLASS_B_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_USE_CLASS_B_DONT_USE_CLASS_B_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_USE_CLASS_B_USE_CLASS_B_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_USE_CLASS_A_DONT_USE_CLASS_A_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_USE_CLASS_A_DONT_USE_CLASS_A_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_USE_CLASS_A_USE_CLASS_A_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_R1_RESERVE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_R1_RESERVE_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_R0_RESERVE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_R0_RESERVE_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_CLASS_15_8_STIRCT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_CLASS_15_8_STIRCT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_CLASS_15_8_RR_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_CLASS_7_0_STRICT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_CLASS_7_0_STRICT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_CLASS_7_0_RR_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_PICO_SCH_CFG_OFFSET ( 0x000000FC ) + +#define RUNNER_REGS_0_CFG_PICO_SCH_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_SCH_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_SCH_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_SCH_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_SCH_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_SCH_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_SCH_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_SCH_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_SCH_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_SCH_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_SCH_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_SCH_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_SCH_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_SCH_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_SCH_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_SCH_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_SCH_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserver */ + uint32_t reserved : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* New_class_arb */ + uint32_t arb_class : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Use_class_b */ + uint32_t use_class_b : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Use_class_a */ + uint32_t use_class_a : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* R1 */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* R0 */ + uint32_t r0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_15_8 */ + uint32_t class_15_8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_7_0 */ + uint32_t class_7_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_SCH_CFG ; +#else +typedef struct +{ uint32_t class_7_0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_7_0 */ + uint32_t class_15_8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* class_15_8 */ + uint32_t r0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* R0 */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* R1 */ + uint32_t use_class_a : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Use_class_a */ + uint32_t use_class_b : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Use_class_b */ + uint32_t arb_class : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* New_class_arb */ + uint32_t reserved : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserver */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_SCH_CFG ; +#endif + +/*****************************************************************************************/ +/* Main_bkpt_0 */ +/* main break point */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_BKPT_0_RSV_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_0_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_0_USE_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_0_USE_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_0_ENABLE_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_0_ENABLE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_0_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_0_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_0_ADDR_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_0_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_BKPT_0_OFFSET ( 0x00000110 ) + +#define RUNNER_REGS_0_CFG_MAIN_BKPT_0_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_0_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_0_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_0_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_0_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_0_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_BKPT_0_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_0_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_0_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_0_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_0_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_0_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_BKPT_0_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_BKPT_0_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_BKPT_0_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_BKPT_0_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_BKPT_0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_0 ; +#else +typedef struct +{ uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_0 ; +#endif + +/*****************************************************************************************/ +/* Main_bkpt_1 */ +/* main break point 1 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_BKPT_1_RSV_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_1_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_1_USE_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_1_USE_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_1_ENABLE_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_1_ENABLE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_1_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_1_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_1_ADDR_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_1_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_BKPT_1_OFFSET ( 0x00000114 ) + +#define RUNNER_REGS_0_CFG_MAIN_BKPT_1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_1_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_BKPT_1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_1_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_BKPT_1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_BKPT_1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_BKPT_1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_BKPT_1_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_BKPT_1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_1 ; +#else +typedef struct +{ uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_1 ; +#endif + +/*****************************************************************************************/ +/* Main_bkpt_2 */ +/* main break point 2 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_BKPT_2_RSV_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_2_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_2_USE_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_2_USE_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_2_ENABLE_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_2_ENABLE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_2_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_2_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_2_ADDR_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_2_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_BKPT_2_OFFSET ( 0x00000118 ) + +#define RUNNER_REGS_0_CFG_MAIN_BKPT_2_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_2_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_2_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_2_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_2_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_2_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_BKPT_2_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_2_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_2_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_2_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_2_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_2_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_BKPT_2_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_BKPT_2_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_BKPT_2_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_BKPT_2_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_BKPT_2_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_2 ; +#else +typedef struct +{ uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_2 ; +#endif + +/*****************************************************************************************/ +/* Main_bkpt_3 */ +/* main break point 3 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_BKPT_3_RSV_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_3_USE_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_3_USE_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_3_ENABLE_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_3_ENABLE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_3_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_3_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_3_ADDR_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_3_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_BKPT_3_OFFSET ( 0x0000011C ) + +#define RUNNER_REGS_0_CFG_MAIN_BKPT_3_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_3_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_3_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_3_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_3_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_3_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_BKPT_3_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_3_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_3_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_3_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_3_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_3_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_BKPT_3_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_BKPT_3_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_BKPT_3_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_BKPT_3_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_BKPT_3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_3 ; +#else +typedef struct +{ uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_3 ; +#endif + +/*****************************************************************************************/ +/* Main_bkpt_immediate */ +/* main break point immediate */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_BKPT_IMM_RESERVED_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_IMM_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_IMM_ENABLE_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_IMM_ENABLE_RESERVED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_BKPT_IMM_OFFSET ( 0x00000120 ) + +#define RUNNER_REGS_0_CFG_MAIN_BKPT_IMM_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_IMM_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_IMM_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_IMM_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_IMM_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_IMM_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_BKPT_IMM_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_IMM_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_IMM_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_IMM_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_IMM_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_IMM_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_BKPT_IMM_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_BKPT_IMM_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_BKPT_IMM_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_BKPT_IMM_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_BKPT_IMM_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved2 */ + uint32_t reserved : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE_IMM */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_IMM ; +#else +typedef struct +{ uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE_IMM */ + uint32_t reserved : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved2 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_IMM ; +#endif + +/*****************************************************************************************/ +/* Pico_bkpt_0 */ +/* pico break point 0 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_BKPT_0_RSV_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_0_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_0_USE_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_0_USE_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_0_ENABLE_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_0_ENABLE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_0_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_0_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_0_ADDR_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_0_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_BKPT_0_OFFSET ( 0x00000124 ) + +#define RUNNER_REGS_0_CFG_PICO_BKPT_0_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_0_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_0_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_0_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_0_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_0_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_BKPT_0_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_0_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_0_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_0_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_0_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_0_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_BKPT_0_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_BKPT_0_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_BKPT_0_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_BKPT_0_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_BKPT_0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_0 ; +#else +typedef struct +{ uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_0 ; +#endif + +/*****************************************************************************************/ +/* Pico_bkpt_1 */ +/* pico break point 1 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_BKPT_1_RSV_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_1_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_1_USE_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_1_USE_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_1_ENABLE_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_1_ENABLE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_1_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_1_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_1_ADDR_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_1_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_BKPT_1_OFFSET ( 0x00000128 ) + +#define RUNNER_REGS_0_CFG_PICO_BKPT_1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_1_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_BKPT_1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_1_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_BKPT_1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_BKPT_1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_BKPT_1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_BKPT_1_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_BKPT_1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_1 ; +#else +typedef struct +{ uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_1 ; +#endif + +/*****************************************************************************************/ +/* Pico_bkpt_2 */ +/* pico break point 2 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_BKPT_2_RSV_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_2_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_2_USE_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_2_USE_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_2_ENABLE_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_2_ENABLE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_2_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_2_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_2_ADDR_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_2_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_BKPT_2_OFFSET ( 0x0000012C ) + +#define RUNNER_REGS_0_CFG_PICO_BKPT_2_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_2_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_2_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_2_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_2_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_2_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_BKPT_2_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_2_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_2_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_2_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_2_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_2_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_BKPT_2_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_BKPT_2_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_BKPT_2_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_BKPT_2_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_BKPT_2_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_2 ; +#else +typedef struct +{ uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_2 ; +#endif + +/*****************************************************************************************/ +/* Pico_bkpt_3 */ +/* pico break point 3 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_BKPT_3_RSV_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_3_USE_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_3_USE_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_3_ENABLE_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_3_ENABLE_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_3_THREAD_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_3_THREAD_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_3_ADDR_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_3_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_BKPT_3_OFFSET ( 0x00000130 ) + +#define RUNNER_REGS_0_CFG_PICO_BKPT_3_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_3_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_3_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_3_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_3_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_3_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_BKPT_3_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_3_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_3_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_3_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_3_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_3_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_BKPT_3_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_BKPT_3_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_BKPT_3_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_BKPT_3_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_BKPT_3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_3 ; +#else +typedef struct +{ uint32_t addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ADDR */ + uint32_t thread : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* THREAD */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE */ + uint32_t use_thread : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USE_THREAD */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_3 ; +#endif + +/*****************************************************************************************/ +/* Pico_bkpt_immediate */ +/* pico break point immediate */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_BKPT_IMM_RESERVED_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_IMM_RESERVED_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_IMM_ENABLE_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_IMM_ENABLE_RESERVED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_BKPT_IMM_OFFSET ( 0x00000134 ) + +#define RUNNER_REGS_0_CFG_PICO_BKPT_IMM_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_IMM_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_IMM_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_IMM_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_IMM_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_IMM_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_BKPT_IMM_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_IMM_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_IMM_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_IMM_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_IMM_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_IMM_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_BKPT_IMM_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_BKPT_IMM_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_BKPT_IMM_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_BKPT_IMM_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_BKPT_IMM_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved2 */ + uint32_t reserved : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE_IMM */ + uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_IMM ; +#else +typedef struct +{ uint32_t enable : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ENABLE_IMM */ + uint32_t reserved : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved2 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_IMM ; +#endif + +/*****************************************************************************************/ +/* cfg_1588 */ +/* 1588 configuration (Master and Slave) */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_CFG_1588_RSV1_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_RSV1_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_SLV_1588_WKUP_DIS_ENABLE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_SLV_1588_WKUP_DIS_DISABLE_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CFG_1588_SLV_1588_WKUP_DIS_DISABLE_VALUE_RESET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CFG_1588_SLV_1588_CORE_SEL_MAIN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_SLV_1588_CORE_SEL_MAIN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_SLV_1588_CORE_SEL_PICO_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CFG_1588_SLV_1588_THRD_NUM_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_SLV_1588_THRD_NUM_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_RSV0_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_RSV0_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_MSTR_1588_WKUP_DIS_ENABLE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_MSTR_1588_WKUP_DIS_DISABLE_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CFG_1588_MSTR_1588_WKUP_DIS_DISABLE_VALUE_RESET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CFG_1588_MSTR_1588_CORE_SEL_MAIN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_MSTR_1588_CORE_SEL_MAIN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_MSTR_1588_CORE_SEL_PICO_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CFG_1588_MSTR_1588_THRD_NUM_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_1588_MSTR_1588_THRD_NUM_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_CFG_1588_OFFSET ( 0x00000138 ) + +#define RUNNER_REGS_0_CFG_CFG_1588_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_CFG_1588_OFFSET ) +#define RUNNER_REGS_0_CFG_CFG_1588_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_CFG_1588_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_CFG_1588_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_CFG_1588_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_CFG_1588_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_CFG_1588_OFFSET ) +#define RUNNER_REGS_1_CFG_CFG_1588_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_CFG_1588_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_CFG_1588_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_CFG_1588_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_CFG_1588_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_CFG_1588_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_CFG_1588_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_CFG_1588_READ( i, r ) READ_32( RUNNER_REGS_CFG_CFG_1588_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV1 */ + uint32_t rsv1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SLV_1588_WKUP_DIS */ + uint32_t slv_1588_wkup_dis : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SLV_1588_CORE_SEL */ + uint32_t slv_1588_core_sel : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SLV_1588_THRD_NUM */ + uint32_t slv_1588_thrd_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV0 */ + uint32_t rsv0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MSTR_1588_WKUP_DIS */ + uint32_t mstr_1588_wkup_dis : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MSTR_1588_CORE_SEL */ + uint32_t mstr_1588_core_sel : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MSTR_1588_THRD_NUM */ + uint32_t mstr_1588_thrd_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_CFG_1588 ; +#else +typedef struct +{ uint32_t mstr_1588_thrd_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MSTR_1588_THRD_NUM */ + uint32_t mstr_1588_core_sel : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MSTR_1588_CORE_SEL */ + uint32_t mstr_1588_wkup_dis : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MSTR_1588_WKUP_DIS */ + uint32_t rsv0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV0 */ + uint32_t slv_1588_thrd_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SLV_1588_THRD_NUM */ + uint32_t slv_1588_core_sel : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SLV_1588_CORE_SEL */ + uint32_t slv_1588_wkup_dis : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SLV_1588_WKUP_DIS */ + uint32_t rsv1 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_CFG_1588 ; +#endif + +/*****************************************************************************************/ +/* cfg_8k */ +/* 8K configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_CFG_8K_RSV_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_8K_RSV_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_8K_GPON_8K_CORE_SEL_MAIN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_8K_GPON_8K_CORE_SEL_MAIN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_8K_GPON_8K_CORE_SEL_PICO_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CFG_8K_GPON_8K_WKUP_DIS_ENABLE_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_8K_GPON_8K_WKUP_DIS_DISABLE_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CFG_8K_GPON_8K_WKUP_DIS_DISABLE_VALUE_RESET_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_CFG_8K_GPON_8K_THRD_NUM_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_CFG_8K_GPON_8K_THRD_NUM_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_CFG_8K_OFFSET ( 0x0000013C ) + +#define RUNNER_REGS_0_CFG_CFG_8K_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_CFG_8K_OFFSET ) +#define RUNNER_REGS_0_CFG_CFG_8K_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_CFG_8K_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_CFG_8K_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_CFG_8K_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_CFG_8K_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_CFG_8K_OFFSET ) +#define RUNNER_REGS_1_CFG_CFG_8K_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_CFG_8K_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_CFG_8K_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_CFG_8K_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_CFG_8K_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_CFG_8K_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_CFG_8K_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_CFG_8K_READ( i, r ) READ_32( RUNNER_REGS_CFG_CFG_8K_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_8K_CORE_SEL */ + uint32_t gpon_8k_core_sel : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_8K_WKUP_DIS */ + uint32_t gpon_8k_wkup_dis : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_8K_THRD_NUM */ + uint32_t gpon_8k_thrd_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_CFG_8K ; +#else +typedef struct +{ uint32_t gpon_8k_thrd_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_8K_THRD_NUM */ + uint32_t gpon_8k_wkup_dis : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_8K_WKUP_DIS */ + uint32_t gpon_8k_core_sel : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_8K_CORE_SEL */ + uint32_t rsv : 25 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_CFG_8K ; +#endif + +/*****************************************************************************************/ +/* Semaphore_Status_and_Control */ +/* This register is used for taking and releasing the Semaphores 0-3 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RESERVED3_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RESERVED3_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RELEASE3_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RELEASE3_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS3_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS3_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS3_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RESERVED2_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RESERVED2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RELEASE2_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RELEASE2_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS2_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS2_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS2_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RELEASE1_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RELEASE1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS1_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS1_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS1_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RELEASE0_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_RELEASE0_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS0_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS0_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_STATUS0_OWNERSHIP_TAKEN_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_OFFSET ( 0x00000140 ) + +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_0_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_OFFSET ) +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_0_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_0_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_0_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_0_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_0_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_OFFSET ) +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_0_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_0_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_0_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_0_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_READ( i, r ) READ_32( RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_3_Release_Request */ + uint32_t release3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_3_Status */ + uint32_t status3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_2_Release_Request */ + uint32_t release2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_2_Status */ + uint32_t status2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_1_Release_Request */ + uint32_t release1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_1_Status */ + uint32_t status1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_0_Release_Request */ + uint32_t release0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_0_Status */ + uint32_t status0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0 ; +#else +typedef struct +{ uint32_t status0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_0_Status */ + uint32_t release0 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_0_Release_Request */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_1_Status */ + uint32_t release1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_1_Release_Request */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_2_Status */ + uint32_t release2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_2_Release_Request */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_3_Status */ + uint32_t release3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_3_Release_Request */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0 ; +#endif + +/*****************************************************************************************/ +/* Semaphore_Status_and_Control */ +/* This register is used for taking and releasing the Semaphores 4-7 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RESERVED3_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RESERVED3_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RELEASE7_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RELEASE7_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS7_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS7_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS7_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RESERVED2_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RESERVED2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RELEASE6_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RELEASE6_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS6_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS6_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS6_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RELEASE5_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RELEASE5_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS5_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS5_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS5_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RELEASE4_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_RELEASE4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS4_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS4_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_STATUS4_OWNERSHIP_TAKEN_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_OFFSET ( 0x00000144 ) + +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_OFFSET ) +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_OFFSET ) +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_READ( i, r ) READ_32( RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7Release_Request */ + uint32_t release7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7_Status */ + uint32_t status7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Release_Request */ + uint32_t release6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Status */ + uint32_t status6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Release_Request */ + uint32_t release5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Status */ + uint32_t status5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Release_Request */ + uint32_t release4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Status */ + uint32_t status4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1 ; +#else +typedef struct +{ uint32_t status4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Status */ + uint32_t release4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Release_Request */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Status */ + uint32_t release5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Release_Request */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Status */ + uint32_t release6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Release_Request */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7_Status */ + uint32_t release7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7Release_Request */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1 ; +#endif + +/*****************************************************************************************/ +/* Semaphore_Status_and_Control */ +/* This register is used for taking and releasing the Semaphores 8-11 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RESERVED3_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RESERVED3_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RELEASE11_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RELEASE11_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS11_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS11_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS11_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RESERVED2_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RESERVED2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RELEASE10_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RELEASE10_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS10_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS10_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS10_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RELEASE9_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RELEASE9_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS9_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS9_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS9_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RELEASE8_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_RELEASE8_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS8_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS8_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_STATUS8_OWNERSHIP_TAKEN_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_OFFSET ( 0x00000148 ) + +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_2_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_OFFSET ) +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_2_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_2_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_2_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_2_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_2_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_OFFSET ) +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_2_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_2_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_2_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_2_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_READ( i, r ) READ_32( RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_11_Release_Request */ + uint32_t release11 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_11_Status */ + uint32_t status11 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_10_Release_Request */ + uint32_t release10 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_10_Status */ + uint32_t status10 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_9_Release_Request */ + uint32_t release9 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_9_Status */ + uint32_t status9 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_8_Release_Request */ + uint32_t release8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_8_Status */ + uint32_t status8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2 ; +#else +typedef struct +{ uint32_t status8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_8_Status */ + uint32_t release8 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_8_Release_Request */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status9 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_9_Status */ + uint32_t release9 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_9_Release_Request */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status10 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_10_Status */ + uint32_t release10 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_10_Release_Request */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status11 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_11_Status */ + uint32_t release11 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_11_Release_Request */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2 ; +#endif + +/*****************************************************************************************/ +/* Semaphore_Status_and_Control */ +/* This register is used for taking and releasing the Semaphores 12-15 */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RESERVED3_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RESERVED3_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RELEASE7_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RELEASE7_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS7_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS7_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS7_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RESERVED2_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RESERVED2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RELEASE6_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RELEASE6_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS6_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS6_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS6_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RELEASE5_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RELEASE5_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS5_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS5_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS5_OWNERSHIP_TAKEN_VALUE ( 0x1 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RESERVED0_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RESERVED0_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RELEASE4_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_RELEASE4_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS4_OWNERSHIP_NOT_TAKEN_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS4_OWNERSHIP_NOT_TAKEN_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_STATUS4_OWNERSHIP_TAKEN_VALUE ( 0x1 ) + + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_OFFSET ( 0x0000014C ) + +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_3_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_OFFSET ) +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_3_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_3_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_3_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MIPSD_SEMAPHOR_STS_3_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_3_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_OFFSET ) +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_3_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_3_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_3_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MIPSD_SEMAPHOR_STS_3_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_READ( i, r ) READ_32( RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Reserved */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7Release_Request */ + uint32_t release7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7_Status */ + uint32_t status7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Release_Request */ + uint32_t release6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Status */ + uint32_t status6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Release_Request */ + uint32_t release5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Status */ + uint32_t status5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Release_Request */ + uint32_t release4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Status */ + uint32_t status4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3 ; +#else +typedef struct +{ uint32_t status4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Status */ + uint32_t release4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_4_Release_Request */ + uint32_t reserved0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Status */ + uint32_t release5 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_5_Release_Request */ + uint32_t reserved1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Status */ + uint32_t release6 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_6_Release_Request */ + uint32_t reserved2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint32_t status7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7_Status */ + uint32_t release7 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_7Release_Request */ + uint32_t reserved3 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3 ; +#endif + +/*****************************************************************************************/ +/* Main_jump_cnt */ +/* Mispredicted jumps count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_JMP_CNT_TAKEN_JMP_CNT_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_JMP_CNT_TAKEN_JMP_CNT_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_JMP_CNT_UNTAKEN_JMP_CNT_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_JMP_CNT_UNTAKEN_JMP_CNT_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_JMP_CNT_OFFSET ( 0x00000150 ) + +#define RUNNER_REGS_0_CFG_MAIN_JMP_CNT_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_JMP_CNT_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_JMP_CNT_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_JMP_CNT_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_JMP_CNT_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_JMP_CNT_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_JMP_CNT_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_JMP_CNT_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_JMP_CNT_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_JMP_CNT_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_JMP_CNT_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_JMP_CNT_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_JMP_CNT_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_JMP_CNT_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_JMP_CNT_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_JMP_CNT_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_JMP_CNT_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* UNTAKEN_JMP_CNT */ + uint32_t untaken_jmp_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TAKEN_JMP_CNT */ + uint32_t taken_jmp_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_JMP_CNT ; +#else +typedef struct +{ + /* TAKEN_JMP_CNT */ + uint32_t taken_jmp_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UNTAKEN_JMP_CNT */ + uint32_t untaken_jmp_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_JMP_CNT ; +#endif + +/*****************************************************************************************/ +/* Pico_jump_cnt */ +/* Mispredicted jumps count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_JMP_CNT_TAKEN_JMP_CNT_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_JMP_CNT_TAKEN_JMP_CNT_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_JMP_CNT_UNTAKEN_JMP_CNT_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_JMP_CNT_UNTAKEN_JMP_CNT_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_JMP_CNT_OFFSET ( 0x00000154 ) + +#define RUNNER_REGS_0_CFG_PICO_JMP_CNT_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_JMP_CNT_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_JMP_CNT_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_JMP_CNT_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_JMP_CNT_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_JMP_CNT_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_JMP_CNT_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_JMP_CNT_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_JMP_CNT_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_JMP_CNT_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_JMP_CNT_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_JMP_CNT_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_JMP_CNT_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_JMP_CNT_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_JMP_CNT_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_JMP_CNT_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_JMP_CNT_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* TAKEN_JMP_CNT */ + uint32_t taken_jmp_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UNTAKEN_JMP_CNT */ + uint32_t untaken_jmp_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_JMP_CNT ; +#else +typedef struct +{ uint32_t untaken_jmp_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UNTAKEN_JMP_CNT */ + uint32_t taken_jmp_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TAKEN_JMP_CNT */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_JMP_CNT ; +#endif + +/*****************************************************************************************/ +/* MAIN_BKPT_CFG */ +/* Main breakpoint configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_RSV_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_RSV_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_STEP_MODE_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_STEP_MODE_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_NEW_FLAGS_VAL_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_NEW_FLAGS_VAL_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_NEW_PC_VAL_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_NEW_PC_VAL_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_HANDLER_ADDR_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_HANDLER_ADDR_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_OFFSET ( 0x00000158 ) + +#define RUNNER_REGS_0_CFG_MAIN_BKPT_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_BKPT_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_BKPT_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_BKPT_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_BKPT_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_BKPT_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* STEP_MODE */ + uint32_t step_mode : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NEW_FLAGS_VAL */ + uint32_t new_flags_val : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NEW_PC_VAL */ + uint32_t new_pc_val : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HANDLER_ADDR */ + uint32_t handler_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_CFG ; +#else +typedef struct +{ uint32_t handler_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HANDLER_ADDR */ + uint32_t new_pc_val : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NEW_PC_VAL */ + uint32_t new_flags_val : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NEW_FLAGS_VAL */ + uint32_t step_mode : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* STEP_MODE */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_CFG ; +#endif + +/*****************************************************************************************/ +/* PICO_BKPT_CFG */ +/* Pico breakpoint configuration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_RSV_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_RSV_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_STEP_MODE_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_STEP_MODE_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_NEW_FLAGS_VAL_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_NEW_FLAGS_VAL_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_NEW_PC_VAL_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_NEW_PC_VAL_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_HANDLER_ADDR_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_HANDLER_ADDR_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_OFFSET ( 0x0000015C ) + +#define RUNNER_REGS_0_CFG_PICO_BKPT_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_BKPT_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_BKPT_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_BKPT_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_BKPT_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_BKPT_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* STEP_MODE */ + uint32_t step_mode : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NEW_FLAGS_VAL */ + uint32_t new_flags_val : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NEW_PC_VAL */ + uint32_t new_pc_val : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HANDLER_ADDR */ + uint32_t handler_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_CFG ; +#else +typedef struct +{ uint32_t handler_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HANDLER_ADDR */ + uint32_t new_pc_val : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NEW_PC_VAL */ + uint32_t new_flags_val : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* NEW_FLAGS_VAL */ + uint32_t step_mode : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* STEP_MODE */ + uint32_t rsv : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_CFG ; +#endif + +/*****************************************************************************************/ +/* MAIN_BKPT_STS */ +/* Main breakpoint status */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_RSV_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_RSV_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_ACTIVE_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_ACTIVE_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_RSV1_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_RSV1_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_BKPT_ADDR_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_BKPT_ADDR_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_OFFSET ( 0x00000160 ) + +#define RUNNER_REGS_0_CFG_MAIN_BKPT_STS_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_STS_OFFSET ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_STS_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_STS_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_MAIN_BKPT_STS_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_MAIN_BKPT_STS_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_MAIN_BKPT_STS_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_MAIN_BKPT_STS_OFFSET ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_STS_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_STS_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_MAIN_BKPT_STS_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_MAIN_BKPT_STS_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_MAIN_BKPT_STS_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_MAIN_BKPT_STS_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_MAIN_BKPT_STS_READ( i, r ) READ_32( RUNNER_REGS_CFG_MAIN_BKPT_STS_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACTIVE */ + uint32_t active : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BKPT_ADDR */ + uint32_t bkpt_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_STS ; +#else +typedef struct +{ uint32_t bkpt_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BKPT_ADDR */ + uint32_t rsv1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t active : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACTIVE */ + uint32_t rsv : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_MAIN_BKPT_STS ; +#endif + +/*****************************************************************************************/ +/* PICO_BKPT_STS */ +/* Pico breakpoint status */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_BKPT_STS_RSV_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_STS_RSV_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_STS_ACTIVE_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_STS_ACTIVE_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_STS_RSV1_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_STS_RSV1_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_STS_BKPT_ADDR_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_BKPT_STS_BKPT_ADDR_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_BKPT_STS_OFFSET ( 0x00000164 ) + +#define RUNNER_REGS_0_CFG_PICO_BKPT_STS_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_STS_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_STS_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_STS_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_BKPT_STS_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_BKPT_STS_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_BKPT_STS_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_BKPT_STS_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_STS_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_STS_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_BKPT_STS_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_BKPT_STS_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_BKPT_STS_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_BKPT_STS_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_BKPT_STS_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_BKPT_STS_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_BKPT_STS_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV */ + uint32_t rsv : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACTIVE */ + uint32_t active : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BKPT_ADDR */ + uint32_t bkpt_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_STS ; +#else +typedef struct +{ uint32_t bkpt_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BKPT_ADDR */ + uint32_t rsv1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t active : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACTIVE */ + uint32_t rsv : 15 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_BKPT_STS ; +#endif + +/*****************************************************************************************/ +/* Pico_profiling_sts */ +/* Pico profiling status */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_TRACE_WRITE_PNT_TRACE_WRITE_POINTER_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_TRACE_WRITE_PNT_TRACE_WRITE_POINTER_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_RESERVED2_RESERVED2_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_RESERVED2_RESERVED2_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_PROFILING_ACTIVE_PROFILING_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_PROFILING_ACTIVE_PROFILING_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_IDLE_NO_ACTIVE_TASK_IDLE_NO_ACTIVE_TASK_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_IDLE_NO_ACTIVE_TASK_IDLE_NO_ACTIVE_TASK_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_CURR_THREAD_NUM_CURR_THREAD_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_CURR_THREAD_NUM_CURR_THREAD_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_RESERVED1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_RESERVED1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_AGU_NEXT_PC_DEFAULT_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_AGU_NEXT_PC_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_OFFSET ( 0x000001B0 ) + +#define RUNNER_REGS_0_CFG_PICO_PROFILING_STS_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_PROFILING_STS_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_PROFILING_STS_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_PROFILING_STS_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_PROFILING_STS_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_PROFILING_STS_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_PROFILING_STS_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_PROFILING_STS_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_PROFILING_STS_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_PROFILING_STS_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_PROFILING_STS_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_PROFILING_STS_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_PROFILING_STS_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_PROFILING_STS_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_PROFILING_STS_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_PROFILING_STS_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Trace_write_pointer */ + uint32_t trace_write_pnt : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved2 */ + uint32_t reserved2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Profiling_active */ + uint32_t profiling_active : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IDLE_no_active_task */ + uint32_t idle_no_active_task : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CURR_thread_num */ + uint32_t curr_thread_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved1 */ + uint32_t reserved1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* AGU_next_pc */ + uint32_t agu_next_pc : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_PROFILING_STS ; +#else +typedef struct +{ uint32_t agu_next_pc : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* AGU_next_pc */ + uint32_t reserved1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved1 */ + uint32_t curr_thread_num : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CURR_thread_num */ + uint32_t idle_no_active_task : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IDLE_no_active_task */ + uint32_t profiling_active : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Profiling_active */ + uint32_t reserved2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved2 */ + uint32_t trace_write_pnt : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Trace_write_pointer */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_PROFILING_STS ; +#endif + +/*****************************************************************************************/ +/* Pico_profiling_cfg */ +/* Pico profiling confuguration */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_RSV2_RSV_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_TRACE_BASE_ADDR_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_TRACE_BASE_ADDR_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_PROF_STOP_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_PROF_STOP_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_PROF_START_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_PROF_START_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_RSV1_RSV_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_TRACE_PC_EN_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_TRACE_PC_EN_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_PROF_TASK2_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_PROF_TASK2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_PROF_TASK1_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_PROF_TASK1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_OFFSET ( 0x000001B4 ) + +#define RUNNER_REGS_0_CFG_PICO_PROFILING_CFG_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_PROFILING_CFG_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_PROFILING_CFG_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_PROFILING_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_PROFILING_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_PROFILING_CFG_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_PROFILING_CFG_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_PROFILING_CFG_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_PROFILING_CFG_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_PROFILING_CFG_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_PROFILING_CFG_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_PROFILING_CFG_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_PROFILING_CFG_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_PROFILING_CFG_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_PROFILING_CFG_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_PROFILING_CFG_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* RSV2 */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRACE_BASE_ADDR */ + uint32_t trace_base_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_STOP */ + uint32_t prof_stop : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_START */ + uint32_t prof_start : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t rsv1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRACE_PC_EN */ + uint32_t trace_pc_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_TASK2 */ + uint32_t prof_task2 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_TASK1 */ + uint32_t prof_task1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_PROFILING_CFG ; +#else +typedef struct +{ uint32_t prof_task1 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_TASK1 */ + uint32_t prof_task2 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_TASK2 */ + uint32_t trace_pc_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRACE_PC_EN */ + uint32_t rsv1 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV1 */ + uint32_t prof_start : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_START */ + uint32_t prof_stop : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PROF_STOP */ + uint32_t trace_base_addr : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TRACE_BASE_ADDR */ + uint32_t rsv2 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RSV2 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_PROFILING_CFG ; +#endif + +/*****************************************************************************************/ +/* Pico_stall_cnt1 */ +/* Pico stall count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_STALL_CNT1_ACC_STALL_CNT_RESERVED1_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_STALL_CNT1_ACC_STALL_CNT_RESERVED1_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_STALL_CNT1_LD_STALL_CNT_RESERVED1_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_STALL_CNT1_LD_STALL_CNT_RESERVED1_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_STALL_CNT1_OFFSET ( 0x000001B8 ) + +#define RUNNER_REGS_0_CFG_PICO_STALL_CNT1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_STALL_CNT1_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_STALL_CNT1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_STALL_CNT1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_STALL_CNT1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_STALL_CNT1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_STALL_CNT1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_STALL_CNT1_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_STALL_CNT1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_STALL_CNT1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_STALL_CNT1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_STALL_CNT1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_STALL_CNT1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_STALL_CNT1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_STALL_CNT1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_STALL_CNT1_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_STALL_CNT1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* ACC_STALL_CNT */ + uint32_t acc_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LD_STALL_CNT */ + uint32_t ld_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_STALL_CNT1 ; +#else +typedef struct +{ uint32_t ld_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LD_STALL_CNT */ + uint32_t acc_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ACC_STALL_CNT */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_STALL_CNT1 ; +#endif + +/*****************************************************************************************/ +/* Pico_stall_cnt2 */ +/* pico stall count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_STALL_CNT2_STORE_STALL_CNT_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_STALL_CNT2_STORE_STALL_CNT_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_STALL_CNT2_LDIO_STALL_CNT_RESERVED0_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_STALL_CNT2_LDIO_STALL_CNT_RESERVED0_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_STALL_CNT2_OFFSET ( 0x000001BC ) + +#define RUNNER_REGS_0_CFG_PICO_STALL_CNT2_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_STALL_CNT2_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_STALL_CNT2_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_STALL_CNT2_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_STALL_CNT2_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_STALL_CNT2_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_STALL_CNT2_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_STALL_CNT2_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_STALL_CNT2_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_STALL_CNT2_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_STALL_CNT2_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_STALL_CNT2_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_STALL_CNT2_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_STALL_CNT2_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_STALL_CNT2_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_STALL_CNT2_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_STALL_CNT2_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* STORE_STALL_CNT */ + uint32_t store_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LDIO_STALL_CNT */ + uint32_t ldio_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_STALL_CNT2 ; +#else +typedef struct +{ uint32_t ldio_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* LDIO_STALL_CNT */ + uint32_t store_stall_cnt : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* STORE_STALL_CNT */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_STALL_CNT2 ; +#endif + +/*****************************************************************************************/ +/* Pico_task_cnt1 */ +/* pico count count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_TASK_CNT1_TASK1_CNT_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_TASK_CNT1_TASK1_CNT_RESERVED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_TASK_CNT1_OFFSET ( 0x000001C0 ) + +#define RUNNER_REGS_0_CFG_PICO_TASK_CNT1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_TASK_CNT1_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_TASK_CNT1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_TASK_CNT1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_TASK_CNT1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_TASK_CNT1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_TASK_CNT1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_TASK_CNT1_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_TASK_CNT1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_TASK_CNT1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_TASK_CNT1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_TASK_CNT1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_TASK_CNT1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_TASK_CNT1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_TASK_CNT1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_TASK_CNT1_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_TASK_CNT1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* TASK1_CNT */ + uint32_t task1_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_TASK_CNT1 ; +#else +typedef struct +{ uint32_t task1_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TASK1_CNT */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_TASK_CNT1 ; +#endif + +/*****************************************************************************************/ +/* Pico_task_cnt2 */ +/* pico count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_TASK_CNT2_TASK2_CNT_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_TASK_CNT2_TASK2_CNT_RESERVED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_TASK_CNT2_OFFSET ( 0x000001C4 ) + +#define RUNNER_REGS_0_CFG_PICO_TASK_CNT2_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_TASK_CNT2_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_TASK_CNT2_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_TASK_CNT2_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_TASK_CNT2_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_TASK_CNT2_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_TASK_CNT2_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_TASK_CNT2_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_TASK_CNT2_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_TASK_CNT2_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_TASK_CNT2_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_TASK_CNT2_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_TASK_CNT2_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_TASK_CNT2_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_TASK_CNT2_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_TASK_CNT2_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_TASK_CNT2_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* TASK2_CNT */ + uint32_t task2_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_TASK_CNT2 ; +#else +typedef struct +{ uint32_t task2_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* TASK2_CNT */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_TASK_CNT2 ; +#endif + +/*****************************************************************************************/ +/* Pico_idle_cnt */ +/* pico idle count */ +/*****************************************************************************************/ + +#define RUNNER_REGS_CFG_PICO_IDLE_CNT1_IDLE_CNT_RESERVED_VALUE ( 0x0 ) +#define RUNNER_REGS_CFG_PICO_IDLE_CNT1_IDLE_CNT_RESERVED_VALUE_RESET_VALUE ( 0x0 ) + + +#define RUNNER_REGS_CFG_PICO_IDLE_CNT1_OFFSET ( 0x000001C8 ) + +#define RUNNER_REGS_0_CFG_PICO_IDLE_CNT1_ADDRESS ( RUNNER_REGS_0_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_IDLE_CNT1_OFFSET ) +#define RUNNER_REGS_0_CFG_PICO_IDLE_CNT1_READ( r ) READ_32( ( RUNNER_REGS_0_CFG_PICO_IDLE_CNT1_ADDRESS ), (r) ) +#define RUNNER_REGS_0_CFG_PICO_IDLE_CNT1_WRITE( v ) WRITE_32( ( RUNNER_REGS_0_CFG_PICO_IDLE_CNT1_ADDRESS ), (v) ) + +#define RUNNER_REGS_1_CFG_PICO_IDLE_CNT1_ADDRESS ( RUNNER_REGS_1_CFG_ADDRESS + RUNNER_REGS_CFG_PICO_IDLE_CNT1_OFFSET ) +#define RUNNER_REGS_1_CFG_PICO_IDLE_CNT1_READ( r ) READ_32( ( RUNNER_REGS_1_CFG_PICO_IDLE_CNT1_ADDRESS ), (r) ) +#define RUNNER_REGS_1_CFG_PICO_IDLE_CNT1_WRITE( v ) WRITE_32( ( RUNNER_REGS_1_CFG_PICO_IDLE_CNT1_ADDRESS ), (v) ) + + +extern uint32_t RUNNER_REGS_CFG_PICO_IDLE_CNT1_ARRAY [ ] ; + +#define RUNNER_REGS_CFG_PICO_IDLE_CNT1_WRITE( i, v ) WRITE_32( RUNNER_REGS_CFG_PICO_IDLE_CNT1_ARRAY [ i ], (v) ) +#define RUNNER_REGS_CFG_PICO_IDLE_CNT1_READ( i, r ) READ_32( RUNNER_REGS_CFG_PICO_IDLE_CNT1_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* IDLE */ + uint32_t idle_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_IDLE_CNT1 ; +#else +typedef struct +{ uint32_t idle_cnt : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* IDLE */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO_IDLE_CNT1 ; +#endif + +typedef struct +{ + /* Data_memory_entry */ + RUNNER_COMMON_MEM_HIGH high __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Data_memory_entry */ + RUNNER_COMMON_MEM_LOW low __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_COMMON_MEM ; + +typedef struct +{ + /* Data_memory_entry */ + RUNNER_PRIVATE_MEM_HIGH high __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Data_memory_entry */ + RUNNER_PRIVATE_MEM_LOW low __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRIVATE_MEM ; + +typedef struct +{ + /* Instruction_memory_entry */ + RUNNER_INST_MAIN_MEM_ENTRY entry __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_INST_MAIN_MEM ; + +typedef struct +{ + /* Context_mem_entry */ + RUNNER_CNTXT_MAIN_MEM_ENTRY entry __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_CNTXT_MAIN_MEM ; + +/*****************************************************************************************/ +/* Prediction memory MAIN core */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +/* Due to prediction memory folding issue - relevant only for 6838 and 6838_G9991 */ +#ifdef BCM96838 +#define RUNNER_PRED_MAIN_MEM_ENTRY_NUMBER ( 384 ) +#else +#define RUNNER_PRED_MAIN_MEM_ENTRY_NUMBER ( 448 ) +#endif + +typedef struct +{ + /* prediction_memory_core */ + RUNNER_PRED_MAIN_MEM_ENTRY entry [ RUNNER_PRED_MAIN_MEM_ENTRY_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRED_MAIN_MEM ; + +typedef struct +{ + /* Instruction_memory_entry */ + RUNNER_INST_PICO_MEM_ENTRY entry __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_INST_PICO_MEM ; + +typedef struct +{ + /* Context_mem_entry */ + RUNNER_CNTXT_PICO_MEM_ENTRY entry __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_CNTXT_PICO_MEM ; + +/*****************************************************************************************/ +/* Prediction memory PICO core */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Registers array numbers */ +/*****************************************************************************************/ +#define RUNNER_PRED_PICO_MEM_ENTRY_NUMBER ( 256 ) + +typedef struct +{ + /* Prediction_memory_pico */ + RUNNER_PRED_PICO_MEM_ENTRY entry [ RUNNER_PRED_PICO_MEM_ENTRY_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRED_PICO_MEM ; + +typedef struct +{ + /* Global_control */ + RUNNER_REGS_CFG_GLOBAL_CTRL global_ctrl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CPU_Wakeup */ + RUNNER_REGS_CFG_CPU_WAKEUP cpu_wakeup __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_Control */ + RUNNER_REGS_CFG_INT_CTRL int_ctrl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Interrupt_Mask */ + RUNNER_REGS_CFG_INT_MASK int_mask __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_table_Configuration */ + RUNNER_REGS_CFG_LKUP0_CFG lkup0_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_table_Configuration */ + RUNNER_REGS_CFG_LKUP1_CFG lkup1_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_table_Configuration */ + RUNNER_REGS_CFG_LKUP2_CFG lkup2_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_table_Configuration */ + RUNNER_REGS_CFG_LKUP3_CFG lkup3_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_table_CAM_configuration */ + RUNNER_REGS_CFG_LKUP0_CAM_CFG lkup0_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_table_CAM_configuration */ + RUNNER_REGS_CFG_LKUP1_CAM_CFG lkup1_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_table_CAM_configuration */ + RUNNER_REGS_CFG_LKUP2_CAM_CFG lkup2_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_table_CAM_configuration */ + RUNNER_REGS_CFG_LKUP3_CAM_CFG lkup3_cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PSRAM_config_Register */ + RUNNER_REGS_CFG_PSRAM_CFG psram_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CAM_configuration */ + RUNNER_REGS_CFG_CAM_CFG cam_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Counters_Configuration */ + RUNNER_REGS_CFG_CNTR_CFG cntr_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_config_Register */ + RUNNER_REGS_CFG_DDR_CFG ddr_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_Status_and_Control */ + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_0 mipsc_semaphor_sts_0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_Status_and_Control */ + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_1 mipsc_semaphor_sts_1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_Status_and_Control */ + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_2 mipsc_semaphor_sts_2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_Status_and_Control */ + RUNNER_REGS_CFG_MIPSC_SEMAPHOR_STS_3 mipsc_semaphor_sts_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_look-up_Global_Mask */ + RUNNER_REGS_CFG_DDR_LKUP_MASK0 ddr_lkup_mask0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_look-up_Global_Mask */ + RUNNER_REGS_CFG_DDR_LKUP_MASK1 ddr_lkup_mask1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_look-up_Global_Mask */ + RUNNER_REGS_CFG_DDR_LKUP_MASK2 ddr_lkup_mask2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DDR_look-up_Global_Mask */ + RUNNER_REGS_CFG_DDR_LKUP_MASK3 ddr_lkup_mask3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PSRAM_look-up_Global_Mask */ + RUNNER_REGS_CFG_PSRAM_LKUP_MASK0 psram_lkup_mask0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PSRAM_look-up_Global_Mask */ + RUNNER_REGS_CFG_PSRAM_LKUP_MASK1 psram_lkup_mask1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PSRAM_look-up_Global_Mask */ + RUNNER_REGS_CFG_PSRAM_LKUP_MASK2 psram_lkup_mask2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PSRAM_look-up_Global_Mask */ + RUNNER_REGS_CFG_PSRAM_LKUP_MASK3 psram_lkup_mask3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_global_mask */ + RUNNER_REGS_CFG_LKUP_GLBL_MASK0_H lkup_glbl_mask0_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_global_mask */ + RUNNER_REGS_CFG_LKUP_GLBL_MASK0_L lkup_glbl_mask0_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_global_mask */ + RUNNER_REGS_CFG_LKUP_GLBL_MASK1_H lkup_glbl_mask1_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_global_mask */ + RUNNER_REGS_CFG_LKUP_GLBL_MASK1_L lkup_glbl_mask1_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_global_mask */ + RUNNER_REGS_CFG_LKUP_GLBL_MASK2_H lkup_glbl_mask2_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_global_mask */ + RUNNER_REGS_CFG_LKUP_GLBL_MASK2_L lkup_glbl_mask2_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_global_mask */ + RUNNER_REGS_CFG_LKUP_GLBL_MASK3_H lkup_glbl_mask3_h __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look-up_global_mask */ + RUNNER_REGS_CFG_LKUP_GLBL_MASK3_L lkup_glbl_mask3_l __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Look_up_configuration */ + RUNNER_REGS_CFG_LKUP_CFG lkup_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 28 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_profiling_sts */ + RUNNER_REGS_CFG_MAIN_PROFILING_STS main_profiling_sts __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_profiling_cfg */ + RUNNER_REGS_CFG_MAIN_PROFILING_CFG main_profiling_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_stall_cnt1 */ + RUNNER_REGS_CFG_MAIN_STALL_CNT1 main_stall_cnt1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_stall_cnt2 */ + RUNNER_REGS_CFG_MAIN_STALL_CNT2 main_stall_cnt2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_task_cnt1 */ + RUNNER_REGS_CFG_MAIN_TASK1_CNT main_task1_cnt __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_task_cnt2 */ + RUNNER_REGS_CFG_MAIN_TASK2_CNT main_task2_cnt __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_idle_cnt1 */ + RUNNER_REGS_CFG_MAIN_IDLE_CNT1 main_idle_cnt1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 20 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Version */ + RUNNER_REGS_CFG_VERSION_ADDR version_addr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved3 [ 8 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Ramrd_mask_config */ + RUNNER_REGS_CFG_RAMRD_RANGE_MASK_CFG ramrd_range_mask_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Metal_fix */ + RUNNER_REGS_CFG_METAL_FIX_REG metal_fix_reg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Timer_target */ + RUNNER_REGS_CFG_TIMER_TARGET timer_target __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Scheduler_main_config */ + RUNNER_REGS_CFG_MAIN_SCH_CFG main_sch_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Scheduler_pico_config */ + RUNNER_REGS_CFG_PICO_SCH_CFG pico_sch_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved4 [ 16 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_bkpt_0 */ + RUNNER_REGS_CFG_MAIN_BKPT_0 main_bkpt_0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_bkpt_1 */ + RUNNER_REGS_CFG_MAIN_BKPT_1 main_bkpt_1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_bkpt_2 */ + RUNNER_REGS_CFG_MAIN_BKPT_2 main_bkpt_2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_bkpt_3 */ + RUNNER_REGS_CFG_MAIN_BKPT_3 main_bkpt_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_bkpt_immediate */ + RUNNER_REGS_CFG_MAIN_BKPT_IMM main_bkpt_imm __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_bkpt_0 */ + RUNNER_REGS_CFG_PICO_BKPT_0 pico_bkpt_0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_bkpt_1 */ + RUNNER_REGS_CFG_PICO_BKPT_1 pico_bkpt_1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_bkpt_2 */ + RUNNER_REGS_CFG_PICO_BKPT_2 pico_bkpt_2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_bkpt_3 */ + RUNNER_REGS_CFG_PICO_BKPT_3 pico_bkpt_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_bkpt_immediate */ + RUNNER_REGS_CFG_PICO_BKPT_IMM pico_bkpt_imm __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cfg_1588 */ + RUNNER_REGS_CFG_CFG_1588 cfg_1588 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cfg_8k */ + RUNNER_REGS_CFG_CFG_8K cfg_8k __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_Status_and_Control */ + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_0 mipsd_semaphor_sts_0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_Status_and_Control */ + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_1 mipsd_semaphor_sts_1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_Status_and_Control */ + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_2 mipsd_semaphor_sts_2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Semaphore_Status_and_Control */ + RUNNER_REGS_CFG_MIPSD_SEMAPHOR_STS_3 mipsd_semaphor_sts_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Main_jump_cnt */ + RUNNER_REGS_CFG_MAIN_JMP_CNT main_jmp_cnt __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_jump_cnt */ + RUNNER_REGS_CFG_PICO_JMP_CNT pico_jmp_cnt __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MAIN_BKPT_CFG */ + RUNNER_REGS_CFG_MAIN_BKPT_CFG main_bkpt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PICO_BKPT_CFG */ + RUNNER_REGS_CFG_PICO_BKPT_CFG pico_bkpt_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MAIN_BKPT_STS */ + RUNNER_REGS_CFG_MAIN_BKPT_STS main_bkpt_sts __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PICO_BKPT_STS */ + RUNNER_REGS_CFG_PICO_BKPT_STS pico_bkpt_sts __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved5 [ 72 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_profiling_sts */ + RUNNER_REGS_CFG_PICO_PROFILING_STS pico_profiling_sts __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_profiling_cfg */ + RUNNER_REGS_CFG_PICO_PROFILING_CFG pico_profiling_cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_stall_cnt1 */ + RUNNER_REGS_CFG_PICO_STALL_CNT1 pico_stall_cnt1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_stall_cnt2 */ + RUNNER_REGS_CFG_PICO_STALL_CNT2 pico_stall_cnt2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_task_cnt1 */ + RUNNER_REGS_CFG_PICO_TASK_CNT1 pico_task_cnt1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_task_cnt2 */ + RUNNER_REGS_CFG_PICO_TASK_CNT2 pico_task_cnt2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Pico_idle_cnt */ + RUNNER_REGS_CFG_PICO_IDLE_CNT1 pico_idle_cnt1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS_CFG ; + +typedef struct +{ + /* mem function */ + RUNNER_COMMON_MEM mem [ RUNNER_COMMON_MEM_COUNTER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_COMMON ; + +typedef struct +{ + /* mem function */ + RUNNER_PRIVATE_MEM mem [ RUNNER_PRIVATE_MEM_COUNTER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRIVATE ; + +typedef struct +{ + /* mem function */ + RUNNER_INST_MAIN_MEM mem [ RUNNER_INST_MAIN_MEM_COUNTER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_INST_MAIN ; + +typedef struct +{ + /* mem function */ + RUNNER_CNTXT_MAIN_MEM mem [ RUNNER_CNTXT_MAIN_MEM_COUNTER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_CNTXT_MAIN ; + +typedef struct +{ + /* mem function */ + RUNNER_PRED_MAIN_MEM mem __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRED_MAIN ; + +typedef struct +{ + /* mem function */ + RUNNER_INST_PICO_MEM mem [ RUNNER_INST_PICO_MEM_COUNTER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_INST_PICO ; + +typedef struct +{ + /* mem function */ + RUNNER_CNTXT_PICO_MEM mem [ RUNNER_CNTXT_PICO_MEM_COUNTER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_CNTXT_PICO ; + +typedef struct +{ + /* mem function */ + RUNNER_PRED_PICO_MEM mem __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_PRED_PICO ; + +typedef struct +{ + /* cfg function */ + RUNNER_REGS_CFG cfg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_REGS ; + +#define RUNNER_COMMON_NUMBER ( 2 ) +#define RUNNER_PRIVATE_NUMBER ( 2 ) +#define RUNNER_INST_MAIN_NUMBER ( 2 ) +#define RUNNER_CNTXT_MAIN_NUMBER ( 2 ) +#define RUNNER_PRED_MAIN_NUMBER ( 2 ) +#define RUNNER_INST_PICO_NUMBER ( 2 ) +#define RUNNER_CNTXT_PICO_NUMBER ( 2 ) +#define RUNNER_PRED_PICO_NUMBER ( 2 ) +#define RUNNER_REGS_NUMBER ( 2 ) +typedef struct +{ + /* COMMON */ + RUNNER_COMMON common [ RUNNER_COMMON_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 65528 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PRIVATE */ + RUNNER_PRIVATE private [ RUNNER_PRIVATE_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 65528 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* INST_MAIN */ + RUNNER_INST_MAIN inst_main [ RUNNER_INST_MAIN_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved3 [ 32764 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CNTXT_MAIN */ + RUNNER_CNTXT_MAIN cntxt_main [ RUNNER_CNTXT_MAIN_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved4 [ 16380 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PRED_MAIN */ + RUNNER_PRED_MAIN pred_main [ RUNNER_PRED_MAIN_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved5 [ 15488 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* INST_PICO */ + RUNNER_INST_PICO inst_pico [ RUNNER_INST_PICO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved6 [ 32764 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CNTXT_PICO */ + RUNNER_CNTXT_PICO cntxt_pico [ RUNNER_CNTXT_PICO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved7 [ 16380 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PRED_PICO */ + RUNNER_PRED_PICO pred_pico [ RUNNER_PRED_PICO_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved8 [ 380416 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REGS */ + RUNNER_REGS regs [ RUNNER_REGS_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +RUNNER_FOR_ALL ; +#endif /* RUNNER_H_INCLUDED */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_sbpm.h b/arch/arm/mach-bcmbca/rdp/rdp_sbpm.h new file mode 100755 index 0000000000..c71fe9f381 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_sbpm.h @@ -0,0 +1,4315 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +#ifndef __SBPM_H_INCLUDED +#define __SBPM_H_INCLUDED + +/* File automatically generated by Reggae at 15/08/2013 10:55:11 */ + +#include "access_macros.h" +#include "packing.h" +#include "rdp_map.h" + +/*****************************************************************************************/ +/* The SRAM BPM (SBPM) is responsible for managing the pool of free SRAM buffers. The */ +/* buffers are linked to each other in a linked list (each buffer points to the next buf */ +/* fer). The linked list is kept in a dedicated SRAM. Two kinds of linked lists are */ +/* kept: * Free buffers list - each time a buffer is given to one of the users, i */ +/* t will be the buffer at the head of the list and the next buffer in the list */ +/* will be marked as the new head. Each time a buffer is freed by one of the users, it */ +/* will be linked back to the list as the new tail. * Packet linked list - a list */ +/* per packet which hold the order of buffers in which each packet is stored. The SB */ +/* PM also supports flow control and decoupling of upstream/downstream/local switching r */ +/* esources by managing buffers counters and configurable thresholds per user group. Fo */ +/* r maximum utilization of the memory for different packet size the allocation of memor */ +/* y is handled in chunks of 128 bytes. */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Blocks offsets */ +/*****************************************************************************************/ +/*****************************************************************************************/ +/* Functions offsets and addresses */ +/*****************************************************************************************/ +#define SBPM_BLOCK_REGS_OFFSET ( 0x00000000 ) +#define SBPM_BLOCK_REGS_ADDRESS ( SBPM_BLOCK_OFFSET + SBPM_BLOCK_REGS_OFFSET ) + +/* 'd' is module index */ +/* 'i' is block index */ +/* 'j' is function index */ +/* 'e' is function entry */ +/* 'k' is register index */ + +/*****************************************************************************************/ +/* init_free_list */ +/* request for building the free list using HW accelerator */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_RDY_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_RDY_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_BSY_NO_REQUEST_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_BSY_NO_REQUEST_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_BSY_REQUEST_IN_PROGRESS_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_INIT_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_INIT_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_INIT_NUM_BN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_INIT_NUM_BN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_INIT_HEAD_BN_ADDR_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_INIT_HEAD_BN_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_OFFSET ( 0x00000000 ) + +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_INIT_FREE_LIST_OFFSET ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_READ( r ) READ_32( ( SBPM_BLOCK_REGS_INIT_FREE_LIST_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_INIT_FREE_LIST_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_INIT_FREE_LIST_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* ready */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* init_en */ + uint32_t init_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* init_num_bn */ + uint32_t init_num_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* init_head_bn_addr */ + uint32_t init_head_bn_addr : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_INIT_FREE_LIST ; +#else +typedef struct +{ uint32_t init_head_bn_addr : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* init_head_bn_addr */ + uint32_t init_num_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* init_num_bn */ + uint32_t init_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* init_en */ + uint32_t rsv : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ready */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_INIT_FREE_LIST ; +#endif + +/*****************************************************************************************/ +/* bn_alloc */ +/* request for a new buffer */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_BN_ALLOC_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_SA_SOURCE_ADDRESS_VALUE ( 0x6 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_SA_SOURCE_ADDRESS_VALUE_RESET_VALUE ( 0x6 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RSV1_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RSV1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_BN_ALLOC_OFFSET ( 0x00000004 ) + +#define SBPM_BLOCK_REGS_BN_ALLOC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_BN_ALLOC_OFFSET ) +#define SBPM_BLOCK_REGS_BN_ALLOC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_BN_ALLOC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_BN_ALLOC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_BN_ALLOC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* source_address */ + uint32_t sa : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_ALLOC ; +#else +typedef struct +{ uint32_t rsv1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t sa : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* source_address */ + uint32_t rsv2 : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_ALLOC ; +#endif + +/*****************************************************************************************/ +/* bn_alloc_rply */ +/* reply for a new buffer alloc */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_RDY_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_RDY_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_BUSY_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_BUSY_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_EXCL_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_EXCL_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_NACK_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_NACK_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_ACK_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_ACK_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_ALLOC_BN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_ALLOC_BN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_ALLOC_BN_VALID_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_ALLOC_BN_VALID_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_OFFSET ( 0x00000008 ) + +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_BN_ALLOC_RPLY_OFFSET ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_READ( r ) READ_32( ( SBPM_BLOCK_REGS_BN_ALLOC_RPLY_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_BN_ALLOC_RPLY_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_BN_ALLOC_RPLY_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rdy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t busy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* excl */ + uint32_t excl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* nack */ + uint32_t nack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack */ + uint32_t ack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_bn */ + uint32_t alloc_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_bn_valid */ + uint32_t alloc_bn_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_ALLOC_RPLY ; +#else +typedef struct +{ uint32_t alloc_bn_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_bn_valid */ + uint32_t alloc_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_bn */ + uint32_t ack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack */ + uint32_t nack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* nack */ + uint32_t excl : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* excl */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t busy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rdy */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_ALLOC_RPLY ; +#endif + +/*****************************************************************************************/ +/* bn_free_with_contxt_low */ +/* Request for freeing buffers of a packet offline with context (lower 32-bit) */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_RSV3_RSV2_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_RSV3_RSV2_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_OFFSET_OFFSET_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_OFFSET_OFFSET_VALUE_RESET_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_SA_SOURCE_ADDRESS_VALUE ( 0x6 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_SA_SOURCE_ADDRESS_VALUE_RESET_VALUE ( 0x6 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_RSV1_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_RSV1_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_HEAD_BN_HEAD_BN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_HEAD_BN_HEAD_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_OFFSET ( 0x0000000C ) + +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_OFFSET ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_READ( r ) READ_32( ( SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* offset */ + uint32_t offset : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv2 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* source_address */ + uint32_t sa : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* head_bn */ + uint32_t head_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW ; +#else +typedef struct +{ uint32_t head_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* head_bn */ + uint32_t rsv1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t sa : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* source_address */ + uint32_t rsv2 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t offset : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* offset */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW ; +#endif + +/*****************************************************************************************/ +/* bn_free_with_contxt_high */ +/* Request for freeing buffers of a packet offline with context (higher 32-bit) */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_RSV_RSERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_RSV_RSERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_LAST_BN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_LAST_BN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_OFFSET ( 0x00000010 ) + +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_OFFSET ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* last_BN */ + uint32_t last_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH ; +#else +typedef struct +{ uint32_t last_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* last_BN */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH ; +#endif + +/*****************************************************************************************/ +/* mcst_inc */ +/* Multicast counter increment. Contains the BN, which is head of the packet to be multi */ +/* cast and its counter value */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_MCST_INC_RSV2_RESERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_RSV2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_ACK_REQ_ACK_REQ_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_MCST_INC_ACK_REQ_ACK_REQ_VALUE_RESET_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_MCST_INC_MCST_VAL_MCST_VAL_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_MCST_VAL_MCST_VAL_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_RSV1_RSERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_RSV1_RSERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_BN_BN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_BN_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_MCST_INC_OFFSET ( 0x00000014 ) + +#define SBPM_BLOCK_REGS_MCST_INC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_MCST_INC_OFFSET ) +#define SBPM_BLOCK_REGS_MCST_INC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_MCST_INC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_MCST_INC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_MCST_INC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t rsv2 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack_req */ + uint32_t ack_req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_val */ + uint32_t mcst_val : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bufer_number */ + uint32_t bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_MCST_INC ; +#else +typedef struct +{ uint32_t bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bufer_number */ + uint32_t rsv1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t mcst_val : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_val */ + uint32_t ack_req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack_req */ + uint32_t rsv2 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_MCST_INC ; +#endif + +/*****************************************************************************************/ +/* mcst_inc_rply */ +/* mcst_inc_rply */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_RDY_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_RDY_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_BSY_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_BSY_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_MCST_ACK_MCST_ACK_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_MCST_ACK_MCST_ACK_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_OFFSET ( 0x00000018 ) + +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_MCST_INC_RPLY_OFFSET ) +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_READ( r ) READ_32( ( SBPM_BLOCK_REGS_MCST_INC_RPLY_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_MCST_INC_RPLY_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_MCST_INC_RPLY_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* ready */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_ack */ + uint32_t mcst_ack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_MCST_INC_RPLY ; +#else +typedef struct +{ uint32_t mcst_ack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_ack */ + uint32_t rsv : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ready */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_MCST_INC_RPLY ; +#endif + +/*****************************************************************************************/ +/* bn_connect */ +/* request for connection between two buffers in a linked list. The connection request m */ +/* ay be replied with ACK message if the ACK request bit is asserted. This command is u */ +/* sed as write command. */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_BN_CONNECT_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_WR_REQ_WR_REQ_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_WR_REQ_WR_REQ_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_ACK_REQ_ACK_REQ_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_ACK_REQ_ACK_REQ_VALUE_RESET_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_POINTED_BN_POINTED_BN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_POINTED_BN_POINTED_BN_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_BN_BN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_BN_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_BN_CONNECT_OFFSET ( 0x0000001C ) + +#define SBPM_BLOCK_REGS_BN_CONNECT_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_BN_CONNECT_OFFSET ) +#define SBPM_BLOCK_REGS_BN_CONNECT_READ( r ) READ_32( ( SBPM_BLOCK_REGS_BN_CONNECT_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_BN_CONNECT_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_BN_CONNECT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* wr_req */ + uint32_t wr_req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack_req */ + uint32_t ack_req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pointed_bn */ + uint32_t pointed_bn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn */ + uint32_t bn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_CONNECT ; +#else +typedef struct +{ uint32_t bn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn */ + uint32_t pointed_bn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pointed_bn */ + uint32_t ack_req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack_req */ + uint32_t wr_req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* wr_req */ + uint32_t rsv : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_CONNECT ; +#endif + +/*****************************************************************************************/ +/* bn_connect_rply */ +/* bn_connect_rply */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_RDY_READY_BIT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_RDY_READY_BIT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_BUSY_BUSY_BIT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_BUSY_BUSY_BIT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_CONNECT_ACK_CONNECT_ACK_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_CONNECT_ACK_CONNECT_ACK_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_OFFSET ( 0x00000020 ) + +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_BN_CONNECT_RPLY_OFFSET ) +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_READ( r ) READ_32( ( SBPM_BLOCK_REGS_BN_CONNECT_RPLY_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_BN_CONNECT_RPLY_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_BN_CONNECT_RPLY_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rdy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t busy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_ack */ + uint32_t connect_ack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_CONNECT_RPLY ; +#else +typedef struct +{ uint32_t connect_ack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_ack */ + uint32_t rsv : 29 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t busy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rdy */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_CONNECT_RPLY ; +#endif + +/*****************************************************************************************/ +/* get_next */ +/* a pointer to a buffer in a packet linked list and request for the next buffer in the */ +/* list this command is used as read command. */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_GET_NEXT_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_BN_BN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_BN_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_GET_NEXT_OFFSET ( 0x00000024 ) + +#define SBPM_BLOCK_REGS_GET_NEXT_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_GET_NEXT_OFFSET ) +#define SBPM_BLOCK_REGS_GET_NEXT_READ( r ) READ_32( ( SBPM_BLOCK_REGS_GET_NEXT_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_GET_NEXT_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_GET_NEXT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bufer_number */ + uint32_t bn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_GET_NEXT ; +#else +typedef struct +{ uint32_t bn : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bufer_number */ + uint32_t rsv : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_GET_NEXT ; +#endif + +/*****************************************************************************************/ +/* get_next_rply */ +/* get_next_rply */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_RDY_RDY_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_RDY_RDY_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_BUSY_BUSY_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_BUSY_BUSY_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_MCNT_VAL_MCNT_VAL_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_MCNT_VAL_MCNT_VAL_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_BN_NULL_BN_NULL_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_BN_NULL_BN_NULL_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_CONSTANT_CONSTANT_VALUE ( 0x8 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_CONSTANT_CONSTANT_VALUE_RESET_VALUE ( 0x8 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_NEXT_BN_NEXT_BN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_NEXT_BN_NEXT_BN_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_BN_VALID_BN_VALID_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_BN_VALID_BN_VALID_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_OFFSET ( 0x00000028 ) + +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_GET_NEXT_RPLY_OFFSET ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_READ( r ) READ_32( ( SBPM_BLOCK_REGS_GET_NEXT_RPLY_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_GET_NEXT_RPLY_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_GET_NEXT_RPLY_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rdy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t busy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcnt_val */ + uint32_t mcnt_val : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_null */ + uint32_t bn_null : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* constant */ + uint32_t constant : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* next_bn */ + uint32_t next_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_valid */ + uint32_t bn_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_GET_NEXT_RPLY ; +#else +typedef struct +{ uint32_t bn_valid : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_valid */ + uint32_t next_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* next_bn */ + uint32_t constant : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* constant */ + uint32_t bn_null : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_null */ + uint32_t mcnt_val : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcnt_val */ + uint32_t rsv : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t busy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rdy */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_GET_NEXT_RPLY ; +#endif + +/*****************************************************************************************/ +/* bn_free_without_contxt */ +/* bn_free_without_contxt */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_ACK_REQ_DEFAULT_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_ACK_REQ_DEFAULT_VALUE_RESET_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RSV2_RESERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RSV2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_SA_SOURCE_ADDRESS_VALUE ( 0x6 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_SA_SOURCE_ADDRESS_VALUE_RESET_VALUE ( 0x6 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RSV1_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_HEAD_BN_HEAD_BN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_HEAD_BN_HEAD_BN_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_OFFSET ( 0x00000038 ) + +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_OFFSET ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_READ( r ) READ_32( ( SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* ack_req */ + uint32_t ack_req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* source_address */ + uint32_t sa : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* head_bn */ + uint32_t head_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT ; +#else +typedef struct +{ uint32_t head_bn : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* head_bn */ + uint32_t rsv1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t sa : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* source_address */ + uint32_t rsv2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ack_req : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack_req */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT ; +#endif + +/*****************************************************************************************/ +/* bn_free_without_contxt_rply */ +/* bn_free_without_contxt_rply */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RDY_READY_BIT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RDY_READY_BIT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_BSY_BUSY_BIT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_BSY_BUSY_BIT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RSV2_RESERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RSV2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_EXCL_STAT_EXCL_STAT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_EXCL_STAT_EXCL_STAT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_NACK_STAT_NACK_STAT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_NACK_STAT_NACK_STAT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_ACK_STAT_ACK_STATUS_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_ACK_STAT_ACK_STATUS_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RSV1_RSERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RSV1_RSERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_FREE_ACK_FREE_ACK_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_FREE_ACK_FREE_ACK_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_OFFSET ( 0x0000003C ) + +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_OFFSET ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_READ( r ) READ_32( ( SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rdy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bsy */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* excl_stat */ + uint32_t excl_stat : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* nack_stat */ + uint32_t nack_stat : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack_stat */ + uint32_t ack_stat : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* free_ack */ + uint32_t free_ack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY ; +#else +typedef struct +{ uint32_t free_ack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* free_ack */ + uint32_t rsv1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ack_stat : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack_stat */ + uint32_t nack_stat : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* nack_stat */ + uint32_t excl_stat : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* excl_stat */ + uint32_t rsv2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t bsy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bsy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rdy */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY ; +#endif + +/*****************************************************************************************/ +/* bn_free_with_contxt_rply */ +/* bn_free_with_contxt_rply */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_RDY_READY_BIT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_RDY_READY_BIT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_BUSY_BUSY_BIT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_BUSY_BUSY_BIT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_RSV2_RESERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_RSV2_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_EXCL_STATE_EXCLUSIVE_STATUS_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_EXCL_STATE_EXCLUSIVE_STATUS_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_NACK_STATE_NACK_STATUS_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_NACK_STATE_NACK_STATUS_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_ACK_STATE_ACK_STATUS_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_ACK_STATE_ACK_STATUS_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_RSV1_RESERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_RSV1_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_FREE_ACK_FREE_ACK_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_FREE_ACK_FREE_ACK_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_OFFSET ( 0x00000040 ) + +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_OFFSET ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_READ( r ) READ_32( ( SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rdy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t busy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* excl_satate */ + uint32_t excl_state : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* nack_state */ + uint32_t nack_state : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack_state */ + uint32_t ack_state : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* free_ack */ + uint32_t free_ack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY ; +#else +typedef struct +{ uint32_t free_ack : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* free_ack */ + uint32_t rsv1 : 14 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ack_state : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ack_state */ + uint32_t nack_state : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* nack_state */ + uint32_t excl_state : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* excl_satate */ + uint32_t rsv2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t busy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* busy */ + uint32_t rdy : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rdy */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY ; +#endif + +/*****************************************************************************************/ +/* SBPM_SP_EN */ +/* Source Port enable of SBPM allows configuration of active (ENABLED) ports that have d */ +/* irect I/F to SBPM block. The client that was defined as disabled port (for example fi */ +/* eld of EMAC4 = 0x0) will state in NACK state always till it will be enabled. All BBH */ +/* ports that goes from disable to enable state gets ACK message vaa broad see (SBPM spe */ +/* c section 11.3.3) */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_SP_EN_RSV4_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH4_SP_EN_DISABLE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH4_SP_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH4_SP_EN_ENABLE_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH3_SP_EN_DISABLE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH3_SP_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH3_SP_EN_ENABLE_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH2_SP_EN_DISABLE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH2_SP_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH2_SP_EN_ENABLE_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH1_SP_EN_DISABLE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH1_SP_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH1_SP_EN_ENABLE_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH0_SP_EN_DISABLE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH0_SP_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ETH0_SP_EN_ENABLE_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_GPON_SP_EN_DISABLE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_GPON_SP_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_GPON_SP_EN_ENABLE_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_RNRB_SP_EN_DISABLE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_RNRB_SP_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_RNRB_SP_EN_ENABLE_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_RNRA_SP_EN_DISABLE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_RNRA_SP_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_RNRA_SP_EN_ENABLE_VALUE ( 0x1 ) + + +#define SBPM_BLOCK_REGS_SBPM_SP_EN_OFFSET ( 0x00000048 ) + +#define SBPM_BLOCK_REGS_SBPM_SP_EN_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_SP_EN_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_SP_EN_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_SP_EN_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_SP_EN_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv4 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_SP_EN */ + uint32_t eth4_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_SP_EN */ + uint32_t eth3_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_SP_EN */ + uint32_t eth2_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_SP_EN */ + uint32_t eth1_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH0_SP_EN */ + uint32_t eth0_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_SP_EN */ + uint32_t gpon_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_SP_EN */ + uint32_t rnrb_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_SP_EN */ + uint32_t rnra_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_SP_EN ; +#else +typedef struct +{ uint32_t rnra_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRA_SP_EN */ + uint32_t rnrb_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNRB_SP_EN */ + uint32_t gpon_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_SP_EN */ + uint32_t eth0_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH0_SP_EN */ + uint32_t eth1_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH1_SP_EN */ + uint32_t eth2_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH2_SP_EN */ + uint32_t eth3_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH3_SP_EN */ + uint32_t eth4_sp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ETH4_SP_EN */ + uint32_t rsv4 : 24 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_SP_EN ; +#endif + +/*****************************************************************************************/ +/* Global_Threshold */ +/* Global Threshold for Allocated Buffers. SBPM will issue BN in the accepted range upo */ +/* n to Global threshold setup. Ths register also holds global hysteresis value for ACK */ +/* /NACK transition setting */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_GL_BAH_GL_BAH_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_GL_BAH_GL_BAH_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_GL_BAT_GLOBAL_BUFFER_ALLOCATED_THRESHOLD_VALUE ( 0x3FF ) +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_GL_BAT_GLOBAL_BUFFER_ALLOCATED_THRESHOLD_VALUE_RESET_VALUE ( 0x3FF ) + + +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_OFFSET ( 0x0000004C ) + +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_GL_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_GL_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_GL_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_GL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv2 */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GL_BAH */ + uint32_t gl_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GL_BAT */ + uint32_t gl_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_GL_TRSH ; +#else +typedef struct +{ uint32_t gl_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GL_BAT */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv1 */ + uint32_t gl_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GL_BAH */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv2 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_GL_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG0_Threshold */ +/* Threshold for Allocated Buffers of UG0 Ths register also holds UG0 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_UG_BAH_UG0_BAH_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_UG_BAH_UG0_BAH_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_UG_BAT_UG0_BAT_VALUE ( 0x3FF ) +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_UG_BAT_UG0_BAT_VALUE_RESET_VALUE ( 0x3FF ) + + +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_OFFSET ( 0x00000050 ) + +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG0_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG0_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG0_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG0_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG0_TRSH ; +#else +typedef struct +{ uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG0_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG1_Threshold */ +/* Threshold for Allocated Buffers of UG1 Ths register also holds UG1 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_UG_BAH_UG0_BAH_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_UG_BAH_UG0_BAH_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_UG_BAT_UG0_BAT_VALUE ( 0x3FF ) +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_UG_BAT_UG0_BAT_VALUE_RESET_VALUE ( 0x3FF ) + + +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_OFFSET ( 0x00000054 ) + +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG1_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG1_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG1_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG1_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG1_TRSH ; +#else +typedef struct +{ uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG1_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG2_Threshold */ +/* Threshold for Allocated Buffers of UG2 Ths register also holds UG1 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_UG_BAH_UG0_BAH_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_UG_BAH_UG0_BAH_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_UG_BAT_UG0_BAT_VALUE ( 0x3FF ) +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_UG_BAT_UG0_BAT_VALUE_RESET_VALUE ( 0x3FF ) + + +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_OFFSET ( 0x00000058 ) + +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG2_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG2_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG2_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG2_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG2_TRSH ; +#else +typedef struct +{ uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG2_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG3_Threshold */ +/* Threshold for Allocated Buffers of UG3 Ths register also holds UG3 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_UG_BAH_UG0_BAH_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_UG_BAH_UG0_BAH_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_UG_BAT_UG0_BAT_VALUE ( 0x3FF ) +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_UG_BAT_UG0_BAT_VALUE_RESET_VALUE ( 0x3FF ) + + +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_OFFSET ( 0x0000005C ) + +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG3_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG3_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG3_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG3_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG3_TRSH ; +#else +typedef struct +{ uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG3_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG4_Threshold */ +/* Threshold for Allocated Buffers of UG4 Ths register also holds UG4 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_UG_BAH_UG0_BAH_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_UG_BAH_UG0_BAH_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_UG_BAT_UG0_BAT_VALUE ( 0x3FF ) +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_UG_BAT_UG0_BAT_VALUE_RESET_VALUE ( 0x3FF ) + + +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_OFFSET ( 0x00000060 ) + +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG4_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG4_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG4_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG4_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG4_TRSH ; +#else +typedef struct +{ uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG4_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG5_Threshold */ +/* Threshold for Allocated Buffers of UG5 Ths register also holds UG5 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_UG_BAH_UG0_BAH_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_UG_BAH_UG0_BAH_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_UG_BAT_UG0_BAT_VALUE ( 0x3FF ) +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_UG_BAT_UG0_BAT_VALUE_RESET_VALUE ( 0x3FF ) + + +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_OFFSET ( 0x00000064 ) + +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG5_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG5_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG5_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG5_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG5_TRSH ; +#else +typedef struct +{ uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG5_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG6_Threshold */ +/* Threshold for Allocated Buffers of UG6 Ths register also holds UG6 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_UG_BAH_UG0_BAH_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_UG_BAH_UG0_BAH_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_UG_BAT_UG0_BAT_VALUE ( 0x3FF ) +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_UG_BAT_UG0_BAT_VALUE_RESET_VALUE ( 0x3FF ) + + +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_OFFSET ( 0x00000068 ) + +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG6_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG6_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG6_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG6_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG6_TRSH ; +#else +typedef struct +{ uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG6_TRSH ; +#endif + +/*****************************************************************************************/ +/* UG7_Threshold */ +/* Threshold for Allocated Buffers of UG7 Ths register also holds UG6 hysteresis value */ +/* for ACK/NACK transition setting */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_UG_BAH_UG0_BAH_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_UG_BAH_UG0_BAH_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_UG_BAT_UG0_BAT_VALUE ( 0x3FF ) +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_UG_BAT_UG0_BAT_VALUE_RESET_VALUE ( 0x3FF ) + + +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_OFFSET ( 0x0000006C ) + +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG7_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG7_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG7_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG7_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG7_TRSH ; +#else +typedef struct +{ uint32_t ug_bat : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAT */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t ug_bah : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_BAH */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG7_TRSH ; +#endif + +/*****************************************************************************************/ +/* User_Group_map_register_0 */ +/* Each Source Port is mapped to specified UG. This register is using for mapping of SP */ +/* to UG0…7 */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_EMAC3_EMAC3_MAP_VALUE ( 0x7 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_EMAC3_EMAC3_MAP_VALUE_RESET_VALUE ( 0x7 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_EMAC2_EMAC2_MAP_VALUE ( 0x6 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_EMAC2_EMAC2_MAP_VALUE_RESET_VALUE ( 0x6 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_EMAC1_EMAC2_MAP_VALUE ( 0x5 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_EMAC1_EMAC2_MAP_VALUE_RESET_VALUE ( 0x5 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_EMAC0_EMAC0_MAP_VALUE ( 0x4 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_EMAC0_EMAC0_MAP_VALUE_RESET_VALUE ( 0x4 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_GPON_GPON_MAP_VALUE ( 0x3 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_GPON_GPON_MAP_VALUE_RESET_VALUE ( 0x3 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_RNRB_RNR_B_MAP_VALUE ( 0x2 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_RNRB_RNR_B_MAP_VALUE_RESET_VALUE ( 0x2 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_RNRA_RNR_A_MAP_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_RNRA_RNR_A_MAP_VALUE_RESET_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_CPU_CPU_MAP_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_CPU_CPU_MAP_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_OFFSET ( 0x00000070 ) + +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG_MAP_0_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG_MAP_0_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG_MAP_0_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG_MAP_0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* EMAC3_mapping */ + uint32_t emac3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC2_mapping */ + uint32_t emac2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC1_mapping */ + uint32_t emac1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC0_mapping */ + uint32_t emac0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_mapping */ + uint32_t gpon : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_B_mapping */ + uint32_t rnrb : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_A_mapping */ + uint32_t rnra : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CPU_mapping */ + uint32_t cpu : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG_MAP_0 ; +#else +typedef struct +{ uint32_t cpu : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CPU_mapping */ + uint32_t rnra : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_A_mapping */ + uint32_t rnrb : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RNR_B_mapping */ + uint32_t gpon : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPON_mapping */ + uint32_t emac0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC0_mapping */ + uint32_t emac1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC1_mapping */ + uint32_t emac2 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC2_mapping */ + uint32_t emac3 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC3_mapping */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG_MAP_0 ; +#endif + +/*****************************************************************************************/ +/* SBPM_dbg */ +/* SBPM select the debug bus */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_DBG_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_SEL_DBG_DEFUALT_VALUE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_SEL_DBG_DEFUALT_VALUE_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_DBG_OFFSET ( 0x00000074 ) + +#define SBPM_BLOCK_REGS_SBPM_DBG_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_DBG_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_DBG_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_DBG_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_DBG_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_DBG_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* select */ + uint32_t sel : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_DBG ; +#else +typedef struct +{ uint32_t sel : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* select */ + uint32_t rsv : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_DBG ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG0_BAC */ +/* SBPM UG0 allocated BN counter */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG0_BAC_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_BAC_UG0BAC_BAC_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_BAC_UG0BAC_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG0_BAC_OFFSET ( 0x00000078 ) + +#define SBPM_BLOCK_REGS_SBPM_UG0_BAC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG0_BAC_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG0_BAC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG0_BAC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG0_BAC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG0_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAC */ + uint32_t ug0bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG0_BAC ; +#else +typedef struct +{ uint32_t ug0bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_BAC */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG0_BAC ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG1_BAC */ +/* SBPM UG1 allocated BN Counter */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG1_BAC_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_BAC_UG1BAC_UG1BAC_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_BAC_UG1BAC_UG1BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG1_BAC_OFFSET ( 0x0000007C ) + +#define SBPM_BLOCK_REGS_SBPM_UG1_BAC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG1_BAC_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG1_BAC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG1_BAC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG1_BAC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG1_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t ug1bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG1_BAC ; +#else +typedef struct +{ uint32_t ug1bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG1_BAC ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG2_BAC */ +/* SBPM UG2 allocated BN Counter */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG2_BAC_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_BAC_UG2BAC_UG2_BAC_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_BAC_UG2BAC_UG2_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG2_BAC_OFFSET ( 0x00000080 ) + +#define SBPM_BLOCK_REGS_SBPM_UG2_BAC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG2_BAC_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG2_BAC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG2_BAC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG2_BAC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG2_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t ug2bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG2_BAC ; +#else +typedef struct +{ uint32_t ug2bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG2_BAC ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG3_BAC */ +/* SBPM UG3 allocated BN Counter */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG3_BAC_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_BAC_UG3BAC_UG3_BAC_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_BAC_UG3BAC_UG3_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG3_BAC_OFFSET ( 0x00000084 ) + +#define SBPM_BLOCK_REGS_SBPM_UG3_BAC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG3_BAC_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG3_BAC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG3_BAC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG3_BAC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG3_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG3_BAC */ + uint32_t ug3bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG3_BAC ; +#else +typedef struct +{ uint32_t ug3bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG3_BAC */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG3_BAC ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG4_BAC */ +/* SBPM UG4 allocated BN Counter */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG4_BAC_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_BAC_UG4BAC_UG4_BAC_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_BAC_UG4BAC_UG4_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG4_BAC_OFFSET ( 0x00000088 ) + +#define SBPM_BLOCK_REGS_SBPM_UG4_BAC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG4_BAC_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG4_BAC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG4_BAC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG4_BAC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG4_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t ug4bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG4_BAC ; +#else +typedef struct +{ uint32_t ug4bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG4_BAC ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG5_BAC */ +/* SBPM UG5 allocated BN Counter */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG5_BAC_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_BAC_UG5BAC_UG5_BAC_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_BAC_UG5BAC_UG5_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG5_BAC_OFFSET ( 0x0000008C ) + +#define SBPM_BLOCK_REGS_SBPM_UG5_BAC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG5_BAC_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG5_BAC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG5_BAC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG5_BAC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG5_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t ug5bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG5_BAC ; +#else +typedef struct +{ uint32_t ug5bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG5_BAC ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG6_BAC */ +/* SBPM UG6 allocated BN Counter */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG6_BAC_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_BAC_UG6BAC_UG6_BAC_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_BAC_UG6BAC_UG6_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG6_BAC_OFFSET ( 0x00000090 ) + +#define SBPM_BLOCK_REGS_SBPM_UG6_BAC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG6_BAC_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG6_BAC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG6_BAC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG6_BAC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG6_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t ug6bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG6_BAC ; +#else +typedef struct +{ uint32_t ug6bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG6_BAC ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG7_BAC */ +/* SBPM UG7 allocated BN Counter */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG7_BAC_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_BAC_UG7BAC_UG7_BAC_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_BAC_UG7BAC_UG7_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG7_BAC_OFFSET ( 0x00000094 ) + +#define SBPM_BLOCK_REGS_SBPM_UG7_BAC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG7_BAC_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG7_BAC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG7_BAC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG7_BAC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG7_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t ug7bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG7_BAC ; +#else +typedef struct +{ uint32_t ug7bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG7_BAC ; +#endif + +/*****************************************************************************************/ +/* SBPM_GL_BAC */ +/* SBPM global BN Counter */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_GL_BAC_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_GL_BAC_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_GL_BAC_BAC_BAC_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_GL_BAC_BAC_BAC_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_GL_BAC_OFFSET ( 0x00000098 ) + +#define SBPM_BLOCK_REGS_SBPM_GL_BAC_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_GL_BAC_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_GL_BAC_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_GL_BAC_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_GL_BAC_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_GL_BAC_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_GL_BAC ; +#else +typedef struct +{ uint32_t bac : 13 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BAC */ + uint32_t rsv : 19 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_GL_BAC ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG0_Exclusive_threshold */ +/* SBPM UG0 Exclusive high and hysteresis threshold */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_RSV2_RSV2_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_RSV2_RSV2_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x300 ) +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x300 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_OFFSET ( 0x0000009C ) + +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH ; +#else +typedef struct +{ uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG1_Exclusive_threshold */ +/* SBPM UG1 Exclusive high and hysteresis threshold */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_RSV2_RSV2_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_RSV2_RSV2_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x300 ) +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x300 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_OFFSET ( 0x00000100 ) + +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH ; +#else +typedef struct +{ uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG2_Exclusive_threshold */ +/* SBPM UG2 Exclusive high and hysteresis threshold */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_RSV2_RSV2_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_RSV2_RSV2_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x300 ) +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x300 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_OFFSET ( 0x00000104 ) + +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH ; +#else +typedef struct +{ uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG3_Exclusive_threshold */ +/* SBPM UG3 Exclusive high and hysteresis threshold */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_RSV2_RSV2_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_RSV2_RSV2_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x300 ) +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x300 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_OFFSET ( 0x00000108 ) + +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH ; +#else +typedef struct +{ uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG4_Exclusive_threshold */ +/* SBPM UG4 Exclusive high and hysteresis threshold */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_RSV2_RSV2_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_RSV2_RSV2_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x300 ) +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x300 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_OFFSET ( 0x0000010C ) + +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH ; +#else +typedef struct +{ uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG5_Exclusive_threshold */ +/* SBPM UG5 Exclusive high and hysteresis threshold */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_RSV2_RSV2_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_RSV2_RSV2_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x300 ) +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x300 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_OFFSET ( 0x00000110 ) + +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH ; +#else +typedef struct +{ uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG6_Exclusive_threshold */ +/* SBPM UG6 Exclusive high and hysteresis threshold */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_RSV2_RSV2_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_RSV2_RSV2_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x300 ) +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x300 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_OFFSET ( 0x00000114 ) + +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH ; +#else +typedef struct +{ uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* SBPM_UG7_Exclusive_threshold */ +/* SBPM UG7 Exclusive high and hysteresis threshold */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_RSV2_RSV2_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_RSV2_RSV2_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_EXCLH_EXCLUSIVE_HYSTERES_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x100 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE ( 0x300 ) +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_EXCLT_EXCLUSIVE_HIGH_THRESHOLD_FOR_ALLOCATED_BUFFERS_VALUE_RESET_VALUE ( 0x300 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_OFFSET ( 0x00000118 ) + +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH ; +#else +typedef struct +{ uint32_t exclt : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_high_threshold */ + uint32_t rsv : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t exclh : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* exclusive_histeresis_threshold */ + uint32_t rsv2 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH ; +#endif + +/*****************************************************************************************/ +/* User_Group_Status_register */ +/* This register is status set of all 8 Ugs: Ack/NACK state and in addition Exclusive st */ +/* ate pereach of 8 UGs */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_UG_EXCL_STTS_UG_STAT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_UG_EXCL_STTS_UG_STAT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_RSV1_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_UG_ACK_STTS_UG_STAT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_UG_ACK_STTS_UG_STAT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_OFFSET ( 0x0000011C ) + +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_UG_STATUS_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_UG_STATUS_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_UG_STATUS_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_UG_STATUS_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_EXCL_STTS */ + uint32_t ug_excl_stts : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_ACK_STTS */ + uint32_t ug_ack_stts : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG_STATUS ; +#else +typedef struct +{ uint32_t ug_ack_stts : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_ACK_STTS */ + uint32_t rsv1 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t ug_excl_stts : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG_EXCL_STTS */ + uint32_t rsv2 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_UG_STATUS ; +#endif + +/*****************************************************************************************/ +/* SBPM_runner_status_message_control_register */ +/* BPM runner status message control register */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_RNR_STAT_MSG_BASE_ADDR_BASE_ADDRESS_IN_RUNNER_FOR_STATUS_MESSAGE_SENDING_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_RNR_STAT_MSG_BASE_ADDR_BASE_ADDRESS_IN_RUNNER_FOR_STATUS_MESSAGE_SENDING_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_RNR_NUM_RUNNER_A_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_RNR_NUM_RUNNER_A_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_RNR_NUM_RUNNER_B_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_STAT_MSG_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_STAT_MSG_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_STAT_WKUP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_STAT_WKUP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_TASK_NUM_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_TASK_NUM_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_OFFSET ( 0x00000120 ) + +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* runner_status_message_base_addr */ + uint32_t rnr_stat_msg_base_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_num */ + uint32_t rnr_num : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* send_status_message_enable */ + uint32_t stat_msg_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* send_status_Wake_Up_enable */ + uint32_t stat_wkup_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL ; +#else +typedef struct +{ uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t stat_wkup_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* send_status_Wake_Up_enable */ + uint32_t stat_msg_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* send_status_message_enable */ + uint32_t rnr_num : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_num */ + uint32_t rnr_stat_msg_base_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* runner_status_message_base_addr */ + uint32_t rsv : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL ; +#endif + +/*****************************************************************************************/ +/* Runner_Target_address_for_Reply_message */ +/* Runner Target address for Reply message as results of Alloc request from Runner. The */ +/* register is for runner A and B */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_RNR_REPLY_MSG_BASE_ADDR_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_RNR_REPLY_MSG_BASE_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_OFFSET ( 0x00000124 ) + +#define SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Target_address_for_Runner_A_B */ + uint32_t rnr_reply_msg_base_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA ; +#else +typedef struct +{ uint32_t rnr_reply_msg_base_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Target_address_for_Runner_A_B */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA ; +#endif + +/*****************************************************************************************/ +/* sbpm_rnr_wkup_rply_set_0 */ +/* sbpm_rnr_wkup_rply_set 0 */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_MCST_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_MCST_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_GET_NEXT_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_GET_NEXT_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_CONNECT_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_CONNECT_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_ALLOC_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_ALLOC_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_TASK_NUM_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_TASK_NUM_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_OFFSET ( 0x00000128 ) + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_wake_up_en */ + uint32_t mcst_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_wake_up_en */ + uint32_t get_next_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_wake_up_en */ + uint32_t connect_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_wake_up_en */ + uint32_t alloc_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0 ; +#else +typedef struct +{ uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t alloc_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_wake_up_en */ + uint32_t connect_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_wake_up_en */ + uint32_t get_next_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_wake_up_en */ + uint32_t mcst_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_wake_up_en */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0 ; +#endif + +/*****************************************************************************************/ +/* sbpm_rnr_wkup_rply_set_1 */ +/* sbpm_rnr_wkup_rply_set 1 */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_MCST_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_MCST_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_GET_NEXT_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_GET_NEXT_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_CONNECT_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_CONNECT_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_ALLOC_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_ALLOC_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_TASK_NUM_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_TASK_NUM_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_OFFSET ( 0x0000012C ) + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_wake_up_en */ + uint32_t mcst_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_wake_up_en */ + uint32_t get_next_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_wake_up_en */ + uint32_t connect_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_wake_up_en */ + uint32_t alloc_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1 ; +#else +typedef struct +{ uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t alloc_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_wake_up_en */ + uint32_t connect_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_wake_up_en */ + uint32_t get_next_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_wake_up_en */ + uint32_t mcst_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_wake_up_en */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1 ; +#endif + +/*****************************************************************************************/ +/* sbpm_rnr_wkup_rply_set_2 */ +/* sbpm_rnr_wkup_rply_set 2 */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_MCST_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_MCST_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_GET_NEXT_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_GET_NEXT_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_CONNECT_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_CONNECT_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_ALLOC_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_ALLOC_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_TASK_NUM_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_TASK_NUM_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_OFFSET ( 0x00000130 ) + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_wake_up_en */ + uint32_t mcst_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_wake_up_en */ + uint32_t get_next_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_wake_up_en */ + uint32_t connect_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_wake_up_en */ + uint32_t alloc_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2 ; +#else +typedef struct +{ uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t alloc_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_wake_up_en */ + uint32_t connect_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_wake_up_en */ + uint32_t get_next_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_wake_up_en */ + uint32_t mcst_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_wake_up_en */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2 ; +#endif + +/*****************************************************************************************/ +/* sbpm_rnr_wkup_rply_set_3 */ +/* sbpm_rnr_wkup_rply_set 3 */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_MCST_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_MCST_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_GET_NEXT_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_GET_NEXT_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_CONNECT_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_CONNECT_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_ALLOC_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_ALLOC_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_TASK_NUM_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_TASK_NUM_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_OFFSET ( 0x00000134 ) + +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_wake_up_en */ + uint32_t mcst_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_wake_up_en */ + uint32_t get_next_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_wake_up_en */ + uint32_t connect_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_wake_up_en */ + uint32_t alloc_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3 ; +#else +typedef struct +{ uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t alloc_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_wake_up_en */ + uint32_t connect_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_wake_up_en */ + uint32_t get_next_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_wake_up_en */ + uint32_t mcst_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_wake_up_en */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3 ; +#endif + +/*****************************************************************************************/ +/* error_handling_params */ +/* Parameters and thresholds used for Error handling: error detection, max search enable */ +/* and threshold, etc. */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_RSV_RESERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_RSV_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_FREEZE_IN_ERROR_FREEZE_EN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_FREEZE_IN_ERROR_FREEZE_EN_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_CHCK_LAST_EN_CHCK_LAST_EN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_CHCK_LAST_EN_CHCK_LAST_EN_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_MAX_SEARCH_EN_MAX_SEARCH_EN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_MAX_SEARCH_EN_MAX_SEARCH_EN_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_SEARCH_DEPTH_SEARCH_DEPTH_VALUE ( 0x4 ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_SEARCH_DEPTH_SEARCH_DEPTH_VALUE_RESET_VALUE ( 0x4 ) + + +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_OFFSET ( 0x00000138 ) + +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_OFFSET ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_READ( r ) READ_32( ( SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* freeze_in_error */ + uint32_t freeze_in_error : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* chck_last_en */ + uint32_t chck_last_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* max_search_en */ + uint32_t max_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* search_depth */ + uint32_t search_depth : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS ; +#else +typedef struct +{ uint32_t search_depth : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* search_depth */ + uint32_t max_search_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* max_search_en */ + uint32_t chck_last_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* chck_last_en */ + uint32_t freeze_in_error : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* freeze_in_error */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS ; +#endif + +/*****************************************************************************************/ +/* SBPM_ISR */ +/* SBPM ISR (Interrupt Status register) */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_ISR_RSV_RESERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ISR_RSV_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ISR_MAX_SEARCH_ERR_MAX_SEARCH_ERR_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ISR_MAX_SEARCH_ERR_MAX_SEARCH_ERR_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ISR_CHECK_LAST_ERR_CHECK_LAST_ERR_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ISR_CHECK_LAST_ERR_CHECK_LAST_ERR_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ISR_MCST_OVERFLOW_MC_OVERFLOW_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ISR_MCST_OVERFLOW_MC_OVERFLOW_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ISR_BAC_UNDERRUN_BAC_UNDERRUN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ISR_BAC_UNDERRUN_BAC_UNDERRUN_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_ISR_OFFSET ( 0x0000013C ) + +#define SBPM_BLOCK_REGS_SBPM_ISR_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_ISR_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_ISR_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_ISR_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_ISR_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_ISR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t rsv : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* max_search_err */ + uint32_t max_search_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* check_last_err */ + uint32_t check_last_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_overflow */ + uint32_t mcst_overflow : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bac_underrun */ + uint32_t bac_underrun : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_ISR ; +#else +typedef struct +{ uint32_t bac_underrun : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bac_underrun */ + uint32_t mcst_overflow : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_overflow */ + uint32_t check_last_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* check_last_err */ + uint32_t max_search_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* max_search_err */ + uint32_t rsv : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_ISR ; +#endif + +/*****************************************************************************************/ +/* SBPM_IER */ +/* SBPM IER (Interrupt Enable register) */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_IER_RSV_RESRVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_RSV_RESRVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_NULL_CONNECT_IRQ_EN_NULL_CONNECT_IRQ_EN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_NULL_CONNECT_IRQ_EN_NULL_CONNECT_IRQ_EN_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_MAX_SRCH_ERR_IRQ_EN_MAX_SRCH_ERR_IRQ_EN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_MAX_SRCH_ERR_IRQ_EN_MAX_SRCH_ERR_IRQ_EN_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_LAST_ERR_IRQ_EN_LAST_ERR_IRQ_EN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_LAST_ERR_IRQ_EN_LAST_ERR_IRQ_EN_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_MCST_OVERFLW_IRQ_EN__MCST_OVERFLW_IRQ_EN__VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_MCST_OVERFLW_IRQ_EN__MCST_OVERFLW_IRQ_EN__VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_BAC_UNDERRUN_IRQ_EN_BAC_UNDERRUN_IRQ_EN_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IER_BAC_UNDERRUN_IRQ_EN_BAC_UNDERRUN_IRQ_EN_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_IER_OFFSET ( 0x00000140 ) + +#define SBPM_BLOCK_REGS_SBPM_IER_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_IER_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_IER_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_IER_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_IER_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_IER_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t rsv : 27 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* null_connect_irq_en */ + uint32_t null_connect_irq_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* max_srch_err_irq_en */ + uint32_t max_srch_err_irq_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* last_err_irq_en */ + uint32_t last_err_irq_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_overflow_irq_en */ + uint32_t mcst_overflw_irq_en_ : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bac_underrun_irq_en */ + uint32_t bac_underrun_irq_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_IER ; +#else +typedef struct +{ uint32_t bac_underrun_irq_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bac_underrun_irq_en */ + uint32_t mcst_overflw_irq_en_ : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_overflow_irq_en */ + uint32_t last_err_irq_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* last_err_irq_en */ + uint32_t max_srch_err_irq_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* max_srch_err_irq_en */ + uint32_t null_connect_irq_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* null_connect_irq_en */ + uint32_t rsv : 27 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_IER ; +#endif + +/*****************************************************************************************/ +/* SBPM_ITR */ +/* SBPM ITR (Interrupt test register) */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_ITR_RSV_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ITR_RSV_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ITR_MAX_SRCH_ERR_TEST_IRQ_MAX_SRCH_ERR_TEST_IRQ_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ITR_MAX_SRCH_ERR_TEST_IRQ_MAX_SRCH_ERR_TEST_IRQ_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ITR_LAST_ERR_TEST_IRQ_LAST_ERR_TEST_IRQ_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ITR_LAST_ERR_TEST_IRQ_LAST_ERR_TEST_IRQ_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ITR_MCST_OVERFLOW_TEST_IRQ_MCST_OVERFLOW_TEST_IRQ_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ITR_MCST_OVERFLOW_TEST_IRQ_MCST_OVERFLOW_TEST_IRQ_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ITR_BAC_UNDERRUN_TEST_IRQ_BAC_UNDERRUN_TEST_IRQ_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_ITR_BAC_UNDERRUN_TEST_IRQ_BAC_UNDERRUN_TEST_IRQ_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_ITR_OFFSET ( 0x00000144 ) + +#define SBPM_BLOCK_REGS_SBPM_ITR_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_ITR_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_ITR_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_ITR_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_ITR_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_ITR_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t rsv : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* max_srch_err_test_irq */ + uint32_t max_srch_err_test_irq : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* last_err_test_irq */ + uint32_t last_err_test_irq : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_overflow_test_irq */ + uint32_t mcst_overflow_test_irq : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bac_underrun_test_irq */ + uint32_t bac_underrun_test_irq : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_ITR ; +#else +typedef struct +{ uint32_t bac_underrun_test_irq : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bac_underrun_test_irq */ + uint32_t mcst_overflow_test_irq : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_overflow_test_irq */ + uint32_t last_err_test_irq : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* last_err_test_irq */ + uint32_t max_srch_err_test_irq : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* max_srch_err_test_irq */ + uint32_t rsv : 28 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_ITR ; +#endif + +/*****************************************************************************************/ +/* SBPM_IIR_low_register */ +/* SBPM IIR low (Interrupt information register) */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_IIR_LOW_CMD_DATA_22TO0_CMD_DATA_22_TO0_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IIR_LOW_CMD_DATA_22TO0_CMD_DATA_22_TO0_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IIR_LOW_CMD_TA_CMD_TA_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IIR_LOW_CMD_TA_CMD_TA_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IIR_LOW_CMD_SA_CMD_SA_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IIR_LOW_CMD_SA_CMD_SA_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_IIR_LOW_OFFSET ( 0x00000148 ) + +#define SBPM_BLOCK_REGS_SBPM_IIR_LOW_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_IIR_LOW_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_IIR_LOW_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_IIR_LOW_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_IIR_LOW_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_IIR_LOW_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* cmd_data_22to0 */ + uint32_t cmd_data_22to0 : 23 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cmd_ta */ + uint32_t cmd_ta : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cmd_sa */ + uint32_t cmd_sa : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_IIR_LOW ; +#else +typedef struct +{ uint32_t cmd_sa : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cmd_sa */ + uint32_t cmd_ta : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cmd_ta */ + uint32_t cmd_data_22to0 : 23 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cmd_data_22to0 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_IIR_LOW ; +#endif + +/*****************************************************************************************/ +/* SBPM_IIR_high_register */ +/* SBPM IIR high (Interrupt information register) */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_IIR_HIGH_RSV_CMD_UG_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IIR_HIGH_RSV_CMD_UG_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IIR_HIGH_CMD_DATA_23TO42_CMD_DATA_23TO39_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_IIR_HIGH_CMD_DATA_23TO42_CMD_DATA_23TO39_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_IIR_HIGH_OFFSET ( 0x0000014C ) + +#define SBPM_BLOCK_REGS_SBPM_IIR_HIGH_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_IIR_HIGH_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_IIR_HIGH_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_IIR_HIGH_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_IIR_HIGH_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_IIR_HIGH_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cmd_data_23to39 */ + uint32_t cmd_data_23to42 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_IIR_HIGH ; +#else +typedef struct +{ uint32_t cmd_data_23to42 : 20 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* cmd_data_23to39 */ + uint32_t rsv : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_IIR_HIGH ; +#endif + +/*****************************************************************************************/ +/* SBPM_DBG_VEC0 */ +/* SBPM debug vector0 includes 21 bit of control/state machine of CMD pipe */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_RSV_RESERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_RSV_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_RX_FIFO_SA_SA_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_RX_FIFO_SA_SA_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_GN_CNXT_SM_STATE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_GN_CNXT_SM_STATE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_FREE_WO_CNXT_SM_STATE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_FREE_WO_CNXT_SM_STATE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_FREE_W_CNXT_SM_STATE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_FREE_W_CNXT_SM_STATE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_MCINT_SM_STATE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_MCINT_SM_STATE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_CNNCT_SM_STATE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_CNNCT_SM_STATE_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_ALLOC_SM_STATE_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_ALLOC_SM_STATE_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_OFFSET ( 0x00000150 ) + +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_DBG_VEC0_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_DBG_VEC0_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC0_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_DBG_VEC0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t rsv : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RX_FIFO_SA */ + uint32_t rx_fifo_sa : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GN_CNXT_SM */ + uint32_t gn_cnxt_sm : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FREE_WO_CNXT_SM */ + uint32_t free_wo_cnxt_sm : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FREE_W_CNXT_SM */ + uint32_t free_w_cnxt_sm : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MCINC_SM */ + uint32_t mcint_sm : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CNNCT_SM */ + uint32_t cnnct_sm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ALLOC_SM */ + uint32_t alloc_sm : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_DBG_VEC0 ; +#else +typedef struct +{ uint32_t alloc_sm : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ALLOC_SM */ + uint32_t cnnct_sm : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CNNCT_SM */ + uint32_t mcint_sm : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MCINC_SM */ + uint32_t free_w_cnxt_sm : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FREE_W_CNXT_SM */ + uint32_t free_wo_cnxt_sm : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* FREE_WO_CNXT_SM */ + uint32_t gn_cnxt_sm : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GN_CNXT_SM */ + uint32_t rx_fifo_sa : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RX_FIFO_SA */ + uint32_t rsv : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_DBG_VEC0 ; +#endif + +/*****************************************************************************************/ +/* SBPM_DBG_VEC1 */ +/* SBPM debug vector1 includes 21 bit of control/state machine of CMD pipe */ +/* */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC1_RSV_RESERVED_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC1_RSV_RESERVED_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC1_RX_FIFO_DATA_SA_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC1_RX_FIFO_DATA_SA_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC1_RX_FIFO_TA_SA_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC1_RX_FIFO_TA_SA_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC1_OFFSET ( 0x00000154 ) + +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC1_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_DBG_VEC1_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC1_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_DBG_VEC1_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_DBG_VEC1_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_DBG_VEC1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t rsv : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RX_FIFO_DATA */ + uint32_t rx_fifo_data : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RX_FIFO_TA */ + uint32_t rx_fifo_ta : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_DBG_VEC1 ; +#else +typedef struct +{ uint32_t rx_fifo_ta : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RX_FIFO_TA */ + uint32_t rx_fifo_data : 18 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RX_FIFO_DATA */ + uint32_t rsv : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_DBG_VEC1 ; +#endif + +/*****************************************************************************************/ +/* Route_Address0__config */ +/* Route Address 0 config includes ETH0/1 RX/TX */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_RADDR_0_RSV4_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_0_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_0_ETH1_TX_RADDR_ETH1_TX_RADDR_VALUE ( 0x2F ) +#define SBPM_BLOCK_REGS_RADDR_0_ETH1_TX_RADDR_ETH1_TX_RADDR_VALUE_RESET_VALUE ( 0x2F ) +#define SBPM_BLOCK_REGS_RADDR_0_RSV3_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_0_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_0_ETH1_RX_RADDR_ETH1_RX_RADDR_VALUE ( 0xF ) +#define SBPM_BLOCK_REGS_RADDR_0_ETH1_RX_RADDR_ETH1_RX_RADDR_VALUE_RESET_VALUE ( 0xF ) +#define SBPM_BLOCK_REGS_RADDR_0_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_0_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_0_ETH0_TX_RADDR_ETH0_TX_RADDR_VALUE ( 0x3F ) +#define SBPM_BLOCK_REGS_RADDR_0_ETH0_TX_RADDR_ETH0_TX_RADDR_VALUE_RESET_VALUE ( 0x3F ) +#define SBPM_BLOCK_REGS_RADDR_0_RSV1_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_0_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_0_ETH0_RX_RADDR_ETH0_RX_RADDR_VALUE ( 0x1F ) +#define SBPM_BLOCK_REGS_RADDR_0_ETH0_RX_RADDR_ETH0_RX_RADDR_VALUE_RESET_VALUE ( 0x1F ) + + +#define SBPM_BLOCK_REGS_RADDR_0_OFFSET ( 0x00000158 ) + +#define SBPM_BLOCK_REGS_RADDR_0_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_RADDR_0_OFFSET ) +#define SBPM_BLOCK_REGS_RADDR_0_READ( r ) READ_32( ( SBPM_BLOCK_REGS_RADDR_0_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_RADDR_0_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_RADDR_0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth1_tx_raddr */ + uint32_t eth1_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth1_rx_raddr */ + uint32_t eth1_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth0_tx_raddr */ + uint32_t eth0_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth0_rx_raddr */ + uint32_t eth0_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_RADDR_0 ; +#else +typedef struct +{ uint32_t eth0_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth0_rx_raddr */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t eth0_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth0_tx_raddr */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t eth1_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth1_rx_raddr */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t eth1_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth1_tx_raddr */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_RADDR_0 ; +#endif + +/*****************************************************************************************/ +/* Route_Address1__config */ +/* Route Address 1 config includes ETH2/3 RX/TX reg */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_RADDR_1_RSV4_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_1_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_1_ETH3_TX_RADDR_ETH3_TX_RADDR_VALUE ( 0x29 ) +#define SBPM_BLOCK_REGS_RADDR_1_ETH3_TX_RADDR_ETH3_TX_RADDR_VALUE_RESET_VALUE ( 0x29 ) +#define SBPM_BLOCK_REGS_RADDR_1_RSV3_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_1_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_1_ETH3_RX_RADDR_ETH3_RX_ADDR_VALUE ( 0x9 ) +#define SBPM_BLOCK_REGS_RADDR_1_ETH3_RX_RADDR_ETH3_RX_ADDR_VALUE_RESET_VALUE ( 0x9 ) +#define SBPM_BLOCK_REGS_RADDR_1_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_1_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_1_ETH2_TX_RADDR_ETH2_TX_RADDR_VALUE ( 0x37 ) +#define SBPM_BLOCK_REGS_RADDR_1_ETH2_TX_RADDR_ETH2_TX_RADDR_VALUE_RESET_VALUE ( 0x37 ) +#define SBPM_BLOCK_REGS_RADDR_1_RSV1_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_1_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_1_ETH2_RX_RADDR_ETH2_RX_RADDR_VALUE ( 0x17 ) +#define SBPM_BLOCK_REGS_RADDR_1_ETH2_RX_RADDR_ETH2_RX_RADDR_VALUE_RESET_VALUE ( 0x17 ) + + +#define SBPM_BLOCK_REGS_RADDR_1_OFFSET ( 0x0000015C ) + +#define SBPM_BLOCK_REGS_RADDR_1_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_RADDR_1_OFFSET ) +#define SBPM_BLOCK_REGS_RADDR_1_READ( r ) READ_32( ( SBPM_BLOCK_REGS_RADDR_1_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_RADDR_1_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_RADDR_1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth3_tx_raddr */ + uint32_t eth3_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth3_rx_raddr */ + uint32_t eth3_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth2_tx_raddr */ + uint32_t eth2_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth2_rx_raddr */ + uint32_t eth2_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_RADDR_1 ; +#else +typedef struct +{ uint32_t eth2_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth2_rx_raddr */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t eth2_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth2_tx_raddr */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t eth3_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth3_rx_raddr */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t eth3_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth3_tx_raddr */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_RADDR_1 ; +#endif + +/*****************************************************************************************/ +/* Route_Address2__config */ +/* Route Address 2 config includes GPON/ETH4 RX/Txreg */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_RADDR_2_RSV4_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_2_RSV4_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_2_ETH4_TX_RADDR_ETH4_TX_RADDR_VALUE ( 0x31 ) +#define SBPM_BLOCK_REGS_RADDR_2_ETH4_TX_RADDR_ETH4_TX_RADDR_VALUE_RESET_VALUE ( 0x31 ) +#define SBPM_BLOCK_REGS_RADDR_2_RSV3_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_2_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_2_ETH4_RX_RADDR_ETH4_RX_ADDR_VALUE ( 0x11 ) +#define SBPM_BLOCK_REGS_RADDR_2_ETH4_RX_RADDR_ETH4_RX_ADDR_VALUE_RESET_VALUE ( 0x11 ) +#define SBPM_BLOCK_REGS_RADDR_2_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_2_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_2_GPON_TX_RADDR_GPON_TX_RADDR_VALUE ( 0x21 ) +#define SBPM_BLOCK_REGS_RADDR_2_GPON_TX_RADDR_GPON_TX_RADDR_VALUE_RESET_VALUE ( 0x21 ) +#define SBPM_BLOCK_REGS_RADDR_2_RSV1_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_2_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_2_GPON_RX_RADDR_GPON_RX_RADDR_VALUE ( 0x1 ) +#define SBPM_BLOCK_REGS_RADDR_2_GPON_RX_RADDR_GPON_RX_RADDR_VALUE_RESET_VALUE ( 0x1 ) + + +#define SBPM_BLOCK_REGS_RADDR_2_OFFSET ( 0x00000160 ) + +#define SBPM_BLOCK_REGS_RADDR_2_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_RADDR_2_OFFSET ) +#define SBPM_BLOCK_REGS_RADDR_2_READ( r ) READ_32( ( SBPM_BLOCK_REGS_RADDR_2_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_RADDR_2_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_RADDR_2_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth4_tx_raddr */ + uint32_t eth4_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth4_rx_raddr */ + uint32_t eth4_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gpon_tx_raddr */ + uint32_t gpon_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gpon_rx_raddr */ + uint32_t gpon_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_RADDR_2 ; +#else +typedef struct +{ uint32_t gpon_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gpon_rx_raddr */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t gpon_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gpon_tx_raddr */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t eth4_rx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth4_rx_raddr */ + uint32_t rsv3 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t eth4_tx_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eth4_tx_raddr */ + uint32_t rsv4 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_RADDR_2 ; +#endif + +/*****************************************************************************************/ +/* Route_Address3__config */ +/* Route Address 3 config reg includes definition of route address of Runner A/B */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_RADDR_3_RSV3_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_3_RSV3_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_3_MIPSD_RADDR_MIPSD_RADDR_VALUE ( 0x6 ) +#define SBPM_BLOCK_REGS_RADDR_3_MIPSD_RADDR_MIPSD_RADDR_VALUE_RESET_VALUE ( 0x6 ) +#define SBPM_BLOCK_REGS_RADDR_3_RSV2_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_3_RSV2_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_3_RNRB_RADDR_RNRB_RADDR_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_3_RNRB_RADDR_RNRB_RADDR_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_3_RSV1_RSV_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_3_RSV1_RSV_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_RADDR_3_RNRA_RADDR_RNRA_RADDR_VALUE ( 0x2 ) +#define SBPM_BLOCK_REGS_RADDR_3_RNRA_RADDR_RNRA_RADDR_VALUE_RESET_VALUE ( 0x2 ) + + +#define SBPM_BLOCK_REGS_RADDR_3_OFFSET ( 0x00000164 ) + +#define SBPM_BLOCK_REGS_RADDR_3_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_RADDR_3_OFFSET ) +#define SBPM_BLOCK_REGS_RADDR_3_READ( r ) READ_32( ( SBPM_BLOCK_REGS_RADDR_3_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_RADDR_3_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_RADDR_3_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv3 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mipsd_raddr */ + uint32_t mipsd_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rnrb_raddr */ + uint32_t rnrb_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rnra_raddr */ + uint32_t rnra_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_RADDR_3 ; +#else +typedef struct +{ uint32_t rnra_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rnra_raddr */ + uint32_t rsv1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t rnrb_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rnrb_raddr */ + uint32_t rsv2 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ + uint32_t mipsd_raddr : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mipsd_raddr */ + uint32_t rsv3 : 9 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_RADDR_3 ; +#endif + +/*****************************************************************************************/ +/* User_Group_mapping_register_1 */ +/* Configuration of mappins source ports to User G */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_SPARE1_SPARE1_MAP_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_SPARE1_SPARE1_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_SPARE0_SPARE0_MAP_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_SPARE0_SPARE0_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_USB1_USB_MAP_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_USB1_USB_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_USB0_USB_MAP_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_USB0_USB_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_PCIE1_PCIE1_MAP_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_PCIE1_PCIE1_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_PCIE0_PCIE0_MAP_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_PCIE0_PCIE0_MAP_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_MIPSD_EMAC4_MAPPING_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_MIPSD_EMAC4_MAPPING_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_EMAC4_EMAC4_MAPPING_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_EMAC4_EMAC4_MAPPING_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_OFFSET ( 0x00000168 ) + +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_UG_MAP_REG_1_OFFSET ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_READ( r ) READ_32( ( SBPM_BLOCK_REGS_UG_MAP_REG_1_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_UG_MAP_REG_1_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_UG_MAP_REG_1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* spare1_map */ + uint32_t spare1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* spare0_map */ + uint32_t spare0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USB1_map */ + uint32_t usb1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USB0_map */ + uint32_t usb0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE1_map */ + uint32_t pcie1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE0_map */ + uint32_t pcie0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MIPSD_map */ + uint32_t mipsd : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC4_map */ + uint32_t emac4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_UG_MAP_REG_1 ; +#else +typedef struct +{ uint32_t emac4 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* EMAC4_map */ + uint32_t mipsd : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MIPSD_map */ + uint32_t pcie0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE0_map */ + uint32_t pcie1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* PCIE1_map */ + uint32_t usb0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USB0_map */ + uint32_t usb1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* USB1_map */ + uint32_t spare0 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* spare0_map */ + uint32_t spare1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* spare1_map */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_UG_MAP_REG_1 ; +#endif + +/*****************************************************************************************/ +/* MIPSD_Target_address_for_Reply_message */ +/* MIPSD Target address for Reply message as results of Alloc request from MIPSD. */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_MIPSD_REPLY_MSG_BASE_ADDR_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_MIPSD_REPLY_MSG_BASE_ADDR_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_OFFSET ( 0x0000016C ) + +#define SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Target_address_for_MIPSD */ + uint32_t mipsd_reply_msg_base_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA ; +#else +typedef struct +{ uint32_t mipsd_reply_msg_base_addr : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Target_address_for_MIPSD */ + uint32_t rsv : 16 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA ; +#endif + +/*****************************************************************************************/ +/* sbpm_mipsd_wkup_rply_set */ +/* sbpm_mipsd_wkup_rply_set */ +/*****************************************************************************************/ + +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_RSV_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_RSV_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_MCST_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_MCST_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_GET_NEXT_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_GET_NEXT_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_CONNECT_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_CONNECT_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_ALLOC_WAKE_UP_EN_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_ALLOC_WAKE_UP_EN_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_TASK_NUM_DEFAULT_VALUE ( 0x0 ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_TASK_NUM_DEFAULT_VALUE_RESET_VALUE ( 0x0 ) + + +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_OFFSET ( 0x00000170 ) + +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_ADDRESS ( SBPM_BLOCK_REGS_ADDRESS + SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_OFFSET ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_READ( r ) READ_32( ( SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_ADDRESS ), (r) ) +#define SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_WRITE( v ) WRITE_32( ( SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* rsv */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_wake_up_en */ + uint32_t mcst_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_wake_up_en */ + uint32_t get_next_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_wake_up_en */ + uint32_t connect_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_wake_up_en */ + uint32_t alloc_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET ; +#else +typedef struct +{ uint32_t task_num : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* task_number */ + uint32_t alloc_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* alloc_wake_up_en */ + uint32_t connect_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* connect_wake_up_en */ + uint32_t get_next_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_wake_up_en */ + uint32_t mcst_wake_up_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_wake_up_en */ + uint32_t rsv : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* rsv */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET ; +#endif + +typedef struct +{ + /* init_free_list */ + SBPM_BLOCK_REGS_INIT_FREE_LIST init_free_list __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_alloc */ + SBPM_BLOCK_REGS_BN_ALLOC bn_alloc __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_alloc_rply */ + SBPM_BLOCK_REGS_BN_ALLOC_RPLY bn_alloc_rply __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_free_with_contxt_low */ + SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_LOW bn_free_with_contxt_low __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_free_with_contxt_high */ + SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_HIGH bn_free_with_contxt_high __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_inc */ + SBPM_BLOCK_REGS_MCST_INC mcst_inc __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mcst_inc_rply */ + SBPM_BLOCK_REGS_MCST_INC_RPLY mcst_inc_rply __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_connect */ + SBPM_BLOCK_REGS_BN_CONNECT bn_connect __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_connect_rply */ + SBPM_BLOCK_REGS_BN_CONNECT_RPLY bn_connect_rply __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next */ + SBPM_BLOCK_REGS_GET_NEXT get_next __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* get_next_rply */ + SBPM_BLOCK_REGS_GET_NEXT_RPLY get_next_rply __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 12 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_free_without_contxt */ + SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT bn_free_without_contxt __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_free_without_contxt_rply */ + SBPM_BLOCK_REGS_BN_FREE_WITHOUT_CONTXT_RPLY bn_free_without_contxt_rply __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* bn_free_with_contxt_rply */ + SBPM_BLOCK_REGS_BN_FREE_WITH_CONTXT_RPLY bn_free_with_contxt_rply __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 4 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_SP_EN */ + SBPM_BLOCK_REGS_SBPM_SP_EN sbpm_sp_en __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Global_Threshold */ + SBPM_BLOCK_REGS_SBPM_GL_TRSH sbpm_gl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG0_Threshold */ + SBPM_BLOCK_REGS_SBPM_UG0_TRSH sbpm_ug0_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG1_Threshold */ + SBPM_BLOCK_REGS_SBPM_UG1_TRSH sbpm_ug1_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG2_Threshold */ + SBPM_BLOCK_REGS_SBPM_UG2_TRSH sbpm_ug2_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG3_Threshold */ + SBPM_BLOCK_REGS_SBPM_UG3_TRSH sbpm_ug3_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG4_Threshold */ + SBPM_BLOCK_REGS_SBPM_UG4_TRSH sbpm_ug4_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG5_Threshold */ + SBPM_BLOCK_REGS_SBPM_UG5_TRSH sbpm_ug5_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG6_Threshold */ + SBPM_BLOCK_REGS_SBPM_UG6_TRSH sbpm_ug6_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UG7_Threshold */ + SBPM_BLOCK_REGS_SBPM_UG7_TRSH sbpm_ug7_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_map_register_0 */ + SBPM_BLOCK_REGS_SBPM_UG_MAP_0 sbpm_ug_map_0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_dbg */ + SBPM_BLOCK_REGS_SBPM_DBG sbpm_dbg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG0_BAC */ + SBPM_BLOCK_REGS_SBPM_UG0_BAC sbpm_ug0_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG1_BAC */ + SBPM_BLOCK_REGS_SBPM_UG1_BAC sbpm_ug1_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG2_BAC */ + SBPM_BLOCK_REGS_SBPM_UG2_BAC sbpm_ug2_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG3_BAC */ + SBPM_BLOCK_REGS_SBPM_UG3_BAC sbpm_ug3_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG4_BAC */ + SBPM_BLOCK_REGS_SBPM_UG4_BAC sbpm_ug4_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG5_BAC */ + SBPM_BLOCK_REGS_SBPM_UG5_BAC sbpm_ug5_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG6_BAC */ + SBPM_BLOCK_REGS_SBPM_UG6_BAC sbpm_ug6_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG7_BAC */ + SBPM_BLOCK_REGS_SBPM_UG7_BAC sbpm_ug7_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_GL_BAC */ + SBPM_BLOCK_REGS_SBPM_GL_BAC sbpm_gl_bac __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG0_Exclusive_threshold */ + SBPM_BLOCK_REGS_SBPM_UG0_EXCL_TRSH sbpm_ug0_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved3 [ 96 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG1_Exclusive_threshold */ + SBPM_BLOCK_REGS_SBPM_UG1_EXCL_TRSH sbpm_ug1_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG2_Exclusive_threshold */ + SBPM_BLOCK_REGS_SBPM_UG2_EXCL_TRSH sbpm_ug2_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG3_Exclusive_threshold */ + SBPM_BLOCK_REGS_SBPM_UG3_EXCL_TRSH sbpm_ug3_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG4_Exclusive_threshold */ + SBPM_BLOCK_REGS_SBPM_UG4_EXCL_TRSH sbpm_ug4_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG5_Exclusive_threshold */ + SBPM_BLOCK_REGS_SBPM_UG5_EXCL_TRSH sbpm_ug5_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG6_Exclusive_threshold */ + SBPM_BLOCK_REGS_SBPM_UG6_EXCL_TRSH sbpm_ug6_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_UG7_Exclusive_threshold */ + SBPM_BLOCK_REGS_SBPM_UG7_EXCL_TRSH sbpm_ug7_excl_trsh __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_Status_register */ + SBPM_BLOCK_REGS_SBPM_UG_STATUS sbpm_ug_status __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_runner_status_message_control_register */ + SBPM_BLOCK_REGS_SBPM_RNR_STAT_MSG_CTRL sbpm_rnr_stat_msg_ctrl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Runner_Target_address_for_Reply_message */ + SBPM_BLOCK_REGS_SBPM_RNR_RPLY_TA sbpm_rnr_rply_ta __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sbpm_rnr_wkup_rply_set_0 */ + SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET0 sbpm_rnr_wkup_rply_set0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sbpm_rnr_wkup_rply_set_1 */ + SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET1 sbpm_rnr_wkup_rply_set1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sbpm_rnr_wkup_rply_set_2 */ + SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET2 sbpm_rnr_wkup_rply_set2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sbpm_rnr_wkup_rply_set_3 */ + SBPM_BLOCK_REGS_SBPM_RNR_WKUP_RPLY_SET3 sbpm_rnr_wkup_rply_set3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* error_handling_params */ + SBPM_BLOCK_REGS_ERROR_HANDLING_PARAMS error_handling_params __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_ISR */ + SBPM_BLOCK_REGS_SBPM_ISR sbpm_isr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_IER */ + SBPM_BLOCK_REGS_SBPM_IER sbpm_ier __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_ITR */ + SBPM_BLOCK_REGS_SBPM_ITR sbpm_itr __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_IIR_low_register */ + SBPM_BLOCK_REGS_SBPM_IIR_LOW sbpm_iir_low __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_IIR_high_register */ + SBPM_BLOCK_REGS_SBPM_IIR_HIGH sbpm_iir_high __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_DBG_VEC0 */ + SBPM_BLOCK_REGS_SBPM_DBG_VEC0 sbpm_dbg_vec0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* SBPM_DBG_VEC1 */ + SBPM_BLOCK_REGS_SBPM_DBG_VEC1 sbpm_dbg_vec1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Route_Address0__config */ + SBPM_BLOCK_REGS_RADDR_0 raddr_0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Route_Address1__config */ + SBPM_BLOCK_REGS_RADDR_1 raddr_1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Route_Address2__config */ + SBPM_BLOCK_REGS_RADDR_2 raddr_2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Route_Address3__config */ + SBPM_BLOCK_REGS_RADDR_3 raddr_3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* User_Group_mapping_register_1 */ + SBPM_BLOCK_REGS_UG_MAP_REG_1 ug_map_reg_1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* MIPSD_Target_address_for_Reply_message */ + SBPM_BLOCK_REGS_SBPM_MIPSD_RPLY_TA sbpm_mipsd_rply_ta __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* sbpm_mipsd_wkup_rply_set */ + SBPM_BLOCK_REGS_SBPM_MIPSD_WKUP_RPLY_SET sbpm_mipsd_wkup_rply_set __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK_REGS ; + +typedef struct +{ + /* regs function */ + SBPM_BLOCK_REGS regs __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_BLOCK ; + +typedef struct +{ + /* BLOCK */ + SBPM_BLOCK block __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +SBPM_FOR_ALL ; +#endif /* SBPM_H_INCLUDED */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdp_subsystem_common.h b/arch/arm/mach-bcmbca/rdp/rdp_subsystem_common.h new file mode 100755 index 0000000000..dab6464d69 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_subsystem_common.h @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2012 Broadcom + */ +/* +* +*/ + +#ifndef __RDP_SUBSYSTEM_COMMON__ +#define __RDP_SUBSYSTEM_COMMON__ + +#if defined(__KERNEL__) || defined(__UBOOT__) + +#include +#include +#include + +#ifndef printk + #define printk printf +#endif + +#elif defined(RDP_SIM) + +#include "bdmf_system.h" + +#define mdelay(n) ({unsigned long _msec=(n); while(_msec--) bdmf_usleep(1000);}) + +#endif + +#endif diff --git a/arch/arm/mach-bcmbca/rdp/rdp_ubus.h b/arch/arm/mach-bcmbca/rdp/rdp_ubus.h new file mode 100755 index 0000000000..a55db0bcf7 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdp_ubus.h @@ -0,0 +1,1162 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2013 Broadcom Corporation + All Rights Reserved + + +*/ + +#ifndef __UBUS_H_INCLUDED +#define __UBUS_H_INCLUDED + +/* File automatically generated by Reggae at 15/08/2013 10:55:15 */ + +#include "access_macros.h" +#include "packing.h" + + +/*****************************************************************************************/ +/* Ubus registers including Master and Slave ports */ +/*****************************************************************************************/ + +/*****************************************************************************************/ +/* Functions offsets and addresses */ +/*****************************************************************************************/ +#define UBUS_UBUS_MASTER_0_BRDG_REG_OFFSET ( 0x00000000 ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_ADDRESS ( UBUS_UBUS_MASTER_0_OFFSET + UBUS_UBUS_MASTER_0_BRDG_REG_OFFSET ) + +#define UBUS_UBUS_MASTER_1_BRDG_REG_OFFSET ( 0x00000000 ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_ADDRESS ( UBUS_UBUS_MASTER_1_OFFSET + UBUS_UBUS_MASTER_1_BRDG_REG_OFFSET ) + +#define UBUS_UBUS_MASTER_2_BRDG_REG_OFFSET ( 0x00000000 ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_ADDRESS ( UBUS_UBUS_MASTER_2_OFFSET + UBUS_UBUS_MASTER_2_BRDG_REG_OFFSET ) + +#define UBUS_UBUS_SLAVE_BRDG_REG_OFFSET ( 0x00000000 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_ADDRESS ( UBUS_UBUS_SLAVE_OFFSET + UBUS_UBUS_SLAVE_BRDG_REG_OFFSET ) + +#define UBUS_UBUS_MISC_EGPHY_OFFSET ( 0x00000000 ) +#define UBUS_UBUS_MISC_EGPHY_ADDRESS ( UBUS_UBUS_MISC_OFFSET + UBUS_UBUS_MISC_EGPHY_OFFSET ) + +/* 'd' is module index */ +/* 'i' is block index */ +/* 'j' is function index */ +/* 'e' is function entry */ +/* 'k' is register index */ + +/*****************************************************************************************/ +/* BRDG_EN */ +/* bridge enable */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MASTER_BRDG_REG_EN_R0_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_EN_R0_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_EN_EN_DISABLE_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_EN_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_EN_EN_ENABLE_VALUE ( 0x1 ) + + +#define UBUS_UBUS_MASTER_BRDG_REG_EN_OFFSET ( 0x00000000 ) + +#define UBUS_UBUS_MASTER_0_BRDG_REG_EN_ADDRESS ( UBUS_UBUS_MASTER_0_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_EN_OFFSET ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_EN_READ( r ) READ_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_EN_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_EN_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_EN_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_1_BRDG_REG_EN_ADDRESS ( UBUS_UBUS_MASTER_1_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_EN_OFFSET ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_EN_READ( r ) READ_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_EN_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_EN_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_EN_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_2_BRDG_REG_EN_ADDRESS ( UBUS_UBUS_MASTER_2_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_EN_OFFSET ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_EN_READ( r ) READ_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_EN_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_EN_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_EN_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r0 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BRDG_ENABLE */ + uint32_t en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_EN ; +#else +typedef struct +{ uint32_t en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* BRDG_ENABLE */ + uint32_t r0 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_EN ; +#endif + +/*****************************************************************************************/ +/* RQUSTOR_CTRL */ +/* Requestor side contol. These registers are releated to ubus requestor control */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_MAX_PKT_LEN_MAX_PACKET_LEN_VALUE ( 0x90 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_MAX_PKT_LEN_MAX_PACKET_LEN_VALUE_RESET_VALUE ( 0x90 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_R0_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_R0_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_DEV_ERR_NORMAL_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_DEV_ERR_NORMAL_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_DEV_ERR_ERR_VALUE ( 0x1 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_REQOUT_ESWAP_NO_SWAP_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_REQOUT_ESWAP_NO_SWAP_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_REQOUT_ESWAP_SWAP_VALUE ( 0x1 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_REPIN_ESWAP_NO_SWAP_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_REPIN_ESWAP_NO_SWAP_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_REPIN_ESWAP_SWAP_VALUE ( 0x1 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ENDIAN_MODE_LL_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ENDIAN_MODE_LB_VALUE ( 0x1 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ENDIAN_MODE_BL_VALUE ( 0x2 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ENDIAN_MODE_BB_VALUE ( 0x3 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ENDIAN_MODE_BB_VALUE_RESET_VALUE ( 0x3 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_R1_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_R1_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_PKT_TAG_TAG_DIS_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_PKT_TAG_TAG_DIS_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_PKT_TAG_TAG_EN_VALUE ( 0x1 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_PKT_ID_PKT_ID_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_PKT_ID_PKT_ID_VALUE_RESET_VALUE ( 0x0 ) + + +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_OFFSET ( 0x00000004 ) + +#define UBUS_UBUS_MASTER_0_BRDG_REG_REQ_CNTRL_ADDRESS ( UBUS_UBUS_MASTER_0_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_OFFSET ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_REQ_CNTRL_READ( r ) READ_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_REQ_CNTRL_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_REQ_CNTRL_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_REQ_CNTRL_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_1_BRDG_REG_REQ_CNTRL_ADDRESS ( UBUS_UBUS_MASTER_1_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_OFFSET ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_REQ_CNTRL_READ( r ) READ_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_REQ_CNTRL_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_REQ_CNTRL_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_REQ_CNTRL_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_2_BRDG_REG_REQ_CNTRL_ADDRESS ( UBUS_UBUS_MASTER_2_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_OFFSET ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_REQ_CNTRL_READ( r ) READ_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_REQ_CNTRL_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_REQ_CNTRL_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_REQ_CNTRL_ADDRESS ), (v) ) + + +extern uint32_t UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ARRAY [ ] ; + +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_WRITE( i, v ) WRITE_32( UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ARRAY [ i ], (v) ) +#define UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_READ( i, r ) READ_32( UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* Max_Packet_len */ + uint32_t max_pkt_len : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dev_error */ + uint32_t dev_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reqout_eswap */ + uint32_t reqout_eswap : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* repin_eswap */ + uint32_t repin_eswap : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* endian_mode */ + uint32_t endian_mode : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* packet_tag */ + uint32_t pkt_tag : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* packet_id */ + uint32_t pkt_id : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL ; +#else +typedef struct +{ uint32_t pkt_id : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* packet_id */ + uint32_t pkt_tag : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* packet_tag */ + uint32_t r1 : 7 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t endian_mode : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* endian_mode */ + uint32_t repin_eswap : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* repin_eswap */ + uint32_t reqout_eswap : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reqout_eswap */ + uint32_t dev_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dev_error */ + uint32_t r0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t max_pkt_len : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Max_Packet_len */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL ; +#endif + +/*****************************************************************************************/ +/* HYST_CTRL */ +/* control the command / data queue full and empty indications. */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_R1_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_R1_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_DATA_SPACE_DSPACE_VALUE ( 0xC ) +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_DATA_SPACE_DSPACE_VALUE_RESET_VALUE ( 0xC ) +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_R0_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_R0_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_CMD_SPACE_HSPACE_VALUE ( 0xC ) +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_CMD_SPACE_HSPACE_VALUE_RESET_VALUE ( 0xC ) + + +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_OFFSET ( 0x00000008 ) + +#define UBUS_UBUS_MASTER_0_BRDG_REG_HYST_CTRL_ADDRESS ( UBUS_UBUS_MASTER_0_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_OFFSET ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_HYST_CTRL_READ( r ) READ_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_HYST_CTRL_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_HYST_CTRL_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_HYST_CTRL_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_1_BRDG_REG_HYST_CTRL_ADDRESS ( UBUS_UBUS_MASTER_1_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_OFFSET ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_HYST_CTRL_READ( r ) READ_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_HYST_CTRL_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_HYST_CTRL_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_HYST_CTRL_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_2_BRDG_REG_HYST_CTRL_ADDRESS ( UBUS_UBUS_MASTER_2_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_OFFSET ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_HYST_CTRL_READ( r ) READ_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_HYST_CTRL_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_HYST_CTRL_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_HYST_CTRL_ADDRESS ), (v) ) + + +extern uint32_t UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_ARRAY [ ] ; + +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_WRITE( i, v ) WRITE_32( UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_ARRAY [ i ], (v) ) +#define UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_READ( i, r ) READ_32( UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DATA_SPACE */ + uint32_t data_space : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CMD_SPACE */ + uint32_t cmd_space : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL ; +#else +typedef struct +{ uint32_t cmd_space : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* CMD_SPACE */ + uint32_t r0 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t data_space : 10 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* DATA_SPACE */ + uint32_t r1 : 6 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL ; +#endif + +/*****************************************************************************************/ +/* High_Priority */ +/* controls the high priority mechanism */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MASTER_BRDG_REG_HP_R2_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_R2_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_CNT_TOTAL_HP_CNT_TOTAL_VALUE ( 0xF ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_CNT_TOTAL_HP_CNT_TOTAL_VALUE_RESET_VALUE ( 0xF ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_R1_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_R1_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_CNT_HIGH_HP_CNT_HIGH_VALUE ( 0x8 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_CNT_HIGH_HP_CNT_HIGH_VALUE_RESET_VALUE ( 0x8 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_R0_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_R0_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_COMB_SEL_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_COMB_SEL_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_COMB_COMBINE_VALUE ( 0x1 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_SEL_EXTERNAL_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_SEL_EXTERNAL_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_SEL_INTERNAL_VALUE ( 0x1 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_EN_DISABLE_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_HP_EN_EN_VALUE ( 0x1 ) + + +#define UBUS_UBUS_MASTER_BRDG_REG_HP_OFFSET ( 0x0000000C ) + +#define UBUS_UBUS_MASTER_0_BRDG_REG_HP_ADDRESS ( UBUS_UBUS_MASTER_0_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_HP_OFFSET ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_HP_READ( r ) READ_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_HP_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_HP_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_HP_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_1_BRDG_REG_HP_ADDRESS ( UBUS_UBUS_MASTER_1_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_HP_OFFSET ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_HP_READ( r ) READ_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_HP_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_HP_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_HP_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_2_BRDG_REG_HP_ADDRESS ( UBUS_UBUS_MASTER_2_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_HP_OFFSET ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_HP_READ( r ) READ_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_HP_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_HP_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_HP_ADDRESS ), (v) ) + + +extern uint32_t UBUS_UBUS_MASTER_BRDG_REG_HP_ARRAY [ ] ; + +#define UBUS_UBUS_MASTER_BRDG_REG_HP_WRITE( i, v ) WRITE_32( UBUS_UBUS_MASTER_BRDG_REG_HP_ARRAY [ i ], (v) ) +#define UBUS_UBUS_MASTER_BRDG_REG_HP_READ( i, r ) READ_32( UBUS_UBUS_MASTER_BRDG_REG_HP_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hp_cnt_total */ + uint32_t hp_cnt_total : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hp_cnt_high */ + uint32_t hp_cnt_high : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r0 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hp_combine */ + uint32_t hp_comb : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hp_sel */ + uint32_t hp_sel : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hp_en */ + uint32_t hp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_HP ; +#else +typedef struct +{ uint32_t hp_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hp_en */ + uint32_t hp_sel : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hp_sel */ + uint32_t hp_comb : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hp_combine */ + uint32_t r0 : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t hp_cnt_high : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hp_cnt_high */ + uint32_t r1 : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t hp_cnt_total : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* hp_cnt_total */ + uint32_t r2 : 12 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_HP ; +#endif + +/*****************************************************************************************/ +/* REPLY_ADDRESS */ +/* holds the termination address used for the read reply command */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_ADD_REPLY_ADD_VALUE ( 0xFFFF0000 ) +#define UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_ADD_REPLY_ADD_VALUE_RESET_VALUE ( 0xFFFF0000 ) + + +#define UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_OFFSET ( 0x00000010 ) + +#define UBUS_UBUS_MASTER_0_BRDG_REG_REPLY_ADD_ADDRESS ( UBUS_UBUS_MASTER_0_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_OFFSET ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_REPLY_ADD_READ( r ) READ_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_REPLY_ADD_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_REPLY_ADD_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_REPLY_ADD_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_1_BRDG_REG_REPLY_ADD_ADDRESS ( UBUS_UBUS_MASTER_1_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_OFFSET ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_REPLY_ADD_READ( r ) READ_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_REPLY_ADD_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_REPLY_ADD_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_REPLY_ADD_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_2_BRDG_REG_REPLY_ADD_ADDRESS ( UBUS_UBUS_MASTER_2_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_OFFSET ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_REPLY_ADD_READ( r ) READ_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_REPLY_ADD_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_REPLY_ADD_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_REPLY_ADD_ADDRESS ), (v) ) + + +extern uint32_t UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_ARRAY [ ] ; + +#define UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_WRITE( i, v ) WRITE_32( UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_ARRAY [ i ], (v) ) +#define UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_READ( i, r ) READ_32( UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* address */ + uint32_t add : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD ; +#else +typedef struct +{ uint32_t add : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* address */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD ; +#endif + +/*****************************************************************************************/ +/* REPLY_DATA */ +/* holds the data value for the read reply command. the data held in this register will */ +/* be returned to runner */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_DATA_REPLY_DATA_VALUE ( 0xDEADBEAF ) +#define UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_DATA_REPLY_DATA_VALUE_RESET_VALUE ( 0xDEADBEAF ) + + +#define UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_OFFSET ( 0x00000014 ) + +#define UBUS_UBUS_MASTER_0_BRDG_REG_REPLY_DATA_ADDRESS ( UBUS_UBUS_MASTER_0_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_OFFSET ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_REPLY_DATA_READ( r ) READ_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_REPLY_DATA_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_0_BRDG_REG_REPLY_DATA_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_0_BRDG_REG_REPLY_DATA_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_1_BRDG_REG_REPLY_DATA_ADDRESS ( UBUS_UBUS_MASTER_1_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_OFFSET ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_REPLY_DATA_READ( r ) READ_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_REPLY_DATA_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_1_BRDG_REG_REPLY_DATA_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_1_BRDG_REG_REPLY_DATA_ADDRESS ), (v) ) + +#define UBUS_UBUS_MASTER_2_BRDG_REG_REPLY_DATA_ADDRESS ( UBUS_UBUS_MASTER_2_BRDG_REG_ADDRESS + UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_OFFSET ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_REPLY_DATA_READ( r ) READ_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_REPLY_DATA_ADDRESS ), (r) ) +#define UBUS_UBUS_MASTER_2_BRDG_REG_REPLY_DATA_WRITE( v ) WRITE_32( ( UBUS_UBUS_MASTER_2_BRDG_REG_REPLY_DATA_ADDRESS ), (v) ) + + +extern uint32_t UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_ARRAY [ ] ; + +#define UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_WRITE( i, v ) WRITE_32( UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_ARRAY [ i ], (v) ) +#define UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_READ( i, r ) READ_32( UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA_ARRAY [ i ], (r) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* data */ + uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA ; +#else +typedef struct +{ uint32_t data : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* data */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA ; +#endif + +/*****************************************************************************************/ +/* BRDG_EN */ +/* bridge enable */ +/*****************************************************************************************/ + +#define UBUS_UBUS_SLAVE_BRDG_REG_EN_R0_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_EN_R0_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_EN_INIT_INIT_0_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_EN_INIT_INIT_0_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_EN_INIT_INIT_1_VALUE ( 0x1 ) + + +#define UBUS_UBUS_SLAVE_BRDG_REG_EN_OFFSET ( 0x00000000 ) + +#define UBUS_UBUS_SLAVE_BRDG_REG_EN_ADDRESS ( UBUS_UBUS_SLAVE_BRDG_REG_ADDRESS + UBUS_UBUS_SLAVE_BRDG_REG_EN_OFFSET ) +#define UBUS_UBUS_SLAVE_BRDG_REG_EN_READ( r ) READ_32( ( UBUS_UBUS_SLAVE_BRDG_REG_EN_ADDRESS ), (r) ) +#define UBUS_UBUS_SLAVE_BRDG_REG_EN_WRITE( v ) WRITE_32( ( UBUS_UBUS_SLAVE_BRDG_REG_EN_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r0 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* init */ + uint32_t init : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_SLAVE_BRDG_REG_EN ; +#else +typedef struct +{ uint32_t init : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* init */ + uint32_t r0 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_SLAVE_BRDG_REG_EN ; +#endif + +/*****************************************************************************************/ +/* RESPONDER_CTRL */ +/* Responder side contol. These registers are releated to ubus Responder control */ +/*****************************************************************************************/ + +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_TIMEOUT_DEV_TIMEOUT_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_TIMEOUT_DEV_TIMEOUT_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_TIMEOUT_EN_DISABLE_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_TIMEOUT_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_TIMEOUT_EN_ENABLE_VALUE ( 0x1 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_ERR_NORMAL_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_ERR_NORMAL_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_ERR_ERR_VALUE ( 0x1 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_CLKEN_DISABLE_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_CLKEN_ENABLE_VALUE ( 0x1 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_DEV_CLKEN_ENABLE_VALUE_RESET_VALUE ( 0x1 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_REQOUT_ESWAP_NO_SWAP_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_REQOUT_ESWAP_NO_SWAP_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_REQOUT_ESWAP_SWAP_VALUE ( 0x1 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_REPIN_ESWAP_NO_SWAP_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_REPIN_ESWAP_NO_SWAP_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_REPIN_ESWAP_SWAP_VALUE ( 0x1 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_R0_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_R0_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_MASK_ID_MASK_ID_VALUE ( 0xFF ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_MASK_ID_MASK_ID_VALUE_RESET_VALUE ( 0xFF ) + + +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_OFFSET ( 0x00000004 ) + +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_ADDRESS ( UBUS_UBUS_SLAVE_BRDG_REG_ADDRESS + UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_OFFSET ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_READ( r ) READ_32( ( UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_ADDRESS ), (r) ) +#define UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_WRITE( v ) WRITE_32( ( UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* dev_timeout */ + uint32_t dev_timeout : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dev_timeout_en */ + uint32_t dev_timeout_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dev_error */ + uint32_t dev_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dev_clk_en */ + uint32_t dev_clken : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reqout_eswap */ + uint32_t reqout_eswap : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* repin_eswap */ + uint32_t repin_eswap : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mask_id */ + uint32_t mask_id : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL ; +#else +typedef struct +{ uint32_t mask_id : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* mask_id */ + uint32_t r0 : 8 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t repin_eswap : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* repin_eswap */ + uint32_t reqout_eswap : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reqout_eswap */ + uint32_t dev_clken : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dev_clk_en */ + uint32_t dev_err : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dev_error */ + uint32_t dev_timeout_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dev_timeout_en */ + uint32_t dev_timeout : 11 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* dev_timeout */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL ; +#endif + +/*****************************************************************************************/ +/* HYST_CTRL */ +/* control the command / data queue full and empty indications. */ +/*****************************************************************************************/ + +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_R1_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_R1_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_SECLEV_EN_DISABLE_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_SECLEV_EN_DISABLE_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_SECLEV_EN_ENABLE_VALUE ( 0x1 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_SECLEV_CFG_CFG_0_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_SECLEV_CFG_CFG_0_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_SECLEV_CFG_CFG_1_VALUE ( 0x1 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_R0_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_R0_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_SECLEV_STRAP_SECLEV_VALUE ( 0x0 ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_SECLEV_STRAP_SECLEV_VALUE_RESET_VALUE ( 0x0 ) + + +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_OFFSET ( 0x00000008 ) + +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_ADDRESS ( UBUS_UBUS_SLAVE_BRDG_REG_ADDRESS + UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_OFFSET ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_READ( r ) READ_32( ( UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_ADDRESS ), (r) ) +#define UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_WRITE( v ) WRITE_32( ( UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r1 : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* seclev_en */ + uint32_t seclev_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* seclev_config */ + uint32_t seclev_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* seclev_strap */ + uint32_t seclev_strap : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL ; +#else +typedef struct +{ uint32_t seclev_strap : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* seclev_strap */ + uint32_t r0 : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t seclev_cfg : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* seclev_config */ + uint32_t seclev_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* seclev_en */ + uint32_t r1 : 22 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL ; +#endif + +/*****************************************************************************************/ +/* GPHY_OUT */ +/* gphy registers output from CR to GPHY */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_R0_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_R0_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_PHY_TEST_EN_REGULAR_MODE_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_PHY_TEST_EN_REGULAR_MODE_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_PHY_TEST_EN_TEST_MODE_VALUE ( 0x1 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_PHYA_PHYA_VALUE ( 0x1 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_PHYA_PHYA_VALUE_RESET_VALUE ( 0x1 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_GPHY_CK25_DIS_CK_25_DIS_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_GPHY_CK25_DIS_CK_25_DIS_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_IDDQ_BIAS_IDDQ_BIAS_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_IDDQ_BIAS_IDDQ_BIAS_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_DLL_EN_DLL_EN_VALUE ( 0x1 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_DLL_EN_DLL_EN_VALUE_RESET_VALUE ( 0x1 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_PWRDWN_EXT_PWRDWN_VALUE ( 0xF ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_PWRDWN_EXT_PWRDWN_VALUE_RESET_VALUE ( 0xF ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_R1_GPHY_CK25_DIS_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_R1_GPHY_CK25_DIS_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_RST_RST_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_RST_NOT_RST_VALUE ( 0x1 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_RST_NOT_RST_VALUE_RESET_VALUE ( 0x1 ) + + +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_OFFSET ( 0x00000000 ) + +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_ADDRESS ( UBUS_UBUS_MISC_EGPHY_ADDRESS + UBUS_UBUS_MISC_EGPHY_GPHY_OUT_OFFSET ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_READ( r ) READ_32( ( UBUS_UBUS_MISC_EGPHY_GPHY_OUT_ADDRESS ), (r) ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_OUT_WRITE( v ) WRITE_32( ( UBUS_UBUS_MISC_EGPHY_GPHY_OUT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r0 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* phy_test_en */ + uint32_t phy_test_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* phya */ + uint32_t phya : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gphy_ck25_disable */ + uint32_t gphy_ck25_dis : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* i_mac_gphy_cfg_iddq_bias */ + uint32_t iddq_bias : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* i_mac_gphy_cfg_ext_force_dll_en */ + uint32_t dll_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* i_mac_gphy_cfg_ext_pwrdown */ + uint32_t pwrdwn : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* i_mac_gphy_cfg_reset_b */ + uint32_t rst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_GPHY_OUT ; +#else +typedef struct +{ uint32_t rst : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* i_mac_gphy_cfg_reset_b */ + uint32_t r1 : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ + uint32_t pwrdwn : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* i_mac_gphy_cfg_ext_pwrdown */ + uint32_t dll_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* i_mac_gphy_cfg_ext_force_dll_en */ + uint32_t iddq_bias : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* i_mac_gphy_cfg_iddq_bias */ + uint32_t gphy_ck25_dis : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* gphy_ck25_disable */ + uint32_t phya : 5 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* phya */ + uint32_t phy_test_en : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* phy_test_en */ + uint32_t r0 : 17 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_GPHY_OUT ; +#endif + +/*****************************************************************************************/ +/* RGMII_OUT */ +/* RGMII registers output from CR to GPHY */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_R0_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_R0_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_ID_MODE_ID_MODE_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_ID_MODE_ID_MODE_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_REF_SEL_REFSEL_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_REF_SEL_REFSEL_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_PORT_MODE_PORTMODE_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_PORT_MODE_PORTMODE_VALUE_RESET_VALUE ( 0x0 ) + + +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_OFFSET ( 0x00000004 ) + +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_ADDRESS ( UBUS_UBUS_MISC_EGPHY_ADDRESS + UBUS_UBUS_MISC_EGPHY_RGMII_OUT_OFFSET ) +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_READ( r ) READ_32( ( UBUS_UBUS_MISC_EGPHY_RGMII_OUT_ADDRESS ), (r) ) +#define UBUS_UBUS_MISC_EGPHY_RGMII_OUT_WRITE( v ) WRITE_32( ( UBUS_UBUS_MISC_EGPHY_RGMII_OUT_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r0 : 27 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* o_cfg_id_mode_disable */ + uint32_t id_mode : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* o_cfg_rvmii_ref_sel */ + uint32_t ref_sel : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* o_cfg_port_mode */ + uint32_t port_mode : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_RGMII_OUT ; +#else +typedef struct +{ uint32_t port_mode : 3 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* o_cfg_port_mode */ + uint32_t ref_sel : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* o_cfg_rvmii_ref_sel */ + uint32_t id_mode : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* o_cfg_id_mode_disable */ + uint32_t r0 : 27 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_RGMII_OUT ; +#endif + +/*****************************************************************************************/ +/* GPHY_IN */ +/* gphy inputs from GPHY block */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_LNKSPD_1_LNKSPD_1_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_LNKSPD_1_LNKSPD_1_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_LNKSPD_2_LNKSPD_2_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_LNKSPD_2_LNKSPD_2_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_LNKSPD_3_LNKSPD_3_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_LNKSPD_3_LNKSPD_3_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_LNKSPD_4_LNKSPD_4_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_LNKSPD_4_LNKSPD_4_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_FDXLED_N_FDXLED_N_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_FDXLED_N_FDXLED_N_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_PAUSE_RES_TX_PAUSE_RES_TX_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_PAUSE_RES_TX_PAUSE_RES_TX_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_PAUSE_RES_RX_PAUSE_RES_RX_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_PAUSE_RES_RX_PAUSE_RES_RX_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_LOCK_RCVRY_CLK_LOCK_RCVRY_CLK_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_LOCK_RCVRY_CLK_LOCK_RCVRY_CLK_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_ENRGY_DET_MASKED_ENRGY_DET_MASKED_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_ENRGY_DET_MASKED_ENRGY_DET_MASKED_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_ENRGY_DET_APD_ENRGY_DET_APD_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_ENRGY_DET_APD_ENRGY_DET_APD_VALUE_RESET_VALUE ( 0x0 ) + + +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_OFFSET ( 0x00000008 ) + +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_ADDRESS ( UBUS_UBUS_MISC_EGPHY_ADDRESS + UBUS_UBUS_MISC_EGPHY_GPHY_IN_OFFSET ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_READ( r ) READ_32( ( UBUS_UBUS_MISC_EGPHY_GPHY_IN_ADDRESS ), (r) ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN_WRITE( v ) WRITE_32( ( UBUS_UBUS_MISC_EGPHY_GPHY_IN_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* linkspd_n1 */ + uint32_t lnkspd_1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* linkspd_n2 */ + uint32_t lnkspd_2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* linkspd_n3 */ + uint32_t lnkspd_3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* linkspd_n4 */ + uint32_t lnkspd_4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* fdxled_n */ + uint32_t fdxled_n : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pause_resolution_tx */ + uint32_t pause_res_tx : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pause_resolution_rx */ + uint32_t pause_res_rx : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* lock_recovery_clock */ + uint32_t lock_rcvry_clk : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* energy_det_masked */ + uint32_t enrgy_det_masked : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* energy_det_apd */ + uint32_t enrgy_det_apd : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_GPHY_IN ; +#else +typedef struct +{ uint32_t enrgy_det_apd : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* energy_det_apd */ + uint32_t enrgy_det_masked : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* energy_det_masked */ + uint32_t lock_rcvry_clk : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* lock_recovery_clock */ + uint32_t pause_res_rx : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pause_resolution_rx */ + uint32_t pause_res_tx : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pause_resolution_tx */ + uint32_t fdxled_n : 4 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* fdxled_n */ + uint32_t lnkspd_4 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* linkspd_n4 */ + uint32_t lnkspd_3 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* linkspd_n3 */ + uint32_t lnkspd_2 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* linkspd_n2 */ + uint32_t lnkspd_1 : 2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* linkspd_n1 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_GPHY_IN ; +#endif + +/*****************************************************************************************/ +/* GPHY_IN_2 */ +/* gphy inputs from GPHY block 2 */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN2_R0_RSRV_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN2_R0_RSRV_VALUE_RESET_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN2_PLL_LOCK_PLL_LOCK_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN2_PLL_LOCK_PLL_LOCK_VALUE_RESET_VALUE ( 0x0 ) + + +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN2_OFFSET ( 0x0000000C ) + +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN2_ADDRESS ( UBUS_UBUS_MISC_EGPHY_ADDRESS + UBUS_UBUS_MISC_EGPHY_GPHY_IN2_OFFSET ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN2_READ( r ) READ_32( ( UBUS_UBUS_MISC_EGPHY_GPHY_IN2_ADDRESS ), (r) ) +#define UBUS_UBUS_MISC_EGPHY_GPHY_IN2_WRITE( v ) WRITE_32( ( UBUS_UBUS_MISC_EGPHY_GPHY_IN2_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* reserved */ + uint32_t r0 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pll_freq_lock */ + uint32_t pll_lock : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_GPHY_IN2 ; +#else +typedef struct +{ uint32_t pll_lock : 1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* pll_freq_lock */ + uint32_t r0 : 31 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* reserved */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_GPHY_IN2 ; +#endif + +/*****************************************************************************************/ +/* ECO_REG_0_RST */ +/* ECO registers reset value is 0 */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MISC_EGPHY_ECO_0_ECO_RST_0_PLL_LOCK_VALUE ( 0x0 ) +#define UBUS_UBUS_MISC_EGPHY_ECO_0_ECO_RST_0_PLL_LOCK_VALUE_RESET_VALUE ( 0x0 ) + + +#define UBUS_UBUS_MISC_EGPHY_ECO_0_OFFSET ( 0x00000010 ) + +#define UBUS_UBUS_MISC_EGPHY_ECO_0_ADDRESS ( UBUS_UBUS_MISC_EGPHY_ADDRESS + UBUS_UBUS_MISC_EGPHY_ECO_0_OFFSET ) +#define UBUS_UBUS_MISC_EGPHY_ECO_0_READ( r ) READ_32( ( UBUS_UBUS_MISC_EGPHY_ECO_0_ADDRESS ), (r) ) +#define UBUS_UBUS_MISC_EGPHY_ECO_0_WRITE( v ) WRITE_32( ( UBUS_UBUS_MISC_EGPHY_ECO_0_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* eco_rst_0 */ + uint32_t eco_rst_0 : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_ECO_0 ; +#else +typedef struct +{ uint32_t eco_rst_0 : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eco_rst_0 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_ECO_0 ; +#endif + +/*****************************************************************************************/ +/* ECO_REG_1_RST */ +/* ECO registers reset value is 1 */ +/*****************************************************************************************/ + +#define UBUS_UBUS_MISC_EGPHY_ECO_1_ECO_RST_1_PLL_LOCK_VALUE ( 0xFFFFFFFF ) +#define UBUS_UBUS_MISC_EGPHY_ECO_1_ECO_RST_1_PLL_LOCK_VALUE_RESET_VALUE ( 0xFFFFFFFF ) + + +#define UBUS_UBUS_MISC_EGPHY_ECO_1_OFFSET ( 0x00000014 ) + +#define UBUS_UBUS_MISC_EGPHY_ECO_1_ADDRESS ( UBUS_UBUS_MISC_EGPHY_ADDRESS + UBUS_UBUS_MISC_EGPHY_ECO_1_OFFSET ) +#define UBUS_UBUS_MISC_EGPHY_ECO_1_READ( r ) READ_32( ( UBUS_UBUS_MISC_EGPHY_ECO_1_ADDRESS ), (r) ) +#define UBUS_UBUS_MISC_EGPHY_ECO_1_WRITE( v ) WRITE_32( ( UBUS_UBUS_MISC_EGPHY_ECO_1_ADDRESS ), (v) ) + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /* eco_regs_rst_1 */ + uint32_t eco_rst_1 : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_ECO_1 ; +#else +typedef struct +{ uint32_t eco_rst_1 : 32 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* eco_regs_rst_1 */ +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY_ECO_1 ; +#endif + +typedef struct +{ + /* BRDG_EN */ + UBUS_UBUS_MASTER_BRDG_REG_EN en __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RQUSTOR_CTRL */ + UBUS_UBUS_MASTER_BRDG_REG_REQ_CNTRL req_cntrl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HYST_CTRL */ + UBUS_UBUS_MASTER_BRDG_REG_HYST_CTRL hyst_ctrl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* High_Priority */ + UBUS_UBUS_MASTER_BRDG_REG_HP hp __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REPLY_ADDRESS */ + UBUS_UBUS_MASTER_BRDG_REG_REPLY_ADD reply_add __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* REPLY_DATA */ + UBUS_UBUS_MASTER_BRDG_REG_REPLY_DATA reply_data __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER_BRDG_REG ; + +typedef struct +{ + /* BRDG_EN */ + UBUS_UBUS_SLAVE_BRDG_REG_EN en __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RESPONDER_CTRL */ + UBUS_UBUS_SLAVE_BRDG_REG_RES_CNTRL res_cntrl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* HYST_CTRL */ + UBUS_UBUS_SLAVE_BRDG_REG_HYST_CTRL hyst_ctrl __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_SLAVE_BRDG_REG ; + +typedef struct +{ + /* GPHY_OUT */ + UBUS_UBUS_MISC_EGPHY_GPHY_OUT gphy_out __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* RGMII_OUT */ + UBUS_UBUS_MISC_EGPHY_RGMII_OUT rgmii_out __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPHY_IN */ + UBUS_UBUS_MISC_EGPHY_GPHY_IN gphy_in __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* GPHY_IN_2 */ + UBUS_UBUS_MISC_EGPHY_GPHY_IN2 gphy_in2 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ECO_REG_0_RST */ + UBUS_UBUS_MISC_EGPHY_ECO_0 eco_0 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* ECO_REG_1_RST */ + UBUS_UBUS_MISC_EGPHY_ECO_1 eco_1 __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC_EGPHY ; + +typedef struct +{ + /* brdg_reg function */ + UBUS_UBUS_MASTER_BRDG_REG brdg_reg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MASTER ; + +typedef struct +{ + /* brdg_reg function */ + UBUS_UBUS_SLAVE_BRDG_REG brdg_reg __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_SLAVE ; + +typedef struct +{ + /* egphy function */ + UBUS_UBUS_MISC_EGPHY egphy __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} + __PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_UBUS_MISC ; + +#define UBUS_UBUS_MASTER_NUMBER ( 3 ) +typedef struct +{ + /* UBUS_MASTER */ + UBUS_UBUS_MASTER ubus_master [ UBUS_UBUS_MASTER_NUMBER ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved1 [ 3048 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UBUS_SLAVE */ + UBUS_UBUS_SLAVE ubus_slave __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* Reserved */ + uint8_t reserved2 [ 1012 ] __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; + + /* UBUS_MISC */ + UBUS_UBUS_MISC ubus_misc __PACKING_ATTRIBUTE_FIELD_LEVEL__ ; +} +__PACKING_ATTRIBUTE_STRUCT_END__ +UBUS_FOR_ALL ; +#endif /* UBUS_H_INCLUDED */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdpa_config.h b/arch/arm/mach-bcmbca/rdp/rdpa_config.h new file mode 100644 index 0000000000..c5457cee54 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdpa_config.h @@ -0,0 +1,257 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* +* +*/ + + +#ifndef RDPA_CONFIG_H_ +#define RDPA_CONFIG_H_ + +/*****************************************************************************/ +/** MTU **/ +/*****************************************************************************/ +#if defined(CONFIG_BCM_JUMBO_FRAME) && defined(CONFIG_BCM_MAX_MTU_SIZE) +#ifndef ENET_MAX_MTU_EXTRA_SIZE +#define ENET_MAX_MTU_EXTRA_SIZE 32 +#endif +#define RDPA_MTU (CONFIG_BCM_MAX_MTU_SIZE + ENET_MAX_MTU_EXTRA_SIZE) +#elif defined(CONFIG_BCM_JUMBO_FRAME) +#if defined(BCM_DSL_RDP) || defined(BCM_DSL_XRDP) +/* defined in bcm_pkt_lengths.h + * ENET_MAX_MTU_PAYLOAD_SIZE = 2048 (mini jumbo) + * ENET_MAX_MTU_EXTRA_SIZE = 30 (EH_SIZE(14) + VLANTAG(4) + VLANTAG(4) + BRCMTAG(4) + FCS(4)) + * RDPA_MTU = 2048 + 30 = 2078 + */ +#define RDPA_MTU 2078 +#else +/*RDPA_BPM_BUFFER_2K = 1958+ENET_MAX_MTU_EXTRA_SIZE+18+40*/ +#define RDPA_MTU 1990 +#endif /*DSL*/ +#else +#define RDPA_MTU 1536 +#endif + +#ifndef RDPA_MIN_MTU +#define RDPA_MIN_MTU 64 +#endif + +/*****************************************************************************/ +/* The minimal headroom size within an SKB buffer */ +/*****************************************************************************/ +#ifndef RDPA_MIN_SKB_HEADROOM_SIZE +#define RDPA_MIN_SKB_HEADROOM_SIZE 0 +#endif + +#ifndef RDPA_DS_LITE_HEADROOM_SIZE +#define RDPA_DS_LITE_HEADROOM_SIZE 40 +#endif + +/*---------------------------------------------------------------------------*/ +/* Define BL's PON parameters */ +/*---------------------------------------------------------------------------*/ + + +/*****************************************************************************/ +/** SF Threshold - 3 to 8 **/ +/*****************************************************************************/ +#ifndef RDPA_SF_THRESHOLD +#define RDPA_SF_THRESHOLD 3 +#endif + +/*****************************************************************************/ +/** SD Threshold - 4 to 9 **/ +/*****************************************************************************/ +#ifndef RDPA_SD_THRESHOLD +#define RDPA_SD_THRESHOLD 4 +#endif + +/*****************************************************************************/ +/** TO1 Timeout **/ +/*****************************************************************************/ +#ifndef RDPA_TO1_TIMEOUT +#define RDPA_TO1_TIMEOUT 20000 +#endif + +/*****************************************************************************/ +/** TO2 Timeout **/ +/*****************************************************************************/ +#ifndef RDPA_TO2_TIMEOUT +#define RDPA_TO2_TIMEOUT 100 +#endif + +/*****************************************************************************/ +/** DWELL_TIMER Timeout **/ +/*****************************************************************************/ +#ifndef RDPA_DWELL_TIMER_TIMEOUT +#define RDPA_DWELL_TIMER_TIMEOUT 10000 +#endif + +/*****************************************************************************/ +/** TO6 Timeout **/ +/*****************************************************************************/ +#ifndef RDPA_TO6_TIMEOUT +#define RDPA_TO6_TIMEOUT 10000 +#endif + +/*****************************************************************************/ +/** BER interval - 1000 to 5000 msec **/ +/*****************************************************************************/ +#ifndef RDPA_BER_INTERVAL +#define RDPA_BER_INTERVAL 1000 +#endif + +/*****************************************************************************/ +/** Minminal response time - Minimum 10 usec **/ +/*****************************************************************************/ +#ifndef RDPA_MIN_RESPONSE_TIME +#define RDPA_MIN_RESPONSE_TIME 35 +#endif + + +/*****************************************************************************/ +/** TX Data Polarity mode - Positive/Negative **/ +/*****************************************************************************/ +#ifndef RDPA_TX_DATA_POLARITY_MODE +#define RDPA_TX_DATA_POLARITY_MODE 0 +#endif + + +/*****************************************************************************/ +/** RX Data Polarity mode - Positive/Negative **/ +/*****************************************************************************/ +#ifndef RDPA_RX_DIN_POLARITY_MODE +#define RDPA_RX_DIN_POLARITY_MODE 0 +#endif + +/*****************************************************************************/ +/** Number of pysnc for LOF assertion - 1 to 15 **/ +/*****************************************************************************/ +#ifndef RDPA_RX_LOF_ASSERTION +#define RDPA_RX_LOF_ASSERTION 4 +#endif + +/*****************************************************************************/ +/** Number of pysnc for LOF clear - 1 to 15 **/ +/*****************************************************************************/ +#ifndef RDPA_RX_LOF_CLEAR +#define RDPA_RX_LOF_CLEAR 1 +#endif + +/*****************************************************************************/ +/** DV setup pattern - 16 bits **/ +/*****************************************************************************/ +#ifndef RDPA_DV_SETUP_PATTERN +#ifdef CONFIG_BCM6858 +#define RDPA_DV_SETUP_PATTERN 0xFFFF +#else +#define RDPA_DV_SETUP_PATTERN 0x0FFF +#endif +#endif + +/*****************************************************************************/ +/** DV hold pattern - 16 bits **/ +/*****************************************************************************/ +#ifndef RDPA_DV_HOLD_PATTERN +#ifdef CONFIG_BCM6858 +#define RDPA_DV_HOLD_PATTERN 0xFFFF +#else +#define RDPA_DV_HOLD_PATTERN 0xFFF0 +#endif +#endif + +/*****************************************************************************/ +/** DV polarity - High/Low **/ +/*****************************************************************************/ +#ifndef RDPA_DV_POLARITY +#define RDPA_DV_POLARITY rdpa_polarity_active_high +#endif + +/*****************************************************************************/ +/** task priority **/ +/*****************************************************************************/ +#ifndef RDPA_TASK_PRIORITY +#define RDPA_TASK_PRIORITY 50 +#endif + +/*****************************************************************************/ +/** Power calibration mode - Disable/Enable **/ +/*****************************************************************************/ +#ifndef RDPA_POWER_CALIBRATION_MODE +#define RDPA_POWER_CALIBRATION_MODE 0 /* 0 for disable, 1 for enable */ +#endif + +/*****************************************************************************/ +/** Power calibration pattern - 32 bits **/ +/*****************************************************************************/ +#ifndef RDPA_POWER_CALIBRATION_PATTERN +#define RDPA_POWER_CALIBRATION_PATTERN 0xAAAAAAAA +#endif + +/*****************************************************************************/ +/** Power calibration size (bytes) - muliply of 4 bytes, up to 508 bytes **/ +/*****************************************************************************/ +#ifndef RDPA_POWER_CALIBRATION_SIZE +#define RDPA_POWER_CALIBRATION_SIZE 72 +#endif + +/*---------------------------------------------------------------------------*/ +/* Define BL's Bridge parameters */ +/*---------------------------------------------------------------------------*/ + +/*****************************************************************************/ +/** VLAN Ethernet type detect 1 - 16 bits **/ +/*****************************************************************************/ +#ifndef RDPA_VLAN_ETH_TYPE_DETECT_1 +#define RDPA_VLAN_ETH_TYPE_DETECT_1 0x8100 +#endif + +/*****************************************************************************/ +/** VLAN Ethernet type detect 2 - 16 bits **/ +/*****************************************************************************/ +#ifndef RDPA_VLAN_ETH_TYPE_DETECT_2 +#define RDPA_VLAN_ETH_TYPE_DETECT_2 0x88A8 +#endif + +/*****************************************************************************/ +/** VLAN Ethernet type detect 3 - 16 bits **/ +/*****************************************************************************/ +#ifndef RDPA_VLAN_ETH_TYPE_DETECT_3 +#define RDPA_VLAN_ETH_TYPE_DETECT_3 0xffff /*invalid */ +#endif + +/*****************************************************************************/ +/** VLAN Ethernet type detect 4 - 16 bits **/ +/*****************************************************************************/ +#ifndef RDPA_VLAN_ETH_TYPE_DETECT_4 +#define RDPA_VLAN_ETH_TYPE_DETECT_4 0xffff /*invalid */ +#endif + +/*****************************************************************************/ +/** US ETH QOS mode **/ +/*****************************************************************************/ +#ifndef RDPA_US_QOS_AND_SCHEDULE_METHOD_ETH_MAX_TCONT_NUM +#define RDPA_US_QOS_AND_SCHEDULE_METHOD_ETH_MAX_TCONT_NUM 8 +#endif + +/*****************************************************************************/ +/** US scheduling - max number of US rate controllers **/ +/*****************************************************************************/ +#ifndef RDPA_MAX_US_RATE_CONTROLLERS +#define RDPA_MAX_US_RATE_CONTROLLERS 128 +#endif + +/*****************************************************************************/ +/** US scheduling - max number of US channels **/ +/*****************************************************************************/ +#ifndef RDPA_MAX_US_CHANNELS +#if defined(BCM_DSL_XRDP) +#define RDPA_MAX_US_CHANNELS 50 +#else +#define RDPA_MAX_US_CHANNELS 40 +#endif +#endif + +#endif /* RDPA_CONFIG_H_ */ diff --git a/arch/arm/mach-bcmbca/rdp/rdpa_cpu.h b/arch/arm/mach-bcmbca/rdp/rdpa_cpu.h new file mode 100755 index 0000000000..382474461e --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdpa_cpu.h @@ -0,0 +1,581 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* +* +*/ + +#ifndef RDPA_CPU_H_ +#define RDPA_CPU_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include "rdpa_types.h" +#include "rdpa_cpu_basic.h" + +/** \defgroup cpu CPU Interface + * Functions in this module: + * - Send packets from the host to any egress port or to virtual "bridge" port + * - Receive packets via one of host termination (CPU_RX) or Wi-Fi acceleration (WLAN_TX) queues + * - Connect per-port and/or per-receive queue interrupt handlers + * - Configure CPU trap reason --> queue mapping + * + * Runner to host traffic management parameters can be configured similarly to any other egress queue. + * Initial port level (CPU, WLAN0, WLAN1) configuration is done using the appropriate port configuration + * that fixes parameters such as scheduling type, number of queues, etc.\n + * @{ + */ + +/** \defgroup isr Interrupt Control + * \ingroup cpu + * Functions in this group allow to + * - Register / unregister per-queue interrupt handler + * - Enable / disable / clear per-queue interrupt + * @{ + */ + +/** Enable CPU queue interrupt + * \param[in] port port. rdpa_cpu, rdpa_wlan0, rdpa_wlan1 + * \param[in] queue Queue index < num_queues in port tm configuration + */ +void rdpa_cpu_int_enable(rdpa_cpu_port port, int queue); + +/** Disable CPU queue interrupt + * \param[in] port port. rdpa_cpu, rdpa_wlan0, rdpa_wlan1 + * \param[in] queue Queue index < num_queues in port tm configuration + */ +void rdpa_cpu_int_disable(rdpa_cpu_port port, int queue); + +/** Clear CPU queue interrupt + * \param[in] port port. rdpa_cpu, rdpa_wlan0, rdpa_wlan1 + * \param[in] queue Queue index < num_queues in port tm configuration + */ +void rdpa_cpu_int_clear(rdpa_cpu_port port, int queue); + +/** Enable Runner interrupt + * \param[in] intr_idx Interrupt index < 32 + */ +void rdpa_rnr_int_enable(uint8_t intr_idx); + +/** Disable Runner interrupt + * \param[in] intr_idx Interrupt index < 32 + */ +void rdpa_rnr_int_disable(uint8_t intr_idx); + +/** Clear Runner interrupt + * \param[in] intr_idx Interrupt index < 32 + */ +void rdpa_rnr_int_clear(uint8_t intr_idx); + +/** @} end of isr Doxygen group */ + +/** \defgroup cpu_rx Receive + * \ingroup cpu + * Functions in this group allow to + * - Register/unregister per-port and per-queue interrupt handlers + * - Register/unregister packet handler + * - Pull received packets from port (scheduling) or queue + * @{ + */ + +/** CPU meter SR validation constants */ + + +#ifdef XRDP +#define RDPA_CPU_METER_MAX_SR 500000 /**< Max CPU meter SR value in pps */ +#define RDPA_CPU_METER_MIN_SR 10 /**< Min CPU meter SR value in pps */ +#define RDPA_CPU_METER_SR_QUANTA 10 /**< CPU meter SR must be a multiple of quanta */ +#else +#define RDPA_CPU_METER_MAX_SR 40000 /**< Max CPU meter SR value in pps */ +#define RDPA_CPU_METER_MIN_SR 100 /**< Min CPU meter SR value in pps */ +#define RDPA_CPU_METER_SR_QUANTA 100 /**< CPU meter SR must be a multiple of quanta */ +#endif + + + +/** Reason index. Underlying type of cpu_reason_index aggregate */ +typedef struct +{ + rdpa_traffic_dir dir; /**< Traffic direction */ + rdpa_cpu_reason reason; /**< CPU reason */ +#if defined(BCM_DSL_RDP) + int table_index; /**< reason table index */ +#endif + int entry_index; /* Reserved for internal use. */ +} rdpa_cpu_reason_index_t; + +/** Reason configuration structure. + * Underlying structure for cpu_reason_cfg aggregate + */ +typedef struct +{ + bdmf_index queue; /**< reason --> queue mapping */ + bdmf_index meter; /**< CPU interface meter index < RDPA_CPU_MAX_METERS or BDMF_INDEX_UNDEFINED */ + rdpa_ports meter_ports; /**< Mask of ports for which the policer is active */ +} rdpa_cpu_reason_cfg_t; + +/** CPU meter configuration + * Underlying structure for cpu_meter_cfg aggregate + */ +typedef struct +{ + uint32_t sir; /**< SIR ( packets per sec ) */ + uint32_t burst_size; /**< Burst size ( packets ) */ +} rdpa_cpu_meter_cfg_t; + +/** L4 dst port to reason configuration + * Underlying structure for l4_dst_port_to_reason aggregate + */ +typedef struct +{ + bdmf_boolean is_tcp; /**< TCP or UDP */ + uint16_t l4_dst_port; /**< l4 dst port */ + rdpa_cpu_reason reason; /**< rdpa cpu reason */ + bdmf_boolean is_static; /**< static or dynamic */ + uint8_t refcnt; /**< reference count */ +} rdpa_l4_dst_port_to_reason_cfg_t; + +/** Receive packet info */ +typedef struct +{ + rdpa_cpu_reason reason; /**< trap reason */ + rdpa_if src_port; /**< source port */ + uint16_t vport; + uint32_t reason_data; /**< Reason-specific data. + For CPU port it usually contains src_flow + For Wi-Fi port it contains source SSID index in 16 MSB and destination SSID vector in 16 LSB + It can contain other reason-specific info (such as OAM info, etc.). + */ + void *data; /** max MTU size */ + uint32_t tx_rdd_error; /**< Discarded because RDD returned error */ +} rdpa_cpu_tx_stat_t; + + +/** Send system buffer + * + * \param[in] sysb System buffer. Released regardless on the function outcome + * \param[in] info Tx info + * \return 0=OK or int error code\n + */ +int rdpa_cpu_send_sysb(bdmf_sysb sysb, const rdpa_cpu_tx_info_t *info); + +/** Send system buffer allocated from FPM + * + * \param[in] sysb System buffer. Released regardless on the function outcome + * \param[in] info Tx info + * \return 0=OK or int error code\n + */ +int rdpa_cpu_send_sysb_fpm(bdmf_sysb sysb, const rdpa_cpu_tx_info_t *info); + +int rdpa_cpu_send_wfd_to_bridge(bdmf_sysb sysb, const rdpa_cpu_tx_info_t *info, size_t offset_next); + +#if defined(BCM_DSL_RDP) || defined(BCM_DSL_XRDP) +/** Send system buffer to Ethernet/DSL WAN Interface + * + * \param[in] sysb System buffer. Released regardless on the function outcome + * \param[in] egress_queue Ethernet Egress Queue + * \return 0=OK or int error code\n + */ +int rdpa_cpu_tx_port_enet_or_dsl_wan(bdmf_sysb sysb, uint32_t egress_queue, rdpa_flow wan_flow, rdpa_if wan_if, + rdpa_cpu_tx_extra_info_t extra_info); + +/** Send system buffer to Ethernet LAN Interface + * + * \param[in] sysb System buffer. Released regardless on the function outcome + * \param[in] egress_queue Ethernet Egress Queue + * \param[in] phys_port Ethernet LAN physical port + * \return 0=OK or int error code\n + */ +int rdpa_cpu_tx_port_enet_lan(bdmf_sysb sysb, uint32_t egress_queue, + uint32_t phys_port, rdpa_cpu_tx_extra_info_t extra_info); + +/** Send system buffer to Flow Cache Offload + * + * \param[in] sysb: System buffer. Released regardless on the function outcome + * \param[in] cpu_rx_queue: CPU Rx Queue index, in case of Runner Flow miss + * \param[in] dirty: Indicates whether a packet flush from D$ is required + * \return 0=OK or int error code\n + */ +int rdpa_cpu_tx_flow_cache_offload(bdmf_sysb sysb, uint32_t cpu_rx_queue, int dirty); + +/** Frees the given free index and returns a pointer to the associated + * System Buffer. It is up to the caller to process the System Buffer. + * + * \param[in] free_index: Runner free index + * \return: Pointer to the associated system buffer\n + */ +bdmf_sysb rdpa_cpu_return_free_index(uint16_t free_index); + +/** Receive a system buffer (FKB type) from an Ethernet Interface + * + * \param[in] queue CPU RX Queue ID + * \param[in] sysb System buffer + * \param[in] src_port Source RDPA Interface + * \return 0=OK or int error code\n + */ +int rdpa_cpu_host_packet_get_enet(bdmf_index queue, bdmf_sysb *sysb, rdpa_if *src_port); + +/** Free all pending Tx Buffers + */ +void rdpa_cpu_tx_reclaim(void); + +/** Send system buffer to IPsec Offload + * + * \param[in] sysb: System buffer. + * \param[in] dir: Indicates whether the packet is upstream or downstream. + * \param[in] esphdr_offset: ESP header byte offset into the packet. + * \param[in] sa_index: Entry index of the ddr SA descriptor table. + * \param[in] sa_update: 0- sa_index entry of the ddr sa descriptor table is new. + * 1- sa_index entry of the ddr sa descriptor table has been updated.. + * \param[in] cpu_qid: Runner - HostCPU queue id + * \return 0=OK or int error code\n + */ +int rdpa_cpu_tx_ipsec_offload(bdmf_sysb sysb, rdpa_traffic_dir dir, uint8_t esphdr_offset, + uint8_t sa_index, uint8_t sa_update, uint8_t cpu_qid); +#endif + +/** Send raw packet + * + * \param[in] data Packet data + * \param[in] length Packet length + * \param[in] info Info + * \return 0=OK or int error code\n + */ +int rdpa_cpu_send_raw(void *data, uint32_t length, const rdpa_cpu_tx_info_t *info); + +/** Get cpu queue emptiness status + * + * \param[in] port CPU port (CPU, PCI1, PCI2) + * \param[in] queue Queue index < num_queues in rdpa_port_tm_cfg_t or UNASSIGNED + * \return 0=no packets are waiting or at least one packet in queue\n + */ +int rdpa_cpu_queue_not_empty(rdpa_cpu_port port, bdmf_index queue); + +/** Get cpu queue fullness status + * + * \param[in] port CPU port (CPU, PCI1, PCI2) + * \param[in] queue Queue index < num_queues in rdpa_port_tm_cfg_t or UNASSIGNED + * \return 1 = if queue is full or 0 if there is still place to put packets\n + */ +int rdpa_cpu_queue_is_full(rdpa_cpu_port port, bdmf_index queue); + + +/** Get the Time Of Day from the FW FIFO, by the ptp index + * \param[in] ptp_index ptp_index is an entry of struct rdpa_cpu_rx_info_t and is copied from struct + * CPU_RX_PARAMS on each received packet. It is only relevant on ptp 1588 packets. + * By this index we get the corresponding Time Of Day of the received packet. + * \param[out] tod_h 4 most bytes of the TOD + * \param[out] tod_l 4 least bytes of the TOD + * \param[out] local_counter_delta time propagation delta between HW and NP + * \return 0=OK or int error code\n */ +int rdpa_cpu_ptp_1588_get_tod(uint16_t ptp_index, uint32_t *tod_h, + uint32_t *tod_l, uint16_t *local_counter_delta); + +/** Send ptp-1588 system buffer +* +* \param[in] sysb System buffer. Released regardless on the function outcome +* \param[in] info Tx info +* \return 0=OK or int error code\n +*/ +int rdpa_cpu_send_sysb_ptp(bdmf_sysb sysb, const rdpa_cpu_tx_info_t *info); + +/** Send system buffer - Special function to send EPON Dying + * Gasp: + * + * \param[in] sysb System buffer. Released regardless on the function outcome + * \param[in] info Tx info + * \return 0=OK or int error code\n + * + * */ +int rdpa_cpu_send_epon_dying_gasp(bdmf_sysb sysb, const rdpa_cpu_tx_info_t *info); + +/** Check if the reason is supported by port metering + * \param[in] reason reason to test + * \return 0=OK or int error code\n + */ +int rdpa_cpu_is_per_port_metering_supported(rdpa_cpu_reason reason); + + +/** @} end of cpu_tx Doxygen group */ +/** @} end of cpu Doxygen group */ + +rdpa_ports rdpa_ports_all_lan(void); + +void rdpa_cpu_rx_dump_packet(char *name, rdpa_cpu_port port, + bdmf_index queue, rdpa_cpu_rx_info_t *info, uint32_t dst_ssid); + +#ifdef XRDP +/** Platform buffer */ +typedef void *bdmf_pbuf_t; + +static inline void bdmf_pbuf_init(uint32_t size, uint32_t offset) { } +static inline void bdmf_pbuf_free(bdmf_pbuf_t *pbuf) { } +static inline int bdmf_pbuf_alloc(void *data, uint32_t length, uint16_t source, bdmf_pbuf_t *pbuf) { return 0; } +#endif + +#if defined(CONFIG_BCM_FCACHE_CLASSIFICATION_BYPASS) +#define L2_FLOW_P_LEN 4 +typedef struct { + union { + struct { + BE_DECL( + uint32_t incarn : 3; + uint32_t src_port : 6; + uint32_t self : 23; + ) + LE_DECL( + uint32_t self : 23; + uint32_t src_port : 6; + uint32_t incarn : 3; + ) + } id; + uint32_t word; + }; +} fc_class_ctx_t; +#endif + +#ifdef __cplusplus +} +#endif + + +#endif /* RDPA_CPU_H_ */ + diff --git a/arch/arm/mach-bcmbca/rdp/rdpa_cpu_basic.h b/arch/arm/mach-bcmbca/rdp/rdpa_cpu_basic.h new file mode 100755 index 0000000000..b9c61c0ddd --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/rdpa_cpu_basic.h @@ -0,0 +1,221 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* +* +*/ + + +#ifndef RDPA_CPU_BASIC_H_ +#define RDPA_CPU_BASIC_H_ + +/** \addtogroup cpu CPU Interface + * + * @{ + */ + +/** CPU trap reasons */ +typedef enum +{ + rdpa_cpu_reason_min = 0, + + rdpa_cpu_rx_reason_oam = 0, /**< OAM packet */ + rdpa_cpu_rx_reason_omci = 1, /**< OMCI packet */ + rdpa_cpu_rx_reason_flow = 2, + rdpa_cpu_rx_reason_mcast = 3, /**< Multicat packet */ + rdpa_cpu_rx_reason_bcast = 4, /**< Broadcast packet */ + rdpa_cpu_rx_reason_igmp = 5, /**< Igmp packet */ + rdpa_cpu_rx_reason_icmpv6 = 6, /**< Icmpv6 packet */ + rdpa_cpu_rx_reason_mac_trap_0 = 7, + rdpa_cpu_rx_reason_mac_trap_1 = 8, + rdpa_cpu_rx_reason_mac_trap_2 = 9, + rdpa_cpu_rx_reason_mac_trap_3 = 10, + rdpa_cpu_rx_reason_dhcp = 11, /**< DHCP packet */ + rdpa_cpu_rx_reason_non_tcp_udp = 12, /**< Packet is non TCP or UDP */ + rdpa_cpu_rx_reason_local_ip = 13, /**< CPU ingress packet copy */ + rdpa_cpu_rx_reason_hdr_err = 14, /**< Packet with IP header error */ + rdpa_cpu_rx_reason_sa_moved = 15, /**< SA move indication*/ + rdpa_cpu_rx_reason_unknown_sa = 16, /**< Unknown SA indication */ + rdpa_cpu_rx_reason_unknown_da = 17, /**< Unknown DA indication */ + rdpa_cpu_rx_reason_ip_frag = 18, /**< Packet is fragmented */ + rdpa_cpu_rx_reason_mac_spoofing = 19, /**< Mac spoofing \XRDP_LIMITED */ + rdpa_cpu_rx_reason_direct_flow = 20, /**< Direct flow */ + rdpa_cpu_rx_reason_mcast_miss = 21, /**< Multicast flow lookup miss */ + rdpa_cpu_rx_reason_ipsec = 22, /**< IPSec RX offload */ + rdpa_cpu_rx_reason_reserved_0 = 23, /* */ + rdpa_cpu_rx_reason_reserved_1 = 24, /* */ + rdpa_cpu_rx_reason_reserved_2 = 25, /* */ + rdpa_cpu_rx_reason_l2cp = 26, /* \XRDP_LIMITED */ + rdpa_cpu_rx_reason_cpu_mirroring = 27, /* */ + rdpa_cpu_rx_reason_etype_udef_0 = 28, /**< User defined ethertype 1 */ + rdpa_cpu_rx_reason_etype_udef_1 = 29, /**< User defined ethertype 2 */ + rdpa_cpu_rx_reason_etype_udef_2 = 30, /**< User defined ethertype 3 */ + rdpa_cpu_rx_reason_etype_udef_3 = 31, /**< User defined ethertype 4 */ + rdpa_cpu_rx_reason_etype_pppoe_d = 32, /**< PPPoE Discovery */ + rdpa_cpu_rx_reason_etype_pppoe_s = 33, /**< PPPoE Source */ + rdpa_cpu_rx_reason_etype_arp = 34, /**< Packet with ethertype Arp */ + rdpa_cpu_rx_reason_etype_ptp_1588 = 35, /**< Packet with ethertype 1588 */ + rdpa_cpu_rx_reason_etype_802_1x = 36, /**< Packet with ethertype 802_1x */ + rdpa_cpu_rx_reason_etype_802_1ag_cfm = 37, /**< Packet with ethertype v801 Lag CFG*/ + rdpa_cpu_rx_reason_pci_ip_flow_miss_1 = 38, /**< DHD PCI flow miss radio 1 */ + rdpa_cpu_rx_reason_pci_ip_flow_miss_2 = 39, /**< DHD PCI flow miss radio 2 */ + rdpa_cpu_rx_reason_pci_ip_flow_miss_3 = 40, /**< DHD PCI flow miss radio 3 */ + rdpa_cpu_rx_reason_ip_flow_miss = 41, /**< Flow miss indication */ + rdpa_cpu_rx_reason_tcp_flags = 42, /**< TCP flag indication */ + rdpa_cpu_rx_reason_ttl_expired = 43, /**< TTL expired indication */ + rdpa_cpu_rx_reason_mtu_exceeded = 44, /**< MTU exceeded indication */ + rdpa_cpu_rx_reason_l4_icmp = 45, /**< layer-4 ICMP protocol */ + rdpa_cpu_rx_reason_l4_esp = 46, /**< layer-4 ESP protocol */ + rdpa_cpu_rx_reason_l4_gre = 47, /**< layer-4 GRE protocol */ + rdpa_cpu_rx_reason_l4_ah = 48, /**< layer-4 AH protocol */ + rdpa_cpu_rx_reason_parser_error = 49, /**< Error when parsing packet \XRDP_LIMITED */ + rdpa_cpu_rx_reason_l4_ipv6 = 50, /**< layer-4 IPV6 protocol */ + rdpa_cpu_rx_reason_l4_udef_0 = 51, /**< User defined layer-4 1 */ + rdpa_cpu_rx_reason_l4_udef_1 = 52, /**< User defined layer-4 2 */ + rdpa_cpu_rx_reason_l4_udef_2 = 53, /**< User defined layer-4 3 */ + rdpa_cpu_rx_reason_l4_udef_3 = 54, /**< User defined layer-4 4 */ + rdpa_cpu_rx_reason_cpu_redirect = 55, /**< CPU redirect */ + rdpa_cpu_rx_reason_udef_0 = 56, /**< User defined 1 */ + rdpa_cpu_rx_reason_udef_1 = 57, /**< User defined 2 */ + rdpa_cpu_rx_reason_udef_2 = 58, /**< User defined 3 */ + rdpa_cpu_rx_reason_udef_3 = 59, /**< User defined 4 */ + rdpa_cpu_rx_reason_udef_4 = 60, /**< User defined 5 */ + rdpa_cpu_rx_reason_udef_5 = 61, /**< User defined 6 */ + rdpa_cpu_rx_reason_udef_6 = 62, /**< User defined 7 */ + rdpa_cpu_rx_reason_udef_7 = 63, /**< User defined 8 */ + rdpa_cpu_reason__num_of +} rdpa_cpu_reason; + +#if defined(CONFIG_BCM_REASON_TO_SKB_MARK) || defined(BCM_REASON_TO_SKB_MARK) +#define WEB_ACCESS_IC_TRAP_REASON rdpa_cpu_rx_reason_udef_6 +#define WEB_ACCESS_SKB_MARK_PORT 0x5A +#endif + +#if defined(CONFIG_BCM_DSL_XRDP) || defined(CONFIG_BCM_DSL_RDP) +#define rdpa_cpu_rx_reason_hit_trap_high rdpa_cpu_rx_reason_udef_4 +#define rdpa_cpu_rx_reason_hit_trap_low rdpa_cpu_rx_reason_udef_5 +#define rdpa_cpu_rx_reason_ingqos rdpa_cpu_rx_reason_udef_6 +#define RDPACTL_IC_TRAP_REASON_HIGH (rdpa_cpu_rx_reason_ingqos - rdpa_cpu_rx_reason_udef_0) +#define rdpa_cpu_rx_reason_tcpspdtst rdpa_cpu_rx_reason_udef_7 +#else +#define rdpa_cpu_rx_reason_tcpspdtst rdpa_cpu_rx_reason_udef_7 +#endif + +/** CPU port */ +typedef enum +{ + rdpa_cpu_port_first = 0, +#ifndef XRDP + rdpa_cpu_host = rdpa_cpu_port_first, /**< Host RX */ + rdpa_cpu_wlan0, /**< WLAN 0 TX */ + rdpa_cpu_wlan1, /* Reserved for future use */ +#else + rdpa_cpu0 = rdpa_cpu_port_first, + rdpa_cpu_host = rdpa_cpu0, /**< Host RX */ + rdpa_cpu1, + rdpa_cpu_xtm = rdpa_cpu1, /**< XTM RX */ + rdpa_cpu2, + rdpa_cpu3, + rdpa_cpu4, + rdpa_cpu_wlan0 = rdpa_cpu4, /**< WLAN 0 TX */ + rdpa_cpu5, + rdpa_cpu_wlan1 = rdpa_cpu5, + rdpa_cpu6, + rdpa_cpu_wlan2 = rdpa_cpu6, +#endif + rdpa_cpu_port__num_of, + rdpa_cpu_none +} rdpa_cpu_port; + +#define RDPA_CPU_MAX_QUEUES 8 /**< Max number of queues on host port */ +#ifndef XRDP +#define RDPA_WLAN_MAX_QUEUES 7 /**< Max number of queues on WLAN port */ +#endif + +/** TC */ +#define RDPA_CPU_TC_DEFAULT 0 +#define RDPA_CPU_TC_NUM 8 + +/** CPU reason table indicies */ +#define CPU_REASON_LAN_TABLE_INDEX 0 +#define CPU_REASON_WAN0_TABLE_INDEX 0 +#define CPU_REASON_WAN1_TABLE_INDEX 1 + +/** @} end of cpu Doxygen group */ + +/** TC definition */ +typedef enum +{ + rdpa_cpu_tc0 = 0, + rdpa_cpu_tc1 = 1, + rdpa_cpu_tc2 = 2, + rdpa_cpu_tc3 = 3, + rdpa_cpu_tc4 = 4, + rdpa_cpu_tc5 = 5, + rdpa_cpu_tc6 = 6, + rdpa_cpu_tc7 = 7, + rdpa_cpu_tc__num_of, +} rdpa_cpu_tc; + +/** \addtogroup cpu_tx Transmit + * + * @{ + */ + +/** CPU tx packet insertion point */ +typedef enum +{ + rdpa_cpu_tx_port = 0, /**< Egress port and priority are specified explicitly. This is the most common mode */ + rdpa_cpu_tx_egress = 0, /**< Egress port and priority are specified explicitly. This is the most common mode same as rdpa_cpu_tx_egress*/ + rdpa_cpu_tx_bridge = 1, /**< Before bridge forwarding decision, before classification */ + rdpa_cpu_tx_ingress = 1, /**< Before bridge forwarding decision, before classification same as rdpa_cpu_tx_bridge*/ + + rdpa_cpu_tx_entry__num_of /**< Number of CPU TX entries */ +} rdpa_cpu_tx_method; + +/** Extra data that can be passed along with the packet to be transmitted */ +typedef struct +{ + rdpa_cpu_tx_method method; /**< Packet transmit method */ + rdpa_if port; /**< Destination port for method=port, source port for method=bridge */ + rdpa_cpu_port cpu_port; /**< CPU object index \XRDP_LIMITED */ + uint8_t ssid; /**< SSID, in use when port is wlan */ + uint8_t lag_index; /**< lag_index, in use when port is an SF2 port */ + + union { + /* queue_id in the following substructures must overlap */ + struct { + uint32_t queue_id; /**< Egress queue id */ + } lan; + + struct { + uint32_t queue_id; /**< Egress queue id. method=port only */ + rdpa_flow flow; /**< Destination flow for method=port, Source flow for method=bridge,port=wan */ + } wan; + + uint32_t oam_data; /**< Extra data entry-specific */ + } x; + uint32_t data; /**= rdpa_if_cpu_first && __if <= rdpa_if_cpu_last; +} + +/** Check if interface is either LAN interface (LAN EMAC port or LAN switch port) or Wi-Fi SSID + * \param[in] __if Interface + * \return 1 LAN interface or Wi-Fi SSID, 0 otherwise + */ +static inline int rdpa_if_is_lan_or_wifi(rdpa_if __if) +{ + return rdpa_if_is_lan(__if) || rdpa_if_is_wifi(__if); +} + +/** Check if interface is either LAN interface (LAN EMAC port or LAN switch port) or WLAN (PCI port) + * \param[in] __if Interface + * \return 1 LAN interface or WLAN, 0 otherwise + */ +static inline int rdpa_if_is_lan_or_cpu(rdpa_if __if) +{ + return rdpa_if_is_lan(__if) || rdpa_if_is_cpu_port(__if); +} + +/** Check if interface is CPU and not WLAN (PCI port) + * \param[in] __if Interface + * \return 1 if pure CPU, 0 otherwise + */ +static inline int rdpa_if_is_cpu_not_wlan(rdpa_if __if) +{ + return rdpa_if_is_cpu_port(__if) && (!rdpa_if_is_wlan(__if)); +} + + +/** All MACs */ +#define RDPA_PORT_ALL_MACS (RDPA_PORT_ALL_LAN_MACS | RDPA_PORT_ALL_WAN) + +/** Check if port mask contains single port + * \param[in] ports Port Mask + * \return 1 if mask contains a single port , 0 otherwise + */ +static inline int rdpa_port_is_single(rdpa_ports ports) +{ + return (ports & (ports - 1)) == 0; +} + +/** Check if port mask contains wan0 port + * \param[in] ports Port Mask + * \return 1 if mask contains a wan0 port , 0 otherwise + */ +static inline int rdpa_ports_contains_wan0_if(rdpa_ports ports) +{ + return ports & rdpa_if_id(rdpa_if_wan0); /* FIXME - MULTI-WAN XPON */ +} + +/** System operation mode */ +typedef enum +{ + rdpa_method_prv, /**< Used to configure system in Provision mode */ + rdpa_method_fc, /**< Used to configure system in Flow Cache mode */ +} rdpa_operation_mode; + +/** IPTV entries lookup method */ +typedef enum +{ + iptv_lookup_method_mac, /**< Perform IPTV entry lookup by MAC address (L2) */ + iptv_lookup_method_mac_vid, /**< Perform IPTV entry lookup by MAC address and VID (L2) */ + iptv_lookup_method_group_ip, /**< Perform IPTV entry lookup by Multicast Group IP address (IGMPv2/MLDv1) */ + iptv_lookup_method_group_ip_src_ip, /**< Perform IPTV entry lookup by Multicast Group IP and Source IP + addresses (IGMPv3/MLDv2). Source IP address is optional. */ + iptv_lookup_method_group_ip_src_ip_vid /**< Perform IPTV entry lookup by Multicast Group IP and Source IP + addresses and VID. Source IP address is optional. */ +} rdpa_iptv_lookup_method; + +/** EPON mode */ +typedef enum +{ + rdpa_epon_none, /**< not EPON mode */ + rdpa_epon_ctc, /**< CTC OAM mode */ + rdpa_epon_cuc, /**< CUC OAM mode */ + rdpa_epon_dpoe, /**< DPOE OAM mode */ + rdpa_epon_bcm, /**< BCM OAM mode */ + rdpa_epon_ctc_dyn, /**< CTC OAM dynamic mode */ + rdpa_epon_cuc_dyn, /**< CUC OAM dynamic mode */ + rdpa_epon_last, +} rdpa_epon_mode; + +/** Packet offset type */ +typedef enum +{ + RDPA_OFFSET_L2, /**< Offset of L2 header */ + RDPA_OFFSET_L3, /**< Offset of L3 header */ + RDPA_OFFSET_L4, /**< Offset of L4 header */ +} rdpa_offset_t; + +/* BPM buffer size */ +typedef enum +{ + RDPA_BPM_BUFFER_2K = 2048, + RDPA_BPM_BUFFER_2_5K = 2560, + RDPA_BPM_BUFFER_4K = 4096, + RDPA_BPM_BUFFER_16K = 16384, +} rdpa_bpm_buffer_size_t; + +/** WiFi Acceleration type */ +typedef enum +{ + RDPA_WL_ACCEL_NONE = 0, /**< Acceleration disabled */ + RDPA_WL_ACCEL_WFD, /**< WFD Acceleration type */ + RDPA_WL_ACCEL_DHD_OFFLOAD /**< DHD Offload Acceleration type */ +} rdpa_wl_accel_t; + +/** CPU ring type */ +typedef enum { + rdpa_ring_data = 0, /**< Data ring */ + rdpa_ring_recycle = 1, /**< Recycle ring */ + rdpa_ring_feed = 2, /**< Feed ring */ + rdpa_ring_cpu_tx = 3, /**< Cpu tx PD ring */ +} rdpa_ring_type_t; + +typedef enum { + rdpa_proto_filter_ipv4, + rdpa_proto_filter_ipv6, + rdpa_proto_filter_pppoe, + rdpa_proto_filter_non_ip, + rdpa_proto_filter_any, + rdpa_proto_filter_last = rdpa_proto_filter_any, +} rdpa_proto_filter_t; + +/** Protocol Filters mask, defines allowed protocols */ +typedef enum { + rdpa_proto_filter_ipv4_mask = (1 << rdpa_proto_filter_ipv4), /**< Allow IPv4 traffic */ + rdpa_proto_filter_ipv6_mask = (1 << rdpa_proto_filter_ipv6), /**< Allow IPv6 traffic */ + rdpa_proto_filter_pppoe_mask = (1 << rdpa_proto_filter_pppoe), /**< Allow PPPoE traffic */ + rdpa_proto_filter_non_ip_mask = (1 << rdpa_proto_filter_non_ip), /**< Allow Non-IP traffic */ + rdpa_proto_filter_any_mask = (1 << rdpa_proto_filter_any), /**< Allow any traffic */ +} rdpa_proto_filter_fields; + +typedef uint32_t rdpa_proto_filters_mask_t; /**< Mask of \ref rdpa_proto_filter_fields (enabled protocols) */ + +/** @} end of types Doxygen group */ + +typedef struct +{ + int src; + int dest; +} int2int_map_t; + +static inline int int2int_map(int2int_map_t *map, int src, int last) +{ + for (; map->src != last && map->src != src; map++) + ; + return map->dest; +} + +static inline int int2int_map_r(int2int_map_t *map, int src, int last) +{ + for (; map->src != last && map->dest != src; map++) + ; + return map->src; +} + +typedef enum +{ + RDPA_FLOW_UNKNOWN, + RDPA_FLOW_TUPLE_L3, + RDPA_FLOW_TUPLE_L2, + RDPA_FLOW_MC, +} rdpa_flow_t; + +#endif /* _RDPA_TYPES_H_ */ + diff --git a/arch/arm/mach-bcmbca/rdp/unimac_drv.h b/arch/arm/mach-bcmbca/rdp/unimac_drv.h new file mode 100755 index 0000000000..6432b9166f --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/unimac_drv.h @@ -0,0 +1,579 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2013 Broadcom Corporation + All Rights Reserved + + +*/ +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the definition for the Unimac block */ +/* */ +/******************************************************************************/ +#ifndef __UNIMAC_DRV_H +#define __UNIMAC_DRV_H + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ +#include +#include +#include +#include "hwapi_mac.h" +#if defined(CONFIG_BCM47622) +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +#define _BYTE_ORDER_LITTLE_ENDIAN_ +#endif +#define WRITE_32(a, r) ( *(volatile uint32_t*)(a) = *(uint32_t*)&(r) ) +#define READ_32(a, r) ( *(volatile uint32_t*)&(r) = *(volatile uint32_t*) (a) ) +#define VAL32(_a) ( *(volatile uint32_t*)(_a)) +#else +#include "access_macros.h" +#endif + +#if defined(CONFIG_BCM6846) || defined(CONFIG_BCM63158) || defined(CONFIG_BCM6856) || defined(CONFIG_BCM47622) || defined(CONFIG_BCM6878) +#define swap2bytes(x) (x) +#define swap4bytes(x) (x) +#define swap4bytes64(x) (x) +#endif +/******************************************************************************/ +/* */ +/* Types and values definitions */ +/* */ +/******************************************************************************/ + +#define UNIMAC_CONFIGURATION_UMAC_0_UMAC_DUMMY UNIMAC_CFG_BASE + 0x0000 /* UniMAC Dummy Register */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_HD_BKP_CNTL UNIMAC_CFG_BASE + 0x0004 /* UniMAC Half Duplex Backpressure Control Register */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD UNIMAC_CFG_BASE + 0x0008 /* UniMAC Command Register */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_MAC0 UNIMAC_CFG_BASE + 0x000c /* UniMAC MAC address first 4 bytes*/ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_MAC1 UNIMAC_CFG_BASE + 0x0010 /* UniMAC MAC address 2 last bytes*/ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_FRM_LEN UNIMAC_CFG_BASE + 0x0014 /* UniMAC Frame Length */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_PAUSE_QUNAT UNIMAC_CFG_BASE + 0x0018 /* UniMAC Pause Quanta */ +#define UNIMAC_CONFIGURATION_UMAC_0_SFD_OFFSET UNIMAC_CFG_BASE + 0x0040 /* UniMAC EFM Preamble Length */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_MODE UNIMAC_CFG_BASE + 0x0044 /* UniMAC Mode */ +#define UNIMAC_CONFIGURATION_UMAC_0_FRM_TAG0 UNIMAC_CFG_BASE + 0x0048 /* UniMAC Preamble Outer TAG 0 */ +#define UNIMAC_CONFIGURATION_UMAC_0_FRM_TAG1 UNIMAC_CFG_BASE + 0x004c /* UniMAC Preamble Outer TAG 1 */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_TX_IPG_LEN UNIMAC_CFG_BASE + 0x005c /* UniMAC Inter Packet Gap */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_EEE_CTRL UNIMAC_CFG_BASE + 0x0064 /* UniMAC Energy Efficient Ethernet Control */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_EEE_LPI_TIMER UNIMAC_CFG_BASE + 0x0068 /* EEE LPI timer */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_EEE_WAKE_TIMER UNIMAC_CFG_BASE + 0x006c /* EEE wakeup timer */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_EEE_REF_COUNT UNIMAC_CFG_BASE + 0x0070 /* UniMAC Energy Efficient Ethernet Ref Clock Speed */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_EEE_MII_LPI_TIMER UNIMAC_CFG_BASE + 0x0068 /* MII EEE LPI timer */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_EEE_GMII_LPI_TIMER UNIMAC_CFG_BASE + 0x006c /* GMII EEE LPI timer */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_EEE_MII_WAKE_TIMER UNIMAC_CFG_BASE + 0x0080 /* MII EEE wakeup timer */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_EEE_GMII_WAKE_TIMER UNIMAC_CFG_BASE + 0x0084 /* GMII EEE wakeup timer */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_PAUSE_CNTRL UNIMAC_CFG_BASE + 0x0330 /* UniMAC Repetitive Pause Control in TX direction */ +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_RX_MAX_PKT_SIZE UNIMAC_CFG_BASE + 0x0608 /* UniMAC RX MAX packet Size Register */ + +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GR64 UNIMAC_MIB_BASE + 0x0000 /* Receive 64B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GR127 UNIMAC_MIB_BASE + 0x0004 /* Receive 65B to 127B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GR255 UNIMAC_MIB_BASE + 0x0008 /* Receive 128B to 255B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GR511 UNIMAC_MIB_BASE + 0x000c /* Receive 256B to 511B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GR1023 UNIMAC_MIB_BASE + 0x0010 /* Receive 512B to 1023B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GR1518 UNIMAC_MIB_BASE + 0x0014 /* Receive 1024B to 1518B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRMGV UNIMAC_MIB_BASE + 0x0018 /* Receive 1519B to 1522B Good VLAN Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GR2047 UNIMAC_MIB_BASE + 0x001c /* Receive 1519B to 2047B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GR4095 UNIMAC_MIB_BASE + 0x0020 /* Receive 2048B to 4095B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GR9216 UNIMAC_MIB_BASE + 0x0024 /* Receive 4096B to 9216B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRPKT UNIMAC_MIB_BASE + 0x0028 /* Receive Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRBYT UNIMAC_MIB_BASE + 0x002c /* Receive Byte Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRMCA UNIMAC_MIB_BASE + 0x0030 /* Receive Multicast Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRBCA UNIMAC_MIB_BASE + 0x0034 /* Receive Broadcast Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRFCS UNIMAC_MIB_BASE + 0x0038 /* Receive FCS Error Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRXCF UNIMAC_MIB_BASE + 0x003c /* Receive Control Frame Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRXPF UNIMAC_MIB_BASE + 0x0040 /* Receive Pause Frame Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRXUO UNIMAC_MIB_BASE + 0x0044 /* Receive Unknown OP Code Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRALN UNIMAC_MIB_BASE + 0x0048 /* Receive Alignmenet Error Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRFLR UNIMAC_MIB_BASE + 0x004c /* Receive Frame Length Out Of Range Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRCDE UNIMAC_MIB_BASE + 0x0050 /* Receive Code Error Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRFCR UNIMAC_MIB_BASE + 0x0054 /* Receive Carrier Sense Error Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GROVR UNIMAC_MIB_BASE + 0x0058 /* Receive Oversize Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRJBR UNIMAC_MIB_BASE + 0x005c /* Receive Jabber Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRMTUE UNIMAC_MIB_BASE + 0x0060 /* Receive MTU Error Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRPOK UNIMAC_MIB_BASE + 0x0064 /* Receive Good Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRUC UNIMAC_MIB_BASE + 0x0068 /* Receive Unicast Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRPPP UNIMAC_MIB_BASE + 0x006c /* Receive PPP Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GRCRC UNIMAC_MIB_BASE + 0x0070 /* Receive CRC Match Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_TR64 UNIMAC_MIB_BASE + 0x0080 /* Transmit 64B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_TR127 UNIMAC_MIB_BASE + 0x0084 /* Transmit 65B to 127B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_TR255 UNIMAC_MIB_BASE + 0x0088 /* Transmit 128B to 255B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_TR511 UNIMAC_MIB_BASE + 0x008c /* Transmit 256B to 511B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_TR1023 UNIMAC_MIB_BASE + 0x0090 /* Transmit 512B to 1023B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_TR1518 UNIMAC_MIB_BASE + 0x0094 /* Transmit 1024B to 1518B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_TRMGV UNIMAC_MIB_BASE + 0x0098 /* Transmit 1519B to 1522B Good VLAN Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_TR2047 UNIMAC_MIB_BASE + 0x009c /* Transmit 1519B to 2047B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_TR4095 UNIMAC_MIB_BASE + 0x00a0 /* Transmit 2048B to 4095B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_TR9216 UNIMAC_MIB_BASE + 0x00a4 /* Transmit 4096B to 9216B Frame Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTPKT UNIMAC_MIB_BASE + 0x00a8 /* Transmit Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTMCA UNIMAC_MIB_BASE + 0x00ac /* Transmit Multicast Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTBCA UNIMAC_MIB_BASE + 0x00b0 /* Transmit Broadcast Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTXPF UNIMAC_MIB_BASE + 0x00b4 /* Transmit Pause Frame Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTXCF UNIMAC_MIB_BASE + 0x00b8 /* Transmit Control Frame Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTFCS UNIMAC_MIB_BASE + 0x00bc /* Transmit FCS Error Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTOVR UNIMAC_MIB_BASE + 0x00c0 /* Transmit Oversize Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTDRF UNIMAC_MIB_BASE + 0x00c4 /* Transmit Deferral Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTEDF UNIMAC_MIB_BASE + 0x00c8 /* Transmit Excessive Deferral Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTSCL UNIMAC_MIB_BASE + 0x00cc /* Transmit Single Collision Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTMCL UNIMAC_MIB_BASE + 0x00d0 /* Transmit Multiple Collision Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTLCL UNIMAC_MIB_BASE + 0x00d4 /* Transmit Late Collision Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTXCL UNIMAC_MIB_BASE + 0x00d8 /* Transmit Excessive Collision Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTFRG UNIMAC_MIB_BASE + 0x00dc /* Transmit Fragments Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTNCL UNIMAC_MIB_BASE + 0x00e0 /* Transmit Total Collision Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTJBR UNIMAC_MIB_BASE + 0x00e4 /* Transmit Jabber Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTBYT UNIMAC_MIB_BASE + 0x00e8 /* Transmit Byte Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTPOK UNIMAC_MIB_BASE + 0x00ec /* Transmit Good Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_GTUC UNIMAC_MIB_BASE + 0x00f0 /* Transmit Unicast Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_RRPKT UNIMAC_MIB_BASE + 0x0100 /* Receive RUNT Packet Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_RRUND UNIMAC_MIB_BASE + 0x0104 /* Receive RUNT Packet And Contain A Valid FCS */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_RRFRG UNIMAC_MIB_BASE + 0x0108 /* Receive RUNT Packet And Contain Invalid FCS or Alignment Error */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_RRBYT UNIMAC_MIB_BASE + 0x010c /* Receive RUNT Packet Byte Counter */ +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_MIB_CNTRL UNIMAC_MIB_BASE + 0x0180 /* MIB Control Register */ + +#if defined(CONFIG_BCM47622) +#define UNIMAC_TOPCTRL_MIB_MAX_PKT_SIZE SYSPORT_0_BASE + 0x0028 /* Value by MIB to differentiate regular and oversized packets */ +#else +#define UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG UNIMAC_TOP_BASE + 0x0000 /* UNIMAC_CFG Register */ +#define UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1 UNIMAC_TOP_BASE + 0x0004 /* UNIMAC_EXT_CFG1 Register */ +#define UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2 UNIMAC_TOP_BASE + 0x0008 /* UNIMAC_EXT_CFG2 Register */ +#endif + +#if defined(CONFIG_BCM47622) +#define MAX_NUM_OF_EMACS 2 +#define UNIMAC_CONF_INSTANCE_OFFSET(e) ((e)?(SYSPORT_1_UMAC_BASE-SYSPORT_UMAC_BASE):0) +#define UNIMAC_MIB_INSTANCE_OFFSET(e) ((e)?(SYSPORT_1_MIB_BASE-SYSPORT_MIB_BASE):0) +#define UNIMAC_TOPCTRL_INSTANCE_OFFSET(e) ((e)?(SYSPORT_1_BASE-SYSPORT_0_BASE):0) +#else +#define MAX_NUM_OF_EMACS rdpa_emac__num_of +#define UNIMAC_CONF_INSTANCE_OFFSET(e) (0x1000/*UNIMAC_CONF_EMAC_OFFSET*/*(e)) +#define UNIMAC_MISC_INSTANCE_OFFSET(e) ( 0x400/*UNIMAC_MISC_EMAC_OFFSET*/*(e)) +#define UNIMAC_MIB_INSTANCE_OFFSET(e) ( 0x400/*UNIMAC_MIB_EMAC_OFFSET*/ *(e)) +#endif + +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_HD_BKP_CNTL_ipg_config_rx_MASK 0x0000007c +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_HD_BKP_CNTL_ipg_config_rx_SHIFT 2 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_HD_BKP_CNTL_hd_fc_ena_MASK 0x00000001 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_HD_BKP_CNTL_hd_fc_ena_SHIFT 0 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_txrx_en_config_MASK 0x20000000 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_txrx_en_config_SHIFT 29 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_tx_pause_ignore_MASK 0x10000000 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_tx_pause_ignore_SHIFT 28 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_rmt_loop_ena_MASK 0x02000000 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_rmt_loop_ena_SHIFT 25 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_cntl_frm_ena_MASK 0x00800000 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_cntl_frm_ena_SHIFT 23 +#if defined(CONFIG_BCM47622) +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_sw_override_rx_MASK 0x00040000 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_sw_override_rx_SHIFT 18 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_sw_override_tx_MASK 0x00020000 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_sw_override_tx_SHIFT 17 +#endif +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_lcl_loop_ena_MASK 0x00008000 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_lcl_loop_ena_SHIFT 15 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_sw_reset_MASK 0x00002000 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_sw_reset_SHIFT 13 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_hd_ena_MASK 0x00000400 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_hd_ena_SHIFT 10 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_rx_pause_ignore_MASK 0x00000100 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_rx_pause_ignore_SHIFT 8 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_pause_fwd_MASK 0x00000080 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_pause_fwd_SHIFT 7 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_crc_fwd_MASK 0x00000040 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_crc_fwd_SHIFT 6 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_pad_en_MASK 0x00000020 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_pad_en_SHIFT 5 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_eth_speed_MASK 0x0000000c +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_eth_speed_SHIFT 2 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_rx_ena_MASK 0x00000002 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_rx_ena_SHIFT 1 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_tx_ena_MASK 0x00000001 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_CMD_tx_ena_SHIFT 0 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_FRM_LEN_frame_length_MASK 0x00003fff +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_FRM_LEN_frame_length_SHIFT 0 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_TX_IPG_LEN_tx_ipg_len_MASK 0x0000007f +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_TX_IPG_LEN_tx_ipg_len_SHIFT 0 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_TX_IPG_LEN_tx_min_pkt_size_MASK 0x00007F00 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_TX_IPG_LEN_tx_min_pkt_size_SHIFT 8 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_RX_MAX_PKT_SIZE_max_pkt_size_MASK 0x00003fff +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_RX_MAX_PKT_SIZE_max_pkt_size_SHIFT 0 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_PAUSE_CNTRL_pause_control_en_MASK 0x00020000 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_PAUSE_CNTRL_pause_control_en_SHIFT 17 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_PAUSE_CNTRL_pause_timer_MASK 0x0001ffff +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_PAUSE_CNTRL_pause_timer_SHIFT 0 +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_PAUSE_QUNAT_pause_quant_MASK 0x0000ffff +#define UNIMAC_CONFIGURATION_UMAC_0_RDP_PAUSE_QUNAT_pause_quant_SHIFT 0 + +#define UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_INT 1 << 16 + +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_MIB_CNTRL_rx_cnt_st_MASK 0x00000001 +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_MIB_CNTRL_rx_cnt_st_SHIFT 0 +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_MIB_CNTRL_tx_cnt_rst_MASK 0x00000004 +#define UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_MIB_CNTRL_tx_cnt_rst_SHIFT 2 + +/* Macros for reading and writing UNIMAC_CONFIGURATION registers*/ + +#define UNIMAC_READ32_REG(e,r,o) READ_32( UNIMAC_CONFIGURATION_UMAC_0_RDP_##r + UNIMAC_CONF_INSTANCE_OFFSET(e) , (o) ) + +#define UNIMAC_WRITE32_REG(e,r,i) WRITE_32( UNIMAC_CONFIGURATION_UMAC_0_RDP_##r + UNIMAC_CONF_INSTANCE_OFFSET(e) , (i) ) + +#define UNIMAC_READ_FIELD(e,r,f,o) \ + ( *(volatile uint32_t*)&(o) = (swap4bytes(VAL32(UNIMAC_CONFIGURATION_UMAC_0_RDP_##r + UNIMAC_CONF_INSTANCE_OFFSET(e) )) & \ + UNIMAC_CONFIGURATION_UMAC_0_RDP_##r##_##f##_MASK ) >> UNIMAC_CONFIGURATION_UMAC_0_RDP_##r##_##f##_SHIFT ) + +#define UNIMAC_WRITE_FIELD(e,r,f,i) \ + ( ( VAL32(UNIMAC_CONFIGURATION_UMAC_0_RDP_##r + UNIMAC_CONF_INSTANCE_OFFSET(e) ) ) = \ + ( VAL32(UNIMAC_CONFIGURATION_UMAC_0_RDP_##r + UNIMAC_CONF_INSTANCE_OFFSET(e)) & swap4bytes(~UNIMAC_CONFIGURATION_UMAC_0_RDP_##r##_##f##_MASK) ) | \ + ( swap4bytes(( (i) << UNIMAC_CONFIGURATION_UMAC_0_RDP_##r##_##f##_SHIFT ) & UNIMAC_CONFIGURATION_UMAC_0_RDP_##r##_##f##_MASK)) ) + +/*Macros for reading and Writing UNIMAC_MIB counters*/ + +#define UNIMAC_READ32_MIB(e,r,o) READ_32( UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_##r + UNIMAC_MIB_INSTANCE_OFFSET(e) , (o) ) + +#define UNIMAC_WRITE32_MIB(e,r,i) WRITE_32( UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_##r + UNIMAC_MIB_INSTANCE_OFFSET(e) , (i) ) + +#define UNIMAC_READ_MIB_FIELD(e,r,f,o) \ + ( *(volatile uint32_t*)&(o) = (* ((volatile uint32_t*) DEVICE_ADDRESS(UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_##r + UNIMAC_MIB_INSTANCE_OFFSET(e) ) ) & \ + UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_##r##_##f##_MASK ) >> UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_##r##_##f##_SHIFT ) + +#define UNIMAC_WRITE_MIB_FIELD(e,r,f,i) \ + ( ( VAL32(UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_##r + UNIMAC_MIB_INSTANCE_OFFSET(e)) ) = \ + ( VAL32(UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_##r + UNIMAC_MIB_INSTANCE_OFFSET(e)) & swap4bytes(~UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_##r##_##f##_MASK) ) | \ + ( swap4bytes(( (i) << UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_##r##_##f##_SHIFT ) & UNIMAC_CONFIGURATION_UMAC_MIB_0Module_RDP_##r##_##f##_MASK)) ) + + +typedef enum +{ + UNIMAC_SPEED_10, + UNIMAC_SPEED_100, + UNIMAC_SPEED_1000, + UNIMAC_SPEED_2500 +}UNIMAC_SPEED; + +typedef enum +{ + UNIMAC_DUPLEX_HALF, + UNIMAC_DUPLEX_FULL +}UNIMAC_DUPLEX; + + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + /*Reserved bit must be written with 0. A read returns an unknown value.*/ + uint32_t reserved3:1; + /*Disable RX side RUNT filtering. 0: Enable RUNT filtering.Reset value is 0x0. */ + uint32_t runt_filter_dis:1; + /* This mode only works in auto-config mode: + 0: After auto-config, TX_ENA and RX_ENA bits are set to 1. 1: After auto-config, TX_ENA and RX_ENA bits are set to 0, + meaning SW will have to come in and enable TX and RX.Reset value is 0x0. */ + uint32_t txrx_en_config:1; + /*Ignore TX PAUSE frame transmit request.Reset value is 0x0. */ + uint32_t tx_pause_ignore:1; + /*Enable extract/insert of EFM headers.Reset value is 0x0. */ + uint32_t prbl_ena:1; + /*This bit currently not used.Reset value is 0x0.*/ + uint32_t rx_err_disc:1; + /*Enable remote loopback at the fifo system side. 0: Normal operation.Reset value is 0x0. */ + uint32_t rmt_loop_ena:1; + /*Payload length check. 0: Check payload length with Length/Type field. 1: Check disabled.Reset value is 0x1. */ + uint32_t no_lgth_check:1; + /* MAC control frame enable. 1: MAC control frames with opcode other than 0x0001 are accepted and forwarded to the client interface. + 0: MAC control frames with opcode other than 0x0000 and 0x0001 are silently discarded. + Reset value is 0x0. + */ + uint32_t cntl_frm_ena:1; + /*Enable/Disable auto-configuration. 1: Enable 0: Disable Reset value is 0x0. */ + uint32_t ena_ext_config:1; + /*Reserved bits must be written with 0. A read returns an unknown value. */ + uint32_t reserved2:6; + /*Enable GMII/MII loopback 1: Loopback enabled. 0: Normal operation.Reset value is 0x0. */ + uint32_t lcl_loop_ena:1; + /*Reserved bit must be written with 0. A read returns an unknown value. */ + uint32_t reserved1:1; + /*RX and RX engines are put in reset. 0: come out of SW reset.Reset value is 0x0. */ + uint32_t sw_reset:1; + /* Reserved bits must be written with 0. A read returns an unknown value. */ + uint32_t reserved0:2; + /* Ignored when RTH_SPEED[1]==1, gigabit mode. 1: half duplex 0: full duplex Reset value is 0x0.*/ + uint32_t hd_ena:1; + /* The MAC overwrites the source MAC address with a programmed MAC address in register MAC_0 and MAC_1." + 0: Not modify the source address received from the transmit application client. + Reset value is 0x0. + */ + uint32_t tx_addr_ins:1; + /* Receive PAUSE frames are ignored by the MAC. + 0: The tramsmit process is stiooed for the amount of time specified in the pause wuanta received within the PAUSE frame. + Reset value is 0x0. + */ + uint32_t rx_pause_ignore:1; + /* PAUSE frames are forwarded to the user application. + 0: The PAUSE frames are terminated and discarded in the MAC.Reset value is 0x1. + */ + uint32_t pause_fwd:1; + /* The CRC field of received frames is transmitted to the user application. + 0: The CRC field is stripped from the frame.Reset value is 0x1. + */ + uint32_t crc_fwd:1; + /* Padding is removed along with crc field before the frame is sent to the user application. + 0: No padding is removed by the MAC. + Reset value is 0x0. + */ + uint32_t pad_en:1; + /* All frames are received without Unicast address filtering. + 0: Reset value is 0x1. */ + uint32_t promis_en:1; + /*00: 10Mbps, 01: 100Mbps, 10: 1000Mbps, 11: 2500Mbps Reset value is 0x2. */ + uint32_t eth_speed:2; + /* The MAC receive function is enabled. 0: The MAC receive function is disabled. + The enable works on packet boundary meaning that only on the assertion on the bit during every 0->1 transition of rx_dv. + Reset value is 0x0. + */ + uint32_t rx_ena:1; + /* The MAC transmit function is enabled. 0: The MAC transmit function is disabled. + The enable works on packet boundary meaning that only on the assertion of the bit during every SOP. + Reset value is 0x0. + */ + uint32_t tx_ena:1; + +}S_UNIMAC_CMD_REG; + +typedef struct +{ + + /* Reserved bits must be written with 0. A read returns an unknown value. */ + uint32_t reserved:26; + /*Link status indication.Reset value is 0x0. */ + uint32_t mac_link_stat:1; + /* 1: MAC Tx pause enabled. 0: MAC Tx pause disabled.Reset value is 0x1. */ + uint32_t mac_tx_pause:1; + /*1: MAC Rx pause enabled. 0: MAC Rx pause disabled.Reset value is 0x1. */ + uint32_t mac_rx_pause:1; + /*1: Half duplex. 0: Full duplex. Reset value is 0x0. */ + uint32_t mac_duplex:1; + /* 00: 10Mbps, 01: 100Mbps, 10: 1Gbps, 11: 2.5Gbps Reset value is 0x2. */ + uint32_t mac_speed:2; + +}S_UNIMAC_STAT_REG; + +typedef struct +{ + uint32_t reserved:15; + uint32_t pp_gen:1; + uint32_t pp_pse_en:8; + uint32_t launch_en:1; + uint32_t ext_tx_flow:1; + uint32_t mac_crc_owrt:1; + uint32_t mac_crc_fwd:1; + uint32_t txcrcerr:1; + uint32_t ss_mode_mii:1; + uint32_t gport_mode:1; + uint32_t gmii_direct:1; + +}S_UNIMAC_CFG_REG; + +typedef struct +{ + uint32_t reserved:7; + uint32_t rxfifo_congestion_threshold:9; + uint32_t reserved1:2; + uint32_t max_pkt_size:14; + +}S_UNIMAC_TOP_CFG1_REG; + +typedef struct +{ + uint32_t reserved:24; + uint32_t lp_idle_prediction_mode:1; + uint32_t dis_eee_10m:1; + uint32_t eee_txclk_dis:1; + uint32_t rx_fifo_check:1; + uint32_t eee_en:1; + uint32_t en_lpi_tx_pause:1; + uint32_t en_lpi_tx_pfc:1; + uint32_t en_lpi_rx_pause:1; +}S_UNIMAC_EEE_CTRL_REG; + +#else /* little endian */ + +typedef struct +{ + /* The MAC transmit function is enabled. 0: The MAC transmit function is disabled. + The enable works on packet boundary meaning that only on the assertion of the bit during every SOP. + Reset value is 0x0. + */ + uint32_t tx_ena:1; + /* The MAC receive function is enabled. 0: The MAC receive function is disabled. + The enable works on packet boundary meaning that only on the assertion on the bit during every 0->1 transition of rx_dv. + Reset value is 0x0. + */ + uint32_t rx_ena:1; + /*00: 10Mbps, 01: 100Mbps, 10: 1000Mbps, 11: 2500Mbps Reset value is 0x2. */ + uint32_t eth_speed:2; + /* All frames are received without Unicast address filtering. + 0: Reset value is 0x1. */ + uint32_t promis_en:1; + /* Padding is removed along with crc field before the frame is sent to the user application. + 0: No padding is removed by the MAC. + Reset value is 0x0. + */ + uint32_t pad_en:1; + /* The CRC field of received frames is transmitted to the user application. + 0: The CRC field is stripped from the frame.Reset value is 0x1. + */ + uint32_t crc_fwd:1; + /* PAUSE frames are forwarded to the user application. + 0: The PAUSE frames are terminated and discarded in the MAC.Reset value is 0x1. + */ + uint32_t pause_fwd:1; + /* Receive PAUSE frames are ignored by the MAC. + 0: The tramsmit process is stiooed for the amount of time specified in the pause wuanta received within the PAUSE frame. + Reset value is 0x0. + */ + uint32_t rx_pause_ignore:1; + /* The MAC overwrites the source MAC address with a programmed MAC address in register MAC_0 and MAC_1." + 0: Not modify the source address received from the transmit application client. + Reset value is 0x0. + */ + uint32_t tx_addr_ins:1; + /* Ignored when RTH_SPEED[1]==1, gigabit mode. 1: half duplex 0: full duplex Reset value is 0x0.*/ + uint32_t hd_ena:1; + /* Reserved bits must be written with 0. A read returns an unknown value. */ + uint32_t reserved0:2; + /*RX and RX engines are put in reset. 0: come out of SW reset.Reset value is 0x0. */ + uint32_t sw_reset:1; + /*Reserved bit must be written with 0. A read returns an unknown value. */ + uint32_t reserved1:1; + /*Enable GMII/MII loopback 1: Loopback enabled. 0: Normal operation.Reset value is 0x0. */ + uint32_t lcl_loop_ena:1; +#if defined(CONFIG_BCM47622) + uint32_t mac_loop_con:1; + uint32_t sw_override_tx:1; + uint32_t sw_override_rx:1; + uint32_t reserved2:2; + uint32_t en_internal_tx_crs:1; +#else + /*Reserved bits must be written with 0. A read returns an unknown value. */ + uint32_t reserved2:6; +#endif + /*Enable/Disable auto-configuration. 1: Enable 0: Disable Reset value is 0x0. */ + uint32_t ena_ext_config:1; + /* MAC control frame enable. 1: MAC control frames with opcode other than 0x0001 are accepted and forwarded to the client interface. + 0: MAC control frames with opcode other than 0x0000 and 0x0001 are silently discarded. + Reset value is 0x0. + */ + uint32_t cntl_frm_ena:1; + /*Payload length check. 0: Check payload length with Length/Type field. 1: Check disabled.Reset value is 0x1. */ + uint32_t no_lgth_check:1; + /*Enable remote loopback at the fifo system side. 0: Normal operation.Reset value is 0x0. */ + uint32_t rmt_loop_ena:1; + /*This bit currently not used.Reset value is 0x0.*/ + uint32_t rx_err_disc:1; + /*Enable extract/insert of EFM headers.Reset value is 0x0. */ + uint32_t prbl_ena:1; + /*Ignore TX PAUSE frame transmit request.Reset value is 0x0. */ + uint32_t tx_pause_ignore:1; + /* This mode only works in auto-config mode: + 0: After auto-config, TX_ENA and RX_ENA bits are set to 1. 1: After auto-config, TX_ENA and RX_ENA bits are set to 0, + meaning SW will have to come in and enable TX and RX.Reset value is 0x0. */ + uint32_t txrx_en_config:1; + /*Disable RX side RUNT filtering. 0: Enable RUNT filtering.Reset value is 0x0. */ + uint32_t runt_filter_dis:1; + /*Reserved bit must be written with 0. A read returns an unknown value.*/ + uint32_t reserved3:1; + +}S_UNIMAC_CMD_REG; + +typedef struct +{ + + /* 00: 10Mbps, 01: 100Mbps, 10: 1Gbps, 11: 2.5Gbps Reset value is 0x2. */ + uint32_t mac_speed:2; + /*1: Half duplex. 0: Full duplex. Reset value is 0x0. */ + uint32_t mac_duplex:1; + /*1: MAC Rx pause enabled. 0: MAC Rx pause disabled.Reset value is 0x1. */ + uint32_t mac_rx_pause:1; + /* 1: MAC Tx pause enabled. 0: MAC Tx pause disabled.Reset value is 0x1. */ + uint32_t mac_tx_pause:1; + /*Link status indication.Reset value is 0x0. */ + uint32_t mac_link_stat:1; + /* Reserved bits must be written with 0. A read returns an unknown value. */ + uint32_t reserved:26; + +}S_UNIMAC_STAT_REG; + +#if defined(CONFIG_BCM47622) +typedef struct +{ + uint32_t max_pkt_size:14; + uint32_t reserved1:18; + +}S_UNIMAC_TOPCTRL_MAX_PKT_SZ_REG; + +#else //!47622 +typedef struct +{ + uint32_t gmii_direct:1; + uint32_t gport_mode:1; + uint32_t ss_mode_mii:1; + uint32_t txcrcerr:1; + uint32_t mac_crc_fwd:1; + uint32_t mac_crc_owrt:1; + uint32_t ext_tx_flow:1; + uint32_t launch_en:1; + uint32_t pp_pse_en:8; + uint32_t pp_gen:1; + uint32_t reserved:15; + +}S_UNIMAC_CFG_REG; + +typedef struct +{ + uint32_t max_pkt_size:14; + uint32_t reserved1:2; + uint32_t rxfifo_congestion_threshold:9; + uint32_t reserved:7; + +}S_UNIMAC_TOP_CFG1_REG; + +typedef struct +{ + /* RX FIFO Threshold - This is the fifo located between the UNIMAC IP and BBH. + Once the threshold is reached pause is sent. This configuration is in + 16-byte resolution the number of bytes in a FIFO line */ + uint32_t rxfifo_pause_threshod:9; + uint32_t reserved1:7; + /* Backpressure enable for internal unimac */ + uint32_t backpressure_enable_int:1; + /* Backpressure enable for external switch */ + uint32_t backpressure_enable_ext:1; + /* Enable the mechanism for always receiving data from UNIMAC IP and + dropping overrun words in the unimac glue FIFO. */ + uint32_t fifo_overrun_ctl_en:1; + /* When setting this bit RX recovered clock will also input the + clk25 pll ref clk in the UNIMAC.*/ + uint32_t remote_loopback_en:1; + uint32_t reserved2:12; + +}S_UNIMAC_TOP_CFG2_REG; +#endif //!47622 + +typedef struct +{ + uint32_t en_lpi_rx_pause:1; + uint32_t en_lpi_tx_pfc:1; + uint32_t en_lpi_tx_pause:1; + uint32_t eee_en:1; + uint32_t rx_fifo_check:1; + uint32_t eee_txclk_dis:1; + uint32_t dis_eee_10m:1; + uint32_t lp_idle_prediction_mode:1; + uint32_t reserved:24; +}S_UNIMAC_EEE_CTRL_REG; + +#endif + +#endif + diff --git a/arch/arm/mach-bcmbca/rdp/unimac_drv_impl1.c b/arch/arm/mach-bcmbca/rdp/unimac_drv_impl1.c new file mode 100755 index 0000000000..c27916d196 --- /dev/null +++ b/arch/arm/mach-bcmbca/rdp/unimac_drv_impl1.c @@ -0,0 +1,1680 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2013 Broadcom Corporation + All Rights Reserved + + +*/ + + + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the implementation of the HwApiMac for unimac */ +/* */ +/******************************************************************************/ + + + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ +#include "unimac_drv.h" +#if defined(__UBOOT__) && !defined(CONFIG_BCM6856) && !defined(CONFIG_BCM6878) +static void get_rdp_freq(uint32_t *rdp_freq) { } +#else +#include "clk_rst.h" +#endif + +#if defined(CONFIG_BCM63138) || defined(CONFIG_BCM63148) +#include "rdp_drv_bbh.h" +#endif + +/******************************************************************************/ +/* */ +/* Types and values definitions */ +/* */ +/******************************************************************************/ +#define UNIMAC_SWRESET_ON 1 +#define UNIMAC_SWRESET_OFF 0 +#define UNIMAC_DEFAULT_IPG 12 +#define UNIMAC_DEFAULT_PAUSE_QUANTA 0xffff +#define UNIMAC_DEFAULT_PAUSE_TIMER 0x1ffff +#define UNIMAC_MAX_FRAME_LENGHT 0xffff + +#ifdef __UBOOT__ +#define mac_unlikely(a) a +#else +#define mac_unlikely(a) unlikely(a) +#endif + +#define UNIMAC_NUMBER_OF_SPEEDS ( UNIMAC_SPEED_2500 + 1 ) +#define UNIMAC_NUMBER_OF_DUPLEXES ( UNIMAC_DUPLEX_FULL + 1 ) + +static uint32_t ipgSpeedTable[UNIMAC_NUMBER_OF_SPEEDS][UNIMAC_NUMBER_OF_DUPLEXES] = +{ + {0x000a,0x000a}, + {0x000a,0x000a}, + {0x0005,0x0005}, + {0x0005,0x0005} +}; + +static uint32_t enabled_emac; + +#if defined(CONFIG_BCM4908) +#include "bcm_map_part.h" +uint8_t *soc_base_address; // used by DEVICE_ADDRESS() +#endif + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_configuration */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get configuration */ +/* */ +/* Abstract: */ +/* */ +/* get the configuratin of a mac port ,note that current status of emac */ +/* might be different than configuration when working in autoneg */ +/* to get the current status use mac_hwapi_get_mac_status API */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* emac_cfg - structure holds the current configuration of the mac port */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_configuration(rdpa_emac emacNum,rdpa_emac_cfg_t *emac_cfg) +{ + S_UNIMAC_CMD_REG mCfgReg; + + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ32_REG(emacNum,CMD,mCfgReg); + emac_cfg->allow_too_long = 0;//no such + emac_cfg->back2back_gap = 0;//no such + emac_cfg->check_length = !mCfgReg.no_lgth_check; + emac_cfg->full_duplex = !mCfgReg.hd_ena; + emac_cfg->generate_crc = 0; + emac_cfg->loopback = mCfgReg.rmt_loop_ena; + emac_cfg->non_back2back_gap = 0;//no such + emac_cfg->pad_short = 0;//no such + emac_cfg->rate = mCfgReg.eth_speed; + emac_cfg->rx_flow_control = !mCfgReg.rx_pause_ignore; + emac_cfg->tx_flow_control = !mCfgReg.tx_pause_ignore; + + UNIMAC_READ_FIELD(emacNum,HD_BKP_CNTL,ipg_config_rx,emac_cfg->min_interframe_gap); + UNIMAC_READ_FIELD(emacNum,TX_IPG_LEN,tx_ipg_len,emac_cfg->preamble_length); +} +EXPORT_SYMBOL(mac_hwapi_get_configuration); +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_configuration */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set configuration */ +/* */ +/* Abstract: */ +/* */ +/* set the configuratin of a mac port */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* emac_cfg - structure holds the current configuration of the mac port */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_configuration(rdpa_emac emacNum,rdpa_emac_cfg_t *emac_cfg) +{ + S_UNIMAC_CMD_REG mCfgReg; + + if (!(enabled_emac & (1 << emacNum))) + return; + + /*first put the mac in reset to enable config change*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,1); + + + UNIMAC_READ32_REG(emacNum,CMD,mCfgReg); + + /*now mac configuration can be changed */ + if(!mCfgReg.ena_ext_config) /* Change only if auto_config is not set */ + { + mCfgReg.eth_speed = emac_cfg->rate; + mCfgReg.hd_ena = !emac_cfg->full_duplex; + mCfgReg.rx_pause_ignore = !emac_cfg->rx_flow_control; + mCfgReg.tx_pause_ignore = !emac_cfg->tx_flow_control; + /*set the interframe gap*/ + UNIMAC_WRITE_FIELD(emacNum,HD_BKP_CNTL,ipg_config_rx,ipgSpeedTable[emac_cfg->rate][(unsigned)emac_cfg->full_duplex]); + } + else + { + /*set the interframe gap*/ + UNIMAC_WRITE_FIELD(emacNum,HD_BKP_CNTL,ipg_config_rx,emac_cfg->min_interframe_gap); + } + + mCfgReg.no_lgth_check = !emac_cfg->check_length; + mCfgReg.pad_en = emac_cfg->pad_short; + mCfgReg.rmt_loop_ena = emac_cfg->loopback; + + + UNIMAC_WRITE32_REG(emacNum,CMD,mCfgReg); + + + /* set the preamble length */ + UNIMAC_WRITE_FIELD(emacNum,TX_IPG_LEN,tx_ipg_len,emac_cfg->preamble_length); + + /* when link up at 10M, hold unimac reset longer per ASIC team */ + if (emac_cfg->rate == rdpa_emac_rate_10m) + udelay(1000); + + /*release the sw_reset bit*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,0); +} +EXPORT_SYMBOL(mac_hwapi_set_configuration); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_duplex */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port duplex */ +/* */ +/* Abstract: */ +/* */ +/* get the dulplex of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* full_duples : 1 = full dulplex,0 = half_duplex */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_duplex(rdpa_emac emacNum,int32_t *full_duplex) +{ + /*read field and reverse polarity*/ + int32_t fieldData; + + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ_FIELD(emacNum,CMD,hd_ena,fieldData); + *full_duplex = !fieldData; +} +EXPORT_SYMBOL(mac_hwapi_get_duplex); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_duplex */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port duplex */ +/* */ +/* Abstract: */ +/* */ +/* set the dulplex of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* full_duples : 1 = full dulplex,0 = half_duplex */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_duplex(rdpa_emac emacNum,int32_t full_duplex) +{ + S_UNIMAC_CMD_REG mCfgReg; + + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ32_REG(emacNum,CMD,mCfgReg); + if (!mCfgReg.ena_ext_config) /* Change only if auto_config is not set */ + { + /*write the dulplex field in reverse polarity,must be set in sw_reset state*/ + S_HWAPI_MAC_STATUS macMode; + + UNIMAC_READ32_REG(emacNum,MODE,macMode); + + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_ON); + + UNIMAC_WRITE_FIELD(emacNum,CMD,hd_ena,full_duplex ? 0 : 1); + + /*when setting the duplex we have to set new IPG value*/ + //UNIMAC_WRITE_FIELD(emacNum,TX_IPG_LEN ,tx_ipg_len,ipgSpeedTable[macMode.mac_speed][macMode.mac_duplex]); + + /*take the mac out of sw_reset*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_OFF); + } +} +EXPORT_SYMBOL(mac_hwapi_set_duplex); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_speed */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port speed rate */ +/* */ +/* Abstract: */ +/* */ +/* get the speed of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* rate - enum of the speed */ +/******************************************************************************/ +void mac_hwapi_get_speed(rdpa_emac emacNum,rdpa_emac_rate *rate) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + /*read the speed field*/ + UNIMAC_READ_FIELD(emacNum,CMD,eth_speed,*rate); +} +EXPORT_SYMBOL(mac_hwapi_get_speed); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_speed */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port speed rate */ +/* */ +/* Abstract: */ +/* */ +/* set the speed of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* rate - enum of the speed */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ + +void mac_hwapi_set_speed(rdpa_emac emacNum,rdpa_emac_rate rate) +{ + S_UNIMAC_CMD_REG mCfgReg; + + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ32_REG(emacNum,CMD,mCfgReg); + if (!mCfgReg.ena_ext_config) /* Change only if auto_config is not set */ + { + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_ON); + + UNIMAC_WRITE_FIELD(emacNum,CMD,eth_speed,rate); + + + UNIMAC_WRITE_FIELD(emacNum,HD_BKP_CNTL,ipg_config_rx,ipgSpeedTable[rate][0]); + + + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_OFF); + } +} +EXPORT_SYMBOL(mac_hwapi_set_speed); + +void mac_hwapi_set_external_conf(rdpa_emac emacNum, int enable) +{ + S_UNIMAC_CMD_REG mCfgReg; + + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ32_REG(emacNum,CMD,mCfgReg); + mCfgReg.ena_ext_config = enable; + UNIMAC_WRITE32_REG(emacNum,CMD,mCfgReg); +} +EXPORT_SYMBOL(mac_hwapi_set_external_conf); + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_rxtx_enable */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set tx and rx enable */ +/* */ +/* Abstract: */ +/* */ +/* get tx and rx enable */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* rxtxEnable - boolean enable */ +/******************************************************************************/ +void mac_hwapi_get_rxtx_enable(rdpa_emac emacNum,int32_t *rxEnable,int32_t *txEnable) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ_FIELD(emacNum,CMD,tx_ena,*txEnable); + UNIMAC_READ_FIELD(emacNum,CMD,rx_ena,*rxEnable); +} +EXPORT_SYMBOL(mac_hwapi_get_rxtx_enable); + + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_rxtx_enable */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set tx and rx enable */ +/* */ +/* Abstract: */ +/* */ +/* set tx and rx enable */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* rxtxEnable - boolean enable */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_rxtx_enable(rdpa_emac emacNum,int32_t rxEnable,int32_t txEnable) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_WRITE_FIELD(emacNum,CMD,tx_ena,txEnable); + UNIMAC_WRITE_FIELD(emacNum,CMD,rx_ena,rxEnable); +} +EXPORT_SYMBOL(mac_hwapi_set_rxtx_enable); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_sw_reset */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port software reset */ +/* */ +/* Abstract: */ +/* */ +/* get the sw reset bit of emac port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* swReset : 1 = reset,0 = not reset */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_sw_reset(rdpa_emac emacNum,int32_t *swReset) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ_FIELD(emacNum,CMD,sw_reset,*swReset); +} +EXPORT_SYMBOL(mac_hwapi_get_sw_reset); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_sw_reset */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port software reset */ +/* */ +/* Abstract: */ +/* */ +/* set the sw reset bit of emac port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* swReset : 1 = reset,0 = not reset */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_sw_reset(rdpa_emac emacNum,int32_t swReset) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,swReset); +} +EXPORT_SYMBOL(mac_hwapi_set_sw_reset); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_tx_min_pkt_size */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get tx minimum packet size */ +/* */ +/* Abstract: */ +/* */ +/* Get the unimac configuration for minimum tx packet size */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* min_pkt_size : 14...125 */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_tx_min_pkt_size(rdpa_emac emacNum,int32_t *min_pkt_size) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ_FIELD(emacNum,TX_IPG_LEN,tx_min_pkt_size,*min_pkt_size); +} +EXPORT_SYMBOL(mac_hwapi_get_tx_min_pkt_size); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_tx_min_pkt_size */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set tx minimum packet size */ +/* */ +/* Abstract: */ +/* */ +/* Set the unimac configuration for minimum tx packet size */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* min_pkt_size : 14...125 */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_tx_min_pkt_size(rdpa_emac emacNum,int32_t min_pkt_size) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + +#if defined(CONFIG_BCM4908) || defined(CONFIG_BCM63158) || defined(CONFIG_BCM47622) + UNIMAC_WRITE_FIELD(emacNum,TX_IPG_LEN,tx_min_pkt_size,min_pkt_size); +#endif +} +EXPORT_SYMBOL(mac_hwapi_set_tx_min_pkt_size); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_tx_max_frame_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port TX MTU */ +/* */ +/* Abstract: */ +/* */ +/* get the port maximum transmit unit size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* maxTxFrameLen - size of frame in bytes */ +/* */ +/******************************************************************************/ +#if defined(CONFIG_BCM47622) +void mac_hwapi_get_tx_max_frame_len(rdpa_emac emacNum,uint32_t *maxTxFrameLen ) +{ + S_UNIMAC_TOPCTRL_MAX_PKT_SZ_REG cfgreg; + uintptr_t address = (uintptr_t)UNIMAC_TOPCTRL_MIB_MAX_PKT_SIZE + UNIMAC_TOPCTRL_INSTANCE_OFFSET(emacNum); + + if (!(enabled_emac & (1 << emacNum))) + return; + + READ_32(address,cfgreg); + + *maxTxFrameLen = cfgreg.max_pkt_size; +} +#else //!47622 +void mac_hwapi_get_tx_max_frame_len(rdpa_emac emacNum,uint32_t *maxTxFrameLen ) +{ + S_UNIMAC_TOP_CFG1_REG cfgreg; + uintptr_t address = (uintptr_t)UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1 + UNIMAC_MISC_INSTANCE_OFFSET(emacNum); + + if (!(enabled_emac & (1 << emacNum))) + return; + + READ_32(address,cfgreg); + + *maxTxFrameLen = cfgreg.max_pkt_size; +} +#endif //!47622 +EXPORT_SYMBOL(mac_hwapi_get_tx_max_frame_len); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_tx_max_frame_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port TX MTU */ +/* */ +/* Abstract: */ +/* */ +/* set the port maximum transmit unit size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* maxTxFrameLen - size of frame in bytes */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +#if defined(CONFIG_BCM47622) +void mac_hwapi_set_tx_max_frame_len(rdpa_emac emacNum,uint32_t maxTxFrameLen ) +{ + + S_UNIMAC_TOPCTRL_MAX_PKT_SZ_REG cfgreg; + uintptr_t address = (uintptr_t)UNIMAC_TOPCTRL_MIB_MAX_PKT_SIZE + UNIMAC_TOPCTRL_INSTANCE_OFFSET(emacNum); + + if (!(enabled_emac & (1 << emacNum))) + return; + + /*put emac in sw reset state*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_ON ); + + READ_32(address,cfgreg); + cfgreg.max_pkt_size = maxTxFrameLen; + WRITE_32(address,cfgreg); + + UNIMAC_WRITE_FIELD(emacNum,FRM_LEN,frame_length,UNIMAC_MAX_FRAME_LENGHT); + + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_OFF ); +} +#else //!47622 +void mac_hwapi_set_tx_max_frame_len(rdpa_emac emacNum,uint32_t maxTxFrameLen ) +{ + + S_UNIMAC_TOP_CFG1_REG cfgreg; + uintptr_t address = (uintptr_t)UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1 + UNIMAC_MISC_INSTANCE_OFFSET(emacNum); + + if (!(enabled_emac & (1 << emacNum))) + return; + + /*put emac in sw reset state*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_ON ); + + READ_32(address,cfgreg); + cfgreg.max_pkt_size = maxTxFrameLen; + WRITE_32(address,cfgreg); + + UNIMAC_WRITE_FIELD(emacNum,FRM_LEN,frame_length,UNIMAC_MAX_FRAME_LENGHT); + + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_OFF ); +} +#endif //!47622 +EXPORT_SYMBOL(mac_hwapi_set_tx_max_frame_len); + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_rx_max_frame_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port RX MTU */ +/* */ +/* Abstract: */ +/* */ +/* get the port maximum receive unit size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* maxRxFrameLen - size of current MRU */ +/* */ +/******************************************************************************/ +#if defined(CONFIG_BCM47622) +void mac_hwapi_get_rx_max_frame_len(rdpa_emac emacNum,uint32_t *maxRxFrameLen ) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ_FIELD(emacNum,FRM_LEN,frame_length,*maxRxFrameLen ); +} +#else //!47622 +void mac_hwapi_get_rx_max_frame_len(rdpa_emac emacNum,uint32_t *maxRxFrameLen ) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ_FIELD(emacNum,RX_MAX_PKT_SIZE,max_pkt_size,*maxRxFrameLen ); +} +#endif //!47622 +EXPORT_SYMBOL(mac_hwapi_get_rx_max_frame_len); + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_rx_max_frame_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port RX MTU */ +/* */ +/* Abstract: */ +/* */ +/* set the port maximum receive unit size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* maxRxFrameLen - size of current MRU */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +#if defined(CONFIG_BCM47622) +void mac_hwapi_set_rx_max_frame_len(rdpa_emac emacNum,uint32_t maxRxFrameLen ) +{ + S_UNIMAC_TOPCTRL_MAX_PKT_SZ_REG cfgreg; + uintptr_t address = (uintptr_t)UNIMAC_TOPCTRL_MIB_MAX_PKT_SIZE + UNIMAC_TOPCTRL_INSTANCE_OFFSET(emacNum); + + if (!(enabled_emac & (1 << emacNum))) + return; + + /*put emac in sw reset state*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_ON ); + + READ_32(address,cfgreg); + cfgreg.max_pkt_size = maxRxFrameLen; + WRITE_32(address,cfgreg); + + UNIMAC_WRITE_FIELD(emacNum,FRM_LEN,frame_length,maxRxFrameLen); + + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_OFF ); +} +#else //!47622 +void mac_hwapi_set_rx_max_frame_len(rdpa_emac emacNum,uint32_t maxRxFrameLen ) +{ + S_UNIMAC_TOP_CFG1_REG cfgreg; + uintptr_t address = (uintptr_t)UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1 + UNIMAC_MISC_INSTANCE_OFFSET(emacNum); + + if (!(enabled_emac & (1 << emacNum))) + return; + + /*put emac in sw reset state*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_ON ); + + READ_32(address,cfgreg); + cfgreg.max_pkt_size = maxRxFrameLen; + WRITE_32(address,cfgreg); + + UNIMAC_WRITE_FIELD(emacNum,RX_MAX_PKT_SIZE,max_pkt_size,maxRxFrameLen); + + /*put emac out sw reset state*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_OFF ); +} +#endif //!47622 +EXPORT_SYMBOL(mac_hwapi_set_rx_max_frame_len); + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_tx_igp_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port inter frame gap */ +/* */ +/* Abstract: */ +/* */ +/* set the inter frame gap size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* txIpgLen - length in bytes */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_tx_igp_len(rdpa_emac emacNum,uint32_t txIpgLen ) +{ + /*we assume that txIpgLen called with bits time resolution*/ + uint32_t newIpg; + + if (!(enabled_emac & (1 << emacNum))) + return; + + /*put emac in sw reset state*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_ON ); + + txIpgLen += 7; + newIpg = txIpgLen / 8; + + if (newIpg < 8) + { + newIpg = 8; + } else if (newIpg > 27) + { + newIpg = 27; + } + UNIMAC_WRITE_FIELD(emacNum,TX_IPG_LEN,tx_ipg_len,newIpg ); + + /*put emac out sw reset state*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_OFF ); + +} +EXPORT_SYMBOL(mac_hwapi_set_tx_igp_len); + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_tx_igp_len */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port inter frame gap */ +/* */ +/* Abstract: */ +/* */ +/* get the inter frame gap size in bytes */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* txIpgLen - length in bytes */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_tx_igp_len(rdpa_emac emacNum,uint32_t *txIpgLen ) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ_FIELD(emacNum,TX_IPG_LEN,tx_ipg_len,*txIpgLen ); + +} +EXPORT_SYMBOL(mac_hwapi_get_tx_igp_len); + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_mac_status */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port status */ +/* */ +/* Abstract: */ +/* */ +/* set the status of mac */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* macStatus : */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_mac_status(rdpa_emac emacNum,S_HWAPI_MAC_STATUS *macStatus) +{ + +} +EXPORT_SYMBOL(mac_hwapi_get_mac_status); + + + + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_flow_control */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get port flow control */ +/* */ +/* Abstract: */ +/* */ +/* get the flow control of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* flowControl - structure with parameters of tx and rx flow control */ +/* */ +/******************************************************************************/ +#if defined(CONFIG_BCM47622) +void mac_hwapi_get_flow_control(rdpa_emac emacNum,S_MAC_HWAPI_FLOW_CTRL *flowControl) +{ + uint32_t rxFlow, txFlow; + + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ_FIELD(emacNum,CMD,rx_pause_ignore,rxFlow); + UNIMAC_READ_FIELD(emacNum,CMD,tx_pause_ignore,txFlow); + flowControl->rxFlowEnable = !rxFlow; + flowControl->txFlowEnable = !txFlow; +} +#else //!47622 +void mac_hwapi_get_flow_control(rdpa_emac emacNum,S_MAC_HWAPI_FLOW_CTRL *flowControl) +{ + uint32_t rxFlow, txFlow, value; + uintptr_t misc_top_address; + + if (!(enabled_emac & (1 << emacNum))) + return; + + misc_top_address = (uintptr_t)UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2 + UNIMAC_MISC_INSTANCE_OFFSET(emacNum); + READ_32(misc_top_address, value); + + + if(value & UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_INT) + { + UNIMAC_READ_FIELD(emacNum,CMD,rx_pause_ignore,rxFlow); + UNIMAC_READ_FIELD(emacNum,CMD,tx_pause_ignore,txFlow); + flowControl->rxFlowEnable = !rxFlow; + flowControl->txFlowEnable = !txFlow; + } + else + { + flowControl->rxFlowEnable = 0; + flowControl->txFlowEnable = 0; + } +} +#endif //!47622 +EXPORT_SYMBOL(mac_hwapi_get_flow_control); +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_pause_params */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port flow control */ +/* */ +/* Abstract: */ +/* */ +/* set the flow control of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* flowControl - structure with parameters of tx and rx flow control */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_pause_params(rdpa_emac emacNum,int32_t pauseCtrlEnable,uint32_t pauseTimer,uint32_t pauseQuanta) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_WRITE_FIELD(emacNum,PAUSE_CNTRL,pause_control_en,pauseCtrlEnable ); + UNIMAC_WRITE_FIELD(emacNum,PAUSE_CNTRL,pause_timer,pauseTimer ); + UNIMAC_WRITE_FIELD(emacNum,PAUSE_QUNAT,pause_quant,pauseQuanta ); +} +EXPORT_SYMBOL(mac_hwapi_set_pause_params); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_flow_control */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set port flow control */ +/* */ +/* Abstract: */ +/* */ +/* set the flow control of a port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* flowControl - structure with parameters of tx and rx flow control */ +/* */ +/* Output: */ +/* */ +/* */ +/******************************************************************************/ +#if defined(CONFIG_BCM47622) +void mac_hwapi_set_flow_control(rdpa_emac emacNum,S_MAC_HWAPI_FLOW_CTRL *flowControl) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_override_rx, 1); + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_override_tx, 1); + + UNIMAC_WRITE_FIELD(emacNum,CMD,rx_pause_ignore, !flowControl->rxFlowEnable); + UNIMAC_WRITE_FIELD(emacNum,CMD,tx_pause_ignore, !flowControl->txFlowEnable); +} +#else //!47622 +void mac_hwapi_set_flow_control(rdpa_emac emacNum,S_MAC_HWAPI_FLOW_CTRL *flowControl) +{ + uintptr_t misc_top_address; + uint32_t value; + + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_WRITE_FIELD(emacNum,CMD,rx_pause_ignore, !flowControl->rxFlowEnable); + UNIMAC_WRITE_FIELD(emacNum,CMD,tx_pause_ignore, !flowControl->txFlowEnable); + misc_top_address = (uintptr_t)UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2 + UNIMAC_MISC_INSTANCE_OFFSET(emacNum); + READ_32(misc_top_address, value); + + if(flowControl->rxFlowEnable || flowControl->txFlowEnable) + value |= UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_INT; + else + value &= ~UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_INT; + + WRITE_32(misc_top_address, value); +} +#endif //!47622 +EXPORT_SYMBOL(mac_hwapi_set_flow_control); + + +static rdpa_emac_rx_stat_t rxCountersLast[MAX_NUM_OF_EMACS]; +#define UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, param) \ + do{\ + uint32_t paramCurrent = rxCounters->param; \ + if(mac_unlikely(rxCounters->param < rxCountersLast[emacNum].param)){ \ + rxCounters->param += (0xFFFFFFFF-rxCountersLast[emacNum].param)+1; \ + }else{ \ + rxCounters->param -= rxCountersLast[emacNum].param; \ + } \ + rxCountersLast[emacNum].param = paramCurrent; \ + }while(0) + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_rx_counters */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get the rx counters of port */ +/* */ +/* Abstract: */ +/* */ +/* get the rx counters of port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* rxCounters : structure filled with counters */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_rx_counters(rdpa_emac emacNum,rdpa_emac_rx_stat_t *rxCounters) +{ + uint32_t tempVal; + + if (!(enabled_emac & (1 << emacNum))) + { + memset(rxCounters, 0, sizeof(rdpa_emac_rx_stat_t)); + return; + } + + UNIMAC_READ32_MIB(emacNum,GRALN,rxCounters->alignment_error); + UNIMAC_READ32_MIB(emacNum,GRBCA,rxCounters->broadcast_packet); + UNIMAC_READ32_MIB(emacNum,GRUC, rxCounters->unicast_packet); + UNIMAC_READ32_MIB(emacNum,GRBYT,rxCounters->byte); + UNIMAC_READ32_MIB(emacNum,RRBYT,tempVal); + rxCounters->byte += tempVal; + UNIMAC_READ32_MIB(emacNum,GRFCR,rxCounters->carrier_sense_error); + UNIMAC_READ32_MIB(emacNum,GRCDE,rxCounters->code_error); + UNIMAC_READ32_MIB(emacNum,GRXCF,rxCounters->control_frame); + UNIMAC_READ32_MIB(emacNum,GRFCS,rxCounters->fcs_error); + rxCounters->fragments = 0;//????? + UNIMAC_READ32_MIB(emacNum,GR255,rxCounters->frame_128_255); + UNIMAC_READ32_MIB(emacNum,GR2047,tempVal); + rxCounters->frame_1519_mtu = tempVal; + UNIMAC_READ32_MIB(emacNum,GR4095,tempVal); + rxCounters->frame_1519_mtu += tempVal; + UNIMAC_READ32_MIB(emacNum,GR9216,tempVal); + rxCounters->frame_1519_mtu += tempVal; + + UNIMAC_READ32_MIB(emacNum,GR511,rxCounters->frame_256_511); + + UNIMAC_READ32_MIB(emacNum,GR1023,rxCounters->frame_512_1023); + + UNIMAC_READ32_MIB(emacNum,GR1518,rxCounters->frame_1024_1518); + + UNIMAC_READ32_MIB(emacNum,GR64,rxCounters->frame_64); + + UNIMAC_READ32_MIB(emacNum,GR127,rxCounters->frame_65_127); + + UNIMAC_READ32_MIB(emacNum,GRFLR,rxCounters->frame_length_error); + + UNIMAC_READ32_MIB(emacNum,GRJBR,rxCounters->jabber); + + UNIMAC_READ32_MIB(emacNum,GRMCA,rxCounters->multicast_packet); + + rxCounters->overflow = 0;//no matched counter + UNIMAC_READ32_MIB(emacNum,GROVR,rxCounters->oversize_packet); + + UNIMAC_READ32_MIB(emacNum,RRPKT,rxCounters->undersize_packet); + + UNIMAC_READ32_MIB(emacNum,GRPKT,rxCounters->packet); + + UNIMAC_READ32_MIB(emacNum,GRXPF,rxCounters->pause_control_frame); + + UNIMAC_READ32_MIB(emacNum,GRXUO,rxCounters->unknown_opcode); + + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, alignment_error); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, broadcast_packet); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, unicast_packet); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, byte); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, carrier_sense_error); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, code_error); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, control_frame); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, fcs_error); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, frame_64); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, frame_65_127); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, frame_128_255); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, frame_256_511); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, frame_512_1023); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, frame_1024_1518); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, frame_1519_mtu); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, frame_length_error); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, jabber); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, multicast_packet); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, oversize_packet); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, undersize_packet); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, packet); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, pause_control_frame); + UNIMAC_CURRENT_RX_COUNTERS(emacNum, rxCounters, unknown_opcode); +} +EXPORT_SYMBOL(mac_hwapi_get_rx_counters); + + +static rdpa_emac_tx_stat_t txCountersLast[MAX_NUM_OF_EMACS]; +#define UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, param) \ + do{\ + uint32_t paramCurrent = txCounters->param; \ + if(mac_unlikely(txCounters->param < txCountersLast[emacNum].param)){ \ + txCounters->param += (0xFFFFFFFF-txCountersLast[emacNum].param)+1; \ + }else{ \ + txCounters->param -= txCountersLast[emacNum].param; \ + } \ + txCountersLast[emacNum].param = paramCurrent; \ + }while(0) + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_tx_counters */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - get the tx counters of port */ +/* */ +/* Abstract: */ +/* */ +/* get the tx counters of port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* txCounters : structure filled with counters */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_tx_counters(rdpa_emac emacNum,rdpa_emac_tx_stat_t *txCounters) +{ + /*fill the rdpa counters structure*/ + uint32_t tempVal; + + if (!(enabled_emac & (1 << emacNum))) + { + memset(txCounters, 0, sizeof(rdpa_emac_tx_stat_t)); + return; + } + + UNIMAC_READ32_MIB(emacNum,GTBYT,txCounters->byte); + + UNIMAC_READ32_MIB(emacNum,GTBCA,txCounters->broadcast_packet); + + UNIMAC_READ32_MIB(emacNum,GTMCA, txCounters->multicast_packet); + + UNIMAC_READ32_MIB(emacNum,GTUC, txCounters->unicast_packet); + + UNIMAC_READ32_MIB(emacNum,GTXCF,txCounters->control_frame); + + UNIMAC_READ32_MIB(emacNum,GTDRF,txCounters->deferral_packet); + + + UNIMAC_READ32_MIB(emacNum,GTNCL,tempVal); + txCounters->error = tempVal; + UNIMAC_READ32_MIB(emacNum,GTOVR,tempVal); + txCounters->error += tempVal; + UNIMAC_READ32_MIB(emacNum,GTFCS,tempVal); + txCounters->error += tempVal; + UNIMAC_READ32_MIB(emacNum,GTEDF,txCounters->excessive_deferral_packet); + + UNIMAC_READ32_MIB(emacNum,GTFCS,txCounters->fcs_error ); + + UNIMAC_READ32_MIB(emacNum,GTFRG,txCounters->fragments_frame); + + UNIMAC_READ32_MIB(emacNum,TR1518,txCounters->frame_1024_1518); + + UNIMAC_READ32_MIB(emacNum,TR255, txCounters->frame_128_255); + + UNIMAC_READ32_MIB(emacNum,TR2047, tempVal); + txCounters->frame_1519_mtu = tempVal; + UNIMAC_READ32_MIB(emacNum,TR4095, tempVal); + txCounters->frame_1519_mtu += tempVal; + UNIMAC_READ32_MIB(emacNum,TR9216, tempVal); + txCounters->frame_1519_mtu += tempVal; + UNIMAC_READ32_MIB(emacNum,TR511, txCounters->frame_256_511); + + UNIMAC_READ32_MIB(emacNum,TR1023, txCounters->frame_512_1023); + + UNIMAC_READ32_MIB(emacNum,TR64,txCounters->frame_64); + + UNIMAC_READ32_MIB(emacNum,TR127, txCounters->frame_65_127); + + UNIMAC_READ32_MIB(emacNum,GTJBR, txCounters->jabber_frame); + + UNIMAC_READ32_MIB(emacNum,GTLCL, txCounters->late_collision); + + UNIMAC_READ32_MIB(emacNum,GTMCL, txCounters->multiple_collision); + + UNIMAC_READ32_MIB(emacNum,GTOVR,txCounters->oversize_frame); + + UNIMAC_READ32_MIB(emacNum,GTPOK, txCounters->packet); + + UNIMAC_READ32_MIB(emacNum,GTXPF, txCounters->pause_control_frame); + + UNIMAC_READ32_MIB(emacNum,GTSCL, txCounters->single_collision); + + UNIMAC_READ32_MIB(emacNum,GTNCL, txCounters->total_collision); + + UNIMAC_READ32_MIB(emacNum,GTXCL, txCounters->excessive_collision); + + txCounters->underrun = 0; + txCounters->undersize_frame = 0; + + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, byte); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, packet); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, broadcast_packet); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, multicast_packet); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, unicast_packet); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, deferral_packet); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, excessive_deferral_packet); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, control_frame); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, jabber_frame); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, oversize_frame); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, pause_control_frame); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, fragments_frame); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, error); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, fcs_error); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, frame_64); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, frame_65_127); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, frame_128_255); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, frame_256_511); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, frame_512_1023); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, frame_1024_1518); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, frame_1519_mtu); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, single_collision); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, total_collision); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, late_collision); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, multiple_collision); + UNIMAC_CURRENT_TX_COUNTERS(emacNum, txCounters, excessive_collision); +} +EXPORT_SYMBOL(mac_hwapi_get_tx_counters); +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_init_emac */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - init the emac to well known state */ +/* */ +/* Abstract: */ +/* */ +/* initialized the emac port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ +void mac_hwapi_init_emac(rdpa_emac emacNum) +{ + /*configure the emac and put it in automatic speed mode*/ + S_UNIMAC_CMD_REG mCfgReg; + uint32_t max_frame_length = UNIMAC_MAX_FRAME_LENGHT; + +#if defined(CONFIG_BCM4908) + soc_base_address = RDP_BASE; +#endif + + /*before calling this function make sure you pull out of reset the emac */ + + /*put the emac in sw_reset state*/ + //UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_ON); + + UNIMAC_READ32_REG(emacNum,CMD,mCfgReg); + /* Do the initialization */ +#ifndef CONFIG_BRCM_QEMU + mCfgReg.tx_ena = 0; + mCfgReg.rx_ena = 0; +#else + printk("%s RX TX Enable no PHY EXIST\n",__FUNCTION__); + mCfgReg.tx_ena = 1; + mCfgReg.rx_ena = 1; + +#endif + /* for 63138 - even though the EMAC_1 is connected to SF2 @ 2Gbps, we still set the link to 1G. + * Actual speed of the link is derived from SF2 based on the speed set for IMP port#8. */ + mCfgReg.eth_speed = UNIMAC_SPEED_1000; + mCfgReg.promis_en = 1; + mCfgReg.pad_en = 0; + mCfgReg.pause_fwd = 1; + mCfgReg.crc_fwd = 1; + mCfgReg.ena_ext_config = 0; + mCfgReg.rx_pause_ignore = 0; + mCfgReg.tx_pause_ignore = 0; + mCfgReg.tx_addr_ins = 0; + mCfgReg.lcl_loop_ena = 0; + mCfgReg.cntl_frm_ena = 1; + mCfgReg.no_lgth_check = 1; + mCfgReg.rmt_loop_ena = 0; + mCfgReg.rx_err_disc = 0; + mCfgReg.prbl_ena = 0; + mCfgReg.cntl_frm_ena = 1; + + /*write the configuration */ + UNIMAC_WRITE32_REG(emacNum,CMD,mCfgReg); + UNIMAC_WRITE32_REG(emacNum,FRM_LEN, max_frame_length); + + /*take out the emac from sw_reset state*/ + //UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_OFF); +#if 0 + /*configure the pause control*/ + UNIMAC_WRITE_FIELD(emacNum,PAUSE_CNTRL,pause_timer,UNIMAC_DEFAULT_PAUSE_TIMER); + UNIMAC_WRITE_FIELD(emacNum,PAUSE_CNTRL,pause_control_en,1); + + /*configure the pause quanta*/ + UNIMAC_WRITE_FIELD(emacNum,PAUSE_QUNAT,pause_quant,UNIMAC_DEFAULT_PAUSE_QUANTA); + + /*write default ipg*/ + UNIMAC_WRITE_FIELD(emacNum,TX_IPG_LEN,tx_ipg_len,UNIMAC_DEFAULT_IPG); +#endif + memset(&rxCountersLast, 0, MAX_NUM_OF_EMACS*sizeof(rdpa_emac_rx_stat_t)); + memset(&txCountersLast, 0, MAX_NUM_OF_EMACS*sizeof(rdpa_emac_tx_stat_t)); + + enabled_emac |= (1 << emacNum); + + /*emac is ready to go!*/ +} +EXPORT_SYMBOL(mac_hwapi_init_emac); +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_get_loopback */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - init the emac to well known state */ +/* */ +/* Abstract: */ +/* */ +/* initialized the emac port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ +void mac_hwapi_get_loopback(rdpa_emac emacNum,MAC_LPBK *loopback) +{ + S_UNIMAC_CMD_REG mCmdReg; + + if (!(enabled_emac & (1 << emacNum))) + return; + + UNIMAC_READ32_REG(emacNum,CMD,mCmdReg); + + if (mCmdReg.lcl_loop_ena && mCmdReg.rmt_loop_ena) + { + *loopback = MAC_LPBK_BOTH; + } + else if (mCmdReg.lcl_loop_ena) + { + *loopback = MAC_LPBK_LOCAL; + } + else if (mCmdReg.rmt_loop_ena) + { + *loopback = MAC_LPBK_REMOTE; + } + else + { + *loopback = MAC_LPBK_NONE; + } + +} +EXPORT_SYMBOL(mac_hwapi_get_loopback); + + +/******************************************************************************/ +/* */ +/* Name: */ +/* */ +/* mac_hwapi_set_loopback */ +/* */ +/* Title: */ +/* */ +/* MAC Driver - set loopback type of the mac */ +/* */ +/* Abstract: */ +/* */ +/* initialized the emac port */ +/* */ +/* Input: */ +/* */ +/* emacNum - emac Port index */ +/* */ +/* */ +/* Output: */ +/* */ +/******************************************************************************/ +void mac_hwapi_set_loopback(rdpa_emac emacNum,MAC_LPBK loopback) +{ + if (!(enabled_emac & (1 << emacNum))) + return; + + /*put the emac in sw_reset state*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_ON); + + switch(loopback) + { + case MAC_LPBK_BOTH: + UNIMAC_WRITE_FIELD(emacNum,CMD,rmt_loop_ena,1); + UNIMAC_WRITE_FIELD(emacNum,CMD, lcl_loop_ena,1); + break; + case MAC_LPBK_LOCAL: + UNIMAC_WRITE_FIELD(emacNum,CMD, lcl_loop_ena,1); + break; + case MAC_LPBK_REMOTE: + UNIMAC_WRITE_FIELD(emacNum,CMD,rmt_loop_ena,1); + break; + case MAC_LPBK_NONE: + UNIMAC_WRITE_FIELD(emacNum,CMD,rmt_loop_ena,0); + UNIMAC_WRITE_FIELD(emacNum,CMD, lcl_loop_ena,0); + break; + default: + + break; + } + /* take out the emac from sw_reset state*/ + UNIMAC_WRITE_FIELD(emacNum,CMD,sw_reset,UNIMAC_SWRESET_OFF); + +} +EXPORT_SYMBOL(mac_hwapi_set_loopback); + +#if !defined(CONFIG_BCM47622) +void mac_hwapi_set_unimac_cfg(rdpa_emac emacNum, int32_t enabled) +{ + S_UNIMAC_CFG_REG cfgreg; + uintptr_t address = (uintptr_t)UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG + UNIMAC_MISC_INSTANCE_OFFSET(emacNum); + + if (!(enabled_emac & (1 << emacNum))) + return; + + READ_32(address,cfgreg); + cfgreg.gmii_direct = enabled ? 1 : 0; + WRITE_32(address,cfgreg); +} +EXPORT_SYMBOL(mac_hwapi_set_unimac_cfg); +#endif //!47622 + +void mac_hwapi_modify_flow_control_pause_pkt_addr ( rdpa_emac emacNum,bdmf_mac_t mac) +{ + uint32_t value = *(uint32_t*)(&(mac.b[4])) >> 16 ; + uintptr_t mac_address = (uintptr_t)UNIMAC_CONFIGURATION_UMAC_0_RDP_MAC0 + UNIMAC_CONF_INSTANCE_OFFSET(emacNum); + + if (!(enabled_emac & (1 << emacNum))) + return; + + WRITE_32(mac_address, *(uint32_t*)mac.b); + + mac_address = (uintptr_t)UNIMAC_CONFIGURATION_UMAC_0_RDP_MAC1 + UNIMAC_CONF_INSTANCE_OFFSET(emacNum); + WRITE_32(mac_address, value); + +} +EXPORT_SYMBOL(mac_hwapi_modify_flow_control_pause_pkt_addr); + +#if !defined(CONFIG_BCM47622) +void mac_hwapi_set_backpressure_ext(rdpa_emac emacNum,int32_t enable) +{ +#if defined(CONFIG_BCM63138) || defined(CONFIG_BCM63148) || defined(CONFIG_BCM4908) || defined(CONFIG_BCM63158) + S_UNIMAC_TOP_CFG2_REG cfgreg; + uintptr_t misc_top_address = (uintptr_t)UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2 + UNIMAC_MISC_INSTANCE_OFFSET(emacNum); + + if (!(enabled_emac & (1 << emacNum))) + return; + + READ_32(misc_top_address,cfgreg); + cfgreg.backpressure_enable_ext = (enable ? 1 : 0); + WRITE_32(misc_top_address,cfgreg); +#endif +} +EXPORT_SYMBOL(mac_hwapi_set_backpressure_ext); +#endif //!47622 + +void mac_hwapi_set_eee(rdpa_emac emacNum, int32_t enable) +{ + uint32_t eee_ref_count = 0; + uint32_t eee_wake_timer = 0; + uint32_t eee_lpi_timer = 0; + + S_UNIMAC_EEE_CTRL_REG eee_ctrl; + S_HWAPI_MAC_STATUS mac_mode; + + /* Determine EEE timers only when EEE is enabled */ + if (enable) + { +#if defined(CONFIG_BCM63158) || defined(CONFIG_BCM6856) || defined(CONFIG_BCM47622) || defined(CONFIG_BCM6878) + eee_ref_count = 0xfa; /* 250 Mhz */; +#else + get_rdp_freq(&eee_ref_count); + eee_ref_count /= 2; +#endif + + /* Read actual mac speed */ + UNIMAC_READ32_REG(emacNum, MODE, mac_mode); + + switch (mac_mode.mac_speed) { + case rdpa_emac_rate_100m: /* 100Mbps */ + { + eee_lpi_timer = 0x3c; /* 60 uS */ + eee_wake_timer = 0x1e; /* 30 uS */ + break; + } + case rdpa_emac_rate_1g: /* 1000Mbps */ + { + eee_lpi_timer = 0x22; /* 34 uS */ + eee_wake_timer = 0x11; /* 17 uS */ + break; + } + case rdpa_emac_rate_2_5g: /* 2500Mbps */ + { + eee_lpi_timer = 0x3c; /* 60 uS */ + eee_wake_timer = 0x1e; /* 30 uS */ + break; + } + default: + break; + } + } + + UNIMAC_READ32_REG(emacNum, EEE_CTRL, eee_ctrl); + eee_ctrl.eee_en = enable ? 1 : 0; + UNIMAC_WRITE32_REG(emacNum, EEE_CTRL, eee_ctrl); + UNIMAC_WRITE32_REG(emacNum, EEE_REF_COUNT, eee_ref_count); + +#if defined(CONFIG_BCM6856) + if (mac_mode.mac_speed == rdpa_emac_rate_100m) + { + UNIMAC_WRITE32_REG(emacNum, EEE_MII_LPI_TIMER, eee_lpi_timer); + UNIMAC_WRITE32_REG(emacNum, EEE_MII_WAKE_TIMER, eee_wake_timer); + } + else + { + UNIMAC_WRITE32_REG(emacNum, EEE_GMII_LPI_TIMER, eee_lpi_timer); + UNIMAC_WRITE32_REG(emacNum, EEE_GMII_WAKE_TIMER, eee_wake_timer); + } +#else + UNIMAC_WRITE32_REG(emacNum, EEE_LPI_TIMER, eee_lpi_timer); + UNIMAC_WRITE32_REG(emacNum, EEE_WAKE_TIMER, eee_wake_timer); +#endif +} +EXPORT_SYMBOL(mac_hwapi_set_eee); diff --git a/arch/arm/mach-bcmbca/rng/Makefile b/arch/arm/mach-bcmbca/rng/Makefile new file mode 100644 index 0000000000..709675655d --- /dev/null +++ b/arch/arm/mach-bcmbca/rng/Makefile @@ -0,0 +1,3 @@ + +obj-y += \ + rng.o \ diff --git a/arch/arm/mach-bcmbca/rng/rng.c b/arch/arm/mach-bcmbca/rng/rng.c new file mode 100644 index 0000000000..a0a8f6931f --- /dev/null +++ b/arch/arm/mach-bcmbca/rng/rng.c @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ +/* + * + */ +// BCMFORMAT: notabs reindent:uncrustify:bcm_minimal_i4.cfg + +#include +#include +#include "linux/printk.h" +#include +#include +#include "bcm_rng.h" + + +int rng_pac_lock(uint32_t perm) +{ + uint32_t startRegion; + if (perm == RNG_PERM_DISABLE_ALL) { + RNG->perm = perm; + } else { + RNG->perm |= perm; + } +} + diff --git a/arch/arm/mach-bcmbca/spl_ddrinit.c b/arch/arm/mach-bcmbca/spl_ddrinit.c new file mode 100644 index 0000000000..870ae0bb14 --- /dev/null +++ b/arch/arm/mach-bcmbca/spl_ddrinit.c @@ -0,0 +1,328 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include "spl_ddrinit.h" +#include "spl_env.h" +#ifdef CONFIG_BCMBCA_DDRC_SCRAMBLER +#include "asm/arch/rng.h" +#endif +#include "asm/arch/ddr.h" +#include "asm/arch/misc.h" +#include "boot_blob.h" +#include "tpl_params.h" +#include "early_abort.h" + +uint32_t ddr_size=0; +uint32_t mcb_sel = 0; +uint32_t safe_mode = 0; + +uint8_t* ddr_stdalone = NULL; +int ddr_stdsize = BOOT_BLOB_MAX_DDR_SIZE; +int early_reset = 0; + +uint32_t get_ddr_size() +{ + return ddr_size; +} + +#ifdef CONFIG_BCMBCA_DDRC_SCRAMBLER +static int sec_gen_sha256(uint8_t * buf, int buf_len, uint8_t * hash, + int hash_len) +{ + struct hash_algo *algo; + void *ctx; + int ret = 0; + const char *algo_name = "sha256"; + + /* Calculate hash of the esbc key */ + ret = hash_progressive_lookup_algo(algo_name, &algo); + if (ret) + return ret; + + ret = -1; + if (algo->digest_size != hash_len) + return ret; + + ret = algo->hash_init(algo, &ctx); + if (ret) + return ret; + + ret = algo->hash_update(algo, ctx, buf, buf_len, 1); + if (ret) + return ret; + + /* Copy hash at destination buffer */ + ret = algo->hash_finish(algo, ctx, hash, algo->digest_size); + if (ret) + return ret; + + return ret; +} + +static int ddr_gen_scramber_seed(uint32_t * seed) +{ + int timeout = 0, i = 0, ret = -1; + uint32_t random[16]; + uint32_t digest[8]; + + /* make sure RNG is ready for random number. In 4908 platform it is on automaticall by hardware */ + while ((RNG->intStatus & RNG_INT_STATUS_NIST_FAIL) == 0x0 + && (RNG->intStatus & RNG_INT_STATUS_FIFO_FULL) == 0x0) { + udelay(1); + timeout++; + if (timeout > 500000) { + printf("memc_setup_scrambler RNG time out\r\n"); + return -1; + } + } + + /* fetch 16 words from RNG and run them through the SHA256 to get zeros and ones balanced RN */ + i = 0; + while (i < 16) { + if (RNG->fifoCnt & 0xff) { + random[i] = RNG->rngFifoData; + i++; + } + } + + ret = sec_gen_sha256((uint8_t *) random, 64, (uint8_t *) digest, 32); + if (ret != 0) + return ret; + + for (i = 0; i < 4; i++) { + seed[i] = digest[i]; + } + + return 0; +} +#endif + +static int load_mcb(uint32_t selector, uint8_t * mcb, int* len) +{ + int ret = 0; + + if ((ret = load_boot_blob(MCB_TABLE_MAGIC, selector, mcb, len)) == BOOT_BLOB_NOT_IN_HASTTBL + && (selector&BP_DDR_TEMP_MASK) == BP_DDR_TEMP_NORMAL) { + /* If normal temperature mcb not found, try the ASR mcb. It works for normal T too */ + ret = load_boot_blob(MCB_TABLE_MAGIC, selector|BP_DDR_TEMP_EXTENDED_ASR, mcb, len); + } + + return ret; +} + +static int get_mcb_selector(uint32_t mcb_mode, uint32_t sel, uint32_t* mcb) +{ + int size = MCB_SIZE; + +#ifdef CONFIG_BCMBCA_DDR_DEF_MCBSEL + mcb_sel = CONFIG_BCMBCA_DDR_DEF_MCBSEL; + if ((mcb_mode&SPL_DDR_INIT_MCB_OVRD) && (mcb_mode&SPL_DDR_INIT_DDR4_SAFE_MODE)) { +#ifdef CONFIG_BCMBCA_DDR4_DEF_MCBSEL + mcb_sel = CONFIG_BCMBCA_DDR4_DEF_MCBSEL; +#endif + } +#else +#error "Must define mcb default selector value in mach-bcmbca/bcm/Kconfig!" +#endif + + if (!IS_JTAG_LOADED(boot_params)) { +#ifdef CONFIG_BCMBCA_DDR_MCBSEL_OVERRIDE +#if (CONFIG_BCMBCA_DDR_MCBSEL_OVERRIDE_VALUE==0x0) +#error "Must define mcb selector override value in bcm9_defconfig!" +#else + mcb_sel = CONFIG_BCMBCA_DDR_MCBSEL_OVERRIDE_VALUE; + printf("Using forced mcb selector value %x\n", mcb_sel); +#endif +#else + void *ebuffer; + char msel[32]; + /* load mcb_sel from environment variables */ + /* We'll borrow the DDR init buffer to do this */ + if (mcb_mode & SPL_DDR_INIT_MCB_OVRD) { + if (mcb_mode&SPL_DDR_INIT_MCB_SEL) { + mcb_sel = sel; + } else { + safe_mode = 1; + } + } else { + ebuffer = load_spl_env((void *)CONFIG_BCMBCA_DDR_LOADADDR); + if ( (NULL != ebuffer) && (0 == get_spl_env_val(ebuffer, "MCB", msel, sizeof(msel)))) { + mcb_sel = simple_strtoul(msel, NULL, 16); + if (strstr(msel,"reset")) { + printf("EARLY RESET REQUESTED\n"); + early_reset = 1; + } + } + else { + safe_mode = 1; + printf("no mcb specified explicitly, use safe mode\n"); + } + } +#endif + if (load_mcb(BP_DDR_SEL_VALUE(mcb_sel), (void *)mcb, &size)) { + printf("mcb selector 0x%x not found ", BP_DDR_SEL_VALUE(mcb_sel)); + mcb_sel = CONFIG_BCMBCA_DDR_DEF_MCBSEL; + safe_mode = 1; + printf("using 0x%x instead\n",mcb_sel); + size = MCB_SIZE; + if (load_mcb(mcb_sel, (void*)mcb, &size)) { + printf("mcb load failed\n"); + return -1; + } + } + } else { + memcpy(mcb, (uint8_t *)(CONFIG_BCMBCA_DDR_LOADADDR + CONFIG_BOOT_BLOB_JTAG_LOAD_MAX_DDR_SIZE + JTAG_LOAD_MCB_BIN_OFFSET), MCB_SIZE); + mcb_sel = + *(uint32_t *) (CONFIG_BCMBCA_DDR_LOADADDR + CONFIG_BOOT_BLOB_JTAG_LOAD_MAX_DDR_SIZE); + } + + return 0; +} + +static int load_ddr_stdalone(int is_ddr4, void *ddr_bin, int *len) +{ + return load_boot_blob(is_ddr4 ? DDR4_TABLE_MAGIC : DDR3_TABLE_MAGIC, 0, + ddr_bin, len); +} + +static ddr_init_func load_ddrinit(void) +{ + ddr_init_func ddr_init; + + ddr_stdalone = (uint8_t*)CONFIG_BCMBCA_DDR_LOADADDR; + ddr_init = (ddr_init_func) ddr_stdalone; + + if (!IS_JTAG_LOADED(boot_params)) { +#if defined(CONFIG_BCMBCA_DDR_REGINIT) + ddr_init = (ddr_init_func) ddr_init_reg; +#else + if (load_ddr_stdalone(BP_DDR_IS_DDR4(mcb_sel), (void *)ddr_stdalone, &ddr_stdsize)) { + printf("failed to load ddr standalone module!\n"); + return (ddr_init_func)NULL; + } + + flush_dcache_all(); + invalidate_icache_all(); +#if defined(CONFIG_BCMBCA_DPFE) + /* DPFE need a wrapper function to call the standalone */ + ddr_init = (ddr_init_func) ddr_init_dpfe; +#endif + +#endif + } else { + flush_dcache_all(); + invalidate_icache_all(); +#if defined(CONFIG_BCMBCA_DPFE) + /* DPFE need a wrapper function to call the standalone */ + ddr_init = (ddr_init_func) ddr_init_dpfe; + ddr_stdsize=CONFIG_BOOT_BLOB_JTAG_LOAD_MAX_DDR_SIZE; +#endif + } + + return ddr_init; +} + +static int run_ddrinit(ddr_init_func ddr_init, uint32_t* mcb_ptr) +{ + uint32_t seed[4]; + ddr_init_param param; + +#ifdef CONFIG_BCMBCA_DDRC_SCRAMBLER + if (ddr_gen_scramber_seed(seed)) + return -1; +#endif + + printf("mcb selector 0x%x checksum 0x%x safe_mode %d\n", mcb_sel, ((uint32_t*)mcb_ptr)[3],safe_mode); + param.mcb_sel = mcb_sel; + param.mcb = mcb_ptr; + param.seed = seed; + param.safe_mode = safe_mode; + param.ddr_size = &ddr_size; +#if defined(CONFIG_BCMBCA_DPFE) + param.dpfe_stdalone = (void*)ddr_stdalone; + /* add extra space for stdalone bss size */ + param.dpfe_segbuf = (uint8_t*)(ALIGN((uintptr_t)ddr_stdalone+ddr_stdsize+0x2000, 64)); + + printf("dpfe stdalone addr %p, seg buf %p\n", param.dpfe_stdalone, param.dpfe_segbuf); +#endif + + return (*ddr_init) (¶m); +} + +void spl_list_mcb_sel(void) +{ + struct overlays* entry; + int i = 0; + + printf("\nMCB selector Mask 0x%08x:\n", BP_DDR_CONFIG_MASK&~BP_DDR_TEMP_EXTENDED_ASR); + printf("Supported MCB selectors:\n"); + + do { + entry = get_boot_blob_hash_entry(i); + if (!entry) + break; + + if (entry->ovltype == MCB_TABLE_MAGIC) { + printf("\t0x%08x\n", entry->selector&BP_DDR_CONFIG_MASK); + } + i++; + } while (1); +} + +/* This function is calle by arch_cpu_init very early during the boot + to turn on DDR VREF_DQ voltage as soon as possible. Otherwise it may + be too late when ddr library to turn it +*/ +void spl_ddrinit_prepare(void) +{ +#ifdef CONFIG_BCMBCA_DDRC_EARLY_VREF_DQ + u32 reg = 0; + + while (!(MEMC->CHN_TIM_PHY_ST&MEMC_CHN_TIM_PHY_ST_PHY_ST_POWER_UP)); + + MEMC->PhyControl.VREF_DAC_CTRL &= ~DDRPHY_VREF_DAC_CTRL_PDN_MASK; + + reg = MEMC->PhyControl.VREF_DAC_CTRL; + reg &= ~(DDRPHY_VREF_DAC_CTRL_DAC0_MASK|DDRPHY_VREF_DAC_CTRL_DAC1_MASK); + reg |= (0x20<PhyControl.VREF_DAC_CTRL = reg; +#endif +} + +int spl_ddrinit(uint32_t mcb_mode, uint32_t sel) +{ + ddr_init_func ddr_init; + uint32_t mcb[MCB_SIZE/sizeof(uint32_t)]; + +#if !defined(CONFIG_BCMBCA_DDR_REGINIT) + if (get_mcb_selector(mcb_mode, sel, mcb)) + hang(); +#endif + + if ((ddr_init = load_ddrinit()) == NULL) + hang(); + + if( run_ddrinit(ddr_init, mcb)) + hang(); + + if (IS_JTAG_LOADED(boot_params)) { + printf("disable mmu?"); + icache_disable(); +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) + dcache_disable(); +#endif + + jtag_spl_done: for (;;); + } + if (early_reset) { + printf("EARLY_RESET HERE!\n"); +#if defined(BCM_LOWLEVEL_RESET) + BCM_LOWLEVEL_RESET(); +#endif + } + return 0; +} diff --git a/arch/arm/mach-bcmbca/ubus/Makefile b/arch/arm/mach-bcmbca/ubus/Makefile new file mode 100644 index 0000000000..d6e8d469f4 --- /dev/null +++ b/arch/arm/mach-bcmbca/ubus/Makefile @@ -0,0 +1,5 @@ +BRCM_CHIP = $(patsubst "bcm%",%,$(CONFIG_SYS_SOC)) +EXTRA_CFLAGS += -DCONFIG_BCM9$(BRCM_CHIP) + +obj-y += \ + bcm_ubus_impl1.o \ diff --git a/arch/arm/mach-bcmbca/ubus/bcm_ubus_impl1.c b/arch/arm/mach-bcmbca/ubus/bcm_ubus_impl1.c new file mode 100644 index 0000000000..2850cfec62 --- /dev/null +++ b/arch/arm/mach-bcmbca/ubus/bcm_ubus_impl1.c @@ -0,0 +1,1617 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2017 Broadcom + */ +/* + * + */ + +/* BCM UBUS4 supporting routines */ + +#if defined(__UBOOT__) +#include +#include "linux/printk.h" +#include +#endif + +#include "bcm_ubus4.h" + +//#define ENABLE_UBUS_REMAP_DEBUG_LOG +#ifdef ENABLE_UBUS_REMAP_DEBUG_LOG +#define UBUS_REMAP_DEBUG_LOG(fmt, ...) printk("%s:%d "fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +#define UBUS_REMAP_DEBUG_LOG(fmt, ...) +#endif + +#ifdef CONFIG_BCM_UBUS_DECODE_REMAP +#define DECODE_WIN0 0 +#define DECODE_WIN1 1 +#define CACHE_BIT_OFF 0 +#define CACHE_BIT_ON 1 +#endif + +extern unsigned long getMemorySize(void); +#define MST_START_DDR_ADDR 0 + +#if !defined(_CFE_) && !defined(__UBOOT__) +#include +#include +#include + +#define PROC_DIR "driver/ubus" +#define UBUS_DECODE_FILE "decode_cfg" +#define UBUS_TOKENS_FILE "tokens" +static struct proc_dir_entry *proc_dir; +static struct proc_dir_entry *proc_decode_cfg, *proc_tokens; + +static ssize_t ubus_decode_get_proc(struct file *file, char *buff, size_t len, loff_t *offset); +static ssize_t ubus_tokens_get_proc(struct file *file, char *buff, size_t len, loff_t *offset); + +static const struct file_operations ubus_decode_proc_fops = { + .read = ubus_decode_get_proc, +}; + +static const struct file_operations ubus_tokens_proc_fops = { + .read = ubus_tokens_get_proc, +}; +#endif + +#ifdef CONFIG_BCM_UBUS_DECODE_REMAP +/* CONFIG_BCM_FPM_COHERENCY_EXCLUDE is the case when all the memory is coherent except for FPM pool, + * since CCI-400 won't sustain 10G traffic load. In that case we remap FPM pool area to be non-coherent + */ +#if defined(CONFIG_BCM_FPM_COHERENCY_EXCLUDE) +static uint32_t fpm_pool_addr; +static uint32_t fpm_pool_size; +#endif /* CONFIG_BCM_FPM_COHERENCY_EXCLUDE */ + +unsigned int g_board_size_power_of_2; +EXPORT_SYMBOL(g_board_size_power_of_2); +#endif /* CONFIG_BCM_UBUS_DECODE_REMAP */ + +ub_mst_addr_map_t ub_mst_addr_map_tbl[] = +{ +#if IS_BCMCHIP(63158) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_B53_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_SPU, MST_PORT_NODE_SPU_PHYS_BASE}, + {UBUS_PORT_ID_DSL, MST_PORT_NODE_DSL_PHYS_BASE}, + {UBUS_PORT_ID_PERDMA, MST_PORT_NODE_PER_DMA_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_PCIE2, MST_PORT_NODE_PCIE2_PHYS_BASE}, + {UBUS_PORT_ID_PCIE3, MST_PORT_NODE_PCIE3_PHYS_BASE}, + {UBUS_PORT_ID_DSLCPU, MST_PORT_NODE_DSLCPU_PHYS_BASE}, + {UBUS_PORT_ID_PMC, MST_PORT_NODE_PMC_PHYS_BASE}, + {UBUS_PORT_ID_SWH, MST_PORT_NODE_SWH_PHYS_BASE}, + {UBUS_PORT_ID_QM, MST_PORT_NODE_QM_PHYS_BASE}, + {UBUS_PORT_ID_DQM, MST_PORT_NODE_DQM_PHYS_BASE}, + {UBUS_PORT_ID_DMA0, MST_PORT_NODE_DMA0_PHYS_BASE}, + {UBUS_PORT_ID_NATC, MST_PORT_NODE_NATC_PHYS_BASE}, + {UBUS_PORT_ID_RQ0, MST_PORT_NODE_RQ0_PHYS_BASE}, +#elif IS_BCMCHIP(63178) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_CPU_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_DSL, MST_PORT_NODE_DSL_PHYS_BASE}, + {UBUS_PORT_ID_DSLCPU, MST_PORT_NODE_DSLCPU_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_PMC, MST_PORT_NODE_PMC_PHYS_BASE}, + {UBUS_PORT_ID_SWH, MST_PORT_NODE_SWH_PHYS_BASE}, + {UBUS_PORT_ID_WIFI, MST_PORT_NODE_WIFI_PHYS_BASE}, +#elif IS_BCMCHIP(47622) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_CPU_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_PMC, MST_PORT_NODE_PMC_PHYS_BASE}, + {UBUS_PORT_ID_SYSPORT, MST_PORT_NODE_SYSPORT_PHYS_BASE}, + {UBUS_PORT_ID_SYSPORT1, MST_PORT_NODE_SYSPORT1_PHYS_BASE}, + {UBUS_PORT_ID_WIFI, MST_PORT_NODE_WIFI_PHYS_BASE}, + {UBUS_PORT_ID_WIFI1, MST_PORT_NODE_WIFI1_PHYS_BASE}, + {UBUS_PORT_ID_SPU, MST_PORT_NODE_SPU_PHYS_BASE}, +#elif IS_BCMCHIP(6858) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_B53_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_PERDMA, MST_PORT_NODE_PER_DMA_PHYS_BASE}, + {UBUS_PORT_ID_SPU, MST_PORT_NODE_SPU_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_PCIE2, MST_PORT_NODE_PCIE2_PHYS_BASE}, + {UBUS_PORT_ID_PMC, MST_PORT_NODE_PMC_PHYS_BASE}, + {UBUS_PORT_ID_QM, MST_PORT_NODE_QM_PHYS_BASE}, + {UBUS_PORT_ID_DQM, MST_PORT_NODE_DQM_PHYS_BASE}, + {UBUS_PORT_ID_DMA0, MST_PORT_NODE_DMA0_PHYS_BASE}, + {UBUS_PORT_ID_DMA1, MST_PORT_NODE_DMA1_PHYS_BASE}, + {UBUS_PORT_ID_NATC, MST_PORT_NODE_NATC_PHYS_BASE}, + {UBUS_PORT_ID_TOP_BUFF, MST_PORT_NODE_TOP_BUFF_PHYS_BASE}, + {UBUS_PORT_ID_XRDP_BUFF, MST_PORT_NODE_XRDP_BUFF_PHYS_BASE}, + {UBUS_PORT_ID_RQ0, MST_PORT_NODE_RQ0_PHYS_BASE}, + {UBUS_PORT_ID_RQ1, MST_PORT_NODE_RQ1_PHYS_BASE}, + {UBUS_PORT_ID_RQ2, MST_PORT_NODE_RQ2_PHYS_BASE}, + {UBUS_PORT_ID_RQ3, MST_PORT_NODE_RQ3_PHYS_BASE}, +#elif IS_BCMCHIP(6878) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_B53_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_WIFI, MST_PORT_NODE_WIFI_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_QM, MST_PORT_NODE_QM_PHYS_BASE}, + {UBUS_PORT_ID_DMA0, MST_PORT_NODE_DMA0_PHYS_BASE}, + {UBUS_PORT_ID_RQ0, MST_PORT_NODE_RQ0_PHYS_BASE}, +#elif IS_BCMCHIP(6855) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_B53_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_WIFI, MST_PORT_NODE_WIFI_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_DMA0, MST_PORT_NODE_DMA0_PHYS_BASE}, + {UBUS_PORT_ID_DMA1, MST_PORT_NODE_DMA1_PHYS_BASE}, + {UBUS_PORT_ID_DMA2, MST_PORT_NODE_DMA2_PHYS_BASE}, + {UBUS_PORT_ID_QM, MST_PORT_NODE_QM_PHYS_BASE}, + {UBUS_PORT_ID_RQ0, MST_PORT_NODE_RQ0_PHYS_BASE}, + {UBUS_PORT_ID_RQ1, MST_PORT_NODE_RQ1_PHYS_BASE}, +#elif IS_BCMCHIP(6846) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_B53_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_QM, MST_PORT_NODE_QM_PHYS_BASE}, + {UBUS_PORT_ID_DQM, MST_PORT_NODE_DQM_PHYS_BASE}, + {UBUS_PORT_ID_DMA0, MST_PORT_NODE_DMA0_PHYS_BASE}, + {UBUS_PORT_ID_NATC, MST_PORT_NODE_NATC_PHYS_BASE}, + {UBUS_PORT_ID_RQ0, MST_PORT_NODE_RQ0_PHYS_BASE}, +#elif IS_BCMCHIP(6856) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_B53_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_PCIE2, MST_PORT_NODE_PCIE2_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_QM, MST_PORT_NODE_QM_PHYS_BASE}, + {UBUS_PORT_ID_DQM, MST_PORT_NODE_DQM_PHYS_BASE}, + {UBUS_PORT_ID_DMA0, MST_PORT_NODE_DMA0_PHYS_BASE}, + {UBUS_PORT_ID_NATC, MST_PORT_NODE_NATC_PHYS_BASE}, + {UBUS_PORT_ID_DMA1, MST_PORT_NODE_DMA1_PHYS_BASE}, + {UBUS_PORT_ID_RQ0, MST_PORT_NODE_RQ0_PHYS_BASE}, + {UBUS_PORT_ID_RQ1, MST_PORT_NODE_RQ1_PHYS_BASE}, +#elif IS_BCMCHIP(63146) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_B53_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_DSL, MST_PORT_NODE_DSL_PHYS_BASE}, + {UBUS_PORT_ID_DSLCPU, MST_PORT_NODE_DSLCPU_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_PCIE1, MST_PORT_NODE_PCIE1_PHYS_BASE}, + {UBUS_PORT_ID_PCIE2, MST_PORT_NODE_PCIE2_PHYS_BASE}, + {UBUS_PORT_ID_DMA0, MST_PORT_NODE_DMA0_PHYS_BASE}, + {UBUS_PORT_ID_DMA1, MST_PORT_NODE_DMA1_PHYS_BASE}, + {UBUS_PORT_ID_RQ0, MST_PORT_NODE_RQ0_PHYS_BASE}, + {UBUS_PORT_ID_QM, MST_PORT_NODE_QM_PHYS_BASE}, +#elif IS_BCMCHIP(4912) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_B53_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_PCIE1, MST_PORT_NODE_PCIE1_PHYS_BASE}, + {UBUS_PORT_ID_PCIE2, MST_PORT_NODE_PCIE2_PHYS_BASE}, + {UBUS_PORT_ID_PCIE3, MST_PORT_NODE_PCIE3_PHYS_BASE}, + {UBUS_PORT_ID_DMA0, MST_PORT_NODE_DMA0_PHYS_BASE}, + {UBUS_PORT_ID_DMA1, MST_PORT_NODE_DMA1_PHYS_BASE}, + {UBUS_PORT_ID_DMA2, MST_PORT_NODE_DMA2_PHYS_BASE}, + {UBUS_PORT_ID_RQ0, MST_PORT_NODE_RQ0_PHYS_BASE}, + {UBUS_PORT_ID_RQ1, MST_PORT_NODE_RQ1_PHYS_BASE}, + {UBUS_PORT_ID_QM, MST_PORT_NODE_QM_PHYS_BASE}, + {UBUS_PORT_ID_SPU, MST_PORT_NODE_SPU_PHYS_BASE}, + {UBUS_PORT_ID_MPM, MST_PORT_NODE_MPM_PHYS_BASE}, +#elif IS_BCMCHIP(6756) + {UBUS_PORT_ID_BIU, MST_PORT_NODE_CPU_PHYS_BASE}, + {UBUS_PORT_ID_PER, MST_PORT_NODE_PER_PHYS_BASE}, + {UBUS_PORT_ID_USB, MST_PORT_NODE_USB_PHYS_BASE}, + {UBUS_PORT_ID_PCIE0, MST_PORT_NODE_PCIE0_PHYS_BASE}, + {UBUS_PORT_ID_PMC, MST_PORT_NODE_PMC_PHYS_BASE}, + {UBUS_PORT_ID_SWH, MST_PORT_NODE_SWH_PHYS_BASE}, + {UBUS_PORT_ID_MPM, MST_PORT_NODE_MPM_PHYS_BASE}, + {UBUS_PORT_ID_WIFI, MST_PORT_NODE_WIFI_PHYS_BASE}, + {UBUS_PORT_ID_WIFI1, MST_PORT_NODE_WIFI1_PHYS_BASE}, + {UBUS_PORT_ID_SPU, MST_PORT_NODE_SPU_PHYS_BASE}, +#endif + {-1, 0} +}; + +#if !defined(_CFE_) && !defined(__UBOOT__) +val_to_str_t ubus_port_id_to_str[] = { +#if !IS_BCMCHIP(6878) && !IS_BCMCHIP(6855) + {UBUS_PORT_ID_MEMC, "MEMC"}, +#endif + {UBUS_PORT_ID_BIU, "BIU"}, + {UBUS_PORT_ID_USB, "USB"}, + {UBUS_PORT_ID_PER, "PER"}, + {UBUS_PORT_ID_PCIE0, "PCIE0"}, +#if IS_BCMCHIP(63178) + {UBUS_PORT_ID_DSLCPU, "DSLCPU"}, + {UBUS_PORT_ID_DSL, "DSL"}, + {UBUS_PORT_ID_WIFI, "WIFI"}, + {UBUS_PORT_ID_PMC, "PMC"}, + {UBUS_PORT_ID_SWH, "SWH"}, + {UBUS_PORT_ID_SYS, "SYS"}, +#elif (IS_BCMCHIP(63146) || IS_BCMCHIP(4912)) + {UBUS_PORT_ID_PCIE1, "PCIE1"}, + {UBUS_PORT_ID_PCIE2, "PCIE2"}, + {UBUS_PORT_ID_DMA0, "DMA0"}, + {UBUS_PORT_ID_DMA1, "DMA1"}, + {UBUS_PORT_ID_RQ0, "RQ0"}, + {UBUS_PORT_ID_QM, "DM"}, +#if IS_BCMCHIP(63146) + {UBUS_PORT_ID_DSL, "DSL"}, + {UBUS_PORT_ID_DSLCPU,"DSLCPU"}, +#endif +#if IS_BCMCHIP(4912) + {UBUS_PORT_ID_DMA2, "DMA2"}, + {UBUS_PORT_ID_PCIE3, "PCIE3"}, + {UBUS_PORT_ID_RQ1, "RQ1"}, + {UBUS_PORT_ID_MPM, "MPM"}, + {UBUS_PORT_ID_SPU, "SPU"}, +#endif +#elif IS_BCMCHIP(47622) + {UBUS_PORT_ID_WIFI, "WIFI0"}, + {UBUS_PORT_ID_WIFI1, "WIFI1"}, + {UBUS_PORT_ID_PMC, "PMC"}, + {UBUS_PORT_ID_SYSPORT, "SYSPORT0"}, + {UBUS_PORT_ID_SYSPORT1, "SYSPORT1"}, + {UBUS_PORT_ID_SYS, "SYS"}, + {UBUS_PORT_ID_SPU, "SPU"}, +#elif IS_BCMCHIP(6756) + {UBUS_PORT_ID_WIFI, "WIFI0"}, + {UBUS_PORT_ID_WIFI1, "WIFI1"}, + {UBUS_PORT_ID_PMC, "PMC"}, + {UBUS_PORT_ID_SWH, "SWH"}, + {UBUS_PORT_ID_MPM, "MPM"}, + {UBUS_PORT_ID_SYS, "SYS"}, + {UBUS_PORT_ID_SPU, "SPU"}, +#else + {UBUS_PORT_ID_DMA0, "DMA0"}, +#if !IS_BCMCHIP(6878) && !IS_BCMCHIP(6855) + {UBUS_PORT_ID_DQM, "DQM"}, + {UBUS_PORT_ID_NATC, "NATC"}, +#endif + {UBUS_PORT_ID_QM, "QM"}, + {UBUS_PORT_ID_RQ0, "RQ0"}, +#if IS_BCMCHIP(63158) + {UBUS_PORT_ID_DSLCPU, "DSLCPU"}, + {UBUS_PORT_ID_DSL, "DSL"}, + {UBUS_PORT_ID_FPM, "FPM"}, + {UBUS_PORT_ID_PCIE2, "PCIE2"}, + {UBUS_PORT_ID_PCIE3, "PCIE3"}, + {UBUS_PORT_ID_PERDMA, "PERDMA"}, + {UBUS_PORT_ID_PMC, "PMC"}, + {UBUS_PORT_ID_PSRAM, "PSRAM"}, + {UBUS_PORT_ID_SPU, "SPU"}, + {UBUS_PORT_ID_SWH, "SWH"}, + {UBUS_PORT_ID_SYS, "SYS"}, + {UBUS_PORT_ID_SYSXRDP, "SYSXRDP"}, + {UBUS_PORT_ID_VPB, "VPB"}, + {UBUS_PORT_ID_WAN, "WAN"}, +#elif IS_BCMCHIP(6858) + {UBUS_PORT_ID_PERDMA, "PERDMA"}, + {UBUS_PORT_ID_SPU, "SPU"}, + {UBUS_PORT_ID_PCIE2, "PCIE2"}, + {UBUS_PORT_ID_PMC, "PMC"}, + {UBUS_PORT_ID_DMA1, "DMA1"}, + {UBUS_PORT_ID_TOP_BUFF, "TOP_BUFF"}, + {UBUS_PORT_ID_XRDP_BUFF, "XRDP_BUFF"}, + {UBUS_PORT_ID_RQ1, "RQ1"}, + {UBUS_PORT_ID_RQ2, "RQ2"}, + {UBUS_PORT_ID_RQ3, "RQ3"}, +#elif IS_BCMCHIP(6856) + {UBUS_PORT_ID_PCIE2, "PCIE2"}, + {UBUS_PORT_ID_DMA1, "DMA1"}, + {UBUS_PORT_ID_RQ1, "RQ1"}, +#elif IS_BCMCHIP(6855) + {UBUS_PORT_ID_WIFI, "WIFI"}, + {UBUS_PORT_ID_DMA1, "DMA1"}, + {UBUS_PORT_ID_DMA2, "DMA2"}, + {UBUS_PORT_ID_RQ1, "RQ1"}, +#endif +#endif +}; +#endif + +void ubus_cong_threshold_wr(int port_id, unsigned int val) +{ + int i=0; + + while (ub_mst_addr_map_tbl[i].port_id != -1) + { + if (ub_mst_addr_map_tbl[i].port_id == port_id) + { + ((MstPortNode*) ub_mst_addr_map_tbl[i].base )->port_cfg[DCM_UBUS_CONGESTION_THRESHOLD] = val; + break; + } + i++; + } +} + +/*ubus4 credit table */ +#if IS_BCMCHIP(63158) +static ubus_credit_cfg_t ubus_credit_tbl[UBUS_NUM_OF_MST_PORTS][UBUS_MAX_PORT_NUM+2] = { + /* only includes the non default credit value, default is 4 in 63158 */ + /* The first credit data in each row inidicates the master port */ + { {UBUS_PORT_ID_BIU, -1}, {UBUS_PORT_ID_MEMC, 3}, {UBUS_PORT_ID_SYS, 1}, {UBUS_PORT_ID_PSRAM, 8}, {UBUS_PORT_ID_SYSXRDP, 1}, {-1,-1} }, + { {UBUS_PORT_ID_USB, -1}, {UBUS_PORT_ID_BIU, 2}, {UBUS_PORT_ID_SYS, 1}, {-1,-1} }, + { {UBUS_PORT_ID_PCIE0, -1}, {UBUS_PORT_ID_BIU, 4}, {UBUS_PORT_ID_PCIE0, 1}, {UBUS_PORT_ID_PER, 1}, {UBUS_PORT_ID_SYS, 1}, + {UBUS_PORT_ID_FPM, 1}, {UBUS_PORT_ID_VPB, 1}, {UBUS_PORT_ID_SYSXRDP, 1}, {-1,-1} }, + { {UBUS_PORT_ID_PCIE3, -1}, {UBUS_PORT_ID_BIU, 6}, {UBUS_PORT_ID_SYS, 1}, {UBUS_PORT_ID_FPM, 1}, {UBUS_PORT_ID_VPB, 1}, {-1,-1} }, + { {UBUS_PORT_ID_PCIE2, -1}, {UBUS_PORT_ID_BIU, 3}, {UBUS_PORT_ID_SYS, 1}, {UBUS_PORT_ID_FPM, 1}, {UBUS_PORT_ID_VPB, 1}, {-1,-1} }, + { {UBUS_PORT_ID_PMC, -1}, {UBUS_PORT_ID_BIU, 1}, {UBUS_PORT_ID_MEMC, 1}, {UBUS_PORT_ID_USB, 1}, {UBUS_PORT_ID_PCIE0, 1}, + {UBUS_PORT_ID_PCIE3, 1}, {UBUS_PORT_ID_PCIE2, 1}, {UBUS_PORT_ID_PER, 1}, {UBUS_PORT_ID_PMC, 1}, + {UBUS_PORT_ID_WAN, 1}, {UBUS_PORT_ID_SYS, 1}, {UBUS_PORT_ID_SWH, 1}, {UBUS_PORT_ID_SPU, 1}, + {UBUS_PORT_ID_DSL, 1}, {UBUS_PORT_ID_QM, 1}, {UBUS_PORT_ID_FPM, 1}, {UBUS_PORT_ID_VPB, 1}, + {UBUS_PORT_ID_PSRAM, 1}, {UBUS_PORT_ID_SYSXRDP, 1}, {-1,-1} }, + { {UBUS_PORT_ID_PER, -1}, {UBUS_PORT_ID_BIU, 1}, {UBUS_PORT_ID_SYS, 1}, {-1,-1} }, + { {UBUS_PORT_ID_PERDMA, -1}, {UBUS_PORT_ID_BIU, 5}, {UBUS_PORT_ID_PER, 1}, {UBUS_PORT_ID_SYS, 1}, {UBUS_PORT_ID_DSL, 4}, + {UBUS_PORT_ID_PSRAM, 8}, {-1,-1} }, + { {UBUS_PORT_ID_DSLCPU, -1}, {UBUS_PORT_ID_MEMC, 8}, {UBUS_PORT_ID_PER, 1}, {UBUS_PORT_ID_WAN, 1}, {UBUS_PORT_ID_SYS, 1}, + {UBUS_PORT_ID_DSL, 1}, {-1,-1} }, + { {UBUS_PORT_ID_DSL, -1}, {UBUS_PORT_ID_BIU, 1}, {UBUS_PORT_ID_PER, 1}, {UBUS_PORT_ID_WAN, 1}, {UBUS_PORT_ID_SYS, 1}, + {UBUS_PORT_ID_DSL, 1}, {-1,-1} }, + { {UBUS_PORT_ID_SPU, -1}, {UBUS_PORT_ID_BIU, 5}, {UBUS_PORT_ID_PER, 1}, {UBUS_PORT_ID_SYS, 1}, {UBUS_PORT_ID_DSL, 4}, + {UBUS_PORT_ID_PSRAM, 8}, {-1,-1} }, + { {UBUS_PORT_ID_QM, -1}, {UBUS_PORT_ID_BIU, 16}, {UBUS_PORT_ID_SYSXRDP, 1}, {-1,-1} }, + { {UBUS_PORT_ID_DQM, -1}, {UBUS_PORT_ID_BIU, 1}, {UBUS_PORT_ID_FPM, 2}, {UBUS_PORT_ID_SYSXRDP, 1}, {-1,-1} }, + { {UBUS_PORT_ID_NATC, -1}, {UBUS_PORT_ID_BIU, 2}, {UBUS_PORT_ID_SYSXRDP, 1}, {-1,-1} }, + { {UBUS_PORT_ID_DMA0, -1}, {UBUS_PORT_ID_BIU, 8}, {UBUS_PORT_ID_SYSXRDP, 1}, {-1,-1} }, + { {UBUS_PORT_ID_RQ0, -1}, {UBUS_PORT_ID_BIU, 11}, {UBUS_PORT_ID_USB, 1}, {UBUS_PORT_ID_PCIE0, 2}, {UBUS_PORT_ID_PCIE3, 2}, + {UBUS_PORT_ID_PCIE2, 2}, {UBUS_PORT_ID_PER, 1}, {UBUS_PORT_ID_WAN, 1}, {UBUS_PORT_ID_SWH, 1}, + {UBUS_PORT_ID_SPU, 1}, {UBUS_PORT_ID_QM, 10}, {UBUS_PORT_ID_FPM, 2}, {UBUS_PORT_ID_VPB, 2}, + {UBUS_PORT_ID_PSRAM, 10}, {UBUS_PORT_ID_SYSXRDP, 1}, {-1,-1} }, + { {UBUS_PORT_ID_SWH, -1}, {UBUS_PORT_ID_BIU, 8}, {UBUS_PORT_ID_SYS, 1}, {UBUS_PORT_ID_DSL, 8}, {UBUS_PORT_ID_PSRAM, 8}, {-1,-1} }, +}; +#elif IS_BCMCHIP(6858) +static ubus_credit_cfg_t ubus_credit_tbl[UBUS_NUM_OF_MST_PORTS][UBUS_MAX_PORT_NUM+2] = { + { {UBUS_PORT_ID_BIU, -1}, {-1,-1} }, + { {UBUS_PORT_ID_PER, -1}, {UBUS_PORT_ID_MEMC, 1}, {-1,-1} }, + { {UBUS_PORT_ID_USB, -1}, {UBUS_PORT_ID_MEMC, 4}, {-1,-1} }, + { {UBUS_PORT_ID_PERDMA, -1}, {UBUS_PORT_ID_BIU, 0} }, + { {UBUS_PORT_ID_SPU, -1}, {-1,-1} }, + { {UBUS_PORT_ID_PCIE0, -1}, {UBUS_PORT_ID_RQ0, 1}, {UBUS_PORT_ID_RQ1, 1}, {UBUS_PORT_ID_RQ2, 1}, {UBUS_PORT_ID_RQ3, 1}, {-1,-1} }, + { {UBUS_PORT_ID_PCIE2, -1}, {UBUS_PORT_ID_RQ0, 1}, {UBUS_PORT_ID_RQ1, 1}, {UBUS_PORT_ID_RQ2, 1}, {UBUS_PORT_ID_RQ3, 1}, {-1,-1} }, + { {UBUS_PORT_ID_PMC, -1}, {UBUS_PORT_ID_MEMC, 1}, {UBUS_PORT_ID_RQ0, 1}, {UBUS_PORT_ID_RQ1, 1}, {UBUS_PORT_ID_RQ2, 1}, {UBUS_PORT_ID_RQ3, 1}, {-1,-1} }, + { {UBUS_PORT_ID_QM, -1}, {UBUS_PORT_ID_MEMC, 10}, {-1,-1} }, + { {UBUS_PORT_ID_DQM, -1}, {UBUS_PORT_ID_MEMC, 7}, {-1,-1} }, + { {UBUS_PORT_ID_DMA0, -1}, {UBUS_PORT_ID_MEMC, 9}, {-1,-1} }, + { {UBUS_PORT_ID_DMA1, -1}, {UBUS_PORT_ID_MEMC, 9}, {-1,-1} }, + { {UBUS_PORT_ID_NATC, -1}, {UBUS_PORT_ID_BIU, 10}, {-1,-1} }, + { {UBUS_PORT_ID_TOP_BUFF, -1}, {-1,-1} }, + { {UBUS_PORT_ID_XRDP_BUFF, -1}, {-1,-1} }, + { {UBUS_PORT_ID_RQ0, -1}, {UBUS_PORT_ID_MEMC, 8}, {UBUS_PORT_ID_XRDP_VPB, 1}, {UBUS_PORT_ID_RQ0, 1}, {-1,-1} }, + { {UBUS_PORT_ID_RQ1, -1}, {UBUS_PORT_ID_MEMC, 4}, {UBUS_PORT_ID_XRDP_VPB, 1}, {UBUS_PORT_ID_RQ1, 1}, {-1,-1} }, + { {UBUS_PORT_ID_RQ2, -1}, {UBUS_PORT_ID_MEMC, 4}, {UBUS_PORT_ID_XRDP_VPB, 1}, {UBUS_PORT_ID_RQ2, 1}, {-1,-1} }, + { {UBUS_PORT_ID_RQ3, -1}, {UBUS_PORT_ID_MEMC, 4}, {UBUS_PORT_ID_XRDP_VPB, 1}, {UBUS_PORT_ID_RQ3, 1}, {-1,-1} }, +}; +#endif + +MstPortNode* bcm_get_ubus_mst_addr(int master_port_id) +{ + MstPortNode *master_addr = NULL; + int i=0; + + while(ub_mst_addr_map_tbl[i].port_id != -1) + { + if (ub_mst_addr_map_tbl[i].port_id == master_port_id) + { + master_addr = (MstPortNode*)ub_mst_addr_map_tbl[i].base; + break; + } + i++; + } + + return master_addr; +} + +// XXX Dima To check +int log2_32 (unsigned int value) +{ + unsigned int result = 0; + if( value < 1) + return 0; + + while (value > 1) { + ++result; + value >>= 1; + } + + return result; +} +#if !defined(_CFE_) && !defined(__UBOOT__) +EXPORT_SYMBOL(log2_32); + +static int ubus_master_decode_wnd_cfg(int master_port_id, int win, unsigned int phys_addr, unsigned int size_power_of_2, int port_id, unsigned int cache_bit_en) +{ + MstPortNode *master_addr = NULL; + int ret = 0; + +#if IS_BCMCHIP(6858) + if ((master_port_id==UBUS_PORT_ID_TOP_BUFF) || (master_port_id==UBUS_PORT_ID_XRDP_BUFF)) + return 0; +#endif + + UBUS_REMAP_DEBUG_LOG("\x1b[35m port[%d] win[%d] phys_addr[0x%x] power_of_2[%d] port_id[%d] cache_bit[%d]\x1b[0m\n", + master_port_id, win, phys_addr, size_power_of_2, port_id,cache_bit_en); + + + if((win > 3) || (size_power_of_2 > 31)) + { + printk("\x1b[35m Paramets Error: win[%d] phys_addr[0x%x] power_of_2[%d] port_id[%d] cache_bit[%d]\x1b[0m\n", + win, phys_addr, size_power_of_2, port_id, cache_bit_en); + return -1; + } + + master_addr = bcm_get_ubus_mst_addr(master_port_id); + if(master_addr) + { +#if IS_BCMCHIP(63158) || IS_BCMCHIP(63178) || IS_BCMCHIP(47622) || IS_BCMCHIP(63146) || IS_BCMCHIP(4912) || IS_BCMCHIP(6756) + /* 63158 has the all the master connected to the CCI as default so no need to + configure the map. Just turn on the cache configuration */ + if( cache_bit_en ) + { + master_addr->decode_cfg.cache_cfg = 0x1; + master_addr->decode_cfg.ctrl &= ~DECODE_CFG_CTRL_CACHE_SEL_MASK; + master_addr->decode_cfg.ctrl |= DECODE_CFG_CTRL_CACHE_SEL_CFG_REG; + } + else + { + master_addr->decode_cfg.cache_cfg = 0x0; + master_addr->decode_cfg.ctrl &= ~DECODE_CFG_CTRL_CACHE_SEL_MASK; + master_addr->decode_cfg.ctrl |= DECODE_CFG_CTRL_CACHE_SEL_DEF; + } + +#else + if(size_power_of_2) + { + master_addr->decode_cfg.window[win].base_addr = (phys_addr>>8); + master_addr->decode_cfg.window[win].remap_addr = (phys_addr>>8); + + if( (port_id == UBUS_PORT_ID_BIU) && (cache_bit_en)) + { + master_addr->decode_cfg.window[win].attributes = + (DECODE_CFG_CACHE_BITS | DECODE_CFG_ENABLE_ADDR_ONLY | (size_power_of_2 << DECODE_CFG_SIZE_SHIFT) | port_id) ; + UBUS_REMAP_DEBUG_LOG("\x1b[35m base_addr[0x%x] remap_addr[0x%x] attributes[0x%x]\x1b[0m\n", + master_addr->decode_cfg.window[win].base_addr, + master_addr->decode_cfg.window[win].remap_addr, + master_addr->decode_cfg.window[win].attributes); + } + else + { + master_addr->decode_cfg.window[win].attributes = + (DECODE_CFG_ENABLE_ADDR_ONLY | (size_power_of_2 << DECODE_CFG_SIZE_SHIFT) | port_id) ; + + UBUS_REMAP_DEBUG_LOG("\x1b[35m base_addr[0x%x] remap_addr[0x%x] attributes[0x%x]\x1b[0m\n", + master_addr->decode_cfg.window[win].base_addr, + master_addr->decode_cfg.window[win].remap_addr, + master_addr->decode_cfg.window[win].attributes); + } + } + else + { + master_addr->decode_cfg.window[win].base_addr = 0; + master_addr->decode_cfg.window[win].remap_addr = 0; + master_addr->decode_cfg.window[win].attributes = 0; + } +#endif + } + + return ret; +} + +int ubus_decode_pcie_wnd_cfg(unsigned int base, unsigned int size, unsigned int core) +{ + /* Not implemented */ + return -1; +} +EXPORT_SYMBOL(ubus_decode_pcie_wnd_cfg); +#endif + +#define SIZE_OF_REG_BYTES (4) +#if defined(CONFIG_BCM_UBUS_DECODE_REMAP) + +#if IS_BCMCHIP(63158) || IS_BCMCHIP(63178) || IS_BCMCHIP(47622) || IS_BCMCHIP(63146) || IS_BCMCHIP(4912) || IS_BCMCHIP(6756) +int ubus_remap_to_biu_cfg_wlu_srcpid(int srcpid, int enable) +{ + volatile CoherencyPortCfgReg_t* cpcfg_reg = (volatile CoherencyPortCfgReg_t * const)UBUS_COHERENCY_PORT_CFG_BASE; + int i = 0, reg, bit; + + if( srcpid > MAX_WLU_SRCPID_NUM ) + return -1; + + if( srcpid == MAX_WLU_SRCPID_NUM ) { + for( i = 0; i < MAX_WLU_SRCPID_REG_NUM; i++ ) + cpcfg_reg->wlu_srcpid[i] = enable ? 0xffffffff : 0; + } else { + reg = WLU_SRCPID_TO_REG_OFFSET(srcpid); + bit = WLU_SRCPID_TO_REG_BIT(srcpid); + if( enable ) + cpcfg_reg->wlu_srcpid[reg] |= (0x1<wlu_srcpid[reg] &= ~(0x1< 31) || (NULL == p_srcpid_queus_value)) + return -1; + + reg_addr->queue_cfg = (((p_srcpid_queus_value[0] & 0xf) << SRCPID_TO_QUEUE_0_BITS_SHIFT) | + ((p_srcpid_queus_value[1] & 0xf) << SRCPID_TO_QUEUE_1_BITS_SHIFT) | + ((p_srcpid_queus_value[2] & 0xf) << SRCPID_TO_QUEUE_2_BITS_SHIFT) | + ((p_srcpid_queus_value[3] & 0xf) << SRCPID_TO_QUEUE_3_BITS_SHIFT) | + ((p_srcpid_queus_value[4] & 0xf) << SRCPID_TO_QUEUE_4_BITS_SHIFT) | + ((p_srcpid_queus_value[5] & 0xf) << SRCPID_TO_QUEUE_5_BITS_SHIFT) | + ((p_srcpid_queus_value[6] & 0xf) << SRCPID_TO_QUEUE_6_BITS_SHIFT) | + ((p_srcpid_queus_value[7] & 0xf) << SRCPID_TO_QUEUE_7_BITS_SHIFT)); + + UBUS_REMAP_DEBUG_LOG("\x1b[35m reg_addr[0x%px] reg_value[0x%x]\x1b[0m\n", + (unsigned int*)(reg_addr), reg_addr->queue_cfg); + + return 0; +} + +static int ubus_remap_to_biu_cfg_queue_depth(unsigned long q_depth_idx, unsigned int *p_depth_queus_value) +{ + CoherencyPortCfgReg_t *reg_addr = + (CoherencyPortCfgReg_t*)(UBUS_COHERENCY_PORT_CFG_DEPTH_BASE + q_depth_idx * SIZE_OF_REG_BYTES); + + if((q_depth_idx > 3) || (NULL == p_depth_queus_value)) + return -1; + + reg_addr->queue_cfg = (((p_depth_queus_value[0] & 0xff) << DEPTH_TO_QUEUE_0_BITS_SHIFT) | + ((p_depth_queus_value[1] & 0xff) << DEPTH_TO_QUEUE_1_BITS_SHIFT) | + ((p_depth_queus_value[2] & 0xff) << DEPTH_TO_QUEUE_2_BITS_SHIFT) | + ((p_depth_queus_value[3] & 0xff) << DEPTH_TO_QUEUE_3_BITS_SHIFT)); + + UBUS_REMAP_DEBUG_LOG("\x1b[35m reg_addr[0x%px] reg_value[0x%x]\x1b[0m\n", + (unsigned int*)(reg_addr), reg_addr->queue_cfg); + + return 0; +} + +static int ubus_remap_to_biu_cfg_queue_thresh(unsigned long q_thresh_idx, unsigned int *p_thresh_queus_value) +{ + CoherencyPortCfgReg_t *reg_addr = + (CoherencyPortCfgReg_t*)(UBUS_COHERENCY_PORT_CFG_CBS_BASE + q_thresh_idx * SIZE_OF_REG_BYTES); + + if((q_thresh_idx > 8) || (NULL == p_thresh_queus_value)) + return -1; + + reg_addr->queue_cfg = (((p_thresh_queus_value[0] & 0xffff) << THRESH_TO_QUEUE_0_BITS_SHIFT) | + ((p_thresh_queus_value [1] & 0xffff) << THRESH_TO_QUEUE_1_BITS_SHIFT)); + + UBUS_REMAP_DEBUG_LOG("\x1b[35m reg_addr[0x%px] reg_value[0x%x]\x1b[0m\n", + (unsigned int*)(reg_addr), reg_addr->queue_cfg); + + return 0; +} + +static int ubus_remap_to_biu_cfg_cir_incr(unsigned long q_cirinc_idx, unsigned int *p_cirinc_queus_value) +{ + CoherencyPortCfgReg_t *reg_addr = + (CoherencyPortCfgReg_t*)(UBUS_COHERENCY_PORT_CFG_CIR_INCR_BASE + q_cirinc_idx * SIZE_OF_REG_BYTES); + + if((q_cirinc_idx > 3) || (NULL == p_cirinc_queus_value)) + return -1; + + reg_addr->queue_cfg = (((p_cirinc_queus_value[0] & 0xff) << CIR_INCR_TO_QUEUE_0_BITS_SHIFT) | + ((p_cirinc_queus_value [1] & 0xff) << CIR_INCR_TO_QUEUE_1_BITS_SHIFT) | + ((p_cirinc_queus_value [2] & 0xff) << CIR_INCR_TO_QUEUE_2_BITS_SHIFT) | + ((p_cirinc_queus_value [3] & 0xff) << CIR_INCR_TO_QUEUE_3_BITS_SHIFT)); + + UBUS_REMAP_DEBUG_LOG("\x1b[35m reg_addr[0x%px] reg_value[0x%x]\x1b[0m\n", + (unsigned int*)(reg_addr), reg_addr->queue_cfg); + + return 0; +} + +static int ubus_remap_to_biu_cfg_ref_cnt(unsigned long q_ref_cnt_idx, unsigned int *p_ref_cnt_value) +{ + CoherencyPortCfgReg_t *reg_addr = + (CoherencyPortCfgReg_t*)(UBUS_COHERENCY_PORT_CFG_REF_COUNT_BASE + q_ref_cnt_idx * SIZE_OF_REG_BYTES); + + if((q_ref_cnt_idx > 1) || (NULL == p_ref_cnt_value)) + return -1; + + reg_addr->queue_cfg = (((p_ref_cnt_value[0] & 0xf) << REF_CNT_0_BITS_SHIFT) | + ((p_ref_cnt_value[1] & 0xf) << REF_CNT_1_BITS_SHIFT) | + ((p_ref_cnt_value[2] & 0xf) << REF_CNT_2_BITS_SHIFT) | + ((p_ref_cnt_value[3] & 0xf) << REF_CNT_3_BITS_SHIFT) | + ((p_ref_cnt_value[4] & 0xf) << REF_CNT_4_BITS_SHIFT) | + ((p_ref_cnt_value[5] & 0xf) << REF_CNT_5_BITS_SHIFT) | + ((p_ref_cnt_value[6] & 0xf) << REF_CNT_6_BITS_SHIFT) | + ((p_ref_cnt_value[7] & 0xf) << REF_CNT_7_BITS_SHIFT)); + + UBUS_REMAP_DEBUG_LOG("\x1b[35m reg_addr[0x%px] reg_value[0x%x]\x1b[0m\n", + (unsigned int*)(reg_addr), reg_addr->queue_cfg); + + return 0; +} + + +#define SRC_PID_Q_NUM (8) +#define DEPTH_Q_NUM (4) +#define THRESH_Q_NUM (2) +#define CIR_INCR_Q_NUM (4) +#define REF_CNT_NUM (8) +static int configure_biu_pid_to_queue(void) +{ + int rc = 0; + unsigned int srcpid_queus_value[SRC_PID_Q_NUM] = {0}; + unsigned int depth_queus_value[DEPTH_Q_NUM] = {0}; + unsigned int thresh_queus_value[THRESH_Q_NUM] = {0}; + unsigned int cir_incr_queus_value[CIR_INCR_Q_NUM] = {0}; + unsigned int ref_cnt_value[REF_CNT_NUM] = {0}; + unsigned long lut_idx; + unsigned long depth_idx; + unsigned long thresh_idx; + unsigned long cir_incr_idx; + unsigned long ref_cnt_idx; + + lut_idx = 0; + srcpid_queus_value[0] = 0; + srcpid_queus_value[1] = 0; + srcpid_queus_value[2] = 0; + srcpid_queus_value[3] = 0; + srcpid_queus_value[4] = 1; + srcpid_queus_value[5] = 1; + srcpid_queus_value[6] = 1; + srcpid_queus_value[7] = 1; + rc = ubus_remap_to_biu_cfg_queue_srcpid(lut_idx, srcpid_queus_value); + if (rc < 0) + { + printk("Error %s line[%d]\n",__FILE__, __LINE__); + goto exit_; + } + + lut_idx = 1; + srcpid_queus_value[0] = 0; + srcpid_queus_value[1] = 0; + srcpid_queus_value[2] = 0; + srcpid_queus_value[3] = 2; + srcpid_queus_value[4] = 3; + srcpid_queus_value[5] = 4; + srcpid_queus_value[6] = 3; + srcpid_queus_value[7] = 5; + rc = ubus_remap_to_biu_cfg_queue_srcpid(lut_idx, srcpid_queus_value); + if (rc < 0) + { + printk("Error %s line[%d]\n",__FILE__, __LINE__); + goto exit_; + } + + depth_idx = 0; + depth_queus_value[0] = 0x10; + depth_queus_value[1] = 0x10; + depth_queus_value[2] = 8; + depth_queus_value[3] = 8; + rc = ubus_remap_to_biu_cfg_queue_depth(depth_idx, depth_queus_value); + if (rc < 0) + { + printk("Error %s line[%d]\n",__FILE__, __LINE__); + goto exit_; + } + + depth_idx = 1; + depth_queus_value[0] = 8; + depth_queus_value[1] = 8; + depth_queus_value[2] = 0; + depth_queus_value[3] = 0; + rc = ubus_remap_to_biu_cfg_queue_depth(depth_idx, depth_queus_value); + if (rc < 0) + { + printk("Error %s line[%d]\n",__FILE__, __LINE__); + goto exit_; + } + + thresh_idx = 0; + thresh_queus_value[0] = 0x100; + thresh_queus_value[1] = 0x100; + rc = ubus_remap_to_biu_cfg_queue_thresh(thresh_idx, thresh_queus_value); + if (rc < 0) + { + printk("Error %s line[%d]\n",__FILE__, __LINE__); + goto exit_; + } + + thresh_idx = 1; + thresh_queus_value[0] = 0x1000; + thresh_queus_value[1] = 0x400; + rc = ubus_remap_to_biu_cfg_queue_thresh(thresh_idx, thresh_queus_value); + if (rc < 0) + { + printk("Error %s line[%d]\n",__FILE__, __LINE__); + goto exit_; + } + + thresh_idx = 2; + thresh_queus_value[0] = 0x400; + thresh_queus_value[1] = 0x1000; + rc = ubus_remap_to_biu_cfg_queue_thresh(thresh_idx, thresh_queus_value); + if (rc < 0) + { + printk("Error %s line[%d]\n",__FILE__, __LINE__); + goto exit_; + } + + cir_incr_idx = 0; + cir_incr_queus_value[0] = 1; + cir_incr_queus_value[1] = 1; + cir_incr_queus_value[2] = 4; + cir_incr_queus_value[3] = 4; + rc = ubus_remap_to_biu_cfg_cir_incr(cir_incr_idx, cir_incr_queus_value); + if (rc < 0) + { + printk("Error %s line[%d]\n",__FILE__, __LINE__); + goto exit_; + } + + cir_incr_idx = 1; + cir_incr_queus_value[0] = 2; + cir_incr_queus_value[1] = 3; + cir_incr_queus_value[2] = 0; + cir_incr_queus_value[3] = 0; + rc = ubus_remap_to_biu_cfg_cir_incr(cir_incr_idx, cir_incr_queus_value); + if (rc < 0) + { + printk("Error %s line[%d]\n",__FILE__, __LINE__); + goto exit_; + } + + ref_cnt_idx = 0; + ref_cnt_value[0] = 7; + ref_cnt_value[1] = 4; + ref_cnt_value[2] = 2; + ref_cnt_value[3] = 2; + ref_cnt_value[4] = 3; + ref_cnt_value[5] = 2; + ref_cnt_value[6] = 0; + ref_cnt_value[7] = 0; + rc = ubus_remap_to_biu_cfg_ref_cnt(ref_cnt_idx, ref_cnt_value); + if (rc < 0) + { + printk("Error %s line[%d]\n",__FILE__, __LINE__); + goto exit_; + } + +exit_: + if (rc < 0) + printk("Error: line[%d]\n",__LINE__); + + return rc; +} +#elif IS_BCMCHIP(63158) + +/* Helper MACROS */ +#define SIZE_OF_REG_BITS (SIZE_OF_REG_BYTES*8) + +#define CLEAR_BITS(r, p, m) (r) = ((r) & ~((m) << (p))) +#define SET_BITS(r, p, v) (r) = ((r) | ((v) << (p))) + +#define BITS_MASK(bits) ( (1<<(bits)) - 1 ) +#define BITS_POS(fld_num, bits) ( ((fld_num)*(bits)) % SIZE_OF_REG_BITS ) + +#define FIELD_INDEX(fld_num, bits) ( (fld_num) / (SIZE_OF_REG_BITS/(bits)) ) + +#define SRCPID_2_LUT_IDX(src_pid) ( FIELD_INDEX(src_pid, QUE_ID_NUM_BITS) ) +#define QUEUE_2_DEPTH_IDX(que_id) ( FIELD_INDEX(que_id, DEPTH_NUM_BITS) ) +#define QUEUE_2_CBS_IDX(que_id) ( FIELD_INDEX(que_id, CBS_NUM_BITS) ) +#define QUEUE_2_CIR_INCR_IDX(que_id) ( FIELD_INDEX(que_id, CIR_INCR_NUM_BITS) ) +#define QUEUE_2_REF_CNT_IDX(que_id) ( FIELD_INDEX(que_id, REF_CNT_NUM_BITS) ) +#define QUEUE_2_MAX_BONUS_IDX(que_id) ( FIELD_INDEX(que_id, MAX_BONUS_NUM_BITS) ) + +/* DDR Rate/Width mapping to array index */ +typedef enum { + eDDR_RATE_WIDTH_2133_32, + eDDR_RATE_WIDTH_2133_16, + eDDR_RATE_WIDTH_1600_32, + eDDR_RATE_WIDTH_1600_16, + eDDR_RATE_WIDTH_MAX, +}eDDR_RATE_WIDTH; + +/* Local structure to store configured values */ +typedef struct { + char blk_name[8]; + uint32_t mstr_node; + uint32_t src_pid; + uint32_t que_id; + uint32_t depth; + uint32_t ref_cnt[eDDR_RATE_WIDTH_MAX]; + uint32_t cir; + uint32_t cbs; + uint32_t bonus; +}biu_cfg_t; + +eDDR_RATE_WIDTH g_ddr_rate_width_idx = eDDR_RATE_WIDTH_2133_32; /* Gets initialized to the correct index based on rate/width */ + +#define BIU_CFG_MAX_SRC_PID (UBUS_MAX_PORT_NUM+1) + +static biu_cfg_t biu_cfg_port_array[BIU_CFG_MAX_SRC_PID] = { + /* queue depth will be set based on ubus credits */ + [UBUS_PORT_ID_PER] = { .blk_name = "PCM", .src_pid = 3, .que_id = 7, .cir = 2, .cbs = 128, .bonus = 0, .ref_cnt = {12, 18, 22, 40 }, .mstr_node = UBUS_PORT_ID_PER}, + [UBUS_PORT_ID_USB] = { .blk_name = "USB", .src_pid = 4, .que_id = 6, .cir = 3, .cbs = 128, .bonus = 0, .ref_cnt = {38, 71, 90, 161}, .mstr_node = UBUS_PORT_ID_USB}, + [UBUS_PORT_ID_SPU] = { .blk_name = "SPU", .src_pid = 5, .que_id = 9, .cir = 1, .cbs = 1, .bonus = 0, .ref_cnt = {38, 71, 90, 161}, .mstr_node = UBUS_PORT_ID_SPU}, + [UBUS_PORT_ID_PERDMA] = { .blk_name = "M2M", .src_pid = 7, .que_id = 8, .cir = 1, .cbs = 1, .bonus = 0, .ref_cnt = {38, 71, 90, 161}, .mstr_node = UBUS_PORT_ID_PERDMA}, + [UBUS_PORT_ID_PCIE0] = { .blk_name = "PCIe0", .src_pid = 8, .que_id = 3, .cir = 6, .cbs = 128, .bonus = 0, .ref_cnt = {38, 71, 90, 161}, .mstr_node = UBUS_PORT_ID_PCIE0}, + [UBUS_PORT_ID_PCIE2] = { .blk_name = "PCIe2", .src_pid = 9, .que_id = 4, .cir = 3, .cbs = 128, .bonus = 0, .ref_cnt = {38, 71, 90, 161}, .mstr_node = UBUS_PORT_ID_PCIE2}, + [UBUS_PORT_ID_PCIE3] = { .blk_name = "PCIe3", .src_pid = 10, .que_id = 5, .cir = 9, .cbs = 256, .bonus = 0, .ref_cnt = {38, 71, 90, 161}, .mstr_node = UBUS_PORT_ID_PCIE3}, + [UBUS_PORT_ID_QM] = { .blk_name = "QM", .src_pid = 22, .que_id = 10, .cir = 38, .cbs = 512, .bonus = 4, .ref_cnt = {38, 71, 90, 161}, .mstr_node = UBUS_PORT_ID_QM}, + [UBUS_PORT_ID_DQM] = { .blk_name = "QM_DQM", .src_pid = 23, .que_id = 1, .cir = 5, .cbs = 256, .bonus = 4, .ref_cnt = {6, 9, 11, 20 }, .mstr_node = UBUS_PORT_ID_DQM}, + [UBUS_PORT_ID_DMA0] = { .blk_name = "DMA0", .src_pid = 24, .que_id = 11, .cir = 39, .cbs = 128, .bonus = 4, .ref_cnt = {38, 71, 90, 161}, .mstr_node = UBUS_PORT_ID_DMA0}, + [UBUS_PORT_ID_NATC] = { .blk_name = "NAT$", .src_pid = 26, .que_id = 2, .cir = 6, .cbs = 512, .bonus = 4, .ref_cnt = {21, 36, 45, 81 }, .mstr_node = UBUS_PORT_ID_NATC}, + [UBUS_PORT_ID_RQ0] = { .blk_name = "RNR", .src_pid = 32, .que_id = 0, .cir = 14, .cbs = 256, .bonus = 4, .ref_cnt = {12, 18, 22, 40 }, .mstr_node = UBUS_PORT_ID_RQ0}, +}; +/* Function to dump configuration per source port */ +void dump_biu_cfg_array(biu_cfg_t *p) +{ + uint32_t idx; + uint32_t depth_total = 0; + printk("\n"); + printk("PID BLOCK QUE DEPTH REFRESH CIR_INCR CBS BONUS MSTR_NODE\n"); + for (idx=0; idx < BIU_CFG_MAX_SRC_PID; idx++) { + if (p->src_pid) { + printk("[%2u] %8s : %4u %5u %7u %8u %8u %4u %6u\n",p->src_pid, p->blk_name, p->que_id, p->depth, p->ref_cnt[0], p->cir, p->cbs, p->bonus, p->mstr_node); + depth_total += p->depth; + } + p++; + } + printk("TOTAL Depth = Credits = %u\n",depth_total); + printk("\n"); +} +/* Helper function to extract the value based on field index and bits */ +static uint32_t extract_field_value(uint32_t val, uint32_t fld_num, uint32_t bits) +{ + uint32_t mask, pos; + mask = BITS_MASK(bits); + pos = BITS_POS(fld_num, bits); + val = (val & (mask << pos)); + val = val >> pos; + return val; +} +/* Helper functions to read configured queue id value for a given source port */ +static uint32_t biu_read_queue(uint32_t src_pid) +{ + volatile CoherencyPortCfgReg_t* reg_addr = (volatile CoherencyPortCfgReg_t * const)UBUS_COHERENCY_PORT_CFG_BASE; + uint32_t idx; + + idx = SRCPID_2_LUT_IDX(src_pid); + return extract_field_value(reg_addr->lut[idx], src_pid, QUE_ID_NUM_BITS); +} +/* Helper functions to read configured queue depth value for a given queue id */ +static uint32_t biu_read_queue_depth(uint32_t queue_id) +{ + volatile CoherencyPortCfgReg_t* reg_addr = (volatile CoherencyPortCfgReg_t * const)UBUS_COHERENCY_PORT_CFG_BASE; + uint32_t idx; + + idx = QUEUE_2_DEPTH_IDX(queue_id); + return extract_field_value(reg_addr->queue_depth[idx], queue_id, DEPTH_NUM_BITS); +} +/* Helper functions to read configured queue cbs value for a given queue id */ +static uint32_t biu_read_queue_cbs(uint32_t queue_id) +{ + volatile CoherencyPortCfgReg_t* reg_addr = (volatile CoherencyPortCfgReg_t * const)UBUS_COHERENCY_PORT_CFG_BASE; + uint32_t idx; + + idx = QUEUE_2_CBS_IDX(queue_id); + return extract_field_value(reg_addr->cbs_thresh[idx], queue_id, CBS_NUM_BITS); +} +/* Helper functions to read configured queue cir_incr value for a given queue id */ +static uint32_t biu_read_queue_cir_incr(uint32_t queue_id) +{ + volatile CoherencyPortCfgReg_t* reg_addr = (volatile CoherencyPortCfgReg_t * const)UBUS_COHERENCY_PORT_CFG_BASE; + uint32_t idx; + + idx = QUEUE_2_CIR_INCR_IDX(queue_id); + return extract_field_value(reg_addr->cir_incr[idx], queue_id, CIR_INCR_NUM_BITS); +} +/* Helper functions to read configured queue refresh count value for a given queue id */ +static uint32_t biu_read_queue_ref_cnt(uint32_t queue_id) +{ + volatile CoherencyPortCfgReg_t* reg_addr = (volatile CoherencyPortCfgReg_t * const)UBUS_COHERENCY_PORT_CFG_BASE; + uint32_t idx; + + idx = QUEUE_2_REF_CNT_IDX(queue_id); + return extract_field_value(reg_addr->ref_cnt[idx], queue_id, REF_CNT_NUM_BITS); +} +/* Helper functions to read configured queue max bonus value for a given queue id */ +static uint32_t biu_read_queue_max_bonus(uint32_t queue_id) +{ + volatile CoherencyPortCfgReg_t* reg_addr = (volatile CoherencyPortCfgReg_t * const)UBUS_COHERENCY_PORT_CFG_BASE; + uint32_t idx; + + idx = QUEUE_2_MAX_BONUS_IDX(queue_id); + return extract_field_value(reg_addr->max_bonus[idx], queue_id, MAX_BONUS_NUM_BITS); +} +/* Helper functions to read & dump configuration for all source ports of interest */ +void dump_biu_cfg(void) +{ + biu_cfg_t cfg_array[BIU_CFG_MAX_SRC_PID] = {}; + biu_cfg_t *p; + uint32_t src_pid; + uint32_t que_id; + + for (src_pid = 0; src_pid < BIU_CFG_MAX_SRC_PID; src_pid++) { + if (biu_cfg_port_array[src_pid].src_pid) { + p = &cfg_array[src_pid]; + /* Assign static values */ + memcpy(p->blk_name, biu_cfg_port_array[src_pid].blk_name, sizeof(p->blk_name)); + p->mstr_node = biu_cfg_port_array[src_pid].mstr_node; + p->src_pid = src_pid; + /* Assign read values */ + que_id = p->que_id = biu_read_queue(src_pid); + p->depth = biu_read_queue_depth(que_id); + p->cbs = biu_read_queue_cbs(que_id); + p->cir = biu_read_queue_cir_incr(que_id); + p->ref_cnt[g_ddr_rate_width_idx] = biu_read_queue_ref_cnt(que_id); + p->bonus = biu_read_queue_max_bonus(que_id); + } + } + dump_biu_cfg_array(cfg_array); + +} +/* Functions to reset all the coherency port configuration */ +static void reset_biu_cfg(void) +{ + volatile CoherencyPortCfgReg_t* reg_addr = (volatile CoherencyPortCfgReg_t * const)UBUS_COHERENCY_PORT_CFG_BASE; + int idx; + for (idx = 0; idx < ARRAY_SIZE(reg_addr->lut); idx++) { + reg_addr->lut[idx] = 0; + } + for (idx = 0; idx < ARRAY_SIZE(reg_addr->queue_depth); idx++) { + reg_addr->queue_depth[idx] = 0; + } + for (idx = 0; idx < ARRAY_SIZE(reg_addr->cbs_thresh); idx++) { + reg_addr->cbs_thresh[idx] = 0; + } + for (idx = 0; idx < ARRAY_SIZE(reg_addr->cir_incr); idx++) { + reg_addr->cir_incr[idx] = 0; + } + for (idx = 0; idx < ARRAY_SIZE(reg_addr->ref_cnt); idx++) { + reg_addr->ref_cnt[idx] = 0; + } + for (idx = 0; idx < ARRAY_SIZE(reg_addr->max_bonus); idx++) { + reg_addr->max_bonus[idx] = 0; + } +} + +/* Functions to set coherency port configuration for a given source port */ +void ubus_remap_to_biu_cfg(const biu_cfg_t *biu_cfg_p) +{ + volatile CoherencyPortCfgReg_t* reg_addr = (volatile CoherencyPortCfgReg_t * const)UBUS_COHERENCY_PORT_CFG_BASE; + uint8_t idx; + uint32_t mask; + uint32_t *reg_p; + uint8_t pos; + + /* COHERENCY_PORT_CFG_REG_LUT*/ + idx = SRCPID_2_LUT_IDX(biu_cfg_p->src_pid); + reg_p = ®_addr->lut[idx]; + mask = BITS_MASK(QUE_ID_NUM_BITS); + pos = BITS_POS(biu_cfg_p->src_pid, QUE_ID_NUM_BITS); + CLEAR_BITS(*reg_p, pos, mask); + SET_BITS(*reg_p, pos, biu_cfg_p->que_id); + + /* COHERENCY_PORT_CFG_REG_QUEUE_DEPTH */ + idx = QUEUE_2_DEPTH_IDX(biu_cfg_p->que_id); + reg_p = ®_addr->queue_depth[idx]; + mask = BITS_MASK(DEPTH_NUM_BITS); + pos = BITS_POS(biu_cfg_p->que_id, DEPTH_NUM_BITS); + CLEAR_BITS(*reg_p, pos, mask); + SET_BITS(*reg_p, pos, biu_cfg_p->depth); + + /* COHERENCY_PORT_CFG_REG_CBS_THRESH */ + idx = QUEUE_2_CBS_IDX(biu_cfg_p->que_id); + reg_p = ®_addr->cbs_thresh[idx]; + mask = BITS_MASK(CBS_NUM_BITS); + pos = BITS_POS(biu_cfg_p->que_id, CBS_NUM_BITS); + CLEAR_BITS(*reg_p, pos, mask); + SET_BITS(*reg_p, pos, biu_cfg_p->cbs); + + /* COHERENCY_PORT_CFG_REG_CIR_INCR */ + idx = QUEUE_2_CIR_INCR_IDX(biu_cfg_p->que_id); + reg_p = ®_addr->cir_incr[idx]; + mask = BITS_MASK(CIR_INCR_NUM_BITS); + pos = BITS_POS(biu_cfg_p->que_id, CIR_INCR_NUM_BITS); + CLEAR_BITS(*reg_p, pos, mask); + SET_BITS(*reg_p, pos, biu_cfg_p->cir); + + /* COHERENCY_PORT_CFG_REG_REF_CNT */ + idx = QUEUE_2_REF_CNT_IDX(biu_cfg_p->que_id); + reg_p = ®_addr->ref_cnt[idx]; + mask = BITS_MASK(REF_CNT_NUM_BITS); + pos = BITS_POS(biu_cfg_p->que_id,REF_CNT_NUM_BITS); + CLEAR_BITS(*reg_p, pos, mask); + SET_BITS(*reg_p, pos, biu_cfg_p->ref_cnt[g_ddr_rate_width_idx]); /* Value based on DDR rate/width on current board */ + + /* COHERENCY_PORT_CFG_REG_MAX_BONUS */ + idx = QUEUE_2_MAX_BONUS_IDX(biu_cfg_p->que_id); + reg_p = ®_addr->max_bonus[idx]; + mask = BITS_MASK(MAX_BONUS_NUM_BITS);; + pos = BITS_POS(biu_cfg_p->que_id,MAX_BONUS_NUM_BITS); + CLEAR_BITS(*reg_p, pos, mask); + SET_BITS(*reg_p, pos, biu_cfg_p->bonus); +} + +/* Helper functions to read DDR configuration in board parameters and return mapped index in array */ +static int get_ddr_rate_width_idx(void) +{ + unsigned int memcfg; + unsigned int rate_1600; + unsigned int width_16; + if (BP_SUCCESS == BpGetMemoryConfig( &memcfg) ) { + + rate_1600 = BP_DDR_SPEED_IS_800( (memcfg & BP_DDR_SPEED_MASK<> BP_DDR_SPEED_SHIFT ) ? 1 : 0; + width_16 = ( (memcfg & BP_DDR_TOTAL_WIDTH_MASK) == BP_DDR_TOTAL_WIDTH_32BIT ) ? 0 : 1; + + switch (rate_1600) { + case 0: /* 2133 */ + switch(width_16) { + case 0: return eDDR_RATE_WIDTH_2133_32; /* 32bit */ + case 1: return eDDR_RATE_WIDTH_2133_16;/* 16bit */ + } + case 1: /* 1600 */ + switch(width_16) { + case 0: return eDDR_RATE_WIDTH_1600_32;/* 32bit */ + case 1: return eDDR_RATE_WIDTH_1600_16;/* 16bit */ + } + } + } + pr_err("\n%s : Failed to find the DDR rate and width \n", __FUNCTION__); + return eDDR_RATE_WIDTH_2133_32; +} +/* Helper functions to read UBUS credits for each source port as queue depth */ +static void set_queue_depth_from_ubus_credits(void) +{ + uint32_t i, idx, jdx; + uint32_t mstr_node_idx; + uint32_t depth_sum = 0; + for (idx=0; idx < BIU_CFG_MAX_SRC_PID; idx++) { + if (biu_cfg_port_array[idx].src_pid) { /* Valid Entry */ + + for ( i = 0; i < UBUS_NUM_OF_MST_PORTS; i++ ) { + if (ubus_credit_tbl[i][0].port_id == biu_cfg_port_array[idx].mstr_node) + { + mstr_node_idx = i; + break; + } + } + + for (jdx=0; ubus_credit_tbl[mstr_node_idx][jdx].port_id != -1 ; jdx++) { + if (ubus_credit_tbl[mstr_node_idx][jdx].port_id == UBUS_PORT_ID_BIU) { + biu_cfg_port_array[idx].depth = ubus_credit_tbl[mstr_node_idx][jdx].credit; + } + } + } + } + /* sum of all queue depth must be <= 64 */ + for (idx=0; idx < BIU_CFG_MAX_SRC_PID; idx++) { + if (biu_cfg_port_array[idx].src_pid) { /* Valid Entry */ + depth_sum += biu_cfg_port_array[idx].depth; + if (depth_sum > 64 || !biu_cfg_port_array[idx].depth) { + printk("\n%s() : ERROR - queue depth config error %d %d \n", + __FUNCTION__, depth_sum,biu_cfg_port_array[idx].depth); + BUG(); + } + } + } +} +/* Main functions to do coherency port configuration */ +static void configure_biu_pid_to_queue(void) +{ + uint32_t idx; + /* Reset everything to ZERO */ + reset_biu_cfg(); + /* Read DDR rate/width from board and map to array index */ + g_ddr_rate_width_idx = get_ddr_rate_width_idx(); + /* queue depths must be same as UBUS credits */ + set_queue_depth_from_ubus_credits(); + + for (idx=0; idx < BIU_CFG_MAX_SRC_PID; idx++) { + if (biu_cfg_port_array[idx].src_pid) { /* Valid Entry */ + ubus_remap_to_biu_cfg(&biu_cfg_port_array[idx]); + } + } + + dump_biu_cfg(); +} +#endif +#endif + +#if !defined(_CFE_) && !defined(__UBOOT__) +#if IS_BCMCHIP(63178) +void configure_ubus_sar_reg_decode(void) +{ + /* work around for HW63178-272 */ + int win; + MstPortNode *master_addr = bcm_get_ubus_mst_addr(UBUS_PORT_ID_BIU); + + for (win = 0; win < 4; win++) + { + uint32_t *attr = &master_addr->decode_cfg.window[win].attributes; + + if (!GET_FIELD(*attr, DECODE_CFG_ENABLE)) + { + /* this window is free, use it */ + /* add 0x4000 address range, starting at offset 0x4000 of the SAR register space, to the CPU UBUS master port */ + master_addr->decode_cfg.window[win].base_addr = ((SAR_PHYS_BASE + 0x4000)>>8); + master_addr->decode_cfg.window[win].remap_addr = ((SAR_PHYS_BASE + 0x4000)>>8); + master_addr->decode_cfg.window[win].attributes = + (DECODE_CFG_ENABLE_ADDR_ONLY | (1 << DECODE_CFG_CMD_DTA_SHIFT) | (14 << DECODE_CFG_SIZE_SHIFT) | UBUS_PORT_ID_DSL); + break; + } + } +} +#endif + +static char *size_by_exponent_to_str(int exponent) +{ + static char buf[8] = {0}; + + if (exponent < 20) + snprintf(buf, sizeof(buf), "%dK", 1 << (exponent - 10)); + else + snprintf(buf, sizeof(buf), "%dM", 1 << (exponent - 20)); + + return buf; +} + +static ssize_t ubus_tokens_get_proc(struct file *file, char *buff, size_t len, loff_t *offset) +{ + int i = 1; + + if (*offset) + return 0; + + *offset += sprintf(buff, "%9s | %s", " ", enum_val_to_str(ub_mst_addr_map_tbl[0].port_id, ubus_port_id_to_str)); + while (ub_mst_addr_map_tbl[i].port_id != -1) + *offset += sprintf(buff + *offset, " | %s", enum_val_to_str(ub_mst_addr_map_tbl[i++].port_id, ubus_port_id_to_str)); + + *offset += sprintf(buff + *offset, "\n---------------------------------------------------------------------------------------------------------------------"); + + i = 0; + while (ub_mst_addr_map_tbl[i].port_id != -1) + { + volatile MstPortNode *master_reg = bcm_get_ubus_mst_addr(ub_mst_addr_map_tbl[i].port_id); + int j = 0; + + *offset += sprintf(buff + *offset, "\n%9s", enum_val_to_str(ub_mst_addr_map_tbl[i].port_id, ubus_port_id_to_str)); + while (ub_mst_addr_map_tbl[j].port_id != -1) + { + uint32_t port_id = ub_mst_addr_map_tbl[j].port_id; + uint32_t field_len = strlen(enum_val_to_str(ub_mst_addr_map_tbl[j].port_id, ubus_port_id_to_str)); + + if (master_reg->token[port_id] > 256) + *offset += sprintf(buff + *offset, " | %*s", field_len, "-"); + else + *offset += sprintf(buff + *offset, " | %*d", field_len, master_reg->token[port_id]); + j++; + } + i++; + } + *offset += sprintf(buff + *offset, "\n"); + + return *offset; +} + +static ssize_t ubus_decode_get_proc(struct file *file, char *buff, size_t len, loff_t *offset) +{ + int i = 0; + + if (*offset) + return 0; + + *offset += sprintf(buff + *offset, "Master Port (addr) | Base | Remap | Size | PortId | Cache:Enable:CD:Strict\n"); + *offset += sprintf(buff + *offset, "------------------------------------------------------------------------------------\n"); + + while (ub_mst_addr_map_tbl[i].port_id != -1) + { + MstPortNode *master_reg = bcm_get_ubus_mst_addr(ub_mst_addr_map_tbl[i].port_id); + int win; + + for (win = 0; win < 4; win++) + { + char dest_port[16]; + uint32_t *attr = &master_reg->decode_cfg.window[win].attributes; + + if (!GET_FIELD(*attr, DECODE_CFG_ENABLE)) + continue; + + strncpy(dest_port, + enum_val_to_str(GET_FIELD(*attr, DECODE_CFG_PORT_ID), ubus_port_id_to_str) + ? : "-", sizeof(dest_port)); + + *offset += sprintf(buff + *offset, "%-9s (%px) | %08x | %08x | %5s | %3s | %x:%x:%x:%x\n", + enum_val_to_str(ub_mst_addr_map_tbl[i].port_id, ubus_port_id_to_str), + master_reg, + master_reg->decode_cfg.window[win].base_addr, + master_reg->decode_cfg.window[win].remap_addr, + size_by_exponent_to_str(GET_FIELD(*attr, DECODE_CFG_SIZE)), + dest_port, + GET_FIELD(*attr, DECODE_CFG_CACHE_BITS), + GET_FIELD(*attr, DECODE_CFG_ENABLE), + GET_FIELD(*attr, DECODE_CFG_CMD_DTA), + GET_FIELD(*attr, DECODE_CFG_STRICT)); + } + i++; + } + + return *offset; +} + +static int create_ubus_proc(void) +{ + int rc = 0; + + proc_dir = proc_mkdir(PROC_DIR, NULL); + if (!proc_dir) + { + pr_err("Failed to create PROC directory %s.\n", + PROC_DIR); + goto error; + } + + if (!(proc_decode_cfg = proc_create(PROC_DIR "/" UBUS_DECODE_FILE, 0644, NULL, &ubus_decode_proc_fops))) + goto error; + + if (!(proc_tokens = proc_create(PROC_DIR "/" UBUS_TOKENS_FILE, 0644, NULL, &ubus_tokens_proc_fops))) + goto error; + + return rc; + +error: + if (proc_decode_cfg) + { + remove_proc_entry(UBUS_DECODE_FILE, proc_dir); + proc_decode_cfg = NULL; + } + + if (proc_tokens) + { + remove_proc_entry(UBUS_TOKENS_FILE, proc_dir); + proc_tokens = NULL; + } + if (proc_dir) + { + remove_proc_entry(PROC_DIR, NULL); + proc_dir = NULL; + } + + return -1; +} +#endif // #ifndef _CFE_ + +#ifdef CONFIG_BCM_UBUS_DECODE_REMAP +int ubus_master_remap_port(int master_port_id) +{ + int rc = 0; + + rc = ubus_master_decode_wnd_cfg(master_port_id, + DECODE_WIN0, + MST_START_DDR_ADDR, + g_board_size_power_of_2, + UBUS_PORT_ID_BIU, + IS_DDR_COHERENT ? CACHE_BIT_ON : CACHE_BIT_OFF); + if (rc < 0) + { + printk("Error %s line[%d] port[%d] address[0x%x] size[%d]: \n", + __FILE__, __LINE__, master_port_id, MST_START_DDR_ADDR,g_board_size_power_of_2); + } +#if defined(CONFIG_BCM_FPM_COHERENCY_EXCLUDE) + /* + * CONFIG_BCM_FPM_COHERENCY_EXCLUDE is the case when all the memory is coherent + * except for FPM pool, since CCI-400 won't sustain 10G traffic load. In that + * case we remap FPM pool area to be non-coherent + */ + else + { + rc = ubus_master_decode_wnd_cfg(master_port_id, + DECODE_WIN1, + fpm_pool_addr, + fpm_pool_size, + UBUS_PORT_ID_BIU, + CACHE_BIT_OFF); + if (rc < 0) + { + printk("Error %s line[%d] port[%d] address[0x%x] size[%d]: \n", + __FILE__, __LINE__, master_port_id, MST_START_DDR_ADDR,g_board_size_power_of_2); + } + } +#endif /* CONFIG_BCM_FPM_COHERENCY_EXCLUDE */ + return rc; +} +EXPORT_SYMBOL(ubus_master_remap_port); + +int remap_ubus_masters_biu(void) +{ + int rc = 0; + unsigned int i = 0; + + /* Calculate board size of power 2 */ + g_board_size_power_of_2 = log2_32(getMemorySize()); + +#if defined(CONFIG_BCM_FPM_COHERENCY_EXCLUDE) + rc = BcmMemReserveGetByName(FPMPOOL_BASE_ADDR_STR, NULL, (phys_addr_t*)&fpm_pool_addr, &fpm_pool_size); + if (rc < 0) + { + printk("Error %s line[%d]: failed to get fpm_pool base address\n", + __FILE__, __LINE__); + goto exit_; + } + fpm_pool_size = log2_32(fpm_pool_size); +#endif /* CONFIG_BCM_FPM_COHERENCY_EXCLUDE */ + + UBUS_REMAP_DEBUG_LOG("\x1b[35m board_sdram_size[0x%lx] board_size_power_of_2[%d]\x1b[0m\n", + getMemorySize(), g_board_size_power_of_2); + + while(ub_mst_addr_map_tbl[i].port_id != -1) + { + rc = ubus_master_remap_port(ub_mst_addr_map_tbl[i].port_id); + if (rc < 0) + goto exit_; + i++; + } + +exit_: + if (rc < 0) + printk("Error: line[%d] rc = %d\n",__LINE__, rc); + + return rc; +} +#endif /* CONFIG_BCM_UBUS_DECODE_REMAP */ + +#if IS_BCMCHIP(63158) || IS_BCMCHIP(6858) +void apply_ubus_credit_each_master(int master) +{ + int i, master_idx; + ubus_credit_cfg_t credit; + + for ( i = 0; i < UBUS_NUM_OF_MST_PORTS; i++ ) { + if (ubus_credit_tbl[i][0].port_id == master) + { + master_idx = i; + break; + } + } + + if (i == (UBUS_NUM_OF_MST_PORTS)) { + printk("Error: master port id %d not found in credit table\n", master); + return; + } + + for( i = 1; i < UBUS_MAX_PORT_NUM; i++ ) { + credit = ubus_credit_tbl[master_idx][i]; + if( credit.port_id == -1 ) + break; + ubus_master_set_token_credits(master, credit.port_id, credit.credit); + } + return; +} +#if !defined(_CFE_) && !defined(__UBOOT__) +static void apply_ubus_credit(void) +{ + int i = 0; + + while(ub_mst_addr_map_tbl[i].port_id != -1) + { + apply_ubus_credit_each_master(ub_mst_addr_map_tbl[i].port_id); + i++; + } + + return; +} +#endif +#endif + +#if IS_BCMCHIP(6858) +void ubus_master_rte_cfg(void) +{ + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ0, UBUS_PORT_ID_RQ0, 0x9); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ0, UBUS_PORT_ID_RQ1, 0x209); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ0, UBUS_PORT_ID_RQ2, 0x109); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ0, UBUS_PORT_ID_RQ3, 0x309); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ1, UBUS_PORT_ID_RQ0, 0x9); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ1, UBUS_PORT_ID_RQ1, 0x209); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ1, UBUS_PORT_ID_RQ2, 0x109); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ1, UBUS_PORT_ID_RQ3, 0x309); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ2, UBUS_PORT_ID_RQ0, 0x8); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ2, UBUS_PORT_ID_RQ1, 0x208); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ2, UBUS_PORT_ID_RQ2, 0x108); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ2, UBUS_PORT_ID_RQ3, 0x308); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ3, UBUS_PORT_ID_RQ0, 0x8); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ3, UBUS_PORT_ID_RQ1, 0x208); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ3, UBUS_PORT_ID_RQ2, 0x108); + ubus_master_set_rte_addr(UBUS_PORT_ID_RQ3, UBUS_PORT_ID_RQ3, 0x308); + ubus_master_set_rte_addr(UBUS_PORT_ID_DMA0, UBUS_PORT_ID_RQ0, 0x0); + ubus_master_set_rte_addr(UBUS_PORT_ID_DMA0, UBUS_PORT_ID_RQ1, 0x8); + ubus_master_set_rte_addr(UBUS_PORT_ID_DMA0, UBUS_PORT_ID_RQ2, 0x4); + ubus_master_set_rte_addr(UBUS_PORT_ID_DMA0, UBUS_PORT_ID_RQ3, 0xc); + ubus_master_set_rte_addr(UBUS_PORT_ID_DMA1, UBUS_PORT_ID_RQ0, 0x1); + ubus_master_set_rte_addr(UBUS_PORT_ID_DMA1, UBUS_PORT_ID_RQ1, 0x9); + ubus_master_set_rte_addr(UBUS_PORT_ID_DMA1, UBUS_PORT_ID_RQ2, 0x5); + ubus_master_set_rte_addr(UBUS_PORT_ID_DMA1, UBUS_PORT_ID_RQ3, 0xd); + ubus_master_set_rte_addr(UBUS_PORT_ID_DQM, UBUS_PORT_ID_RQ0, 0x2); + ubus_master_set_rte_addr(UBUS_PORT_ID_DQM, UBUS_PORT_ID_RQ1, 0x6); + ubus_master_set_rte_addr(UBUS_PORT_ID_DQM, UBUS_PORT_ID_RQ2, 0x24); + ubus_master_set_rte_addr(UBUS_PORT_ID_DQM, UBUS_PORT_ID_RQ3, 0x64); + ubus_master_set_rte_addr(UBUS_PORT_ID_NATC, UBUS_PORT_ID_RQ0, 0x0); + ubus_master_set_rte_addr(UBUS_PORT_ID_NATC, UBUS_PORT_ID_RQ1, 0x8); + ubus_master_set_rte_addr(UBUS_PORT_ID_NATC, UBUS_PORT_ID_RQ2, 0x4); + ubus_master_set_rte_addr(UBUS_PORT_ID_NATC, UBUS_PORT_ID_RQ3, 0xc); +} +#endif + +#if IS_BCMCHIP(6858) || IS_BCMCHIP(6846) || IS_BCMCHIP(6856) +// ucb commands +#define UCB_CMD_RD 0 +#define UCB_CMD_RD_RPLY 1 +#define UCB_CMD_WR 2 +#define UCB_CMD_WR_ACK 3 +#define UCB_CMD_BCAST 4 + +static void write_reg_thr_sm(uint32_t ucbid, uint32_t addr, uint32_t data) +{ + // check if response fifo is full + while( UBUSSYSTOP->ReadUcbStatus & 0x40000000); + + UBUSSYSTOP->UcbData = data; + + UBUSSYSTOP->UcbHdr = (addr/4) | (UCB_CMD_WR<<12) | (ucbid<<16) | (0x1<<24); + + // check if resp fifo has data + while( !(UBUSSYSTOP->ReadUcbStatus & 0x80000000 ) ); + + UBUSSYSTOP->ReadUcbHdr; +} + +static uint32_t read_reg_thr_sm(uint32_t ucbid, uint32_t addr) +{ + // check if response fifo is full + while( UBUSSYSTOP->ReadUcbStatus & 0x40000000); + + UBUSSYSTOP->UcbHdr = (addr/4) | (UCB_CMD_RD<<12) | (ucbid<<16) | (0x1<<24); + + // check if resp fifo has data + while( !(UBUSSYSTOP->ReadUcbStatus & 0x80000000 ) ); + + UBUSSYSTOP->ReadUcbHdr; + + return UBUSSYSTOP->ReadUcbData; +} + + +void ubus_deregister_port(int ucbid) +{ + // Never play with invalid ubus id + if (ucbid < 0) return; + + write_reg_thr_sm(ucbid, 0x1c, 0x1); + + // poll status bit for port unregistered + while ( read_reg_thr_sm(ucbid, 0x1c) != 0x1 ); +} + +void ubus_register_port(int ucbid) +{ + // Never play with invalid ubus id + if (ucbid < 0) return; + +#if IS_BCMCHIP(6858) || IS_BCMCHIP(6846) || IS_BCMCHIP(6856) +#if IS_BCMCHIP(6858) + if ((ucbid==UCB_NODE_ID_MST_USB) || (ucbid==UCB_NODE_ID_SLV_USB) || (ucbid==UCB_NODE_ID_MST_SATA) || (ucbid==UCB_NODE_ID_SLV_SATA)) +#endif + { + write_reg_thr_sm(ucbid, 0x1c, 0x0); + // poll status bit for port registered + while ( read_reg_thr_sm(ucbid, 0x1c) != 0x2 ); + } +#endif +} +#endif + +#if IS_BCMCHIP(6858) +int ubus_master_set_rte_addr(int master_port_id, int port, int val) +{ + volatile MstPortNode *master_addr = NULL; + + master_addr = bcm_get_ubus_mst_addr(master_port_id); + + if (!master_addr) { + printk("Error setting ubus rte addr, master %d not found\n", master_port_id); + return -1; + } + + master_addr->routing_addr[port] = val; + + return 0; +} +#endif + +void ubus_master_cpu_enable_axi_write_cache(int enable) +{ + volatile MstPortNode *master_addr = NULL; + + master_addr = bcm_get_ubus_mst_addr(UBUS_PORT_ID_BIU); + if (enable) + master_addr->axi_cfg.cfg &= ~AXI_CFG_AWCACHE_BYPASS; + else + master_addr->axi_cfg.cfg |= AXI_CFG_AWCACHE_BYPASS; + + return; +} + +/*this function is used to set UBUS route credits per ubus master, should be equivalent configuration at masters*/ +int ubus_master_set_token_credits(int master_port_id, int token, int credits) +{ + volatile MstPortNode *master_addr = NULL; + + master_addr = bcm_get_ubus_mst_addr(master_port_id); + + if (!master_addr) { + printk("Error setting ubus credits, master %d not found\n", master_port_id); + return -1; + } + + //printk("Master node %02d(%px) credit for ubus port %02d is 0x%08x\n", node, &master_addr->token[token], token, master_addr->token[token]); + master_addr->token[token] = credits; + //printk("Master node %02d(%px) credit for ubus port %02d set to %02d, read back 0x%08x\n", node, &master_addr->token[token], token, credits, master_addr->token[token]); + return 0; +} +#if !defined(_CFE_) && !defined(__UBOOT__) +EXPORT_SYMBOL(ubus_master_set_token_credits); +#endif + +// This function initialize ubus master port structure +void ubus_master_port_init(void) +{ +#if !defined(_CFE_) && !defined(__UBOOT__) + int i=0; + + while (ub_mst_addr_map_tbl[i].port_id != -1) + { + ub_mst_addr_map_tbl[i].base = (uintptr_t)bcm_dev_phy2vir(ub_mst_addr_map_tbl[i].base); + i++; + } +#endif +} + +void bcm_ubus_config(void) +{ +#if !defined(_CFE_) && !defined(__UBOOT__) + create_ubus_proc(); +#if IS_BCMCHIP(63158) || IS_BCMCHIP(6858) + apply_ubus_credit(); +#endif +#if IS_BCMCHIP(6878) + ubus_master_set_token_credits(UBUS_PORT_ID_PCIE0, UBUS_PORT_ID_VPB, 1); +#endif +#endif + +#if IS_BCMCHIP(6858) + ubus_master_rte_cfg(); +#endif + +#ifdef CONFIG_BCM_UBUS_DECODE_REMAP + remap_ubus_masters_biu(); +#if IS_BCMCHIP(63158) || IS_BCMCHIP(63178) || IS_BCMCHIP(47622) || IS_BCMCHIP(63146) \ + || IS_BCMCHIP(4912) || IS_BCMCHIP(6756) + ubus_remap_to_biu_cfg_wlu_srcpid(MAX_WLU_SRCPID_NUM, 1); +#endif +#if !IS_BCMCHIP(63178) && !IS_BCMCHIP(47622) && !IS_BCMCHIP(63146) && !IS_BCMCHIP(4912) \ + && !IS_BCMCHIP(6756) + configure_biu_pid_to_queue(); +#endif +#endif /* CONFIG_BCM_UBUS_DECODE_REMAP */ +} diff --git a/arch/arm/mach-bcmbca/xrdp/Makefile b/arch/arm/mach-bcmbca/xrdp/Makefile new file mode 100755 index 0000000000..5a377c2d25 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/Makefile @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +CHIP_ID := $(patsubst "bcm%",%,$(CONFIG_SYS_SOC)) + +# Must defined +KBUILD_CPPFLAGS += -DBDMF_NO_TRACE -D_BYTE_ORDER_LITTLE_ENDIAN_ +KBUILD_CPPFLAGS += -DFIRMWARE_LITTLE_ENDIAN -DXRDP_SIMPLE_NET + +UBOOTINCLUDE += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/xrdp +UBOOTINCLUDE += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/xrdp/$(subst \",,$(CONFIG_SYS_SOC)) + +obj-y += rdp_platform.o rdd_common.o rdd_cpu_tx_ring.o rdd_cpu_rx.o +obj-y += rdp_cpu_ring.o access_logging.o ru.o + +ifdef CONFIG_BCMBCA_XRDP_GPL +obj-y += data_path_init_basic.o rdpa_gpl_sbpm.o +else +KBUILD_CPPFLAGS += -DCONFIG_GPL_RDP_GEN +UBOOTINCLUDE += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/xrdp/xrdp_full +obj-y += xrdp_full/ +endif + +obj-$(CONFIG_BCM6846) += bcm6846/ +obj-$(CONFIG_BCM6856) += bcm6856/ +obj-$(CONFIG_BCM6858) += bcm6858/ +obj-$(CONFIG_BCM6878) += bcm6878/ +obj-$(CONFIG_BCM63146) += bcm63146/ + diff --git a/arch/arm/mach-bcmbca/xrdp/access_logging.c b/arch/arm/mach-bcmbca/xrdp/access_logging.c new file mode 100644 index 0000000000..b61a850abf --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/access_logging.c @@ -0,0 +1,116 @@ +/* + * access_logging.c + */ + +#ifdef CONFIG_BCMBCA_XRDP_GPL + +#include +#include "access_macros.h" +#include "access_logging.h" + +#define xrdp_usleep(_a) udelay(_a) + +#define ACCESS_LOG_PRINT(_args...) printf(_args); + +/* #define ACCESS_LOG_DEBUG_ENABLE */ + +#ifdef ACCESS_LOG_DEBUG_ENABLE +#define ACCESS_LOG_DEBUG(_args...) ACCESS_LOG_PRINT(_args) +#else +#define ACCESS_LOG_DEBUG(_args...) +#endif + +extern uintptr_t rdp_runner_core_addr[]; + +extern int access_log_restore(const access_log_tuple_t *entry_array) +{ + int rc = 0; + int i; + volatile uint32_t *p_addr; + uint32_t start_val; + uint32_t adaptive_val; + const access_log_tuple_t *entry = entry_array; + uint32_t addr; + uint32_t op; + uint32_t size; + uint32_t value; + addr_op_size_st addr_op_size; + + while (1) { + addr_op_size.value = entry->addr_op_size; + op = addr_op_size.op_code; + size = addr_op_size.size; + addr = addr_op_size.addr + 0x82000000; + if ((op == ACCESS_LOG_OP_WRITE) || + (op == ACCESS_LOG_OP_MWRITE) || + (op == ACCESS_LOG_OP_WRITE_6BYTE_ADDR)) { + if (op == ACCESS_LOG_OP_WRITE_6BYTE_ADDR) + addr-= 0x82000000; + + if (size == 4) + *(volatile uint32_t *)((uintptr_t)addr) = (uint32_t)(entry->value); + else if (size == 2) + *(volatile uint16_t *)((uintptr_t)addr) = (uint16_t)(entry->value); + else if (size == 1) + *(volatile uint8_t *)((uintptr_t)addr) = (uint8_t)(entry->value); + else { + ACCESS_LOG_PRINT("!!!!!!! op=%d: invalid entry size %u\n", op, size); + rc = -1; + break; + } + ACCESS_LOG_DEBUG("write op(%d) size(%d) addr 0x%x data 0x%x\n", op, size, addr, entry->value); + } else if (op == ACCESS_LOG_OP_SLEEP) { + ACCESS_LOG_PRINT("Sleep %u...\n", entry->value); + xrdp_usleep(entry->value); + } else if (op == ACCESS_LOG_OP_MEMSET) { + size = entry->value; + ++entry; + addr = entry->addr_op_size; + value = entry->value; + ACCESS_LOG_DEBUG("MEMSET(0x%x, %u, %u)\n", addr, value, size); + MEMSET((void *)(uintptr_t)addr, value, size); + } else if (op == ACCESS_LOG_OP_MEMSET_32) { + size = entry->value; + ++entry; + addr = entry->addr_op_size; + value = entry->value; + ACCESS_LOG_DEBUG("MEMSET_32(0x%x, %u, %u)\n", addr, value, size); + MEMSET_32((void *)(uintptr_t)addr, value, size); + } else if (op == ACCESS_LOG_OP_MEMSET_ADAPTIVE_32) { + size = entry->value; + ++entry; + addr = entry->addr_op_size; + value = entry->value; + p_addr = (volatile uint32_t *)(uintptr_t)addr; + start_val = value & 0xffff; + adaptive_val = (value >> 16) & 0xffff;; + ACCESS_LOG_DEBUG("MEMSET_ADAPTIVE_32(0x%lx, %u %u, %u)\n", addr, start_val, adaptive_val, size); + + for (i = 0; i < size; i++) { + p_addr[i] = (uint32_t)start_val; + start_val += adaptive_val; + } + } else if (op == ACCESS_LOG_OP_SET_CORE_ADDR) { + ACCESS_LOG_DEBUG("SET_CORE_ADDR[%u] = 0x%lx\n", entry->value, addr); + rdp_runner_core_addr[entry->value] = addr; + } else if (op == ACCESS_LOG_OP_STOP) + break; + else { + ACCESS_LOG_PRINT("!!!!!!! op=%d: invalid operation\n", op); + rc = -1; + break; + } + ++entry; + } + + if (entry) + ACCESS_LOG_PRINT("%s: %d entries processed\n", __FUNCTION__, (int)(entry - entry_array)); + + return rc; +} +#else + +int access_log_enable; + +#endif /* #ifdef CONFIG_BCMBCA_XRDP_GPL */ + diff --git a/arch/arm/mach-bcmbca/xrdp/access_logging.h b/arch/arm/mach-bcmbca/xrdp/access_logging.h new file mode 100644 index 0000000000..1db75bf571 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/access_logging.h @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +/* + * access_logging.h + */ + +#ifndef _ACCESS_LOGGING_H_ +#define _ACCESS_LOGGING_H_ + +#include + +typedef enum +{ + ACCESS_LOG_OP_WRITE, + ACCESS_LOG_OP_MWRITE, + ACCESS_LOG_OP_MEMSET, + ACCESS_LOG_OP_MEMSET_32, + ACCESS_LOG_OP_SLEEP, + ACCESS_LOG_OP_SET_CORE_ADDR, + ACCESS_LOG_OP_STOP, + ACCESS_LOG_OP_MEMSET_ADAPTIVE_32, + ACCESS_LOG_OP_WRITE_6BYTE_ADDR, +} access_log_op_t; + +typedef union os_size_st_union { + uint32_t value; + struct { + uint32_t addr : 24; + uint32_t op_code : 4; + uint32_t size : 4; + }; +} addr_op_size_st; + +typedef struct access_log_tuple { + uint32_t addr_op_size; + uint32_t value; +} access_log_tuple_t; + +#if !defined(CONFIG_BCMBCA_XRDP_GPL) + +extern int access_log_enable; + +static inline void access_log_enable_set(int enable) +{ + access_log_enable = enable; +} + +static inline int access_log_enable_get(void) +{ + return access_log_enable; +} + +#define ACCESS_LOG_ENTRY_MARK ">>>" + +#define ACCESS_LOG_PRINT(addr, value) \ + printf(ACCESS_LOG_ENTRY_MARK " 0x%x 0x%x \n", addr, value) + +static inline void access_log_log(access_log_op_t op, uint32_t addr, + uint32_t value, uint32_t size) +{ + addr_op_size_st addr_op_size; + addr_op_size.value = 0; + + if (access_log_enable_get()) { + if ((op!= ACCESS_LOG_OP_MEMSET) && + (op!= ACCESS_LOG_OP_MEMSET_32) && + (op!= ACCESS_LOG_OP_MEMSET_ADAPTIVE_32)) { + /* not memset */ + if (((op == ACCESS_LOG_OP_WRITE) || + (op == ACCESS_LOG_OP_MWRITE)) && + (addr < 0x82000000)) + op = ACCESS_LOG_OP_WRITE_6BYTE_ADDR; + + addr_op_size.addr = addr & 0xFFFFFF; + addr_op_size.op_code = op & 0xf; + addr_op_size.size = size & 0xf; + + ACCESS_LOG_PRINT(addr_op_size.value, value); + } else { + /* memset is represented in 2 lines + * first line op code + size + * second line address + value */ + addr_op_size.op_code = op & 0xF; + ACCESS_LOG_PRINT(addr_op_size.value, size); + ACCESS_LOG_PRINT(addr, value); + } + } +} + +#define ACCESS_LOG(_op, _a, _v, _sz) \ + access_log_log(_op, (unsigned long)(_a), (uint32_t)(_v), (uint32_t)(_sz)) + +#define ACCESS_LOG_ENABLE_SET(_e) access_log_enable_set(_e) + +#undef xrdp_usleep +#define xrdp_usleep(_d) \ + do { \ + ACCESS_LOG(ACCESS_LOG_OP_SLEEP, 0, _d, 0); \ + udelay(_d); \ + } while(0) + + +#else /* #if defined(CONFIG_BCMBCA_XRDP_GPL) */ + +#define ACCESS_LOG(_op, _a, _v, _sz) +#define ACCESS_LOG_ENABLE_SET(_e) + +extern int access_log_restore(const access_log_tuple_t *entry_array); + +#endif /* #if !defined(CONFIG_BCMBCA_XRDP_GPL) */ +#endif /* _ACCESS_LOGGING_H_ */ + diff --git a/arch/arm/mach-bcmbca/xrdp/access_macros.h b/arch/arm/mach-bcmbca/xrdp/access_macros.h new file mode 100644 index 0000000000..60a0f9d8dd --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/access_macros.h @@ -0,0 +1,471 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +#ifndef __ACCESS_MACROS_H_INCLUDED +#define __ACCESS_MACROS_H_INCLUDED + +#include +#include +#include +#include "access_logging.h" + +/*****************/ +/* Generic swaps */ +/*****************/ +static inline uint16_t __swap2bytes(uint16_t a) +{ + return (a << 8) | (a >> 8); +} +static inline uint32_t __swap4bytes(uint32_t a) +{ + return (a << 24) | ((a & 0xFF00) << 8) | + ((a & 0xFF0000) >> 8) | (a >> 24); +} + +static inline uint64_t __swap4bytes64(uint64_t a) +{ + return __swap4bytes(a) | + ((uint64_t)__swap4bytes((a>>32) & 0xFFFFFFFF) << 32); +} + +/**************************/ +/* swap2bytes, swap4bytes */ +/**************************/ +#if defined(_BYTE_ORDER_LITTLE_ENDIAN_) +#if defined(CONFIG_ARM) +static inline uint16_t swap2bytes(uint16_t a) +{ + __asm__("rev16 %0, %1" : "=r" (a) : "r" (a)); + return a; +} + +#if defined(CONFIG_ARM64) +static inline uint32_t swap4bytes(uint32_t a) +{ + __asm__("rev32 %0, %1" : "=r" (a) : "r" (a)); + return a; +} + +/* reverses the 4 bytes in each 32-bit element of Xm*/ +static inline uint64_t swap4bytes64(uint64_t a) +{ + __asm__("rev32 %0, %1" : "=r" (a) : "r" (a)); + return a; +} +#else +static inline uint32_t swap4bytes(uint32_t a) +{ + __asm__("rev %0, %1" : "=r" (a) : "r" (a)); + return a; +} +#endif +#else +#define swap2bytes(x) __swap2bytes(x) +#define swap4bytes(x) __swap4bytes(x) +#define swap4bytes64(x) __swap4bytes64(x) +#endif /* CONFIG_ARM */ +#else /* _BYTE_ORDER_LITTLE_ENDIAN_ */ +#define swap2bytes(x) (x) +#define swap4bytes(x) (x) +#define swap4bytes64(x) (x) +#endif /* _BYTE_ORDER_LITTLE_ENDIAN_ */ + +#define SWAPBYTES(_buffer, _len) \ + do { \ + uint8_t _i; \ + for (_i = 0; _i < _len; _i += sizeof(uint32_t)) \ + *((uint32_t *)(&(_buffer[_i]))) = \ + swap4bytes(*((uint32_t *)(&(_buffer[_i])))); \ + } while (0) + +/******************/ +/* Device address */ +/******************/ +#define DEVICE_ADDRESS(_a) ((volatile uint8_t * const)((uintptr_t)(_a))) + +/**********/ +/* MEMSET */ +/**********/ +#if defined(DUAL_ISSUE) +#define MEMSET(a, v, sz) _xrdp__memset(a, v, sz) +#else +#define MEMSET(a, v, sz) memset_io(a, v, sz) +#endif + +/******************/ +/* Memory Barrier */ +/******************/ +#define WMB() __iowmb() /* memory barrier */ +#define RMB() __iormb() /* memory barrier */ + +/************************/ +/* Registers and memory */ +/************************/ + +/* Registers */ +#define VAL32(_a) (*(volatile uint32_t *)(DEVICE_ADDRESS(_a))) +#define READ_8(a, r) \ + (*(volatile uint8_t *)&(r) = *(volatile uint8_t *)DEVICE_ADDRESS(a)) +#define READ_16(a, r) \ + (*(volatile uint16_t *)&(r) = *(volatile uint16_t *)DEVICE_ADDRESS(a)) +#define READ_32(a, r) \ + (*(volatile uint32_t *)&(r) = *(volatile uint32_t *)DEVICE_ADDRESS(a)) + +#if defined(XRDP_SIMPLE_NET) +/*this version use read modify write method to save writes in CFE GPL mode */ +#define WRITE_8(a, r) \ + do { \ + uint8_t temp; \ + uint8_t temp1 = *(uint8_t *)&r; \ + READ_8(a, temp); \ + if ((temp != temp1) || (temp != 0)) { \ + (*(volatile uint8_t *)DEVICE_ADDRESS(a) = *(uint8_t *)&(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_WRITE, DEVICE_ADDRESS(a), *(uint8_t *)&(r), 1); \ + } \ + } while (0) +#define WRITE_16(a, r) \ + do { \ + uint16_t temp; \ + uint16_t temp1 = *(uint16_t *)&r; \ + READ_16(a, temp); \ + if ((temp != temp1) || (temp != 0)) { \ + (*(volatile uint16_t *)DEVICE_ADDRESS(a) = *(uint16_t *)&(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_WRITE, DEVICE_ADDRESS(a), *(uint16_t *)&(r), 2); \ + } \ + } while (0) +#define WRITE_32(a, r) \ + do { \ + uint32_t temp; \ + uint32_t temp1 = *(uint32_t *)&r; \ + READ_32(a, temp); \ + if ((temp != temp1) || (temp != 0)) { \ + (*(volatile uint32_t *)DEVICE_ADDRESS(a) = *(uint32_t *)&(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_WRITE, DEVICE_ADDRESS(a), *(uint32_t *)&(r), 4); \ + } \ + } while (0) +#else +#define WRITE_8(a, r) \ + do { \ + (*(volatile uint8_t *)DEVICE_ADDRESS(a) = *(uint8_t *)&(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_WRITE, DEVICE_ADDRESS(a), *(uint8_t *)&(r), 1); \ + } while (0) +#define WRITE_16(a, r) \ + do { \ + (*(volatile uint16_t *)DEVICE_ADDRESS(a) = *(uint16_t *)&(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_WRITE, DEVICE_ADDRESS(a), *(uint16_t *)&(r), 2); \ + } while (0) +#define WRITE_32(a, r) \ + do { \ + (*(volatile uint32_t *)DEVICE_ADDRESS(a) = *(uint32_t *)&(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_WRITE, DEVICE_ADDRESS(a), *(uint32_t *)&(r), 4); \ + } while (0) +#endif + +#define READ_I_8(a, i, r) (*(volatile uint8_t *)&(r) = *((volatile uint8_t *)DEVICE_ADDRESS(a) + (i))) +#define READ_I_16(a, i, r) (*(volatile uint16_t *)&(r) = *((volatile uint16_t *)DEVICE_ADDRESS(a) + (i))) +#define READ_I_32(a, i, r) (*(volatile uint32_t *)&(r) = *((volatile uint32_t *)DEVICE_ADDRESS(a) + (i))) + +#define WRITE_I_8(a, i, r) \ + do { \ + (*((volatile uint8_t *)DEVICE_ADDRESS(a) + (i)) = *(uint8_t *)&(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_WRITE, (volatile uint8_t *)DEVICE_ADDRESS(a) + (i), *(uint8_t *)&(r), 1); \ + } while (0) +#define WRITE_I_16(a, i, r) \ + do { \ + (*((volatile uint16_t *)DEVICE_ADDRESS(a) + (i)) = *(uint16_t *)&(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_WRITE, (volatile uint16_t *)DEVICE_ADDRESS(a) + (i), *(uint16_t *)&(r), 2); \ + } while (0) +#define WRITE_I_32(a, i, r) \ + do { \ + (*((volatile uint32_t *)DEVICE_ADDRESS(a) + (i)) = *(uint32_t *)&(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_WRITE, (volatile uint32_t *)DEVICE_ADDRESS(a) + (i), *(uint32_t *)&(r), 4); \ + } while (0) + + +/* Memory */ +#define MGET_8(a) (*(volatile uint8_t *)(a)) +#define MGET_16(a) swap2bytes(*(volatile uint16_t *)(a)) +#define MGET_32(a) swap4bytes(*(volatile uint32_t *)(a)) + +#define MGET_I_8(a, i) (*((volatile uint8_t *)(a) + (i))) +#define MGET_I_16(a, i) swap2bytes(*((volatile uint16_t *)(a) + (i))) +#define MGET_I_32(a, i) swap4bytes(*((volatile uint32_t *)(a) + (i))) + +#define MWRITE_8(a, r) \ + do { \ + (*(volatile uint8_t *)(a) = (uint8_t)(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_MWRITE, (a), (r), 1); \ + } while (0) +#define MWRITE_16(a, r) \ + do { \ + (*(volatile uint16_t *)(a) = swap2bytes((uint16_t)(r))); \ + ACCESS_LOG(ACCESS_LOG_OP_MWRITE, (a), swap2bytes((uint16_t)(r)), 2); \ + } while (0) + +#define MWRITE_32(a, r) \ + do { \ + (*(volatile uint32_t *)(a) = swap4bytes((uint32_t)(r))); \ + ACCESS_LOG(ACCESS_LOG_OP_MWRITE, (a), swap4bytes((uint32_t)(r)), 4); \ + } while (0) + +#define MWRITE_I_8(a, i, r) \ + do { \ + (*((volatile uint8_t *)(a) + (i)) = (uint8_t)(r)); \ + ACCESS_LOG(ACCESS_LOG_OP_MWRITE, ((volatile uint8_t *)(a) + (i)), (r), 1); \ + } while (0) +#define MWRITE_I_16(a, i, r) \ + do { \ + (*((volatile uint16_t *)(a) + (i)) = swap2bytes((uint16_t)(r))); \ + ACCESS_LOG(ACCESS_LOG_OP_MWRITE, ((volatile uint16_t *)(a) + (i)), swap2bytes((uint16_t)(r)), 2); \ + } while (0) +#define MWRITE_I_32(a, i, r) \ + do { \ + (*((volatile uint32_t *)(a) + (i)) = swap4bytes((uint32_t)(r))); \ + ACCESS_LOG(ACCESS_LOG_OP_MWRITE, ((volatile uint32_t *)(a) + (i)), swap4bytes((uint32_t)(r)), 4); \ + } while (0) +#define MWRITE_I_32_NOLOG(a, i, r) \ + do { \ + (*((volatile uint32_t *)(a) + (i)) = swap4bytes((uint32_t)(r))); \ + } while (0) + +#if defined(CONFIG_ARM64) +#define MWRITE_I_64(a, i, r) (*((volatile uint64_t *)(a) + (i)) = swap4bytes64((uint64_t)(r))) +#endif + +#define MREAD_8(a, r) ((r) = MGET_8(a)) +#define MREAD_16(a, r) ((r) = MGET_16(a)) +#define MREAD_32(a, r) ((r) = MGET_32(a)) + +#define MREAD_I_8(a, i, r) ((r) = MGET_I_8((a), (i))) +#define MREAD_I_16(a, i, r) ((r) = MGET_I_16((a), (i))) +#define MREAD_I_32(a, i, r) ((r) = MGET_I_32((a), (i))) + +#if defined(DUAL_ISSUE) +#define MREAD_BLK_8(d, s, sz) _xrdp__memcpy(d, s, sz) +#define MREAD_BLK_16(d, s, sz) _xrdp__memcpy(d, s, sz) +#define MREAD_BLK_32(d, s, sz) _xrdp__memcpy(d, s, sz) +#else +#define MREAD_BLK_8(d, s, sz) memcpy_fromio(d, s, sz) +#define MREAD_BLK_16(d, s, sz) memcpy_fromio(d, s, sz) +#define MREAD_BLK_32(d, s, sz) memcpy_fromio(d, s, sz) +#endif + + +/*************/ +/* MEMSET_32 */ +/*************/ +#define MEMSET_32(a, v_32, sz_32) \ + do { \ + int __i; \ + for (__i=0; __i>(lsbn)) & ((unsigned)(1 << (fw)) - 1)) + +#define FIELD_MGET_32(a, lsbn, fw) (FIELD_GET(MGET_32(a), (lsbn), (fw))) +#define FIELD_MGET_16(a, lsbn, fw) (FIELD_GET(MGET_16(a), (lsbn), (fw))) +#define FIELD_MGET_8(a, lsbn, fw) (FIELD_GET(MGET_8(a) , (lsbn), (fw))) + +#define FIELD_MREAD_8(a, lsbn, fw, rv) (rv = FIELD_MGET_8((a), (lsbn), (fw))) +#define FIELD_MREAD_16(a, lsbn, fw, rv) (rv = FIELD_MGET_16((a), (lsbn), (fw))) +#define FIELD_MREAD_32(a, lsbn, fw, rv) (rv = FIELD_MGET_32((a), (lsbn), (fw))) + +#define FIELD_SET(value, ls_bit_number, field_width, write_value) \ + do { \ + uint32_t mask; \ + mask = ((1 << (field_width)) - 1) << (ls_bit_number); \ + value &= ~mask; \ + value |= (write_value) << (ls_bit_number); \ + } while (0) + +#define FIELD_MWRITE_32(address, ls_bit_number, field_width, write_value) \ + do { \ + uint32_t current_value = MGET_32(address); \ + FIELD_SET(current_value, ls_bit_number, field_width, write_value); \ + MWRITE_32(address, current_value); \ + } while (0) + +#define FIELD_MWRITE_16(address, ls_bit_number, field_width, write_value) \ + do { \ + uint16_t current_value = MGET_16(address); \ + FIELD_SET(current_value, ls_bit_number, field_width, write_value); \ + MWRITE_16(address, current_value); \ + } while (0) + +#define FIELD_MWRITE_8(address, ls_bit_number, field_width, write_value) \ + do { \ + uint8_t current_value = MGET_8(address); \ + FIELD_SET(current_value, ls_bit_number, field_width, write_value); \ + MWRITE_8(address, current_value); \ + } while (0) + +#define GROUP_MREAD_I_8(group, addr, i, ret) (ret = _rdd_i_read(group, (addr), i, rdd_size_8)) +#define GROUP_MREAD_I_16(group, addr, i, ret) (ret = _rdd_i_read(group, (addr), i, rdd_size_16)) +#define GROUP_MREAD_I_32(group, addr, i, ret) (ret = _rdd_i_read(group, (addr), i, rdd_size_32)) + +#define GROUP_MREAD_8(group, addr, ret) (ret = _rdd_i_read(group, (addr), 0, rdd_size_8)) +#define GROUP_MREAD_16(group, addr, ret) (ret = _rdd_i_read(group, (addr), 0, rdd_size_16)) +#define GROUP_MREAD_32(group, addr, ret) (ret = _rdd_i_read(group, (addr), 0, rdd_size_32)) + +#define GROUP_FIELD_MREAD_8(group, addr, lsb, width, ret) \ + (ret = _rdd_field_read(group, (addr), lsb, width, rdd_size_8)) +#define GROUP_FIELD_MREAD_16(group, addr, lsb, width, ret) \ + (ret = _rdd_field_read(group, (addr), lsb, width, rdd_size_16)) +#define GROUP_FIELD_MREAD_32(group, addr, lsb, width, ret) \ + (ret = _rdd_field_read(group, (addr), lsb, width, rdd_size_32)) + +#define GROUP_MWRITE_I_8(group, addr, i, val) _rdd_i_write(group, (addr), val, i, rdd_size_8) +#define GROUP_MWRITE_I_16(group, addr, i, val) _rdd_i_write(group, (addr), val, i, rdd_size_16) +#define GROUP_MWRITE_I_32(group, addr, i, val) _rdd_i_write(group, (addr), val, i, rdd_size_32) + +#define GROUP_MWRITE_8(group, addr, val) _rdd_i_write(group, (addr), val, 0, rdd_size_8) +#define GROUP_MWRITE_16(group, addr, val) _rdd_i_write(group, (addr), val, 0, rdd_size_16) +#define GROUP_MWRITE_32(group, addr, val) _rdd_i_write(group, (addr), val, 0, rdd_size_32) + +#define GROUP_FIELD_MWRITE_8(group, addr, lsb, width, val) \ + _rdd_field_write(group, (addr), val, lsb, width, rdd_size_8) +#define GROUP_FIELD_MWRITE_16(group, addr, lsb, width, val) \ + _rdd_field_write(group, (addr), val, lsb, width, rdd_size_16) +#define GROUP_FIELD_MWRITE_32(group, addr, lsb, width, val) \ + _rdd_field_write(group, (addr), val, lsb, width, rdd_size_32) + +#if defined(DUAL_ISSUE) +static inline void *_xrdp__memcpy(void *dst, void const *src, size_t len) +{ + uint8_t *u8dst_ptr = (uint8_t *)dst; + uint8_t const *u8src_ptr = (uint8_t const *)src; + uint src_alignment = (uint)((uintptr_t)src & (uintptr_t)(sizeof(uint32_t) - 1)); + uint dst_alignment = (uint)((uintptr_t)dst & (uintptr_t)(sizeof(uint32_t) - 1)); + + if (len >= sizeof(uint32_t) && src_alignment == dst_alignment ) + { + while (((uintptr_t)u8src_ptr & (uintptr_t)(sizeof(uint32_t) - 1)) != 0) + { + *u8dst_ptr++ = *u8src_ptr++; + len--; + } + { + uint32_t *u32dst_ptr = (uint32_t *)u8dst_ptr; + uint32_t const *u32src_ptr = (uint32_t const *)u8src_ptr; + + while (len >= sizeof(uint32_t)) + { + *u32dst_ptr++ = *u32src_ptr++; + len -= sizeof(uint32_t); + } + u8dst_ptr = (uint8_t *)u32dst_ptr; + u8src_ptr = (uint8_t const *)u32src_ptr; + } + } + while (len--) + { + *u8dst_ptr++ = *u8src_ptr++; + } + return dst; +} + +static inline void *_xrdp__memset(void *dst, int v, size_t len) +{ + uint8_t *u8dst_ptr = (uint8_t *)dst; + uint8_t c_val = (uint8_t)v; + uint32_t u32_val = (uint32_t)c_val<<24 || (uint32_t)c_val<<16 || (uint32_t)c_val<<8 || (uint32_t)c_val<<24; + + while (len && (((uintptr_t)u8dst_ptr & (uintptr_t)(sizeof(uint32_t) - 1)) != 0)) + { + *u8dst_ptr++ = c_val; + len--; + } + + { + uint32_t *u32dst_ptr = (uint32_t *)u8dst_ptr; + while ( len >= sizeof(uint32_t) ) + { + *u32dst_ptr++ = u32_val; + len -= sizeof(uint32_t); + } + } + + while (len) + { + *u8dst_ptr++ = c_val; + len--; + } + + return dst; +} + +#endif /* defined(DUAL_ISSUE) */ + +#endif /* __ACCESS_MACROS_H_INCLUDED */ diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/Makefile b/arch/arm/mach-bcmbca/xrdp/bcm63146/Makefile new file mode 100755 index 0000000000..59d9964bf9 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/Makefile @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +UBOOTINCLUDE += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/xrdp -I$(srctree)/arch/$(ARCH)/mach-bcmbca/xrdp/$(subst \",,$(CONFIG_SYS_SOC)) +ifndef CONFIG_BCMBCA_XRDP_GPL +UBOOTINCLUDE += -I$(srctree)/arch/$(ARCH)/mach-bcmbca/xrdp/xrdp_full +endif + +obj-y += rdd_data_structures_auto.o rdd_map_auto.o +obj-y += xrdp_drv_drivers_common_ag.o +obj-y += XRDP_AG.o +ifdef CONFIG_BCMBCA_XRDP_GPL +# handcrafted version is to take out the definition of unused registers +# in GPL version. Those waste a lot of rodata memory. +obj-y += xrdp_drv_psram.o xrdp_drv_sbpm.o xrdp_drv_unimac_rdp.o +obj-y += xrdp_drv_rnr_regs.o +obj-y += XRDP_PSRAM_GPL.o XRDP_SBPM_GPL.o +obj-y += XRDP_UNIMAC_RDP_GPL.o XRDP_RNR_REGS_GPL.o +endif + diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_AG.c b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_AG.c new file mode 100644 index 0000000000..fe4e878f21 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_AG.c @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#include "ru.h" + +/****************************************************************************** + * Chip: XRDP_ + ******************************************************************************/ +const ru_block_rec *RU_ALL_BLOCKS[] = +{ + &QM_BLOCK, + &DQM_TOKEN_FIFO_BLOCK, + &DQM_BLOCK, + &FPM_BLOCK, + &RNR_MEM_BLOCK, + &RNR_INST_BLOCK, + &RNR_CNTXT_BLOCK, + &RNR_PRED_BLOCK, + &RNR_REGS_BLOCK, + &RNR_QUAD_BLOCK, + &DSPTCHR_BLOCK, + &BBH_TX_BLOCK, + &BBH_RX_BLOCK, + &UBUS_MSTR_BLOCK, + &UBUS_SLV_BLOCK, + &SBPM_BLOCK, + &DMA_BLOCK, + &PSRAM_BLOCK, + &UNIMAC_RDP_BLOCK, + &UNIMAC_MISC_BLOCK, + &TCAM_BLOCK, + &HASH_BLOCK, + &BAC_IF_BLOCK, + &CNPL_BLOCK, + &NATC_ENG_BLOCK, + &NATC_CTRS_BLOCK, + &NATC_DDR_CFG_BLOCK, + &NATC_BLOCK, + &NATC_TBL_BLOCK, + &NATC_KEY_BLOCK, + &NATC_INDIR_BLOCK, + NULL +}; + +/* End of file XRDP_.c */ diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_AG.h b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_AG.h new file mode 100644 index 0000000000..420434ec65 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_AG.h @@ -0,0 +1,21124 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#ifndef _XRDP_AG_H_ +#define _XRDP_AG_H_ + +#include "ru.h" + +/****************************************************************************** + * XRDP_ Fields + ******************************************************************************/ +extern const ru_field_rec QM_GLOBAL_CFG_QM_ENABLE_CTRL_FPM_PREFETCH_ENABLE_FIELD; +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_FPM_PREFETCH_ENABLE_FIELD_MASK 0x00000001 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_FPM_PREFETCH_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_FPM_PREFETCH_ENABLE_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_ENABLE_CTRL_REORDER_CREDIT_ENABLE_FIELD; +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_REORDER_CREDIT_ENABLE_FIELD_MASK 0x00000002 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_REORDER_CREDIT_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_REORDER_CREDIT_ENABLE_FIELD_SHIFT 1 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_ENABLE_CTRL_DQM_POP_ENABLE_FIELD; +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_DQM_POP_ENABLE_FIELD_MASK 0x00000004 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_DQM_POP_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_DQM_POP_ENABLE_FIELD_SHIFT 2 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_ENABLE_CTRL_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_RESERVED0_FIELD_MASK 0x000000f8 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_RESERVED0_FIELD_WIDTH 5 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_ENABLE_CTRL_RMT_FIXED_ARB_ENABLE_FIELD; +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_RMT_FIXED_ARB_ENABLE_FIELD_MASK 0x00000100 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_RMT_FIXED_ARB_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_RMT_FIXED_ARB_ENABLE_FIELD_SHIFT 8 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_ENABLE_CTRL_DQM_PUSH_FIXED_ARB_ENABLE_FIELD; +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_DQM_PUSH_FIXED_ARB_ENABLE_FIELD_MASK 0x00000200 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_DQM_PUSH_FIXED_ARB_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_DQM_PUSH_FIXED_ARB_ENABLE_FIELD_SHIFT 9 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_ENABLE_CTRL_RESERVED1_FIELD; +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_RESERVED1_FIELD_MASK 0xfffffc00 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_RESERVED1_FIELD_WIDTH 22 +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_RESERVED1_FIELD_SHIFT 10 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH0_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH0_SW_RST_FIELD_MASK 0x00000001 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH0_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH0_SW_RST_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH1_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH1_SW_RST_FIELD_MASK 0x00000002 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH1_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH1_SW_RST_FIELD_SHIFT 1 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH2_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH2_SW_RST_FIELD_MASK 0x00000004 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH2_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH2_SW_RST_FIELD_SHIFT 2 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH3_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH3_SW_RST_FIELD_MASK 0x00000008 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH3_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_FPM_PREFETCH3_SW_RST_FIELD_SHIFT 3 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_NORMAL_RMT_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_NORMAL_RMT_SW_RST_FIELD_MASK 0x00000010 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_NORMAL_RMT_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_NORMAL_RMT_SW_RST_FIELD_SHIFT 4 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_NON_DELAYED_RMT_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_NON_DELAYED_RMT_SW_RST_FIELD_MASK 0x00000020 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_NON_DELAYED_RMT_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_NON_DELAYED_RMT_SW_RST_FIELD_SHIFT 5 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_PRE_CM_FIFO_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_PRE_CM_FIFO_SW_RST_FIELD_MASK 0x00000040 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_PRE_CM_FIFO_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_PRE_CM_FIFO_SW_RST_FIELD_SHIFT 6 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_CM_RD_PD_FIFO_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_CM_RD_PD_FIFO_SW_RST_FIELD_MASK 0x00000080 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_CM_RD_PD_FIFO_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_CM_RD_PD_FIFO_SW_RST_FIELD_SHIFT 7 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_CM_WR_PD_FIFO_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_CM_WR_PD_FIFO_SW_RST_FIELD_MASK 0x00000100 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_CM_WR_PD_FIFO_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_CM_WR_PD_FIFO_SW_RST_FIELD_SHIFT 8 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB0_OUTPUT_FIFO_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB0_OUTPUT_FIFO_SW_RST_FIELD_MASK 0x00000200 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB0_OUTPUT_FIFO_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB0_OUTPUT_FIFO_SW_RST_FIELD_SHIFT 9 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB1_OUTPUT_FIFO_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB1_OUTPUT_FIFO_SW_RST_FIELD_MASK 0x00000400 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB1_OUTPUT_FIFO_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB1_OUTPUT_FIFO_SW_RST_FIELD_SHIFT 10 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB1_INPUT_FIFO_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB1_INPUT_FIFO_SW_RST_FIELD_MASK 0x00000800 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB1_INPUT_FIFO_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_BB1_INPUT_FIFO_SW_RST_FIELD_SHIFT 11 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_TM_FIFO_PTR_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_TM_FIFO_PTR_SW_RST_FIELD_MASK 0x00001000 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_TM_FIFO_PTR_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_TM_FIFO_PTR_SW_RST_FIELD_SHIFT 12 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_NON_DELAYED_OUT_FIFO_SW_RST_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_NON_DELAYED_OUT_FIFO_SW_RST_FIELD_MASK 0x00002000 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_NON_DELAYED_OUT_FIFO_SW_RST_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_NON_DELAYED_OUT_FIFO_SW_RST_FIELD_SHIFT 13 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_RESERVED0_FIELD_MASK 0xffffc000 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_RESERVED0_FIELD_WIDTH 18 +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_PKTS_READ_CLEAR_ENABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_PKTS_READ_CLEAR_ENABLE_FIELD_MASK 0x00000001 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_PKTS_READ_CLEAR_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_PKTS_READ_CLEAR_ENABLE_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_BYTES_READ_CLEAR_ENABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_BYTES_READ_CLEAR_ENABLE_FIELD_MASK 0x00000002 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_BYTES_READ_CLEAR_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_BYTES_READ_CLEAR_ENABLE_FIELD_SHIFT 1 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_MAX_OCCUPANCY_PKTS_SELECT_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_MAX_OCCUPANCY_PKTS_SELECT_FIELD_MASK 0x00000004 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_MAX_OCCUPANCY_PKTS_SELECT_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_MAX_OCCUPANCY_PKTS_SELECT_FIELD_SHIFT 2 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_MAX_OCCUPANCY_BYTES_SELECT_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_MAX_OCCUPANCY_BYTES_SELECT_FIELD_MASK 0x00000008 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_MAX_OCCUPANCY_BYTES_SELECT_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_MAX_OCCUPANCY_BYTES_SELECT_FIELD_SHIFT 3 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_FREE_WITH_CONTEXT_LAST_SEARCH_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FREE_WITH_CONTEXT_LAST_SEARCH_FIELD_MASK 0x00000010 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FREE_WITH_CONTEXT_LAST_SEARCH_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FREE_WITH_CONTEXT_LAST_SEARCH_FIELD_SHIFT 4 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_WRED_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_WRED_DISABLE_FIELD_MASK 0x00000020 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_WRED_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_WRED_DISABLE_FIELD_SHIFT 5 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_PD_CONGESTION_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_PD_CONGESTION_DISABLE_FIELD_MASK 0x00000040 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_PD_CONGESTION_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_PD_CONGESTION_DISABLE_FIELD_SHIFT 6 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_BYTE_CONGESTION_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_BYTE_CONGESTION_DISABLE_FIELD_MASK 0x00000080 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_BYTE_CONGESTION_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_BYTE_CONGESTION_DISABLE_FIELD_SHIFT 7 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_OCCUPANCY_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_OCCUPANCY_DISABLE_FIELD_MASK 0x00000100 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_OCCUPANCY_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_OCCUPANCY_DISABLE_FIELD_SHIFT 8 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_FPM_CONGESTION_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_FPM_CONGESTION_DISABLE_FIELD_MASK 0x00000200 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_FPM_CONGESTION_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_FPM_CONGESTION_DISABLE_FIELD_SHIFT 9 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_UG_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_UG_DISABLE_FIELD_MASK 0x00000400 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_UG_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_UG_DISABLE_FIELD_SHIFT 10 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_QUEUE_OCCUPANCY_DDR_COPY_DECISION_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QUEUE_OCCUPANCY_DDR_COPY_DECISION_DISABLE_FIELD_MASK 0x00000800 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QUEUE_OCCUPANCY_DDR_COPY_DECISION_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QUEUE_OCCUPANCY_DDR_COPY_DECISION_DISABLE_FIELD_SHIFT 11 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_PSRAM_OCCUPANCY_DDR_COPY_DECISION_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_PSRAM_OCCUPANCY_DDR_COPY_DECISION_DISABLE_FIELD_MASK 0x00001000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_PSRAM_OCCUPANCY_DDR_COPY_DECISION_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_PSRAM_OCCUPANCY_DDR_COPY_DECISION_DISABLE_FIELD_SHIFT 12 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DONT_SEND_MC_BIT_TO_BBH_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DONT_SEND_MC_BIT_TO_BBH_FIELD_MASK 0x00002000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DONT_SEND_MC_BIT_TO_BBH_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DONT_SEND_MC_BIT_TO_BBH_FIELD_SHIFT 13 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_CLOSE_AGGREGATION_ON_TIMEOUT_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_CLOSE_AGGREGATION_ON_TIMEOUT_DISABLE_FIELD_MASK 0x00004000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_CLOSE_AGGREGATION_ON_TIMEOUT_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_CLOSE_AGGREGATION_ON_TIMEOUT_DISABLE_FIELD_SHIFT 14 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_CONGESTION_BUF_RELEASE_MECHANISM_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_CONGESTION_BUF_RELEASE_MECHANISM_DISABLE_FIELD_MASK 0x00008000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_CONGESTION_BUF_RELEASE_MECHANISM_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_CONGESTION_BUF_RELEASE_MECHANISM_DISABLE_FIELD_SHIFT 15 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_BUFFER_GLOBAL_RES_ENABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_BUFFER_GLOBAL_RES_ENABLE_FIELD_MASK 0x00010000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_BUFFER_GLOBAL_RES_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_BUFFER_GLOBAL_RES_ENABLE_FIELD_SHIFT 16 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_PRESERVE_PD_WITH_FPM_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_PRESERVE_PD_WITH_FPM_FIELD_MASK 0x00020000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_PRESERVE_PD_WITH_FPM_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_PRESERVE_PD_WITH_FPM_FIELD_SHIFT 17 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_RESIDUE_PER_QUEUE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_RESIDUE_PER_QUEUE_FIELD_MASK 0x00040000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_RESIDUE_PER_QUEUE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_RESIDUE_PER_QUEUE_FIELD_SHIFT 18 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_GHOST_RPT_UPDATE_AFTER_CLOSE_AGG_EN_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_GHOST_RPT_UPDATE_AFTER_CLOSE_AGG_EN_FIELD_MASK 0x00080000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_GHOST_RPT_UPDATE_AFTER_CLOSE_AGG_EN_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_GHOST_RPT_UPDATE_AFTER_CLOSE_AGG_EN_FIELD_SHIFT 19 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_UG_FLOW_CTRL_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_UG_FLOW_CTRL_DISABLE_FIELD_MASK 0x00100000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_UG_FLOW_CTRL_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_FPM_UG_FLOW_CTRL_DISABLE_FIELD_SHIFT 20 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_WRITE_MULTI_SLAVE_EN_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_WRITE_MULTI_SLAVE_EN_FIELD_MASK 0x00200000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_WRITE_MULTI_SLAVE_EN_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_WRITE_MULTI_SLAVE_EN_FIELD_SHIFT 21 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_PD_CONGESTION_AGG_PRIORITY_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_PD_CONGESTION_AGG_PRIORITY_FIELD_MASK 0x00400000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_PD_CONGESTION_AGG_PRIORITY_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DDR_PD_CONGESTION_AGG_PRIORITY_FIELD_SHIFT 22 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_PSRAM_OCCUPANCY_DROP_DISABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_PSRAM_OCCUPANCY_DROP_DISABLE_FIELD_MASK 0x00800000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_PSRAM_OCCUPANCY_DROP_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_PSRAM_OCCUPANCY_DROP_DISABLE_FIELD_SHIFT 23 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_DDR_WRITE_ALIGNMENT_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_DDR_WRITE_ALIGNMENT_FIELD_MASK 0x01000000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_DDR_WRITE_ALIGNMENT_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_QM_DDR_WRITE_ALIGNMENT_FIELD_SHIFT 24 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_EXCLUSIVE_DONT_DROP_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_EXCLUSIVE_DONT_DROP_FIELD_MASK 0x02000000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_EXCLUSIVE_DONT_DROP_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_EXCLUSIVE_DONT_DROP_FIELD_SHIFT 25 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DQMOL_JIRA_973_FIX_ENABLE_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DQMOL_JIRA_973_FIX_ENABLE_FIELD_MASK 0x04000000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DQMOL_JIRA_973_FIX_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DQMOL_JIRA_973_FIX_ENABLE_FIELD_SHIFT 26 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_GPON_DBR_CEIL_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_GPON_DBR_CEIL_FIELD_MASK 0x08000000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_GPON_DBR_CEIL_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_GPON_DBR_CEIL_FIELD_SHIFT 27 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_WRED_DROPS_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_WRED_DROPS_FIELD_MASK 0x10000000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_WRED_DROPS_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_DROP_CNT_WRED_DROPS_FIELD_SHIFT 28 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_RESERVED0_FIELD_MASK 0xe0000000 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_RESERVED0_FIELD_WIDTH 3 +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_RESERVED0_FIELD_SHIFT 29 + +extern const ru_field_rec QM_GLOBAL_CFG_FPM_CONTROL_FPM_POOL_BP_ENABLE_FIELD; +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_POOL_BP_ENABLE_FIELD_MASK 0x00000001 +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_POOL_BP_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_POOL_BP_ENABLE_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_FPM_CONTROL_FPM_CONGESTION_BP_ENABLE_FIELD; +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_CONGESTION_BP_ENABLE_FIELD_MASK 0x00000002 +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_CONGESTION_BP_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_CONGESTION_BP_ENABLE_FIELD_SHIFT 1 + +extern const ru_field_rec QM_GLOBAL_CFG_FPM_CONTROL_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_FPM_CONTROL_RESERVED0_FIELD_MASK 0x0000007c +#define QM_GLOBAL_CFG_FPM_CONTROL_RESERVED0_FIELD_WIDTH 5 +#define QM_GLOBAL_CFG_FPM_CONTROL_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_GRANULARITY_FIELD; +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_GRANULARITY_FIELD_MASK 0x00000080 +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_GRANULARITY_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_GRANULARITY_FIELD_SHIFT 7 + +extern const ru_field_rec QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_MIN_POOL_SIZE_FIELD; +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_MIN_POOL_SIZE_FIELD_MASK 0x00000300 +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_MIN_POOL_SIZE_FIELD_WIDTH 2 +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_MIN_POOL_SIZE_FIELD_SHIFT 8 + +extern const ru_field_rec QM_GLOBAL_CFG_FPM_CONTROL_RESERVED1_FIELD; +#define QM_GLOBAL_CFG_FPM_CONTROL_RESERVED1_FIELD_MASK 0x0000fc00 +#define QM_GLOBAL_CFG_FPM_CONTROL_RESERVED1_FIELD_WIDTH 6 +#define QM_GLOBAL_CFG_FPM_CONTROL_RESERVED1_FIELD_SHIFT 10 + +extern const ru_field_rec QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_PENDING_REQ_LIMIT_FIELD; +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_PENDING_REQ_LIMIT_FIELD_MASK 0x007f0000 +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_PENDING_REQ_LIMIT_FIELD_WIDTH 7 +#define QM_GLOBAL_CFG_FPM_CONTROL_FPM_PREFETCH_PENDING_REQ_LIMIT_FIELD_SHIFT 16 + +extern const ru_field_rec QM_GLOBAL_CFG_FPM_CONTROL_RESERVED2_FIELD; +#define QM_GLOBAL_CFG_FPM_CONTROL_RESERVED2_FIELD_MASK 0xff800000 +#define QM_GLOBAL_CFG_FPM_CONTROL_RESERVED2_FIELD_WIDTH 9 +#define QM_GLOBAL_CFG_FPM_CONTROL_RESERVED2_FIELD_SHIFT 23 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_CONTROL_DDR_BYTE_CONGESTION_DROP_ENABLE_FIELD; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_CONTROL_DDR_BYTE_CONGESTION_DROP_ENABLE_FIELD_MASK 0x00000001 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_CONTROL_DDR_BYTE_CONGESTION_DROP_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_CONTROL_DDR_BYTE_CONGESTION_DROP_ENABLE_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_CONTROL_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_CONTROL_RESERVED0_FIELD_MASK 0xfffffffe +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_CONTROL_RESERVED0_FIELD_WIDTH 31 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_CONTROL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_LOWER_THR_DDR_BYTES_LOWER_THR_FIELD; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_LOWER_THR_DDR_BYTES_LOWER_THR_FIELD_MASK 0x3fffffff +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_LOWER_THR_DDR_BYTES_LOWER_THR_FIELD_WIDTH 30 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_LOWER_THR_DDR_BYTES_LOWER_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_LOWER_THR_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_LOWER_THR_RESERVED0_FIELD_MASK 0xc0000000 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_LOWER_THR_RESERVED0_FIELD_WIDTH 2 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_LOWER_THR_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_MID_THR_DDR_BYTES_MID_THR_FIELD; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_MID_THR_DDR_BYTES_MID_THR_FIELD_MASK 0x3fffffff +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_MID_THR_DDR_BYTES_MID_THR_FIELD_WIDTH 30 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_MID_THR_DDR_BYTES_MID_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_MID_THR_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_MID_THR_RESERVED0_FIELD_MASK 0xc0000000 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_MID_THR_RESERVED0_FIELD_WIDTH 2 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_MID_THR_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_HIGHER_THR_DDR_BYTES_HIGHER_THR_FIELD; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_HIGHER_THR_DDR_BYTES_HIGHER_THR_FIELD_MASK 0x3fffffff +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_HIGHER_THR_DDR_BYTES_HIGHER_THR_FIELD_WIDTH 30 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_HIGHER_THR_DDR_BYTES_HIGHER_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_HIGHER_THR_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_HIGHER_THR_RESERVED0_FIELD_MASK 0xc0000000 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_HIGHER_THR_RESERVED0_FIELD_WIDTH 2 +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_HIGHER_THR_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PD_CONGESTION_DROP_ENABLE_FIELD; +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PD_CONGESTION_DROP_ENABLE_FIELD_MASK 0x00000001 +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PD_CONGESTION_DROP_ENABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PD_CONGESTION_DROP_ENABLE_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_RESERVED0_FIELD_MASK 0x000000fe +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_RESERVED0_FIELD_WIDTH 7 +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PIPE_LOWER_THR_FIELD; +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PIPE_LOWER_THR_FIELD_MASK 0x0000ff00 +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PIPE_LOWER_THR_FIELD_WIDTH 8 +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PIPE_LOWER_THR_FIELD_SHIFT 8 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PIPE_HIGHER_THR_FIELD; +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PIPE_HIGHER_THR_FIELD_MASK 0x00ff0000 +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PIPE_HIGHER_THR_FIELD_WIDTH 8 +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_DDR_PIPE_HIGHER_THR_FIELD_SHIFT 16 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_RESERVED1_FIELD; +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_RESERVED1_FIELD_MASK 0xff000000 +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_RESERVED1_FIELD_WIDTH 8 +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_RESERVED1_FIELD_SHIFT 24 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_PD_CONGESTION_CONTROL_TOTAL_PD_THR_FIELD; +#define QM_GLOBAL_CFG_QM_PD_CONGESTION_CONTROL_TOTAL_PD_THR_FIELD_MASK 0x0fffffff +#define QM_GLOBAL_CFG_QM_PD_CONGESTION_CONTROL_TOTAL_PD_THR_FIELD_WIDTH 28 +#define QM_GLOBAL_CFG_QM_PD_CONGESTION_CONTROL_TOTAL_PD_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_PD_CONGESTION_CONTROL_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_QM_PD_CONGESTION_CONTROL_RESERVED0_FIELD_MASK 0xf0000000 +#define QM_GLOBAL_CFG_QM_PD_CONGESTION_CONTROL_RESERVED0_FIELD_WIDTH 4 +#define QM_GLOBAL_CFG_QM_PD_CONGESTION_CONTROL_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec QM_GLOBAL_CFG_ABS_DROP_QUEUE_ABS_DROP_QUEUE_FIELD; +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_ABS_DROP_QUEUE_FIELD_MASK 0x000001ff +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_ABS_DROP_QUEUE_FIELD_WIDTH 9 +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_ABS_DROP_QUEUE_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_ABS_DROP_QUEUE_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_RESERVED0_FIELD_MASK 0x0000fe00 +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_RESERVED0_FIELD_WIDTH 7 +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec QM_GLOBAL_CFG_ABS_DROP_QUEUE_ABS_DROP_QUEUE_EN_FIELD; +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_ABS_DROP_QUEUE_EN_FIELD_MASK 0x00010000 +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_ABS_DROP_QUEUE_EN_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_ABS_DROP_QUEUE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec QM_GLOBAL_CFG_ABS_DROP_QUEUE_RESERVED1_FIELD; +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_RESERVED1_FIELD_MASK 0xfffe0000 +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_RESERVED1_FIELD_WIDTH 15 +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec QM_GLOBAL_CFG_AGGREGATION_CTRL_MAX_AGG_BYTES_FIELD; +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_MAX_AGG_BYTES_FIELD_MASK 0x000003ff +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_MAX_AGG_BYTES_FIELD_WIDTH 10 +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_MAX_AGG_BYTES_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_AGGREGATION_CTRL_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_RESERVED0_FIELD_MASK 0x0000fc00 +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_RESERVED0_FIELD_WIDTH 6 +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec QM_GLOBAL_CFG_AGGREGATION_CTRL_MAX_AGG_PKTS_FIELD; +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_MAX_AGG_PKTS_FIELD_MASK 0x00030000 +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_MAX_AGG_PKTS_FIELD_WIDTH 2 +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_MAX_AGG_PKTS_FIELD_SHIFT 16 + +extern const ru_field_rec QM_GLOBAL_CFG_AGGREGATION_CTRL_RESERVED1_FIELD; +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_RESERVED1_FIELD_MASK 0xfffc0000 +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_RESERVED1_FIELD_WIDTH 14 +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_RESERVED1_FIELD_SHIFT 18 + +extern const ru_field_rec QM_GLOBAL_CFG_FPM_BASE_ADDR_FPM_BASE_ADDR_FIELD; +#define QM_GLOBAL_CFG_FPM_BASE_ADDR_FPM_BASE_ADDR_FIELD_MASK 0xffffffff +#define QM_GLOBAL_CFG_FPM_BASE_ADDR_FPM_BASE_ADDR_FIELD_WIDTH 32 +#define QM_GLOBAL_CFG_FPM_BASE_ADDR_FPM_BASE_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_FPM_COHERENT_BASE_ADDR_FPM_BASE_ADDR_FIELD; +#define QM_GLOBAL_CFG_FPM_COHERENT_BASE_ADDR_FPM_BASE_ADDR_FIELD_MASK 0xffffffff +#define QM_GLOBAL_CFG_FPM_COHERENT_BASE_ADDR_FPM_BASE_ADDR_FIELD_WIDTH 32 +#define QM_GLOBAL_CFG_FPM_COHERENT_BASE_ADDR_FPM_BASE_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_SOP_OFFSET_DDR_SOP_OFFSET0_FIELD; +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_DDR_SOP_OFFSET0_FIELD_MASK 0x000007ff +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_DDR_SOP_OFFSET0_FIELD_WIDTH 11 +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_DDR_SOP_OFFSET0_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_SOP_OFFSET_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_RESERVED0_FIELD_MASK 0x0000f800 +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_RESERVED0_FIELD_WIDTH 5 +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_RESERVED0_FIELD_SHIFT 11 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_SOP_OFFSET_DDR_SOP_OFFSET1_FIELD; +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_DDR_SOP_OFFSET1_FIELD_MASK 0x07ff0000 +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_DDR_SOP_OFFSET1_FIELD_WIDTH 11 +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_DDR_SOP_OFFSET1_FIELD_SHIFT 16 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_SOP_OFFSET_RESERVED1_FIELD; +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_RESERVED1_FIELD_MASK 0xf8000000 +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_RESERVED1_FIELD_WIDTH 5 +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_RESERVED1_FIELD_SHIFT 27 + +extern const ru_field_rec QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_EPON_LINE_RATE_FIELD; +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_EPON_LINE_RATE_FIELD_MASK 0x00000001 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_EPON_LINE_RATE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_EPON_LINE_RATE_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_EPON_CRC_ADD_DISABLE_FIELD; +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_EPON_CRC_ADD_DISABLE_FIELD_MASK 0x00000002 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_EPON_CRC_ADD_DISABLE_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_EPON_CRC_ADD_DISABLE_FIELD_SHIFT 1 + +extern const ru_field_rec QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_MAC_FLOW_OVERWRITE_CRC_EN_FIELD; +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_MAC_FLOW_OVERWRITE_CRC_EN_FIELD_MASK 0x00000004 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_MAC_FLOW_OVERWRITE_CRC_EN_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_MAC_FLOW_OVERWRITE_CRC_EN_FIELD_SHIFT 2 + +extern const ru_field_rec QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_MAC_FLOW_OVERWRITE_CRC_FIELD; +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_MAC_FLOW_OVERWRITE_CRC_FIELD_MASK 0x000007f8 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_MAC_FLOW_OVERWRITE_CRC_FIELD_WIDTH 8 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_MAC_FLOW_OVERWRITE_CRC_FIELD_SHIFT 3 + +extern const ru_field_rec QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_RESERVED0_FIELD_MASK 0x0000f800 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_RESERVED0_FIELD_WIDTH 5 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_RESERVED0_FIELD_SHIFT 11 + +extern const ru_field_rec QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_FEC_IPG_LENGTH_FIELD; +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_FEC_IPG_LENGTH_FIELD_MASK 0x07ff0000 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_FEC_IPG_LENGTH_FIELD_WIDTH 11 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_FEC_IPG_LENGTH_FIELD_SHIFT 16 + +extern const ru_field_rec QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_RESERVED1_FIELD; +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_RESERVED1_FIELD_MASK 0xf8000000 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_RESERVED1_FIELD_WIDTH 5 +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_RESERVED1_FIELD_SHIFT 27 + +extern const ru_field_rec QM_GLOBAL_CFG_DQM_FULL_Q_FULL_FIELD; +#define QM_GLOBAL_CFG_DQM_FULL_Q_FULL_FIELD_MASK 0xffffffff +#define QM_GLOBAL_CFG_DQM_FULL_Q_FULL_FIELD_WIDTH 32 +#define QM_GLOBAL_CFG_DQM_FULL_Q_FULL_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DQM_NOT_EMPTY_Q_NOT_EMPTY_FIELD; +#define QM_GLOBAL_CFG_DQM_NOT_EMPTY_Q_NOT_EMPTY_FIELD_MASK 0xffffffff +#define QM_GLOBAL_CFG_DQM_NOT_EMPTY_Q_NOT_EMPTY_FIELD_WIDTH 32 +#define QM_GLOBAL_CFG_DQM_NOT_EMPTY_Q_NOT_EMPTY_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DQM_POP_READY_POP_READY_FIELD; +#define QM_GLOBAL_CFG_DQM_POP_READY_POP_READY_FIELD_MASK 0xffffffff +#define QM_GLOBAL_CFG_DQM_POP_READY_POP_READY_FIELD_WIDTH 32 +#define QM_GLOBAL_CFG_DQM_POP_READY_POP_READY_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_AGGREGATION_CONTEXT_VALID_CONTEXT_VALID_FIELD; +#define QM_GLOBAL_CFG_AGGREGATION_CONTEXT_VALID_CONTEXT_VALID_FIELD_MASK 0xffffffff +#define QM_GLOBAL_CFG_AGGREGATION_CONTEXT_VALID_CONTEXT_VALID_FIELD_WIDTH 32 +#define QM_GLOBAL_CFG_AGGREGATION_CONTEXT_VALID_CONTEXT_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PRESCALER_GRANULARITY_FIELD; +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PRESCALER_GRANULARITY_FIELD_MASK 0x00000007 +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PRESCALER_GRANULARITY_FIELD_WIDTH 3 +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PRESCALER_GRANULARITY_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_AGGREGATION_TIMEOUT_VALUE_FIELD; +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_AGGREGATION_TIMEOUT_VALUE_FIELD_MASK 0x00000038 +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_AGGREGATION_TIMEOUT_VALUE_FIELD_WIDTH 3 +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_AGGREGATION_TIMEOUT_VALUE_FIELD_SHIFT 3 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PD_OCCUPANCY_EN_FIELD; +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PD_OCCUPANCY_EN_FIELD_MASK 0x00000040 +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PD_OCCUPANCY_EN_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PD_OCCUPANCY_EN_FIELD_SHIFT 6 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PD_OCCUPANCY_VALUE_FIELD; +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PD_OCCUPANCY_VALUE_FIELD_MASK 0x00000780 +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PD_OCCUPANCY_VALUE_FIELD_WIDTH 4 +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_PD_OCCUPANCY_VALUE_FIELD_SHIFT 7 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_RESERVED0_FIELD_MASK 0xfffff800 +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_RESERVED0_FIELD_WIDTH 21 +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_RESERVED0_FIELD_SHIFT 11 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_FPM_UG_GBL_CNT_FPM_GBL_CNT_FIELD; +#define QM_GLOBAL_CFG_QM_FPM_UG_GBL_CNT_FPM_GBL_CNT_FIELD_MASK 0x0000ffff +#define QM_GLOBAL_CFG_QM_FPM_UG_GBL_CNT_FPM_GBL_CNT_FIELD_WIDTH 16 +#define QM_GLOBAL_CFG_QM_FPM_UG_GBL_CNT_FPM_GBL_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_FPM_UG_GBL_CNT_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_QM_FPM_UG_GBL_CNT_RESERVED0_FIELD_MASK 0xffff0000 +#define QM_GLOBAL_CFG_QM_FPM_UG_GBL_CNT_RESERVED0_FIELD_WIDTH 16 +#define QM_GLOBAL_CFG_QM_FPM_UG_GBL_CNT_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_QUEUE_NUM_FIELD; +#define QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_QUEUE_NUM_FIELD_MASK 0x000001ff +#define QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_QUEUE_NUM_FIELD_WIDTH 9 +#define QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_QUEUE_NUM_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_FLUSH_EN_FIELD; +#define QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_FLUSH_EN_FIELD_MASK 0x00000200 +#define QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_FLUSH_EN_FIELD_WIDTH 1 +#define QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_FLUSH_EN_FIELD_SHIFT 9 + +extern const ru_field_rec QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_RESERVED0_FIELD_MASK 0xfffffc00 +#define QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_RESERVED0_FIELD_WIDTH 22 +#define QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_SPARE_ROOM_DDR_HEADROOM_FIELD; +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_DDR_HEADROOM_FIELD_MASK 0x000007ff +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_DDR_HEADROOM_FIELD_WIDTH 11 +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_DDR_HEADROOM_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_SPARE_ROOM_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_RESERVED0_FIELD_MASK 0x0000f800 +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_RESERVED0_FIELD_WIDTH 5 +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_RESERVED0_FIELD_SHIFT 11 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_SPARE_ROOM_DDR_TAILROOM_FIELD; +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_DDR_TAILROOM_FIELD_MASK 0x07ff0000 +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_DDR_TAILROOM_FIELD_WIDTH 11 +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_DDR_TAILROOM_FIELD_SHIFT 16 + +extern const ru_field_rec QM_GLOBAL_CFG_DDR_SPARE_ROOM_RESERVED1_FIELD; +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_RESERVED1_FIELD_MASK 0xf8000000 +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_RESERVED1_FIELD_WIDTH 5 +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_RESERVED1_FIELD_SHIFT 27 + +extern const ru_field_rec QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_DUMMY_PROFILE_0_FIELD; +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_DUMMY_PROFILE_0_FIELD_MASK 0x00000003 +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_DUMMY_PROFILE_0_FIELD_WIDTH 2 +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_DUMMY_PROFILE_0_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_RESERVED0_FIELD; +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_RESERVED0_FIELD_MASK 0x0000fffc +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_RESERVED0_FIELD_WIDTH 14 +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_DUMMY_PROFILE_1_FIELD; +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_DUMMY_PROFILE_1_FIELD_MASK 0x00030000 +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_DUMMY_PROFILE_1_FIELD_WIDTH 2 +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_DUMMY_PROFILE_1_FIELD_SHIFT 16 + +extern const ru_field_rec QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_RESERVED1_FIELD; +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_RESERVED1_FIELD_MASK 0xfffc0000 +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_RESERVED1_FIELD_WIDTH 14 +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_RESERVED1_FIELD_SHIFT 18 + +extern const ru_field_rec QM_FPM_POOLS_THR_FPM_LOWER_THR_FIELD; +#define QM_FPM_POOLS_THR_FPM_LOWER_THR_FIELD_MASK 0x0000007f +#define QM_FPM_POOLS_THR_FPM_LOWER_THR_FIELD_WIDTH 7 +#define QM_FPM_POOLS_THR_FPM_LOWER_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_POOLS_THR_RESERVED0_FIELD; +#define QM_FPM_POOLS_THR_RESERVED0_FIELD_MASK 0x00000080 +#define QM_FPM_POOLS_THR_RESERVED0_FIELD_WIDTH 1 +#define QM_FPM_POOLS_THR_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec QM_FPM_POOLS_THR_FPM_HIGHER_THR_FIELD; +#define QM_FPM_POOLS_THR_FPM_HIGHER_THR_FIELD_MASK 0x00007f00 +#define QM_FPM_POOLS_THR_FPM_HIGHER_THR_FIELD_WIDTH 7 +#define QM_FPM_POOLS_THR_FPM_HIGHER_THR_FIELD_SHIFT 8 + +extern const ru_field_rec QM_FPM_POOLS_THR_RESERVED1_FIELD; +#define QM_FPM_POOLS_THR_RESERVED1_FIELD_MASK 0xffff8000 +#define QM_FPM_POOLS_THR_RESERVED1_FIELD_WIDTH 17 +#define QM_FPM_POOLS_THR_RESERVED1_FIELD_SHIFT 15 + +extern const ru_field_rec QM_FPM_USR_GRP_LOWER_THR_FPM_GRP_LOWER_THR_FIELD; +#define QM_FPM_USR_GRP_LOWER_THR_FPM_GRP_LOWER_THR_FIELD_MASK 0x0000ffff +#define QM_FPM_USR_GRP_LOWER_THR_FPM_GRP_LOWER_THR_FIELD_WIDTH 16 +#define QM_FPM_USR_GRP_LOWER_THR_FPM_GRP_LOWER_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_USR_GRP_LOWER_THR_RESERVED0_FIELD; +#define QM_FPM_USR_GRP_LOWER_THR_RESERVED0_FIELD_MASK 0xffff0000 +#define QM_FPM_USR_GRP_LOWER_THR_RESERVED0_FIELD_WIDTH 16 +#define QM_FPM_USR_GRP_LOWER_THR_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec QM_FPM_USR_GRP_MID_THR_FPM_GRP_MID_THR_FIELD; +#define QM_FPM_USR_GRP_MID_THR_FPM_GRP_MID_THR_FIELD_MASK 0x0000ffff +#define QM_FPM_USR_GRP_MID_THR_FPM_GRP_MID_THR_FIELD_WIDTH 16 +#define QM_FPM_USR_GRP_MID_THR_FPM_GRP_MID_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_USR_GRP_MID_THR_RESERVED0_FIELD; +#define QM_FPM_USR_GRP_MID_THR_RESERVED0_FIELD_MASK 0xffff0000 +#define QM_FPM_USR_GRP_MID_THR_RESERVED0_FIELD_WIDTH 16 +#define QM_FPM_USR_GRP_MID_THR_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec QM_FPM_USR_GRP_HIGHER_THR_FPM_GRP_HIGHER_THR_FIELD; +#define QM_FPM_USR_GRP_HIGHER_THR_FPM_GRP_HIGHER_THR_FIELD_MASK 0x0000ffff +#define QM_FPM_USR_GRP_HIGHER_THR_FPM_GRP_HIGHER_THR_FIELD_WIDTH 16 +#define QM_FPM_USR_GRP_HIGHER_THR_FPM_GRP_HIGHER_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_USR_GRP_HIGHER_THR_RESERVED0_FIELD; +#define QM_FPM_USR_GRP_HIGHER_THR_RESERVED0_FIELD_MASK 0xffff0000 +#define QM_FPM_USR_GRP_HIGHER_THR_RESERVED0_FIELD_WIDTH 16 +#define QM_FPM_USR_GRP_HIGHER_THR_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec QM_FPM_USR_GRP_CNT_FPM_UG_CNT_FIELD; +#define QM_FPM_USR_GRP_CNT_FPM_UG_CNT_FIELD_MASK 0x0000ffff +#define QM_FPM_USR_GRP_CNT_FPM_UG_CNT_FIELD_WIDTH 16 +#define QM_FPM_USR_GRP_CNT_FPM_UG_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_USR_GRP_CNT_RESERVED0_FIELD; +#define QM_FPM_USR_GRP_CNT_RESERVED0_FIELD_MASK 0xffff0000 +#define QM_FPM_USR_GRP_CNT_RESERVED0_FIELD_WIDTH 16 +#define QM_FPM_USR_GRP_CNT_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec QM_RUNNER_GRP_RNR_CONFIG_RNR_BB_ID_FIELD; +#define QM_RUNNER_GRP_RNR_CONFIG_RNR_BB_ID_FIELD_MASK 0x0000003f +#define QM_RUNNER_GRP_RNR_CONFIG_RNR_BB_ID_FIELD_WIDTH 6 +#define QM_RUNNER_GRP_RNR_CONFIG_RNR_BB_ID_FIELD_SHIFT 0 + +extern const ru_field_rec QM_RUNNER_GRP_RNR_CONFIG_RESERVED0_FIELD; +#define QM_RUNNER_GRP_RNR_CONFIG_RESERVED0_FIELD_MASK 0x000000c0 +#define QM_RUNNER_GRP_RNR_CONFIG_RESERVED0_FIELD_WIDTH 2 +#define QM_RUNNER_GRP_RNR_CONFIG_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec QM_RUNNER_GRP_RNR_CONFIG_RNR_TASK_FIELD; +#define QM_RUNNER_GRP_RNR_CONFIG_RNR_TASK_FIELD_MASK 0x00000f00 +#define QM_RUNNER_GRP_RNR_CONFIG_RNR_TASK_FIELD_WIDTH 4 +#define QM_RUNNER_GRP_RNR_CONFIG_RNR_TASK_FIELD_SHIFT 8 + +extern const ru_field_rec QM_RUNNER_GRP_RNR_CONFIG_RESERVED1_FIELD; +#define QM_RUNNER_GRP_RNR_CONFIG_RESERVED1_FIELD_MASK 0x0000f000 +#define QM_RUNNER_GRP_RNR_CONFIG_RESERVED1_FIELD_WIDTH 4 +#define QM_RUNNER_GRP_RNR_CONFIG_RESERVED1_FIELD_SHIFT 12 + +extern const ru_field_rec QM_RUNNER_GRP_RNR_CONFIG_RNR_ENABLE_FIELD; +#define QM_RUNNER_GRP_RNR_CONFIG_RNR_ENABLE_FIELD_MASK 0x00010000 +#define QM_RUNNER_GRP_RNR_CONFIG_RNR_ENABLE_FIELD_WIDTH 1 +#define QM_RUNNER_GRP_RNR_CONFIG_RNR_ENABLE_FIELD_SHIFT 16 + +extern const ru_field_rec QM_RUNNER_GRP_RNR_CONFIG_RESERVED2_FIELD; +#define QM_RUNNER_GRP_RNR_CONFIG_RESERVED2_FIELD_MASK 0xfffe0000 +#define QM_RUNNER_GRP_RNR_CONFIG_RESERVED2_FIELD_WIDTH 15 +#define QM_RUNNER_GRP_RNR_CONFIG_RESERVED2_FIELD_SHIFT 17 + +extern const ru_field_rec QM_RUNNER_GRP_QUEUE_CONFIG_START_QUEUE_FIELD; +#define QM_RUNNER_GRP_QUEUE_CONFIG_START_QUEUE_FIELD_MASK 0x000001ff +#define QM_RUNNER_GRP_QUEUE_CONFIG_START_QUEUE_FIELD_WIDTH 9 +#define QM_RUNNER_GRP_QUEUE_CONFIG_START_QUEUE_FIELD_SHIFT 0 + +extern const ru_field_rec QM_RUNNER_GRP_QUEUE_CONFIG_RESERVED0_FIELD; +#define QM_RUNNER_GRP_QUEUE_CONFIG_RESERVED0_FIELD_MASK 0x0000fe00 +#define QM_RUNNER_GRP_QUEUE_CONFIG_RESERVED0_FIELD_WIDTH 7 +#define QM_RUNNER_GRP_QUEUE_CONFIG_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec QM_RUNNER_GRP_QUEUE_CONFIG_END_QUEUE_FIELD; +#define QM_RUNNER_GRP_QUEUE_CONFIG_END_QUEUE_FIELD_MASK 0x01ff0000 +#define QM_RUNNER_GRP_QUEUE_CONFIG_END_QUEUE_FIELD_WIDTH 9 +#define QM_RUNNER_GRP_QUEUE_CONFIG_END_QUEUE_FIELD_SHIFT 16 + +extern const ru_field_rec QM_RUNNER_GRP_QUEUE_CONFIG_RESERVED1_FIELD; +#define QM_RUNNER_GRP_QUEUE_CONFIG_RESERVED1_FIELD_MASK 0xfe000000 +#define QM_RUNNER_GRP_QUEUE_CONFIG_RESERVED1_FIELD_WIDTH 7 +#define QM_RUNNER_GRP_QUEUE_CONFIG_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED0_FIELD; +#define QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED0_FIELD_MASK 0x00000007 +#define QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED0_FIELD_WIDTH 3 +#define QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED0_FIELD_SHIFT 0 + +extern const ru_field_rec QM_RUNNER_GRP_PDFIFO_CONFIG_BASE_ADDR_FIELD; +#define QM_RUNNER_GRP_PDFIFO_CONFIG_BASE_ADDR_FIELD_MASK 0x00003ff8 +#define QM_RUNNER_GRP_PDFIFO_CONFIG_BASE_ADDR_FIELD_WIDTH 11 +#define QM_RUNNER_GRP_PDFIFO_CONFIG_BASE_ADDR_FIELD_SHIFT 3 + +extern const ru_field_rec QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED1_FIELD; +#define QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED1_FIELD_MASK 0x0000c000 +#define QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED1_FIELD_WIDTH 2 +#define QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec QM_RUNNER_GRP_PDFIFO_CONFIG_SIZE_FIELD; +#define QM_RUNNER_GRP_PDFIFO_CONFIG_SIZE_FIELD_MASK 0x00030000 +#define QM_RUNNER_GRP_PDFIFO_CONFIG_SIZE_FIELD_WIDTH 2 +#define QM_RUNNER_GRP_PDFIFO_CONFIG_SIZE_FIELD_SHIFT 16 + +extern const ru_field_rec QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED2_FIELD; +#define QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED2_FIELD_MASK 0xfffc0000 +#define QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED2_FIELD_WIDTH 14 +#define QM_RUNNER_GRP_PDFIFO_CONFIG_RESERVED2_FIELD_SHIFT 18 + +extern const ru_field_rec QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED0_FIELD; +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED0_FIELD_MASK 0x00000007 +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED0_FIELD_WIDTH 3 +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED0_FIELD_SHIFT 0 + +extern const ru_field_rec QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_BASE_ADDR_FIELD; +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_BASE_ADDR_FIELD_MASK 0x00003ff8 +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_BASE_ADDR_FIELD_WIDTH 11 +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_BASE_ADDR_FIELD_SHIFT 3 + +extern const ru_field_rec QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED1_FIELD; +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED1_FIELD_MASK 0x0000c000 +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED1_FIELD_WIDTH 2 +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_SIZE_FIELD; +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_SIZE_FIELD_MASK 0x00070000 +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_SIZE_FIELD_WIDTH 3 +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_SIZE_FIELD_SHIFT 16 + +extern const ru_field_rec QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED2_FIELD; +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED2_FIELD_MASK 0xfff80000 +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED2_FIELD_WIDTH 13 +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_RESERVED2_FIELD_SHIFT 19 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_DQM_POP_ON_EMPTY_FIELD; +#define QM_INTR_CTRL_ISR_QM_DQM_POP_ON_EMPTY_FIELD_MASK 0x00000001 +#define QM_INTR_CTRL_ISR_QM_DQM_POP_ON_EMPTY_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_DQM_POP_ON_EMPTY_FIELD_SHIFT 0 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_DQM_PUSH_ON_FULL_FIELD; +#define QM_INTR_CTRL_ISR_QM_DQM_PUSH_ON_FULL_FIELD_MASK 0x00000002 +#define QM_INTR_CTRL_ISR_QM_DQM_PUSH_ON_FULL_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_DQM_PUSH_ON_FULL_FIELD_SHIFT 1 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_CPU_POP_ON_EMPTY_FIELD; +#define QM_INTR_CTRL_ISR_QM_CPU_POP_ON_EMPTY_FIELD_MASK 0x00000004 +#define QM_INTR_CTRL_ISR_QM_CPU_POP_ON_EMPTY_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_CPU_POP_ON_EMPTY_FIELD_SHIFT 2 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_CPU_PUSH_ON_FULL_FIELD; +#define QM_INTR_CTRL_ISR_QM_CPU_PUSH_ON_FULL_FIELD_MASK 0x00000008 +#define QM_INTR_CTRL_ISR_QM_CPU_PUSH_ON_FULL_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_CPU_PUSH_ON_FULL_FIELD_SHIFT 3 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_NORMAL_QUEUE_PD_NO_CREDIT_FIELD; +#define QM_INTR_CTRL_ISR_QM_NORMAL_QUEUE_PD_NO_CREDIT_FIELD_MASK 0x00000010 +#define QM_INTR_CTRL_ISR_QM_NORMAL_QUEUE_PD_NO_CREDIT_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_NORMAL_QUEUE_PD_NO_CREDIT_FIELD_SHIFT 4 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_NON_DELAYED_QUEUE_PD_NO_CREDIT_FIELD; +#define QM_INTR_CTRL_ISR_QM_NON_DELAYED_QUEUE_PD_NO_CREDIT_FIELD_MASK 0x00000020 +#define QM_INTR_CTRL_ISR_QM_NON_DELAYED_QUEUE_PD_NO_CREDIT_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_NON_DELAYED_QUEUE_PD_NO_CREDIT_FIELD_SHIFT 5 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_NON_VALID_QUEUE_FIELD; +#define QM_INTR_CTRL_ISR_QM_NON_VALID_QUEUE_FIELD_MASK 0x00000040 +#define QM_INTR_CTRL_ISR_QM_NON_VALID_QUEUE_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_NON_VALID_QUEUE_FIELD_SHIFT 6 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_AGG_COHERENT_INCONSISTENCY_FIELD; +#define QM_INTR_CTRL_ISR_QM_AGG_COHERENT_INCONSISTENCY_FIELD_MASK 0x00000080 +#define QM_INTR_CTRL_ISR_QM_AGG_COHERENT_INCONSISTENCY_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_AGG_COHERENT_INCONSISTENCY_FIELD_SHIFT 7 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_FORCE_COPY_ON_NON_DELAYED_FIELD; +#define QM_INTR_CTRL_ISR_QM_FORCE_COPY_ON_NON_DELAYED_FIELD_MASK 0x00000100 +#define QM_INTR_CTRL_ISR_QM_FORCE_COPY_ON_NON_DELAYED_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_FORCE_COPY_ON_NON_DELAYED_FIELD_SHIFT 8 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_FPM_POOL_SIZE_NONEXISTENT_FIELD; +#define QM_INTR_CTRL_ISR_QM_FPM_POOL_SIZE_NONEXISTENT_FIELD_MASK 0x00000200 +#define QM_INTR_CTRL_ISR_QM_FPM_POOL_SIZE_NONEXISTENT_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_FPM_POOL_SIZE_NONEXISTENT_FIELD_SHIFT 9 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_TARGET_MEM_ABS_CONTRADICTION_FIELD; +#define QM_INTR_CTRL_ISR_QM_TARGET_MEM_ABS_CONTRADICTION_FIELD_MASK 0x00000400 +#define QM_INTR_CTRL_ISR_QM_TARGET_MEM_ABS_CONTRADICTION_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_TARGET_MEM_ABS_CONTRADICTION_FIELD_SHIFT 10 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_1588_DROP_FIELD; +#define QM_INTR_CTRL_ISR_QM_1588_DROP_FIELD_MASK 0x00000800 +#define QM_INTR_CTRL_ISR_QM_1588_DROP_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_1588_DROP_FIELD_SHIFT 11 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_1588_MULTICAST_CONTRADICTION_FIELD; +#define QM_INTR_CTRL_ISR_QM_1588_MULTICAST_CONTRADICTION_FIELD_MASK 0x00001000 +#define QM_INTR_CTRL_ISR_QM_1588_MULTICAST_CONTRADICTION_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_1588_MULTICAST_CONTRADICTION_FIELD_SHIFT 12 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_BYTE_DROP_CNT_OVERRUN_FIELD; +#define QM_INTR_CTRL_ISR_QM_BYTE_DROP_CNT_OVERRUN_FIELD_MASK 0x00002000 +#define QM_INTR_CTRL_ISR_QM_BYTE_DROP_CNT_OVERRUN_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_BYTE_DROP_CNT_OVERRUN_FIELD_SHIFT 13 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_PKT_DROP_CNT_OVERRUN_FIELD; +#define QM_INTR_CTRL_ISR_QM_PKT_DROP_CNT_OVERRUN_FIELD_MASK 0x00004000 +#define QM_INTR_CTRL_ISR_QM_PKT_DROP_CNT_OVERRUN_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_PKT_DROP_CNT_OVERRUN_FIELD_SHIFT 14 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_TOTAL_BYTE_CNT_UNDERRUN_FIELD; +#define QM_INTR_CTRL_ISR_QM_TOTAL_BYTE_CNT_UNDERRUN_FIELD_MASK 0x00008000 +#define QM_INTR_CTRL_ISR_QM_TOTAL_BYTE_CNT_UNDERRUN_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_TOTAL_BYTE_CNT_UNDERRUN_FIELD_SHIFT 15 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_TOTAL_PKT_CNT_UNDERRUN_FIELD; +#define QM_INTR_CTRL_ISR_QM_TOTAL_PKT_CNT_UNDERRUN_FIELD_MASK 0x00010000 +#define QM_INTR_CTRL_ISR_QM_TOTAL_PKT_CNT_UNDERRUN_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_TOTAL_PKT_CNT_UNDERRUN_FIELD_SHIFT 16 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_FPM_UG0_UNDERRUN_FIELD; +#define QM_INTR_CTRL_ISR_QM_FPM_UG0_UNDERRUN_FIELD_MASK 0x00020000 +#define QM_INTR_CTRL_ISR_QM_FPM_UG0_UNDERRUN_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_FPM_UG0_UNDERRUN_FIELD_SHIFT 17 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_FPM_UG1_UNDERRUN_FIELD; +#define QM_INTR_CTRL_ISR_QM_FPM_UG1_UNDERRUN_FIELD_MASK 0x00040000 +#define QM_INTR_CTRL_ISR_QM_FPM_UG1_UNDERRUN_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_FPM_UG1_UNDERRUN_FIELD_SHIFT 18 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_FPM_UG2_UNDERRUN_FIELD; +#define QM_INTR_CTRL_ISR_QM_FPM_UG2_UNDERRUN_FIELD_MASK 0x00080000 +#define QM_INTR_CTRL_ISR_QM_FPM_UG2_UNDERRUN_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_FPM_UG2_UNDERRUN_FIELD_SHIFT 19 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_FPM_UG3_UNDERRUN_FIELD; +#define QM_INTR_CTRL_ISR_QM_FPM_UG3_UNDERRUN_FIELD_MASK 0x00100000 +#define QM_INTR_CTRL_ISR_QM_FPM_UG3_UNDERRUN_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_FPM_UG3_UNDERRUN_FIELD_SHIFT 20 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_TIMER_WRAPAROUND_FIELD; +#define QM_INTR_CTRL_ISR_QM_TIMER_WRAPAROUND_FIELD_MASK 0x00200000 +#define QM_INTR_CTRL_ISR_QM_TIMER_WRAPAROUND_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_TIMER_WRAPAROUND_FIELD_SHIFT 21 + +extern const ru_field_rec QM_INTR_CTRL_ISR_QM_COPY_PLEN_ZERO_FIELD; +#define QM_INTR_CTRL_ISR_QM_COPY_PLEN_ZERO_FIELD_MASK 0x00400000 +#define QM_INTR_CTRL_ISR_QM_COPY_PLEN_ZERO_FIELD_WIDTH 1 +#define QM_INTR_CTRL_ISR_QM_COPY_PLEN_ZERO_FIELD_SHIFT 22 + +extern const ru_field_rec QM_INTR_CTRL_ISR_RESERVED0_FIELD; +#define QM_INTR_CTRL_ISR_RESERVED0_FIELD_MASK 0xff800000 +#define QM_INTR_CTRL_ISR_RESERVED0_FIELD_WIDTH 9 +#define QM_INTR_CTRL_ISR_RESERVED0_FIELD_SHIFT 23 + +extern const ru_field_rec QM_INTR_CTRL_ISM_ISM_FIELD; +#define QM_INTR_CTRL_ISM_ISM_FIELD_MASK 0x007fffff +#define QM_INTR_CTRL_ISM_ISM_FIELD_WIDTH 23 +#define QM_INTR_CTRL_ISM_ISM_FIELD_SHIFT 0 + +extern const ru_field_rec QM_INTR_CTRL_ISM_RESERVED0_FIELD; +#define QM_INTR_CTRL_ISM_RESERVED0_FIELD_MASK 0xff800000 +#define QM_INTR_CTRL_ISM_RESERVED0_FIELD_WIDTH 9 +#define QM_INTR_CTRL_ISM_RESERVED0_FIELD_SHIFT 23 + +extern const ru_field_rec QM_INTR_CTRL_IER_IEM_FIELD; +#define QM_INTR_CTRL_IER_IEM_FIELD_MASK 0x007fffff +#define QM_INTR_CTRL_IER_IEM_FIELD_WIDTH 23 +#define QM_INTR_CTRL_IER_IEM_FIELD_SHIFT 0 + +extern const ru_field_rec QM_INTR_CTRL_IER_RESERVED0_FIELD; +#define QM_INTR_CTRL_IER_RESERVED0_FIELD_MASK 0xff800000 +#define QM_INTR_CTRL_IER_RESERVED0_FIELD_WIDTH 9 +#define QM_INTR_CTRL_IER_RESERVED0_FIELD_SHIFT 23 + +extern const ru_field_rec QM_INTR_CTRL_ITR_IST_FIELD; +#define QM_INTR_CTRL_ITR_IST_FIELD_MASK 0x007fffff +#define QM_INTR_CTRL_ITR_IST_FIELD_WIDTH 23 +#define QM_INTR_CTRL_ITR_IST_FIELD_SHIFT 0 + +extern const ru_field_rec QM_INTR_CTRL_ITR_RESERVED0_FIELD; +#define QM_INTR_CTRL_ITR_RESERVED0_FIELD_MASK 0xff800000 +#define QM_INTR_CTRL_ITR_RESERVED0_FIELD_WIDTH 9 +#define QM_INTR_CTRL_ITR_RESERVED0_FIELD_SHIFT 23 + +extern const ru_field_rec QM_CLK_GATE_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD; +#define QM_CLK_GATE_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_MASK 0x00000001 +#define QM_CLK_GATE_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_WIDTH 1 +#define QM_CLK_GATE_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED0_FIELD; +#define QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED0_FIELD_MASK 0x000000fe +#define QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED0_FIELD_WIDTH 7 +#define QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec QM_CLK_GATE_CLK_GATE_CNTRL_TIMER_VAL_FIELD; +#define QM_CLK_GATE_CLK_GATE_CNTRL_TIMER_VAL_FIELD_MASK 0x0000ff00 +#define QM_CLK_GATE_CLK_GATE_CNTRL_TIMER_VAL_FIELD_WIDTH 8 +#define QM_CLK_GATE_CLK_GATE_CNTRL_TIMER_VAL_FIELD_SHIFT 8 + +extern const ru_field_rec QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD; +#define QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_MASK 0x00010000 +#define QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_WIDTH 1 +#define QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED1_FIELD; +#define QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED1_FIELD_MASK 0x000e0000 +#define QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED1_FIELD_WIDTH 3 +#define QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD; +#define QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_MASK 0x00700000 +#define QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_WIDTH 3 +#define QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_SHIFT 20 + +extern const ru_field_rec QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED2_FIELD; +#define QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED2_FIELD_MASK 0x00800000 +#define QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED2_FIELD_WIDTH 1 +#define QM_CLK_GATE_CLK_GATE_CNTRL_RESERVED2_FIELD_SHIFT 23 + +extern const ru_field_rec QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD; +#define QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_MASK 0xff000000 +#define QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_WIDTH 8 +#define QM_CLK_GATE_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_SHIFT 24 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_QUEUE_NUM_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_QUEUE_NUM_FIELD_MASK 0x000001ff +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_QUEUE_NUM_FIELD_WIDTH 9 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_QUEUE_NUM_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED0_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED0_FIELD_MASK 0x0000fe00 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED0_FIELD_WIDTH 7 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_CMD_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_CMD_FIELD_MASK 0x00030000 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_CMD_FIELD_WIDTH 2 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_CMD_FIELD_SHIFT 16 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED1_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED1_FIELD_MASK 0x00fc0000 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED1_FIELD_WIDTH 6 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED1_FIELD_SHIFT 18 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_DONE_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_DONE_FIELD_MASK 0x01000000 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_DONE_FIELD_WIDTH 1 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_DONE_FIELD_SHIFT 24 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_ERROR_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_ERROR_FIELD_MASK 0x02000000 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_ERROR_FIELD_WIDTH 1 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_ERROR_FIELD_SHIFT 25 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED2_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED2_FIELD_MASK 0xfc000000 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED2_FIELD_WIDTH 6 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_RESERVED2_FIELD_SHIFT 26 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_0_DATA_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_0_DATA_FIELD_MASK 0xffffffff +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_0_DATA_FIELD_WIDTH 32 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_0_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_1_DATA_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_1_DATA_FIELD_MASK 0xffffffff +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_1_DATA_FIELD_WIDTH 32 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_1_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_2_DATA_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_2_DATA_FIELD_MASK 0xffffffff +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_2_DATA_FIELD_WIDTH 32 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_2_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_3_DATA_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_3_DATA_FIELD_MASK 0xffffffff +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_3_DATA_FIELD_WIDTH 32 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_3_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_0_DATA_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_0_DATA_FIELD_MASK 0xffffffff +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_0_DATA_FIELD_WIDTH 32 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_0_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_1_DATA_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_1_DATA_FIELD_MASK 0xffffffff +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_1_DATA_FIELD_WIDTH 32 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_1_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_2_DATA_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_2_DATA_FIELD_MASK 0xffffffff +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_2_DATA_FIELD_WIDTH 32 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_2_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_3_DATA_FIELD; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_3_DATA_FIELD_MASK 0xffffffff +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_3_DATA_FIELD_WIDTH 32 +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_3_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_WRED_PROFILE_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_WRED_PROFILE_FIELD_MASK 0x0000000f +#define QM_QUEUE_CONTEXT_CONTEXT_WRED_PROFILE_FIELD_WIDTH 4 +#define QM_QUEUE_CONTEXT_CONTEXT_WRED_PROFILE_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_COPY_DEC_PROFILE_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_COPY_DEC_PROFILE_FIELD_MASK 0x00000070 +#define QM_QUEUE_CONTEXT_CONTEXT_COPY_DEC_PROFILE_FIELD_WIDTH 3 +#define QM_QUEUE_CONTEXT_CONTEXT_COPY_DEC_PROFILE_FIELD_SHIFT 4 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_COPY_TO_DDR_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_COPY_TO_DDR_FIELD_MASK 0x00000080 +#define QM_QUEUE_CONTEXT_CONTEXT_COPY_TO_DDR_FIELD_WIDTH 1 +#define QM_QUEUE_CONTEXT_CONTEXT_COPY_TO_DDR_FIELD_SHIFT 7 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_DDR_COPY_DISABLE_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_DDR_COPY_DISABLE_FIELD_MASK 0x00000100 +#define QM_QUEUE_CONTEXT_CONTEXT_DDR_COPY_DISABLE_FIELD_WIDTH 1 +#define QM_QUEUE_CONTEXT_CONTEXT_DDR_COPY_DISABLE_FIELD_SHIFT 8 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_AGGREGATION_DISABLE_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_AGGREGATION_DISABLE_FIELD_MASK 0x00000200 +#define QM_QUEUE_CONTEXT_CONTEXT_AGGREGATION_DISABLE_FIELD_WIDTH 1 +#define QM_QUEUE_CONTEXT_CONTEXT_AGGREGATION_DISABLE_FIELD_SHIFT 9 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_FPM_UG_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_FPM_UG_FIELD_MASK 0x00001c00 +#define QM_QUEUE_CONTEXT_CONTEXT_FPM_UG_FIELD_WIDTH 3 +#define QM_QUEUE_CONTEXT_CONTEXT_FPM_UG_FIELD_SHIFT 10 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_EXCLUSIVE_PRIORITY_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_EXCLUSIVE_PRIORITY_FIELD_MASK 0x00002000 +#define QM_QUEUE_CONTEXT_CONTEXT_EXCLUSIVE_PRIORITY_FIELD_WIDTH 1 +#define QM_QUEUE_CONTEXT_CONTEXT_EXCLUSIVE_PRIORITY_FIELD_SHIFT 13 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_Q_802_1AE_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_Q_802_1AE_FIELD_MASK 0x00004000 +#define QM_QUEUE_CONTEXT_CONTEXT_Q_802_1AE_FIELD_WIDTH 1 +#define QM_QUEUE_CONTEXT_CONTEXT_Q_802_1AE_FIELD_SHIFT 14 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_SCI_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_SCI_FIELD_MASK 0x00008000 +#define QM_QUEUE_CONTEXT_CONTEXT_SCI_FIELD_WIDTH 1 +#define QM_QUEUE_CONTEXT_CONTEXT_SCI_FIELD_SHIFT 15 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_FEC_ENABLE_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_FEC_ENABLE_FIELD_MASK 0x00010000 +#define QM_QUEUE_CONTEXT_CONTEXT_FEC_ENABLE_FIELD_WIDTH 1 +#define QM_QUEUE_CONTEXT_CONTEXT_FEC_ENABLE_FIELD_SHIFT 16 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_RES_PROFILE_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_RES_PROFILE_FIELD_MASK 0x000e0000 +#define QM_QUEUE_CONTEXT_CONTEXT_RES_PROFILE_FIELD_WIDTH 3 +#define QM_QUEUE_CONTEXT_CONTEXT_RES_PROFILE_FIELD_SHIFT 17 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_SPARE_ROOM_0_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_SPARE_ROOM_0_FIELD_MASK 0x00300000 +#define QM_QUEUE_CONTEXT_CONTEXT_SPARE_ROOM_0_FIELD_WIDTH 2 +#define QM_QUEUE_CONTEXT_CONTEXT_SPARE_ROOM_0_FIELD_SHIFT 20 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_SPARE_ROOM_1_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_SPARE_ROOM_1_FIELD_MASK 0x00c00000 +#define QM_QUEUE_CONTEXT_CONTEXT_SPARE_ROOM_1_FIELD_WIDTH 2 +#define QM_QUEUE_CONTEXT_CONTEXT_SPARE_ROOM_1_FIELD_SHIFT 22 + +extern const ru_field_rec QM_QUEUE_CONTEXT_CONTEXT_RESERVED0_FIELD; +#define QM_QUEUE_CONTEXT_CONTEXT_RESERVED0_FIELD_MASK 0xff000000 +#define QM_QUEUE_CONTEXT_CONTEXT_RESERVED0_FIELD_WIDTH 8 +#define QM_QUEUE_CONTEXT_CONTEXT_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_MIN_THR_0_MIN_THR_FIELD; +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_MIN_THR_FIELD_MASK 0x00ffffff +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_MIN_THR_FIELD_WIDTH 24 +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_MIN_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_MIN_THR_0_FLW_CTRL_EN_FIELD; +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_FLW_CTRL_EN_FIELD_MASK 0x01000000 +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_FLW_CTRL_EN_FIELD_WIDTH 1 +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_FLW_CTRL_EN_FIELD_SHIFT 24 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_MIN_THR_0_RESERVED0_FIELD; +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_RESERVED0_FIELD_MASK 0xfe000000 +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_RESERVED0_FIELD_WIDTH 7 +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_RESERVED0_FIELD_SHIFT 25 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_MIN_THR_1_MIN_THR_FIELD; +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_MIN_THR_FIELD_MASK 0x00ffffff +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_MIN_THR_FIELD_WIDTH 24 +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_MIN_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_MIN_THR_1_FLW_CTRL_EN_FIELD; +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_FLW_CTRL_EN_FIELD_MASK 0x01000000 +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_FLW_CTRL_EN_FIELD_WIDTH 1 +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_FLW_CTRL_EN_FIELD_SHIFT 24 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_MIN_THR_1_RESERVED0_FIELD; +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_RESERVED0_FIELD_MASK 0xfe000000 +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_RESERVED0_FIELD_WIDTH 7 +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_RESERVED0_FIELD_SHIFT 25 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_MAX_THR_0_MAX_THR_FIELD; +#define QM_WRED_PROFILE_COLOR_MAX_THR_0_MAX_THR_FIELD_MASK 0x00ffffff +#define QM_WRED_PROFILE_COLOR_MAX_THR_0_MAX_THR_FIELD_WIDTH 24 +#define QM_WRED_PROFILE_COLOR_MAX_THR_0_MAX_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_MAX_THR_0_RESERVED0_FIELD; +#define QM_WRED_PROFILE_COLOR_MAX_THR_0_RESERVED0_FIELD_MASK 0xff000000 +#define QM_WRED_PROFILE_COLOR_MAX_THR_0_RESERVED0_FIELD_WIDTH 8 +#define QM_WRED_PROFILE_COLOR_MAX_THR_0_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_MAX_THR_1_MAX_THR_FIELD; +#define QM_WRED_PROFILE_COLOR_MAX_THR_1_MAX_THR_FIELD_MASK 0x00ffffff +#define QM_WRED_PROFILE_COLOR_MAX_THR_1_MAX_THR_FIELD_WIDTH 24 +#define QM_WRED_PROFILE_COLOR_MAX_THR_1_MAX_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_MAX_THR_1_RESERVED0_FIELD; +#define QM_WRED_PROFILE_COLOR_MAX_THR_1_RESERVED0_FIELD_MASK 0xff000000 +#define QM_WRED_PROFILE_COLOR_MAX_THR_1_RESERVED0_FIELD_WIDTH 8 +#define QM_WRED_PROFILE_COLOR_MAX_THR_1_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_SLOPE_0_SLOPE_MANTISSA_FIELD; +#define QM_WRED_PROFILE_COLOR_SLOPE_0_SLOPE_MANTISSA_FIELD_MASK 0x000000ff +#define QM_WRED_PROFILE_COLOR_SLOPE_0_SLOPE_MANTISSA_FIELD_WIDTH 8 +#define QM_WRED_PROFILE_COLOR_SLOPE_0_SLOPE_MANTISSA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_SLOPE_0_SLOPE_EXP_FIELD; +#define QM_WRED_PROFILE_COLOR_SLOPE_0_SLOPE_EXP_FIELD_MASK 0x00001f00 +#define QM_WRED_PROFILE_COLOR_SLOPE_0_SLOPE_EXP_FIELD_WIDTH 5 +#define QM_WRED_PROFILE_COLOR_SLOPE_0_SLOPE_EXP_FIELD_SHIFT 8 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_SLOPE_0_RESERVED0_FIELD; +#define QM_WRED_PROFILE_COLOR_SLOPE_0_RESERVED0_FIELD_MASK 0xffffe000 +#define QM_WRED_PROFILE_COLOR_SLOPE_0_RESERVED0_FIELD_WIDTH 19 +#define QM_WRED_PROFILE_COLOR_SLOPE_0_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_SLOPE_1_SLOPE_MANTISSA_FIELD; +#define QM_WRED_PROFILE_COLOR_SLOPE_1_SLOPE_MANTISSA_FIELD_MASK 0x000000ff +#define QM_WRED_PROFILE_COLOR_SLOPE_1_SLOPE_MANTISSA_FIELD_WIDTH 8 +#define QM_WRED_PROFILE_COLOR_SLOPE_1_SLOPE_MANTISSA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_SLOPE_1_SLOPE_EXP_FIELD; +#define QM_WRED_PROFILE_COLOR_SLOPE_1_SLOPE_EXP_FIELD_MASK 0x00001f00 +#define QM_WRED_PROFILE_COLOR_SLOPE_1_SLOPE_EXP_FIELD_WIDTH 5 +#define QM_WRED_PROFILE_COLOR_SLOPE_1_SLOPE_EXP_FIELD_SHIFT 8 + +extern const ru_field_rec QM_WRED_PROFILE_COLOR_SLOPE_1_RESERVED0_FIELD; +#define QM_WRED_PROFILE_COLOR_SLOPE_1_RESERVED0_FIELD_MASK 0xffffe000 +#define QM_WRED_PROFILE_COLOR_SLOPE_1_RESERVED0_FIELD_WIDTH 19 +#define QM_WRED_PROFILE_COLOR_SLOPE_1_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec QM_COPY_DECISION_PROFILE_THR_QUEUE_OCCUPANCY_THR_FIELD; +#define QM_COPY_DECISION_PROFILE_THR_QUEUE_OCCUPANCY_THR_FIELD_MASK 0x3fffffff +#define QM_COPY_DECISION_PROFILE_THR_QUEUE_OCCUPANCY_THR_FIELD_WIDTH 30 +#define QM_COPY_DECISION_PROFILE_THR_QUEUE_OCCUPANCY_THR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_COPY_DECISION_PROFILE_THR_RESERVED0_FIELD; +#define QM_COPY_DECISION_PROFILE_THR_RESERVED0_FIELD_MASK 0x40000000 +#define QM_COPY_DECISION_PROFILE_THR_RESERVED0_FIELD_WIDTH 1 +#define QM_COPY_DECISION_PROFILE_THR_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec QM_COPY_DECISION_PROFILE_THR_PSRAM_THR_FIELD; +#define QM_COPY_DECISION_PROFILE_THR_PSRAM_THR_FIELD_MASK 0x80000000 +#define QM_COPY_DECISION_PROFILE_THR_PSRAM_THR_FIELD_WIDTH 1 +#define QM_COPY_DECISION_PROFILE_THR_PSRAM_THR_FIELD_SHIFT 31 + +extern const ru_field_rec QM_TOTAL_VALID_COUNTER_COUNTER_DATA_FIELD; +#define QM_TOTAL_VALID_COUNTER_COUNTER_DATA_FIELD_MASK 0xffffffff +#define QM_TOTAL_VALID_COUNTER_COUNTER_DATA_FIELD_WIDTH 32 +#define QM_TOTAL_VALID_COUNTER_COUNTER_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_DQM_VALID_COUNTER_COUNTER_DATA_FIELD; +#define QM_DQM_VALID_COUNTER_COUNTER_DATA_FIELD_MASK 0xffffffff +#define QM_DQM_VALID_COUNTER_COUNTER_DATA_FIELD_WIDTH 32 +#define QM_DQM_VALID_COUNTER_COUNTER_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_DROP_COUNTER_COUNTER_DATA_FIELD; +#define QM_DROP_COUNTER_COUNTER_DATA_FIELD_MASK 0xffffffff +#define QM_DROP_COUNTER_COUNTER_DATA_FIELD_WIDTH 32 +#define QM_DROP_COUNTER_COUNTER_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_EPON_RPT_CNT_COUNTER_DATA_FIELD; +#define QM_EPON_RPT_CNT_COUNTER_DATA_FIELD_MASK 0xffffffff +#define QM_EPON_RPT_CNT_COUNTER_DATA_FIELD_WIDTH 32 +#define QM_EPON_RPT_CNT_COUNTER_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_EPON_RPT_CNT_QUEUE_STATUS_STATUS_BIT_VECTOR_FIELD; +#define QM_EPON_RPT_CNT_QUEUE_STATUS_STATUS_BIT_VECTOR_FIELD_MASK 0xffffffff +#define QM_EPON_RPT_CNT_QUEUE_STATUS_STATUS_BIT_VECTOR_FIELD_WIDTH 32 +#define QM_EPON_RPT_CNT_QUEUE_STATUS_STATUS_BIT_VECTOR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_RD_DATA_POOL0_DATA_FIELD; +#define QM_RD_DATA_POOL0_DATA_FIELD_MASK 0xffffffff +#define QM_RD_DATA_POOL0_DATA_FIELD_WIDTH 32 +#define QM_RD_DATA_POOL0_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_RD_DATA_POOL1_DATA_FIELD; +#define QM_RD_DATA_POOL1_DATA_FIELD_MASK 0xffffffff +#define QM_RD_DATA_POOL1_DATA_FIELD_WIDTH 32 +#define QM_RD_DATA_POOL1_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_RD_DATA_POOL2_DATA_FIELD; +#define QM_RD_DATA_POOL2_DATA_FIELD_MASK 0xffffffff +#define QM_RD_DATA_POOL2_DATA_FIELD_WIDTH 32 +#define QM_RD_DATA_POOL2_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_RD_DATA_POOL3_DATA_FIELD; +#define QM_RD_DATA_POOL3_DATA_FIELD_MASK 0xffffffff +#define QM_RD_DATA_POOL3_DATA_FIELD_WIDTH 32 +#define QM_RD_DATA_POOL3_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_PDFIFO_PTR_WR_PTR_FIELD; +#define QM_PDFIFO_PTR_WR_PTR_FIELD_MASK 0x0000000f +#define QM_PDFIFO_PTR_WR_PTR_FIELD_WIDTH 4 +#define QM_PDFIFO_PTR_WR_PTR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_PDFIFO_PTR_RESERVED0_FIELD; +#define QM_PDFIFO_PTR_RESERVED0_FIELD_MASK 0x000000f0 +#define QM_PDFIFO_PTR_RESERVED0_FIELD_WIDTH 4 +#define QM_PDFIFO_PTR_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec QM_PDFIFO_PTR_RD_PTR_FIELD; +#define QM_PDFIFO_PTR_RD_PTR_FIELD_MASK 0x00000f00 +#define QM_PDFIFO_PTR_RD_PTR_FIELD_WIDTH 4 +#define QM_PDFIFO_PTR_RD_PTR_FIELD_SHIFT 8 + +extern const ru_field_rec QM_PDFIFO_PTR_RESERVED1_FIELD; +#define QM_PDFIFO_PTR_RESERVED1_FIELD_MASK 0xfffff000 +#define QM_PDFIFO_PTR_RESERVED1_FIELD_WIDTH 20 +#define QM_PDFIFO_PTR_RESERVED1_FIELD_SHIFT 12 + +extern const ru_field_rec QM_UPDATE_FIFO_PTR_WR_PTR_FIELD; +#define QM_UPDATE_FIFO_PTR_WR_PTR_FIELD_MASK 0x000001ff +#define QM_UPDATE_FIFO_PTR_WR_PTR_FIELD_WIDTH 9 +#define QM_UPDATE_FIFO_PTR_WR_PTR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_UPDATE_FIFO_PTR_RD_PTR_FIELD; +#define QM_UPDATE_FIFO_PTR_RD_PTR_FIELD_MASK 0x0000fe00 +#define QM_UPDATE_FIFO_PTR_RD_PTR_FIELD_WIDTH 7 +#define QM_UPDATE_FIFO_PTR_RD_PTR_FIELD_SHIFT 9 + +extern const ru_field_rec QM_UPDATE_FIFO_PTR_RESERVED0_FIELD; +#define QM_UPDATE_FIFO_PTR_RESERVED0_FIELD_MASK 0xffff0000 +#define QM_UPDATE_FIFO_PTR_RESERVED0_FIELD_WIDTH 16 +#define QM_UPDATE_FIFO_PTR_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec QM_RD_DATA_DATA_FIELD; +#define QM_RD_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_RD_DATA_DATA_FIELD_WIDTH 32 +#define QM_RD_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_POP_POP_FIELD; +#define QM_POP_POP_FIELD_MASK 0x00000001 +#define QM_POP_POP_FIELD_WIDTH 1 +#define QM_POP_POP_FIELD_SHIFT 0 + +extern const ru_field_rec QM_POP_RESERVED0_FIELD; +#define QM_POP_RESERVED0_FIELD_MASK 0xfffffffe +#define QM_POP_RESERVED0_FIELD_WIDTH 31 +#define QM_POP_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec QM_CM_COMMON_INPUT_FIFO_DATA_DATA_FIELD; +#define QM_CM_COMMON_INPUT_FIFO_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_CM_COMMON_INPUT_FIFO_DATA_DATA_FIELD_WIDTH 32 +#define QM_CM_COMMON_INPUT_FIFO_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_NORMAL_RMT_FIFO_DATA_DATA_FIELD; +#define QM_NORMAL_RMT_FIFO_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_NORMAL_RMT_FIFO_DATA_DATA_FIELD_WIDTH 32 +#define QM_NORMAL_RMT_FIFO_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_NON_DELAYED_RMT_FIFO_DATA_DATA_FIELD; +#define QM_NON_DELAYED_RMT_FIFO_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_NON_DELAYED_RMT_FIFO_DATA_DATA_FIELD_WIDTH 32 +#define QM_NON_DELAYED_RMT_FIFO_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_EGRESS_DATA_FIFO_DATA_DATA_FIELD; +#define QM_EGRESS_DATA_FIFO_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_EGRESS_DATA_FIFO_DATA_DATA_FIELD_WIDTH 32 +#define QM_EGRESS_DATA_FIFO_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_EGRESS_RR_FIFO_DATA_DATA_FIELD; +#define QM_EGRESS_RR_FIFO_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_EGRESS_RR_FIFO_DATA_DATA_FIELD_WIDTH 32 +#define QM_EGRESS_RR_FIFO_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_EGRESS_BB_INPUT_FIFO_DATA_DATA_FIELD; +#define QM_EGRESS_BB_INPUT_FIFO_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_EGRESS_BB_INPUT_FIFO_DATA_DATA_FIELD_WIDTH 32 +#define QM_EGRESS_BB_INPUT_FIFO_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_EGRESS_BB_OUTPUT_FIFO_DATA_DATA_FIELD; +#define QM_EGRESS_BB_OUTPUT_FIFO_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_EGRESS_BB_OUTPUT_FIFO_DATA_DATA_FIELD_WIDTH 32 +#define QM_EGRESS_BB_OUTPUT_FIFO_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_BB_OUTPUT_FIFO_DATA_DATA_FIELD; +#define QM_BB_OUTPUT_FIFO_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_BB_OUTPUT_FIFO_DATA_DATA_FIELD_WIDTH 32 +#define QM_BB_OUTPUT_FIFO_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_NON_DELAYED_OUT_FIFO_DATA_DATA_FIELD; +#define QM_NON_DELAYED_OUT_FIFO_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_NON_DELAYED_OUT_FIFO_DATA_DATA_FIELD_WIDTH 32 +#define QM_NON_DELAYED_OUT_FIFO_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CONTEXT_DATA_DATA_FIELD; +#define QM_CONTEXT_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_CONTEXT_DATA_DATA_FIELD_WIDTH 32 +#define QM_CONTEXT_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_BUFFER_RESERVATION_DATA_DATA_FIELD; +#define QM_FPM_BUFFER_RESERVATION_DATA_DATA_FIELD_MASK 0x0000ffff +#define QM_FPM_BUFFER_RESERVATION_DATA_DATA_FIELD_WIDTH 16 +#define QM_FPM_BUFFER_RESERVATION_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_BUFFER_RESERVATION_DATA_RESERVED0_FIELD; +#define QM_FPM_BUFFER_RESERVATION_DATA_RESERVED0_FIELD_MASK 0xffff0000 +#define QM_FPM_BUFFER_RESERVATION_DATA_RESERVED0_FIELD_WIDTH 16 +#define QM_FPM_BUFFER_RESERVATION_DATA_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec QM_UG_CTRL_FLOW_CTRL_UG0_EN_FIELD; +#define QM_UG_CTRL_FLOW_CTRL_UG0_EN_FIELD_MASK 0x00000001 +#define QM_UG_CTRL_FLOW_CTRL_UG0_EN_FIELD_WIDTH 1 +#define QM_UG_CTRL_FLOW_CTRL_UG0_EN_FIELD_SHIFT 0 + +extern const ru_field_rec QM_UG_CTRL_FLOW_CTRL_UG1_EN_FIELD; +#define QM_UG_CTRL_FLOW_CTRL_UG1_EN_FIELD_MASK 0x00000002 +#define QM_UG_CTRL_FLOW_CTRL_UG1_EN_FIELD_WIDTH 1 +#define QM_UG_CTRL_FLOW_CTRL_UG1_EN_FIELD_SHIFT 1 + +extern const ru_field_rec QM_UG_CTRL_FLOW_CTRL_UG2_EN_FIELD; +#define QM_UG_CTRL_FLOW_CTRL_UG2_EN_FIELD_MASK 0x00000004 +#define QM_UG_CTRL_FLOW_CTRL_UG2_EN_FIELD_WIDTH 1 +#define QM_UG_CTRL_FLOW_CTRL_UG2_EN_FIELD_SHIFT 2 + +extern const ru_field_rec QM_UG_CTRL_FLOW_CTRL_UG3_EN_FIELD; +#define QM_UG_CTRL_FLOW_CTRL_UG3_EN_FIELD_MASK 0x00000008 +#define QM_UG_CTRL_FLOW_CTRL_UG3_EN_FIELD_WIDTH 1 +#define QM_UG_CTRL_FLOW_CTRL_UG3_EN_FIELD_SHIFT 3 + +extern const ru_field_rec QM_UG_CTRL_RESERVED0_FIELD; +#define QM_UG_CTRL_RESERVED0_FIELD_MASK 0xfffffff0 +#define QM_UG_CTRL_RESERVED0_FIELD_WIDTH 28 +#define QM_UG_CTRL_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec QM_STATUS_UG0_FIELD; +#define QM_STATUS_UG0_FIELD_MASK 0x00000001 +#define QM_STATUS_UG0_FIELD_WIDTH 1 +#define QM_STATUS_UG0_FIELD_SHIFT 0 + +extern const ru_field_rec QM_STATUS_UG1_FIELD; +#define QM_STATUS_UG1_FIELD_MASK 0x00000002 +#define QM_STATUS_UG1_FIELD_WIDTH 1 +#define QM_STATUS_UG1_FIELD_SHIFT 1 + +extern const ru_field_rec QM_STATUS_UG2_FIELD; +#define QM_STATUS_UG2_FIELD_MASK 0x00000004 +#define QM_STATUS_UG2_FIELD_WIDTH 1 +#define QM_STATUS_UG2_FIELD_SHIFT 2 + +extern const ru_field_rec QM_STATUS_UG3_FIELD; +#define QM_STATUS_UG3_FIELD_MASK 0x00000008 +#define QM_STATUS_UG3_FIELD_WIDTH 1 +#define QM_STATUS_UG3_FIELD_SHIFT 3 + +extern const ru_field_rec QM_STATUS_WRED_FIELD; +#define QM_STATUS_WRED_FIELD_MASK 0x00000010 +#define QM_STATUS_WRED_FIELD_WIDTH 1 +#define QM_STATUS_WRED_FIELD_SHIFT 4 + +extern const ru_field_rec QM_STATUS_R0_FIELD; +#define QM_STATUS_R0_FIELD_MASK 0xffffffe0 +#define QM_STATUS_R0_FIELD_WIDTH 27 +#define QM_STATUS_R0_FIELD_SHIFT 5 + +extern const ru_field_rec QM_WRED_SOURCE_SRC_FIELD; +#define QM_WRED_SOURCE_SRC_FIELD_MASK 0xffffffff +#define QM_WRED_SOURCE_SRC_FIELD_WIDTH 32 +#define QM_WRED_SOURCE_SRC_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_FLOW_CTRL_RNR_CFG_RNR_BB_ID_FIELD; +#define QM_QM_FLOW_CTRL_RNR_CFG_RNR_BB_ID_FIELD_MASK 0x0000003f +#define QM_QM_FLOW_CTRL_RNR_CFG_RNR_BB_ID_FIELD_WIDTH 6 +#define QM_QM_FLOW_CTRL_RNR_CFG_RNR_BB_ID_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_FLOW_CTRL_RNR_CFG_RESERVED0_FIELD; +#define QM_QM_FLOW_CTRL_RNR_CFG_RESERVED0_FIELD_MASK 0x000000c0 +#define QM_QM_FLOW_CTRL_RNR_CFG_RESERVED0_FIELD_WIDTH 2 +#define QM_QM_FLOW_CTRL_RNR_CFG_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec QM_QM_FLOW_CTRL_RNR_CFG_RNR_TASK_FIELD; +#define QM_QM_FLOW_CTRL_RNR_CFG_RNR_TASK_FIELD_MASK 0x00000f00 +#define QM_QM_FLOW_CTRL_RNR_CFG_RNR_TASK_FIELD_WIDTH 4 +#define QM_QM_FLOW_CTRL_RNR_CFG_RNR_TASK_FIELD_SHIFT 8 + +extern const ru_field_rec QM_QM_FLOW_CTRL_RNR_CFG_RESERVED1_FIELD; +#define QM_QM_FLOW_CTRL_RNR_CFG_RESERVED1_FIELD_MASK 0x0000f000 +#define QM_QM_FLOW_CTRL_RNR_CFG_RESERVED1_FIELD_WIDTH 4 +#define QM_QM_FLOW_CTRL_RNR_CFG_RESERVED1_FIELD_SHIFT 12 + +extern const ru_field_rec QM_QM_FLOW_CTRL_RNR_CFG_RNR_ENABLE_FIELD; +#define QM_QM_FLOW_CTRL_RNR_CFG_RNR_ENABLE_FIELD_MASK 0x00010000 +#define QM_QM_FLOW_CTRL_RNR_CFG_RNR_ENABLE_FIELD_WIDTH 1 +#define QM_QM_FLOW_CTRL_RNR_CFG_RNR_ENABLE_FIELD_SHIFT 16 + +extern const ru_field_rec QM_QM_FLOW_CTRL_RNR_CFG_SRAM_WR_EN_FIELD; +#define QM_QM_FLOW_CTRL_RNR_CFG_SRAM_WR_EN_FIELD_MASK 0x00020000 +#define QM_QM_FLOW_CTRL_RNR_CFG_SRAM_WR_EN_FIELD_WIDTH 1 +#define QM_QM_FLOW_CTRL_RNR_CFG_SRAM_WR_EN_FIELD_SHIFT 17 + +extern const ru_field_rec QM_QM_FLOW_CTRL_RNR_CFG_SRAM_WR_ADDR_FIELD; +#define QM_QM_FLOW_CTRL_RNR_CFG_SRAM_WR_ADDR_FIELD_MASK 0x3ffc0000 +#define QM_QM_FLOW_CTRL_RNR_CFG_SRAM_WR_ADDR_FIELD_WIDTH 12 +#define QM_QM_FLOW_CTRL_RNR_CFG_SRAM_WR_ADDR_FIELD_SHIFT 18 + +extern const ru_field_rec QM_QM_FLOW_CTRL_RNR_CFG_RESERVED2_FIELD; +#define QM_QM_FLOW_CTRL_RNR_CFG_RESERVED2_FIELD_MASK 0xc0000000 +#define QM_QM_FLOW_CTRL_RNR_CFG_RESERVED2_FIELD_WIDTH 2 +#define QM_QM_FLOW_CTRL_RNR_CFG_RESERVED2_FIELD_SHIFT 30 + +extern const ru_field_rec QM_DEBUG_SEL_SELECT_FIELD; +#define QM_DEBUG_SEL_SELECT_FIELD_MASK 0x0000001f +#define QM_DEBUG_SEL_SELECT_FIELD_WIDTH 5 +#define QM_DEBUG_SEL_SELECT_FIELD_SHIFT 0 + +extern const ru_field_rec QM_DEBUG_SEL_RESERVED0_FIELD; +#define QM_DEBUG_SEL_RESERVED0_FIELD_MASK 0x7fffffe0 +#define QM_DEBUG_SEL_RESERVED0_FIELD_WIDTH 26 +#define QM_DEBUG_SEL_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec QM_DEBUG_SEL_ENABLE_FIELD; +#define QM_DEBUG_SEL_ENABLE_FIELD_MASK 0x80000000 +#define QM_DEBUG_SEL_ENABLE_FIELD_WIDTH 1 +#define QM_DEBUG_SEL_ENABLE_FIELD_SHIFT 31 + +extern const ru_field_rec QM_DEBUG_BUS_LSB_DATA_FIELD; +#define QM_DEBUG_BUS_LSB_DATA_FIELD_MASK 0xffffffff +#define QM_DEBUG_BUS_LSB_DATA_FIELD_WIDTH 32 +#define QM_DEBUG_BUS_LSB_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_DEBUG_BUS_MSB_DATA_FIELD; +#define QM_DEBUG_BUS_MSB_DATA_FIELD_MASK 0xffffffff +#define QM_DEBUG_BUS_MSB_DATA_FIELD_WIDTH 32 +#define QM_DEBUG_BUS_MSB_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_SPARE_CONFIG_DATA_FIELD; +#define QM_QM_SPARE_CONFIG_DATA_FIELD_MASK 0xffffffff +#define QM_QM_SPARE_CONFIG_DATA_FIELD_WIDTH 32 +#define QM_QM_SPARE_CONFIG_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GOOD_LVL1_PKTS_CNT_COUNTER_FIELD; +#define QM_GOOD_LVL1_PKTS_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_GOOD_LVL1_PKTS_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_GOOD_LVL1_PKTS_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GOOD_LVL1_BYTES_CNT_COUNTER_FIELD; +#define QM_GOOD_LVL1_BYTES_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_GOOD_LVL1_BYTES_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_GOOD_LVL1_BYTES_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GOOD_LVL2_PKTS_CNT_COUNTER_FIELD; +#define QM_GOOD_LVL2_PKTS_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_GOOD_LVL2_PKTS_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_GOOD_LVL2_PKTS_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GOOD_LVL2_BYTES_CNT_COUNTER_FIELD; +#define QM_GOOD_LVL2_BYTES_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_GOOD_LVL2_BYTES_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_GOOD_LVL2_BYTES_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_COPIED_PKTS_CNT_COUNTER_FIELD; +#define QM_COPIED_PKTS_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_COPIED_PKTS_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_COPIED_PKTS_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_COPIED_BYTES_CNT_COUNTER_FIELD; +#define QM_COPIED_BYTES_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_COPIED_BYTES_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_COPIED_BYTES_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_AGG_PKTS_CNT_COUNTER_FIELD; +#define QM_AGG_PKTS_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_AGG_PKTS_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_AGG_PKTS_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_AGG_BYTES_CNT_COUNTER_FIELD; +#define QM_AGG_BYTES_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_AGG_BYTES_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_AGG_BYTES_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_AGG_1_PKTS_CNT_COUNTER_FIELD; +#define QM_AGG_1_PKTS_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_AGG_1_PKTS_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_AGG_1_PKTS_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_AGG_2_PKTS_CNT_COUNTER_FIELD; +#define QM_AGG_2_PKTS_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_AGG_2_PKTS_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_AGG_2_PKTS_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_AGG_3_PKTS_CNT_COUNTER_FIELD; +#define QM_AGG_3_PKTS_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_AGG_3_PKTS_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_AGG_3_PKTS_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_AGG_4_PKTS_CNT_COUNTER_FIELD; +#define QM_AGG_4_PKTS_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_AGG_4_PKTS_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_AGG_4_PKTS_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_WRED_DROP_CNT_COUNTER_FIELD; +#define QM_WRED_DROP_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_WRED_DROP_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_WRED_DROP_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_CONGESTION_DROP_CNT_COUNTER_FIELD; +#define QM_FPM_CONGESTION_DROP_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_FPM_CONGESTION_DROP_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_FPM_CONGESTION_DROP_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_DDR_PD_CONGESTION_DROP_CNT_COUNTER_FIELD; +#define QM_DDR_PD_CONGESTION_DROP_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_DDR_PD_CONGESTION_DROP_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_DDR_PD_CONGESTION_DROP_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_DDR_BYTE_CONGESTION_DROP_CNT_COUNTER_FIELD; +#define QM_DDR_BYTE_CONGESTION_DROP_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_DDR_BYTE_CONGESTION_DROP_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_DDR_BYTE_CONGESTION_DROP_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_PD_CONGESTION_DROP_CNT_COUNTER_FIELD; +#define QM_QM_PD_CONGESTION_DROP_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_QM_PD_CONGESTION_DROP_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_QM_PD_CONGESTION_DROP_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_ABS_REQUEUE_CNT_COUNTER_FIELD; +#define QM_QM_ABS_REQUEUE_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_QM_ABS_REQUEUE_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_QM_ABS_REQUEUE_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO0_STATUS_USED_WORDS_FIELD; +#define QM_FPM_PREFETCH_FIFO0_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_FPM_PREFETCH_FIFO0_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_FPM_PREFETCH_FIFO0_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO0_STATUS_EMPTY_FIELD; +#define QM_FPM_PREFETCH_FIFO0_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_FPM_PREFETCH_FIFO0_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_FPM_PREFETCH_FIFO0_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO0_STATUS_FULL_FIELD; +#define QM_FPM_PREFETCH_FIFO0_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_FPM_PREFETCH_FIFO0_STATUS_FULL_FIELD_WIDTH 1 +#define QM_FPM_PREFETCH_FIFO0_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO0_STATUS_RESERVED0_FIELD; +#define QM_FPM_PREFETCH_FIFO0_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_FPM_PREFETCH_FIFO0_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_FPM_PREFETCH_FIFO0_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO1_STATUS_USED_WORDS_FIELD; +#define QM_FPM_PREFETCH_FIFO1_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_FPM_PREFETCH_FIFO1_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_FPM_PREFETCH_FIFO1_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO1_STATUS_EMPTY_FIELD; +#define QM_FPM_PREFETCH_FIFO1_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_FPM_PREFETCH_FIFO1_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_FPM_PREFETCH_FIFO1_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO1_STATUS_FULL_FIELD; +#define QM_FPM_PREFETCH_FIFO1_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_FPM_PREFETCH_FIFO1_STATUS_FULL_FIELD_WIDTH 1 +#define QM_FPM_PREFETCH_FIFO1_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO1_STATUS_RESERVED0_FIELD; +#define QM_FPM_PREFETCH_FIFO1_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_FPM_PREFETCH_FIFO1_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_FPM_PREFETCH_FIFO1_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO2_STATUS_USED_WORDS_FIELD; +#define QM_FPM_PREFETCH_FIFO2_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_FPM_PREFETCH_FIFO2_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_FPM_PREFETCH_FIFO2_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO2_STATUS_EMPTY_FIELD; +#define QM_FPM_PREFETCH_FIFO2_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_FPM_PREFETCH_FIFO2_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_FPM_PREFETCH_FIFO2_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO2_STATUS_FULL_FIELD; +#define QM_FPM_PREFETCH_FIFO2_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_FPM_PREFETCH_FIFO2_STATUS_FULL_FIELD_WIDTH 1 +#define QM_FPM_PREFETCH_FIFO2_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO2_STATUS_RESERVED0_FIELD; +#define QM_FPM_PREFETCH_FIFO2_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_FPM_PREFETCH_FIFO2_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_FPM_PREFETCH_FIFO2_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO3_STATUS_USED_WORDS_FIELD; +#define QM_FPM_PREFETCH_FIFO3_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_FPM_PREFETCH_FIFO3_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_FPM_PREFETCH_FIFO3_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO3_STATUS_EMPTY_FIELD; +#define QM_FPM_PREFETCH_FIFO3_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_FPM_PREFETCH_FIFO3_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_FPM_PREFETCH_FIFO3_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO3_STATUS_FULL_FIELD; +#define QM_FPM_PREFETCH_FIFO3_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_FPM_PREFETCH_FIFO3_STATUS_FULL_FIELD_WIDTH 1 +#define QM_FPM_PREFETCH_FIFO3_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_FPM_PREFETCH_FIFO3_STATUS_RESERVED0_FIELD; +#define QM_FPM_PREFETCH_FIFO3_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_FPM_PREFETCH_FIFO3_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_FPM_PREFETCH_FIFO3_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_NORMAL_RMT_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_NORMAL_RMT_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_NORMAL_RMT_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_NORMAL_RMT_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_NORMAL_RMT_FIFO_STATUS_EMPTY_FIELD; +#define QM_NORMAL_RMT_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_NORMAL_RMT_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_NORMAL_RMT_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_NORMAL_RMT_FIFO_STATUS_FULL_FIELD; +#define QM_NORMAL_RMT_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_NORMAL_RMT_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_NORMAL_RMT_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_NORMAL_RMT_FIFO_STATUS_RESERVED0_FIELD; +#define QM_NORMAL_RMT_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_NORMAL_RMT_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_NORMAL_RMT_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_NON_DELAYED_RMT_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_NON_DELAYED_RMT_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_NON_DELAYED_RMT_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_NON_DELAYED_RMT_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_NON_DELAYED_RMT_FIFO_STATUS_EMPTY_FIELD; +#define QM_NON_DELAYED_RMT_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_NON_DELAYED_RMT_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_NON_DELAYED_RMT_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_NON_DELAYED_RMT_FIFO_STATUS_FULL_FIELD; +#define QM_NON_DELAYED_RMT_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_NON_DELAYED_RMT_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_NON_DELAYED_RMT_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_NON_DELAYED_RMT_FIFO_STATUS_RESERVED0_FIELD; +#define QM_NON_DELAYED_RMT_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_NON_DELAYED_RMT_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_NON_DELAYED_RMT_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_NON_DELAYED_OUT_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_NON_DELAYED_OUT_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_NON_DELAYED_OUT_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_NON_DELAYED_OUT_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_NON_DELAYED_OUT_FIFO_STATUS_EMPTY_FIELD; +#define QM_NON_DELAYED_OUT_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_NON_DELAYED_OUT_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_NON_DELAYED_OUT_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_NON_DELAYED_OUT_FIFO_STATUS_FULL_FIELD; +#define QM_NON_DELAYED_OUT_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_NON_DELAYED_OUT_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_NON_DELAYED_OUT_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_NON_DELAYED_OUT_FIFO_STATUS_RESERVED0_FIELD; +#define QM_NON_DELAYED_OUT_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_NON_DELAYED_OUT_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_NON_DELAYED_OUT_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_PRE_CM_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_PRE_CM_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_PRE_CM_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_PRE_CM_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_PRE_CM_FIFO_STATUS_EMPTY_FIELD; +#define QM_PRE_CM_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_PRE_CM_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_PRE_CM_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_PRE_CM_FIFO_STATUS_FULL_FIELD; +#define QM_PRE_CM_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_PRE_CM_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_PRE_CM_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_PRE_CM_FIFO_STATUS_RESERVED0_FIELD; +#define QM_PRE_CM_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_PRE_CM_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_PRE_CM_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_CM_RD_PD_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_CM_RD_PD_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_CM_RD_PD_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_CM_RD_PD_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CM_RD_PD_FIFO_STATUS_EMPTY_FIELD; +#define QM_CM_RD_PD_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_CM_RD_PD_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_CM_RD_PD_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_CM_RD_PD_FIFO_STATUS_FULL_FIELD; +#define QM_CM_RD_PD_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_CM_RD_PD_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_CM_RD_PD_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_CM_RD_PD_FIFO_STATUS_RESERVED0_FIELD; +#define QM_CM_RD_PD_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_CM_RD_PD_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_CM_RD_PD_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_CM_WR_PD_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_CM_WR_PD_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_CM_WR_PD_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_CM_WR_PD_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CM_WR_PD_FIFO_STATUS_EMPTY_FIELD; +#define QM_CM_WR_PD_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_CM_WR_PD_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_CM_WR_PD_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_CM_WR_PD_FIFO_STATUS_FULL_FIELD; +#define QM_CM_WR_PD_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_CM_WR_PD_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_CM_WR_PD_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_CM_WR_PD_FIFO_STATUS_RESERVED0_FIELD; +#define QM_CM_WR_PD_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_CM_WR_PD_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_CM_WR_PD_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_CM_COMMON_INPUT_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_CM_COMMON_INPUT_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_CM_COMMON_INPUT_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_CM_COMMON_INPUT_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_CM_COMMON_INPUT_FIFO_STATUS_EMPTY_FIELD; +#define QM_CM_COMMON_INPUT_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_CM_COMMON_INPUT_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_CM_COMMON_INPUT_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_CM_COMMON_INPUT_FIFO_STATUS_FULL_FIELD; +#define QM_CM_COMMON_INPUT_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_CM_COMMON_INPUT_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_CM_COMMON_INPUT_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_CM_COMMON_INPUT_FIFO_STATUS_RESERVED0_FIELD; +#define QM_CM_COMMON_INPUT_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_CM_COMMON_INPUT_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_CM_COMMON_INPUT_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_BB0_OUTPUT_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_BB0_OUTPUT_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_BB0_OUTPUT_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_BB0_OUTPUT_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_BB0_OUTPUT_FIFO_STATUS_EMPTY_FIELD; +#define QM_BB0_OUTPUT_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_BB0_OUTPUT_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_BB0_OUTPUT_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_BB0_OUTPUT_FIFO_STATUS_FULL_FIELD; +#define QM_BB0_OUTPUT_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_BB0_OUTPUT_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_BB0_OUTPUT_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_BB0_OUTPUT_FIFO_STATUS_RESERVED0_FIELD; +#define QM_BB0_OUTPUT_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_BB0_OUTPUT_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_BB0_OUTPUT_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_BB1_OUTPUT_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_BB1_OUTPUT_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_BB1_OUTPUT_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_BB1_OUTPUT_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_BB1_OUTPUT_FIFO_STATUS_EMPTY_FIELD; +#define QM_BB1_OUTPUT_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_BB1_OUTPUT_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_BB1_OUTPUT_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_BB1_OUTPUT_FIFO_STATUS_FULL_FIELD; +#define QM_BB1_OUTPUT_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_BB1_OUTPUT_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_BB1_OUTPUT_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_BB1_OUTPUT_FIFO_STATUS_RESERVED0_FIELD; +#define QM_BB1_OUTPUT_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_BB1_OUTPUT_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_BB1_OUTPUT_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_BB1_INPUT_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_BB1_INPUT_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_BB1_INPUT_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_BB1_INPUT_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_BB1_INPUT_FIFO_STATUS_EMPTY_FIELD; +#define QM_BB1_INPUT_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_BB1_INPUT_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_BB1_INPUT_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_BB1_INPUT_FIFO_STATUS_FULL_FIELD; +#define QM_BB1_INPUT_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_BB1_INPUT_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_BB1_INPUT_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_BB1_INPUT_FIFO_STATUS_RESERVED0_FIELD; +#define QM_BB1_INPUT_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_BB1_INPUT_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_BB1_INPUT_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_EGRESS_DATA_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_EGRESS_DATA_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_EGRESS_DATA_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_EGRESS_DATA_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_EGRESS_DATA_FIFO_STATUS_EMPTY_FIELD; +#define QM_EGRESS_DATA_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_EGRESS_DATA_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_EGRESS_DATA_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_EGRESS_DATA_FIFO_STATUS_FULL_FIELD; +#define QM_EGRESS_DATA_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_EGRESS_DATA_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_EGRESS_DATA_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_EGRESS_DATA_FIFO_STATUS_RESERVED0_FIELD; +#define QM_EGRESS_DATA_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_EGRESS_DATA_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_EGRESS_DATA_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_EGRESS_RR_FIFO_STATUS_USED_WORDS_FIELD; +#define QM_EGRESS_RR_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x0000ffff +#define QM_EGRESS_RR_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 16 +#define QM_EGRESS_RR_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_EGRESS_RR_FIFO_STATUS_EMPTY_FIELD; +#define QM_EGRESS_RR_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define QM_EGRESS_RR_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define QM_EGRESS_RR_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec QM_EGRESS_RR_FIFO_STATUS_FULL_FIELD; +#define QM_EGRESS_RR_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define QM_EGRESS_RR_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define QM_EGRESS_RR_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec QM_EGRESS_RR_FIFO_STATUS_RESERVED0_FIELD; +#define QM_EGRESS_RR_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define QM_EGRESS_RR_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define QM_EGRESS_RR_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec QM_BB_ROUTE_OVR_OVR_EN_FIELD; +#define QM_BB_ROUTE_OVR_OVR_EN_FIELD_MASK 0x00000001 +#define QM_BB_ROUTE_OVR_OVR_EN_FIELD_WIDTH 1 +#define QM_BB_ROUTE_OVR_OVR_EN_FIELD_SHIFT 0 + +extern const ru_field_rec QM_BB_ROUTE_OVR_RESERVED0_FIELD; +#define QM_BB_ROUTE_OVR_RESERVED0_FIELD_MASK 0x000000fe +#define QM_BB_ROUTE_OVR_RESERVED0_FIELD_WIDTH 7 +#define QM_BB_ROUTE_OVR_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec QM_BB_ROUTE_OVR_DEST_ID_FIELD; +#define QM_BB_ROUTE_OVR_DEST_ID_FIELD_MASK 0x00003f00 +#define QM_BB_ROUTE_OVR_DEST_ID_FIELD_WIDTH 6 +#define QM_BB_ROUTE_OVR_DEST_ID_FIELD_SHIFT 8 + +extern const ru_field_rec QM_BB_ROUTE_OVR_RESERVED1_FIELD; +#define QM_BB_ROUTE_OVR_RESERVED1_FIELD_MASK 0x0000c000 +#define QM_BB_ROUTE_OVR_RESERVED1_FIELD_WIDTH 2 +#define QM_BB_ROUTE_OVR_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec QM_BB_ROUTE_OVR_ROUTE_ADDR_FIELD; +#define QM_BB_ROUTE_OVR_ROUTE_ADDR_FIELD_MASK 0x03ff0000 +#define QM_BB_ROUTE_OVR_ROUTE_ADDR_FIELD_WIDTH 10 +#define QM_BB_ROUTE_OVR_ROUTE_ADDR_FIELD_SHIFT 16 + +extern const ru_field_rec QM_BB_ROUTE_OVR_RESERVED2_FIELD; +#define QM_BB_ROUTE_OVR_RESERVED2_FIELD_MASK 0xfc000000 +#define QM_BB_ROUTE_OVR_RESERVED2_FIELD_WIDTH 6 +#define QM_BB_ROUTE_OVR_RESERVED2_FIELD_SHIFT 26 + +extern const ru_field_rec QM_QM_INGRESS_STAT_STAT_FIELD; +#define QM_QM_INGRESS_STAT_STAT_FIELD_MASK 0xffffffff +#define QM_QM_INGRESS_STAT_STAT_FIELD_WIDTH 32 +#define QM_QM_INGRESS_STAT_STAT_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_EGRESS_STAT_STAT_FIELD; +#define QM_QM_EGRESS_STAT_STAT_FIELD_MASK 0xffffffff +#define QM_QM_EGRESS_STAT_STAT_FIELD_WIDTH 32 +#define QM_QM_EGRESS_STAT_STAT_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_CM_STAT_STAT_FIELD; +#define QM_QM_CM_STAT_STAT_FIELD_MASK 0xffffffff +#define QM_QM_CM_STAT_STAT_FIELD_WIDTH 32 +#define QM_QM_CM_STAT_STAT_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_FPM_PREFETCH_STAT_STAT_FIELD; +#define QM_QM_FPM_PREFETCH_STAT_STAT_FIELD_MASK 0xffffffff +#define QM_QM_FPM_PREFETCH_STAT_STAT_FIELD_WIDTH 32 +#define QM_QM_FPM_PREFETCH_STAT_STAT_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_CONNECT_ACK_COUNTER_CONNECT_ACK_COUNTER_FIELD; +#define QM_QM_CONNECT_ACK_COUNTER_CONNECT_ACK_COUNTER_FIELD_MASK 0x000000ff +#define QM_QM_CONNECT_ACK_COUNTER_CONNECT_ACK_COUNTER_FIELD_WIDTH 8 +#define QM_QM_CONNECT_ACK_COUNTER_CONNECT_ACK_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_CONNECT_ACK_COUNTER_RESERVED0_FIELD; +#define QM_QM_CONNECT_ACK_COUNTER_RESERVED0_FIELD_MASK 0xffffff00 +#define QM_QM_CONNECT_ACK_COUNTER_RESERVED0_FIELD_WIDTH 24 +#define QM_QM_CONNECT_ACK_COUNTER_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec QM_QM_DDR_WR_REPLY_COUNTER_DDR_WR_REPLY_COUNTER_FIELD; +#define QM_QM_DDR_WR_REPLY_COUNTER_DDR_WR_REPLY_COUNTER_FIELD_MASK 0x000000ff +#define QM_QM_DDR_WR_REPLY_COUNTER_DDR_WR_REPLY_COUNTER_FIELD_WIDTH 8 +#define QM_QM_DDR_WR_REPLY_COUNTER_DDR_WR_REPLY_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_DDR_WR_REPLY_COUNTER_RESERVED0_FIELD; +#define QM_QM_DDR_WR_REPLY_COUNTER_RESERVED0_FIELD_MASK 0xffffff00 +#define QM_QM_DDR_WR_REPLY_COUNTER_RESERVED0_FIELD_WIDTH 24 +#define QM_QM_DDR_WR_REPLY_COUNTER_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec QM_QM_DDR_PIPE_BYTE_COUNTER_COUNTER_FIELD; +#define QM_QM_DDR_PIPE_BYTE_COUNTER_COUNTER_FIELD_MASK 0x0fffffff +#define QM_QM_DDR_PIPE_BYTE_COUNTER_COUNTER_FIELD_WIDTH 28 +#define QM_QM_DDR_PIPE_BYTE_COUNTER_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_DDR_PIPE_BYTE_COUNTER_RESERVED0_FIELD; +#define QM_QM_DDR_PIPE_BYTE_COUNTER_RESERVED0_FIELD_MASK 0xf0000000 +#define QM_QM_DDR_PIPE_BYTE_COUNTER_RESERVED0_FIELD_WIDTH 4 +#define QM_QM_DDR_PIPE_BYTE_COUNTER_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec QM_QM_ABS_REQUEUE_VALID_COUNTER_COUNTER_FIELD; +#define QM_QM_ABS_REQUEUE_VALID_COUNTER_COUNTER_FIELD_MASK 0x00007fff +#define QM_QM_ABS_REQUEUE_VALID_COUNTER_COUNTER_FIELD_WIDTH 15 +#define QM_QM_ABS_REQUEUE_VALID_COUNTER_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_ABS_REQUEUE_VALID_COUNTER_RESERVED0_FIELD; +#define QM_QM_ABS_REQUEUE_VALID_COUNTER_RESERVED0_FIELD_MASK 0xffff8000 +#define QM_QM_ABS_REQUEUE_VALID_COUNTER_RESERVED0_FIELD_WIDTH 17 +#define QM_QM_ABS_REQUEUE_VALID_COUNTER_RESERVED0_FIELD_SHIFT 15 + +extern const ru_field_rec QM_QM_ILLEGAL_PD_CAPTURE_PD_FIELD; +#define QM_QM_ILLEGAL_PD_CAPTURE_PD_FIELD_MASK 0xffffffff +#define QM_QM_ILLEGAL_PD_CAPTURE_PD_FIELD_WIDTH 32 +#define QM_QM_ILLEGAL_PD_CAPTURE_PD_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_INGRESS_PROCESSED_PD_CAPTURE_PD_FIELD; +#define QM_QM_INGRESS_PROCESSED_PD_CAPTURE_PD_FIELD_MASK 0xffffffff +#define QM_QM_INGRESS_PROCESSED_PD_CAPTURE_PD_FIELD_WIDTH 32 +#define QM_QM_INGRESS_PROCESSED_PD_CAPTURE_PD_FIELD_SHIFT 0 + +extern const ru_field_rec QM_QM_CM_PROCESSED_PD_CAPTURE_PD_FIELD; +#define QM_QM_CM_PROCESSED_PD_CAPTURE_PD_FIELD_MASK 0xffffffff +#define QM_QM_CM_PROCESSED_PD_CAPTURE_PD_FIELD_WIDTH 32 +#define QM_QM_CM_PROCESSED_PD_CAPTURE_PD_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_POOL_DROP_CNT_COUNTER_FIELD; +#define QM_FPM_POOL_DROP_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_FPM_POOL_DROP_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_FPM_POOL_DROP_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_GRP_DROP_CNT_COUNTER_FIELD; +#define QM_FPM_GRP_DROP_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_FPM_GRP_DROP_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_FPM_GRP_DROP_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_FPM_BUFFER_RES_DROP_CNT_COUNTER_FIELD; +#define QM_FPM_BUFFER_RES_DROP_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_FPM_BUFFER_RES_DROP_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_FPM_BUFFER_RES_DROP_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_PSRAM_EGRESS_CONG_DRP_CNT_COUNTER_FIELD; +#define QM_PSRAM_EGRESS_CONG_DRP_CNT_COUNTER_FIELD_MASK 0xffffffff +#define QM_PSRAM_EGRESS_CONG_DRP_CNT_COUNTER_FIELD_WIDTH 32 +#define QM_PSRAM_EGRESS_CONG_DRP_CNT_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec QM_BACKPRESSURE_STATUS_FIELD; +#define QM_BACKPRESSURE_STATUS_FIELD_MASK 0x0000000f +#define QM_BACKPRESSURE_STATUS_FIELD_WIDTH 4 +#define QM_BACKPRESSURE_STATUS_FIELD_SHIFT 0 + +extern const ru_field_rec QM_BACKPRESSURE_R1_FIELD; +#define QM_BACKPRESSURE_R1_FIELD_MASK 0xfffffff0 +#define QM_BACKPRESSURE_R1_FIELD_WIDTH 28 +#define QM_BACKPRESSURE_R1_FIELD_SHIFT 4 + +extern const ru_field_rec QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_ADDR_FIELD; +#define QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_ADDR_FIELD_MASK 0x0000003f +#define QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_ADDR_FIELD_WIDTH 6 +#define QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_BBHTX_REQ_OTF_FIELD; +#define QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_BBHTX_REQ_OTF_FIELD_MASK 0x00000fc0 +#define QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_BBHTX_REQ_OTF_FIELD_WIDTH 6 +#define QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_BBHTX_REQ_OTF_FIELD_SHIFT 6 + +extern const ru_field_rec QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_RESERVED0_FIELD; +#define QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_RESERVED0_FIELD_MASK 0xfffff000 +#define QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_RESERVED0_FIELD_WIDTH 20 +#define QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec QM_DATA_DATA_FIELD; +#define QM_DATA_DATA_FIELD_MASK 0xffffffff +#define QM_DATA_DATA_FIELD_WIDTH 32 +#define QM_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_TOKEN_FIFO_TOKEN_FIFO_TOKEN_FIELD; +#define DQM_TOKEN_FIFO_TOKEN_FIFO_TOKEN_FIELD_MASK 0xffffffff +#define DQM_TOKEN_FIFO_TOKEN_FIFO_TOKEN_FIELD_WIDTH 32 +#define DQM_TOKEN_FIFO_TOKEN_FIFO_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_MAX_ENTRIES_WORDS_RESERVED0_FIELD; +#define DQM_MAX_ENTRIES_WORDS_RESERVED0_FIELD_MASK 0xfff80000 +#define DQM_MAX_ENTRIES_WORDS_RESERVED0_FIELD_WIDTH 13 +#define DQM_MAX_ENTRIES_WORDS_RESERVED0_FIELD_SHIFT 19 + +extern const ru_field_rec DQM_MAX_ENTRIES_WORDS_MAX_FIELD; +#define DQM_MAX_ENTRIES_WORDS_MAX_FIELD_MASK 0x0007ffff +#define DQM_MAX_ENTRIES_WORDS_MAX_FIELD_WIDTH 19 +#define DQM_MAX_ENTRIES_WORDS_MAX_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_FPM_ADDR_FPMADDRESS_FIELD; +#define DQM_FPM_ADDR_FPMADDRESS_FIELD_MASK 0xffffffff +#define DQM_FPM_ADDR_FPMADDRESS_FIELD_WIDTH 32 +#define DQM_FPM_ADDR_FPMADDRESS_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_IRQ_STS_RESERVED0_FIELD; +#define DQM_IRQ_STS_RESERVED0_FIELD_MASK 0xfffffffc +#define DQM_IRQ_STS_RESERVED0_FIELD_WIDTH 30 +#define DQM_IRQ_STS_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec DQM_IRQ_STS_PUSHFULLQ_FIELD; +#define DQM_IRQ_STS_PUSHFULLQ_FIELD_MASK 0x00000002 +#define DQM_IRQ_STS_PUSHFULLQ_FIELD_WIDTH 1 +#define DQM_IRQ_STS_PUSHFULLQ_FIELD_SHIFT 1 + +extern const ru_field_rec DQM_IRQ_STS_POPEMPTYQ_FIELD; +#define DQM_IRQ_STS_POPEMPTYQ_FIELD_MASK 0x00000001 +#define DQM_IRQ_STS_POPEMPTYQ_FIELD_WIDTH 1 +#define DQM_IRQ_STS_POPEMPTYQ_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_IRQ_MSK_RESERVED0_FIELD; +#define DQM_IRQ_MSK_RESERVED0_FIELD_MASK 0xfffffffc +#define DQM_IRQ_MSK_RESERVED0_FIELD_WIDTH 30 +#define DQM_IRQ_MSK_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec DQM_IRQ_MSK_PUSHFULLQ_FIELD; +#define DQM_IRQ_MSK_PUSHFULLQ_FIELD_MASK 0x00000002 +#define DQM_IRQ_MSK_PUSHFULLQ_FIELD_WIDTH 1 +#define DQM_IRQ_MSK_PUSHFULLQ_FIELD_SHIFT 1 + +extern const ru_field_rec DQM_IRQ_MSK_POPEMPTYQ_FIELD; +#define DQM_IRQ_MSK_POPEMPTYQ_FIELD_MASK 0x00000001 +#define DQM_IRQ_MSK_POPEMPTYQ_FIELD_WIDTH 1 +#define DQM_IRQ_MSK_POPEMPTYQ_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_BUF_SIZE_RESERVED0_FIELD; +#define DQM_BUF_SIZE_RESERVED0_FIELD_MASK 0xfffffffc +#define DQM_BUF_SIZE_RESERVED0_FIELD_WIDTH 30 +#define DQM_BUF_SIZE_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec DQM_BUF_SIZE_POOL_0_SIZE_FIELD; +#define DQM_BUF_SIZE_POOL_0_SIZE_FIELD_MASK 0x00000003 +#define DQM_BUF_SIZE_POOL_0_SIZE_FIELD_WIDTH 2 +#define DQM_BUF_SIZE_POOL_0_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_BUF_BASE_BASE_FIELD; +#define DQM_BUF_BASE_BASE_FIELD_MASK 0xffffffff +#define DQM_BUF_BASE_BASE_FIELD_WIDTH 32 +#define DQM_BUF_BASE_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_TOKENS_USED_COUNT_FIELD; +#define DQM_TOKENS_USED_COUNT_FIELD_MASK 0xffffffff +#define DQM_TOKENS_USED_COUNT_FIELD_WIDTH 32 +#define DQM_TOKENS_USED_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_NUM_PUSHED_COUNT_FIELD; +#define DQM_NUM_PUSHED_COUNT_FIELD_MASK 0xffffffff +#define DQM_NUM_PUSHED_COUNT_FIELD_WIDTH 32 +#define DQM_NUM_PUSHED_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_NUM_POPPED_COUNT_FIELD; +#define DQM_NUM_POPPED_COUNT_FIELD_MASK 0xffffffff +#define DQM_NUM_POPPED_COUNT_FIELD_WIDTH 32 +#define DQM_NUM_POPPED_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_DIAG_SEL_RESERVED0_FIELD; +#define DQM_DIAG_SEL_RESERVED0_FIELD_MASK 0xffffff00 +#define DQM_DIAG_SEL_RESERVED0_FIELD_WIDTH 24 +#define DQM_DIAG_SEL_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec DQM_DIAG_SEL_SEL_FIELD; +#define DQM_DIAG_SEL_SEL_FIELD_MASK 0x000000ff +#define DQM_DIAG_SEL_SEL_FIELD_WIDTH 8 +#define DQM_DIAG_SEL_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_DIAG_DATA_DATA_FIELD; +#define DQM_DIAG_DATA_DATA_FIELD_MASK 0xffffffff +#define DQM_DIAG_DATA_DATA_FIELD_WIDTH 32 +#define DQM_DIAG_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_IRQ_TST_RESERVED0_FIELD; +#define DQM_IRQ_TST_RESERVED0_FIELD_MASK 0xfffffffc +#define DQM_IRQ_TST_RESERVED0_FIELD_WIDTH 30 +#define DQM_IRQ_TST_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec DQM_IRQ_TST_PUSHFULLQTST_FIELD; +#define DQM_IRQ_TST_PUSHFULLQTST_FIELD_MASK 0x00000002 +#define DQM_IRQ_TST_PUSHFULLQTST_FIELD_WIDTH 1 +#define DQM_IRQ_TST_PUSHFULLQTST_FIELD_SHIFT 1 + +extern const ru_field_rec DQM_IRQ_TST_POPEMPTYQTST_FIELD; +#define DQM_IRQ_TST_POPEMPTYQTST_FIELD_MASK 0x00000001 +#define DQM_IRQ_TST_POPEMPTYQTST_FIELD_WIDTH 1 +#define DQM_IRQ_TST_POPEMPTYQTST_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_TOKEN_FIFO_STATUS_RESERVED0_FIELD; +#define DQM_TOKEN_FIFO_STATUS_RESERVED0_FIELD_MASK 0xfffc0000 +#define DQM_TOKEN_FIFO_STATUS_RESERVED0_FIELD_WIDTH 14 +#define DQM_TOKEN_FIFO_STATUS_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec DQM_TOKEN_FIFO_STATUS_FULL_FIELD; +#define DQM_TOKEN_FIFO_STATUS_FULL_FIELD_MASK 0x00020000 +#define DQM_TOKEN_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define DQM_TOKEN_FIFO_STATUS_FULL_FIELD_SHIFT 17 + +extern const ru_field_rec DQM_TOKEN_FIFO_STATUS_EMPTY_FIELD; +#define DQM_TOKEN_FIFO_STATUS_EMPTY_FIELD_MASK 0x00010000 +#define DQM_TOKEN_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define DQM_TOKEN_FIFO_STATUS_EMPTY_FIELD_SHIFT 16 + +extern const ru_field_rec DQM_TOKEN_FIFO_STATUS_RESERVED1_FIELD; +#define DQM_TOKEN_FIFO_STATUS_RESERVED1_FIELD_MASK 0x0000e000 +#define DQM_TOKEN_FIFO_STATUS_RESERVED1_FIELD_WIDTH 3 +#define DQM_TOKEN_FIFO_STATUS_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec DQM_TOKEN_FIFO_STATUS_LEVEL_FIELD; +#define DQM_TOKEN_FIFO_STATUS_LEVEL_FIELD_MASK 0x00001f00 +#define DQM_TOKEN_FIFO_STATUS_LEVEL_FIELD_WIDTH 5 +#define DQM_TOKEN_FIFO_STATUS_LEVEL_FIELD_SHIFT 8 + +extern const ru_field_rec DQM_TOKEN_FIFO_STATUS_RESERVED2_FIELD; +#define DQM_TOKEN_FIFO_STATUS_RESERVED2_FIELD_MASK 0x000000f0 +#define DQM_TOKEN_FIFO_STATUS_RESERVED2_FIELD_WIDTH 4 +#define DQM_TOKEN_FIFO_STATUS_RESERVED2_FIELD_SHIFT 4 + +extern const ru_field_rec DQM_TOKEN_FIFO_STATUS_RD_LOC_FIELD; +#define DQM_TOKEN_FIFO_STATUS_RD_LOC_FIELD_MASK 0x0000000f +#define DQM_TOKEN_FIFO_STATUS_RD_LOC_FIELD_WIDTH 4 +#define DQM_TOKEN_FIFO_STATUS_RD_LOC_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_NUM_POPPED_NO_COMMIT_COUNT_FIELD; +#define DQM_NUM_POPPED_NO_COMMIT_COUNT_FIELD_MASK 0xffffffff +#define DQM_NUM_POPPED_NO_COMMIT_COUNT_FIELD_WIDTH 32 +#define DQM_NUM_POPPED_NO_COMMIT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_STATUS_CURR_LINE_DATA_IS_LOCAL_FIELD; +#define DQM_STATUS_CURR_LINE_DATA_IS_LOCAL_FIELD_MASK 0x80000000 +#define DQM_STATUS_CURR_LINE_DATA_IS_LOCAL_FIELD_WIDTH 1 +#define DQM_STATUS_CURR_LINE_DATA_IS_LOCAL_FIELD_SHIFT 31 + +extern const ru_field_rec DQM_STATUS_NEXT_LINE_DATA_IS_LOCAL_FIELD; +#define DQM_STATUS_NEXT_LINE_DATA_IS_LOCAL_FIELD_MASK 0x40000000 +#define DQM_STATUS_NEXT_LINE_DATA_IS_LOCAL_FIELD_WIDTH 1 +#define DQM_STATUS_NEXT_LINE_DATA_IS_LOCAL_FIELD_SHIFT 30 + +extern const ru_field_rec DQM_STATUS_RESERVED0_FIELD; +#define DQM_STATUS_RESERVED0_FIELD_MASK 0x3ff80000 +#define DQM_STATUS_RESERVED0_FIELD_WIDTH 11 +#define DQM_STATUS_RESERVED0_FIELD_SHIFT 19 + +extern const ru_field_rec DQM_STATUS_Q_AVL_TKN_SPACE_FIELD; +#define DQM_STATUS_Q_AVL_TKN_SPACE_FIELD_MASK 0x0007ffff +#define DQM_STATUS_Q_AVL_TKN_SPACE_FIELD_WIDTH 19 +#define DQM_STATUS_Q_AVL_TKN_SPACE_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_HEAD_PTR_RESERVED0_FIELD; +#define DQM_HEAD_PTR_RESERVED0_FIELD_MASK 0xf0000000 +#define DQM_HEAD_PTR_RESERVED0_FIELD_WIDTH 4 +#define DQM_HEAD_PTR_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec DQM_HEAD_PTR_Q_HEAD_PTR_FIELD; +#define DQM_HEAD_PTR_Q_HEAD_PTR_FIELD_MASK 0x0fffffff +#define DQM_HEAD_PTR_Q_HEAD_PTR_FIELD_WIDTH 28 +#define DQM_HEAD_PTR_Q_HEAD_PTR_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_TAIL_PTR_RESERVED0_FIELD; +#define DQM_TAIL_PTR_RESERVED0_FIELD_MASK 0xf0000000 +#define DQM_TAIL_PTR_RESERVED0_FIELD_WIDTH 4 +#define DQM_TAIL_PTR_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec DQM_TAIL_PTR_Q_TAIL_PTR_FIELD; +#define DQM_TAIL_PTR_Q_TAIL_PTR_FIELD_MASK 0x0fffffff +#define DQM_TAIL_PTR_Q_TAIL_PTR_FIELD_WIDTH 28 +#define DQM_TAIL_PTR_Q_TAIL_PTR_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_DQMOL_SIZE_RESERVED0_FIELD; +#define DQM_DQMOL_SIZE_RESERVED0_FIELD_MASK 0xff800000 +#define DQM_DQMOL_SIZE_RESERVED0_FIELD_WIDTH 9 +#define DQM_DQMOL_SIZE_RESERVED0_FIELD_SHIFT 23 + +extern const ru_field_rec DQM_DQMOL_SIZE_MAX_ENTRIES_FIELD; +#define DQM_DQMOL_SIZE_MAX_ENTRIES_FIELD_MASK 0x007ffff0 +#define DQM_DQMOL_SIZE_MAX_ENTRIES_FIELD_WIDTH 19 +#define DQM_DQMOL_SIZE_MAX_ENTRIES_FIELD_SHIFT 4 + +extern const ru_field_rec DQM_DQMOL_SIZE_Q_DISABLE_OFFLOAD_FIELD; +#define DQM_DQMOL_SIZE_Q_DISABLE_OFFLOAD_FIELD_MASK 0x00000008 +#define DQM_DQMOL_SIZE_Q_DISABLE_OFFLOAD_FIELD_WIDTH 1 +#define DQM_DQMOL_SIZE_Q_DISABLE_OFFLOAD_FIELD_SHIFT 3 + +extern const ru_field_rec DQM_DQMOL_SIZE_RESERVED1_FIELD; +#define DQM_DQMOL_SIZE_RESERVED1_FIELD_MASK 0x00000004 +#define DQM_DQMOL_SIZE_RESERVED1_FIELD_WIDTH 1 +#define DQM_DQMOL_SIZE_RESERVED1_FIELD_SHIFT 2 + +extern const ru_field_rec DQM_DQMOL_SIZE_Q_TKN_SIZE_FIELD; +#define DQM_DQMOL_SIZE_Q_TKN_SIZE_FIELD_MASK 0x00000003 +#define DQM_DQMOL_SIZE_Q_TKN_SIZE_FIELD_WIDTH 2 +#define DQM_DQMOL_SIZE_Q_TKN_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_DQMOL_CFGA_Q_SIZE_FIELD; +#define DQM_DQMOL_CFGA_Q_SIZE_FIELD_MASK 0xffff0000 +#define DQM_DQMOL_CFGA_Q_SIZE_FIELD_WIDTH 16 +#define DQM_DQMOL_CFGA_Q_SIZE_FIELD_SHIFT 16 + +extern const ru_field_rec DQM_DQMOL_CFGA_Q_START_ADDR_FIELD; +#define DQM_DQMOL_CFGA_Q_START_ADDR_FIELD_MASK 0x0000ffff +#define DQM_DQMOL_CFGA_Q_START_ADDR_FIELD_WIDTH 16 +#define DQM_DQMOL_CFGA_Q_START_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_DQMOL_CFGB_ENABLE_FIELD; +#define DQM_DQMOL_CFGB_ENABLE_FIELD_MASK 0x80000000 +#define DQM_DQMOL_CFGB_ENABLE_FIELD_WIDTH 1 +#define DQM_DQMOL_CFGB_ENABLE_FIELD_SHIFT 31 + +extern const ru_field_rec DQM_DQMOL_CFGB_RESERVED0_FIELD; +#define DQM_DQMOL_CFGB_RESERVED0_FIELD_MASK 0x7fffffff +#define DQM_DQMOL_CFGB_RESERVED0_FIELD_WIDTH 31 +#define DQM_DQMOL_CFGB_RESERVED0_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_DQMOL_PUSHTOKEN_TOKEN_FIELD; +#define DQM_DQMOL_PUSHTOKEN_TOKEN_FIELD_MASK 0xffffffff +#define DQM_DQMOL_PUSHTOKEN_TOKEN_FIELD_WIDTH 32 +#define DQM_DQMOL_PUSHTOKEN_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_DQMOL_PUSHTOKENNEXT_TOKEN_FIELD; +#define DQM_DQMOL_PUSHTOKENNEXT_TOKEN_FIELD_MASK 0xffffffff +#define DQM_DQMOL_PUSHTOKENNEXT_TOKEN_FIELD_WIDTH 32 +#define DQM_DQMOL_PUSHTOKENNEXT_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_DQMOL_POPTOKEN_TOKEN_FIELD; +#define DQM_DQMOL_POPTOKEN_TOKEN_FIELD_MASK 0xffffffff +#define DQM_DQMOL_POPTOKEN_TOKEN_FIELD_WIDTH 32 +#define DQM_DQMOL_POPTOKEN_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_DQMOL_POPTOKENNEXT_TOKEN_FIELD; +#define DQM_DQMOL_POPTOKENNEXT_TOKEN_FIELD_MASK 0xffffffff +#define DQM_DQMOL_POPTOKENNEXT_TOKEN_FIELD_WIDTH 32 +#define DQM_DQMOL_POPTOKENNEXT_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_WORD0_DATA_FIELD; +#define DQM_WORD0_DATA_FIELD_MASK 0xffffffff +#define DQM_WORD0_DATA_FIELD_WIDTH 32 +#define DQM_WORD0_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_WORD1_DATA_FIELD; +#define DQM_WORD1_DATA_FIELD_MASK 0xffffffff +#define DQM_WORD1_DATA_FIELD_WIDTH 32 +#define DQM_WORD1_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_WORD2_DATA_FIELD; +#define DQM_WORD2_DATA_FIELD_MASK 0xffffffff +#define DQM_WORD2_DATA_FIELD_WIDTH 32 +#define DQM_WORD2_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec DQM_QueueSharedMem_qsmdata_DATA_FIELD; +#define DQM_QueueSharedMem_qsmdata_DATA_FIELD_MASK 0xffffffff +#define DQM_QueueSharedMem_qsmdata_DATA_FIELD_WIDTH 32 +#define DQM_QueueSharedMem_qsmdata_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_CTL_TP_MUX_CNTRL_FIELD; +#define FPM_FPM_CTL_TP_MUX_CNTRL_FIELD_MASK 0xf8000000 +#define FPM_FPM_CTL_TP_MUX_CNTRL_FIELD_WIDTH 5 +#define FPM_FPM_CTL_TP_MUX_CNTRL_FIELD_SHIFT 27 + +extern const ru_field_rec FPM_FPM_CTL_RESERVED0_FIELD; +#define FPM_FPM_CTL_RESERVED0_FIELD_MASK 0x04000000 +#define FPM_FPM_CTL_RESERVED0_FIELD_WIDTH 1 +#define FPM_FPM_CTL_RESERVED0_FIELD_SHIFT 26 + +extern const ru_field_rec FPM_FPM_CTL_MEM_CORRUPT_CHECK_DISABLE_FIELD; +#define FPM_FPM_CTL_MEM_CORRUPT_CHECK_DISABLE_FIELD_MASK 0x02000000 +#define FPM_FPM_CTL_MEM_CORRUPT_CHECK_DISABLE_FIELD_WIDTH 1 +#define FPM_FPM_CTL_MEM_CORRUPT_CHECK_DISABLE_FIELD_SHIFT 25 + +extern const ru_field_rec FPM_FPM_CTL_STOP_ALLOC_CACHE_LOAD_FIELD; +#define FPM_FPM_CTL_STOP_ALLOC_CACHE_LOAD_FIELD_MASK 0x01000000 +#define FPM_FPM_CTL_STOP_ALLOC_CACHE_LOAD_FIELD_WIDTH 1 +#define FPM_FPM_CTL_STOP_ALLOC_CACHE_LOAD_FIELD_SHIFT 24 + +extern const ru_field_rec FPM_FPM_CTL_RESERVED1_FIELD; +#define FPM_FPM_CTL_RESERVED1_FIELD_MASK 0x00fc0000 +#define FPM_FPM_CTL_RESERVED1_FIELD_WIDTH 6 +#define FPM_FPM_CTL_RESERVED1_FIELD_SHIFT 18 + +extern const ru_field_rec FPM_FPM_CTL_POOL2_ENABLE_FIELD; +#define FPM_FPM_CTL_POOL2_ENABLE_FIELD_MASK 0x00020000 +#define FPM_FPM_CTL_POOL2_ENABLE_FIELD_WIDTH 1 +#define FPM_FPM_CTL_POOL2_ENABLE_FIELD_SHIFT 17 + +extern const ru_field_rec FPM_FPM_CTL_POOL1_ENABLE_FIELD; +#define FPM_FPM_CTL_POOL1_ENABLE_FIELD_MASK 0x00010000 +#define FPM_FPM_CTL_POOL1_ENABLE_FIELD_WIDTH 1 +#define FPM_FPM_CTL_POOL1_ENABLE_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_FPM_CTL_RESERVED2_FIELD; +#define FPM_FPM_CTL_RESERVED2_FIELD_MASK 0x00008000 +#define FPM_FPM_CTL_RESERVED2_FIELD_WIDTH 1 +#define FPM_FPM_CTL_RESERVED2_FIELD_SHIFT 15 + +extern const ru_field_rec FPM_FPM_CTL_FPM_BB_SOFT_RESET_FIELD; +#define FPM_FPM_CTL_FPM_BB_SOFT_RESET_FIELD_MASK 0x00004000 +#define FPM_FPM_CTL_FPM_BB_SOFT_RESET_FIELD_WIDTH 1 +#define FPM_FPM_CTL_FPM_BB_SOFT_RESET_FIELD_SHIFT 14 + +extern const ru_field_rec FPM_FPM_CTL_RESERVED3_FIELD; +#define FPM_FPM_CTL_RESERVED3_FIELD_MASK 0x00003fe0 +#define FPM_FPM_CTL_RESERVED3_FIELD_WIDTH 9 +#define FPM_FPM_CTL_RESERVED3_FIELD_SHIFT 5 + +extern const ru_field_rec FPM_FPM_CTL_INIT_MEM_FIELD; +#define FPM_FPM_CTL_INIT_MEM_FIELD_MASK 0x00000010 +#define FPM_FPM_CTL_INIT_MEM_FIELD_WIDTH 1 +#define FPM_FPM_CTL_INIT_MEM_FIELD_SHIFT 4 + +extern const ru_field_rec FPM_FPM_CTL_INIT_MEM_POOL2_FIELD; +#define FPM_FPM_CTL_INIT_MEM_POOL2_FIELD_MASK 0x00000008 +#define FPM_FPM_CTL_INIT_MEM_POOL2_FIELD_WIDTH 1 +#define FPM_FPM_CTL_INIT_MEM_POOL2_FIELD_SHIFT 3 + +extern const ru_field_rec FPM_FPM_CTL_RESERVED4_FIELD; +#define FPM_FPM_CTL_RESERVED4_FIELD_MASK 0x00000007 +#define FPM_FPM_CTL_RESERVED4_FIELD_WIDTH 3 +#define FPM_FPM_CTL_RESERVED4_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_CFG1_RESERVED0_FIELD; +#define FPM_FPM_CFG1_RESERVED0_FIELD_MASK 0xfffffffe +#define FPM_FPM_CFG1_RESERVED0_FIELD_WIDTH 31 +#define FPM_FPM_CFG1_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec FPM_FPM_CFG1_POOL1_SEARCH_MODE_FIELD; +#define FPM_FPM_CFG1_POOL1_SEARCH_MODE_FIELD_MASK 0x00000001 +#define FPM_FPM_CFG1_POOL1_SEARCH_MODE_FIELD_WIDTH 1 +#define FPM_FPM_CFG1_POOL1_SEARCH_MODE_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_WEIGHT_DDR1_FREE_WEIGHT_FIELD; +#define FPM_FPM_WEIGHT_DDR1_FREE_WEIGHT_FIELD_MASK 0xff000000 +#define FPM_FPM_WEIGHT_DDR1_FREE_WEIGHT_FIELD_WIDTH 8 +#define FPM_FPM_WEIGHT_DDR1_FREE_WEIGHT_FIELD_SHIFT 24 + +extern const ru_field_rec FPM_FPM_WEIGHT_DDR1_ALLOC_WEIGHT_FIELD; +#define FPM_FPM_WEIGHT_DDR1_ALLOC_WEIGHT_FIELD_MASK 0x00ff0000 +#define FPM_FPM_WEIGHT_DDR1_ALLOC_WEIGHT_FIELD_WIDTH 8 +#define FPM_FPM_WEIGHT_DDR1_ALLOC_WEIGHT_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_FPM_WEIGHT_DDR0_FREE_WEIGHT_FIELD; +#define FPM_FPM_WEIGHT_DDR0_FREE_WEIGHT_FIELD_MASK 0x0000ff00 +#define FPM_FPM_WEIGHT_DDR0_FREE_WEIGHT_FIELD_WIDTH 8 +#define FPM_FPM_WEIGHT_DDR0_FREE_WEIGHT_FIELD_SHIFT 8 + +extern const ru_field_rec FPM_FPM_WEIGHT_DDR0_ALLOC_WEIGHT_FIELD; +#define FPM_FPM_WEIGHT_DDR0_ALLOC_WEIGHT_FIELD_MASK 0x000000ff +#define FPM_FPM_WEIGHT_DDR0_ALLOC_WEIGHT_FIELD_WIDTH 8 +#define FPM_FPM_WEIGHT_DDR0_ALLOC_WEIGHT_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_CFG_RESERVED0_FIELD; +#define FPM_FPM_BB_CFG_RESERVED0_FIELD_MASK 0xfffffffc +#define FPM_FPM_BB_CFG_RESERVED0_FIELD_WIDTH 30 +#define FPM_FPM_BB_CFG_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_FPM_BB_CFG_BB_DDR_SEL_FIELD; +#define FPM_FPM_BB_CFG_BB_DDR_SEL_FIELD_MASK 0x00000003 +#define FPM_FPM_BB_CFG_BB_DDR_SEL_FIELD_WIDTH 2 +#define FPM_FPM_BB_CFG_BB_DDR_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_RESERVED0_FIELD; +#define FPM_POOL1_INTR_MSK_RESERVED0_FIELD_MASK 0xffff8000 +#define FPM_POOL1_INTR_MSK_RESERVED0_FIELD_WIDTH 17 +#define FPM_POOL1_INTR_MSK_RESERVED0_FIELD_SHIFT 15 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_EXPIRED_TOKEN_RECOV_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_EXPIRED_TOKEN_RECOV_MSK_FIELD_MASK 0x00004000 +#define FPM_POOL1_INTR_MSK_EXPIRED_TOKEN_RECOV_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_EXPIRED_TOKEN_RECOV_MSK_FIELD_SHIFT 14 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_EXPIRED_TOKEN_DET_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_EXPIRED_TOKEN_DET_MSK_FIELD_MASK 0x00002000 +#define FPM_POOL1_INTR_MSK_EXPIRED_TOKEN_DET_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_EXPIRED_TOKEN_DET_MSK_FIELD_SHIFT 13 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_ILLEGAL_ALLOC_REQUEST_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_ILLEGAL_ALLOC_REQUEST_MSK_FIELD_MASK 0x00001000 +#define FPM_POOL1_INTR_MSK_ILLEGAL_ALLOC_REQUEST_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_ILLEGAL_ALLOC_REQUEST_MSK_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_ILLEGAL_ADDRESS_ACCESS_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_ILLEGAL_ADDRESS_ACCESS_MSK_FIELD_MASK 0x00000800 +#define FPM_POOL1_INTR_MSK_ILLEGAL_ADDRESS_ACCESS_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_ILLEGAL_ADDRESS_ACCESS_MSK_FIELD_SHIFT 11 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_XON_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_XON_MSK_FIELD_MASK 0x00000400 +#define FPM_POOL1_INTR_MSK_XON_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_XON_MSK_FIELD_SHIFT 10 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_XOFF_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_XOFF_MSK_FIELD_MASK 0x00000200 +#define FPM_POOL1_INTR_MSK_XOFF_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_XOFF_MSK_FIELD_SHIFT 9 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_MEMORY_CORRUPT_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_MEMORY_CORRUPT_MSK_FIELD_MASK 0x00000100 +#define FPM_POOL1_INTR_MSK_MEMORY_CORRUPT_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_MEMORY_CORRUPT_MSK_FIELD_SHIFT 8 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_POOL_DIS_FREE_MULTI_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_POOL_DIS_FREE_MULTI_MSK_FIELD_MASK 0x00000080 +#define FPM_POOL1_INTR_MSK_POOL_DIS_FREE_MULTI_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_POOL_DIS_FREE_MULTI_MSK_FIELD_SHIFT 7 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_MASK 0x00000040 +#define FPM_POOL1_INTR_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_SHIFT 6 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_MULTI_TOKEN_NO_VALID_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_MULTI_TOKEN_NO_VALID_MSK_FIELD_MASK 0x00000020 +#define FPM_POOL1_INTR_MSK_MULTI_TOKEN_NO_VALID_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_MULTI_TOKEN_NO_VALID_MSK_FIELD_SHIFT 5 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_MASK 0x00000010 +#define FPM_POOL1_INTR_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_SHIFT 4 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_FREE_TOKEN_NO_VALID_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_FREE_TOKEN_NO_VALID_MSK_FIELD_MASK 0x00000008 +#define FPM_POOL1_INTR_MSK_FREE_TOKEN_NO_VALID_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_FREE_TOKEN_NO_VALID_MSK_FIELD_SHIFT 3 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_POOL_FULL_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_POOL_FULL_MSK_FIELD_MASK 0x00000004 +#define FPM_POOL1_INTR_MSK_POOL_FULL_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_POOL_FULL_MSK_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_FREE_FIFO_FULL_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_FREE_FIFO_FULL_MSK_FIELD_MASK 0x00000002 +#define FPM_POOL1_INTR_MSK_FREE_FIFO_FULL_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_FREE_FIFO_FULL_MSK_FIELD_SHIFT 1 + +extern const ru_field_rec FPM_POOL1_INTR_MSK_ALLOC_FIFO_FULL_MSK_FIELD; +#define FPM_POOL1_INTR_MSK_ALLOC_FIFO_FULL_MSK_FIELD_MASK 0x00000001 +#define FPM_POOL1_INTR_MSK_ALLOC_FIFO_FULL_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_MSK_ALLOC_FIFO_FULL_MSK_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_INTR_STS_RESERVED0_FIELD; +#define FPM_POOL1_INTR_STS_RESERVED0_FIELD_MASK 0xffff8000 +#define FPM_POOL1_INTR_STS_RESERVED0_FIELD_WIDTH 17 +#define FPM_POOL1_INTR_STS_RESERVED0_FIELD_SHIFT 15 + +extern const ru_field_rec FPM_POOL1_INTR_STS_EXPIRED_TOKEN_RECOV_STS_FIELD; +#define FPM_POOL1_INTR_STS_EXPIRED_TOKEN_RECOV_STS_FIELD_MASK 0x00004000 +#define FPM_POOL1_INTR_STS_EXPIRED_TOKEN_RECOV_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_EXPIRED_TOKEN_RECOV_STS_FIELD_SHIFT 14 + +extern const ru_field_rec FPM_POOL1_INTR_STS_EXPIRED_TOKEN_DET_STS_FIELD; +#define FPM_POOL1_INTR_STS_EXPIRED_TOKEN_DET_STS_FIELD_MASK 0x00002000 +#define FPM_POOL1_INTR_STS_EXPIRED_TOKEN_DET_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_EXPIRED_TOKEN_DET_STS_FIELD_SHIFT 13 + +extern const ru_field_rec FPM_POOL1_INTR_STS_ILLEGAL_ALLOC_REQUEST_STS_FIELD; +#define FPM_POOL1_INTR_STS_ILLEGAL_ALLOC_REQUEST_STS_FIELD_MASK 0x00001000 +#define FPM_POOL1_INTR_STS_ILLEGAL_ALLOC_REQUEST_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_ILLEGAL_ALLOC_REQUEST_STS_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_POOL1_INTR_STS_ILLEGAL_ADDRESS_ACCESS_STS_FIELD; +#define FPM_POOL1_INTR_STS_ILLEGAL_ADDRESS_ACCESS_STS_FIELD_MASK 0x00000800 +#define FPM_POOL1_INTR_STS_ILLEGAL_ADDRESS_ACCESS_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_ILLEGAL_ADDRESS_ACCESS_STS_FIELD_SHIFT 11 + +extern const ru_field_rec FPM_POOL1_INTR_STS_XON_STATE_STS_FIELD; +#define FPM_POOL1_INTR_STS_XON_STATE_STS_FIELD_MASK 0x00000400 +#define FPM_POOL1_INTR_STS_XON_STATE_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_XON_STATE_STS_FIELD_SHIFT 10 + +extern const ru_field_rec FPM_POOL1_INTR_STS_XOFF_STATE_STS_FIELD; +#define FPM_POOL1_INTR_STS_XOFF_STATE_STS_FIELD_MASK 0x00000200 +#define FPM_POOL1_INTR_STS_XOFF_STATE_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_XOFF_STATE_STS_FIELD_SHIFT 9 + +extern const ru_field_rec FPM_POOL1_INTR_STS_MEMORY_CORRUPT_STS_FIELD; +#define FPM_POOL1_INTR_STS_MEMORY_CORRUPT_STS_FIELD_MASK 0x00000100 +#define FPM_POOL1_INTR_STS_MEMORY_CORRUPT_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_MEMORY_CORRUPT_STS_FIELD_SHIFT 8 + +extern const ru_field_rec FPM_POOL1_INTR_STS_POOL_DIS_FREE_MULTI_STS_FIELD; +#define FPM_POOL1_INTR_STS_POOL_DIS_FREE_MULTI_STS_FIELD_MASK 0x00000080 +#define FPM_POOL1_INTR_STS_POOL_DIS_FREE_MULTI_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_POOL_DIS_FREE_MULTI_STS_FIELD_SHIFT 7 + +extern const ru_field_rec FPM_POOL1_INTR_STS_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD; +#define FPM_POOL1_INTR_STS_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_MASK 0x00000040 +#define FPM_POOL1_INTR_STS_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_SHIFT 6 + +extern const ru_field_rec FPM_POOL1_INTR_STS_MULTI_TOKEN_NO_VALID_STS_FIELD; +#define FPM_POOL1_INTR_STS_MULTI_TOKEN_NO_VALID_STS_FIELD_MASK 0x00000020 +#define FPM_POOL1_INTR_STS_MULTI_TOKEN_NO_VALID_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_MULTI_TOKEN_NO_VALID_STS_FIELD_SHIFT 5 + +extern const ru_field_rec FPM_POOL1_INTR_STS_FREE_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD; +#define FPM_POOL1_INTR_STS_FREE_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_MASK 0x00000010 +#define FPM_POOL1_INTR_STS_FREE_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_FREE_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_SHIFT 4 + +extern const ru_field_rec FPM_POOL1_INTR_STS_FREE_TOKEN_NO_VALID_STS_FIELD; +#define FPM_POOL1_INTR_STS_FREE_TOKEN_NO_VALID_STS_FIELD_MASK 0x00000008 +#define FPM_POOL1_INTR_STS_FREE_TOKEN_NO_VALID_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_FREE_TOKEN_NO_VALID_STS_FIELD_SHIFT 3 + +extern const ru_field_rec FPM_POOL1_INTR_STS_POOL_FULL_STS_FIELD; +#define FPM_POOL1_INTR_STS_POOL_FULL_STS_FIELD_MASK 0x00000004 +#define FPM_POOL1_INTR_STS_POOL_FULL_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_POOL_FULL_STS_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_POOL1_INTR_STS_FREE_FIFO_FULL_STS_FIELD; +#define FPM_POOL1_INTR_STS_FREE_FIFO_FULL_STS_FIELD_MASK 0x00000002 +#define FPM_POOL1_INTR_STS_FREE_FIFO_FULL_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_FREE_FIFO_FULL_STS_FIELD_SHIFT 1 + +extern const ru_field_rec FPM_POOL1_INTR_STS_ALLOC_FIFO_FULL_STS_FIELD; +#define FPM_POOL1_INTR_STS_ALLOC_FIFO_FULL_STS_FIELD_MASK 0x00000001 +#define FPM_POOL1_INTR_STS_ALLOC_FIFO_FULL_STS_FIELD_WIDTH 1 +#define FPM_POOL1_INTR_STS_ALLOC_FIFO_FULL_STS_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_STALL_MSK_RESERVED0_FIELD; +#define FPM_POOL1_STALL_MSK_RESERVED0_FIELD_MASK 0xfffffe00 +#define FPM_POOL1_STALL_MSK_RESERVED0_FIELD_WIDTH 23 +#define FPM_POOL1_STALL_MSK_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec FPM_POOL1_STALL_MSK_MEMORY_CORRUPT_STALL_MSK_FIELD; +#define FPM_POOL1_STALL_MSK_MEMORY_CORRUPT_STALL_MSK_FIELD_MASK 0x00000100 +#define FPM_POOL1_STALL_MSK_MEMORY_CORRUPT_STALL_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_STALL_MSK_MEMORY_CORRUPT_STALL_MSK_FIELD_SHIFT 8 + +extern const ru_field_rec FPM_POOL1_STALL_MSK_RESERVED1_FIELD; +#define FPM_POOL1_STALL_MSK_RESERVED1_FIELD_MASK 0x00000080 +#define FPM_POOL1_STALL_MSK_RESERVED1_FIELD_WIDTH 1 +#define FPM_POOL1_STALL_MSK_RESERVED1_FIELD_SHIFT 7 + +extern const ru_field_rec FPM_POOL1_STALL_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD; +#define FPM_POOL1_STALL_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_MASK 0x00000040 +#define FPM_POOL1_STALL_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_STALL_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_SHIFT 6 + +extern const ru_field_rec FPM_POOL1_STALL_MSK_MULTI_TOKEN_NO_VALID_STALL_MSK_FIELD; +#define FPM_POOL1_STALL_MSK_MULTI_TOKEN_NO_VALID_STALL_MSK_FIELD_MASK 0x00000020 +#define FPM_POOL1_STALL_MSK_MULTI_TOKEN_NO_VALID_STALL_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_STALL_MSK_MULTI_TOKEN_NO_VALID_STALL_MSK_FIELD_SHIFT 5 + +extern const ru_field_rec FPM_POOL1_STALL_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD; +#define FPM_POOL1_STALL_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_MASK 0x00000010 +#define FPM_POOL1_STALL_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_STALL_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_SHIFT 4 + +extern const ru_field_rec FPM_POOL1_STALL_MSK_FREE_TOKEN_NO_VALID_STALL_MSK_FIELD; +#define FPM_POOL1_STALL_MSK_FREE_TOKEN_NO_VALID_STALL_MSK_FIELD_MASK 0x00000008 +#define FPM_POOL1_STALL_MSK_FREE_TOKEN_NO_VALID_STALL_MSK_FIELD_WIDTH 1 +#define FPM_POOL1_STALL_MSK_FREE_TOKEN_NO_VALID_STALL_MSK_FIELD_SHIFT 3 + +extern const ru_field_rec FPM_POOL1_STALL_MSK_RESERVED2_FIELD; +#define FPM_POOL1_STALL_MSK_RESERVED2_FIELD_MASK 0x00000007 +#define FPM_POOL1_STALL_MSK_RESERVED2_FIELD_WIDTH 3 +#define FPM_POOL1_STALL_MSK_RESERVED2_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_RESERVED0_FIELD; +#define FPM_POOL2_INTR_MSK_RESERVED0_FIELD_MASK 0xffff8000 +#define FPM_POOL2_INTR_MSK_RESERVED0_FIELD_WIDTH 17 +#define FPM_POOL2_INTR_MSK_RESERVED0_FIELD_SHIFT 15 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_EXPIRED_TOKEN_RECOV_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_EXPIRED_TOKEN_RECOV_MSK_FIELD_MASK 0x00004000 +#define FPM_POOL2_INTR_MSK_EXPIRED_TOKEN_RECOV_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_EXPIRED_TOKEN_RECOV_MSK_FIELD_SHIFT 14 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_EXPIRED_TOKEN_DET_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_EXPIRED_TOKEN_DET_MSK_FIELD_MASK 0x00002000 +#define FPM_POOL2_INTR_MSK_EXPIRED_TOKEN_DET_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_EXPIRED_TOKEN_DET_MSK_FIELD_SHIFT 13 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_ILLEGAL_ALLOC_REQUEST_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_ILLEGAL_ALLOC_REQUEST_MSK_FIELD_MASK 0x00001000 +#define FPM_POOL2_INTR_MSK_ILLEGAL_ALLOC_REQUEST_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_ILLEGAL_ALLOC_REQUEST_MSK_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_ILLEGAL_ADDRESS_ACCESS_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_ILLEGAL_ADDRESS_ACCESS_MSK_FIELD_MASK 0x00000800 +#define FPM_POOL2_INTR_MSK_ILLEGAL_ADDRESS_ACCESS_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_ILLEGAL_ADDRESS_ACCESS_MSK_FIELD_SHIFT 11 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_XON_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_XON_MSK_FIELD_MASK 0x00000400 +#define FPM_POOL2_INTR_MSK_XON_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_XON_MSK_FIELD_SHIFT 10 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_XOFF_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_XOFF_MSK_FIELD_MASK 0x00000200 +#define FPM_POOL2_INTR_MSK_XOFF_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_XOFF_MSK_FIELD_SHIFT 9 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_MEMORY_CORRUPT_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_MEMORY_CORRUPT_MSK_FIELD_MASK 0x00000100 +#define FPM_POOL2_INTR_MSK_MEMORY_CORRUPT_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_MEMORY_CORRUPT_MSK_FIELD_SHIFT 8 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_POOL_DIS_FREE_MULTI_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_POOL_DIS_FREE_MULTI_MSK_FIELD_MASK 0x00000080 +#define FPM_POOL2_INTR_MSK_POOL_DIS_FREE_MULTI_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_POOL_DIS_FREE_MULTI_MSK_FIELD_SHIFT 7 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_MASK 0x00000040 +#define FPM_POOL2_INTR_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_SHIFT 6 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_MULTI_TOKEN_NO_VALID_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_MULTI_TOKEN_NO_VALID_MSK_FIELD_MASK 0x00000020 +#define FPM_POOL2_INTR_MSK_MULTI_TOKEN_NO_VALID_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_MULTI_TOKEN_NO_VALID_MSK_FIELD_SHIFT 5 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_MASK 0x00000010 +#define FPM_POOL2_INTR_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_MSK_FIELD_SHIFT 4 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_FREE_TOKEN_NO_VALID_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_FREE_TOKEN_NO_VALID_MSK_FIELD_MASK 0x00000008 +#define FPM_POOL2_INTR_MSK_FREE_TOKEN_NO_VALID_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_FREE_TOKEN_NO_VALID_MSK_FIELD_SHIFT 3 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_POOL_FULL_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_POOL_FULL_MSK_FIELD_MASK 0x00000004 +#define FPM_POOL2_INTR_MSK_POOL_FULL_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_POOL_FULL_MSK_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_FREE_FIFO_FULL_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_FREE_FIFO_FULL_MSK_FIELD_MASK 0x00000002 +#define FPM_POOL2_INTR_MSK_FREE_FIFO_FULL_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_FREE_FIFO_FULL_MSK_FIELD_SHIFT 1 + +extern const ru_field_rec FPM_POOL2_INTR_MSK_ALLOC_FIFO_FULL_MSK_FIELD; +#define FPM_POOL2_INTR_MSK_ALLOC_FIFO_FULL_MSK_FIELD_MASK 0x00000001 +#define FPM_POOL2_INTR_MSK_ALLOC_FIFO_FULL_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_MSK_ALLOC_FIFO_FULL_MSK_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_INTR_STS_RESERVED0_FIELD; +#define FPM_POOL2_INTR_STS_RESERVED0_FIELD_MASK 0xffff8000 +#define FPM_POOL2_INTR_STS_RESERVED0_FIELD_WIDTH 17 +#define FPM_POOL2_INTR_STS_RESERVED0_FIELD_SHIFT 15 + +extern const ru_field_rec FPM_POOL2_INTR_STS_EXPIRED_TOKEN_RECOV_STS_FIELD; +#define FPM_POOL2_INTR_STS_EXPIRED_TOKEN_RECOV_STS_FIELD_MASK 0x00004000 +#define FPM_POOL2_INTR_STS_EXPIRED_TOKEN_RECOV_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_EXPIRED_TOKEN_RECOV_STS_FIELD_SHIFT 14 + +extern const ru_field_rec FPM_POOL2_INTR_STS_EXPIRED_TOKEN_DET_STS_FIELD; +#define FPM_POOL2_INTR_STS_EXPIRED_TOKEN_DET_STS_FIELD_MASK 0x00002000 +#define FPM_POOL2_INTR_STS_EXPIRED_TOKEN_DET_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_EXPIRED_TOKEN_DET_STS_FIELD_SHIFT 13 + +extern const ru_field_rec FPM_POOL2_INTR_STS_ILLEGAL_ALLOC_REQUEST_STS_FIELD; +#define FPM_POOL2_INTR_STS_ILLEGAL_ALLOC_REQUEST_STS_FIELD_MASK 0x00001000 +#define FPM_POOL2_INTR_STS_ILLEGAL_ALLOC_REQUEST_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_ILLEGAL_ALLOC_REQUEST_STS_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_POOL2_INTR_STS_ILLEGAL_ADDRESS_ACCESS_STS_FIELD; +#define FPM_POOL2_INTR_STS_ILLEGAL_ADDRESS_ACCESS_STS_FIELD_MASK 0x00000800 +#define FPM_POOL2_INTR_STS_ILLEGAL_ADDRESS_ACCESS_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_ILLEGAL_ADDRESS_ACCESS_STS_FIELD_SHIFT 11 + +extern const ru_field_rec FPM_POOL2_INTR_STS_XON_STATE_STS_FIELD; +#define FPM_POOL2_INTR_STS_XON_STATE_STS_FIELD_MASK 0x00000400 +#define FPM_POOL2_INTR_STS_XON_STATE_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_XON_STATE_STS_FIELD_SHIFT 10 + +extern const ru_field_rec FPM_POOL2_INTR_STS_XOFF_STATE_STS_FIELD; +#define FPM_POOL2_INTR_STS_XOFF_STATE_STS_FIELD_MASK 0x00000200 +#define FPM_POOL2_INTR_STS_XOFF_STATE_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_XOFF_STATE_STS_FIELD_SHIFT 9 + +extern const ru_field_rec FPM_POOL2_INTR_STS_MEMORY_CORRUPT_STS_FIELD; +#define FPM_POOL2_INTR_STS_MEMORY_CORRUPT_STS_FIELD_MASK 0x00000100 +#define FPM_POOL2_INTR_STS_MEMORY_CORRUPT_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_MEMORY_CORRUPT_STS_FIELD_SHIFT 8 + +extern const ru_field_rec FPM_POOL2_INTR_STS_POOL_DIS_FREE_MULTI_STS_FIELD; +#define FPM_POOL2_INTR_STS_POOL_DIS_FREE_MULTI_STS_FIELD_MASK 0x00000080 +#define FPM_POOL2_INTR_STS_POOL_DIS_FREE_MULTI_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_POOL_DIS_FREE_MULTI_STS_FIELD_SHIFT 7 + +extern const ru_field_rec FPM_POOL2_INTR_STS_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD; +#define FPM_POOL2_INTR_STS_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_MASK 0x00000040 +#define FPM_POOL2_INTR_STS_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_SHIFT 6 + +extern const ru_field_rec FPM_POOL2_INTR_STS_MULTI_TOKEN_NO_VALID_STS_FIELD; +#define FPM_POOL2_INTR_STS_MULTI_TOKEN_NO_VALID_STS_FIELD_MASK 0x00000020 +#define FPM_POOL2_INTR_STS_MULTI_TOKEN_NO_VALID_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_MULTI_TOKEN_NO_VALID_STS_FIELD_SHIFT 5 + +extern const ru_field_rec FPM_POOL2_INTR_STS_FREE_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD; +#define FPM_POOL2_INTR_STS_FREE_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_MASK 0x00000010 +#define FPM_POOL2_INTR_STS_FREE_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_FREE_TOKEN_INDEX_OUT_OF_RANGE_STS_FIELD_SHIFT 4 + +extern const ru_field_rec FPM_POOL2_INTR_STS_FREE_TOKEN_NO_VALID_STS_FIELD; +#define FPM_POOL2_INTR_STS_FREE_TOKEN_NO_VALID_STS_FIELD_MASK 0x00000008 +#define FPM_POOL2_INTR_STS_FREE_TOKEN_NO_VALID_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_FREE_TOKEN_NO_VALID_STS_FIELD_SHIFT 3 + +extern const ru_field_rec FPM_POOL2_INTR_STS_POOL_FULL_STS_FIELD; +#define FPM_POOL2_INTR_STS_POOL_FULL_STS_FIELD_MASK 0x00000004 +#define FPM_POOL2_INTR_STS_POOL_FULL_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_POOL_FULL_STS_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_POOL2_INTR_STS_FREE_FIFO_FULL_STS_FIELD; +#define FPM_POOL2_INTR_STS_FREE_FIFO_FULL_STS_FIELD_MASK 0x00000002 +#define FPM_POOL2_INTR_STS_FREE_FIFO_FULL_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_FREE_FIFO_FULL_STS_FIELD_SHIFT 1 + +extern const ru_field_rec FPM_POOL2_INTR_STS_ALLOC_FIFO_FULL_STS_FIELD; +#define FPM_POOL2_INTR_STS_ALLOC_FIFO_FULL_STS_FIELD_MASK 0x00000001 +#define FPM_POOL2_INTR_STS_ALLOC_FIFO_FULL_STS_FIELD_WIDTH 1 +#define FPM_POOL2_INTR_STS_ALLOC_FIFO_FULL_STS_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_STALL_MSK_RESERVED0_FIELD; +#define FPM_POOL2_STALL_MSK_RESERVED0_FIELD_MASK 0xfffffe00 +#define FPM_POOL2_STALL_MSK_RESERVED0_FIELD_WIDTH 23 +#define FPM_POOL2_STALL_MSK_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec FPM_POOL2_STALL_MSK_MEMORY_CORRUPT_STALL_MSK_FIELD; +#define FPM_POOL2_STALL_MSK_MEMORY_CORRUPT_STALL_MSK_FIELD_MASK 0x00000100 +#define FPM_POOL2_STALL_MSK_MEMORY_CORRUPT_STALL_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_STALL_MSK_MEMORY_CORRUPT_STALL_MSK_FIELD_SHIFT 8 + +extern const ru_field_rec FPM_POOL2_STALL_MSK_RESERVED1_FIELD; +#define FPM_POOL2_STALL_MSK_RESERVED1_FIELD_MASK 0x00000080 +#define FPM_POOL2_STALL_MSK_RESERVED1_FIELD_WIDTH 1 +#define FPM_POOL2_STALL_MSK_RESERVED1_FIELD_SHIFT 7 + +extern const ru_field_rec FPM_POOL2_STALL_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD; +#define FPM_POOL2_STALL_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_MASK 0x00000040 +#define FPM_POOL2_STALL_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_STALL_MSK_MULTI_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_SHIFT 6 + +extern const ru_field_rec FPM_POOL2_STALL_MSK_MULTI_TOKEN_NO_VALID_STALL_MSK_FIELD; +#define FPM_POOL2_STALL_MSK_MULTI_TOKEN_NO_VALID_STALL_MSK_FIELD_MASK 0x00000020 +#define FPM_POOL2_STALL_MSK_MULTI_TOKEN_NO_VALID_STALL_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_STALL_MSK_MULTI_TOKEN_NO_VALID_STALL_MSK_FIELD_SHIFT 5 + +extern const ru_field_rec FPM_POOL2_STALL_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD; +#define FPM_POOL2_STALL_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_MASK 0x00000010 +#define FPM_POOL2_STALL_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_STALL_MSK_FREE_TOKEN_INDEX_OUT_OF_RANGE_STALL_MSK_FIELD_SHIFT 4 + +extern const ru_field_rec FPM_POOL2_STALL_MSK_FREE_TOKEN_NO_VALID_STALL_MSK_FIELD; +#define FPM_POOL2_STALL_MSK_FREE_TOKEN_NO_VALID_STALL_MSK_FIELD_MASK 0x00000008 +#define FPM_POOL2_STALL_MSK_FREE_TOKEN_NO_VALID_STALL_MSK_FIELD_WIDTH 1 +#define FPM_POOL2_STALL_MSK_FREE_TOKEN_NO_VALID_STALL_MSK_FIELD_SHIFT 3 + +extern const ru_field_rec FPM_POOL2_STALL_MSK_RESERVED2_FIELD; +#define FPM_POOL2_STALL_MSK_RESERVED2_FIELD_MASK 0x00000007 +#define FPM_POOL2_STALL_MSK_RESERVED2_FIELD_WIDTH 3 +#define FPM_POOL2_STALL_MSK_RESERVED2_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_CFG1_RESERVED0_FIELD; +#define FPM_POOL1_CFG1_RESERVED0_FIELD_MASK 0xf8000000 +#define FPM_POOL1_CFG1_RESERVED0_FIELD_WIDTH 5 +#define FPM_POOL1_CFG1_RESERVED0_FIELD_SHIFT 27 + +extern const ru_field_rec FPM_POOL1_CFG1_FPM_BUF_SIZE_FIELD; +#define FPM_POOL1_CFG1_FPM_BUF_SIZE_FIELD_MASK 0x07000000 +#define FPM_POOL1_CFG1_FPM_BUF_SIZE_FIELD_WIDTH 3 +#define FPM_POOL1_CFG1_FPM_BUF_SIZE_FIELD_SHIFT 24 + +extern const ru_field_rec FPM_POOL1_CFG1_RESERVED1_FIELD; +#define FPM_POOL1_CFG1_RESERVED1_FIELD_MASK 0x00ffffff +#define FPM_POOL1_CFG1_RESERVED1_FIELD_WIDTH 24 +#define FPM_POOL1_CFG1_RESERVED1_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_CFG2_POOL_BASE_ADDRESS_FIELD; +#define FPM_POOL1_CFG2_POOL_BASE_ADDRESS_FIELD_MASK 0xfffffffc +#define FPM_POOL1_CFG2_POOL_BASE_ADDRESS_FIELD_WIDTH 30 +#define FPM_POOL1_CFG2_POOL_BASE_ADDRESS_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_POOL1_CFG2_RESERVED0_FIELD; +#define FPM_POOL1_CFG2_RESERVED0_FIELD_MASK 0x00000003 +#define FPM_POOL1_CFG2_RESERVED0_FIELD_WIDTH 2 +#define FPM_POOL1_CFG2_RESERVED0_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_CFG3_POOL_BASE_ADDRESS_POOL2_FIELD; +#define FPM_POOL1_CFG3_POOL_BASE_ADDRESS_POOL2_FIELD_MASK 0xfffffffc +#define FPM_POOL1_CFG3_POOL_BASE_ADDRESS_POOL2_FIELD_WIDTH 30 +#define FPM_POOL1_CFG3_POOL_BASE_ADDRESS_POOL2_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_POOL1_CFG3_RESERVED0_FIELD; +#define FPM_POOL1_CFG3_RESERVED0_FIELD_MASK 0x00000003 +#define FPM_POOL1_CFG3_RESERVED0_FIELD_WIDTH 2 +#define FPM_POOL1_CFG3_RESERVED0_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_STAT1_OVRFL_FIELD; +#define FPM_POOL1_STAT1_OVRFL_FIELD_MASK 0xffff0000 +#define FPM_POOL1_STAT1_OVRFL_FIELD_WIDTH 16 +#define FPM_POOL1_STAT1_OVRFL_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_POOL1_STAT1_UNDRFL_FIELD; +#define FPM_POOL1_STAT1_UNDRFL_FIELD_MASK 0x0000ffff +#define FPM_POOL1_STAT1_UNDRFL_FIELD_WIDTH 16 +#define FPM_POOL1_STAT1_UNDRFL_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_STAT2_POOL_FULL_FIELD; +#define FPM_POOL1_STAT2_POOL_FULL_FIELD_MASK 0x80000000 +#define FPM_POOL1_STAT2_POOL_FULL_FIELD_WIDTH 1 +#define FPM_POOL1_STAT2_POOL_FULL_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL1_STAT2_RESERVED0_FIELD; +#define FPM_POOL1_STAT2_RESERVED0_FIELD_MASK 0x40000000 +#define FPM_POOL1_STAT2_RESERVED0_FIELD_WIDTH 1 +#define FPM_POOL1_STAT2_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec FPM_POOL1_STAT2_FREE_FIFO_FULL_FIELD; +#define FPM_POOL1_STAT2_FREE_FIFO_FULL_FIELD_MASK 0x20000000 +#define FPM_POOL1_STAT2_FREE_FIFO_FULL_FIELD_WIDTH 1 +#define FPM_POOL1_STAT2_FREE_FIFO_FULL_FIELD_SHIFT 29 + +extern const ru_field_rec FPM_POOL1_STAT2_FREE_FIFO_EMPTY_FIELD; +#define FPM_POOL1_STAT2_FREE_FIFO_EMPTY_FIELD_MASK 0x10000000 +#define FPM_POOL1_STAT2_FREE_FIFO_EMPTY_FIELD_WIDTH 1 +#define FPM_POOL1_STAT2_FREE_FIFO_EMPTY_FIELD_SHIFT 28 + +extern const ru_field_rec FPM_POOL1_STAT2_ALLOC_FIFO_FULL_FIELD; +#define FPM_POOL1_STAT2_ALLOC_FIFO_FULL_FIELD_MASK 0x08000000 +#define FPM_POOL1_STAT2_ALLOC_FIFO_FULL_FIELD_WIDTH 1 +#define FPM_POOL1_STAT2_ALLOC_FIFO_FULL_FIELD_SHIFT 27 + +extern const ru_field_rec FPM_POOL1_STAT2_ALLOC_FIFO_EMPTY_FIELD; +#define FPM_POOL1_STAT2_ALLOC_FIFO_EMPTY_FIELD_MASK 0x04000000 +#define FPM_POOL1_STAT2_ALLOC_FIFO_EMPTY_FIELD_WIDTH 1 +#define FPM_POOL1_STAT2_ALLOC_FIFO_EMPTY_FIELD_SHIFT 26 + +extern const ru_field_rec FPM_POOL1_STAT2_RESERVED1_FIELD; +#define FPM_POOL1_STAT2_RESERVED1_FIELD_MASK 0x03fc0000 +#define FPM_POOL1_STAT2_RESERVED1_FIELD_WIDTH 8 +#define FPM_POOL1_STAT2_RESERVED1_FIELD_SHIFT 18 + +extern const ru_field_rec FPM_POOL1_STAT2_NUM_OF_TOKENS_AVAILABLE_FIELD; +#define FPM_POOL1_STAT2_NUM_OF_TOKENS_AVAILABLE_FIELD_MASK 0x0003ffff +#define FPM_POOL1_STAT2_NUM_OF_TOKENS_AVAILABLE_FIELD_WIDTH 18 +#define FPM_POOL1_STAT2_NUM_OF_TOKENS_AVAILABLE_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_STAT3_RESERVED0_FIELD; +#define FPM_POOL1_STAT3_RESERVED0_FIELD_MASK 0xfffc0000 +#define FPM_POOL1_STAT3_RESERVED0_FIELD_WIDTH 14 +#define FPM_POOL1_STAT3_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec FPM_POOL1_STAT3_NUM_OF_NOT_VALID_TOKEN_FREES_FIELD; +#define FPM_POOL1_STAT3_NUM_OF_NOT_VALID_TOKEN_FREES_FIELD_MASK 0x0003ffff +#define FPM_POOL1_STAT3_NUM_OF_NOT_VALID_TOKEN_FREES_FIELD_WIDTH 18 +#define FPM_POOL1_STAT3_NUM_OF_NOT_VALID_TOKEN_FREES_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_STAT4_RESERVED0_FIELD; +#define FPM_POOL1_STAT4_RESERVED0_FIELD_MASK 0xfffc0000 +#define FPM_POOL1_STAT4_RESERVED0_FIELD_WIDTH 14 +#define FPM_POOL1_STAT4_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec FPM_POOL1_STAT4_NUM_OF_NOT_VALID_TOKEN_MULTI_FIELD; +#define FPM_POOL1_STAT4_NUM_OF_NOT_VALID_TOKEN_MULTI_FIELD_MASK 0x0003ffff +#define FPM_POOL1_STAT4_NUM_OF_NOT_VALID_TOKEN_MULTI_FIELD_WIDTH 18 +#define FPM_POOL1_STAT4_NUM_OF_NOT_VALID_TOKEN_MULTI_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_VALID_FIELD; +#define FPM_POOL1_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL1_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL1_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL1_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_FIELD; +#define FPM_POOL1_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_FIELD_MASK 0x7fffffff +#define FPM_POOL1_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_FIELD_WIDTH 31 +#define FPM_POOL1_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_STAT6_INVALID_FREE_TOKEN_VALID_FIELD; +#define FPM_POOL1_STAT6_INVALID_FREE_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL1_STAT6_INVALID_FREE_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL1_STAT6_INVALID_FREE_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL1_STAT6_INVALID_FREE_TOKEN_FIELD; +#define FPM_POOL1_STAT6_INVALID_FREE_TOKEN_FIELD_MASK 0x7fffffff +#define FPM_POOL1_STAT6_INVALID_FREE_TOKEN_FIELD_WIDTH 31 +#define FPM_POOL1_STAT6_INVALID_FREE_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_STAT7_INVALID_MCAST_TOKEN_VALID_FIELD; +#define FPM_POOL1_STAT7_INVALID_MCAST_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL1_STAT7_INVALID_MCAST_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL1_STAT7_INVALID_MCAST_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL1_STAT7_INVALID_MCAST_TOKEN_FIELD; +#define FPM_POOL1_STAT7_INVALID_MCAST_TOKEN_FIELD_MASK 0x7fffffff +#define FPM_POOL1_STAT7_INVALID_MCAST_TOKEN_FIELD_WIDTH 31 +#define FPM_POOL1_STAT7_INVALID_MCAST_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_STAT8_RESERVED0_FIELD; +#define FPM_POOL1_STAT8_RESERVED0_FIELD_MASK 0xfffc0000 +#define FPM_POOL1_STAT8_RESERVED0_FIELD_WIDTH 14 +#define FPM_POOL1_STAT8_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec FPM_POOL1_STAT8_TOKENS_AVAILABLE_LOW_WTMK_FIELD; +#define FPM_POOL1_STAT8_TOKENS_AVAILABLE_LOW_WTMK_FIELD_MASK 0x0003ffff +#define FPM_POOL1_STAT8_TOKENS_AVAILABLE_LOW_WTMK_FIELD_WIDTH 18 +#define FPM_POOL1_STAT8_TOKENS_AVAILABLE_LOW_WTMK_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_STAT1_OVRFL_FIELD; +#define FPM_POOL2_STAT1_OVRFL_FIELD_MASK 0xffff0000 +#define FPM_POOL2_STAT1_OVRFL_FIELD_WIDTH 16 +#define FPM_POOL2_STAT1_OVRFL_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_POOL2_STAT1_UNDRFL_FIELD; +#define FPM_POOL2_STAT1_UNDRFL_FIELD_MASK 0x0000ffff +#define FPM_POOL2_STAT1_UNDRFL_FIELD_WIDTH 16 +#define FPM_POOL2_STAT1_UNDRFL_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_STAT2_POOL_FULL_FIELD; +#define FPM_POOL2_STAT2_POOL_FULL_FIELD_MASK 0x80000000 +#define FPM_POOL2_STAT2_POOL_FULL_FIELD_WIDTH 1 +#define FPM_POOL2_STAT2_POOL_FULL_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL2_STAT2_RESERVED0_FIELD; +#define FPM_POOL2_STAT2_RESERVED0_FIELD_MASK 0x40000000 +#define FPM_POOL2_STAT2_RESERVED0_FIELD_WIDTH 1 +#define FPM_POOL2_STAT2_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec FPM_POOL2_STAT2_FREE_FIFO_FULL_FIELD; +#define FPM_POOL2_STAT2_FREE_FIFO_FULL_FIELD_MASK 0x20000000 +#define FPM_POOL2_STAT2_FREE_FIFO_FULL_FIELD_WIDTH 1 +#define FPM_POOL2_STAT2_FREE_FIFO_FULL_FIELD_SHIFT 29 + +extern const ru_field_rec FPM_POOL2_STAT2_FREE_FIFO_EMPTY_FIELD; +#define FPM_POOL2_STAT2_FREE_FIFO_EMPTY_FIELD_MASK 0x10000000 +#define FPM_POOL2_STAT2_FREE_FIFO_EMPTY_FIELD_WIDTH 1 +#define FPM_POOL2_STAT2_FREE_FIFO_EMPTY_FIELD_SHIFT 28 + +extern const ru_field_rec FPM_POOL2_STAT2_ALLOC_FIFO_FULL_FIELD; +#define FPM_POOL2_STAT2_ALLOC_FIFO_FULL_FIELD_MASK 0x08000000 +#define FPM_POOL2_STAT2_ALLOC_FIFO_FULL_FIELD_WIDTH 1 +#define FPM_POOL2_STAT2_ALLOC_FIFO_FULL_FIELD_SHIFT 27 + +extern const ru_field_rec FPM_POOL2_STAT2_ALLOC_FIFO_EMPTY_FIELD; +#define FPM_POOL2_STAT2_ALLOC_FIFO_EMPTY_FIELD_MASK 0x04000000 +#define FPM_POOL2_STAT2_ALLOC_FIFO_EMPTY_FIELD_WIDTH 1 +#define FPM_POOL2_STAT2_ALLOC_FIFO_EMPTY_FIELD_SHIFT 26 + +extern const ru_field_rec FPM_POOL2_STAT2_RESERVED1_FIELD; +#define FPM_POOL2_STAT2_RESERVED1_FIELD_MASK 0x03fc0000 +#define FPM_POOL2_STAT2_RESERVED1_FIELD_WIDTH 8 +#define FPM_POOL2_STAT2_RESERVED1_FIELD_SHIFT 18 + +extern const ru_field_rec FPM_POOL2_STAT2_NUM_OF_TOKENS_AVAILABLE_FIELD; +#define FPM_POOL2_STAT2_NUM_OF_TOKENS_AVAILABLE_FIELD_MASK 0x0003ffff +#define FPM_POOL2_STAT2_NUM_OF_TOKENS_AVAILABLE_FIELD_WIDTH 18 +#define FPM_POOL2_STAT2_NUM_OF_TOKENS_AVAILABLE_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_STAT3_RESERVED0_FIELD; +#define FPM_POOL2_STAT3_RESERVED0_FIELD_MASK 0xfffc0000 +#define FPM_POOL2_STAT3_RESERVED0_FIELD_WIDTH 14 +#define FPM_POOL2_STAT3_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec FPM_POOL2_STAT3_NUM_OF_NOT_VALID_TOKEN_FREES_FIELD; +#define FPM_POOL2_STAT3_NUM_OF_NOT_VALID_TOKEN_FREES_FIELD_MASK 0x0003ffff +#define FPM_POOL2_STAT3_NUM_OF_NOT_VALID_TOKEN_FREES_FIELD_WIDTH 18 +#define FPM_POOL2_STAT3_NUM_OF_NOT_VALID_TOKEN_FREES_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_STAT4_RESERVED0_FIELD; +#define FPM_POOL2_STAT4_RESERVED0_FIELD_MASK 0xfffc0000 +#define FPM_POOL2_STAT4_RESERVED0_FIELD_WIDTH 14 +#define FPM_POOL2_STAT4_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec FPM_POOL2_STAT4_NUM_OF_NOT_VALID_TOKEN_MULTI_FIELD; +#define FPM_POOL2_STAT4_NUM_OF_NOT_VALID_TOKEN_MULTI_FIELD_MASK 0x0003ffff +#define FPM_POOL2_STAT4_NUM_OF_NOT_VALID_TOKEN_MULTI_FIELD_WIDTH 18 +#define FPM_POOL2_STAT4_NUM_OF_NOT_VALID_TOKEN_MULTI_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_VALID_FIELD; +#define FPM_POOL2_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL2_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL2_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL2_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_FIELD; +#define FPM_POOL2_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_FIELD_MASK 0x7fffffff +#define FPM_POOL2_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_FIELD_WIDTH 31 +#define FPM_POOL2_STAT5_MEM_CORRUPT_STS_RELATED_ALLOC_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_STAT6_INVALID_FREE_TOKEN_VALID_FIELD; +#define FPM_POOL2_STAT6_INVALID_FREE_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL2_STAT6_INVALID_FREE_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL2_STAT6_INVALID_FREE_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL2_STAT6_INVALID_FREE_TOKEN_FIELD; +#define FPM_POOL2_STAT6_INVALID_FREE_TOKEN_FIELD_MASK 0x7fffffff +#define FPM_POOL2_STAT6_INVALID_FREE_TOKEN_FIELD_WIDTH 31 +#define FPM_POOL2_STAT6_INVALID_FREE_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_STAT7_INVALID_MCAST_TOKEN_VALID_FIELD; +#define FPM_POOL2_STAT7_INVALID_MCAST_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL2_STAT7_INVALID_MCAST_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL2_STAT7_INVALID_MCAST_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL2_STAT7_INVALID_MCAST_TOKEN_FIELD; +#define FPM_POOL2_STAT7_INVALID_MCAST_TOKEN_FIELD_MASK 0x7fffffff +#define FPM_POOL2_STAT7_INVALID_MCAST_TOKEN_FIELD_WIDTH 31 +#define FPM_POOL2_STAT7_INVALID_MCAST_TOKEN_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_STAT8_RESERVED0_FIELD; +#define FPM_POOL2_STAT8_RESERVED0_FIELD_MASK 0xfffc0000 +#define FPM_POOL2_STAT8_RESERVED0_FIELD_WIDTH 14 +#define FPM_POOL2_STAT8_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec FPM_POOL2_STAT8_TOKENS_AVAILABLE_LOW_WTMK_FIELD; +#define FPM_POOL2_STAT8_TOKENS_AVAILABLE_LOW_WTMK_FIELD_MASK 0x0003ffff +#define FPM_POOL2_STAT8_TOKENS_AVAILABLE_LOW_WTMK_FIELD_WIDTH 18 +#define FPM_POOL2_STAT8_TOKENS_AVAILABLE_LOW_WTMK_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_XON_XOFF_CFG_XON_THRESHOLD_FIELD; +#define FPM_POOL1_XON_XOFF_CFG_XON_THRESHOLD_FIELD_MASK 0xffff0000 +#define FPM_POOL1_XON_XOFF_CFG_XON_THRESHOLD_FIELD_WIDTH 16 +#define FPM_POOL1_XON_XOFF_CFG_XON_THRESHOLD_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_POOL1_XON_XOFF_CFG_XOFF_THRESHOLD_FIELD; +#define FPM_POOL1_XON_XOFF_CFG_XOFF_THRESHOLD_FIELD_MASK 0x0000ffff +#define FPM_POOL1_XON_XOFF_CFG_XOFF_THRESHOLD_FIELD_WIDTH 16 +#define FPM_POOL1_XON_XOFF_CFG_XOFF_THRESHOLD_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_NOT_EMPTY_CFG_RESERVED0_FIELD; +#define FPM_FPM_NOT_EMPTY_CFG_RESERVED0_FIELD_MASK 0xffffffc0 +#define FPM_FPM_NOT_EMPTY_CFG_RESERVED0_FIELD_WIDTH 26 +#define FPM_FPM_NOT_EMPTY_CFG_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec FPM_FPM_NOT_EMPTY_CFG_NOT_EMPTY_THRESHOLD_FIELD; +#define FPM_FPM_NOT_EMPTY_CFG_NOT_EMPTY_THRESHOLD_FIELD_MASK 0x0000003f +#define FPM_FPM_NOT_EMPTY_CFG_NOT_EMPTY_THRESHOLD_FIELD_WIDTH 6 +#define FPM_FPM_NOT_EMPTY_CFG_NOT_EMPTY_THRESHOLD_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_MEM_CTL_MEM_WR_FIELD; +#define FPM_MEM_CTL_MEM_WR_FIELD_MASK 0x80000000 +#define FPM_MEM_CTL_MEM_WR_FIELD_WIDTH 1 +#define FPM_MEM_CTL_MEM_WR_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_MEM_CTL_MEM_RD_FIELD; +#define FPM_MEM_CTL_MEM_RD_FIELD_MASK 0x40000000 +#define FPM_MEM_CTL_MEM_RD_FIELD_WIDTH 1 +#define FPM_MEM_CTL_MEM_RD_FIELD_SHIFT 30 + +extern const ru_field_rec FPM_MEM_CTL_MEM_SEL_FIELD; +#define FPM_MEM_CTL_MEM_SEL_FIELD_MASK 0x30000000 +#define FPM_MEM_CTL_MEM_SEL_FIELD_WIDTH 2 +#define FPM_MEM_CTL_MEM_SEL_FIELD_SHIFT 28 + +extern const ru_field_rec FPM_MEM_CTL_RESERVED0_FIELD; +#define FPM_MEM_CTL_RESERVED0_FIELD_MASK 0x0ffc0000 +#define FPM_MEM_CTL_RESERVED0_FIELD_WIDTH 10 +#define FPM_MEM_CTL_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec FPM_MEM_CTL_MEM_ADDR_FIELD; +#define FPM_MEM_CTL_MEM_ADDR_FIELD_MASK 0x0003fffc +#define FPM_MEM_CTL_MEM_ADDR_FIELD_WIDTH 16 +#define FPM_MEM_CTL_MEM_ADDR_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_MEM_CTL_RESERVED1_FIELD; +#define FPM_MEM_CTL_RESERVED1_FIELD_MASK 0x00000003 +#define FPM_MEM_CTL_RESERVED1_FIELD_WIDTH 2 +#define FPM_MEM_CTL_RESERVED1_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_MEM_DATA1_MEM_DATA1_FIELD; +#define FPM_MEM_DATA1_MEM_DATA1_FIELD_MASK 0xffffffff +#define FPM_MEM_DATA1_MEM_DATA1_FIELD_WIDTH 32 +#define FPM_MEM_DATA1_MEM_DATA1_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_MEM_DATA2_MEM_DATA2_FIELD; +#define FPM_MEM_DATA2_MEM_DATA2_FIELD_MASK 0xffffffff +#define FPM_MEM_DATA2_MEM_DATA2_FIELD_WIDTH 32 +#define FPM_MEM_DATA2_MEM_DATA2_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_TOKEN_RECOVER_CTL_RESERVED0_FIELD; +#define FPM_TOKEN_RECOVER_CTL_RESERVED0_FIELD_MASK 0xffffff80 +#define FPM_TOKEN_RECOVER_CTL_RESERVED0_FIELD_WIDTH 25 +#define FPM_TOKEN_RECOVER_CTL_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec FPM_TOKEN_RECOVER_CTL_CLR_RECOVERED_TOKEN_COUNT_FIELD; +#define FPM_TOKEN_RECOVER_CTL_CLR_RECOVERED_TOKEN_COUNT_FIELD_MASK 0x00000040 +#define FPM_TOKEN_RECOVER_CTL_CLR_RECOVERED_TOKEN_COUNT_FIELD_WIDTH 1 +#define FPM_TOKEN_RECOVER_CTL_CLR_RECOVERED_TOKEN_COUNT_FIELD_SHIFT 6 + +extern const ru_field_rec FPM_TOKEN_RECOVER_CTL_CLR_EXPIRED_TOKEN_COUNT_FIELD; +#define FPM_TOKEN_RECOVER_CTL_CLR_EXPIRED_TOKEN_COUNT_FIELD_MASK 0x00000020 +#define FPM_TOKEN_RECOVER_CTL_CLR_EXPIRED_TOKEN_COUNT_FIELD_WIDTH 1 +#define FPM_TOKEN_RECOVER_CTL_CLR_EXPIRED_TOKEN_COUNT_FIELD_SHIFT 5 + +extern const ru_field_rec FPM_TOKEN_RECOVER_CTL_FORCE_TOKEN_RECLAIM_FIELD; +#define FPM_TOKEN_RECOVER_CTL_FORCE_TOKEN_RECLAIM_FIELD_MASK 0x00000010 +#define FPM_TOKEN_RECOVER_CTL_FORCE_TOKEN_RECLAIM_FIELD_WIDTH 1 +#define FPM_TOKEN_RECOVER_CTL_FORCE_TOKEN_RECLAIM_FIELD_SHIFT 4 + +extern const ru_field_rec FPM_TOKEN_RECOVER_CTL_TOKEN_RECLAIM_ENA_FIELD; +#define FPM_TOKEN_RECOVER_CTL_TOKEN_RECLAIM_ENA_FIELD_MASK 0x00000008 +#define FPM_TOKEN_RECOVER_CTL_TOKEN_RECLAIM_ENA_FIELD_WIDTH 1 +#define FPM_TOKEN_RECOVER_CTL_TOKEN_RECLAIM_ENA_FIELD_SHIFT 3 + +extern const ru_field_rec FPM_TOKEN_RECOVER_CTL_TOKEN_REMARK_ENA_FIELD; +#define FPM_TOKEN_RECOVER_CTL_TOKEN_REMARK_ENA_FIELD_MASK 0x00000004 +#define FPM_TOKEN_RECOVER_CTL_TOKEN_REMARK_ENA_FIELD_WIDTH 1 +#define FPM_TOKEN_RECOVER_CTL_TOKEN_REMARK_ENA_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_TOKEN_RECOVER_CTL_SINGLE_PASS_ENA_FIELD; +#define FPM_TOKEN_RECOVER_CTL_SINGLE_PASS_ENA_FIELD_MASK 0x00000002 +#define FPM_TOKEN_RECOVER_CTL_SINGLE_PASS_ENA_FIELD_WIDTH 1 +#define FPM_TOKEN_RECOVER_CTL_SINGLE_PASS_ENA_FIELD_SHIFT 1 + +extern const ru_field_rec FPM_TOKEN_RECOVER_CTL_TOKEN_RECOVER_ENA_FIELD; +#define FPM_TOKEN_RECOVER_CTL_TOKEN_RECOVER_ENA_FIELD_MASK 0x00000001 +#define FPM_TOKEN_RECOVER_CTL_TOKEN_RECOVER_ENA_FIELD_WIDTH 1 +#define FPM_TOKEN_RECOVER_CTL_TOKEN_RECOVER_ENA_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_SHORT_AGING_TIMER_TIMER_FIELD; +#define FPM_SHORT_AGING_TIMER_TIMER_FIELD_MASK 0xffffffff +#define FPM_SHORT_AGING_TIMER_TIMER_FIELD_WIDTH 32 +#define FPM_SHORT_AGING_TIMER_TIMER_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_LONG_AGING_TIMER_TIMER_FIELD; +#define FPM_LONG_AGING_TIMER_TIMER_FIELD_MASK 0xffffffff +#define FPM_LONG_AGING_TIMER_TIMER_FIELD_WIDTH 32 +#define FPM_LONG_AGING_TIMER_TIMER_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_CACHE_RECYCLE_TIMER_RESERVED0_FIELD; +#define FPM_CACHE_RECYCLE_TIMER_RESERVED0_FIELD_MASK 0xffff0000 +#define FPM_CACHE_RECYCLE_TIMER_RESERVED0_FIELD_WIDTH 16 +#define FPM_CACHE_RECYCLE_TIMER_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_CACHE_RECYCLE_TIMER_RECYCLE_TIMER_FIELD; +#define FPM_CACHE_RECYCLE_TIMER_RECYCLE_TIMER_FIELD_MASK 0x0000ffff +#define FPM_CACHE_RECYCLE_TIMER_RECYCLE_TIMER_FIELD_WIDTH 16 +#define FPM_CACHE_RECYCLE_TIMER_RECYCLE_TIMER_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_EXPIRED_TOKEN_COUNT_POOL1_COUNT_FIELD; +#define FPM_EXPIRED_TOKEN_COUNT_POOL1_COUNT_FIELD_MASK 0xffffffff +#define FPM_EXPIRED_TOKEN_COUNT_POOL1_COUNT_FIELD_WIDTH 32 +#define FPM_EXPIRED_TOKEN_COUNT_POOL1_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_RECOVERED_TOKEN_COUNT_POOL1_COUNT_FIELD; +#define FPM_RECOVERED_TOKEN_COUNT_POOL1_COUNT_FIELD_MASK 0xffffffff +#define FPM_RECOVERED_TOKEN_COUNT_POOL1_COUNT_FIELD_WIDTH 32 +#define FPM_RECOVERED_TOKEN_COUNT_POOL1_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_EXPIRED_TOKEN_COUNT_POOL2_COUNT_FIELD; +#define FPM_EXPIRED_TOKEN_COUNT_POOL2_COUNT_FIELD_MASK 0xffffffff +#define FPM_EXPIRED_TOKEN_COUNT_POOL2_COUNT_FIELD_WIDTH 32 +#define FPM_EXPIRED_TOKEN_COUNT_POOL2_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_RECOVERED_TOKEN_COUNT_POOL2_COUNT_FIELD; +#define FPM_RECOVERED_TOKEN_COUNT_POOL2_COUNT_FIELD_MASK 0xffffffff +#define FPM_RECOVERED_TOKEN_COUNT_POOL2_COUNT_FIELD_WIDTH 32 +#define FPM_RECOVERED_TOKEN_COUNT_POOL2_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_TOKEN_RECOVER_START_END_POOL1_RESERVED0_FIELD; +#define FPM_TOKEN_RECOVER_START_END_POOL1_RESERVED0_FIELD_MASK 0xf0000000 +#define FPM_TOKEN_RECOVER_START_END_POOL1_RESERVED0_FIELD_WIDTH 4 +#define FPM_TOKEN_RECOVER_START_END_POOL1_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec FPM_TOKEN_RECOVER_START_END_POOL1_START_INDEX_FIELD; +#define FPM_TOKEN_RECOVER_START_END_POOL1_START_INDEX_FIELD_MASK 0x0fff0000 +#define FPM_TOKEN_RECOVER_START_END_POOL1_START_INDEX_FIELD_WIDTH 12 +#define FPM_TOKEN_RECOVER_START_END_POOL1_START_INDEX_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_TOKEN_RECOVER_START_END_POOL1_RESERVED1_FIELD; +#define FPM_TOKEN_RECOVER_START_END_POOL1_RESERVED1_FIELD_MASK 0x0000f000 +#define FPM_TOKEN_RECOVER_START_END_POOL1_RESERVED1_FIELD_WIDTH 4 +#define FPM_TOKEN_RECOVER_START_END_POOL1_RESERVED1_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_TOKEN_RECOVER_START_END_POOL1_END_INDEX_FIELD; +#define FPM_TOKEN_RECOVER_START_END_POOL1_END_INDEX_FIELD_MASK 0x00000fff +#define FPM_TOKEN_RECOVER_START_END_POOL1_END_INDEX_FIELD_WIDTH 12 +#define FPM_TOKEN_RECOVER_START_END_POOL1_END_INDEX_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_TOKEN_RECOVER_START_END_POOL2_RESERVED0_FIELD; +#define FPM_TOKEN_RECOVER_START_END_POOL2_RESERVED0_FIELD_MASK 0xf0000000 +#define FPM_TOKEN_RECOVER_START_END_POOL2_RESERVED0_FIELD_WIDTH 4 +#define FPM_TOKEN_RECOVER_START_END_POOL2_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec FPM_TOKEN_RECOVER_START_END_POOL2_START_INDEX_FIELD; +#define FPM_TOKEN_RECOVER_START_END_POOL2_START_INDEX_FIELD_MASK 0x0fff0000 +#define FPM_TOKEN_RECOVER_START_END_POOL2_START_INDEX_FIELD_WIDTH 12 +#define FPM_TOKEN_RECOVER_START_END_POOL2_START_INDEX_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_TOKEN_RECOVER_START_END_POOL2_RESERVED1_FIELD; +#define FPM_TOKEN_RECOVER_START_END_POOL2_RESERVED1_FIELD_MASK 0x0000f000 +#define FPM_TOKEN_RECOVER_START_END_POOL2_RESERVED1_FIELD_WIDTH 4 +#define FPM_TOKEN_RECOVER_START_END_POOL2_RESERVED1_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_TOKEN_RECOVER_START_END_POOL2_END_INDEX_FIELD; +#define FPM_TOKEN_RECOVER_START_END_POOL2_END_INDEX_FIELD_MASK 0x00000fff +#define FPM_TOKEN_RECOVER_START_END_POOL2_END_INDEX_FIELD_WIDTH 12 +#define FPM_TOKEN_RECOVER_START_END_POOL2_END_INDEX_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL1_ALLOC_DEALLOC_TOKEN_VALID_FIELD; +#define FPM_POOL1_ALLOC_DEALLOC_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL1_ALLOC_DEALLOC_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL1_ALLOC_DEALLOC_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL1_ALLOC_DEALLOC_RESERVED0_FIELD; +#define FPM_POOL1_ALLOC_DEALLOC_RESERVED0_FIELD_MASK 0x40000000 +#define FPM_POOL1_ALLOC_DEALLOC_RESERVED0_FIELD_WIDTH 1 +#define FPM_POOL1_ALLOC_DEALLOC_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec FPM_POOL1_ALLOC_DEALLOC_DDR_FIELD; +#define FPM_POOL1_ALLOC_DEALLOC_DDR_FIELD_MASK 0x20000000 +#define FPM_POOL1_ALLOC_DEALLOC_DDR_FIELD_WIDTH 1 +#define FPM_POOL1_ALLOC_DEALLOC_DDR_FIELD_SHIFT 29 + +extern const ru_field_rec FPM_POOL1_ALLOC_DEALLOC_TOKEN_INDEX_FIELD; +#define FPM_POOL1_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_MASK 0x1ffff000 +#define FPM_POOL1_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_WIDTH 17 +#define FPM_POOL1_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_POOL1_ALLOC_DEALLOC_TOKEN_SIZE_FIELD; +#define FPM_POOL1_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_MASK 0x00000fff +#define FPM_POOL1_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_WIDTH 12 +#define FPM_POOL1_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL2_ALLOC_DEALLOC_TOKEN_VALID_FIELD; +#define FPM_POOL2_ALLOC_DEALLOC_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL2_ALLOC_DEALLOC_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL2_ALLOC_DEALLOC_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL2_ALLOC_DEALLOC_RESERVED0_FIELD; +#define FPM_POOL2_ALLOC_DEALLOC_RESERVED0_FIELD_MASK 0x40000000 +#define FPM_POOL2_ALLOC_DEALLOC_RESERVED0_FIELD_WIDTH 1 +#define FPM_POOL2_ALLOC_DEALLOC_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec FPM_POOL2_ALLOC_DEALLOC_DDR_FIELD; +#define FPM_POOL2_ALLOC_DEALLOC_DDR_FIELD_MASK 0x20000000 +#define FPM_POOL2_ALLOC_DEALLOC_DDR_FIELD_WIDTH 1 +#define FPM_POOL2_ALLOC_DEALLOC_DDR_FIELD_SHIFT 29 + +extern const ru_field_rec FPM_POOL2_ALLOC_DEALLOC_TOKEN_INDEX_FIELD; +#define FPM_POOL2_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_MASK 0x1ffff000 +#define FPM_POOL2_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_WIDTH 17 +#define FPM_POOL2_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_POOL2_ALLOC_DEALLOC_TOKEN_SIZE_FIELD; +#define FPM_POOL2_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_MASK 0x00000fff +#define FPM_POOL2_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_WIDTH 12 +#define FPM_POOL2_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL3_ALLOC_DEALLOC_TOKEN_VALID_FIELD; +#define FPM_POOL3_ALLOC_DEALLOC_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL3_ALLOC_DEALLOC_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL3_ALLOC_DEALLOC_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL3_ALLOC_DEALLOC_RESERVED0_FIELD; +#define FPM_POOL3_ALLOC_DEALLOC_RESERVED0_FIELD_MASK 0x40000000 +#define FPM_POOL3_ALLOC_DEALLOC_RESERVED0_FIELD_WIDTH 1 +#define FPM_POOL3_ALLOC_DEALLOC_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec FPM_POOL3_ALLOC_DEALLOC_DDR_FIELD; +#define FPM_POOL3_ALLOC_DEALLOC_DDR_FIELD_MASK 0x20000000 +#define FPM_POOL3_ALLOC_DEALLOC_DDR_FIELD_WIDTH 1 +#define FPM_POOL3_ALLOC_DEALLOC_DDR_FIELD_SHIFT 29 + +extern const ru_field_rec FPM_POOL3_ALLOC_DEALLOC_TOKEN_INDEX_FIELD; +#define FPM_POOL3_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_MASK 0x1ffff000 +#define FPM_POOL3_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_WIDTH 17 +#define FPM_POOL3_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_POOL3_ALLOC_DEALLOC_TOKEN_SIZE_FIELD; +#define FPM_POOL3_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_MASK 0x00000fff +#define FPM_POOL3_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_WIDTH 12 +#define FPM_POOL3_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL4_ALLOC_DEALLOC_TOKEN_VALID_FIELD; +#define FPM_POOL4_ALLOC_DEALLOC_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL4_ALLOC_DEALLOC_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL4_ALLOC_DEALLOC_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL4_ALLOC_DEALLOC_RESERVED0_FIELD; +#define FPM_POOL4_ALLOC_DEALLOC_RESERVED0_FIELD_MASK 0x40000000 +#define FPM_POOL4_ALLOC_DEALLOC_RESERVED0_FIELD_WIDTH 1 +#define FPM_POOL4_ALLOC_DEALLOC_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec FPM_POOL4_ALLOC_DEALLOC_DDR_FIELD; +#define FPM_POOL4_ALLOC_DEALLOC_DDR_FIELD_MASK 0x20000000 +#define FPM_POOL4_ALLOC_DEALLOC_DDR_FIELD_WIDTH 1 +#define FPM_POOL4_ALLOC_DEALLOC_DDR_FIELD_SHIFT 29 + +extern const ru_field_rec FPM_POOL4_ALLOC_DEALLOC_TOKEN_INDEX_FIELD; +#define FPM_POOL4_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_MASK 0x1ffff000 +#define FPM_POOL4_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_WIDTH 17 +#define FPM_POOL4_ALLOC_DEALLOC_TOKEN_INDEX_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_POOL4_ALLOC_DEALLOC_TOKEN_SIZE_FIELD; +#define FPM_POOL4_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_MASK 0x00000fff +#define FPM_POOL4_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_WIDTH 12 +#define FPM_POOL4_ALLOC_DEALLOC_TOKEN_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_SPARE_SPARE_BITS_FIELD; +#define FPM_SPARE_SPARE_BITS_FIELD_MASK 0xffffffff +#define FPM_SPARE_SPARE_BITS_FIELD_WIDTH 32 +#define FPM_SPARE_SPARE_BITS_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_POOL_MULTI_TOKEN_VALID_FIELD; +#define FPM_POOL_MULTI_TOKEN_VALID_FIELD_MASK 0x80000000 +#define FPM_POOL_MULTI_TOKEN_VALID_FIELD_WIDTH 1 +#define FPM_POOL_MULTI_TOKEN_VALID_FIELD_SHIFT 31 + +extern const ru_field_rec FPM_POOL_MULTI_RESERVED0_FIELD; +#define FPM_POOL_MULTI_RESERVED0_FIELD_MASK 0x40000000 +#define FPM_POOL_MULTI_RESERVED0_FIELD_WIDTH 1 +#define FPM_POOL_MULTI_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec FPM_POOL_MULTI_DDR_FIELD; +#define FPM_POOL_MULTI_DDR_FIELD_MASK 0x20000000 +#define FPM_POOL_MULTI_DDR_FIELD_WIDTH 1 +#define FPM_POOL_MULTI_DDR_FIELD_SHIFT 29 + +extern const ru_field_rec FPM_POOL_MULTI_TOKEN_INDEX_FIELD; +#define FPM_POOL_MULTI_TOKEN_INDEX_FIELD_MASK 0x1ffff000 +#define FPM_POOL_MULTI_TOKEN_INDEX_FIELD_WIDTH 17 +#define FPM_POOL_MULTI_TOKEN_INDEX_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_POOL_MULTI_UPDATE_TYPE_FIELD; +#define FPM_POOL_MULTI_UPDATE_TYPE_FIELD_MASK 0x00000800 +#define FPM_POOL_MULTI_UPDATE_TYPE_FIELD_WIDTH 1 +#define FPM_POOL_MULTI_UPDATE_TYPE_FIELD_SHIFT 11 + +extern const ru_field_rec FPM_POOL_MULTI_RESERVED1_FIELD; +#define FPM_POOL_MULTI_RESERVED1_FIELD_MASK 0x00000780 +#define FPM_POOL_MULTI_RESERVED1_FIELD_WIDTH 4 +#define FPM_POOL_MULTI_RESERVED1_FIELD_SHIFT 7 + +extern const ru_field_rec FPM_POOL_MULTI_TOKEN_MULTI_FIELD; +#define FPM_POOL_MULTI_TOKEN_MULTI_FIELD_MASK 0x0000007f +#define FPM_POOL_MULTI_TOKEN_MULTI_FIELD_WIDTH 7 +#define FPM_POOL_MULTI_TOKEN_MULTI_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_FORCE_FORCE_FIELD; +#define FPM_FPM_BB_FORCE_FORCE_FIELD_MASK 0x00000001 +#define FPM_FPM_BB_FORCE_FORCE_FIELD_WIDTH 1 +#define FPM_FPM_BB_FORCE_FORCE_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_FORCE_RESERVED0_FIELD; +#define FPM_FPM_BB_FORCE_RESERVED0_FIELD_MASK 0xfffffffe +#define FPM_FPM_BB_FORCE_RESERVED0_FIELD_WIDTH 31 +#define FPM_FPM_BB_FORCE_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec FPM_FPM_BB_FORCED_CTRL_CTRL_FIELD; +#define FPM_FPM_BB_FORCED_CTRL_CTRL_FIELD_MASK 0x00000fff +#define FPM_FPM_BB_FORCED_CTRL_CTRL_FIELD_WIDTH 12 +#define FPM_FPM_BB_FORCED_CTRL_CTRL_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_FORCED_CTRL_RESERVED0_FIELD; +#define FPM_FPM_BB_FORCED_CTRL_RESERVED0_FIELD_MASK 0xfffff000 +#define FPM_FPM_BB_FORCED_CTRL_RESERVED0_FIELD_WIDTH 20 +#define FPM_FPM_BB_FORCED_CTRL_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec FPM_FPM_BB_FORCED_ADDR_TA_ADDR_FIELD; +#define FPM_FPM_BB_FORCED_ADDR_TA_ADDR_FIELD_MASK 0x0000ffff +#define FPM_FPM_BB_FORCED_ADDR_TA_ADDR_FIELD_WIDTH 16 +#define FPM_FPM_BB_FORCED_ADDR_TA_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_FORCED_ADDR_DEST_ADDR_FIELD; +#define FPM_FPM_BB_FORCED_ADDR_DEST_ADDR_FIELD_MASK 0x003f0000 +#define FPM_FPM_BB_FORCED_ADDR_DEST_ADDR_FIELD_WIDTH 6 +#define FPM_FPM_BB_FORCED_ADDR_DEST_ADDR_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_FPM_BB_FORCED_ADDR_RESERVED0_FIELD; +#define FPM_FPM_BB_FORCED_ADDR_RESERVED0_FIELD_MASK 0xffc00000 +#define FPM_FPM_BB_FORCED_ADDR_RESERVED0_FIELD_WIDTH 10 +#define FPM_FPM_BB_FORCED_ADDR_RESERVED0_FIELD_SHIFT 22 + +extern const ru_field_rec FPM_FPM_BB_FORCED_DATA_DATA_FIELD; +#define FPM_FPM_BB_FORCED_DATA_DATA_FIELD_MASK 0xffffffff +#define FPM_FPM_BB_FORCED_DATA_DATA_FIELD_WIDTH 32 +#define FPM_FPM_BB_FORCED_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_DECODE_CFG_DEST_ID_FIELD; +#define FPM_FPM_BB_DECODE_CFG_DEST_ID_FIELD_MASK 0x0000003f +#define FPM_FPM_BB_DECODE_CFG_DEST_ID_FIELD_WIDTH 6 +#define FPM_FPM_BB_DECODE_CFG_DEST_ID_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_DECODE_CFG_OVERRIDE_EN_FIELD; +#define FPM_FPM_BB_DECODE_CFG_OVERRIDE_EN_FIELD_MASK 0x00000040 +#define FPM_FPM_BB_DECODE_CFG_OVERRIDE_EN_FIELD_WIDTH 1 +#define FPM_FPM_BB_DECODE_CFG_OVERRIDE_EN_FIELD_SHIFT 6 + +extern const ru_field_rec FPM_FPM_BB_DECODE_CFG_ROUTE_ADDR_FIELD; +#define FPM_FPM_BB_DECODE_CFG_ROUTE_ADDR_FIELD_MASK 0x0001ff80 +#define FPM_FPM_BB_DECODE_CFG_ROUTE_ADDR_FIELD_WIDTH 10 +#define FPM_FPM_BB_DECODE_CFG_ROUTE_ADDR_FIELD_SHIFT 7 + +extern const ru_field_rec FPM_FPM_BB_DECODE_CFG_RESERVED0_FIELD; +#define FPM_FPM_BB_DECODE_CFG_RESERVED0_FIELD_MASK 0xfffe0000 +#define FPM_FPM_BB_DECODE_CFG_RESERVED0_FIELD_WIDTH 15 +#define FPM_FPM_BB_DECODE_CFG_RESERVED0_FIELD_SHIFT 17 + +extern const ru_field_rec FPM_FPM_BB_DBG_CFG_RXFIFO_SW_ADDR_FIELD; +#define FPM_FPM_BB_DBG_CFG_RXFIFO_SW_ADDR_FIELD_MASK 0x0000000f +#define FPM_FPM_BB_DBG_CFG_RXFIFO_SW_ADDR_FIELD_WIDTH 4 +#define FPM_FPM_BB_DBG_CFG_RXFIFO_SW_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_DBG_CFG_TXFIFO_SW_ADDR_FIELD; +#define FPM_FPM_BB_DBG_CFG_TXFIFO_SW_ADDR_FIELD_MASK 0x000000f0 +#define FPM_FPM_BB_DBG_CFG_TXFIFO_SW_ADDR_FIELD_WIDTH 4 +#define FPM_FPM_BB_DBG_CFG_TXFIFO_SW_ADDR_FIELD_SHIFT 4 + +extern const ru_field_rec FPM_FPM_BB_DBG_CFG_RXFIFO_SW_RST_FIELD; +#define FPM_FPM_BB_DBG_CFG_RXFIFO_SW_RST_FIELD_MASK 0x00000100 +#define FPM_FPM_BB_DBG_CFG_RXFIFO_SW_RST_FIELD_WIDTH 1 +#define FPM_FPM_BB_DBG_CFG_RXFIFO_SW_RST_FIELD_SHIFT 8 + +extern const ru_field_rec FPM_FPM_BB_DBG_CFG_TXFIFO_SW_RST_FIELD; +#define FPM_FPM_BB_DBG_CFG_TXFIFO_SW_RST_FIELD_MASK 0x00000200 +#define FPM_FPM_BB_DBG_CFG_TXFIFO_SW_RST_FIELD_WIDTH 1 +#define FPM_FPM_BB_DBG_CFG_TXFIFO_SW_RST_FIELD_SHIFT 9 + +extern const ru_field_rec FPM_FPM_BB_DBG_CFG_RESERVED0_FIELD; +#define FPM_FPM_BB_DBG_CFG_RESERVED0_FIELD_MASK 0xfffffc00 +#define FPM_FPM_BB_DBG_CFG_RESERVED0_FIELD_WIDTH 22 +#define FPM_FPM_BB_DBG_CFG_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_EMPTY_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_EMPTY_FIELD_MASK 0x00000001 +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_EMPTY_FIELD_WIDTH 1 +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_EMPTY_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_FULL_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_FULL_FIELD_MASK 0x00000002 +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_FULL_FIELD_WIDTH 1 +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_FULL_FIELD_SHIFT 1 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED0_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED0_FIELD_MASK 0x000000fc +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED0_FIELD_WIDTH 6 +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_USED_WORDS_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_USED_WORDS_FIELD_MASK 0x00001f00 +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_USED_WORDS_FIELD_WIDTH 5 +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_USED_WORDS_FIELD_SHIFT 8 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED1_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED1_FIELD_MASK 0x0000e000 +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED1_FIELD_WIDTH 3 +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_RD_CNTR_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_RD_CNTR_FIELD_MASK 0x001f0000 +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_RD_CNTR_FIELD_WIDTH 5 +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_RD_CNTR_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED2_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED2_FIELD_MASK 0x00e00000 +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED2_FIELD_WIDTH 3 +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED2_FIELD_SHIFT 21 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_WR_CNTR_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_WR_CNTR_FIELD_MASK 0x1f000000 +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_WR_CNTR_FIELD_WIDTH 5 +#define FPM_FPM_BB_DBG_RXFIFO_STS_FIFO_WR_CNTR_FIELD_SHIFT 24 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED3_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED3_FIELD_MASK 0xe0000000 +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED3_FIELD_WIDTH 3 +#define FPM_FPM_BB_DBG_RXFIFO_STS_RESERVED3_FIELD_SHIFT 29 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_EMPTY_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_EMPTY_FIELD_MASK 0x00000001 +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_EMPTY_FIELD_WIDTH 1 +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_EMPTY_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_FULL_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_FULL_FIELD_MASK 0x00000002 +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_FULL_FIELD_WIDTH 1 +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_FULL_FIELD_SHIFT 1 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED0_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED0_FIELD_MASK 0x000000fc +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED0_FIELD_WIDTH 6 +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_USED_WORDS_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_USED_WORDS_FIELD_MASK 0x00001f00 +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_USED_WORDS_FIELD_WIDTH 5 +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_USED_WORDS_FIELD_SHIFT 8 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED1_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED1_FIELD_MASK 0x0000e000 +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED1_FIELD_WIDTH 3 +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_RD_CNTR_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_RD_CNTR_FIELD_MASK 0x001f0000 +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_RD_CNTR_FIELD_WIDTH 5 +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_RD_CNTR_FIELD_SHIFT 16 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED2_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED2_FIELD_MASK 0x00e00000 +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED2_FIELD_WIDTH 3 +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED2_FIELD_SHIFT 21 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_WR_CNTR_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_WR_CNTR_FIELD_MASK 0x1f000000 +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_WR_CNTR_FIELD_WIDTH 5 +#define FPM_FPM_BB_DBG_TXFIFO_STS_FIFO_WR_CNTR_FIELD_SHIFT 24 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED3_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED3_FIELD_MASK 0xe0000000 +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED3_FIELD_WIDTH 3 +#define FPM_FPM_BB_DBG_TXFIFO_STS_RESERVED3_FIELD_SHIFT 29 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_DATA1_DATA_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_DATA1_DATA_FIELD_MASK 0xffffffff +#define FPM_FPM_BB_DBG_RXFIFO_DATA1_DATA_FIELD_WIDTH 32 +#define FPM_FPM_BB_DBG_RXFIFO_DATA1_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_DBG_RXFIFO_DATA2_DATA_FIELD; +#define FPM_FPM_BB_DBG_RXFIFO_DATA2_DATA_FIELD_MASK 0xffffffff +#define FPM_FPM_BB_DBG_RXFIFO_DATA2_DATA_FIELD_WIDTH 32 +#define FPM_FPM_BB_DBG_RXFIFO_DATA2_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_DATA1_DATA_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_DATA1_DATA_FIELD_MASK 0xffffffff +#define FPM_FPM_BB_DBG_TXFIFO_DATA1_DATA_FIELD_WIDTH 32 +#define FPM_FPM_BB_DBG_TXFIFO_DATA1_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_DATA2_DATA_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_DATA2_DATA_FIELD_MASK 0xffffffff +#define FPM_FPM_BB_DBG_TXFIFO_DATA2_DATA_FIELD_WIDTH 32 +#define FPM_FPM_BB_DBG_TXFIFO_DATA2_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec FPM_FPM_BB_DBG_TXFIFO_DATA3_DATA_FIELD; +#define FPM_FPM_BB_DBG_TXFIFO_DATA3_DATA_FIELD_MASK 0xffffffff +#define FPM_FPM_BB_DBG_TXFIFO_DATA3_DATA_FIELD_WIDTH 32 +#define FPM_FPM_BB_DBG_TXFIFO_DATA3_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_MEM_HIGH_DATA_MEM_FIELD; +#define RNR_MEM_HIGH_DATA_MEM_FIELD_MASK 0xffffffff +#define RNR_MEM_HIGH_DATA_MEM_FIELD_WIDTH 32 +#define RNR_MEM_HIGH_DATA_MEM_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_MEM_LOW_DATA_MEM_FIELD; +#define RNR_MEM_LOW_DATA_MEM_FIELD_MASK 0xffffffff +#define RNR_MEM_LOW_DATA_MEM_FIELD_WIDTH 32 +#define RNR_MEM_LOW_DATA_MEM_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_INST_MEM_ENTRY_INSTRUCTION_FIELD; +#define RNR_INST_MEM_ENTRY_INSTRUCTION_FIELD_MASK 0xffffffff +#define RNR_INST_MEM_ENTRY_INSTRUCTION_FIELD_WIDTH 32 +#define RNR_INST_MEM_ENTRY_INSTRUCTION_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_CNTXT_MEM_ENTRY_CONTEXT_ENTRY_FIELD; +#define RNR_CNTXT_MEM_ENTRY_CONTEXT_ENTRY_FIELD_MASK 0xffffffff +#define RNR_CNTXT_MEM_ENTRY_CONTEXT_ENTRY_FIELD_WIDTH 32 +#define RNR_CNTXT_MEM_ENTRY_CONTEXT_ENTRY_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_PRED_MEM_ENTRY_PRED_MEM_FIELD; +#define RNR_PRED_MEM_ENTRY_PRED_MEM_FIELD_MASK 0x0000ffff +#define RNR_PRED_MEM_ENTRY_PRED_MEM_FIELD_WIDTH 16 +#define RNR_PRED_MEM_ENTRY_PRED_MEM_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_GLOBAL_CTRL_EN_FIELD; +#define RNR_REGS_CFG_GLOBAL_CTRL_EN_FIELD_MASK 0x00000001 +#define RNR_REGS_CFG_GLOBAL_CTRL_EN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GLOBAL_CTRL_EN_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_GLOBAL_CTRL_DMA_ILLEGAL_STATUS_FIELD; +#define RNR_REGS_CFG_GLOBAL_CTRL_DMA_ILLEGAL_STATUS_FIELD_MASK 0x00000002 +#define RNR_REGS_CFG_GLOBAL_CTRL_DMA_ILLEGAL_STATUS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GLOBAL_CTRL_DMA_ILLEGAL_STATUS_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_REGS_CFG_GLOBAL_CTRL_PREDICTION_OVERRUN_STATUS_FIELD; +#define RNR_REGS_CFG_GLOBAL_CTRL_PREDICTION_OVERRUN_STATUS_FIELD_MASK 0x00000004 +#define RNR_REGS_CFG_GLOBAL_CTRL_PREDICTION_OVERRUN_STATUS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GLOBAL_CTRL_PREDICTION_OVERRUN_STATUS_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_REGS_CFG_GLOBAL_CTRL_RESERVED0_FIELD; +#define RNR_REGS_CFG_GLOBAL_CTRL_RESERVED0_FIELD_MASK 0x000000f8 +#define RNR_REGS_CFG_GLOBAL_CTRL_RESERVED0_FIELD_WIDTH 5 +#define RNR_REGS_CFG_GLOBAL_CTRL_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_REGS_CFG_GLOBAL_CTRL_MICRO_SEC_VAL_FIELD; +#define RNR_REGS_CFG_GLOBAL_CTRL_MICRO_SEC_VAL_FIELD_MASK 0x00ffff00 +#define RNR_REGS_CFG_GLOBAL_CTRL_MICRO_SEC_VAL_FIELD_WIDTH 16 +#define RNR_REGS_CFG_GLOBAL_CTRL_MICRO_SEC_VAL_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_REGS_CFG_GLOBAL_CTRL_RESERVED1_FIELD; +#define RNR_REGS_CFG_GLOBAL_CTRL_RESERVED1_FIELD_MASK 0xff000000 +#define RNR_REGS_CFG_GLOBAL_CTRL_RESERVED1_FIELD_WIDTH 8 +#define RNR_REGS_CFG_GLOBAL_CTRL_RESERVED1_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_REGS_CFG_CPU_WAKEUP_THREAD_NUM_FIELD; +#define RNR_REGS_CFG_CPU_WAKEUP_THREAD_NUM_FIELD_MASK 0x0000000f +#define RNR_REGS_CFG_CPU_WAKEUP_THREAD_NUM_FIELD_WIDTH 4 +#define RNR_REGS_CFG_CPU_WAKEUP_THREAD_NUM_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_CPU_WAKEUP_RESERVED0_FIELD; +#define RNR_REGS_CFG_CPU_WAKEUP_RESERVED0_FIELD_MASK 0xfffffff0 +#define RNR_REGS_CFG_CPU_WAKEUP_RESERVED0_FIELD_WIDTH 28 +#define RNR_REGS_CFG_CPU_WAKEUP_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_INT0_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_INT0_STS_FIELD_MASK 0x000000ff +#define RNR_REGS_CFG_INT_CTRL_INT0_STS_FIELD_WIDTH 8 +#define RNR_REGS_CFG_INT_CTRL_INT0_STS_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_INT1_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_INT1_STS_FIELD_MASK 0x0000ff00 +#define RNR_REGS_CFG_INT_CTRL_INT1_STS_FIELD_WIDTH 8 +#define RNR_REGS_CFG_INT_CTRL_INT1_STS_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_INT2_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_INT2_STS_FIELD_MASK 0x00010000 +#define RNR_REGS_CFG_INT_CTRL_INT2_STS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_CTRL_INT2_STS_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_INT3_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_INT3_STS_FIELD_MASK 0x00020000 +#define RNR_REGS_CFG_INT_CTRL_INT3_STS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_CTRL_INT3_STS_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_INT4_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_INT4_STS_FIELD_MASK 0x00040000 +#define RNR_REGS_CFG_INT_CTRL_INT4_STS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_CTRL_INT4_STS_FIELD_SHIFT 18 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_INT5_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_INT5_STS_FIELD_MASK 0x00080000 +#define RNR_REGS_CFG_INT_CTRL_INT5_STS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_CTRL_INT5_STS_FIELD_SHIFT 19 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_INT6_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_INT6_STS_FIELD_MASK 0x00100000 +#define RNR_REGS_CFG_INT_CTRL_INT6_STS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_CTRL_INT6_STS_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_INT7_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_INT7_STS_FIELD_MASK 0x00200000 +#define RNR_REGS_CFG_INT_CTRL_INT7_STS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_CTRL_INT7_STS_FIELD_SHIFT 21 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_INT8_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_INT8_STS_FIELD_MASK 0x00400000 +#define RNR_REGS_CFG_INT_CTRL_INT8_STS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_CTRL_INT8_STS_FIELD_SHIFT 22 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_INT9_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_INT9_STS_FIELD_MASK 0x00800000 +#define RNR_REGS_CFG_INT_CTRL_INT9_STS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_CTRL_INT9_STS_FIELD_SHIFT 23 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_RESERVED0_FIELD; +#define RNR_REGS_CFG_INT_CTRL_RESERVED0_FIELD_MASK 0x7f000000 +#define RNR_REGS_CFG_INT_CTRL_RESERVED0_FIELD_WIDTH 7 +#define RNR_REGS_CFG_INT_CTRL_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_REGS_CFG_INT_CTRL_FIT_FAIL_STS_FIELD; +#define RNR_REGS_CFG_INT_CTRL_FIT_FAIL_STS_FIELD_MASK 0x80000000 +#define RNR_REGS_CFG_INT_CTRL_FIT_FAIL_STS_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_CTRL_FIT_FAIL_STS_FIELD_SHIFT 31 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_INT0_MASK_FIELD; +#define RNR_REGS_CFG_INT_MASK_INT0_MASK_FIELD_MASK 0x000000ff +#define RNR_REGS_CFG_INT_MASK_INT0_MASK_FIELD_WIDTH 8 +#define RNR_REGS_CFG_INT_MASK_INT0_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_INT1_MASK_FIELD; +#define RNR_REGS_CFG_INT_MASK_INT1_MASK_FIELD_MASK 0x0000ff00 +#define RNR_REGS_CFG_INT_MASK_INT1_MASK_FIELD_WIDTH 8 +#define RNR_REGS_CFG_INT_MASK_INT1_MASK_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_INT2_MASK_FIELD; +#define RNR_REGS_CFG_INT_MASK_INT2_MASK_FIELD_MASK 0x00010000 +#define RNR_REGS_CFG_INT_MASK_INT2_MASK_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_MASK_INT2_MASK_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_INT3_MASK_FIELD; +#define RNR_REGS_CFG_INT_MASK_INT3_MASK_FIELD_MASK 0x00020000 +#define RNR_REGS_CFG_INT_MASK_INT3_MASK_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_MASK_INT3_MASK_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_INT4_MASK_FIELD; +#define RNR_REGS_CFG_INT_MASK_INT4_MASK_FIELD_MASK 0x00040000 +#define RNR_REGS_CFG_INT_MASK_INT4_MASK_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_MASK_INT4_MASK_FIELD_SHIFT 18 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_INT5_MASK_FIELD; +#define RNR_REGS_CFG_INT_MASK_INT5_MASK_FIELD_MASK 0x00080000 +#define RNR_REGS_CFG_INT_MASK_INT5_MASK_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_MASK_INT5_MASK_FIELD_SHIFT 19 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_INT6_MASK_FIELD; +#define RNR_REGS_CFG_INT_MASK_INT6_MASK_FIELD_MASK 0x00100000 +#define RNR_REGS_CFG_INT_MASK_INT6_MASK_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_MASK_INT6_MASK_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_INT7_MASK_FIELD; +#define RNR_REGS_CFG_INT_MASK_INT7_MASK_FIELD_MASK 0x00200000 +#define RNR_REGS_CFG_INT_MASK_INT7_MASK_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_MASK_INT7_MASK_FIELD_SHIFT 21 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_INT8_MASK_FIELD; +#define RNR_REGS_CFG_INT_MASK_INT8_MASK_FIELD_MASK 0x00400000 +#define RNR_REGS_CFG_INT_MASK_INT8_MASK_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_MASK_INT8_MASK_FIELD_SHIFT 22 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_INT9_MASK_FIELD; +#define RNR_REGS_CFG_INT_MASK_INT9_MASK_FIELD_MASK 0x00800000 +#define RNR_REGS_CFG_INT_MASK_INT9_MASK_FIELD_WIDTH 1 +#define RNR_REGS_CFG_INT_MASK_INT9_MASK_FIELD_SHIFT 23 + +extern const ru_field_rec RNR_REGS_CFG_INT_MASK_RESERVED0_FIELD; +#define RNR_REGS_CFG_INT_MASK_RESERVED0_FIELD_MASK 0xff000000 +#define RNR_REGS_CFG_INT_MASK_RESERVED0_FIELD_WIDTH 8 +#define RNR_REGS_CFG_INT_MASK_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_DISABLE_DMA_OLD_FLOW_CONTROL_FIELD; +#define RNR_REGS_CFG_GEN_CFG_DISABLE_DMA_OLD_FLOW_CONTROL_FIELD_MASK 0x00000001 +#define RNR_REGS_CFG_GEN_CFG_DISABLE_DMA_OLD_FLOW_CONTROL_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_DISABLE_DMA_OLD_FLOW_CONTROL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_TEST_FIT_FAIL_FIELD; +#define RNR_REGS_CFG_GEN_CFG_TEST_FIT_FAIL_FIELD_MASK 0x00000002 +#define RNR_REGS_CFG_GEN_CFG_TEST_FIT_FAIL_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_TEST_FIT_FAIL_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_ZERO_DATA_MEM_FIELD; +#define RNR_REGS_CFG_GEN_CFG_ZERO_DATA_MEM_FIELD_MASK 0x00000004 +#define RNR_REGS_CFG_GEN_CFG_ZERO_DATA_MEM_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_ZERO_DATA_MEM_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_ZERO_CONTEXT_MEM_FIELD; +#define RNR_REGS_CFG_GEN_CFG_ZERO_CONTEXT_MEM_FIELD_MASK 0x00000008 +#define RNR_REGS_CFG_GEN_CFG_ZERO_CONTEXT_MEM_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_ZERO_CONTEXT_MEM_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_ZERO_DATA_MEM_DONE_FIELD; +#define RNR_REGS_CFG_GEN_CFG_ZERO_DATA_MEM_DONE_FIELD_MASK 0x00000010 +#define RNR_REGS_CFG_GEN_CFG_ZERO_DATA_MEM_DONE_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_ZERO_DATA_MEM_DONE_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_ZERO_CONTEXT_MEM_DONE_FIELD; +#define RNR_REGS_CFG_GEN_CFG_ZERO_CONTEXT_MEM_DONE_FIELD_MASK 0x00000020 +#define RNR_REGS_CFG_GEN_CFG_ZERO_CONTEXT_MEM_DONE_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_ZERO_CONTEXT_MEM_DONE_FIELD_SHIFT 5 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_ENABLE_BREAKPOINT_ON_FIT_FAIL_FIELD; +#define RNR_REGS_CFG_GEN_CFG_ENABLE_BREAKPOINT_ON_FIT_FAIL_FIELD_MASK 0x00000040 +#define RNR_REGS_CFG_GEN_CFG_ENABLE_BREAKPOINT_ON_FIT_FAIL_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_ENABLE_BREAKPOINT_ON_FIT_FAIL_FIELD_SHIFT 6 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_RESERVED0_FIELD; +#define RNR_REGS_CFG_GEN_CFG_RESERVED0_FIELD_MASK 0x00000080 +#define RNR_REGS_CFG_GEN_CFG_RESERVED0_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_GDMA_DESC_OFFSET_FIELD; +#define RNR_REGS_CFG_GEN_CFG_GDMA_DESC_OFFSET_FIELD_MASK 0x0000ff00 +#define RNR_REGS_CFG_GEN_CFG_GDMA_DESC_OFFSET_FIELD_WIDTH 8 +#define RNR_REGS_CFG_GEN_CFG_GDMA_DESC_OFFSET_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_BBTX_TCAM_DEST_SEL_FIELD; +#define RNR_REGS_CFG_GEN_CFG_BBTX_TCAM_DEST_SEL_FIELD_MASK 0x00010000 +#define RNR_REGS_CFG_GEN_CFG_BBTX_TCAM_DEST_SEL_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_BBTX_TCAM_DEST_SEL_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_BBTX_HASH_DEST_SEL_FIELD; +#define RNR_REGS_CFG_GEN_CFG_BBTX_HASH_DEST_SEL_FIELD_MASK 0x00020000 +#define RNR_REGS_CFG_GEN_CFG_BBTX_HASH_DEST_SEL_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_BBTX_HASH_DEST_SEL_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_BBTX_NATC_DEST_SEL_FIELD; +#define RNR_REGS_CFG_GEN_CFG_BBTX_NATC_DEST_SEL_FIELD_MASK 0x00040000 +#define RNR_REGS_CFG_GEN_CFG_BBTX_NATC_DEST_SEL_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_BBTX_NATC_DEST_SEL_FIELD_SHIFT 18 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_BBTX_CNPL_DEST_SEL_FIELD; +#define RNR_REGS_CFG_GEN_CFG_BBTX_CNPL_DEST_SEL_FIELD_MASK 0x00080000 +#define RNR_REGS_CFG_GEN_CFG_BBTX_CNPL_DEST_SEL_FIELD_WIDTH 1 +#define RNR_REGS_CFG_GEN_CFG_BBTX_CNPL_DEST_SEL_FIELD_SHIFT 19 + +extern const ru_field_rec RNR_REGS_CFG_GEN_CFG_RESERVED1_FIELD; +#define RNR_REGS_CFG_GEN_CFG_RESERVED1_FIELD_MASK 0xfff00000 +#define RNR_REGS_CFG_GEN_CFG_RESERVED1_FIELD_WIDTH 12 +#define RNR_REGS_CFG_GEN_CFG_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_REGS_CFG_CAM_CFG_STOP_VALUE_FIELD; +#define RNR_REGS_CFG_CAM_CFG_STOP_VALUE_FIELD_MASK 0x0000ffff +#define RNR_REGS_CFG_CAM_CFG_STOP_VALUE_FIELD_WIDTH 16 +#define RNR_REGS_CFG_CAM_CFG_STOP_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_CAM_CFG_RESERVED0_FIELD; +#define RNR_REGS_CFG_CAM_CFG_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_REGS_CFG_CAM_CFG_RESERVED0_FIELD_WIDTH 16 +#define RNR_REGS_CFG_CAM_CFG_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_DDR_CFG_DMA_BASE_FIELD; +#define RNR_REGS_CFG_DDR_CFG_DMA_BASE_FIELD_MASK 0x000fffff +#define RNR_REGS_CFG_DDR_CFG_DMA_BASE_FIELD_WIDTH 20 +#define RNR_REGS_CFG_DDR_CFG_DMA_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_DDR_CFG_DMA_BUF_SIZE_FIELD; +#define RNR_REGS_CFG_DDR_CFG_DMA_BUF_SIZE_FIELD_MASK 0x00700000 +#define RNR_REGS_CFG_DDR_CFG_DMA_BUF_SIZE_FIELD_WIDTH 3 +#define RNR_REGS_CFG_DDR_CFG_DMA_BUF_SIZE_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_REGS_CFG_DDR_CFG_DMA_BUF_SIZE_MODE_FIELD; +#define RNR_REGS_CFG_DDR_CFG_DMA_BUF_SIZE_MODE_FIELD_MASK 0x00800000 +#define RNR_REGS_CFG_DDR_CFG_DMA_BUF_SIZE_MODE_FIELD_WIDTH 1 +#define RNR_REGS_CFG_DDR_CFG_DMA_BUF_SIZE_MODE_FIELD_SHIFT 23 + +extern const ru_field_rec RNR_REGS_CFG_DDR_CFG_DMA_STATIC_OFFSET_FIELD; +#define RNR_REGS_CFG_DDR_CFG_DMA_STATIC_OFFSET_FIELD_MASK 0xff000000 +#define RNR_REGS_CFG_DDR_CFG_DMA_STATIC_OFFSET_FIELD_WIDTH 8 +#define RNR_REGS_CFG_DDR_CFG_DMA_STATIC_OFFSET_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_REGS_CFG_PSRAM_CFG_DMA_BASE_FIELD; +#define RNR_REGS_CFG_PSRAM_CFG_DMA_BASE_FIELD_MASK 0x000fffff +#define RNR_REGS_CFG_PSRAM_CFG_DMA_BASE_FIELD_WIDTH 20 +#define RNR_REGS_CFG_PSRAM_CFG_DMA_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_PSRAM_CFG_DMA_BUF_SIZE_FIELD; +#define RNR_REGS_CFG_PSRAM_CFG_DMA_BUF_SIZE_FIELD_MASK 0x00700000 +#define RNR_REGS_CFG_PSRAM_CFG_DMA_BUF_SIZE_FIELD_WIDTH 3 +#define RNR_REGS_CFG_PSRAM_CFG_DMA_BUF_SIZE_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_REGS_CFG_PSRAM_CFG_DMA_BUF_SIZE_MODE_FIELD; +#define RNR_REGS_CFG_PSRAM_CFG_DMA_BUF_SIZE_MODE_FIELD_MASK 0x00800000 +#define RNR_REGS_CFG_PSRAM_CFG_DMA_BUF_SIZE_MODE_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PSRAM_CFG_DMA_BUF_SIZE_MODE_FIELD_SHIFT 23 + +extern const ru_field_rec RNR_REGS_CFG_PSRAM_CFG_DMA_STATIC_OFFSET_FIELD; +#define RNR_REGS_CFG_PSRAM_CFG_DMA_STATIC_OFFSET_FIELD_MASK 0xff000000 +#define RNR_REGS_CFG_PSRAM_CFG_DMA_STATIC_OFFSET_FIELD_WIDTH 8 +#define RNR_REGS_CFG_PSRAM_CFG_DMA_STATIC_OFFSET_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK0_FIELD; +#define RNR_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK0_FIELD_MASK 0x0000ffff +#define RNR_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK0_FIELD_WIDTH 16 +#define RNR_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK0_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK1_FIELD; +#define RNR_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK1_FIELD_MASK 0xffff0000 +#define RNR_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK1_FIELD_WIDTH 16 +#define RNR_REGS_CFG_RAMRD_RANGE_MASK_CFG_MASK1_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_SCH_CFG_SCHEDULER_MODE_FIELD; +#define RNR_REGS_CFG_SCH_CFG_SCHEDULER_MODE_FIELD_MASK 0x00000007 +#define RNR_REGS_CFG_SCH_CFG_SCHEDULER_MODE_FIELD_WIDTH 3 +#define RNR_REGS_CFG_SCH_CFG_SCHEDULER_MODE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_SCH_CFG_RESERVED0_FIELD; +#define RNR_REGS_CFG_SCH_CFG_RESERVED0_FIELD_MASK 0xfffffff8 +#define RNR_REGS_CFG_SCH_CFG_RESERVED0_FIELD_WIDTH 29 +#define RNR_REGS_CFG_SCH_CFG_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_0_EN_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_0_EN_FIELD_MASK 0x00000001 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_0_EN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_0_EN_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_0_USE_THREAD_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_0_USE_THREAD_FIELD_MASK 0x00000002 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_0_USE_THREAD_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_0_USE_THREAD_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_1_EN_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_1_EN_FIELD_MASK 0x00000004 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_1_EN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_1_EN_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_1_USE_THREAD_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_1_USE_THREAD_FIELD_MASK 0x00000008 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_1_USE_THREAD_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_1_USE_THREAD_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_2_EN_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_2_EN_FIELD_MASK 0x00000010 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_2_EN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_2_EN_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_2_USE_THREAD_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_2_USE_THREAD_FIELD_MASK 0x00000020 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_2_USE_THREAD_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_2_USE_THREAD_FIELD_SHIFT 5 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_3_EN_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_3_EN_FIELD_MASK 0x00000040 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_3_EN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_3_EN_FIELD_SHIFT 6 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_3_USE_THREAD_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_3_USE_THREAD_FIELD_MASK 0x00000080 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_3_USE_THREAD_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_3_USE_THREAD_FIELD_SHIFT 7 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_4_EN_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_4_EN_FIELD_MASK 0x00000100 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_4_EN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_4_EN_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_4_USE_THREAD_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_4_USE_THREAD_FIELD_MASK 0x00000200 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_4_USE_THREAD_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_4_USE_THREAD_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_5_EN_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_5_EN_FIELD_MASK 0x00000400 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_5_EN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_5_EN_FIELD_SHIFT 10 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_5_USE_THREAD_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_5_USE_THREAD_FIELD_MASK 0x00000800 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_5_USE_THREAD_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_5_USE_THREAD_FIELD_SHIFT 11 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_6_EN_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_6_EN_FIELD_MASK 0x00001000 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_6_EN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_6_EN_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_6_USE_THREAD_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_6_USE_THREAD_FIELD_MASK 0x00002000 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_6_USE_THREAD_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_6_USE_THREAD_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_7_EN_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_7_EN_FIELD_MASK 0x00004000 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_7_EN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_7_EN_FIELD_SHIFT 14 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_BKPT_7_USE_THREAD_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_BKPT_7_USE_THREAD_FIELD_MASK 0x00008000 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_7_USE_THREAD_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_BKPT_7_USE_THREAD_FIELD_SHIFT 15 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_STEP_MODE_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_STEP_MODE_FIELD_MASK 0x00010000 +#define RNR_REGS_CFG_BKPT_CFG_STEP_MODE_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_STEP_MODE_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_RESERVED0_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_RESERVED0_FIELD_MASK 0x000e0000 +#define RNR_REGS_CFG_BKPT_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_REGS_CFG_BKPT_CFG_RESERVED0_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_NEW_FLAGS_VAL_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_NEW_FLAGS_VAL_FIELD_MASK 0x00f00000 +#define RNR_REGS_CFG_BKPT_CFG_NEW_FLAGS_VAL_FIELD_WIDTH 4 +#define RNR_REGS_CFG_BKPT_CFG_NEW_FLAGS_VAL_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_ENABLE_BREAKPOINT_ON_FIT_FAIL_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_ENABLE_BREAKPOINT_ON_FIT_FAIL_FIELD_MASK 0x01000000 +#define RNR_REGS_CFG_BKPT_CFG_ENABLE_BREAKPOINT_ON_FIT_FAIL_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_CFG_ENABLE_BREAKPOINT_ON_FIT_FAIL_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_CFG_RESERVED1_FIELD; +#define RNR_REGS_CFG_BKPT_CFG_RESERVED1_FIELD_MASK 0xfe000000 +#define RNR_REGS_CFG_BKPT_CFG_RESERVED1_FIELD_WIDTH 7 +#define RNR_REGS_CFG_BKPT_CFG_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_IMM_ENABLE_FIELD; +#define RNR_REGS_CFG_BKPT_IMM_ENABLE_FIELD_MASK 0x00000001 +#define RNR_REGS_CFG_BKPT_IMM_ENABLE_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_IMM_ENABLE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_IMM_RESERVED0_FIELD; +#define RNR_REGS_CFG_BKPT_IMM_RESERVED0_FIELD_MASK 0xfffffffe +#define RNR_REGS_CFG_BKPT_IMM_RESERVED0_FIELD_WIDTH 31 +#define RNR_REGS_CFG_BKPT_IMM_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_STS_BKPT_ADDR_FIELD; +#define RNR_REGS_CFG_BKPT_STS_BKPT_ADDR_FIELD_MASK 0x00001fff +#define RNR_REGS_CFG_BKPT_STS_BKPT_ADDR_FIELD_WIDTH 13 +#define RNR_REGS_CFG_BKPT_STS_BKPT_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_STS_RESERVED0_FIELD; +#define RNR_REGS_CFG_BKPT_STS_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_REGS_CFG_BKPT_STS_RESERVED0_FIELD_WIDTH 3 +#define RNR_REGS_CFG_BKPT_STS_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_STS_ACTIVE_FIELD; +#define RNR_REGS_CFG_BKPT_STS_ACTIVE_FIELD_MASK 0x00010000 +#define RNR_REGS_CFG_BKPT_STS_ACTIVE_FIELD_WIDTH 1 +#define RNR_REGS_CFG_BKPT_STS_ACTIVE_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_BKPT_STS_RESERVED1_FIELD; +#define RNR_REGS_CFG_BKPT_STS_RESERVED1_FIELD_MASK 0xfffe0000 +#define RNR_REGS_CFG_BKPT_STS_RESERVED1_FIELD_WIDTH 15 +#define RNR_REGS_CFG_BKPT_STS_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_REGS_CFG_PC_STS_CURRENT_PC_ADDR_FIELD; +#define RNR_REGS_CFG_PC_STS_CURRENT_PC_ADDR_FIELD_MASK 0x00001fff +#define RNR_REGS_CFG_PC_STS_CURRENT_PC_ADDR_FIELD_WIDTH 13 +#define RNR_REGS_CFG_PC_STS_CURRENT_PC_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_PC_STS_RESERVED0_FIELD; +#define RNR_REGS_CFG_PC_STS_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_REGS_CFG_PC_STS_RESERVED0_FIELD_WIDTH 3 +#define RNR_REGS_CFG_PC_STS_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_REGS_CFG_PC_STS_PC_RET_FIELD; +#define RNR_REGS_CFG_PC_STS_PC_RET_FIELD_MASK 0x1fff0000 +#define RNR_REGS_CFG_PC_STS_PC_RET_FIELD_WIDTH 13 +#define RNR_REGS_CFG_PC_STS_PC_RET_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_PC_STS_RESERVED1_FIELD; +#define RNR_REGS_CFG_PC_STS_RESERVED1_FIELD_MASK 0xe0000000 +#define RNR_REGS_CFG_PC_STS_RESERVED1_FIELD_WIDTH 3 +#define RNR_REGS_CFG_PC_STS_RESERVED1_FIELD_SHIFT 29 + +extern const ru_field_rec RNR_REGS_CFG_EXT_ACC_CFG_ADDR_BASE_FIELD; +#define RNR_REGS_CFG_EXT_ACC_CFG_ADDR_BASE_FIELD_MASK 0x00001fff +#define RNR_REGS_CFG_EXT_ACC_CFG_ADDR_BASE_FIELD_WIDTH 13 +#define RNR_REGS_CFG_EXT_ACC_CFG_ADDR_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_EXT_ACC_CFG_RESERVED0_FIELD; +#define RNR_REGS_CFG_EXT_ACC_CFG_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_REGS_CFG_EXT_ACC_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_REGS_CFG_EXT_ACC_CFG_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_REGS_CFG_EXT_ACC_CFG_ADDR_STEP_0_FIELD; +#define RNR_REGS_CFG_EXT_ACC_CFG_ADDR_STEP_0_FIELD_MASK 0x000f0000 +#define RNR_REGS_CFG_EXT_ACC_CFG_ADDR_STEP_0_FIELD_WIDTH 4 +#define RNR_REGS_CFG_EXT_ACC_CFG_ADDR_STEP_0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_EXT_ACC_CFG_ADDR_STEP_1_FIELD; +#define RNR_REGS_CFG_EXT_ACC_CFG_ADDR_STEP_1_FIELD_MASK 0x00f00000 +#define RNR_REGS_CFG_EXT_ACC_CFG_ADDR_STEP_1_FIELD_WIDTH 4 +#define RNR_REGS_CFG_EXT_ACC_CFG_ADDR_STEP_1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_REGS_CFG_EXT_ACC_CFG_START_THREAD_FIELD; +#define RNR_REGS_CFG_EXT_ACC_CFG_START_THREAD_FIELD_MASK 0x0f000000 +#define RNR_REGS_CFG_EXT_ACC_CFG_START_THREAD_FIELD_WIDTH 4 +#define RNR_REGS_CFG_EXT_ACC_CFG_START_THREAD_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_REGS_CFG_EXT_ACC_CFG_RESERVED1_FIELD; +#define RNR_REGS_CFG_EXT_ACC_CFG_RESERVED1_FIELD_MASK 0xf0000000 +#define RNR_REGS_CFG_EXT_ACC_CFG_RESERVED1_FIELD_WIDTH 4 +#define RNR_REGS_CFG_EXT_ACC_CFG_RESERVED1_FIELD_SHIFT 28 + +extern const ru_field_rec RNR_REGS_CFG_FIT_FAIL_CFG_START_ADDR_FIELD; +#define RNR_REGS_CFG_FIT_FAIL_CFG_START_ADDR_FIELD_MASK 0x00001fff +#define RNR_REGS_CFG_FIT_FAIL_CFG_START_ADDR_FIELD_WIDTH 13 +#define RNR_REGS_CFG_FIT_FAIL_CFG_START_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_FIT_FAIL_CFG_STOP_ADDR_FIELD; +#define RNR_REGS_CFG_FIT_FAIL_CFG_STOP_ADDR_FIELD_MASK 0x03ffe000 +#define RNR_REGS_CFG_FIT_FAIL_CFG_STOP_ADDR_FIELD_WIDTH 13 +#define RNR_REGS_CFG_FIT_FAIL_CFG_STOP_ADDR_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_REGS_CFG_FIT_FAIL_CFG_RESERVED0_FIELD; +#define RNR_REGS_CFG_FIT_FAIL_CFG_RESERVED0_FIELD_MASK 0xfc000000 +#define RNR_REGS_CFG_FIT_FAIL_CFG_RESERVED0_FIELD_WIDTH 6 +#define RNR_REGS_CFG_FIT_FAIL_CFG_RESERVED0_FIELD_SHIFT 26 + +extern const ru_field_rec RNR_REGS_CFG_STALL_CNT1_STALL_ON_JMP_FULL_CNT_FIELD; +#define RNR_REGS_CFG_STALL_CNT1_STALL_ON_JMP_FULL_CNT_FIELD_MASK 0x0000ffff +#define RNR_REGS_CFG_STALL_CNT1_STALL_ON_JMP_FULL_CNT_FIELD_WIDTH 16 +#define RNR_REGS_CFG_STALL_CNT1_STALL_ON_JMP_FULL_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_STALL_CNT1_TOTAL_STALL_CNT_FIELD; +#define RNR_REGS_CFG_STALL_CNT1_TOTAL_STALL_CNT_FIELD_MASK 0xffff0000 +#define RNR_REGS_CFG_STALL_CNT1_TOTAL_STALL_CNT_FIELD_WIDTH 16 +#define RNR_REGS_CFG_STALL_CNT1_TOTAL_STALL_CNT_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_STALL_CNT2_STALL_ON_ALU_B_FULL_CNT_FIELD; +#define RNR_REGS_CFG_STALL_CNT2_STALL_ON_ALU_B_FULL_CNT_FIELD_MASK 0x0000ffff +#define RNR_REGS_CFG_STALL_CNT2_STALL_ON_ALU_B_FULL_CNT_FIELD_WIDTH 16 +#define RNR_REGS_CFG_STALL_CNT2_STALL_ON_ALU_B_FULL_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_STALL_CNT2_STALL_ON_ALU_A_FULL_CNT_FIELD; +#define RNR_REGS_CFG_STALL_CNT2_STALL_ON_ALU_A_FULL_CNT_FIELD_MASK 0xffff0000 +#define RNR_REGS_CFG_STALL_CNT2_STALL_ON_ALU_A_FULL_CNT_FIELD_WIDTH 16 +#define RNR_REGS_CFG_STALL_CNT2_STALL_ON_ALU_A_FULL_CNT_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_STALL_CNT3_STALL_ON_JMPREG_FIELD; +#define RNR_REGS_CFG_STALL_CNT3_STALL_ON_JMPREG_FIELD_MASK 0x0000ffff +#define RNR_REGS_CFG_STALL_CNT3_STALL_ON_JMPREG_FIELD_WIDTH 16 +#define RNR_REGS_CFG_STALL_CNT3_STALL_ON_JMPREG_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_STALL_CNT3_STALL_ON_MEMIO_FULL_CNT_FIELD; +#define RNR_REGS_CFG_STALL_CNT3_STALL_ON_MEMIO_FULL_CNT_FIELD_MASK 0xffff0000 +#define RNR_REGS_CFG_STALL_CNT3_STALL_ON_MEMIO_FULL_CNT_FIELD_WIDTH 16 +#define RNR_REGS_CFG_STALL_CNT3_STALL_ON_MEMIO_FULL_CNT_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_STALL_CNT4_STALL_ON_WAW_CNT_FIELD; +#define RNR_REGS_CFG_STALL_CNT4_STALL_ON_WAW_CNT_FIELD_MASK 0x0000ffff +#define RNR_REGS_CFG_STALL_CNT4_STALL_ON_WAW_CNT_FIELD_WIDTH 16 +#define RNR_REGS_CFG_STALL_CNT4_STALL_ON_WAW_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_STALL_CNT4_ACTIVE_CYCLES_CNT_FIELD; +#define RNR_REGS_CFG_STALL_CNT4_ACTIVE_CYCLES_CNT_FIELD_MASK 0xffff0000 +#define RNR_REGS_CFG_STALL_CNT4_ACTIVE_CYCLES_CNT_FIELD_WIDTH 16 +#define RNR_REGS_CFG_STALL_CNT4_ACTIVE_CYCLES_CNT_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_STS_TRACE_WRITE_PNT_FIELD; +#define RNR_REGS_CFG_PROFILING_STS_TRACE_WRITE_PNT_FIELD_MASK 0x00001fff +#define RNR_REGS_CFG_PROFILING_STS_TRACE_WRITE_PNT_FIELD_WIDTH 13 +#define RNR_REGS_CFG_PROFILING_STS_TRACE_WRITE_PNT_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_STS_IDLE_NO_ACTIVE_TASK_FIELD; +#define RNR_REGS_CFG_PROFILING_STS_IDLE_NO_ACTIVE_TASK_FIELD_MASK 0x00002000 +#define RNR_REGS_CFG_PROFILING_STS_IDLE_NO_ACTIVE_TASK_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_STS_IDLE_NO_ACTIVE_TASK_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_STS_CURR_THREAD_NUM_FIELD; +#define RNR_REGS_CFG_PROFILING_STS_CURR_THREAD_NUM_FIELD_MASK 0x0003c000 +#define RNR_REGS_CFG_PROFILING_STS_CURR_THREAD_NUM_FIELD_WIDTH 4 +#define RNR_REGS_CFG_PROFILING_STS_CURR_THREAD_NUM_FIELD_SHIFT 14 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_STS_PROFILING_ACTIVE_FIELD; +#define RNR_REGS_CFG_PROFILING_STS_PROFILING_ACTIVE_FIELD_MASK 0x00040000 +#define RNR_REGS_CFG_PROFILING_STS_PROFILING_ACTIVE_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_STS_PROFILING_ACTIVE_FIELD_SHIFT 18 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_STS_TRACE_FIFO_OVERRUN_FIELD; +#define RNR_REGS_CFG_PROFILING_STS_TRACE_FIFO_OVERRUN_FIELD_MASK 0x00080000 +#define RNR_REGS_CFG_PROFILING_STS_TRACE_FIFO_OVERRUN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_STS_TRACE_FIFO_OVERRUN_FIELD_SHIFT 19 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_STS_RESERVED0_FIELD; +#define RNR_REGS_CFG_PROFILING_STS_RESERVED0_FIELD_MASK 0xfff00000 +#define RNR_REGS_CFG_PROFILING_STS_RESERVED0_FIELD_WIDTH 12 +#define RNR_REGS_CFG_PROFILING_STS_RESERVED0_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_0_TRACE_BASE_ADDR_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_0_TRACE_BASE_ADDR_FIELD_MASK 0x00001fff +#define RNR_REGS_CFG_PROFILING_CFG_0_TRACE_BASE_ADDR_FIELD_WIDTH 13 +#define RNR_REGS_CFG_PROFILING_CFG_0_TRACE_BASE_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_0_RESERVED0_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_0_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_REGS_CFG_PROFILING_CFG_0_RESERVED0_FIELD_WIDTH 3 +#define RNR_REGS_CFG_PROFILING_CFG_0_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_0_TRACE_MAX_ADDR_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_0_TRACE_MAX_ADDR_FIELD_MASK 0x1fff0000 +#define RNR_REGS_CFG_PROFILING_CFG_0_TRACE_MAX_ADDR_FIELD_WIDTH 13 +#define RNR_REGS_CFG_PROFILING_CFG_0_TRACE_MAX_ADDR_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_0_RESERVED1_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_0_RESERVED1_FIELD_MASK 0xe0000000 +#define RNR_REGS_CFG_PROFILING_CFG_0_RESERVED1_FIELD_WIDTH 3 +#define RNR_REGS_CFG_PROFILING_CFG_0_RESERVED1_FIELD_SHIFT 29 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_TRACE_WRAPAROUND_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_WRAPAROUND_FIELD_MASK 0x00000001 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_WRAPAROUND_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_WRAPAROUND_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_TRACE_MODE_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_MODE_FIELD_MASK 0x00000002 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_MODE_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_MODE_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_TRACE_DISABLE_IDLE_IN_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_DISABLE_IDLE_IN_FIELD_MASK 0x00000004 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_DISABLE_IDLE_IN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_DISABLE_IDLE_IN_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_TRACE_DISABLE_WAKEUP_LOG_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_DISABLE_WAKEUP_LOG_FIELD_MASK 0x00000008 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_DISABLE_WAKEUP_LOG_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_DISABLE_WAKEUP_LOG_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_TRACE_TASK_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_TASK_FIELD_MASK 0x000000f0 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_TASK_FIELD_WIDTH 4 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_TASK_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_IDLE_COUNTER_SOURCE_SEL_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_IDLE_COUNTER_SOURCE_SEL_FIELD_MASK 0x00000100 +#define RNR_REGS_CFG_PROFILING_CFG_1_IDLE_COUNTER_SOURCE_SEL_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_1_IDLE_COUNTER_SOURCE_SEL_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_COUNTERS_SELECTED_TASK_MODE_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_COUNTERS_SELECTED_TASK_MODE_FIELD_MASK 0x00000200 +#define RNR_REGS_CFG_PROFILING_CFG_1_COUNTERS_SELECTED_TASK_MODE_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_1_COUNTERS_SELECTED_TASK_MODE_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_COUNTERS_TASK_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_COUNTERS_TASK_FIELD_MASK 0x00003c00 +#define RNR_REGS_CFG_PROFILING_CFG_1_COUNTERS_TASK_FIELD_WIDTH 4 +#define RNR_REGS_CFG_PROFILING_CFG_1_COUNTERS_TASK_FIELD_SHIFT 10 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_RESERVED0_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_RESERVED0_FIELD_MASK 0x3fffc000 +#define RNR_REGS_CFG_PROFILING_CFG_1_RESERVED0_FIELD_WIDTH 16 +#define RNR_REGS_CFG_PROFILING_CFG_1_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_TRACE_RESET_EVENT_FIFO_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_RESET_EVENT_FIFO_FIELD_MASK 0x40000000 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_RESET_EVENT_FIFO_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_RESET_EVENT_FIFO_FIELD_SHIFT 30 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_1_TRACE_CLEAR_FIFO_OVERRUN_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_CLEAR_FIFO_OVERRUN_FIELD_MASK 0x80000000 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_CLEAR_FIFO_OVERRUN_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_1_TRACE_CLEAR_FIFO_OVERRUN_FIELD_SHIFT 31 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_COUNTER_VAL_FIELD; +#define RNR_REGS_CFG_PROFILING_COUNTER_VAL_FIELD_MASK 0xffffffff +#define RNR_REGS_CFG_PROFILING_COUNTER_VAL_FIELD_WIDTH 32 +#define RNR_REGS_CFG_PROFILING_COUNTER_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_2_EN_PROF_ON_SELECTED_PC_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_2_EN_PROF_ON_SELECTED_PC_FIELD_MASK 0x00000001 +#define RNR_REGS_CFG_PROFILING_CFG_2_EN_PROF_ON_SELECTED_PC_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_2_EN_PROF_ON_SELECTED_PC_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_2_TRIGGER_ON_SECOND_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_2_TRIGGER_ON_SECOND_FIELD_MASK 0x00000002 +#define RNR_REGS_CFG_PROFILING_CFG_2_TRIGGER_ON_SECOND_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_2_TRIGGER_ON_SECOND_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_2_PC_START_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_2_PC_START_FIELD_MASK 0x00007ffc +#define RNR_REGS_CFG_PROFILING_CFG_2_PC_START_FIELD_WIDTH 13 +#define RNR_REGS_CFG_PROFILING_CFG_2_PC_START_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_2_PC_STOP_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_2_PC_STOP_FIELD_MASK 0x0fff8000 +#define RNR_REGS_CFG_PROFILING_CFG_2_PC_STOP_FIELD_WIDTH 13 +#define RNR_REGS_CFG_PROFILING_CFG_2_PC_STOP_FIELD_SHIFT 15 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_2_DISABLE_NOPS_AND_UNCOND_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_2_DISABLE_NOPS_AND_UNCOND_FIELD_MASK 0x10000000 +#define RNR_REGS_CFG_PROFILING_CFG_2_DISABLE_NOPS_AND_UNCOND_FIELD_WIDTH 1 +#define RNR_REGS_CFG_PROFILING_CFG_2_DISABLE_NOPS_AND_UNCOND_FIELD_SHIFT 28 + +extern const ru_field_rec RNR_REGS_CFG_PROFILING_CFG_2_RESERVED0_FIELD; +#define RNR_REGS_CFG_PROFILING_CFG_2_RESERVED0_FIELD_MASK 0xe0000000 +#define RNR_REGS_CFG_PROFILING_CFG_2_RESERVED0_FIELD_WIDTH 3 +#define RNR_REGS_CFG_PROFILING_CFG_2_RESERVED0_FIELD_SHIFT 29 + +extern const ru_field_rec RNR_REGS_CFG_EXEC_CMDS_CNT_EXEC_COUNTER_FIELD; +#define RNR_REGS_CFG_EXEC_CMDS_CNT_EXEC_COUNTER_FIELD_MASK 0xffffffff +#define RNR_REGS_CFG_EXEC_CMDS_CNT_EXEC_COUNTER_FIELD_WIDTH 32 +#define RNR_REGS_CFG_EXEC_CMDS_CNT_EXEC_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_IDLE_CNT1_IDLE_CNT_FIELD; +#define RNR_REGS_CFG_IDLE_CNT1_IDLE_CNT_FIELD_MASK 0xffffffff +#define RNR_REGS_CFG_IDLE_CNT1_IDLE_CNT_FIELD_WIDTH 32 +#define RNR_REGS_CFG_IDLE_CNT1_IDLE_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_JMP_CNT_UNTAKEN_JMP_CNT_FIELD; +#define RNR_REGS_CFG_JMP_CNT_UNTAKEN_JMP_CNT_FIELD_MASK 0x0000ffff +#define RNR_REGS_CFG_JMP_CNT_UNTAKEN_JMP_CNT_FIELD_WIDTH 16 +#define RNR_REGS_CFG_JMP_CNT_UNTAKEN_JMP_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_REGS_CFG_JMP_CNT_TAKEN_JMP_CNT_FIELD; +#define RNR_REGS_CFG_JMP_CNT_TAKEN_JMP_CNT_FIELD_MASK 0xffff0000 +#define RNR_REGS_CFG_JMP_CNT_TAKEN_JMP_CNT_FIELD_WIDTH 16 +#define RNR_REGS_CFG_JMP_CNT_TAKEN_JMP_CNT_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_REGS_CFG_METAL_FIX_REG_METAL_FIX_FIELD; +#define RNR_REGS_CFG_METAL_FIX_REG_METAL_FIX_FIELD_MASK 0xffffffff +#define RNR_REGS_CFG_METAL_FIX_REG_METAL_FIX_FIELD_WIDTH 32 +#define RNR_REGS_CFG_METAL_FIX_REG_METAL_FIX_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_ENG_CFG_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ENG_CFG_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ENG_CFG_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ENG_CFG_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_EXCEPTION_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_EXCEPTION_EN_FIELD_MASK 0x000fffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_EXCEPTION_EN_FIELD_WIDTH 20 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_EXCEPTION_EN_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_PROFILE_US_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_PROFILE_US_FIELD_MASK 0x00700000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_PROFILE_US_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_PROFILE_US_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_DISABLE_L2TP_SOURCE_PORT_CHECK_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_DISABLE_L2TP_SOURCE_PORT_CHECK_FIELD_MASK 0x00800000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_DISABLE_L2TP_SOURCE_PORT_CHECK_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_DISABLE_L2TP_SOURCE_PORT_CHECK_FIELD_SHIFT 23 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_TCP_FLAGS_FILT_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_TCP_FLAGS_FILT_FIELD_MASK 0xff000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_TCP_FLAGS_FILT_FIELD_WIDTH 8 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_TCP_FLAGS_FILT_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_FIELD_MASK 0x00000fff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED0_FIELD_MASK 0x00007000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_EN_FIELD_MASK 0x00008000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_0_EN_FIELD_SHIFT 15 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_FIELD_MASK 0x0fff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED1_FIELD_MASK 0x70000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED1_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_RESERVED1_FIELD_SHIFT 28 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_EN_FIELD_MASK 0x80000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_VID_1_EN_FIELD_SHIFT 31 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_FIELD_MASK 0x00000fff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED0_FIELD_MASK 0x00007000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_EN_FIELD_MASK 0x00008000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_2_EN_FIELD_SHIFT 15 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_FIELD_MASK 0x0fff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED1_FIELD_MASK 0x70000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED1_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_RESERVED1_FIELD_SHIFT 28 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_EN_FIELD_MASK 0x80000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_VID_3_EN_FIELD_SHIFT 31 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_FIELD_MASK 0x00000fff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED0_FIELD_MASK 0x00007000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_EN_FIELD_MASK 0x00008000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_4_EN_FIELD_SHIFT 15 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_FIELD_MASK 0x0fff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED1_FIELD_MASK 0x70000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED1_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_RESERVED1_FIELD_SHIFT 28 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_EN_FIELD_MASK 0x80000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_VID_5_EN_FIELD_SHIFT 31 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_FIELD_MASK 0x00000fff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED0_FIELD_MASK 0x00007000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_EN_FIELD_MASK 0x00008000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_6_EN_FIELD_SHIFT 15 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_FIELD_MASK 0x0fff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED1_FIELD_MASK 0x70000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED1_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_RESERVED1_FIELD_SHIFT 28 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_EN_FIELD_MASK 0x80000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_VID_7_EN_FIELD_SHIFT 31 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_IP_ADDRESS_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_IP_ADDRESS_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_IP_ADDRESS_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_IP_ADDRESS_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_IP_ADDRESS_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_IP_ADDRESS_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_IP_ADDRESS_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_IP_ADDRESS_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_IP_ADDRESS_MASK_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_IP_ADDRESS_MASK_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_IP_ADDRESS_MASK_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_IP_ADDRESS_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_IP_ADDRESS_MASK_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_IP_ADDRESS_MASK_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_IP_ADDRESS_MASK_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_IP_ADDRESS_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_DIP_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_DIP_EN_FIELD_MASK 0x00000001 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_DIP_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_DIP_EN_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_DIP_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_DIP_EN_FIELD_MASK 0x00000002 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_DIP_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_DIP_EN_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_DIP_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_DIP_EN_FIELD_MASK 0x00000004 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_DIP_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_DIP_EN_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_DIP_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_DIP_EN_FIELD_MASK 0x00000008 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_DIP_EN_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_DIP_EN_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_VALID_FIELD_MASK 0x00000010 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER0_VALID_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_VALID_FIELD_MASK 0x00000020 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER1_VALID_FIELD_SHIFT 5 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_VALID_FIELD_MASK 0x00000040 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER2_VALID_FIELD_SHIFT 6 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_VALID_FIELD_MASK 0x00000080 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_IP_FILTER3_VALID_FIELD_SHIFT 7 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_RESERVED0_FIELD_MASK 0xffffff00 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_RESERVED0_FIELD_WIDTH 24 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_CODE_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_CODE_FIELD_MASK 0x00ffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_CODE_FIELD_WIDTH 24 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_CODE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_RFC1042_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_RFC1042_FIELD_MASK 0x01000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_RFC1042_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_RFC1042_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_8021Q_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_8021Q_FIELD_MASK 0x02000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_8021Q_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_EN_8021Q_FIELD_SHIFT 25 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_RESERVED0_FIELD_MASK 0xfc000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_RESERVED0_FIELD_WIDTH 6 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_RESERVED0_FIELD_SHIFT 26 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_0_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_0_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_1_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_1_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_PPP_CODE_1_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_0_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_0_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_1_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_1_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_ETHTYPE_QTAG_1_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_0_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_0_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_1_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_1_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_ETHYPE_1_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_2_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_2_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_2_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_2_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_3_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_3_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_3_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_ETHYPE_3_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_0_FIELD_MASK 0x00000003 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_0_FIELD_WIDTH 2 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_0_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_1_FIELD_MASK 0x0000000c +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_1_FIELD_WIDTH 2 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_1_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_2_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_2_FIELD_MASK 0x00000030 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_2_FIELD_WIDTH 2 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_2_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_3_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_3_FIELD_MASK 0x000000c0 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_3_FIELD_WIDTH 2 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_PROT_3_FIELD_SHIFT 6 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_EN_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_EN_FIELD_MASK 0x00000f00 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_EN_FIELD_WIDTH 4 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_EN_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_RESERVED0_FIELD_MASK 0x0000f000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_RESERVED0_FIELD_WIDTH 4 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_0_FIELD_MASK 0x000f0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_0_FIELD_WIDTH 4 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_1_FIELD_MASK 0x00f00000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_1_FIELD_WIDTH 4 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_2_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_2_FIELD_MASK 0x0f000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_2_FIELD_WIDTH 4 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_2_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_3_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_3_FIELD_MASK 0xf0000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_3_FIELD_WIDTH 4 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_ETHTYPE_USER_OFFSET_3_FIELD_SHIFT 28 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_HOP_BY_HOP_MATCH_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_HOP_BY_HOP_MATCH_FIELD_MASK 0x00000001 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_HOP_BY_HOP_MATCH_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_HOP_BY_HOP_MATCH_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_ROUTING_EH_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_ROUTING_EH_FIELD_MASK 0x00000002 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_ROUTING_EH_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_ROUTING_EH_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_DEST_OPT_EH_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_DEST_OPT_EH_FIELD_MASK 0x00000004 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_DEST_OPT_EH_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_DEST_OPT_EH_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_AH_MATCH_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_AH_MATCH_FIELD_MASK 0x00000008 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_AH_MATCH_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_AH_MATCH_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_RESERVED0_FIELD_MASK 0xfffffff0 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_RESERVED0_FIELD_WIDTH 28 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_0_FIELD_MASK 0x00000007 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_0_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_0_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_1_FIELD_MASK 0x00000038 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_1_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_1_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_2_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_2_FIELD_MASK 0x000001c0 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_2_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_0_PROFILE_2_FIELD_SHIFT 6 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_0_FIELD_MASK 0x00000e00 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_0_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_0_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_1_FIELD_MASK 0x00007000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_1_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_1_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_2_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_2_FIELD_MASK 0x00038000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_2_FIELD_WIDTH 3 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_QTAG_NEST_1_PROFILE_2_FIELD_SHIFT 15 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_RESERVED0_FIELD_MASK 0x0ffc0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_RESERVED0_FIELD_WIDTH 10 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_MAX_NUM_OF_VLANS_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_MAX_NUM_OF_VLANS_FIELD_MASK 0xf0000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_MAX_NUM_OF_VLANS_FIELD_WIDTH 4 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_MAX_NUM_OF_VLANS_FIELD_SHIFT 28 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_0_HARD_NEST_PROFILE_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_0_HARD_NEST_PROFILE_FIELD_MASK 0x00000fff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_0_HARD_NEST_PROFILE_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_0_HARD_NEST_PROFILE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_0_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_0_RESERVED0_FIELD_MASK 0xfffff000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_0_RESERVED0_FIELD_WIDTH 20 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_0_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_1_HARD_NEST_PROFILE_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_1_HARD_NEST_PROFILE_FIELD_MASK 0x00000fff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_1_HARD_NEST_PROFILE_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_1_HARD_NEST_PROFILE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_1_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_1_RESERVED0_FIELD_MASK 0xfffff000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_1_RESERVED0_FIELD_WIDTH 20 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_1_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_2_HARD_NEST_PROFILE_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_2_HARD_NEST_PROFILE_FIELD_MASK 0x00000fff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_2_HARD_NEST_PROFILE_FIELD_WIDTH 12 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_2_HARD_NEST_PROFILE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_2_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_2_RESERVED0_FIELD_MASK 0xfffff000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_2_RESERVED0_FIELD_WIDTH 20 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_2_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_0_FIELD_MASK 0x000000ff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_0_FIELD_WIDTH 8 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_0_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_1_FIELD_MASK 0x0000ff00 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_1_FIELD_WIDTH 8 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_1_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_2_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_2_FIELD_MASK 0x00ff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_2_FIELD_WIDTH 8 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_2_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_3_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_3_FIELD_MASK 0xff000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_3_FIELD_WIDTH 8 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_USER_IP_PROT_3_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_DA_FILT_LSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_DA_FILT_LSB_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_DA_FILT_LSB_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_DA_FILT_LSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_H_DA_FILT_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_H_DA_FILT_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_H_DA_FILT_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_H_DA_FILT_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_DA_FILT_LSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_DA_FILT_LSB_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_DA_FILT_LSB_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_DA_FILT_LSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_H_DA_FILT_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_H_DA_FILT_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_H_DA_FILT_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_H_DA_FILT_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_DA_FILT_LSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_DA_FILT_LSB_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_DA_FILT_LSB_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_DA_FILT_LSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_DA_FILT_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_DA_FILT_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_DA_FILT_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_DA_FILT_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_DA_FILT_LSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_DA_FILT_LSB_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_DA_FILT_LSB_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_DA_FILT_LSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_DA_FILT_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_DA_FILT_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_DA_FILT_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_DA_FILT_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_DA_FILT_LSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_DA_FILT_LSB_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_DA_FILT_LSB_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_DA_FILT_LSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_DA_FILT_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_DA_FILT_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_DA_FILT_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_DA_FILT_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_DA_FILT_LSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_DA_FILT_LSB_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_DA_FILT_LSB_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_DA_FILT_LSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_DA_FILT_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_DA_FILT_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_DA_FILT_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_DA_FILT_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_DA_FILT_LSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_DA_FILT_LSB_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_DA_FILT_LSB_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_DA_FILT_LSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_DA_FILT_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_DA_FILT_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_DA_FILT_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_DA_FILT_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_DA_FILT_LSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_DA_FILT_LSB_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_DA_FILT_LSB_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_DA_FILT_LSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_DA_FILT_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_DA_FILT_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_DA_FILT_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_DA_FILT_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_L_DA_FILT_LSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_L_DA_FILT_LSB_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_L_DA_FILT_LSB_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_L_DA_FILT_LSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_H_DA_FILT_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_H_DA_FILT_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_H_DA_FILT_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_H_DA_FILT_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_DA_FILT_MASK_L_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_DA_FILT_MASK_L_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_DA_FILT_MASK_L_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_DA_FILT_MASK_L_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_H_DA_FILT_MASK_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_H_DA_FILT_MASK_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_H_DA_FILT_MASK_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_H_DA_FILT_MASK_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_DA_FILT_MASK_L_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_DA_FILT_MASK_L_FIELD_MASK 0xffffffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_DA_FILT_MASK_L_FIELD_WIDTH 32 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_DA_FILT_MASK_L_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_H_DA_FILT_MASK_MSB_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_H_DA_FILT_MASK_MSB_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_H_DA_FILT_MASK_MSB_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_H_DA_FILT_MASK_MSB_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_H_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_H_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_H_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_H_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT0_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT0_VALID_FIELD_MASK 0x00000001 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT0_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT0_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT1_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT1_VALID_FIELD_MASK 0x00000002 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT1_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT1_VALID_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT2_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT2_VALID_FIELD_MASK 0x00000004 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT2_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT2_VALID_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT3_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT3_VALID_FIELD_MASK 0x00000008 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT3_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT3_VALID_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT4_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT4_VALID_FIELD_MASK 0x00000010 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT4_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT4_VALID_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT5_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT5_VALID_FIELD_MASK 0x00000020 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT5_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT5_VALID_FIELD_SHIFT 5 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT6_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT6_VALID_FIELD_MASK 0x00000040 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT6_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT6_VALID_FIELD_SHIFT 6 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT7_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT7_VALID_FIELD_MASK 0x00000080 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT7_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT7_VALID_FIELD_SHIFT 7 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT8_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT8_VALID_FIELD_MASK 0x00000100 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT8_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_DA_FILT8_VALID_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_RESERVED0_FIELD_MASK 0xfffffe00 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_RESERVED0_FIELD_WIDTH 23 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT0_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT0_VALID_FIELD_MASK 0x00000001 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT0_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT0_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT1_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT1_VALID_FIELD_MASK 0x00000002 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT1_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT1_VALID_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT2_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT2_VALID_FIELD_MASK 0x00000004 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT2_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT2_VALID_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT3_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT3_VALID_FIELD_MASK 0x00000008 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT3_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT3_VALID_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT4_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT4_VALID_FIELD_MASK 0x00000010 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT4_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT4_VALID_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT5_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT5_VALID_FIELD_MASK 0x00000020 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT5_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT5_VALID_FIELD_SHIFT 5 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT6_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT6_VALID_FIELD_MASK 0x00000040 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT6_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT6_VALID_FIELD_SHIFT 6 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT7_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT7_VALID_FIELD_MASK 0x00000080 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT7_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT7_VALID_FIELD_SHIFT 7 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT8_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT8_VALID_FIELD_MASK 0x00000100 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT8_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_DA_FILT8_VALID_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_RESERVED0_FIELD_MASK 0xfffffe00 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_RESERVED0_FIELD_WIDTH 23 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT0_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT0_VALID_FIELD_MASK 0x00000001 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT0_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT0_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT1_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT1_VALID_FIELD_MASK 0x00000002 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT1_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT1_VALID_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT2_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT2_VALID_FIELD_MASK 0x00000004 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT2_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT2_VALID_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT3_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT3_VALID_FIELD_MASK 0x00000008 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT3_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT3_VALID_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT4_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT4_VALID_FIELD_MASK 0x00000010 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT4_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT4_VALID_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT5_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT5_VALID_FIELD_MASK 0x00000020 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT5_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT5_VALID_FIELD_SHIFT 5 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT6_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT6_VALID_FIELD_MASK 0x00000040 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT6_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT6_VALID_FIELD_SHIFT 6 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT7_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT7_VALID_FIELD_MASK 0x00000080 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT7_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT7_VALID_FIELD_SHIFT 7 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT8_VALID_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT8_VALID_FIELD_MASK 0x00000100 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT8_VALID_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_DA_FILT8_VALID_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_RESERVED0_FIELD_MASK 0xfffffe00 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_RESERVED0_FIELD_WIDTH 23 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_GRE_PROTOCOL_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_GRE_PROTOCOL_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_GRE_PROTOCOL_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_GRE_PROTOCOL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_0_FIELD_MASK 0x0000001f +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_0_FIELD_WIDTH 5 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_0_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_1_FIELD_MASK 0x000003e0 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_1_FIELD_WIDTH 5 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_1_FIELD_SHIFT 5 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_2_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_2_FIELD_MASK 0x00007c00 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_2_FIELD_WIDTH 5 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_SIZE_PROFILE_2_FIELD_SHIFT 10 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_0_FIELD_MASK 0x00008000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_0_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_0_FIELD_SHIFT 15 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_1_FIELD_MASK 0x00010000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_1_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_1_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_2_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_2_FIELD_MASK 0x00020000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_2_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_PRE_DA_DPROFILE_2_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_RESERVED0_FIELD_MASK 0xfffc0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_RESERVED0_FIELD_WIDTH 14 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DOS_ATTACK_MASK_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DOS_ATTACK_MASK_FIELD_MASK 0x0000ffff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DOS_ATTACK_MASK_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DOS_ATTACK_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DOS_ATTACK_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DOS_ATTACK_RESERVED0_FIELD_MASK 0xffff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DOS_ATTACK_RESERVED0_FIELD_WIDTH 16 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DOS_ATTACK_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_V4_SIZE_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_V4_SIZE_FIELD_MASK 0x000007ff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_V4_SIZE_FIELD_WIDTH 11 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_V4_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_RESERVED0_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_RESERVED0_FIELD_MASK 0x0000f800 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_RESERVED0_FIELD_WIDTH 5 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_RESERVED0_FIELD_SHIFT 11 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_V6_SIZE_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_V6_SIZE_FIELD_MASK 0x07ff0000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_V6_SIZE_FIELD_WIDTH 11 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_V6_SIZE_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_R1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_R1_FIELD_MASK 0xf8000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_R1_FIELD_WIDTH 5 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_R1_FIELD_SHIFT 27 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L2_TOS_MASK_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L2_TOS_MASK_FIELD_MASK 0x000000ff +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L2_TOS_MASK_FIELD_WIDTH 8 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L2_TOS_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L3_TOS_MASK_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L3_TOS_MASK_FIELD_MASK 0x0000ff00 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L3_TOS_MASK_FIELD_WIDTH 8 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L3_TOS_MASK_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L2_EXCLUDE_SMAC_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L2_EXCLUDE_SMAC_FIELD_MASK 0x00010000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L2_EXCLUDE_SMAC_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L2_EXCLUDE_SMAC_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_TCP_PURE_ACK_MASK_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_TCP_PURE_ACK_MASK_FIELD_MASK 0x00020000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_TCP_PURE_ACK_MASK_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_TCP_PURE_ACK_MASK_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_INCUDE_DEI_IN_VLANS_CRC_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_INCUDE_DEI_IN_VLANS_CRC_FIELD_MASK 0x00040000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_INCUDE_DEI_IN_VLANS_CRC_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_INCUDE_DEI_IN_VLANS_CRC_FIELD_SHIFT 18 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_KEY_SIZE_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_KEY_SIZE_FIELD_MASK 0x00080000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_KEY_SIZE_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_KEY_SIZE_FIELD_SHIFT 19 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_MAX_NUM_OF_VLANS_IN_CRC_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_MAX_NUM_OF_VLANS_IN_CRC_FIELD_MASK 0x00f00000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_MAX_NUM_OF_VLANS_IN_CRC_FIELD_WIDTH 4 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_MAX_NUM_OF_VLANS_IN_CRC_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L3_TCP_PURE_ACK_MASK_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L3_TCP_PURE_ACK_MASK_FIELD_MASK 0x01000000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L3_TCP_PURE_ACK_MASK_FIELD_WIDTH 1 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_L3_TCP_PURE_ACK_MASK_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_R1_FIELD; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_R1_FIELD_MASK 0xff800000 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_R1_FIELD_WIDTH 9 +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_R1_FIELD_SHIFT 23 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_USE_FIFO_FOR_DDR_ONLY_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_USE_FIFO_FOR_DDR_ONLY_FIELD_MASK 0x00000001 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_USE_FIFO_FOR_DDR_ONLY_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_USE_FIFO_FOR_DDR_ONLY_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_TOKEN_ARBITER_IS_RR_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_TOKEN_ARBITER_IS_RR_FIELD_MASK 0x00000002 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_TOKEN_ARBITER_IS_RR_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_TOKEN_ARBITER_IS_RR_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_CHICKEN_NO_FLOWCTRL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_CHICKEN_NO_FLOWCTRL_FIELD_MASK 0x00000004 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_CHICKEN_NO_FLOWCTRL_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_CHICKEN_NO_FLOWCTRL_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_FLOW_CTRL_CLEAR_TOKEN_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_FLOW_CTRL_CLEAR_TOKEN_FIELD_MASK 0x00000008 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_FLOW_CTRL_CLEAR_TOKEN_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_FLOW_CTRL_CLEAR_TOKEN_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_DDR_CONGEST_THRESHOLD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_DDR_CONGEST_THRESHOLD_FIELD_MASK 0x000001f0 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_DDR_CONGEST_THRESHOLD_FIELD_WIDTH 5 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_DDR_CONGEST_THRESHOLD_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_PSRAM_CONGEST_THRESHOLD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_PSRAM_CONGEST_THRESHOLD_FIELD_MASK 0x00003e00 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_PSRAM_CONGEST_THRESHOLD_FIELD_WIDTH 5 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_PSRAM_CONGEST_THRESHOLD_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_RESERVED0_FIELD_MASK 0x00004000 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_RESERVED0_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_ENABLE_REPLY_THRESHOLD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_ENABLE_REPLY_THRESHOLD_FIELD_MASK 0x00008000 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_ENABLE_REPLY_THRESHOLD_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_ENABLE_REPLY_THRESHOLD_FIELD_SHIFT 15 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_DDR_REPLY_THRESHOLD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_DDR_REPLY_THRESHOLD_FIELD_MASK 0x00ff0000 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_DDR_REPLY_THRESHOLD_FIELD_WIDTH 8 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_DDR_REPLY_THRESHOLD_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_PSRAM_REPLY_THRESHOLD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_PSRAM_REPLY_THRESHOLD_FIELD_MASK 0xff000000 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_PSRAM_REPLY_THRESHOLD_FIELD_WIDTH 8 +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_PSRAM_REPLY_THRESHOLD_FIELD_SHIFT 24 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PSRAM0_BASE_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM0_BASE_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_PSRAM0_BASE_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_PSRAM0_BASE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PSRAM1_BASE_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM1_BASE_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_PSRAM1_BASE_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_PSRAM1_BASE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PSRAM2_BASE_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM2_BASE_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_PSRAM2_BASE_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_PSRAM2_BASE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PSRAM3_BASE_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM3_BASE_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_PSRAM3_BASE_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_PSRAM3_BASE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DDR0_BASE_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DDR0_BASE_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_DDR0_BASE_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_DDR0_BASE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DDR1_BASE_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DDR1_BASE_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_DDR1_BASE_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_DDR1_BASE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PSRAM0_MASK_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM0_MASK_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_PSRAM0_MASK_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_PSRAM0_MASK_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PSRAM1_MASK_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM1_MASK_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_PSRAM1_MASK_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_PSRAM1_MASK_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PSRAM2_MASK_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM2_MASK_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_PSRAM2_MASK_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_PSRAM2_MASK_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PSRAM3_MASK_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM3_MASK_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_PSRAM3_MASK_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_PSRAM3_MASK_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DDR0_MASK_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DDR0_MASK_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_DDR0_MASK_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_DDR0_MASK_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_DDR1_MASK_VAL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_DDR1_MASK_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_GENERAL_CONFIG_DDR1_MASK_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_GENERAL_CONFIG_DDR1_MASK_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_COUNTER_LSB_SEL_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_COUNTER_LSB_SEL_FIELD_MASK 0x0000001f +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_COUNTER_LSB_SEL_FIELD_WIDTH 5 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_COUNTER_LSB_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_RESERVED0_FIELD_MASK 0x000000e0 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_0_FIELD_MASK 0x00000100 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_0_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_0_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_1_FIELD_MASK 0x00000200 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_1_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_1_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_2_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_2_FIELD_MASK 0x00000400 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_2_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_2_FIELD_SHIFT 10 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_3_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_3_FIELD_MASK 0x00000800 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_3_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_3_FIELD_SHIFT 11 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_4_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_4_FIELD_MASK 0x00001000 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_4_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_4_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_5_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_5_FIELD_MASK 0x00002000 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_5_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_ENABLE_TRACE_CORE_5_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_RESERVED1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_RESERVED1_FIELD_MASK 0xffffc000 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_RESERVED1_FIELD_WIDTH 18 +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_ADDR_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_ADDR_FIELD_MASK 0x00001fff +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_ADDR_FIELD_WIDTH 13 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_THREAD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_THREAD_FIELD_MASK 0x000f0000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_THREAD_FIELD_WIDTH 4 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_THREAD_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_RESERVED1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_RESERVED1_FIELD_MASK 0xfff00000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_RESERVED1_FIELD_WIDTH 12 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_ADDR_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_ADDR_FIELD_MASK 0x00001fff +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_ADDR_FIELD_WIDTH 13 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_THREAD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_THREAD_FIELD_MASK 0x000f0000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_THREAD_FIELD_WIDTH 4 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_THREAD_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_RESERVED1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_RESERVED1_FIELD_MASK 0xfff00000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_RESERVED1_FIELD_WIDTH 12 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_ADDR_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_ADDR_FIELD_MASK 0x00001fff +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_ADDR_FIELD_WIDTH 13 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_THREAD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_THREAD_FIELD_MASK 0x000f0000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_THREAD_FIELD_WIDTH 4 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_THREAD_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_RESERVED1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_RESERVED1_FIELD_MASK 0xfff00000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_RESERVED1_FIELD_WIDTH 12 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_ADDR_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_ADDR_FIELD_MASK 0x00001fff +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_ADDR_FIELD_WIDTH 13 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_THREAD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_THREAD_FIELD_MASK 0x000f0000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_THREAD_FIELD_WIDTH 4 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_THREAD_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_RESERVED1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_RESERVED1_FIELD_MASK 0xfff00000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_RESERVED1_FIELD_WIDTH 12 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_ADDR_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_ADDR_FIELD_MASK 0x00001fff +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_ADDR_FIELD_WIDTH 13 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_THREAD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_THREAD_FIELD_MASK 0x000f0000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_THREAD_FIELD_WIDTH 4 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_THREAD_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_RESERVED1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_RESERVED1_FIELD_MASK 0xfff00000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_RESERVED1_FIELD_WIDTH 12 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_ADDR_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_ADDR_FIELD_MASK 0x00001fff +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_ADDR_FIELD_WIDTH 13 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_THREAD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_THREAD_FIELD_MASK 0x000f0000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_THREAD_FIELD_WIDTH 4 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_THREAD_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_RESERVED1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_RESERVED1_FIELD_MASK 0xfff00000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_RESERVED1_FIELD_WIDTH 12 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_ADDR_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_ADDR_FIELD_MASK 0x00001fff +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_ADDR_FIELD_WIDTH 13 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_THREAD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_THREAD_FIELD_MASK 0x000f0000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_THREAD_FIELD_WIDTH 4 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_THREAD_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_RESERVED1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_RESERVED1_FIELD_MASK 0xfff00000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_RESERVED1_FIELD_WIDTH 12 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_ADDR_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_ADDR_FIELD_MASK 0x00001fff +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_ADDR_FIELD_WIDTH 13 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_THREAD_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_THREAD_FIELD_MASK 0x000f0000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_THREAD_FIELD_WIDTH 4 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_THREAD_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_RESERVED1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_RESERVED1_FIELD_MASK 0xfff00000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_RESERVED1_FIELD_WIDTH 12 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_HANDLER_ADDR_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_HANDLER_ADDR_FIELD_MASK 0x00001fff +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_HANDLER_ADDR_FIELD_WIDTH 13 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_HANDLER_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_RESERVED0_FIELD_MASK 0x0000e000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_RESERVED0_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_UPDATE_PC_VALUE_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_UPDATE_PC_VALUE_FIELD_MASK 0x1fff0000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_UPDATE_PC_VALUE_FIELD_WIDTH 13 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_UPDATE_PC_VALUE_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_RESERVED1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_RESERVED1_FIELD_MASK 0xe0000000 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_RESERVED1_FIELD_WIDTH 3 +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_RESERVED1_FIELD_SHIFT 29 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_TIME_COUNTER_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_TIME_COUNTER_FIELD_MASK 0x000000ff +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_TIME_COUNTER_FIELD_WIDTH 8 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_TIME_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_0_FIELD_MASK 0x00000100 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_0_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_0_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_1_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_1_FIELD_MASK 0x00000200 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_1_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_1_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_2_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_2_FIELD_MASK 0x00000400 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_2_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_2_FIELD_SHIFT 10 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_3_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_3_FIELD_MASK 0x00000800 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_3_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_3_FIELD_SHIFT 11 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_4_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_4_FIELD_MASK 0x00001000 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_4_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_4_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_5_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_5_FIELD_MASK 0x00002000 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_5_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_ENABLE_POWERSAVE_CORE_5_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_RESERVED0_FIELD_MASK 0xffffc000 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_RESERVED0_FIELD_WIDTH 18 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_0_STATUS_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_0_STATUS_FIELD_MASK 0x00000001 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_0_STATUS_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_0_STATUS_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_1_STATUS_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_1_STATUS_FIELD_MASK 0x00000002 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_1_STATUS_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_1_STATUS_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_2_STATUS_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_2_STATUS_FIELD_MASK 0x00000004 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_2_STATUS_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_2_STATUS_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_3_STATUS_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_3_STATUS_FIELD_MASK 0x00000008 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_3_STATUS_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_3_STATUS_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_4_STATUS_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_4_STATUS_FIELD_MASK 0x00000010 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_4_STATUS_FIELD_WIDTH 1 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_CORE_4_STATUS_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_RESERVED0_FIELD; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_RESERVED0_FIELD_MASK 0xffffffe0 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_RESERVED0_FIELD_WIDTH 27 +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_HDR_SW_RST_FIELD; +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_HDR_SW_RST_FIELD_MASK 0x00000001 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_HDR_SW_RST_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_HDR_SW_RST_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_DATA_SW_RST_FIELD; +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_DATA_SW_RST_FIELD_MASK 0x00000002 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_DATA_SW_RST_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_DATA_SW_RST_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_DEBUG_FIFO_CONFIG_DDR_HDR_SW_RST_FIELD; +#define RNR_QUAD_DEBUG_FIFO_CONFIG_DDR_HDR_SW_RST_FIELD_MASK 0x00000004 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_DDR_HDR_SW_RST_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_DDR_HDR_SW_RST_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_DEBUG_FIFO_CONFIG_RESERVED0_FIELD; +#define RNR_QUAD_DEBUG_FIFO_CONFIG_RESERVED0_FIELD_MASK 0x000000f8 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_RESERVED0_FIELD_WIDTH 5 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_HDR_SW_RD_ADDR_FIELD; +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_HDR_SW_RD_ADDR_FIELD_MASK 0x00000f00 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_HDR_SW_RD_ADDR_FIELD_WIDTH 4 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_HDR_SW_RD_ADDR_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_DATA_SW_RD_ADDR_FIELD; +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_DATA_SW_RD_ADDR_FIELD_MASK 0x0000f000 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_DATA_SW_RD_ADDR_FIELD_WIDTH 4 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_PSRAM_DATA_SW_RD_ADDR_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_DEBUG_FIFO_CONFIG_DDR_HDR_SW_RD_ADDR_FIELD; +#define RNR_QUAD_DEBUG_FIFO_CONFIG_DDR_HDR_SW_RD_ADDR_FIELD_MASK 0x000f0000 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_DDR_HDR_SW_RD_ADDR_FIELD_WIDTH 4 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_DDR_HDR_SW_RD_ADDR_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_DEBUG_FIFO_CONFIG_RESERVED1_FIELD; +#define RNR_QUAD_DEBUG_FIFO_CONFIG_RESERVED1_FIELD_MASK 0xfff00000 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_RESERVED1_FIELD_WIDTH 12 +#define RNR_QUAD_DEBUG_FIFO_CONFIG_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_FULL_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_FULL_FIELD_MASK 0x00000001 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_FULL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_EMPTY_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_EMPTY_FIELD_MASK 0x00000002 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_EMPTY_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED0_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED0_FIELD_MASK 0x0000000c +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED0_FIELD_WIDTH 2 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_PUSH_WR_CNTR_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_PUSH_WR_CNTR_FIELD_MASK 0x000001f0 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_PUSH_WR_CNTR_FIELD_WIDTH 5 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_PUSH_WR_CNTR_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED1_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED1_FIELD_MASK 0x00000e00 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED1_FIELD_WIDTH 3 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED1_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_POP_RD_CNTR_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_POP_RD_CNTR_FIELD_MASK 0x0001f000 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_POP_RD_CNTR_FIELD_WIDTH 5 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_POP_RD_CNTR_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED2_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED2_FIELD_MASK 0x000e0000 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED2_FIELD_WIDTH 3 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED2_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_USED_WORDS_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x01f00000 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 5 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED3_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED3_FIELD_MASK 0xfe000000 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED3_FIELD_WIDTH 7 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_RESERVED3_FIELD_SHIFT 25 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_FULL_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_FULL_FIELD_MASK 0x00000001 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_FULL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_EMPTY_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_EMPTY_FIELD_MASK 0x00000002 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_EMPTY_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_ALMOST_FULL_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_ALMOST_FULL_FIELD_MASK 0x00000004 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_ALMOST_FULL_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_ALMOST_FULL_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED0_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED0_FIELD_MASK 0x00000008 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED0_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_PUSH_WR_CNTR_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_PUSH_WR_CNTR_FIELD_MASK 0x000001f0 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_PUSH_WR_CNTR_FIELD_WIDTH 5 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_PUSH_WR_CNTR_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED1_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED1_FIELD_MASK 0x00000e00 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED1_FIELD_WIDTH 3 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED1_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_POP_RD_CNTR_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_POP_RD_CNTR_FIELD_MASK 0x0001f000 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_POP_RD_CNTR_FIELD_WIDTH 5 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_POP_RD_CNTR_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED2_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED2_FIELD_MASK 0x000e0000 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED2_FIELD_WIDTH 3 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED2_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_USED_WORDS_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x01f00000 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 5 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED3_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED3_FIELD_MASK 0xfe000000 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED3_FIELD_WIDTH 7 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_RESERVED3_FIELD_SHIFT 25 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_FULL_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_FULL_FIELD_MASK 0x00000001 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_FULL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_EMPTY_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_EMPTY_FIELD_MASK 0x00000002 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_EMPTY_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED0_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED0_FIELD_MASK 0x0000000c +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED0_FIELD_WIDTH 2 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_PUSH_WR_CNTR_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_PUSH_WR_CNTR_FIELD_MASK 0x000001f0 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_PUSH_WR_CNTR_FIELD_WIDTH 5 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_PUSH_WR_CNTR_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED1_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED1_FIELD_MASK 0x00000e00 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED1_FIELD_WIDTH 3 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED1_FIELD_SHIFT 9 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_POP_RD_CNTR_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_POP_RD_CNTR_FIELD_MASK 0x0001f000 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_POP_RD_CNTR_FIELD_WIDTH 5 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_POP_RD_CNTR_FIELD_SHIFT 12 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED2_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED2_FIELD_MASK 0x000e0000 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED2_FIELD_WIDTH 3 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED2_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_USED_WORDS_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_USED_WORDS_FIELD_MASK 0x01f00000 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_USED_WORDS_FIELD_WIDTH 5 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_USED_WORDS_FIELD_SHIFT 20 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED3_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED3_FIELD_MASK 0xfe000000 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED3_FIELD_WIDTH 7 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_RESERVED3_FIELD_SHIFT 25 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_FULL_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_FULL_FIELD_MASK 0x00000001 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_FULL_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_FULL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_EMPTY_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_EMPTY_FIELD_MASK 0x00000002 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_EMPTY_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_EMPTY_FIELD_SHIFT 1 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_ALMOST_FULL_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_ALMOST_FULL_FIELD_MASK 0x00000004 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_ALMOST_FULL_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_ALMOST_FULL_FIELD_SHIFT 2 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED0_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED0_FIELD_MASK 0x00000008 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED0_FIELD_WIDTH 1 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_WR_CNTR_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_WR_CNTR_FIELD_MASK 0x00001ff0 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_WR_CNTR_FIELD_WIDTH 9 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_WR_CNTR_FIELD_SHIFT 4 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED1_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED1_FIELD_MASK 0x0000e000 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED1_FIELD_WIDTH 3 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RD_CNTR_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RD_CNTR_FIELD_MASK 0x01ff0000 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RD_CNTR_FIELD_WIDTH 9 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RD_CNTR_FIELD_SHIFT 16 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED2_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED2_FIELD_MASK 0xfe000000 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED2_FIELD_WIDTH 7 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_RESERVED2_FIELD_SHIFT 25 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_READ_ADDR_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_READ_ADDR_FIELD_MASK 0x000000ff +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_READ_ADDR_FIELD_WIDTH 8 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_READ_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_USED_WORDS_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_USED_WORDS_FIELD_MASK 0x0001ff00 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_USED_WORDS_FIELD_WIDTH 9 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_USED_WORDS_FIELD_SHIFT 8 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_RESERVED0_FIELD; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_RESERVED0_FIELD_MASK 0xfffe0000 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_RESERVED0_FIELD_WIDTH 15 +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_RESERVED0_FIELD_SHIFT 17 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA1_DATA_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA1_DATA_FIELD_MASK 0xffffffff +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA1_DATA_FIELD_WIDTH 32 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA1_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA2_DATA_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA2_DATA_FIELD_MASK 0xffffffff +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA2_DATA_FIELD_WIDTH 32 +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA2_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA1_DATA_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA1_DATA_FIELD_MASK 0xffffffff +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA1_DATA_FIELD_WIDTH 32 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA1_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA2_DATA_FIELD; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA2_DATA_FIELD_MASK 0xffffffff +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA2_DATA_FIELD_WIDTH 32 +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA2_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA1_DATA_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA1_DATA_FIELD_MASK 0xffffffff +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA1_DATA_FIELD_WIDTH 32 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA1_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA2_DATA_FIELD; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA2_DATA_FIELD_MASK 0xffffffff +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA2_DATA_FIELD_WIDTH 32 +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA2_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_EXT_FLOWCTRL_CONFIG_TOKEN_VAL_VAL_FIELD; +#define RNR_QUAD_EXT_FLOWCTRL_CONFIG_TOKEN_VAL_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_EXT_FLOWCTRL_CONFIG_TOKEN_VAL_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_EXT_FLOWCTRL_CONFIG_TOKEN_VAL_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_UBUS_DECODE_CFG_PSRAM_UBUS_DECODE_VAL_FIELD; +#define RNR_QUAD_UBUS_DECODE_CFG_PSRAM_UBUS_DECODE_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_UBUS_DECODE_CFG_PSRAM_UBUS_DECODE_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_UBUS_DECODE_CFG_PSRAM_UBUS_DECODE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec RNR_QUAD_UBUS_DECODE_CFG_DDR_UBUS_DECODE_VAL_FIELD; +#define RNR_QUAD_UBUS_DECODE_CFG_DDR_UBUS_DECODE_VAL_FIELD_MASK 0xffffffff +#define RNR_QUAD_UBUS_DECODE_CFG_DDR_UBUS_DECODE_VAL_FIELD_WIDTH 32 +#define RNR_QUAD_UBUS_DECODE_CFG_DDR_UBUS_DECODE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_EN_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_EN_FIELD_MASK 0x00000001 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_EN_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_EN_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED0_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED0_FIELD_MASK 0x000000fe +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED0_FIELD_WIDTH 7 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RDY_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RDY_FIELD_MASK 0x00000100 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RDY_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RDY_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED1_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED1_FIELD_MASK 0x0000fe00 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED1_FIELD_WIDTH 7 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED1_FIELD_SHIFT 9 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_REORDR_PAR_MOD_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_REORDR_PAR_MOD_FIELD_MASK 0x00010000 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_REORDR_PAR_MOD_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_REORDR_PAR_MOD_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_PER_Q_EGRS_CONGST_EN_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_PER_Q_EGRS_CONGST_EN_FIELD_MASK 0x00020000 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_PER_Q_EGRS_CONGST_EN_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_PER_Q_EGRS_CONGST_EN_FIELD_SHIFT 17 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_DSPTCH_SM_ENH_MOD_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_DSPTCH_SM_ENH_MOD_FIELD_MASK 0x00040000 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_DSPTCH_SM_ENH_MOD_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_DSPTCH_SM_ENH_MOD_FIELD_SHIFT 18 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_INGRS_PIPE_DLY_EN_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_INGRS_PIPE_DLY_EN_FIELD_MASK 0x00080000 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_INGRS_PIPE_DLY_EN_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_INGRS_PIPE_DLY_EN_FIELD_SHIFT 19 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_INGRS_PIPE_DLY_CNT_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_INGRS_PIPE_DLY_CNT_FIELD_MASK 0x00700000 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_INGRS_PIPE_DLY_CNT_FIELD_WIDTH 3 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_INGRS_PIPE_DLY_CNT_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_EGRS_DROP_ONLY_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_EGRS_DROP_ONLY_FIELD_MASK 0x00800000 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_EGRS_DROP_ONLY_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_EGRS_DROP_ONLY_FIELD_SHIFT 23 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_CRDT_EFF_REP_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_CRDT_EFF_REP_FIELD_MASK 0x01000000 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_CRDT_EFF_REP_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_CRDT_EFF_REP_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED2_FIELD; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED2_FIELD_MASK 0xfe000000 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED2_FIELD_WIDTH 7 +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_RESERVED2_FIELD_SHIFT 25 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_VQ_EN_EN_FIELD; +#define DSPTCHR_REORDER_CFG_VQ_EN_EN_FIELD_MASK 0xffffffff +#define DSPTCHR_REORDER_CFG_VQ_EN_EN_FIELD_WIDTH 32 +#define DSPTCHR_REORDER_CFG_VQ_EN_EN_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_BB_CFG_SRC_ID_FIELD; +#define DSPTCHR_REORDER_CFG_BB_CFG_SRC_ID_FIELD_MASK 0x0000003f +#define DSPTCHR_REORDER_CFG_BB_CFG_SRC_ID_FIELD_WIDTH 6 +#define DSPTCHR_REORDER_CFG_BB_CFG_SRC_ID_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_BB_CFG_RESERVED0_FIELD; +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED0_FIELD_MASK 0x000000c0 +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED0_FIELD_WIDTH 2 +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_BB_CFG_DST_ID_OVRIDE_FIELD; +#define DSPTCHR_REORDER_CFG_BB_CFG_DST_ID_OVRIDE_FIELD_MASK 0x00003f00 +#define DSPTCHR_REORDER_CFG_BB_CFG_DST_ID_OVRIDE_FIELD_WIDTH 6 +#define DSPTCHR_REORDER_CFG_BB_CFG_DST_ID_OVRIDE_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_BB_CFG_RESERVED1_FIELD; +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED1_FIELD_MASK 0x0000c000 +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED1_FIELD_WIDTH 2 +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_BB_CFG_ROUTE_OVRIDE_FIELD; +#define DSPTCHR_REORDER_CFG_BB_CFG_ROUTE_OVRIDE_FIELD_MASK 0x03ff0000 +#define DSPTCHR_REORDER_CFG_BB_CFG_ROUTE_OVRIDE_FIELD_WIDTH 10 +#define DSPTCHR_REORDER_CFG_BB_CFG_ROUTE_OVRIDE_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_BB_CFG_RESERVED2_FIELD; +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED2_FIELD_MASK 0x0c000000 +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED2_FIELD_WIDTH 2 +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED2_FIELD_SHIFT 26 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_BB_CFG_OVRIDE_EN_FIELD; +#define DSPTCHR_REORDER_CFG_BB_CFG_OVRIDE_EN_FIELD_MASK 0x10000000 +#define DSPTCHR_REORDER_CFG_BB_CFG_OVRIDE_EN_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_BB_CFG_OVRIDE_EN_FIELD_SHIFT 28 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_BB_CFG_RESERVED3_FIELD; +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED3_FIELD_MASK 0xe0000000 +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED3_FIELD_WIDTH 3 +#define DSPTCHR_REORDER_CFG_BB_CFG_RESERVED3_FIELD_SHIFT 29 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD; +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_MASK 0x00000001 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED0_FIELD; +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED0_FIELD_MASK 0x000000fe +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED0_FIELD_WIDTH 7 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_TIMER_VAL_FIELD; +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_TIMER_VAL_FIELD_MASK 0x0000ff00 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_TIMER_VAL_FIELD_WIDTH 8 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_TIMER_VAL_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD; +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_MASK 0x00010000 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED1_FIELD; +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED1_FIELD_MASK 0x000e0000 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED1_FIELD_WIDTH 3 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD; +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_MASK 0x00700000 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_WIDTH 3 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED2_FIELD; +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED2_FIELD_MASK 0x00800000 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED2_FIELD_WIDTH 1 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_RESERVED2_FIELD_SHIFT 23 + +extern const ru_field_rec DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD; +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_MASK 0xff000000 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_WIDTH 8 +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_CONGESTION_INGRS_CONGSTN_FRST_LVL_FIELD; +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_FRST_LVL_FIELD_MASK 0x00000fff +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_FRST_LVL_FIELD_WIDTH 12 +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_FRST_LVL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_CONGESTION_INGRS_CONGSTN_SCND_LVL_FIELD; +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_SCND_LVL_FIELD_MASK 0x00fff000 +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_SCND_LVL_FIELD_WIDTH 12 +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_SCND_LVL_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_CONGESTION_INGRS_CONGSTN_HYST_THRS_FIELD; +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_HYST_THRS_FIELD_MASK 0xff000000 +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_HYST_THRS_FIELD_WIDTH 8 +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_HYST_THRS_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_CONGESTION_EGRS_CONGSTN_FRST_LVL_FIELD; +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_FRST_LVL_FIELD_MASK 0x00000fff +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_FRST_LVL_FIELD_WIDTH 12 +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_FRST_LVL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_CONGESTION_EGRS_CONGSTN_SCND_LVL_FIELD; +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_SCND_LVL_FIELD_MASK 0x00fff000 +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_SCND_LVL_FIELD_WIDTH 12 +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_SCND_LVL_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_CONGESTION_EGRS_CONGSTN_HYST_THRS_FIELD; +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_HYST_THRS_FIELD_MASK 0xff000000 +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_HYST_THRS_FIELD_WIDTH 8 +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_HYST_THRS_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_FRST_LVL_FIELD; +#define DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_FRST_LVL_FIELD_MASK 0x00000fff +#define DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_FRST_LVL_FIELD_WIDTH 12 +#define DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_FRST_LVL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_SCND_LVL_FIELD; +#define DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_SCND_LVL_FIELD_MASK 0x00fff000 +#define DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_SCND_LVL_FIELD_WIDTH 12 +#define DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_SCND_LVL_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_HYST_THRS_FIELD; +#define DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_HYST_THRS_FIELD_MASK 0xff000000 +#define DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_HYST_THRS_FIELD_WIDTH 8 +#define DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_HYST_THRS_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_CONGESTION_GLBL_CONGSTN_FRST_LVL_FIELD; +#define DSPTCHR_CONGESTION_GLBL_CONGSTN_FRST_LVL_FIELD_MASK 0x00000fff +#define DSPTCHR_CONGESTION_GLBL_CONGSTN_FRST_LVL_FIELD_WIDTH 12 +#define DSPTCHR_CONGESTION_GLBL_CONGSTN_FRST_LVL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_CONGESTION_GLBL_CONGSTN_SCND_LVL_FIELD; +#define DSPTCHR_CONGESTION_GLBL_CONGSTN_SCND_LVL_FIELD_MASK 0x00fff000 +#define DSPTCHR_CONGESTION_GLBL_CONGSTN_SCND_LVL_FIELD_WIDTH 12 +#define DSPTCHR_CONGESTION_GLBL_CONGSTN_SCND_LVL_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_CONGESTION_GLBL_CONGSTN_HYST_THRS_FIELD; +#define DSPTCHR_CONGESTION_GLBL_CONGSTN_HYST_THRS_FIELD_MASK 0xff000000 +#define DSPTCHR_CONGESTION_GLBL_CONGSTN_HYST_THRS_FIELD_WIDTH 8 +#define DSPTCHR_CONGESTION_GLBL_CONGSTN_HYST_THRS_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_CONGSTN_FIELD; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_CONGSTN_FIELD_MASK 0x00000003 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_CONGSTN_FIELD_WIDTH 2 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_CONGSTN_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED0_FIELD; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED0_FIELD_MASK 0x000000fc +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED0_FIELD_WIDTH 6 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_EGRS_CONGSTN_FIELD; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_EGRS_CONGSTN_FIELD_MASK 0x00000300 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_EGRS_CONGSTN_FIELD_WIDTH 2 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_EGRS_CONGSTN_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED1_FIELD; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED1_FIELD_MASK 0x0000fc00 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED1_FIELD_WIDTH 6 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED1_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_SBPM_CONGSTN_FIELD; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_SBPM_CONGSTN_FIELD_MASK 0x00030000 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_SBPM_CONGSTN_FIELD_WIDTH 2 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_SBPM_CONGSTN_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED2_FIELD; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED2_FIELD_MASK 0x00fc0000 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED2_FIELD_WIDTH 6 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED2_FIELD_SHIFT 18 + +extern const ru_field_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_CONGSTN_STCKY_FIELD; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_CONGSTN_STCKY_FIELD_MASK 0x03000000 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_CONGSTN_STCKY_FIELD_WIDTH 2 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_CONGSTN_STCKY_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_EGRS_CONGSTN_STCKY_FIELD; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_EGRS_CONGSTN_STCKY_FIELD_MASK 0x0c000000 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_EGRS_CONGSTN_STCKY_FIELD_WIDTH 2 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_GLBL_EGRS_CONGSTN_STCKY_FIELD_SHIFT 26 + +extern const ru_field_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_SBPM_CONGSTN_STCKY_FIELD; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_SBPM_CONGSTN_STCKY_FIELD_MASK 0x30000000 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_SBPM_CONGSTN_STCKY_FIELD_WIDTH 2 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_SBPM_CONGSTN_STCKY_FIELD_SHIFT 28 + +extern const ru_field_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED3_FIELD; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED3_FIELD_MASK 0xc0000000 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED3_FIELD_WIDTH 2 +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_RESERVED3_FIELD_SHIFT 30 + +extern const ru_field_rec DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_LOW_CONGSTN_STATE_FIELD; +#define DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_LOW_CONGSTN_STATE_FIELD_MASK 0xffffffff +#define DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_LOW_CONGSTN_STATE_FIELD_WIDTH 32 +#define DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_LOW_CONGSTN_STATE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_HIGH_CONGSTN_STATE_FIELD; +#define DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_HIGH_CONGSTN_STATE_FIELD_MASK 0xffffffff +#define DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_HIGH_CONGSTN_STATE_FIELD_WIDTH 32 +#define DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_HIGH_CONGSTN_STATE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_LOW_CONGSTN_STATE_FIELD; +#define DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_LOW_CONGSTN_STATE_FIELD_MASK 0xffffffff +#define DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_LOW_CONGSTN_STATE_FIELD_WIDTH 32 +#define DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_LOW_CONGSTN_STATE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_HIGH_CONGSTN_STATE_FIELD; +#define DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_HIGH_CONGSTN_STATE_FIELD_MASK 0xffffffff +#define DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_HIGH_CONGSTN_STATE_FIELD_WIDTH 32 +#define DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_HIGH_CONGSTN_STATE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_CMN_CNT_FIELD; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_CMN_CNT_FIELD_MASK 0x000003ff +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_CMN_CNT_FIELD_WIDTH 10 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_CMN_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_RESERVED0_FIELD; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_CMN_MAX_FIELD; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_CMN_MAX_FIELD_MASK 0x000003ff +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_CMN_MAX_FIELD_WIDTH 10 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_CMN_MAX_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_GURNTD_MAX_FIELD; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_GURNTD_MAX_FIELD_MASK 0x000ffc00 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_GURNTD_MAX_FIELD_WIDTH 10 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_GURNTD_MAX_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_CREDIT_CNT_FIELD; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_CREDIT_CNT_FIELD_MASK 0xfff00000 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_CREDIT_CNT_FIELD_WIDTH 12 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_CREDIT_CNT_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_CHRNCY_CNT_FIELD; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_CHRNCY_CNT_FIELD_MASK 0x000003ff +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_CHRNCY_CNT_FIELD_WIDTH 10 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_CHRNCY_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_CHRNCY_EN_FIELD; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_CHRNCY_EN_FIELD_MASK 0x00000400 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_CHRNCY_EN_FIELD_WIDTH 1 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_CHRNCY_EN_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_RSRV_FIELD; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_RSRV_FIELD_MASK 0xfffff800 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_RSRV_FIELD_WIDTH 21 +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_RSRV_FIELD_SHIFT 11 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_CRDT_CFG_BB_ID_FIELD; +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_BB_ID_FIELD_MASK 0x000000ff +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_BB_ID_FIELD_WIDTH 8 +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_BB_ID_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_CRDT_CFG_RESERVED0_FIELD; +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_RESERVED0_FIELD_MASK 0x0000ff00 +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_RESERVED0_FIELD_WIDTH 8 +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_CRDT_CFG_TRGT_ADD_FIELD; +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_TRGT_ADD_FIELD_MASK 0xffff0000 +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_TRGT_ADD_FIELD_WIDTH 16 +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_TRGT_ADD_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_BASE_ADD_FIELD; +#define DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_BASE_ADD_FIELD_MASK 0x0000ffff +#define DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_BASE_ADD_FIELD_WIDTH 16 +#define DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_BASE_ADD_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_OFFSET_ADD_FIELD; +#define DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_OFFSET_ADD_FIELD_MASK 0xffff0000 +#define DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_OFFSET_ADD_FIELD_WIDTH 16 +#define DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_OFFSET_ADD_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q0_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q0_FIELD_MASK 0x00000001 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q0_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q1_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q1_FIELD_MASK 0x00000002 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q1_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q2_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q2_FIELD_MASK 0x00000004 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q2_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q2_FIELD_SHIFT 2 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q3_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q3_FIELD_MASK 0x00000008 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q3_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q3_FIELD_SHIFT 3 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q4_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q4_FIELD_MASK 0x00000010 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q4_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q4_FIELD_SHIFT 4 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q5_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q5_FIELD_MASK 0x00000020 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q5_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q5_FIELD_SHIFT 5 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q6_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q6_FIELD_MASK 0x00000040 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q6_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q6_FIELD_SHIFT 6 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q7_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q7_FIELD_MASK 0x00000080 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q7_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q7_FIELD_SHIFT 7 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q8_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q8_FIELD_MASK 0x00000100 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q8_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q8_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q9_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q9_FIELD_MASK 0x00000200 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q9_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q9_FIELD_SHIFT 9 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q10_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q10_FIELD_MASK 0x00000400 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q10_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q10_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q11_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q11_FIELD_MASK 0x00000800 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q11_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q11_FIELD_SHIFT 11 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q12_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q12_FIELD_MASK 0x00001000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q12_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q12_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q13_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q13_FIELD_MASK 0x00002000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q13_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q13_FIELD_SHIFT 13 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q14_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q14_FIELD_MASK 0x00004000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q14_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q14_FIELD_SHIFT 14 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q15_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q15_FIELD_MASK 0x00008000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q15_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q15_FIELD_SHIFT 15 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q16_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q16_FIELD_MASK 0x00010000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q16_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q16_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q17_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q17_FIELD_MASK 0x00020000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q17_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q17_FIELD_SHIFT 17 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q18_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q18_FIELD_MASK 0x00040000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q18_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q18_FIELD_SHIFT 18 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q19_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q19_FIELD_MASK 0x00080000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q19_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q19_FIELD_SHIFT 19 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q20_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q20_FIELD_MASK 0x00100000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q20_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q20_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q21_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q21_FIELD_MASK 0x00200000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q21_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q21_FIELD_SHIFT 21 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q22_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q22_FIELD_MASK 0x00400000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q22_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q22_FIELD_SHIFT 22 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q23_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q23_FIELD_MASK 0x00800000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q23_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q23_FIELD_SHIFT 23 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q24_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q24_FIELD_MASK 0x01000000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q24_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q24_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q25_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q25_FIELD_MASK 0x02000000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q25_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q25_FIELD_SHIFT 25 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q26_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q26_FIELD_MASK 0x04000000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q26_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q26_FIELD_SHIFT 26 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q27_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q27_FIELD_MASK 0x08000000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q27_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q27_FIELD_SHIFT 27 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q28_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q28_FIELD_MASK 0x10000000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q28_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q28_FIELD_SHIFT 28 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q29_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q29_FIELD_MASK 0x20000000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q29_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q29_FIELD_SHIFT 29 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q30_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q30_FIELD_MASK 0x40000000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q30_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q30_FIELD_SHIFT 30 + +extern const ru_field_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_Q31_FIELD; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q31_FIELD_MASK 0x80000000 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q31_FIELD_WIDTH 1 +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_Q31_FIELD_SHIFT 31 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_CMN_POOL_LMT_POOL_LMT_FIELD; +#define DSPTCHR_POOL_SIZES_CMN_POOL_LMT_POOL_LMT_FIELD_MASK 0x000003ff +#define DSPTCHR_POOL_SIZES_CMN_POOL_LMT_POOL_LMT_FIELD_WIDTH 10 +#define DSPTCHR_POOL_SIZES_CMN_POOL_LMT_POOL_LMT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_CMN_POOL_LMT_RESERVED0_FIELD; +#define DSPTCHR_POOL_SIZES_CMN_POOL_LMT_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_POOL_SIZES_CMN_POOL_LMT_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_POOL_SIZES_CMN_POOL_LMT_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_CMN_POOL_SIZE_POOL_SIZE_FIELD; +#define DSPTCHR_POOL_SIZES_CMN_POOL_SIZE_POOL_SIZE_FIELD_MASK 0x000003ff +#define DSPTCHR_POOL_SIZES_CMN_POOL_SIZE_POOL_SIZE_FIELD_WIDTH 10 +#define DSPTCHR_POOL_SIZES_CMN_POOL_SIZE_POOL_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_CMN_POOL_SIZE_RESERVED0_FIELD; +#define DSPTCHR_POOL_SIZES_CMN_POOL_SIZE_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_POOL_SIZES_CMN_POOL_SIZE_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_POOL_SIZES_CMN_POOL_SIZE_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_GRNTED_POOL_LMT_POOL_LMT_FIELD; +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_LMT_POOL_LMT_FIELD_MASK 0x000003ff +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_LMT_POOL_LMT_FIELD_WIDTH 10 +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_LMT_POOL_LMT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_GRNTED_POOL_LMT_RESERVED0_FIELD; +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_LMT_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_LMT_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_LMT_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_GRNTED_POOL_SIZE_POOL_SIZE_FIELD; +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_SIZE_POOL_SIZE_FIELD_MASK 0x000003ff +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_SIZE_POOL_SIZE_FIELD_WIDTH 10 +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_SIZE_POOL_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_GRNTED_POOL_SIZE_RESERVED0_FIELD; +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_SIZE_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_SIZE_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_SIZE_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_MULTI_CST_POOL_LMT_POOL_LMT_FIELD; +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_LMT_POOL_LMT_FIELD_MASK 0x000003ff +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_LMT_POOL_LMT_FIELD_WIDTH 10 +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_LMT_POOL_LMT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_MULTI_CST_POOL_LMT_RESERVED0_FIELD; +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_LMT_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_LMT_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_LMT_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_MULTI_CST_POOL_SIZE_POOL_SIZE_FIELD; +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_SIZE_POOL_SIZE_FIELD_MASK 0x000003ff +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_SIZE_POOL_SIZE_FIELD_WIDTH 10 +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_SIZE_POOL_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_MULTI_CST_POOL_SIZE_RESERVED0_FIELD; +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_SIZE_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_SIZE_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_SIZE_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_RNR_POOL_LMT_POOL_LMT_FIELD; +#define DSPTCHR_POOL_SIZES_RNR_POOL_LMT_POOL_LMT_FIELD_MASK 0x000003ff +#define DSPTCHR_POOL_SIZES_RNR_POOL_LMT_POOL_LMT_FIELD_WIDTH 10 +#define DSPTCHR_POOL_SIZES_RNR_POOL_LMT_POOL_LMT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_RNR_POOL_LMT_RESERVED0_FIELD; +#define DSPTCHR_POOL_SIZES_RNR_POOL_LMT_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_POOL_SIZES_RNR_POOL_LMT_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_POOL_SIZES_RNR_POOL_LMT_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_RNR_POOL_SIZE_POOL_SIZE_FIELD; +#define DSPTCHR_POOL_SIZES_RNR_POOL_SIZE_POOL_SIZE_FIELD_MASK 0x000003ff +#define DSPTCHR_POOL_SIZES_RNR_POOL_SIZE_POOL_SIZE_FIELD_WIDTH 10 +#define DSPTCHR_POOL_SIZES_RNR_POOL_SIZE_POOL_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_RNR_POOL_SIZE_RESERVED0_FIELD; +#define DSPTCHR_POOL_SIZES_RNR_POOL_SIZE_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_POOL_SIZES_RNR_POOL_SIZE_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_POOL_SIZES_RNR_POOL_SIZE_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_PRCSSING_POOL_SIZE_POOL_SIZE_FIELD; +#define DSPTCHR_POOL_SIZES_PRCSSING_POOL_SIZE_POOL_SIZE_FIELD_MASK 0x000003ff +#define DSPTCHR_POOL_SIZES_PRCSSING_POOL_SIZE_POOL_SIZE_FIELD_WIDTH 10 +#define DSPTCHR_POOL_SIZES_PRCSSING_POOL_SIZE_POOL_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_POOL_SIZES_PRCSSING_POOL_SIZE_RESERVED0_FIELD; +#define DSPTCHR_POOL_SIZES_PRCSSING_POOL_SIZE_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_POOL_SIZES_PRCSSING_POOL_SIZE_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_POOL_SIZES_PRCSSING_POOL_SIZE_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_MASK_MSK_TSK_255_0_MASK_FIELD; +#define DSPTCHR_MASK_MSK_TSK_255_0_MASK_FIELD_MASK 0xffffffff +#define DSPTCHR_MASK_MSK_TSK_255_0_MASK_FIELD_WIDTH 32 +#define DSPTCHR_MASK_MSK_TSK_255_0_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_MASK_MSK_Q_MASK_FIELD; +#define DSPTCHR_MASK_MSK_Q_MASK_FIELD_MASK 0xffffffff +#define DSPTCHR_MASK_MSK_Q_MASK_FIELD_WIDTH 32 +#define DSPTCHR_MASK_MSK_Q_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_MASK_DLY_Q_MASK_FIELD; +#define DSPTCHR_MASK_DLY_Q_MASK_FIELD_MASK 0xffffffff +#define DSPTCHR_MASK_DLY_Q_MASK_FIELD_WIDTH 32 +#define DSPTCHR_MASK_DLY_Q_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_MASK_NON_DLY_Q_MASK_FIELD; +#define DSPTCHR_MASK_NON_DLY_Q_MASK_FIELD_MASK 0xffffffff +#define DSPTCHR_MASK_NON_DLY_Q_MASK_FIELD_WIDTH 32 +#define DSPTCHR_MASK_NON_DLY_Q_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_EGRS_QUEUES_EGRS_DLY_QM_CRDT_DLY_CRDT_FIELD; +#define DSPTCHR_EGRS_QUEUES_EGRS_DLY_QM_CRDT_DLY_CRDT_FIELD_MASK 0x000000ff +#define DSPTCHR_EGRS_QUEUES_EGRS_DLY_QM_CRDT_DLY_CRDT_FIELD_WIDTH 8 +#define DSPTCHR_EGRS_QUEUES_EGRS_DLY_QM_CRDT_DLY_CRDT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_EGRS_QUEUES_EGRS_DLY_QM_CRDT_RESERVED0_FIELD; +#define DSPTCHR_EGRS_QUEUES_EGRS_DLY_QM_CRDT_RESERVED0_FIELD_MASK 0xffffff00 +#define DSPTCHR_EGRS_QUEUES_EGRS_DLY_QM_CRDT_RESERVED0_FIELD_WIDTH 24 +#define DSPTCHR_EGRS_QUEUES_EGRS_DLY_QM_CRDT_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_EGRS_QUEUES_EGRS_NON_DLY_QM_CRDT_NON_DLY_CRDT_FIELD; +#define DSPTCHR_EGRS_QUEUES_EGRS_NON_DLY_QM_CRDT_NON_DLY_CRDT_FIELD_MASK 0x000000ff +#define DSPTCHR_EGRS_QUEUES_EGRS_NON_DLY_QM_CRDT_NON_DLY_CRDT_FIELD_WIDTH 8 +#define DSPTCHR_EGRS_QUEUES_EGRS_NON_DLY_QM_CRDT_NON_DLY_CRDT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_EGRS_QUEUES_EGRS_NON_DLY_QM_CRDT_RESERVED0_FIELD; +#define DSPTCHR_EGRS_QUEUES_EGRS_NON_DLY_QM_CRDT_RESERVED0_FIELD_MASK 0xffffff00 +#define DSPTCHR_EGRS_QUEUES_EGRS_NON_DLY_QM_CRDT_RESERVED0_FIELD_WIDTH 24 +#define DSPTCHR_EGRS_QUEUES_EGRS_NON_DLY_QM_CRDT_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_EGRS_QUEUES_TOTAL_Q_EGRS_SIZE_TOTAL_EGRS_SIZE_FIELD; +#define DSPTCHR_EGRS_QUEUES_TOTAL_Q_EGRS_SIZE_TOTAL_EGRS_SIZE_FIELD_MASK 0x000003ff +#define DSPTCHR_EGRS_QUEUES_TOTAL_Q_EGRS_SIZE_TOTAL_EGRS_SIZE_FIELD_WIDTH 10 +#define DSPTCHR_EGRS_QUEUES_TOTAL_Q_EGRS_SIZE_TOTAL_EGRS_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_EGRS_QUEUES_TOTAL_Q_EGRS_SIZE_RESERVED0_FIELD; +#define DSPTCHR_EGRS_QUEUES_TOTAL_Q_EGRS_SIZE_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_EGRS_QUEUES_TOTAL_Q_EGRS_SIZE_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_EGRS_QUEUES_TOTAL_Q_EGRS_SIZE_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_Q_EGRS_SIZE_FIELD; +#define DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_Q_EGRS_SIZE_FIELD_MASK 0x000003ff +#define DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_Q_EGRS_SIZE_FIELD_WIDTH 10 +#define DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_Q_EGRS_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_RESERVED0_FIELD; +#define DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q0_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q0_FIELD_MASK 0x00000001 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q0_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q1_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q1_FIELD_MASK 0x00000002 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q1_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q2_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q2_FIELD_MASK 0x00000004 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q2_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q2_FIELD_SHIFT 2 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q3_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q3_FIELD_MASK 0x00000008 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q3_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q3_FIELD_SHIFT 3 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q4_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q4_FIELD_MASK 0x00000010 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q4_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q4_FIELD_SHIFT 4 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q5_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q5_FIELD_MASK 0x00000020 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q5_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q5_FIELD_SHIFT 5 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q6_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q6_FIELD_MASK 0x00000040 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q6_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q6_FIELD_SHIFT 6 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q7_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q7_FIELD_MASK 0x00000080 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q7_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q7_FIELD_SHIFT 7 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q8_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q8_FIELD_MASK 0x00000100 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q8_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q8_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q9_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q9_FIELD_MASK 0x00000200 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q9_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q9_FIELD_SHIFT 9 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q10_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q10_FIELD_MASK 0x00000400 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q10_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q10_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q11_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q11_FIELD_MASK 0x00000800 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q11_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q11_FIELD_SHIFT 11 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q12_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q12_FIELD_MASK 0x00001000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q12_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q12_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q13_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q13_FIELD_MASK 0x00002000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q13_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q13_FIELD_SHIFT 13 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q14_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q14_FIELD_MASK 0x00004000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q14_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q14_FIELD_SHIFT 14 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q15_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q15_FIELD_MASK 0x00008000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q15_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q15_FIELD_SHIFT 15 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q16_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q16_FIELD_MASK 0x00010000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q16_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q16_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q17_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q17_FIELD_MASK 0x00020000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q17_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q17_FIELD_SHIFT 17 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q18_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q18_FIELD_MASK 0x00040000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q18_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q18_FIELD_SHIFT 18 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q19_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q19_FIELD_MASK 0x00080000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q19_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q19_FIELD_SHIFT 19 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q20_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q20_FIELD_MASK 0x00100000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q20_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q20_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q21_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q21_FIELD_MASK 0x00200000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q21_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q21_FIELD_SHIFT 21 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q22_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q22_FIELD_MASK 0x00400000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q22_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q22_FIELD_SHIFT 22 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q23_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q23_FIELD_MASK 0x00800000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q23_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q23_FIELD_SHIFT 23 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q24_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q24_FIELD_MASK 0x01000000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q24_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q24_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q25_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q25_FIELD_MASK 0x02000000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q25_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q25_FIELD_SHIFT 25 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q26_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q26_FIELD_MASK 0x04000000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q26_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q26_FIELD_SHIFT 26 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q27_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q27_FIELD_MASK 0x08000000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q27_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q27_FIELD_SHIFT 27 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q28_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q28_FIELD_MASK 0x10000000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q28_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q28_FIELD_SHIFT 28 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q29_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q29_FIELD_MASK 0x20000000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q29_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q29_FIELD_SHIFT 29 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q30_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q30_FIELD_MASK 0x40000000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q30_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q30_FIELD_SHIFT 30 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q31_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q31_FIELD_MASK 0x80000000 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q31_FIELD_WIDTH 1 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_Q31_FIELD_SHIFT 31 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_THRSHLD_WKUP_THRSHLD_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_THRSHLD_WKUP_THRSHLD_FIELD_MASK 0x000003ff +#define DSPTCHR_WAKEUP_CONTROL_WKUP_THRSHLD_WKUP_THRSHLD_FIELD_WIDTH 10 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_THRSHLD_WKUP_THRSHLD_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_WAKEUP_CONTROL_WKUP_THRSHLD_RESERVED0_FIELD; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_THRSHLD_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_THRSHLD_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_WAKEUP_CONTROL_WKUP_THRSHLD_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_Q_CRDT_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_Q_CRDT_FIELD_MASK 0x000fffff +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_Q_CRDT_FIELD_WIDTH 20 +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_Q_CRDT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_NGTV_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_NGTV_FIELD_MASK 0x00100000 +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_NGTV_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_NGTV_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_QUNTUM_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_QUNTUM_FIELD_MASK 0xffe00000 +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_QUNTUM_FIELD_WIDTH 11 +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_QUNTUM_FIELD_SHIFT 21 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q0_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q0_FIELD_MASK 0x00000001 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q0_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q1_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q1_FIELD_MASK 0x00000002 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q1_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q2_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q2_FIELD_MASK 0x00000004 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q2_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q2_FIELD_SHIFT 2 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q3_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q3_FIELD_MASK 0x00000008 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q3_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q3_FIELD_SHIFT 3 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q4_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q4_FIELD_MASK 0x00000010 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q4_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q4_FIELD_SHIFT 4 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q5_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q5_FIELD_MASK 0x00000020 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q5_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q5_FIELD_SHIFT 5 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q6_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q6_FIELD_MASK 0x00000040 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q6_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q6_FIELD_SHIFT 6 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q7_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q7_FIELD_MASK 0x00000080 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q7_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q7_FIELD_SHIFT 7 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q8_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q8_FIELD_MASK 0x00000100 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q8_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q8_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q9_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q9_FIELD_MASK 0x00000200 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q9_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q9_FIELD_SHIFT 9 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q10_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q10_FIELD_MASK 0x00000400 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q10_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q10_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q11_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q11_FIELD_MASK 0x00000800 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q11_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q11_FIELD_SHIFT 11 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q12_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q12_FIELD_MASK 0x00001000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q12_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q12_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q13_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q13_FIELD_MASK 0x00002000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q13_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q13_FIELD_SHIFT 13 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q14_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q14_FIELD_MASK 0x00004000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q14_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q14_FIELD_SHIFT 14 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q15_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q15_FIELD_MASK 0x00008000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q15_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q15_FIELD_SHIFT 15 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q16_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q16_FIELD_MASK 0x00010000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q16_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q16_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q17_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q17_FIELD_MASK 0x00020000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q17_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q17_FIELD_SHIFT 17 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q18_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q18_FIELD_MASK 0x00040000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q18_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q18_FIELD_SHIFT 18 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q19_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q19_FIELD_MASK 0x00080000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q19_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q19_FIELD_SHIFT 19 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q20_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q20_FIELD_MASK 0x00100000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q20_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q20_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q21_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q21_FIELD_MASK 0x00200000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q21_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q21_FIELD_SHIFT 21 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q22_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q22_FIELD_MASK 0x00400000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q22_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q22_FIELD_SHIFT 22 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q23_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q23_FIELD_MASK 0x00800000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q23_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q23_FIELD_SHIFT 23 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q24_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q24_FIELD_MASK 0x01000000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q24_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q24_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q25_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q25_FIELD_MASK 0x02000000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q25_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q25_FIELD_SHIFT 25 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q26_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q26_FIELD_MASK 0x04000000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q26_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q26_FIELD_SHIFT 26 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q27_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q27_FIELD_MASK 0x08000000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q27_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q27_FIELD_SHIFT 27 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q28_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q28_FIELD_MASK 0x10000000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q28_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q28_FIELD_SHIFT 28 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q29_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q29_FIELD_MASK 0x20000000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q29_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q29_FIELD_SHIFT 29 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q30_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q30_FIELD_MASK 0x40000000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q30_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q30_FIELD_SHIFT 30 + +extern const ru_field_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q31_FIELD; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q31_FIELD_MASK 0x80000000 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q31_FIELD_WIDTH 1 +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_Q31_FIELD_SHIFT 31 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_LB_CFG_LB_MODE_FIELD; +#define DSPTCHR_LOAD_BALANCING_LB_CFG_LB_MODE_FIELD_MASK 0x00000001 +#define DSPTCHR_LOAD_BALANCING_LB_CFG_LB_MODE_FIELD_WIDTH 1 +#define DSPTCHR_LOAD_BALANCING_LB_CFG_LB_MODE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_LB_CFG_RESERVED0_FIELD; +#define DSPTCHR_LOAD_BALANCING_LB_CFG_RESERVED0_FIELD_MASK 0x000000fe +#define DSPTCHR_LOAD_BALANCING_LB_CFG_RESERVED0_FIELD_WIDTH 7 +#define DSPTCHR_LOAD_BALANCING_LB_CFG_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_LB_CFG_SP_THRSHLD_FIELD; +#define DSPTCHR_LOAD_BALANCING_LB_CFG_SP_THRSHLD_FIELD_MASK 0x00001f00 +#define DSPTCHR_LOAD_BALANCING_LB_CFG_SP_THRSHLD_FIELD_WIDTH 5 +#define DSPTCHR_LOAD_BALANCING_LB_CFG_SP_THRSHLD_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_LB_CFG_RESERVED1_FIELD; +#define DSPTCHR_LOAD_BALANCING_LB_CFG_RESERVED1_FIELD_MASK 0xffffe000 +#define DSPTCHR_LOAD_BALANCING_LB_CFG_RESERVED1_FIELD_WIDTH 19 +#define DSPTCHR_LOAD_BALANCING_LB_CFG_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_0_1_RNR0_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_0_1_RNR0_FIELD_MASK 0x0000ffff +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_0_1_RNR0_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_0_1_RNR0_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_0_1_RNR1_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_0_1_RNR1_FIELD_MASK 0xffff0000 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_0_1_RNR1_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_0_1_RNR1_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_2_3_RNR2_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_2_3_RNR2_FIELD_MASK 0x0000ffff +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_2_3_RNR2_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_2_3_RNR2_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_2_3_RNR3_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_2_3_RNR3_FIELD_MASK 0xffff0000 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_2_3_RNR3_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_2_3_RNR3_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_4_5_RNR4_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_4_5_RNR4_FIELD_MASK 0x0000ffff +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_4_5_RNR4_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_4_5_RNR4_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_4_5_RNR5_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_4_5_RNR5_FIELD_MASK 0xffff0000 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_4_5_RNR5_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_4_5_RNR5_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_6_7_RNR6_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_6_7_RNR6_FIELD_MASK 0x0000ffff +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_6_7_RNR6_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_6_7_RNR6_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_6_7_RNR7_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_6_7_RNR7_FIELD_MASK 0xffff0000 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_6_7_RNR7_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_6_7_RNR7_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_8_9_RNR8_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_8_9_RNR8_FIELD_MASK 0x0000ffff +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_8_9_RNR8_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_8_9_RNR8_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_8_9_RNR9_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_8_9_RNR9_FIELD_MASK 0xffff0000 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_8_9_RNR9_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_8_9_RNR9_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_10_11_RNR10_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_10_11_RNR10_FIELD_MASK 0x0000ffff +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_10_11_RNR10_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_10_11_RNR10_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_10_11_RNR11_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_10_11_RNR11_FIELD_MASK 0xffff0000 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_10_11_RNR11_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_10_11_RNR11_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_12_13_RNR12_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_12_13_RNR12_FIELD_MASK 0x0000ffff +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_12_13_RNR12_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_12_13_RNR12_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_12_13_RNR13_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_12_13_RNR13_FIELD_MASK 0xffff0000 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_12_13_RNR13_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_12_13_RNR13_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_14_15_RNR14_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_14_15_RNR14_FIELD_MASK 0x0000ffff +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_14_15_RNR14_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_14_15_RNR14_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_14_15_RNR15_FIELD; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_14_15_RNR15_FIELD_MASK 0xffff0000 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_14_15_RNR15_FIELD_WIDTH 16 +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_14_15_RNR15_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK0_FIELD; +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK0_FIELD_MASK 0x00000007 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK0_FIELD_WIDTH 3 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK0_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK1_FIELD; +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK1_FIELD_MASK 0x00000038 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK1_FIELD_WIDTH 3 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK1_FIELD_SHIFT 3 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK2_FIELD; +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK2_FIELD_MASK 0x000001c0 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK2_FIELD_WIDTH 3 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK2_FIELD_SHIFT 6 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK3_FIELD; +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK3_FIELD_MASK 0x00000e00 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK3_FIELD_WIDTH 3 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK3_FIELD_SHIFT 9 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK4_FIELD; +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK4_FIELD_MASK 0x00007000 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK4_FIELD_WIDTH 3 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK4_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK5_FIELD; +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK5_FIELD_MASK 0x00038000 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK5_FIELD_WIDTH 3 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK5_FIELD_SHIFT 15 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK6_FIELD; +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK6_FIELD_MASK 0x001c0000 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK6_FIELD_WIDTH 3 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK6_FIELD_SHIFT 18 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK7_FIELD; +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK7_FIELD_MASK 0x00e00000 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK7_FIELD_WIDTH 3 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_TSK7_FIELD_SHIFT 21 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_RESERVED0_FIELD; +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_RESERVED0_FIELD_MASK 0xff000000 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_RESERVED0_FIELD_WIDTH 8 +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_0_FIELD; +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_0_FIELD_MASK 0x000000ff +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_0_FIELD_WIDTH 8 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_0_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_1_FIELD; +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_1_FIELD_MASK 0x0000ff00 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_1_FIELD_WIDTH 8 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_1_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_2_FIELD; +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_2_FIELD_MASK 0x00ff0000 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_2_FIELD_WIDTH 8 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_2_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_3_FIELD; +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_3_FIELD_MASK 0xff000000 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_3_FIELD_WIDTH 8 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_TSK_CNT_RG_3_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_4_FIELD; +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_4_FIELD_MASK 0x000000ff +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_4_FIELD_WIDTH 8 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_4_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_5_FIELD; +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_5_FIELD_MASK 0x0000ff00 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_5_FIELD_WIDTH 8 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_5_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_6_FIELD; +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_6_FIELD_MASK 0x00ff0000 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_6_FIELD_WIDTH 8 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_6_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_7_FIELD; +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_7_FIELD_MASK 0xff000000 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_7_FIELD_WIDTH 8 +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_TSK_CNT_RG_7_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_RETURN_BUF_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_RETURN_BUF_FIELD_MASK 0x00000001 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_RETURN_BUF_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_RETURN_BUF_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_CNT_DRP_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_CNT_DRP_FIELD_MASK 0x00000002 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_CNT_DRP_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_CNT_DRP_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_UNKNWN_MSG_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_UNKNWN_MSG_FIELD_MASK 0x00000004 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_UNKNWN_MSG_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_UNKNWN_MSG_FIELD_SHIFT 2 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_OVERFLOW_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_OVERFLOW_FIELD_MASK 0x00000008 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_OVERFLOW_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_OVERFLOW_FIELD_SHIFT 3 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_NEG_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_NEG_FIELD_MASK 0x00000010 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_NEG_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_FLL_NEG_FIELD_SHIFT 4 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_RESERVED0_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_RESERVED0_FIELD_MASK 0xffffffe0 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_RESERVED0_FIELD_WIDTH 27 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISM_ISM_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISM_ISM_FIELD_MASK 0xffffffff +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISM_ISM_FIELD_WIDTH 32 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISM_ISM_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_IER_IEM_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_IER_IEM_FIELD_MASK 0xffffffff +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_IER_IEM_FIELD_WIDTH 32 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_IER_IEM_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ITR_IST_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ITR_IST_FIELD_MASK 0xffffffff +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ITR_IST_FIELD_WIDTH 32 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ITR_IST_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST0_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST0_INT_FIELD_MASK 0x00000001 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST0_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST0_INT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST1_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST1_INT_FIELD_MASK 0x00000002 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST1_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST1_INT_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST2_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST2_INT_FIELD_MASK 0x00000004 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST2_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST2_INT_FIELD_SHIFT 2 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST3_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST3_INT_FIELD_MASK 0x00000008 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST3_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST3_INT_FIELD_SHIFT 3 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST4_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST4_INT_FIELD_MASK 0x00000010 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST4_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST4_INT_FIELD_SHIFT 4 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST5_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST5_INT_FIELD_MASK 0x00000020 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST5_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST5_INT_FIELD_SHIFT 5 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST6_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST6_INT_FIELD_MASK 0x00000040 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST6_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST6_INT_FIELD_SHIFT 6 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST7_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST7_INT_FIELD_MASK 0x00000080 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST7_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST7_INT_FIELD_SHIFT 7 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST8_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST8_INT_FIELD_MASK 0x00000100 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST8_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST8_INT_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST9_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST9_INT_FIELD_MASK 0x00000200 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST9_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST9_INT_FIELD_SHIFT 9 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST10_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST10_INT_FIELD_MASK 0x00000400 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST10_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST10_INT_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST11_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST11_INT_FIELD_MASK 0x00000800 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST11_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST11_INT_FIELD_SHIFT 11 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST12_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST12_INT_FIELD_MASK 0x00001000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST12_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST12_INT_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST13_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST13_INT_FIELD_MASK 0x00002000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST13_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST13_INT_FIELD_SHIFT 13 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST14_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST14_INT_FIELD_MASK 0x00004000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST14_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST14_INT_FIELD_SHIFT 14 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST15_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST15_INT_FIELD_MASK 0x00008000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST15_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST15_INT_FIELD_SHIFT 15 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST16_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST16_INT_FIELD_MASK 0x00010000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST16_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST16_INT_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST17_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST17_INT_FIELD_MASK 0x00020000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST17_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST17_INT_FIELD_SHIFT 17 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST18_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST18_INT_FIELD_MASK 0x00040000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST18_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST18_INT_FIELD_SHIFT 18 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST19_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST19_INT_FIELD_MASK 0x00080000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST19_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST19_INT_FIELD_SHIFT 19 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST20_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST20_INT_FIELD_MASK 0x00100000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST20_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST20_INT_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST21_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST21_INT_FIELD_MASK 0x00200000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST21_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST21_INT_FIELD_SHIFT 21 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST22_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST22_INT_FIELD_MASK 0x00400000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST22_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST22_INT_FIELD_SHIFT 22 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST23_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST23_INT_FIELD_MASK 0x00800000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST23_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST23_INT_FIELD_SHIFT 23 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST24_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST24_INT_FIELD_MASK 0x01000000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST24_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST24_INT_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST25_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST25_INT_FIELD_MASK 0x02000000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST25_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST25_INT_FIELD_SHIFT 25 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST26_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST26_INT_FIELD_MASK 0x04000000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST26_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST26_INT_FIELD_SHIFT 26 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST27_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST27_INT_FIELD_MASK 0x08000000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST27_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST27_INT_FIELD_SHIFT 27 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST28_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST28_INT_FIELD_MASK 0x10000000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST28_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST28_INT_FIELD_SHIFT 28 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST29_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST29_INT_FIELD_MASK 0x20000000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST29_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST29_INT_FIELD_SHIFT 29 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST30_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST30_INT_FIELD_MASK 0x40000000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST30_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST30_INT_FIELD_SHIFT 30 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST31_INT_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST31_INT_FIELD_MASK 0x80000000 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST31_INT_FIELD_WIDTH 1 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_QDEST31_INT_FIELD_SHIFT 31 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISM_ISM_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISM_ISM_FIELD_MASK 0xffffffff +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISM_ISM_FIELD_WIDTH 32 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISM_ISM_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_IER_IEM_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_IER_IEM_FIELD_MASK 0xffffffff +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_IER_IEM_FIELD_WIDTH 32 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_IER_IEM_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ITR_IST_FIELD; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ITR_IST_FIELD_MASK 0xffffffff +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ITR_IST_FIELD_WIDTH 32 +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ITR_IST_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_EN_BYP_FIELD; +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_EN_BYP_FIELD_MASK 0x00000001 +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_EN_BYP_FIELD_WIDTH 1 +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_EN_BYP_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_RESERVED0_FIELD; +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_RESERVED0_FIELD_MASK 0x000000fe +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_RESERVED0_FIELD_WIDTH 7 +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_BBID_NON_DLY_FIELD; +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_BBID_NON_DLY_FIELD_MASK 0x0000ff00 +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_BBID_NON_DLY_FIELD_WIDTH 8 +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_BBID_NON_DLY_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_BBID_DLY_FIELD; +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_BBID_DLY_FIELD_MASK 0x00ff0000 +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_BBID_DLY_FIELD_WIDTH 8 +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_BBID_DLY_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_RESERVED1_FIELD; +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_RESERVED1_FIELD_MASK 0xff000000 +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_RESERVED1_FIELD_WIDTH 8 +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_RESERVED1_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_0_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_0_FIELD_MASK 0x0000000f +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_0_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_0_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_1_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_1_FIELD_MASK 0x000000f0 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_1_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_1_FIELD_SHIFT 4 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_2_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_2_FIELD_MASK 0x00000f00 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_2_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_2_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_3_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_3_FIELD_MASK 0x0000f000 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_3_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_3_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_4_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_4_FIELD_MASK 0x000f0000 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_4_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_4_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_5_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_5_FIELD_MASK 0x00f00000 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_5_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_5_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_6_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_6_FIELD_MASK 0x0f000000 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_6_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_6_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_7_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_7_FIELD_MASK 0xf0000000 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_7_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_TSK_CNT_RNR_7_FIELD_SHIFT 28 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_8_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_8_FIELD_MASK 0x0000000f +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_8_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_8_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_9_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_9_FIELD_MASK 0x000000f0 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_9_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_9_FIELD_SHIFT 4 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_10_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_10_FIELD_MASK 0x00000f00 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_10_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_10_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_11_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_11_FIELD_MASK 0x0000f000 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_11_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_11_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_12_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_12_FIELD_MASK 0x000f0000 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_12_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_12_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_13_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_13_FIELD_MASK 0x00f00000 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_13_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_13_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_14_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_14_FIELD_MASK 0x0f000000 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_14_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_14_FIELD_SHIFT 24 + +extern const ru_field_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_15_FIELD; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_15_FIELD_MASK 0xf0000000 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_15_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_TSK_CNT_RNR_15_FIELD_SHIFT 28 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_BUS_CNTRL_DBG_SEL_FIELD; +#define DSPTCHR_DEBUG_DBG_BUS_CNTRL_DBG_SEL_FIELD_MASK 0x0000001f +#define DSPTCHR_DEBUG_DBG_BUS_CNTRL_DBG_SEL_FIELD_WIDTH 5 +#define DSPTCHR_DEBUG_DBG_BUS_CNTRL_DBG_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_BUS_CNTRL_RESERVED0_FIELD; +#define DSPTCHR_DEBUG_DBG_BUS_CNTRL_RESERVED0_FIELD_MASK 0xffffffe0 +#define DSPTCHR_DEBUG_DBG_BUS_CNTRL_RESERVED0_FIELD_WIDTH 27 +#define DSPTCHR_DEBUG_DBG_BUS_CNTRL_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_0_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_0_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_0_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_0_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_1_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_1_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_1_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_1_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_2_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_2_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_2_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_2_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_3_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_3_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_3_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_3_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_4_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_4_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_4_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_4_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_5_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_5_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_5_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_5_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_6_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_6_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_6_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_6_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_7_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_7_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_7_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_7_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_8_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_8_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_8_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_8_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_9_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_9_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_9_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_9_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_10_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_10_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_10_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_10_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_11_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_11_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_11_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_11_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_12_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_12_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_12_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_12_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_13_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_13_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_13_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_13_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_14_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_14_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_14_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_14_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_15_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_15_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_15_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_15_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_16_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_16_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_16_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_16_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_17_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_17_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_17_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_17_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_18_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_18_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_18_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_18_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_19_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_19_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_19_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_19_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_20_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_20_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_20_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_20_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_21_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_21_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_21_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_21_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_22_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_22_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_22_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_22_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_DBG_VEC_23_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_DBG_VEC_23_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_DBG_VEC_23_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_DBG_VEC_23_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_DBG_MODE_FIELD; +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_DBG_MODE_FIELD_MASK 0x00000003 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_DBG_MODE_FIELD_WIDTH 2 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_DBG_MODE_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED0_FIELD; +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED0_FIELD_MASK 0x000000fc +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED0_FIELD_WIDTH 6 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_EN_CNTRS_FIELD; +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_EN_CNTRS_FIELD_MASK 0x00000100 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_EN_CNTRS_FIELD_WIDTH 1 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_EN_CNTRS_FIELD_SHIFT 8 + +extern const ru_field_rec DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_CLR_CNTRS_FIELD; +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_CLR_CNTRS_FIELD_MASK 0x00000200 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_CLR_CNTRS_FIELD_WIDTH 1 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_CLR_CNTRS_FIELD_SHIFT 9 + +extern const ru_field_rec DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED1_FIELD; +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED1_FIELD_MASK 0x0000fc00 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED1_FIELD_WIDTH 6 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED1_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_DBG_RNR_SEL_FIELD; +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_DBG_RNR_SEL_FIELD_MASK 0x000f0000 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_DBG_RNR_SEL_FIELD_WIDTH 4 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_DBG_RNR_SEL_FIELD_SHIFT 16 + +extern const ru_field_rec DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED2_FIELD; +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED2_FIELD_MASK 0xfff00000 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED2_FIELD_WIDTH 12 +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_RESERVED2_FIELD_SHIFT 20 + +extern const ru_field_rec DSPTCHR_DEBUG_STATISTICS_DBG_CNT_DBG_VEC_VAL_FIELD; +#define DSPTCHR_DEBUG_STATISTICS_DBG_CNT_DBG_VEC_VAL_FIELD_MASK 0xffffffff +#define DSPTCHR_DEBUG_STATISTICS_DBG_CNT_DBG_VEC_VAL_FIELD_WIDTH 32 +#define DSPTCHR_DEBUG_STATISTICS_DBG_CNT_DBG_VEC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_HEAD_HEAD_FIELD; +#define DSPTCHR_QDES_HEAD_HEAD_FIELD_MASK 0xffffffff +#define DSPTCHR_QDES_HEAD_HEAD_FIELD_WIDTH 32 +#define DSPTCHR_QDES_HEAD_HEAD_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_BFOUT_BFOUT_FIELD; +#define DSPTCHR_QDES_BFOUT_BFOUT_FIELD_MASK 0xffffffff +#define DSPTCHR_QDES_BFOUT_BFOUT_FIELD_WIDTH 32 +#define DSPTCHR_QDES_BFOUT_BFOUT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_BUFIN_BUFIN_FIELD; +#define DSPTCHR_QDES_BUFIN_BUFIN_FIELD_MASK 0xffffffff +#define DSPTCHR_QDES_BUFIN_BUFIN_FIELD_WIDTH 32 +#define DSPTCHR_QDES_BUFIN_BUFIN_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_TAIL_TAIL_FIELD; +#define DSPTCHR_QDES_TAIL_TAIL_FIELD_MASK 0xffffffff +#define DSPTCHR_QDES_TAIL_TAIL_FIELD_WIDTH 32 +#define DSPTCHR_QDES_TAIL_TAIL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_FBDNULL_FBDNULL_FIELD; +#define DSPTCHR_QDES_FBDNULL_FBDNULL_FIELD_MASK 0x00000001 +#define DSPTCHR_QDES_FBDNULL_FBDNULL_FIELD_WIDTH 1 +#define DSPTCHR_QDES_FBDNULL_FBDNULL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_FBDNULL_RESERVED0_FIELD; +#define DSPTCHR_QDES_FBDNULL_RESERVED0_FIELD_MASK 0xfffffffe +#define DSPTCHR_QDES_FBDNULL_RESERVED0_FIELD_WIDTH 31 +#define DSPTCHR_QDES_FBDNULL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_QDES_NULLBD_NULLBD_FIELD; +#define DSPTCHR_QDES_NULLBD_NULLBD_FIELD_MASK 0xffffffff +#define DSPTCHR_QDES_NULLBD_NULLBD_FIELD_WIDTH 32 +#define DSPTCHR_QDES_NULLBD_NULLBD_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_BUFAVAIL_BUFAVAIL_FIELD; +#define DSPTCHR_QDES_BUFAVAIL_BUFAVAIL_FIELD_MASK 0xffffffff +#define DSPTCHR_QDES_BUFAVAIL_BUFAVAIL_FIELD_WIDTH 32 +#define DSPTCHR_QDES_BUFAVAIL_BUFAVAIL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_REG_Q_HEAD_HEAD_FIELD; +#define DSPTCHR_QDES_REG_Q_HEAD_HEAD_FIELD_MASK 0x000003ff +#define DSPTCHR_QDES_REG_Q_HEAD_HEAD_FIELD_WIDTH 10 +#define DSPTCHR_QDES_REG_Q_HEAD_HEAD_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_REG_Q_HEAD_RESERVED0_FIELD; +#define DSPTCHR_QDES_REG_Q_HEAD_RESERVED0_FIELD_MASK 0xfffffc00 +#define DSPTCHR_QDES_REG_Q_HEAD_RESERVED0_FIELD_WIDTH 22 +#define DSPTCHR_QDES_REG_Q_HEAD_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DSPTCHR_QDES_REG_VIQ_HEAD_VLD_VIQ_HEAD_VLD_FIELD; +#define DSPTCHR_QDES_REG_VIQ_HEAD_VLD_VIQ_HEAD_VLD_FIELD_MASK 0xffffffff +#define DSPTCHR_QDES_REG_VIQ_HEAD_VLD_VIQ_HEAD_VLD_FIELD_WIDTH 32 +#define DSPTCHR_QDES_REG_VIQ_HEAD_VLD_VIQ_HEAD_VLD_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_REG_VIQ_CHRNCY_VLD_CHRNCY_VLD_FIELD; +#define DSPTCHR_QDES_REG_VIQ_CHRNCY_VLD_CHRNCY_VLD_FIELD_MASK 0xffffffff +#define DSPTCHR_QDES_REG_VIQ_CHRNCY_VLD_CHRNCY_VLD_FIELD_WIDTH 32 +#define DSPTCHR_QDES_REG_VIQ_CHRNCY_VLD_CHRNCY_VLD_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_REG_VEQ_HEAD_VLD_VIQ_HEAD_VLD_FIELD; +#define DSPTCHR_QDES_REG_VEQ_HEAD_VLD_VIQ_HEAD_VLD_FIELD_MASK 0xffffffff +#define DSPTCHR_QDES_REG_VEQ_HEAD_VLD_VIQ_HEAD_VLD_FIELD_WIDTH 32 +#define DSPTCHR_QDES_REG_VEQ_HEAD_VLD_VIQ_HEAD_VLD_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_USE_BUF_AVL_FIELD; +#define DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_USE_BUF_AVL_FIELD_MASK 0x00000001 +#define DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_USE_BUF_AVL_FIELD_WIDTH 1 +#define DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_USE_BUF_AVL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_DEC_BUFOUT_WHEN_MLTCST_FIELD; +#define DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_DEC_BUFOUT_WHEN_MLTCST_FIELD_MASK 0x00000002 +#define DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_DEC_BUFOUT_WHEN_MLTCST_FIELD_WIDTH 1 +#define DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_DEC_BUFOUT_WHEN_MLTCST_FIELD_SHIFT 1 + +extern const ru_field_rec DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_RESERVED0_FIELD; +#define DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_RESERVED0_FIELD_MASK 0xfffffffc +#define DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_RESERVED0_FIELD_WIDTH 30 +#define DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec DSPTCHR_FLLDES_HEAD_HEAD_FIELD; +#define DSPTCHR_FLLDES_HEAD_HEAD_FIELD_MASK 0xffffffff +#define DSPTCHR_FLLDES_HEAD_HEAD_FIELD_WIDTH 32 +#define DSPTCHR_FLLDES_HEAD_HEAD_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_FLLDES_BFOUT_COUNT_FIELD; +#define DSPTCHR_FLLDES_BFOUT_COUNT_FIELD_MASK 0xffffffff +#define DSPTCHR_FLLDES_BFOUT_COUNT_FIELD_WIDTH 32 +#define DSPTCHR_FLLDES_BFOUT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_FLLDES_BFIN_BFIN_FIELD; +#define DSPTCHR_FLLDES_BFIN_BFIN_FIELD_MASK 0xffffffff +#define DSPTCHR_FLLDES_BFIN_BFIN_FIELD_WIDTH 32 +#define DSPTCHR_FLLDES_BFIN_BFIN_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_FLLDES_TAIL_TAIL_FIELD; +#define DSPTCHR_FLLDES_TAIL_TAIL_FIELD_MASK 0xffffffff +#define DSPTCHR_FLLDES_TAIL_TAIL_FIELD_WIDTH 32 +#define DSPTCHR_FLLDES_TAIL_TAIL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_FLLDES_FLLDROP_DRPCNT_FIELD; +#define DSPTCHR_FLLDES_FLLDROP_DRPCNT_FIELD_MASK 0xffffffff +#define DSPTCHR_FLLDES_FLLDROP_DRPCNT_FIELD_WIDTH 32 +#define DSPTCHR_FLLDES_FLLDROP_DRPCNT_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_FLLDES_LTINT_MINBUF_FIELD; +#define DSPTCHR_FLLDES_LTINT_MINBUF_FIELD_MASK 0xffffffff +#define DSPTCHR_FLLDES_LTINT_MINBUF_FIELD_WIDTH 32 +#define DSPTCHR_FLLDES_LTINT_MINBUF_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_FLLDES_BUFAVAIL_BUFAVAIL_FIELD; +#define DSPTCHR_FLLDES_BUFAVAIL_BUFAVAIL_FIELD_MASK 0xffffffff +#define DSPTCHR_FLLDES_BUFAVAIL_BUFAVAIL_FIELD_WIDTH 32 +#define DSPTCHR_FLLDES_BUFAVAIL_BUFAVAIL_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_FLLDES_FREEMIN_FREEMIN_FIELD; +#define DSPTCHR_FLLDES_FREEMIN_FREEMIN_FIELD_MASK 0xffffffff +#define DSPTCHR_FLLDES_FREEMIN_FREEMIN_FIELD_WIDTH 32 +#define DSPTCHR_FLLDES_FREEMIN_FREEMIN_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_BDRAM_NEXT_DATA_RESERVED0_FIELD; +#define DSPTCHR_BDRAM_NEXT_DATA_RESERVED0_FIELD_MASK 0x00000003 +#define DSPTCHR_BDRAM_NEXT_DATA_RESERVED0_FIELD_WIDTH 2 +#define DSPTCHR_BDRAM_NEXT_DATA_RESERVED0_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_BDRAM_NEXT_DATA_DATA_FIELD; +#define DSPTCHR_BDRAM_NEXT_DATA_DATA_FIELD_MASK 0x00000ffc +#define DSPTCHR_BDRAM_NEXT_DATA_DATA_FIELD_WIDTH 10 +#define DSPTCHR_BDRAM_NEXT_DATA_DATA_FIELD_SHIFT 2 + +extern const ru_field_rec DSPTCHR_BDRAM_NEXT_DATA_RESERVED1_FIELD; +#define DSPTCHR_BDRAM_NEXT_DATA_RESERVED1_FIELD_MASK 0xfffff000 +#define DSPTCHR_BDRAM_NEXT_DATA_RESERVED1_FIELD_WIDTH 20 +#define DSPTCHR_BDRAM_NEXT_DATA_RESERVED1_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_BDRAM_PREV_DATA_RESERVED0_FIELD; +#define DSPTCHR_BDRAM_PREV_DATA_RESERVED0_FIELD_MASK 0x00000003 +#define DSPTCHR_BDRAM_PREV_DATA_RESERVED0_FIELD_WIDTH 2 +#define DSPTCHR_BDRAM_PREV_DATA_RESERVED0_FIELD_SHIFT 0 + +extern const ru_field_rec DSPTCHR_BDRAM_PREV_DATA_DATA_FIELD; +#define DSPTCHR_BDRAM_PREV_DATA_DATA_FIELD_MASK 0x00000ffc +#define DSPTCHR_BDRAM_PREV_DATA_DATA_FIELD_WIDTH 10 +#define DSPTCHR_BDRAM_PREV_DATA_DATA_FIELD_SHIFT 2 + +extern const ru_field_rec DSPTCHR_BDRAM_PREV_DATA_RESERVED1_FIELD; +#define DSPTCHR_BDRAM_PREV_DATA_RESERVED1_FIELD_MASK 0xfffff000 +#define DSPTCHR_BDRAM_PREV_DATA_RESERVED1_FIELD_WIDTH 20 +#define DSPTCHR_BDRAM_PREV_DATA_RESERVED1_FIELD_SHIFT 12 + +extern const ru_field_rec DSPTCHR_PDRAM_DATA_DATA_FIELD; +#define DSPTCHR_PDRAM_DATA_DATA_FIELD_MASK 0xffffffff +#define DSPTCHR_PDRAM_DATA_DATA_FIELD_WIDTH 32 +#define DSPTCHR_PDRAM_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_MACTYPE_TYPE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_MACTYPE_TYPE_FIELD_MASK 0x00000007 +#define BBH_TX_COMMON_CONFIGURATIONS_MACTYPE_TYPE_FIELD_WIDTH 3 +#define BBH_TX_COMMON_CONFIGURATIONS_MACTYPE_TYPE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_MACTYPE_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_MACTYPE_RESERVED0_FIELD_MASK 0xfffffff8 +#define BBH_TX_COMMON_CONFIGURATIONS_MACTYPE_RESERVED0_FIELD_WIDTH 29 +#define BBH_TX_COMMON_CONFIGURATIONS_MACTYPE_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_DMASRC_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_DMASRC_FIELD_MASK 0x0000003f +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_DMASRC_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_DMASRC_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED0_FIELD_MASK 0x000000c0 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED0_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_SDMASRC_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_SDMASRC_FIELD_MASK 0x00003f00 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_SDMASRC_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_SDMASRC_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED1_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED1_FIELD_MASK 0x0000c000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED1_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_SBPMSRC_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_SBPMSRC_FIELD_MASK 0x003f0000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_SBPMSRC_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_SBPMSRC_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED2_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED2_FIELD_MASK 0x00c00000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED2_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED2_FIELD_SHIFT 22 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_FPMSRC_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_FPMSRC_FIELD_MASK 0x3f000000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_FPMSRC_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_FPMSRC_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED3_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED3_FIELD_MASK 0xc0000000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED3_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_RESERVED3_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_PDRNR0SRC_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_PDRNR0SRC_FIELD_MASK 0x0000003f +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_PDRNR0SRC_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_PDRNR0SRC_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED0_FIELD_MASK 0x000000c0 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED0_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_PDRNR1SRC_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_PDRNR1SRC_FIELD_MASK 0x00003f00 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_PDRNR1SRC_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_PDRNR1SRC_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED1_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED1_FIELD_MASK 0x0000c000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED1_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_STSRNRSRC_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_STSRNRSRC_FIELD_MASK 0x003f0000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_STSRNRSRC_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_STSRNRSRC_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED2_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED2_FIELD_MASK 0x00c00000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED2_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED2_FIELD_SHIFT 22 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_MSGRNRSRC_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_MSGRNRSRC_FIELD_MASK 0x3f000000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_MSGRNRSRC_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_MSGRNRSRC_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED3_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED3_FIELD_MASK 0xc0000000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED3_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_RESERVED3_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_BUFSIZE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_BUFSIZE_FIELD_MASK 0x00000007 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_BUFSIZE_FIELD_WIDTH 3 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_BUFSIZE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_BYTERESUL_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_BYTERESUL_FIELD_MASK 0x00000008 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_BYTERESUL_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_BYTERESUL_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_DDRTXOFFSET_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_DDRTXOFFSET_FIELD_MASK 0x00001ff0 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_DDRTXOFFSET_FIELD_WIDTH 9 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_DDRTXOFFSET_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED0_FIELD_MASK 0x0000e000 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED0_FIELD_WIDTH 3 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_HNSIZE0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_HNSIZE0_FIELD_MASK 0x007f0000 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_HNSIZE0_FIELD_WIDTH 7 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_HNSIZE0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED1_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED1_FIELD_MASK 0x00800000 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED1_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED1_FIELD_SHIFT 23 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_HNSIZE1_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_HNSIZE1_FIELD_MASK 0x7f000000 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_HNSIZE1_FIELD_WIDTH 7 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_HNSIZE1_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED2_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED2_FIELD_MASK 0x80000000 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED2_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_RESERVED2_FIELD_SHIFT 31 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_TCONTADDR_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_TCONTADDR_FIELD_MASK 0x0000ffff +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_TCONTADDR_FIELD_WIDTH 16 +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_TCONTADDR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_SKBADDR_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_SKBADDR_FIELD_MASK 0xffff0000 +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_SKBADDR_FIELD_WIDTH 16 +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_SKBADDR_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_PTRADDR_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_PTRADDR_FIELD_MASK 0x0000ffff +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_PTRADDR_FIELD_WIDTH 16 +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_PTRADDR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_TASK_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_TASK_FIELD_MASK 0x000f0000 +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_TASK_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_TASK_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_RESERVED0_FIELD_MASK 0xfff00000 +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_RESERVED0_FIELD_WIDTH 12 +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_RESERVED0_FIELD_SHIFT 20 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_DESCBASE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_DESCBASE_FIELD_MASK 0x0000003f +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_DESCBASE_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_DESCBASE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_DESCSIZE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_DESCSIZE_FIELD_MASK 0x00000fc0 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_DESCSIZE_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_DESCSIZE_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED0_FIELD_MASK 0x0000f000 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED0_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_MAXREQ_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_MAXREQ_FIELD_MASK 0x003f0000 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_MAXREQ_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_MAXREQ_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED1_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED1_FIELD_MASK 0x00c00000 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED1_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED1_FIELD_SHIFT 22 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_EPNURGNT_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_EPNURGNT_FIELD_MASK 0x01000000 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_EPNURGNT_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_EPNURGNT_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_JUMBOURGNT_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_JUMBOURGNT_FIELD_MASK 0x02000000 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_JUMBOURGNT_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_JUMBOURGNT_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED2_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED2_FIELD_MASK 0xfc000000 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED2_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_RESERVED2_FIELD_SHIFT 26 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_DESCBASE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_DESCBASE_FIELD_MASK 0x0000003f +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_DESCBASE_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_DESCBASE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_DESCSIZE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_DESCSIZE_FIELD_MASK 0x00000fc0 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_DESCSIZE_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_DESCSIZE_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED0_FIELD_MASK 0x0000f000 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED0_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_MAXREQ_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_MAXREQ_FIELD_MASK 0x003f0000 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_MAXREQ_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_MAXREQ_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED1_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED1_FIELD_MASK 0x00c00000 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED1_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED1_FIELD_SHIFT 22 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_EPNURGNT_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_EPNURGNT_FIELD_MASK 0x01000000 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_EPNURGNT_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_EPNURGNT_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_JUMBOURGNT_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_JUMBOURGNT_FIELD_MASK 0x02000000 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_JUMBOURGNT_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_JUMBOURGNT_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED2_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED2_FIELD_MASK 0xfc000000 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED2_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_RESERVED2_FIELD_SHIFT 26 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_FREENOCNTXT_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_FREENOCNTXT_FIELD_MASK 0x00000001 +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_FREENOCNTXT_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_FREENOCNTXT_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_SPECIALFREE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_SPECIALFREE_FIELD_MASK 0x00000002 +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_SPECIALFREE_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_SPECIALFREE_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_RESERVED0_FIELD_MASK 0x000000fc +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_RESERVED0_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_MAXGN_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_MAXGN_FIELD_MASK 0x00001f00 +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_MAXGN_FIELD_WIDTH 5 +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_MAXGN_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_RESERVED1_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_RESERVED1_FIELD_MASK 0xffffe000 +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_RESERVED1_FIELD_WIDTH 19 +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEL_DDRTMBASE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEL_DDRTMBASE_FIELD_MASK 0xffffffff +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEL_DDRTMBASE_FIELD_WIDTH 32 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEL_DDRTMBASE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_DDRTMBASE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_DDRTMBASE_FIELD_MASK 0x000000ff +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_DDRTMBASE_FIELD_WIDTH 8 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_DDRTMBASE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_RESERVED0_FIELD_WIDTH 24 +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_PSRAMSIZE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_PSRAMSIZE_FIELD_MASK 0x000003ff +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_PSRAMSIZE_FIELD_WIDTH 10 +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_PSRAMSIZE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_DDRSIZE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_DDRSIZE_FIELD_MASK 0x000ffc00 +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_DDRSIZE_FIELD_WIDTH 10 +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_DDRSIZE_FIELD_SHIFT 10 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_PSRAMBASE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_PSRAMBASE_FIELD_MASK 0x3ff00000 +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_PSRAMBASE_FIELD_WIDTH 10 +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_PSRAMBASE_FIELD_SHIFT 20 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_RESERVED0_FIELD_MASK 0xc0000000 +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_RESERVED0_FIELD_WIDTH 2 +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_ARB_CFG_HIGHTRXQ_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_ARB_CFG_HIGHTRXQ_FIELD_MASK 0x00000001 +#define BBH_TX_COMMON_CONFIGURATIONS_ARB_CFG_HIGHTRXQ_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_ARB_CFG_HIGHTRXQ_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_ARB_CFG_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_ARB_CFG_RESERVED0_FIELD_MASK 0xfffffffe +#define BBH_TX_COMMON_CONFIGURATIONS_ARB_CFG_RESERVED0_FIELD_WIDTH 31 +#define BBH_TX_COMMON_CONFIGURATIONS_ARB_CFG_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_ROUTE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_ROUTE_FIELD_MASK 0x000003ff +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_ROUTE_FIELD_WIDTH 10 +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_ROUTE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_DEST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_DEST_FIELD_MASK 0x0000fc00 +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_DEST_FIELD_WIDTH 6 +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_DEST_FIELD_SHIFT 10 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_EN_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_EN_FIELD_MASK 0x00010000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_EN_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_RESERVED0_FIELD_MASK 0xfffe0000 +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_RESERVED0_FIELD_WIDTH 15 +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_RESERVED0_FIELD_SHIFT 17 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK0_FIELD_MASK 0x0000000f +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK0_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK1_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK1_FIELD_MASK 0x000000f0 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK1_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK1_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK2_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK2_FIELD_MASK 0x00000f00 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK2_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK2_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK3_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK3_FIELD_MASK 0x0000f000 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK3_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK3_FIELD_SHIFT 12 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK4_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK4_FIELD_MASK 0x000f0000 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK4_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK4_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK5_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK5_FIELD_MASK 0x00f00000 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK5_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK5_FIELD_SHIFT 20 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK6_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK6_FIELD_MASK 0x0f000000 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK6_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK6_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK7_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK7_FIELD_MASK 0xf0000000 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK7_FIELD_WIDTH 4 +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_TASK7_FIELD_SHIFT 28 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_CNTXTRST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_CNTXTRST_FIELD_MASK 0x00000001 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_CNTXTRST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_CNTXTRST_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_PDFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_PDFIFORST_FIELD_MASK 0x00000002 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_PDFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_PDFIFORST_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_DMAPTRRST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_DMAPTRRST_FIELD_MASK 0x00000004 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_DMAPTRRST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_DMAPTRRST_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SDMAPTRRST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SDMAPTRRST_FIELD_MASK 0x00000008 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SDMAPTRRST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SDMAPTRRST_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_BPMFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_BPMFIFORST_FIELD_MASK 0x00000010 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_BPMFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_BPMFIFORST_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SBPMFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SBPMFIFORST_FIELD_MASK 0x00000020 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SBPMFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SBPMFIFORST_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_OKFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_OKFIFORST_FIELD_MASK 0x00000040 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_OKFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_OKFIFORST_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_DDRFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_DDRFIFORST_FIELD_MASK 0x00000080 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_DDRFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_DDRFIFORST_FIELD_SHIFT 7 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SRAMFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SRAMFIFORST_FIELD_MASK 0x00000100 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SRAMFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SRAMFIFORST_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SKBPTRRST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SKBPTRRST_FIELD_MASK 0x00000200 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SKBPTRRST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_SKBPTRRST_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_STSFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_STSFIFORST_FIELD_MASK 0x00000400 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_STSFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_STSFIFORST_FIELD_SHIFT 10 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_REQFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_REQFIFORST_FIELD_MASK 0x00000800 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_REQFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_REQFIFORST_FIELD_SHIFT 11 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_MSGFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_MSGFIFORST_FIELD_MASK 0x00001000 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_MSGFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_MSGFIFORST_FIELD_SHIFT 12 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_GNXTFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_GNXTFIFORST_FIELD_MASK 0x00002000 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_GNXTFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_GNXTFIFORST_FIELD_SHIFT 13 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_FBNFIFORST_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_FBNFIFORST_FIELD_MASK 0x00004000 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_FBNFIFORST_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_FBNFIFORST_FIELD_SHIFT 14 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_RESERVED0_FIELD_MASK 0xffff8000 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_RESERVED0_FIELD_WIDTH 17 +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_RESERVED0_FIELD_SHIFT 15 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DBGSEL_DBGSEL_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DBGSEL_DBGSEL_FIELD_MASK 0x0000001f +#define BBH_TX_COMMON_CONFIGURATIONS_DBGSEL_DBGSEL_FIELD_WIDTH 5 +#define BBH_TX_COMMON_CONFIGURATIONS_DBGSEL_DBGSEL_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DBGSEL_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DBGSEL_RESERVED0_FIELD_MASK 0xffffffe0 +#define BBH_TX_COMMON_CONFIGURATIONS_DBGSEL_RESERVED0_FIELD_WIDTH 27 +#define BBH_TX_COMMON_CONFIGURATIONS_DBGSEL_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_MASK 0x00000001 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD_MASK 0x000000fe +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD_WIDTH 7 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD_MASK 0x0000ff00 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD_WIDTH 8 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_MASK 0x00010000 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD_MASK 0x000e0000 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD_WIDTH 3 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_MASK 0x00700000 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_WIDTH 3 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_SHIFT 20 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD_MASK 0x00800000 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD_SHIFT 23 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_MASK 0xff000000 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_WIDTH 8 +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_GPR_GPR_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_GPR_GPR_FIELD_MASK 0xffffffff +#define BBH_TX_COMMON_CONFIGURATIONS_GPR_GPR_FIELD_WIDTH 32 +#define BBH_TX_COMMON_CONFIGURATIONS_GPR_GPR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DS_DMA_SUP_DSDMA_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DS_DMA_SUP_DSDMA_FIELD_MASK 0x00000001 +#define BBH_TX_COMMON_CONFIGURATIONS_DS_DMA_SUP_DSDMA_FIELD_WIDTH 1 +#define BBH_TX_COMMON_CONFIGURATIONS_DS_DMA_SUP_DSDMA_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_COMMON_CONFIGURATIONS_DS_DMA_SUP_RESERVED0_FIELD; +#define BBH_TX_COMMON_CONFIGURATIONS_DS_DMA_SUP_RESERVED0_FIELD_MASK 0xfffffffe +#define BBH_TX_COMMON_CONFIGURATIONS_DS_DMA_SUP_RESERVED0_FIELD_WIDTH 31 +#define BBH_TX_COMMON_CONFIGURATIONS_DS_DMA_SUP_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_Q2RNR_Q0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_Q0_FIELD_MASK 0x00000001 +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_Q0_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_Q2RNR_Q1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_Q1_FIELD_MASK 0x00000002 +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_Q1_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD_MASK 0xfffffffc +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD_WIDTH 30 +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_QPROF_Q0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_Q0_FIELD_MASK 0x00000001 +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_Q0_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_QPROF_Q1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_Q1_FIELD_MASK 0x00000002 +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_Q1_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_QPROF_DIS0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_DIS0_FIELD_MASK 0x00000004 +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_DIS0_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_DIS0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_QPROF_DIS1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_DIS1_FIELD_MASK 0x00000008 +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_DIS1_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_DIS1_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_QPROF_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_RESERVED0_FIELD_MASK 0xfffffff0 +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_RESERVED0_FIELD_WIDTH 28 +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD_MASK 0x000001ff +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD_WIDTH 9 +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD_MASK 0x0000fe00 +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD_WIDTH 7 +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD_MASK 0x01ff0000 +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD_WIDTH 9 +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD_MASK 0xfe000000 +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD_WIDTH 7 +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD_MASK 0x000000ff +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD_MASK 0x0000ff00 +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD_MASK 0x00ff0000 +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD_MASK 0xff000000 +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD_MASK 0x0000ffff +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD_WIDTH 16 +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD_MASK 0xffff0000 +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD_WIDTH 16 +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_QMQ_Q0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_Q0_FIELD_MASK 0x00000001 +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_Q0_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_QMQ_Q1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_Q1_FIELD_MASK 0x00000002 +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_Q1_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_QMQ_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_RESERVED0_FIELD_MASK 0xfffffffc +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_RESERVED0_FIELD_WIDTH 30 +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSSIZE_FIFOSIZE0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_FIFOSIZE0_FIELD_MASK 0x000001ff +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_FIFOSIZE0_FIELD_WIDTH 9 +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_FIFOSIZE0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSSIZE_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_RESERVED0_FIELD_MASK 0x0000fe00 +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_RESERVED0_FIELD_WIDTH 7 +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSSIZE_FIFOSIZE1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_FIFOSIZE1_FIELD_MASK 0x01ff0000 +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_FIFOSIZE1_FIELD_WIDTH 9 +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_FIFOSIZE1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSSIZE_RESERVED1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_RESERVED1_FIELD_MASK 0xfe000000 +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_RESERVED1_FIELD_WIDTH 7 +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_WKUPTHRESH0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_WKUPTHRESH0_FIELD_MASK 0x000000ff +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_WKUPTHRESH0_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_WKUPTHRESH0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_RESERVED0_FIELD_MASK 0x0000ff00 +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_RESERVED0_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_WKUPTHRESH1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_WKUPTHRESH1_FIELD_MASK 0x00ff0000 +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_WKUPTHRESH1_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_WKUPTHRESH1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_RESERVED1_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_RESERVED1_FIELD_MASK 0xff000000 +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_RESERVED1_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_RESERVED1_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD_MASK 0x00000001 +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD_MASK 0xfffffffe +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD_WIDTH 31 +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD_MASK 0x000000ff +#define BBH_TX_WAN_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_TX_WAN_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD_WIDTH 24 +#define BBH_TX_WAN_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSEMPTY_EMPTY_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSEMPTY_EMPTY_FIELD_MASK 0x000000ff +#define BBH_TX_WAN_CONFIGURATIONS_STSEMPTY_EMPTY_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_STSEMPTY_EMPTY_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSEMPTY_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSEMPTY_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_TX_WAN_CONFIGURATIONS_STSEMPTY_RESERVED0_FIELD_WIDTH 24 +#define BBH_TX_WAN_CONFIGURATIONS_STSEMPTY_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_TCONTADDR_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_TCONTADDR_FIELD_MASK 0x0000ffff +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_TCONTADDR_FIELD_WIDTH 16 +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_TCONTADDR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_RESERVED0_FIELD_MASK 0xffff0000 +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_RESERVED0_FIELD_WIDTH 16 +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_PTRADDR_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_PTRADDR_FIELD_MASK 0x0000ffff +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_PTRADDR_FIELD_WIDTH 16 +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_PTRADDR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_TASK_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_TASK_FIELD_MASK 0x000f0000 +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_TASK_FIELD_WIDTH 4 +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_TASK_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_RESERVED0_FIELD_MASK 0xfff00000 +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_RESERVED0_FIELD_WIDTH 12 +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_RESERVED0_FIELD_SHIFT 20 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_TCONTADDR_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_TCONTADDR_FIELD_MASK 0x0000ffff +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_TCONTADDR_FIELD_WIDTH 16 +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_TCONTADDR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_RESERVED0_FIELD_MASK 0xffff0000 +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_RESERVED0_FIELD_WIDTH 16 +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_PTRADDR_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_PTRADDR_FIELD_MASK 0x0000ffff +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_PTRADDR_FIELD_WIDTH 16 +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_PTRADDR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_TASK_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_TASK_FIELD_MASK 0x000f0000 +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_TASK_FIELD_WIDTH 4 +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_TASK_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_RESERVED0_FIELD_MASK 0xfff00000 +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_RESERVED0_FIELD_WIDTH 12 +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_RESERVED0_FIELD_SHIFT 20 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_EPNCFG_STPLENERR_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_STPLENERR_FIELD_MASK 0x00000001 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_STPLENERR_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_STPLENERR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_EPNCFG_CMP_WIDTH_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_CMP_WIDTH_FIELD_MASK 0x00000002 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_CMP_WIDTH_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_CMP_WIDTH_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_EPNCFG_CONSIDERFULL_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_CONSIDERFULL_FIELD_MASK 0x00000004 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_CONSIDERFULL_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_CONSIDERFULL_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_EPNCFG_ADDCRC_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_ADDCRC_FIELD_MASK 0x00000008 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_ADDCRC_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_ADDCRC_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_EPNCFG_REQ_FULL_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_REQ_FULL_FIELD_MASK 0x000000f0 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_REQ_FULL_FIELD_WIDTH 4 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_REQ_FULL_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_EPNCFG_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_RESERVED0_FIELD_WIDTH 24 +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_WDATA_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_WDATA_FIELD_MASK 0x0003ffff +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_WDATA_FIELD_WIDTH 18 +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_WDATA_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_A_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_A_FIELD_MASK 0x03fc0000 +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_A_FIELD_WIDTH 8 +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_A_FIELD_SHIFT 18 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_CMD_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_CMD_FIELD_MASK 0x04000000 +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_CMD_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_CMD_FIELD_SHIFT 26 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_RESERVED0_FIELD_MASK 0xf8000000 +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_RESERVED0_FIELD_WIDTH 5 +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_RESERVED0_FIELD_SHIFT 27 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_TS_EN_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_TS_EN_FIELD_MASK 0x00000001 +#define BBH_TX_WAN_CONFIGURATIONS_TS_EN_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_TS_EN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_TS_RESERVED0_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_TS_RESERVED0_FIELD_MASK 0xfffffffe +#define BBH_TX_WAN_CONFIGURATIONS_TS_RESERVED0_FIELD_WIDTH 31 +#define BBH_TX_WAN_CONFIGURATIONS_TS_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_MAXWLEN_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_MAXWLEN_FIELD_MASK 0x0000ffff +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_MAXWLEN_FIELD_WIDTH 16 +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_MAXWLEN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_MIN_CREDIT_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_MIN_CREDIT_FIELD_MASK 0x07ff0000 +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_MIN_CREDIT_FIELD_WIDTH 11 +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_MIN_CREDIT_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_SPARE_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_SPARE_FIELD_MASK 0x38000000 +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_SPARE_FIELD_WIDTH 3 +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_SPARE_FIELD_SHIFT 27 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_PRIO_EN_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_PRIO_EN_FIELD_MASK 0x40000000 +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_PRIO_EN_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_PRIO_EN_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_SRST_N_FIELD; +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_SRST_N_FIELD_MASK 0x80000000 +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_SRST_N_FIELD_WIDTH 1 +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_SRST_N_FIELD_SHIFT 31 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_Q2RNR_Q0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_Q2RNR_Q0_FIELD_MASK 0x00000001 +#define BBH_TX_LAN_CONFIGURATIONS_Q2RNR_Q0_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_Q2RNR_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_Q2RNR_Q1_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_Q2RNR_Q1_FIELD_MASK 0x00000002 +#define BBH_TX_LAN_CONFIGURATIONS_Q2RNR_Q1_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_Q2RNR_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD_MASK 0xfffffffc +#define BBH_TX_LAN_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD_WIDTH 30 +#define BBH_TX_LAN_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_QPROF_Q0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_Q0_FIELD_MASK 0x00000001 +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_Q0_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_QPROF_Q1_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_Q1_FIELD_MASK 0x00000002 +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_Q1_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_QPROF_DIS0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_DIS0_FIELD_MASK 0x00000004 +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_DIS0_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_DIS0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_QPROF_DIS1_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_DIS1_FIELD_MASK 0x00000008 +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_DIS1_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_DIS1_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_QPROF_RESERVED0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_RESERVED0_FIELD_MASK 0xfffffff0 +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_RESERVED0_FIELD_WIDTH 28 +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD_MASK 0x000001ff +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD_WIDTH 9 +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD_MASK 0x0000fe00 +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD_WIDTH 7 +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD_MASK 0x01ff0000 +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD_WIDTH 9 +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD_MASK 0xfe000000 +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD_WIDTH 7 +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD_MASK 0x000000ff +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD_WIDTH 8 +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD_MASK 0x0000ff00 +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD_WIDTH 8 +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD_MASK 0x00ff0000 +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD_WIDTH 8 +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD_MASK 0xff000000 +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD_WIDTH 8 +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD_MASK 0x0000ffff +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD_WIDTH 16 +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD_MASK 0xffff0000 +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD_WIDTH 16 +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_QMQ_Q0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_QMQ_Q0_FIELD_MASK 0x00000001 +#define BBH_TX_LAN_CONFIGURATIONS_QMQ_Q0_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_QMQ_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_QMQ_Q1_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_QMQ_Q1_FIELD_MASK 0x00000002 +#define BBH_TX_LAN_CONFIGURATIONS_QMQ_Q1_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_QMQ_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_QMQ_RESERVED0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_QMQ_RESERVED0_FIELD_MASK 0xfffffffc +#define BBH_TX_LAN_CONFIGURATIONS_QMQ_RESERVED0_FIELD_WIDTH 30 +#define BBH_TX_LAN_CONFIGURATIONS_QMQ_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD_MASK 0x00000001 +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD_MASK 0xfffffffe +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD_WIDTH 31 +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD_MASK 0x000000ff +#define BBH_TX_LAN_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD_WIDTH 8 +#define BBH_TX_LAN_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_TX_LAN_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD_WIDTH 24 +#define BBH_TX_LAN_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_DDRTHRESH_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_DDRTHRESH_FIELD_MASK 0x000001ff +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_DDRTHRESH_FIELD_WIDTH 9 +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_DDRTHRESH_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_RESERVED0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_RESERVED0_FIELD_MASK 0x0000fe00 +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_RESERVED0_FIELD_WIDTH 7 +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_SRAMTHRESH_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_SRAMTHRESH_FIELD_MASK 0x01ff0000 +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_SRAMTHRESH_FIELD_WIDTH 9 +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_SRAMTHRESH_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_RESERVED1_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_RESERVED1_FIELD_MASK 0xfe000000 +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_RESERVED1_FIELD_WIDTH 7 +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_EEE_EN_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_EEE_EN_FIELD_MASK 0x00000001 +#define BBH_TX_LAN_CONFIGURATIONS_EEE_EN_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_EEE_EN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_EEE_RESERVED0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_EEE_RESERVED0_FIELD_MASK 0xfffffffe +#define BBH_TX_LAN_CONFIGURATIONS_EEE_RESERVED0_FIELD_WIDTH 31 +#define BBH_TX_LAN_CONFIGURATIONS_EEE_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_TS_EN_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_TS_EN_FIELD_MASK 0x00000001 +#define BBH_TX_LAN_CONFIGURATIONS_TS_EN_FIELD_WIDTH 1 +#define BBH_TX_LAN_CONFIGURATIONS_TS_EN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_LAN_CONFIGURATIONS_TS_RESERVED0_FIELD; +#define BBH_TX_LAN_CONFIGURATIONS_TS_RESERVED0_FIELD_MASK 0xfffffffe +#define BBH_TX_LAN_CONFIGURATIONS_TS_RESERVED0_FIELD_WIDTH 31 +#define BBH_TX_LAN_CONFIGURATIONS_TS_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_Q0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_Q0_FIELD_MASK 0x00000001 +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_Q0_FIELD_WIDTH 1 +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_Q1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_Q1_FIELD_MASK 0x00000002 +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_Q1_FIELD_WIDTH 1 +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD_MASK 0xfffffffc +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD_WIDTH 30 +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_Q0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_Q0_FIELD_MASK 0x00000001 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_Q0_FIELD_WIDTH 1 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_Q1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_Q1_FIELD_MASK 0x00000002 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_Q1_FIELD_WIDTH 1 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_DIS0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_DIS0_FIELD_MASK 0x00000004 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_DIS0_FIELD_WIDTH 1 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_DIS0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_DIS1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_DIS1_FIELD_MASK 0x00000008 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_DIS1_FIELD_WIDTH 1 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_DIS1_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_RESERVED0_FIELD_MASK 0xfffffff0 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_RESERVED0_FIELD_WIDTH 28 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD_MASK 0x000001ff +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD_WIDTH 9 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_FIFOSIZE0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD_MASK 0x0000fe00 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD_WIDTH 7 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD_MASK 0x01ff0000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD_WIDTH 9 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_FIFOSIZE1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD_MASK 0xfe000000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD_WIDTH 7 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD_MASK 0x000000ff +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD_WIDTH 8 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_WKUPTHRESH0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD_MASK 0x0000ff00 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD_WIDTH 8 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD_MASK 0x00ff0000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD_WIDTH 8 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_WKUPTHRESH1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD_MASK 0xff000000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD_WIDTH 8 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_RESERVED1_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD_MASK 0x0000ffff +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD_WIDTH 16 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD_MASK 0xffff0000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD_WIDTH 16 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_PDLIMIT1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_Q0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_Q0_FIELD_MASK 0x00000001 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_Q0_FIELD_WIDTH 1 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_Q0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_Q1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_Q1_FIELD_MASK 0x00000002 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_Q1_FIELD_WIDTH 1 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_Q1_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_RESERVED0_FIELD_MASK 0xfffffffc +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_RESERVED0_FIELD_WIDTH 30 +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD_MASK 0x00000001 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD_WIDTH 1 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_EN_PDLIMITEN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD_MASK 0xfffffffe +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD_WIDTH 31 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_EN_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD_MASK 0x000000ff +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD_WIDTH 8 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDEMPTY_EMPTY_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD_WIDTH 24 +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDEMPTY_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_DDRTHRESH_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_DDRTHRESH_FIELD_MASK 0x000001ff +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_DDRTHRESH_FIELD_WIDTH 9 +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_DDRTHRESH_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_RESERVED0_FIELD_MASK 0x0000fe00 +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_RESERVED0_FIELD_WIDTH 7 +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_SRAMTHRESH_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_SRAMTHRESH_FIELD_MASK 0x01ff0000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_SRAMTHRESH_FIELD_WIDTH 9 +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_SRAMTHRESH_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_RESERVED1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_RESERVED1_FIELD_MASK 0xfe000000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_RESERVED1_FIELD_WIDTH 7 +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_EEE_EN_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_EEE_EN_FIELD_MASK 0x000000ff +#define BBH_TX_UNIFIED_CONFIGURATIONS_EEE_EN_FIELD_WIDTH 8 +#define BBH_TX_UNIFIED_CONFIGURATIONS_EEE_EN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_EEE_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_EEE_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_TX_UNIFIED_CONFIGURATIONS_EEE_RESERVED0_FIELD_WIDTH 24 +#define BBH_TX_UNIFIED_CONFIGURATIONS_EEE_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_TS_EN_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TS_EN_FIELD_MASK 0x000000ff +#define BBH_TX_UNIFIED_CONFIGURATIONS_TS_EN_FIELD_WIDTH 8 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TS_EN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_TS_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TS_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TS_RESERVED0_FIELD_WIDTH 24 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TS_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_FIFOBASE0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_FIFOBASE0_FIELD_MASK 0x00000fff +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_FIFOBASE0_FIELD_WIDTH 12 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_FIFOBASE0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_RESERVED0_FIELD_MASK 0x0000f000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_RESERVED0_FIELD_WIDTH 4 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_FIFOBASE1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_FIFOBASE1_FIELD_MASK 0x0fff0000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_FIFOBASE1_FIELD_WIDTH 12 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_FIFOBASE1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_RESERVED1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_RESERVED1_FIELD_MASK 0xf0000000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_RESERVED1_FIELD_WIDTH 4 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_RESERVED1_FIELD_SHIFT 28 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_FIFOSIZE0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_FIFOSIZE0_FIELD_MASK 0x00000fff +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_FIFOSIZE0_FIELD_WIDTH 12 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_FIFOSIZE0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_RESERVED0_FIELD_MASK 0x0000f000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_RESERVED0_FIELD_WIDTH 4 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_FIFOSIZE1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_FIFOSIZE1_FIELD_MASK 0x0fff0000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_FIFOSIZE1_FIELD_WIDTH 12 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_FIFOSIZE1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_RESERVED1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_RESERVED1_FIELD_MASK 0xf0000000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_RESERVED1_FIELD_WIDTH 4 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_RESERVED1_FIELD_SHIFT 28 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_FIFOBASE0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_FIFOBASE0_FIELD_MASK 0x000001ff +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_FIFOBASE0_FIELD_WIDTH 9 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_FIFOBASE0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_RESERVED0_FIELD_MASK 0x0000fe00 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_RESERVED0_FIELD_WIDTH 7 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_FIFOBASE1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_FIFOBASE1_FIELD_MASK 0x01ff0000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_FIFOBASE1_FIELD_WIDTH 9 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_FIFOBASE1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_RESERVED1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_RESERVED1_FIELD_MASK 0xfe000000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_RESERVED1_FIELD_WIDTH 7 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_FIFOSIZE0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_FIFOSIZE0_FIELD_MASK 0x000001ff +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_FIFOSIZE0_FIELD_WIDTH 9 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_FIFOSIZE0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_RESERVED0_FIELD_MASK 0x0000fe00 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_RESERVED0_FIELD_WIDTH 7 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_FIFOSIZE1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_FIFOSIZE1_FIELD_MASK 0x01ff0000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_FIFOSIZE1_FIELD_WIDTH 9 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_FIFOSIZE1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_RESERVED1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_RESERVED1_FIELD_MASK 0xfe000000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_RESERVED1_FIELD_WIDTH 7 +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_W0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_W0_FIELD_MASK 0x0000000f +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_W0_FIELD_WIDTH 4 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_W0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_RESERVED0_FIELD_MASK 0x0000fff0 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_RESERVED0_FIELD_WIDTH 12 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_W1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_W1_FIELD_MASK 0x000f0000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_W1_FIELD_WIDTH 4 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_W1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_RESERVED1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_RESERVED1_FIELD_MASK 0xfff00000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_RESERVED1_FIELD_WIDTH 12 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_THRESH0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_THRESH0_FIELD_MASK 0x000001ff +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_THRESH0_FIELD_WIDTH 9 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_THRESH0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_RESERVED0_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_RESERVED0_FIELD_MASK 0x0000fe00 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_RESERVED0_FIELD_WIDTH 7 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_THRESH1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_THRESH1_FIELD_MASK 0x01ff0000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_THRESH1_FIELD_WIDTH 9 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_THRESH1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_RESERVED1_FIELD; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_RESERVED1_FIELD_MASK 0xfe000000 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_RESERVED1_FIELD_WIDTH 7 +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SRAMPD_SRAMPD_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SRAMPD_SRAMPD_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_SRAMPD_SRAMPD_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_SRAMPD_SRAMPD_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_DDRPD_DDRPD_FIELD; +#define BBH_TX_DEBUG_COUNTERS_DDRPD_DDRPD_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_DDRPD_DDRPD_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_DDRPD_DDRPD_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_PDDROP_PDDROP_FIELD; +#define BBH_TX_DEBUG_COUNTERS_PDDROP_PDDROP_FIELD_MASK 0x0000ffff +#define BBH_TX_DEBUG_COUNTERS_PDDROP_PDDROP_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_PDDROP_PDDROP_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_PDDROP_RESERVED0_FIELD; +#define BBH_TX_DEBUG_COUNTERS_PDDROP_RESERVED0_FIELD_MASK 0xffff0000 +#define BBH_TX_DEBUG_COUNTERS_PDDROP_RESERVED0_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_PDDROP_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_STSCNT_STSCNT_FIELD; +#define BBH_TX_DEBUG_COUNTERS_STSCNT_STSCNT_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_STSCNT_STSCNT_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_STSCNT_STSCNT_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_STSDROP_STSDROP_FIELD; +#define BBH_TX_DEBUG_COUNTERS_STSDROP_STSDROP_FIELD_MASK 0x0000ffff +#define BBH_TX_DEBUG_COUNTERS_STSDROP_STSDROP_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_STSDROP_STSDROP_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_STSDROP_RESERVED0_FIELD; +#define BBH_TX_DEBUG_COUNTERS_STSDROP_RESERVED0_FIELD_MASK 0xffff0000 +#define BBH_TX_DEBUG_COUNTERS_STSDROP_RESERVED0_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_STSDROP_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_MSGCNT_MSGCNT_FIELD; +#define BBH_TX_DEBUG_COUNTERS_MSGCNT_MSGCNT_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_MSGCNT_MSGCNT_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_MSGCNT_MSGCNT_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_MSGDROP_MSGDROP_FIELD; +#define BBH_TX_DEBUG_COUNTERS_MSGDROP_MSGDROP_FIELD_MASK 0x0000ffff +#define BBH_TX_DEBUG_COUNTERS_MSGDROP_MSGDROP_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_MSGDROP_MSGDROP_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_MSGDROP_RESERVED0_FIELD; +#define BBH_TX_DEBUG_COUNTERS_MSGDROP_RESERVED0_FIELD_MASK 0xffff0000 +#define BBH_TX_DEBUG_COUNTERS_MSGDROP_RESERVED0_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_MSGDROP_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_GETNEXTNULL_GETNEXTNULL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_GETNEXTNULL_GETNEXTNULL_FIELD_MASK 0x0000ffff +#define BBH_TX_DEBUG_COUNTERS_GETNEXTNULL_GETNEXTNULL_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_GETNEXTNULL_GETNEXTNULL_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_GETNEXTNULL_RESERVED0_FIELD; +#define BBH_TX_DEBUG_COUNTERS_GETNEXTNULL_RESERVED0_FIELD_MASK 0xffff0000 +#define BBH_TX_DEBUG_COUNTERS_GETNEXTNULL_RESERVED0_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_GETNEXTNULL_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_FLUSHPKTS_FLSHPKTS_FIELD; +#define BBH_TX_DEBUG_COUNTERS_FLUSHPKTS_FLSHPKTS_FIELD_MASK 0x0000ffff +#define BBH_TX_DEBUG_COUNTERS_FLUSHPKTS_FLSHPKTS_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_FLUSHPKTS_FLSHPKTS_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_FLUSHPKTS_RESERVED0_FIELD; +#define BBH_TX_DEBUG_COUNTERS_FLUSHPKTS_RESERVED0_FIELD_MASK 0xffff0000 +#define BBH_TX_DEBUG_COUNTERS_FLUSHPKTS_RESERVED0_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_FLUSHPKTS_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_LENERR_LENERR_FIELD; +#define BBH_TX_DEBUG_COUNTERS_LENERR_LENERR_FIELD_MASK 0x0000ffff +#define BBH_TX_DEBUG_COUNTERS_LENERR_LENERR_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_LENERR_LENERR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_LENERR_RESERVED0_FIELD; +#define BBH_TX_DEBUG_COUNTERS_LENERR_RESERVED0_FIELD_MASK 0xffff0000 +#define BBH_TX_DEBUG_COUNTERS_LENERR_RESERVED0_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_LENERR_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_AGGRLENERR_AGGRLENERR_FIELD; +#define BBH_TX_DEBUG_COUNTERS_AGGRLENERR_AGGRLENERR_FIELD_MASK 0x0000ffff +#define BBH_TX_DEBUG_COUNTERS_AGGRLENERR_AGGRLENERR_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_AGGRLENERR_AGGRLENERR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_AGGRLENERR_RESERVED0_FIELD; +#define BBH_TX_DEBUG_COUNTERS_AGGRLENERR_RESERVED0_FIELD_MASK 0xffff0000 +#define BBH_TX_DEBUG_COUNTERS_AGGRLENERR_RESERVED0_FIELD_WIDTH 16 +#define BBH_TX_DEBUG_COUNTERS_AGGRLENERR_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SRAMPKT_SRAMPKT_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SRAMPKT_SRAMPKT_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_SRAMPKT_SRAMPKT_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_SRAMPKT_SRAMPKT_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_DDRPKT_DDRPKT_FIELD; +#define BBH_TX_DEBUG_COUNTERS_DDRPKT_DDRPKT_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_DDRPKT_DDRPKT_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_DDRPKT_DDRPKT_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SRAMBYTE_SRAMBYTE_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SRAMBYTE_SRAMBYTE_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_SRAMBYTE_SRAMBYTE_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_SRAMBYTE_SRAMBYTE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_DDRBYTE_DDRBYTE_FIELD; +#define BBH_TX_DEBUG_COUNTERS_DDRBYTE_DDRBYTE_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_DDRBYTE_DDRBYTE_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_DDRBYTE_DDRBYTE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_PDSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDSEL_FIELD_MASK 0x00000001 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDSEL_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_PDVSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDVSEL_FIELD_MASK 0x00000002 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDVSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDVSEL_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_PDEMPTYSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDEMPTYSEL_FIELD_MASK 0x00000004 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDEMPTYSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDEMPTYSEL_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_PDFULLSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDFULLSEL_FIELD_MASK 0x00000008 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDFULLSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDFULLSEL_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_PDBEMPTYSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDBEMPTYSEL_FIELD_MASK 0x00000010 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDBEMPTYSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDBEMPTYSEL_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_PDFFWKPSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDFFWKPSEL_FIELD_MASK 0x00000020 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDFFWKPSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_PDFFWKPSEL_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNSEL_FIELD_MASK 0x00000040 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNSEL_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNVSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNVSEL_FIELD_MASK 0x00000080 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNVSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNVSEL_FIELD_SHIFT 7 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNEMPTYSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNEMPTYSEL_FIELD_MASK 0x00000100 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNEMPTYSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNEMPTYSEL_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNFULLSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNFULLSEL_FIELD_MASK 0x00000200 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNFULLSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_FBNFULLSEL_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTSEL_FIELD_MASK 0x00000400 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTSEL_FIELD_SHIFT 10 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTVSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTVSEL_FIELD_MASK 0x00000800 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTVSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTVSEL_FIELD_SHIFT 11 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTEMPTYSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTEMPTYSEL_FIELD_MASK 0x00001000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTEMPTYSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTEMPTYSEL_FIELD_SHIFT 12 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTFULLSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTFULLSEL_FIELD_MASK 0x00002000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTFULLSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GETNEXTFULLSEL_FIELD_SHIFT 13 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_GPNCNTXTSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GPNCNTXTSEL_FIELD_MASK 0x00004000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GPNCNTXTSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_GPNCNTXTSEL_FIELD_SHIFT 14 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_BPMSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_BPMSEL_FIELD_MASK 0x00008000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_BPMSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_BPMSEL_FIELD_SHIFT 15 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_BPMFSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_BPMFSEL_FIELD_MASK 0x00010000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_BPMFSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_BPMFSEL_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_SBPMSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_SBPMSEL_FIELD_MASK 0x00020000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_SBPMSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_SBPMSEL_FIELD_SHIFT 17 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_SBPMFSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_SBPMFSEL_FIELD_MASK 0x00040000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_SBPMFSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_SBPMFSEL_FIELD_SHIFT 18 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_STSSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSSEL_FIELD_MASK 0x00080000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSSEL_FIELD_SHIFT 19 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_STSVSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSVSEL_FIELD_MASK 0x00100000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSVSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSVSEL_FIELD_SHIFT 20 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_STSEMPTYSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSEMPTYSEL_FIELD_MASK 0x00200000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSEMPTYSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSEMPTYSEL_FIELD_SHIFT 21 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_STSFULLSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSFULLSEL_FIELD_MASK 0x00400000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSFULLSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSFULLSEL_FIELD_SHIFT 22 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_STSBEMPTYSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSBEMPTYSEL_FIELD_MASK 0x00800000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSBEMPTYSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSBEMPTYSEL_FIELD_SHIFT 23 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_STSFFWKPSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSFFWKPSEL_FIELD_MASK 0x01000000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSFFWKPSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_STSFFWKPSEL_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_MSGSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_MSGSEL_FIELD_MASK 0x02000000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_MSGSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_MSGSEL_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_MSGVSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_MSGVSEL_FIELD_MASK 0x04000000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_MSGVSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_MSGVSEL_FIELD_SHIFT 26 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_EPNREQSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_EPNREQSEL_FIELD_MASK 0x08000000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_EPNREQSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_EPNREQSEL_FIELD_SHIFT 27 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_DATASEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_DATASEL_FIELD_MASK 0x10000000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_DATASEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_DATASEL_FIELD_SHIFT 28 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_REORDERSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_REORDERSEL_FIELD_MASK 0x20000000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_REORDERSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_REORDERSEL_FIELD_SHIFT 29 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_TSINFOSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_TSINFOSEL_FIELD_MASK 0x40000000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_TSINFOSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_TSINFOSEL_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_MACTXSEL_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_MACTXSEL_FIELD_MASK 0x80000000 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_MACTXSEL_FIELD_WIDTH 1 +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_MACTXSEL_FIELD_SHIFT 31 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDADDR_RDADDR_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDADDR_RDADDR_FIELD_MASK 0x000007ff +#define BBH_TX_DEBUG_COUNTERS_SWRDADDR_RDADDR_FIELD_WIDTH 11 +#define BBH_TX_DEBUG_COUNTERS_SWRDADDR_RDADDR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDADDR_RESERVED0_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDADDR_RESERVED0_FIELD_MASK 0xfffff800 +#define BBH_TX_DEBUG_COUNTERS_SWRDADDR_RESERVED0_FIELD_WIDTH 21 +#define BBH_TX_DEBUG_COUNTERS_SWRDADDR_RESERVED0_FIELD_SHIFT 11 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_SWRDDATA_DATA_FIELD; +#define BBH_TX_DEBUG_COUNTERS_SWRDDATA_DATA_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_SWRDDATA_DATA_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_SWRDDATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_UNIFIEDPKT_DDRBYTE_FIELD; +#define BBH_TX_DEBUG_COUNTERS_UNIFIEDPKT_DDRBYTE_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_UNIFIEDPKT_DDRBYTE_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_UNIFIEDPKT_DDRBYTE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_UNIFIEDBYTE_DDRBYTE_FIELD; +#define BBH_TX_DEBUG_COUNTERS_UNIFIEDBYTE_DDRBYTE_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_UNIFIEDBYTE_DDRBYTE_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_UNIFIEDBYTE_DDRBYTE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_DBGOUTREG_DBGVEC_FIELD; +#define BBH_TX_DEBUG_COUNTERS_DBGOUTREG_DBGVEC_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_DBGOUTREG_DBGVEC_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_DBGOUTREG_DBGVEC_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_TX_DEBUG_COUNTERS_IN_SEGMENTATION_IN_SEGMENTATION_FIELD; +#define BBH_TX_DEBUG_COUNTERS_IN_SEGMENTATION_IN_SEGMENTATION_FIELD_MASK 0xffffffff +#define BBH_TX_DEBUG_COUNTERS_IN_SEGMENTATION_IN_SEGMENTATION_FIELD_WIDTH 32 +#define BBH_TX_DEBUG_COUNTERS_IN_SEGMENTATION_IN_SEGMENTATION_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBCFG_SDMABBID_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_SDMABBID_FIELD_MASK 0x0000003f +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_SDMABBID_FIELD_WIDTH 6 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_SDMABBID_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED0_FIELD_MASK 0x000000c0 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED0_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBCFG_DISPBBID_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_DISPBBID_FIELD_MASK 0x00003f00 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_DISPBBID_FIELD_WIDTH 6 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_DISPBBID_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED1_FIELD_MASK 0x0000c000 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED1_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBCFG_SBPMBBID_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_SBPMBBID_FIELD_MASK 0x003f0000 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_SBPMBBID_FIELD_WIDTH 6 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_SBPMBBID_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED2_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED2_FIELD_MASK 0xffc00000 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED2_FIELD_WIDTH 10 +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_RESERVED2_FIELD_SHIFT 22 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_NORMALVIQ_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_NORMALVIQ_FIELD_MASK 0x0000001f +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_NORMALVIQ_FIELD_WIDTH 5 +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_NORMALVIQ_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_RESERVED0_FIELD_MASK 0x000000e0 +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_RESERVED0_FIELD_WIDTH 3 +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_EXCLVIQ_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_EXCLVIQ_FIELD_MASK 0x00001f00 +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_EXCLVIQ_FIELD_WIDTH 5 +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_EXCLVIQ_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_RESERVED1_FIELD_MASK 0xffffe000 +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_RESERVED1_FIELD_WIDTH 19 +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PATTERNDATALSB_PATTERNDATALSB_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNDATALSB_PATTERNDATALSB_FIELD_MASK 0xffffffff +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNDATALSB_PATTERNDATALSB_FIELD_WIDTH 32 +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNDATALSB_PATTERNDATALSB_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PATTERNDATAMSB_PATTERNDATAMSB_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNDATAMSB_PATTERNDATAMSB_FIELD_MASK 0xffffffff +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNDATAMSB_PATTERNDATAMSB_FIELD_WIDTH 32 +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNDATAMSB_PATTERNDATAMSB_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKLSB_PATTERNMASKLSB_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKLSB_PATTERNMASKLSB_FIELD_MASK 0xffffffff +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKLSB_PATTERNMASKLSB_FIELD_WIDTH 32 +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKLSB_PATTERNMASKLSB_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKMSB_PATTERNMASKMSB_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKMSB_PATTERNMASKMSB_FIELD_MASK 0xffffffff +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKMSB_PATTERNMASKMSB_FIELD_WIDTH 32 +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKMSB_PATTERNMASKMSB_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PLOAMEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PLOAMEN_FIELD_MASK 0x00000001 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PLOAMEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PLOAMEN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PRI3EN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PRI3EN_FIELD_MASK 0x00000002 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PRI3EN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PRI3EN_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PAUSEEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PAUSEEN_FIELD_MASK 0x00000004 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PAUSEEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PAUSEEN_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PFCEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PFCEN_FIELD_MASK 0x00000008 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PFCEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PFCEN_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_CTRLEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_CTRLEN_FIELD_MASK 0x00000010 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_CTRLEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_CTRLEN_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_MULTEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_MULTEN_FIELD_MASK 0x00000020 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_MULTEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_MULTEN_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_OAMEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_OAMEN_FIELD_MASK 0x00000040 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_OAMEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_OAMEN_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED0_FIELD_MASK 0x00000080 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED0_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PATTENOFFSET_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PATTENOFFSET_FIELD_MASK 0x00000f00 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PATTENOFFSET_FIELD_WIDTH 4 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PATTENOFFSET_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED1_FIELD_MASK 0x0000f000 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED1_FIELD_WIDTH 4 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED1_FIELD_SHIFT 12 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PATTERNEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PATTERNEN_FIELD_MASK 0x00010000 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PATTERNEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_PATTERNEN_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED2_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED2_FIELD_MASK 0x000e0000 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED2_FIELD_WIDTH 3 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED2_FIELD_SHIFT 17 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_EXCEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_EXCEN_FIELD_MASK 0x00100000 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_EXCEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_EXCEN_FIELD_SHIFT 20 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_DISNORMALCHECK_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_DISNORMALCHECK_FIELD_MASK 0x00200000 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_DISNORMALCHECK_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_DISNORMALCHECK_FIELD_SHIFT 21 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED3_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED3_FIELD_MASK 0xffc00000 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED3_FIELD_WIDTH 10 +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_RESERVED3_FIELD_SHIFT 22 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DATABASE_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DATABASE_FIELD_MASK 0x0000003f +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DATABASE_FIELD_WIDTH 6 +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DATABASE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_RESERVED0_FIELD_MASK 0x000000c0 +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_RESERVED0_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DESCBASE_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DESCBASE_FIELD_MASK 0x00003f00 +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DESCBASE_FIELD_WIDTH 6 +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_DESCBASE_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_RESERVED1_FIELD_MASK 0xffffc000 +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_RESERVED1_FIELD_WIDTH 18 +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SDMACFG_NUMOFCD_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_NUMOFCD_FIELD_MASK 0x0000007f +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_NUMOFCD_FIELD_WIDTH 7 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_NUMOFCD_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED0_FIELD_MASK 0x00000080 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED0_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SDMACFG_EXCLTH_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_EXCLTH_FIELD_MASK 0x00007f00 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_EXCLTH_FIELD_WIDTH 7 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_EXCLTH_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED1_FIELD_MASK 0x00008000 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED1_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED1_FIELD_SHIFT 15 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SDMACFG_COHERENCYEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_COHERENCYEN_FIELD_MASK 0x00010000 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_COHERENCYEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_COHERENCYEN_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED2_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED2_FIELD_MASK 0xfffe0000 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED2_FIELD_WIDTH 15 +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_RESERVED2_FIELD_SHIFT 17 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT0_FIELD_MASK 0x000000ff +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT0_FIELD_WIDTH 8 +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT1_FIELD_MASK 0x0000ff00 +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT1_FIELD_WIDTH 8 +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT1_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT2_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT2_FIELD_MASK 0x00ff0000 +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT2_FIELD_WIDTH 8 +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT2_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT3_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT3_FIELD_MASK 0xff000000 +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT3_FIELD_WIDTH 8 +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_MINPKT3_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT0_FIELD_MASK 0x00003fff +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT0_FIELD_WIDTH 14 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_RESERVED0_FIELD_MASK 0x0000c000 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_RESERVED0_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT1_FIELD_MASK 0x3fff0000 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT1_FIELD_WIDTH 14 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_MAXPKT1_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_RESERVED1_FIELD_MASK 0xc0000000 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_RESERVED1_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT2_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT2_FIELD_MASK 0x00003fff +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT2_FIELD_WIDTH 14 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT2_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_RESERVED0_FIELD_MASK 0x0000c000 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_RESERVED0_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT3_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT3_FIELD_MASK 0x3fff0000 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT3_FIELD_WIDTH 14 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_MAXPKT3_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_RESERVED1_FIELD_MASK 0xc0000000 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_RESERVED1_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SOPOFFSET_SOPOFFSET_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SOPOFFSET_SOPOFFSET_FIELD_MASK 0x0000007f +#define BBH_RX_GENERAL_CONFIGURATION_SOPOFFSET_SOPOFFSET_FIELD_WIDTH 7 +#define BBH_RX_GENERAL_CONFIGURATION_SOPOFFSET_SOPOFFSET_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SOPOFFSET_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SOPOFFSET_RESERVED0_FIELD_MASK 0xffffff80 +#define BBH_RX_GENERAL_CONFIGURATION_SOPOFFSET_RESERVED0_FIELD_WIDTH 25 +#define BBH_RX_GENERAL_CONFIGURATION_SOPOFFSET_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_TIMER_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_TIMER_FIELD_MASK 0x00ffffff +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_TIMER_FIELD_WIDTH 24 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_TIMER_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_DISPDROPDIS_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_DISPDROPDIS_FIELD_MASK 0x01000000 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_DISPDROPDIS_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_DISPDROPDIS_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SDMADROPDIS_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SDMADROPDIS_FIELD_MASK 0x02000000 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SDMADROPDIS_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SDMADROPDIS_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SBPMDROPDIS_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SBPMDROPDIS_FIELD_MASK 0x04000000 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SBPMDROPDIS_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_SBPMDROPDIS_FIELD_SHIFT 26 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_RESERVED0_FIELD_MASK 0x08000000 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_RESERVED0_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_RESERVED0_FIELD_SHIFT 27 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_FCFORCE_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_FCFORCE_FIELD_MASK 0x10000000 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_FCFORCE_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_FCFORCE_FIELD_SHIFT 28 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_RESERVED1_FIELD_MASK 0xe0000000 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_RESERVED1_FIELD_WIDTH 3 +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_RESERVED1_FIELD_SHIFT 29 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_CRCOMITDIS_CRCOMITDIS_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_CRCOMITDIS_CRCOMITDIS_FIELD_MASK 0x00000001 +#define BBH_RX_GENERAL_CONFIGURATION_CRCOMITDIS_CRCOMITDIS_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_CRCOMITDIS_CRCOMITDIS_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_CRCOMITDIS_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_CRCOMITDIS_RESERVED0_FIELD_MASK 0xfffffffe +#define BBH_RX_GENERAL_CONFIGURATION_CRCOMITDIS_RESERVED0_FIELD_WIDTH 31 +#define BBH_RX_GENERAL_CONFIGURATION_CRCOMITDIS_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_ENABLE_PKTEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_ENABLE_PKTEN_FIELD_MASK 0x00000001 +#define BBH_RX_GENERAL_CONFIGURATION_ENABLE_PKTEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_ENABLE_PKTEN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_ENABLE_SBPMEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_ENABLE_SBPMEN_FIELD_MASK 0x00000002 +#define BBH_RX_GENERAL_CONFIGURATION_ENABLE_SBPMEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_ENABLE_SBPMEN_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_ENABLE_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_ENABLE_RESERVED0_FIELD_MASK 0xfffffffc +#define BBH_RX_GENERAL_CONFIGURATION_ENABLE_RESERVED0_FIELD_WIDTH 30 +#define BBH_RX_GENERAL_CONFIGURATION_ENABLE_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_G9991EN_ENABLE_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_G9991EN_ENABLE_FIELD_MASK 0x00000001 +#define BBH_RX_GENERAL_CONFIGURATION_G9991EN_ENABLE_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_G9991EN_ENABLE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_G9991EN_BYTES4_7ENABLE_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_G9991EN_BYTES4_7ENABLE_FIELD_MASK 0x00000002 +#define BBH_RX_GENERAL_CONFIGURATION_G9991EN_BYTES4_7ENABLE_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_G9991EN_BYTES4_7ENABLE_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_G9991EN_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_G9991EN_RESERVED0_FIELD_MASK 0xfffffffc +#define BBH_RX_GENERAL_CONFIGURATION_G9991EN_RESERVED0_FIELD_WIDTH 30 +#define BBH_RX_GENERAL_CONFIGURATION_G9991EN_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_FLOWTH_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_FLOWTH_FIELD_MASK 0x000000ff +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_FLOWTH_FIELD_WIDTH 8 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_FLOWTH_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_RESERVED0_FIELD_WIDTH 24 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL0_FIELD_MASK 0x00000003 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL0_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL0_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL0_FIELD_MASK 0x0000000c +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL0_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL0_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL1_FIELD_MASK 0x00000030 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL1_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MINPKTSEL1_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL1_FIELD_MASK 0x000000c0 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL1_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_MAXPKTSEL1_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_RESERVED0_FIELD_WIDTH 24 +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_MINPKTSEL_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_MINPKTSEL_FIELD_MASK 0xffffffff +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_MINPKTSEL_FIELD_WIDTH 32 +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_MINPKTSEL_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_MINPKTSEL_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_MINPKTSEL_FIELD_MASK 0xffffffff +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_MINPKTSEL_FIELD_WIDTH 32 +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_MINPKTSEL_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_MAXPKTSEL_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_MAXPKTSEL_FIELD_MASK 0xffffffff +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_MAXPKTSEL_FIELD_WIDTH 32 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_MAXPKTSEL_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_MAXPKTSEL_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_MAXPKTSEL_FIELD_MASK 0xffffffff +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_MAXPKTSEL_FIELD_WIDTH 32 +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_MAXPKTSEL_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MACMODE_MACMODE_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_MACMODE_FIELD_MASK 0x00000001 +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_MACMODE_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_MACMODE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MACMODE_GPONMODE_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_GPONMODE_FIELD_MASK 0x00000002 +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_GPONMODE_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_GPONMODE_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MACMODE_MACVDSL_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_MACVDSL_FIELD_MASK 0x00000004 +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_MACVDSL_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_MACVDSL_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_MACMODE_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_RESERVED0_FIELD_MASK 0xfffffff8 +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_RESERVED0_FIELD_WIDTH 29 +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_MAXREQ_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_MAXREQ_FIELD_MASK 0x0000000f +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_MAXREQ_FIELD_WIDTH 4 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_MAXREQ_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED0_FIELD_MASK 0x000000f0 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED0_FIELD_WIDTH 4 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_PRIDROPEN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_PRIDROPEN_FIELD_MASK 0x00000100 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_PRIDROPEN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_PRIDROPEN_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED1_FIELD_MASK 0x0000fe00 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED1_FIELD_WIDTH 7 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED1_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_CNGSEL_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_CNGSEL_FIELD_MASK 0x00010000 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_CNGSEL_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_CNGSEL_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED2_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED2_FIELD_MASK 0xfffe0000 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED2_FIELD_WIDTH 15 +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_RESERVED2_FIELD_SHIFT 17 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INBUFRST_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INBUFRST_FIELD_MASK 0x00000001 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INBUFRST_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INBUFRST_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_BURSTBUFRST_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_BURSTBUFRST_FIELD_MASK 0x00000002 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_BURSTBUFRST_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_BURSTBUFRST_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INGRESSCNTXT_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INGRESSCNTXT_FIELD_MASK 0x00000004 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INGRESSCNTXT_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_INGRESSCNTXT_FIELD_SHIFT 2 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CMDFIFORST_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CMDFIFORST_FIELD_MASK 0x00000008 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CMDFIFORST_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CMDFIFORST_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SBPMFIFORST_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SBPMFIFORST_FIELD_MASK 0x00000010 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SBPMFIFORST_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SBPMFIFORST_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_COHERENCYFIFORST_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_COHERENCYFIFORST_FIELD_MASK 0x00000020 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_COHERENCYFIFORST_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_COHERENCYFIFORST_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CNTXTRST_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CNTXTRST_FIELD_MASK 0x00000040 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CNTXTRST_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_CNTXTRST_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SDMARST_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SDMARST_FIELD_MASK 0x00000080 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SDMARST_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_SDMARST_FIELD_SHIFT 7 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_RESERVED0_FIELD_MASK 0xffffff00 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_RESERVED0_FIELD_WIDTH 24 +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_RXDBGSEL_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_RXDBGSEL_FIELD_MASK 0x0000000f +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_RXDBGSEL_FIELD_WIDTH 4 +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_RXDBGSEL_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_RESERVED0_FIELD_MASK 0xfffffff0 +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_RESERVED0_FIELD_WIDTH 28 +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_ID_2OVERWR_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_ID_2OVERWR_FIELD_MASK 0x0000003f +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_ID_2OVERWR_FIELD_WIDTH 6 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_ID_2OVERWR_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED0_FIELD_MASK 0x000000c0 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED0_FIELD_WIDTH 2 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_OVERWR_RA_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_OVERWR_RA_FIELD_MASK 0x0003ff00 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_OVERWR_RA_FIELD_WIDTH 10 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_OVERWR_RA_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED1_FIELD_MASK 0x00fc0000 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED1_FIELD_WIDTH 6 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED1_FIELD_SHIFT 18 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_OVERWR_EN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_OVERWR_EN_FIELD_MASK 0x01000000 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_OVERWR_EN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_OVERWR_EN_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED2_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED2_FIELD_MASK 0xfe000000 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED2_FIELD_WIDTH 7 +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_RESERVED2_FIELD_SHIFT 25 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_NONETH_FLOWID_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_NONETH_FLOWID_FIELD_MASK 0x000000ff +#define BBH_RX_GENERAL_CONFIGURATION_NONETH_FLOWID_FIELD_WIDTH 8 +#define BBH_RX_GENERAL_CONFIGURATION_NONETH_FLOWID_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_NONETH_ENABLE_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_NONETH_ENABLE_FIELD_MASK 0x00000100 +#define BBH_RX_GENERAL_CONFIGURATION_NONETH_ENABLE_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_NONETH_ENABLE_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_NONETH_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_NONETH_RESERVED0_FIELD_MASK 0xfffffe00 +#define BBH_RX_GENERAL_CONFIGURATION_NONETH_RESERVED0_FIELD_WIDTH 23 +#define BBH_RX_GENERAL_CONFIGURATION_NONETH_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_MASK 0x00000001 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED0_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED0_FIELD_MASK 0x000000fe +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED0_FIELD_WIDTH 7 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_TIMER_VAL_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_TIMER_VAL_FIELD_MASK 0x0000ff00 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_TIMER_VAL_FIELD_WIDTH 8 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_TIMER_VAL_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_MASK 0x00010000 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED1_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED1_FIELD_MASK 0x000e0000 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED1_FIELD_WIDTH 3 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_MASK 0x00700000 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_WIDTH 3 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_SHIFT 20 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED2_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED2_FIELD_MASK 0x00800000 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED2_FIELD_WIDTH 1 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_RESERVED2_FIELD_SHIFT 23 + +extern const ru_field_rec BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD; +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_MASK 0xff000000 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_WIDTH 8 +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_SHIFT 24 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_INPKT_INPKT_FIELD; +#define BBH_RX_PM_COUNTERS_INPKT_INPKT_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_INPKT_INPKT_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_INPKT_INPKT_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_THIRDFLOW_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_THIRDFLOW_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_THIRDFLOW_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_THIRDFLOW_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_SOPASOP_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_SOPASOP_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_SOPASOP_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_SOPASOP_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_TOOSHORT_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_TOOSHORT_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_TOOSHORT_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_TOOSHORT_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_TOOLONG_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_TOOLONG_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_TOOLONG_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_TOOLONG_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_CRCERROR_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_CRCERROR_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_CRCERROR_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_CRCERROR_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_ENCRYPTERROR_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_ENCRYPTERROR_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_ENCRYPTERROR_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_ENCRYPTERROR_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_DISPCONG_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_DISPCONG_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_DISPCONG_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_DISPCONG_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_NOSBPMSBN_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_NOSBPMSBN_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_NOSBPMSBN_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_NOSBPMSBN_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_NOSDMACD_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_NOSDMACD_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_NOSDMACD_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_NOSDMACD_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_INPLOAM_INPLOAM_FIELD; +#define BBH_RX_PM_COUNTERS_INPLOAM_INPLOAM_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_INPLOAM_INPLOAM_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_INPLOAM_INPLOAM_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_CRCERRORPLOAM_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_CRCERRORPLOAM_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_CRCERRORPLOAM_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_CRCERRORPLOAM_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_DISPCONGPLOAM_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_DISPCONGPLOAM_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_DISPCONGPLOAM_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_DISPCONGPLOAM_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_NOSBPMSBNPLOAM_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_NOSBPMSBNPLOAM_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_NOSBPMSBNPLOAM_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_NOSBPMSBNPLOAM_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_NOSDMACDPLOAM_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_NOSDMACDPLOAM_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_NOSDMACDPLOAM_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_NOSDMACDPLOAM_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_EPONTYPERROR_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_EPONTYPERROR_PMVALUE_FIELD_MASK 0xffffffff +#define BBH_RX_PM_COUNTERS_EPONTYPERROR_PMVALUE_FIELD_WIDTH 32 +#define BBH_RX_PM_COUNTERS_EPONTYPERROR_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_RUNTERROR_PMVALUE_FIELD; +#define BBH_RX_PM_COUNTERS_RUNTERROR_PMVALUE_FIELD_MASK 0x0000ffff +#define BBH_RX_PM_COUNTERS_RUNTERROR_PMVALUE_FIELD_WIDTH 16 +#define BBH_RX_PM_COUNTERS_RUNTERROR_PMVALUE_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_PM_COUNTERS_RUNTERROR_RESERVED0_FIELD; +#define BBH_RX_PM_COUNTERS_RUNTERROR_RESERVED0_FIELD_MASK 0xffff0000 +#define BBH_RX_PM_COUNTERS_RUNTERROR_RESERVED0_FIELD_WIDTH 16 +#define BBH_RX_PM_COUNTERS_RUNTERROR_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0LSB_INREASS_FIELD; +#define BBH_RX_DEBUG_CNTXTX0LSB_INREASS_FIELD_MASK 0x00000001 +#define BBH_RX_DEBUG_CNTXTX0LSB_INREASS_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_CNTXTX0LSB_INREASS_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0LSB_RESERVED0_FIELD; +#define BBH_RX_DEBUG_CNTXTX0LSB_RESERVED0_FIELD_MASK 0x000000fe +#define BBH_RX_DEBUG_CNTXTX0LSB_RESERVED0_FIELD_WIDTH 7 +#define BBH_RX_DEBUG_CNTXTX0LSB_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0LSB_FLOWID_FIELD; +#define BBH_RX_DEBUG_CNTXTX0LSB_FLOWID_FIELD_MASK 0x0000ff00 +#define BBH_RX_DEBUG_CNTXTX0LSB_FLOWID_FIELD_WIDTH 8 +#define BBH_RX_DEBUG_CNTXTX0LSB_FLOWID_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0LSB_CUROFFSET_FIELD; +#define BBH_RX_DEBUG_CNTXTX0LSB_CUROFFSET_FIELD_MASK 0x3fff0000 +#define BBH_RX_DEBUG_CNTXTX0LSB_CUROFFSET_FIELD_WIDTH 14 +#define BBH_RX_DEBUG_CNTXTX0LSB_CUROFFSET_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0LSB_RESERVED1_FIELD; +#define BBH_RX_DEBUG_CNTXTX0LSB_RESERVED1_FIELD_MASK 0xc0000000 +#define BBH_RX_DEBUG_CNTXTX0LSB_RESERVED1_FIELD_WIDTH 2 +#define BBH_RX_DEBUG_CNTXTX0LSB_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0MSB_CURBN_FIELD; +#define BBH_RX_DEBUG_CNTXTX0MSB_CURBN_FIELD_MASK 0x00001fff +#define BBH_RX_DEBUG_CNTXTX0MSB_CURBN_FIELD_WIDTH 13 +#define BBH_RX_DEBUG_CNTXTX0MSB_CURBN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0MSB_RESERVED0_FIELD; +#define BBH_RX_DEBUG_CNTXTX0MSB_RESERVED0_FIELD_MASK 0x0000e000 +#define BBH_RX_DEBUG_CNTXTX0MSB_RESERVED0_FIELD_WIDTH 3 +#define BBH_RX_DEBUG_CNTXTX0MSB_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0MSB_FIRSTBN_FIELD; +#define BBH_RX_DEBUG_CNTXTX0MSB_FIRSTBN_FIELD_MASK 0x7fff0000 +#define BBH_RX_DEBUG_CNTXTX0MSB_FIRSTBN_FIELD_WIDTH 15 +#define BBH_RX_DEBUG_CNTXTX0MSB_FIRSTBN_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0MSB_RESERVED1_FIELD; +#define BBH_RX_DEBUG_CNTXTX0MSB_RESERVED1_FIELD_MASK 0x80000000 +#define BBH_RX_DEBUG_CNTXTX0MSB_RESERVED1_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_CNTXTX0MSB_RESERVED1_FIELD_SHIFT 31 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1LSB_INREASS_FIELD; +#define BBH_RX_DEBUG_CNTXTX1LSB_INREASS_FIELD_MASK 0x00000001 +#define BBH_RX_DEBUG_CNTXTX1LSB_INREASS_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_CNTXTX1LSB_INREASS_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1LSB_RESERVED0_FIELD; +#define BBH_RX_DEBUG_CNTXTX1LSB_RESERVED0_FIELD_MASK 0x000000fe +#define BBH_RX_DEBUG_CNTXTX1LSB_RESERVED0_FIELD_WIDTH 7 +#define BBH_RX_DEBUG_CNTXTX1LSB_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1LSB_FLOWID_FIELD; +#define BBH_RX_DEBUG_CNTXTX1LSB_FLOWID_FIELD_MASK 0x0000ff00 +#define BBH_RX_DEBUG_CNTXTX1LSB_FLOWID_FIELD_WIDTH 8 +#define BBH_RX_DEBUG_CNTXTX1LSB_FLOWID_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1LSB_CUROFFSET_FIELD; +#define BBH_RX_DEBUG_CNTXTX1LSB_CUROFFSET_FIELD_MASK 0x3fff0000 +#define BBH_RX_DEBUG_CNTXTX1LSB_CUROFFSET_FIELD_WIDTH 14 +#define BBH_RX_DEBUG_CNTXTX1LSB_CUROFFSET_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1LSB_RESERVED1_FIELD; +#define BBH_RX_DEBUG_CNTXTX1LSB_RESERVED1_FIELD_MASK 0xc0000000 +#define BBH_RX_DEBUG_CNTXTX1LSB_RESERVED1_FIELD_WIDTH 2 +#define BBH_RX_DEBUG_CNTXTX1LSB_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1MSB_CURBN_FIELD; +#define BBH_RX_DEBUG_CNTXTX1MSB_CURBN_FIELD_MASK 0x00001fff +#define BBH_RX_DEBUG_CNTXTX1MSB_CURBN_FIELD_WIDTH 13 +#define BBH_RX_DEBUG_CNTXTX1MSB_CURBN_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1MSB_RESERVED0_FIELD; +#define BBH_RX_DEBUG_CNTXTX1MSB_RESERVED0_FIELD_MASK 0x0000e000 +#define BBH_RX_DEBUG_CNTXTX1MSB_RESERVED0_FIELD_WIDTH 3 +#define BBH_RX_DEBUG_CNTXTX1MSB_RESERVED0_FIELD_SHIFT 13 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1MSB_FIRSTBN_FIELD; +#define BBH_RX_DEBUG_CNTXTX1MSB_FIRSTBN_FIELD_MASK 0x7fff0000 +#define BBH_RX_DEBUG_CNTXTX1MSB_FIRSTBN_FIELD_WIDTH 15 +#define BBH_RX_DEBUG_CNTXTX1MSB_FIRSTBN_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1MSB_RESERVED1_FIELD; +#define BBH_RX_DEBUG_CNTXTX1MSB_RESERVED1_FIELD_MASK 0x80000000 +#define BBH_RX_DEBUG_CNTXTX1MSB_RESERVED1_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_CNTXTX1MSB_RESERVED1_FIELD_SHIFT 31 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0INGRESS_INREASS_FIELD; +#define BBH_RX_DEBUG_CNTXTX0INGRESS_INREASS_FIELD_MASK 0x00000001 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_INREASS_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_INREASS_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED0_FIELD; +#define BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED0_FIELD_MASK 0x0000000e +#define BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED0_FIELD_WIDTH 3 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0INGRESS_SOP_FIELD; +#define BBH_RX_DEBUG_CNTXTX0INGRESS_SOP_FIELD_MASK 0x00000010 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_SOP_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_SOP_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED1_FIELD; +#define BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED1_FIELD_MASK 0x00000020 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED1_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED1_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0INGRESS_PRIORITY_FIELD; +#define BBH_RX_DEBUG_CNTXTX0INGRESS_PRIORITY_FIELD_MASK 0x000000c0 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_PRIORITY_FIELD_WIDTH 2 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_PRIORITY_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0INGRESS_FLOWID_FIELD; +#define BBH_RX_DEBUG_CNTXTX0INGRESS_FLOWID_FIELD_MASK 0x0000ff00 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_FLOWID_FIELD_WIDTH 8 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_FLOWID_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0INGRESS_CUROFFSET_FIELD; +#define BBH_RX_DEBUG_CNTXTX0INGRESS_CUROFFSET_FIELD_MASK 0x3fff0000 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_CUROFFSET_FIELD_WIDTH 14 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_CUROFFSET_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED2_FIELD; +#define BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED2_FIELD_MASK 0xc0000000 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED2_FIELD_WIDTH 2 +#define BBH_RX_DEBUG_CNTXTX0INGRESS_RESERVED2_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1INGRESS_INREASS_FIELD; +#define BBH_RX_DEBUG_CNTXTX1INGRESS_INREASS_FIELD_MASK 0x00000001 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_INREASS_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_INREASS_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED0_FIELD; +#define BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED0_FIELD_MASK 0x0000000e +#define BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED0_FIELD_WIDTH 3 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1INGRESS_SOP_FIELD; +#define BBH_RX_DEBUG_CNTXTX1INGRESS_SOP_FIELD_MASK 0x00000010 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_SOP_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_SOP_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED1_FIELD; +#define BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED1_FIELD_MASK 0x00000020 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED1_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED1_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1INGRESS_PRIORITY_FIELD; +#define BBH_RX_DEBUG_CNTXTX1INGRESS_PRIORITY_FIELD_MASK 0x000000c0 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_PRIORITY_FIELD_WIDTH 2 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_PRIORITY_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1INGRESS_FLOWID_FIELD; +#define BBH_RX_DEBUG_CNTXTX1INGRESS_FLOWID_FIELD_MASK 0x0000ff00 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_FLOWID_FIELD_WIDTH 8 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_FLOWID_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1INGRESS_CUROFFSET_FIELD; +#define BBH_RX_DEBUG_CNTXTX1INGRESS_CUROFFSET_FIELD_MASK 0x3fff0000 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_CUROFFSET_FIELD_WIDTH 14 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_CUROFFSET_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED2_FIELD; +#define BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED2_FIELD_MASK 0xc0000000 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED2_FIELD_WIDTH 2 +#define BBH_RX_DEBUG_CNTXTX1INGRESS_RESERVED2_FIELD_SHIFT 30 + +extern const ru_field_rec BBH_RX_DEBUG_IBUW_UW_FIELD; +#define BBH_RX_DEBUG_IBUW_UW_FIELD_MASK 0x00000007 +#define BBH_RX_DEBUG_IBUW_UW_FIELD_WIDTH 3 +#define BBH_RX_DEBUG_IBUW_UW_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_IBUW_RESERVED0_FIELD; +#define BBH_RX_DEBUG_IBUW_RESERVED0_FIELD_MASK 0xfffffff8 +#define BBH_RX_DEBUG_IBUW_RESERVED0_FIELD_WIDTH 29 +#define BBH_RX_DEBUG_IBUW_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_RX_DEBUG_BBUW_UW_FIELD; +#define BBH_RX_DEBUG_BBUW_UW_FIELD_MASK 0x0000000f +#define BBH_RX_DEBUG_BBUW_UW_FIELD_WIDTH 4 +#define BBH_RX_DEBUG_BBUW_UW_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_BBUW_RESERVED0_FIELD; +#define BBH_RX_DEBUG_BBUW_RESERVED0_FIELD_MASK 0xfffffff0 +#define BBH_RX_DEBUG_BBUW_RESERVED0_FIELD_WIDTH 28 +#define BBH_RX_DEBUG_BBUW_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec BBH_RX_DEBUG_CFUW_UW_FIELD; +#define BBH_RX_DEBUG_CFUW_UW_FIELD_MASK 0x0000003f +#define BBH_RX_DEBUG_CFUW_UW_FIELD_WIDTH 6 +#define BBH_RX_DEBUG_CFUW_UW_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_CFUW_RESERVED0_FIELD; +#define BBH_RX_DEBUG_CFUW_RESERVED0_FIELD_MASK 0xffffffc0 +#define BBH_RX_DEBUG_CFUW_RESERVED0_FIELD_WIDTH 26 +#define BBH_RX_DEBUG_CFUW_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec BBH_RX_DEBUG_ACKCNT_SDMA_FIELD; +#define BBH_RX_DEBUG_ACKCNT_SDMA_FIELD_MASK 0x0000001f +#define BBH_RX_DEBUG_ACKCNT_SDMA_FIELD_WIDTH 5 +#define BBH_RX_DEBUG_ACKCNT_SDMA_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_ACKCNT_RESERVED0_FIELD; +#define BBH_RX_DEBUG_ACKCNT_RESERVED0_FIELD_MASK 0x000000e0 +#define BBH_RX_DEBUG_ACKCNT_RESERVED0_FIELD_WIDTH 3 +#define BBH_RX_DEBUG_ACKCNT_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_RX_DEBUG_ACKCNT_CONNECT_FIELD; +#define BBH_RX_DEBUG_ACKCNT_CONNECT_FIELD_MASK 0x00001f00 +#define BBH_RX_DEBUG_ACKCNT_CONNECT_FIELD_WIDTH 5 +#define BBH_RX_DEBUG_ACKCNT_CONNECT_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_DEBUG_ACKCNT_RESERVED1_FIELD; +#define BBH_RX_DEBUG_ACKCNT_RESERVED1_FIELD_MASK 0xffffe000 +#define BBH_RX_DEBUG_ACKCNT_RESERVED1_FIELD_WIDTH 19 +#define BBH_RX_DEBUG_ACKCNT_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec BBH_RX_DEBUG_COHERENCYCNT_NORMAL_FIELD; +#define BBH_RX_DEBUG_COHERENCYCNT_NORMAL_FIELD_MASK 0x0000001f +#define BBH_RX_DEBUG_COHERENCYCNT_NORMAL_FIELD_WIDTH 5 +#define BBH_RX_DEBUG_COHERENCYCNT_NORMAL_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_COHERENCYCNT_RESERVED0_FIELD; +#define BBH_RX_DEBUG_COHERENCYCNT_RESERVED0_FIELD_MASK 0x000000e0 +#define BBH_RX_DEBUG_COHERENCYCNT_RESERVED0_FIELD_WIDTH 3 +#define BBH_RX_DEBUG_COHERENCYCNT_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_RX_DEBUG_COHERENCYCNT_EXCLUSIVE_FIELD; +#define BBH_RX_DEBUG_COHERENCYCNT_EXCLUSIVE_FIELD_MASK 0x00001f00 +#define BBH_RX_DEBUG_COHERENCYCNT_EXCLUSIVE_FIELD_WIDTH 5 +#define BBH_RX_DEBUG_COHERENCYCNT_EXCLUSIVE_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_DEBUG_COHERENCYCNT_RESERVED1_FIELD; +#define BBH_RX_DEBUG_COHERENCYCNT_RESERVED1_FIELD_MASK 0xffffe000 +#define BBH_RX_DEBUG_COHERENCYCNT_RESERVED1_FIELD_WIDTH 19 +#define BBH_RX_DEBUG_COHERENCYCNT_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec BBH_RX_DEBUG_DBGVEC_DBGVEC_FIELD; +#define BBH_RX_DEBUG_DBGVEC_DBGVEC_FIELD_MASK 0x001fffff +#define BBH_RX_DEBUG_DBGVEC_DBGVEC_FIELD_WIDTH 21 +#define BBH_RX_DEBUG_DBGVEC_DBGVEC_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_DBGVEC_RESERVED0_FIELD; +#define BBH_RX_DEBUG_DBGVEC_RESERVED0_FIELD_MASK 0xffe00000 +#define BBH_RX_DEBUG_DBGVEC_RESERVED0_FIELD_WIDTH 11 +#define BBH_RX_DEBUG_DBGVEC_RESERVED0_FIELD_SHIFT 21 + +extern const ru_field_rec BBH_RX_DEBUG_UFUW_UW_FIELD; +#define BBH_RX_DEBUG_UFUW_UW_FIELD_MASK 0x00000007 +#define BBH_RX_DEBUG_UFUW_UW_FIELD_WIDTH 3 +#define BBH_RX_DEBUG_UFUW_UW_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_UFUW_RESERVED0_FIELD; +#define BBH_RX_DEBUG_UFUW_RESERVED0_FIELD_MASK 0xfffffff8 +#define BBH_RX_DEBUG_UFUW_RESERVED0_FIELD_WIDTH 29 +#define BBH_RX_DEBUG_UFUW_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_RX_DEBUG_CREDITCNT_NORMAL_FIELD; +#define BBH_RX_DEBUG_CREDITCNT_NORMAL_FIELD_MASK 0x0000001f +#define BBH_RX_DEBUG_CREDITCNT_NORMAL_FIELD_WIDTH 5 +#define BBH_RX_DEBUG_CREDITCNT_NORMAL_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_CREDITCNT_RESERVED0_FIELD; +#define BBH_RX_DEBUG_CREDITCNT_RESERVED0_FIELD_MASK 0x000000e0 +#define BBH_RX_DEBUG_CREDITCNT_RESERVED0_FIELD_WIDTH 3 +#define BBH_RX_DEBUG_CREDITCNT_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec BBH_RX_DEBUG_CREDITCNT_EXCLUSIVE_FIELD; +#define BBH_RX_DEBUG_CREDITCNT_EXCLUSIVE_FIELD_MASK 0x00001f00 +#define BBH_RX_DEBUG_CREDITCNT_EXCLUSIVE_FIELD_WIDTH 5 +#define BBH_RX_DEBUG_CREDITCNT_EXCLUSIVE_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_DEBUG_CREDITCNT_RESERVED1_FIELD; +#define BBH_RX_DEBUG_CREDITCNT_RESERVED1_FIELD_MASK 0xffffe000 +#define BBH_RX_DEBUG_CREDITCNT_RESERVED1_FIELD_WIDTH 19 +#define BBH_RX_DEBUG_CREDITCNT_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec BBH_RX_DEBUG_SDMACNT_UCD_FIELD; +#define BBH_RX_DEBUG_SDMACNT_UCD_FIELD_MASK 0x0000007f +#define BBH_RX_DEBUG_SDMACNT_UCD_FIELD_WIDTH 7 +#define BBH_RX_DEBUG_SDMACNT_UCD_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_SDMACNT_RESERVED0_FIELD; +#define BBH_RX_DEBUG_SDMACNT_RESERVED0_FIELD_MASK 0xffffff80 +#define BBH_RX_DEBUG_SDMACNT_RESERVED0_FIELD_WIDTH 25 +#define BBH_RX_DEBUG_SDMACNT_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec BBH_RX_DEBUG_CMFUW_UW_FIELD; +#define BBH_RX_DEBUG_CMFUW_UW_FIELD_MASK 0x00000007 +#define BBH_RX_DEBUG_CMFUW_UW_FIELD_WIDTH 3 +#define BBH_RX_DEBUG_CMFUW_UW_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_CMFUW_RESERVED0_FIELD; +#define BBH_RX_DEBUG_CMFUW_RESERVED0_FIELD_MASK 0xfffffff8 +#define BBH_RX_DEBUG_CMFUW_RESERVED0_FIELD_WIDTH 29 +#define BBH_RX_DEBUG_CMFUW_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec BBH_RX_DEBUG_SBNFIFO_BNENTRY_FIELD; +#define BBH_RX_DEBUG_SBNFIFO_BNENTRY_FIELD_MASK 0x00003fff +#define BBH_RX_DEBUG_SBNFIFO_BNENTRY_FIELD_WIDTH 14 +#define BBH_RX_DEBUG_SBNFIFO_BNENTRY_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_SBNFIFO_RESERVED0_FIELD; +#define BBH_RX_DEBUG_SBNFIFO_RESERVED0_FIELD_MASK 0x0000c000 +#define BBH_RX_DEBUG_SBNFIFO_RESERVED0_FIELD_WIDTH 2 +#define BBH_RX_DEBUG_SBNFIFO_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec BBH_RX_DEBUG_SBNFIFO_VALID_FIELD; +#define BBH_RX_DEBUG_SBNFIFO_VALID_FIELD_MASK 0x00010000 +#define BBH_RX_DEBUG_SBNFIFO_VALID_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_SBNFIFO_VALID_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_DEBUG_SBNFIFO_RESERVED1_FIELD; +#define BBH_RX_DEBUG_SBNFIFO_RESERVED1_FIELD_MASK 0xfffe0000 +#define BBH_RX_DEBUG_SBNFIFO_RESERVED1_FIELD_WIDTH 15 +#define BBH_RX_DEBUG_SBNFIFO_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec BBH_RX_DEBUG_CMDFIFO_CMDENTRY_FIELD; +#define BBH_RX_DEBUG_CMDFIFO_CMDENTRY_FIELD_MASK 0xffffffff +#define BBH_RX_DEBUG_CMDFIFO_CMDENTRY_FIELD_WIDTH 32 +#define BBH_RX_DEBUG_CMDFIFO_CMDENTRY_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_SBNRECYCLEFIFO_BNENTRY_FIELD; +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_BNENTRY_FIELD_MASK 0x00003fff +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_BNENTRY_FIELD_WIDTH 14 +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_BNENTRY_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_SBNRECYCLEFIFO_RESERVED0_FIELD; +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_RESERVED0_FIELD_MASK 0x0000c000 +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_RESERVED0_FIELD_WIDTH 2 +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec BBH_RX_DEBUG_SBNRECYCLEFIFO_VALID_FIELD; +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_VALID_FIELD_MASK 0x00010000 +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_VALID_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_VALID_FIELD_SHIFT 16 + +extern const ru_field_rec BBH_RX_DEBUG_SBNRECYCLEFIFO_RESERVED1_FIELD; +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_RESERVED1_FIELD_MASK 0xfffe0000 +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_RESERVED1_FIELD_WIDTH 15 +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec BBH_RX_DEBUG_COHERENCYCNT2_CDSENT_FIELD; +#define BBH_RX_DEBUG_COHERENCYCNT2_CDSENT_FIELD_MASK 0x0000007f +#define BBH_RX_DEBUG_COHERENCYCNT2_CDSENT_FIELD_WIDTH 7 +#define BBH_RX_DEBUG_COHERENCYCNT2_CDSENT_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_COHERENCYCNT2_RESERVED0_FIELD; +#define BBH_RX_DEBUG_COHERENCYCNT2_RESERVED0_FIELD_MASK 0x00000080 +#define BBH_RX_DEBUG_COHERENCYCNT2_RESERVED0_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_COHERENCYCNT2_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec BBH_RX_DEBUG_COHERENCYCNT2_ACKRECEIVED_FIELD; +#define BBH_RX_DEBUG_COHERENCYCNT2_ACKRECEIVED_FIELD_MASK 0x00007f00 +#define BBH_RX_DEBUG_COHERENCYCNT2_ACKRECEIVED_FIELD_WIDTH 7 +#define BBH_RX_DEBUG_COHERENCYCNT2_ACKRECEIVED_FIELD_SHIFT 8 + +extern const ru_field_rec BBH_RX_DEBUG_COHERENCYCNT2_RESERVED1_FIELD; +#define BBH_RX_DEBUG_COHERENCYCNT2_RESERVED1_FIELD_MASK 0xffff8000 +#define BBH_RX_DEBUG_COHERENCYCNT2_RESERVED1_FIELD_WIDTH 17 +#define BBH_RX_DEBUG_COHERENCYCNT2_RESERVED1_FIELD_SHIFT 15 + +extern const ru_field_rec BBH_RX_DEBUG_DROPSTATUS_DISPSTATUS_FIELD; +#define BBH_RX_DEBUG_DROPSTATUS_DISPSTATUS_FIELD_MASK 0x00000001 +#define BBH_RX_DEBUG_DROPSTATUS_DISPSTATUS_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_DROPSTATUS_DISPSTATUS_FIELD_SHIFT 0 + +extern const ru_field_rec BBH_RX_DEBUG_DROPSTATUS_SDMASTATUS_FIELD; +#define BBH_RX_DEBUG_DROPSTATUS_SDMASTATUS_FIELD_MASK 0x00000002 +#define BBH_RX_DEBUG_DROPSTATUS_SDMASTATUS_FIELD_WIDTH 1 +#define BBH_RX_DEBUG_DROPSTATUS_SDMASTATUS_FIELD_SHIFT 1 + +extern const ru_field_rec BBH_RX_DEBUG_DROPSTATUS_RESERVED0_FIELD; +#define BBH_RX_DEBUG_DROPSTATUS_RESERVED0_FIELD_MASK 0xfffffffc +#define BBH_RX_DEBUG_DROPSTATUS_RESERVED0_FIELD_WIDTH 30 +#define BBH_RX_DEBUG_DROPSTATUS_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec UBUS_MSTR_EN_EN_FIELD; +#define UBUS_MSTR_EN_EN_FIELD_MASK 0x00000001 +#define UBUS_MSTR_EN_EN_FIELD_WIDTH 1 +#define UBUS_MSTR_EN_EN_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_MSTR_EN_RESERVED0_FIELD; +#define UBUS_MSTR_EN_RESERVED0_FIELD_MASK 0xfffffffe +#define UBUS_MSTR_EN_RESERVED0_FIELD_WIDTH 31 +#define UBUS_MSTR_EN_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_MSTR_HYST_CTRL_CMD_SPACE_FIELD; +#define UBUS_MSTR_HYST_CTRL_CMD_SPACE_FIELD_MASK 0x000003ff +#define UBUS_MSTR_HYST_CTRL_CMD_SPACE_FIELD_WIDTH 10 +#define UBUS_MSTR_HYST_CTRL_CMD_SPACE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_MSTR_HYST_CTRL_RESERVED0_FIELD; +#define UBUS_MSTR_HYST_CTRL_RESERVED0_FIELD_MASK 0x0000fc00 +#define UBUS_MSTR_HYST_CTRL_RESERVED0_FIELD_WIDTH 6 +#define UBUS_MSTR_HYST_CTRL_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec UBUS_MSTR_HYST_CTRL_DATA_SPACE_FIELD; +#define UBUS_MSTR_HYST_CTRL_DATA_SPACE_FIELD_MASK 0x03ff0000 +#define UBUS_MSTR_HYST_CTRL_DATA_SPACE_FIELD_WIDTH 10 +#define UBUS_MSTR_HYST_CTRL_DATA_SPACE_FIELD_SHIFT 16 + +extern const ru_field_rec UBUS_MSTR_HYST_CTRL_RESERVED1_FIELD; +#define UBUS_MSTR_HYST_CTRL_RESERVED1_FIELD_MASK 0xfc000000 +#define UBUS_MSTR_HYST_CTRL_RESERVED1_FIELD_WIDTH 6 +#define UBUS_MSTR_HYST_CTRL_RESERVED1_FIELD_SHIFT 26 + +extern const ru_field_rec UBUS_MSTR_HP_HP_EN_FIELD; +#define UBUS_MSTR_HP_HP_EN_FIELD_MASK 0x00000001 +#define UBUS_MSTR_HP_HP_EN_FIELD_WIDTH 1 +#define UBUS_MSTR_HP_HP_EN_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_MSTR_HP_RESERVED0_FIELD; +#define UBUS_MSTR_HP_RESERVED0_FIELD_MASK 0xfffffffe +#define UBUS_MSTR_HP_RESERVED0_FIELD_WIDTH 31 +#define UBUS_MSTR_HP_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_SLV_VPB_BASE_BASE_FIELD; +#define UBUS_SLV_VPB_BASE_BASE_FIELD_MASK 0xffffffff +#define UBUS_SLV_VPB_BASE_BASE_FIELD_WIDTH 32 +#define UBUS_SLV_VPB_BASE_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_VPB_MASK_MASK_FIELD; +#define UBUS_SLV_VPB_MASK_MASK_FIELD_MASK 0xffffffff +#define UBUS_SLV_VPB_MASK_MASK_FIELD_WIDTH 32 +#define UBUS_SLV_VPB_MASK_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_APB_BASE_BASE_FIELD; +#define UBUS_SLV_APB_BASE_BASE_FIELD_MASK 0xffffffff +#define UBUS_SLV_APB_BASE_BASE_FIELD_WIDTH 32 +#define UBUS_SLV_APB_BASE_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_APB_MASK_MASK_FIELD; +#define UBUS_SLV_APB_MASK_MASK_FIELD_MASK 0xffffffff +#define UBUS_SLV_APB_MASK_MASK_FIELD_WIDTH 32 +#define UBUS_SLV_APB_MASK_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_DEVICE_0_BASE_BASE_FIELD; +#define UBUS_SLV_DEVICE_0_BASE_BASE_FIELD_MASK 0xffffffff +#define UBUS_SLV_DEVICE_0_BASE_BASE_FIELD_WIDTH 32 +#define UBUS_SLV_DEVICE_0_BASE_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_DEVICE_0_MASK_MASK_FIELD; +#define UBUS_SLV_DEVICE_0_MASK_MASK_FIELD_MASK 0xffffffff +#define UBUS_SLV_DEVICE_0_MASK_MASK_FIELD_WIDTH 32 +#define UBUS_SLV_DEVICE_0_MASK_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_DEVICE_1_BASE_BASE_FIELD; +#define UBUS_SLV_DEVICE_1_BASE_BASE_FIELD_MASK 0xffffffff +#define UBUS_SLV_DEVICE_1_BASE_BASE_FIELD_WIDTH 32 +#define UBUS_SLV_DEVICE_1_BASE_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_DEVICE_1_MASK_MASK_FIELD; +#define UBUS_SLV_DEVICE_1_MASK_MASK_FIELD_MASK 0xffffffff +#define UBUS_SLV_DEVICE_1_MASK_MASK_FIELD_WIDTH 32 +#define UBUS_SLV_DEVICE_1_MASK_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_DEVICE_2_BASE_BASE_FIELD; +#define UBUS_SLV_DEVICE_2_BASE_BASE_FIELD_MASK 0xffffffff +#define UBUS_SLV_DEVICE_2_BASE_BASE_FIELD_WIDTH 32 +#define UBUS_SLV_DEVICE_2_BASE_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_DEVICE_2_MASK_MASK_FIELD; +#define UBUS_SLV_DEVICE_2_MASK_MASK_FIELD_MASK 0xffffffff +#define UBUS_SLV_DEVICE_2_MASK_MASK_FIELD_WIDTH 32 +#define UBUS_SLV_DEVICE_2_MASK_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_RNR_INTR_CTRL_ISR_IST_FIELD; +#define UBUS_SLV_RNR_INTR_CTRL_ISR_IST_FIELD_MASK 0xffffffff +#define UBUS_SLV_RNR_INTR_CTRL_ISR_IST_FIELD_WIDTH 32 +#define UBUS_SLV_RNR_INTR_CTRL_ISR_IST_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_RNR_INTR_CTRL_ISM_ISM_FIELD; +#define UBUS_SLV_RNR_INTR_CTRL_ISM_ISM_FIELD_MASK 0xffffffff +#define UBUS_SLV_RNR_INTR_CTRL_ISM_ISM_FIELD_WIDTH 32 +#define UBUS_SLV_RNR_INTR_CTRL_ISM_ISM_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_RNR_INTR_CTRL_IER_IEM_FIELD; +#define UBUS_SLV_RNR_INTR_CTRL_IER_IEM_FIELD_MASK 0xffffffff +#define UBUS_SLV_RNR_INTR_CTRL_IER_IEM_FIELD_WIDTH 32 +#define UBUS_SLV_RNR_INTR_CTRL_IER_IEM_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_RNR_INTR_CTRL_ITR_IST_FIELD; +#define UBUS_SLV_RNR_INTR_CTRL_ITR_IST_FIELD_MASK 0xffffffff +#define UBUS_SLV_RNR_INTR_CTRL_ITR_IST_FIELD_WIDTH 32 +#define UBUS_SLV_RNR_INTR_CTRL_ITR_IST_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_PROFILING_CFG_COUNTER_ENABLE_FIELD; +#define UBUS_SLV_PROFILING_CFG_COUNTER_ENABLE_FIELD_MASK 0x00000001 +#define UBUS_SLV_PROFILING_CFG_COUNTER_ENABLE_FIELD_WIDTH 1 +#define UBUS_SLV_PROFILING_CFG_COUNTER_ENABLE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_PROFILING_CFG_PROFILING_START_FIELD; +#define UBUS_SLV_PROFILING_CFG_PROFILING_START_FIELD_MASK 0x00000002 +#define UBUS_SLV_PROFILING_CFG_PROFILING_START_FIELD_WIDTH 1 +#define UBUS_SLV_PROFILING_CFG_PROFILING_START_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_SLV_PROFILING_CFG_MANUAL_STOP_MODE_FIELD; +#define UBUS_SLV_PROFILING_CFG_MANUAL_STOP_MODE_FIELD_MASK 0x00000004 +#define UBUS_SLV_PROFILING_CFG_MANUAL_STOP_MODE_FIELD_WIDTH 1 +#define UBUS_SLV_PROFILING_CFG_MANUAL_STOP_MODE_FIELD_SHIFT 2 + +extern const ru_field_rec UBUS_SLV_PROFILING_CFG_DO_MANUAL_STOP_FIELD; +#define UBUS_SLV_PROFILING_CFG_DO_MANUAL_STOP_FIELD_MASK 0x00000008 +#define UBUS_SLV_PROFILING_CFG_DO_MANUAL_STOP_FIELD_WIDTH 1 +#define UBUS_SLV_PROFILING_CFG_DO_MANUAL_STOP_FIELD_SHIFT 3 + +extern const ru_field_rec UBUS_SLV_PROFILING_CFG_RESERVED0_FIELD; +#define UBUS_SLV_PROFILING_CFG_RESERVED0_FIELD_MASK 0xfffffff0 +#define UBUS_SLV_PROFILING_CFG_RESERVED0_FIELD_WIDTH 28 +#define UBUS_SLV_PROFILING_CFG_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec UBUS_SLV_PROFILING_STATUS_PROFILING_ON_FIELD; +#define UBUS_SLV_PROFILING_STATUS_PROFILING_ON_FIELD_MASK 0x00000001 +#define UBUS_SLV_PROFILING_STATUS_PROFILING_ON_FIELD_WIDTH 1 +#define UBUS_SLV_PROFILING_STATUS_PROFILING_ON_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_PROFILING_STATUS_CYCLES_COUNTER_FIELD; +#define UBUS_SLV_PROFILING_STATUS_CYCLES_COUNTER_FIELD_MASK 0xfffffffe +#define UBUS_SLV_PROFILING_STATUS_CYCLES_COUNTER_FIELD_WIDTH 31 +#define UBUS_SLV_PROFILING_STATUS_CYCLES_COUNTER_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_SLV_PROFILING_COUNTER_VAL_FIELD; +#define UBUS_SLV_PROFILING_COUNTER_VAL_FIELD_MASK 0xffffffff +#define UBUS_SLV_PROFILING_COUNTER_VAL_FIELD_WIDTH 32 +#define UBUS_SLV_PROFILING_COUNTER_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_PROFILING_START_VALUE_VAL_FIELD; +#define UBUS_SLV_PROFILING_START_VALUE_VAL_FIELD_MASK 0xffffffff +#define UBUS_SLV_PROFILING_START_VALUE_VAL_FIELD_WIDTH 32 +#define UBUS_SLV_PROFILING_START_VALUE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_PROFILING_STOP_VALUE_VAL_FIELD; +#define UBUS_SLV_PROFILING_STOP_VALUE_VAL_FIELD_MASK 0xffffffff +#define UBUS_SLV_PROFILING_STOP_VALUE_VAL_FIELD_WIDTH 32 +#define UBUS_SLV_PROFILING_STOP_VALUE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_PROFILING_CYCLE_NUM_PROFILING_CYCLES_NUM_FIELD; +#define UBUS_SLV_PROFILING_CYCLE_NUM_PROFILING_CYCLES_NUM_FIELD_MASK 0xffffffff +#define UBUS_SLV_PROFILING_CYCLE_NUM_PROFILING_CYCLES_NUM_FIELD_WIDTH 32 +#define UBUS_SLV_PROFILING_CYCLE_NUM_PROFILING_CYCLES_NUM_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_RX_ACT_EN_FIELD; +#define UBUS_SLV_LED_CNTRL_RX_ACT_EN_FIELD_MASK 0x00000001 +#define UBUS_SLV_LED_CNTRL_RX_ACT_EN_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_RX_ACT_EN_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_TX_ACT_EN_FIELD; +#define UBUS_SLV_LED_CNTRL_TX_ACT_EN_FIELD_MASK 0x00000002 +#define UBUS_SLV_LED_CNTRL_TX_ACT_EN_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_TX_ACT_EN_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_SPDLNK_LED0_ACT_SEL_FIELD; +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED0_ACT_SEL_FIELD_MASK 0x00000004 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED0_ACT_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED0_ACT_SEL_FIELD_SHIFT 2 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_SPDLNK_LED1_ACT_SEL_FIELD; +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED1_ACT_SEL_FIELD_MASK 0x00000008 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED1_ACT_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED1_ACT_SEL_FIELD_SHIFT 3 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_SPDLNK_LED2_ACT_SEL_FIELD; +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED2_ACT_SEL_FIELD_MASK 0x00000010 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED2_ACT_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED2_ACT_SEL_FIELD_SHIFT 4 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_ACT_LED_ACT_SEL_FIELD; +#define UBUS_SLV_LED_CNTRL_ACT_LED_ACT_SEL_FIELD_MASK 0x00000020 +#define UBUS_SLV_LED_CNTRL_ACT_LED_ACT_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_ACT_LED_ACT_SEL_FIELD_SHIFT 5 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_SPDLNK_LED0_ACT_POL_SEL_FIELD; +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED0_ACT_POL_SEL_FIELD_MASK 0x00000040 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED0_ACT_POL_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED0_ACT_POL_SEL_FIELD_SHIFT 6 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_SPDLNK_LED1_ACT_POL_SEL_FIELD; +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED1_ACT_POL_SEL_FIELD_MASK 0x00000080 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED1_ACT_POL_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED1_ACT_POL_SEL_FIELD_SHIFT 7 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_SPDLNK_LED2_ACT_POL_SEL_FIELD; +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED2_ACT_POL_SEL_FIELD_MASK 0x00000100 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED2_ACT_POL_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_SPDLNK_LED2_ACT_POL_SEL_FIELD_SHIFT 8 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_ACT_LED_POL_SEL_FIELD; +#define UBUS_SLV_LED_CNTRL_ACT_LED_POL_SEL_FIELD_MASK 0x00000200 +#define UBUS_SLV_LED_CNTRL_ACT_LED_POL_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_ACT_LED_POL_SEL_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_LED_SPD_OVRD_FIELD; +#define UBUS_SLV_LED_CNTRL_LED_SPD_OVRD_FIELD_MASK 0x00001c00 +#define UBUS_SLV_LED_CNTRL_LED_SPD_OVRD_FIELD_WIDTH 3 +#define UBUS_SLV_LED_CNTRL_LED_SPD_OVRD_FIELD_SHIFT 10 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_LNK_STATUS_OVRD_FIELD; +#define UBUS_SLV_LED_CNTRL_LNK_STATUS_OVRD_FIELD_MASK 0x00002000 +#define UBUS_SLV_LED_CNTRL_LNK_STATUS_OVRD_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_LNK_STATUS_OVRD_FIELD_SHIFT 13 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_SPD_OVRD_EN_FIELD; +#define UBUS_SLV_LED_CNTRL_SPD_OVRD_EN_FIELD_MASK 0x00004000 +#define UBUS_SLV_LED_CNTRL_SPD_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_SPD_OVRD_EN_FIELD_SHIFT 14 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_LNK_OVRD_EN_FIELD; +#define UBUS_SLV_LED_CNTRL_LNK_OVRD_EN_FIELD_MASK 0x00008000 +#define UBUS_SLV_LED_CNTRL_LNK_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV_LED_CNTRL_LNK_OVRD_EN_FIELD_SHIFT 15 + +extern const ru_field_rec UBUS_SLV_LED_CNTRL_R1_FIELD; +#define UBUS_SLV_LED_CNTRL_R1_FIELD_MASK 0xffff0000 +#define UBUS_SLV_LED_CNTRL_R1_FIELD_WIDTH 16 +#define UBUS_SLV_LED_CNTRL_R1_FIELD_SHIFT 16 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_NO_LINK_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_NO_LINK_ENCODE_FIELD_MASK 0x00000007 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_NO_LINK_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_NO_LINK_ENCODE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_FIELD_MASK 0x00000038 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_10M_ENCODE_FIELD_SHIFT 3 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_FIELD_MASK 0x000001c0 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_100M_ENCODE_FIELD_SHIFT 6 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_FIELD_MASK 0x00000e00 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_1000M_ENCODE_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_FIELD_MASK 0x00007000 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_2500M_ENCODE_FIELD_SHIFT 12 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_FIELD_MASK 0x00038000 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_SEL_10G_ENCODE_FIELD_SHIFT 15 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_RESERVED0_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_RESERVED0_FIELD_MASK 0x001c0000 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_RESERVED0_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_RESERVED1_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_RESERVED1_FIELD_MASK 0x00e00000 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_RESERVED1_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_RESERVED1_FIELD_SHIFT 21 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_R1_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_R1_FIELD_MASK 0xff000000 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_R1_FIELD_WIDTH 8 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_R1_FIELD_SHIFT 24 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_NO_LINK_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_NO_LINK_ENCODE_FIELD_MASK 0x00000007 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_NO_LINK_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_NO_LINK_ENCODE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M10_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M10_ENCODE_FIELD_MASK 0x00000038 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M10_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M10_ENCODE_FIELD_SHIFT 3 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M100_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M100_ENCODE_FIELD_MASK 0x000001c0 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M100_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M100_ENCODE_FIELD_SHIFT 6 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M1000_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M1000_ENCODE_FIELD_MASK 0x00000e00 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M1000_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M1000_ENCODE_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M2500_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M2500_ENCODE_FIELD_MASK 0x00007000 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M2500_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M2500_ENCODE_FIELD_SHIFT 12 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M10G_ENCODE_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M10G_ENCODE_FIELD_MASK 0x00038000 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M10G_ENCODE_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_M10G_ENCODE_FIELD_SHIFT 15 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_RESERVED0_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_RESERVED0_FIELD_MASK 0x001c0000 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_RESERVED0_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_RESERVED1_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_RESERVED1_FIELD_MASK 0x00e00000 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_RESERVED1_FIELD_WIDTH 3 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_RESERVED1_FIELD_SHIFT 21 + +extern const ru_field_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_R1_FIELD; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_R1_FIELD_MASK 0xff000000 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_R1_FIELD_WIDTH 8 +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_R1_FIELD_SHIFT 24 + +extern const ru_field_rec UBUS_SLV_LED_BLINK_RATE_CNTRL_LED_OFF_TIME_FIELD; +#define UBUS_SLV_LED_BLINK_RATE_CNTRL_LED_OFF_TIME_FIELD_MASK 0x0000ffff +#define UBUS_SLV_LED_BLINK_RATE_CNTRL_LED_OFF_TIME_FIELD_WIDTH 16 +#define UBUS_SLV_LED_BLINK_RATE_CNTRL_LED_OFF_TIME_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_LED_BLINK_RATE_CNTRL_LED_ON_TIME_FIELD; +#define UBUS_SLV_LED_BLINK_RATE_CNTRL_LED_ON_TIME_FIELD_MASK 0xffff0000 +#define UBUS_SLV_LED_BLINK_RATE_CNTRL_LED_ON_TIME_FIELD_WIDTH 16 +#define UBUS_SLV_LED_BLINK_RATE_CNTRL_LED_ON_TIME_FIELD_SHIFT 16 + +extern const ru_field_rec UBUS_SLV_LED_PWM_CNTRL_PWM_ENABLE_FIELD; +#define UBUS_SLV_LED_PWM_CNTRL_PWM_ENABLE_FIELD_MASK 0x00000001 +#define UBUS_SLV_LED_PWM_CNTRL_PWM_ENABLE_FIELD_WIDTH 1 +#define UBUS_SLV_LED_PWM_CNTRL_PWM_ENABLE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_LED_PWM_CNTRL_PWM_POLARITY_FIELD; +#define UBUS_SLV_LED_PWM_CNTRL_PWM_POLARITY_FIELD_MASK 0x00000002 +#define UBUS_SLV_LED_PWM_CNTRL_PWM_POLARITY_FIELD_WIDTH 1 +#define UBUS_SLV_LED_PWM_CNTRL_PWM_POLARITY_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_SLV_LED_PWM_CNTRL_R1_FIELD; +#define UBUS_SLV_LED_PWM_CNTRL_R1_FIELD_MASK 0xfffffffc +#define UBUS_SLV_LED_PWM_CNTRL_R1_FIELD_WIDTH 30 +#define UBUS_SLV_LED_PWM_CNTRL_R1_FIELD_SHIFT 2 + +extern const ru_field_rec UBUS_SLV_LED_INTENSITY_CNTRL_LED_ON_HIGH_FIELD; +#define UBUS_SLV_LED_INTENSITY_CNTRL_LED_ON_HIGH_FIELD_MASK 0x0000ffff +#define UBUS_SLV_LED_INTENSITY_CNTRL_LED_ON_HIGH_FIELD_WIDTH 16 +#define UBUS_SLV_LED_INTENSITY_CNTRL_LED_ON_HIGH_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_LED_INTENSITY_CNTRL_LED_ON_LOW_FIELD; +#define UBUS_SLV_LED_INTENSITY_CNTRL_LED_ON_LOW_FIELD_MASK 0xffff0000 +#define UBUS_SLV_LED_INTENSITY_CNTRL_LED_ON_LOW_FIELD_WIDTH 16 +#define UBUS_SLV_LED_INTENSITY_CNTRL_LED_ON_LOW_FIELD_SHIFT 16 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_CNTRL_PORT_EN_FIELD; +#define UBUS_SLV_AGGREGATE_LED_CNTRL_PORT_EN_FIELD_MASK 0x0000ffff +#define UBUS_SLV_AGGREGATE_LED_CNTRL_PORT_EN_FIELD_WIDTH 16 +#define UBUS_SLV_AGGREGATE_LED_CNTRL_PORT_EN_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_CNTRL_ACT_SEL_FIELD; +#define UBUS_SLV_AGGREGATE_LED_CNTRL_ACT_SEL_FIELD_MASK 0x00010000 +#define UBUS_SLV_AGGREGATE_LED_CNTRL_ACT_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_AGGREGATE_LED_CNTRL_ACT_SEL_FIELD_SHIFT 16 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_CNTRL_ACT_POL_SEL_FIELD; +#define UBUS_SLV_AGGREGATE_LED_CNTRL_ACT_POL_SEL_FIELD_MASK 0x00020000 +#define UBUS_SLV_AGGREGATE_LED_CNTRL_ACT_POL_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_AGGREGATE_LED_CNTRL_ACT_POL_SEL_FIELD_SHIFT 17 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_CNTRL_LNK_POL_SEL_FIELD; +#define UBUS_SLV_AGGREGATE_LED_CNTRL_LNK_POL_SEL_FIELD_MASK 0x00040000 +#define UBUS_SLV_AGGREGATE_LED_CNTRL_LNK_POL_SEL_FIELD_WIDTH 1 +#define UBUS_SLV_AGGREGATE_LED_CNTRL_LNK_POL_SEL_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_CNTRL_R1_FIELD; +#define UBUS_SLV_AGGREGATE_LED_CNTRL_R1_FIELD_MASK 0xfff80000 +#define UBUS_SLV_AGGREGATE_LED_CNTRL_R1_FIELD_WIDTH 13 +#define UBUS_SLV_AGGREGATE_LED_CNTRL_R1_FIELD_SHIFT 19 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_BLINK_RATE_CNTRL_LED_OFF_TIME_FIELD; +#define UBUS_SLV_AGGREGATE_LED_BLINK_RATE_CNTRL_LED_OFF_TIME_FIELD_MASK 0x0000ffff +#define UBUS_SLV_AGGREGATE_LED_BLINK_RATE_CNTRL_LED_OFF_TIME_FIELD_WIDTH 16 +#define UBUS_SLV_AGGREGATE_LED_BLINK_RATE_CNTRL_LED_OFF_TIME_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_BLINK_RATE_CNTRL_LED_ON_TIME_FIELD; +#define UBUS_SLV_AGGREGATE_LED_BLINK_RATE_CNTRL_LED_ON_TIME_FIELD_MASK 0xffff0000 +#define UBUS_SLV_AGGREGATE_LED_BLINK_RATE_CNTRL_LED_ON_TIME_FIELD_WIDTH 16 +#define UBUS_SLV_AGGREGATE_LED_BLINK_RATE_CNTRL_LED_ON_TIME_FIELD_SHIFT 16 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_PWM_ENABLE_FIELD; +#define UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_PWM_ENABLE_FIELD_MASK 0x00000001 +#define UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_PWM_ENABLE_FIELD_WIDTH 1 +#define UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_PWM_ENABLE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_PWM_POLARITY_FIELD; +#define UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_PWM_POLARITY_FIELD_MASK 0x00000002 +#define UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_PWM_POLARITY_FIELD_WIDTH 1 +#define UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_PWM_POLARITY_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_R1_FIELD; +#define UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_R1_FIELD_MASK 0xfffffffc +#define UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_R1_FIELD_WIDTH 30 +#define UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_R1_FIELD_SHIFT 2 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_INTENSITY_CNTRL_LED_ON_HIGH_FIELD; +#define UBUS_SLV_AGGREGATE_LED_INTENSITY_CNTRL_LED_ON_HIGH_FIELD_MASK 0x0000ffff +#define UBUS_SLV_AGGREGATE_LED_INTENSITY_CNTRL_LED_ON_HIGH_FIELD_WIDTH 16 +#define UBUS_SLV_AGGREGATE_LED_INTENSITY_CNTRL_LED_ON_HIGH_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_AGGREGATE_LED_INTENSITY_CNTRL_LED_ON_LOW_FIELD; +#define UBUS_SLV_AGGREGATE_LED_INTENSITY_CNTRL_LED_ON_LOW_FIELD_MASK 0xffff0000 +#define UBUS_SLV_AGGREGATE_LED_INTENSITY_CNTRL_LED_ON_LOW_FIELD_WIDTH 16 +#define UBUS_SLV_AGGREGATE_LED_INTENSITY_CNTRL_LED_ON_LOW_FIELD_SHIFT 16 + +extern const ru_field_rec UBUS_SLV_SW_INIT_CNTRL_SW_INIT_FIELD; +#define UBUS_SLV_SW_INIT_CNTRL_SW_INIT_FIELD_MASK 0x00000001 +#define UBUS_SLV_SW_INIT_CNTRL_SW_INIT_FIELD_WIDTH 1 +#define UBUS_SLV_SW_INIT_CNTRL_SW_INIT_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV_SW_INIT_CNTRL_RESERVED0_FIELD; +#define UBUS_SLV_SW_INIT_CNTRL_RESERVED0_FIELD_MASK 0xfffffffe +#define UBUS_SLV_SW_INIT_CNTRL_RESERVED0_FIELD_WIDTH 31 +#define UBUS_SLV_SW_INIT_CNTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_SLV__CNTRL_RGMII_MODE_EN_FIELD; +#define UBUS_SLV__CNTRL_RGMII_MODE_EN_FIELD_MASK 0x00000001 +#define UBUS_SLV__CNTRL_RGMII_MODE_EN_FIELD_WIDTH 1 +#define UBUS_SLV__CNTRL_RGMII_MODE_EN_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__CNTRL_ID_MODE_DIS_FIELD; +#define UBUS_SLV__CNTRL_ID_MODE_DIS_FIELD_MASK 0x00000002 +#define UBUS_SLV__CNTRL_ID_MODE_DIS_FIELD_WIDTH 1 +#define UBUS_SLV__CNTRL_ID_MODE_DIS_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_SLV__CNTRL_PORT_MODE_FIELD; +#define UBUS_SLV__CNTRL_PORT_MODE_FIELD_MASK 0x0000001c +#define UBUS_SLV__CNTRL_PORT_MODE_FIELD_WIDTH 3 +#define UBUS_SLV__CNTRL_PORT_MODE_FIELD_SHIFT 2 + +extern const ru_field_rec UBUS_SLV__CNTRL_RVMII_REF_SEL_FIELD; +#define UBUS_SLV__CNTRL_RVMII_REF_SEL_FIELD_MASK 0x00000020 +#define UBUS_SLV__CNTRL_RVMII_REF_SEL_FIELD_WIDTH 1 +#define UBUS_SLV__CNTRL_RVMII_REF_SEL_FIELD_SHIFT 5 + +extern const ru_field_rec UBUS_SLV__CNTRL_RX_PAUSE_EN_FIELD; +#define UBUS_SLV__CNTRL_RX_PAUSE_EN_FIELD_MASK 0x00000040 +#define UBUS_SLV__CNTRL_RX_PAUSE_EN_FIELD_WIDTH 1 +#define UBUS_SLV__CNTRL_RX_PAUSE_EN_FIELD_SHIFT 6 + +extern const ru_field_rec UBUS_SLV__CNTRL_TX_PAUSE_EN_FIELD; +#define UBUS_SLV__CNTRL_TX_PAUSE_EN_FIELD_MASK 0x00000080 +#define UBUS_SLV__CNTRL_TX_PAUSE_EN_FIELD_WIDTH 1 +#define UBUS_SLV__CNTRL_TX_PAUSE_EN_FIELD_SHIFT 7 + +extern const ru_field_rec UBUS_SLV__CNTRL_TX_CLK_STOP_EN_FIELD; +#define UBUS_SLV__CNTRL_TX_CLK_STOP_EN_FIELD_MASK 0x00000100 +#define UBUS_SLV__CNTRL_TX_CLK_STOP_EN_FIELD_WIDTH 1 +#define UBUS_SLV__CNTRL_TX_CLK_STOP_EN_FIELD_SHIFT 8 + +extern const ru_field_rec UBUS_SLV__CNTRL_LPI_COUNT_FIELD; +#define UBUS_SLV__CNTRL_LPI_COUNT_FIELD_MASK 0x00003e00 +#define UBUS_SLV__CNTRL_LPI_COUNT_FIELD_WIDTH 5 +#define UBUS_SLV__CNTRL_LPI_COUNT_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV__CNTRL_RX_ERR_MASK_FIELD; +#define UBUS_SLV__CNTRL_RX_ERR_MASK_FIELD_MASK 0x00004000 +#define UBUS_SLV__CNTRL_RX_ERR_MASK_FIELD_WIDTH 1 +#define UBUS_SLV__CNTRL_RX_ERR_MASK_FIELD_SHIFT 14 + +extern const ru_field_rec UBUS_SLV__CNTRL_COL_CRS_MASK_FIELD; +#define UBUS_SLV__CNTRL_COL_CRS_MASK_FIELD_MASK 0x00008000 +#define UBUS_SLV__CNTRL_COL_CRS_MASK_FIELD_WIDTH 1 +#define UBUS_SLV__CNTRL_COL_CRS_MASK_FIELD_SHIFT 15 + +extern const ru_field_rec UBUS_SLV__CNTRL_PSEUDO_HD_MODE_EN_FIELD; +#define UBUS_SLV__CNTRL_PSEUDO_HD_MODE_EN_FIELD_MASK 0x00010000 +#define UBUS_SLV__CNTRL_PSEUDO_HD_MODE_EN_FIELD_WIDTH 1 +#define UBUS_SLV__CNTRL_PSEUDO_HD_MODE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec UBUS_SLV__CNTRL_RESERVED0_FIELD; +#define UBUS_SLV__CNTRL_RESERVED0_FIELD_MASK 0xfffe0000 +#define UBUS_SLV__CNTRL_RESERVED0_FIELD_WIDTH 15 +#define UBUS_SLV__CNTRL_RESERVED0_FIELD_SHIFT 17 + +extern const ru_field_rec UBUS_SLV__IB_STATUS_SPEED_DECODE_FIELD; +#define UBUS_SLV__IB_STATUS_SPEED_DECODE_FIELD_MASK 0x00000003 +#define UBUS_SLV__IB_STATUS_SPEED_DECODE_FIELD_WIDTH 2 +#define UBUS_SLV__IB_STATUS_SPEED_DECODE_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__IB_STATUS_DUPLEX_DECODE_FIELD; +#define UBUS_SLV__IB_STATUS_DUPLEX_DECODE_FIELD_MASK 0x00000004 +#define UBUS_SLV__IB_STATUS_DUPLEX_DECODE_FIELD_WIDTH 1 +#define UBUS_SLV__IB_STATUS_DUPLEX_DECODE_FIELD_SHIFT 2 + +extern const ru_field_rec UBUS_SLV__IB_STATUS_LINK_DECODE_FIELD; +#define UBUS_SLV__IB_STATUS_LINK_DECODE_FIELD_MASK 0x00000008 +#define UBUS_SLV__IB_STATUS_LINK_DECODE_FIELD_WIDTH 1 +#define UBUS_SLV__IB_STATUS_LINK_DECODE_FIELD_SHIFT 3 + +extern const ru_field_rec UBUS_SLV__IB_STATUS_IB_STATUS_OVRD_FIELD; +#define UBUS_SLV__IB_STATUS_IB_STATUS_OVRD_FIELD_MASK 0x00000010 +#define UBUS_SLV__IB_STATUS_IB_STATUS_OVRD_FIELD_WIDTH 1 +#define UBUS_SLV__IB_STATUS_IB_STATUS_OVRD_FIELD_SHIFT 4 + +extern const ru_field_rec UBUS_SLV__IB_STATUS_RESERVED0_FIELD; +#define UBUS_SLV__IB_STATUS_RESERVED0_FIELD_MASK 0xffffffe0 +#define UBUS_SLV__IB_STATUS_RESERVED0_FIELD_WIDTH 27 +#define UBUS_SLV__IB_STATUS_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec UBUS_SLV__RX_CLOCK_DELAY_CNTRL_CTRI_FIELD; +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_CTRI_FIELD_MASK 0x00000003 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_CTRI_FIELD_WIDTH 2 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_CTRI_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DRNG_FIELD; +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DRNG_FIELD_MASK 0x0000000c +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DRNG_FIELD_WIDTH 2 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DRNG_FIELD_SHIFT 2 + +extern const ru_field_rec UBUS_SLV__RX_CLOCK_DELAY_CNTRL_IDDQ_FIELD; +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_IDDQ_FIELD_MASK 0x00000010 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_IDDQ_FIELD_WIDTH 1 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_IDDQ_FIELD_SHIFT 4 + +extern const ru_field_rec UBUS_SLV__RX_CLOCK_DELAY_CNTRL_BYPASS_FIELD; +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_BYPASS_FIELD_MASK 0x00000020 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_BYPASS_FIELD_WIDTH 1 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_BYPASS_FIELD_SHIFT 5 + +extern const ru_field_rec UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DLY_SEL_FIELD; +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DLY_SEL_FIELD_MASK 0x00000040 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DLY_SEL_FIELD_WIDTH 1 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DLY_SEL_FIELD_SHIFT 6 + +extern const ru_field_rec UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DLY_OVERRIDE_FIELD; +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DLY_OVERRIDE_FIELD_MASK 0x00000080 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DLY_OVERRIDE_FIELD_WIDTH 1 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_DLY_OVERRIDE_FIELD_SHIFT 7 + +extern const ru_field_rec UBUS_SLV__RX_CLOCK_DELAY_CNTRL_RESET_FIELD; +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_RESET_FIELD_MASK 0x00000100 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_RESET_FIELD_WIDTH 1 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_RESET_FIELD_SHIFT 8 + +extern const ru_field_rec UBUS_SLV__RX_CLOCK_DELAY_CNTRL_RESERVED0_FIELD; +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_RESERVED0_FIELD_MASK 0xfffffe00 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_RESERVED0_FIELD_WIDTH 23 +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_EXPECTED_DATA_0_FIELD; +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_EXPECTED_DATA_0_FIELD_MASK 0x000001ff +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_EXPECTED_DATA_0_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_EXPECTED_DATA_0_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_EXPECTED_DATA_1_FIELD; +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_EXPECTED_DATA_1_FIELD_MASK 0x0003fe00 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_EXPECTED_DATA_1_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_EXPECTED_DATA_1_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_GOOD_COUNT_FIELD; +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_GOOD_COUNT_FIELD_MASK 0x03fc0000 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_GOOD_COUNT_FIELD_WIDTH 8 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_GOOD_COUNT_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_PKT_COUNT_RST_FIELD; +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_PKT_COUNT_RST_FIELD_MASK 0x04000000 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_PKT_COUNT_RST_FIELD_WIDTH 1 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_PKT_COUNT_RST_FIELD_SHIFT 26 + +extern const ru_field_rec UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_ATE_EN_FIELD; +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_ATE_EN_FIELD_MASK 0x08000000 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_ATE_EN_FIELD_WIDTH 1 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_ATE_EN_FIELD_SHIFT 27 + +extern const ru_field_rec UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_RESERVED0_FIELD; +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_RESERVED0_FIELD_MASK 0xf0000000 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_RESERVED0_FIELD_WIDTH 4 +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec UBUS_SLV__ATE_RX_EXP_DATA_1_EXPECTED_DATA_2_FIELD; +#define UBUS_SLV__ATE_RX_EXP_DATA_1_EXPECTED_DATA_2_FIELD_MASK 0x000001ff +#define UBUS_SLV__ATE_RX_EXP_DATA_1_EXPECTED_DATA_2_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_RX_EXP_DATA_1_EXPECTED_DATA_2_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__ATE_RX_EXP_DATA_1_EXPECTED_DATA_3_FIELD; +#define UBUS_SLV__ATE_RX_EXP_DATA_1_EXPECTED_DATA_3_FIELD_MASK 0x0003fe00 +#define UBUS_SLV__ATE_RX_EXP_DATA_1_EXPECTED_DATA_3_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_RX_EXP_DATA_1_EXPECTED_DATA_3_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV__ATE_RX_EXP_DATA_1_RESERVED0_FIELD; +#define UBUS_SLV__ATE_RX_EXP_DATA_1_RESERVED0_FIELD_MASK 0xfffc0000 +#define UBUS_SLV__ATE_RX_EXP_DATA_1_RESERVED0_FIELD_WIDTH 14 +#define UBUS_SLV__ATE_RX_EXP_DATA_1_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV__ATE_RX_STATUS_0_RECEIVED_DATA_0_FIELD; +#define UBUS_SLV__ATE_RX_STATUS_0_RECEIVED_DATA_0_FIELD_MASK 0x000001ff +#define UBUS_SLV__ATE_RX_STATUS_0_RECEIVED_DATA_0_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_RX_STATUS_0_RECEIVED_DATA_0_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__ATE_RX_STATUS_0_RECEIVED_DATA_1_FIELD; +#define UBUS_SLV__ATE_RX_STATUS_0_RECEIVED_DATA_1_FIELD_MASK 0x0003fe00 +#define UBUS_SLV__ATE_RX_STATUS_0_RECEIVED_DATA_1_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_RX_STATUS_0_RECEIVED_DATA_1_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV__ATE_RX_STATUS_0_RX_OK_FIELD; +#define UBUS_SLV__ATE_RX_STATUS_0_RX_OK_FIELD_MASK 0x00040000 +#define UBUS_SLV__ATE_RX_STATUS_0_RX_OK_FIELD_WIDTH 1 +#define UBUS_SLV__ATE_RX_STATUS_0_RX_OK_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV__ATE_RX_STATUS_0_RESERVED0_FIELD; +#define UBUS_SLV__ATE_RX_STATUS_0_RESERVED0_FIELD_MASK 0xfff80000 +#define UBUS_SLV__ATE_RX_STATUS_0_RESERVED0_FIELD_WIDTH 13 +#define UBUS_SLV__ATE_RX_STATUS_0_RESERVED0_FIELD_SHIFT 19 + +extern const ru_field_rec UBUS_SLV__ATE_RX_STATUS_1_RECEIVED_DATA_2_FIELD; +#define UBUS_SLV__ATE_RX_STATUS_1_RECEIVED_DATA_2_FIELD_MASK 0x000001ff +#define UBUS_SLV__ATE_RX_STATUS_1_RECEIVED_DATA_2_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_RX_STATUS_1_RECEIVED_DATA_2_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__ATE_RX_STATUS_1_RECEIVED_DATA_3_FIELD; +#define UBUS_SLV__ATE_RX_STATUS_1_RECEIVED_DATA_3_FIELD_MASK 0x0003fe00 +#define UBUS_SLV__ATE_RX_STATUS_1_RECEIVED_DATA_3_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_RX_STATUS_1_RECEIVED_DATA_3_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV__ATE_RX_STATUS_1_RESERVED0_FIELD; +#define UBUS_SLV__ATE_RX_STATUS_1_RESERVED0_FIELD_MASK 0xfffc0000 +#define UBUS_SLV__ATE_RX_STATUS_1_RESERVED0_FIELD_WIDTH 14 +#define UBUS_SLV__ATE_RX_STATUS_1_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV__ATE_TX_CNTRL_START_STOP_OVRD_FIELD; +#define UBUS_SLV__ATE_TX_CNTRL_START_STOP_OVRD_FIELD_MASK 0x00000001 +#define UBUS_SLV__ATE_TX_CNTRL_START_STOP_OVRD_FIELD_WIDTH 1 +#define UBUS_SLV__ATE_TX_CNTRL_START_STOP_OVRD_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__ATE_TX_CNTRL_START_STOP_FIELD; +#define UBUS_SLV__ATE_TX_CNTRL_START_STOP_FIELD_MASK 0x00000002 +#define UBUS_SLV__ATE_TX_CNTRL_START_STOP_FIELD_WIDTH 1 +#define UBUS_SLV__ATE_TX_CNTRL_START_STOP_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_SLV__ATE_TX_CNTRL_PKT_GEN_EN_FIELD; +#define UBUS_SLV__ATE_TX_CNTRL_PKT_GEN_EN_FIELD_MASK 0x00000004 +#define UBUS_SLV__ATE_TX_CNTRL_PKT_GEN_EN_FIELD_WIDTH 1 +#define UBUS_SLV__ATE_TX_CNTRL_PKT_GEN_EN_FIELD_SHIFT 2 + +extern const ru_field_rec UBUS_SLV__ATE_TX_CNTRL_PKT_CNT_FIELD; +#define UBUS_SLV__ATE_TX_CNTRL_PKT_CNT_FIELD_MASK 0x000007f8 +#define UBUS_SLV__ATE_TX_CNTRL_PKT_CNT_FIELD_WIDTH 8 +#define UBUS_SLV__ATE_TX_CNTRL_PKT_CNT_FIELD_SHIFT 3 + +extern const ru_field_rec UBUS_SLV__ATE_TX_CNTRL_PAYLOAD_LENGTH_FIELD; +#define UBUS_SLV__ATE_TX_CNTRL_PAYLOAD_LENGTH_FIELD_MASK 0x003ff800 +#define UBUS_SLV__ATE_TX_CNTRL_PAYLOAD_LENGTH_FIELD_WIDTH 11 +#define UBUS_SLV__ATE_TX_CNTRL_PAYLOAD_LENGTH_FIELD_SHIFT 11 + +extern const ru_field_rec UBUS_SLV__ATE_TX_CNTRL_PKT_IPG_FIELD; +#define UBUS_SLV__ATE_TX_CNTRL_PKT_IPG_FIELD_MASK 0x0fc00000 +#define UBUS_SLV__ATE_TX_CNTRL_PKT_IPG_FIELD_WIDTH 6 +#define UBUS_SLV__ATE_TX_CNTRL_PKT_IPG_FIELD_SHIFT 22 + +extern const ru_field_rec UBUS_SLV__ATE_TX_CNTRL_RESERVED0_FIELD; +#define UBUS_SLV__ATE_TX_CNTRL_RESERVED0_FIELD_MASK 0xf0000000 +#define UBUS_SLV__ATE_TX_CNTRL_RESERVED0_FIELD_WIDTH 4 +#define UBUS_SLV__ATE_TX_CNTRL_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec UBUS_SLV__ATE_TX_DATA_0_TX_DATA_0_FIELD; +#define UBUS_SLV__ATE_TX_DATA_0_TX_DATA_0_FIELD_MASK 0x000001ff +#define UBUS_SLV__ATE_TX_DATA_0_TX_DATA_0_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_TX_DATA_0_TX_DATA_0_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__ATE_TX_DATA_0_TX_DATA_1_FIELD; +#define UBUS_SLV__ATE_TX_DATA_0_TX_DATA_1_FIELD_MASK 0x0003fe00 +#define UBUS_SLV__ATE_TX_DATA_0_TX_DATA_1_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_TX_DATA_0_TX_DATA_1_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV__ATE_TX_DATA_0_RESERVED0_FIELD; +#define UBUS_SLV__ATE_TX_DATA_0_RESERVED0_FIELD_MASK 0xfffc0000 +#define UBUS_SLV__ATE_TX_DATA_0_RESERVED0_FIELD_WIDTH 14 +#define UBUS_SLV__ATE_TX_DATA_0_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV__ATE_TX_DATA_1_TX_DATA_2_FIELD; +#define UBUS_SLV__ATE_TX_DATA_1_TX_DATA_2_FIELD_MASK 0x000001ff +#define UBUS_SLV__ATE_TX_DATA_1_TX_DATA_2_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_TX_DATA_1_TX_DATA_2_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__ATE_TX_DATA_1_TX_DATA_3_FIELD; +#define UBUS_SLV__ATE_TX_DATA_1_TX_DATA_3_FIELD_MASK 0x0003fe00 +#define UBUS_SLV__ATE_TX_DATA_1_TX_DATA_3_FIELD_WIDTH 9 +#define UBUS_SLV__ATE_TX_DATA_1_TX_DATA_3_FIELD_SHIFT 9 + +extern const ru_field_rec UBUS_SLV__ATE_TX_DATA_1_RESERVED0_FIELD; +#define UBUS_SLV__ATE_TX_DATA_1_RESERVED0_FIELD_MASK 0xfffc0000 +#define UBUS_SLV__ATE_TX_DATA_1_RESERVED0_FIELD_WIDTH 14 +#define UBUS_SLV__ATE_TX_DATA_1_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV__ATE_TX_DATA_2_TX_DATA_4_FIELD; +#define UBUS_SLV__ATE_TX_DATA_2_TX_DATA_4_FIELD_MASK 0x000000ff +#define UBUS_SLV__ATE_TX_DATA_2_TX_DATA_4_FIELD_WIDTH 8 +#define UBUS_SLV__ATE_TX_DATA_2_TX_DATA_4_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__ATE_TX_DATA_2_TX_DATA_5_FIELD; +#define UBUS_SLV__ATE_TX_DATA_2_TX_DATA_5_FIELD_MASK 0x0000ff00 +#define UBUS_SLV__ATE_TX_DATA_2_TX_DATA_5_FIELD_WIDTH 8 +#define UBUS_SLV__ATE_TX_DATA_2_TX_DATA_5_FIELD_SHIFT 8 + +extern const ru_field_rec UBUS_SLV__ATE_TX_DATA_2_ETHER_TYPE_FIELD; +#define UBUS_SLV__ATE_TX_DATA_2_ETHER_TYPE_FIELD_MASK 0xffff0000 +#define UBUS_SLV__ATE_TX_DATA_2_ETHER_TYPE_FIELD_WIDTH 16 +#define UBUS_SLV__ATE_TX_DATA_2_ETHER_TYPE_FIELD_SHIFT 16 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_TXD0_DEL_SEL_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD0_DEL_SEL_FIELD_MASK 0x0000000f +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD0_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD0_DEL_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED0_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED0_FIELD_MASK 0x00000030 +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED0_FIELD_WIDTH 2 +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_TXD0_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD0_DEL_OVRD_EN_FIELD_MASK 0x00000040 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD0_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD0_DEL_OVRD_EN_FIELD_SHIFT 6 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_TXD1_DEL_SEL_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD1_DEL_SEL_FIELD_MASK 0x00000780 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD1_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD1_DEL_SEL_FIELD_SHIFT 7 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED1_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED1_FIELD_MASK 0x00001800 +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED1_FIELD_WIDTH 2 +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED1_FIELD_SHIFT 11 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_TXD1_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD1_DEL_OVRD_EN_FIELD_MASK 0x00002000 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD1_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD1_DEL_OVRD_EN_FIELD_SHIFT 13 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_TXD2_DEL_SEL_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD2_DEL_SEL_FIELD_MASK 0x0003c000 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD2_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD2_DEL_SEL_FIELD_SHIFT 14 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED2_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED2_FIELD_MASK 0x000c0000 +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED2_FIELD_WIDTH 2 +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED2_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_TXD2_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD2_DEL_OVRD_EN_FIELD_MASK 0x00100000 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD2_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD2_DEL_OVRD_EN_FIELD_SHIFT 20 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_TXD3_DEL_SEL_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD3_DEL_SEL_FIELD_MASK 0x01e00000 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD3_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD3_DEL_SEL_FIELD_SHIFT 21 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED3_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED3_FIELD_MASK 0x06000000 +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED3_FIELD_WIDTH 2 +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED3_FIELD_SHIFT 25 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_TXD3_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD3_DEL_OVRD_EN_FIELD_MASK 0x08000000 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD3_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__TX_DELAY_CNTRL_0_TXD3_DEL_OVRD_EN_FIELD_SHIFT 27 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED4_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED4_FIELD_MASK 0xf0000000 +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED4_FIELD_WIDTH 4 +#define UBUS_SLV__TX_DELAY_CNTRL_0_RESERVED4_FIELD_SHIFT 28 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_1_TXCTL_DEL_SEL_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCTL_DEL_SEL_FIELD_MASK 0x0000000f +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCTL_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCTL_DEL_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_1_RESERVED0_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_1_RESERVED0_FIELD_MASK 0x00000030 +#define UBUS_SLV__TX_DELAY_CNTRL_1_RESERVED0_FIELD_WIDTH 2 +#define UBUS_SLV__TX_DELAY_CNTRL_1_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_1_TXCTL_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCTL_DEL_OVRD_EN_FIELD_MASK 0x00000040 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCTL_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCTL_DEL_OVRD_EN_FIELD_SHIFT 6 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_DEL_SEL_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_DEL_SEL_FIELD_MASK 0x00000780 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_DEL_SEL_FIELD_SHIFT 7 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_DEL_OVRD_EN_FIELD_MASK 0x00000800 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_DEL_OVRD_EN_FIELD_SHIFT 11 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_ID_DEL_SEL_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_ID_DEL_SEL_FIELD_MASK 0x0000f000 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_ID_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_ID_DEL_SEL_FIELD_SHIFT 12 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_ID_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_ID_DEL_OVRD_EN_FIELD_MASK 0x00010000 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_ID_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__TX_DELAY_CNTRL_1_TXCLK_ID_DEL_OVRD_EN_FIELD_SHIFT 16 + +extern const ru_field_rec UBUS_SLV__TX_DELAY_CNTRL_1_RESERVED1_FIELD; +#define UBUS_SLV__TX_DELAY_CNTRL_1_RESERVED1_FIELD_MASK 0xfffe0000 +#define UBUS_SLV__TX_DELAY_CNTRL_1_RESERVED1_FIELD_WIDTH 15 +#define UBUS_SLV__TX_DELAY_CNTRL_1_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RXD0_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD0_DEL_SEL_FIELD_MASK 0x0000000f +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD0_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD0_DEL_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED0_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED0_FIELD_MASK 0x00000030 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED0_FIELD_WIDTH 2 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RXD0_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD0_DEL_OVRD_EN_FIELD_MASK 0x00000040 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD0_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD0_DEL_OVRD_EN_FIELD_SHIFT 6 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RXD1_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD1_DEL_SEL_FIELD_MASK 0x00000780 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD1_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD1_DEL_SEL_FIELD_SHIFT 7 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED1_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED1_FIELD_MASK 0x00001800 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED1_FIELD_WIDTH 2 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED1_FIELD_SHIFT 11 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RXD1_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD1_DEL_OVRD_EN_FIELD_MASK 0x00002000 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD1_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD1_DEL_OVRD_EN_FIELD_SHIFT 13 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RXD2_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD2_DEL_SEL_FIELD_MASK 0x0003c000 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD2_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD2_DEL_SEL_FIELD_SHIFT 14 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED2_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED2_FIELD_MASK 0x000c0000 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED2_FIELD_WIDTH 2 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED2_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RXD2_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD2_DEL_OVRD_EN_FIELD_MASK 0x00100000 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD2_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD2_DEL_OVRD_EN_FIELD_SHIFT 20 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RXD3_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD3_DEL_SEL_FIELD_MASK 0x01e00000 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD3_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD3_DEL_SEL_FIELD_SHIFT 21 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED3_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED3_FIELD_MASK 0x06000000 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED3_FIELD_WIDTH 2 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED3_FIELD_SHIFT 25 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RXD3_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD3_DEL_OVRD_EN_FIELD_MASK 0x08000000 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD3_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RXD3_DEL_OVRD_EN_FIELD_SHIFT 27 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED4_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED4_FIELD_MASK 0xf0000000 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED4_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_0_RESERVED4_FIELD_SHIFT 28 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RXD4_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD4_DEL_SEL_FIELD_MASK 0x0000000f +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD4_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD4_DEL_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED0_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED0_FIELD_MASK 0x00000030 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED0_FIELD_WIDTH 2 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RXD4_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD4_DEL_OVRD_EN_FIELD_MASK 0x00000040 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD4_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD4_DEL_OVRD_EN_FIELD_SHIFT 6 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RXD5_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD5_DEL_SEL_FIELD_MASK 0x00000780 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD5_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD5_DEL_SEL_FIELD_SHIFT 7 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED1_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED1_FIELD_MASK 0x00001800 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED1_FIELD_WIDTH 2 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED1_FIELD_SHIFT 11 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RXD5_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD5_DEL_OVRD_EN_FIELD_MASK 0x00002000 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD5_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD5_DEL_OVRD_EN_FIELD_SHIFT 13 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RXD6_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD6_DEL_SEL_FIELD_MASK 0x0003c000 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD6_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD6_DEL_SEL_FIELD_SHIFT 14 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED2_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED2_FIELD_MASK 0x000c0000 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED2_FIELD_WIDTH 2 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED2_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RXD6_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD6_DEL_OVRD_EN_FIELD_MASK 0x00100000 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD6_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD6_DEL_OVRD_EN_FIELD_SHIFT 20 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RXD7_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD7_DEL_SEL_FIELD_MASK 0x01e00000 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD7_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD7_DEL_SEL_FIELD_SHIFT 21 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED3_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED3_FIELD_MASK 0x06000000 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED3_FIELD_WIDTH 2 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED3_FIELD_SHIFT 25 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RXD7_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD7_DEL_OVRD_EN_FIELD_MASK 0x08000000 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD7_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RXD7_DEL_OVRD_EN_FIELD_SHIFT 27 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED4_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED4_FIELD_MASK 0xf0000000 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED4_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_1_RESERVED4_FIELD_SHIFT 28 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_POS_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_POS_DEL_SEL_FIELD_MASK 0x0000000f +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_POS_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_POS_DEL_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED0_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED0_FIELD_MASK 0x00000030 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED0_FIELD_WIDTH 2 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_POS_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_POS_DEL_OVRD_EN_FIELD_MASK 0x00000040 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_POS_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_POS_DEL_OVRD_EN_FIELD_SHIFT 6 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_NEG_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_NEG_DEL_SEL_FIELD_MASK 0x00000780 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_NEG_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_NEG_DEL_SEL_FIELD_SHIFT 7 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED1_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED1_FIELD_MASK 0x00001800 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED1_FIELD_WIDTH 2 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED1_FIELD_SHIFT 11 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_NEG_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_NEG_DEL_OVRD_EN_FIELD_MASK 0x00002000 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_NEG_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCTL_NEG_DEL_OVRD_EN_FIELD_SHIFT 13 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_2_RXCLK_DEL_SEL_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCLK_DEL_SEL_FIELD_MASK 0x0003c000 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCLK_DEL_SEL_FIELD_WIDTH 4 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCLK_DEL_SEL_FIELD_SHIFT 14 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_2_RXCLK_DEL_OVRD_EN_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCLK_DEL_OVRD_EN_FIELD_MASK 0x00040000 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCLK_DEL_OVRD_EN_FIELD_WIDTH 1 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RXCLK_DEL_OVRD_EN_FIELD_SHIFT 18 + +extern const ru_field_rec UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED2_FIELD; +#define UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED2_FIELD_MASK 0xfff80000 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED2_FIELD_WIDTH 13 +#define UBUS_SLV__RX_DELAY_CNTRL_2_RESERVED2_FIELD_SHIFT 19 + +extern const ru_field_rec UBUS_SLV__CLK_RST_CTRL_SWINIT_FIELD; +#define UBUS_SLV__CLK_RST_CTRL_SWINIT_FIELD_MASK 0x00000001 +#define UBUS_SLV__CLK_RST_CTRL_SWINIT_FIELD_WIDTH 1 +#define UBUS_SLV__CLK_RST_CTRL_SWINIT_FIELD_SHIFT 0 + +extern const ru_field_rec UBUS_SLV__CLK_RST_CTRL_CLK250EN_FIELD; +#define UBUS_SLV__CLK_RST_CTRL_CLK250EN_FIELD_MASK 0x00000002 +#define UBUS_SLV__CLK_RST_CTRL_CLK250EN_FIELD_WIDTH 1 +#define UBUS_SLV__CLK_RST_CTRL_CLK250EN_FIELD_SHIFT 1 + +extern const ru_field_rec UBUS_SLV__CLK_RST_CTRL_RESERVED0_FIELD; +#define UBUS_SLV__CLK_RST_CTRL_RESERVED0_FIELD_MASK 0xfffffffc +#define UBUS_SLV__CLK_RST_CTRL_RESERVED0_FIELD_WIDTH 30 +#define UBUS_SLV__CLK_RST_CTRL_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec SBPM_REGS_INIT_FREE_LIST_INIT_BASE_ADDR_FIELD; +#define SBPM_REGS_INIT_FREE_LIST_INIT_BASE_ADDR_FIELD_MASK 0x00003fff +#define SBPM_REGS_INIT_FREE_LIST_INIT_BASE_ADDR_FIELD_WIDTH 14 +#define SBPM_REGS_INIT_FREE_LIST_INIT_BASE_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_INIT_FREE_LIST_INIT_OFFSET_FIELD; +#define SBPM_REGS_INIT_FREE_LIST_INIT_OFFSET_FIELD_MASK 0x0fffc000 +#define SBPM_REGS_INIT_FREE_LIST_INIT_OFFSET_FIELD_WIDTH 14 +#define SBPM_REGS_INIT_FREE_LIST_INIT_OFFSET_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_INIT_FREE_LIST_RESERVED0_FIELD; +#define SBPM_REGS_INIT_FREE_LIST_RESERVED0_FIELD_MASK 0x30000000 +#define SBPM_REGS_INIT_FREE_LIST_RESERVED0_FIELD_WIDTH 2 +#define SBPM_REGS_INIT_FREE_LIST_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec SBPM_REGS_INIT_FREE_LIST_BSY_FIELD; +#define SBPM_REGS_INIT_FREE_LIST_BSY_FIELD_MASK 0x40000000 +#define SBPM_REGS_INIT_FREE_LIST_BSY_FIELD_WIDTH 1 +#define SBPM_REGS_INIT_FREE_LIST_BSY_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_INIT_FREE_LIST_RDY_FIELD; +#define SBPM_REGS_INIT_FREE_LIST_RDY_FIELD_MASK 0x80000000 +#define SBPM_REGS_INIT_FREE_LIST_RDY_FIELD_WIDTH 1 +#define SBPM_REGS_INIT_FREE_LIST_RDY_FIELD_SHIFT 31 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RESERVED0_FIELD; +#define SBPM_REGS_BN_ALLOC_RESERVED0_FIELD_MASK 0x00003fff +#define SBPM_REGS_BN_ALLOC_RESERVED0_FIELD_WIDTH 14 +#define SBPM_REGS_BN_ALLOC_RESERVED0_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_SA_FIELD; +#define SBPM_REGS_BN_ALLOC_SA_FIELD_MASK 0x000fc000 +#define SBPM_REGS_BN_ALLOC_SA_FIELD_WIDTH 6 +#define SBPM_REGS_BN_ALLOC_SA_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RESERVED1_FIELD; +#define SBPM_REGS_BN_ALLOC_RESERVED1_FIELD_MASK 0xfff00000 +#define SBPM_REGS_BN_ALLOC_RESERVED1_FIELD_WIDTH 12 +#define SBPM_REGS_BN_ALLOC_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RPLY_ALLOC_BN_VALID_FIELD; +#define SBPM_REGS_BN_ALLOC_RPLY_ALLOC_BN_VALID_FIELD_MASK 0x00000001 +#define SBPM_REGS_BN_ALLOC_RPLY_ALLOC_BN_VALID_FIELD_WIDTH 1 +#define SBPM_REGS_BN_ALLOC_RPLY_ALLOC_BN_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RPLY_ALLOC_BN_FIELD; +#define SBPM_REGS_BN_ALLOC_RPLY_ALLOC_BN_FIELD_MASK 0x00007ffe +#define SBPM_REGS_BN_ALLOC_RPLY_ALLOC_BN_FIELD_WIDTH 14 +#define SBPM_REGS_BN_ALLOC_RPLY_ALLOC_BN_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RPLY_ACK_FIELD; +#define SBPM_REGS_BN_ALLOC_RPLY_ACK_FIELD_MASK 0x00008000 +#define SBPM_REGS_BN_ALLOC_RPLY_ACK_FIELD_WIDTH 1 +#define SBPM_REGS_BN_ALLOC_RPLY_ACK_FIELD_SHIFT 15 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RPLY_NACK_FIELD; +#define SBPM_REGS_BN_ALLOC_RPLY_NACK_FIELD_MASK 0x00010000 +#define SBPM_REGS_BN_ALLOC_RPLY_NACK_FIELD_WIDTH 1 +#define SBPM_REGS_BN_ALLOC_RPLY_NACK_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RPLY_EXCL_HIGH_FIELD; +#define SBPM_REGS_BN_ALLOC_RPLY_EXCL_HIGH_FIELD_MASK 0x00020000 +#define SBPM_REGS_BN_ALLOC_RPLY_EXCL_HIGH_FIELD_WIDTH 1 +#define SBPM_REGS_BN_ALLOC_RPLY_EXCL_HIGH_FIELD_SHIFT 17 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RPLY_EXCL_LOW_FIELD; +#define SBPM_REGS_BN_ALLOC_RPLY_EXCL_LOW_FIELD_MASK 0x00040000 +#define SBPM_REGS_BN_ALLOC_RPLY_EXCL_LOW_FIELD_WIDTH 1 +#define SBPM_REGS_BN_ALLOC_RPLY_EXCL_LOW_FIELD_SHIFT 18 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RPLY_RESERVED0_FIELD; +#define SBPM_REGS_BN_ALLOC_RPLY_RESERVED0_FIELD_MASK 0x3ff80000 +#define SBPM_REGS_BN_ALLOC_RPLY_RESERVED0_FIELD_WIDTH 11 +#define SBPM_REGS_BN_ALLOC_RPLY_RESERVED0_FIELD_SHIFT 19 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RPLY_BUSY_FIELD; +#define SBPM_REGS_BN_ALLOC_RPLY_BUSY_FIELD_MASK 0x40000000 +#define SBPM_REGS_BN_ALLOC_RPLY_BUSY_FIELD_WIDTH 1 +#define SBPM_REGS_BN_ALLOC_RPLY_BUSY_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_BN_ALLOC_RPLY_RDY_FIELD; +#define SBPM_REGS_BN_ALLOC_RPLY_RDY_FIELD_MASK 0x80000000 +#define SBPM_REGS_BN_ALLOC_RPLY_RDY_FIELD_WIDTH 1 +#define SBPM_REGS_BN_ALLOC_RPLY_RDY_FIELD_SHIFT 31 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_HEAD_BN_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_HEAD_BN_FIELD_MASK 0x00003fff +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_HEAD_BN_FIELD_WIDTH 14 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_HEAD_BN_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_SA_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_SA_FIELD_MASK 0x000fc000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_SA_FIELD_WIDTH 6 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_SA_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_RESERVED0_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_RESERVED0_FIELD_MASK 0x00f00000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_RESERVED0_FIELD_WIDTH 4 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_RESERVED0_FIELD_SHIFT 20 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_OFFSET_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_OFFSET_FIELD_MASK 0x7f000000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_OFFSET_FIELD_WIDTH 7 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_OFFSET_FIELD_SHIFT 24 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_ACK_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_ACK_FIELD_MASK 0x80000000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_ACK_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_ACK_FIELD_SHIFT 31 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_HIGH_LAST_BN_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_HIGH_LAST_BN_FIELD_MASK 0x00003fff +#define SBPM_REGS_BN_FREE_WITH_CONTXT_HIGH_LAST_BN_FIELD_WIDTH 14 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_HIGH_LAST_BN_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_HIGH_RESERVED0_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_HIGH_RESERVED0_FIELD_MASK 0xffffc000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_HIGH_RESERVED0_FIELD_WIDTH 18 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_HIGH_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_MCST_INC_BN_FIELD; +#define SBPM_REGS_MCST_INC_BN_FIELD_MASK 0x00003fff +#define SBPM_REGS_MCST_INC_BN_FIELD_WIDTH 14 +#define SBPM_REGS_MCST_INC_BN_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_MCST_INC_MCST_VAL_FIELD; +#define SBPM_REGS_MCST_INC_MCST_VAL_FIELD_MASK 0x003fc000 +#define SBPM_REGS_MCST_INC_MCST_VAL_FIELD_WIDTH 8 +#define SBPM_REGS_MCST_INC_MCST_VAL_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_MCST_INC_ACK_REQ_FIELD; +#define SBPM_REGS_MCST_INC_ACK_REQ_FIELD_MASK 0x00400000 +#define SBPM_REGS_MCST_INC_ACK_REQ_FIELD_WIDTH 1 +#define SBPM_REGS_MCST_INC_ACK_REQ_FIELD_SHIFT 22 + +extern const ru_field_rec SBPM_REGS_MCST_INC_RESERVED0_FIELD; +#define SBPM_REGS_MCST_INC_RESERVED0_FIELD_MASK 0xff800000 +#define SBPM_REGS_MCST_INC_RESERVED0_FIELD_WIDTH 9 +#define SBPM_REGS_MCST_INC_RESERVED0_FIELD_SHIFT 23 + +extern const ru_field_rec SBPM_REGS_MCST_INC_RPLY_MCST_ACK_FIELD; +#define SBPM_REGS_MCST_INC_RPLY_MCST_ACK_FIELD_MASK 0x00000001 +#define SBPM_REGS_MCST_INC_RPLY_MCST_ACK_FIELD_WIDTH 1 +#define SBPM_REGS_MCST_INC_RPLY_MCST_ACK_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_MCST_INC_RPLY_RESERVED0_FIELD; +#define SBPM_REGS_MCST_INC_RPLY_RESERVED0_FIELD_MASK 0x3ffffffe +#define SBPM_REGS_MCST_INC_RPLY_RESERVED0_FIELD_WIDTH 29 +#define SBPM_REGS_MCST_INC_RPLY_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_REGS_MCST_INC_RPLY_BSY_FIELD; +#define SBPM_REGS_MCST_INC_RPLY_BSY_FIELD_MASK 0x40000000 +#define SBPM_REGS_MCST_INC_RPLY_BSY_FIELD_WIDTH 1 +#define SBPM_REGS_MCST_INC_RPLY_BSY_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_MCST_INC_RPLY_RDY_FIELD; +#define SBPM_REGS_MCST_INC_RPLY_RDY_FIELD_MASK 0x80000000 +#define SBPM_REGS_MCST_INC_RPLY_RDY_FIELD_WIDTH 1 +#define SBPM_REGS_MCST_INC_RPLY_RDY_FIELD_SHIFT 31 + +extern const ru_field_rec SBPM_REGS_BN_CONNECT_BN_FIELD; +#define SBPM_REGS_BN_CONNECT_BN_FIELD_MASK 0x00003fff +#define SBPM_REGS_BN_CONNECT_BN_FIELD_WIDTH 14 +#define SBPM_REGS_BN_CONNECT_BN_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_BN_CONNECT_ACK_REQ_FIELD; +#define SBPM_REGS_BN_CONNECT_ACK_REQ_FIELD_MASK 0x00004000 +#define SBPM_REGS_BN_CONNECT_ACK_REQ_FIELD_WIDTH 1 +#define SBPM_REGS_BN_CONNECT_ACK_REQ_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_BN_CONNECT_WR_REQ_FIELD; +#define SBPM_REGS_BN_CONNECT_WR_REQ_FIELD_MASK 0x00008000 +#define SBPM_REGS_BN_CONNECT_WR_REQ_FIELD_WIDTH 1 +#define SBPM_REGS_BN_CONNECT_WR_REQ_FIELD_SHIFT 15 + +extern const ru_field_rec SBPM_REGS_BN_CONNECT_POINTED_BN_FIELD; +#define SBPM_REGS_BN_CONNECT_POINTED_BN_FIELD_MASK 0x3fff0000 +#define SBPM_REGS_BN_CONNECT_POINTED_BN_FIELD_WIDTH 14 +#define SBPM_REGS_BN_CONNECT_POINTED_BN_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_BN_CONNECT_RESERVED0_FIELD; +#define SBPM_REGS_BN_CONNECT_RESERVED0_FIELD_MASK 0xc0000000 +#define SBPM_REGS_BN_CONNECT_RESERVED0_FIELD_WIDTH 2 +#define SBPM_REGS_BN_CONNECT_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_BN_CONNECT_RPLY_CONNECT_ACK_FIELD; +#define SBPM_REGS_BN_CONNECT_RPLY_CONNECT_ACK_FIELD_MASK 0x00000001 +#define SBPM_REGS_BN_CONNECT_RPLY_CONNECT_ACK_FIELD_WIDTH 1 +#define SBPM_REGS_BN_CONNECT_RPLY_CONNECT_ACK_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_BN_CONNECT_RPLY_RESERVED0_FIELD; +#define SBPM_REGS_BN_CONNECT_RPLY_RESERVED0_FIELD_MASK 0x3ffffffe +#define SBPM_REGS_BN_CONNECT_RPLY_RESERVED0_FIELD_WIDTH 29 +#define SBPM_REGS_BN_CONNECT_RPLY_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_REGS_BN_CONNECT_RPLY_BUSY_FIELD; +#define SBPM_REGS_BN_CONNECT_RPLY_BUSY_FIELD_MASK 0x40000000 +#define SBPM_REGS_BN_CONNECT_RPLY_BUSY_FIELD_WIDTH 1 +#define SBPM_REGS_BN_CONNECT_RPLY_BUSY_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_BN_CONNECT_RPLY_RDY_FIELD; +#define SBPM_REGS_BN_CONNECT_RPLY_RDY_FIELD_MASK 0x80000000 +#define SBPM_REGS_BN_CONNECT_RPLY_RDY_FIELD_WIDTH 1 +#define SBPM_REGS_BN_CONNECT_RPLY_RDY_FIELD_SHIFT 31 + +extern const ru_field_rec SBPM_REGS_GET_NEXT_BN_FIELD; +#define SBPM_REGS_GET_NEXT_BN_FIELD_MASK 0x00003fff +#define SBPM_REGS_GET_NEXT_BN_FIELD_WIDTH 14 +#define SBPM_REGS_GET_NEXT_BN_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_GET_NEXT_RESERVED0_FIELD; +#define SBPM_REGS_GET_NEXT_RESERVED0_FIELD_MASK 0xffffc000 +#define SBPM_REGS_GET_NEXT_RESERVED0_FIELD_WIDTH 18 +#define SBPM_REGS_GET_NEXT_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_GET_NEXT_RPLY_BN_VALID_FIELD; +#define SBPM_REGS_GET_NEXT_RPLY_BN_VALID_FIELD_MASK 0x00000001 +#define SBPM_REGS_GET_NEXT_RPLY_BN_VALID_FIELD_WIDTH 1 +#define SBPM_REGS_GET_NEXT_RPLY_BN_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_GET_NEXT_RPLY_NEXT_BN_FIELD; +#define SBPM_REGS_GET_NEXT_RPLY_NEXT_BN_FIELD_MASK 0x00007ffe +#define SBPM_REGS_GET_NEXT_RPLY_NEXT_BN_FIELD_WIDTH 14 +#define SBPM_REGS_GET_NEXT_RPLY_NEXT_BN_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_REGS_GET_NEXT_RPLY_BN_NULL_FIELD; +#define SBPM_REGS_GET_NEXT_RPLY_BN_NULL_FIELD_MASK 0x00008000 +#define SBPM_REGS_GET_NEXT_RPLY_BN_NULL_FIELD_WIDTH 1 +#define SBPM_REGS_GET_NEXT_RPLY_BN_NULL_FIELD_SHIFT 15 + +extern const ru_field_rec SBPM_REGS_GET_NEXT_RPLY_MCNT_VAL_FIELD; +#define SBPM_REGS_GET_NEXT_RPLY_MCNT_VAL_FIELD_MASK 0x00ff0000 +#define SBPM_REGS_GET_NEXT_RPLY_MCNT_VAL_FIELD_WIDTH 8 +#define SBPM_REGS_GET_NEXT_RPLY_MCNT_VAL_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_GET_NEXT_RPLY_RESERVED0_FIELD; +#define SBPM_REGS_GET_NEXT_RPLY_RESERVED0_FIELD_MASK 0x3f000000 +#define SBPM_REGS_GET_NEXT_RPLY_RESERVED0_FIELD_WIDTH 6 +#define SBPM_REGS_GET_NEXT_RPLY_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec SBPM_REGS_GET_NEXT_RPLY_BUSY_FIELD; +#define SBPM_REGS_GET_NEXT_RPLY_BUSY_FIELD_MASK 0x40000000 +#define SBPM_REGS_GET_NEXT_RPLY_BUSY_FIELD_WIDTH 1 +#define SBPM_REGS_GET_NEXT_RPLY_BUSY_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_GET_NEXT_RPLY_RDY_FIELD; +#define SBPM_REGS_GET_NEXT_RPLY_RDY_FIELD_MASK 0x80000000 +#define SBPM_REGS_GET_NEXT_RPLY_RDY_FIELD_WIDTH 1 +#define SBPM_REGS_GET_NEXT_RPLY_RDY_FIELD_SHIFT 31 + +extern const ru_field_rec SBPM_REGS_SBPM_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD; +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_MASK 0x00000001 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED0_FIELD_MASK 0x000000fe +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED0_FIELD_WIDTH 7 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_REGS_SBPM_CLK_GATE_CNTRL_TIMER_VAL_FIELD; +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_TIMER_VAL_FIELD_MASK 0x0000ff00 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_TIMER_VAL_FIELD_WIDTH 8 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_TIMER_VAL_FIELD_SHIFT 8 + +extern const ru_field_rec SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD; +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_MASK 0x00010000 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED1_FIELD; +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED1_FIELD_MASK 0x000e0000 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED1_FIELD_WIDTH 3 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_INTERVL_FIELD; +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_INTERVL_FIELD_MASK 0x00700000 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_INTERVL_FIELD_WIDTH 3 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_INTERVL_FIELD_SHIFT 20 + +extern const ru_field_rec SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED2_FIELD; +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED2_FIELD_MASK 0x00800000 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED2_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_RESERVED2_FIELD_SHIFT 23 + +extern const ru_field_rec SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD; +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_MASK 0xff000000 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_WIDTH 8 +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_SHIFT 24 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_HEAD_BN_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_HEAD_BN_FIELD_MASK 0x00003fff +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_HEAD_BN_FIELD_WIDTH 14 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_HEAD_BN_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_SA_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_SA_FIELD_MASK 0x000fc000 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_SA_FIELD_WIDTH 6 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_SA_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RESERVED0_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RESERVED0_FIELD_MASK 0x7ff00000 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RESERVED0_FIELD_WIDTH 11 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RESERVED0_FIELD_SHIFT 20 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_ACK_REQ_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_ACK_REQ_FIELD_MASK 0x80000000 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_ACK_REQ_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_ACK_REQ_FIELD_SHIFT 31 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_FREE_ACK_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_FREE_ACK_FIELD_MASK 0x00000001 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_FREE_ACK_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_FREE_ACK_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RESERVED0_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RESERVED0_FIELD_MASK 0x00007ffe +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RESERVED0_FIELD_WIDTH 14 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_ACK_STAT_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_ACK_STAT_FIELD_MASK 0x00008000 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_ACK_STAT_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_ACK_STAT_FIELD_SHIFT 15 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_NACK_STAT_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_NACK_STAT_FIELD_MASK 0x00010000 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_NACK_STAT_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_NACK_STAT_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_EXCL_HIGH_STAT_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_EXCL_HIGH_STAT_FIELD_MASK 0x00020000 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_EXCL_HIGH_STAT_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_EXCL_HIGH_STAT_FIELD_SHIFT 17 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_EXCL_LOW_STAT_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_EXCL_LOW_STAT_FIELD_MASK 0x00040000 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_EXCL_LOW_STAT_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_EXCL_LOW_STAT_FIELD_SHIFT 18 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RESERVED1_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RESERVED1_FIELD_MASK 0x3ff80000 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RESERVED1_FIELD_WIDTH 11 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RESERVED1_FIELD_SHIFT 19 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_BSY_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_BSY_FIELD_MASK 0x40000000 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_BSY_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_BSY_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RDY_FIELD; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RDY_FIELD_MASK 0x80000000 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RDY_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_RDY_FIELD_SHIFT 31 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_FREE_ACK_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_FREE_ACK_FIELD_MASK 0x00000001 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_FREE_ACK_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_FREE_ACK_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RESERVED0_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RESERVED0_FIELD_MASK 0x00007ffe +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RESERVED0_FIELD_WIDTH 14 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_ACK_STATE_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_ACK_STATE_FIELD_MASK 0x00008000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_ACK_STATE_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_ACK_STATE_FIELD_SHIFT 15 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_NACK_STATE_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_NACK_STATE_FIELD_MASK 0x00010000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_NACK_STATE_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_NACK_STATE_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_EXCL_HIGH_STATE_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_EXCL_HIGH_STATE_FIELD_MASK 0x00020000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_EXCL_HIGH_STATE_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_EXCL_HIGH_STATE_FIELD_SHIFT 17 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_EXCL_LOW_STATE_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_EXCL_LOW_STATE_FIELD_MASK 0x00040000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_EXCL_LOW_STATE_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_EXCL_LOW_STATE_FIELD_SHIFT 18 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RESERVED1_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RESERVED1_FIELD_MASK 0x3ff80000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RESERVED1_FIELD_WIDTH 11 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RESERVED1_FIELD_SHIFT 19 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_BUSY_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_BUSY_FIELD_MASK 0x40000000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_BUSY_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_BUSY_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RDY_FIELD; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RDY_FIELD_MASK 0x80000000 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RDY_FIELD_WIDTH 1 +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_RDY_FIELD_SHIFT 31 + +extern const ru_field_rec SBPM_REGS_SBPM_GL_TRSH_GL_BAT_FIELD; +#define SBPM_REGS_SBPM_GL_TRSH_GL_BAT_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_GL_TRSH_GL_BAT_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_GL_TRSH_GL_BAT_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_GL_TRSH_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_GL_TRSH_RESERVED0_FIELD_MASK 0x0000c000 +#define SBPM_REGS_SBPM_GL_TRSH_RESERVED0_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_GL_TRSH_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_GL_TRSH_GL_BAH_FIELD; +#define SBPM_REGS_SBPM_GL_TRSH_GL_BAH_FIELD_MASK 0x3fff0000 +#define SBPM_REGS_SBPM_GL_TRSH_GL_BAH_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_GL_TRSH_GL_BAH_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_GL_TRSH_RESERVED1_FIELD; +#define SBPM_REGS_SBPM_GL_TRSH_RESERVED1_FIELD_MASK 0xc0000000 +#define SBPM_REGS_SBPM_GL_TRSH_RESERVED1_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_GL_TRSH_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_TRSH_UG_BAT_FIELD; +#define SBPM_REGS_SBPM_UG0_TRSH_UG_BAT_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_UG0_TRSH_UG_BAT_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG0_TRSH_UG_BAT_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_TRSH_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_UG0_TRSH_RESERVED0_FIELD_MASK 0x0000c000 +#define SBPM_REGS_SBPM_UG0_TRSH_RESERVED0_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG0_TRSH_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_TRSH_UG_BAH_FIELD; +#define SBPM_REGS_SBPM_UG0_TRSH_UG_BAH_FIELD_MASK 0x3fff0000 +#define SBPM_REGS_SBPM_UG0_TRSH_UG_BAH_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG0_TRSH_UG_BAH_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_TRSH_RESERVED1_FIELD; +#define SBPM_REGS_SBPM_UG0_TRSH_RESERVED1_FIELD_MASK 0xc0000000 +#define SBPM_REGS_SBPM_UG0_TRSH_RESERVED1_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG0_TRSH_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_TRSH_UG_BAT_FIELD; +#define SBPM_REGS_SBPM_UG1_TRSH_UG_BAT_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_UG1_TRSH_UG_BAT_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG1_TRSH_UG_BAT_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_TRSH_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_UG1_TRSH_RESERVED0_FIELD_MASK 0x0000c000 +#define SBPM_REGS_SBPM_UG1_TRSH_RESERVED0_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG1_TRSH_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_TRSH_UG_BAH_FIELD; +#define SBPM_REGS_SBPM_UG1_TRSH_UG_BAH_FIELD_MASK 0x3fff0000 +#define SBPM_REGS_SBPM_UG1_TRSH_UG_BAH_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG1_TRSH_UG_BAH_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_TRSH_RESERVED1_FIELD; +#define SBPM_REGS_SBPM_UG1_TRSH_RESERVED1_FIELD_MASK 0xc0000000 +#define SBPM_REGS_SBPM_UG1_TRSH_RESERVED1_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG1_TRSH_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_SELECT_BUS_FIELD; +#define SBPM_REGS_SBPM_DBG_SELECT_BUS_FIELD_MASK 0x0000000f +#define SBPM_REGS_SBPM_DBG_SELECT_BUS_FIELD_WIDTH 4 +#define SBPM_REGS_SBPM_DBG_SELECT_BUS_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_DBG_RESERVED0_FIELD_MASK 0xfffffff0 +#define SBPM_REGS_SBPM_DBG_RESERVED0_FIELD_WIDTH 28 +#define SBPM_REGS_SBPM_DBG_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_BAC_UG0BAC_FIELD; +#define SBPM_REGS_SBPM_UG0_BAC_UG0BAC_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_UG0_BAC_UG0BAC_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG0_BAC_UG0BAC_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_BAC_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_UG0_BAC_RESERVED0_FIELD_MASK 0xffffc000 +#define SBPM_REGS_SBPM_UG0_BAC_RESERVED0_FIELD_WIDTH 18 +#define SBPM_REGS_SBPM_UG0_BAC_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_BAC_UG1BAC_FIELD; +#define SBPM_REGS_SBPM_UG1_BAC_UG1BAC_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_UG1_BAC_UG1BAC_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG1_BAC_UG1BAC_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_BAC_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_UG1_BAC_RESERVED0_FIELD_MASK 0xffffc000 +#define SBPM_REGS_SBPM_UG1_BAC_RESERVED0_FIELD_WIDTH 18 +#define SBPM_REGS_SBPM_UG1_BAC_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_GL_BAC_BAC_FIELD; +#define SBPM_REGS_SBPM_GL_BAC_BAC_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_GL_BAC_BAC_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_GL_BAC_BAC_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_GL_BAC_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_GL_BAC_RESERVED0_FIELD_MASK 0xffffc000 +#define SBPM_REGS_SBPM_GL_BAC_RESERVED0_FIELD_WIDTH 18 +#define SBPM_REGS_SBPM_GL_BAC_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_EXCLT_FIELD; +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_EXCLT_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_EXCLT_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_EXCLT_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_RESERVED0_FIELD_MASK 0x0000c000 +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_RESERVED0_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_EXCLH_FIELD; +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_EXCLH_FIELD_MASK 0x3fff0000 +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_EXCLH_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_EXCLH_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_RESERVED1_FIELD; +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_RESERVED1_FIELD_MASK 0xc0000000 +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_RESERVED1_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_EXCLT_FIELD; +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_EXCLT_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_EXCLT_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_EXCLT_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_RESERVED0_FIELD_MASK 0x0000c000 +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_RESERVED0_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_EXCLH_FIELD; +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_EXCLH_FIELD_MASK 0x3fff0000 +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_EXCLH_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_EXCLH_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_RESERVED1_FIELD; +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_RESERVED1_FIELD_MASK 0xc0000000 +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_RESERVED1_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_EXCLT_FIELD; +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_EXCLT_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_EXCLT_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_EXCLT_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_RESERVED0_FIELD_MASK 0x0000c000 +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_RESERVED0_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_EXCLH_FIELD; +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_EXCLH_FIELD_MASK 0x3fff0000 +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_EXCLH_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_EXCLH_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_RESERVED1_FIELD; +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_RESERVED1_FIELD_MASK 0xc0000000 +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_RESERVED1_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_EXCLT_FIELD; +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_EXCLT_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_EXCLT_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_EXCLT_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_RESERVED0_FIELD_MASK 0x0000c000 +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_RESERVED0_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_EXCLH_FIELD; +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_EXCLH_FIELD_MASK 0x3fff0000 +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_EXCLH_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_EXCLH_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_RESERVED1_FIELD; +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_RESERVED1_FIELD_MASK 0xc0000000 +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_RESERVED1_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_RESERVED1_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_SBPM_UG_STATUS_UG_ACK_STTS_FIELD; +#define SBPM_REGS_SBPM_UG_STATUS_UG_ACK_STTS_FIELD_MASK 0x00000003 +#define SBPM_REGS_SBPM_UG_STATUS_UG_ACK_STTS_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG_STATUS_UG_ACK_STTS_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG_STATUS_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_UG_STATUS_RESERVED0_FIELD_MASK 0x0000fffc +#define SBPM_REGS_SBPM_UG_STATUS_RESERVED0_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG_STATUS_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec SBPM_REGS_SBPM_UG_STATUS_UG_EXCL_HIGH_STTS_FIELD; +#define SBPM_REGS_SBPM_UG_STATUS_UG_EXCL_HIGH_STTS_FIELD_MASK 0x00030000 +#define SBPM_REGS_SBPM_UG_STATUS_UG_EXCL_HIGH_STTS_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG_STATUS_UG_EXCL_HIGH_STTS_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_UG_STATUS_UG_EXCL_LOW_STTS_FIELD; +#define SBPM_REGS_SBPM_UG_STATUS_UG_EXCL_LOW_STTS_FIELD_MASK 0x000c0000 +#define SBPM_REGS_SBPM_UG_STATUS_UG_EXCL_LOW_STTS_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_UG_STATUS_UG_EXCL_LOW_STTS_FIELD_SHIFT 18 + +extern const ru_field_rec SBPM_REGS_SBPM_UG_STATUS_RESERVED1_FIELD; +#define SBPM_REGS_SBPM_UG_STATUS_RESERVED1_FIELD_MASK 0xfff00000 +#define SBPM_REGS_SBPM_UG_STATUS_RESERVED1_FIELD_WIDTH 12 +#define SBPM_REGS_SBPM_UG_STATUS_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec SBPM_REGS_ERROR_HANDLING_PARAMS_SEARCH_DEPTH_FIELD; +#define SBPM_REGS_ERROR_HANDLING_PARAMS_SEARCH_DEPTH_FIELD_MASK 0x0000007f +#define SBPM_REGS_ERROR_HANDLING_PARAMS_SEARCH_DEPTH_FIELD_WIDTH 7 +#define SBPM_REGS_ERROR_HANDLING_PARAMS_SEARCH_DEPTH_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_ERROR_HANDLING_PARAMS_MAX_SEARCH_EN_FIELD; +#define SBPM_REGS_ERROR_HANDLING_PARAMS_MAX_SEARCH_EN_FIELD_MASK 0x00000080 +#define SBPM_REGS_ERROR_HANDLING_PARAMS_MAX_SEARCH_EN_FIELD_WIDTH 1 +#define SBPM_REGS_ERROR_HANDLING_PARAMS_MAX_SEARCH_EN_FIELD_SHIFT 7 + +extern const ru_field_rec SBPM_REGS_ERROR_HANDLING_PARAMS_CHCK_LAST_EN_FIELD; +#define SBPM_REGS_ERROR_HANDLING_PARAMS_CHCK_LAST_EN_FIELD_MASK 0x00000100 +#define SBPM_REGS_ERROR_HANDLING_PARAMS_CHCK_LAST_EN_FIELD_WIDTH 1 +#define SBPM_REGS_ERROR_HANDLING_PARAMS_CHCK_LAST_EN_FIELD_SHIFT 8 + +extern const ru_field_rec SBPM_REGS_ERROR_HANDLING_PARAMS_FREEZE_IN_ERROR_FIELD; +#define SBPM_REGS_ERROR_HANDLING_PARAMS_FREEZE_IN_ERROR_FIELD_MASK 0x00000200 +#define SBPM_REGS_ERROR_HANDLING_PARAMS_FREEZE_IN_ERROR_FIELD_WIDTH 1 +#define SBPM_REGS_ERROR_HANDLING_PARAMS_FREEZE_IN_ERROR_FIELD_SHIFT 9 + +extern const ru_field_rec SBPM_REGS_ERROR_HANDLING_PARAMS_RESERVED0_FIELD; +#define SBPM_REGS_ERROR_HANDLING_PARAMS_RESERVED0_FIELD_MASK 0xfffffc00 +#define SBPM_REGS_ERROR_HANDLING_PARAMS_RESERVED0_FIELD_WIDTH 22 +#define SBPM_REGS_ERROR_HANDLING_PARAMS_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec SBPM_REGS_SBPM_IIR_ADDR_CMD_SA_FIELD; +#define SBPM_REGS_SBPM_IIR_ADDR_CMD_SA_FIELD_MASK 0x0000003f +#define SBPM_REGS_SBPM_IIR_ADDR_CMD_SA_FIELD_WIDTH 6 +#define SBPM_REGS_SBPM_IIR_ADDR_CMD_SA_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_IIR_ADDR_CMD_TA_FIELD; +#define SBPM_REGS_SBPM_IIR_ADDR_CMD_TA_FIELD_MASK 0x000001c0 +#define SBPM_REGS_SBPM_IIR_ADDR_CMD_TA_FIELD_WIDTH 3 +#define SBPM_REGS_SBPM_IIR_ADDR_CMD_TA_FIELD_SHIFT 6 + +extern const ru_field_rec SBPM_REGS_SBPM_IIR_ADDR_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_IIR_ADDR_RESERVED0_FIELD_MASK 0xfffffe00 +#define SBPM_REGS_SBPM_IIR_ADDR_RESERVED0_FIELD_WIDTH 23 +#define SBPM_REGS_SBPM_IIR_ADDR_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec SBPM_REGS_SBPM_IIR_LOW_CMD_DATA_0TO31_FIELD; +#define SBPM_REGS_SBPM_IIR_LOW_CMD_DATA_0TO31_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_IIR_LOW_CMD_DATA_0TO31_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_IIR_LOW_CMD_DATA_0TO31_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_IIR_HIGH_CMD_DATA_32TO63_FIELD; +#define SBPM_REGS_SBPM_IIR_HIGH_CMD_DATA_32TO63_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_IIR_HIGH_CMD_DATA_32TO63_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_IIR_HIGH_CMD_DATA_32TO63_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC0_ALLOC_SM_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC0_ALLOC_SM_FIELD_MASK 0x00000003 +#define SBPM_REGS_SBPM_DBG_VEC0_ALLOC_SM_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_DBG_VEC0_ALLOC_SM_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC0_CNNCT_SM_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC0_CNNCT_SM_FIELD_MASK 0x00000004 +#define SBPM_REGS_SBPM_DBG_VEC0_CNNCT_SM_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC0_CNNCT_SM_FIELD_SHIFT 2 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC0_MCINT_SM_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC0_MCINT_SM_FIELD_MASK 0x00000078 +#define SBPM_REGS_SBPM_DBG_VEC0_MCINT_SM_FIELD_WIDTH 4 +#define SBPM_REGS_SBPM_DBG_VEC0_MCINT_SM_FIELD_SHIFT 3 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC0_FREE_W_CNXT_SM_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC0_FREE_W_CNXT_SM_FIELD_MASK 0x00000780 +#define SBPM_REGS_SBPM_DBG_VEC0_FREE_W_CNXT_SM_FIELD_WIDTH 4 +#define SBPM_REGS_SBPM_DBG_VEC0_FREE_W_CNXT_SM_FIELD_SHIFT 7 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC0_FREE_WO_CNXT_SM_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC0_FREE_WO_CNXT_SM_FIELD_MASK 0x00007800 +#define SBPM_REGS_SBPM_DBG_VEC0_FREE_WO_CNXT_SM_FIELD_WIDTH 4 +#define SBPM_REGS_SBPM_DBG_VEC0_FREE_WO_CNXT_SM_FIELD_SHIFT 11 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC0_GN_SM_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC0_GN_SM_FIELD_MASK 0x00018000 +#define SBPM_REGS_SBPM_DBG_VEC0_GN_SM_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_DBG_VEC0_GN_SM_FIELD_SHIFT 15 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC0_MULTI_GN_SM_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC0_MULTI_GN_SM_FIELD_MASK 0x001e0000 +#define SBPM_REGS_SBPM_DBG_VEC0_MULTI_GN_SM_FIELD_WIDTH 4 +#define SBPM_REGS_SBPM_DBG_VEC0_MULTI_GN_SM_FIELD_SHIFT 17 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC0_FREE_LST_HD_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC0_FREE_LST_HD_FIELD_MASK 0xffe00000 +#define SBPM_REGS_SBPM_DBG_VEC0_FREE_LST_HD_FIELD_WIDTH 11 +#define SBPM_REGS_SBPM_DBG_VEC0_FREE_LST_HD_FIELD_SHIFT 21 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_IN2E_VALID_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_IN2E_VALID_FIELD_MASK 0x00000001 +#define SBPM_REGS_SBPM_DBG_VEC1_IN2E_VALID_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_IN2E_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_MULTI_GN_VALID_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_MULTI_GN_VALID_FIELD_MASK 0x0000001e +#define SBPM_REGS_SBPM_DBG_VEC1_MULTI_GN_VALID_FIELD_WIDTH 4 +#define SBPM_REGS_SBPM_DBG_VEC1_MULTI_GN_VALID_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_UG_ACTIVE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_UG_ACTIVE_FIELD_MASK 0x00000060 +#define SBPM_REGS_SBPM_DBG_VEC1_UG_ACTIVE_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_DBG_VEC1_UG_ACTIVE_FIELD_SHIFT 5 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_TX_CMD_FULL_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_TX_CMD_FULL_FIELD_MASK 0x00000080 +#define SBPM_REGS_SBPM_DBG_VEC1_TX_CMD_FULL_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_TX_CMD_FULL_FIELD_SHIFT 7 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_RX_FIFO_POP_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_RX_FIFO_POP_FIELD_MASK 0x00000100 +#define SBPM_REGS_SBPM_DBG_VEC1_RX_FIFO_POP_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_RX_FIFO_POP_FIELD_SHIFT 8 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_RAM_INIT_START_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_RAM_INIT_START_FIELD_MASK 0x00000200 +#define SBPM_REGS_SBPM_DBG_VEC1_RAM_INIT_START_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_RAM_INIT_START_FIELD_SHIFT 9 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_RAM_INIT_DONE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_RAM_INIT_DONE_FIELD_MASK 0x00000400 +#define SBPM_REGS_SBPM_DBG_VEC1_RAM_INIT_DONE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_RAM_INIT_DONE_FIELD_SHIFT 10 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_RX_FIFO_DATA_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_RX_FIFO_DATA_FIELD_MASK 0x001ff800 +#define SBPM_REGS_SBPM_DBG_VEC1_RX_FIFO_DATA_FIELD_WIDTH 10 +#define SBPM_REGS_SBPM_DBG_VEC1_RX_FIFO_DATA_FIELD_SHIFT 11 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_FREE_DECODE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_FREE_DECODE_FIELD_MASK 0x00200000 +#define SBPM_REGS_SBPM_DBG_VEC1_FREE_DECODE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_FREE_DECODE_FIELD_SHIFT 21 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_IN2E_DECODE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_IN2E_DECODE_FIELD_MASK 0x00400000 +#define SBPM_REGS_SBPM_DBG_VEC1_IN2E_DECODE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_IN2E_DECODE_FIELD_SHIFT 22 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_FREE_WO_DECODE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_FREE_WO_DECODE_FIELD_MASK 0x00800000 +#define SBPM_REGS_SBPM_DBG_VEC1_FREE_WO_DECODE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_FREE_WO_DECODE_FIELD_SHIFT 23 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_GET_NXT_DECODE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_GET_NXT_DECODE_FIELD_MASK 0x01000000 +#define SBPM_REGS_SBPM_DBG_VEC1_GET_NXT_DECODE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_GET_NXT_DECODE_FIELD_SHIFT 24 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_MULTI_GET_NXT_DECODE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_MULTI_GET_NXT_DECODE_FIELD_MASK 0x02000000 +#define SBPM_REGS_SBPM_DBG_VEC1_MULTI_GET_NXT_DECODE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_MULTI_GET_NXT_DECODE_FIELD_SHIFT 25 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_CNCT_DECODE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_CNCT_DECODE_FIELD_MASK 0x04000000 +#define SBPM_REGS_SBPM_DBG_VEC1_CNCT_DECODE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_CNCT_DECODE_FIELD_SHIFT 26 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_FREE_W_DECODE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_FREE_W_DECODE_FIELD_MASK 0x08000000 +#define SBPM_REGS_SBPM_DBG_VEC1_FREE_W_DECODE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_FREE_W_DECODE_FIELD_SHIFT 27 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_MCIN_DECODE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_MCIN_DECODE_FIELD_MASK 0x10000000 +#define SBPM_REGS_SBPM_DBG_VEC1_MCIN_DECODE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_MCIN_DECODE_FIELD_SHIFT 28 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_ALLOC_DECODE_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_ALLOC_DECODE_FIELD_MASK 0x20000000 +#define SBPM_REGS_SBPM_DBG_VEC1_ALLOC_DECODE_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC1_ALLOC_DECODE_FIELD_SHIFT 29 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC1_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC1_RESERVED0_FIELD_MASK 0xc0000000 +#define SBPM_REGS_SBPM_DBG_VEC1_RESERVED0_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_DBG_VEC1_RESERVED0_FIELD_SHIFT 30 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_TX_DATA_FULL_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_TX_DATA_FULL_FIELD_MASK 0x00000001 +#define SBPM_REGS_SBPM_DBG_VEC2_TX_DATA_FULL_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC2_TX_DATA_FULL_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_TX_FIFO_EMPTY_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_TX_FIFO_EMPTY_FIELD_MASK 0x00000002 +#define SBPM_REGS_SBPM_DBG_VEC2_TX_FIFO_EMPTY_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC2_TX_FIFO_EMPTY_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_LCL_STTS_FULL_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_LCL_STTS_FULL_FIELD_MASK 0x00000004 +#define SBPM_REGS_SBPM_DBG_VEC2_LCL_STTS_FULL_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC2_LCL_STTS_FULL_FIELD_SHIFT 2 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_LCL_STTS_EMPTY_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_LCL_STTS_EMPTY_FIELD_MASK 0x00000008 +#define SBPM_REGS_SBPM_DBG_VEC2_LCL_STTS_EMPTY_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC2_LCL_STTS_EMPTY_FIELD_SHIFT 3 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_TX_CMD_FULL_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_TX_CMD_FULL_FIELD_MASK 0x00000010 +#define SBPM_REGS_SBPM_DBG_VEC2_TX_CMD_FULL_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC2_TX_CMD_FULL_FIELD_SHIFT 4 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_TX_CMD_FIFO_EMPTY_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_TX_CMD_FIFO_EMPTY_FIELD_MASK 0x00000020 +#define SBPM_REGS_SBPM_DBG_VEC2_TX_CMD_FIFO_EMPTY_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC2_TX_CMD_FIFO_EMPTY_FIELD_SHIFT 5 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_BB_DECODER_DEST_ID_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_BB_DECODER_DEST_ID_FIELD_MASK 0x00000fc0 +#define SBPM_REGS_SBPM_DBG_VEC2_BB_DECODER_DEST_ID_FIELD_WIDTH 6 +#define SBPM_REGS_SBPM_DBG_VEC2_BB_DECODER_DEST_ID_FIELD_SHIFT 6 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_TX_BBH_SEND_IN_PROGRESS_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_TX_BBH_SEND_IN_PROGRESS_FIELD_MASK 0x00001000 +#define SBPM_REGS_SBPM_DBG_VEC2_TX_BBH_SEND_IN_PROGRESS_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC2_TX_BBH_SEND_IN_PROGRESS_FIELD_SHIFT 12 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_SP_2SEND_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_SP_2SEND_FIELD_MASK 0x0007e000 +#define SBPM_REGS_SBPM_DBG_VEC2_SP_2SEND_FIELD_WIDTH 6 +#define SBPM_REGS_SBPM_DBG_VEC2_SP_2SEND_FIELD_SHIFT 13 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_TX2DATA_FIFO_TADDR_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_TX2DATA_FIFO_TADDR_FIELD_MASK 0x00380000 +#define SBPM_REGS_SBPM_DBG_VEC2_TX2DATA_FIFO_TADDR_FIELD_WIDTH 3 +#define SBPM_REGS_SBPM_DBG_VEC2_TX2DATA_FIFO_TADDR_FIELD_SHIFT 19 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_CPU_ACCESS_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_CPU_ACCESS_FIELD_MASK 0x00400000 +#define SBPM_REGS_SBPM_DBG_VEC2_CPU_ACCESS_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC2_CPU_ACCESS_FIELD_SHIFT 22 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_BBH_ACCESS_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_BBH_ACCESS_FIELD_MASK 0x00800000 +#define SBPM_REGS_SBPM_DBG_VEC2_BBH_ACCESS_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC2_BBH_ACCESS_FIELD_SHIFT 23 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_RNR_ACCESS_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_RNR_ACCESS_FIELD_MASK 0x01000000 +#define SBPM_REGS_SBPM_DBG_VEC2_RNR_ACCESS_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC2_RNR_ACCESS_FIELD_SHIFT 24 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC2_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC2_RESERVED0_FIELD_MASK 0xfe000000 +#define SBPM_REGS_SBPM_DBG_VEC2_RESERVED0_FIELD_WIDTH 7 +#define SBPM_REGS_SBPM_DBG_VEC2_RESERVED0_FIELD_SHIFT 25 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_ALLOC_RPLY_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_ALLOC_RPLY_FIELD_MASK 0x00000001 +#define SBPM_REGS_SBPM_DBG_VEC3_ALLOC_RPLY_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC3_ALLOC_RPLY_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_BN_RPLY_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_BN_RPLY_FIELD_MASK 0x00000ffe +#define SBPM_REGS_SBPM_DBG_VEC3_BN_RPLY_FIELD_WIDTH 11 +#define SBPM_REGS_SBPM_DBG_VEC3_BN_RPLY_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_ALLOC_ACK_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_ALLOC_ACK_FIELD_MASK 0x00001000 +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_ALLOC_ACK_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_ALLOC_ACK_FIELD_SHIFT 12 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_TX_FIFO_MCINC_ACK_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_TX_FIFO_MCINC_ACK_FIELD_MASK 0x00002000 +#define SBPM_REGS_SBPM_DBG_VEC3_TX_FIFO_MCINC_ACK_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC3_TX_FIFO_MCINC_ACK_FIELD_SHIFT 13 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_CNCT_ACK_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_CNCT_ACK_FIELD_MASK 0x00004000 +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_CNCT_ACK_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_CNCT_ACK_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_GT_NXT_RPLY_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_GT_NXT_RPLY_FIELD_MASK 0x00008000 +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_GT_NXT_RPLY_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_GT_NXT_RPLY_FIELD_SHIFT 15 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_MLTI_GT_NXT_RPLY_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_MLTI_GT_NXT_RPLY_FIELD_MASK 0x00010000 +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_MLTI_GT_NXT_RPLY_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_MLTI_GT_NXT_RPLY_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_TX_MSG_PIPE_SM_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_TX_MSG_PIPE_SM_FIELD_MASK 0x00060000 +#define SBPM_REGS_SBPM_DBG_VEC3_TX_MSG_PIPE_SM_FIELD_WIDTH 2 +#define SBPM_REGS_SBPM_DBG_VEC3_TX_MSG_PIPE_SM_FIELD_SHIFT 17 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_SEND_STT_SM_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_SEND_STT_SM_FIELD_MASK 0x00080000 +#define SBPM_REGS_SBPM_DBG_VEC3_SEND_STT_SM_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC3_SEND_STT_SM_FIELD_SHIFT 19 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_IN2ESTTS_CHNG_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_IN2ESTTS_CHNG_FIELD_MASK 0x00100000 +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_IN2ESTTS_CHNG_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_DBG_VEC3_TXFIFO_IN2ESTTS_CHNG_FIELD_SHIFT 20 + +extern const ru_field_rec SBPM_REGS_SBPM_DBG_VEC3_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_DBG_VEC3_RESERVED0_FIELD_MASK 0xffe00000 +#define SBPM_REGS_SBPM_DBG_VEC3_RESERVED0_FIELD_WIDTH 11 +#define SBPM_REGS_SBPM_DBG_VEC3_RESERVED0_FIELD_SHIFT 21 + +extern const ru_field_rec SBPM_REGS_SBPM_SP_BBH_LOW_SBPM_SP_BBH_LOW_FIELD; +#define SBPM_REGS_SBPM_SP_BBH_LOW_SBPM_SP_BBH_LOW_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_SP_BBH_LOW_SBPM_SP_BBH_LOW_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_SP_BBH_LOW_SBPM_SP_BBH_LOW_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_SP_BBH_HIGH_SBPM_SP_BBH_HIGH_FIELD; +#define SBPM_REGS_SBPM_SP_BBH_HIGH_SBPM_SP_BBH_HIGH_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_SP_BBH_HIGH_SBPM_SP_BBH_HIGH_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_SP_BBH_HIGH_SBPM_SP_BBH_HIGH_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_SP_RNR_LOW_SBPM_SP_RNR_LOW_FIELD; +#define SBPM_REGS_SBPM_SP_RNR_LOW_SBPM_SP_RNR_LOW_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_SP_RNR_LOW_SBPM_SP_RNR_LOW_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_SP_RNR_LOW_SBPM_SP_RNR_LOW_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_SP_RNR_HIGH_SBPM_SP_RNR_HIGH_FIELD; +#define SBPM_REGS_SBPM_SP_RNR_HIGH_SBPM_SP_RNR_HIGH_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_SP_RNR_HIGH_SBPM_SP_RNR_HIGH_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_SP_RNR_HIGH_SBPM_SP_RNR_HIGH_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG_MAP_LOW_SBPM_UG_MAP_LOW_FIELD; +#define SBPM_REGS_SBPM_UG_MAP_LOW_SBPM_UG_MAP_LOW_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_UG_MAP_LOW_SBPM_UG_MAP_LOW_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_UG_MAP_LOW_SBPM_UG_MAP_LOW_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG_MAP_HIGH_SBPM_UG_MAP_HIGH_FIELD; +#define SBPM_REGS_SBPM_UG_MAP_HIGH_SBPM_UG_MAP_HIGH_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_UG_MAP_HIGH_SBPM_UG_MAP_HIGH_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_UG_MAP_HIGH_SBPM_UG_MAP_HIGH_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_NACK_MASK_LOW_SBPM_NACK_MASK_LOW_FIELD; +#define SBPM_REGS_SBPM_NACK_MASK_LOW_SBPM_NACK_MASK_LOW_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_NACK_MASK_LOW_SBPM_NACK_MASK_LOW_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_NACK_MASK_LOW_SBPM_NACK_MASK_LOW_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_NACK_MASK_HIGH_SBPM_NACK_MASK_HIGH_FIELD; +#define SBPM_REGS_SBPM_NACK_MASK_HIGH_SBPM_NACK_MASK_HIGH_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_NACK_MASK_HIGH_SBPM_NACK_MASK_HIGH_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_NACK_MASK_HIGH_SBPM_NACK_MASK_HIGH_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_EXCL_MASK_LOW_SBPM_EXCL_MASK_LOW_FIELD; +#define SBPM_REGS_SBPM_EXCL_MASK_LOW_SBPM_EXCL_MASK_LOW_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_EXCL_MASK_LOW_SBPM_EXCL_MASK_LOW_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_EXCL_MASK_LOW_SBPM_EXCL_MASK_LOW_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_EXCL_MASK_HIGH_SBPM_EXCL_MASK_HIGH_FIELD; +#define SBPM_REGS_SBPM_EXCL_MASK_HIGH_SBPM_EXCL_MASK_HIGH_FIELD_MASK 0xffffffff +#define SBPM_REGS_SBPM_EXCL_MASK_HIGH_SBPM_EXCL_MASK_HIGH_FIELD_WIDTH 32 +#define SBPM_REGS_SBPM_EXCL_MASK_HIGH_SBPM_EXCL_MASK_HIGH_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_RADDR_DECODER_ID_2OVERWR_FIELD; +#define SBPM_REGS_SBPM_RADDR_DECODER_ID_2OVERWR_FIELD_MASK 0x0000003f +#define SBPM_REGS_SBPM_RADDR_DECODER_ID_2OVERWR_FIELD_WIDTH 6 +#define SBPM_REGS_SBPM_RADDR_DECODER_ID_2OVERWR_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_RADDR_DECODER_OVERWR_RA_FIELD; +#define SBPM_REGS_SBPM_RADDR_DECODER_OVERWR_RA_FIELD_MASK 0x0000ffc0 +#define SBPM_REGS_SBPM_RADDR_DECODER_OVERWR_RA_FIELD_WIDTH 10 +#define SBPM_REGS_SBPM_RADDR_DECODER_OVERWR_RA_FIELD_SHIFT 6 + +extern const ru_field_rec SBPM_REGS_SBPM_RADDR_DECODER_OVERWR_VALID_FIELD; +#define SBPM_REGS_SBPM_RADDR_DECODER_OVERWR_VALID_FIELD_MASK 0x00010000 +#define SBPM_REGS_SBPM_RADDR_DECODER_OVERWR_VALID_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_RADDR_DECODER_OVERWR_VALID_FIELD_SHIFT 16 + +extern const ru_field_rec SBPM_REGS_SBPM_RADDR_DECODER_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_RADDR_DECODER_RESERVED0_FIELD_MASK 0xfffe0000 +#define SBPM_REGS_SBPM_RADDR_DECODER_RESERVED0_FIELD_WIDTH 15 +#define SBPM_REGS_SBPM_RADDR_DECODER_RESERVED0_FIELD_SHIFT 17 + +extern const ru_field_rec SBPM_REGS_SBPM_WR_DATA_SBPM_WR_DATA_FIELD; +#define SBPM_REGS_SBPM_WR_DATA_SBPM_WR_DATA_FIELD_MASK 0x003fffff +#define SBPM_REGS_SBPM_WR_DATA_SBPM_WR_DATA_FIELD_WIDTH 22 +#define SBPM_REGS_SBPM_WR_DATA_SBPM_WR_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_WR_DATA_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_WR_DATA_RESERVED0_FIELD_MASK 0xffc00000 +#define SBPM_REGS_SBPM_WR_DATA_RESERVED0_FIELD_WIDTH 10 +#define SBPM_REGS_SBPM_WR_DATA_RESERVED0_FIELD_SHIFT 22 + +extern const ru_field_rec SBPM_REGS_SBPM_UG_BAC_MAX_UG0BACMAX_FIELD; +#define SBPM_REGS_SBPM_UG_BAC_MAX_UG0BACMAX_FIELD_MASK 0x00003fff +#define SBPM_REGS_SBPM_UG_BAC_MAX_UG0BACMAX_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG_BAC_MAX_UG0BACMAX_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_UG_BAC_MAX_UG1BACMAX_FIELD; +#define SBPM_REGS_SBPM_UG_BAC_MAX_UG1BACMAX_FIELD_MASK 0x0fffc000 +#define SBPM_REGS_SBPM_UG_BAC_MAX_UG1BACMAX_FIELD_WIDTH 14 +#define SBPM_REGS_SBPM_UG_BAC_MAX_UG1BACMAX_FIELD_SHIFT 14 + +extern const ru_field_rec SBPM_REGS_SBPM_UG_BAC_MAX_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_UG_BAC_MAX_RESERVED0_FIELD_MASK 0xf0000000 +#define SBPM_REGS_SBPM_UG_BAC_MAX_RESERVED0_FIELD_WIDTH 4 +#define SBPM_REGS_SBPM_UG_BAC_MAX_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec SBPM_REGS_SBPM_SPARE_GL_BAC_CLEAR_EN_FIELD; +#define SBPM_REGS_SBPM_SPARE_GL_BAC_CLEAR_EN_FIELD_MASK 0x00000001 +#define SBPM_REGS_SBPM_SPARE_GL_BAC_CLEAR_EN_FIELD_WIDTH 1 +#define SBPM_REGS_SBPM_SPARE_GL_BAC_CLEAR_EN_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_REGS_SBPM_SPARE_RESERVED0_FIELD; +#define SBPM_REGS_SBPM_SPARE_RESERVED0_FIELD_MASK 0xfffffffe +#define SBPM_REGS_SBPM_SPARE_RESERVED0_FIELD_WIDTH 31 +#define SBPM_REGS_SBPM_SPARE_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_INTR_CTRL_ISR_BAC_UNDERRUN_FIELD; +#define SBPM_INTR_CTRL_ISR_BAC_UNDERRUN_FIELD_MASK 0x00000001 +#define SBPM_INTR_CTRL_ISR_BAC_UNDERRUN_FIELD_WIDTH 1 +#define SBPM_INTR_CTRL_ISR_BAC_UNDERRUN_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_INTR_CTRL_ISR_MCST_OVERFLOW_FIELD; +#define SBPM_INTR_CTRL_ISR_MCST_OVERFLOW_FIELD_MASK 0x00000002 +#define SBPM_INTR_CTRL_ISR_MCST_OVERFLOW_FIELD_WIDTH 1 +#define SBPM_INTR_CTRL_ISR_MCST_OVERFLOW_FIELD_SHIFT 1 + +extern const ru_field_rec SBPM_INTR_CTRL_ISR_CHECK_LAST_ERR_FIELD; +#define SBPM_INTR_CTRL_ISR_CHECK_LAST_ERR_FIELD_MASK 0x00000004 +#define SBPM_INTR_CTRL_ISR_CHECK_LAST_ERR_FIELD_WIDTH 1 +#define SBPM_INTR_CTRL_ISR_CHECK_LAST_ERR_FIELD_SHIFT 2 + +extern const ru_field_rec SBPM_INTR_CTRL_ISR_MAX_SEARCH_ERR_FIELD; +#define SBPM_INTR_CTRL_ISR_MAX_SEARCH_ERR_FIELD_MASK 0x00000008 +#define SBPM_INTR_CTRL_ISR_MAX_SEARCH_ERR_FIELD_WIDTH 1 +#define SBPM_INTR_CTRL_ISR_MAX_SEARCH_ERR_FIELD_SHIFT 3 + +extern const ru_field_rec SBPM_INTR_CTRL_ISR_INVALID_IN2E_FIELD; +#define SBPM_INTR_CTRL_ISR_INVALID_IN2E_FIELD_MASK 0x00000010 +#define SBPM_INTR_CTRL_ISR_INVALID_IN2E_FIELD_WIDTH 1 +#define SBPM_INTR_CTRL_ISR_INVALID_IN2E_FIELD_SHIFT 4 + +extern const ru_field_rec SBPM_INTR_CTRL_ISR_MULTI_GET_NEXT_NULL_FIELD; +#define SBPM_INTR_CTRL_ISR_MULTI_GET_NEXT_NULL_FIELD_MASK 0x00000020 +#define SBPM_INTR_CTRL_ISR_MULTI_GET_NEXT_NULL_FIELD_WIDTH 1 +#define SBPM_INTR_CTRL_ISR_MULTI_GET_NEXT_NULL_FIELD_SHIFT 5 + +extern const ru_field_rec SBPM_INTR_CTRL_ISR_CNCT_NULL_FIELD; +#define SBPM_INTR_CTRL_ISR_CNCT_NULL_FIELD_MASK 0x00000040 +#define SBPM_INTR_CTRL_ISR_CNCT_NULL_FIELD_WIDTH 1 +#define SBPM_INTR_CTRL_ISR_CNCT_NULL_FIELD_SHIFT 6 + +extern const ru_field_rec SBPM_INTR_CTRL_ISR_ALLOC_NULL_FIELD; +#define SBPM_INTR_CTRL_ISR_ALLOC_NULL_FIELD_MASK 0x00000080 +#define SBPM_INTR_CTRL_ISR_ALLOC_NULL_FIELD_WIDTH 1 +#define SBPM_INTR_CTRL_ISR_ALLOC_NULL_FIELD_SHIFT 7 + +extern const ru_field_rec SBPM_INTR_CTRL_ISR_RESERVED0_FIELD; +#define SBPM_INTR_CTRL_ISR_RESERVED0_FIELD_MASK 0xffffff00 +#define SBPM_INTR_CTRL_ISR_RESERVED0_FIELD_WIDTH 24 +#define SBPM_INTR_CTRL_ISR_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec SBPM_INTR_CTRL_ISM_ISM_FIELD; +#define SBPM_INTR_CTRL_ISM_ISM_FIELD_MASK 0xffffffff +#define SBPM_INTR_CTRL_ISM_ISM_FIELD_WIDTH 32 +#define SBPM_INTR_CTRL_ISM_ISM_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_INTR_CTRL_IER_IEM_FIELD; +#define SBPM_INTR_CTRL_IER_IEM_FIELD_MASK 0xffffffff +#define SBPM_INTR_CTRL_IER_IEM_FIELD_WIDTH 32 +#define SBPM_INTR_CTRL_IER_IEM_FIELD_SHIFT 0 + +extern const ru_field_rec SBPM_INTR_CTRL_ITR_IST_FIELD; +#define SBPM_INTR_CTRL_ITR_IST_FIELD_MASK 0xffffffff +#define SBPM_INTR_CTRL_ITR_IST_FIELD_WIDTH 32 +#define SBPM_INTR_CTRL_ITR_IST_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_NUM_OF_WRITES_NUMOFBUFF_FIELD; +#define DMA_CONFIG_NUM_OF_WRITES_NUMOFBUFF_FIELD_MASK 0x0000003f +#define DMA_CONFIG_NUM_OF_WRITES_NUMOFBUFF_FIELD_WIDTH 6 +#define DMA_CONFIG_NUM_OF_WRITES_NUMOFBUFF_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_NUM_OF_WRITES_RESERVED0_FIELD; +#define DMA_CONFIG_NUM_OF_WRITES_RESERVED0_FIELD_MASK 0xffffffc0 +#define DMA_CONFIG_NUM_OF_WRITES_RESERVED0_FIELD_WIDTH 26 +#define DMA_CONFIG_NUM_OF_WRITES_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec DMA_CONFIG_NUM_OF_READS_RR_NUM_FIELD; +#define DMA_CONFIG_NUM_OF_READS_RR_NUM_FIELD_MASK 0x0000003f +#define DMA_CONFIG_NUM_OF_READS_RR_NUM_FIELD_WIDTH 6 +#define DMA_CONFIG_NUM_OF_READS_RR_NUM_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_NUM_OF_READS_RESERVED0_FIELD; +#define DMA_CONFIG_NUM_OF_READS_RESERVED0_FIELD_MASK 0xffffffc0 +#define DMA_CONFIG_NUM_OF_READS_RESERVED0_FIELD_WIDTH 26 +#define DMA_CONFIG_NUM_OF_READS_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec DMA_CONFIG_U_THRESH_INTO_U_FIELD; +#define DMA_CONFIG_U_THRESH_INTO_U_FIELD_MASK 0x0000003f +#define DMA_CONFIG_U_THRESH_INTO_U_FIELD_WIDTH 6 +#define DMA_CONFIG_U_THRESH_INTO_U_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_U_THRESH_RESERVED0_FIELD; +#define DMA_CONFIG_U_THRESH_RESERVED0_FIELD_MASK 0x000000c0 +#define DMA_CONFIG_U_THRESH_RESERVED0_FIELD_WIDTH 2 +#define DMA_CONFIG_U_THRESH_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec DMA_CONFIG_U_THRESH_OUT_OF_U_FIELD; +#define DMA_CONFIG_U_THRESH_OUT_OF_U_FIELD_MASK 0x00003f00 +#define DMA_CONFIG_U_THRESH_OUT_OF_U_FIELD_WIDTH 6 +#define DMA_CONFIG_U_THRESH_OUT_OF_U_FIELD_SHIFT 8 + +extern const ru_field_rec DMA_CONFIG_U_THRESH_RESERVED1_FIELD; +#define DMA_CONFIG_U_THRESH_RESERVED1_FIELD_MASK 0xffffc000 +#define DMA_CONFIG_U_THRESH_RESERVED1_FIELD_WIDTH 18 +#define DMA_CONFIG_U_THRESH_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec DMA_CONFIG_PRI_RXPRI_FIELD; +#define DMA_CONFIG_PRI_RXPRI_FIELD_MASK 0x0000000f +#define DMA_CONFIG_PRI_RXPRI_FIELD_WIDTH 4 +#define DMA_CONFIG_PRI_RXPRI_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_PRI_TXPRI_FIELD; +#define DMA_CONFIG_PRI_TXPRI_FIELD_MASK 0x000000f0 +#define DMA_CONFIG_PRI_TXPRI_FIELD_WIDTH 4 +#define DMA_CONFIG_PRI_TXPRI_FIELD_SHIFT 4 + +extern const ru_field_rec DMA_CONFIG_PRI_RESERVED0_FIELD; +#define DMA_CONFIG_PRI_RESERVED0_FIELD_MASK 0xffffff00 +#define DMA_CONFIG_PRI_RESERVED0_FIELD_WIDTH 24 +#define DMA_CONFIG_PRI_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec DMA_CONFIG_WEIGHT_RXWEIGHT_FIELD; +#define DMA_CONFIG_WEIGHT_RXWEIGHT_FIELD_MASK 0x00000007 +#define DMA_CONFIG_WEIGHT_RXWEIGHT_FIELD_WIDTH 3 +#define DMA_CONFIG_WEIGHT_RXWEIGHT_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_WEIGHT_RESERVED0_FIELD; +#define DMA_CONFIG_WEIGHT_RESERVED0_FIELD_MASK 0x000000f8 +#define DMA_CONFIG_WEIGHT_RESERVED0_FIELD_WIDTH 5 +#define DMA_CONFIG_WEIGHT_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec DMA_CONFIG_WEIGHT_TXWEIGHT_FIELD; +#define DMA_CONFIG_WEIGHT_TXWEIGHT_FIELD_MASK 0x00000700 +#define DMA_CONFIG_WEIGHT_TXWEIGHT_FIELD_WIDTH 3 +#define DMA_CONFIG_WEIGHT_TXWEIGHT_FIELD_SHIFT 8 + +extern const ru_field_rec DMA_CONFIG_WEIGHT_RESERVED1_FIELD; +#define DMA_CONFIG_WEIGHT_RESERVED1_FIELD_MASK 0xfffff800 +#define DMA_CONFIG_WEIGHT_RESERVED1_FIELD_WIDTH 21 +#define DMA_CONFIG_WEIGHT_RESERVED1_FIELD_SHIFT 11 + +extern const ru_field_rec DMA_CONFIG_PERIPH_SOURCE_RXSOURCE_FIELD; +#define DMA_CONFIG_PERIPH_SOURCE_RXSOURCE_FIELD_MASK 0x0000003f +#define DMA_CONFIG_PERIPH_SOURCE_RXSOURCE_FIELD_WIDTH 6 +#define DMA_CONFIG_PERIPH_SOURCE_RXSOURCE_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_PERIPH_SOURCE_RESERVED0_FIELD; +#define DMA_CONFIG_PERIPH_SOURCE_RESERVED0_FIELD_MASK 0x000000c0 +#define DMA_CONFIG_PERIPH_SOURCE_RESERVED0_FIELD_WIDTH 2 +#define DMA_CONFIG_PERIPH_SOURCE_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec DMA_CONFIG_PERIPH_SOURCE_TXSOURCE_FIELD; +#define DMA_CONFIG_PERIPH_SOURCE_TXSOURCE_FIELD_MASK 0x00003f00 +#define DMA_CONFIG_PERIPH_SOURCE_TXSOURCE_FIELD_WIDTH 6 +#define DMA_CONFIG_PERIPH_SOURCE_TXSOURCE_FIELD_SHIFT 8 + +extern const ru_field_rec DMA_CONFIG_PERIPH_SOURCE_RESERVED1_FIELD; +#define DMA_CONFIG_PERIPH_SOURCE_RESERVED1_FIELD_MASK 0xffffc000 +#define DMA_CONFIG_PERIPH_SOURCE_RESERVED1_FIELD_WIDTH 18 +#define DMA_CONFIG_PERIPH_SOURCE_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec DMA_CONFIG_TARGET_MEM_RXTMEM_FIELD; +#define DMA_CONFIG_TARGET_MEM_RXTMEM_FIELD_MASK 0x00000001 +#define DMA_CONFIG_TARGET_MEM_RXTMEM_FIELD_WIDTH 1 +#define DMA_CONFIG_TARGET_MEM_RXTMEM_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_TARGET_MEM_RESERVED0_FIELD; +#define DMA_CONFIG_TARGET_MEM_RESERVED0_FIELD_MASK 0x000000fe +#define DMA_CONFIG_TARGET_MEM_RESERVED0_FIELD_WIDTH 7 +#define DMA_CONFIG_TARGET_MEM_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec DMA_CONFIG_TARGET_MEM_TXTMEM_FIELD; +#define DMA_CONFIG_TARGET_MEM_TXTMEM_FIELD_MASK 0x00000100 +#define DMA_CONFIG_TARGET_MEM_TXTMEM_FIELD_WIDTH 1 +#define DMA_CONFIG_TARGET_MEM_TXTMEM_FIELD_SHIFT 8 + +extern const ru_field_rec DMA_CONFIG_TARGET_MEM_RESERVED1_FIELD; +#define DMA_CONFIG_TARGET_MEM_RESERVED1_FIELD_MASK 0xfffffe00 +#define DMA_CONFIG_TARGET_MEM_RESERVED1_FIELD_WIDTH 23 +#define DMA_CONFIG_TARGET_MEM_RESERVED1_FIELD_SHIFT 9 + +extern const ru_field_rec DMA_CONFIG_PTRRST_RSTVEC_FIELD; +#define DMA_CONFIG_PTRRST_RSTVEC_FIELD_MASK 0x0000ffff +#define DMA_CONFIG_PTRRST_RSTVEC_FIELD_WIDTH 16 +#define DMA_CONFIG_PTRRST_RSTVEC_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_PTRRST_RESERVED0_FIELD; +#define DMA_CONFIG_PTRRST_RESERVED0_FIELD_MASK 0xffff0000 +#define DMA_CONFIG_PTRRST_RESERVED0_FIELD_WIDTH 16 +#define DMA_CONFIG_PTRRST_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec DMA_CONFIG_BBROUTEOVRD_DEST_FIELD; +#define DMA_CONFIG_BBROUTEOVRD_DEST_FIELD_MASK 0x0000003f +#define DMA_CONFIG_BBROUTEOVRD_DEST_FIELD_WIDTH 6 +#define DMA_CONFIG_BBROUTEOVRD_DEST_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_BBROUTEOVRD_RESERVED0_FIELD; +#define DMA_CONFIG_BBROUTEOVRD_RESERVED0_FIELD_MASK 0x000000c0 +#define DMA_CONFIG_BBROUTEOVRD_RESERVED0_FIELD_WIDTH 2 +#define DMA_CONFIG_BBROUTEOVRD_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec DMA_CONFIG_BBROUTEOVRD_ROUTE_FIELD; +#define DMA_CONFIG_BBROUTEOVRD_ROUTE_FIELD_MASK 0x0003ff00 +#define DMA_CONFIG_BBROUTEOVRD_ROUTE_FIELD_WIDTH 10 +#define DMA_CONFIG_BBROUTEOVRD_ROUTE_FIELD_SHIFT 8 + +extern const ru_field_rec DMA_CONFIG_BBROUTEOVRD_RESERVED1_FIELD; +#define DMA_CONFIG_BBROUTEOVRD_RESERVED1_FIELD_MASK 0x00fc0000 +#define DMA_CONFIG_BBROUTEOVRD_RESERVED1_FIELD_WIDTH 6 +#define DMA_CONFIG_BBROUTEOVRD_RESERVED1_FIELD_SHIFT 18 + +extern const ru_field_rec DMA_CONFIG_BBROUTEOVRD_OVRD_FIELD; +#define DMA_CONFIG_BBROUTEOVRD_OVRD_FIELD_MASK 0x01000000 +#define DMA_CONFIG_BBROUTEOVRD_OVRD_FIELD_WIDTH 1 +#define DMA_CONFIG_BBROUTEOVRD_OVRD_FIELD_SHIFT 24 + +extern const ru_field_rec DMA_CONFIG_BBROUTEOVRD_RESERVED2_FIELD; +#define DMA_CONFIG_BBROUTEOVRD_RESERVED2_FIELD_MASK 0xfe000000 +#define DMA_CONFIG_BBROUTEOVRD_RESERVED2_FIELD_WIDTH 7 +#define DMA_CONFIG_BBROUTEOVRD_RESERVED2_FIELD_SHIFT 25 + +extern const ru_field_rec DMA_CONFIG_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD; +#define DMA_CONFIG_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_MASK 0x00000001 +#define DMA_CONFIG_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_WIDTH 1 +#define DMA_CONFIG_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_CLK_GATE_CNTRL_RESERVED0_FIELD; +#define DMA_CONFIG_CLK_GATE_CNTRL_RESERVED0_FIELD_MASK 0x000000fe +#define DMA_CONFIG_CLK_GATE_CNTRL_RESERVED0_FIELD_WIDTH 7 +#define DMA_CONFIG_CLK_GATE_CNTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec DMA_CONFIG_CLK_GATE_CNTRL_TIMER_VAL_FIELD; +#define DMA_CONFIG_CLK_GATE_CNTRL_TIMER_VAL_FIELD_MASK 0x0000ff00 +#define DMA_CONFIG_CLK_GATE_CNTRL_TIMER_VAL_FIELD_WIDTH 8 +#define DMA_CONFIG_CLK_GATE_CNTRL_TIMER_VAL_FIELD_SHIFT 8 + +extern const ru_field_rec DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD; +#define DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_MASK 0x00010000 +#define DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_WIDTH 1 +#define DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec DMA_CONFIG_CLK_GATE_CNTRL_RESERVED1_FIELD; +#define DMA_CONFIG_CLK_GATE_CNTRL_RESERVED1_FIELD_MASK 0x000e0000 +#define DMA_CONFIG_CLK_GATE_CNTRL_RESERVED1_FIELD_WIDTH 3 +#define DMA_CONFIG_CLK_GATE_CNTRL_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD; +#define DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_MASK 0x00700000 +#define DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_WIDTH 3 +#define DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_SHIFT 20 + +extern const ru_field_rec DMA_CONFIG_CLK_GATE_CNTRL_RESERVED2_FIELD; +#define DMA_CONFIG_CLK_GATE_CNTRL_RESERVED2_FIELD_MASK 0x00800000 +#define DMA_CONFIG_CLK_GATE_CNTRL_RESERVED2_FIELD_WIDTH 1 +#define DMA_CONFIG_CLK_GATE_CNTRL_RESERVED2_FIELD_SHIFT 23 + +extern const ru_field_rec DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD; +#define DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_MASK 0xff000000 +#define DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_WIDTH 8 +#define DMA_CONFIG_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_SHIFT 24 + +extern const ru_field_rec DMA_CONFIG_UBUS_DPIDS_DDR_FIELD; +#define DMA_CONFIG_UBUS_DPIDS_DDR_FIELD_MASK 0x000000ff +#define DMA_CONFIG_UBUS_DPIDS_DDR_FIELD_WIDTH 8 +#define DMA_CONFIG_UBUS_DPIDS_DDR_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_UBUS_DPIDS_SRAM_FIELD; +#define DMA_CONFIG_UBUS_DPIDS_SRAM_FIELD_MASK 0x0000ff00 +#define DMA_CONFIG_UBUS_DPIDS_SRAM_FIELD_WIDTH 8 +#define DMA_CONFIG_UBUS_DPIDS_SRAM_FIELD_SHIFT 8 + +extern const ru_field_rec DMA_CONFIG_UBUS_DPIDS_RESERVED0_FIELD; +#define DMA_CONFIG_UBUS_DPIDS_RESERVED0_FIELD_MASK 0xffff0000 +#define DMA_CONFIG_UBUS_DPIDS_RESERVED0_FIELD_WIDTH 16 +#define DMA_CONFIG_UBUS_DPIDS_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec DMA_CONFIG_MAX_OTF_MAX_DDR_FIELD; +#define DMA_CONFIG_MAX_OTF_MAX_DDR_FIELD_MASK 0x0000ffff +#define DMA_CONFIG_MAX_OTF_MAX_DDR_FIELD_WIDTH 16 +#define DMA_CONFIG_MAX_OTF_MAX_DDR_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_MAX_OTF_MAX_SRAM_FIELD; +#define DMA_CONFIG_MAX_OTF_MAX_SRAM_FIELD_MASK 0xffff0000 +#define DMA_CONFIG_MAX_OTF_MAX_SRAM_FIELD_WIDTH 16 +#define DMA_CONFIG_MAX_OTF_MAX_SRAM_FIELD_SHIFT 16 + +extern const ru_field_rec DMA_CONFIG_UBUS_CREDITS_DDR_FIELD; +#define DMA_CONFIG_UBUS_CREDITS_DDR_FIELD_MASK 0x0000001f +#define DMA_CONFIG_UBUS_CREDITS_DDR_FIELD_WIDTH 5 +#define DMA_CONFIG_UBUS_CREDITS_DDR_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_UBUS_CREDITS_RESERVED0_FIELD; +#define DMA_CONFIG_UBUS_CREDITS_RESERVED0_FIELD_MASK 0x000000e0 +#define DMA_CONFIG_UBUS_CREDITS_RESERVED0_FIELD_WIDTH 3 +#define DMA_CONFIG_UBUS_CREDITS_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec DMA_CONFIG_UBUS_CREDITS_SRAM_FIELD; +#define DMA_CONFIG_UBUS_CREDITS_SRAM_FIELD_MASK 0x00001f00 +#define DMA_CONFIG_UBUS_CREDITS_SRAM_FIELD_WIDTH 5 +#define DMA_CONFIG_UBUS_CREDITS_SRAM_FIELD_SHIFT 8 + +extern const ru_field_rec DMA_CONFIG_UBUS_CREDITS_RESERVED1_FIELD; +#define DMA_CONFIG_UBUS_CREDITS_RESERVED1_FIELD_MASK 0x0000e000 +#define DMA_CONFIG_UBUS_CREDITS_RESERVED1_FIELD_WIDTH 3 +#define DMA_CONFIG_UBUS_CREDITS_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec DMA_CONFIG_UBUS_CREDITS_DDR_SET_FIELD; +#define DMA_CONFIG_UBUS_CREDITS_DDR_SET_FIELD_MASK 0x00010000 +#define DMA_CONFIG_UBUS_CREDITS_DDR_SET_FIELD_WIDTH 1 +#define DMA_CONFIG_UBUS_CREDITS_DDR_SET_FIELD_SHIFT 16 + +extern const ru_field_rec DMA_CONFIG_UBUS_CREDITS_SRAM_SET_FIELD; +#define DMA_CONFIG_UBUS_CREDITS_SRAM_SET_FIELD_MASK 0x00020000 +#define DMA_CONFIG_UBUS_CREDITS_SRAM_SET_FIELD_WIDTH 1 +#define DMA_CONFIG_UBUS_CREDITS_SRAM_SET_FIELD_SHIFT 17 + +extern const ru_field_rec DMA_CONFIG_UBUS_CREDITS_RESERVED2_FIELD; +#define DMA_CONFIG_UBUS_CREDITS_RESERVED2_FIELD_MASK 0xfffc0000 +#define DMA_CONFIG_UBUS_CREDITS_RESERVED2_FIELD_WIDTH 14 +#define DMA_CONFIG_UBUS_CREDITS_RESERVED2_FIELD_SHIFT 18 + +extern const ru_field_rec DMA_CONFIG_PSRAM_BASE_BASE_FIELD; +#define DMA_CONFIG_PSRAM_BASE_BASE_FIELD_MASK 0xffffffff +#define DMA_CONFIG_PSRAM_BASE_BASE_FIELD_WIDTH 32 +#define DMA_CONFIG_PSRAM_BASE_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_CONFIG_DDR_BASE_BASE_FIELD; +#define DMA_CONFIG_DDR_BASE_BASE_FIELD_MASK 0xffffffff +#define DMA_CONFIG_DDR_BASE_BASE_FIELD_WIDTH 32 +#define DMA_CONFIG_DDR_BASE_BASE_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_NEMPTY_NEMPTY_FIELD; +#define DMA_DEBUG_NEMPTY_NEMPTY_FIELD_MASK 0x0000ffff +#define DMA_DEBUG_NEMPTY_NEMPTY_FIELD_WIDTH 16 +#define DMA_DEBUG_NEMPTY_NEMPTY_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_NEMPTY_RESERVED0_FIELD; +#define DMA_DEBUG_NEMPTY_RESERVED0_FIELD_MASK 0xffff0000 +#define DMA_DEBUG_NEMPTY_RESERVED0_FIELD_WIDTH 16 +#define DMA_DEBUG_NEMPTY_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec DMA_DEBUG_URGNT_URGNT_FIELD; +#define DMA_DEBUG_URGNT_URGNT_FIELD_MASK 0x0000ffff +#define DMA_DEBUG_URGNT_URGNT_FIELD_WIDTH 16 +#define DMA_DEBUG_URGNT_URGNT_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_URGNT_RESERVED0_FIELD; +#define DMA_DEBUG_URGNT_RESERVED0_FIELD_MASK 0xffff0000 +#define DMA_DEBUG_URGNT_RESERVED0_FIELD_WIDTH 16 +#define DMA_DEBUG_URGNT_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec DMA_DEBUG_SELSRC_SEL_SRC_FIELD; +#define DMA_DEBUG_SELSRC_SEL_SRC_FIELD_MASK 0x0000003f +#define DMA_DEBUG_SELSRC_SEL_SRC_FIELD_WIDTH 6 +#define DMA_DEBUG_SELSRC_SEL_SRC_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_SELSRC_RESERVED0_FIELD; +#define DMA_DEBUG_SELSRC_RESERVED0_FIELD_MASK 0xffffffc0 +#define DMA_DEBUG_SELSRC_RESERVED0_FIELD_WIDTH 26 +#define DMA_DEBUG_SELSRC_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec DMA_DEBUG_REQ_CNT_RX_REQ_CNT_FIELD; +#define DMA_DEBUG_REQ_CNT_RX_REQ_CNT_FIELD_MASK 0x0000003f +#define DMA_DEBUG_REQ_CNT_RX_REQ_CNT_FIELD_WIDTH 6 +#define DMA_DEBUG_REQ_CNT_RX_REQ_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_REQ_CNT_RX_RESERVED0_FIELD; +#define DMA_DEBUG_REQ_CNT_RX_RESERVED0_FIELD_MASK 0xffffffc0 +#define DMA_DEBUG_REQ_CNT_RX_RESERVED0_FIELD_WIDTH 26 +#define DMA_DEBUG_REQ_CNT_RX_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec DMA_DEBUG_REQ_CNT_TX_REQ_CNT_FIELD; +#define DMA_DEBUG_REQ_CNT_TX_REQ_CNT_FIELD_MASK 0x0000003f +#define DMA_DEBUG_REQ_CNT_TX_REQ_CNT_FIELD_WIDTH 6 +#define DMA_DEBUG_REQ_CNT_TX_REQ_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_REQ_CNT_TX_RESERVED0_FIELD; +#define DMA_DEBUG_REQ_CNT_TX_RESERVED0_FIELD_MASK 0xffffffc0 +#define DMA_DEBUG_REQ_CNT_TX_RESERVED0_FIELD_WIDTH 26 +#define DMA_DEBUG_REQ_CNT_TX_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec DMA_DEBUG_REQ_CNT_RX_ACC_REQ_CNT_FIELD; +#define DMA_DEBUG_REQ_CNT_RX_ACC_REQ_CNT_FIELD_MASK 0xffffffff +#define DMA_DEBUG_REQ_CNT_RX_ACC_REQ_CNT_FIELD_WIDTH 32 +#define DMA_DEBUG_REQ_CNT_RX_ACC_REQ_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_REQ_CNT_TX_ACC_REQ_CNT_FIELD; +#define DMA_DEBUG_REQ_CNT_TX_ACC_REQ_CNT_FIELD_MASK 0xffffffff +#define DMA_DEBUG_REQ_CNT_TX_ACC_REQ_CNT_FIELD_WIDTH 32 +#define DMA_DEBUG_REQ_CNT_TX_ACC_REQ_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_UBUSCRDT_DDR_FIELD; +#define DMA_DEBUG_UBUSCRDT_DDR_FIELD_MASK 0x0000001f +#define DMA_DEBUG_UBUSCRDT_DDR_FIELD_WIDTH 5 +#define DMA_DEBUG_UBUSCRDT_DDR_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_UBUSCRDT_RESERVED0_FIELD; +#define DMA_DEBUG_UBUSCRDT_RESERVED0_FIELD_MASK 0x000000e0 +#define DMA_DEBUG_UBUSCRDT_RESERVED0_FIELD_WIDTH 3 +#define DMA_DEBUG_UBUSCRDT_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec DMA_DEBUG_UBUSCRDT_SRAM_FIELD; +#define DMA_DEBUG_UBUSCRDT_SRAM_FIELD_MASK 0x00001f00 +#define DMA_DEBUG_UBUSCRDT_SRAM_FIELD_WIDTH 5 +#define DMA_DEBUG_UBUSCRDT_SRAM_FIELD_SHIFT 8 + +extern const ru_field_rec DMA_DEBUG_UBUSCRDT_RESERVED1_FIELD; +#define DMA_DEBUG_UBUSCRDT_RESERVED1_FIELD_MASK 0xffffe000 +#define DMA_DEBUG_UBUSCRDT_RESERVED1_FIELD_WIDTH 19 +#define DMA_DEBUG_UBUSCRDT_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec DMA_DEBUG_UBUSBYTES_DDR_FIELD; +#define DMA_DEBUG_UBUSBYTES_DDR_FIELD_MASK 0x0000ffff +#define DMA_DEBUG_UBUSBYTES_DDR_FIELD_WIDTH 16 +#define DMA_DEBUG_UBUSBYTES_DDR_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_UBUSBYTES_SRAM_FIELD; +#define DMA_DEBUG_UBUSBYTES_SRAM_FIELD_MASK 0xffff0000 +#define DMA_DEBUG_UBUSBYTES_SRAM_FIELD_WIDTH 16 +#define DMA_DEBUG_UBUSBYTES_SRAM_FIELD_SHIFT 16 + +extern const ru_field_rec DMA_DEBUG_ON_THE_FLY_OTF_FIELD; +#define DMA_DEBUG_ON_THE_FLY_OTF_FIELD_MASK 0x0000003f +#define DMA_DEBUG_ON_THE_FLY_OTF_FIELD_WIDTH 6 +#define DMA_DEBUG_ON_THE_FLY_OTF_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_ON_THE_FLY_RESERVED0_FIELD; +#define DMA_DEBUG_ON_THE_FLY_RESERVED0_FIELD_MASK 0xffffffc0 +#define DMA_DEBUG_ON_THE_FLY_RESERVED0_FIELD_WIDTH 26 +#define DMA_DEBUG_ON_THE_FLY_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec DMA_DEBUG_DBG_SEL_DBGSEL_FIELD; +#define DMA_DEBUG_DBG_SEL_DBGSEL_FIELD_MASK 0x00000007 +#define DMA_DEBUG_DBG_SEL_DBGSEL_FIELD_WIDTH 3 +#define DMA_DEBUG_DBG_SEL_DBGSEL_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_DBG_SEL_RESERVED0_FIELD; +#define DMA_DEBUG_DBG_SEL_RESERVED0_FIELD_MASK 0xfffffff8 +#define DMA_DEBUG_DBG_SEL_RESERVED0_FIELD_WIDTH 29 +#define DMA_DEBUG_DBG_SEL_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec DMA_DEBUG_DEBUGOUT_DBG_FIELD; +#define DMA_DEBUG_DEBUGOUT_DBG_FIELD_MASK 0xffffffff +#define DMA_DEBUG_DEBUGOUT_DBG_FIELD_WIDTH 32 +#define DMA_DEBUG_DEBUGOUT_DBG_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_RDADD_ADDRESS_FIELD; +#define DMA_DEBUG_RDADD_ADDRESS_FIELD_MASK 0x000003ff +#define DMA_DEBUG_RDADD_ADDRESS_FIELD_WIDTH 10 +#define DMA_DEBUG_RDADD_ADDRESS_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_RDADD_RESERVED0_FIELD; +#define DMA_DEBUG_RDADD_RESERVED0_FIELD_MASK 0x0000fc00 +#define DMA_DEBUG_RDADD_RESERVED0_FIELD_WIDTH 6 +#define DMA_DEBUG_RDADD_RESERVED0_FIELD_SHIFT 10 + +extern const ru_field_rec DMA_DEBUG_RDADD_DATACS_FIELD; +#define DMA_DEBUG_RDADD_DATACS_FIELD_MASK 0x00010000 +#define DMA_DEBUG_RDADD_DATACS_FIELD_WIDTH 1 +#define DMA_DEBUG_RDADD_DATACS_FIELD_SHIFT 16 + +extern const ru_field_rec DMA_DEBUG_RDADD_CDCS_FIELD; +#define DMA_DEBUG_RDADD_CDCS_FIELD_MASK 0x00020000 +#define DMA_DEBUG_RDADD_CDCS_FIELD_WIDTH 1 +#define DMA_DEBUG_RDADD_CDCS_FIELD_SHIFT 17 + +extern const ru_field_rec DMA_DEBUG_RDADD_RRCS_FIELD; +#define DMA_DEBUG_RDADD_RRCS_FIELD_MASK 0x00040000 +#define DMA_DEBUG_RDADD_RRCS_FIELD_WIDTH 1 +#define DMA_DEBUG_RDADD_RRCS_FIELD_SHIFT 18 + +extern const ru_field_rec DMA_DEBUG_RDADD_RESERVED1_FIELD; +#define DMA_DEBUG_RDADD_RESERVED1_FIELD_MASK 0xfff80000 +#define DMA_DEBUG_RDADD_RESERVED1_FIELD_WIDTH 13 +#define DMA_DEBUG_RDADD_RESERVED1_FIELD_SHIFT 19 + +extern const ru_field_rec DMA_DEBUG_RDVALID_VALID_FIELD; +#define DMA_DEBUG_RDVALID_VALID_FIELD_MASK 0x00000001 +#define DMA_DEBUG_RDVALID_VALID_FIELD_WIDTH 1 +#define DMA_DEBUG_RDVALID_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_RDVALID_RESERVED0_FIELD; +#define DMA_DEBUG_RDVALID_RESERVED0_FIELD_MASK 0xfffffffe +#define DMA_DEBUG_RDVALID_RESERVED0_FIELD_WIDTH 31 +#define DMA_DEBUG_RDVALID_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec DMA_DEBUG_RDDATARDY_READY_FIELD; +#define DMA_DEBUG_RDDATARDY_READY_FIELD_MASK 0x00000001 +#define DMA_DEBUG_RDDATARDY_READY_FIELD_WIDTH 1 +#define DMA_DEBUG_RDDATARDY_READY_FIELD_SHIFT 0 + +extern const ru_field_rec DMA_DEBUG_RDDATARDY_RESERVED0_FIELD; +#define DMA_DEBUG_RDDATARDY_RESERVED0_FIELD_MASK 0xfffffffe +#define DMA_DEBUG_RDDATARDY_RESERVED0_FIELD_WIDTH 31 +#define DMA_DEBUG_RDDATARDY_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec DMA_DEBUG_RDDATA_DATA_FIELD; +#define DMA_DEBUG_RDDATA_DATA_FIELD_MASK 0xffffffff +#define DMA_DEBUG_RDDATA_DATA_FIELD_WIDTH 32 +#define DMA_DEBUG_RDDATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_MEMORY_DATA_DATA_FIELD; +#define PSRAM_MEMORY_DATA_DATA_FIELD_MASK 0xffffffff +#define PSRAM_MEMORY_DATA_DATA_FIELD_WIDTH 32 +#define PSRAM_MEMORY_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_PERM_EN_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_PERM_EN_FIELD_MASK 0x00000001 +#define PSRAM_CONFIGURATIONS_CTRL_PERM_EN_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_PERM_EN_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_COMB_EN_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_COMB_EN_FIELD_MASK 0x00000002 +#define PSRAM_CONFIGURATIONS_CTRL_COMB_EN_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_COMB_EN_FIELD_SHIFT 1 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_COMB_FULL_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_COMB_FULL_FIELD_MASK 0x00000004 +#define PSRAM_CONFIGURATIONS_CTRL_COMB_FULL_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_COMB_FULL_FIELD_SHIFT 2 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_BANKS8_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_BANKS8_FIELD_MASK 0x00000008 +#define PSRAM_CONFIGURATIONS_CTRL_BANKS8_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_BANKS8_FIELD_SHIFT 3 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_UB0_REQIN_ESWAP_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_UB0_REQIN_ESWAP_FIELD_MASK 0x00000010 +#define PSRAM_CONFIGURATIONS_CTRL_UB0_REQIN_ESWAP_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_UB0_REQIN_ESWAP_FIELD_SHIFT 4 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_UB0_REPOUT_ESWAP_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_UB0_REPOUT_ESWAP_FIELD_MASK 0x00000020 +#define PSRAM_CONFIGURATIONS_CTRL_UB0_REPOUT_ESWAP_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_UB0_REPOUT_ESWAP_FIELD_SHIFT 5 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_UB1_REQIN_ESWAP_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_UB1_REQIN_ESWAP_FIELD_MASK 0x00000040 +#define PSRAM_CONFIGURATIONS_CTRL_UB1_REQIN_ESWAP_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_UB1_REQIN_ESWAP_FIELD_SHIFT 6 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_UB1_REPOUT_ESWAP_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_UB1_REPOUT_ESWAP_FIELD_MASK 0x00000080 +#define PSRAM_CONFIGURATIONS_CTRL_UB1_REPOUT_ESWAP_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_UB1_REPOUT_ESWAP_FIELD_SHIFT 7 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_UB2_REQIN_ESWAP_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_UB2_REQIN_ESWAP_FIELD_MASK 0x00000100 +#define PSRAM_CONFIGURATIONS_CTRL_UB2_REQIN_ESWAP_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_UB2_REQIN_ESWAP_FIELD_SHIFT 8 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_UB2_REPOUT_ESWAP_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_UB2_REPOUT_ESWAP_FIELD_MASK 0x00000200 +#define PSRAM_CONFIGURATIONS_CTRL_UB2_REPOUT_ESWAP_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_UB2_REPOUT_ESWAP_FIELD_SHIFT 9 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_UB3_REQIN_ESWAP_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_UB3_REQIN_ESWAP_FIELD_MASK 0x00000400 +#define PSRAM_CONFIGURATIONS_CTRL_UB3_REQIN_ESWAP_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_UB3_REQIN_ESWAP_FIELD_SHIFT 10 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_UB3_REPOUT_ESWAP_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_UB3_REPOUT_ESWAP_FIELD_MASK 0x00000800 +#define PSRAM_CONFIGURATIONS_CTRL_UB3_REPOUT_ESWAP_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_UB3_REPOUT_ESWAP_FIELD_SHIFT 11 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC0_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC0_FIELD_MASK 0x00001000 +#define PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC0_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC0_FIELD_SHIFT 12 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC1_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC1_FIELD_MASK 0x00002000 +#define PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC1_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC1_FIELD_SHIFT 13 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC2_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC2_FIELD_MASK 0x00004000 +#define PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC2_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_COH_EN_EC2_FIELD_SHIFT 14 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_WT_0_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_WT_0_FIELD_MASK 0x00038000 +#define PSRAM_CONFIGURATIONS_CTRL_WT_0_FIELD_WIDTH 3 +#define PSRAM_CONFIGURATIONS_CTRL_WT_0_FIELD_SHIFT 15 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_WT_1_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_WT_1_FIELD_MASK 0x001c0000 +#define PSRAM_CONFIGURATIONS_CTRL_WT_1_FIELD_WIDTH 3 +#define PSRAM_CONFIGURATIONS_CTRL_WT_1_FIELD_SHIFT 18 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_WT_2_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_WT_2_FIELD_MASK 0x00e00000 +#define PSRAM_CONFIGURATIONS_CTRL_WT_2_FIELD_WIDTH 3 +#define PSRAM_CONFIGURATIONS_CTRL_WT_2_FIELD_SHIFT 21 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_ARB_RR_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_ARB_RR_FIELD_MASK 0x01000000 +#define PSRAM_CONFIGURATIONS_CTRL_ARB_RR_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_ARB_RR_FIELD_SHIFT 24 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_SCRM_EN_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_SCRM_EN_FIELD_MASK 0x02000000 +#define PSRAM_CONFIGURATIONS_CTRL_SCRM_EN_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CTRL_SCRM_EN_FIELD_SHIFT 25 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CTRL_RESERVED0_FIELD; +#define PSRAM_CONFIGURATIONS_CTRL_RESERVED0_FIELD_MASK 0xfc000000 +#define PSRAM_CONFIGURATIONS_CTRL_RESERVED0_FIELD_WIDTH 6 +#define PSRAM_CONFIGURATIONS_CTRL_RESERVED0_FIELD_SHIFT 26 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_SCRM_SEED_VAL_FIELD; +#define PSRAM_CONFIGURATIONS_SCRM_SEED_VAL_FIELD_MASK 0xffffffff +#define PSRAM_CONFIGURATIONS_SCRM_SEED_VAL_FIELD_WIDTH 32 +#define PSRAM_CONFIGURATIONS_SCRM_SEED_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_SCRM_ADDR_VAL_FIELD; +#define PSRAM_CONFIGURATIONS_SCRM_ADDR_VAL_FIELD_MASK 0xffffffff +#define PSRAM_CONFIGURATIONS_SCRM_ADDR_VAL_FIELD_WIDTH 32 +#define PSRAM_CONFIGURATIONS_SCRM_ADDR_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD; +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_MASK 0x00000001 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD; +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD_MASK 0x000000fe +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD_WIDTH 7 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD; +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD_MASK 0x0000ff00 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD_WIDTH 8 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD_SHIFT 8 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD; +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_MASK 0x00010000 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD; +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD_MASK 0x000e0000 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD_WIDTH 3 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD; +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_MASK 0x00700000 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_WIDTH 3 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_SHIFT 20 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD; +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD_MASK 0x00800000 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD_WIDTH 1 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD_SHIFT 23 + +extern const ru_field_rec PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD; +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_MASK 0xff000000 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_WIDTH 8 +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_SHIFT 24 + +extern const ru_field_rec PSRAM_PM_COUNTERS_MUEN_CL0MEN_FIELD; +#define PSRAM_PM_COUNTERS_MUEN_CL0MEN_FIELD_MASK 0x00000001 +#define PSRAM_PM_COUNTERS_MUEN_CL0MEN_FIELD_WIDTH 1 +#define PSRAM_PM_COUNTERS_MUEN_CL0MEN_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_MUEN_CL1MEN_FIELD; +#define PSRAM_PM_COUNTERS_MUEN_CL1MEN_FIELD_MASK 0x00000002 +#define PSRAM_PM_COUNTERS_MUEN_CL1MEN_FIELD_WIDTH 1 +#define PSRAM_PM_COUNTERS_MUEN_CL1MEN_FIELD_SHIFT 1 + +extern const ru_field_rec PSRAM_PM_COUNTERS_MUEN_CL2MEN_FIELD; +#define PSRAM_PM_COUNTERS_MUEN_CL2MEN_FIELD_MASK 0x00000004 +#define PSRAM_PM_COUNTERS_MUEN_CL2MEN_FIELD_WIDTH 1 +#define PSRAM_PM_COUNTERS_MUEN_CL2MEN_FIELD_SHIFT 2 + +extern const ru_field_rec PSRAM_PM_COUNTERS_MUEN_CL3MEN_FIELD; +#define PSRAM_PM_COUNTERS_MUEN_CL3MEN_FIELD_MASK 0x00000008 +#define PSRAM_PM_COUNTERS_MUEN_CL3MEN_FIELD_WIDTH 1 +#define PSRAM_PM_COUNTERS_MUEN_CL3MEN_FIELD_SHIFT 3 + +extern const ru_field_rec PSRAM_PM_COUNTERS_MUEN_CL4MEN_FIELD; +#define PSRAM_PM_COUNTERS_MUEN_CL4MEN_FIELD_MASK 0x00000010 +#define PSRAM_PM_COUNTERS_MUEN_CL4MEN_FIELD_WIDTH 1 +#define PSRAM_PM_COUNTERS_MUEN_CL4MEN_FIELD_SHIFT 4 + +extern const ru_field_rec PSRAM_PM_COUNTERS_MUEN_CL5MEN_FIELD; +#define PSRAM_PM_COUNTERS_MUEN_CL5MEN_FIELD_MASK 0x00000020 +#define PSRAM_PM_COUNTERS_MUEN_CL5MEN_FIELD_WIDTH 1 +#define PSRAM_PM_COUNTERS_MUEN_CL5MEN_FIELD_SHIFT 5 + +extern const ru_field_rec PSRAM_PM_COUNTERS_MUEN_CL6MEN_FIELD; +#define PSRAM_PM_COUNTERS_MUEN_CL6MEN_FIELD_MASK 0x00000040 +#define PSRAM_PM_COUNTERS_MUEN_CL6MEN_FIELD_WIDTH 1 +#define PSRAM_PM_COUNTERS_MUEN_CL6MEN_FIELD_SHIFT 6 + +extern const ru_field_rec PSRAM_PM_COUNTERS_MUEN_RESERVED0_FIELD; +#define PSRAM_PM_COUNTERS_MUEN_RESERVED0_FIELD_MASK 0xffffff80 +#define PSRAM_PM_COUNTERS_MUEN_RESERVED0_FIELD_WIDTH 25 +#define PSRAM_PM_COUNTERS_MUEN_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BWCL_TW_FIELD; +#define PSRAM_PM_COUNTERS_BWCL_TW_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_BWCL_TW_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_BWCL_TW_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BWEN_BWCEN_FIELD; +#define PSRAM_PM_COUNTERS_BWEN_BWCEN_FIELD_MASK 0x00000001 +#define PSRAM_PM_COUNTERS_BWEN_BWCEN_FIELD_WIDTH 1 +#define PSRAM_PM_COUNTERS_BWEN_BWCEN_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BWEN_RESERVED0_FIELD; +#define PSRAM_PM_COUNTERS_BWEN_RESERVED0_FIELD_MASK 0x000000fe +#define PSRAM_PM_COUNTERS_BWEN_RESERVED0_FIELD_WIDTH 7 +#define PSRAM_PM_COUNTERS_BWEN_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BWEN_CBWCEN_FIELD; +#define PSRAM_PM_COUNTERS_BWEN_CBWCEN_FIELD_MASK 0x00000100 +#define PSRAM_PM_COUNTERS_BWEN_CBWCEN_FIELD_WIDTH 1 +#define PSRAM_PM_COUNTERS_BWEN_CBWCEN_FIELD_SHIFT 8 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BWEN_RESERVED1_FIELD; +#define PSRAM_PM_COUNTERS_BWEN_RESERVED1_FIELD_MASK 0xfffffe00 +#define PSRAM_PM_COUNTERS_BWEN_RESERVED1_FIELD_WIDTH 23 +#define PSRAM_PM_COUNTERS_BWEN_RESERVED1_FIELD_SHIFT 9 + +extern const ru_field_rec PSRAM_PM_COUNTERS_MAX_TIME_MAX_FIELD; +#define PSRAM_PM_COUNTERS_MAX_TIME_MAX_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_MAX_TIME_MAX_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_MAX_TIME_MAX_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_ACC_TIME_MAX_FIELD; +#define PSRAM_PM_COUNTERS_ACC_TIME_MAX_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_ACC_TIME_MAX_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_ACC_TIME_MAX_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_ACC_REQ_REQ_FIELD; +#define PSRAM_PM_COUNTERS_ACC_REQ_REQ_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_ACC_REQ_REQ_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_ACC_REQ_REQ_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_LAST_ACC_TIME_TIME_FIELD; +#define PSRAM_PM_COUNTERS_LAST_ACC_TIME_TIME_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_LAST_ACC_TIME_TIME_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_LAST_ACC_TIME_TIME_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_LAST_ACC_REQ_REQ_FIELD; +#define PSRAM_PM_COUNTERS_LAST_ACC_REQ_REQ_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_LAST_ACC_REQ_REQ_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_LAST_ACC_REQ_REQ_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BW_WR_CNT_ACC_CNT_FIELD; +#define PSRAM_PM_COUNTERS_BW_WR_CNT_ACC_CNT_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_BW_WR_CNT_ACC_CNT_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_BW_WR_CNT_ACC_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BW_RD_CNT_ACC_CNT_FIELD; +#define PSRAM_PM_COUNTERS_BW_RD_CNT_ACC_CNT_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_BW_RD_CNT_ACC_CNT_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_BW_RD_CNT_ACC_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BW_WR_CNT_CNT_FIELD; +#define PSRAM_PM_COUNTERS_BW_WR_CNT_CNT_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_BW_WR_CNT_CNT_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_BW_WR_CNT_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BW_RD_CNT_CNT_FIELD; +#define PSRAM_PM_COUNTERS_BW_RD_CNT_CNT_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_BW_RD_CNT_CNT_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_BW_RD_CNT_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_ACC_CNT_FIELD; +#define PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_ACC_CNT_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_ACC_CNT_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_ACC_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_ACC_CNT_FIELD; +#define PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_ACC_CNT_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_ACC_CNT_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_ACC_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_CNT_FIELD; +#define PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_CNT_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_CNT_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_CNT_FIELD; +#define PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_CNT_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_CNT_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_ARB_REQ_VAL_FIELD; +#define PSRAM_PM_COUNTERS_ARB_REQ_VAL_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_ARB_REQ_VAL_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_ARB_REQ_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_ARB_ARB_VAL_FIELD; +#define PSRAM_PM_COUNTERS_ARB_ARB_VAL_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_ARB_ARB_VAL_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_ARB_ARB_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_ARB_COMB_VAL_FIELD; +#define PSRAM_PM_COUNTERS_ARB_COMB_VAL_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_ARB_COMB_VAL_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_ARB_COMB_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_ARB_COMB_4_VAL_FIELD; +#define PSRAM_PM_COUNTERS_ARB_COMB_4_VAL_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_ARB_COMB_4_VAL_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_ARB_COMB_4_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_PM_COUNTERS_ARB_COMB_BANKS_VAL_FIELD; +#define PSRAM_PM_COUNTERS_ARB_COMB_BANKS_VAL_FIELD_MASK 0xffffffff +#define PSRAM_PM_COUNTERS_ARB_COMB_BANKS_VAL_FIELD_WIDTH 32 +#define PSRAM_PM_COUNTERS_ARB_COMB_BANKS_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBGSEL_VS_FIELD; +#define PSRAM_DEBUG_DBGSEL_VS_FIELD_MASK 0x000000ff +#define PSRAM_DEBUG_DBGSEL_VS_FIELD_WIDTH 8 +#define PSRAM_DEBUG_DBGSEL_VS_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBGSEL_RESERVED0_FIELD; +#define PSRAM_DEBUG_DBGSEL_RESERVED0_FIELD_MASK 0xffffff00 +#define PSRAM_DEBUG_DBGSEL_RESERVED0_FIELD_WIDTH 24 +#define PSRAM_DEBUG_DBGSEL_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec PSRAM_DEBUG_DBGBUS_VB_FIELD; +#define PSRAM_DEBUG_DBGBUS_VB_FIELD_MASK 0xffffffff +#define PSRAM_DEBUG_DBGBUS_VB_FIELD_WIDTH 32 +#define PSRAM_DEBUG_DBGBUS_VB_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_REQ_VEC_MIPSC_REQ_FIELD; +#define PSRAM_DEBUG_REQ_VEC_MIPSC_REQ_FIELD_MASK 0x00000001 +#define PSRAM_DEBUG_REQ_VEC_MIPSC_REQ_FIELD_WIDTH 1 +#define PSRAM_DEBUG_REQ_VEC_MIPSC_REQ_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_REQ_VEC_RNRA_REQ_FIELD; +#define PSRAM_DEBUG_REQ_VEC_RNRA_REQ_FIELD_MASK 0x00000002 +#define PSRAM_DEBUG_REQ_VEC_RNRA_REQ_FIELD_WIDTH 1 +#define PSRAM_DEBUG_REQ_VEC_RNRA_REQ_FIELD_SHIFT 1 + +extern const ru_field_rec PSRAM_DEBUG_REQ_VEC_RNRB_REQ_FIELD; +#define PSRAM_DEBUG_REQ_VEC_RNRB_REQ_FIELD_MASK 0x00000004 +#define PSRAM_DEBUG_REQ_VEC_RNRB_REQ_FIELD_WIDTH 1 +#define PSRAM_DEBUG_REQ_VEC_RNRB_REQ_FIELD_SHIFT 2 + +extern const ru_field_rec PSRAM_DEBUG_REQ_VEC_SDMA_REQ_FIELD; +#define PSRAM_DEBUG_REQ_VEC_SDMA_REQ_FIELD_MASK 0x00000008 +#define PSRAM_DEBUG_REQ_VEC_SDMA_REQ_FIELD_WIDTH 1 +#define PSRAM_DEBUG_REQ_VEC_SDMA_REQ_FIELD_SHIFT 3 + +extern const ru_field_rec PSRAM_DEBUG_REQ_VEC_MIPSD_REQ_FIELD; +#define PSRAM_DEBUG_REQ_VEC_MIPSD_REQ_FIELD_MASK 0x00000010 +#define PSRAM_DEBUG_REQ_VEC_MIPSD_REQ_FIELD_WIDTH 1 +#define PSRAM_DEBUG_REQ_VEC_MIPSD_REQ_FIELD_SHIFT 4 + +extern const ru_field_rec PSRAM_DEBUG_REQ_VEC_MIPSDMA_REQ_FIELD; +#define PSRAM_DEBUG_REQ_VEC_MIPSDMA_REQ_FIELD_MASK 0x00000020 +#define PSRAM_DEBUG_REQ_VEC_MIPSDMA_REQ_FIELD_WIDTH 1 +#define PSRAM_DEBUG_REQ_VEC_MIPSDMA_REQ_FIELD_SHIFT 5 + +extern const ru_field_rec PSRAM_DEBUG_REQ_VEC_RESERVED0_FIELD; +#define PSRAM_DEBUG_REQ_VEC_RESERVED0_FIELD_MASK 0xffffffc0 +#define PSRAM_DEBUG_REQ_VEC_RESERVED0_FIELD_WIDTH 26 +#define PSRAM_DEBUG_REQ_VEC_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG1_BANK_SEL_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG1_BANK_SEL_FIELD_MASK 0x00000007 +#define PSRAM_DEBUG_DBG_CAP_CFG1_BANK_SEL_FIELD_WIDTH 3 +#define PSRAM_DEBUG_DBG_CAP_CFG1_BANK_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG1_RESERVED0_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG1_RESERVED0_FIELD_MASK 0x00000008 +#define PSRAM_DEBUG_DBG_CAP_CFG1_RESERVED0_FIELD_WIDTH 1 +#define PSRAM_DEBUG_DBG_CAP_CFG1_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG1_BANK_ADD_SEL_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG1_BANK_ADD_SEL_FIELD_MASK 0x0000fff0 +#define PSRAM_DEBUG_DBG_CAP_CFG1_BANK_ADD_SEL_FIELD_WIDTH 12 +#define PSRAM_DEBUG_DBG_CAP_CFG1_BANK_ADD_SEL_FIELD_SHIFT 4 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG1_CAP_WR_EN_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG1_CAP_WR_EN_FIELD_MASK 0x00010000 +#define PSRAM_DEBUG_DBG_CAP_CFG1_CAP_WR_EN_FIELD_WIDTH 1 +#define PSRAM_DEBUG_DBG_CAP_CFG1_CAP_WR_EN_FIELD_SHIFT 16 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG1_CAP_RD_EN_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG1_CAP_RD_EN_FIELD_MASK 0x00020000 +#define PSRAM_DEBUG_DBG_CAP_CFG1_CAP_RD_EN_FIELD_WIDTH 1 +#define PSRAM_DEBUG_DBG_CAP_CFG1_CAP_RD_EN_FIELD_SHIFT 17 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG1_RESERVED1_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG1_RESERVED1_FIELD_MASK 0xfffc0000 +#define PSRAM_DEBUG_DBG_CAP_CFG1_RESERVED1_FIELD_WIDTH 14 +#define PSRAM_DEBUG_DBG_CAP_CFG1_RESERVED1_FIELD_SHIFT 18 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG2_MAX_WR_CAP_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG2_MAX_WR_CAP_FIELD_MASK 0x000000ff +#define PSRAM_DEBUG_DBG_CAP_CFG2_MAX_WR_CAP_FIELD_WIDTH 8 +#define PSRAM_DEBUG_DBG_CAP_CFG2_MAX_WR_CAP_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG2_MAX_RD_CAP_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG2_MAX_RD_CAP_FIELD_MASK 0x0000ff00 +#define PSRAM_DEBUG_DBG_CAP_CFG2_MAX_RD_CAP_FIELD_WIDTH 8 +#define PSRAM_DEBUG_DBG_CAP_CFG2_MAX_RD_CAP_FIELD_SHIFT 8 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG2_WR_CAP_CNT_RST_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG2_WR_CAP_CNT_RST_FIELD_MASK 0x00010000 +#define PSRAM_DEBUG_DBG_CAP_CFG2_WR_CAP_CNT_RST_FIELD_WIDTH 1 +#define PSRAM_DEBUG_DBG_CAP_CFG2_WR_CAP_CNT_RST_FIELD_SHIFT 16 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG2_RD_CAP_CNT_RST_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG2_RD_CAP_CNT_RST_FIELD_MASK 0x00020000 +#define PSRAM_DEBUG_DBG_CAP_CFG2_RD_CAP_CNT_RST_FIELD_WIDTH 1 +#define PSRAM_DEBUG_DBG_CAP_CFG2_RD_CAP_CNT_RST_FIELD_SHIFT 17 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_CFG2_RESERVED0_FIELD; +#define PSRAM_DEBUG_DBG_CAP_CFG2_RESERVED0_FIELD_MASK 0xfffc0000 +#define PSRAM_DEBUG_DBG_CAP_CFG2_RESERVED0_FIELD_WIDTH 14 +#define PSRAM_DEBUG_DBG_CAP_CFG2_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_ST_WR_CAP_NUM_ST_FIELD; +#define PSRAM_DEBUG_DBG_CAP_ST_WR_CAP_NUM_ST_FIELD_MASK 0x000000ff +#define PSRAM_DEBUG_DBG_CAP_ST_WR_CAP_NUM_ST_FIELD_WIDTH 8 +#define PSRAM_DEBUG_DBG_CAP_ST_WR_CAP_NUM_ST_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_ST_RD_CAP_NUM_ST_FIELD; +#define PSRAM_DEBUG_DBG_CAP_ST_RD_CAP_NUM_ST_FIELD_MASK 0x0000ff00 +#define PSRAM_DEBUG_DBG_CAP_ST_RD_CAP_NUM_ST_FIELD_WIDTH 8 +#define PSRAM_DEBUG_DBG_CAP_ST_RD_CAP_NUM_ST_FIELD_SHIFT 8 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_W0_CV_FIELD; +#define PSRAM_DEBUG_DBG_CAP_W0_CV_FIELD_MASK 0xffffffff +#define PSRAM_DEBUG_DBG_CAP_W0_CV_FIELD_WIDTH 32 +#define PSRAM_DEBUG_DBG_CAP_W0_CV_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_W1_CV_FIELD; +#define PSRAM_DEBUG_DBG_CAP_W1_CV_FIELD_MASK 0xffffffff +#define PSRAM_DEBUG_DBG_CAP_W1_CV_FIELD_WIDTH 32 +#define PSRAM_DEBUG_DBG_CAP_W1_CV_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_W2_CV_FIELD; +#define PSRAM_DEBUG_DBG_CAP_W2_CV_FIELD_MASK 0xffffffff +#define PSRAM_DEBUG_DBG_CAP_W2_CV_FIELD_WIDTH 32 +#define PSRAM_DEBUG_DBG_CAP_W2_CV_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_W3_CV_FIELD; +#define PSRAM_DEBUG_DBG_CAP_W3_CV_FIELD_MASK 0xffffffff +#define PSRAM_DEBUG_DBG_CAP_W3_CV_FIELD_WIDTH 32 +#define PSRAM_DEBUG_DBG_CAP_W3_CV_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_WMSK_CV_FIELD; +#define PSRAM_DEBUG_DBG_CAP_WMSK_CV_FIELD_MASK 0xffffffff +#define PSRAM_DEBUG_DBG_CAP_WMSK_CV_FIELD_WIDTH 32 +#define PSRAM_DEBUG_DBG_CAP_WMSK_CV_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_R0_CV_FIELD; +#define PSRAM_DEBUG_DBG_CAP_R0_CV_FIELD_MASK 0xffffffff +#define PSRAM_DEBUG_DBG_CAP_R0_CV_FIELD_WIDTH 32 +#define PSRAM_DEBUG_DBG_CAP_R0_CV_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_R1_CV_FIELD; +#define PSRAM_DEBUG_DBG_CAP_R1_CV_FIELD_MASK 0xffffffff +#define PSRAM_DEBUG_DBG_CAP_R1_CV_FIELD_WIDTH 32 +#define PSRAM_DEBUG_DBG_CAP_R1_CV_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_R2_CV_FIELD; +#define PSRAM_DEBUG_DBG_CAP_R2_CV_FIELD_MASK 0xffffffff +#define PSRAM_DEBUG_DBG_CAP_R2_CV_FIELD_WIDTH 32 +#define PSRAM_DEBUG_DBG_CAP_R2_CV_FIELD_SHIFT 0 + +extern const ru_field_rec PSRAM_DEBUG_DBG_CAP_R3_CV_FIELD; +#define PSRAM_DEBUG_DBG_CAP_R3_CV_FIELD_MASK 0xffffffff +#define PSRAM_DEBUG_DBG_CAP_R3_CV_FIELD_WIDTH 32 +#define PSRAM_DEBUG_DBG_CAP_R3_CV_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_IPG_HD_BKP_CNTL_RESERVED0_FIELD; +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_RESERVED0_FIELD_MASK 0xffffff80 +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_RESERVED0_FIELD_WIDTH 25 +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec UNIMAC_RDP_IPG_HD_BKP_CNTL_IPG_CONFIG_RX_FIELD; +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_IPG_CONFIG_RX_FIELD_MASK 0x0000007c +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_IPG_CONFIG_RX_FIELD_WIDTH 5 +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_IPG_CONFIG_RX_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_IPG_HD_BKP_CNTL_HD_FC_BKOFF_OK_FIELD; +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_HD_FC_BKOFF_OK_FIELD_MASK 0x00000002 +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_HD_FC_BKOFF_OK_FIELD_WIDTH 1 +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_HD_FC_BKOFF_OK_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_IPG_HD_BKP_CNTL_HD_FC_ENA_FIELD; +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_HD_FC_ENA_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_HD_FC_ENA_FIELD_WIDTH 1 +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_HD_FC_ENA_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_RESERVED0_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_RESERVED0_FIELD_MASK 0x80000000 +#define UNIMAC_RDP_COMMAND_CONFIG_RESERVED0_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_RESERVED0_FIELD_SHIFT 31 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_RUNT_FILTER_DIS_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_RUNT_FILTER_DIS_FIELD_MASK 0x40000000 +#define UNIMAC_RDP_COMMAND_CONFIG_RUNT_FILTER_DIS_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_RUNT_FILTER_DIS_FIELD_SHIFT 30 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_OOB_EFC_DISAB_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_OOB_EFC_DISAB_FIELD_MASK 0x20000000 +#define UNIMAC_RDP_COMMAND_CONFIG_OOB_EFC_DISAB_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_OOB_EFC_DISAB_FIELD_SHIFT 29 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_IGNORE_TX_PAUSE_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_IGNORE_TX_PAUSE_FIELD_MASK 0x10000000 +#define UNIMAC_RDP_COMMAND_CONFIG_IGNORE_TX_PAUSE_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_IGNORE_TX_PAUSE_FIELD_SHIFT 28 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_FD_TX_URUN_FIX_EN_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_FD_TX_URUN_FIX_EN_FIELD_MASK 0x08000000 +#define UNIMAC_RDP_COMMAND_CONFIG_FD_TX_URUN_FIX_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_FD_TX_URUN_FIX_EN_FIELD_SHIFT 27 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_RESERVED1_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_RESERVED1_FIELD_MASK 0x04000000 +#define UNIMAC_RDP_COMMAND_CONFIG_RESERVED1_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_RESERVED1_FIELD_SHIFT 26 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_LINE_LOOPBACK_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_LINE_LOOPBACK_FIELD_MASK 0x02000000 +#define UNIMAC_RDP_COMMAND_CONFIG_LINE_LOOPBACK_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_LINE_LOOPBACK_FIELD_SHIFT 25 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_NO_LGTH_CHECK_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_NO_LGTH_CHECK_FIELD_MASK 0x01000000 +#define UNIMAC_RDP_COMMAND_CONFIG_NO_LGTH_CHECK_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_NO_LGTH_CHECK_FIELD_SHIFT 24 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_CNTL_FRM_ENA_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_CNTL_FRM_ENA_FIELD_MASK 0x00800000 +#define UNIMAC_RDP_COMMAND_CONFIG_CNTL_FRM_ENA_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_CNTL_FRM_ENA_FIELD_SHIFT 23 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_ENA_EXT_CONFIG_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_ENA_EXT_CONFIG_FIELD_MASK 0x00400000 +#define UNIMAC_RDP_COMMAND_CONFIG_ENA_EXT_CONFIG_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_ENA_EXT_CONFIG_FIELD_SHIFT 22 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_EN_INTERNAL_TX_CRS_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_EN_INTERNAL_TX_CRS_FIELD_MASK 0x00200000 +#define UNIMAC_RDP_COMMAND_CONFIG_EN_INTERNAL_TX_CRS_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_EN_INTERNAL_TX_CRS_FIELD_SHIFT 21 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_BYPASS_OOB_EFC_SYNCHRONIZER_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_BYPASS_OOB_EFC_SYNCHRONIZER_FIELD_MASK 0x00100000 +#define UNIMAC_RDP_COMMAND_CONFIG_BYPASS_OOB_EFC_SYNCHRONIZER_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_BYPASS_OOB_EFC_SYNCHRONIZER_FIELD_SHIFT 20 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_OOB_EFC_MODE_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_OOB_EFC_MODE_FIELD_MASK 0x00080000 +#define UNIMAC_RDP_COMMAND_CONFIG_OOB_EFC_MODE_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_OOB_EFC_MODE_FIELD_SHIFT 19 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_SW_OVERRIDE_RX_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_SW_OVERRIDE_RX_FIELD_MASK 0x00040000 +#define UNIMAC_RDP_COMMAND_CONFIG_SW_OVERRIDE_RX_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_SW_OVERRIDE_RX_FIELD_SHIFT 18 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_SW_OVERRIDE_TX_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_SW_OVERRIDE_TX_FIELD_MASK 0x00020000 +#define UNIMAC_RDP_COMMAND_CONFIG_SW_OVERRIDE_TX_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_SW_OVERRIDE_TX_FIELD_SHIFT 17 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_MAC_LOOP_CON_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_MAC_LOOP_CON_FIELD_MASK 0x00010000 +#define UNIMAC_RDP_COMMAND_CONFIG_MAC_LOOP_CON_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_MAC_LOOP_CON_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_LOOP_ENA_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_LOOP_ENA_FIELD_MASK 0x00008000 +#define UNIMAC_RDP_COMMAND_CONFIG_LOOP_ENA_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_LOOP_ENA_FIELD_SHIFT 15 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_FCS_CORRUPT_URUN_EN_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_FCS_CORRUPT_URUN_EN_FIELD_MASK 0x00004000 +#define UNIMAC_RDP_COMMAND_CONFIG_FCS_CORRUPT_URUN_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_FCS_CORRUPT_URUN_EN_FIELD_SHIFT 14 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_SW_RESET_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_SW_RESET_FIELD_MASK 0x00002000 +#define UNIMAC_RDP_COMMAND_CONFIG_SW_RESET_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_SW_RESET_FIELD_SHIFT 13 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_OVERFLOW_EN_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_OVERFLOW_EN_FIELD_MASK 0x00001000 +#define UNIMAC_RDP_COMMAND_CONFIG_OVERFLOW_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_OVERFLOW_EN_FIELD_SHIFT 12 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_RX_LOW_LATENCY_EN_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_RX_LOW_LATENCY_EN_FIELD_MASK 0x00000800 +#define UNIMAC_RDP_COMMAND_CONFIG_RX_LOW_LATENCY_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_RX_LOW_LATENCY_EN_FIELD_SHIFT 11 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_HD_ENA_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_HD_ENA_FIELD_MASK 0x00000400 +#define UNIMAC_RDP_COMMAND_CONFIG_HD_ENA_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_HD_ENA_FIELD_SHIFT 10 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_TX_ADDR_INS_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_TX_ADDR_INS_FIELD_MASK 0x00000200 +#define UNIMAC_RDP_COMMAND_CONFIG_TX_ADDR_INS_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_TX_ADDR_INS_FIELD_SHIFT 9 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_PAUSE_IGNORE_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_PAUSE_IGNORE_FIELD_MASK 0x00000100 +#define UNIMAC_RDP_COMMAND_CONFIG_PAUSE_IGNORE_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_PAUSE_IGNORE_FIELD_SHIFT 8 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_PAUSE_FWD_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_PAUSE_FWD_FIELD_MASK 0x00000080 +#define UNIMAC_RDP_COMMAND_CONFIG_PAUSE_FWD_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_PAUSE_FWD_FIELD_SHIFT 7 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_CRC_FWD_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_CRC_FWD_FIELD_MASK 0x00000040 +#define UNIMAC_RDP_COMMAND_CONFIG_CRC_FWD_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_CRC_FWD_FIELD_SHIFT 6 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_PAD_EN_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_PAD_EN_FIELD_MASK 0x00000020 +#define UNIMAC_RDP_COMMAND_CONFIG_PAD_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_PAD_EN_FIELD_SHIFT 5 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_PROMIS_EN_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_PROMIS_EN_FIELD_MASK 0x00000010 +#define UNIMAC_RDP_COMMAND_CONFIG_PROMIS_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_PROMIS_EN_FIELD_SHIFT 4 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_ETH_SPEED_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_ETH_SPEED_FIELD_MASK 0x0000000c +#define UNIMAC_RDP_COMMAND_CONFIG_ETH_SPEED_FIELD_WIDTH 2 +#define UNIMAC_RDP_COMMAND_CONFIG_ETH_SPEED_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_RX_ENA_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_RX_ENA_FIELD_MASK 0x00000002 +#define UNIMAC_RDP_COMMAND_CONFIG_RX_ENA_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_RX_ENA_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_COMMAND_CONFIG_TX_ENA_FIELD; +#define UNIMAC_RDP_COMMAND_CONFIG_TX_ENA_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_COMMAND_CONFIG_TX_ENA_FIELD_WIDTH 1 +#define UNIMAC_RDP_COMMAND_CONFIG_TX_ENA_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MAC_0_MAC_ADDR0_FIELD; +#define UNIMAC_RDP_MAC_0_MAC_ADDR0_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_MAC_0_MAC_ADDR0_FIELD_WIDTH 32 +#define UNIMAC_RDP_MAC_0_MAC_ADDR0_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MAC_1_RESERVED0_FIELD; +#define UNIMAC_RDP_MAC_1_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_MAC_1_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_MAC_1_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_MAC_1_MAC_ADDR1_FIELD; +#define UNIMAC_RDP_MAC_1_MAC_ADDR1_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_MAC_1_MAC_ADDR1_FIELD_WIDTH 16 +#define UNIMAC_RDP_MAC_1_MAC_ADDR1_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_FRM_LENGTH_RESERVED0_FIELD; +#define UNIMAC_RDP_FRM_LENGTH_RESERVED0_FIELD_MASK 0xffffc000 +#define UNIMAC_RDP_FRM_LENGTH_RESERVED0_FIELD_WIDTH 18 +#define UNIMAC_RDP_FRM_LENGTH_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec UNIMAC_RDP_FRM_LENGTH_MAXFR_FIELD; +#define UNIMAC_RDP_FRM_LENGTH_MAXFR_FIELD_MASK 0x00003fff +#define UNIMAC_RDP_FRM_LENGTH_MAXFR_FIELD_WIDTH 14 +#define UNIMAC_RDP_FRM_LENGTH_MAXFR_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_PAUSE_QUANT_RESERVED0_FIELD; +#define UNIMAC_RDP_PAUSE_QUANT_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_PAUSE_QUANT_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_PAUSE_QUANT_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_PAUSE_QUANT_PAUSE_QUANT_FIELD; +#define UNIMAC_RDP_PAUSE_QUANT_PAUSE_QUANT_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_PAUSE_QUANT_PAUSE_QUANT_FIELD_WIDTH 16 +#define UNIMAC_RDP_PAUSE_QUANT_PAUSE_QUANT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TX_TS_SEQ_ID_RESERVED0_FIELD; +#define UNIMAC_RDP_TX_TS_SEQ_ID_RESERVED0_FIELD_MASK 0xfffe0000 +#define UNIMAC_RDP_TX_TS_SEQ_ID_RESERVED0_FIELD_WIDTH 15 +#define UNIMAC_RDP_TX_TS_SEQ_ID_RESERVED0_FIELD_SHIFT 17 + +extern const ru_field_rec UNIMAC_RDP_TX_TS_SEQ_ID_TSTS_VALID_FIELD; +#define UNIMAC_RDP_TX_TS_SEQ_ID_TSTS_VALID_FIELD_MASK 0x00010000 +#define UNIMAC_RDP_TX_TS_SEQ_ID_TSTS_VALID_FIELD_WIDTH 1 +#define UNIMAC_RDP_TX_TS_SEQ_ID_TSTS_VALID_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_TX_TS_SEQ_ID_TSTS_SEQ_ID_FIELD; +#define UNIMAC_RDP_TX_TS_SEQ_ID_TSTS_SEQ_ID_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_TX_TS_SEQ_ID_TSTS_SEQ_ID_FIELD_WIDTH 16 +#define UNIMAC_RDP_TX_TS_SEQ_ID_TSTS_SEQ_ID_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_SFD_OFFSET_RESERVED0_FIELD; +#define UNIMAC_RDP_SFD_OFFSET_RESERVED0_FIELD_MASK 0xfffffff0 +#define UNIMAC_RDP_SFD_OFFSET_RESERVED0_FIELD_WIDTH 28 +#define UNIMAC_RDP_SFD_OFFSET_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec UNIMAC_RDP_SFD_OFFSET_SFD_OFFSET_FIELD; +#define UNIMAC_RDP_SFD_OFFSET_SFD_OFFSET_FIELD_MASK 0x0000000f +#define UNIMAC_RDP_SFD_OFFSET_SFD_OFFSET_FIELD_WIDTH 4 +#define UNIMAC_RDP_SFD_OFFSET_SFD_OFFSET_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MAC_MODE_RESERVED0_FIELD; +#define UNIMAC_RDP_MAC_MODE_RESERVED0_FIELD_MASK 0xffffffc0 +#define UNIMAC_RDP_MAC_MODE_RESERVED0_FIELD_WIDTH 26 +#define UNIMAC_RDP_MAC_MODE_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec UNIMAC_RDP_MAC_MODE_LINK_STATUS_FIELD; +#define UNIMAC_RDP_MAC_MODE_LINK_STATUS_FIELD_MASK 0x00000020 +#define UNIMAC_RDP_MAC_MODE_LINK_STATUS_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_MODE_LINK_STATUS_FIELD_SHIFT 5 + +extern const ru_field_rec UNIMAC_RDP_MAC_MODE_MAC_TX_PAUSE_FIELD; +#define UNIMAC_RDP_MAC_MODE_MAC_TX_PAUSE_FIELD_MASK 0x00000010 +#define UNIMAC_RDP_MAC_MODE_MAC_TX_PAUSE_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_MODE_MAC_TX_PAUSE_FIELD_SHIFT 4 + +extern const ru_field_rec UNIMAC_RDP_MAC_MODE_MAC_RX_PAUSE_FIELD; +#define UNIMAC_RDP_MAC_MODE_MAC_RX_PAUSE_FIELD_MASK 0x00000008 +#define UNIMAC_RDP_MAC_MODE_MAC_RX_PAUSE_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_MODE_MAC_RX_PAUSE_FIELD_SHIFT 3 + +extern const ru_field_rec UNIMAC_RDP_MAC_MODE_MAC_DUPLEX_FIELD; +#define UNIMAC_RDP_MAC_MODE_MAC_DUPLEX_FIELD_MASK 0x00000004 +#define UNIMAC_RDP_MAC_MODE_MAC_DUPLEX_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_MODE_MAC_DUPLEX_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_MAC_MODE_MAC_SPEED_FIELD; +#define UNIMAC_RDP_MAC_MODE_MAC_SPEED_FIELD_MASK 0x00000003 +#define UNIMAC_RDP_MAC_MODE_MAC_SPEED_FIELD_WIDTH 2 +#define UNIMAC_RDP_MAC_MODE_MAC_SPEED_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TAG_0_RESERVED0_FIELD; +#define UNIMAC_RDP_TAG_0_RESERVED0_FIELD_MASK 0xfffe0000 +#define UNIMAC_RDP_TAG_0_RESERVED0_FIELD_WIDTH 15 +#define UNIMAC_RDP_TAG_0_RESERVED0_FIELD_SHIFT 17 + +extern const ru_field_rec UNIMAC_RDP_TAG_0_CONFIG_OUTER_TPID_ENABLE_FIELD; +#define UNIMAC_RDP_TAG_0_CONFIG_OUTER_TPID_ENABLE_FIELD_MASK 0x00010000 +#define UNIMAC_RDP_TAG_0_CONFIG_OUTER_TPID_ENABLE_FIELD_WIDTH 1 +#define UNIMAC_RDP_TAG_0_CONFIG_OUTER_TPID_ENABLE_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_TAG_0_FRM_TAG_0_FIELD; +#define UNIMAC_RDP_TAG_0_FRM_TAG_0_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_TAG_0_FRM_TAG_0_FIELD_WIDTH 16 +#define UNIMAC_RDP_TAG_0_FRM_TAG_0_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TAG_1_RESERVED0_FIELD; +#define UNIMAC_RDP_TAG_1_RESERVED0_FIELD_MASK 0xfffe0000 +#define UNIMAC_RDP_TAG_1_RESERVED0_FIELD_WIDTH 15 +#define UNIMAC_RDP_TAG_1_RESERVED0_FIELD_SHIFT 17 + +extern const ru_field_rec UNIMAC_RDP_TAG_1_CONFIG_INNER_TPID_ENABLE_FIELD; +#define UNIMAC_RDP_TAG_1_CONFIG_INNER_TPID_ENABLE_FIELD_MASK 0x00010000 +#define UNIMAC_RDP_TAG_1_CONFIG_INNER_TPID_ENABLE_FIELD_WIDTH 1 +#define UNIMAC_RDP_TAG_1_CONFIG_INNER_TPID_ENABLE_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_TAG_1_FRM_TAG_1_FIELD; +#define UNIMAC_RDP_TAG_1_FRM_TAG_1_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_TAG_1_FRM_TAG_1_FIELD_WIDTH 16 +#define UNIMAC_RDP_TAG_1_FRM_TAG_1_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_RESERVED0_FIELD; +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_RESERVED0_FIELD_MASK 0xfffc0000 +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_RESERVED0_FIELD_WIDTH 14 +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_FIX_FIELD; +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_FIX_FIELD_MASK 0x00020000 +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_FIX_FIELD_WIDTH 1 +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_FIX_FIELD_SHIFT 17 + +extern const ru_field_rec UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_CONTROL_FIELD; +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_CONTROL_FIELD_MASK 0x00010000 +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_CONTROL_FIELD_WIDTH 1 +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_CONTROL_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_VALUE_FIELD; +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_VALUE_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_VALUE_FIELD_WIDTH 16 +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_SCALE_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TX_PREAMBLE_RESERVED0_FIELD; +#define UNIMAC_RDP_TX_PREAMBLE_RESERVED0_FIELD_MASK 0xfffffff8 +#define UNIMAC_RDP_TX_PREAMBLE_RESERVED0_FIELD_WIDTH 29 +#define UNIMAC_RDP_TX_PREAMBLE_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec UNIMAC_RDP_TX_PREAMBLE_TX_PREAMBLE_FIELD; +#define UNIMAC_RDP_TX_PREAMBLE_TX_PREAMBLE_FIELD_MASK 0x00000007 +#define UNIMAC_RDP_TX_PREAMBLE_TX_PREAMBLE_FIELD_WIDTH 3 +#define UNIMAC_RDP_TX_PREAMBLE_TX_PREAMBLE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TX_IPG_LENGTH_RESERVED0_FIELD; +#define UNIMAC_RDP_TX_IPG_LENGTH_RESERVED0_FIELD_MASK 0xffff8000 +#define UNIMAC_RDP_TX_IPG_LENGTH_RESERVED0_FIELD_WIDTH 17 +#define UNIMAC_RDP_TX_IPG_LENGTH_RESERVED0_FIELD_SHIFT 15 + +extern const ru_field_rec UNIMAC_RDP_TX_IPG_LENGTH_TX_MIN_PKT_SIZE_FIELD; +#define UNIMAC_RDP_TX_IPG_LENGTH_TX_MIN_PKT_SIZE_FIELD_MASK 0x00007f00 +#define UNIMAC_RDP_TX_IPG_LENGTH_TX_MIN_PKT_SIZE_FIELD_WIDTH 7 +#define UNIMAC_RDP_TX_IPG_LENGTH_TX_MIN_PKT_SIZE_FIELD_SHIFT 8 + +extern const ru_field_rec UNIMAC_RDP_TX_IPG_LENGTH_RESERVED1_FIELD; +#define UNIMAC_RDP_TX_IPG_LENGTH_RESERVED1_FIELD_MASK 0x00000080 +#define UNIMAC_RDP_TX_IPG_LENGTH_RESERVED1_FIELD_WIDTH 1 +#define UNIMAC_RDP_TX_IPG_LENGTH_RESERVED1_FIELD_SHIFT 7 + +extern const ru_field_rec UNIMAC_RDP_TX_IPG_LENGTH_TX_IPG_LENGTH_FIELD; +#define UNIMAC_RDP_TX_IPG_LENGTH_TX_IPG_LENGTH_FIELD_MASK 0x0000007f +#define UNIMAC_RDP_TX_IPG_LENGTH_TX_IPG_LENGTH_FIELD_WIDTH 7 +#define UNIMAC_RDP_TX_IPG_LENGTH_TX_IPG_LENGTH_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_PFC_XOFF_TIMER_RESERVED0_FIELD; +#define UNIMAC_RDP_PFC_XOFF_TIMER_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_PFC_XOFF_TIMER_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_PFC_XOFF_TIMER_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_PFC_XOFF_TIMER_PFC_XOFF_TIMER_FIELD; +#define UNIMAC_RDP_PFC_XOFF_TIMER_PFC_XOFF_TIMER_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_PFC_XOFF_TIMER_PFC_XOFF_TIMER_FIELD_WIDTH 16 +#define UNIMAC_RDP_PFC_XOFF_TIMER_PFC_XOFF_TIMER_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_UMAC_EEE_CTRL_RESERVED0_FIELD; +#define UNIMAC_RDP_UMAC_EEE_CTRL_RESERVED0_FIELD_MASK 0xffffff00 +#define UNIMAC_RDP_UMAC_EEE_CTRL_RESERVED0_FIELD_WIDTH 24 +#define UNIMAC_RDP_UMAC_EEE_CTRL_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec UNIMAC_RDP_UMAC_EEE_CTRL_LP_IDLE_PREDICTION_MODE_FIELD; +#define UNIMAC_RDP_UMAC_EEE_CTRL_LP_IDLE_PREDICTION_MODE_FIELD_MASK 0x00000080 +#define UNIMAC_RDP_UMAC_EEE_CTRL_LP_IDLE_PREDICTION_MODE_FIELD_WIDTH 1 +#define UNIMAC_RDP_UMAC_EEE_CTRL_LP_IDLE_PREDICTION_MODE_FIELD_SHIFT 7 + +extern const ru_field_rec UNIMAC_RDP_UMAC_EEE_CTRL_DIS_EEE_10M_FIELD; +#define UNIMAC_RDP_UMAC_EEE_CTRL_DIS_EEE_10M_FIELD_MASK 0x00000040 +#define UNIMAC_RDP_UMAC_EEE_CTRL_DIS_EEE_10M_FIELD_WIDTH 1 +#define UNIMAC_RDP_UMAC_EEE_CTRL_DIS_EEE_10M_FIELD_SHIFT 6 + +extern const ru_field_rec UNIMAC_RDP_UMAC_EEE_CTRL_EEE_TXCLK_DIS_FIELD; +#define UNIMAC_RDP_UMAC_EEE_CTRL_EEE_TXCLK_DIS_FIELD_MASK 0x00000020 +#define UNIMAC_RDP_UMAC_EEE_CTRL_EEE_TXCLK_DIS_FIELD_WIDTH 1 +#define UNIMAC_RDP_UMAC_EEE_CTRL_EEE_TXCLK_DIS_FIELD_SHIFT 5 + +extern const ru_field_rec UNIMAC_RDP_UMAC_EEE_CTRL_RX_FIFO_CHECK_FIELD; +#define UNIMAC_RDP_UMAC_EEE_CTRL_RX_FIFO_CHECK_FIELD_MASK 0x00000010 +#define UNIMAC_RDP_UMAC_EEE_CTRL_RX_FIFO_CHECK_FIELD_WIDTH 1 +#define UNIMAC_RDP_UMAC_EEE_CTRL_RX_FIFO_CHECK_FIELD_SHIFT 4 + +extern const ru_field_rec UNIMAC_RDP_UMAC_EEE_CTRL_EEE_EN_FIELD; +#define UNIMAC_RDP_UMAC_EEE_CTRL_EEE_EN_FIELD_MASK 0x00000008 +#define UNIMAC_RDP_UMAC_EEE_CTRL_EEE_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_UMAC_EEE_CTRL_EEE_EN_FIELD_SHIFT 3 + +extern const ru_field_rec UNIMAC_RDP_UMAC_EEE_CTRL_RESERVED1_FIELD; +#define UNIMAC_RDP_UMAC_EEE_CTRL_RESERVED1_FIELD_MASK 0x00000007 +#define UNIMAC_RDP_UMAC_EEE_CTRL_RESERVED1_FIELD_WIDTH 3 +#define UNIMAC_RDP_UMAC_EEE_CTRL_RESERVED1_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MII_EEE_DELAY_ENTRY_TIMER_MII_EEE_LPI_TIMER_FIELD; +#define UNIMAC_RDP_MII_EEE_DELAY_ENTRY_TIMER_MII_EEE_LPI_TIMER_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_MII_EEE_DELAY_ENTRY_TIMER_MII_EEE_LPI_TIMER_FIELD_WIDTH 32 +#define UNIMAC_RDP_MII_EEE_DELAY_ENTRY_TIMER_MII_EEE_LPI_TIMER_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GMII_EEE_DELAY_ENTRY_TIMER_GMII_EEE_LPI_TIMER_FIELD; +#define UNIMAC_RDP_GMII_EEE_DELAY_ENTRY_TIMER_GMII_EEE_LPI_TIMER_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GMII_EEE_DELAY_ENTRY_TIMER_GMII_EEE_LPI_TIMER_FIELD_WIDTH 32 +#define UNIMAC_RDP_GMII_EEE_DELAY_ENTRY_TIMER_GMII_EEE_LPI_TIMER_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_UMAC_EEE_REF_COUNT_RESERVED0_FIELD; +#define UNIMAC_RDP_UMAC_EEE_REF_COUNT_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_UMAC_EEE_REF_COUNT_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_UMAC_EEE_REF_COUNT_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_UMAC_EEE_REF_COUNT_EEE_REF_COUNT_FIELD; +#define UNIMAC_RDP_UMAC_EEE_REF_COUNT_EEE_REF_COUNT_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_UMAC_EEE_REF_COUNT_EEE_REF_COUNT_FIELD_WIDTH 16 +#define UNIMAC_RDP_UMAC_EEE_REF_COUNT_EEE_REF_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_RESERVED0_FIELD; +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_RESERVED0_FIELD_MASK 0xfffff800 +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_RESERVED0_FIELD_WIDTH 21 +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_RESERVED0_FIELD_SHIFT 11 + +extern const ru_field_rec UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_AUTO_ADJUST_FIELD; +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_AUTO_ADJUST_FIELD_MASK 0x00000400 +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_AUTO_ADJUST_FIELD_WIDTH 1 +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_AUTO_ADJUST_FIELD_SHIFT 10 + +extern const ru_field_rec UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_EN_1588_FIELD; +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_EN_1588_FIELD_MASK 0x00000200 +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_EN_1588_FIELD_WIDTH 1 +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_EN_1588_FIELD_SHIFT 9 + +extern const ru_field_rec UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_ADJUST_FIELD; +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_ADJUST_FIELD_MASK 0x000001ff +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_ADJUST_FIELD_WIDTH 9 +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_ADJUST_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_UMAC_RX_PKT_DROP_STATUS_RESERVED0_FIELD; +#define UNIMAC_RDP_UMAC_RX_PKT_DROP_STATUS_RESERVED0_FIELD_MASK 0xfffffffe +#define UNIMAC_RDP_UMAC_RX_PKT_DROP_STATUS_RESERVED0_FIELD_WIDTH 31 +#define UNIMAC_RDP_UMAC_RX_PKT_DROP_STATUS_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_UMAC_RX_PKT_DROP_STATUS_RX_IPG_INVAL_FIELD; +#define UNIMAC_RDP_UMAC_RX_PKT_DROP_STATUS_RX_IPG_INVAL_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_UMAC_RX_PKT_DROP_STATUS_RX_IPG_INVAL_FIELD_WIDTH 1 +#define UNIMAC_RDP_UMAC_RX_PKT_DROP_STATUS_RX_IPG_INVAL_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_UMAC_SYMMETRIC_IDLE_THRESHOLD_RESERVED0_FIELD; +#define UNIMAC_RDP_UMAC_SYMMETRIC_IDLE_THRESHOLD_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_UMAC_SYMMETRIC_IDLE_THRESHOLD_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_UMAC_SYMMETRIC_IDLE_THRESHOLD_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_UMAC_SYMMETRIC_IDLE_THRESHOLD_THRESHOLD_VALUE_FIELD; +#define UNIMAC_RDP_UMAC_SYMMETRIC_IDLE_THRESHOLD_THRESHOLD_VALUE_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_UMAC_SYMMETRIC_IDLE_THRESHOLD_THRESHOLD_VALUE_FIELD_WIDTH 16 +#define UNIMAC_RDP_UMAC_SYMMETRIC_IDLE_THRESHOLD_THRESHOLD_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MII_EEE_WAKE_TIMER_RESERVED0_FIELD; +#define UNIMAC_RDP_MII_EEE_WAKE_TIMER_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_MII_EEE_WAKE_TIMER_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_MII_EEE_WAKE_TIMER_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_MII_EEE_WAKE_TIMER_MII_EEE_WAKE_TIMER_FIELD; +#define UNIMAC_RDP_MII_EEE_WAKE_TIMER_MII_EEE_WAKE_TIMER_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_MII_EEE_WAKE_TIMER_MII_EEE_WAKE_TIMER_FIELD_WIDTH 16 +#define UNIMAC_RDP_MII_EEE_WAKE_TIMER_MII_EEE_WAKE_TIMER_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GMII_EEE_WAKE_TIMER_RESERVED0_FIELD; +#define UNIMAC_RDP_GMII_EEE_WAKE_TIMER_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_GMII_EEE_WAKE_TIMER_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_GMII_EEE_WAKE_TIMER_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_GMII_EEE_WAKE_TIMER_GMII_EEE_WAKE_TIMER_FIELD; +#define UNIMAC_RDP_GMII_EEE_WAKE_TIMER_GMII_EEE_WAKE_TIMER_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_GMII_EEE_WAKE_TIMER_GMII_EEE_WAKE_TIMER_FIELD_WIDTH 16 +#define UNIMAC_RDP_GMII_EEE_WAKE_TIMER_GMII_EEE_WAKE_TIMER_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_UMAC_REV_ID_RESERVED0_FIELD; +#define UNIMAC_RDP_UMAC_REV_ID_RESERVED0_FIELD_MASK 0xff000000 +#define UNIMAC_RDP_UMAC_REV_ID_RESERVED0_FIELD_WIDTH 8 +#define UNIMAC_RDP_UMAC_REV_ID_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec UNIMAC_RDP_UMAC_REV_ID_REVISION_ID_MAJOR_FIELD; +#define UNIMAC_RDP_UMAC_REV_ID_REVISION_ID_MAJOR_FIELD_MASK 0x00ff0000 +#define UNIMAC_RDP_UMAC_REV_ID_REVISION_ID_MAJOR_FIELD_WIDTH 8 +#define UNIMAC_RDP_UMAC_REV_ID_REVISION_ID_MAJOR_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_UMAC_REV_ID_REVISION_ID_MINOR_FIELD; +#define UNIMAC_RDP_UMAC_REV_ID_REVISION_ID_MINOR_FIELD_MASK 0x0000ff00 +#define UNIMAC_RDP_UMAC_REV_ID_REVISION_ID_MINOR_FIELD_WIDTH 8 +#define UNIMAC_RDP_UMAC_REV_ID_REVISION_ID_MINOR_FIELD_SHIFT 8 + +extern const ru_field_rec UNIMAC_RDP_UMAC_REV_ID_PATCH_FIELD; +#define UNIMAC_RDP_UMAC_REV_ID_PATCH_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_UMAC_REV_ID_PATCH_FIELD_WIDTH 8 +#define UNIMAC_RDP_UMAC_REV_ID_PATCH_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_TYPE_RESERVED0_FIELD; +#define UNIMAC_RDP_MAC_PFC_TYPE_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_MAC_PFC_TYPE_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_MAC_PFC_TYPE_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_TYPE_PFC_ETH_TYPE_FIELD; +#define UNIMAC_RDP_MAC_PFC_TYPE_PFC_ETH_TYPE_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_MAC_PFC_TYPE_PFC_ETH_TYPE_FIELD_WIDTH 16 +#define UNIMAC_RDP_MAC_PFC_TYPE_PFC_ETH_TYPE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_OPCODE_RESERVED0_FIELD; +#define UNIMAC_RDP_MAC_PFC_OPCODE_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_MAC_PFC_OPCODE_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_MAC_PFC_OPCODE_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_OPCODE_PFC_OPCODE_FIELD; +#define UNIMAC_RDP_MAC_PFC_OPCODE_PFC_OPCODE_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_MAC_PFC_OPCODE_PFC_OPCODE_FIELD_WIDTH 16 +#define UNIMAC_RDP_MAC_PFC_OPCODE_PFC_OPCODE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_DA_0_PFC_MACDA_0_FIELD; +#define UNIMAC_RDP_MAC_PFC_DA_0_PFC_MACDA_0_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_MAC_PFC_DA_0_PFC_MACDA_0_FIELD_WIDTH 32 +#define UNIMAC_RDP_MAC_PFC_DA_0_PFC_MACDA_0_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_DA_1_RESERVED0_FIELD; +#define UNIMAC_RDP_MAC_PFC_DA_1_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_MAC_PFC_DA_1_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_MAC_PFC_DA_1_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_DA_1_PFC_MACDA_1_FIELD; +#define UNIMAC_RDP_MAC_PFC_DA_1_PFC_MACDA_1_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_MAC_PFC_DA_1_PFC_MACDA_1_FIELD_WIDTH 16 +#define UNIMAC_RDP_MAC_PFC_DA_1_PFC_MACDA_1_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MACSEC_PROG_TX_CRC_MACSEC_PROG_TX_CRC_FIELD; +#define UNIMAC_RDP_MACSEC_PROG_TX_CRC_MACSEC_PROG_TX_CRC_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_MACSEC_PROG_TX_CRC_MACSEC_PROG_TX_CRC_FIELD_WIDTH 32 +#define UNIMAC_RDP_MACSEC_PROG_TX_CRC_MACSEC_PROG_TX_CRC_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MACSEC_CNTRL_RESERVED0_FIELD; +#define UNIMAC_RDP_MACSEC_CNTRL_RESERVED0_FIELD_MASK 0xfffffff0 +#define UNIMAC_RDP_MACSEC_CNTRL_RESERVED0_FIELD_WIDTH 28 +#define UNIMAC_RDP_MACSEC_CNTRL_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec UNIMAC_RDP_MACSEC_CNTRL_DIS_PAUSE_DATA_VAR_IPG_FIELD; +#define UNIMAC_RDP_MACSEC_CNTRL_DIS_PAUSE_DATA_VAR_IPG_FIELD_MASK 0x00000008 +#define UNIMAC_RDP_MACSEC_CNTRL_DIS_PAUSE_DATA_VAR_IPG_FIELD_WIDTH 1 +#define UNIMAC_RDP_MACSEC_CNTRL_DIS_PAUSE_DATA_VAR_IPG_FIELD_SHIFT 3 + +extern const ru_field_rec UNIMAC_RDP_MACSEC_CNTRL_TX_CRC_PROGRAM_FIELD; +#define UNIMAC_RDP_MACSEC_CNTRL_TX_CRC_PROGRAM_FIELD_MASK 0x00000004 +#define UNIMAC_RDP_MACSEC_CNTRL_TX_CRC_PROGRAM_FIELD_WIDTH 1 +#define UNIMAC_RDP_MACSEC_CNTRL_TX_CRC_PROGRAM_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_MACSEC_CNTRL_TX_CRC_CORUPT_EN_FIELD; +#define UNIMAC_RDP_MACSEC_CNTRL_TX_CRC_CORUPT_EN_FIELD_MASK 0x00000002 +#define UNIMAC_RDP_MACSEC_CNTRL_TX_CRC_CORUPT_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_MACSEC_CNTRL_TX_CRC_CORUPT_EN_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_MACSEC_CNTRL_TX_LAUNCH_EN_FIELD; +#define UNIMAC_RDP_MACSEC_CNTRL_TX_LAUNCH_EN_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_MACSEC_CNTRL_TX_LAUNCH_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_MACSEC_CNTRL_TX_LAUNCH_EN_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TS_STATUS_RESERVED0_FIELD; +#define UNIMAC_RDP_TS_STATUS_RESERVED0_FIELD_MASK 0xffffffe0 +#define UNIMAC_RDP_TS_STATUS_RESERVED0_FIELD_WIDTH 27 +#define UNIMAC_RDP_TS_STATUS_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec UNIMAC_RDP_TS_STATUS_WORD_AVAIL_FIELD; +#define UNIMAC_RDP_TS_STATUS_WORD_AVAIL_FIELD_MASK 0x0000001c +#define UNIMAC_RDP_TS_STATUS_WORD_AVAIL_FIELD_WIDTH 3 +#define UNIMAC_RDP_TS_STATUS_WORD_AVAIL_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_TS_STATUS_TX_TS_FIFO_EMPTY_FIELD; +#define UNIMAC_RDP_TS_STATUS_TX_TS_FIFO_EMPTY_FIELD_MASK 0x00000002 +#define UNIMAC_RDP_TS_STATUS_TX_TS_FIFO_EMPTY_FIELD_WIDTH 1 +#define UNIMAC_RDP_TS_STATUS_TX_TS_FIFO_EMPTY_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_TS_STATUS_TX_TS_FIFO_FULL_FIELD; +#define UNIMAC_RDP_TS_STATUS_TX_TS_FIFO_FULL_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_TS_STATUS_TX_TS_FIFO_FULL_FIELD_WIDTH 1 +#define UNIMAC_RDP_TS_STATUS_TX_TS_FIFO_FULL_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TX_TS_DATA_TX_TS_DATA_FIELD; +#define UNIMAC_RDP_TX_TS_DATA_TX_TS_DATA_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TX_TS_DATA_TX_TS_DATA_FIELD_WIDTH 32 +#define UNIMAC_RDP_TX_TS_DATA_TX_TS_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_PAUSE_REFRESH_CTRL_RESERVED0_FIELD; +#define UNIMAC_RDP_PAUSE_REFRESH_CTRL_RESERVED0_FIELD_MASK 0xfffc0000 +#define UNIMAC_RDP_PAUSE_REFRESH_CTRL_RESERVED0_FIELD_WIDTH 14 +#define UNIMAC_RDP_PAUSE_REFRESH_CTRL_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec UNIMAC_RDP_PAUSE_REFRESH_CTRL_ENABLE_FIELD; +#define UNIMAC_RDP_PAUSE_REFRESH_CTRL_ENABLE_FIELD_MASK 0x00020000 +#define UNIMAC_RDP_PAUSE_REFRESH_CTRL_ENABLE_FIELD_WIDTH 1 +#define UNIMAC_RDP_PAUSE_REFRESH_CTRL_ENABLE_FIELD_SHIFT 17 + +extern const ru_field_rec UNIMAC_RDP_PAUSE_REFRESH_CTRL_REFRESH_TIMER_FIELD; +#define UNIMAC_RDP_PAUSE_REFRESH_CTRL_REFRESH_TIMER_FIELD_MASK 0x0001ffff +#define UNIMAC_RDP_PAUSE_REFRESH_CTRL_REFRESH_TIMER_FIELD_WIDTH 17 +#define UNIMAC_RDP_PAUSE_REFRESH_CTRL_REFRESH_TIMER_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_FLUSH_CONTROL_RESERVED0_FIELD; +#define UNIMAC_RDP_FLUSH_CONTROL_RESERVED0_FIELD_MASK 0xfffffffe +#define UNIMAC_RDP_FLUSH_CONTROL_RESERVED0_FIELD_WIDTH 31 +#define UNIMAC_RDP_FLUSH_CONTROL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_FLUSH_CONTROL_FLUSH_FIELD; +#define UNIMAC_RDP_FLUSH_CONTROL_FLUSH_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_FLUSH_CONTROL_FLUSH_FIELD_WIDTH 1 +#define UNIMAC_RDP_FLUSH_CONTROL_FLUSH_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RXFIFO_STAT_RESERVED0_FIELD; +#define UNIMAC_RDP_RXFIFO_STAT_RESERVED0_FIELD_MASK 0xfffffffc +#define UNIMAC_RDP_RXFIFO_STAT_RESERVED0_FIELD_WIDTH 30 +#define UNIMAC_RDP_RXFIFO_STAT_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_RXFIFO_STAT_RXFIFO_OVERRUN_FIELD; +#define UNIMAC_RDP_RXFIFO_STAT_RXFIFO_OVERRUN_FIELD_MASK 0x00000002 +#define UNIMAC_RDP_RXFIFO_STAT_RXFIFO_OVERRUN_FIELD_WIDTH 1 +#define UNIMAC_RDP_RXFIFO_STAT_RXFIFO_OVERRUN_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_RXFIFO_STAT_RXFIFO_UNDERRUN_FIELD; +#define UNIMAC_RDP_RXFIFO_STAT_RXFIFO_UNDERRUN_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_RXFIFO_STAT_RXFIFO_UNDERRUN_FIELD_WIDTH 1 +#define UNIMAC_RDP_RXFIFO_STAT_RXFIFO_UNDERRUN_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TXFIFO_STAT_RESERVED0_FIELD; +#define UNIMAC_RDP_TXFIFO_STAT_RESERVED0_FIELD_MASK 0xfffffffc +#define UNIMAC_RDP_TXFIFO_STAT_RESERVED0_FIELD_WIDTH 30 +#define UNIMAC_RDP_TXFIFO_STAT_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_TXFIFO_STAT_TXFIFO_OVERRUN_FIELD; +#define UNIMAC_RDP_TXFIFO_STAT_TXFIFO_OVERRUN_FIELD_MASK 0x00000002 +#define UNIMAC_RDP_TXFIFO_STAT_TXFIFO_OVERRUN_FIELD_WIDTH 1 +#define UNIMAC_RDP_TXFIFO_STAT_TXFIFO_OVERRUN_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_TXFIFO_STAT_TXFIFO_UNDERRUN_FIELD; +#define UNIMAC_RDP_TXFIFO_STAT_TXFIFO_UNDERRUN_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_TXFIFO_STAT_TXFIFO_UNDERRUN_FIELD_WIDTH 1 +#define UNIMAC_RDP_TXFIFO_STAT_TXFIFO_UNDERRUN_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_CTRL_RESERVED0_FIELD; +#define UNIMAC_RDP_MAC_PFC_CTRL_RESERVED0_FIELD_MASK 0xffffffc0 +#define UNIMAC_RDP_MAC_PFC_CTRL_RESERVED0_FIELD_WIDTH 26 +#define UNIMAC_RDP_MAC_PFC_CTRL_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_CTRL_PFC_STATS_EN_FIELD; +#define UNIMAC_RDP_MAC_PFC_CTRL_PFC_STATS_EN_FIELD_MASK 0x00000020 +#define UNIMAC_RDP_MAC_PFC_CTRL_PFC_STATS_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_PFC_CTRL_PFC_STATS_EN_FIELD_SHIFT 5 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_CTRL_RX_PASS_PFC_FRM_FIELD; +#define UNIMAC_RDP_MAC_PFC_CTRL_RX_PASS_PFC_FRM_FIELD_MASK 0x00000010 +#define UNIMAC_RDP_MAC_PFC_CTRL_RX_PASS_PFC_FRM_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_PFC_CTRL_RX_PASS_PFC_FRM_FIELD_SHIFT 4 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_CTRL_RESERVED1_FIELD; +#define UNIMAC_RDP_MAC_PFC_CTRL_RESERVED1_FIELD_MASK 0x00000008 +#define UNIMAC_RDP_MAC_PFC_CTRL_RESERVED1_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_PFC_CTRL_RESERVED1_FIELD_SHIFT 3 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_CTRL_FORCE_PFC_XON_FIELD; +#define UNIMAC_RDP_MAC_PFC_CTRL_FORCE_PFC_XON_FIELD_MASK 0x00000004 +#define UNIMAC_RDP_MAC_PFC_CTRL_FORCE_PFC_XON_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_PFC_CTRL_FORCE_PFC_XON_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_CTRL_PFC_RX_ENBL_FIELD; +#define UNIMAC_RDP_MAC_PFC_CTRL_PFC_RX_ENBL_FIELD_MASK 0x00000002 +#define UNIMAC_RDP_MAC_PFC_CTRL_PFC_RX_ENBL_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_PFC_CTRL_PFC_RX_ENBL_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_CTRL_PFC_TX_ENBL_FIELD; +#define UNIMAC_RDP_MAC_PFC_CTRL_PFC_TX_ENBL_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_MAC_PFC_CTRL_PFC_TX_ENBL_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_PFC_CTRL_PFC_TX_ENBL_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_PFC_REFRESH_TIMER_FIELD; +#define UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_PFC_REFRESH_TIMER_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_PFC_REFRESH_TIMER_FIELD_WIDTH 16 +#define UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_PFC_REFRESH_TIMER_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_RESERVED0_FIELD; +#define UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_RESERVED0_FIELD_MASK 0x0000fffe +#define UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_RESERVED0_FIELD_WIDTH 15 +#define UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_PFC_REFRESH_EN_FIELD; +#define UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_PFC_REFRESH_EN_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_PFC_REFRESH_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_PFC_REFRESH_EN_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR64_COUNT_FIELD; +#define UNIMAC_RDP_GR64_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GR64_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GR64_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR64_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GR64_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GR64_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GR64_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR127_COUNT_FIELD; +#define UNIMAC_RDP_GR127_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GR127_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GR127_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR127_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GR127_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GR127_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GR127_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR255_COUNT_FIELD; +#define UNIMAC_RDP_GR255_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GR255_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GR255_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR255_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GR255_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GR255_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GR255_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR511_COUNT_FIELD; +#define UNIMAC_RDP_GR511_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GR511_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GR511_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR511_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GR511_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GR511_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GR511_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR1023_COUNT_FIELD; +#define UNIMAC_RDP_GR1023_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GR1023_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GR1023_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR1023_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GR1023_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GR1023_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GR1023_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR1518_COUNT_FIELD; +#define UNIMAC_RDP_GR1518_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GR1518_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GR1518_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR1518_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GR1518_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GR1518_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GR1518_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRMGV_COUNT_FIELD; +#define UNIMAC_RDP_GRMGV_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRMGV_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRMGV_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRMGV_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRMGV_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRMGV_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRMGV_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR2047_COUNT_FIELD; +#define UNIMAC_RDP_GR2047_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GR2047_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GR2047_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR2047_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GR2047_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GR2047_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GR2047_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR4095_COUNT_FIELD; +#define UNIMAC_RDP_GR4095_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GR4095_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GR4095_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR4095_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GR4095_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GR4095_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GR4095_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR9216_COUNT_FIELD; +#define UNIMAC_RDP_GR9216_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GR9216_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GR9216_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GR9216_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GR9216_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GR9216_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GR9216_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRPKT_COUNT_FIELD; +#define UNIMAC_RDP_GRPKT_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRPKT_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRPKT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRPKT_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRPKT_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRPKT_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRPKT_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRBYT_COUNT_FIELD; +#define UNIMAC_RDP_GRBYT_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRBYT_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRBYT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRBYT_UPPER_COUNT_U16_FIELD; +#define UNIMAC_RDP_GRBYT_UPPER_COUNT_U16_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_GRBYT_UPPER_COUNT_U16_FIELD_WIDTH 16 +#define UNIMAC_RDP_GRBYT_UPPER_COUNT_U16_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRMCA_COUNT_FIELD; +#define UNIMAC_RDP_GRMCA_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRMCA_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRMCA_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRMCA_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRMCA_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRMCA_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRMCA_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRBCA_COUNT_FIELD; +#define UNIMAC_RDP_GRBCA_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRBCA_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRBCA_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRBCA_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRBCA_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRBCA_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRBCA_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRFCS_COUNT_FIELD; +#define UNIMAC_RDP_GRFCS_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRFCS_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRFCS_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRFCS_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRFCS_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRFCS_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRFCS_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRXCF_COUNT_FIELD; +#define UNIMAC_RDP_GRXCF_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRXCF_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRXCF_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRXCF_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRXCF_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRXCF_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRXCF_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRXPF_COUNT_FIELD; +#define UNIMAC_RDP_GRXPF_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRXPF_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRXPF_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRXPF_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRXPF_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRXPF_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRXPF_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRXUO_COUNT_FIELD; +#define UNIMAC_RDP_GRXUO_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRXUO_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRXUO_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRXUO_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRXUO_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRXUO_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRXUO_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRALN_COUNT_FIELD; +#define UNIMAC_RDP_GRALN_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRALN_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRALN_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRALN_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRALN_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRALN_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRALN_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRFLR_COUNT_FIELD; +#define UNIMAC_RDP_GRFLR_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRFLR_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRFLR_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRFLR_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRFLR_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRFLR_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRFLR_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRCDE_COUNT_FIELD; +#define UNIMAC_RDP_GRCDE_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRCDE_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRCDE_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRCDE_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRCDE_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRCDE_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRCDE_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRFCR_COUNT_FIELD; +#define UNIMAC_RDP_GRFCR_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRFCR_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRFCR_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRFCR_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRFCR_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRFCR_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRFCR_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GROVR_COUNT_FIELD; +#define UNIMAC_RDP_GROVR_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GROVR_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GROVR_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GROVR_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GROVR_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GROVR_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GROVR_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRJBR_COUNT_FIELD; +#define UNIMAC_RDP_GRJBR_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRJBR_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRJBR_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRJBR_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRJBR_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRJBR_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRJBR_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRMTUE_COUNT_FIELD; +#define UNIMAC_RDP_GRMTUE_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRMTUE_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRMTUE_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRMTUE_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRMTUE_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRMTUE_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRMTUE_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRPOK_COUNT_FIELD; +#define UNIMAC_RDP_GRPOK_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRPOK_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRPOK_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRPOK_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRPOK_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRPOK_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRPOK_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRUC_COUNT_FIELD; +#define UNIMAC_RDP_GRUC_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRUC_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRUC_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRUC_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRUC_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRUC_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRUC_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRPPP_COUNT_FIELD; +#define UNIMAC_RDP_GRPPP_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRPPP_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRPPP_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRPPP_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRPPP_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRPPP_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRPPP_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRCRC_COUNT_FIELD; +#define UNIMAC_RDP_GRCRC_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GRCRC_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GRCRC_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GRCRC_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GRCRC_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GRCRC_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GRCRC_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR64_COUNT_FIELD; +#define UNIMAC_RDP_TR64_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TR64_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TR64_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR64_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_TR64_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_TR64_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_TR64_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR127_COUNT_FIELD; +#define UNIMAC_RDP_TR127_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TR127_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TR127_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR127_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_TR127_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_TR127_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_TR127_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR255_COUNT_FIELD; +#define UNIMAC_RDP_TR255_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TR255_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TR255_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR255_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_TR255_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_TR255_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_TR255_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR511_COUNT_FIELD; +#define UNIMAC_RDP_TR511_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TR511_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TR511_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR511_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_TR511_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_TR511_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_TR511_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR1023_COUNT_FIELD; +#define UNIMAC_RDP_TR1023_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TR1023_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TR1023_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR1023_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_TR1023_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_TR1023_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_TR1023_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR1518_COUNT_FIELD; +#define UNIMAC_RDP_TR1518_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TR1518_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TR1518_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR1518_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_TR1518_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_TR1518_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_TR1518_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TRMGV_COUNT_FIELD; +#define UNIMAC_RDP_TRMGV_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TRMGV_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TRMGV_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TRMGV_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_TRMGV_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_TRMGV_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_TRMGV_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR2047_COUNT_FIELD; +#define UNIMAC_RDP_TR2047_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TR2047_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TR2047_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR2047_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_TR2047_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_TR2047_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_TR2047_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR4095_COUNT_FIELD; +#define UNIMAC_RDP_TR4095_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TR4095_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TR4095_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR4095_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_TR4095_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_TR4095_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_TR4095_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR9216_COUNT_FIELD; +#define UNIMAC_RDP_TR9216_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TR9216_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TR9216_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TR9216_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_TR9216_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_TR9216_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_TR9216_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTPKT_COUNT_FIELD; +#define UNIMAC_RDP_GTPKT_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTPKT_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTPKT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTPKT_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTPKT_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTPKT_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTPKT_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTMCA_COUNT_FIELD; +#define UNIMAC_RDP_GTMCA_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTMCA_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTMCA_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTMCA_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTMCA_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTMCA_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTMCA_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTBCA_COUNT_FIELD; +#define UNIMAC_RDP_GTBCA_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTBCA_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTBCA_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTBCA_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTBCA_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTBCA_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTBCA_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTXPF_COUNT_FIELD; +#define UNIMAC_RDP_GTXPF_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTXPF_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTXPF_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTXPF_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTXPF_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTXPF_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTXPF_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTXCF_COUNT_FIELD; +#define UNIMAC_RDP_GTXCF_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTXCF_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTXCF_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTXCF_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTXCF_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTXCF_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTXCF_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTFCS_COUNT_FIELD; +#define UNIMAC_RDP_GTFCS_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTFCS_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTFCS_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTFCS_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTFCS_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTFCS_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTFCS_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTOVR_COUNT_FIELD; +#define UNIMAC_RDP_GTOVR_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTOVR_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTOVR_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTOVR_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTOVR_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTOVR_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTOVR_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTDRF_COUNT_FIELD; +#define UNIMAC_RDP_GTDRF_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTDRF_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTDRF_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTDRF_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTDRF_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTDRF_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTDRF_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTEDF_COUNT_FIELD; +#define UNIMAC_RDP_GTEDF_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTEDF_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTEDF_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTEDF_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTEDF_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTEDF_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTEDF_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTSCL_COUNT_FIELD; +#define UNIMAC_RDP_GTSCL_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTSCL_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTSCL_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTSCL_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTSCL_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTSCL_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTSCL_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTMCL_COUNT_FIELD; +#define UNIMAC_RDP_GTMCL_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTMCL_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTMCL_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTMCL_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTMCL_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTMCL_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTMCL_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTLCL_COUNT_FIELD; +#define UNIMAC_RDP_GTLCL_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTLCL_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTLCL_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTLCL_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTLCL_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTLCL_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTLCL_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTXCL_COUNT_FIELD; +#define UNIMAC_RDP_GTXCL_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTXCL_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTXCL_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTXCL_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTXCL_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTXCL_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTXCL_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTFRG_COUNT_FIELD; +#define UNIMAC_RDP_GTFRG_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTFRG_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTFRG_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTFRG_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTFRG_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTFRG_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTFRG_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTNCL_COUNT_FIELD; +#define UNIMAC_RDP_GTNCL_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTNCL_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTNCL_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTNCL_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTNCL_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTNCL_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTNCL_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTJBR_COUNT_FIELD; +#define UNIMAC_RDP_GTJBR_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTJBR_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTJBR_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTJBR_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTJBR_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTJBR_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTJBR_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTBYT_COUNT_FIELD; +#define UNIMAC_RDP_GTBYT_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTBYT_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTBYT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTBYT_UPPER_COUNT_U16_FIELD; +#define UNIMAC_RDP_GTBYT_UPPER_COUNT_U16_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_GTBYT_UPPER_COUNT_U16_FIELD_WIDTH 16 +#define UNIMAC_RDP_GTBYT_UPPER_COUNT_U16_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTPOK_COUNT_FIELD; +#define UNIMAC_RDP_GTPOK_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTPOK_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTPOK_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTPOK_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTPOK_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTPOK_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTPOK_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTUC_COUNT_FIELD; +#define UNIMAC_RDP_GTUC_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_GTUC_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_GTUC_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GTUC_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_GTUC_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GTUC_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_GTUC_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RRPKT_COUNT_FIELD; +#define UNIMAC_RDP_RRPKT_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_RRPKT_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_RRPKT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RRPKT_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_RRPKT_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_RRPKT_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_RRPKT_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RRUND_COUNT_FIELD; +#define UNIMAC_RDP_RRUND_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_RRUND_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_RRUND_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RRUND_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_RRUND_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_RRUND_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_RRUND_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RRFRG_COUNT_FIELD; +#define UNIMAC_RDP_RRFRG_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_RRFRG_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_RRFRG_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RRFRG_UPPER_COUNT_U8_FIELD; +#define UNIMAC_RDP_RRFRG_UPPER_COUNT_U8_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_RRFRG_UPPER_COUNT_U8_FIELD_WIDTH 8 +#define UNIMAC_RDP_RRFRG_UPPER_COUNT_U8_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RRBYT_COUNT_FIELD; +#define UNIMAC_RDP_RRBYT_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_RRBYT_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_RRBYT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RRBYT_UPPER_COUNT_U16_FIELD; +#define UNIMAC_RDP_RRBYT_UPPER_COUNT_U16_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_RRBYT_UPPER_COUNT_U16_FIELD_WIDTH 16 +#define UNIMAC_RDP_RRBYT_UPPER_COUNT_U16_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MIB_CNTRL_RESERVED0_FIELD; +#define UNIMAC_RDP_MIB_CNTRL_RESERVED0_FIELD_MASK 0xfffffff8 +#define UNIMAC_RDP_MIB_CNTRL_RESERVED0_FIELD_WIDTH 29 +#define UNIMAC_RDP_MIB_CNTRL_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec UNIMAC_RDP_MIB_CNTRL_TX_CNT_RST_FIELD; +#define UNIMAC_RDP_MIB_CNTRL_TX_CNT_RST_FIELD_MASK 0x00000004 +#define UNIMAC_RDP_MIB_CNTRL_TX_CNT_RST_FIELD_WIDTH 1 +#define UNIMAC_RDP_MIB_CNTRL_TX_CNT_RST_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_MIB_CNTRL_RUNT_CNT_RST_FIELD; +#define UNIMAC_RDP_MIB_CNTRL_RUNT_CNT_RST_FIELD_MASK 0x00000002 +#define UNIMAC_RDP_MIB_CNTRL_RUNT_CNT_RST_FIELD_WIDTH 1 +#define UNIMAC_RDP_MIB_CNTRL_RUNT_CNT_RST_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_MIB_CNTRL_RX_CNT_RST_FIELD; +#define UNIMAC_RDP_MIB_CNTRL_RX_CNT_RST_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_MIB_CNTRL_RX_CNT_RST_FIELD_WIDTH 1 +#define UNIMAC_RDP_MIB_CNTRL_RX_CNT_RST_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MIB_READ_DATA_DATA32_FIELD; +#define UNIMAC_RDP_MIB_READ_DATA_DATA32_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_MIB_READ_DATA_DATA32_FIELD_WIDTH 32 +#define UNIMAC_RDP_MIB_READ_DATA_DATA32_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MIB_WRITE_DATA_DATA32_FIELD; +#define UNIMAC_RDP_MIB_WRITE_DATA_DATA32_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_MIB_WRITE_DATA_DATA32_FIELD_WIDTH 32 +#define UNIMAC_RDP_MIB_WRITE_DATA_DATA32_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_PSW_MS_RESERVED0_FIELD; +#define UNIMAC_RDP_PSW_MS_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_PSW_MS_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_PSW_MS_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_PSW_MS_PSW_47_32_FIELD; +#define UNIMAC_RDP_PSW_MS_PSW_47_32_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_PSW_MS_PSW_47_32_FIELD_WIDTH 16 +#define UNIMAC_RDP_PSW_MS_PSW_47_32_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_PSW_LS_PSW_31_0_FIELD; +#define UNIMAC_RDP_PSW_LS_PSW_31_0_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_PSW_LS_PSW_31_0_FIELD_WIDTH 32 +#define UNIMAC_RDP_PSW_LS_PSW_31_0_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_RESERVED0_FIELD; +#define UNIMAC_RDP_CONTROL_RESERVED0_FIELD_MASK 0x80000000 +#define UNIMAC_RDP_CONTROL_RESERVED0_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_RESERVED0_FIELD_SHIFT 31 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_GMII_TX_CLK_GATE_EN_FIELD; +#define UNIMAC_RDP_CONTROL_GMII_TX_CLK_GATE_EN_FIELD_MASK 0x40000000 +#define UNIMAC_RDP_CONTROL_GMII_TX_CLK_GATE_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_GMII_TX_CLK_GATE_EN_FIELD_SHIFT 30 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_XGMII_SEL_OVRD_FIELD; +#define UNIMAC_RDP_CONTROL_XGMII_SEL_OVRD_FIELD_MASK 0x20000000 +#define UNIMAC_RDP_CONTROL_XGMII_SEL_OVRD_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_XGMII_SEL_OVRD_FIELD_SHIFT 29 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_MIN_RX_IPG_FIELD; +#define UNIMAC_RDP_CONTROL_MIN_RX_IPG_FIELD_MASK 0x1f000000 +#define UNIMAC_RDP_CONTROL_MIN_RX_IPG_FIELD_WIDTH 5 +#define UNIMAC_RDP_CONTROL_MIN_RX_IPG_FIELD_SHIFT 24 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_TX_IPG_FIELD; +#define UNIMAC_RDP_CONTROL_TX_IPG_FIELD_MASK 0x00f80000 +#define UNIMAC_RDP_CONTROL_TX_IPG_FIELD_WIDTH 5 +#define UNIMAC_RDP_CONTROL_TX_IPG_FIELD_SHIFT 19 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_STRICT_PREAMBLE_DIS_FIELD; +#define UNIMAC_RDP_CONTROL_STRICT_PREAMBLE_DIS_FIELD_MASK 0x00040000 +#define UNIMAC_RDP_CONTROL_STRICT_PREAMBLE_DIS_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_STRICT_PREAMBLE_DIS_FIELD_SHIFT 18 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_GMII_RX_CLK_GATE_EN_FIELD; +#define UNIMAC_RDP_CONTROL_GMII_RX_CLK_GATE_EN_FIELD_MASK 0x00020000 +#define UNIMAC_RDP_CONTROL_GMII_RX_CLK_GATE_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_GMII_RX_CLK_GATE_EN_FIELD_SHIFT 17 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_RX_START_THRESHOLD_FIELD; +#define UNIMAC_RDP_CONTROL_RX_START_THRESHOLD_FIELD_MASK 0x0001ff00 +#define UNIMAC_RDP_CONTROL_RX_START_THRESHOLD_FIELD_WIDTH 9 +#define UNIMAC_RDP_CONTROL_RX_START_THRESHOLD_FIELD_SHIFT 8 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_DIC_DIS_FIELD; +#define UNIMAC_RDP_CONTROL_DIC_DIS_FIELD_MASK 0x00000080 +#define UNIMAC_RDP_CONTROL_DIC_DIS_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_DIC_DIS_FIELD_SHIFT 7 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_XGMII_SEL_FIELD; +#define UNIMAC_RDP_CONTROL_XGMII_SEL_FIELD_MASK 0x00000040 +#define UNIMAC_RDP_CONTROL_XGMII_SEL_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_XGMII_SEL_FIELD_SHIFT 6 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_STANDARD_MUX_EN_FIELD; +#define UNIMAC_RDP_CONTROL_STANDARD_MUX_EN_FIELD_MASK 0x00000020 +#define UNIMAC_RDP_CONTROL_STANDARD_MUX_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_STANDARD_MUX_EN_FIELD_SHIFT 5 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_LINK_DOWN_RST_EN_FIELD; +#define UNIMAC_RDP_CONTROL_LINK_DOWN_RST_EN_FIELD_MASK 0x00000010 +#define UNIMAC_RDP_CONTROL_LINK_DOWN_RST_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_LINK_DOWN_RST_EN_FIELD_SHIFT 4 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_TX_FLUSH_EN_FIELD; +#define UNIMAC_RDP_CONTROL_TX_FLUSH_EN_FIELD_MASK 0x00000008 +#define UNIMAC_RDP_CONTROL_TX_FLUSH_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_TX_FLUSH_EN_FIELD_SHIFT 3 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_RX_FLUSH_EN_FIELD; +#define UNIMAC_RDP_CONTROL_RX_FLUSH_EN_FIELD_MASK 0x00000004 +#define UNIMAC_RDP_CONTROL_RX_FLUSH_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_RX_FLUSH_EN_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_XIB_TX_EN_FIELD; +#define UNIMAC_RDP_CONTROL_XIB_TX_EN_FIELD_MASK 0x00000002 +#define UNIMAC_RDP_CONTROL_XIB_TX_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_XIB_TX_EN_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_CONTROL_XIB_RX_EN_FIELD; +#define UNIMAC_RDP_CONTROL_XIB_RX_EN_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_CONTROL_XIB_RX_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_CONTROL_XIB_RX_EN_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_EXTENDED_CONTROL_TX_BACKPRESSURE_EN_FIELD; +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_BACKPRESSURE_EN_FIELD_MASK 0x80000000 +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_BACKPRESSURE_EN_FIELD_WIDTH 1 +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_BACKPRESSURE_EN_FIELD_SHIFT 31 + +extern const ru_field_rec UNIMAC_RDP_EXTENDED_CONTROL_TX_XON_THRESHOLD_FIELD; +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_XON_THRESHOLD_FIELD_MASK 0x7fc00000 +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_XON_THRESHOLD_FIELD_WIDTH 9 +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_XON_THRESHOLD_FIELD_SHIFT 22 + +extern const ru_field_rec UNIMAC_RDP_EXTENDED_CONTROL_TX_XOFF_THRESHOLD_FIELD; +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_XOFF_THRESHOLD_FIELD_MASK 0x003fe000 +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_XOFF_THRESHOLD_FIELD_WIDTH 9 +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_XOFF_THRESHOLD_FIELD_SHIFT 13 + +extern const ru_field_rec UNIMAC_RDP_EXTENDED_CONTROL_TX_START_THRESHOLD_FIELD; +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_START_THRESHOLD_FIELD_MASK 0x00001ff0 +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_START_THRESHOLD_FIELD_WIDTH 9 +#define UNIMAC_RDP_EXTENDED_CONTROL_TX_START_THRESHOLD_FIELD_SHIFT 4 + +extern const ru_field_rec UNIMAC_RDP_EXTENDED_CONTROL_RESERVED0_FIELD; +#define UNIMAC_RDP_EXTENDED_CONTROL_RESERVED0_FIELD_MASK 0x0000000c +#define UNIMAC_RDP_EXTENDED_CONTROL_RESERVED0_FIELD_WIDTH 2 +#define UNIMAC_RDP_EXTENDED_CONTROL_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_EXTENDED_CONTROL_XGMII_DATA_RATE_FIELD; +#define UNIMAC_RDP_EXTENDED_CONTROL_XGMII_DATA_RATE_FIELD_MASK 0x00000003 +#define UNIMAC_RDP_EXTENDED_CONTROL_XGMII_DATA_RATE_FIELD_WIDTH 2 +#define UNIMAC_RDP_EXTENDED_CONTROL_XGMII_DATA_RATE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_RESERVED0_FIELD; +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_RESERVED0_FIELD_MASK 0xff000000 +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_RESERVED0_FIELD_WIDTH 8 +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_MDIV_FIELD; +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_MDIV_FIELD_MASK 0x00ff0000 +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_MDIV_FIELD_WIDTH 8 +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_MDIV_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_RESERVED1_FIELD; +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_RESERVED1_FIELD_MASK 0x0000ff00 +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_RESERVED1_FIELD_WIDTH 8 +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_RESERVED1_FIELD_SHIFT 8 + +extern const ru_field_rec UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_NDIV_FIELD; +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_NDIV_FIELD_MASK 0x000000ff +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_NDIV_FIELD_WIDTH 8 +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_NDIV_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_STATUS_RESERVED0_FIELD; +#define UNIMAC_RDP_STATUS_RESERVED0_FIELD_MASK 0xffffffc0 +#define UNIMAC_RDP_STATUS_RESERVED0_FIELD_WIDTH 26 +#define UNIMAC_RDP_STATUS_RESERVED0_FIELD_SHIFT 6 + +extern const ru_field_rec UNIMAC_RDP_STATUS_RX_FAULT_STATUS_FIELD; +#define UNIMAC_RDP_STATUS_RX_FAULT_STATUS_FIELD_MASK 0x00000030 +#define UNIMAC_RDP_STATUS_RX_FAULT_STATUS_FIELD_WIDTH 2 +#define UNIMAC_RDP_STATUS_RX_FAULT_STATUS_FIELD_SHIFT 4 + +extern const ru_field_rec UNIMAC_RDP_STATUS_TX_FIFO_OVERRUN_FIELD; +#define UNIMAC_RDP_STATUS_TX_FIFO_OVERRUN_FIELD_MASK 0x00000008 +#define UNIMAC_RDP_STATUS_TX_FIFO_OVERRUN_FIELD_WIDTH 1 +#define UNIMAC_RDP_STATUS_TX_FIFO_OVERRUN_FIELD_SHIFT 3 + +extern const ru_field_rec UNIMAC_RDP_STATUS_TX_FIFO_UNDERRUN_FIELD; +#define UNIMAC_RDP_STATUS_TX_FIFO_UNDERRUN_FIELD_MASK 0x00000004 +#define UNIMAC_RDP_STATUS_TX_FIFO_UNDERRUN_FIELD_WIDTH 1 +#define UNIMAC_RDP_STATUS_TX_FIFO_UNDERRUN_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_RDP_STATUS_RX_FIFO_UNDERRUN_FIELD; +#define UNIMAC_RDP_STATUS_RX_FIFO_UNDERRUN_FIELD_MASK 0x00000002 +#define UNIMAC_RDP_STATUS_RX_FIFO_UNDERRUN_FIELD_WIDTH 1 +#define UNIMAC_RDP_STATUS_RX_FIFO_UNDERRUN_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_RDP_STATUS_RX_FIFO_OVERRUN_FIELD; +#define UNIMAC_RDP_STATUS_RX_FIFO_OVERRUN_FIELD_MASK 0x00000001 +#define UNIMAC_RDP_STATUS_RX_FIFO_OVERRUN_FIELD_WIDTH 1 +#define UNIMAC_RDP_STATUS_RX_FIFO_OVERRUN_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_RX_DISCARD_PACKET_COUNTER_PKT_COUNT_FIELD; +#define UNIMAC_RDP_RX_DISCARD_PACKET_COUNTER_PKT_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_RX_DISCARD_PACKET_COUNTER_PKT_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_RX_DISCARD_PACKET_COUNTER_PKT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_TX_DISCARD_PACKET_COUNTER_PKT_COUNT_FIELD; +#define UNIMAC_RDP_TX_DISCARD_PACKET_COUNTER_PKT_COUNT_FIELD_MASK 0xffffffff +#define UNIMAC_RDP_TX_DISCARD_PACKET_COUNTER_PKT_COUNT_FIELD_WIDTH 32 +#define UNIMAC_RDP_TX_DISCARD_PACKET_COUNTER_PKT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_REV_RESERVED0_FIELD; +#define UNIMAC_RDP_REV_RESERVED0_FIELD_MASK 0xffff0000 +#define UNIMAC_RDP_REV_RESERVED0_FIELD_WIDTH 16 +#define UNIMAC_RDP_REV_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_RDP_REV_SYS_PORT_REV_FIELD; +#define UNIMAC_RDP_REV_SYS_PORT_REV_FIELD_MASK 0x0000ffff +#define UNIMAC_RDP_REV_SYS_PORT_REV_FIELD_WIDTH 16 +#define UNIMAC_RDP_REV_SYS_PORT_REV_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_UMAC_RXERR_MASK_RESERVED0_FIELD; +#define UNIMAC_RDP_UMAC_RXERR_MASK_RESERVED0_FIELD_MASK 0xfffc0000 +#define UNIMAC_RDP_UMAC_RXERR_MASK_RESERVED0_FIELD_WIDTH 14 +#define UNIMAC_RDP_UMAC_RXERR_MASK_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec UNIMAC_RDP_UMAC_RXERR_MASK_MAC_RXERR_MASK_FIELD; +#define UNIMAC_RDP_UMAC_RXERR_MASK_MAC_RXERR_MASK_FIELD_MASK 0x0003ffff +#define UNIMAC_RDP_UMAC_RXERR_MASK_MAC_RXERR_MASK_FIELD_WIDTH 18 +#define UNIMAC_RDP_UMAC_RXERR_MASK_MAC_RXERR_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_RDP_MIB_MAX_PKT_SIZE_RESERVED0_FIELD; +#define UNIMAC_RDP_MIB_MAX_PKT_SIZE_RESERVED0_FIELD_MASK 0xffffc000 +#define UNIMAC_RDP_MIB_MAX_PKT_SIZE_RESERVED0_FIELD_WIDTH 18 +#define UNIMAC_RDP_MIB_MAX_PKT_SIZE_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec UNIMAC_RDP_MIB_MAX_PKT_SIZE_MAX_PKT_SIZE_FIELD; +#define UNIMAC_RDP_MIB_MAX_PKT_SIZE_MAX_PKT_SIZE_FIELD_MASK 0x00003fff +#define UNIMAC_RDP_MIB_MAX_PKT_SIZE_MAX_PKT_SIZE_FIELD_WIDTH 14 +#define UNIMAC_RDP_MIB_MAX_PKT_SIZE_MAX_PKT_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_MAC_CRC_FWD_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_MAC_CRC_FWD_FIELD_MASK 0x00000001 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_MAC_CRC_FWD_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_MAC_CRC_FWD_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_MAC_CRC_OWRT_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_MAC_CRC_OWRT_FIELD_MASK 0x00000002 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_MAC_CRC_OWRT_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_MAC_CRC_OWRT_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_RESERVED0_FIELD_MASK 0xfffffffc +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_RESERVED0_FIELD_WIDTH 30 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_MAX_PKT_SIZE_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_MAX_PKT_SIZE_FIELD_MASK 0x00003fff +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_MAX_PKT_SIZE_FIELD_WIDTH 14 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_MAX_PKT_SIZE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RESERVED0_FIELD_MASK 0x0000c000 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RESERVED0_FIELD_WIDTH 2 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RXFIFO_CONGESTION_THRESHOLD_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RXFIFO_CONGESTION_THRESHOLD_FIELD_MASK 0x01ff0000 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RXFIFO_CONGESTION_THRESHOLD_FIELD_WIDTH 9 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RXFIFO_CONGESTION_THRESHOLD_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RESERVED1_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RESERVED1_FIELD_MASK 0xfe000000 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RESERVED1_FIELD_WIDTH 7 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_RESERVED1_FIELD_SHIFT 25 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RXFIFO_PAUSE_THRESHOLD_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RXFIFO_PAUSE_THRESHOLD_FIELD_MASK 0x000001ff +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RXFIFO_PAUSE_THRESHOLD_FIELD_WIDTH 9 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RXFIFO_PAUSE_THRESHOLD_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RESERVED0_FIELD_MASK 0x0000fe00 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RESERVED0_FIELD_WIDTH 7 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_INT_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_INT_FIELD_MASK 0x00010000 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_INT_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_INT_FIELD_SHIFT 16 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_EXT_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_EXT_FIELD_MASK 0x00020000 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_EXT_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_BACKPRESSURE_ENABLE_EXT_FIELD_SHIFT 17 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_FIFO_OVERRUN_CTL_EN_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_FIFO_OVERRUN_CTL_EN_FIELD_MASK 0x00040000 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_FIFO_OVERRUN_CTL_EN_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_FIFO_OVERRUN_CTL_EN_FIELD_SHIFT 18 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_REMOTE_LOOPBACK_EN_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_REMOTE_LOOPBACK_EN_FIELD_MASK 0x00080000 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_REMOTE_LOOPBACK_EN_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_REMOTE_LOOPBACK_EN_FIELD_SHIFT 19 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RESERVED1_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RESERVED1_FIELD_MASK 0xfff00000 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RESERVED1_FIELD_WIDTH 12 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_RESERVED1_FIELD_SHIFT 20 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PORT_RATE_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PORT_RATE_FIELD_MASK 0x00000007 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PORT_RATE_FIELD_WIDTH 3 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PORT_RATE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_LPI_TX_DETECT_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_LPI_TX_DETECT_FIELD_MASK 0x00000008 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_LPI_TX_DETECT_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_LPI_TX_DETECT_FIELD_SHIFT 3 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_LPI_RX_DETECT_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_LPI_RX_DETECT_FIELD_MASK 0x00000010 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_LPI_RX_DETECT_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_LPI_RX_DETECT_FIELD_SHIFT 4 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PP_STATS_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PP_STATS_FIELD_MASK 0x00001fe0 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PP_STATS_FIELD_WIDTH 8 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PP_STATS_FIELD_SHIFT 5 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PP_STATS_VALID_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PP_STATS_VALID_FIELD_MASK 0x00002000 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PP_STATS_VALID_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_PP_STATS_VALID_FIELD_SHIFT 13 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_RESERVED0_FIELD_MASK 0xffffc000 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_RESERVED0_FIELD_WIDTH 18 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_RESERVED0_FIELD_SHIFT 14 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_DEBUG_DEBUG_SEL_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_DEBUG_DEBUG_SEL_FIELD_MASK 0x000000ff +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_DEBUG_DEBUG_SEL_FIELD_WIDTH 8 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_DEBUG_DEBUG_SEL_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_DEBUG_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_DEBUG_RESERVED0_FIELD_MASK 0xffffff00 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_DEBUG_RESERVED0_FIELD_WIDTH 24 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_DEBUG_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_RST_UNIMAC_RST_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_RST_UNIMAC_RST_FIELD_MASK 0x00000001 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_RST_UNIMAC_RST_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_RST_UNIMAC_RST_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_RST_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_RST_RESERVED0_FIELD_MASK 0xfffffffe +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_RST_RESERVED0_FIELD_WIDTH 31 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_RST_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_OVERRUN_COUNTER_OVERRUN_COUNTER_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_OVERRUN_COUNTER_OVERRUN_COUNTER_FIELD_MASK 0xffffffff +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_OVERRUN_COUNTER_OVERRUN_COUNTER_FIELD_WIDTH 32 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_OVERRUN_COUNTER_OVERRUN_COUNTER_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_TSI_SIGN_EXT_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_TSI_SIGN_EXT_FIELD_MASK 0x00000001 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_TSI_SIGN_EXT_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_TSI_SIGN_EXT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_OSTS_TIMER_DIS_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_OSTS_TIMER_DIS_FIELD_MASK 0x00000002 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_OSTS_TIMER_DIS_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_OSTS_TIMER_DIS_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_EGR_1588_TS_MODE_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_EGR_1588_TS_MODE_FIELD_MASK 0x00000004 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_EGR_1588_TS_MODE_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_EGR_1588_TS_MODE_FIELD_SHIFT 2 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_RESERVED0_FIELD_MASK 0xfffffff8 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_RESERVED0_FIELD_WIDTH 29 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISR_GEN_INT_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISR_GEN_INT_FIELD_MASK 0x00000001 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISR_GEN_INT_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISR_GEN_INT_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISR_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISR_RESERVED0_FIELD_MASK 0xfffffffe +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISR_RESERVED0_FIELD_WIDTH 31 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISR_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_IER_VALUE_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_IER_VALUE_FIELD_MASK 0x00000001 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_IER_VALUE_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_IER_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_IER_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_IER_RESERVED0_FIELD_MASK 0xfffffffe +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_IER_RESERVED0_FIELD_WIDTH 31 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_IER_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ITR_VALUE_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ITR_VALUE_FIELD_MASK 0x00000001 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ITR_VALUE_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ITR_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ITR_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ITR_RESERVED0_FIELD_MASK 0xfffffffe +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ITR_RESERVED0_FIELD_WIDTH 31 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ITR_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISM_VALUE_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISM_VALUE_FIELD_MASK 0x00000001 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISM_VALUE_FIELD_WIDTH 1 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISM_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISM_RESERVED0_FIELD; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISM_RESERVED0_FIELD_MASK 0xfffffffe +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISM_RESERVED0_FIELD_WIDTH 31 +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISM_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec TCAM_CONTEXT_RAM_TCAM_TCAM_CONTEXT_RAM_CONTEXT_DATA_FIELD; +#define TCAM_CONTEXT_RAM_TCAM_TCAM_CONTEXT_RAM_CONTEXT_DATA_FIELD_MASK 0xffffffff +#define TCAM_CONTEXT_RAM_TCAM_TCAM_CONTEXT_RAM_CONTEXT_DATA_FIELD_WIDTH 32 +#define TCAM_CONTEXT_RAM_TCAM_TCAM_CONTEXT_RAM_CONTEXT_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_CFG_TCAM_TCAM_CFG_BANK_EN_VALUE_FIELD; +#define TCAM_CFG_TCAM_TCAM_CFG_BANK_EN_VALUE_FIELD_MASK 0x000000ff +#define TCAM_CFG_TCAM_TCAM_CFG_BANK_EN_VALUE_FIELD_WIDTH 8 +#define TCAM_CFG_TCAM_TCAM_CFG_BANK_EN_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_CFG_TCAM_TCAM_CFG_BANK_EN_RESERVED0_FIELD; +#define TCAM_CFG_TCAM_TCAM_CFG_BANK_EN_RESERVED0_FIELD_MASK 0xffffff00 +#define TCAM_CFG_TCAM_TCAM_CFG_BANK_EN_RESERVED0_FIELD_WIDTH 24 +#define TCAM_CFG_TCAM_TCAM_CFG_BANK_EN_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec TCAM_CFG_TCAM_TCAM_CFG_GLOBAL_MASK_VALUE_FIELD; +#define TCAM_CFG_TCAM_TCAM_CFG_GLOBAL_MASK_VALUE_FIELD_MASK 0xffffffff +#define TCAM_CFG_TCAM_TCAM_CFG_GLOBAL_MASK_VALUE_FIELD_WIDTH 32 +#define TCAM_CFG_TCAM_TCAM_CFG_GLOBAL_MASK_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_256_CNT_FIELD; +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_256_CNT_FIELD_MASK 0xffffffff +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_256_CNT_FIELD_WIDTH 32 +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_256_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_256_CNT_FIELD; +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_256_CNT_FIELD_MASK 0xffffffff +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_256_CNT_FIELD_WIDTH 32 +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_256_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_512_CNT_FIELD; +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_512_CNT_FIELD_MASK 0xffffffff +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_512_CNT_FIELD_WIDTH 32 +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_512_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_512_CNT_FIELD; +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_512_CNT_FIELD_MASK 0xffffffff +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_512_CNT_FIELD_WIDTH 32 +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_512_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_CMD_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_CMD_FIELD_MASK 0x0000000f +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_CMD_FIELD_WIDTH 4 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_CMD_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_RESERVED0_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_RESERVED0_FIELD_MASK 0xfffffff0 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_RESERVED0_FIELD_WIDTH 28 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_DONE_DONE_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_DONE_DONE_FIELD_MASK 0x00000001 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_DONE_DONE_FIELD_WIDTH 1 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_DONE_DONE_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_DONE_RESERVED0_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_DONE_RESERVED0_FIELD_MASK 0xfffffffe +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_DONE_RESERVED0_FIELD_WIDTH 31 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_DONE_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_KEY1_IND_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_KEY1_IND_FIELD_MASK 0x00000001 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_KEY1_IND_FIELD_WIDTH 1 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_KEY1_IND_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_ENTRY_ADDR_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_ENTRY_ADDR_FIELD_MASK 0x000007fe +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_ENTRY_ADDR_FIELD_WIDTH 10 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_ENTRY_ADDR_FIELD_SHIFT 1 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_RESERVED0_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_RESERVED0_FIELD_MASK 0xfffff800 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_RESERVED0_FIELD_WIDTH 21 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_RESERVED0_FIELD_SHIFT 11 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_IN_VALID_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_IN_VALID_FIELD_MASK 0x00000001 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_IN_VALID_FIELD_WIDTH 1 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_IN_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_IN_RESERVED0_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_IN_RESERVED0_FIELD_MASK 0xfffffffe +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_IN_RESERVED0_FIELD_WIDTH 31 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_IN_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_OUT_VALID_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_OUT_VALID_FIELD_MASK 0x00000001 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_OUT_VALID_FIELD_WIDTH 1 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_OUT_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_OUT_RESERVED0_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_OUT_RESERVED0_FIELD_MASK 0xfffffffe +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_OUT_RESERVED0_FIELD_WIDTH 31 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_OUT_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_MATCH_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_MATCH_FIELD_MASK 0x00000001 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_MATCH_FIELD_WIDTH 1 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_MATCH_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_RESERVED0_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_RESERVED0_FIELD_MASK 0x0000000e +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_RESERVED0_FIELD_WIDTH 3 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_INDEX_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_INDEX_FIELD_MASK 0x00003ff0 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_INDEX_FIELD_WIDTH 10 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_INDEX_FIELD_SHIFT 4 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_RESERVED1_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_RESERVED1_FIELD_MASK 0xffffc000 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_RESERVED1_FIELD_WIDTH 18 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_RESERVED1_FIELD_SHIFT 14 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_IN_VALUE_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_IN_VALUE_FIELD_MASK 0xffffffff +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_IN_VALUE_FIELD_WIDTH 32 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_IN_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_OUT_VALUE_FIELD; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_OUT_VALUE_FIELD_MASK 0xffffffff +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_OUT_VALUE_FIELD_WIDTH 32 +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_OUT_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_DEBUG_BUS_TCAM_DEBUG_BUS_SELECT_SELECT_MODULE_FIELD; +#define TCAM_DEBUG_BUS_TCAM_DEBUG_BUS_SELECT_SELECT_MODULE_FIELD_MASK 0x00000003 +#define TCAM_DEBUG_BUS_TCAM_DEBUG_BUS_SELECT_SELECT_MODULE_FIELD_WIDTH 2 +#define TCAM_DEBUG_BUS_TCAM_DEBUG_BUS_SELECT_SELECT_MODULE_FIELD_SHIFT 0 + +extern const ru_field_rec TCAM_DEBUG_BUS_TCAM_DEBUG_BUS_SELECT_RESERVED0_FIELD; +#define TCAM_DEBUG_BUS_TCAM_DEBUG_BUS_SELECT_RESERVED0_FIELD_MASK 0xfffffffc +#define TCAM_DEBUG_BUS_TCAM_DEBUG_BUS_SELECT_RESERVED0_FIELD_WIDTH 30 +#define TCAM_DEBUG_BUS_TCAM_DEBUG_BUS_SELECT_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec HASH_GENERAL_CONFIGURATION_PWR_SAV_EN_VALUE_FIELD; +#define HASH_GENERAL_CONFIGURATION_PWR_SAV_EN_VALUE_FIELD_MASK 0x00000001 +#define HASH_GENERAL_CONFIGURATION_PWR_SAV_EN_VALUE_FIELD_WIDTH 1 +#define HASH_GENERAL_CONFIGURATION_PWR_SAV_EN_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_GENERAL_CONFIGURATION_PWR_SAV_EN_RESERVED0_FIELD; +#define HASH_GENERAL_CONFIGURATION_PWR_SAV_EN_RESERVED0_FIELD_MASK 0xfffffffe +#define HASH_GENERAL_CONFIGURATION_PWR_SAV_EN_RESERVED0_FIELD_WIDTH 31 +#define HASH_GENERAL_CONFIGURATION_PWR_SAV_EN_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_GENERAL_CONFIGURATION_PAD_HIGH_VAL_FIELD; +#define HASH_GENERAL_CONFIGURATION_PAD_HIGH_VAL_FIELD_MASK 0x0fffffff +#define HASH_GENERAL_CONFIGURATION_PAD_HIGH_VAL_FIELD_WIDTH 28 +#define HASH_GENERAL_CONFIGURATION_PAD_HIGH_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_GENERAL_CONFIGURATION_PAD_HIGH_RESERVED0_FIELD; +#define HASH_GENERAL_CONFIGURATION_PAD_HIGH_RESERVED0_FIELD_MASK 0xf0000000 +#define HASH_GENERAL_CONFIGURATION_PAD_HIGH_RESERVED0_FIELD_WIDTH 4 +#define HASH_GENERAL_CONFIGURATION_PAD_HIGH_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec HASH_GENERAL_CONFIGURATION_PAD_LOW_VAL_FIELD; +#define HASH_GENERAL_CONFIGURATION_PAD_LOW_VAL_FIELD_MASK 0xffffffff +#define HASH_GENERAL_CONFIGURATION_PAD_LOW_VAL_FIELD_WIDTH 32 +#define HASH_GENERAL_CONFIGURATION_PAD_LOW_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_GENERAL_CONFIGURATION_MULT_HIT_ERR_VAL_FIELD; +#define HASH_GENERAL_CONFIGURATION_MULT_HIT_ERR_VAL_FIELD_MASK 0x0000000f +#define HASH_GENERAL_CONFIGURATION_MULT_HIT_ERR_VAL_FIELD_WIDTH 4 +#define HASH_GENERAL_CONFIGURATION_MULT_HIT_ERR_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_GENERAL_CONFIGURATION_MULT_HIT_ERR_RESERVED0_FIELD; +#define HASH_GENERAL_CONFIGURATION_MULT_HIT_ERR_RESERVED0_FIELD_MASK 0xfffffff0 +#define HASH_GENERAL_CONFIGURATION_MULT_HIT_ERR_RESERVED0_FIELD_WIDTH 28 +#define HASH_GENERAL_CONFIGURATION_MULT_HIT_ERR_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec HASH_GENERAL_CONFIGURATION_UNDO_FIX_FRST_MUL_HIT_FIELD; +#define HASH_GENERAL_CONFIGURATION_UNDO_FIX_FRST_MUL_HIT_FIELD_MASK 0x00000001 +#define HASH_GENERAL_CONFIGURATION_UNDO_FIX_FRST_MUL_HIT_FIELD_WIDTH 1 +#define HASH_GENERAL_CONFIGURATION_UNDO_FIX_FRST_MUL_HIT_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_GENERAL_CONFIGURATION_UNDO_FIX_RESERVED0_FIELD; +#define HASH_GENERAL_CONFIGURATION_UNDO_FIX_RESERVED0_FIELD_MASK 0xfffffffe +#define HASH_GENERAL_CONFIGURATION_UNDO_FIX_RESERVED0_FIELD_WIDTH 31 +#define HASH_GENERAL_CONFIGURATION_UNDO_FIX_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_PM_COUNTERS_HITS_CNT_FIELD; +#define HASH_PM_COUNTERS_HITS_CNT_FIELD_MASK 0xffffffff +#define HASH_PM_COUNTERS_HITS_CNT_FIELD_WIDTH 32 +#define HASH_PM_COUNTERS_HITS_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_PM_COUNTERS_SRCHS_CNT_FIELD; +#define HASH_PM_COUNTERS_SRCHS_CNT_FIELD_MASK 0xffffffff +#define HASH_PM_COUNTERS_SRCHS_CNT_FIELD_WIDTH 32 +#define HASH_PM_COUNTERS_SRCHS_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_PM_COUNTERS_MISS_CNT_FIELD; +#define HASH_PM_COUNTERS_MISS_CNT_FIELD_MASK 0xffffffff +#define HASH_PM_COUNTERS_MISS_CNT_FIELD_WIDTH 32 +#define HASH_PM_COUNTERS_MISS_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_PM_COUNTERS_HIT_1ST_ACS_CNT_FIELD; +#define HASH_PM_COUNTERS_HIT_1ST_ACS_CNT_FIELD_MASK 0xffffffff +#define HASH_PM_COUNTERS_HIT_1ST_ACS_CNT_FIELD_WIDTH 32 +#define HASH_PM_COUNTERS_HIT_1ST_ACS_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_PM_COUNTERS_HIT_2ND_ACS_CNT_FIELD; +#define HASH_PM_COUNTERS_HIT_2ND_ACS_CNT_FIELD_MASK 0xffffffff +#define HASH_PM_COUNTERS_HIT_2ND_ACS_CNT_FIELD_WIDTH 32 +#define HASH_PM_COUNTERS_HIT_2ND_ACS_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_PM_COUNTERS_HIT_3RD_ACS_CNT_FIELD; +#define HASH_PM_COUNTERS_HIT_3RD_ACS_CNT_FIELD_MASK 0xffffffff +#define HASH_PM_COUNTERS_HIT_3RD_ACS_CNT_FIELD_WIDTH 32 +#define HASH_PM_COUNTERS_HIT_3RD_ACS_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_PM_COUNTERS_HIT_4TH_ACS_CNT_FIELD; +#define HASH_PM_COUNTERS_HIT_4TH_ACS_CNT_FIELD_MASK 0xffffffff +#define HASH_PM_COUNTERS_HIT_4TH_ACS_CNT_FIELD_WIDTH 32 +#define HASH_PM_COUNTERS_HIT_4TH_ACS_CNT_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_PM_COUNTERS_FRZ_CNT_VAL_FIELD; +#define HASH_PM_COUNTERS_FRZ_CNT_VAL_FIELD_MASK 0x00000001 +#define HASH_PM_COUNTERS_FRZ_CNT_VAL_FIELD_WIDTH 1 +#define HASH_PM_COUNTERS_FRZ_CNT_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_PM_COUNTERS_FRZ_CNT_RESERVED0_FIELD; +#define HASH_PM_COUNTERS_FRZ_CNT_RESERVED0_FIELD_MASK 0xfffffffe +#define HASH_PM_COUNTERS_FRZ_CNT_RESERVED0_FIELD_WIDTH 31 +#define HASH_PM_COUNTERS_FRZ_CNT_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_HASH_BASE_ADDR_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_HASH_BASE_ADDR_FIELD_MASK 0x000007ff +#define HASH_LKUP_TBL_CFG_TBL_CFG_HASH_BASE_ADDR_FIELD_WIDTH 11 +#define HASH_LKUP_TBL_CFG_TBL_CFG_HASH_BASE_ADDR_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED0_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED0_FIELD_MASK 0x0000f800 +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED0_FIELD_WIDTH 5 +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED0_FIELD_SHIFT 11 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_TBL_SIZE_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_TBL_SIZE_FIELD_MASK 0x00070000 +#define HASH_LKUP_TBL_CFG_TBL_CFG_TBL_SIZE_FIELD_WIDTH 3 +#define HASH_LKUP_TBL_CFG_TBL_CFG_TBL_SIZE_FIELD_SHIFT 16 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED1_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED1_FIELD_MASK 0x00080000 +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED1_FIELD_WIDTH 1 +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED1_FIELD_SHIFT 19 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_MAX_HOP_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_MAX_HOP_FIELD_MASK 0x00f00000 +#define HASH_LKUP_TBL_CFG_TBL_CFG_MAX_HOP_FIELD_WIDTH 4 +#define HASH_LKUP_TBL_CFG_TBL_CFG_MAX_HOP_FIELD_SHIFT 20 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_CAM_EN_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_CAM_EN_FIELD_MASK 0x01000000 +#define HASH_LKUP_TBL_CFG_TBL_CFG_CAM_EN_FIELD_WIDTH 1 +#define HASH_LKUP_TBL_CFG_TBL_CFG_CAM_EN_FIELD_SHIFT 24 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_DIRECT_LKUP_EN_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_DIRECT_LKUP_EN_FIELD_MASK 0x02000000 +#define HASH_LKUP_TBL_CFG_TBL_CFG_DIRECT_LKUP_EN_FIELD_WIDTH 1 +#define HASH_LKUP_TBL_CFG_TBL_CFG_DIRECT_LKUP_EN_FIELD_SHIFT 25 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_HASH_TYPE_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_HASH_TYPE_FIELD_MASK 0x04000000 +#define HASH_LKUP_TBL_CFG_TBL_CFG_HASH_TYPE_FIELD_WIDTH 1 +#define HASH_LKUP_TBL_CFG_TBL_CFG_HASH_TYPE_FIELD_SHIFT 26 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED2_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED2_FIELD_MASK 0x08000000 +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED2_FIELD_WIDTH 1 +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED2_FIELD_SHIFT 27 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_INT_CNTX_SIZE_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_INT_CNTX_SIZE_FIELD_MASK 0x30000000 +#define HASH_LKUP_TBL_CFG_TBL_CFG_INT_CNTX_SIZE_FIELD_WIDTH 2 +#define HASH_LKUP_TBL_CFG_TBL_CFG_INT_CNTX_SIZE_FIELD_SHIFT 28 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED3_FIELD; +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED3_FIELD_MASK 0xc0000000 +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED3_FIELD_WIDTH 2 +#define HASH_LKUP_TBL_CFG_TBL_CFG_RESERVED3_FIELD_SHIFT 30 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_MASKH_FIELD; +#define HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_MASKH_FIELD_MASK 0x0fffffff +#define HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_MASKH_FIELD_WIDTH 28 +#define HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_MASKH_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_RESERVED0_FIELD; +#define HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_RESERVED0_FIELD_MASK 0xf0000000 +#define HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_RESERVED0_FIELD_WIDTH 4 +#define HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_KEY_MASK_LOW_MASKL_FIELD; +#define HASH_LKUP_TBL_CFG_KEY_MASK_LOW_MASKL_FIELD_MASK 0xffffffff +#define HASH_LKUP_TBL_CFG_KEY_MASK_LOW_MASKL_FIELD_WIDTH 32 +#define HASH_LKUP_TBL_CFG_KEY_MASK_LOW_MASKL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_CNTXT_CFG_BASE_ADDRESS_FIELD; +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_BASE_ADDRESS_FIELD_MASK 0x00000fff +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_BASE_ADDRESS_FIELD_WIDTH 12 +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_BASE_ADDRESS_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_CNTXT_CFG_FIRST_HASH_IDX_FIELD; +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_FIRST_HASH_IDX_FIELD_MASK 0x01fff000 +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_FIRST_HASH_IDX_FIELD_WIDTH 13 +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_FIRST_HASH_IDX_FIELD_SHIFT 12 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_CNTXT_CFG_RESERVED0_FIELD; +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_RESERVED0_FIELD_MASK 0x0e000000 +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_RESERVED0_FIELD_WIDTH 3 +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_RESERVED0_FIELD_SHIFT 25 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_CNTXT_CFG_CNXT_SIZE_FIELD; +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_CNXT_SIZE_FIELD_MASK 0x70000000 +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_CNXT_SIZE_FIELD_WIDTH 3 +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_CNXT_SIZE_FIELD_SHIFT 28 + +extern const ru_field_rec HASH_LKUP_TBL_CFG_CNTXT_CFG_RESERVED1_FIELD; +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_RESERVED1_FIELD_MASK 0x80000000 +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_RESERVED1_FIELD_WIDTH 1 +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_RESERVED1_FIELD_SHIFT 31 + +extern const ru_field_rec HASH_CAM_CONFIGURATION_CNTXT_CFG_BASE_ADDRESS_FIELD; +#define HASH_CAM_CONFIGURATION_CNTXT_CFG_BASE_ADDRESS_FIELD_MASK 0x00000fff +#define HASH_CAM_CONFIGURATION_CNTXT_CFG_BASE_ADDRESS_FIELD_WIDTH 12 +#define HASH_CAM_CONFIGURATION_CNTXT_CFG_BASE_ADDRESS_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_CONFIGURATION_CNTXT_CFG_RESERVED0_FIELD; +#define HASH_CAM_CONFIGURATION_CNTXT_CFG_RESERVED0_FIELD_MASK 0xfffff000 +#define HASH_CAM_CONFIGURATION_CNTXT_CFG_RESERVED0_FIELD_WIDTH 20 +#define HASH_CAM_CONFIGURATION_CNTXT_CFG_RESERVED0_FIELD_SHIFT 12 + +extern const ru_field_rec HASH_CAM_INDIRECT_OP_CMD_FIELD; +#define HASH_CAM_INDIRECT_OP_CMD_FIELD_MASK 0x0000000f +#define HASH_CAM_INDIRECT_OP_CMD_FIELD_WIDTH 4 +#define HASH_CAM_INDIRECT_OP_CMD_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_INDIRECT_OP_RESERVED0_FIELD; +#define HASH_CAM_INDIRECT_OP_RESERVED0_FIELD_MASK 0xfffffff0 +#define HASH_CAM_INDIRECT_OP_RESERVED0_FIELD_WIDTH 28 +#define HASH_CAM_INDIRECT_OP_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec HASH_CAM_INDIRECT_OP_DONE_VAL_FIELD; +#define HASH_CAM_INDIRECT_OP_DONE_VAL_FIELD_MASK 0x00000001 +#define HASH_CAM_INDIRECT_OP_DONE_VAL_FIELD_WIDTH 1 +#define HASH_CAM_INDIRECT_OP_DONE_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_INDIRECT_OP_DONE_RESERVED0_FIELD; +#define HASH_CAM_INDIRECT_OP_DONE_RESERVED0_FIELD_MASK 0xfffffffe +#define HASH_CAM_INDIRECT_OP_DONE_RESERVED0_FIELD_WIDTH 31 +#define HASH_CAM_INDIRECT_OP_DONE_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_CAM_INDIRECT_ADDR_KEY1_IND_FIELD; +#define HASH_CAM_INDIRECT_ADDR_KEY1_IND_FIELD_MASK 0x00000001 +#define HASH_CAM_INDIRECT_ADDR_KEY1_IND_FIELD_WIDTH 1 +#define HASH_CAM_INDIRECT_ADDR_KEY1_IND_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_INDIRECT_ADDR_ENTRY_ADDR_FIELD; +#define HASH_CAM_INDIRECT_ADDR_ENTRY_ADDR_FIELD_MASK 0x0000007e +#define HASH_CAM_INDIRECT_ADDR_ENTRY_ADDR_FIELD_WIDTH 6 +#define HASH_CAM_INDIRECT_ADDR_ENTRY_ADDR_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_CAM_INDIRECT_ADDR_RESERVED0_FIELD; +#define HASH_CAM_INDIRECT_ADDR_RESERVED0_FIELD_MASK 0xffffff80 +#define HASH_CAM_INDIRECT_ADDR_RESERVED0_FIELD_WIDTH 25 +#define HASH_CAM_INDIRECT_ADDR_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec HASH_CAM_INDIRECT_VLID_IN_VALID_FIELD; +#define HASH_CAM_INDIRECT_VLID_IN_VALID_FIELD_MASK 0x00000001 +#define HASH_CAM_INDIRECT_VLID_IN_VALID_FIELD_WIDTH 1 +#define HASH_CAM_INDIRECT_VLID_IN_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_INDIRECT_VLID_IN_RESERVED0_FIELD; +#define HASH_CAM_INDIRECT_VLID_IN_RESERVED0_FIELD_MASK 0xfffffffe +#define HASH_CAM_INDIRECT_VLID_IN_RESERVED0_FIELD_WIDTH 31 +#define HASH_CAM_INDIRECT_VLID_IN_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_CAM_INDIRECT_VLID_OUT_VALID_FIELD; +#define HASH_CAM_INDIRECT_VLID_OUT_VALID_FIELD_MASK 0x00000001 +#define HASH_CAM_INDIRECT_VLID_OUT_VALID_FIELD_WIDTH 1 +#define HASH_CAM_INDIRECT_VLID_OUT_VALID_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_INDIRECT_VLID_OUT_RESERVED0_FIELD; +#define HASH_CAM_INDIRECT_VLID_OUT_RESERVED0_FIELD_MASK 0xfffffffe +#define HASH_CAM_INDIRECT_VLID_OUT_RESERVED0_FIELD_WIDTH 31 +#define HASH_CAM_INDIRECT_VLID_OUT_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_CAM_INDIRECT_RSLT_MATCH_FIELD; +#define HASH_CAM_INDIRECT_RSLT_MATCH_FIELD_MASK 0x00000001 +#define HASH_CAM_INDIRECT_RSLT_MATCH_FIELD_WIDTH 1 +#define HASH_CAM_INDIRECT_RSLT_MATCH_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_INDIRECT_RSLT_RESERVED0_FIELD; +#define HASH_CAM_INDIRECT_RSLT_RESERVED0_FIELD_MASK 0x0000000e +#define HASH_CAM_INDIRECT_RSLT_RESERVED0_FIELD_WIDTH 3 +#define HASH_CAM_INDIRECT_RSLT_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_CAM_INDIRECT_RSLT_INDEX_FIELD; +#define HASH_CAM_INDIRECT_RSLT_INDEX_FIELD_MASK 0x000003f0 +#define HASH_CAM_INDIRECT_RSLT_INDEX_FIELD_WIDTH 6 +#define HASH_CAM_INDIRECT_RSLT_INDEX_FIELD_SHIFT 4 + +extern const ru_field_rec HASH_CAM_INDIRECT_RSLT_RESERVED1_FIELD; +#define HASH_CAM_INDIRECT_RSLT_RESERVED1_FIELD_MASK 0xfffffc00 +#define HASH_CAM_INDIRECT_RSLT_RESERVED1_FIELD_WIDTH 22 +#define HASH_CAM_INDIRECT_RSLT_RESERVED1_FIELD_SHIFT 10 + +extern const ru_field_rec HASH_CAM_INDIRECT_KEY_IN_VALUE_FIELD; +#define HASH_CAM_INDIRECT_KEY_IN_VALUE_FIELD_MASK 0xffffffff +#define HASH_CAM_INDIRECT_KEY_IN_VALUE_FIELD_WIDTH 32 +#define HASH_CAM_INDIRECT_KEY_IN_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_INDIRECT_KEY_OUT_VALUE_FIELD; +#define HASH_CAM_INDIRECT_KEY_OUT_VALUE_FIELD_MASK 0xffffffff +#define HASH_CAM_INDIRECT_KEY_OUT_VALUE_FIELD_WIDTH 32 +#define HASH_CAM_INDIRECT_KEY_OUT_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_STATUS_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_STATUS_VALUE_FIELD_MASK 0xffffffff +#define HASH_CAM_BIST_BIST_STATUS_VALUE_FIELD_WIDTH 32 +#define HASH_CAM_BIST_BIST_STATUS_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_DBG_COMPARE_EN_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_DBG_COMPARE_EN_VALUE_FIELD_MASK 0x00000001 +#define HASH_CAM_BIST_BIST_DBG_COMPARE_EN_VALUE_FIELD_WIDTH 1 +#define HASH_CAM_BIST_BIST_DBG_COMPARE_EN_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_DBG_COMPARE_EN_RESERVED0_FIELD; +#define HASH_CAM_BIST_BIST_DBG_COMPARE_EN_RESERVED0_FIELD_MASK 0xfffffffe +#define HASH_CAM_BIST_BIST_DBG_COMPARE_EN_RESERVED0_FIELD_WIDTH 31 +#define HASH_CAM_BIST_BIST_DBG_COMPARE_EN_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_CAM_BIST_BIST_DBG_DATA_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_DBG_DATA_VALUE_FIELD_MASK 0xffffffff +#define HASH_CAM_BIST_BIST_DBG_DATA_VALUE_FIELD_WIDTH 32 +#define HASH_CAM_BIST_BIST_DBG_DATA_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_DBG_DATA_SLICE_OR_STATUS_SEL_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_DBG_DATA_SLICE_OR_STATUS_SEL_VALUE_FIELD_MASK 0x000000ff +#define HASH_CAM_BIST_BIST_DBG_DATA_SLICE_OR_STATUS_SEL_VALUE_FIELD_WIDTH 8 +#define HASH_CAM_BIST_BIST_DBG_DATA_SLICE_OR_STATUS_SEL_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_DBG_DATA_SLICE_OR_STATUS_SEL_RESERVED0_FIELD; +#define HASH_CAM_BIST_BIST_DBG_DATA_SLICE_OR_STATUS_SEL_RESERVED0_FIELD_MASK 0xffffff00 +#define HASH_CAM_BIST_BIST_DBG_DATA_SLICE_OR_STATUS_SEL_RESERVED0_FIELD_WIDTH 24 +#define HASH_CAM_BIST_BIST_DBG_DATA_SLICE_OR_STATUS_SEL_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec HASH_CAM_BIST_BIST_DBG_DATA_VALID_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_DBG_DATA_VALID_VALUE_FIELD_MASK 0x00000001 +#define HASH_CAM_BIST_BIST_DBG_DATA_VALID_VALUE_FIELD_WIDTH 1 +#define HASH_CAM_BIST_BIST_DBG_DATA_VALID_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_DBG_DATA_VALID_RESERVED0_FIELD; +#define HASH_CAM_BIST_BIST_DBG_DATA_VALID_RESERVED0_FIELD_MASK 0xfffffffe +#define HASH_CAM_BIST_BIST_DBG_DATA_VALID_RESERVED0_FIELD_WIDTH 31 +#define HASH_CAM_BIST_BIST_DBG_DATA_VALID_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_CAM_BIST_BIST_EN_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_EN_VALUE_FIELD_MASK 0x0000ffff +#define HASH_CAM_BIST_BIST_EN_VALUE_FIELD_WIDTH 16 +#define HASH_CAM_BIST_BIST_EN_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_EN_RESERVED0_FIELD; +#define HASH_CAM_BIST_BIST_EN_RESERVED0_FIELD_MASK 0xffff0000 +#define HASH_CAM_BIST_BIST_EN_RESERVED0_FIELD_WIDTH 16 +#define HASH_CAM_BIST_BIST_EN_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec HASH_CAM_BIST_BIST_MODE_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_MODE_VALUE_FIELD_MASK 0x00000003 +#define HASH_CAM_BIST_BIST_MODE_VALUE_FIELD_WIDTH 2 +#define HASH_CAM_BIST_BIST_MODE_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_MODE_RESERVED0_FIELD; +#define HASH_CAM_BIST_BIST_MODE_RESERVED0_FIELD_MASK 0xfffffffc +#define HASH_CAM_BIST_BIST_MODE_RESERVED0_FIELD_WIDTH 30 +#define HASH_CAM_BIST_BIST_MODE_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec HASH_CAM_BIST_BIST_RST_L_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_RST_L_VALUE_FIELD_MASK 0x00000001 +#define HASH_CAM_BIST_BIST_RST_L_VALUE_FIELD_WIDTH 1 +#define HASH_CAM_BIST_BIST_RST_L_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_RST_L_RESERVED0_FIELD; +#define HASH_CAM_BIST_BIST_RST_L_RESERVED0_FIELD_MASK 0xfffffffe +#define HASH_CAM_BIST_BIST_RST_L_RESERVED0_FIELD_WIDTH 31 +#define HASH_CAM_BIST_BIST_RST_L_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_CAM_BIST_BIST_SKIP_ERROR_CNT_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_SKIP_ERROR_CNT_VALUE_FIELD_MASK 0x000000ff +#define HASH_CAM_BIST_BIST_SKIP_ERROR_CNT_VALUE_FIELD_WIDTH 8 +#define HASH_CAM_BIST_BIST_SKIP_ERROR_CNT_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_SKIP_ERROR_CNT_RESERVED0_FIELD; +#define HASH_CAM_BIST_BIST_SKIP_ERROR_CNT_RESERVED0_FIELD_MASK 0xffffff00 +#define HASH_CAM_BIST_BIST_SKIP_ERROR_CNT_RESERVED0_FIELD_WIDTH 24 +#define HASH_CAM_BIST_BIST_SKIP_ERROR_CNT_RESERVED0_FIELD_SHIFT 8 + +extern const ru_field_rec HASH_CAM_BIST_DBG_EN_VALUE_FIELD; +#define HASH_CAM_BIST_DBG_EN_VALUE_FIELD_MASK 0x0000ffff +#define HASH_CAM_BIST_DBG_EN_VALUE_FIELD_WIDTH 16 +#define HASH_CAM_BIST_DBG_EN_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_DBG_EN_RESERVED0_FIELD; +#define HASH_CAM_BIST_DBG_EN_RESERVED0_FIELD_MASK 0xffff0000 +#define HASH_CAM_BIST_DBG_EN_RESERVED0_FIELD_WIDTH 16 +#define HASH_CAM_BIST_DBG_EN_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec HASH_CAM_BIST_BIST_CASCADE_SELECT_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_CASCADE_SELECT_VALUE_FIELD_MASK 0x00000007 +#define HASH_CAM_BIST_BIST_CASCADE_SELECT_VALUE_FIELD_WIDTH 3 +#define HASH_CAM_BIST_BIST_CASCADE_SELECT_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_CASCADE_SELECT_RESERVED0_FIELD; +#define HASH_CAM_BIST_BIST_CASCADE_SELECT_RESERVED0_FIELD_MASK 0xfffffff8 +#define HASH_CAM_BIST_BIST_CASCADE_SELECT_RESERVED0_FIELD_WIDTH 29 +#define HASH_CAM_BIST_BIST_CASCADE_SELECT_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec HASH_CAM_BIST_BIST_BLOCK_SELECT_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_BLOCK_SELECT_VALUE_FIELD_MASK 0x0000000f +#define HASH_CAM_BIST_BIST_BLOCK_SELECT_VALUE_FIELD_WIDTH 4 +#define HASH_CAM_BIST_BIST_BLOCK_SELECT_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_BLOCK_SELECT_RESERVED0_FIELD; +#define HASH_CAM_BIST_BIST_BLOCK_SELECT_RESERVED0_FIELD_MASK 0xfffffff0 +#define HASH_CAM_BIST_BIST_BLOCK_SELECT_RESERVED0_FIELD_WIDTH 28 +#define HASH_CAM_BIST_BIST_BLOCK_SELECT_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec HASH_CAM_BIST_BIST_REPAIR_ENABLE_VALUE_FIELD; +#define HASH_CAM_BIST_BIST_REPAIR_ENABLE_VALUE_FIELD_MASK 0x00000001 +#define HASH_CAM_BIST_BIST_REPAIR_ENABLE_VALUE_FIELD_WIDTH 1 +#define HASH_CAM_BIST_BIST_REPAIR_ENABLE_VALUE_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CAM_BIST_BIST_REPAIR_ENABLE_RESERVED0_FIELD; +#define HASH_CAM_BIST_BIST_REPAIR_ENABLE_RESERVED0_FIELD_MASK 0xfffffffe +#define HASH_CAM_BIST_BIST_REPAIR_ENABLE_RESERVED0_FIELD_WIDTH 31 +#define HASH_CAM_BIST_BIST_REPAIR_ENABLE_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_INTR_CTRL_ISR_INVLD_CMD_FIELD; +#define HASH_INTR_CTRL_ISR_INVLD_CMD_FIELD_MASK 0x00000001 +#define HASH_INTR_CTRL_ISR_INVLD_CMD_FIELD_WIDTH 1 +#define HASH_INTR_CTRL_ISR_INVLD_CMD_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_INTR_CTRL_ISR_MULT_MATCH_FIELD; +#define HASH_INTR_CTRL_ISR_MULT_MATCH_FIELD_MASK 0x00000002 +#define HASH_INTR_CTRL_ISR_MULT_MATCH_FIELD_WIDTH 1 +#define HASH_INTR_CTRL_ISR_MULT_MATCH_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_INTR_CTRL_ISR_HASH_0_IDX_OVFLV_FIELD; +#define HASH_INTR_CTRL_ISR_HASH_0_IDX_OVFLV_FIELD_MASK 0x00000004 +#define HASH_INTR_CTRL_ISR_HASH_0_IDX_OVFLV_FIELD_WIDTH 1 +#define HASH_INTR_CTRL_ISR_HASH_0_IDX_OVFLV_FIELD_SHIFT 2 + +extern const ru_field_rec HASH_INTR_CTRL_ISR_HASH_1_IDX_OVFLV_FIELD; +#define HASH_INTR_CTRL_ISR_HASH_1_IDX_OVFLV_FIELD_MASK 0x00000008 +#define HASH_INTR_CTRL_ISR_HASH_1_IDX_OVFLV_FIELD_WIDTH 1 +#define HASH_INTR_CTRL_ISR_HASH_1_IDX_OVFLV_FIELD_SHIFT 3 + +extern const ru_field_rec HASH_INTR_CTRL_ISR_HASH_2_IDX_OVFLV_FIELD; +#define HASH_INTR_CTRL_ISR_HASH_2_IDX_OVFLV_FIELD_MASK 0x00000010 +#define HASH_INTR_CTRL_ISR_HASH_2_IDX_OVFLV_FIELD_WIDTH 1 +#define HASH_INTR_CTRL_ISR_HASH_2_IDX_OVFLV_FIELD_SHIFT 4 + +extern const ru_field_rec HASH_INTR_CTRL_ISR_HASH_3_IDX_OVFLV_FIELD; +#define HASH_INTR_CTRL_ISR_HASH_3_IDX_OVFLV_FIELD_MASK 0x00000020 +#define HASH_INTR_CTRL_ISR_HASH_3_IDX_OVFLV_FIELD_WIDTH 1 +#define HASH_INTR_CTRL_ISR_HASH_3_IDX_OVFLV_FIELD_SHIFT 5 + +extern const ru_field_rec HASH_INTR_CTRL_ISR_CNTXT_IDX_OVFLV_FIELD; +#define HASH_INTR_CTRL_ISR_CNTXT_IDX_OVFLV_FIELD_MASK 0x00000040 +#define HASH_INTR_CTRL_ISR_CNTXT_IDX_OVFLV_FIELD_WIDTH 1 +#define HASH_INTR_CTRL_ISR_CNTXT_IDX_OVFLV_FIELD_SHIFT 6 + +extern const ru_field_rec HASH_INTR_CTRL_ISR_RESERVED0_FIELD; +#define HASH_INTR_CTRL_ISR_RESERVED0_FIELD_MASK 0xffffff80 +#define HASH_INTR_CTRL_ISR_RESERVED0_FIELD_WIDTH 25 +#define HASH_INTR_CTRL_ISR_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec HASH_INTR_CTRL_ISM_ISM_FIELD; +#define HASH_INTR_CTRL_ISM_ISM_FIELD_MASK 0xffffffff +#define HASH_INTR_CTRL_ISM_ISM_FIELD_WIDTH 32 +#define HASH_INTR_CTRL_ISM_ISM_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_INTR_CTRL_IER_IEM_FIELD; +#define HASH_INTR_CTRL_IER_IEM_FIELD_MASK 0xffffffff +#define HASH_INTR_CTRL_IER_IEM_FIELD_WIDTH 32 +#define HASH_INTR_CTRL_IER_IEM_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_INTR_CTRL_ITR_IST_FIELD; +#define HASH_INTR_CTRL_ITR_IST_FIELD_MASK 0xffffffff +#define HASH_INTR_CTRL_ITR_IST_FIELD_WIDTH 32 +#define HASH_INTR_CTRL_ITR_IST_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG0_VAL_FIELD; +#define HASH_DEBUG_DBG0_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG0_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG0_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG1_VAL_FIELD; +#define HASH_DEBUG_DBG1_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG1_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG1_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG2_VAL_FIELD; +#define HASH_DEBUG_DBG2_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG2_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG2_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG3_VAL_FIELD; +#define HASH_DEBUG_DBG3_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG3_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG3_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG4_VAL_FIELD; +#define HASH_DEBUG_DBG4_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG4_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG4_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG5_VAL_FIELD; +#define HASH_DEBUG_DBG5_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG5_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG5_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG6_VAL_FIELD; +#define HASH_DEBUG_DBG6_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG6_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG6_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG7_VAL_FIELD; +#define HASH_DEBUG_DBG7_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG7_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG7_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG8_VAL_FIELD; +#define HASH_DEBUG_DBG8_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG8_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG8_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG9_VAL_FIELD; +#define HASH_DEBUG_DBG9_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG9_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG9_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG10_VAL_FIELD; +#define HASH_DEBUG_DBG10_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG10_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG10_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG11_VAL_FIELD; +#define HASH_DEBUG_DBG11_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG11_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG11_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG12_VAL_FIELD; +#define HASH_DEBUG_DBG12_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG12_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG12_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG13_VAL_FIELD; +#define HASH_DEBUG_DBG13_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG13_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG13_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG14_VAL_FIELD; +#define HASH_DEBUG_DBG14_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG14_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG14_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG15_VAL_FIELD; +#define HASH_DEBUG_DBG15_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG15_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG15_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG16_VAL_FIELD; +#define HASH_DEBUG_DBG16_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG16_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG16_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG17_VAL_FIELD; +#define HASH_DEBUG_DBG17_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG17_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG17_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG18_VAL_FIELD; +#define HASH_DEBUG_DBG18_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG18_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG18_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG19_VAL_FIELD; +#define HASH_DEBUG_DBG19_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG19_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG19_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG20_VAL_FIELD; +#define HASH_DEBUG_DBG20_VAL_FIELD_MASK 0xffffffff +#define HASH_DEBUG_DBG20_VAL_FIELD_WIDTH 32 +#define HASH_DEBUG_DBG20_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG_SEL_VAL_FIELD; +#define HASH_DEBUG_DBG_SEL_VAL_FIELD_MASK 0x0000001f +#define HASH_DEBUG_DBG_SEL_VAL_FIELD_WIDTH 5 +#define HASH_DEBUG_DBG_SEL_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_DEBUG_DBG_SEL_RESERVED0_FIELD; +#define HASH_DEBUG_DBG_SEL_RESERVED0_FIELD_MASK 0xffffffe0 +#define HASH_DEBUG_DBG_SEL_RESERVED0_FIELD_WIDTH 27 +#define HASH_DEBUG_DBG_SEL_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec HASH_AGING_RAM_AGING_DATA_FIELD; +#define HASH_AGING_RAM_AGING_DATA_FIELD_MASK 0xffffffff +#define HASH_AGING_RAM_AGING_DATA_FIELD_WIDTH 32 +#define HASH_AGING_RAM_AGING_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CONTEXT_RAM_CONTEXT_47_24_DATA_FIELD; +#define HASH_CONTEXT_RAM_CONTEXT_47_24_DATA_FIELD_MASK 0x00ffffff +#define HASH_CONTEXT_RAM_CONTEXT_47_24_DATA_FIELD_WIDTH 24 +#define HASH_CONTEXT_RAM_CONTEXT_47_24_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CONTEXT_RAM_CONTEXT_47_24_RESERVED0_FIELD; +#define HASH_CONTEXT_RAM_CONTEXT_47_24_RESERVED0_FIELD_MASK 0xff000000 +#define HASH_CONTEXT_RAM_CONTEXT_47_24_RESERVED0_FIELD_WIDTH 8 +#define HASH_CONTEXT_RAM_CONTEXT_47_24_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec HASH_CONTEXT_RAM_CONTEXT_23_0_DATA_FIELD; +#define HASH_CONTEXT_RAM_CONTEXT_23_0_DATA_FIELD_MASK 0x00ffffff +#define HASH_CONTEXT_RAM_CONTEXT_23_0_DATA_FIELD_WIDTH 24 +#define HASH_CONTEXT_RAM_CONTEXT_23_0_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_CONTEXT_RAM_CONTEXT_23_0_RESERVED0_FIELD; +#define HASH_CONTEXT_RAM_CONTEXT_23_0_RESERVED0_FIELD_MASK 0xff000000 +#define HASH_CONTEXT_RAM_CONTEXT_23_0_RESERVED0_FIELD_WIDTH 8 +#define HASH_CONTEXT_RAM_CONTEXT_23_0_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec HASH_RAM_ENG_HIGH_KEY_59_28_OR_DAT_FIELD; +#define HASH_RAM_ENG_HIGH_KEY_59_28_OR_DAT_FIELD_MASK 0xffffffff +#define HASH_RAM_ENG_HIGH_KEY_59_28_OR_DAT_FIELD_WIDTH 32 +#define HASH_RAM_ENG_HIGH_KEY_59_28_OR_DAT_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_RAM_ENG_LOW_SKP_FIELD; +#define HASH_RAM_ENG_LOW_SKP_FIELD_MASK 0x00000001 +#define HASH_RAM_ENG_LOW_SKP_FIELD_WIDTH 1 +#define HASH_RAM_ENG_LOW_SKP_FIELD_SHIFT 0 + +extern const ru_field_rec HASH_RAM_ENG_LOW_CFG_FIELD; +#define HASH_RAM_ENG_LOW_CFG_FIELD_MASK 0x0000000e +#define HASH_RAM_ENG_LOW_CFG_FIELD_WIDTH 3 +#define HASH_RAM_ENG_LOW_CFG_FIELD_SHIFT 1 + +extern const ru_field_rec HASH_RAM_ENG_LOW_KEY_11_0_FIELD; +#define HASH_RAM_ENG_LOW_KEY_11_0_FIELD_MASK 0x0000fff0 +#define HASH_RAM_ENG_LOW_KEY_11_0_FIELD_WIDTH 12 +#define HASH_RAM_ENG_LOW_KEY_11_0_FIELD_SHIFT 4 + +extern const ru_field_rec HASH_RAM_ENG_LOW_KEY_27_12_OR_DAT_FIELD; +#define HASH_RAM_ENG_LOW_KEY_27_12_OR_DAT_FIELD_MASK 0xffff0000 +#define HASH_RAM_ENG_LOW_KEY_27_12_OR_DAT_FIELD_WIDTH 16 +#define HASH_RAM_ENG_LOW_KEY_27_12_OR_DAT_FIELD_SHIFT 16 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_RSLT_F_FULL_THR_THR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_RSLT_F_FULL_THR_THR_FIELD_MASK 0x0000000f +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_RSLT_F_FULL_THR_THR_FIELD_WIDTH 4 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_RSLT_F_FULL_THR_THR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_RSLT_F_FULL_THR_RESERVED0_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_RSLT_F_FULL_THR_RESERVED0_FIELD_MASK 0xfffffff0 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_RSLT_F_FULL_THR_RESERVED0_FIELD_WIDTH 28 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_RSLT_F_FULL_THR_RESERVED0_FIELD_SHIFT 4 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_EN_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_EN_FIELD_MASK 0x00000001 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_EN_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_EN_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED0_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED0_FIELD_MASK 0x0000000e +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED0_FIELD_WIDTH 3 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_ID_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_ID_FIELD_MASK 0x000003f0 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_ID_FIELD_WIDTH 6 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_ID_FIELD_SHIFT 4 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED1_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED1_FIELD_MASK 0x0000fc00 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED1_FIELD_WIDTH 6 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED1_FIELD_SHIFT 10 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_ADDR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_ADDR_FIELD_MASK 0x03ff0000 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_ADDR_FIELD_WIDTH 10 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_ADDR_FIELD_SHIFT 16 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED2_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED2_FIELD_MASK 0xfc000000 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED2_FIELD_WIDTH 6 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_RESERVED2_FIELD_SHIFT 26 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_BA_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_BA_FIELD_MASK 0x00000fff +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_BA_FIELD_WIDTH 12 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_BA_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_BT_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_BT_FIELD_MASK 0x0000f000 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_BT_FIELD_WIDTH 4 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_BT_FIELD_SHIFT 12 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_OFST_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_OFST_FIELD_MASK 0x0fff0000 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_OFST_FIELD_WIDTH 12 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_OFST_FIELD_SHIFT 16 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_RESERVED0_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_RESERVED0_FIELD_MASK 0xf0000000 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_RESERVED0_FIELD_WIDTH 4 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_RESERVED0_FIELD_SHIFT 28 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_MASK 0x00000001 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_BYPASS_CLK_GATE_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD_MASK 0x000000fe +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD_WIDTH 7 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD_MASK 0x0000ff00 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD_WIDTH 8 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_TIMER_VAL_FIELD_SHIFT 8 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_MASK 0x00010000 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_EN_FIELD_SHIFT 16 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD_MASK 0x000e0000 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD_WIDTH 3 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED1_FIELD_SHIFT 17 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_MASK 0x00700000 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_WIDTH 3 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_INTRVL_FIELD_SHIFT 20 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD_MASK 0x00800000 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_RESERVED2_FIELD_SHIFT 23 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_MASK 0xff000000 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_WIDTH 8 +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_KEEP_ALIVE_CYC_FIELD_SHIFT 24 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_ENTRY_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_ENTRY_FIELD_MASK 0x7fffffff +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_ENTRY_FIELD_WIDTH 31 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_ENTRY_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_VAL_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_VAL_FIELD_MASK 0x80000000 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_VAL_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_VAL_FIELD_SHIFT 31 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_ENTRY_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_ENTRY_FIELD_MASK 0x7fffffff +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_ENTRY_FIELD_WIDTH 31 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_ENTRY_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_VAL_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_VAL_FIELD_MASK 0x80000000 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_VAL_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_VAL_FIELD_SHIFT 31 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_ENTRY_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_ENTRY_FIELD_MASK 0x7fffffff +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_ENTRY_FIELD_WIDTH 31 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_ENTRY_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_VAL_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_VAL_FIELD_MASK 0x80000000 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_VAL_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_VAL_FIELD_SHIFT 31 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_ENTRY_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_ENTRY_FIELD_MASK 0x7fffffff +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_ENTRY_FIELD_WIDTH 31 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_ENTRY_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_VAL_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_VAL_FIELD_MASK 0x80000000 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_VAL_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_VAL_FIELD_SHIFT 31 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_ENTRY_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_ENTRY_FIELD_MASK 0x7fffffff +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_ENTRY_FIELD_WIDTH 31 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_ENTRY_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_VAL_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_VAL_FIELD_MASK 0x80000000 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_VAL_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_VAL_FIELD_SHIFT 31 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ING_F_CNT_CNTR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ING_F_CNT_CNTR_FIELD_MASK 0xffffffff +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ING_F_CNT_CNTR_FIELD_WIDTH 32 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ING_F_CNT_CNTR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_CMD_F_CNT_CNTR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_CMD_F_CNT_CNTR_FIELD_MASK 0xffffffff +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_CMD_F_CNT_CNTR_FIELD_WIDTH 32 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_CMD_F_CNT_CNTR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_CMD_CNT_CNTR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_CMD_CNT_CNTR_FIELD_MASK 0xffffffff +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_CMD_CNT_CNTR_FIELD_WIDTH 32 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_CMD_CNT_CNTR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_RSLT_CNT_CNTR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_RSLT_CNT_CNTR_FIELD_MASK 0xffffffff +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_RSLT_CNT_CNTR_FIELD_WIDTH 32 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_RSLT_CNT_CNTR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_RSLT_F_CNT_CNTR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_RSLT_F_CNT_CNTR_FIELD_MASK 0xffffffff +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_RSLT_F_CNT_CNTR_FIELD_WIDTH 32 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_RSLT_F_CNT_CNTR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_EGR_F_CNT_CNTR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_EGR_F_CNT_CNTR_FIELD_MASK 0xffffffff +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_EGR_F_CNT_CNTR_FIELD_WIDTH 32 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_EGR_F_CNT_CNTR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_CMDLNG_C_CNTR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_CMDLNG_C_CNTR_FIELD_MASK 0xffffffff +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_CMDLNG_C_CNTR_FIELD_WIDTH 32 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_CMDLNG_C_CNTR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_OF_C_CNTR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_OF_C_CNTR_FIELD_MASK 0xffffffff +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_OF_C_CNTR_FIELD_WIDTH 32 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_OF_C_CNTR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_UF_C_CNTR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_UF_C_CNTR_FIELD_MASK 0xffffffff +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_UF_C_CNTR_FIELD_WIDTH 32 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_UF_C_CNTR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_RD_CLR_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_RD_CLR_FIELD_MASK 0x00000001 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_RD_CLR_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_RD_CLR_FIELD_SHIFT 0 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_WRAP_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_WRAP_FIELD_MASK 0x00000002 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_WRAP_FIELD_WIDTH 1 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_WRAP_FIELD_SHIFT 1 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_RESERVED0_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_RESERVED0_FIELD_MASK 0xfffffffc +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_RESERVED0_FIELD_WIDTH 30 +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec BAC_IF_BACIF_BLOCK_BACIF_DEBUG_DBG0_VAL_FIELD; +#define BAC_IF_BACIF_BLOCK_BACIF_DEBUG_DBG0_VAL_FIELD_MASK 0xffffffff +#define BAC_IF_BACIF_BLOCK_BACIF_DEBUG_DBG0_VAL_FIELD_WIDTH 32 +#define BAC_IF_BACIF_BLOCK_BACIF_DEBUG_DBG0_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_MEMORY_DATA_DATA_FIELD; +#define CNPL_MEMORY_DATA_DATA_FIELD_MASK 0xffffffff +#define CNPL_MEMORY_DATA_DATA_FIELD_WIDTH 32 +#define CNPL_MEMORY_DATA_DATA_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_BA_FIELD; +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_BA_FIELD_MASK 0x000007ff +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_BA_FIELD_WIDTH 11 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_BA_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_CN0_BYTS_FIELD; +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_CN0_BYTS_FIELD_MASK 0x00001800 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_CN0_BYTS_FIELD_WIDTH 2 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_CN0_BYTS_FIELD_SHIFT 11 + +extern const ru_field_rec CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_DOUBLLE_FIELD; +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_DOUBLLE_FIELD_MASK 0x00002000 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_DOUBLLE_FIELD_WIDTH 1 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_DOUBLLE_FIELD_SHIFT 13 + +extern const ru_field_rec CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_WRAP_FIELD; +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_WRAP_FIELD_MASK 0x00004000 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_WRAP_FIELD_WIDTH 1 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_WRAP_FIELD_SHIFT 14 + +extern const ru_field_rec CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_CLR_FIELD; +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_CLR_FIELD_MASK 0x00008000 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_CLR_FIELD_WIDTH 1 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_CLR_FIELD_SHIFT 15 + +extern const ru_field_rec CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_RESERVED0_FIELD; +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_RESERVED0_FIELD_MASK 0xffff0000 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_RESERVED0_FIELD_WIDTH 16 +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_BK_BA_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_BK_BA_FIELD_MASK 0x000007ff +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_BK_BA_FIELD_WIDTH 11 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_BK_BA_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_PA_BA_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_PA_BA_FIELD_MASK 0x003ff800 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_PA_BA_FIELD_WIDTH 11 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_PA_BA_FIELD_SHIFT 11 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_DOUBLLE_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_DOUBLLE_FIELD_MASK 0x00400000 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_DOUBLLE_FIELD_WIDTH 1 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_DOUBLLE_FIELD_SHIFT 22 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_FC_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_FC_FIELD_MASK 0x00800000 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_FC_FIELD_WIDTH 1 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_FC_FIELD_SHIFT 23 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_N_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_N_FIELD_MASK 0xff000000 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_N_FIELD_WIDTH 8 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_N_FIELD_SHIFT 24 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_PL_ST_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_PL_ST_FIELD_MASK 0x000000ff +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_PL_ST_FIELD_WIDTH 8 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_PL_ST_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_PL_END_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_PL_END_FIELD_MASK 0x0000ff00 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_PL_END_FIELD_WIDTH 8 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_PL_END_FIELD_SHIFT 8 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_RESERVED0_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_RESERVED0_FIELD_MASK 0xffff0000 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_RESERVED0_FIELD_WIDTH 16 +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_CALC_TYPE_VEC_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_CALC_TYPE_VEC_FIELD_MASK 0xffffffff +#define CNPL_POLICERS_CONFIGURATIONS_PL_CALC_TYPE_VEC_FIELD_WIDTH 32 +#define CNPL_POLICERS_CONFIGURATIONS_PL_CALC_TYPE_VEC_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PER_UP_EN_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PER_UP_EN_FIELD_MASK 0x00000001 +#define CNPL_POLICERS_CONFIGURATIONS_PER_UP_EN_FIELD_WIDTH 1 +#define CNPL_POLICERS_CONFIGURATIONS_PER_UP_EN_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PER_UP_MTU_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PER_UP_MTU_FIELD_MASK 0x00007ffe +#define CNPL_POLICERS_CONFIGURATIONS_PER_UP_MTU_FIELD_WIDTH 14 +#define CNPL_POLICERS_CONFIGURATIONS_PER_UP_MTU_FIELD_SHIFT 1 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PER_UP_RESERVED0_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PER_UP_RESERVED0_FIELD_MASK 0xffff8000 +#define CNPL_POLICERS_CONFIGURATIONS_PER_UP_RESERVED0_FIELD_WIDTH 17 +#define CNPL_POLICERS_CONFIGURATIONS_PER_UP_RESERVED0_FIELD_SHIFT 15 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_PRF0_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_PRF0_FIELD_MASK 0x0000ffff +#define CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_PRF0_FIELD_WIDTH 16 +#define CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_PRF0_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_PRF1_FIELD; +#define CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_PRF1_FIELD_MASK 0xffff0000 +#define CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_PRF1_FIELD_WIDTH 16 +#define CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_PRF1_FIELD_SHIFT 16 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_NXTLVL_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_NXTLVL_FIELD_MASK 0x0000001f +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_NXTLVL_FIELD_WIDTH 5 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_NXTLVL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_RESERVED0_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_RESERVED0_FIELD_MASK 0xffffffe0 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_RESERVED0_FIELD_WIDTH 27 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_THR_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_THR_FIELD_MASK 0x0003ffff +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_THR_FIELD_WIDTH 18 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_THR_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_RESERVED0_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_RESERVED0_FIELD_MASK 0xfffc0000 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_RESERVED0_FIELD_WIDTH 14 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_THR_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_THR_FIELD_MASK 0x0003ffff +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_THR_FIELD_WIDTH 18 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_THR_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_RESERVED0_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_RESERVED0_FIELD_MASK 0xfffc0000 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_RESERVED0_FIELD_WIDTH 14 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_THR_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_THR_FIELD_MASK 0x0003ffff +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_THR_FIELD_WIDTH 18 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_THR_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_RESERVED0_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_RESERVED0_FIELD_MASK 0xfffc0000 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_RESERVED0_FIELD_WIDTH 14 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR0_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR0_FIELD_MASK 0x0000001f +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR0_FIELD_WIDTH 5 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR0_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED0_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED0_FIELD_MASK 0x000000e0 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED0_FIELD_WIDTH 3 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED0_FIELD_SHIFT 5 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR1_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR1_FIELD_MASK 0x00001f00 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR1_FIELD_WIDTH 5 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR1_FIELD_SHIFT 8 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED1_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED1_FIELD_MASK 0x0000e000 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED1_FIELD_WIDTH 3 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED1_FIELD_SHIFT 13 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR2_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR2_FIELD_MASK 0x001f0000 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR2_FIELD_WIDTH 5 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_CTR2_FIELD_SHIFT 16 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED2_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED2_FIELD_MASK 0xffe00000 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED2_FIELD_WIDTH 11 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_RESERVED2_FIELD_SHIFT 21 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_VAL_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_VAL_FIELD_MASK 0x0003ffff +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_VAL_FIELD_WIDTH 18 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_RESERVED0_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_RESERVED0_FIELD_MASK 0xfffc0000 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_RESERVED0_FIELD_WIDTH 14 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_VAL_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_VAL_FIELD_MASK 0x0003ffff +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_VAL_FIELD_WIDTH 18 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_RESERVED0_FIELD; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_RESERVED0_FIELD_MASK 0xfffc0000 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_RESERVED0_FIELD_WIDTH 14 +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_RESERVED0_FIELD_SHIFT 18 + +extern const ru_field_rec CNPL_SW_IF_SW_CMD_VAL_FIELD; +#define CNPL_SW_IF_SW_CMD_VAL_FIELD_MASK 0xffffffff +#define CNPL_SW_IF_SW_CMD_VAL_FIELD_WIDTH 32 +#define CNPL_SW_IF_SW_CMD_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_SW_IF_SW_STAT_CN_RD_ST_FIELD; +#define CNPL_SW_IF_SW_STAT_CN_RD_ST_FIELD_MASK 0x00000001 +#define CNPL_SW_IF_SW_STAT_CN_RD_ST_FIELD_WIDTH 1 +#define CNPL_SW_IF_SW_STAT_CN_RD_ST_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_SW_IF_SW_STAT_PL_PLC_ST_FIELD; +#define CNPL_SW_IF_SW_STAT_PL_PLC_ST_FIELD_MASK 0x00000002 +#define CNPL_SW_IF_SW_STAT_PL_PLC_ST_FIELD_WIDTH 1 +#define CNPL_SW_IF_SW_STAT_PL_PLC_ST_FIELD_SHIFT 1 + +extern const ru_field_rec CNPL_SW_IF_SW_STAT_PL_RD_ST_FIELD; +#define CNPL_SW_IF_SW_STAT_PL_RD_ST_FIELD_MASK 0x00000004 +#define CNPL_SW_IF_SW_STAT_PL_RD_ST_FIELD_WIDTH 1 +#define CNPL_SW_IF_SW_STAT_PL_RD_ST_FIELD_SHIFT 2 + +extern const ru_field_rec CNPL_SW_IF_SW_STAT_RESERVED0_FIELD; +#define CNPL_SW_IF_SW_STAT_RESERVED0_FIELD_MASK 0xfffffff8 +#define CNPL_SW_IF_SW_STAT_RESERVED0_FIELD_WIDTH 29 +#define CNPL_SW_IF_SW_STAT_RESERVED0_FIELD_SHIFT 3 + +extern const ru_field_rec CNPL_SW_IF_SW_PL_RSLT_RESERVED0_FIELD; +#define CNPL_SW_IF_SW_PL_RSLT_RESERVED0_FIELD_MASK 0x3fffffff +#define CNPL_SW_IF_SW_PL_RSLT_RESERVED0_FIELD_WIDTH 30 +#define CNPL_SW_IF_SW_PL_RSLT_RESERVED0_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_SW_IF_SW_PL_RSLT_COL_FIELD; +#define CNPL_SW_IF_SW_PL_RSLT_COL_FIELD_MASK 0xc0000000 +#define CNPL_SW_IF_SW_PL_RSLT_COL_FIELD_WIDTH 2 +#define CNPL_SW_IF_SW_PL_RSLT_COL_FIELD_SHIFT 30 + +extern const ru_field_rec CNPL_SW_IF_SW_PL_RD_RD_FIELD; +#define CNPL_SW_IF_SW_PL_RD_RD_FIELD_MASK 0xffffffff +#define CNPL_SW_IF_SW_PL_RD_RD_FIELD_WIDTH 32 +#define CNPL_SW_IF_SW_PL_RD_RD_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_SW_IF_SW_CNT_RD_RD_FIELD; +#define CNPL_SW_IF_SW_CNT_RD_RD_FIELD_MASK 0xffffffff +#define CNPL_SW_IF_SW_CNT_RD_RD_FIELD_WIDTH 32 +#define CNPL_SW_IF_SW_CNT_RD_RD_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_MISC_ARB_PRM_SW_PRIO_FIELD; +#define CNPL_MISC_ARB_PRM_SW_PRIO_FIELD_MASK 0x00000003 +#define CNPL_MISC_ARB_PRM_SW_PRIO_FIELD_WIDTH 2 +#define CNPL_MISC_ARB_PRM_SW_PRIO_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_MISC_ARB_PRM_RESERVED0_FIELD; +#define CNPL_MISC_ARB_PRM_RESERVED0_FIELD_MASK 0xfffffffc +#define CNPL_MISC_ARB_PRM_RESERVED0_FIELD_WIDTH 30 +#define CNPL_MISC_ARB_PRM_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec CNPL_MISC_COL_AWR_EN_EN_FIELD; +#define CNPL_MISC_COL_AWR_EN_EN_FIELD_MASK 0x00000001 +#define CNPL_MISC_COL_AWR_EN_EN_FIELD_WIDTH 1 +#define CNPL_MISC_COL_AWR_EN_EN_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_MISC_COL_AWR_EN_RESERVED0_FIELD; +#define CNPL_MISC_COL_AWR_EN_RESERVED0_FIELD_MASK 0xfffffffe +#define CNPL_MISC_COL_AWR_EN_RESERVED0_FIELD_WIDTH 31 +#define CNPL_MISC_COL_AWR_EN_RESERVED0_FIELD_SHIFT 1 + +extern const ru_field_rec CNPL_PM_COUNTERS_ENG_CMDS_VAL_FIELD; +#define CNPL_PM_COUNTERS_ENG_CMDS_VAL_FIELD_MASK 0xffffffff +#define CNPL_PM_COUNTERS_ENG_CMDS_VAL_FIELD_WIDTH 32 +#define CNPL_PM_COUNTERS_ENG_CMDS_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_PM_COUNTERS_CMD_WAIT_VAL_FIELD; +#define CNPL_PM_COUNTERS_CMD_WAIT_VAL_FIELD_MASK 0xffffffff +#define CNPL_PM_COUNTERS_CMD_WAIT_VAL_FIELD_WIDTH 32 +#define CNPL_PM_COUNTERS_CMD_WAIT_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_PM_COUNTERS_TOT_CYC_VAL_FIELD; +#define CNPL_PM_COUNTERS_TOT_CYC_VAL_FIELD_MASK 0xffffffff +#define CNPL_PM_COUNTERS_TOT_CYC_VAL_FIELD_WIDTH 32 +#define CNPL_PM_COUNTERS_TOT_CYC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_PM_COUNTERS_GNT_CYC_VAL_FIELD; +#define CNPL_PM_COUNTERS_GNT_CYC_VAL_FIELD_MASK 0xffffffff +#define CNPL_PM_COUNTERS_GNT_CYC_VAL_FIELD_WIDTH 32 +#define CNPL_PM_COUNTERS_GNT_CYC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_PM_COUNTERS_ARB_CYC_VAL_FIELD; +#define CNPL_PM_COUNTERS_ARB_CYC_VAL_FIELD_MASK 0xffffffff +#define CNPL_PM_COUNTERS_ARB_CYC_VAL_FIELD_WIDTH 32 +#define CNPL_PM_COUNTERS_ARB_CYC_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_PM_COUNTERS_PL_UP_ERR_VAL_FIELD; +#define CNPL_PM_COUNTERS_PL_UP_ERR_VAL_FIELD_MASK 0xffffffff +#define CNPL_PM_COUNTERS_PL_UP_ERR_VAL_FIELD_WIDTH 32 +#define CNPL_PM_COUNTERS_PL_UP_ERR_VAL_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_PM_COUNTERS_GEN_CFG_RD_CLR_FIELD; +#define CNPL_PM_COUNTERS_GEN_CFG_RD_CLR_FIELD_MASK 0x00000001 +#define CNPL_PM_COUNTERS_GEN_CFG_RD_CLR_FIELD_WIDTH 1 +#define CNPL_PM_COUNTERS_GEN_CFG_RD_CLR_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_PM_COUNTERS_GEN_CFG_WRAP_FIELD; +#define CNPL_PM_COUNTERS_GEN_CFG_WRAP_FIELD_MASK 0x00000002 +#define CNPL_PM_COUNTERS_GEN_CFG_WRAP_FIELD_WIDTH 1 +#define CNPL_PM_COUNTERS_GEN_CFG_WRAP_FIELD_SHIFT 1 + +extern const ru_field_rec CNPL_PM_COUNTERS_GEN_CFG_RESERVED0_FIELD; +#define CNPL_PM_COUNTERS_GEN_CFG_RESERVED0_FIELD_MASK 0xfffffffc +#define CNPL_PM_COUNTERS_GEN_CFG_RESERVED0_FIELD_WIDTH 30 +#define CNPL_PM_COUNTERS_GEN_CFG_RESERVED0_FIELD_SHIFT 2 + +extern const ru_field_rec CNPL_DEBUG_DBGSEL_VS_FIELD; +#define CNPL_DEBUG_DBGSEL_VS_FIELD_MASK 0x0000007f +#define CNPL_DEBUG_DBGSEL_VS_FIELD_WIDTH 7 +#define CNPL_DEBUG_DBGSEL_VS_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_DEBUG_DBGSEL_RESERVED0_FIELD; +#define CNPL_DEBUG_DBGSEL_RESERVED0_FIELD_MASK 0xffffff80 +#define CNPL_DEBUG_DBGSEL_RESERVED0_FIELD_WIDTH 25 +#define CNPL_DEBUG_DBGSEL_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec CNPL_DEBUG_DBGBUS_VB_FIELD; +#define CNPL_DEBUG_DBGBUS_VB_FIELD_MASK 0x001fffff +#define CNPL_DEBUG_DBGBUS_VB_FIELD_WIDTH 21 +#define CNPL_DEBUG_DBGBUS_VB_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_DEBUG_DBGBUS_RESERVED0_FIELD; +#define CNPL_DEBUG_DBGBUS_RESERVED0_FIELD_MASK 0xffe00000 +#define CNPL_DEBUG_DBGBUS_RESERVED0_FIELD_WIDTH 11 +#define CNPL_DEBUG_DBGBUS_RESERVED0_FIELD_SHIFT 21 + +extern const ru_field_rec CNPL_DEBUG_REQ_VEC_REQ_FIELD; +#define CNPL_DEBUG_REQ_VEC_REQ_FIELD_MASK 0x0000007f +#define CNPL_DEBUG_REQ_VEC_REQ_FIELD_WIDTH 7 +#define CNPL_DEBUG_REQ_VEC_REQ_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_DEBUG_REQ_VEC_RESERVED0_FIELD; +#define CNPL_DEBUG_REQ_VEC_RESERVED0_FIELD_MASK 0xffffff80 +#define CNPL_DEBUG_REQ_VEC_RESERVED0_FIELD_WIDTH 25 +#define CNPL_DEBUG_REQ_VEC_RESERVED0_FIELD_SHIFT 7 + +extern const ru_field_rec CNPL_DEBUG_POL_UP_ST_ITR_NUM_FIELD; +#define CNPL_DEBUG_POL_UP_ST_ITR_NUM_FIELD_MASK 0x000000ff +#define CNPL_DEBUG_POL_UP_ST_ITR_NUM_FIELD_WIDTH 8 +#define CNPL_DEBUG_POL_UP_ST_ITR_NUM_FIELD_SHIFT 0 + +extern const ru_field_rec CNPL_DEBUG_POL_UP_ST_POL_NUM_FIELD; +#define CNPL_DEBUG_POL_UP_ST_POL_NUM_FIELD_MASK 0x0000ff00 +#define CNPL_DEBUG_POL_UP_ST_POL_NUM_FIELD_WIDTH 8 +#define CNPL_DEBUG_POL_UP_ST_POL_NUM_FIELD_SHIFT 8 + +extern const ru_field_rec CNPL_DEBUG_POL_UP_ST_RESERVED0_FIELD; +#define CNPL_DEBUG_POL_UP_ST_RESERVED0_FIELD_MASK 0xffff0000 +#define CNPL_DEBUG_POL_UP_ST_RESERVED0_FIELD_WIDTH 16 +#define CNPL_DEBUG_POL_UP_ST_RESERVED0_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_ADD_CMD_DDR_MISS_FIELD; +#define NATC_ENG_COMMAND_STATUS_ADD_CMD_DDR_MISS_FIELD_MASK 0x80000000 +#define NATC_ENG_COMMAND_STATUS_ADD_CMD_DDR_MISS_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_ADD_CMD_DDR_MISS_FIELD_SHIFT 31 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_ADD_CMD_DDR_BIN_FIELD; +#define NATC_ENG_COMMAND_STATUS_ADD_CMD_DDR_BIN_FIELD_MASK 0x70000000 +#define NATC_ENG_COMMAND_STATUS_ADD_CMD_DDR_BIN_FIELD_WIDTH 3 +#define NATC_ENG_COMMAND_STATUS_ADD_CMD_DDR_BIN_FIELD_SHIFT 28 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_DEL_CMD_DDR_BIN_FIELD; +#define NATC_ENG_COMMAND_STATUS_DEL_CMD_DDR_BIN_FIELD_MASK 0x0ff00000 +#define NATC_ENG_COMMAND_STATUS_DEL_CMD_DDR_BIN_FIELD_WIDTH 8 +#define NATC_ENG_COMMAND_STATUS_DEL_CMD_DDR_BIN_FIELD_SHIFT 20 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_RESERVED0_FIELD; +#define NATC_ENG_COMMAND_STATUS_RESERVED0_FIELD_MASK 0x00080000 +#define NATC_ENG_COMMAND_STATUS_RESERVED0_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_RESERVED0_FIELD_SHIFT 19 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_ADD_CMD_MODE_FIELD; +#define NATC_ENG_COMMAND_STATUS_ADD_CMD_MODE_FIELD_MASK 0x00040000 +#define NATC_ENG_COMMAND_STATUS_ADD_CMD_MODE_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_ADD_CMD_MODE_FIELD_SHIFT 18 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_DEL_CMD_MODE_FIELD; +#define NATC_ENG_COMMAND_STATUS_DEL_CMD_MODE_FIELD_MASK 0x00020000 +#define NATC_ENG_COMMAND_STATUS_DEL_CMD_MODE_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_DEL_CMD_MODE_FIELD_SHIFT 17 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_CACHE_FLUSH_FIELD; +#define NATC_ENG_COMMAND_STATUS_CACHE_FLUSH_FIELD_MASK 0x00010000 +#define NATC_ENG_COMMAND_STATUS_CACHE_FLUSH_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_CACHE_FLUSH_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_DECR_COUNT_FIELD; +#define NATC_ENG_COMMAND_STATUS_DECR_COUNT_FIELD_MASK 0x00008000 +#define NATC_ENG_COMMAND_STATUS_DECR_COUNT_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_DECR_COUNT_FIELD_SHIFT 15 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_NAT_TBL_FIELD; +#define NATC_ENG_COMMAND_STATUS_NAT_TBL_FIELD_MASK 0x00007000 +#define NATC_ENG_COMMAND_STATUS_NAT_TBL_FIELD_WIDTH 3 +#define NATC_ENG_COMMAND_STATUS_NAT_TBL_FIELD_SHIFT 12 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_MULTIHASH_COUNT_FIELD; +#define NATC_ENG_COMMAND_STATUS_MULTIHASH_COUNT_FIELD_MASK 0x00000f00 +#define NATC_ENG_COMMAND_STATUS_MULTIHASH_COUNT_FIELD_WIDTH 4 +#define NATC_ENG_COMMAND_STATUS_MULTIHASH_COUNT_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_CACHE_HIT_FIELD; +#define NATC_ENG_COMMAND_STATUS_CACHE_HIT_FIELD_MASK 0x00000080 +#define NATC_ENG_COMMAND_STATUS_CACHE_HIT_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_CACHE_HIT_FIELD_SHIFT 7 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_MISS_FIELD; +#define NATC_ENG_COMMAND_STATUS_MISS_FIELD_MASK 0x00000040 +#define NATC_ENG_COMMAND_STATUS_MISS_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_MISS_FIELD_SHIFT 6 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_ERROR_FIELD; +#define NATC_ENG_COMMAND_STATUS_ERROR_FIELD_MASK 0x00000020 +#define NATC_ENG_COMMAND_STATUS_ERROR_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_ERROR_FIELD_SHIFT 5 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_BUSY_FIELD; +#define NATC_ENG_COMMAND_STATUS_BUSY_FIELD_MASK 0x00000010 +#define NATC_ENG_COMMAND_STATUS_BUSY_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_BUSY_FIELD_SHIFT 4 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_UNUSED0_FIELD; +#define NATC_ENG_COMMAND_STATUS_UNUSED0_FIELD_MASK 0x00000008 +#define NATC_ENG_COMMAND_STATUS_UNUSED0_FIELD_WIDTH 1 +#define NATC_ENG_COMMAND_STATUS_UNUSED0_FIELD_SHIFT 3 + +extern const ru_field_rec NATC_ENG_COMMAND_STATUS_COMMAND_FIELD; +#define NATC_ENG_COMMAND_STATUS_COMMAND_FIELD_MASK 0x00000007 +#define NATC_ENG_COMMAND_STATUS_COMMAND_FIELD_WIDTH 3 +#define NATC_ENG_COMMAND_STATUS_COMMAND_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_ENG_HASH_HASH_FIELD; +#define NATC_ENG_HASH_HASH_FIELD_MASK 0xffffffff +#define NATC_ENG_HASH_HASH_FIELD_WIDTH 32 +#define NATC_ENG_HASH_HASH_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_ENG_HIT_COUNT_HIT_COUNT_FIELD; +#define NATC_ENG_HIT_COUNT_HIT_COUNT_FIELD_MASK 0xffffffff +#define NATC_ENG_HIT_COUNT_HIT_COUNT_FIELD_WIDTH 32 +#define NATC_ENG_HIT_COUNT_HIT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_ENG_BYTE_COUNT_BYTE_COUNT_FIELD; +#define NATC_ENG_BYTE_COUNT_BYTE_COUNT_FIELD_MASK 0xffffffff +#define NATC_ENG_BYTE_COUNT_BYTE_COUNT_FIELD_WIDTH 32 +#define NATC_ENG_BYTE_COUNT_BYTE_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_ENG_PKT_LEN_UNUSED_FIELD; +#define NATC_ENG_PKT_LEN_UNUSED_FIELD_MASK 0xffff0000 +#define NATC_ENG_PKT_LEN_UNUSED_FIELD_WIDTH 16 +#define NATC_ENG_PKT_LEN_UNUSED_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_ENG_PKT_LEN_PKT_LEN_FIELD; +#define NATC_ENG_PKT_LEN_PKT_LEN_FIELD_MASK 0x0000ffff +#define NATC_ENG_PKT_LEN_PKT_LEN_FIELD_WIDTH 16 +#define NATC_ENG_PKT_LEN_PKT_LEN_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_ENG_KEY_RESULT_NAT_KEY_RESULT_FIELD; +#define NATC_ENG_KEY_RESULT_NAT_KEY_RESULT_FIELD_MASK 0xffffffff +#define NATC_ENG_KEY_RESULT_NAT_KEY_RESULT_FIELD_WIDTH 32 +#define NATC_ENG_KEY_RESULT_NAT_KEY_RESULT_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_CTRS_CACHE_HIT_COUNT_CACHE_HIT_COUNT_FIELD; +#define NATC_CTRS_CACHE_HIT_COUNT_CACHE_HIT_COUNT_FIELD_MASK 0xffffffff +#define NATC_CTRS_CACHE_HIT_COUNT_CACHE_HIT_COUNT_FIELD_WIDTH 32 +#define NATC_CTRS_CACHE_HIT_COUNT_CACHE_HIT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_CTRS_CACHE_MISS_COUNT_CACHE_MISS_COUNT_FIELD; +#define NATC_CTRS_CACHE_MISS_COUNT_CACHE_MISS_COUNT_FIELD_MASK 0xffffffff +#define NATC_CTRS_CACHE_MISS_COUNT_CACHE_MISS_COUNT_FIELD_WIDTH 32 +#define NATC_CTRS_CACHE_MISS_COUNT_CACHE_MISS_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_CTRS_DDR_REQUEST_COUNT_DDR_REQUEST_COUNT_FIELD; +#define NATC_CTRS_DDR_REQUEST_COUNT_DDR_REQUEST_COUNT_FIELD_MASK 0xffffffff +#define NATC_CTRS_DDR_REQUEST_COUNT_DDR_REQUEST_COUNT_FIELD_WIDTH 32 +#define NATC_CTRS_DDR_REQUEST_COUNT_DDR_REQUEST_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_CTRS_DDR_EVICT_COUNT_DDR_EVICT_COUNT_FIELD; +#define NATC_CTRS_DDR_EVICT_COUNT_DDR_EVICT_COUNT_FIELD_MASK 0xffffffff +#define NATC_CTRS_DDR_EVICT_COUNT_DDR_EVICT_COUNT_FIELD_WIDTH 32 +#define NATC_CTRS_DDR_EVICT_COUNT_DDR_EVICT_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_CTRS_DDR_BLOCK_COUNT_DDR_BLOCK_COUNT_FIELD; +#define NATC_CTRS_DDR_BLOCK_COUNT_DDR_BLOCK_COUNT_FIELD_MASK 0xffffffff +#define NATC_CTRS_DDR_BLOCK_COUNT_DDR_BLOCK_COUNT_FIELD_WIDTH 32 +#define NATC_CTRS_DDR_BLOCK_COUNT_DDR_BLOCK_COUNT_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_DDR_CFG_SIZE_RESERVED0_FIELD; +#define NATC_DDR_CFG_SIZE_RESERVED0_FIELD_MASK 0xff000000 +#define NATC_DDR_CFG_SIZE_RESERVED0_FIELD_WIDTH 8 +#define NATC_DDR_CFG_SIZE_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec NATC_DDR_CFG_SIZE_DDR_SIZE_TBL7_FIELD; +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL7_FIELD_MASK 0x00e00000 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL7_FIELD_WIDTH 3 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL7_FIELD_SHIFT 21 + +extern const ru_field_rec NATC_DDR_CFG_SIZE_DDR_SIZE_TBL6_FIELD; +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL6_FIELD_MASK 0x001c0000 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL6_FIELD_WIDTH 3 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL6_FIELD_SHIFT 18 + +extern const ru_field_rec NATC_DDR_CFG_SIZE_DDR_SIZE_TBL5_FIELD; +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL5_FIELD_MASK 0x00038000 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL5_FIELD_WIDTH 3 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL5_FIELD_SHIFT 15 + +extern const ru_field_rec NATC_DDR_CFG_SIZE_DDR_SIZE_TBL4_FIELD; +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL4_FIELD_MASK 0x00007000 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL4_FIELD_WIDTH 3 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL4_FIELD_SHIFT 12 + +extern const ru_field_rec NATC_DDR_CFG_SIZE_DDR_SIZE_TBL3_FIELD; +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL3_FIELD_MASK 0x00000e00 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL3_FIELD_WIDTH 3 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL3_FIELD_SHIFT 9 + +extern const ru_field_rec NATC_DDR_CFG_SIZE_DDR_SIZE_TBL2_FIELD; +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL2_FIELD_MASK 0x000001c0 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL2_FIELD_WIDTH 3 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL2_FIELD_SHIFT 6 + +extern const ru_field_rec NATC_DDR_CFG_SIZE_DDR_SIZE_TBL1_FIELD; +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL1_FIELD_MASK 0x00000038 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL1_FIELD_WIDTH 3 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL1_FIELD_SHIFT 3 + +extern const ru_field_rec NATC_DDR_CFG_SIZE_DDR_SIZE_TBL0_FIELD; +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL0_FIELD_MASK 0x00000007 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL0_FIELD_WIDTH 3 +#define NATC_DDR_CFG_SIZE_DDR_SIZE_TBL0_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL3_FIELD; +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL3_FIELD_MASK 0xff000000 +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL3_FIELD_WIDTH 8 +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL3_FIELD_SHIFT 24 + +extern const ru_field_rec NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL2_FIELD; +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL2_FIELD_MASK 0x00ff0000 +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL2_FIELD_WIDTH 8 +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL2_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL1_FIELD; +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL1_FIELD_MASK 0x0000ff00 +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL1_FIELD_WIDTH 8 +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL1_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL0_FIELD; +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL0_FIELD_MASK 0x000000ff +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL0_FIELD_WIDTH 8 +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_DDR_BINS_PER_BUCKET_TBL0_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL7_FIELD; +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL7_FIELD_MASK 0xff000000 +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL7_FIELD_WIDTH 8 +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL7_FIELD_SHIFT 24 + +extern const ru_field_rec NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL6_FIELD; +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL6_FIELD_MASK 0x00ff0000 +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL6_FIELD_WIDTH 8 +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL6_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL5_FIELD; +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL5_FIELD_MASK 0x0000ff00 +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL5_FIELD_WIDTH 8 +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL5_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL4_FIELD; +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL4_FIELD_MASK 0x000000ff +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL4_FIELD_WIDTH 8 +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_DDR_BINS_PER_BUCKET_TBL4_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_DDR_CFG_TOTAL_LEN_RESERVED0_FIELD; +#define NATC_DDR_CFG_TOTAL_LEN_RESERVED0_FIELD_MASK 0xff000000 +#define NATC_DDR_CFG_TOTAL_LEN_RESERVED0_FIELD_WIDTH 8 +#define NATC_DDR_CFG_TOTAL_LEN_RESERVED0_FIELD_SHIFT 24 + +extern const ru_field_rec NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL7_FIELD; +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL7_FIELD_MASK 0x00e00000 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL7_FIELD_WIDTH 3 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL7_FIELD_SHIFT 21 + +extern const ru_field_rec NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL6_FIELD; +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL6_FIELD_MASK 0x001c0000 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL6_FIELD_WIDTH 3 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL6_FIELD_SHIFT 18 + +extern const ru_field_rec NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL5_FIELD; +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL5_FIELD_MASK 0x00038000 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL5_FIELD_WIDTH 3 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL5_FIELD_SHIFT 15 + +extern const ru_field_rec NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL4_FIELD; +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL4_FIELD_MASK 0x00007000 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL4_FIELD_WIDTH 3 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL4_FIELD_SHIFT 12 + +extern const ru_field_rec NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL3_FIELD; +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL3_FIELD_MASK 0x00000e00 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL3_FIELD_WIDTH 3 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL3_FIELD_SHIFT 9 + +extern const ru_field_rec NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL2_FIELD; +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL2_FIELD_MASK 0x000001c0 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL2_FIELD_WIDTH 3 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL2_FIELD_SHIFT 6 + +extern const ru_field_rec NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL1_FIELD; +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL1_FIELD_MASK 0x00000038 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL1_FIELD_WIDTH 3 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL1_FIELD_SHIFT 3 + +extern const ru_field_rec NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL0_FIELD; +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL0_FIELD_MASK 0x00000007 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL0_FIELD_WIDTH 3 +#define NATC_DDR_CFG_TOTAL_LEN_TOTAL_LEN_TBL0_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_DDR_CFG_SM_STATUS_RESERVED0_FIELD; +#define NATC_DDR_CFG_SM_STATUS_RESERVED0_FIELD_MASK 0xfc000000 +#define NATC_DDR_CFG_SM_STATUS_RESERVED0_FIELD_WIDTH 6 +#define NATC_DDR_CFG_SM_STATUS_RESERVED0_FIELD_SHIFT 26 + +extern const ru_field_rec NATC_DDR_CFG_SM_STATUS_DEBUG_SEL_FIELD; +#define NATC_DDR_CFG_SM_STATUS_DEBUG_SEL_FIELD_MASK 0x03000000 +#define NATC_DDR_CFG_SM_STATUS_DEBUG_SEL_FIELD_WIDTH 2 +#define NATC_DDR_CFG_SM_STATUS_DEBUG_SEL_FIELD_SHIFT 24 + +extern const ru_field_rec NATC_DDR_CFG_SM_STATUS_APB_STATE_FIELD; +#define NATC_DDR_CFG_SM_STATUS_APB_STATE_FIELD_MASK 0x00c00000 +#define NATC_DDR_CFG_SM_STATUS_APB_STATE_FIELD_WIDTH 2 +#define NATC_DDR_CFG_SM_STATUS_APB_STATE_FIELD_SHIFT 22 + +extern const ru_field_rec NATC_DDR_CFG_SM_STATUS_DDR_REQ_STATE_FIELD; +#define NATC_DDR_CFG_SM_STATUS_DDR_REQ_STATE_FIELD_MASK 0x00300000 +#define NATC_DDR_CFG_SM_STATUS_DDR_REQ_STATE_FIELD_WIDTH 2 +#define NATC_DDR_CFG_SM_STATUS_DDR_REQ_STATE_FIELD_SHIFT 20 + +extern const ru_field_rec NATC_DDR_CFG_SM_STATUS_DDR_REP_STATE_FIELD; +#define NATC_DDR_CFG_SM_STATUS_DDR_REP_STATE_FIELD_MASK 0x000e0000 +#define NATC_DDR_CFG_SM_STATUS_DDR_REP_STATE_FIELD_WIDTH 3 +#define NATC_DDR_CFG_SM_STATUS_DDR_REP_STATE_FIELD_SHIFT 17 + +extern const ru_field_rec NATC_DDR_CFG_SM_STATUS_RUNNER_CMD_STATE_FIELD; +#define NATC_DDR_CFG_SM_STATUS_RUNNER_CMD_STATE_FIELD_MASK 0x00010000 +#define NATC_DDR_CFG_SM_STATUS_RUNNER_CMD_STATE_FIELD_WIDTH 1 +#define NATC_DDR_CFG_SM_STATUS_RUNNER_CMD_STATE_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_DDR_CFG_SM_STATUS_WB_STATE_FIELD; +#define NATC_DDR_CFG_SM_STATUS_WB_STATE_FIELD_MASK 0x00008000 +#define NATC_DDR_CFG_SM_STATUS_WB_STATE_FIELD_WIDTH 1 +#define NATC_DDR_CFG_SM_STATUS_WB_STATE_FIELD_SHIFT 15 + +extern const ru_field_rec NATC_DDR_CFG_SM_STATUS_NAT_STATE_FIELD; +#define NATC_DDR_CFG_SM_STATUS_NAT_STATE_FIELD_MASK 0x00007fff +#define NATC_DDR_CFG_SM_STATUS_NAT_STATE_FIELD_WIDTH 15 +#define NATC_DDR_CFG_SM_STATUS_NAT_STATE_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_CONTROL_STATUS_DDR_ENABLE_FIELD; +#define NATC_CONTROL_STATUS_DDR_ENABLE_FIELD_MASK 0x80000000 +#define NATC_CONTROL_STATUS_DDR_ENABLE_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_DDR_ENABLE_FIELD_SHIFT 31 + +extern const ru_field_rec NATC_CONTROL_STATUS_NATC_ADD_COMMAND_SPEEDUP_MODE_FIELD; +#define NATC_CONTROL_STATUS_NATC_ADD_COMMAND_SPEEDUP_MODE_FIELD_MASK 0x40000000 +#define NATC_CONTROL_STATUS_NATC_ADD_COMMAND_SPEEDUP_MODE_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_NATC_ADD_COMMAND_SPEEDUP_MODE_FIELD_SHIFT 30 + +extern const ru_field_rec NATC_CONTROL_STATUS_UNUSED0_FIELD; +#define NATC_CONTROL_STATUS_UNUSED0_FIELD_MASK 0x30000000 +#define NATC_CONTROL_STATUS_UNUSED0_FIELD_WIDTH 2 +#define NATC_CONTROL_STATUS_UNUSED0_FIELD_SHIFT 28 + +extern const ru_field_rec NATC_CONTROL_STATUS_DDR_64BIT_IN_128BIT_SWAP_CONTROL_FIELD; +#define NATC_CONTROL_STATUS_DDR_64BIT_IN_128BIT_SWAP_CONTROL_FIELD_MASK 0x08000000 +#define NATC_CONTROL_STATUS_DDR_64BIT_IN_128BIT_SWAP_CONTROL_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_DDR_64BIT_IN_128BIT_SWAP_CONTROL_FIELD_SHIFT 27 + +extern const ru_field_rec NATC_CONTROL_STATUS_SMEM_32BIT_IN_64BIT_SWAP_CONTROL_FIELD; +#define NATC_CONTROL_STATUS_SMEM_32BIT_IN_64BIT_SWAP_CONTROL_FIELD_MASK 0x04000000 +#define NATC_CONTROL_STATUS_SMEM_32BIT_IN_64BIT_SWAP_CONTROL_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_SMEM_32BIT_IN_64BIT_SWAP_CONTROL_FIELD_SHIFT 26 + +extern const ru_field_rec NATC_CONTROL_STATUS_SMEM_8BIT_IN_32BIT_SWAP_CONTROL_FIELD; +#define NATC_CONTROL_STATUS_SMEM_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_MASK 0x02000000 +#define NATC_CONTROL_STATUS_SMEM_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_SMEM_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_SHIFT 25 + +extern const ru_field_rec NATC_CONTROL_STATUS_DDR_SWAP_ALL_CONTROL_FIELD; +#define NATC_CONTROL_STATUS_DDR_SWAP_ALL_CONTROL_FIELD_MASK 0x01000000 +#define NATC_CONTROL_STATUS_DDR_SWAP_ALL_CONTROL_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_DDR_SWAP_ALL_CONTROL_FIELD_SHIFT 24 + +extern const ru_field_rec NATC_CONTROL_STATUS_REPEATED_KEY_DET_EN_FIELD; +#define NATC_CONTROL_STATUS_REPEATED_KEY_DET_EN_FIELD_MASK 0x00800000 +#define NATC_CONTROL_STATUS_REPEATED_KEY_DET_EN_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_REPEATED_KEY_DET_EN_FIELD_SHIFT 23 + +extern const ru_field_rec NATC_CONTROL_STATUS_REG_32BIT_IN_64BIT_SWAP_CONTROL_FIELD; +#define NATC_CONTROL_STATUS_REG_32BIT_IN_64BIT_SWAP_CONTROL_FIELD_MASK 0x00400000 +#define NATC_CONTROL_STATUS_REG_32BIT_IN_64BIT_SWAP_CONTROL_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_REG_32BIT_IN_64BIT_SWAP_CONTROL_FIELD_SHIFT 22 + +extern const ru_field_rec NATC_CONTROL_STATUS_REG_8BIT_IN_32BIT_SWAP_CONTROL_FIELD; +#define NATC_CONTROL_STATUS_REG_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_MASK 0x00200000 +#define NATC_CONTROL_STATUS_REG_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_REG_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_SHIFT 21 + +extern const ru_field_rec NATC_CONTROL_STATUS_DDR_PENDING_HASH_MODE_FIELD; +#define NATC_CONTROL_STATUS_DDR_PENDING_HASH_MODE_FIELD_MASK 0x001c0000 +#define NATC_CONTROL_STATUS_DDR_PENDING_HASH_MODE_FIELD_WIDTH 3 +#define NATC_CONTROL_STATUS_DDR_PENDING_HASH_MODE_FIELD_SHIFT 18 + +extern const ru_field_rec NATC_CONTROL_STATUS_PENDING_FIFO_ENTRY_CHECK_ENABLE_FIELD; +#define NATC_CONTROL_STATUS_PENDING_FIFO_ENTRY_CHECK_ENABLE_FIELD_MASK 0x00020000 +#define NATC_CONTROL_STATUS_PENDING_FIFO_ENTRY_CHECK_ENABLE_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_PENDING_FIFO_ENTRY_CHECK_ENABLE_FIELD_SHIFT 17 + +extern const ru_field_rec NATC_CONTROL_STATUS_CACHE_UPDATE_ON_DDR_MISS_FIELD; +#define NATC_CONTROL_STATUS_CACHE_UPDATE_ON_DDR_MISS_FIELD_MASK 0x00010000 +#define NATC_CONTROL_STATUS_CACHE_UPDATE_ON_DDR_MISS_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_CACHE_UPDATE_ON_DDR_MISS_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_CONTROL_STATUS_DDR_DISABLE_ON_REG_LOOKUP_FIELD; +#define NATC_CONTROL_STATUS_DDR_DISABLE_ON_REG_LOOKUP_FIELD_MASK 0x00008000 +#define NATC_CONTROL_STATUS_DDR_DISABLE_ON_REG_LOOKUP_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_DDR_DISABLE_ON_REG_LOOKUP_FIELD_SHIFT 15 + +extern const ru_field_rec NATC_CONTROL_STATUS_NAT_HASH_MODE_FIELD; +#define NATC_CONTROL_STATUS_NAT_HASH_MODE_FIELD_MASK 0x00007000 +#define NATC_CONTROL_STATUS_NAT_HASH_MODE_FIELD_WIDTH 3 +#define NATC_CONTROL_STATUS_NAT_HASH_MODE_FIELD_SHIFT 12 + +extern const ru_field_rec NATC_CONTROL_STATUS_MULTI_HASH_LIMIT_FIELD; +#define NATC_CONTROL_STATUS_MULTI_HASH_LIMIT_FIELD_MASK 0x00000f00 +#define NATC_CONTROL_STATUS_MULTI_HASH_LIMIT_FIELD_WIDTH 4 +#define NATC_CONTROL_STATUS_MULTI_HASH_LIMIT_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_CONTROL_STATUS_DECR_COUNT_WRAPAROUND_ENABLE_FIELD; +#define NATC_CONTROL_STATUS_DECR_COUNT_WRAPAROUND_ENABLE_FIELD_MASK 0x00000080 +#define NATC_CONTROL_STATUS_DECR_COUNT_WRAPAROUND_ENABLE_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_DECR_COUNT_WRAPAROUND_ENABLE_FIELD_SHIFT 7 + +extern const ru_field_rec NATC_CONTROL_STATUS_NAT_ARB_ST_FIELD; +#define NATC_CONTROL_STATUS_NAT_ARB_ST_FIELD_MASK 0x00000060 +#define NATC_CONTROL_STATUS_NAT_ARB_ST_FIELD_WIDTH 2 +#define NATC_CONTROL_STATUS_NAT_ARB_ST_FIELD_SHIFT 5 + +extern const ru_field_rec NATC_CONTROL_STATUS_NATC_SMEM_INCREMENT_ON_REG_LOOKUP_FIELD; +#define NATC_CONTROL_STATUS_NATC_SMEM_INCREMENT_ON_REG_LOOKUP_FIELD_MASK 0x00000010 +#define NATC_CONTROL_STATUS_NATC_SMEM_INCREMENT_ON_REG_LOOKUP_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_NATC_SMEM_INCREMENT_ON_REG_LOOKUP_FIELD_SHIFT 4 + +extern const ru_field_rec NATC_CONTROL_STATUS_NATC_SMEM_CLEAR_BY_UPDATE_DISABLE_FIELD; +#define NATC_CONTROL_STATUS_NATC_SMEM_CLEAR_BY_UPDATE_DISABLE_FIELD_MASK 0x00000008 +#define NATC_CONTROL_STATUS_NATC_SMEM_CLEAR_BY_UPDATE_DISABLE_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_NATC_SMEM_CLEAR_BY_UPDATE_DISABLE_FIELD_SHIFT 3 + +extern const ru_field_rec NATC_CONTROL_STATUS_REGFILE_FIFO_RESET_FIELD; +#define NATC_CONTROL_STATUS_REGFILE_FIFO_RESET_FIELD_MASK 0x00000004 +#define NATC_CONTROL_STATUS_REGFILE_FIFO_RESET_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_REGFILE_FIFO_RESET_FIELD_SHIFT 2 + +extern const ru_field_rec NATC_CONTROL_STATUS_NATC_ENABLE_FIELD; +#define NATC_CONTROL_STATUS_NATC_ENABLE_FIELD_MASK 0x00000002 +#define NATC_CONTROL_STATUS_NATC_ENABLE_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_NATC_ENABLE_FIELD_SHIFT 1 + +extern const ru_field_rec NATC_CONTROL_STATUS_NATC_RESET_FIELD; +#define NATC_CONTROL_STATUS_NATC_RESET_FIELD_MASK 0x00000001 +#define NATC_CONTROL_STATUS_NATC_RESET_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS_NATC_RESET_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_CONTROL_STATUS2_DDR_HASH_MODE_FIELD; +#define NATC_CONTROL_STATUS2_DDR_HASH_MODE_FIELD_MASK 0xe0000000 +#define NATC_CONTROL_STATUS2_DDR_HASH_MODE_FIELD_WIDTH 3 +#define NATC_CONTROL_STATUS2_DDR_HASH_MODE_FIELD_SHIFT 29 + +extern const ru_field_rec NATC_CONTROL_STATUS2_DDR_32BIT_IN_64BIT_SWAP_CONTROL_FIELD; +#define NATC_CONTROL_STATUS2_DDR_32BIT_IN_64BIT_SWAP_CONTROL_FIELD_MASK 0x10000000 +#define NATC_CONTROL_STATUS2_DDR_32BIT_IN_64BIT_SWAP_CONTROL_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS2_DDR_32BIT_IN_64BIT_SWAP_CONTROL_FIELD_SHIFT 28 + +extern const ru_field_rec NATC_CONTROL_STATUS2_DDR_8BIT_IN_32BIT_SWAP_CONTROL_FIELD; +#define NATC_CONTROL_STATUS2_DDR_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_MASK 0x08000000 +#define NATC_CONTROL_STATUS2_DDR_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS2_DDR_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_SHIFT 27 + +extern const ru_field_rec NATC_CONTROL_STATUS2_CACHE_LOOKUP_BLOCKING_MODE_FIELD; +#define NATC_CONTROL_STATUS2_CACHE_LOOKUP_BLOCKING_MODE_FIELD_MASK 0x04000000 +#define NATC_CONTROL_STATUS2_CACHE_LOOKUP_BLOCKING_MODE_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS2_CACHE_LOOKUP_BLOCKING_MODE_FIELD_SHIFT 26 + +extern const ru_field_rec NATC_CONTROL_STATUS2_AGE_TIMER_TICK_FIELD; +#define NATC_CONTROL_STATUS2_AGE_TIMER_TICK_FIELD_MASK 0x02000000 +#define NATC_CONTROL_STATUS2_AGE_TIMER_TICK_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS2_AGE_TIMER_TICK_FIELD_SHIFT 25 + +extern const ru_field_rec NATC_CONTROL_STATUS2_AGE_TIMER_FIELD; +#define NATC_CONTROL_STATUS2_AGE_TIMER_FIELD_MASK 0x01f00000 +#define NATC_CONTROL_STATUS2_AGE_TIMER_FIELD_WIDTH 5 +#define NATC_CONTROL_STATUS2_AGE_TIMER_FIELD_SHIFT 20 + +extern const ru_field_rec NATC_CONTROL_STATUS2_CACHE_ALGO_FIELD; +#define NATC_CONTROL_STATUS2_CACHE_ALGO_FIELD_MASK 0x000f0000 +#define NATC_CONTROL_STATUS2_CACHE_ALGO_FIELD_WIDTH 4 +#define NATC_CONTROL_STATUS2_CACHE_ALGO_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_CONTROL_STATUS2_UNUSED2_FIELD; +#define NATC_CONTROL_STATUS2_UNUSED2_FIELD_MASK 0x0000ff00 +#define NATC_CONTROL_STATUS2_UNUSED2_FIELD_WIDTH 8 +#define NATC_CONTROL_STATUS2_UNUSED2_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_CONTROL_STATUS2_UNUSED1_FIELD; +#define NATC_CONTROL_STATUS2_UNUSED1_FIELD_MASK 0x000000c0 +#define NATC_CONTROL_STATUS2_UNUSED1_FIELD_WIDTH 2 +#define NATC_CONTROL_STATUS2_UNUSED1_FIELD_SHIFT 6 + +extern const ru_field_rec NATC_CONTROL_STATUS2_CACHE_UPDATE_ON_REG_DDR_LOOKUP_FIELD; +#define NATC_CONTROL_STATUS2_CACHE_UPDATE_ON_REG_DDR_LOOKUP_FIELD_MASK 0x00000020 +#define NATC_CONTROL_STATUS2_CACHE_UPDATE_ON_REG_DDR_LOOKUP_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS2_CACHE_UPDATE_ON_REG_DDR_LOOKUP_FIELD_SHIFT 5 + +extern const ru_field_rec NATC_CONTROL_STATUS2_DDR_COUNTER_8BIT_IN_32BIT_SWAP_CONTROL_FIELD; +#define NATC_CONTROL_STATUS2_DDR_COUNTER_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_MASK 0x00000010 +#define NATC_CONTROL_STATUS2_DDR_COUNTER_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS2_DDR_COUNTER_8BIT_IN_32BIT_SWAP_CONTROL_FIELD_SHIFT 4 + +extern const ru_field_rec NATC_CONTROL_STATUS2_DDR_HASH_SWAP_FIELD; +#define NATC_CONTROL_STATUS2_DDR_HASH_SWAP_FIELD_MASK 0x00000008 +#define NATC_CONTROL_STATUS2_DDR_HASH_SWAP_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS2_DDR_HASH_SWAP_FIELD_SHIFT 3 + +extern const ru_field_rec NATC_CONTROL_STATUS2_DDR_REPLACE_DUPLICATED_CACHED_ENTRY_ENABLE_FIELD; +#define NATC_CONTROL_STATUS2_DDR_REPLACE_DUPLICATED_CACHED_ENTRY_ENABLE_FIELD_MASK 0x00000004 +#define NATC_CONTROL_STATUS2_DDR_REPLACE_DUPLICATED_CACHED_ENTRY_ENABLE_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS2_DDR_REPLACE_DUPLICATED_CACHED_ENTRY_ENABLE_FIELD_SHIFT 2 + +extern const ru_field_rec NATC_CONTROL_STATUS2_DDR_LOOKUP_PENDING_FIFO_MODE_DISABLE_FIELD; +#define NATC_CONTROL_STATUS2_DDR_LOOKUP_PENDING_FIFO_MODE_DISABLE_FIELD_MASK 0x00000002 +#define NATC_CONTROL_STATUS2_DDR_LOOKUP_PENDING_FIFO_MODE_DISABLE_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS2_DDR_LOOKUP_PENDING_FIFO_MODE_DISABLE_FIELD_SHIFT 1 + +extern const ru_field_rec NATC_CONTROL_STATUS2_UNUSED3_FIELD; +#define NATC_CONTROL_STATUS2_UNUSED3_FIELD_MASK 0x00000001 +#define NATC_CONTROL_STATUS2_UNUSED3_FIELD_WIDTH 1 +#define NATC_CONTROL_STATUS2_UNUSED3_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_TABLE_CONTROL_SMEM_DIS_TBL7_FIELD; +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL7_FIELD_MASK 0x80000000 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL7_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL7_FIELD_SHIFT 31 + +extern const ru_field_rec NATC_TABLE_CONTROL_SMEM_DIS_TBL6_FIELD; +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL6_FIELD_MASK 0x40000000 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL6_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL6_FIELD_SHIFT 30 + +extern const ru_field_rec NATC_TABLE_CONTROL_SMEM_DIS_TBL5_FIELD; +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL5_FIELD_MASK 0x20000000 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL5_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL5_FIELD_SHIFT 29 + +extern const ru_field_rec NATC_TABLE_CONTROL_SMEM_DIS_TBL4_FIELD; +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL4_FIELD_MASK 0x10000000 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL4_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL4_FIELD_SHIFT 28 + +extern const ru_field_rec NATC_TABLE_CONTROL_SMEM_DIS_TBL3_FIELD; +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL3_FIELD_MASK 0x08000000 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL3_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL3_FIELD_SHIFT 27 + +extern const ru_field_rec NATC_TABLE_CONTROL_SMEM_DIS_TBL2_FIELD; +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL2_FIELD_MASK 0x04000000 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL2_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL2_FIELD_SHIFT 26 + +extern const ru_field_rec NATC_TABLE_CONTROL_SMEM_DIS_TBL1_FIELD; +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL1_FIELD_MASK 0x02000000 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL1_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL1_FIELD_SHIFT 25 + +extern const ru_field_rec NATC_TABLE_CONTROL_SMEM_DIS_TBL0_FIELD; +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL0_FIELD_MASK 0x01000000 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL0_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_SMEM_DIS_TBL0_FIELD_SHIFT 24 + +extern const ru_field_rec NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL7_FIELD; +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL7_FIELD_MASK 0x00800000 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL7_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL7_FIELD_SHIFT 23 + +extern const ru_field_rec NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL6_FIELD; +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL6_FIELD_MASK 0x00400000 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL6_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL6_FIELD_SHIFT 22 + +extern const ru_field_rec NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL5_FIELD; +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL5_FIELD_MASK 0x00200000 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL5_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL5_FIELD_SHIFT 21 + +extern const ru_field_rec NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL4_FIELD; +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL4_FIELD_MASK 0x00100000 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL4_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL4_FIELD_SHIFT 20 + +extern const ru_field_rec NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL3_FIELD; +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL3_FIELD_MASK 0x00080000 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL3_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL3_FIELD_SHIFT 19 + +extern const ru_field_rec NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL2_FIELD; +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL2_FIELD_MASK 0x00040000 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL2_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL2_FIELD_SHIFT 18 + +extern const ru_field_rec NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL1_FIELD; +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL1_FIELD_MASK 0x00020000 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL1_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL1_FIELD_SHIFT 17 + +extern const ru_field_rec NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL0_FIELD; +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL0_FIELD_MASK 0x00010000 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL0_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_VAR_CONTEXT_LEN_EN_TBL0_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_TABLE_CONTROL_KEY_LEN_TBL7_FIELD; +#define NATC_TABLE_CONTROL_KEY_LEN_TBL7_FIELD_MASK 0x00008000 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL7_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL7_FIELD_SHIFT 15 + +extern const ru_field_rec NATC_TABLE_CONTROL_NON_CACHEABLE_TBL7_FIELD; +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL7_FIELD_MASK 0x00004000 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL7_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL7_FIELD_SHIFT 14 + +extern const ru_field_rec NATC_TABLE_CONTROL_KEY_LEN_TBL6_FIELD; +#define NATC_TABLE_CONTROL_KEY_LEN_TBL6_FIELD_MASK 0x00002000 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL6_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL6_FIELD_SHIFT 13 + +extern const ru_field_rec NATC_TABLE_CONTROL_NON_CACHEABLE_TBL6_FIELD; +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL6_FIELD_MASK 0x00001000 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL6_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL6_FIELD_SHIFT 12 + +extern const ru_field_rec NATC_TABLE_CONTROL_KEY_LEN_TBL5_FIELD; +#define NATC_TABLE_CONTROL_KEY_LEN_TBL5_FIELD_MASK 0x00000800 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL5_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL5_FIELD_SHIFT 11 + +extern const ru_field_rec NATC_TABLE_CONTROL_NON_CACHEABLE_TBL5_FIELD; +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL5_FIELD_MASK 0x00000400 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL5_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL5_FIELD_SHIFT 10 + +extern const ru_field_rec NATC_TABLE_CONTROL_KEY_LEN_TBL4_FIELD; +#define NATC_TABLE_CONTROL_KEY_LEN_TBL4_FIELD_MASK 0x00000200 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL4_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL4_FIELD_SHIFT 9 + +extern const ru_field_rec NATC_TABLE_CONTROL_NON_CACHEABLE_TBL4_FIELD; +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL4_FIELD_MASK 0x00000100 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL4_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL4_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_TABLE_CONTROL_KEY_LEN_TBL3_FIELD; +#define NATC_TABLE_CONTROL_KEY_LEN_TBL3_FIELD_MASK 0x00000080 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL3_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL3_FIELD_SHIFT 7 + +extern const ru_field_rec NATC_TABLE_CONTROL_NON_CACHEABLE_TBL3_FIELD; +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL3_FIELD_MASK 0x00000040 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL3_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL3_FIELD_SHIFT 6 + +extern const ru_field_rec NATC_TABLE_CONTROL_KEY_LEN_TBL2_FIELD; +#define NATC_TABLE_CONTROL_KEY_LEN_TBL2_FIELD_MASK 0x00000020 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL2_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL2_FIELD_SHIFT 5 + +extern const ru_field_rec NATC_TABLE_CONTROL_NON_CACHEABLE_TBL2_FIELD; +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL2_FIELD_MASK 0x00000010 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL2_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL2_FIELD_SHIFT 4 + +extern const ru_field_rec NATC_TABLE_CONTROL_KEY_LEN_TBL1_FIELD; +#define NATC_TABLE_CONTROL_KEY_LEN_TBL1_FIELD_MASK 0x00000008 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL1_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL1_FIELD_SHIFT 3 + +extern const ru_field_rec NATC_TABLE_CONTROL_NON_CACHEABLE_TBL1_FIELD; +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL1_FIELD_MASK 0x00000004 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL1_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL1_FIELD_SHIFT 2 + +extern const ru_field_rec NATC_TABLE_CONTROL_KEY_LEN_TBL0_FIELD; +#define NATC_TABLE_CONTROL_KEY_LEN_TBL0_FIELD_MASK 0x00000002 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL0_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_KEY_LEN_TBL0_FIELD_SHIFT 1 + +extern const ru_field_rec NATC_TABLE_CONTROL_NON_CACHEABLE_TBL0_FIELD; +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL0_FIELD_MASK 0x00000001 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL0_FIELD_WIDTH 1 +#define NATC_TABLE_CONTROL_NON_CACHEABLE_TBL0_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_STAT_COUNTER_CONTROL_0_DDR_EVICT_COUNT_EN_FIELD; +#define NATC_STAT_COUNTER_CONTROL_0_DDR_EVICT_COUNT_EN_FIELD_MASK 0xff000000 +#define NATC_STAT_COUNTER_CONTROL_0_DDR_EVICT_COUNT_EN_FIELD_WIDTH 8 +#define NATC_STAT_COUNTER_CONTROL_0_DDR_EVICT_COUNT_EN_FIELD_SHIFT 24 + +extern const ru_field_rec NATC_STAT_COUNTER_CONTROL_0_DDR_REQUEST_COUNT_EN_FIELD; +#define NATC_STAT_COUNTER_CONTROL_0_DDR_REQUEST_COUNT_EN_FIELD_MASK 0x00ff0000 +#define NATC_STAT_COUNTER_CONTROL_0_DDR_REQUEST_COUNT_EN_FIELD_WIDTH 8 +#define NATC_STAT_COUNTER_CONTROL_0_DDR_REQUEST_COUNT_EN_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_STAT_COUNTER_CONTROL_0_CACHE_MISS_COUNT_EN_FIELD; +#define NATC_STAT_COUNTER_CONTROL_0_CACHE_MISS_COUNT_EN_FIELD_MASK 0x0000ff00 +#define NATC_STAT_COUNTER_CONTROL_0_CACHE_MISS_COUNT_EN_FIELD_WIDTH 8 +#define NATC_STAT_COUNTER_CONTROL_0_CACHE_MISS_COUNT_EN_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_STAT_COUNTER_CONTROL_0_CACHE_HIT_COUNT_EN_FIELD; +#define NATC_STAT_COUNTER_CONTROL_0_CACHE_HIT_COUNT_EN_FIELD_MASK 0x000000ff +#define NATC_STAT_COUNTER_CONTROL_0_CACHE_HIT_COUNT_EN_FIELD_WIDTH 8 +#define NATC_STAT_COUNTER_CONTROL_0_CACHE_HIT_COUNT_EN_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_STAT_COUNTER_CONTROL_1_RESERVED0_FIELD; +#define NATC_STAT_COUNTER_CONTROL_1_RESERVED0_FIELD_MASK 0xfffffe00 +#define NATC_STAT_COUNTER_CONTROL_1_RESERVED0_FIELD_WIDTH 23 +#define NATC_STAT_COUNTER_CONTROL_1_RESERVED0_FIELD_SHIFT 9 + +extern const ru_field_rec NATC_STAT_COUNTER_CONTROL_1_COUNTER_WRAPAROUND_DIS_FIELD; +#define NATC_STAT_COUNTER_CONTROL_1_COUNTER_WRAPAROUND_DIS_FIELD_MASK 0x00000100 +#define NATC_STAT_COUNTER_CONTROL_1_COUNTER_WRAPAROUND_DIS_FIELD_WIDTH 1 +#define NATC_STAT_COUNTER_CONTROL_1_COUNTER_WRAPAROUND_DIS_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_STAT_COUNTER_CONTROL_1_DDR_BLOCK_COUNT_EN_FIELD; +#define NATC_STAT_COUNTER_CONTROL_1_DDR_BLOCK_COUNT_EN_FIELD_MASK 0x000000ff +#define NATC_STAT_COUNTER_CONTROL_1_DDR_BLOCK_COUNT_EN_FIELD_WIDTH 8 +#define NATC_STAT_COUNTER_CONTROL_1_DDR_BLOCK_COUNT_EN_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_3_FIELD; +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_3_FIELD_MASK 0xff000000 +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_3_FIELD_WIDTH 8 +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_3_FIELD_SHIFT 24 + +extern const ru_field_rec NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_2_FIELD; +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_2_FIELD_MASK 0x00ff0000 +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_2_FIELD_WIDTH 8 +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_2_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_1_FIELD; +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_1_FIELD_MASK 0x0000ff00 +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_1_FIELD_WIDTH 8 +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_1_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_0_FIELD; +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_0_FIELD_MASK 0x000000ff +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_0_FIELD_WIDTH 8 +#define NATC_REGFILE_FIFO_START_ADDR_0_REGFILE_FIFO_START_ADDR_0_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_7_FIELD; +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_7_FIELD_MASK 0xff000000 +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_7_FIELD_WIDTH 8 +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_7_FIELD_SHIFT 24 + +extern const ru_field_rec NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_6_FIELD; +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_6_FIELD_MASK 0x00ff0000 +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_6_FIELD_WIDTH 8 +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_6_FIELD_SHIFT 16 + +extern const ru_field_rec NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_5_FIELD; +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_5_FIELD_MASK 0x0000ff00 +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_5_FIELD_WIDTH 8 +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_5_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_4_FIELD; +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_4_FIELD_MASK 0x000000ff +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_4_FIELD_WIDTH 8 +#define NATC_REGFILE_FIFO_START_ADDR_1_REGFILE_FIFO_START_ADDR_4_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_TBL_DDR_KEY_BASE_ADDRESS_LOWER_BAR_FIELD; +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_LOWER_BAR_FIELD_MASK 0xfffffff8 +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_LOWER_BAR_FIELD_WIDTH 29 +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_LOWER_BAR_FIELD_SHIFT 3 + +extern const ru_field_rec NATC_TBL_DDR_KEY_BASE_ADDRESS_LOWER_ZEROS_FIELD; +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_LOWER_ZEROS_FIELD_MASK 0x00000007 +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_LOWER_ZEROS_FIELD_WIDTH 3 +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_LOWER_ZEROS_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_TBL_DDR_KEY_BASE_ADDRESS_UPPER_ZEROS_FIELD; +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_UPPER_ZEROS_FIELD_MASK 0xffffff00 +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_UPPER_ZEROS_FIELD_WIDTH 24 +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_UPPER_ZEROS_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_TBL_DDR_KEY_BASE_ADDRESS_UPPER_BAR_FIELD; +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_UPPER_BAR_FIELD_MASK 0x000000ff +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_UPPER_BAR_FIELD_WIDTH 8 +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_UPPER_BAR_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_TBL_DDR_RESULT_BASE_ADDRESS_LOWER_BAR_FIELD; +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_LOWER_BAR_FIELD_MASK 0xfffffff8 +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_LOWER_BAR_FIELD_WIDTH 29 +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_LOWER_BAR_FIELD_SHIFT 3 + +extern const ru_field_rec NATC_TBL_DDR_RESULT_BASE_ADDRESS_LOWER_ZEROS_FIELD; +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_LOWER_ZEROS_FIELD_MASK 0x00000007 +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_LOWER_ZEROS_FIELD_WIDTH 3 +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_LOWER_ZEROS_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_TBL_DDR_RESULT_BASE_ADDRESS_UPPER_ZEROS_FIELD; +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_UPPER_ZEROS_FIELD_MASK 0xffffff00 +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_UPPER_ZEROS_FIELD_WIDTH 24 +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_UPPER_ZEROS_FIELD_SHIFT 8 + +extern const ru_field_rec NATC_TBL_DDR_RESULT_BASE_ADDRESS_UPPER_BAR_FIELD; +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_UPPER_BAR_FIELD_MASK 0x000000ff +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_UPPER_BAR_FIELD_WIDTH 8 +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_UPPER_BAR_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_KEY_MASK_KEY_MASK_FIELD; +#define NATC_KEY_MASK_KEY_MASK_FIELD_MASK 0xffffffff +#define NATC_KEY_MASK_KEY_MASK_FIELD_WIDTH 32 +#define NATC_KEY_MASK_KEY_MASK_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_INDIR_C_INDIR_ADDR_REG_RESERVED0_FIELD; +#define NATC_INDIR_C_INDIR_ADDR_REG_RESERVED0_FIELD_MASK 0xfffff800 +#define NATC_INDIR_C_INDIR_ADDR_REG_RESERVED0_FIELD_WIDTH 21 +#define NATC_INDIR_C_INDIR_ADDR_REG_RESERVED0_FIELD_SHIFT 11 + +extern const ru_field_rec NATC_INDIR_C_INDIR_ADDR_REG_W_R_FIELD; +#define NATC_INDIR_C_INDIR_ADDR_REG_W_R_FIELD_MASK 0x00000400 +#define NATC_INDIR_C_INDIR_ADDR_REG_W_R_FIELD_WIDTH 1 +#define NATC_INDIR_C_INDIR_ADDR_REG_W_R_FIELD_SHIFT 10 + +extern const ru_field_rec NATC_INDIR_C_INDIR_ADDR_REG_NATC_ENTRY_FIELD; +#define NATC_INDIR_C_INDIR_ADDR_REG_NATC_ENTRY_FIELD_MASK 0x000003ff +#define NATC_INDIR_C_INDIR_ADDR_REG_NATC_ENTRY_FIELD_WIDTH 10 +#define NATC_INDIR_C_INDIR_ADDR_REG_NATC_ENTRY_FIELD_SHIFT 0 + +extern const ru_field_rec NATC_INDIR_C_INDIR_DATA_REG_DATA_FIELD; +#define NATC_INDIR_C_INDIR_DATA_REG_DATA_FIELD_MASK 0xffffffff +#define NATC_INDIR_C_INDIR_DATA_REG_DATA_FIELD_WIDTH 32 +#define NATC_INDIR_C_INDIR_DATA_REG_DATA_FIELD_SHIFT 0 + + + +/****************************************************************************** + * XRDP_ Registers + ******************************************************************************/ +extern const ru_reg_rec QM_GLOBAL_CFG_QM_ENABLE_CTRL_REG; +#define QM_GLOBAL_CFG_QM_ENABLE_CTRL_REG_OFFSET 0x00000000 + +extern const ru_reg_rec QM_GLOBAL_CFG_QM_SW_RST_CTRL_REG; +#define QM_GLOBAL_CFG_QM_SW_RST_CTRL_REG_OFFSET 0x00000004 + +extern const ru_reg_rec QM_GLOBAL_CFG_QM_GENERAL_CTRL_REG; +#define QM_GLOBAL_CFG_QM_GENERAL_CTRL_REG_OFFSET 0x00000008 + +extern const ru_reg_rec QM_GLOBAL_CFG_FPM_CONTROL_REG; +#define QM_GLOBAL_CFG_FPM_CONTROL_REG_OFFSET 0x0000000c + +extern const ru_reg_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_CONTROL_REG; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_CONTROL_REG_OFFSET 0x00000010 + +extern const ru_reg_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_LOWER_THR_REG; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_LOWER_THR_REG_OFFSET 0x00000014 + +extern const ru_reg_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_MID_THR_REG; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_MID_THR_REG_OFFSET 0x00000018 + +extern const ru_reg_rec QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_HIGHER_THR_REG; +#define QM_GLOBAL_CFG_DDR_BYTE_CONGESTION_HIGHER_THR_REG_OFFSET 0x0000001c + +extern const ru_reg_rec QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_REG; +#define QM_GLOBAL_CFG_DDR_PD_CONGESTION_CONTROL_REG_OFFSET 0x00000020 + +extern const ru_reg_rec QM_GLOBAL_CFG_QM_PD_CONGESTION_CONTROL_REG; +#define QM_GLOBAL_CFG_QM_PD_CONGESTION_CONTROL_REG_OFFSET 0x00000024 + +extern const ru_reg_rec QM_GLOBAL_CFG_ABS_DROP_QUEUE_REG; +#define QM_GLOBAL_CFG_ABS_DROP_QUEUE_REG_OFFSET 0x00000028 + +extern const ru_reg_rec QM_GLOBAL_CFG_AGGREGATION_CTRL_REG; +#define QM_GLOBAL_CFG_AGGREGATION_CTRL_REG_OFFSET 0x0000002c + +extern const ru_reg_rec QM_GLOBAL_CFG_FPM_BASE_ADDR_REG; +#define QM_GLOBAL_CFG_FPM_BASE_ADDR_REG_OFFSET 0x00000030 + +extern const ru_reg_rec QM_GLOBAL_CFG_FPM_COHERENT_BASE_ADDR_REG; +#define QM_GLOBAL_CFG_FPM_COHERENT_BASE_ADDR_REG_OFFSET 0x00000034 + +extern const ru_reg_rec QM_GLOBAL_CFG_DDR_SOP_OFFSET_REG; +#define QM_GLOBAL_CFG_DDR_SOP_OFFSET_REG_OFFSET 0x00000038 + +extern const ru_reg_rec QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_REG; +#define QM_GLOBAL_CFG_EPON_OVERHEAD_CTRL_REG_OFFSET 0x0000003c + +extern const ru_reg_rec QM_GLOBAL_CFG_DQM_FULL_REG; +#define QM_GLOBAL_CFG_DQM_FULL_REG_OFFSET 0x00000040 + +#define QM_GLOBAL_CFG_DQM_FULL_REG_RAM_CNT 0x00000008 + +extern const ru_reg_rec QM_GLOBAL_CFG_DQM_NOT_EMPTY_REG; +#define QM_GLOBAL_CFG_DQM_NOT_EMPTY_REG_OFFSET 0x00000070 + +#define QM_GLOBAL_CFG_DQM_NOT_EMPTY_REG_RAM_CNT 0x00000008 + +extern const ru_reg_rec QM_GLOBAL_CFG_DQM_POP_READY_REG; +#define QM_GLOBAL_CFG_DQM_POP_READY_REG_OFFSET 0x000000a0 + +#define QM_GLOBAL_CFG_DQM_POP_READY_REG_RAM_CNT 0x00000008 + +extern const ru_reg_rec QM_GLOBAL_CFG_AGGREGATION_CONTEXT_VALID_REG; +#define QM_GLOBAL_CFG_AGGREGATION_CONTEXT_VALID_REG_OFFSET 0x000000d0 + +#define QM_GLOBAL_CFG_AGGREGATION_CONTEXT_VALID_REG_RAM_CNT 0x00000008 + +extern const ru_reg_rec QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_REG; +#define QM_GLOBAL_CFG_QM_AGGREGATION_TIMER_CTRL_REG_OFFSET 0x00000100 + +extern const ru_reg_rec QM_GLOBAL_CFG_QM_FPM_UG_GBL_CNT_REG; +#define QM_GLOBAL_CFG_QM_FPM_UG_GBL_CNT_REG_OFFSET 0x00000118 + +extern const ru_reg_rec QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_REG; +#define QM_GLOBAL_CFG_QM_EGRESS_FLUSH_QUEUE_REG_OFFSET 0x0000011c + +extern const ru_reg_rec QM_GLOBAL_CFG_DDR_SPARE_ROOM_REG; +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_REG_OFFSET 0x00000120 + +#define QM_GLOBAL_CFG_DDR_SPARE_ROOM_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_REG; +#define QM_GLOBAL_CFG_DUMMY_SPARE_ROOM_PROFILE_ID_REG_OFFSET 0x00000130 + +extern const ru_reg_rec QM_FPM_POOLS_THR_REG; +#define QM_FPM_POOLS_THR_REG_OFFSET 0x00000200 + +#define QM_FPM_POOLS_THR_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_FPM_USR_GRP_LOWER_THR_REG; +#define QM_FPM_USR_GRP_LOWER_THR_REG_OFFSET 0x00000280 + +#define QM_FPM_USR_GRP_LOWER_THR_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_FPM_USR_GRP_MID_THR_REG; +#define QM_FPM_USR_GRP_MID_THR_REG_OFFSET 0x00000284 + +#define QM_FPM_USR_GRP_MID_THR_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_FPM_USR_GRP_HIGHER_THR_REG; +#define QM_FPM_USR_GRP_HIGHER_THR_REG_OFFSET 0x00000288 + +#define QM_FPM_USR_GRP_HIGHER_THR_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_FPM_USR_GRP_CNT_REG; +#define QM_FPM_USR_GRP_CNT_REG_OFFSET 0x0000028c + +#define QM_FPM_USR_GRP_CNT_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_RUNNER_GRP_RNR_CONFIG_REG; +#define QM_RUNNER_GRP_RNR_CONFIG_REG_OFFSET 0x00000300 + +#define QM_RUNNER_GRP_RNR_CONFIG_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_RUNNER_GRP_QUEUE_CONFIG_REG; +#define QM_RUNNER_GRP_QUEUE_CONFIG_REG_OFFSET 0x00000304 + +#define QM_RUNNER_GRP_QUEUE_CONFIG_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_RUNNER_GRP_PDFIFO_CONFIG_REG; +#define QM_RUNNER_GRP_PDFIFO_CONFIG_REG_OFFSET 0x00000308 + +#define QM_RUNNER_GRP_PDFIFO_CONFIG_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_REG; +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_REG_OFFSET 0x0000030c + +#define QM_RUNNER_GRP_UPDATE_FIFO_CONFIG_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_INTR_CTRL_ISR_REG; +#define QM_INTR_CTRL_ISR_REG_OFFSET 0x00000400 + +extern const ru_reg_rec QM_INTR_CTRL_ISM_REG; +#define QM_INTR_CTRL_ISM_REG_OFFSET 0x00000404 + +extern const ru_reg_rec QM_INTR_CTRL_IER_REG; +#define QM_INTR_CTRL_IER_REG_OFFSET 0x00000408 + +extern const ru_reg_rec QM_INTR_CTRL_ITR_REG; +#define QM_INTR_CTRL_ITR_REG_OFFSET 0x0000040c + +extern const ru_reg_rec QM_CLK_GATE_CLK_GATE_CNTRL_REG; +#define QM_CLK_GATE_CLK_GATE_CNTRL_REG_OFFSET 0x00000500 + +extern const ru_reg_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_REG; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_REG_OFFSET 0x00000600 + +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_CTRL_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_0_REG; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_0_REG_OFFSET 0x00000610 + +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_0_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_1_REG; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_1_REG_OFFSET 0x00000614 + +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_1_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_2_REG; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_2_REG_OFFSET 0x00000618 + +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_2_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_3_REG; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_3_REG_OFFSET 0x0000061c + +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_WR_DATA_3_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_0_REG; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_0_REG_OFFSET 0x00000620 + +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_0_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_1_REG; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_1_REG_OFFSET 0x00000624 + +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_1_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_2_REG; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_2_REG_OFFSET 0x00000628 + +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_2_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_3_REG; +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_3_REG_OFFSET 0x0000062c + +#define QM_CPU_INDR_PORT_CPU_PD_INDIRECT_RD_DATA_3_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_QUEUE_CONTEXT_CONTEXT_REG; +#define QM_QUEUE_CONTEXT_CONTEXT_REG_OFFSET 0x00000800 + +#define QM_QUEUE_CONTEXT_CONTEXT_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec QM_WRED_PROFILE_COLOR_MIN_THR_0_REG; +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_REG_OFFSET 0x00001000 + +#define QM_WRED_PROFILE_COLOR_MIN_THR_0_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_WRED_PROFILE_COLOR_MIN_THR_1_REG; +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_REG_OFFSET 0x00001004 + +#define QM_WRED_PROFILE_COLOR_MIN_THR_1_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_WRED_PROFILE_COLOR_MAX_THR_0_REG; +#define QM_WRED_PROFILE_COLOR_MAX_THR_0_REG_OFFSET 0x00001010 + +#define QM_WRED_PROFILE_COLOR_MAX_THR_0_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_WRED_PROFILE_COLOR_MAX_THR_1_REG; +#define QM_WRED_PROFILE_COLOR_MAX_THR_1_REG_OFFSET 0x00001014 + +#define QM_WRED_PROFILE_COLOR_MAX_THR_1_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_WRED_PROFILE_COLOR_SLOPE_0_REG; +#define QM_WRED_PROFILE_COLOR_SLOPE_0_REG_OFFSET 0x00001020 + +#define QM_WRED_PROFILE_COLOR_SLOPE_0_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_WRED_PROFILE_COLOR_SLOPE_1_REG; +#define QM_WRED_PROFILE_COLOR_SLOPE_1_REG_OFFSET 0x00001024 + +#define QM_WRED_PROFILE_COLOR_SLOPE_1_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_COPY_DECISION_PROFILE_THR_REG; +#define QM_COPY_DECISION_PROFILE_THR_REG_OFFSET 0x00001800 + +#define QM_COPY_DECISION_PROFILE_THR_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec QM_TOTAL_VALID_COUNTER_COUNTER_REG; +#define QM_TOTAL_VALID_COUNTER_COUNTER_REG_OFFSET 0x00002000 + +#define QM_TOTAL_VALID_COUNTER_COUNTER_REG_RAM_CNT 0x000001ff + +extern const ru_reg_rec QM_DQM_VALID_COUNTER_COUNTER_REG; +#define QM_DQM_VALID_COUNTER_COUNTER_REG_OFFSET 0x00003000 + +#define QM_DQM_VALID_COUNTER_COUNTER_REG_RAM_CNT 0x000000ff + +extern const ru_reg_rec QM_DROP_COUNTER_COUNTER_REG; +#define QM_DROP_COUNTER_COUNTER_REG_OFFSET 0x00004000 + +#define QM_DROP_COUNTER_COUNTER_REG_RAM_CNT 0x000000ff + +extern const ru_reg_rec QM_EPON_RPT_CNT_COUNTER_REG; +#define QM_EPON_RPT_CNT_COUNTER_REG_OFFSET 0x00005000 + +#define QM_EPON_RPT_CNT_COUNTER_REG_RAM_CNT 0x000000ff + +extern const ru_reg_rec QM_EPON_RPT_CNT_QUEUE_STATUS_REG; +#define QM_EPON_RPT_CNT_QUEUE_STATUS_REG_OFFSET 0x00005500 + +#define QM_EPON_RPT_CNT_QUEUE_STATUS_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_RD_DATA_POOL0_REG; +#define QM_RD_DATA_POOL0_REG_OFFSET 0x00005800 + +extern const ru_reg_rec QM_RD_DATA_POOL1_REG; +#define QM_RD_DATA_POOL1_REG_OFFSET 0x00005804 + +extern const ru_reg_rec QM_RD_DATA_POOL2_REG; +#define QM_RD_DATA_POOL2_REG_OFFSET 0x00005808 + +extern const ru_reg_rec QM_RD_DATA_POOL3_REG; +#define QM_RD_DATA_POOL3_REG_OFFSET 0x0000580c + +extern const ru_reg_rec QM_PDFIFO_PTR_REG; +#define QM_PDFIFO_PTR_REG_OFFSET 0x00006000 + +#define QM_PDFIFO_PTR_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec QM_UPDATE_FIFO_PTR_REG; +#define QM_UPDATE_FIFO_PTR_REG_OFFSET 0x00006500 + +#define QM_UPDATE_FIFO_PTR_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec QM_RD_DATA_REG; +#define QM_RD_DATA_REG_OFFSET 0x00008800 + +#define QM_RD_DATA_REG_RAM_CNT 0x00000004 + +extern const ru_reg_rec QM_POP_REG; +#define QM_POP_REG_OFFSET 0x00008820 + +extern const ru_reg_rec QM_CM_COMMON_INPUT_FIFO_DATA_REG; +#define QM_CM_COMMON_INPUT_FIFO_DATA_REG_OFFSET 0x00009000 + +#define QM_CM_COMMON_INPUT_FIFO_DATA_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec QM_NORMAL_RMT_FIFO_DATA_REG; +#define QM_NORMAL_RMT_FIFO_DATA_REG_OFFSET 0x00009100 + +#define QM_NORMAL_RMT_FIFO_DATA_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec QM_NON_DELAYED_RMT_FIFO_DATA_REG; +#define QM_NON_DELAYED_RMT_FIFO_DATA_REG_OFFSET 0x00009200 + +#define QM_NON_DELAYED_RMT_FIFO_DATA_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec QM_EGRESS_DATA_FIFO_DATA_REG; +#define QM_EGRESS_DATA_FIFO_DATA_REG_OFFSET 0x00009300 + +#define QM_EGRESS_DATA_FIFO_DATA_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec QM_EGRESS_RR_FIFO_DATA_REG; +#define QM_EGRESS_RR_FIFO_DATA_REG_OFFSET 0x00009400 + +#define QM_EGRESS_RR_FIFO_DATA_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec QM_EGRESS_BB_INPUT_FIFO_DATA_REG; +#define QM_EGRESS_BB_INPUT_FIFO_DATA_REG_OFFSET 0x00009500 + +#define QM_EGRESS_BB_INPUT_FIFO_DATA_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec QM_EGRESS_BB_OUTPUT_FIFO_DATA_REG; +#define QM_EGRESS_BB_OUTPUT_FIFO_DATA_REG_OFFSET 0x00009600 + +#define QM_EGRESS_BB_OUTPUT_FIFO_DATA_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec QM_BB_OUTPUT_FIFO_DATA_REG; +#define QM_BB_OUTPUT_FIFO_DATA_REG_OFFSET 0x00009700 + +#define QM_BB_OUTPUT_FIFO_DATA_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec QM_NON_DELAYED_OUT_FIFO_DATA_REG; +#define QM_NON_DELAYED_OUT_FIFO_DATA_REG_OFFSET 0x00009800 + +#define QM_NON_DELAYED_OUT_FIFO_DATA_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec QM_CONTEXT_DATA_REG; +#define QM_CONTEXT_DATA_REG_OFFSET 0x0000a000 + +#define QM_CONTEXT_DATA_REG_RAM_CNT 0x0000027f + +extern const ru_reg_rec QM_FPM_BUFFER_RESERVATION_DATA_REG; +#define QM_FPM_BUFFER_RESERVATION_DATA_REG_OFFSET 0x0000c000 + +#define QM_FPM_BUFFER_RESERVATION_DATA_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec QM_UG_CTRL_REG; +#define QM_UG_CTRL_REG_OFFSET 0x0000c100 + +extern const ru_reg_rec QM_STATUS_REG; +#define QM_STATUS_REG_OFFSET 0x0000c104 + +extern const ru_reg_rec QM_WRED_SOURCE_REG; +#define QM_WRED_SOURCE_REG_OFFSET 0x0000c108 + +#define QM_WRED_SOURCE_REG_RAM_CNT 0x00000004 + +extern const ru_reg_rec QM_QM_FLOW_CTRL_RNR_CFG_REG; +#define QM_QM_FLOW_CTRL_RNR_CFG_REG_OFFSET 0x0000c130 + +extern const ru_reg_rec QM_DEBUG_SEL_REG; +#define QM_DEBUG_SEL_REG_OFFSET 0x00016000 + +extern const ru_reg_rec QM_DEBUG_BUS_LSB_REG; +#define QM_DEBUG_BUS_LSB_REG_OFFSET 0x00016004 + +extern const ru_reg_rec QM_DEBUG_BUS_MSB_REG; +#define QM_DEBUG_BUS_MSB_REG_OFFSET 0x00016008 + +extern const ru_reg_rec QM_QM_SPARE_CONFIG_REG; +#define QM_QM_SPARE_CONFIG_REG_OFFSET 0x0001600c + +extern const ru_reg_rec QM_GOOD_LVL1_PKTS_CNT_REG; +#define QM_GOOD_LVL1_PKTS_CNT_REG_OFFSET 0x00016010 + +extern const ru_reg_rec QM_GOOD_LVL1_BYTES_CNT_REG; +#define QM_GOOD_LVL1_BYTES_CNT_REG_OFFSET 0x00016014 + +extern const ru_reg_rec QM_GOOD_LVL2_PKTS_CNT_REG; +#define QM_GOOD_LVL2_PKTS_CNT_REG_OFFSET 0x00016018 + +extern const ru_reg_rec QM_GOOD_LVL2_BYTES_CNT_REG; +#define QM_GOOD_LVL2_BYTES_CNT_REG_OFFSET 0x0001601c + +extern const ru_reg_rec QM_COPIED_PKTS_CNT_REG; +#define QM_COPIED_PKTS_CNT_REG_OFFSET 0x00016020 + +extern const ru_reg_rec QM_COPIED_BYTES_CNT_REG; +#define QM_COPIED_BYTES_CNT_REG_OFFSET 0x00016024 + +extern const ru_reg_rec QM_AGG_PKTS_CNT_REG; +#define QM_AGG_PKTS_CNT_REG_OFFSET 0x00016028 + +extern const ru_reg_rec QM_AGG_BYTES_CNT_REG; +#define QM_AGG_BYTES_CNT_REG_OFFSET 0x0001602c + +extern const ru_reg_rec QM_AGG_1_PKTS_CNT_REG; +#define QM_AGG_1_PKTS_CNT_REG_OFFSET 0x00016030 + +extern const ru_reg_rec QM_AGG_2_PKTS_CNT_REG; +#define QM_AGG_2_PKTS_CNT_REG_OFFSET 0x00016034 + +extern const ru_reg_rec QM_AGG_3_PKTS_CNT_REG; +#define QM_AGG_3_PKTS_CNT_REG_OFFSET 0x00016038 + +extern const ru_reg_rec QM_AGG_4_PKTS_CNT_REG; +#define QM_AGG_4_PKTS_CNT_REG_OFFSET 0x0001603c + +extern const ru_reg_rec QM_WRED_DROP_CNT_REG; +#define QM_WRED_DROP_CNT_REG_OFFSET 0x00016040 + +extern const ru_reg_rec QM_FPM_CONGESTION_DROP_CNT_REG; +#define QM_FPM_CONGESTION_DROP_CNT_REG_OFFSET 0x00016048 + +extern const ru_reg_rec QM_DDR_PD_CONGESTION_DROP_CNT_REG; +#define QM_DDR_PD_CONGESTION_DROP_CNT_REG_OFFSET 0x00016050 + +extern const ru_reg_rec QM_DDR_BYTE_CONGESTION_DROP_CNT_REG; +#define QM_DDR_BYTE_CONGESTION_DROP_CNT_REG_OFFSET 0x00016054 + +extern const ru_reg_rec QM_QM_PD_CONGESTION_DROP_CNT_REG; +#define QM_QM_PD_CONGESTION_DROP_CNT_REG_OFFSET 0x00016058 + +extern const ru_reg_rec QM_QM_ABS_REQUEUE_CNT_REG; +#define QM_QM_ABS_REQUEUE_CNT_REG_OFFSET 0x0001605c + +extern const ru_reg_rec QM_FPM_PREFETCH_FIFO0_STATUS_REG; +#define QM_FPM_PREFETCH_FIFO0_STATUS_REG_OFFSET 0x00016060 + +extern const ru_reg_rec QM_FPM_PREFETCH_FIFO1_STATUS_REG; +#define QM_FPM_PREFETCH_FIFO1_STATUS_REG_OFFSET 0x00016064 + +extern const ru_reg_rec QM_FPM_PREFETCH_FIFO2_STATUS_REG; +#define QM_FPM_PREFETCH_FIFO2_STATUS_REG_OFFSET 0x00016068 + +extern const ru_reg_rec QM_FPM_PREFETCH_FIFO3_STATUS_REG; +#define QM_FPM_PREFETCH_FIFO3_STATUS_REG_OFFSET 0x0001606c + +extern const ru_reg_rec QM_NORMAL_RMT_FIFO_STATUS_REG; +#define QM_NORMAL_RMT_FIFO_STATUS_REG_OFFSET 0x00016070 + +extern const ru_reg_rec QM_NON_DELAYED_RMT_FIFO_STATUS_REG; +#define QM_NON_DELAYED_RMT_FIFO_STATUS_REG_OFFSET 0x00016074 + +extern const ru_reg_rec QM_NON_DELAYED_OUT_FIFO_STATUS_REG; +#define QM_NON_DELAYED_OUT_FIFO_STATUS_REG_OFFSET 0x00016078 + +extern const ru_reg_rec QM_PRE_CM_FIFO_STATUS_REG; +#define QM_PRE_CM_FIFO_STATUS_REG_OFFSET 0x0001607c + +extern const ru_reg_rec QM_CM_RD_PD_FIFO_STATUS_REG; +#define QM_CM_RD_PD_FIFO_STATUS_REG_OFFSET 0x00016080 + +extern const ru_reg_rec QM_CM_WR_PD_FIFO_STATUS_REG; +#define QM_CM_WR_PD_FIFO_STATUS_REG_OFFSET 0x00016084 + +extern const ru_reg_rec QM_CM_COMMON_INPUT_FIFO_STATUS_REG; +#define QM_CM_COMMON_INPUT_FIFO_STATUS_REG_OFFSET 0x00016088 + +extern const ru_reg_rec QM_BB0_OUTPUT_FIFO_STATUS_REG; +#define QM_BB0_OUTPUT_FIFO_STATUS_REG_OFFSET 0x0001608c + +extern const ru_reg_rec QM_BB1_OUTPUT_FIFO_STATUS_REG; +#define QM_BB1_OUTPUT_FIFO_STATUS_REG_OFFSET 0x00016090 + +extern const ru_reg_rec QM_BB1_INPUT_FIFO_STATUS_REG; +#define QM_BB1_INPUT_FIFO_STATUS_REG_OFFSET 0x00016094 + +extern const ru_reg_rec QM_EGRESS_DATA_FIFO_STATUS_REG; +#define QM_EGRESS_DATA_FIFO_STATUS_REG_OFFSET 0x00016098 + +extern const ru_reg_rec QM_EGRESS_RR_FIFO_STATUS_REG; +#define QM_EGRESS_RR_FIFO_STATUS_REG_OFFSET 0x0001609c + +extern const ru_reg_rec QM_BB_ROUTE_OVR_REG; +#define QM_BB_ROUTE_OVR_REG_OFFSET 0x000160a0 + +#define QM_BB_ROUTE_OVR_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec QM_QM_INGRESS_STAT_REG; +#define QM_QM_INGRESS_STAT_REG_OFFSET 0x000160b0 + +extern const ru_reg_rec QM_QM_EGRESS_STAT_REG; +#define QM_QM_EGRESS_STAT_REG_OFFSET 0x000160b4 + +extern const ru_reg_rec QM_QM_CM_STAT_REG; +#define QM_QM_CM_STAT_REG_OFFSET 0x000160b8 + +extern const ru_reg_rec QM_QM_FPM_PREFETCH_STAT_REG; +#define QM_QM_FPM_PREFETCH_STAT_REG_OFFSET 0x000160bc + +extern const ru_reg_rec QM_QM_CONNECT_ACK_COUNTER_REG; +#define QM_QM_CONNECT_ACK_COUNTER_REG_OFFSET 0x000160c0 + +extern const ru_reg_rec QM_QM_DDR_WR_REPLY_COUNTER_REG; +#define QM_QM_DDR_WR_REPLY_COUNTER_REG_OFFSET 0x000160c4 + +extern const ru_reg_rec QM_QM_DDR_PIPE_BYTE_COUNTER_REG; +#define QM_QM_DDR_PIPE_BYTE_COUNTER_REG_OFFSET 0x000160c8 + +extern const ru_reg_rec QM_QM_ABS_REQUEUE_VALID_COUNTER_REG; +#define QM_QM_ABS_REQUEUE_VALID_COUNTER_REG_OFFSET 0x000160cc + +extern const ru_reg_rec QM_QM_ILLEGAL_PD_CAPTURE_REG; +#define QM_QM_ILLEGAL_PD_CAPTURE_REG_OFFSET 0x000160d0 + +#define QM_QM_ILLEGAL_PD_CAPTURE_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_QM_INGRESS_PROCESSED_PD_CAPTURE_REG; +#define QM_QM_INGRESS_PROCESSED_PD_CAPTURE_REG_OFFSET 0x000160e0 + +#define QM_QM_INGRESS_PROCESSED_PD_CAPTURE_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_QM_CM_PROCESSED_PD_CAPTURE_REG; +#define QM_QM_CM_PROCESSED_PD_CAPTURE_REG_OFFSET 0x000160f0 + +#define QM_QM_CM_PROCESSED_PD_CAPTURE_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_FPM_POOL_DROP_CNT_REG; +#define QM_FPM_POOL_DROP_CNT_REG_OFFSET 0x00016100 + +#define QM_FPM_POOL_DROP_CNT_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_FPM_GRP_DROP_CNT_REG; +#define QM_FPM_GRP_DROP_CNT_REG_OFFSET 0x00016110 + +#define QM_FPM_GRP_DROP_CNT_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec QM_FPM_BUFFER_RES_DROP_CNT_REG; +#define QM_FPM_BUFFER_RES_DROP_CNT_REG_OFFSET 0x00016120 + +extern const ru_reg_rec QM_PSRAM_EGRESS_CONG_DRP_CNT_REG; +#define QM_PSRAM_EGRESS_CONG_DRP_CNT_REG_OFFSET 0x00016124 + +extern const ru_reg_rec QM_BACKPRESSURE_REG; +#define QM_BACKPRESSURE_REG_OFFSET 0x00016128 + +extern const ru_reg_rec QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_REG; +#define QM_GLOBAL_CFG2_BBHTX_FIFO_ADDR_REG_OFFSET 0x00016200 + +extern const ru_reg_rec QM_DATA_REG; +#define QM_DATA_REG_OFFSET 0x00020000 + +#define QM_DATA_REG_RAM_CNT 0x000003ff + +extern const ru_reg_rec DQM_TOKEN_FIFO_TOKEN_FIFO_REG; +#define DQM_TOKEN_FIFO_TOKEN_FIFO_REG_OFFSET 0x00000000 + +extern const ru_reg_rec DQM_MAX_ENTRIES_WORDS_REG; +#define DQM_MAX_ENTRIES_WORDS_REG_OFFSET 0x00000000 + +extern const ru_reg_rec DQM_FPM_ADDR_REG; +#define DQM_FPM_ADDR_REG_OFFSET 0x00000018 + +extern const ru_reg_rec DQM_IRQ_STS_REG; +#define DQM_IRQ_STS_REG_OFFSET 0x0000001c + +extern const ru_reg_rec DQM_IRQ_MSK_REG; +#define DQM_IRQ_MSK_REG_OFFSET 0x00000020 + +extern const ru_reg_rec DQM_BUF_SIZE_REG; +#define DQM_BUF_SIZE_REG_OFFSET 0x00000024 + +extern const ru_reg_rec DQM_BUF_BASE_REG; +#define DQM_BUF_BASE_REG_OFFSET 0x00000028 + +extern const ru_reg_rec DQM_TOKENS_USED_REG; +#define DQM_TOKENS_USED_REG_OFFSET 0x00000030 + +extern const ru_reg_rec DQM_NUM_PUSHED_REG; +#define DQM_NUM_PUSHED_REG_OFFSET 0x00000034 + +extern const ru_reg_rec DQM_NUM_POPPED_REG; +#define DQM_NUM_POPPED_REG_OFFSET 0x00000038 + +extern const ru_reg_rec DQM_DIAG_SEL_REG; +#define DQM_DIAG_SEL_REG_OFFSET 0x0000003c + +extern const ru_reg_rec DQM_DIAG_DATA_REG; +#define DQM_DIAG_DATA_REG_OFFSET 0x00000040 + +extern const ru_reg_rec DQM_IRQ_TST_REG; +#define DQM_IRQ_TST_REG_OFFSET 0x00000044 + +extern const ru_reg_rec DQM_TOKEN_FIFO_STATUS_REG; +#define DQM_TOKEN_FIFO_STATUS_REG_OFFSET 0x00000048 + +extern const ru_reg_rec DQM_NUM_POPPED_NO_COMMIT_REG; +#define DQM_NUM_POPPED_NO_COMMIT_REG_OFFSET 0x0000008c + +extern const ru_reg_rec DQM_STATUS_REG; +#define DQM_STATUS_REG_OFFSET 0x000007cc + +#define DQM_STATUS_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_HEAD_PTR_REG; +#define DQM_HEAD_PTR_REG_OFFSET 0x00000fcc + +#define DQM_HEAD_PTR_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_TAIL_PTR_REG; +#define DQM_TAIL_PTR_REG_OFFSET 0x00000fd0 + +#define DQM_TAIL_PTR_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_DQMOL_SIZE_REG; +#define DQM_DQMOL_SIZE_REG_OFFSET 0x00001fcc + +#define DQM_DQMOL_SIZE_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_DQMOL_CFGA_REG; +#define DQM_DQMOL_CFGA_REG_OFFSET 0x00001fd0 + +#define DQM_DQMOL_CFGA_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_DQMOL_CFGB_REG; +#define DQM_DQMOL_CFGB_REG_OFFSET 0x00001fd4 + +#define DQM_DQMOL_CFGB_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_DQMOL_PUSHTOKEN_REG; +#define DQM_DQMOL_PUSHTOKEN_REG_OFFSET 0x00001fdc + +#define DQM_DQMOL_PUSHTOKEN_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_DQMOL_PUSHTOKENNEXT_REG; +#define DQM_DQMOL_PUSHTOKENNEXT_REG_OFFSET 0x00001fe0 + +#define DQM_DQMOL_PUSHTOKENNEXT_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_DQMOL_POPTOKEN_REG; +#define DQM_DQMOL_POPTOKEN_REG_OFFSET 0x00001fe4 + +#define DQM_DQMOL_POPTOKEN_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_DQMOL_POPTOKENNEXT_REG; +#define DQM_DQMOL_POPTOKENNEXT_REG_OFFSET 0x00001fe8 + +#define DQM_DQMOL_POPTOKENNEXT_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_WORD0_REG; +#define DQM_WORD0_REG_OFFSET 0x00004fcc + +#define DQM_WORD0_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_WORD1_REG; +#define DQM_WORD1_REG_OFFSET 0x00004fd0 + +#define DQM_WORD1_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_WORD2_REG; +#define DQM_WORD2_REG_OFFSET 0x00004fd4 + +#define DQM_WORD2_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec DQM_QueueSharedMem_qsmdata_REG; +#define DQM_QueueSharedMem_qsmdata_REG_OFFSET 0x0001ffcc + +#define DQM_QueueSharedMem_qsmdata_REG_RAM_CNT 0x00003c00 + +extern const ru_reg_rec FPM_FPM_CTL_REG; +#define FPM_FPM_CTL_REG_OFFSET 0x00000000 + +extern const ru_reg_rec FPM_FPM_CFG1_REG; +#define FPM_FPM_CFG1_REG_OFFSET 0x00000004 + +extern const ru_reg_rec FPM_FPM_WEIGHT_REG; +#define FPM_FPM_WEIGHT_REG_OFFSET 0x00000008 + +extern const ru_reg_rec FPM_FPM_BB_CFG_REG; +#define FPM_FPM_BB_CFG_REG_OFFSET 0x0000000c + +extern const ru_reg_rec FPM_POOL1_INTR_MSK_REG; +#define FPM_POOL1_INTR_MSK_REG_OFFSET 0x00000010 + +extern const ru_reg_rec FPM_POOL1_INTR_STS_REG; +#define FPM_POOL1_INTR_STS_REG_OFFSET 0x00000014 + +extern const ru_reg_rec FPM_POOL1_STALL_MSK_REG; +#define FPM_POOL1_STALL_MSK_REG_OFFSET 0x00000018 + +extern const ru_reg_rec FPM_POOL2_INTR_MSK_REG; +#define FPM_POOL2_INTR_MSK_REG_OFFSET 0x0000001c + +extern const ru_reg_rec FPM_POOL2_INTR_STS_REG; +#define FPM_POOL2_INTR_STS_REG_OFFSET 0x00000020 + +extern const ru_reg_rec FPM_POOL2_STALL_MSK_REG; +#define FPM_POOL2_STALL_MSK_REG_OFFSET 0x00000024 + +extern const ru_reg_rec FPM_POOL1_CFG1_REG; +#define FPM_POOL1_CFG1_REG_OFFSET 0x00000040 + +extern const ru_reg_rec FPM_POOL1_CFG2_REG; +#define FPM_POOL1_CFG2_REG_OFFSET 0x00000044 + +extern const ru_reg_rec FPM_POOL1_CFG3_REG; +#define FPM_POOL1_CFG3_REG_OFFSET 0x00000048 + +extern const ru_reg_rec FPM_POOL1_STAT1_REG; +#define FPM_POOL1_STAT1_REG_OFFSET 0x00000050 + +extern const ru_reg_rec FPM_POOL1_STAT2_REG; +#define FPM_POOL1_STAT2_REG_OFFSET 0x00000054 + +extern const ru_reg_rec FPM_POOL1_STAT3_REG; +#define FPM_POOL1_STAT3_REG_OFFSET 0x00000058 + +extern const ru_reg_rec FPM_POOL1_STAT4_REG; +#define FPM_POOL1_STAT4_REG_OFFSET 0x0000005c + +extern const ru_reg_rec FPM_POOL1_STAT5_REG; +#define FPM_POOL1_STAT5_REG_OFFSET 0x00000060 + +extern const ru_reg_rec FPM_POOL1_STAT6_REG; +#define FPM_POOL1_STAT6_REG_OFFSET 0x00000064 + +extern const ru_reg_rec FPM_POOL1_STAT7_REG; +#define FPM_POOL1_STAT7_REG_OFFSET 0x00000068 + +extern const ru_reg_rec FPM_POOL1_STAT8_REG; +#define FPM_POOL1_STAT8_REG_OFFSET 0x0000006c + +extern const ru_reg_rec FPM_POOL2_STAT1_REG; +#define FPM_POOL2_STAT1_REG_OFFSET 0x00000070 + +extern const ru_reg_rec FPM_POOL2_STAT2_REG; +#define FPM_POOL2_STAT2_REG_OFFSET 0x00000074 + +extern const ru_reg_rec FPM_POOL2_STAT3_REG; +#define FPM_POOL2_STAT3_REG_OFFSET 0x00000078 + +extern const ru_reg_rec FPM_POOL2_STAT4_REG; +#define FPM_POOL2_STAT4_REG_OFFSET 0x0000007c + +extern const ru_reg_rec FPM_POOL2_STAT5_REG; +#define FPM_POOL2_STAT5_REG_OFFSET 0x00000080 + +extern const ru_reg_rec FPM_POOL2_STAT6_REG; +#define FPM_POOL2_STAT6_REG_OFFSET 0x00000084 + +extern const ru_reg_rec FPM_POOL2_STAT7_REG; +#define FPM_POOL2_STAT7_REG_OFFSET 0x00000088 + +extern const ru_reg_rec FPM_POOL2_STAT8_REG; +#define FPM_POOL2_STAT8_REG_OFFSET 0x0000008c + +extern const ru_reg_rec FPM_POOL1_XON_XOFF_CFG_REG; +#define FPM_POOL1_XON_XOFF_CFG_REG_OFFSET 0x000000c0 + +extern const ru_reg_rec FPM_FPM_NOT_EMPTY_CFG_REG; +#define FPM_FPM_NOT_EMPTY_CFG_REG_OFFSET 0x000000d0 + +extern const ru_reg_rec FPM_MEM_CTL_REG; +#define FPM_MEM_CTL_REG_OFFSET 0x00000100 + +extern const ru_reg_rec FPM_MEM_DATA1_REG; +#define FPM_MEM_DATA1_REG_OFFSET 0x00000104 + +extern const ru_reg_rec FPM_MEM_DATA2_REG; +#define FPM_MEM_DATA2_REG_OFFSET 0x00000108 + +extern const ru_reg_rec FPM_TOKEN_RECOVER_CTL_REG; +#define FPM_TOKEN_RECOVER_CTL_REG_OFFSET 0x00000130 + +extern const ru_reg_rec FPM_SHORT_AGING_TIMER_REG; +#define FPM_SHORT_AGING_TIMER_REG_OFFSET 0x00000134 + +extern const ru_reg_rec FPM_LONG_AGING_TIMER_REG; +#define FPM_LONG_AGING_TIMER_REG_OFFSET 0x00000138 + +extern const ru_reg_rec FPM_CACHE_RECYCLE_TIMER_REG; +#define FPM_CACHE_RECYCLE_TIMER_REG_OFFSET 0x0000013c + +extern const ru_reg_rec FPM_EXPIRED_TOKEN_COUNT_POOL1_REG; +#define FPM_EXPIRED_TOKEN_COUNT_POOL1_REG_OFFSET 0x00000140 + +extern const ru_reg_rec FPM_RECOVERED_TOKEN_COUNT_POOL1_REG; +#define FPM_RECOVERED_TOKEN_COUNT_POOL1_REG_OFFSET 0x00000144 + +extern const ru_reg_rec FPM_EXPIRED_TOKEN_COUNT_POOL2_REG; +#define FPM_EXPIRED_TOKEN_COUNT_POOL2_REG_OFFSET 0x00000148 + +extern const ru_reg_rec FPM_RECOVERED_TOKEN_COUNT_POOL2_REG; +#define FPM_RECOVERED_TOKEN_COUNT_POOL2_REG_OFFSET 0x0000014c + +extern const ru_reg_rec FPM_TOKEN_RECOVER_START_END_POOL1_REG; +#define FPM_TOKEN_RECOVER_START_END_POOL1_REG_OFFSET 0x00000150 + +extern const ru_reg_rec FPM_TOKEN_RECOVER_START_END_POOL2_REG; +#define FPM_TOKEN_RECOVER_START_END_POOL2_REG_OFFSET 0x00000154 + +extern const ru_reg_rec FPM_POOL1_ALLOC_DEALLOC_REG; +#define FPM_POOL1_ALLOC_DEALLOC_REG_OFFSET 0x00000400 + +extern const ru_reg_rec FPM_POOL2_ALLOC_DEALLOC_REG; +#define FPM_POOL2_ALLOC_DEALLOC_REG_OFFSET 0x00000408 + +extern const ru_reg_rec FPM_POOL3_ALLOC_DEALLOC_REG; +#define FPM_POOL3_ALLOC_DEALLOC_REG_OFFSET 0x00000410 + +extern const ru_reg_rec FPM_POOL4_ALLOC_DEALLOC_REG; +#define FPM_POOL4_ALLOC_DEALLOC_REG_OFFSET 0x00000418 + +extern const ru_reg_rec FPM_SPARE_REG; +#define FPM_SPARE_REG_OFFSET 0x00000420 + +extern const ru_reg_rec FPM_POOL_MULTI_REG; +#define FPM_POOL_MULTI_REG_OFFSET 0x00000424 + +extern const ru_reg_rec FPM_FPM_BB_FORCE_REG; +#define FPM_FPM_BB_FORCE_REG_OFFSET 0x00030000 + +extern const ru_reg_rec FPM_FPM_BB_FORCED_CTRL_REG; +#define FPM_FPM_BB_FORCED_CTRL_REG_OFFSET 0x00030004 + +extern const ru_reg_rec FPM_FPM_BB_FORCED_ADDR_REG; +#define FPM_FPM_BB_FORCED_ADDR_REG_OFFSET 0x00030008 + +extern const ru_reg_rec FPM_FPM_BB_FORCED_DATA_REG; +#define FPM_FPM_BB_FORCED_DATA_REG_OFFSET 0x0003000c + +extern const ru_reg_rec FPM_FPM_BB_DECODE_CFG_REG; +#define FPM_FPM_BB_DECODE_CFG_REG_OFFSET 0x00030010 + +extern const ru_reg_rec FPM_FPM_BB_DBG_CFG_REG; +#define FPM_FPM_BB_DBG_CFG_REG_OFFSET 0x00030014 + +extern const ru_reg_rec FPM_FPM_BB_DBG_RXFIFO_STS_REG; +#define FPM_FPM_BB_DBG_RXFIFO_STS_REG_OFFSET 0x00030018 + +extern const ru_reg_rec FPM_FPM_BB_DBG_TXFIFO_STS_REG; +#define FPM_FPM_BB_DBG_TXFIFO_STS_REG_OFFSET 0x0003001c + +extern const ru_reg_rec FPM_FPM_BB_DBG_RXFIFO_DATA1_REG; +#define FPM_FPM_BB_DBG_RXFIFO_DATA1_REG_OFFSET 0x00030020 + +extern const ru_reg_rec FPM_FPM_BB_DBG_RXFIFO_DATA2_REG; +#define FPM_FPM_BB_DBG_RXFIFO_DATA2_REG_OFFSET 0x00030024 + +extern const ru_reg_rec FPM_FPM_BB_DBG_TXFIFO_DATA1_REG; +#define FPM_FPM_BB_DBG_TXFIFO_DATA1_REG_OFFSET 0x00030028 + +extern const ru_reg_rec FPM_FPM_BB_DBG_TXFIFO_DATA2_REG; +#define FPM_FPM_BB_DBG_TXFIFO_DATA2_REG_OFFSET 0x0003002c + +extern const ru_reg_rec FPM_FPM_BB_DBG_TXFIFO_DATA3_REG; +#define FPM_FPM_BB_DBG_TXFIFO_DATA3_REG_OFFSET 0x00030030 + +extern const ru_reg_rec RNR_MEM_HIGH_REG; +#define RNR_MEM_HIGH_REG_OFFSET 0x00000000 + +#define RNR_MEM_HIGH_REG_RAM_CNT 0x000007ff + +extern const ru_reg_rec RNR_MEM_LOW_REG; +#define RNR_MEM_LOW_REG_OFFSET 0x00000004 + +#define RNR_MEM_LOW_REG_RAM_CNT 0x000007ff + +extern const ru_reg_rec RNR_INST_MEM_ENTRY_REG; +#define RNR_INST_MEM_ENTRY_REG_OFFSET 0x00000000 + +#define RNR_INST_MEM_ENTRY_REG_RAM_CNT 0x00001fff + +extern const ru_reg_rec RNR_CNTXT_MEM_ENTRY_REG; +#define RNR_CNTXT_MEM_ENTRY_REG_OFFSET 0x00000000 + +#define RNR_CNTXT_MEM_ENTRY_REG_RAM_CNT 0x000001ff + +extern const ru_reg_rec RNR_PRED_MEM_ENTRY_REG; +#define RNR_PRED_MEM_ENTRY_REG_OFFSET 0x00000000 + +#define RNR_PRED_MEM_ENTRY_REG_RAM_CNT 0x000001ff + +extern const ru_reg_rec RNR_REGS_CFG_GLOBAL_CTRL_REG; +#define RNR_REGS_CFG_GLOBAL_CTRL_REG_OFFSET 0x00000000 + +extern const ru_reg_rec RNR_REGS_CFG_CPU_WAKEUP_REG; +#define RNR_REGS_CFG_CPU_WAKEUP_REG_OFFSET 0x00000004 + +extern const ru_reg_rec RNR_REGS_CFG_INT_CTRL_REG; +#define RNR_REGS_CFG_INT_CTRL_REG_OFFSET 0x00000008 + +extern const ru_reg_rec RNR_REGS_CFG_INT_MASK_REG; +#define RNR_REGS_CFG_INT_MASK_REG_OFFSET 0x0000000c + +extern const ru_reg_rec RNR_REGS_CFG_GEN_CFG_REG; +#define RNR_REGS_CFG_GEN_CFG_REG_OFFSET 0x00000030 + +extern const ru_reg_rec RNR_REGS_CFG_CAM_CFG_REG; +#define RNR_REGS_CFG_CAM_CFG_REG_OFFSET 0x00000034 + +extern const ru_reg_rec RNR_REGS_CFG_DDR_CFG_REG; +#define RNR_REGS_CFG_DDR_CFG_REG_OFFSET 0x00000040 + +extern const ru_reg_rec RNR_REGS_CFG_PSRAM_CFG_REG; +#define RNR_REGS_CFG_PSRAM_CFG_REG_OFFSET 0x00000044 + +extern const ru_reg_rec RNR_REGS_CFG_RAMRD_RANGE_MASK_CFG_REG; +#define RNR_REGS_CFG_RAMRD_RANGE_MASK_CFG_REG_OFFSET 0x00000048 + +extern const ru_reg_rec RNR_REGS_CFG_SCH_CFG_REG; +#define RNR_REGS_CFG_SCH_CFG_REG_OFFSET 0x0000004c + +extern const ru_reg_rec RNR_REGS_CFG_BKPT_CFG_REG; +#define RNR_REGS_CFG_BKPT_CFG_REG_OFFSET 0x00000050 + +extern const ru_reg_rec RNR_REGS_CFG_BKPT_IMM_REG; +#define RNR_REGS_CFG_BKPT_IMM_REG_OFFSET 0x00000054 + +extern const ru_reg_rec RNR_REGS_CFG_BKPT_STS_REG; +#define RNR_REGS_CFG_BKPT_STS_REG_OFFSET 0x00000058 + +extern const ru_reg_rec RNR_REGS_CFG_PC_STS_REG; +#define RNR_REGS_CFG_PC_STS_REG_OFFSET 0x0000005c + +extern const ru_reg_rec RNR_REGS_CFG_EXT_ACC_CFG_REG; +#define RNR_REGS_CFG_EXT_ACC_CFG_REG_OFFSET 0x00000060 + +extern const ru_reg_rec RNR_REGS_CFG_FIT_FAIL_CFG_REG; +#define RNR_REGS_CFG_FIT_FAIL_CFG_REG_OFFSET 0x00000064 + +extern const ru_reg_rec RNR_REGS_CFG_STALL_CNT1_REG; +#define RNR_REGS_CFG_STALL_CNT1_REG_OFFSET 0x000000a0 + +extern const ru_reg_rec RNR_REGS_CFG_STALL_CNT2_REG; +#define RNR_REGS_CFG_STALL_CNT2_REG_OFFSET 0x000000a4 + +extern const ru_reg_rec RNR_REGS_CFG_STALL_CNT3_REG; +#define RNR_REGS_CFG_STALL_CNT3_REG_OFFSET 0x000000a8 + +extern const ru_reg_rec RNR_REGS_CFG_STALL_CNT4_REG; +#define RNR_REGS_CFG_STALL_CNT4_REG_OFFSET 0x000000ac + +extern const ru_reg_rec RNR_REGS_CFG_PROFILING_STS_REG; +#define RNR_REGS_CFG_PROFILING_STS_REG_OFFSET 0x000000b0 + +extern const ru_reg_rec RNR_REGS_CFG_PROFILING_CFG_0_REG; +#define RNR_REGS_CFG_PROFILING_CFG_0_REG_OFFSET 0x000000b4 + +extern const ru_reg_rec RNR_REGS_CFG_PROFILING_CFG_1_REG; +#define RNR_REGS_CFG_PROFILING_CFG_1_REG_OFFSET 0x000000b8 + +extern const ru_reg_rec RNR_REGS_CFG_PROFILING_COUNTER_REG; +#define RNR_REGS_CFG_PROFILING_COUNTER_REG_OFFSET 0x000000bc + +extern const ru_reg_rec RNR_REGS_CFG_PROFILING_CFG_2_REG; +#define RNR_REGS_CFG_PROFILING_CFG_2_REG_OFFSET 0x000000c0 + +extern const ru_reg_rec RNR_REGS_CFG_EXEC_CMDS_CNT_REG; +#define RNR_REGS_CFG_EXEC_CMDS_CNT_REG_OFFSET 0x000000c4 + +extern const ru_reg_rec RNR_REGS_CFG_IDLE_CNT1_REG; +#define RNR_REGS_CFG_IDLE_CNT1_REG_OFFSET 0x000000c8 + +extern const ru_reg_rec RNR_REGS_CFG_JMP_CNT_REG; +#define RNR_REGS_CFG_JMP_CNT_REG_OFFSET 0x000000cc + +extern const ru_reg_rec RNR_REGS_CFG_METAL_FIX_REG_REG; +#define RNR_REGS_CFG_METAL_FIX_REG_REG_OFFSET 0x000000f0 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_ENG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ENG_REG_OFFSET 0x00000000 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PARSER_MISC_CFG_REG_OFFSET 0x00000004 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_0_1_REG_OFFSET 0x00000008 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_2_3_REG_OFFSET 0x0000000c + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_4_5_REG_OFFSET 0x00000010 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_VID_6_7_REG_OFFSET 0x00000014 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_CFG_REG_OFFSET 0x00000018 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_CFG_REG_OFFSET 0x0000001c + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER0_MASK_CFG_REG_OFFSET 0x00000028 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTER1_MASK_CFG_REG_OFFSET 0x0000002c + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IP_FILTERS_CFG_REG_OFFSET 0x00000038 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_SNAP_ORG_CODE_REG_OFFSET 0x0000003c + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PPP_IP_PROT_CODE_REG_OFFSET 0x00000040 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_ETHTYPE_REG_OFFSET 0x00000044 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_0_1_REG_OFFSET 0x00000048 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_2_3_REG_OFFSET 0x0000004c + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_ETHTYPE_CONFIG_REG_OFFSET 0x00000050 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_IPV6_HDR_EXT_FLTR_MASK_CFG_REG_OFFSET 0x00000054 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_NEST_REG_OFFSET 0x00000058 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_0_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_0_REG_OFFSET 0x0000005c + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_1_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_1_REG_OFFSET 0x00000060 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_2_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_QTAG_HARD_NEST_2_REG_OFFSET 0x00000064 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_USER_IP_PROT_REG_OFFSET 0x00000068 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_L_REG_OFFSET 0x00000070 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_VAL_H_REG_OFFSET 0x00000074 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_L_REG_OFFSET 0x00000078 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_VAL_H_REG_OFFSET 0x0000007c + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_L_REG_OFFSET 0x00000080 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT2_VAL_H_REG_OFFSET 0x00000084 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_L_REG_OFFSET 0x00000088 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT3_VAL_H_REG_OFFSET 0x0000008c + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_L_REG_OFFSET 0x00000090 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT4_VAL_H_REG_OFFSET 0x00000094 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_L_REG_OFFSET 0x00000098 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT5_VAL_H_REG_OFFSET 0x0000009c + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_L_REG_OFFSET 0x000000a0 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT6_VAL_H_REG_OFFSET 0x000000a4 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_L_REG_OFFSET 0x000000a8 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT7_VAL_H_REG_OFFSET 0x000000ac + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_L_REG_OFFSET 0x000000b0 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT8_VAL_H_REG_OFFSET 0x000000b4 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_L_REG_OFFSET 0x000000c8 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT0_MASK_H_REG_OFFSET 0x000000cc + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_L_REG_OFFSET 0x000000d0 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_H_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT1_MASK_H_REG_OFFSET 0x000000d4 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_0_REG_OFFSET 0x000000d8 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_1_REG_OFFSET 0x000000dc + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DA_FILT_VALID_CFG_2_REG_OFFSET 0x000000e0 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_GRE_PROTOCOL_CFG_REG_OFFSET 0x000000e4 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_PROP_TAG_CFG_REG_OFFSET 0x000000e8 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_DOS_ATTACK_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_DOS_ATTACK_REG_OFFSET 0x000000ec + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_ICMP_MAX_SIZE_REG_OFFSET 0x000000f0 + +extern const ru_reg_rec RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_REG; +#define RNR_QUAD_PARSER_CORE_CONFIGURATION_KEY_CFG_REG_OFFSET 0x000000f8 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_REG; +#define RNR_QUAD_GENERAL_CONFIG_DMA_ARB_CFG_REG_OFFSET 0x00000100 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_PSRAM0_BASE_REG; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM0_BASE_REG_OFFSET 0x00000104 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_PSRAM1_BASE_REG; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM1_BASE_REG_OFFSET 0x00000108 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_PSRAM2_BASE_REG; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM2_BASE_REG_OFFSET 0x0000010c + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_PSRAM3_BASE_REG; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM3_BASE_REG_OFFSET 0x00000110 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_DDR0_BASE_REG; +#define RNR_QUAD_GENERAL_CONFIG_DDR0_BASE_REG_OFFSET 0x00000114 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_DDR1_BASE_REG; +#define RNR_QUAD_GENERAL_CONFIG_DDR1_BASE_REG_OFFSET 0x00000118 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_PSRAM0_MASK_REG; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM0_MASK_REG_OFFSET 0x0000011c + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_PSRAM1_MASK_REG; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM1_MASK_REG_OFFSET 0x00000120 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_PSRAM2_MASK_REG; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM2_MASK_REG_OFFSET 0x00000124 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_PSRAM3_MASK_REG; +#define RNR_QUAD_GENERAL_CONFIG_PSRAM3_MASK_REG_OFFSET 0x00000128 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_DDR0_MASK_REG; +#define RNR_QUAD_GENERAL_CONFIG_DDR0_MASK_REG_OFFSET 0x0000012c + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_DDR1_MASK_REG; +#define RNR_QUAD_GENERAL_CONFIG_DDR1_MASK_REG_OFFSET 0x00000130 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_REG; +#define RNR_QUAD_GENERAL_CONFIG_PROFILING_CONFIG_REG_OFFSET 0x00000134 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_REG; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_0_CFG_REG_OFFSET 0x00000140 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_REG; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_1_CFG_REG_OFFSET 0x00000144 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_REG; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_2_CFG_REG_OFFSET 0x00000148 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_REG; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_3_CFG_REG_OFFSET 0x0000014c + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_REG; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_4_CFG_REG_OFFSET 0x00000150 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_REG; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_5_CFG_REG_OFFSET 0x00000154 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_REG; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_6_CFG_REG_OFFSET 0x00000158 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_REG; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_7_CFG_REG_OFFSET 0x0000015c + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_REG; +#define RNR_QUAD_GENERAL_CONFIG_BKPT_GEN_CFG_REG_OFFSET 0x00000160 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_REG; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_CONFIG_REG_OFFSET 0x00000170 + +extern const ru_reg_rec RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_REG; +#define RNR_QUAD_GENERAL_CONFIG_POWERSAVE_STATUS_REG_OFFSET 0x00000174 + +extern const ru_reg_rec RNR_QUAD_DEBUG_FIFO_CONFIG_REG; +#define RNR_QUAD_DEBUG_FIFO_CONFIG_REG_OFFSET 0x00000200 + +extern const ru_reg_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_REG; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_STATUS_REG_OFFSET 0x00000204 + +extern const ru_reg_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_REG; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_STATUS_REG_OFFSET 0x00000208 + +extern const ru_reg_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_REG; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_STATUS_REG_OFFSET 0x0000020c + +extern const ru_reg_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_REG; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS_REG_OFFSET 0x00000210 + +extern const ru_reg_rec RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_REG; +#define RNR_QUAD_DEBUG_DDR_DATA_FIFO_STATUS2_REG_OFFSET 0x00000214 + +extern const ru_reg_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA1_REG; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA1_REG_OFFSET 0x00000220 + +extern const ru_reg_rec RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA2_REG; +#define RNR_QUAD_DEBUG_PSRAM_HDR_FIFO_DATA2_REG_OFFSET 0x00000224 + +extern const ru_reg_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA1_REG; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA1_REG_OFFSET 0x00000228 + +extern const ru_reg_rec RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA2_REG; +#define RNR_QUAD_DEBUG_PSRAM_DATA_FIFO_DATA2_REG_OFFSET 0x0000022c + +extern const ru_reg_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA1_REG; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA1_REG_OFFSET 0x00000230 + +extern const ru_reg_rec RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA2_REG; +#define RNR_QUAD_DEBUG_DDR_HDR_FIFO_DATA2_REG_OFFSET 0x00000234 + +extern const ru_reg_rec RNR_QUAD_EXT_FLOWCTRL_CONFIG_TOKEN_VAL_REG; +#define RNR_QUAD_EXT_FLOWCTRL_CONFIG_TOKEN_VAL_REG_OFFSET 0x00000400 + +#define RNR_QUAD_EXT_FLOWCTRL_CONFIG_TOKEN_VAL_REG_RAM_CNT 0x00000023 + +extern const ru_reg_rec RNR_QUAD_UBUS_DECODE_CFG_PSRAM_UBUS_DECODE_REG; +#define RNR_QUAD_UBUS_DECODE_CFG_PSRAM_UBUS_DECODE_REG_OFFSET 0x00000600 + +#define RNR_QUAD_UBUS_DECODE_CFG_PSRAM_UBUS_DECODE_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec RNR_QUAD_UBUS_DECODE_CFG_DDR_UBUS_DECODE_REG; +#define RNR_QUAD_UBUS_DECODE_CFG_DDR_UBUS_DECODE_REG_OFFSET 0x00000640 + +#define RNR_QUAD_UBUS_DECODE_CFG_DDR_UBUS_DECODE_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_REG; +#define DSPTCHR_REORDER_CFG_DSPTCHR_REORDR_CFG_REG_OFFSET 0x00000000 + +extern const ru_reg_rec DSPTCHR_REORDER_CFG_VQ_EN_REG; +#define DSPTCHR_REORDER_CFG_VQ_EN_REG_OFFSET 0x00000004 + +extern const ru_reg_rec DSPTCHR_REORDER_CFG_BB_CFG_REG; +#define DSPTCHR_REORDER_CFG_BB_CFG_REG_OFFSET 0x00000008 + +extern const ru_reg_rec DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_REG; +#define DSPTCHR_REORDER_CFG_CLK_GATE_CNTRL_REG_OFFSET 0x0000000c + +extern const ru_reg_rec DSPTCHR_CONGESTION_INGRS_CONGSTN_REG; +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_REG_OFFSET 0x00000080 + +#define DSPTCHR_CONGESTION_INGRS_CONGSTN_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_CONGESTION_EGRS_CONGSTN_REG; +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_REG_OFFSET 0x00000100 + +#define DSPTCHR_CONGESTION_EGRS_CONGSTN_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_REG; +#define DSPTCHR_CONGESTION_TOTAL_EGRS_CONGSTN_REG_OFFSET 0x00000180 + +extern const ru_reg_rec DSPTCHR_CONGESTION_GLBL_CONGSTN_REG; +#define DSPTCHR_CONGESTION_GLBL_CONGSTN_REG_OFFSET 0x00000184 + +extern const ru_reg_rec DSPTCHR_CONGESTION_CONGSTN_STATUS_REG; +#define DSPTCHR_CONGESTION_CONGSTN_STATUS_REG_OFFSET 0x00000188 + +extern const ru_reg_rec DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_LOW_REG; +#define DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_LOW_REG_OFFSET 0x0000018c + +extern const ru_reg_rec DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_HIGH_REG; +#define DSPTCHR_CONGESTION_PER_Q_INGRS_CONGSTN_HIGH_REG_OFFSET 0x00000190 + +extern const ru_reg_rec DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_LOW_REG; +#define DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_LOW_REG_OFFSET 0x00000194 + +extern const ru_reg_rec DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_HIGH_REG; +#define DSPTCHR_CONGESTION_PER_Q_EGRS_CONGSTN_HIGH_REG_OFFSET 0x00000198 + +extern const ru_reg_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_REG; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_REG_OFFSET 0x00000280 + +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_SIZE_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_REG; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_REG_OFFSET 0x00000300 + +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_LIMITS_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_REG; +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_REG_OFFSET 0x00000380 + +#define DSPTCHR_INGRS_QUEUES_Q_INGRS_COHRENCY_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QUEUE_MAPPING_CRDT_CFG_REG; +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_REG_OFFSET 0x00000400 + +#define DSPTCHR_QUEUE_MAPPING_CRDT_CFG_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_REG; +#define DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_REG_OFFSET 0x00000480 + +#define DSPTCHR_QUEUE_MAPPING_PD_DSPTCH_ADD_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec DSPTCHR_QUEUE_MAPPING_Q_DEST_REG; +#define DSPTCHR_QUEUE_MAPPING_Q_DEST_REG_OFFSET 0x000004c0 + +extern const ru_reg_rec DSPTCHR_POOL_SIZES_CMN_POOL_LMT_REG; +#define DSPTCHR_POOL_SIZES_CMN_POOL_LMT_REG_OFFSET 0x000004d0 + +extern const ru_reg_rec DSPTCHR_POOL_SIZES_CMN_POOL_SIZE_REG; +#define DSPTCHR_POOL_SIZES_CMN_POOL_SIZE_REG_OFFSET 0x000004d4 + +extern const ru_reg_rec DSPTCHR_POOL_SIZES_GRNTED_POOL_LMT_REG; +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_LMT_REG_OFFSET 0x000004d8 + +extern const ru_reg_rec DSPTCHR_POOL_SIZES_GRNTED_POOL_SIZE_REG; +#define DSPTCHR_POOL_SIZES_GRNTED_POOL_SIZE_REG_OFFSET 0x000004dc + +extern const ru_reg_rec DSPTCHR_POOL_SIZES_MULTI_CST_POOL_LMT_REG; +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_LMT_REG_OFFSET 0x000004e0 + +extern const ru_reg_rec DSPTCHR_POOL_SIZES_MULTI_CST_POOL_SIZE_REG; +#define DSPTCHR_POOL_SIZES_MULTI_CST_POOL_SIZE_REG_OFFSET 0x000004e4 + +extern const ru_reg_rec DSPTCHR_POOL_SIZES_RNR_POOL_LMT_REG; +#define DSPTCHR_POOL_SIZES_RNR_POOL_LMT_REG_OFFSET 0x000004e8 + +extern const ru_reg_rec DSPTCHR_POOL_SIZES_RNR_POOL_SIZE_REG; +#define DSPTCHR_POOL_SIZES_RNR_POOL_SIZE_REG_OFFSET 0x000004ec + +extern const ru_reg_rec DSPTCHR_POOL_SIZES_PRCSSING_POOL_SIZE_REG; +#define DSPTCHR_POOL_SIZES_PRCSSING_POOL_SIZE_REG_OFFSET 0x000004f0 + +extern const ru_reg_rec DSPTCHR_MASK_MSK_TSK_255_0_REG; +#define DSPTCHR_MASK_MSK_TSK_255_0_REG_OFFSET 0x00000500 + +#define DSPTCHR_MASK_MSK_TSK_255_0_REG_RAM_CNT 0x0000003f + +extern const ru_reg_rec DSPTCHR_MASK_MSK_Q_REG; +#define DSPTCHR_MASK_MSK_Q_REG_OFFSET 0x00000600 + +#define DSPTCHR_MASK_MSK_Q_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DSPTCHR_MASK_DLY_Q_REG; +#define DSPTCHR_MASK_DLY_Q_REG_OFFSET 0x00000620 + +extern const ru_reg_rec DSPTCHR_MASK_NON_DLY_Q_REG; +#define DSPTCHR_MASK_NON_DLY_Q_REG_OFFSET 0x00000624 + +extern const ru_reg_rec DSPTCHR_EGRS_QUEUES_EGRS_DLY_QM_CRDT_REG; +#define DSPTCHR_EGRS_QUEUES_EGRS_DLY_QM_CRDT_REG_OFFSET 0x00000630 + +extern const ru_reg_rec DSPTCHR_EGRS_QUEUES_EGRS_NON_DLY_QM_CRDT_REG; +#define DSPTCHR_EGRS_QUEUES_EGRS_NON_DLY_QM_CRDT_REG_OFFSET 0x00000634 + +extern const ru_reg_rec DSPTCHR_EGRS_QUEUES_TOTAL_Q_EGRS_SIZE_REG; +#define DSPTCHR_EGRS_QUEUES_TOTAL_Q_EGRS_SIZE_REG_OFFSET 0x00000638 + +extern const ru_reg_rec DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_REG; +#define DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_REG_OFFSET 0x00000680 + +#define DSPTCHR_EGRS_QUEUES_PER_Q_EGRS_SIZE_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_REG; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_REQ_REG_OFFSET 0x00000770 + +extern const ru_reg_rec DSPTCHR_WAKEUP_CONTROL_WKUP_THRSHLD_REG; +#define DSPTCHR_WAKEUP_CONTROL_WKUP_THRSHLD_REG_OFFSET 0x00000774 + +extern const ru_reg_rec DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_REG; +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_REG_OFFSET 0x00000780 + +#define DSPTCHR_DISPTCH_SCHEDULING_DWRR_INFO_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_REG; +#define DSPTCHR_DISPTCH_SCHEDULING_VLD_CRDT_REG_OFFSET 0x00000800 + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_LB_CFG_REG; +#define DSPTCHR_LOAD_BALANCING_LB_CFG_REG_OFFSET 0x00000850 + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_0_1_REG; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_0_1_REG_OFFSET 0x00000860 + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_2_3_REG; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_2_3_REG_OFFSET 0x00000864 + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_4_5_REG; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_4_5_REG_OFFSET 0x00000868 + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_6_7_REG; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_6_7_REG_OFFSET 0x0000086c + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_8_9_REG; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_8_9_REG_OFFSET 0x00000870 + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_10_11_REG; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_10_11_REG_OFFSET 0x00000874 + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_12_13_REG; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_12_13_REG_OFFSET 0x00000878 + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_FREE_TASK_14_15_REG; +#define DSPTCHR_LOAD_BALANCING_FREE_TASK_14_15_REG_OFFSET 0x0000087c + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_REG; +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_REG_OFFSET 0x00000900 + +#define DSPTCHR_LOAD_BALANCING_TSK_TO_RG_MAPPING_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_REG; +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_0_3_REG_OFFSET 0x00000980 + +extern const ru_reg_rec DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_REG; +#define DSPTCHR_LOAD_BALANCING_RG_AVLABL_TSK_4_7_REG_OFFSET 0x00000984 + +extern const ru_reg_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_REG; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISR_REG_OFFSET 0x00000990 + +extern const ru_reg_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISM_REG; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ISM_REG_OFFSET 0x00000994 + +extern const ru_reg_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_IER_REG; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_IER_REG_OFFSET 0x00000998 + +extern const ru_reg_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ITR_REG; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_0_ITR_REG_OFFSET 0x0000099c + +extern const ru_reg_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_REG; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISR_REG_OFFSET 0x000009a0 + +extern const ru_reg_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISM_REG; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ISM_REG_OFFSET 0x000009a4 + +extern const ru_reg_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_IER_REG; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_IER_REG_OFFSET 0x000009a8 + +extern const ru_reg_rec DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ITR_REG; +#define DSPTCHR_DSPTCHER_REORDR_TOP_INTR_CTRL_1_ITR_REG_OFFSET 0x000009ac + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_REG; +#define DSPTCHR_DEBUG_DBG_BYPSS_CNTRL_REG_OFFSET 0x000009b0 + +extern const ru_reg_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_REG; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_0_7_REG_OFFSET 0x000009b4 + +extern const ru_reg_rec DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_REG; +#define DSPTCHR_DEBUG_GLBL_TSK_CNT_8_15_REG_OFFSET 0x000009b8 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_BUS_CNTRL_REG; +#define DSPTCHR_DEBUG_DBG_BUS_CNTRL_REG_OFFSET 0x000009bc + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_0_REG; +#define DSPTCHR_DEBUG_DBG_VEC_0_REG_OFFSET 0x000009c0 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_1_REG; +#define DSPTCHR_DEBUG_DBG_VEC_1_REG_OFFSET 0x000009c4 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_2_REG; +#define DSPTCHR_DEBUG_DBG_VEC_2_REG_OFFSET 0x000009c8 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_3_REG; +#define DSPTCHR_DEBUG_DBG_VEC_3_REG_OFFSET 0x000009cc + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_4_REG; +#define DSPTCHR_DEBUG_DBG_VEC_4_REG_OFFSET 0x000009d0 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_5_REG; +#define DSPTCHR_DEBUG_DBG_VEC_5_REG_OFFSET 0x000009d4 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_6_REG; +#define DSPTCHR_DEBUG_DBG_VEC_6_REG_OFFSET 0x000009d8 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_7_REG; +#define DSPTCHR_DEBUG_DBG_VEC_7_REG_OFFSET 0x000009dc + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_8_REG; +#define DSPTCHR_DEBUG_DBG_VEC_8_REG_OFFSET 0x000009e0 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_9_REG; +#define DSPTCHR_DEBUG_DBG_VEC_9_REG_OFFSET 0x000009e4 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_10_REG; +#define DSPTCHR_DEBUG_DBG_VEC_10_REG_OFFSET 0x000009e8 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_11_REG; +#define DSPTCHR_DEBUG_DBG_VEC_11_REG_OFFSET 0x000009ec + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_12_REG; +#define DSPTCHR_DEBUG_DBG_VEC_12_REG_OFFSET 0x000009f0 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_13_REG; +#define DSPTCHR_DEBUG_DBG_VEC_13_REG_OFFSET 0x000009f4 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_14_REG; +#define DSPTCHR_DEBUG_DBG_VEC_14_REG_OFFSET 0x000009f8 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_15_REG; +#define DSPTCHR_DEBUG_DBG_VEC_15_REG_OFFSET 0x000009fc + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_16_REG; +#define DSPTCHR_DEBUG_DBG_VEC_16_REG_OFFSET 0x00000a00 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_17_REG; +#define DSPTCHR_DEBUG_DBG_VEC_17_REG_OFFSET 0x00000a04 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_18_REG; +#define DSPTCHR_DEBUG_DBG_VEC_18_REG_OFFSET 0x00000a08 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_19_REG; +#define DSPTCHR_DEBUG_DBG_VEC_19_REG_OFFSET 0x00000a0c + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_20_REG; +#define DSPTCHR_DEBUG_DBG_VEC_20_REG_OFFSET 0x00000a10 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_21_REG; +#define DSPTCHR_DEBUG_DBG_VEC_21_REG_OFFSET 0x00000a14 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_22_REG; +#define DSPTCHR_DEBUG_DBG_VEC_22_REG_OFFSET 0x00000a18 + +extern const ru_reg_rec DSPTCHR_DEBUG_DBG_VEC_23_REG; +#define DSPTCHR_DEBUG_DBG_VEC_23_REG_OFFSET 0x00000a1c + +extern const ru_reg_rec DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_REG; +#define DSPTCHR_DEBUG_STATISTICS_DBG_STTSTCS_CTRL_REG_OFFSET 0x00000a70 + +extern const ru_reg_rec DSPTCHR_DEBUG_STATISTICS_DBG_CNT_REG; +#define DSPTCHR_DEBUG_STATISTICS_DBG_CNT_REG_OFFSET 0x00000a80 + +#define DSPTCHR_DEBUG_STATISTICS_DBG_CNT_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QDES_HEAD_REG; +#define DSPTCHR_QDES_HEAD_REG_OFFSET 0x00002000 + +#define DSPTCHR_QDES_HEAD_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QDES_BFOUT_REG; +#define DSPTCHR_QDES_BFOUT_REG_OFFSET 0x00002004 + +#define DSPTCHR_QDES_BFOUT_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QDES_BUFIN_REG; +#define DSPTCHR_QDES_BUFIN_REG_OFFSET 0x00002008 + +#define DSPTCHR_QDES_BUFIN_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QDES_TAIL_REG; +#define DSPTCHR_QDES_TAIL_REG_OFFSET 0x0000200c + +#define DSPTCHR_QDES_TAIL_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QDES_FBDNULL_REG; +#define DSPTCHR_QDES_FBDNULL_REG_OFFSET 0x00002010 + +#define DSPTCHR_QDES_FBDNULL_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QDES_NULLBD_REG; +#define DSPTCHR_QDES_NULLBD_REG_OFFSET 0x00002014 + +#define DSPTCHR_QDES_NULLBD_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QDES_BUFAVAIL_REG; +#define DSPTCHR_QDES_BUFAVAIL_REG_OFFSET 0x00002018 + +#define DSPTCHR_QDES_BUFAVAIL_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QDES_REG_Q_HEAD_REG; +#define DSPTCHR_QDES_REG_Q_HEAD_REG_OFFSET 0x00002600 + +#define DSPTCHR_QDES_REG_Q_HEAD_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec DSPTCHR_QDES_REG_VIQ_HEAD_VLD_REG; +#define DSPTCHR_QDES_REG_VIQ_HEAD_VLD_REG_OFFSET 0x00002680 + +extern const ru_reg_rec DSPTCHR_QDES_REG_VIQ_CHRNCY_VLD_REG; +#define DSPTCHR_QDES_REG_VIQ_CHRNCY_VLD_REG_OFFSET 0x00002684 + +extern const ru_reg_rec DSPTCHR_QDES_REG_VEQ_HEAD_VLD_REG; +#define DSPTCHR_QDES_REG_VEQ_HEAD_VLD_REG_OFFSET 0x00002688 + +extern const ru_reg_rec DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_REG; +#define DSPTCHR_QDES_REG_QDES_BUF_AVL_CNTRL_REG_OFFSET 0x0000268c + +extern const ru_reg_rec DSPTCHR_FLLDES_HEAD_REG; +#define DSPTCHR_FLLDES_HEAD_REG_OFFSET 0x00002700 + +extern const ru_reg_rec DSPTCHR_FLLDES_BFOUT_REG; +#define DSPTCHR_FLLDES_BFOUT_REG_OFFSET 0x00002704 + +extern const ru_reg_rec DSPTCHR_FLLDES_BFIN_REG; +#define DSPTCHR_FLLDES_BFIN_REG_OFFSET 0x00002708 + +extern const ru_reg_rec DSPTCHR_FLLDES_TAIL_REG; +#define DSPTCHR_FLLDES_TAIL_REG_OFFSET 0x0000270c + +extern const ru_reg_rec DSPTCHR_FLLDES_FLLDROP_REG; +#define DSPTCHR_FLLDES_FLLDROP_REG_OFFSET 0x00002710 + +extern const ru_reg_rec DSPTCHR_FLLDES_LTINT_REG; +#define DSPTCHR_FLLDES_LTINT_REG_OFFSET 0x00002714 + +extern const ru_reg_rec DSPTCHR_FLLDES_BUFAVAIL_REG; +#define DSPTCHR_FLLDES_BUFAVAIL_REG_OFFSET 0x00002720 + +extern const ru_reg_rec DSPTCHR_FLLDES_FREEMIN_REG; +#define DSPTCHR_FLLDES_FREEMIN_REG_OFFSET 0x00002724 + +extern const ru_reg_rec DSPTCHR_BDRAM_NEXT_DATA_REG; +#define DSPTCHR_BDRAM_NEXT_DATA_REG_OFFSET 0x00003000 + +#define DSPTCHR_BDRAM_NEXT_DATA_REG_RAM_CNT 0x000003ff + +extern const ru_reg_rec DSPTCHR_BDRAM_PREV_DATA_REG; +#define DSPTCHR_BDRAM_PREV_DATA_REG_OFFSET 0x00004000 + +#define DSPTCHR_BDRAM_PREV_DATA_REG_RAM_CNT 0x000003ff + +extern const ru_reg_rec DSPTCHR_PDRAM_DATA_REG; +#define DSPTCHR_PDRAM_DATA_REG_OFFSET 0x00008000 + +#define DSPTCHR_PDRAM_DATA_REG_RAM_CNT 0x00000fff + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_MACTYPE_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_MACTYPE_REG_OFFSET 0x00000000 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_1_TX_REG_OFFSET 0x00000004 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_BBCFG_2_TX_REG_OFFSET 0x00000008 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRCFG_TX_REG_OFFSET 0x0000000c + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_REG_OFFSET 0x00000010 + +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_1_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_REG_OFFSET 0x00000018 + +#define BBH_TX_COMMON_CONFIGURATIONS_RNRCFG_2_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_DMACFG_TX_REG_OFFSET 0x00000020 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_SDMACFG_TX_REG_OFFSET 0x00000024 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_SBPMCFG_REG_OFFSET 0x00000028 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEL_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEL_REG_OFFSET 0x0000002c + +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEL_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_REG_OFFSET 0x00000034 + +#define BBH_TX_COMMON_CONFIGURATIONS_DDRTMBASEH_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_DFIFOCTRL_REG_OFFSET 0x0000003c + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_ARB_CFG_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_ARB_CFG_REG_OFFSET 0x00000040 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_BBROUTE_REG_OFFSET 0x00000044 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_PERQTASK_REG_OFFSET 0x000000a0 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_TXRSTCMD_REG_OFFSET 0x000000b0 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_DBGSEL_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_DBGSEL_REG_OFFSET 0x000000b4 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_CLK_GATE_CNTRL_REG_OFFSET 0x000000b8 + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_GPR_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_GPR_REG_OFFSET 0x000000bc + +extern const ru_reg_rec BBH_TX_COMMON_CONFIGURATIONS_DS_DMA_SUP_REG; +#define BBH_TX_COMMON_CONFIGURATIONS_DS_DMA_SUP_REG_OFFSET 0x000000c0 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_Q2RNR_REG; +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_REG_OFFSET 0x00000100 + +#define BBH_TX_WAN_CONFIGURATIONS_Q2RNR_REG_RAM_CNT 0x00000013 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_QPROF_REG; +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_REG_OFFSET 0x00000150 + +#define BBH_TX_WAN_CONFIGURATIONS_QPROF_REG_RAM_CNT 0x00000013 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_PDSIZE_REG; +#define BBH_TX_WAN_CONFIGURATIONS_PDSIZE_REG_OFFSET 0x000001a0 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_REG; +#define BBH_TX_WAN_CONFIGURATIONS_PDWKUPH_REG_OFFSET 0x000001a4 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_REG; +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_REG_OFFSET 0x000001a8 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_QMQ_REG; +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_REG_OFFSET 0x000001b0 + +#define BBH_TX_WAN_CONFIGURATIONS_QMQ_REG_RAM_CNT 0x00000013 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_STSSIZE_REG; +#define BBH_TX_WAN_CONFIGURATIONS_STSSIZE_REG_OFFSET 0x00000200 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_REG; +#define BBH_TX_WAN_CONFIGURATIONS_STSWKUPH_REG_OFFSET 0x00000204 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_EN_REG; +#define BBH_TX_WAN_CONFIGURATIONS_PD_BYTE_TH_EN_REG_OFFSET 0x00000300 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_PDEMPTY_REG; +#define BBH_TX_WAN_CONFIGURATIONS_PDEMPTY_REG_OFFSET 0x00000304 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_STSEMPTY_REG; +#define BBH_TX_WAN_CONFIGURATIONS_STSEMPTY_REG_OFFSET 0x00000308 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_REG; +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_REG_OFFSET 0x00000310 + +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_1_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_REG; +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_REG_OFFSET 0x00000320 + +#define BBH_TX_WAN_CONFIGURATIONS_STSRNRCFG_2_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_REG; +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_REG_OFFSET 0x00000330 + +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_1_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_REG; +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_REG_OFFSET 0x00000340 + +#define BBH_TX_WAN_CONFIGURATIONS_MSGRNRCFG_2_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_EPNCFG_REG; +#define BBH_TX_WAN_CONFIGURATIONS_EPNCFG_REG_OFFSET 0x00000350 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_REG; +#define BBH_TX_WAN_CONFIGURATIONS_FLOW2PORT_REG_OFFSET 0x00000354 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_TS_REG; +#define BBH_TX_WAN_CONFIGURATIONS_TS_REG_OFFSET 0x00000358 + +extern const ru_reg_rec BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_REG; +#define BBH_TX_WAN_CONFIGURATIONS_DSL_CFG_REG_OFFSET 0x00000360 + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_Q2RNR_REG; +#define BBH_TX_LAN_CONFIGURATIONS_Q2RNR_REG_OFFSET 0x00000400 + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_QPROF_REG; +#define BBH_TX_LAN_CONFIGURATIONS_QPROF_REG_OFFSET 0x00000450 + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_PDSIZE_REG; +#define BBH_TX_LAN_CONFIGURATIONS_PDSIZE_REG_OFFSET 0x000004a0 + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_REG; +#define BBH_TX_LAN_CONFIGURATIONS_PDWKUPH_REG_OFFSET 0x000004a4 + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_REG; +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_REG_OFFSET 0x000004a8 + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_QMQ_REG; +#define BBH_TX_LAN_CONFIGURATIONS_QMQ_REG_OFFSET 0x000004b0 + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_EN_REG; +#define BBH_TX_LAN_CONFIGURATIONS_PD_BYTE_TH_EN_REG_OFFSET 0x00000600 + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_PDEMPTY_REG; +#define BBH_TX_LAN_CONFIGURATIONS_PDEMPTY_REG_OFFSET 0x00000604 + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_REG; +#define BBH_TX_LAN_CONFIGURATIONS_TXTHRESH_REG_OFFSET 0x00000608 + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_EEE_REG; +#define BBH_TX_LAN_CONFIGURATIONS_EEE_REG_OFFSET 0x0000060c + +extern const ru_reg_rec BBH_TX_LAN_CONFIGURATIONS_TS_REG; +#define BBH_TX_LAN_CONFIGURATIONS_TS_REG_OFFSET 0x00000610 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_REG_OFFSET 0x00000700 + +#define BBH_TX_UNIFIED_CONFIGURATIONS_Q2RNR_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_REG_OFFSET 0x00000750 + +#define BBH_TX_UNIFIED_CONFIGURATIONS_QPROF_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDSIZE_REG_OFFSET 0x000007a0 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDWKUPH_REG_OFFSET 0x000007a4 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_REG_OFFSET 0x000007a8 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_REG_OFFSET 0x000007b0 + +#define BBH_TX_UNIFIED_CONFIGURATIONS_QMQ_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_EN_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PD_BYTE_TH_EN_REG_OFFSET 0x00000900 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_PDEMPTY_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_PDEMPTY_REG_OFFSET 0x00000904 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_GTXTHRESH_REG_OFFSET 0x00000908 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_EEE_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_EEE_REG_OFFSET 0x0000090c + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_TS_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TS_REG_OFFSET 0x00000910 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_REG_OFFSET 0x00000920 + +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEBASE_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_REG_OFFSET 0x00000940 + +#define BBH_TX_UNIFIED_CONFIGURATIONS_FESIZE_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_REG_OFFSET 0x00000960 + +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDBASE_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_REG_OFFSET 0x00000980 + +#define BBH_TX_UNIFIED_CONFIGURATIONS_FEPDSIZE_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_REG_OFFSET 0x000009a0 + +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXWRR_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_REG; +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_REG_OFFSET 0x000009e0 + +#define BBH_TX_UNIFIED_CONFIGURATIONS_TXTHRESH_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_SRAMPD_REG; +#define BBH_TX_DEBUG_COUNTERS_SRAMPD_REG_OFFSET 0x00000a00 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_DDRPD_REG; +#define BBH_TX_DEBUG_COUNTERS_DDRPD_REG_OFFSET 0x00000a04 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_PDDROP_REG; +#define BBH_TX_DEBUG_COUNTERS_PDDROP_REG_OFFSET 0x00000a08 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_STSCNT_REG; +#define BBH_TX_DEBUG_COUNTERS_STSCNT_REG_OFFSET 0x00000a10 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_STSDROP_REG; +#define BBH_TX_DEBUG_COUNTERS_STSDROP_REG_OFFSET 0x00000a14 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_MSGCNT_REG; +#define BBH_TX_DEBUG_COUNTERS_MSGCNT_REG_OFFSET 0x00000a18 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_MSGDROP_REG; +#define BBH_TX_DEBUG_COUNTERS_MSGDROP_REG_OFFSET 0x00000a1c + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_GETNEXTNULL_REG; +#define BBH_TX_DEBUG_COUNTERS_GETNEXTNULL_REG_OFFSET 0x00000a20 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_FLUSHPKTS_REG; +#define BBH_TX_DEBUG_COUNTERS_FLUSHPKTS_REG_OFFSET 0x00000a24 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_LENERR_REG; +#define BBH_TX_DEBUG_COUNTERS_LENERR_REG_OFFSET 0x00000a28 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_AGGRLENERR_REG; +#define BBH_TX_DEBUG_COUNTERS_AGGRLENERR_REG_OFFSET 0x00000a2c + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_SRAMPKT_REG; +#define BBH_TX_DEBUG_COUNTERS_SRAMPKT_REG_OFFSET 0x00000a30 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_DDRPKT_REG; +#define BBH_TX_DEBUG_COUNTERS_DDRPKT_REG_OFFSET 0x00000a34 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_SRAMBYTE_REG; +#define BBH_TX_DEBUG_COUNTERS_SRAMBYTE_REG_OFFSET 0x00000a38 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_DDRBYTE_REG; +#define BBH_TX_DEBUG_COUNTERS_DDRBYTE_REG_OFFSET 0x00000a3c + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_SWRDEN_REG; +#define BBH_TX_DEBUG_COUNTERS_SWRDEN_REG_OFFSET 0x00000a40 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_SWRDADDR_REG; +#define BBH_TX_DEBUG_COUNTERS_SWRDADDR_REG_OFFSET 0x00000a44 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_SWRDDATA_REG; +#define BBH_TX_DEBUG_COUNTERS_SWRDDATA_REG_OFFSET 0x00000a48 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_UNIFIEDPKT_REG; +#define BBH_TX_DEBUG_COUNTERS_UNIFIEDPKT_REG_OFFSET 0x00000a50 + +#define BBH_TX_DEBUG_COUNTERS_UNIFIEDPKT_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_UNIFIEDBYTE_REG; +#define BBH_TX_DEBUG_COUNTERS_UNIFIEDBYTE_REG_OFFSET 0x00000a70 + +#define BBH_TX_DEBUG_COUNTERS_UNIFIEDBYTE_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_DBGOUTREG_REG; +#define BBH_TX_DEBUG_COUNTERS_DBGOUTREG_REG_OFFSET 0x00000b00 + +#define BBH_TX_DEBUG_COUNTERS_DBGOUTREG_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec BBH_TX_DEBUG_COUNTERS_IN_SEGMENTATION_REG; +#define BBH_TX_DEBUG_COUNTERS_IN_SEGMENTATION_REG_OFFSET 0x00000b80 + +#define BBH_TX_DEBUG_COUNTERS_IN_SEGMENTATION_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_BBCFG_REG; +#define BBH_RX_GENERAL_CONFIGURATION_BBCFG_REG_OFFSET 0x00000000 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_REG; +#define BBH_RX_GENERAL_CONFIGURATION_DISPVIQ_REG_OFFSET 0x00000004 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_PATTERNDATALSB_REG; +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNDATALSB_REG_OFFSET 0x00000008 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_PATTERNDATAMSB_REG; +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNDATAMSB_REG_OFFSET 0x0000000c + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKLSB_REG; +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKLSB_REG_OFFSET 0x00000010 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKMSB_REG; +#define BBH_RX_GENERAL_CONFIGURATION_PATTERNMASKMSB_REG_OFFSET 0x00000014 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_REG; +#define BBH_RX_GENERAL_CONFIGURATION_EXCLQCFG_REG_OFFSET 0x00000018 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_REG; +#define BBH_RX_GENERAL_CONFIGURATION_SDMAADDR_REG_OFFSET 0x0000001c + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_SDMACFG_REG; +#define BBH_RX_GENERAL_CONFIGURATION_SDMACFG_REG_OFFSET 0x00000020 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_MINPKT0_REG; +#define BBH_RX_GENERAL_CONFIGURATION_MINPKT0_REG_OFFSET 0x00000024 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_REG; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT0_REG_OFFSET 0x00000028 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_REG; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKT1_REG_OFFSET 0x0000002c + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_SOPOFFSET_REG; +#define BBH_RX_GENERAL_CONFIGURATION_SOPOFFSET_REG_OFFSET 0x00000030 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_REG; +#define BBH_RX_GENERAL_CONFIGURATION_FLOWCTRL_REG_OFFSET 0x00000034 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_CRCOMITDIS_REG; +#define BBH_RX_GENERAL_CONFIGURATION_CRCOMITDIS_REG_OFFSET 0x00000038 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_ENABLE_REG; +#define BBH_RX_GENERAL_CONFIGURATION_ENABLE_REG_OFFSET 0x0000003c + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_G9991EN_REG; +#define BBH_RX_GENERAL_CONFIGURATION_G9991EN_REG_OFFSET 0x00000040 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_REG; +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWTH_REG_OFFSET 0x00000044 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_REG; +#define BBH_RX_GENERAL_CONFIGURATION_PERFLOWSETS_REG_OFFSET 0x00000048 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_REG; +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL0_REG_OFFSET 0x00000050 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_REG; +#define BBH_RX_GENERAL_CONFIGURATION_MINPKTSEL1_REG_OFFSET 0x00000054 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_REG; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL0_REG_OFFSET 0x00000058 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_REG; +#define BBH_RX_GENERAL_CONFIGURATION_MAXPKTSEL1_REG_OFFSET 0x0000005c + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_MACMODE_REG; +#define BBH_RX_GENERAL_CONFIGURATION_MACMODE_REG_OFFSET 0x00000060 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_REG; +#define BBH_RX_GENERAL_CONFIGURATION_SBPMCFG_REG_OFFSET 0x00000064 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_REG; +#define BBH_RX_GENERAL_CONFIGURATION_RXRSTRST_REG_OFFSET 0x00000068 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_REG; +#define BBH_RX_GENERAL_CONFIGURATION_RXDBGSEL_REG_OFFSET 0x0000006c + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_REG; +#define BBH_RX_GENERAL_CONFIGURATION_BBHRX_RADDR_DECODER_REG_OFFSET 0x00000070 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_NONETH_REG; +#define BBH_RX_GENERAL_CONFIGURATION_NONETH_REG_OFFSET 0x00000074 + +extern const ru_reg_rec BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_REG; +#define BBH_RX_GENERAL_CONFIGURATION_CLK_GATE_CNTRL_REG_OFFSET 0x00000078 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_INPKT_REG; +#define BBH_RX_PM_COUNTERS_INPKT_REG_OFFSET 0x00000100 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_THIRDFLOW_REG; +#define BBH_RX_PM_COUNTERS_THIRDFLOW_REG_OFFSET 0x00000104 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_SOPASOP_REG; +#define BBH_RX_PM_COUNTERS_SOPASOP_REG_OFFSET 0x00000108 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_TOOSHORT_REG; +#define BBH_RX_PM_COUNTERS_TOOSHORT_REG_OFFSET 0x0000010c + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_TOOLONG_REG; +#define BBH_RX_PM_COUNTERS_TOOLONG_REG_OFFSET 0x00000110 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_CRCERROR_REG; +#define BBH_RX_PM_COUNTERS_CRCERROR_REG_OFFSET 0x00000114 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_ENCRYPTERROR_REG; +#define BBH_RX_PM_COUNTERS_ENCRYPTERROR_REG_OFFSET 0x00000118 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_DISPCONG_REG; +#define BBH_RX_PM_COUNTERS_DISPCONG_REG_OFFSET 0x0000011c + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_NOSBPMSBN_REG; +#define BBH_RX_PM_COUNTERS_NOSBPMSBN_REG_OFFSET 0x00000124 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_NOSDMACD_REG; +#define BBH_RX_PM_COUNTERS_NOSDMACD_REG_OFFSET 0x0000012c + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_INPLOAM_REG; +#define BBH_RX_PM_COUNTERS_INPLOAM_REG_OFFSET 0x00000130 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_CRCERRORPLOAM_REG; +#define BBH_RX_PM_COUNTERS_CRCERRORPLOAM_REG_OFFSET 0x00000134 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_DISPCONGPLOAM_REG; +#define BBH_RX_PM_COUNTERS_DISPCONGPLOAM_REG_OFFSET 0x00000138 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_NOSBPMSBNPLOAM_REG; +#define BBH_RX_PM_COUNTERS_NOSBPMSBNPLOAM_REG_OFFSET 0x0000013c + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_NOSDMACDPLOAM_REG; +#define BBH_RX_PM_COUNTERS_NOSDMACDPLOAM_REG_OFFSET 0x00000140 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_EPONTYPERROR_REG; +#define BBH_RX_PM_COUNTERS_EPONTYPERROR_REG_OFFSET 0x00000144 + +extern const ru_reg_rec BBH_RX_PM_COUNTERS_RUNTERROR_REG; +#define BBH_RX_PM_COUNTERS_RUNTERROR_REG_OFFSET 0x00000148 + +extern const ru_reg_rec BBH_RX_DEBUG_CNTXTX0LSB_REG; +#define BBH_RX_DEBUG_CNTXTX0LSB_REG_OFFSET 0x00000200 + +extern const ru_reg_rec BBH_RX_DEBUG_CNTXTX0MSB_REG; +#define BBH_RX_DEBUG_CNTXTX0MSB_REG_OFFSET 0x00000204 + +extern const ru_reg_rec BBH_RX_DEBUG_CNTXTX1LSB_REG; +#define BBH_RX_DEBUG_CNTXTX1LSB_REG_OFFSET 0x00000208 + +extern const ru_reg_rec BBH_RX_DEBUG_CNTXTX1MSB_REG; +#define BBH_RX_DEBUG_CNTXTX1MSB_REG_OFFSET 0x0000020c + +extern const ru_reg_rec BBH_RX_DEBUG_CNTXTX0INGRESS_REG; +#define BBH_RX_DEBUG_CNTXTX0INGRESS_REG_OFFSET 0x00000210 + +extern const ru_reg_rec BBH_RX_DEBUG_CNTXTX1INGRESS_REG; +#define BBH_RX_DEBUG_CNTXTX1INGRESS_REG_OFFSET 0x00000214 + +extern const ru_reg_rec BBH_RX_DEBUG_IBUW_REG; +#define BBH_RX_DEBUG_IBUW_REG_OFFSET 0x00000218 + +extern const ru_reg_rec BBH_RX_DEBUG_BBUW_REG; +#define BBH_RX_DEBUG_BBUW_REG_OFFSET 0x0000021c + +extern const ru_reg_rec BBH_RX_DEBUG_CFUW_REG; +#define BBH_RX_DEBUG_CFUW_REG_OFFSET 0x00000220 + +extern const ru_reg_rec BBH_RX_DEBUG_ACKCNT_REG; +#define BBH_RX_DEBUG_ACKCNT_REG_OFFSET 0x00000224 + +extern const ru_reg_rec BBH_RX_DEBUG_COHERENCYCNT_REG; +#define BBH_RX_DEBUG_COHERENCYCNT_REG_OFFSET 0x00000228 + +extern const ru_reg_rec BBH_RX_DEBUG_DBGVEC_REG; +#define BBH_RX_DEBUG_DBGVEC_REG_OFFSET 0x0000022c + +extern const ru_reg_rec BBH_RX_DEBUG_UFUW_REG; +#define BBH_RX_DEBUG_UFUW_REG_OFFSET 0x00000230 + +extern const ru_reg_rec BBH_RX_DEBUG_CREDITCNT_REG; +#define BBH_RX_DEBUG_CREDITCNT_REG_OFFSET 0x00000234 + +extern const ru_reg_rec BBH_RX_DEBUG_SDMACNT_REG; +#define BBH_RX_DEBUG_SDMACNT_REG_OFFSET 0x00000238 + +extern const ru_reg_rec BBH_RX_DEBUG_CMFUW_REG; +#define BBH_RX_DEBUG_CMFUW_REG_OFFSET 0x0000023c + +extern const ru_reg_rec BBH_RX_DEBUG_SBNFIFO_REG; +#define BBH_RX_DEBUG_SBNFIFO_REG_OFFSET 0x00000240 + +#define BBH_RX_DEBUG_SBNFIFO_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec BBH_RX_DEBUG_CMDFIFO_REG; +#define BBH_RX_DEBUG_CMDFIFO_REG_OFFSET 0x00000280 + +#define BBH_RX_DEBUG_CMDFIFO_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec BBH_RX_DEBUG_SBNRECYCLEFIFO_REG; +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_REG_OFFSET 0x00000290 + +#define BBH_RX_DEBUG_SBNRECYCLEFIFO_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec BBH_RX_DEBUG_COHERENCYCNT2_REG; +#define BBH_RX_DEBUG_COHERENCYCNT2_REG_OFFSET 0x000002a0 + +extern const ru_reg_rec BBH_RX_DEBUG_DROPSTATUS_REG; +#define BBH_RX_DEBUG_DROPSTATUS_REG_OFFSET 0x000002a4 + +extern const ru_reg_rec UBUS_MSTR_EN_REG; +#define UBUS_MSTR_EN_REG_OFFSET 0x00000000 + +extern const ru_reg_rec UBUS_MSTR_HYST_CTRL_REG; +#define UBUS_MSTR_HYST_CTRL_REG_OFFSET 0x00000008 + +extern const ru_reg_rec UBUS_MSTR_HP_REG; +#define UBUS_MSTR_HP_REG_OFFSET 0x0000000c + +extern const ru_reg_rec UBUS_SLV_VPB_BASE_REG; +#define UBUS_SLV_VPB_BASE_REG_OFFSET 0x00000004 + +extern const ru_reg_rec UBUS_SLV_VPB_MASK_REG; +#define UBUS_SLV_VPB_MASK_REG_OFFSET 0x00000008 + +extern const ru_reg_rec UBUS_SLV_APB_BASE_REG; +#define UBUS_SLV_APB_BASE_REG_OFFSET 0x0000000c + +extern const ru_reg_rec UBUS_SLV_APB_MASK_REG; +#define UBUS_SLV_APB_MASK_REG_OFFSET 0x00000010 + +extern const ru_reg_rec UBUS_SLV_DEVICE_0_BASE_REG; +#define UBUS_SLV_DEVICE_0_BASE_REG_OFFSET 0x00000014 + +extern const ru_reg_rec UBUS_SLV_DEVICE_0_MASK_REG; +#define UBUS_SLV_DEVICE_0_MASK_REG_OFFSET 0x00000018 + +extern const ru_reg_rec UBUS_SLV_DEVICE_1_BASE_REG; +#define UBUS_SLV_DEVICE_1_BASE_REG_OFFSET 0x0000001c + +extern const ru_reg_rec UBUS_SLV_DEVICE_1_MASK_REG; +#define UBUS_SLV_DEVICE_1_MASK_REG_OFFSET 0x00000020 + +extern const ru_reg_rec UBUS_SLV_DEVICE_2_BASE_REG; +#define UBUS_SLV_DEVICE_2_BASE_REG_OFFSET 0x00000024 + +extern const ru_reg_rec UBUS_SLV_DEVICE_2_MASK_REG; +#define UBUS_SLV_DEVICE_2_MASK_REG_OFFSET 0x00000028 + +extern const ru_reg_rec UBUS_SLV_RNR_INTR_CTRL_ISR_REG; +#define UBUS_SLV_RNR_INTR_CTRL_ISR_REG_OFFSET 0x00000080 + +extern const ru_reg_rec UBUS_SLV_RNR_INTR_CTRL_ISM_REG; +#define UBUS_SLV_RNR_INTR_CTRL_ISM_REG_OFFSET 0x00000084 + +extern const ru_reg_rec UBUS_SLV_RNR_INTR_CTRL_IER_REG; +#define UBUS_SLV_RNR_INTR_CTRL_IER_REG_OFFSET 0x00000088 + +extern const ru_reg_rec UBUS_SLV_RNR_INTR_CTRL_ITR_REG; +#define UBUS_SLV_RNR_INTR_CTRL_ITR_REG_OFFSET 0x0000008c + +extern const ru_reg_rec UBUS_SLV_PROFILING_CFG_REG; +#define UBUS_SLV_PROFILING_CFG_REG_OFFSET 0x00000100 + +extern const ru_reg_rec UBUS_SLV_PROFILING_STATUS_REG; +#define UBUS_SLV_PROFILING_STATUS_REG_OFFSET 0x00000104 + +extern const ru_reg_rec UBUS_SLV_PROFILING_COUNTER_REG; +#define UBUS_SLV_PROFILING_COUNTER_REG_OFFSET 0x00000108 + +extern const ru_reg_rec UBUS_SLV_PROFILING_START_VALUE_REG; +#define UBUS_SLV_PROFILING_START_VALUE_REG_OFFSET 0x0000010c + +extern const ru_reg_rec UBUS_SLV_PROFILING_STOP_VALUE_REG; +#define UBUS_SLV_PROFILING_STOP_VALUE_REG_OFFSET 0x00000110 + +extern const ru_reg_rec UBUS_SLV_PROFILING_CYCLE_NUM_REG; +#define UBUS_SLV_PROFILING_CYCLE_NUM_REG_OFFSET 0x00000114 + +extern const ru_reg_rec UBUS_SLV_LED_CNTRL_REG; +#define UBUS_SLV_LED_CNTRL_REG_OFFSET 0x00000200 + +#define UBUS_SLV_LED_CNTRL_REG_RAM_CNT 0x00000004 + +extern const ru_reg_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_REG; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_REG_OFFSET 0x00000220 + +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_SEL_REG_RAM_CNT 0x00000004 + +extern const ru_reg_rec UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_REG; +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_REG_OFFSET 0x00000240 + +#define UBUS_SLV_LED_LINK_AND_SPEED_ENCODING_REG_RAM_CNT 0x00000004 + +extern const ru_reg_rec UBUS_SLV_LED_BLINK_RATE_CNTRL_REG; +#define UBUS_SLV_LED_BLINK_RATE_CNTRL_REG_OFFSET 0x00000260 + +extern const ru_reg_rec UBUS_SLV_LED_PWM_CNTRL_REG; +#define UBUS_SLV_LED_PWM_CNTRL_REG_OFFSET 0x00000264 + +extern const ru_reg_rec UBUS_SLV_LED_INTENSITY_CNTRL_REG; +#define UBUS_SLV_LED_INTENSITY_CNTRL_REG_OFFSET 0x00000268 + +extern const ru_reg_rec UBUS_SLV_AGGREGATE_LED_CNTRL_REG; +#define UBUS_SLV_AGGREGATE_LED_CNTRL_REG_OFFSET 0x0000026c + +extern const ru_reg_rec UBUS_SLV_AGGREGATE_LED_BLINK_RATE_CNTRL_REG; +#define UBUS_SLV_AGGREGATE_LED_BLINK_RATE_CNTRL_REG_OFFSET 0x00000270 + +extern const ru_reg_rec UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_REG; +#define UBUS_SLV_AGGREGATE_LED_PWM_CNTRL_REG_OFFSET 0x00000274 + +extern const ru_reg_rec UBUS_SLV_AGGREGATE_LED_INTENSITY_CNTRL_REG; +#define UBUS_SLV_AGGREGATE_LED_INTENSITY_CNTRL_REG_OFFSET 0x00000278 + +extern const ru_reg_rec UBUS_SLV_SW_INIT_CNTRL_REG; +#define UBUS_SLV_SW_INIT_CNTRL_REG_OFFSET 0x0000027c + +extern const ru_reg_rec UBUS_SLV__CNTRL_REG; +#define UBUS_SLV__CNTRL_REG_OFFSET 0x00000300 + +extern const ru_reg_rec UBUS_SLV__IB_STATUS_REG; +#define UBUS_SLV__IB_STATUS_REG_OFFSET 0x00000304 + +extern const ru_reg_rec UBUS_SLV__RX_CLOCK_DELAY_CNTRL_REG; +#define UBUS_SLV__RX_CLOCK_DELAY_CNTRL_REG_OFFSET 0x00000308 + +extern const ru_reg_rec UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_REG; +#define UBUS_SLV__ATE_RX_CNTRL_EXP_DATA_REG_OFFSET 0x0000030c + +extern const ru_reg_rec UBUS_SLV__ATE_RX_EXP_DATA_1_REG; +#define UBUS_SLV__ATE_RX_EXP_DATA_1_REG_OFFSET 0x00000310 + +extern const ru_reg_rec UBUS_SLV__ATE_RX_STATUS_0_REG; +#define UBUS_SLV__ATE_RX_STATUS_0_REG_OFFSET 0x00000314 + +extern const ru_reg_rec UBUS_SLV__ATE_RX_STATUS_1_REG; +#define UBUS_SLV__ATE_RX_STATUS_1_REG_OFFSET 0x00000318 + +extern const ru_reg_rec UBUS_SLV__ATE_TX_CNTRL_REG; +#define UBUS_SLV__ATE_TX_CNTRL_REG_OFFSET 0x0000031c + +extern const ru_reg_rec UBUS_SLV__ATE_TX_DATA_0_REG; +#define UBUS_SLV__ATE_TX_DATA_0_REG_OFFSET 0x00000320 + +extern const ru_reg_rec UBUS_SLV__ATE_TX_DATA_1_REG; +#define UBUS_SLV__ATE_TX_DATA_1_REG_OFFSET 0x00000324 + +extern const ru_reg_rec UBUS_SLV__ATE_TX_DATA_2_REG; +#define UBUS_SLV__ATE_TX_DATA_2_REG_OFFSET 0x00000328 + +extern const ru_reg_rec UBUS_SLV__TX_DELAY_CNTRL_0_REG; +#define UBUS_SLV__TX_DELAY_CNTRL_0_REG_OFFSET 0x0000032c + +extern const ru_reg_rec UBUS_SLV__TX_DELAY_CNTRL_1_REG; +#define UBUS_SLV__TX_DELAY_CNTRL_1_REG_OFFSET 0x00000330 + +extern const ru_reg_rec UBUS_SLV__RX_DELAY_CNTRL_0_REG; +#define UBUS_SLV__RX_DELAY_CNTRL_0_REG_OFFSET 0x00000334 + +extern const ru_reg_rec UBUS_SLV__RX_DELAY_CNTRL_1_REG; +#define UBUS_SLV__RX_DELAY_CNTRL_1_REG_OFFSET 0x00000338 + +extern const ru_reg_rec UBUS_SLV__RX_DELAY_CNTRL_2_REG; +#define UBUS_SLV__RX_DELAY_CNTRL_2_REG_OFFSET 0x0000033c + +extern const ru_reg_rec UBUS_SLV__CLK_RST_CTRL_REG; +#define UBUS_SLV__CLK_RST_CTRL_REG_OFFSET 0x00000340 + +extern const ru_reg_rec SBPM_REGS_INIT_FREE_LIST_REG; +#define SBPM_REGS_INIT_FREE_LIST_REG_OFFSET 0x00000000 + +extern const ru_reg_rec SBPM_REGS_BN_ALLOC_REG; +#define SBPM_REGS_BN_ALLOC_REG_OFFSET 0x00000004 + +extern const ru_reg_rec SBPM_REGS_BN_ALLOC_RPLY_REG; +#define SBPM_REGS_BN_ALLOC_RPLY_REG_OFFSET 0x00000008 + +extern const ru_reg_rec SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_REG; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_LOW_REG_OFFSET 0x0000000c + +extern const ru_reg_rec SBPM_REGS_BN_FREE_WITH_CONTXT_HIGH_REG; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_HIGH_REG_OFFSET 0x00000010 + +extern const ru_reg_rec SBPM_REGS_MCST_INC_REG; +#define SBPM_REGS_MCST_INC_REG_OFFSET 0x00000014 + +extern const ru_reg_rec SBPM_REGS_MCST_INC_RPLY_REG; +#define SBPM_REGS_MCST_INC_RPLY_REG_OFFSET 0x00000018 + +extern const ru_reg_rec SBPM_REGS_BN_CONNECT_REG; +#define SBPM_REGS_BN_CONNECT_REG_OFFSET 0x0000001c + +extern const ru_reg_rec SBPM_REGS_BN_CONNECT_RPLY_REG; +#define SBPM_REGS_BN_CONNECT_RPLY_REG_OFFSET 0x00000020 + +extern const ru_reg_rec SBPM_REGS_GET_NEXT_REG; +#define SBPM_REGS_GET_NEXT_REG_OFFSET 0x00000024 + +extern const ru_reg_rec SBPM_REGS_GET_NEXT_RPLY_REG; +#define SBPM_REGS_GET_NEXT_RPLY_REG_OFFSET 0x00000028 + +extern const ru_reg_rec SBPM_REGS_SBPM_CLK_GATE_CNTRL_REG; +#define SBPM_REGS_SBPM_CLK_GATE_CNTRL_REG_OFFSET 0x0000002c + +extern const ru_reg_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_REG; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_REG_OFFSET 0x00000038 + +extern const ru_reg_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_REG; +#define SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_REG_OFFSET 0x0000003c + +extern const ru_reg_rec SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_REG; +#define SBPM_REGS_BN_FREE_WITH_CONTXT_RPLY_REG_OFFSET 0x00000040 + +extern const ru_reg_rec SBPM_REGS_SBPM_GL_TRSH_REG; +#define SBPM_REGS_SBPM_GL_TRSH_REG_OFFSET 0x0000004c + +extern const ru_reg_rec SBPM_REGS_SBPM_UG0_TRSH_REG; +#define SBPM_REGS_SBPM_UG0_TRSH_REG_OFFSET 0x00000050 + +extern const ru_reg_rec SBPM_REGS_SBPM_UG1_TRSH_REG; +#define SBPM_REGS_SBPM_UG1_TRSH_REG_OFFSET 0x00000054 + +extern const ru_reg_rec SBPM_REGS_SBPM_DBG_REG; +#define SBPM_REGS_SBPM_DBG_REG_OFFSET 0x00000074 + +extern const ru_reg_rec SBPM_REGS_SBPM_UG0_BAC_REG; +#define SBPM_REGS_SBPM_UG0_BAC_REG_OFFSET 0x00000078 + +extern const ru_reg_rec SBPM_REGS_SBPM_UG1_BAC_REG; +#define SBPM_REGS_SBPM_UG1_BAC_REG_OFFSET 0x0000007c + +extern const ru_reg_rec SBPM_REGS_SBPM_GL_BAC_REG; +#define SBPM_REGS_SBPM_GL_BAC_REG_OFFSET 0x00000098 + +extern const ru_reg_rec SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_REG; +#define SBPM_REGS_SBPM_UG0_EXCL_HIGH_TRSH_REG_OFFSET 0x0000009c + +extern const ru_reg_rec SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_REG; +#define SBPM_REGS_SBPM_UG1_EXCL_HIGH_TRSH_REG_OFFSET 0x00000100 + +extern const ru_reg_rec SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_REG; +#define SBPM_REGS_SBPM_UG0_EXCL_LOW_TRSH_REG_OFFSET 0x00000104 + +extern const ru_reg_rec SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_REG; +#define SBPM_REGS_SBPM_UG1_EXCL_LOW_TRSH_REG_OFFSET 0x00000108 + +extern const ru_reg_rec SBPM_REGS_SBPM_UG_STATUS_REG; +#define SBPM_REGS_SBPM_UG_STATUS_REG_OFFSET 0x0000011c + +extern const ru_reg_rec SBPM_REGS_ERROR_HANDLING_PARAMS_REG; +#define SBPM_REGS_ERROR_HANDLING_PARAMS_REG_OFFSET 0x00000138 + +extern const ru_reg_rec SBPM_REGS_SBPM_IIR_ADDR_REG; +#define SBPM_REGS_SBPM_IIR_ADDR_REG_OFFSET 0x00000144 + +extern const ru_reg_rec SBPM_REGS_SBPM_IIR_LOW_REG; +#define SBPM_REGS_SBPM_IIR_LOW_REG_OFFSET 0x00000148 + +extern const ru_reg_rec SBPM_REGS_SBPM_IIR_HIGH_REG; +#define SBPM_REGS_SBPM_IIR_HIGH_REG_OFFSET 0x0000014c + +extern const ru_reg_rec SBPM_REGS_SBPM_DBG_VEC0_REG; +#define SBPM_REGS_SBPM_DBG_VEC0_REG_OFFSET 0x00000150 + +extern const ru_reg_rec SBPM_REGS_SBPM_DBG_VEC1_REG; +#define SBPM_REGS_SBPM_DBG_VEC1_REG_OFFSET 0x00000154 + +extern const ru_reg_rec SBPM_REGS_SBPM_DBG_VEC2_REG; +#define SBPM_REGS_SBPM_DBG_VEC2_REG_OFFSET 0x00000174 + +extern const ru_reg_rec SBPM_REGS_SBPM_DBG_VEC3_REG; +#define SBPM_REGS_SBPM_DBG_VEC3_REG_OFFSET 0x00000178 + +extern const ru_reg_rec SBPM_REGS_SBPM_SP_BBH_LOW_REG; +#define SBPM_REGS_SBPM_SP_BBH_LOW_REG_OFFSET 0x0000017c + +extern const ru_reg_rec SBPM_REGS_SBPM_SP_BBH_HIGH_REG; +#define SBPM_REGS_SBPM_SP_BBH_HIGH_REG_OFFSET 0x00000180 + +extern const ru_reg_rec SBPM_REGS_SBPM_SP_RNR_LOW_REG; +#define SBPM_REGS_SBPM_SP_RNR_LOW_REG_OFFSET 0x00000184 + +extern const ru_reg_rec SBPM_REGS_SBPM_SP_RNR_HIGH_REG; +#define SBPM_REGS_SBPM_SP_RNR_HIGH_REG_OFFSET 0x00000188 + +extern const ru_reg_rec SBPM_REGS_SBPM_UG_MAP_LOW_REG; +#define SBPM_REGS_SBPM_UG_MAP_LOW_REG_OFFSET 0x0000018c + +extern const ru_reg_rec SBPM_REGS_SBPM_UG_MAP_HIGH_REG; +#define SBPM_REGS_SBPM_UG_MAP_HIGH_REG_OFFSET 0x00000190 + +extern const ru_reg_rec SBPM_REGS_SBPM_NACK_MASK_LOW_REG; +#define SBPM_REGS_SBPM_NACK_MASK_LOW_REG_OFFSET 0x00000194 + +extern const ru_reg_rec SBPM_REGS_SBPM_NACK_MASK_HIGH_REG; +#define SBPM_REGS_SBPM_NACK_MASK_HIGH_REG_OFFSET 0x00000198 + +extern const ru_reg_rec SBPM_REGS_SBPM_EXCL_MASK_LOW_REG; +#define SBPM_REGS_SBPM_EXCL_MASK_LOW_REG_OFFSET 0x0000019c + +extern const ru_reg_rec SBPM_REGS_SBPM_EXCL_MASK_HIGH_REG; +#define SBPM_REGS_SBPM_EXCL_MASK_HIGH_REG_OFFSET 0x000001a0 + +extern const ru_reg_rec SBPM_REGS_SBPM_RADDR_DECODER_REG; +#define SBPM_REGS_SBPM_RADDR_DECODER_REG_OFFSET 0x000001a4 + +extern const ru_reg_rec SBPM_REGS_SBPM_WR_DATA_REG; +#define SBPM_REGS_SBPM_WR_DATA_REG_OFFSET 0x000001a8 + +extern const ru_reg_rec SBPM_REGS_SBPM_UG_BAC_MAX_REG; +#define SBPM_REGS_SBPM_UG_BAC_MAX_REG_OFFSET 0x000001ac + +extern const ru_reg_rec SBPM_REGS_SBPM_SPARE_REG; +#define SBPM_REGS_SBPM_SPARE_REG_OFFSET 0x000001b0 + +extern const ru_reg_rec SBPM_INTR_CTRL_ISR_REG; +#define SBPM_INTR_CTRL_ISR_REG_OFFSET 0x00000200 + +extern const ru_reg_rec SBPM_INTR_CTRL_ISM_REG; +#define SBPM_INTR_CTRL_ISM_REG_OFFSET 0x00000204 + +extern const ru_reg_rec SBPM_INTR_CTRL_IER_REG; +#define SBPM_INTR_CTRL_IER_REG_OFFSET 0x00000208 + +extern const ru_reg_rec SBPM_INTR_CTRL_ITR_REG; +#define SBPM_INTR_CTRL_ITR_REG_OFFSET 0x0000020c + +extern const ru_reg_rec DMA_CONFIG_NUM_OF_WRITES_REG; +#define DMA_CONFIG_NUM_OF_WRITES_REG_OFFSET 0x00000000 + +#define DMA_CONFIG_NUM_OF_WRITES_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_CONFIG_NUM_OF_READS_REG; +#define DMA_CONFIG_NUM_OF_READS_REG_OFFSET 0x00000020 + +#define DMA_CONFIG_NUM_OF_READS_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_CONFIG_U_THRESH_REG; +#define DMA_CONFIG_U_THRESH_REG_OFFSET 0x00000040 + +#define DMA_CONFIG_U_THRESH_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_CONFIG_PRI_REG; +#define DMA_CONFIG_PRI_REG_OFFSET 0x00000060 + +#define DMA_CONFIG_PRI_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_CONFIG_WEIGHT_REG; +#define DMA_CONFIG_WEIGHT_REG_OFFSET 0x00000080 + +#define DMA_CONFIG_WEIGHT_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_CONFIG_PERIPH_SOURCE_REG; +#define DMA_CONFIG_PERIPH_SOURCE_REG_OFFSET 0x000000a0 + +#define DMA_CONFIG_PERIPH_SOURCE_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_CONFIG_TARGET_MEM_REG; +#define DMA_CONFIG_TARGET_MEM_REG_OFFSET 0x000000c0 + +#define DMA_CONFIG_TARGET_MEM_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_CONFIG_PTRRST_REG; +#define DMA_CONFIG_PTRRST_REG_OFFSET 0x000000e0 + +extern const ru_reg_rec DMA_CONFIG_BBROUTEOVRD_REG; +#define DMA_CONFIG_BBROUTEOVRD_REG_OFFSET 0x000000e4 + +extern const ru_reg_rec DMA_CONFIG_CLK_GATE_CNTRL_REG; +#define DMA_CONFIG_CLK_GATE_CNTRL_REG_OFFSET 0x000000e8 + +extern const ru_reg_rec DMA_CONFIG_UBUS_DPIDS_REG; +#define DMA_CONFIG_UBUS_DPIDS_REG_OFFSET 0x000000ec + +extern const ru_reg_rec DMA_CONFIG_MAX_OTF_REG; +#define DMA_CONFIG_MAX_OTF_REG_OFFSET 0x000000f0 + +extern const ru_reg_rec DMA_CONFIG_UBUS_CREDITS_REG; +#define DMA_CONFIG_UBUS_CREDITS_REG_OFFSET 0x000000f4 + +extern const ru_reg_rec DMA_CONFIG_PSRAM_BASE_REG; +#define DMA_CONFIG_PSRAM_BASE_REG_OFFSET 0x000000f8 + +extern const ru_reg_rec DMA_CONFIG_DDR_BASE_REG; +#define DMA_CONFIG_DDR_BASE_REG_OFFSET 0x000000fc + +extern const ru_reg_rec DMA_DEBUG_NEMPTY_REG; +#define DMA_DEBUG_NEMPTY_REG_OFFSET 0x00000100 + +extern const ru_reg_rec DMA_DEBUG_URGNT_REG; +#define DMA_DEBUG_URGNT_REG_OFFSET 0x00000104 + +extern const ru_reg_rec DMA_DEBUG_SELSRC_REG; +#define DMA_DEBUG_SELSRC_REG_OFFSET 0x00000108 + +extern const ru_reg_rec DMA_DEBUG_REQ_CNT_RX_REG; +#define DMA_DEBUG_REQ_CNT_RX_REG_OFFSET 0x00000120 + +#define DMA_DEBUG_REQ_CNT_RX_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_DEBUG_REQ_CNT_TX_REG; +#define DMA_DEBUG_REQ_CNT_TX_REG_OFFSET 0x00000140 + +#define DMA_DEBUG_REQ_CNT_TX_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_DEBUG_REQ_CNT_RX_ACC_REG; +#define DMA_DEBUG_REQ_CNT_RX_ACC_REG_OFFSET 0x00000160 + +#define DMA_DEBUG_REQ_CNT_RX_ACC_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_DEBUG_REQ_CNT_TX_ACC_REG; +#define DMA_DEBUG_REQ_CNT_TX_ACC_REG_OFFSET 0x00000180 + +#define DMA_DEBUG_REQ_CNT_TX_ACC_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec DMA_DEBUG_UBUSCRDT_REG; +#define DMA_DEBUG_UBUSCRDT_REG_OFFSET 0x000001a0 + +extern const ru_reg_rec DMA_DEBUG_UBUSBYTES_REG; +#define DMA_DEBUG_UBUSBYTES_REG_OFFSET 0x000001a4 + +extern const ru_reg_rec DMA_DEBUG_ON_THE_FLY_REG; +#define DMA_DEBUG_ON_THE_FLY_REG_OFFSET 0x000001a8 + +extern const ru_reg_rec DMA_DEBUG_DBG_SEL_REG; +#define DMA_DEBUG_DBG_SEL_REG_OFFSET 0x000001ac + +extern const ru_reg_rec DMA_DEBUG_DEBUGOUT_REG; +#define DMA_DEBUG_DEBUGOUT_REG_OFFSET 0x000001b0 + +extern const ru_reg_rec DMA_DEBUG_RDADD_REG; +#define DMA_DEBUG_RDADD_REG_OFFSET 0x00000200 + +extern const ru_reg_rec DMA_DEBUG_RDVALID_REG; +#define DMA_DEBUG_RDVALID_REG_OFFSET 0x00000204 + +extern const ru_reg_rec DMA_DEBUG_RDDATARDY_REG; +#define DMA_DEBUG_RDDATARDY_REG_OFFSET 0x00000208 + +extern const ru_reg_rec DMA_DEBUG_RDDATA_REG; +#define DMA_DEBUG_RDDATA_REG_OFFSET 0x00000210 + +#define DMA_DEBUG_RDDATA_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec PSRAM_MEMORY_DATA_REG; +#define PSRAM_MEMORY_DATA_REG_OFFSET 0x00000000 + +#define PSRAM_MEMORY_DATA_REG_RAM_CNT 0x0000bfff + +extern const ru_reg_rec PSRAM_CONFIGURATIONS_CTRL_REG; +#define PSRAM_CONFIGURATIONS_CTRL_REG_OFFSET 0x008a2800 + +extern const ru_reg_rec PSRAM_CONFIGURATIONS_SCRM_SEED_REG; +#define PSRAM_CONFIGURATIONS_SCRM_SEED_REG_OFFSET 0x008a2804 + +extern const ru_reg_rec PSRAM_CONFIGURATIONS_SCRM_ADDR_REG; +#define PSRAM_CONFIGURATIONS_SCRM_ADDR_REG_OFFSET 0x008a2808 + +extern const ru_reg_rec PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_REG; +#define PSRAM_CONFIGURATIONS_CLK_GATE_CNTRL_REG_OFFSET 0x008a280c + +extern const ru_reg_rec PSRAM_PM_COUNTERS_MUEN_REG; +#define PSRAM_PM_COUNTERS_MUEN_REG_OFFSET 0x008a2900 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_BWCL_REG; +#define PSRAM_PM_COUNTERS_BWCL_REG_OFFSET 0x008a2904 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_BWEN_REG; +#define PSRAM_PM_COUNTERS_BWEN_REG_OFFSET 0x008a2908 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_MAX_TIME_REG; +#define PSRAM_PM_COUNTERS_MAX_TIME_REG_OFFSET 0x008a2910 + +#define PSRAM_PM_COUNTERS_MAX_TIME_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_ACC_TIME_REG; +#define PSRAM_PM_COUNTERS_ACC_TIME_REG_OFFSET 0x008a2930 + +#define PSRAM_PM_COUNTERS_ACC_TIME_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_ACC_REQ_REG; +#define PSRAM_PM_COUNTERS_ACC_REQ_REG_OFFSET 0x008a2950 + +#define PSRAM_PM_COUNTERS_ACC_REQ_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_LAST_ACC_TIME_REG; +#define PSRAM_PM_COUNTERS_LAST_ACC_TIME_REG_OFFSET 0x008a2970 + +#define PSRAM_PM_COUNTERS_LAST_ACC_TIME_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_LAST_ACC_REQ_REG; +#define PSRAM_PM_COUNTERS_LAST_ACC_REQ_REG_OFFSET 0x008a2990 + +#define PSRAM_PM_COUNTERS_LAST_ACC_REQ_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_BW_WR_CNT_ACC_REG; +#define PSRAM_PM_COUNTERS_BW_WR_CNT_ACC_REG_OFFSET 0x008a29b0 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_BW_RD_CNT_ACC_REG; +#define PSRAM_PM_COUNTERS_BW_RD_CNT_ACC_REG_OFFSET 0x008a29b4 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_BW_WR_CNT_REG; +#define PSRAM_PM_COUNTERS_BW_WR_CNT_REG_OFFSET 0x008a29b8 + +#define PSRAM_PM_COUNTERS_BW_WR_CNT_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_BW_RD_CNT_REG; +#define PSRAM_PM_COUNTERS_BW_RD_CNT_REG_OFFSET 0x008a29d8 + +#define PSRAM_PM_COUNTERS_BW_RD_CNT_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_ACC_REG; +#define PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_ACC_REG_OFFSET 0x008a29f8 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_ACC_REG; +#define PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_ACC_REG_OFFSET 0x008a29fc + +extern const ru_reg_rec PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_REG; +#define PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_REG_OFFSET 0x008a2a00 + +#define PSRAM_PM_COUNTERS_BW_WR_CNT_LAST_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_REG; +#define PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_REG_OFFSET 0x008a2a20 + +#define PSRAM_PM_COUNTERS_BW_RD_CNT_LAST_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_ARB_REQ_REG; +#define PSRAM_PM_COUNTERS_ARB_REQ_REG_OFFSET 0x008a2a40 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_ARB_ARB_REG; +#define PSRAM_PM_COUNTERS_ARB_ARB_REG_OFFSET 0x008a2a44 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_ARB_COMB_REG; +#define PSRAM_PM_COUNTERS_ARB_COMB_REG_OFFSET 0x008a2a48 + +extern const ru_reg_rec PSRAM_PM_COUNTERS_ARB_COMB_4_REG; +#define PSRAM_PM_COUNTERS_ARB_COMB_4_REG_OFFSET 0x008a2a4c + +extern const ru_reg_rec PSRAM_PM_COUNTERS_ARB_COMB_BANKS_REG; +#define PSRAM_PM_COUNTERS_ARB_COMB_BANKS_REG_OFFSET 0x008a2a50 + +extern const ru_reg_rec PSRAM_DEBUG_DBGSEL_REG; +#define PSRAM_DEBUG_DBGSEL_REG_OFFSET 0x008a2b00 + +extern const ru_reg_rec PSRAM_DEBUG_DBGBUS_REG; +#define PSRAM_DEBUG_DBGBUS_REG_OFFSET 0x008a2b04 + +extern const ru_reg_rec PSRAM_DEBUG_REQ_VEC_REG; +#define PSRAM_DEBUG_REQ_VEC_REG_OFFSET 0x008a2b08 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_CFG1_REG; +#define PSRAM_DEBUG_DBG_CAP_CFG1_REG_OFFSET 0x008a2b80 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_CFG2_REG; +#define PSRAM_DEBUG_DBG_CAP_CFG2_REG_OFFSET 0x008a2b84 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_ST_REG; +#define PSRAM_DEBUG_DBG_CAP_ST_REG_OFFSET 0x008a2b88 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_W0_REG; +#define PSRAM_DEBUG_DBG_CAP_W0_REG_OFFSET 0x008a2b90 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_W1_REG; +#define PSRAM_DEBUG_DBG_CAP_W1_REG_OFFSET 0x008a2b94 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_W2_REG; +#define PSRAM_DEBUG_DBG_CAP_W2_REG_OFFSET 0x008a2b98 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_W3_REG; +#define PSRAM_DEBUG_DBG_CAP_W3_REG_OFFSET 0x008a2b9c + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_WMSK_REG; +#define PSRAM_DEBUG_DBG_CAP_WMSK_REG_OFFSET 0x008a2ba0 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_R0_REG; +#define PSRAM_DEBUG_DBG_CAP_R0_REG_OFFSET 0x008a2bb0 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_R1_REG; +#define PSRAM_DEBUG_DBG_CAP_R1_REG_OFFSET 0x008a2bb4 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_R2_REG; +#define PSRAM_DEBUG_DBG_CAP_R2_REG_OFFSET 0x008a2bb8 + +extern const ru_reg_rec PSRAM_DEBUG_DBG_CAP_R3_REG; +#define PSRAM_DEBUG_DBG_CAP_R3_REG_OFFSET 0x008a2bbc + +extern const ru_reg_rec UNIMAC_RDP_IPG_HD_BKP_CNTL_REG; +#define UNIMAC_RDP_IPG_HD_BKP_CNTL_REG_OFFSET 0x00000000 + +extern const ru_reg_rec UNIMAC_RDP_COMMAND_CONFIG_REG; +#define UNIMAC_RDP_COMMAND_CONFIG_REG_OFFSET 0x00000004 + +extern const ru_reg_rec UNIMAC_RDP_MAC_0_REG; +#define UNIMAC_RDP_MAC_0_REG_OFFSET 0x00000008 + +extern const ru_reg_rec UNIMAC_RDP_MAC_1_REG; +#define UNIMAC_RDP_MAC_1_REG_OFFSET 0x0000000c + +extern const ru_reg_rec UNIMAC_RDP_FRM_LENGTH_REG; +#define UNIMAC_RDP_FRM_LENGTH_REG_OFFSET 0x00000010 + +extern const ru_reg_rec UNIMAC_RDP_PAUSE_QUANT_REG; +#define UNIMAC_RDP_PAUSE_QUANT_REG_OFFSET 0x00000014 + +extern const ru_reg_rec UNIMAC_RDP_TX_TS_SEQ_ID_REG; +#define UNIMAC_RDP_TX_TS_SEQ_ID_REG_OFFSET 0x00000038 + +extern const ru_reg_rec UNIMAC_RDP_SFD_OFFSET_REG; +#define UNIMAC_RDP_SFD_OFFSET_REG_OFFSET 0x0000003c + +extern const ru_reg_rec UNIMAC_RDP_MAC_MODE_REG; +#define UNIMAC_RDP_MAC_MODE_REG_OFFSET 0x00000040 + +extern const ru_reg_rec UNIMAC_RDP_TAG_0_REG; +#define UNIMAC_RDP_TAG_0_REG_OFFSET 0x00000044 + +extern const ru_reg_rec UNIMAC_RDP_TAG_1_REG; +#define UNIMAC_RDP_TAG_1_REG_OFFSET 0x00000048 + +extern const ru_reg_rec UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_REG; +#define UNIMAC_RDP_RX_PAUSE_QUANTA_SCALE_REG_OFFSET 0x0000004c + +extern const ru_reg_rec UNIMAC_RDP_TX_PREAMBLE_REG; +#define UNIMAC_RDP_TX_PREAMBLE_REG_OFFSET 0x00000050 + +extern const ru_reg_rec UNIMAC_RDP_TX_IPG_LENGTH_REG; +#define UNIMAC_RDP_TX_IPG_LENGTH_REG_OFFSET 0x00000058 + +extern const ru_reg_rec UNIMAC_RDP_PFC_XOFF_TIMER_REG; +#define UNIMAC_RDP_PFC_XOFF_TIMER_REG_OFFSET 0x0000005c + +extern const ru_reg_rec UNIMAC_RDP_UMAC_EEE_CTRL_REG; +#define UNIMAC_RDP_UMAC_EEE_CTRL_REG_OFFSET 0x00000060 + +extern const ru_reg_rec UNIMAC_RDP_MII_EEE_DELAY_ENTRY_TIMER_REG; +#define UNIMAC_RDP_MII_EEE_DELAY_ENTRY_TIMER_REG_OFFSET 0x00000064 + +extern const ru_reg_rec UNIMAC_RDP_GMII_EEE_DELAY_ENTRY_TIMER_REG; +#define UNIMAC_RDP_GMII_EEE_DELAY_ENTRY_TIMER_REG_OFFSET 0x00000068 + +extern const ru_reg_rec UNIMAC_RDP_UMAC_EEE_REF_COUNT_REG; +#define UNIMAC_RDP_UMAC_EEE_REF_COUNT_REG_OFFSET 0x0000006c + +extern const ru_reg_rec UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_REG; +#define UNIMAC_RDP_UMAC_TIMESTAMP_ADJUST_REG_OFFSET 0x00000070 + +extern const ru_reg_rec UNIMAC_RDP_UMAC_RX_PKT_DROP_STATUS_REG; +#define UNIMAC_RDP_UMAC_RX_PKT_DROP_STATUS_REG_OFFSET 0x00000074 + +extern const ru_reg_rec UNIMAC_RDP_UMAC_SYMMETRIC_IDLE_THRESHOLD_REG; +#define UNIMAC_RDP_UMAC_SYMMETRIC_IDLE_THRESHOLD_REG_OFFSET 0x00000078 + +extern const ru_reg_rec UNIMAC_RDP_MII_EEE_WAKE_TIMER_REG; +#define UNIMAC_RDP_MII_EEE_WAKE_TIMER_REG_OFFSET 0x0000007c + +extern const ru_reg_rec UNIMAC_RDP_GMII_EEE_WAKE_TIMER_REG; +#define UNIMAC_RDP_GMII_EEE_WAKE_TIMER_REG_OFFSET 0x00000080 + +extern const ru_reg_rec UNIMAC_RDP_UMAC_REV_ID_REG; +#define UNIMAC_RDP_UMAC_REV_ID_REG_OFFSET 0x00000084 + +extern const ru_reg_rec UNIMAC_RDP_MAC_PFC_TYPE_REG; +#define UNIMAC_RDP_MAC_PFC_TYPE_REG_OFFSET 0x000002fc + +extern const ru_reg_rec UNIMAC_RDP_MAC_PFC_OPCODE_REG; +#define UNIMAC_RDP_MAC_PFC_OPCODE_REG_OFFSET 0x00000300 + +extern const ru_reg_rec UNIMAC_RDP_MAC_PFC_DA_0_REG; +#define UNIMAC_RDP_MAC_PFC_DA_0_REG_OFFSET 0x00000304 + +extern const ru_reg_rec UNIMAC_RDP_MAC_PFC_DA_1_REG; +#define UNIMAC_RDP_MAC_PFC_DA_1_REG_OFFSET 0x00000308 + +extern const ru_reg_rec UNIMAC_RDP_MACSEC_PROG_TX_CRC_REG; +#define UNIMAC_RDP_MACSEC_PROG_TX_CRC_REG_OFFSET 0x0000030c + +extern const ru_reg_rec UNIMAC_RDP_MACSEC_CNTRL_REG; +#define UNIMAC_RDP_MACSEC_CNTRL_REG_OFFSET 0x00000310 + +extern const ru_reg_rec UNIMAC_RDP_TS_STATUS_REG; +#define UNIMAC_RDP_TS_STATUS_REG_OFFSET 0x00000314 + +extern const ru_reg_rec UNIMAC_RDP_TX_TS_DATA_REG; +#define UNIMAC_RDP_TX_TS_DATA_REG_OFFSET 0x00000318 + +extern const ru_reg_rec UNIMAC_RDP_PAUSE_REFRESH_CTRL_REG; +#define UNIMAC_RDP_PAUSE_REFRESH_CTRL_REG_OFFSET 0x0000032c + +extern const ru_reg_rec UNIMAC_RDP_FLUSH_CONTROL_REG; +#define UNIMAC_RDP_FLUSH_CONTROL_REG_OFFSET 0x00000330 + +extern const ru_reg_rec UNIMAC_RDP_RXFIFO_STAT_REG; +#define UNIMAC_RDP_RXFIFO_STAT_REG_OFFSET 0x00000334 + +extern const ru_reg_rec UNIMAC_RDP_TXFIFO_STAT_REG; +#define UNIMAC_RDP_TXFIFO_STAT_REG_OFFSET 0x00000338 + +extern const ru_reg_rec UNIMAC_RDP_MAC_PFC_CTRL_REG; +#define UNIMAC_RDP_MAC_PFC_CTRL_REG_OFFSET 0x0000033c + +extern const ru_reg_rec UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_REG; +#define UNIMAC_RDP_MAC_PFC_REFRESH_CTRL_REG_OFFSET 0x00000340 + +extern const ru_reg_rec UNIMAC_RDP_GR64_REG; +#define UNIMAC_RDP_GR64_REG_OFFSET 0x000003fc + +extern const ru_reg_rec UNIMAC_RDP_GR64_UPPER_REG; +#define UNIMAC_RDP_GR64_UPPER_REG_OFFSET 0x00000400 + +extern const ru_reg_rec UNIMAC_RDP_GR127_REG; +#define UNIMAC_RDP_GR127_REG_OFFSET 0x00000404 + +extern const ru_reg_rec UNIMAC_RDP_GR127_UPPER_REG; +#define UNIMAC_RDP_GR127_UPPER_REG_OFFSET 0x00000408 + +extern const ru_reg_rec UNIMAC_RDP_GR255_REG; +#define UNIMAC_RDP_GR255_REG_OFFSET 0x0000040c + +extern const ru_reg_rec UNIMAC_RDP_GR255_UPPER_REG; +#define UNIMAC_RDP_GR255_UPPER_REG_OFFSET 0x00000410 + +extern const ru_reg_rec UNIMAC_RDP_GR511_REG; +#define UNIMAC_RDP_GR511_REG_OFFSET 0x00000414 + +extern const ru_reg_rec UNIMAC_RDP_GR511_UPPER_REG; +#define UNIMAC_RDP_GR511_UPPER_REG_OFFSET 0x00000418 + +extern const ru_reg_rec UNIMAC_RDP_GR1023_REG; +#define UNIMAC_RDP_GR1023_REG_OFFSET 0x0000041c + +extern const ru_reg_rec UNIMAC_RDP_GR1023_UPPER_REG; +#define UNIMAC_RDP_GR1023_UPPER_REG_OFFSET 0x00000420 + +extern const ru_reg_rec UNIMAC_RDP_GR1518_REG; +#define UNIMAC_RDP_GR1518_REG_OFFSET 0x00000424 + +extern const ru_reg_rec UNIMAC_RDP_GR1518_UPPER_REG; +#define UNIMAC_RDP_GR1518_UPPER_REG_OFFSET 0x00000428 + +extern const ru_reg_rec UNIMAC_RDP_GRMGV_REG; +#define UNIMAC_RDP_GRMGV_REG_OFFSET 0x0000042c + +extern const ru_reg_rec UNIMAC_RDP_GRMGV_UPPER_REG; +#define UNIMAC_RDP_GRMGV_UPPER_REG_OFFSET 0x00000430 + +extern const ru_reg_rec UNIMAC_RDP_GR2047_REG; +#define UNIMAC_RDP_GR2047_REG_OFFSET 0x00000434 + +extern const ru_reg_rec UNIMAC_RDP_GR2047_UPPER_REG; +#define UNIMAC_RDP_GR2047_UPPER_REG_OFFSET 0x00000438 + +extern const ru_reg_rec UNIMAC_RDP_GR4095_REG; +#define UNIMAC_RDP_GR4095_REG_OFFSET 0x0000043c + +extern const ru_reg_rec UNIMAC_RDP_GR4095_UPPER_REG; +#define UNIMAC_RDP_GR4095_UPPER_REG_OFFSET 0x00000440 + +extern const ru_reg_rec UNIMAC_RDP_GR9216_REG; +#define UNIMAC_RDP_GR9216_REG_OFFSET 0x00000444 + +extern const ru_reg_rec UNIMAC_RDP_GR9216_UPPER_REG; +#define UNIMAC_RDP_GR9216_UPPER_REG_OFFSET 0x00000448 + +extern const ru_reg_rec UNIMAC_RDP_GRPKT_REG; +#define UNIMAC_RDP_GRPKT_REG_OFFSET 0x0000044c + +extern const ru_reg_rec UNIMAC_RDP_GRPKT_UPPER_REG; +#define UNIMAC_RDP_GRPKT_UPPER_REG_OFFSET 0x00000450 + +extern const ru_reg_rec UNIMAC_RDP_GRBYT_REG; +#define UNIMAC_RDP_GRBYT_REG_OFFSET 0x00000454 + +extern const ru_reg_rec UNIMAC_RDP_GRBYT_UPPER_REG; +#define UNIMAC_RDP_GRBYT_UPPER_REG_OFFSET 0x00000458 + +extern const ru_reg_rec UNIMAC_RDP_GRMCA_REG; +#define UNIMAC_RDP_GRMCA_REG_OFFSET 0x0000045c + +extern const ru_reg_rec UNIMAC_RDP_GRMCA_UPPER_REG; +#define UNIMAC_RDP_GRMCA_UPPER_REG_OFFSET 0x00000460 + +extern const ru_reg_rec UNIMAC_RDP_GRBCA_REG; +#define UNIMAC_RDP_GRBCA_REG_OFFSET 0x00000464 + +extern const ru_reg_rec UNIMAC_RDP_GRBCA_UPPER_REG; +#define UNIMAC_RDP_GRBCA_UPPER_REG_OFFSET 0x00000468 + +extern const ru_reg_rec UNIMAC_RDP_GRFCS_REG; +#define UNIMAC_RDP_GRFCS_REG_OFFSET 0x0000046c + +extern const ru_reg_rec UNIMAC_RDP_GRFCS_UPPER_REG; +#define UNIMAC_RDP_GRFCS_UPPER_REG_OFFSET 0x00000470 + +extern const ru_reg_rec UNIMAC_RDP_GRXCF_REG; +#define UNIMAC_RDP_GRXCF_REG_OFFSET 0x00000474 + +extern const ru_reg_rec UNIMAC_RDP_GRXCF_UPPER_REG; +#define UNIMAC_RDP_GRXCF_UPPER_REG_OFFSET 0x00000478 + +extern const ru_reg_rec UNIMAC_RDP_GRXPF_REG; +#define UNIMAC_RDP_GRXPF_REG_OFFSET 0x0000047c + +extern const ru_reg_rec UNIMAC_RDP_GRXPF_UPPER_REG; +#define UNIMAC_RDP_GRXPF_UPPER_REG_OFFSET 0x00000480 + +extern const ru_reg_rec UNIMAC_RDP_GRXUO_REG; +#define UNIMAC_RDP_GRXUO_REG_OFFSET 0x00000484 + +extern const ru_reg_rec UNIMAC_RDP_GRXUO_UPPER_REG; +#define UNIMAC_RDP_GRXUO_UPPER_REG_OFFSET 0x00000488 + +extern const ru_reg_rec UNIMAC_RDP_GRALN_REG; +#define UNIMAC_RDP_GRALN_REG_OFFSET 0x0000048c + +extern const ru_reg_rec UNIMAC_RDP_GRALN_UPPER_REG; +#define UNIMAC_RDP_GRALN_UPPER_REG_OFFSET 0x00000490 + +extern const ru_reg_rec UNIMAC_RDP_GRFLR_REG; +#define UNIMAC_RDP_GRFLR_REG_OFFSET 0x00000494 + +extern const ru_reg_rec UNIMAC_RDP_GRFLR_UPPER_REG; +#define UNIMAC_RDP_GRFLR_UPPER_REG_OFFSET 0x00000498 + +extern const ru_reg_rec UNIMAC_RDP_GRCDE_REG; +#define UNIMAC_RDP_GRCDE_REG_OFFSET 0x0000049c + +extern const ru_reg_rec UNIMAC_RDP_GRCDE_UPPER_REG; +#define UNIMAC_RDP_GRCDE_UPPER_REG_OFFSET 0x000004a0 + +extern const ru_reg_rec UNIMAC_RDP_GRFCR_REG; +#define UNIMAC_RDP_GRFCR_REG_OFFSET 0x000004a4 + +extern const ru_reg_rec UNIMAC_RDP_GRFCR_UPPER_REG; +#define UNIMAC_RDP_GRFCR_UPPER_REG_OFFSET 0x000004a8 + +extern const ru_reg_rec UNIMAC_RDP_GROVR_REG; +#define UNIMAC_RDP_GROVR_REG_OFFSET 0x000004ac + +extern const ru_reg_rec UNIMAC_RDP_GROVR_UPPER_REG; +#define UNIMAC_RDP_GROVR_UPPER_REG_OFFSET 0x000004b0 + +extern const ru_reg_rec UNIMAC_RDP_GRJBR_REG; +#define UNIMAC_RDP_GRJBR_REG_OFFSET 0x000004b4 + +extern const ru_reg_rec UNIMAC_RDP_GRJBR_UPPER_REG; +#define UNIMAC_RDP_GRJBR_UPPER_REG_OFFSET 0x000004b8 + +extern const ru_reg_rec UNIMAC_RDP_GRMTUE_REG; +#define UNIMAC_RDP_GRMTUE_REG_OFFSET 0x000004bc + +extern const ru_reg_rec UNIMAC_RDP_GRMTUE_UPPER_REG; +#define UNIMAC_RDP_GRMTUE_UPPER_REG_OFFSET 0x000004c0 + +extern const ru_reg_rec UNIMAC_RDP_GRPOK_REG; +#define UNIMAC_RDP_GRPOK_REG_OFFSET 0x000004c4 + +extern const ru_reg_rec UNIMAC_RDP_GRPOK_UPPER_REG; +#define UNIMAC_RDP_GRPOK_UPPER_REG_OFFSET 0x000004c8 + +extern const ru_reg_rec UNIMAC_RDP_GRUC_REG; +#define UNIMAC_RDP_GRUC_REG_OFFSET 0x000004cc + +extern const ru_reg_rec UNIMAC_RDP_GRUC_UPPER_REG; +#define UNIMAC_RDP_GRUC_UPPER_REG_OFFSET 0x000004d0 + +extern const ru_reg_rec UNIMAC_RDP_GRPPP_REG; +#define UNIMAC_RDP_GRPPP_REG_OFFSET 0x000004d4 + +extern const ru_reg_rec UNIMAC_RDP_GRPPP_UPPER_REG; +#define UNIMAC_RDP_GRPPP_UPPER_REG_OFFSET 0x000004d8 + +extern const ru_reg_rec UNIMAC_RDP_GRCRC_REG; +#define UNIMAC_RDP_GRCRC_REG_OFFSET 0x000004dc + +extern const ru_reg_rec UNIMAC_RDP_GRCRC_UPPER_REG; +#define UNIMAC_RDP_GRCRC_UPPER_REG_OFFSET 0x000004e0 + +extern const ru_reg_rec UNIMAC_RDP_TR64_REG; +#define UNIMAC_RDP_TR64_REG_OFFSET 0x000004fc + +extern const ru_reg_rec UNIMAC_RDP_TR64_UPPER_REG; +#define UNIMAC_RDP_TR64_UPPER_REG_OFFSET 0x00000500 + +extern const ru_reg_rec UNIMAC_RDP_TR127_REG; +#define UNIMAC_RDP_TR127_REG_OFFSET 0x00000504 + +extern const ru_reg_rec UNIMAC_RDP_TR127_UPPER_REG; +#define UNIMAC_RDP_TR127_UPPER_REG_OFFSET 0x00000508 + +extern const ru_reg_rec UNIMAC_RDP_TR255_REG; +#define UNIMAC_RDP_TR255_REG_OFFSET 0x0000050c + +extern const ru_reg_rec UNIMAC_RDP_TR255_UPPER_REG; +#define UNIMAC_RDP_TR255_UPPER_REG_OFFSET 0x00000510 + +extern const ru_reg_rec UNIMAC_RDP_TR511_REG; +#define UNIMAC_RDP_TR511_REG_OFFSET 0x00000514 + +extern const ru_reg_rec UNIMAC_RDP_TR511_UPPER_REG; +#define UNIMAC_RDP_TR511_UPPER_REG_OFFSET 0x00000518 + +extern const ru_reg_rec UNIMAC_RDP_TR1023_REG; +#define UNIMAC_RDP_TR1023_REG_OFFSET 0x0000051c + +extern const ru_reg_rec UNIMAC_RDP_TR1023_UPPER_REG; +#define UNIMAC_RDP_TR1023_UPPER_REG_OFFSET 0x00000520 + +extern const ru_reg_rec UNIMAC_RDP_TR1518_REG; +#define UNIMAC_RDP_TR1518_REG_OFFSET 0x00000524 + +extern const ru_reg_rec UNIMAC_RDP_TR1518_UPPER_REG; +#define UNIMAC_RDP_TR1518_UPPER_REG_OFFSET 0x00000528 + +extern const ru_reg_rec UNIMAC_RDP_TRMGV_REG; +#define UNIMAC_RDP_TRMGV_REG_OFFSET 0x0000052c + +extern const ru_reg_rec UNIMAC_RDP_TRMGV_UPPER_REG; +#define UNIMAC_RDP_TRMGV_UPPER_REG_OFFSET 0x00000530 + +extern const ru_reg_rec UNIMAC_RDP_TR2047_REG; +#define UNIMAC_RDP_TR2047_REG_OFFSET 0x00000534 + +extern const ru_reg_rec UNIMAC_RDP_TR2047_UPPER_REG; +#define UNIMAC_RDP_TR2047_UPPER_REG_OFFSET 0x00000538 + +extern const ru_reg_rec UNIMAC_RDP_TR4095_REG; +#define UNIMAC_RDP_TR4095_REG_OFFSET 0x0000053c + +extern const ru_reg_rec UNIMAC_RDP_TR4095_UPPER_REG; +#define UNIMAC_RDP_TR4095_UPPER_REG_OFFSET 0x00000540 + +extern const ru_reg_rec UNIMAC_RDP_TR9216_REG; +#define UNIMAC_RDP_TR9216_REG_OFFSET 0x00000544 + +extern const ru_reg_rec UNIMAC_RDP_TR9216_UPPER_REG; +#define UNIMAC_RDP_TR9216_UPPER_REG_OFFSET 0x00000548 + +extern const ru_reg_rec UNIMAC_RDP_GTPKT_REG; +#define UNIMAC_RDP_GTPKT_REG_OFFSET 0x0000054c + +extern const ru_reg_rec UNIMAC_RDP_GTPKT_UPPER_REG; +#define UNIMAC_RDP_GTPKT_UPPER_REG_OFFSET 0x00000550 + +extern const ru_reg_rec UNIMAC_RDP_GTMCA_REG; +#define UNIMAC_RDP_GTMCA_REG_OFFSET 0x00000554 + +extern const ru_reg_rec UNIMAC_RDP_GTMCA_UPPER_REG; +#define UNIMAC_RDP_GTMCA_UPPER_REG_OFFSET 0x00000558 + +extern const ru_reg_rec UNIMAC_RDP_GTBCA_REG; +#define UNIMAC_RDP_GTBCA_REG_OFFSET 0x0000055c + +extern const ru_reg_rec UNIMAC_RDP_GTBCA_UPPER_REG; +#define UNIMAC_RDP_GTBCA_UPPER_REG_OFFSET 0x00000560 + +extern const ru_reg_rec UNIMAC_RDP_GTXPF_REG; +#define UNIMAC_RDP_GTXPF_REG_OFFSET 0x00000564 + +extern const ru_reg_rec UNIMAC_RDP_GTXPF_UPPER_REG; +#define UNIMAC_RDP_GTXPF_UPPER_REG_OFFSET 0x00000568 + +extern const ru_reg_rec UNIMAC_RDP_GTXCF_REG; +#define UNIMAC_RDP_GTXCF_REG_OFFSET 0x0000056c + +extern const ru_reg_rec UNIMAC_RDP_GTXCF_UPPER_REG; +#define UNIMAC_RDP_GTXCF_UPPER_REG_OFFSET 0x00000570 + +extern const ru_reg_rec UNIMAC_RDP_GTFCS_REG; +#define UNIMAC_RDP_GTFCS_REG_OFFSET 0x00000574 + +extern const ru_reg_rec UNIMAC_RDP_GTFCS_UPPER_REG; +#define UNIMAC_RDP_GTFCS_UPPER_REG_OFFSET 0x00000578 + +extern const ru_reg_rec UNIMAC_RDP_GTOVR_REG; +#define UNIMAC_RDP_GTOVR_REG_OFFSET 0x0000057c + +extern const ru_reg_rec UNIMAC_RDP_GTOVR_UPPER_REG; +#define UNIMAC_RDP_GTOVR_UPPER_REG_OFFSET 0x00000580 + +extern const ru_reg_rec UNIMAC_RDP_GTDRF_REG; +#define UNIMAC_RDP_GTDRF_REG_OFFSET 0x00000584 + +extern const ru_reg_rec UNIMAC_RDP_GTDRF_UPPER_REG; +#define UNIMAC_RDP_GTDRF_UPPER_REG_OFFSET 0x00000588 + +extern const ru_reg_rec UNIMAC_RDP_GTEDF_REG; +#define UNIMAC_RDP_GTEDF_REG_OFFSET 0x0000058c + +extern const ru_reg_rec UNIMAC_RDP_GTEDF_UPPER_REG; +#define UNIMAC_RDP_GTEDF_UPPER_REG_OFFSET 0x00000590 + +extern const ru_reg_rec UNIMAC_RDP_GTSCL_REG; +#define UNIMAC_RDP_GTSCL_REG_OFFSET 0x00000594 + +extern const ru_reg_rec UNIMAC_RDP_GTSCL_UPPER_REG; +#define UNIMAC_RDP_GTSCL_UPPER_REG_OFFSET 0x00000598 + +extern const ru_reg_rec UNIMAC_RDP_GTMCL_REG; +#define UNIMAC_RDP_GTMCL_REG_OFFSET 0x0000059c + +extern const ru_reg_rec UNIMAC_RDP_GTMCL_UPPER_REG; +#define UNIMAC_RDP_GTMCL_UPPER_REG_OFFSET 0x000005a0 + +extern const ru_reg_rec UNIMAC_RDP_GTLCL_REG; +#define UNIMAC_RDP_GTLCL_REG_OFFSET 0x000005a4 + +extern const ru_reg_rec UNIMAC_RDP_GTLCL_UPPER_REG; +#define UNIMAC_RDP_GTLCL_UPPER_REG_OFFSET 0x000005a8 + +extern const ru_reg_rec UNIMAC_RDP_GTXCL_REG; +#define UNIMAC_RDP_GTXCL_REG_OFFSET 0x000005ac + +extern const ru_reg_rec UNIMAC_RDP_GTXCL_UPPER_REG; +#define UNIMAC_RDP_GTXCL_UPPER_REG_OFFSET 0x000005b0 + +extern const ru_reg_rec UNIMAC_RDP_GTFRG_REG; +#define UNIMAC_RDP_GTFRG_REG_OFFSET 0x000005b4 + +extern const ru_reg_rec UNIMAC_RDP_GTFRG_UPPER_REG; +#define UNIMAC_RDP_GTFRG_UPPER_REG_OFFSET 0x000005b8 + +extern const ru_reg_rec UNIMAC_RDP_GTNCL_REG; +#define UNIMAC_RDP_GTNCL_REG_OFFSET 0x000005bc + +extern const ru_reg_rec UNIMAC_RDP_GTNCL_UPPER_REG; +#define UNIMAC_RDP_GTNCL_UPPER_REG_OFFSET 0x000005c0 + +extern const ru_reg_rec UNIMAC_RDP_GTJBR_REG; +#define UNIMAC_RDP_GTJBR_REG_OFFSET 0x000005c4 + +extern const ru_reg_rec UNIMAC_RDP_GTJBR_UPPER_REG; +#define UNIMAC_RDP_GTJBR_UPPER_REG_OFFSET 0x000005c8 + +extern const ru_reg_rec UNIMAC_RDP_GTBYT_REG; +#define UNIMAC_RDP_GTBYT_REG_OFFSET 0x000005cc + +extern const ru_reg_rec UNIMAC_RDP_GTBYT_UPPER_REG; +#define UNIMAC_RDP_GTBYT_UPPER_REG_OFFSET 0x000005d0 + +extern const ru_reg_rec UNIMAC_RDP_GTPOK_REG; +#define UNIMAC_RDP_GTPOK_REG_OFFSET 0x000005d4 + +extern const ru_reg_rec UNIMAC_RDP_GTPOK_UPPER_REG; +#define UNIMAC_RDP_GTPOK_UPPER_REG_OFFSET 0x000005d8 + +extern const ru_reg_rec UNIMAC_RDP_GTUC_REG; +#define UNIMAC_RDP_GTUC_REG_OFFSET 0x000005dc + +extern const ru_reg_rec UNIMAC_RDP_GTUC_UPPER_REG; +#define UNIMAC_RDP_GTUC_UPPER_REG_OFFSET 0x000005e0 + +extern const ru_reg_rec UNIMAC_RDP_RRPKT_REG; +#define UNIMAC_RDP_RRPKT_REG_OFFSET 0x000005fc + +extern const ru_reg_rec UNIMAC_RDP_RRPKT_UPPER_REG; +#define UNIMAC_RDP_RRPKT_UPPER_REG_OFFSET 0x00000600 + +extern const ru_reg_rec UNIMAC_RDP_RRUND_REG; +#define UNIMAC_RDP_RRUND_REG_OFFSET 0x00000604 + +extern const ru_reg_rec UNIMAC_RDP_RRUND_UPPER_REG; +#define UNIMAC_RDP_RRUND_UPPER_REG_OFFSET 0x00000608 + +extern const ru_reg_rec UNIMAC_RDP_RRFRG_REG; +#define UNIMAC_RDP_RRFRG_REG_OFFSET 0x0000060c + +extern const ru_reg_rec UNIMAC_RDP_RRFRG_UPPER_REG; +#define UNIMAC_RDP_RRFRG_UPPER_REG_OFFSET 0x00000610 + +extern const ru_reg_rec UNIMAC_RDP_RRBYT_REG; +#define UNIMAC_RDP_RRBYT_REG_OFFSET 0x00000614 + +extern const ru_reg_rec UNIMAC_RDP_RRBYT_UPPER_REG; +#define UNIMAC_RDP_RRBYT_UPPER_REG_OFFSET 0x00000618 + +extern const ru_reg_rec UNIMAC_RDP_MIB_CNTRL_REG; +#define UNIMAC_RDP_MIB_CNTRL_REG_OFFSET 0x0000067c + +extern const ru_reg_rec UNIMAC_RDP_MIB_READ_DATA_REG; +#define UNIMAC_RDP_MIB_READ_DATA_REG_OFFSET 0x00000680 + +extern const ru_reg_rec UNIMAC_RDP_MIB_WRITE_DATA_REG; +#define UNIMAC_RDP_MIB_WRITE_DATA_REG_OFFSET 0x00000684 + +extern const ru_reg_rec UNIMAC_RDP_PSW_MS_REG; +#define UNIMAC_RDP_PSW_MS_REG_OFFSET 0x00000700 + +extern const ru_reg_rec UNIMAC_RDP_PSW_LS_REG; +#define UNIMAC_RDP_PSW_LS_REG_OFFSET 0x00000704 + +extern const ru_reg_rec UNIMAC_RDP_CONTROL_REG; +#define UNIMAC_RDP_CONTROL_REG_OFFSET 0x0000073c + +extern const ru_reg_rec UNIMAC_RDP_EXTENDED_CONTROL_REG; +#define UNIMAC_RDP_EXTENDED_CONTROL_REG_OFFSET 0x00000740 + +extern const ru_reg_rec UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_REG; +#define UNIMAC_RDP_GMII_CLOCK_SWALLOWER_CONTROL_REG_OFFSET 0x00000744 + +extern const ru_reg_rec UNIMAC_RDP_STATUS_REG; +#define UNIMAC_RDP_STATUS_REG_OFFSET 0x00000748 + +extern const ru_reg_rec UNIMAC_RDP_RX_DISCARD_PACKET_COUNTER_REG; +#define UNIMAC_RDP_RX_DISCARD_PACKET_COUNTER_REG_OFFSET 0x0000074c + +extern const ru_reg_rec UNIMAC_RDP_TX_DISCARD_PACKET_COUNTER_REG; +#define UNIMAC_RDP_TX_DISCARD_PACKET_COUNTER_REG_OFFSET 0x00000750 + +extern const ru_reg_rec UNIMAC_RDP_REV_REG; +#define UNIMAC_RDP_REV_REG_OFFSET 0x0000077c + +extern const ru_reg_rec UNIMAC_RDP_UMAC_RXERR_MASK_REG; +#define UNIMAC_RDP_UMAC_RXERR_MASK_REG_OFFSET 0x00000780 + +extern const ru_reg_rec UNIMAC_RDP_MIB_MAX_PKT_SIZE_REG; +#define UNIMAC_RDP_MIB_MAX_PKT_SIZE_REG_OFFSET 0x00000784 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_CFG_REG_OFFSET 0x00000000 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG1_REG_OFFSET 0x00000004 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_EXT_CFG2_REG_OFFSET 0x00000008 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_STAT_REG_OFFSET 0x00000010 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_DEBUG_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_DEBUG_REG_OFFSET 0x00000014 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_RST_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_RST_REG_OFFSET 0x00000018 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_OVERRUN_COUNTER_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_OVERRUN_COUNTER_REG_OFFSET 0x00000020 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_MISC_UNIMAC_1588_REG_OFFSET 0x00000024 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISR_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISR_REG_OFFSET 0x00000040 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_IER_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_IER_REG_OFFSET 0x00000044 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ITR_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ITR_REG_OFFSET 0x00000048 + +extern const ru_reg_rec UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISM_REG; +#define UNIMAC_MISC_UNIMAC_TOP_UNIMAC_INTS_ISM_REG_OFFSET 0x0000004c + +extern const ru_reg_rec TCAM_CONTEXT_RAM_TCAM_TCAM_CONTEXT_RAM_CONTEXT_REG; +#define TCAM_CONTEXT_RAM_TCAM_TCAM_CONTEXT_RAM_CONTEXT_REG_OFFSET 0x00000000 + +#define TCAM_CONTEXT_RAM_TCAM_TCAM_CONTEXT_RAM_CONTEXT_REG_RAM_CNT 0x00000fff + +extern const ru_reg_rec TCAM_CFG_TCAM_TCAM_CFG_BANK_EN_REG; +#define TCAM_CFG_TCAM_TCAM_CFG_BANK_EN_REG_OFFSET 0x00004000 + +extern const ru_reg_rec TCAM_CFG_TCAM_TCAM_CFG_GLOBAL_MASK_REG; +#define TCAM_CFG_TCAM_TCAM_CFG_GLOBAL_MASK_REG_OFFSET 0x00004010 + +#define TCAM_CFG_TCAM_TCAM_CFG_GLOBAL_MASK_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_256_REG; +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_256_REG_OFFSET 0x00004100 + +extern const ru_reg_rec TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_256_REG; +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_256_REG_OFFSET 0x00004104 + +extern const ru_reg_rec TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_512_REG; +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_SRCH_512_REG_OFFSET 0x00004108 + +extern const ru_reg_rec TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_512_REG; +#define TCAM_COUNTERS_TCAM_TCAM_COUNTERS_HIT_512_REG_OFFSET 0x0000410c + +extern const ru_reg_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_REG; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_REG_OFFSET 0x00004200 + +extern const ru_reg_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_DONE_REG; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_OP_DONE_REG_OFFSET 0x00004204 + +extern const ru_reg_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_REG; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_ADDR_REG_OFFSET 0x00004208 + +extern const ru_reg_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_IN_REG; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_IN_REG_OFFSET 0x0000420c + +extern const ru_reg_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_OUT_REG; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_VLID_OUT_REG_OFFSET 0x00004214 + +extern const ru_reg_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_REG; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_RSLT_REG_OFFSET 0x00004218 + +extern const ru_reg_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_IN_REG; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_IN_REG_OFFSET 0x00004220 + +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_IN_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_OUT_REG; +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_OUT_REG_OFFSET 0x00004240 + +#define TCAM_INDIRECT_TCAM_TCAM_INDIRECT_KEY_OUT_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec TCAM_DEBUG_BUS_TCAM_DEBUG_BUS_SELECT_REG; +#define TCAM_DEBUG_BUS_TCAM_DEBUG_BUS_SELECT_REG_OFFSET 0x00004500 + +extern const ru_reg_rec HASH_GENERAL_CONFIGURATION_PWR_SAV_EN_REG; +#define HASH_GENERAL_CONFIGURATION_PWR_SAV_EN_REG_OFFSET 0x00000000 + +extern const ru_reg_rec HASH_GENERAL_CONFIGURATION_PAD_HIGH_REG; +#define HASH_GENERAL_CONFIGURATION_PAD_HIGH_REG_OFFSET 0x00000004 + +extern const ru_reg_rec HASH_GENERAL_CONFIGURATION_PAD_LOW_REG; +#define HASH_GENERAL_CONFIGURATION_PAD_LOW_REG_OFFSET 0x00000008 + +extern const ru_reg_rec HASH_GENERAL_CONFIGURATION_MULT_HIT_ERR_REG; +#define HASH_GENERAL_CONFIGURATION_MULT_HIT_ERR_REG_OFFSET 0x0000000c + +extern const ru_reg_rec HASH_GENERAL_CONFIGURATION_UNDO_FIX_REG; +#define HASH_GENERAL_CONFIGURATION_UNDO_FIX_REG_OFFSET 0x00000010 + +extern const ru_reg_rec HASH_PM_COUNTERS_HITS_REG; +#define HASH_PM_COUNTERS_HITS_REG_OFFSET 0x00000100 + +extern const ru_reg_rec HASH_PM_COUNTERS_SRCHS_REG; +#define HASH_PM_COUNTERS_SRCHS_REG_OFFSET 0x00000104 + +extern const ru_reg_rec HASH_PM_COUNTERS_MISS_REG; +#define HASH_PM_COUNTERS_MISS_REG_OFFSET 0x00000108 + +extern const ru_reg_rec HASH_PM_COUNTERS_HIT_1ST_ACS_REG; +#define HASH_PM_COUNTERS_HIT_1ST_ACS_REG_OFFSET 0x0000010c + +extern const ru_reg_rec HASH_PM_COUNTERS_HIT_2ND_ACS_REG; +#define HASH_PM_COUNTERS_HIT_2ND_ACS_REG_OFFSET 0x00000110 + +extern const ru_reg_rec HASH_PM_COUNTERS_HIT_3RD_ACS_REG; +#define HASH_PM_COUNTERS_HIT_3RD_ACS_REG_OFFSET 0x00000114 + +extern const ru_reg_rec HASH_PM_COUNTERS_HIT_4TH_ACS_REG; +#define HASH_PM_COUNTERS_HIT_4TH_ACS_REG_OFFSET 0x00000118 + +extern const ru_reg_rec HASH_PM_COUNTERS_FRZ_CNT_REG; +#define HASH_PM_COUNTERS_FRZ_CNT_REG_OFFSET 0x00000150 + +extern const ru_reg_rec HASH_LKUP_TBL_CFG_TBL_CFG_REG; +#define HASH_LKUP_TBL_CFG_TBL_CFG_REG_OFFSET 0x00000200 + +#define HASH_LKUP_TBL_CFG_TBL_CFG_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_REG; +#define HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_REG_OFFSET 0x00000204 + +#define HASH_LKUP_TBL_CFG_KEY_MASK_HIGH_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec HASH_LKUP_TBL_CFG_KEY_MASK_LOW_REG; +#define HASH_LKUP_TBL_CFG_KEY_MASK_LOW_REG_OFFSET 0x00000208 + +#define HASH_LKUP_TBL_CFG_KEY_MASK_LOW_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec HASH_LKUP_TBL_CFG_CNTXT_CFG_REG; +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_REG_OFFSET 0x0000020c + +#define HASH_LKUP_TBL_CFG_CNTXT_CFG_REG_RAM_CNT 0x00000006 + +extern const ru_reg_rec HASH_CAM_CONFIGURATION_CNTXT_CFG_REG; +#define HASH_CAM_CONFIGURATION_CNTXT_CFG_REG_OFFSET 0x00000400 + +extern const ru_reg_rec HASH_CAM_INDIRECT_OP_REG; +#define HASH_CAM_INDIRECT_OP_REG_OFFSET 0x00000800 + +extern const ru_reg_rec HASH_CAM_INDIRECT_OP_DONE_REG; +#define HASH_CAM_INDIRECT_OP_DONE_REG_OFFSET 0x00000804 + +extern const ru_reg_rec HASH_CAM_INDIRECT_ADDR_REG; +#define HASH_CAM_INDIRECT_ADDR_REG_OFFSET 0x00000808 + +extern const ru_reg_rec HASH_CAM_INDIRECT_VLID_IN_REG; +#define HASH_CAM_INDIRECT_VLID_IN_REG_OFFSET 0x0000080c + +extern const ru_reg_rec HASH_CAM_INDIRECT_VLID_OUT_REG; +#define HASH_CAM_INDIRECT_VLID_OUT_REG_OFFSET 0x00000814 + +extern const ru_reg_rec HASH_CAM_INDIRECT_RSLT_REG; +#define HASH_CAM_INDIRECT_RSLT_REG_OFFSET 0x00000818 + +extern const ru_reg_rec HASH_CAM_INDIRECT_KEY_IN_REG; +#define HASH_CAM_INDIRECT_KEY_IN_REG_OFFSET 0x00000820 + +#define HASH_CAM_INDIRECT_KEY_IN_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec HASH_CAM_INDIRECT_KEY_OUT_REG; +#define HASH_CAM_INDIRECT_KEY_OUT_REG_OFFSET 0x00000840 + +#define HASH_CAM_INDIRECT_KEY_OUT_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec HASH_CAM_BIST_BIST_STATUS_REG; +#define HASH_CAM_BIST_BIST_STATUS_REG_OFFSET 0x00000900 + +extern const ru_reg_rec HASH_CAM_BIST_BIST_DBG_COMPARE_EN_REG; +#define HASH_CAM_BIST_BIST_DBG_COMPARE_EN_REG_OFFSET 0x00000904 + +extern const ru_reg_rec HASH_CAM_BIST_BIST_DBG_DATA_REG; +#define HASH_CAM_BIST_BIST_DBG_DATA_REG_OFFSET 0x00000908 + +extern const ru_reg_rec HASH_CAM_BIST_BIST_DBG_DATA_SLICE_OR_STATUS_SEL_REG; +#define HASH_CAM_BIST_BIST_DBG_DATA_SLICE_OR_STATUS_SEL_REG_OFFSET 0x0000090c + +extern const ru_reg_rec HASH_CAM_BIST_BIST_DBG_DATA_VALID_REG; +#define HASH_CAM_BIST_BIST_DBG_DATA_VALID_REG_OFFSET 0x00000910 + +extern const ru_reg_rec HASH_CAM_BIST_BIST_EN_REG; +#define HASH_CAM_BIST_BIST_EN_REG_OFFSET 0x00000914 + +extern const ru_reg_rec HASH_CAM_BIST_BIST_MODE_REG; +#define HASH_CAM_BIST_BIST_MODE_REG_OFFSET 0x00000918 + +extern const ru_reg_rec HASH_CAM_BIST_BIST_RST_L_REG; +#define HASH_CAM_BIST_BIST_RST_L_REG_OFFSET 0x0000091c + +extern const ru_reg_rec HASH_CAM_BIST_BIST_SKIP_ERROR_CNT_REG; +#define HASH_CAM_BIST_BIST_SKIP_ERROR_CNT_REG_OFFSET 0x00000920 + +extern const ru_reg_rec HASH_CAM_BIST_DBG_EN_REG; +#define HASH_CAM_BIST_DBG_EN_REG_OFFSET 0x00000924 + +extern const ru_reg_rec HASH_CAM_BIST_BIST_CASCADE_SELECT_REG; +#define HASH_CAM_BIST_BIST_CASCADE_SELECT_REG_OFFSET 0x00000928 + +extern const ru_reg_rec HASH_CAM_BIST_BIST_BLOCK_SELECT_REG; +#define HASH_CAM_BIST_BIST_BLOCK_SELECT_REG_OFFSET 0x0000092c + +extern const ru_reg_rec HASH_CAM_BIST_BIST_REPAIR_ENABLE_REG; +#define HASH_CAM_BIST_BIST_REPAIR_ENABLE_REG_OFFSET 0x00000930 + +extern const ru_reg_rec HASH_INTR_CTRL_ISR_REG; +#define HASH_INTR_CTRL_ISR_REG_OFFSET 0x00000a00 + +extern const ru_reg_rec HASH_INTR_CTRL_ISM_REG; +#define HASH_INTR_CTRL_ISM_REG_OFFSET 0x00000a04 + +extern const ru_reg_rec HASH_INTR_CTRL_IER_REG; +#define HASH_INTR_CTRL_IER_REG_OFFSET 0x00000a08 + +extern const ru_reg_rec HASH_INTR_CTRL_ITR_REG; +#define HASH_INTR_CTRL_ITR_REG_OFFSET 0x00000a0c + +extern const ru_reg_rec HASH_DEBUG_DBG0_REG; +#define HASH_DEBUG_DBG0_REG_OFFSET 0x00000a30 + +extern const ru_reg_rec HASH_DEBUG_DBG1_REG; +#define HASH_DEBUG_DBG1_REG_OFFSET 0x00000a34 + +extern const ru_reg_rec HASH_DEBUG_DBG2_REG; +#define HASH_DEBUG_DBG2_REG_OFFSET 0x00000a38 + +extern const ru_reg_rec HASH_DEBUG_DBG3_REG; +#define HASH_DEBUG_DBG3_REG_OFFSET 0x00000a3c + +extern const ru_reg_rec HASH_DEBUG_DBG4_REG; +#define HASH_DEBUG_DBG4_REG_OFFSET 0x00000a40 + +extern const ru_reg_rec HASH_DEBUG_DBG5_REG; +#define HASH_DEBUG_DBG5_REG_OFFSET 0x00000a44 + +extern const ru_reg_rec HASH_DEBUG_DBG6_REG; +#define HASH_DEBUG_DBG6_REG_OFFSET 0x00000a48 + +extern const ru_reg_rec HASH_DEBUG_DBG7_REG; +#define HASH_DEBUG_DBG7_REG_OFFSET 0x00000a4c + +extern const ru_reg_rec HASH_DEBUG_DBG8_REG; +#define HASH_DEBUG_DBG8_REG_OFFSET 0x00000a50 + +extern const ru_reg_rec HASH_DEBUG_DBG9_REG; +#define HASH_DEBUG_DBG9_REG_OFFSET 0x00000a54 + +extern const ru_reg_rec HASH_DEBUG_DBG10_REG; +#define HASH_DEBUG_DBG10_REG_OFFSET 0x00000a58 + +extern const ru_reg_rec HASH_DEBUG_DBG11_REG; +#define HASH_DEBUG_DBG11_REG_OFFSET 0x00000a5c + +extern const ru_reg_rec HASH_DEBUG_DBG12_REG; +#define HASH_DEBUG_DBG12_REG_OFFSET 0x00000a60 + +extern const ru_reg_rec HASH_DEBUG_DBG13_REG; +#define HASH_DEBUG_DBG13_REG_OFFSET 0x00000a64 + +extern const ru_reg_rec HASH_DEBUG_DBG14_REG; +#define HASH_DEBUG_DBG14_REG_OFFSET 0x00000a68 + +extern const ru_reg_rec HASH_DEBUG_DBG15_REG; +#define HASH_DEBUG_DBG15_REG_OFFSET 0x00000a6c + +extern const ru_reg_rec HASH_DEBUG_DBG16_REG; +#define HASH_DEBUG_DBG16_REG_OFFSET 0x00000a70 + +extern const ru_reg_rec HASH_DEBUG_DBG17_REG; +#define HASH_DEBUG_DBG17_REG_OFFSET 0x00000a74 + +extern const ru_reg_rec HASH_DEBUG_DBG18_REG; +#define HASH_DEBUG_DBG18_REG_OFFSET 0x00000a78 + +extern const ru_reg_rec HASH_DEBUG_DBG19_REG; +#define HASH_DEBUG_DBG19_REG_OFFSET 0x00000a7c + +extern const ru_reg_rec HASH_DEBUG_DBG20_REG; +#define HASH_DEBUG_DBG20_REG_OFFSET 0x00000a80 + +extern const ru_reg_rec HASH_DEBUG_DBG_SEL_REG; +#define HASH_DEBUG_DBG_SEL_REG_OFFSET 0x00000a84 + +extern const ru_reg_rec HASH_AGING_RAM_AGING_REG; +#define HASH_AGING_RAM_AGING_REG_OFFSET 0x00007000 + +#define HASH_AGING_RAM_AGING_REG_RAM_CNT 0x00000041 + +extern const ru_reg_rec HASH_CONTEXT_RAM_CONTEXT_47_24_REG; +#define HASH_CONTEXT_RAM_CONTEXT_47_24_REG_OFFSET 0x00008000 + +#define HASH_CONTEXT_RAM_CONTEXT_47_24_REG_RAM_CNT 0x000004bf + +extern const ru_reg_rec HASH_CONTEXT_RAM_CONTEXT_23_0_REG; +#define HASH_CONTEXT_RAM_CONTEXT_23_0_REG_OFFSET 0x00008004 + +#define HASH_CONTEXT_RAM_CONTEXT_23_0_REG_RAM_CNT 0x000004bf + +extern const ru_reg_rec HASH_RAM_ENG_HIGH_REG; +#define HASH_RAM_ENG_HIGH_REG_OFFSET 0x00010000 + +#define HASH_RAM_ENG_HIGH_REG_RAM_CNT 0x000007ff + +extern const ru_reg_rec HASH_RAM_ENG_LOW_REG; +#define HASH_RAM_ENG_LOW_REG_OFFSET 0x00010004 + +#define HASH_RAM_ENG_LOW_REG_RAM_CNT 0x000007ff + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_RSLT_F_FULL_THR_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_RSLT_F_FULL_THR_REG_OFFSET 0x00000000 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_DEC_ROUT_OVRIDE_REG_OFFSET 0x00000004 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_PRGRM_M_PRM_REG_OFFSET 0x00000008 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_CONFIGURATIONS_CLK_GATE_CNTRL_REG_OFFSET 0x0000000c + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_REG_OFFSET 0x00000200 + +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_INGFIFO_REG_RAM_CNT 0x0000007f + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_REG_OFFSET 0x00000600 + +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_CMDFIFO_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_REG_OFFSET 0x00000700 + +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RSLTFIFO_REG_RAM_CNT 0x0000001f + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_REG_OFFSET 0x00000800 + +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_EGFIFO_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_REG_OFFSET 0x00000900 + +#define BAC_IF_BACIF_BLOCK_BACIF_FIFOS_RPPRMARR_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ING_F_CNT_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ING_F_CNT_REG_OFFSET 0x00000c00 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_CMD_F_CNT_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_CMD_F_CNT_REG_OFFSET 0x00000c04 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_CMD_CNT_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_CMD_CNT_REG_OFFSET 0x00000c08 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_RSLT_CNT_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ENG_RSLT_CNT_REG_OFFSET 0x00000c10 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_RSLT_F_CNT_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_RSLT_F_CNT_REG_OFFSET 0x00000c14 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_EGR_F_CNT_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_EGR_F_CNT_REG_OFFSET 0x00000c18 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_CMDLNG_C_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_CMDLNG_C_REG_OFFSET 0x00000c30 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_OF_C_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_OF_C_REG_OFFSET 0x00000c34 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_UF_C_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_ERR_PARAMS_UF_C_REG_OFFSET 0x00000c38 + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_PM_COUNTERS_GEN_CFG_REG_OFFSET 0x00000cfc + +extern const ru_reg_rec BAC_IF_BACIF_BLOCK_BACIF_DEBUG_DBG0_REG; +#define BAC_IF_BACIF_BLOCK_BACIF_DEBUG_DBG0_REG_OFFSET 0x00000e00 + +extern const ru_reg_rec CNPL_MEMORY_DATA_REG; +#define CNPL_MEMORY_DATA_REG_OFFSET 0x00000000 + +#define CNPL_MEMORY_DATA_REG_RAM_CNT 0x00000bff + +extern const ru_reg_rec CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_REG; +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_REG_OFFSET 0x00004000 + +#define CNPL_COUNTERS_CONFIGURATIONS_CN_LOC_PROF_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_REG; +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_REG_OFFSET 0x00004100 + +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF0_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_REG; +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_REG_OFFSET 0x00004110 + +#define CNPL_POLICERS_CONFIGURATIONS_PL_LOC_PROF1_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec CNPL_POLICERS_CONFIGURATIONS_PL_CALC_TYPE_REG; +#define CNPL_POLICERS_CONFIGURATIONS_PL_CALC_TYPE_REG_OFFSET 0x00004120 + +#define CNPL_POLICERS_CONFIGURATIONS_PL_CALC_TYPE_REG_RAM_CNT 0x00000002 + +extern const ru_reg_rec CNPL_POLICERS_CONFIGURATIONS_PER_UP_REG; +#define CNPL_POLICERS_CONFIGURATIONS_PER_UP_REG_OFFSET 0x00004130 + +extern const ru_reg_rec CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_REG; +#define CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_REG_OFFSET 0x00004140 + +#define CNPL_POLICERS_CONFIGURATIONS_PL_SIZE_PROF_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_REG; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_REG_OFFSET 0x00004200 + +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_ORDR_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_REG; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_REG_OFFSET 0x00004240 + +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_RSRV_THR_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_REG; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_REG_OFFSET 0x00004280 + +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HIPRI_THR_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_REG; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_REG_OFFSET 0x000042c0 + +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_MAX_THR_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_REG; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_CFG_REG_OFFSET 0x00004300 + +extern const ru_reg_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_REG; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_REG_OFFSET 0x00004310 + +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_HI_WMRK_VAL_REG_RAM_CNT 0x00000002 + +extern const ru_reg_rec CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_REG; +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_REG_OFFSET 0x00004340 + +#define CNPL_BUF_MNG_COUNTERS_CFG_STAT_CTRS_VAL_REG_RAM_CNT 0x0000000f + +extern const ru_reg_rec CNPL_SW_IF_SW_CMD_REG; +#define CNPL_SW_IF_SW_CMD_REG_OFFSET 0x00004400 + +extern const ru_reg_rec CNPL_SW_IF_SW_STAT_REG; +#define CNPL_SW_IF_SW_STAT_REG_OFFSET 0x00004404 + +extern const ru_reg_rec CNPL_SW_IF_SW_PL_RSLT_REG; +#define CNPL_SW_IF_SW_PL_RSLT_REG_OFFSET 0x00004410 + +extern const ru_reg_rec CNPL_SW_IF_SW_PL_RD_REG; +#define CNPL_SW_IF_SW_PL_RD_REG_OFFSET 0x00004418 + +#define CNPL_SW_IF_SW_PL_RD_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec CNPL_SW_IF_SW_CNT_RD_REG; +#define CNPL_SW_IF_SW_CNT_RD_REG_OFFSET 0x00004420 + +#define CNPL_SW_IF_SW_CNT_RD_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec CNPL_MISC_ARB_PRM_REG; +#define CNPL_MISC_ARB_PRM_REG_OFFSET 0x00004500 + +extern const ru_reg_rec CNPL_MISC_COL_AWR_EN_REG; +#define CNPL_MISC_COL_AWR_EN_REG_OFFSET 0x00004504 + +extern const ru_reg_rec CNPL_PM_COUNTERS_ENG_CMDS_REG; +#define CNPL_PM_COUNTERS_ENG_CMDS_REG_OFFSET 0x00004600 + +#define CNPL_PM_COUNTERS_ENG_CMDS_REG_RAM_CNT 0x0000000b + +extern const ru_reg_rec CNPL_PM_COUNTERS_CMD_WAIT_REG; +#define CNPL_PM_COUNTERS_CMD_WAIT_REG_OFFSET 0x00004640 + +#define CNPL_PM_COUNTERS_CMD_WAIT_REG_RAM_CNT 0x00000001 + +extern const ru_reg_rec CNPL_PM_COUNTERS_TOT_CYC_REG; +#define CNPL_PM_COUNTERS_TOT_CYC_REG_OFFSET 0x00004650 + +extern const ru_reg_rec CNPL_PM_COUNTERS_GNT_CYC_REG; +#define CNPL_PM_COUNTERS_GNT_CYC_REG_OFFSET 0x00004654 + +extern const ru_reg_rec CNPL_PM_COUNTERS_ARB_CYC_REG; +#define CNPL_PM_COUNTERS_ARB_CYC_REG_OFFSET 0x00004658 + +extern const ru_reg_rec CNPL_PM_COUNTERS_PL_UP_ERR_REG; +#define CNPL_PM_COUNTERS_PL_UP_ERR_REG_OFFSET 0x00004660 + +#define CNPL_PM_COUNTERS_PL_UP_ERR_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec CNPL_PM_COUNTERS_GEN_CFG_REG; +#define CNPL_PM_COUNTERS_GEN_CFG_REG_OFFSET 0x000046fc + +extern const ru_reg_rec CNPL_DEBUG_DBGSEL_REG; +#define CNPL_DEBUG_DBGSEL_REG_OFFSET 0x00004700 + +extern const ru_reg_rec CNPL_DEBUG_DBGBUS_REG; +#define CNPL_DEBUG_DBGBUS_REG_OFFSET 0x00004704 + +extern const ru_reg_rec CNPL_DEBUG_REQ_VEC_REG; +#define CNPL_DEBUG_REQ_VEC_REG_OFFSET 0x00004708 + +extern const ru_reg_rec CNPL_DEBUG_POL_UP_ST_REG; +#define CNPL_DEBUG_POL_UP_ST_REG_OFFSET 0x00004710 + +#define CNPL_DEBUG_POL_UP_ST_REG_RAM_CNT 0x00000003 + +extern const ru_reg_rec NATC_ENG_COMMAND_STATUS_REG; +#define NATC_ENG_COMMAND_STATUS_REG_OFFSET 0x00000000 + +extern const ru_reg_rec NATC_ENG_HASH_REG; +#define NATC_ENG_HASH_REG_OFFSET 0x00000008 + +extern const ru_reg_rec NATC_ENG_HIT_COUNT_REG; +#define NATC_ENG_HIT_COUNT_REG_OFFSET 0x0000000c + +extern const ru_reg_rec NATC_ENG_BYTE_COUNT_REG; +#define NATC_ENG_BYTE_COUNT_REG_OFFSET 0x00000010 + +extern const ru_reg_rec NATC_ENG_PKT_LEN_REG; +#define NATC_ENG_PKT_LEN_REG_OFFSET 0x00000014 + +extern const ru_reg_rec NATC_ENG_KEY_RESULT_REG; +#define NATC_ENG_KEY_RESULT_REG_OFFSET 0x00000020 + +#define NATC_ENG_KEY_RESULT_REG_RAM_CNT 0x00000025 + +extern const ru_reg_rec NATC_CTRS_CACHE_HIT_COUNT_REG; +#define NATC_CTRS_CACHE_HIT_COUNT_REG_OFFSET 0x00000000 + +extern const ru_reg_rec NATC_CTRS_CACHE_MISS_COUNT_REG; +#define NATC_CTRS_CACHE_MISS_COUNT_REG_OFFSET 0x00000004 + +extern const ru_reg_rec NATC_CTRS_DDR_REQUEST_COUNT_REG; +#define NATC_CTRS_DDR_REQUEST_COUNT_REG_OFFSET 0x00000008 + +extern const ru_reg_rec NATC_CTRS_DDR_EVICT_COUNT_REG; +#define NATC_CTRS_DDR_EVICT_COUNT_REG_OFFSET 0x0000000c + +extern const ru_reg_rec NATC_CTRS_DDR_BLOCK_COUNT_REG; +#define NATC_CTRS_DDR_BLOCK_COUNT_REG_OFFSET 0x00000010 + +extern const ru_reg_rec NATC_DDR_CFG_SIZE_REG; +#define NATC_DDR_CFG_SIZE_REG_OFFSET 0x00000000 + +extern const ru_reg_rec NATC_DDR_CFG_BINS_PER_BUCKET_0_REG; +#define NATC_DDR_CFG_BINS_PER_BUCKET_0_REG_OFFSET 0x00000004 + +extern const ru_reg_rec NATC_DDR_CFG_BINS_PER_BUCKET_1_REG; +#define NATC_DDR_CFG_BINS_PER_BUCKET_1_REG_OFFSET 0x00000008 + +extern const ru_reg_rec NATC_DDR_CFG_TOTAL_LEN_REG; +#define NATC_DDR_CFG_TOTAL_LEN_REG_OFFSET 0x0000000c + +extern const ru_reg_rec NATC_DDR_CFG_SM_STATUS_REG; +#define NATC_DDR_CFG_SM_STATUS_REG_OFFSET 0x00000010 + +extern const ru_reg_rec NATC_CONTROL_STATUS_REG; +#define NATC_CONTROL_STATUS_REG_OFFSET 0x00000000 + +extern const ru_reg_rec NATC_CONTROL_STATUS2_REG; +#define NATC_CONTROL_STATUS2_REG_OFFSET 0x00000004 + +extern const ru_reg_rec NATC_TABLE_CONTROL_REG; +#define NATC_TABLE_CONTROL_REG_OFFSET 0x00000008 + +extern const ru_reg_rec NATC_STAT_COUNTER_CONTROL_0_REG; +#define NATC_STAT_COUNTER_CONTROL_0_REG_OFFSET 0x00000350 + +extern const ru_reg_rec NATC_STAT_COUNTER_CONTROL_1_REG; +#define NATC_STAT_COUNTER_CONTROL_1_REG_OFFSET 0x00000354 + +extern const ru_reg_rec NATC_REGFILE_FIFO_START_ADDR_0_REG; +#define NATC_REGFILE_FIFO_START_ADDR_0_REG_OFFSET 0x000003a0 + +extern const ru_reg_rec NATC_REGFILE_FIFO_START_ADDR_1_REG; +#define NATC_REGFILE_FIFO_START_ADDR_1_REG_OFFSET 0x000003a4 + +extern const ru_reg_rec NATC_TBL_DDR_KEY_BASE_ADDRESS_LOWER_REG; +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_LOWER_REG_OFFSET 0x00000000 + +extern const ru_reg_rec NATC_TBL_DDR_KEY_BASE_ADDRESS_UPPER_REG; +#define NATC_TBL_DDR_KEY_BASE_ADDRESS_UPPER_REG_OFFSET 0x00000004 + +extern const ru_reg_rec NATC_TBL_DDR_RESULT_BASE_ADDRESS_LOWER_REG; +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_LOWER_REG_OFFSET 0x00000008 + +extern const ru_reg_rec NATC_TBL_DDR_RESULT_BASE_ADDRESS_UPPER_REG; +#define NATC_TBL_DDR_RESULT_BASE_ADDRESS_UPPER_REG_OFFSET 0x0000000c + +extern const ru_reg_rec NATC_KEY_MASK_REG; +#define NATC_KEY_MASK_REG_OFFSET 0x00000000 + +#define NATC_KEY_MASK_REG_RAM_CNT 0x00000007 + +extern const ru_reg_rec NATC_INDIR_C_INDIR_ADDR_REG_REG; +#define NATC_INDIR_C_INDIR_ADDR_REG_REG_OFFSET 0x00000000 + +extern const ru_reg_rec NATC_INDIR_C_INDIR_DATA_REG_REG; +#define NATC_INDIR_C_INDIR_DATA_REG_REG_OFFSET 0x00000010 + +#define NATC_INDIR_C_INDIR_DATA_REG_REG_RAM_CNT 0x00000028 + + + +/****************************************************************************** + * XRDP_ Blocks + ******************************************************************************/ +extern const ru_block_rec QM_BLOCK; +extern const ru_block_rec DQM_TOKEN_FIFO_BLOCK; +extern const ru_block_rec DQM_BLOCK; +extern const ru_block_rec FPM_BLOCK; +extern const ru_block_rec RNR_MEM_BLOCK; +extern const ru_block_rec RNR_INST_BLOCK; +extern const ru_block_rec RNR_CNTXT_BLOCK; +extern const ru_block_rec RNR_PRED_BLOCK; +extern const ru_block_rec RNR_REGS_BLOCK; +extern const ru_block_rec RNR_QUAD_BLOCK; +extern const ru_block_rec DSPTCHR_BLOCK; +extern const ru_block_rec BBH_TX_BLOCK; +extern const ru_block_rec BBH_RX_BLOCK; +extern const ru_block_rec UBUS_MSTR_BLOCK; +extern const ru_block_rec UBUS_SLV_BLOCK; +extern const ru_block_rec SBPM_BLOCK; +extern const ru_block_rec DMA_BLOCK; +extern const ru_block_rec PSRAM_BLOCK; +extern const ru_block_rec UNIMAC_RDP_BLOCK; +extern const ru_block_rec UNIMAC_MISC_BLOCK; +extern const ru_block_rec TCAM_BLOCK; +extern const ru_block_rec HASH_BLOCK; +extern const ru_block_rec BAC_IF_BLOCK; +extern const ru_block_rec CNPL_BLOCK; +extern const ru_block_rec NATC_ENG_BLOCK; +extern const ru_block_rec NATC_CTRS_BLOCK; +extern const ru_block_rec NATC_DDR_CFG_BLOCK; +extern const ru_block_rec NATC_BLOCK; +extern const ru_block_rec NATC_TBL_BLOCK; +extern const ru_block_rec NATC_KEY_BLOCK; +extern const ru_block_rec NATC_INDIR_BLOCK; +extern const ru_block_rec *RU_ALL_BLOCKS[]; + + +#define RU_BLK_COUNT 31 +#define RU_REG_COUNT 1163 +#define RU_FLD_COUNT 3435 + + +#endif /* End of file XRDP_.h */ diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_PSRAM_GPL.c b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_PSRAM_GPL.c new file mode 100644 index 0000000000..a541b4d0cc --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_PSRAM_GPL.c @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#include "ru.h" + +/****************************************************************************** + * Register: PSRAM_MEMORY_DATA + ******************************************************************************/ +const ru_reg_rec PSRAM_MEMORY_DATA_REG = +{ + "MEMORY_DATA", +#if RU_INCLUDE_DESC + "PSRAM_MEM_ENTRY %i Register", + "psram_mem_entry", +#endif + PSRAM_MEMORY_DATA_REG_OFFSET, + PSRAM_MEMORY_DATA_REG_RAM_CNT, + 4, + 765, +}; + +/****************************************************************************** + * Block: PSRAM + ******************************************************************************/ +static const ru_reg_rec *PSRAM_REGS[] = +{ + &PSRAM_MEMORY_DATA_REG, +}; + +unsigned long PSRAM_ADDRS[] = +{ + 0x82000000, +}; + +const ru_block_rec PSRAM_BLOCK = +{ + "PSRAM", + PSRAM_ADDRS, + 1, + 41, + PSRAM_REGS +}; + +/* End of file XRDP_PSRAM_GPL_AG_trim.c */ diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_RNR_REGS_GPL.c b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_RNR_REGS_GPL.c new file mode 100644 index 0000000000..6d30c30bb7 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_RNR_REGS_GPL.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#include "ru.h" + +/****************************************************************************** + * Register: RNR_REGS_CFG_CPU_WAKEUP + ******************************************************************************/ +const ru_reg_rec RNR_REGS_CFG_CPU_WAKEUP_REG = +{ + "CFG_CPU_WAKEUP", +#if RU_INCLUDE_DESC + "CPU_WAKEUP Register", + "Writing to this register generates a request towards the runner scheduler.", +#endif + RNR_REGS_CFG_CPU_WAKEUP_REG_OFFSET, + 0, + 0, + 239, +#if RU_INCLUDE_ACCESS + ru_access_rw, +#endif +}; + +/****************************************************************************** + * Block: RNR_REGS + ******************************************************************************/ +static const ru_reg_rec *RNR_REGS_REGS[] = +{ + &RNR_REGS_CFG_CPU_WAKEUP_REG, +}; + +unsigned long RNR_REGS_ADDRS[] = +{ + 0x82800000, + 0x82801000, + 0x82802000, + 0x82803000, + 0x82804000, +}; + +const ru_block_rec RNR_REGS_BLOCK = +{ + "RNR_REGS", + RNR_REGS_ADDRS, + 5, + 29, + RNR_REGS_REGS +}; + +/* End of file XRDP_RNR_REGS.c */ diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_SBPM_GPL.c b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_SBPM_GPL.c new file mode 100644 index 0000000000..efe2279edc --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_SBPM_GPL.c @@ -0,0 +1,171 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#include "ru.h" + +/****************************************************************************** + * Register: SBPM_REGS_BN_ALLOC + ******************************************************************************/ +const ru_reg_rec SBPM_REGS_BN_ALLOC_REG = +{ + "REGS_BN_ALLOC", +#if RU_INCLUDE_DESC + "BN_ALLOC Register", + "request for a new buffer", +#endif + SBPM_REGS_BN_ALLOC_REG_OFFSET, + 0, + 0, + 682, +}; + +/****************************************************************************** + * Register: SBPM_REGS_BN_ALLOC_RPLY + ******************************************************************************/ +const ru_reg_rec SBPM_REGS_BN_ALLOC_RPLY_REG = +{ + "REGS_BN_ALLOC_RPLY", +#if RU_INCLUDE_DESC + "BN_ALLOC_RPLY Register", + "reply for a new buffer alloc", +#endif + SBPM_REGS_BN_ALLOC_RPLY_REG_OFFSET, + 0, + 0, + 683, +}; + +/****************************************************************************** + * Register: SBPM_REGS_BN_CONNECT + ******************************************************************************/ +const ru_reg_rec SBPM_REGS_BN_CONNECT_REG = +{ + "REGS_BN_CONNECT", +#if RU_INCLUDE_DESC + "BN_CONNECT Register", + "request for connection between two buffers in a linked list. The connection request may be replied with ACK message if the ACK request bit is asserted." + "This command is used as write command.", +#endif + SBPM_REGS_BN_CONNECT_REG_OFFSET, + 0, + 0, + 688, +}; + +/****************************************************************************** + * Register: SBPM_REGS_BN_CONNECT_RPLY + ******************************************************************************/ +const ru_reg_rec SBPM_REGS_BN_CONNECT_RPLY_REG = +{ + "REGS_BN_CONNECT_RPLY", +#if RU_INCLUDE_DESC + "BN_CONNECT_RPLY Register", + "bn_connect_rply", +#endif + SBPM_REGS_BN_CONNECT_RPLY_REG_OFFSET, + 0, + 0, + 689, +}; + +/****************************************************************************** + * Register: SBPM_REGS_GET_NEXT + ******************************************************************************/ +const ru_reg_rec SBPM_REGS_GET_NEXT_REG = +{ + "REGS_GET_NEXT", +#if RU_INCLUDE_DESC + "GET_NEXT Register", + "a pointer to a buffer in a packet linked list and request for the next buffer in the list" + "this command is used as read command.", +#endif + SBPM_REGS_GET_NEXT_REG_OFFSET, + 0, + 0, + 690, +}; + +/****************************************************************************** + * Register: SBPM_REGS_GET_NEXT_RPLY + ******************************************************************************/ +const ru_reg_rec SBPM_REGS_GET_NEXT_RPLY_REG = +{ + "REGS_GET_NEXT_RPLY", +#if RU_INCLUDE_DESC + "GET_NEXT_RPLY Register", + "get_next_rply", +#endif + SBPM_REGS_GET_NEXT_RPLY_REG_OFFSET, + 0, + 0, + 691, +}; + +/****************************************************************************** + * Register: SBPM_REGS_BN_FREE_WITHOUT_CONTXT + ******************************************************************************/ +const ru_reg_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_REG = +{ + "REGS_BN_FREE_WITHOUT_CONTXT", +#if RU_INCLUDE_DESC + "BN_FREE_WITHOUT_CONTXT Register", + "bn_free_without_contxt", +#endif + SBPM_REGS_BN_FREE_WITHOUT_CONTXT_REG_OFFSET, + 0, + 0, + 693, +}; + +/****************************************************************************** + * Register: SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY + ******************************************************************************/ +const ru_reg_rec SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_REG = +{ + "REGS_BN_FREE_WITHOUT_CONTXT_RPLY", +#if RU_INCLUDE_DESC + "BN_FREE_WITHOUT_CONTXT_RPLY Register", + "bn_free_without_contxt_rply", +#endif + SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_REG_OFFSET, + 0, + 0, + 694, +}; + + +/****************************************************************************** + * Block: SBPM + ******************************************************************************/ +static const ru_reg_rec *SBPM_REGS[] = +{ + &SBPM_REGS_BN_ALLOC_REG, + &SBPM_REGS_BN_ALLOC_RPLY_REG, + &SBPM_REGS_BN_CONNECT_REG, + &SBPM_REGS_BN_CONNECT_RPLY_REG, + &SBPM_REGS_GET_NEXT_REG, + &SBPM_REGS_GET_NEXT_RPLY_REG, + &SBPM_REGS_BN_FREE_WITHOUT_CONTXT_REG, + &SBPM_REGS_BN_FREE_WITHOUT_CONTXT_RPLY_REG, +}; + +unsigned long SBPM_ADDRS[] = +{ + 0x828a1000, +}; + +const ru_block_rec SBPM_BLOCK = +{ + "SBPM", + SBPM_ADDRS, + 1, + 53, + SBPM_REGS +}; + +/* End of file XRDP_SBPM.c */ diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_UNIMAC_RDP_GPL.c b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_UNIMAC_RDP_GPL.c new file mode 100644 index 0000000000..3ab723cfc6 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/XRDP_UNIMAC_RDP_GPL.c @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#include "ru.h" + +const ru_reg_rec UNIMAC_RDP_COMMAND_CONFIG_REG = +{ + "COMMAND_CONFIG", +#if RU_INCLUDE_DESC + "Command register. Used by the host processor to control and configure the core", + "", +#endif + UNIMAC_RDP_COMMAND_CONFIG_REG_OFFSET, + 0, + 0, + 807, +#if RU_INCLUDE_ACCESS + ru_access_rw, +#endif +}; + +/****************************************************************************** + * Block: UNIMAC_RDP + ******************************************************************************/ +static const ru_reg_rec *UNIMAC_RDP_REGS[] = +{ + &UNIMAC_RDP_COMMAND_CONFIG_REG, +}; + +unsigned long UNIMAC_RDP_ADDRS[] = +{ + 0x828a8004, + 0x828a9004, + 0x828aa004, + 0x828ab004, + 0x828ac004, + 0x828ad004, + 0x828ae004, + 0x828af004, +}; + +const ru_block_rec UNIMAC_RDP_BLOCK = +{ + "UNIMAC_RDP", + UNIMAC_RDP_ADDRS, + 8, + 177, + UNIMAC_RDP_REGS +}; + +/* End of file XRDP_UNIMAC_RDP.c */ diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/data_path_init_basic_data.h b/arch/arm/mach-bcmbca/xrdp/bcm63146/data_path_init_basic_data.h new file mode 100644 index 0000000000..30db6b0790 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/data_path_init_basic_data.h @@ -0,0 +1,794 @@ +{ 0x408a0014 , 0x82a00000 }, +{ 0x408a0018 , 0x82c00000 }, +{ 0x408a001c , 0x82c00000 }, +{ 0x408a0020 , 0x82c80000 }, +{ 0x408a0024 , 0x82c80000 }, +{ 0x408a0028 , 0x82d00000 }, +{ 0x408a0004 , 0x82700000 }, +{ 0x408a0008 , 0x82900000 }, +{ 0x408a000c , 0x82900000 }, +{ 0x408a0010 , 0x82a00000 }, +{ 0x4089c008 , 0x20002 }, +{ 0x4089d008 , 0x20002 }, +{ 0x5700000 , 0x0 }, +{ 0x3000000 , 0x2000 }, +{ 0x82710000 , 0xfc000000 }, +{ 0x41710000 , 0x6008006 }, +{ 0x4171000c , 0x18008006 }, +{ 0x41710018 , 0x8026 }, +{ 0x41710024 , 0x5f80c0a }, +{ 0x41710028 , 0x2100c004 }, +{ 0x4171002c , 0xc4bcac }, +{ 0x41710030 , 0x7401a0b0 }, +{ 0x41710034 , 0x630105cc }, +{ 0x41710038 , 0xb8dcac }, +{ 0x4171003c , 0xf4fff3b0 }, +{ 0x41710040 , 0xe0a10684 }, +{ 0x41710044 , 0x17800006 }, +{ 0x41710048 , 0xe18d6a8 }, +{ 0x4171004c , 0x2100c004 }, +{ 0x41710050 , 0x8403f0b0 }, +{ 0x41710054 , 0x400c0b0 }, +{ 0x41710058 , 0x86a107cc }, +{ 0x4171005c , 0x21000004 }, +{ 0x41710060 , 0x2ec0036 }, +{ 0x41710064 , 0x42ec1036 }, +{ 0x41710068 , 0x83ec2036 }, +{ 0x4171006c , 0x3ed4036 }, +{ 0x41710070 , 0x83ed6036 }, +{ 0x41710074 , 0x3ee8036 }, +{ 0x41710078 , 0x83eea036 }, +{ 0x4171007c , 0x3efc036 }, +{ 0x41710080 , 0x83efe036 }, +{ 0x41710084 , 0x3f00037 }, +{ 0x41710088 , 0x83f02037 }, +{ 0x4171008c , 0x3f14037 }, +{ 0x41710090 , 0x83f16037 }, +{ 0x41710094 , 0x3f28037 }, +{ 0x41710098 , 0x83f2a037 }, +{ 0x4171009c , 0x3f3c037 }, +{ 0x417100a0 , 0x83f3e037 }, +{ 0x417100a4 , 0x820080c6 }, +{ 0x417100a8 , 0x1684ac }, +{ 0x417100ac , 0xc2dd8036 }, +{ 0x417100cc , 0x82 }, +{ 0x417100d0 , 0x82 }, +{ 0x417100d4 , 0x82 }, +{ 0x417100d8 , 0x82 }, +{ 0x417100dc , 0x82 }, +{ 0x417100e0 , 0x82 }, +{ 0x417100e4 , 0x82 }, +{ 0x417100e8 , 0x82 }, +{ 0x417100ec , 0x82 }, +{ 0x417100f0 , 0x82 }, +{ 0x417100f4 , 0xc2 }, +{ 0x417100f8 , 0x82 }, +{ 0x417100fc , 0x82 }, +{ 0x41710100 , 0x82 }, +{ 0x41710104 , 0x82 }, +{ 0x41710108 , 0x82 }, +{ 0x4171010c , 0x82 }, +{ 0x41710110 , 0x82 }, +{ 0x41710114 , 0x82 }, +{ 0x41710118 , 0x82 }, +{ 0x4171011c , 0x82 }, +{ 0x4171013c , 0x2ec0032 }, +{ 0x41710140 , 0x42ec1032 }, +{ 0x41710144 , 0x83ec2032 }, +{ 0x41710148 , 0x3ed4032 }, +{ 0x4171014c , 0x83ed6032 }, +{ 0x41710150 , 0x3ee8032 }, +{ 0x41710154 , 0x83eea032 }, +{ 0x41710158 , 0x3efc032 }, +{ 0x4171015c , 0x83efe032 }, +{ 0x41710160 , 0x3f00033 }, +{ 0x41710164 , 0x83f02033 }, +{ 0x41710168 , 0x3f14033 }, +{ 0x4171016c , 0x83f16033 }, +{ 0x41710170 , 0x3f28033 }, +{ 0x41710174 , 0x83f2a033 }, +{ 0x41710178 , 0x3f3c033 }, +{ 0x4171017c , 0x83f3e033 }, +{ 0x4171018c , 0x1008022 }, +{ 0x4171019c , 0x4400c0b0 }, +{ 0x417101a0 , 0x4d880b0 }, +{ 0x417101a4 , 0x1c69e }, +{ 0x417101a8 , 0x8001c480 }, +{ 0x417101ac , 0x140040b0 }, +{ 0x417101b0 , 0x2008630 }, +{ 0x417101b4 , 0x80008480 }, +{ 0x417101b8 , 0x2008634 }, +{ 0x417101bc , 0x22008638 }, +{ 0x417101c0 , 0x80008482 }, +{ 0x417101c4 , 0x2200863c }, +{ 0x417101c8 , 0x43008839 }, +{ 0x417101cc , 0x3006831 }, +{ 0x417101d0 , 0xc67ccc0a }, +{ 0x417101d4 , 0x6026ccac }, +{ 0x417101d8 , 0xc0aa8bac }, +{ 0x417101dc , 0x2000e696 }, +{ 0x417101e0 , 0x400d0b0 }, +{ 0x417101e4 , 0x4d8c0b0 }, +{ 0x417101e8 , 0x81d69e }, +{ 0x417101ec , 0xa001c680 }, +{ 0x417101f0 , 0x200d630 }, +{ 0x417101f4 , 0x8080d680 }, +{ 0x417101f8 , 0xb83bad }, +{ 0x417101fc , 0x200d634 }, +{ 0x41710200 , 0x2200d638 }, +{ 0x41710204 , 0x6082d680 }, +{ 0x41710208 , 0x8080d682 }, +{ 0x4171020c , 0x2200d63c }, +{ 0x41710210 , 0xc1c1a431 }, +{ 0x41710214 , 0x40060b1 }, +{ 0x41710218 , 0x400f0b0 }, +{ 0x4171021c , 0x80b981 }, +{ 0x41710220 , 0x400c0b0 }, +{ 0x41710224 , 0x400d0b0 }, +{ 0x41710228 , 0x400e0b0 }, +{ 0x4171022c , 0xc1dfc033 }, +{ 0x41710230 , 0x40220e84 }, +{ 0x41710234 , 0xab809006 }, +{ 0x41710238 , 0x41030b1 }, +{ 0x4171023c , 0x4200093c }, +{ 0x41710240 , 0x22983 }, +{ 0x41710244 , 0x68022989 }, +{ 0x41710248 , 0x3004931 }, +{ 0x4171024c , 0x40b85aad }, +{ 0x41710250 , 0xa00a84 }, +{ 0x41710254 , 0xa780c006 }, +{ 0x41710258 , 0x20805a87 }, +{ 0x4171025c , 0xe1805a97 }, +{ 0x41710260 , 0x20805a83 }, +{ 0x41710264 , 0xa0025295 }, +{ 0x41710268 , 0x2080da87 }, +{ 0x4171026c , 0xc2058b1 }, +{ 0x41710270 , 0x5cb1 }, +{ 0x41710274 , 0xa0024a85 }, +{ 0x41710278 , 0xe0145aad }, +{ 0x4171027c , 0xa082de95 }, +{ 0x41710280 , 0x80094aad }, +{ 0x41710284 , 0x4df50b1 }, +{ 0x41710288 , 0x40004a97 }, +{ 0x4171028c , 0x80824a81 }, +{ 0x41710290 , 0x2005a31 }, +{ 0x41710294 , 0xa8835a89 }, +{ 0x41710298 , 0x2005a35 }, +{ 0x4171029c , 0x40220e84 }, +{ 0x417102a0 , 0x9080a006 }, +{ 0x417102a4 , 0x4200093c }, +{ 0x417102a8 , 0x3000934 }, +{ 0x417102ac , 0xa00d84 }, +{ 0x417102b0 , 0x1281d006 }, +{ 0x417102b4 , 0xb84bad }, +{ 0x417102b8 , 0x20003a87 }, +{ 0x417102bc , 0xe1803997 }, +{ 0x417102c0 , 0x20804983 }, +{ 0x417102c4 , 0x4dfe0b1 }, +{ 0x417102c8 , 0x40050b1 }, +{ 0x417102cc , 0x200ff31 }, +{ 0x417102d0 , 0x40030b1 }, +{ 0x417102d4 , 0x6282cfa1 }, +{ 0x417102d8 , 0x6002de85 }, +{ 0x417102dc , 0x80a20e84 }, +{ 0x417102e0 , 0xc4003106 }, +{ 0x417102e4 , 0x20003e83 }, +{ 0x417102e8 , 0xa40986 }, +{ 0x417102ec , 0xb5009106 }, +{ 0x417102f0 , 0x8003c295 }, +{ 0x417102f4 , 0x8883ff89 }, +{ 0x417102f8 , 0x20805a83 }, +{ 0x417102fc , 0xf48b7a17 }, +{ 0x41710300 , 0x8000ef83 }, +{ 0x41710304 , 0xc6228026 }, +{ 0x41710308 , 0x240030b1 }, +{ 0x4171030c , 0x2ae09c2 }, +{ 0x41710310 , 0x8002c294 }, +{ 0x41710314 , 0x2000c686 }, +{ 0x41710318 , 0x200df30 }, +{ 0x4171031c , 0x6002c694 }, +{ 0x41710320 , 0x8081c680 }, +{ 0x41710324 , 0x200cf34 }, +{ 0x41710328 , 0x416e0b0 }, +{ 0x4171032c , 0xc0dcac }, +{ 0x41710330 , 0xb84bad }, +{ 0x41710334 , 0x408c0b0 }, +{ 0x41710338 , 0x4e5f0b0 }, +{ 0x4171033c , 0x400e0b1 }, +{ 0x41710340 , 0xb781 }, +{ 0x41710344 , 0x101cd0a8 }, +{ 0x41710348 , 0xaa81 }, +{ 0x4171034c , 0xc685 }, +{ 0x41710350 , 0x80230d84 }, +{ 0x41710354 , 0xe5802106 }, +{ 0x41710358 , 0x80c3b6d1 }, +{ 0x4171035c , 0xc203c080 }, +{ 0x41710360 , 0x101cd0a8 }, +{ 0x41710364 , 0x68acc7a8 }, +{ 0x41710368 , 0x8003ad85 }, +{ 0x4171036c , 0x8403d0b1 }, +{ 0x41710370 , 0x8083bd81 }, +{ 0x41710374 , 0x2280d68e }, +{ 0x41710378 , 0x1e04c2a8 }, +{ 0x4171037c , 0x86388026 }, +{ 0x41710380 , 0x408c0b1 }, +{ 0x41710384 , 0x80a10ecc }, +{ 0x41710388 , 0xd4008006 }, +{ 0x4171038c , 0x3180c738 }, +{ 0x41710390 , 0x2038d6ac }, +{ 0x41710394 , 0x43c3b6d1 }, +{ 0x417103a0 , 0xe008007 }, +{ 0x417103a4 , 0x2401c0b0 }, +{ 0x417103ac , 0xa080ca96 }, +{ 0x417103b0 , 0x418d0b0 }, +{ 0x417103b4 , 0x6002c680 }, +{ 0x417103b8 , 0xa001d680 }, +{ 0x417103bc , 0x16e0b0 }, +{ 0x417103c0 , 0xfa80 }, +{ 0x417103c4 , 0x408c0b0 }, +{ 0x417103c8 , 0x80a10784 }, +{ 0x417103cc , 0xf9802106 }, +{ 0x417103d0 , 0x80c1e6d4 }, +{ 0x417103d4 , 0xf200c006 }, +{ 0x417103d8 , 0x8081f784 }, +{ 0x417103dc , 0x8001e780 }, +{ 0x417103e0 , 0x2080d682 }, +{ 0x417103e4 , 0xf3c1e6d4 }, +{ 0x417103f0 , 0xc20d8b0 }, +{ 0x417103f4 , 0xe080c996 }, +{ 0x417103f8 , 0xdcb0 }, +{ 0x417103fc , 0xc88caa8 }, +{ 0x41710400 , 0xa0013681 }, +{ 0x41710404 , 0x6026ecac }, +{ 0x41710408 , 0x400c0b0 }, +{ 0x4171040c , 0x2000e796 }, +{ 0x41710410 , 0x400d0b0 }, +{ 0x41710414 , 0xc1c1a431 }, +{ 0x41710418 , 0x400f0b0 }, +{ 0x4171041c , 0x6a0a4a8 }, +{ 0x41710420 , 0x1f04c2a8 }, +{ 0x41710424 , 0x61cc0a8 }, +{ 0x41710428 , 0x1f04d0a8 }, +{ 0x4171042c , 0x7a465a9 }, +{ 0x41710430 , 0x80e980 }, +{ 0x41710434 , 0x2b8fba8 }, +{ 0x41710438 , 0x628a4a8 }, +{ 0x4171043c , 0x7915cda8 }, +{ 0x41710440 , 0x18c0a8 }, +{ 0x41710444 , 0x1d04d0a8 }, +{ 0x41710448 , 0x40a20884 }, +{ 0x4171044c , 0x2b811006 }, +{ 0x41710450 , 0x380e83c }, +{ 0x41710454 , 0x4380c83c }, +{ 0x41710458 , 0x410c0b0 }, +{ 0x4171045c , 0x821883 }, +{ 0x41710460 , 0x1400d0b0 }, +{ 0x41710464 , 0x88811889 }, +{ 0x41710468 , 0x81d69e }, +{ 0x4171046c , 0x4d8c0b0 }, +{ 0x41710470 , 0xa001c680 }, +{ 0x41710474 , 0x200d630 }, +{ 0x41710478 , 0x8080d680 }, +{ 0x4171047c , 0x200d634 }, +{ 0x41710480 , 0x2200d638 }, +{ 0x41710484 , 0x8082d680 }, +{ 0x41710488 , 0x8080d682 }, +{ 0x4171048c , 0x2200d63c }, +{ 0x41710490 , 0x6a0a4a8 }, +{ 0x41710494 , 0x90005cc }, +{ 0x41710498 , 0x1f0482a9 }, +{ 0x4171049c , 0x771d9da9 }, +{ 0x417104a0 , 0xc7198026 }, +{ 0x417104a4 , 0x628a4a8 }, +{ 0x417104a8 , 0xc84285cd }, +{ 0x417104ac , 0x340050b1 }, +{ 0x417104b0 , 0x4d830b1 }, +{ 0x417104b4 , 0x815a9f }, +{ 0x417104b8 , 0xa0823981 }, +{ 0x417104bc , 0x2805931 }, +{ 0x417104c0 , 0x80805a81 }, +{ 0x417104c4 , 0x2805935 }, +{ 0x417104c8 , 0x22805939 }, +{ 0x417104cc , 0x80824a81 }, +{ 0x417104d0 , 0x80004a83 }, +{ 0x417104d4 , 0x2280493d }, +{ 0x417104d8 , 0x240030b1 }, +{ 0x417104dc , 0xc6228026 }, +{ 0x417104e0 , 0x400b0b1 }, +{ 0x417104e4 , 0x2ae09c2 }, +{ 0x417104e8 , 0x2400d0b0 }, +{ 0x417104ec , 0x4d8c0b0 }, +{ 0x417104f0 , 0x81d69e }, +{ 0x417104f4 , 0xa001c680 }, +{ 0x417104f8 , 0x200d630 }, +{ 0x417104fc , 0xc1c1a431 }, +{ 0x41710500 , 0x8080d680 }, +{ 0x41710504 , 0x200d634 }, +{ 0x41710508 , 0x2200d638 }, +{ 0x4171050c , 0x8080d682 }, +{ 0x41710510 , 0xe008007 }, +{ 0x41710514 , 0x2200d63c }, +{ 0x41710518 , 0x2401c0b0 }, +{ 0x4171051c , 0x24010006 }, +{ 0x41710520 , 0x400a0b0 }, +{ 0x41710524 , 0x4e0b0b0 }, +{ 0x41710528 , 0x1a59e }, +{ 0x4171052c , 0x4081a580 }, +{ 0x41710530 , 0x140040b0 }, +{ 0x41710534 , 0x200b530 }, +{ 0x41710538 , 0x8080b580 }, +{ 0x4171053c , 0x200b534 }, +{ 0x41710540 , 0x2200b538 }, +{ 0x41710544 , 0x8080b582 }, +{ 0x41710548 , 0x2200b53c }, +{ 0x4171054c , 0x300a430 }, +{ 0x41710550 , 0x6cc550a }, +{ 0x41710554 , 0x43008439 }, +{ 0x41710558 , 0x280c430 }, +{ 0x4171055c , 0x7528026 }, +{ 0x41710560 , 0x414186cd }, +{ 0x41710564 , 0x2200043c }, +{ 0x41710568 , 0x476c0b0 }, +{ 0x4171056c , 0x41ee0b0 }, +{ 0x41710570 , 0xb8d5ac }, +{ 0x41710574 , 0x408f0b0 }, +{ 0x41710578 , 0xe0a10684 }, +{ 0x4171057c , 0x65812106 }, +{ 0x41710580 , 0xe041c7d0 }, +{ 0x41710584 , 0x5e01c006 }, +{ 0x41710588 , 0xe081d684 }, +{ 0x4171058c , 0xe001c680 }, +{ 0x41710590 , 0x2000e782 }, +{ 0x41710594 , 0xa341c7d0 }, +{ 0x417105a0 , 0x476c0b0 }, +{ 0x417105a4 , 0xb805ad }, +{ 0x417105a8 , 0xf680 }, +{ 0x417105ac , 0x40020b1 }, +{ 0x417105b0 , 0xc880 }, +{ 0x417105b4 , 0x84e5d0b0 }, +{ 0x417105b8 , 0x40030b1 }, +{ 0x417105bc , 0x81024b1 }, +{ 0x417105c0 , 0x40800b1 }, +{ 0x417105c4 , 0x400a8b1 }, +{ 0x417105c8 , 0x400e0b0 }, +{ 0x417105cc , 0x1081 }, +{ 0x417105d0 , 0xe1830a9 }, +{ 0x417105d4 , 0x68ac26a9 }, +{ 0x417105d8 , 0x6885 }, +{ 0x417105dc , 0x2280063c }, +{ 0x417105e0 , 0xc65e8026 }, +{ 0x417105e4 , 0x840300b1 }, +{ 0x417105e8 , 0x412208cc }, +{ 0x417105ec , 0x22800639 }, +{ 0x417105f0 , 0x1900280a }, +{ 0x417105f4 , 0x43c6d0a }, +{ 0x417105f8 , 0x203878ad }, +{ 0x417105fc , 0x87014006 }, +{ 0x41710600 , 0xc0eba8 }, +{ 0x41710604 , 0x40050b1 }, +{ 0x41710608 , 0x40040b1 }, +{ 0x4171060c , 0x840300b1 }, +{ 0x41710610 , 0x385da9 }, +{ 0x41710614 , 0x10b85ba9 }, +{ 0x41710618 , 0x842208cc }, +{ 0x4171061c , 0xc0220684 }, +{ 0x41710620 , 0x91816106 }, +{ 0x41710624 , 0x109c78a9 }, +{ 0x41710628 , 0xc0c2fbd4 }, +{ 0x4171062c , 0xc002c684 }, +{ 0x41710630 , 0xc082f780 }, +{ 0x41710634 , 0x7701c006 }, +{ 0x41710638 , 0x80ab81 }, +{ 0x4171063c , 0x40010b1 }, +{ 0x41710640 , 0x40860b1 }, +{ 0x41710644 , 0x93c1fbd4 }, +{ 0x41710650 , 0x80ab81 }, +{ 0x41710654 , 0x2280c638 }, +{ 0x41710658 , 0x800e60a }, +{ 0x4171065c , 0x1304b0a8 }, +{ 0x41710660 , 0x4097a9 }, +{ 0x41710664 , 0x4c8da9 }, +{ 0x41710668 , 0x280c430 }, +{ 0x4171066c , 0x7528026 }, +{ 0x41710670 , 0x414186cd }, +{ 0x41710674 , 0x2200043c }, +{ 0x41710678 , 0x33c0d0a }, +{ 0x4171067c , 0x9004007 }, +{ 0x41710680 , 0x8403c0b0 }, +{ 0x41710684 , 0x7528026 }, +{ 0x41710688 , 0x2200043c }, +{ 0x4080004c , 0x4 }, +{ 0x40800040 , 0x800000 }, +{ 0x40800044 , 0x820 }, +{ 0x41718000 , 0x9c010000 }, +{ 0x41718024 , 0x10 }, +{ 0x41718028 , 0x12000000 }, +{ 0x4171802c , 0x0 }, +{ 0x41718040 , 0x40010000 }, +{ 0x41718044 , 0x0 }, +{ 0x41718048 , 0xf0000000 }, +{ 0x41718080 , 0x20050000 }, +{ 0x417180a0 , 0x600d0000 }, +{ 0x417180a4 , 0x7c0d0000 }, +{ 0x21700dfc , 0xf000 }, +{ 0x1170123e , 0x0 }, +{ 0x11701242 , 0x8 }, +{ 0x11701246 , 0x10 }, +{ 0x1170124a , 0x18 }, +{ 0x1170124e , 0x20 }, +{ 0x11701252 , 0x28 }, +{ 0x11701256 , 0x30 }, +{ 0x1170125a , 0x38 }, +{ 0x40800000 , 0x1027000 }, +{ 0x40801000 , 0x1027000 }, +{ 0x40808500 , 0x420 }, +{ 0x40808840 , 0x8 }, +{ 0x40808844 , 0x8 }, +{ 0x40808848 , 0x8 }, +{ 0x4080884c , 0x8 }, +{ 0x40898020 , 0x404 }, +{ 0x40898004 , 0x0 }, +{ 0x40898028 , 0x5ee05ee }, +{ 0x40898024 , 0x40404040 }, +{ 0x4089802c , 0x5ee05ee }, +{ 0x40898030 , 0x0 }, +{ 0x40898044 , 0xff }, +{ 0x40898034 , 0x0 }, +{ 0x40898420 , 0x404 }, +{ 0x40898404 , 0x101 }, +{ 0x40898428 , 0x5ee05ee }, +{ 0x40898424 , 0x40404040 }, +{ 0x4089842c , 0x5ee05ee }, +{ 0x40898430 , 0x0 }, +{ 0x40898444 , 0xff }, +{ 0x40898434 , 0x0 }, +{ 0x40898820 , 0x404 }, +{ 0x40898804 , 0x202 }, +{ 0x40898828 , 0x5ee05ee }, +{ 0x40898824 , 0x40404040 }, +{ 0x4089882c , 0x5ee05ee }, +{ 0x40898830 , 0x0 }, +{ 0x40898844 , 0xff }, +{ 0x40898834 , 0x0 }, +{ 0x40898c20 , 0x404 }, +{ 0x40898c04 , 0x303 }, +{ 0x40898c28 , 0x5ee05ee }, +{ 0x40898c24 , 0x40404040 }, +{ 0x40898c2c , 0x5ee05ee }, +{ 0x40898c30 , 0x0 }, +{ 0x40898c44 , 0xff }, +{ 0x40898c34 , 0x0 }, +{ 0x40899020 , 0x404 }, +{ 0x40899004 , 0x404 }, +{ 0x40899028 , 0x5ee05ee }, +{ 0x40899024 , 0x40404040 }, +{ 0x4089902c , 0x5ee05ee }, +{ 0x40899030 , 0x0 }, +{ 0x40899044 , 0xff }, +{ 0x40899034 , 0x0 }, +{ 0x40899420 , 0x404 }, +{ 0x40899404 , 0x505 }, +{ 0x40899428 , 0x5ee05ee }, +{ 0x40899424 , 0x40404040 }, +{ 0x4089942c , 0x5ee05ee }, +{ 0x40899430 , 0x0 }, +{ 0x40899444 , 0xff }, +{ 0x40899434 , 0x0 }, +{ 0x40899820 , 0x404 }, +{ 0x40899804 , 0x606 }, +{ 0x40899828 , 0x5ee05ee }, +{ 0x40899824 , 0x40404040 }, +{ 0x4089982c , 0x5ee05ee }, +{ 0x40899830 , 0x0 }, +{ 0x40899844 , 0xff }, +{ 0x40899834 , 0x0 }, +{ 0x40899c20 , 0x404 }, +{ 0x40899c04 , 0x707 }, +{ 0x40899c28 , 0x5ee05ee }, +{ 0x40899c24 , 0x40404040 }, +{ 0x40899c2c , 0x5ee05ee }, +{ 0x40899c30 , 0x0 }, +{ 0x40899c44 , 0xff }, +{ 0x40899c34 , 0x0 }, +{ 0x40890020 , 0x80400 }, +{ 0x40890024 , 0x80410 }, +{ 0x4089000c , 0x20200000 }, +{ 0x40890018 , 0x101d0 }, +{ 0x40890400 , 0x0 }, +{ 0x40890450 , 0x0 }, +{ 0x408904b0 , 0x0 }, +{ 0x408904a0 , 0x70007 }, +{ 0x408904a4 , 0x0 }, +{ 0x408904a8 , 0x0 }, +{ 0x40890908 , 0x1000000 }, +{ 0x40890920 , 0x1400000 }, +{ 0x40890940 , 0x13f013f }, +{ 0x40890960 , 0x280000 }, +{ 0x40890980 , 0x270027 }, +{ 0x408900bc , 0x3 }, +{ 0x408907a4 , 0x0 }, +{ 0x408907a8 , 0xfff0fff }, +{ 0x40890908 , 0x1000001 }, +{ 0x40890924 , 0x3c00280 }, +{ 0x40890944 , 0x13f013f }, +{ 0x40890964 , 0x780050 }, +{ 0x40890984 , 0x270027 }, +{ 0x40890908 , 0x1000002 }, +{ 0x40890928 , 0x6400500 }, +{ 0x40890948 , 0x13f013f }, +{ 0x40890968 , 0xc800a0 }, +{ 0x40890988 , 0x270027 }, +{ 0x408907b8 , 0x2 }, +{ 0x40890908 , 0x1000003 }, +{ 0x4089094c , 0x13f013f }, +{ 0x4089096c , 0x0 }, +{ 0x4089098c , 0x270027 }, +{ 0x40890600 , 0x0 }, +{ 0x40890604 , 0x1 }, +{ 0x4089090c , 0x3f }, +{ 0x40890020 , 0xc0400 }, +{ 0x40890024 , 0xc0410 }, +{ 0x4089003c , 0x12047c5e }, +{ 0x408a1000 , 0x5fc000 }, +{ 0x408a1050 , 0xa015f }, +{ 0x408a118c , 0x60000001 }, +{ 0x408a1868 , 0x4 }, +{ 0x408a186c , 0x4 }, +{ 0x408a1870 , 0x4 }, +{ 0x408a1874 , 0x4 }, +{ 0x408a1878 , 0x4 }, +{ 0x408a187c , 0x4 }, +{ 0x408a18f4 , 0x30807 }, +{ 0x408a18f4 , 0x807 }, +{ 0x408a1c64 , 0x80 }, +{ 0x408a1c68 , 0x80 }, +{ 0x408a1c6c , 0x80 }, +{ 0x408a1c70 , 0x0 }, +{ 0x408a1c74 , 0x0 }, +{ 0x408a1c78 , 0x0 }, +{ 0x408a1c7c , 0x0 }, +{ 0x408a1cf4 , 0x30807 }, +{ 0x408a1cf4 , 0x807 }, +{ 0x3000000 , 0x20 }, +{ 0x82880080 , 0xfff00f3f }, +{ 0x3000000 , 0x20 }, +{ 0x82880100 , 0xfff00f3f }, +{ 0x40880180 , 0x7f1ff1ff }, +{ 0x40880184 , 0xa0c80a8 }, +{ 0x7000000 , 0x1ff }, +{ 0x82883000 , 0x40004 }, +{ 0x4088270c , 0x1ff }, +{ 0x40882714 , 0x200 }, +{ 0x40882708 , 0x200 }, +{ 0x40880080 , 0x7f1ff1ff }, +{ 0x40880100 , 0x7f1ff1ff }, +{ 0x40880400 , 0x2001f }, +{ 0x40880620 , 0x1 }, +{ 0x40880300 , 0x41c1 }, +{ 0x40880380 , 0x400 }, +{ 0x40882700 , 0x1 }, +{ 0x40882704 , 0x1 }, +{ 0x40880990 , 0x1f }, +{ 0x40880084 , 0x7f1ff1ff }, +{ 0x40880104 , 0x7f1ff1ff }, +{ 0x40880404 , 0x20021 }, +{ 0x40880620 , 0x3 }, +{ 0x40880304 , 0x41c1 }, +{ 0x40880384 , 0x400 }, +{ 0x40882020 , 0x1 }, +{ 0x4088202c , 0x1 }, +{ 0x40882700 , 0x2 }, +{ 0x40882704 , 0x2 }, +{ 0x40880990 , 0x1f }, +{ 0x40880088 , 0x7f1ff1ff }, +{ 0x40880108 , 0x7f1ff1ff }, +{ 0x40880408 , 0x20023 }, +{ 0x40880620 , 0x7 }, +{ 0x40880308 , 0x41c1 }, +{ 0x40880388 , 0x400 }, +{ 0x40882040 , 0x2 }, +{ 0x4088204c , 0x2 }, +{ 0x40882700 , 0x3 }, +{ 0x40882704 , 0x3 }, +{ 0x40880990 , 0x1f }, +{ 0x4088008c , 0x7f1ff1ff }, +{ 0x4088010c , 0x7f1ff1ff }, +{ 0x4088040c , 0x20025 }, +{ 0x40880620 , 0xf }, +{ 0x4088030c , 0x41c1 }, +{ 0x4088038c , 0x400 }, +{ 0x40882060 , 0x3 }, +{ 0x4088206c , 0x3 }, +{ 0x40882700 , 0x4 }, +{ 0x40882704 , 0x4 }, +{ 0x40880990 , 0x1f }, +{ 0x40880090 , 0x7f1ff1ff }, +{ 0x40880110 , 0x7f1ff1ff }, +{ 0x40880410 , 0x20027 }, +{ 0x40880620 , 0x1f }, +{ 0x40880310 , 0x41c1 }, +{ 0x40880390 , 0x400 }, +{ 0x40882080 , 0x4 }, +{ 0x4088208c , 0x4 }, +{ 0x40882700 , 0x5 }, +{ 0x40882704 , 0x5 }, +{ 0x40880990 , 0x1f }, +{ 0x40880094 , 0x7f1ff1ff }, +{ 0x40880114 , 0x7f1ff1ff }, +{ 0x40880414 , 0x20029 }, +{ 0x40880620 , 0x3f }, +{ 0x40880314 , 0x41c1 }, +{ 0x40880394 , 0x400 }, +{ 0x408820a0 , 0x5 }, +{ 0x408820ac , 0x5 }, +{ 0x40882700 , 0x6 }, +{ 0x40882704 , 0x6 }, +{ 0x40880990 , 0x1f }, +{ 0x40880098 , 0x7f1ff1ff }, +{ 0x40880118 , 0x7f1ff1ff }, +{ 0x40880418 , 0x2002b }, +{ 0x40880620 , 0x7f }, +{ 0x40880318 , 0x41c1 }, +{ 0x40880398 , 0x400 }, +{ 0x408820c0 , 0x6 }, +{ 0x408820cc , 0x6 }, +{ 0x40882700 , 0x7 }, +{ 0x40882704 , 0x7 }, +{ 0x40880990 , 0x1f }, +{ 0x4088009c , 0x7f1ff1ff }, +{ 0x4088011c , 0x7f1ff1ff }, +{ 0x4088041c , 0x2002d }, +{ 0x40880620 , 0xff }, +{ 0x4088031c , 0x41c1 }, +{ 0x4088039c , 0x400 }, +{ 0x408820e0 , 0x7 }, +{ 0x408820ec , 0x7 }, +{ 0x40882700 , 0x8 }, +{ 0x40882704 , 0x8 }, +{ 0x40880990 , 0x1f }, +{ 0x408800a0 , 0x7f1ff1ff }, +{ 0x40880120 , 0x7f1ff1ff }, +{ 0x40880420 , 0x20035 }, +{ 0x40880620 , 0x1ff }, +{ 0x40880320 , 0x41c1 }, +{ 0x408803a0 , 0x400 }, +{ 0x40882100 , 0x8 }, +{ 0x4088210c , 0x8 }, +{ 0x40882700 , 0x9 }, +{ 0x40882704 , 0x9 }, +{ 0x40880990 , 0x1f }, +{ 0x408800a4 , 0x7f1ff1ff }, +{ 0x40880124 , 0x7f1ff1ff }, +{ 0x40880424 , 0x3001f }, +{ 0x40880620 , 0x3ff }, +{ 0x40880324 , 0x1c1 }, +{ 0x408803a4 , 0x400 }, +{ 0x40882120 , 0x9 }, +{ 0x4088212c , 0x9 }, +{ 0x40882700 , 0xa }, +{ 0x40882704 , 0xa }, +{ 0x40880990 , 0x1f }, +{ 0x408800a8 , 0x7f1ff1ff }, +{ 0x40880128 , 0x7f1ff1ff }, +{ 0x40880428 , 0x30021 }, +{ 0x40880620 , 0x7ff }, +{ 0x40880328 , 0x1c1 }, +{ 0x408803a8 , 0x400 }, +{ 0x40882140 , 0xa }, +{ 0x4088214c , 0xa }, +{ 0x40882700 , 0xb }, +{ 0x40882704 , 0xb }, +{ 0x40880990 , 0x1f }, +{ 0x408800ac , 0x7f1ff1ff }, +{ 0x4088012c , 0x7f1ff1ff }, +{ 0x4088042c , 0x30023 }, +{ 0x40880620 , 0xfff }, +{ 0x4088032c , 0x1c1 }, +{ 0x408803ac , 0x400 }, +{ 0x40882160 , 0xb }, +{ 0x4088216c , 0xb }, +{ 0x40882700 , 0xc }, +{ 0x40882704 , 0xc }, +{ 0x40880990 , 0x1f }, +{ 0x408800b0 , 0x7f1ff1ff }, +{ 0x40880130 , 0x7f1ff1ff }, +{ 0x40880430 , 0x11ae0000 }, +{ 0x408804c0 , 0x1000 }, +{ 0x40880620 , 0x1fff }, +{ 0x40880330 , 0x41c1 }, +{ 0x40882180 , 0xc }, +{ 0x4088218c , 0xc }, +{ 0x40882700 , 0xd }, +{ 0x40882704 , 0xd }, +{ 0x40880990 , 0x1f }, +{ 0x408800b4 , 0x7f1ff1ff }, +{ 0x40880134 , 0x7f1ff1ff }, +{ 0x40880434 , 0x30027 }, +{ 0x40880620 , 0x3fff }, +{ 0x40880334 , 0x1c1 }, +{ 0x408803b4 , 0x400 }, +{ 0x408821a0 , 0xd }, +{ 0x408821ac , 0xd }, +{ 0x40882700 , 0xe }, +{ 0x40882704 , 0xe }, +{ 0x40880990 , 0x1f }, +{ 0x408800b8 , 0x7f1ff1ff }, +{ 0x40880138 , 0x7f1ff1ff }, +{ 0x40880438 , 0x30029 }, +{ 0x40880620 , 0x7fff }, +{ 0x40880338 , 0x1c1 }, +{ 0x408803b8 , 0x400 }, +{ 0x408821c0 , 0xe }, +{ 0x408821cc , 0xe }, +{ 0x40882700 , 0xf }, +{ 0x40882704 , 0xf }, +{ 0x40880990 , 0x1f }, +{ 0x408800bc , 0x7f1ff1ff }, +{ 0x4088013c , 0x7f1ff1ff }, +{ 0x4088043c , 0x3002b }, +{ 0x40880620 , 0xffff }, +{ 0x4088033c , 0x1c1 }, +{ 0x408803bc , 0x400 }, +{ 0x408821e0 , 0xf }, +{ 0x408821ec , 0xf }, +{ 0x40882700 , 0x10 }, +{ 0x40882704 , 0x10 }, +{ 0x40880990 , 0x1f }, +{ 0x408800c0 , 0x7f1ff1ff }, +{ 0x40880140 , 0x7f1ff1ff }, +{ 0x40880440 , 0x3002d }, +{ 0x40880620 , 0x1ffff }, +{ 0x40880340 , 0x1c1 }, +{ 0x408803c0 , 0x400 }, +{ 0x40882200 , 0x10 }, +{ 0x4088220c , 0x10 }, +{ 0x40882700 , 0x11 }, +{ 0x40882704 , 0x11 }, +{ 0x40880990 , 0x1f }, +{ 0x408800c4 , 0x0 }, +{ 0x40880144 , 0x0 }, +{ 0x40880624 , 0x20000 }, +{ 0x40882220 , 0x11 }, +{ 0x4088222c , 0x11 }, +{ 0x40882700 , 0x12 }, +{ 0x40882704 , 0x12 }, +{ 0x40880990 , 0x1f }, +{ 0x40880520 , 0x1 }, +{ 0x40880604 , 0x3f }, +{ 0x40880900 , 0x1 }, +{ 0x40880480 , 0x28 }, +{ 0x408804d0 , 0x15a }, +{ 0x408804d8 , 0xa6 }, +{ 0x408804d4 , 0x15a }, +{ 0x408804dc , 0xa6 }, +{ 0x40880980 , 0x100 }, +{ 0x40880004 , 0x1feff }, +{ 0x40880850 , 0x201 }, +{ 0x4089803c , 0x3 }, +{ 0x4089843c , 0x3 }, +{ 0x4089883c , 0x3 }, +{ 0x40898c3c , 0x3 }, +{ 0x4089903c , 0x3 }, +{ 0x4089943c , 0x3 }, +{ 0x4089983c , 0x3 }, +{ 0x40899c3c , 0x3 }, +{ 0x40880000 , 0x101 }, +{ 0x40c00000 , 0x307 }, +{ 0x4089c000 , 0x1 }, +{ 0x4089d000 , 0x1 }, +{ 0x40800000 , 0x1027001 }, +{ 0x408a8008 , 0x41c000db }, +{ 0x408a8340 , 0x32 }, +{ 0x408b0044 , 0x1 }, +{ 0x408a9008 , 0x41c000db }, +{ 0x408a9340 , 0x32 }, +{ 0x408b0444 , 0x1 }, +{ 0x408aa008 , 0x41c000db }, +{ 0x408aa340 , 0x32 }, +{ 0x408b0844 , 0x1 }, +{ 0x408ab008 , 0x41c000db }, +{ 0x408ab340 , 0x32 }, +{ 0x408b0c44 , 0x1 }, +{ 0x408ac008 , 0x41c000db }, +{ 0x408ac340 , 0x32 }, +{ 0x408b1044 , 0x1 }, diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/rdd_data_structures_auto.c b/arch/arm/mach-bcmbca/xrdp/bcm63146/rdd_data_structures_auto.c new file mode 100644 index 0000000000..0d3f2fa184 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/rdd_data_structures_auto.c @@ -0,0 +1,171 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + + + +/* This is an automated file. Do not edit its contents. */ + + +#include "rdd.h" +#include "ru_types.h" + +#include "rdd_data_structures_auto.h" + +/* >>>RDD_SRAM_PD_FIFO_ADDRESS_ARR */ +uint32_t RDD_SRAM_PD_FIFO_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0x0, +}; +/* <<>>RDD_US_TM_BBH_TX_EGRESS_COUNTER_TABLE_ADDRESS_ARR */ +uint32_t RDD_US_TM_BBH_TX_EGRESS_COUNTER_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0x100, +}; +/* <<>>RDD_DIRECT_PROCESSING_PD_TABLE_ADDRESS_ARR */ +uint32_t RDD_DIRECT_PROCESSING_PD_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0x140, +}; +/* <<>>RDD_CPU_RX_SCRATCHPAD_ADDRESS_ARR */ +uint32_t RDD_CPU_RX_SCRATCHPAD_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0x160, +}; +/* <<>>RDD_CPU_TX_SCRATCHPAD_ADDRESS_ARR */ +uint32_t RDD_CPU_TX_SCRATCHPAD_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0x760, +}; +/* <<>>RDD_BBH_TX_RING_TABLE_ADDRESS_ARR */ +uint32_t RDD_BBH_TX_RING_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xd60, +}; +/* <<>>RDD_CPU_TX_EGRESS_DISPATCHER_CREDIT_TABLE_ADDRESS_ARR */ +uint32_t RDD_CPU_TX_EGRESS_DISPATCHER_CREDIT_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xd70, +}; +/* <<>>RDD_BBH_TX_BB_DESTINATION_TABLE_ADDRESS_ARR */ +uint32_t RDD_BBH_TX_BB_DESTINATION_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xd7c, +}; +/* <<>>RDD_CPU_RX_CFE_SRAM_COUNTERS_ADDRESS_ARR */ +uint32_t RDD_CPU_RX_CFE_SRAM_COUNTERS_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xd80, +}; +/* <<>>RDD_CPU_TX_INGRESS_DISPATCHER_CREDIT_TABLE_ADDRESS_ARR */ +uint32_t RDD_CPU_TX_INGRESS_DISPATCHER_CREDIT_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xdd0, +}; +/* <<>>RDD_TASK_IDX_ADDRESS_ARR */ +uint32_t RDD_TASK_IDX_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xddc, +}; +/* <<>>RDD_CPU_RX_INTERRUPT_SCRATCH_ADDRESS_ARR */ +uint32_t RDD_CPU_RX_INTERRUPT_SCRATCH_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xde0, +}; +/* <<>>RDD_CPU_RX_INTERRUPT_ID_DDR_ADDR_ADDRESS_ARR */ +uint32_t RDD_CPU_RX_INTERRUPT_ID_DDR_ADDR_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xde8, +}; +/* <<>>RDD_PKT_BUFFER_ALLOC_MAP_TABLE_ADDRESS_ARR */ +uint32_t RDD_PKT_BUFFER_ALLOC_MAP_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xdf0, +}; +/* <<>>RDD_CPU_RX_LAST_READ_INDEX_ADDRESS_ARR */ +uint32_t RDD_CPU_RX_LAST_READ_INDEX_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xdfc, +}; +/* <<>>RDD_SRAM_DUMMY_STORE_ADDRESS_ARR */ +uint32_t RDD_SRAM_DUMMY_STORE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xdfe, +}; +/* <<>>RDD_CPU_TX_CFE_SRAM_COUNTERS_ADDRESS_ARR */ +uint32_t RDD_CPU_TX_CFE_SRAM_COUNTERS_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xe00, +}; +/* <<>>RDD_CPU_RX_BB_REPLY_ADDR_TABLE_ADDRESS_ARR */ +uint32_t RDD_CPU_RX_BB_REPLY_ADDR_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xe50, +}; +/* <<>>RDD_CPU_TX_BB_REPLY_ADDR_TABLE_ADDRESS_ARR */ +uint32_t RDD_CPU_TX_BB_REPLY_ADDR_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xe58, +}; +/* <<>>RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_ADDRESS_ARR */ +uint32_t RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xe80, +}; +/* <<>>RDD_REGISTERS_BUFFER_ADDRESS_ARR */ +uint32_t RDD_REGISTERS_BUFFER_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0xec0, +}; +/* <<>>RDD_RX_FLOW_TABLE_ADDRESS_ARR */ +uint32_t RDD_RX_FLOW_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM] = { + 0x1000, +}; +/* <<>>SRAM_PD_FIFO */ + +/* >>>RDD_PROCESSING_TX_DESCRIPTOR_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t headroom :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dont_agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mc_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reprocess :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t force_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t second_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_headroom :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_dont_agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_mc_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reprocess :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_force_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_second_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_headroom :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_dont_agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_mc_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reprocess :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_force_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_second_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_headroom :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_dont_agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_mc_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reprocess :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_force_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_second_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_headroom :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_dont_agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_mc_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_reprocess :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_force_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_second_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 1 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 2 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cong_state_stream :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t union3 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cong_state_stream union */ + uint32_t cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cong_state_stream union */ + uint32_t reserved1_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t bn1_first :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of union3 union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t stream_id :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cong_state_stream union */ + uint32_t reserved2_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved1 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of union3 union */ + uint32_t abs_1 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of union3 union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_cong_state_stream :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lag_port :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t lan_vport :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved3_union3 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_cong_state_stream :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_vport :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t flow_id :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved4_union3 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 3 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sop_fpm :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t bn_fpm :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bn_num :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t sop :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint16_t bn0_first ; /* Member of payload_offset_sop union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t abs_0 :29 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; +#else + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t second_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t force_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reprocess :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mc_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dont_agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t headroom :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_second_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_force_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reprocess :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_mc_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_dont_agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_headroom :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_second_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_force_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reprocess :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_mc_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_dont_agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_headroom :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_second_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_force_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reprocess :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_mc_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_dont_agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_headroom :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_second_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_force_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_reprocess :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_mc_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_dont_agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_headroom :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 1 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_priority :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 2 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t union3 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cong_state_stream :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t bn1_first :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of union3 union */ + uint32_t flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved1_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cong_state_stream union */ + uint32_t cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cong_state_stream union */ + uint32_t reserved1_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved1 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of union3 union */ + uint32_t abs_1 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of union3 union */ + uint32_t source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved2_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t stream_id :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cong_state_stream union */ + uint32_t reserved2_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_union3 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lag_port :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t lan_vport :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved3_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_cong_state_stream :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_union3 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_vport :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t flow_id :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved4_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_cong_state_stream :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 3 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t sop_fpm :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t bn_fpm :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t reserved1_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t bn_num :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t sop :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint16_t bn0_first ; /* Member of payload_offset_sop union */ + uint32_t reserved2_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t abs_0 :29 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t reserved3_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PROCESSING_TX_DESCRIPTOR_DTS; + +typedef union +{ + uint32_t word_val[4]; + uint64_t dword_val64[2]; + RDD_PROCESSING_TX_DESCRIPTOR_DTS fields; +} PROCESSING_TX_DESCRIPTOR_STRUCT; +#define RDD_PROCESSING_TX_DESCRIPTOR_VALID_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 7, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_VALID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 7, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_HEADROOM_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 6, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_HEADROOM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 6, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_HEADROOM_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_HEADROOM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_DONT_AGG_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 5, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_DONT_AGG_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 5, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_DONT_AGG_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_DONT_AGG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_MC_COPY_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 4, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_MC_COPY_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 4, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_MC_COPY_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_MC_COPY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_REPROCESS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 3, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_REPROCESS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 3, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_REPROCESS_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_REPROCESS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_COLOR_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 2, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_COLOR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 2, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_COLOR_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_COLOR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_FORCE_COPY_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 1, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_FORCE_COPY_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 1, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_FORCE_COPY_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_FORCE_COPY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_SECOND_LEVEL_Q_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 0, 9, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_SECOND_LEVEL_Q_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS), 0, 9, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_SECOND_LEVEL_Q_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 9, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_SECOND_LEVEL_Q_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 9, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_FIRST_LEVEL_Q_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 2, 7, 9, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_FIRST_LEVEL_Q_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 2, 7, 9, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_FIRST_LEVEL_Q_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 7, 9, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_FIRST_LEVEL_Q_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 7, 9, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLAG_1588_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 3, 6, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLAG_1588_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 3, 6, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLAG_1588_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 6, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLAG_1588_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 6, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_COHERENT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 3, 5, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_COHERENT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 3, 5, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_COHERENT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 5, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_COHERENT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 5, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_HN_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 3, 0, 5, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_HN_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 3, 0, 5, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_HN_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 5, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_HN_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 5, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_SERIAL_NUM_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 4, 6, 10, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_SERIAL_NUM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 4, 6, 10, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_SERIAL_NUM_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 6, 10, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_SERIAL_NUM_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 6, 10, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_PRIORITY_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 5, 5, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_PRIORITY_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 5, 5, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_PRIORITY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 5, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_PRIORITY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 5, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_INGRESS_CONG_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 5, 4, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_INGRESS_CONG_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 5, 4, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_INGRESS_CONG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 4, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_INGRESS_CONG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 4, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 5, 3, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 5, 3, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 3, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 3, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_PACKET_LENGTH_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 6, 0, 14, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_PACKET_LENGTH_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 6, 0, 14, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_DROP_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 7, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_DROP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 7, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_DROP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_DROP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_CONG_STATE_STREAM_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 4, 3, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_CONG_STATE_STREAM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 4, 3, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_CONG_STATE_STREAM_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 3, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_CONG_STATE_STREAM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 3, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_TARGET_MEM_1_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 6, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_TARGET_MEM_1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 6, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_TARGET_MEM_1_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_TARGET_MEM_1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_CONG_STATE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 4, 2, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_CONG_STATE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 4, 2, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_CONG_STATE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 2, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_CONG_STATE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 2, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_STREAM_ID_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 4, 3, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_STREAM_ID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 4, 3, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_STREAM_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 3, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_STREAM_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 3, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAN_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAN_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAN_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 3, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAN_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 3, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_INGRESS_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 8, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_INGRESS_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 8, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_INGRESS_PORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 8, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_INGRESS_PORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 8, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLOW_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 8, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLOW_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 8, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLOW_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 8, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLOW_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 8, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOURCE_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 8, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOURCE_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 8, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOURCE_PORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 8, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOURCE_PORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 8, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAG_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 1, 2, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAG_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 1, 2, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAG_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 1, 2, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAG_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 1, 2, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAN_VPORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 6, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAN_VPORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 6, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAN_VPORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 6, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_LAN_VPORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 6, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_IS_VPORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 2, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_IS_VPORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 2, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_IS_VPORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 2, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_IS_VPORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 2, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLOW_ID_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 7, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLOW_ID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 3, 7, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLOW_ID_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 7, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_FLOW_ID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 7, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_UNION3_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 0, 19, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_UNION3_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 0, 19, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_UNION3_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 19, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_UNION3_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 19, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN1_FIRST_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 0, 19, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN1_FIRST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 8, 0, 19, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN1_FIRST_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 19, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN1_FIRST_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 19, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_1_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 10, 0, 11, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 10, 0, 11, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_1_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 10, 0, 11, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_1_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 10, 0, 11, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_AGG_PD_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 7, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_AGG_PD_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 7, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_AGG_PD_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_AGG_PD_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_TARGET_MEM_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 6, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_TARGET_MEM_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 6, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_TARGET_MEM_0_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 6, 1, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_TARGET_MEM_0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 6, 1, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 0, 30, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 0, 30, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 30, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 30, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOP_FPM_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 3, 11, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOP_FPM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 3, 11, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOP_FPM_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 3, 11, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOP_FPM_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 3, 11, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN_FPM_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 0, 19, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN_FPM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 0, 19, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN_FPM_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 19, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN_FPM_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 19, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN_NUM_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 7, 7, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN_NUM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 7, 7, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN_NUM_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 7, 7, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN_NUM_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 7, 7, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOP_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 13, 0, 7, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 13, 0, 7, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 7, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_SOP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 7, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN0_FIRST_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 14, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN0_FIRST_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 14, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN0_FIRST_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_BN0_FIRST_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 0, 29, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_TX_DESCRIPTOR_DTS) + 12, 0, 29, v) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_0_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 29, r) +#define RDD_PROCESSING_TX_DESCRIPTOR_ABS_0_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 29, v) +/* <<>>US_TM_BBH_TX_EGRESS_COUNTER_TABLE */ + +/* >>>RDD_BBH_TX_EGRESS_COUNTER_ENTRY_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint8_t counter ; + uint32_t reserved0 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 ; +#else + uint32_t reserved0 :24 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t counter ; + uint32_t reserved1 ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_TX_EGRESS_COUNTER_ENTRY_DTS; + +typedef union +{ + uint32_t word_val[2]; + uint64_t dword_val64[1]; + RDD_BBH_TX_EGRESS_COUNTER_ENTRY_DTS fields; +} BBH_TX_EGRESS_COUNTER_ENTRY_STRUCT; +#define RDD_BBH_TX_EGRESS_COUNTER_ENTRY_COUNTER_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_BBH_TX_EGRESS_COUNTER_ENTRY_DTS), r) +#define RDD_BBH_TX_EGRESS_COUNTER_ENTRY_COUNTER_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_EGRESS_COUNTER_ENTRY_DTS), v) +#define RDD_BBH_TX_EGRESS_COUNTER_ENTRY_COUNTER_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_BBH_TX_EGRESS_COUNTER_ENTRY_COUNTER_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +/* <<>>DIRECT_PROCESSING_PD_TABLE */ + +/* >>>RDD_PROCESSING_RX_DESCRIPTOR_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t pd_info ; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t key_index :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t fragment_type :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t options :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t reserved0 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t ctrl_key_index :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t ctrl_fragment_type :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t sfc :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t reserved1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t g9991_tci_sof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t g9991_tci_eof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t g9991_tci_const :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t g9991_tci_sid_1_0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint8_t g9991_tci_sid_9_2 ; /* Member of pd_info union */ + uint16_t g9991_length_time ; /* Member of pd_info union */ + }; + /* Sub Union 4 */ + struct{ + uint32_t timestamp ; /* Member of pd_info union */ + }; + }; + /* Union WORD 1 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ploam :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_or_dsl :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type_or_cpu_tx :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_ploam :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of abs_or_dsl union */ + uint32_t reserved1_reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of error_type_or_cpu_tx union */ + uint32_t reserved1_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_ploam :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t xdsl :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of abs_or_dsl union */ + uint32_t reserved2_reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_tx :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of error_type_or_cpu_tx union */ + uint32_t reserved2 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of error_type_or_cpu_tx union */ + uint32_t reserved2_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ploam :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs_or_dsl :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_25_28 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of error_type_or_cpu_tx union */ + uint32_t reserved3_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_ploam :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_abs_or_dsl :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_error_type_or_cpu_tx :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 2 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t bn1_last_or_abs1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t bn1_last :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_last_or_abs1 union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t abs1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_last_or_abs1 union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_bn1_last_or_abs1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_bn1_last_or_abs1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 3 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sop_fpm :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t bn_fpm :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bn_num :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t sop :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint16_t bn0_first ; /* Member of payload_offset_sop union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; +#else + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t pd_info ; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t key_index :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t fragment_type :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t options :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t reserved0 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t ctrl_key_index :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t ctrl_fragment_type :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t sfc :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t reserved1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t g9991_tci_sof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t g9991_tci_eof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t g9991_tci_const :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint32_t g9991_tci_sid_1_0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of pd_info union */ + uint8_t g9991_tci_sid_9_2 ; /* Member of pd_info union */ + uint16_t g9991_length_time ; /* Member of pd_info union */ + }; + /* Sub Union 4 */ + struct{ + uint32_t timestamp ; /* Member of pd_info union */ + }; + }; + /* Union WORD 1 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type_or_cpu_tx :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_or_dsl :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ploam :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error_type :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of error_type_or_cpu_tx union */ + uint32_t reserved1_reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of abs_or_dsl union */ + uint32_t reserved1_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_ploam :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_tx :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of error_type_or_cpu_tx union */ + uint32_t reserved2 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of error_type_or_cpu_tx union */ + uint32_t reserved2_reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t xdsl :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of abs_or_dsl union */ + uint32_t reserved2_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_ploam :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_25_28 :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of error_type_or_cpu_tx union */ + uint32_t reserved3_reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs_or_dsl :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ploam :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_error_type_or_cpu_tx :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_abs_or_dsl :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_ploam :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_serial_num :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 2 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t bn1_last_or_abs1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t bn1_last :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_last_or_abs1 union */ + uint32_t flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved1_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t abs1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_last_or_abs1 union */ + uint32_t source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved2_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_bn1_last_or_abs1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_bn1_last_or_abs1 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 3 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t sop_fpm :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t bn_fpm :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t reserved1_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t bn_num :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t sop :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint16_t bn0_first ; /* Member of payload_offset_sop union */ + uint32_t reserved2_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 4 */ + struct{ + uint32_t reserved4_payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved4_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PROCESSING_RX_DESCRIPTOR_DTS; + +typedef union +{ + uint32_t word_val[4]; + uint64_t dword_val64[2]; + RDD_PROCESSING_RX_DESCRIPTOR_DTS fields; +} PROCESSING_RX_DESCRIPTOR_STRUCT; +#define RDD_PROCESSING_RX_DESCRIPTOR_PD_INFO_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), r) +#define RDD_PROCESSING_RX_DESCRIPTOR_PD_INFO_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), v) +#define RDD_PROCESSING_RX_DESCRIPTOR_PD_INFO_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_PD_INFO_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_KEY_INDEX_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 6, 2, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_KEY_INDEX_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 6, 2, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_KEY_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 2, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_KEY_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 2, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_FRAGMENT_TYPE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 5, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_FRAGMENT_TYPE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 5, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_FRAGMENT_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_FRAGMENT_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_OPTIONS_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 11, 18, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_OPTIONS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 11, 18, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_OPTIONS_READ(r, p) FIELD_MREAD_32((uint8_t *)p, 11, 18, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_OPTIONS_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p, 11, 18, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_CTRL_KEY_INDEX_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 6, 2, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_CTRL_KEY_INDEX_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 6, 2, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_CTRL_KEY_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 2, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_CTRL_KEY_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 2, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_CTRL_FRAGMENT_TYPE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 5, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_CTRL_FRAGMENT_TYPE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 5, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_CTRL_FRAGMENT_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_CTRL_FRAGMENT_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_SFC_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 3, 10, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_SFC_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 3, 10, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_SFC_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 3, 10, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_SFC_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 3, 10, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SOF_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 7, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SOF_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 7, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SOF_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SOF_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_EOF_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 6, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_EOF_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 6, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_EOF_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_EOF_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_CONST_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 2, 4, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_CONST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 2, 4, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_CONST_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 4, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_CONST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 4, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SID_1_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 0, 2, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SID_1_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), 0, 2, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SID_1_0_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 2, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SID_1_0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 2, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SID_9_2_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SID_9_2_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SID_9_2_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_TCI_SID_9_2_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_LENGTH_TIME_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 2, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_LENGTH_TIME_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 2, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_LENGTH_TIME_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_G9991_LENGTH_TIME_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_TIMESTAMP_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), r) +#define RDD_PROCESSING_RX_DESCRIPTOR_TIMESTAMP_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS), v) +#define RDD_PROCESSING_RX_DESCRIPTOR_TIMESTAMP_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_TIMESTAMP_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_SERIAL_NUM_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 4, 6, 10, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_SERIAL_NUM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 4, 6, 10, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_SERIAL_NUM_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 6, 10, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_SERIAL_NUM_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 6, 10, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_PLOAM_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 5, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_PLOAM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 5, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_PLOAM_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 5, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_PLOAM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 5, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_INGRESS_CONG_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 4, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_INGRESS_CONG_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 4, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_INGRESS_CONG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 4, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_INGRESS_CONG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 4, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_OR_DSL_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 3, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_OR_DSL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 3, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_OR_DSL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 3, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_OR_DSL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 3, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 3, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 3, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 3, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 3, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_XDSL_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 3, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_XDSL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 3, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_XDSL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 3, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_XDSL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 3, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_TYPE_OR_CPU_TX_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 4, 14, 4, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_TYPE_OR_CPU_TX_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 4, 14, 4, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_TYPE_OR_CPU_TX_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 14, 4, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_TYPE_OR_CPU_TX_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 14, 4, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_TYPE_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 4, 14, 4, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_TYPE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 4, 14, 4, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_TYPE_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 14, 4, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_TYPE_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 14, 4, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_CPU_TX_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 1, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_CPU_TX_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 5, 1, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_CPU_TX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 1, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_CPU_TX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 1, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_25_28_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 4, 14, 4, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_25_28_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 4, 14, 4, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_25_28_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 14, 4, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS_25_28_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 14, 4, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_PACKET_LENGTH_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 6, 0, 14, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_PACKET_LENGTH_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 6, 0, 14, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 7, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 7, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_TARGET_MEM_1_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 6, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_TARGET_MEM_1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 6, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_TARGET_MEM_1_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_TARGET_MEM_1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_CONG_STATE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 4, 2, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_CONG_STATE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 4, 2, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_CONG_STATE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 2, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_CONG_STATE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 2, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_LAN_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 3, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_LAN_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 3, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_LAN_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 3, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_LAN_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 3, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_INGRESS_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 3, 8, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_INGRESS_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 3, 8, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_INGRESS_PORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 8, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_INGRESS_PORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 8, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_FLOW_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 3, 8, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_FLOW_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 3, 8, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_FLOW_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 8, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_FLOW_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 8, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOURCE_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 3, 8, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOURCE_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 3, 8, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOURCE_PORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 8, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOURCE_PORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 8, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN1_LAST_OR_ABS1_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 0, 19, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN1_LAST_OR_ABS1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 0, 19, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN1_LAST_OR_ABS1_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 19, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN1_LAST_OR_ABS1_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 19, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN1_LAST_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 0, 19, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN1_LAST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 0, 19, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN1_LAST_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 19, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN1_LAST_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 19, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS1_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 0, 19, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 8, 0, 19, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS1_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 19, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_ABS1_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 19, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_AGG_PD_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 7, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_AGG_PD_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 7, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_AGG_PD_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_AGG_PD_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_TARGET_MEM_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 6, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_TARGET_MEM_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 6, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_TARGET_MEM_0_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 6, 1, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_TARGET_MEM_0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 6, 1, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 0, 30, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 0, 30, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 30, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 30, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOP_FPM_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 3, 11, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOP_FPM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 3, 11, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOP_FPM_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 3, 11, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOP_FPM_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 3, 11, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN_FPM_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 0, 19, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN_FPM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 0, 19, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN_FPM_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 19, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN_FPM_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 19, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN_NUM_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 7, 7, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN_NUM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 12, 7, 7, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN_NUM_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 7, 7, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN_NUM_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 7, 7, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOP_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 13, 0, 7, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 13, 0, 7, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 7, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_SOP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 7, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN0_FIRST_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 14, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN0_FIRST_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PROCESSING_RX_DESCRIPTOR_DTS) + 14, v) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN0_FIRST_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_PROCESSING_RX_DESCRIPTOR_BN0_FIRST_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +/* <<>>CPU_RX_SCRATCHPAD */ + +/* >>>RDD_BYTES_4_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t bits ; +#else + uint32_t bits ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BYTES_4_DTS; + +typedef union +{ + uint32_t word_val[1]; + RDD_BYTES_4_DTS fields; +} BYTES_4_STRUCT; +#define RDD_BYTES_4_BITS_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_BYTES_4_DTS), r) +#define RDD_BYTES_4_BITS_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_BYTES_4_DTS), v) +#define RDD_BYTES_4_BITS_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_BYTES_4_BITS_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +/* <<>>CPU_TX_SCRATCHPAD */ + +#define RDD_CPU_TX_SCRATCHPAD_SIZE 384 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_CPU_TX_SCRATCHPAD_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_SCRATCHPAD_DTS; + +extern uint32_t RDD_CPU_TX_SCRATCHPAD_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_CPU_TX_SCRATCHPAD_PTR(core_id) ( RDD_CPU_TX_SCRATCHPAD_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_CPU_TX_SCRATCHPAD_ADDRESS_ARR[core_id] )) + +/* <<>>BBH_TX_RING_TABLE */ + +/* >>>RDD_BBH_TX_DESCRIPTOR_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t sof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t g9991_const :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sid_1_0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t sid_9_2 ; + uint16_t frag_length ; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_sof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_eof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_g9991_const :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_sid_1_0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved1_sid_9_2 ; + uint16_t reserved1_frag_length ; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_sof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_eof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_g9991_const :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_sid_1_0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved2_sid_9_2 ; + uint16_t reserved2_frag_length ; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_sof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_eof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_g9991_const :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_sid_1_0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved3_sid_9_2 ; + uint16_t reserved3_frag_length ; + }; + }; + /* Union WORD 1 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t last :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mc_header_size :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fpm_free_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t g9991_frag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_last :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_mc_header_size :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_fpm_free_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_g9991_frag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_last :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_mc_header_size :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_fpm_free_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_g9991_frag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_last :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_mc_header_size :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_fpm_free_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_g9991_frag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 2 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t buffer_number_1_or_abs_2 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t bn1_first :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of buffer_number_1_or_abs_2 union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved1 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of buffer_number_1_or_abs_2 union */ + uint32_t abs_1 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of buffer_number_1_or_abs_2 union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_buffer_number_1_or_abs_2 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 3 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sop_fpm :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t bn_fpm :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bn_num :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t sop :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint16_t bn0_first ; /* Member of payload_offset_sop union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t abs_0 :29 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + }; + }; +#else + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint16_t frag_length ; + uint8_t sid_9_2 ; + uint32_t sid_1_0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t g9991_const :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t eof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint16_t reserved1_frag_length ; + uint8_t reserved1_sid_9_2 ; + uint32_t reserved1_sid_1_0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_g9991_const :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_eof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_sof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint16_t reserved2_frag_length ; + uint8_t reserved2_sid_9_2 ; + uint32_t reserved2_sid_1_0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_g9991_const :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_eof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_sof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint16_t reserved3_frag_length ; + uint8_t reserved3_sid_9_2 ; + uint32_t reserved3_sid_1_0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_g9991_const :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_eof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_sof :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 1 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t g9991_frag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fpm_free_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mc_header_size :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t last :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_g9991_frag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_fpm_free_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_mc_header_size :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_last :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_g9991_frag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_fpm_free_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_mc_header_size :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_last :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ingress_cong :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_hn :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_coherent :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_g9991_frag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_fpm_free_dis :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_mc_header_size :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_last :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 2 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t buffer_number_1_or_abs_2 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t bn1_first :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of buffer_number_1_or_abs_2 union */ + uint32_t flow :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved1_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved1 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of buffer_number_1_or_abs_2 union */ + uint32_t abs_1 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of buffer_number_1_or_abs_2 union */ + uint32_t source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of ingress_port union */ + uint32_t reserved2_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_buffer_number_1_or_abs_2 :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_ingress_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_cong_state :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_target_mem_1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 3 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t payload_offset_sop :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t sop_fpm :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t bn_fpm :19 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t reserved1_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t bn_num :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t sop :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint16_t bn0_first ; /* Member of payload_offset_sop union */ + uint32_t reserved2_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t abs_0 :29 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_sop union */ + uint32_t reserved3_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBH_TX_DESCRIPTOR_DTS; + +typedef union +{ + uint32_t word_val[4]; + uint64_t dword_val64[2]; + RDD_BBH_TX_DESCRIPTOR_DTS fields; +} BBH_TX_DESCRIPTOR_STRUCT; +#define RDD_BBH_TX_DESCRIPTOR_SOF_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS), 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_SOF_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS), 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_SOF_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_SOF_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_EOF_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS), 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_EOF_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS), 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_EOF_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_EOF_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_G9991_CONST_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS), 2, 4, r) +#define RDD_BBH_TX_DESCRIPTOR_G9991_CONST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS), 2, 4, v) +#define RDD_BBH_TX_DESCRIPTOR_G9991_CONST_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 4, r) +#define RDD_BBH_TX_DESCRIPTOR_G9991_CONST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 4, v) +#define RDD_BBH_TX_DESCRIPTOR_SID_1_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS), 0, 2, r) +#define RDD_BBH_TX_DESCRIPTOR_SID_1_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS), 0, 2, v) +#define RDD_BBH_TX_DESCRIPTOR_SID_1_0_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 2, r) +#define RDD_BBH_TX_DESCRIPTOR_SID_1_0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 2, v) +#define RDD_BBH_TX_DESCRIPTOR_SID_9_2_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 1, r) +#define RDD_BBH_TX_DESCRIPTOR_SID_9_2_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 1, v) +#define RDD_BBH_TX_DESCRIPTOR_SID_9_2_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_BBH_TX_DESCRIPTOR_SID_9_2_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_BBH_TX_DESCRIPTOR_FRAG_LENGTH_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 2, r) +#define RDD_BBH_TX_DESCRIPTOR_FRAG_LENGTH_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 2, v) +#define RDD_BBH_TX_DESCRIPTOR_FRAG_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_BBH_TX_DESCRIPTOR_FRAG_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_BBH_TX_DESCRIPTOR_LAST_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_LAST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_LAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_LAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_MC_HEADER_SIZE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_MC_HEADER_SIZE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_MC_HEADER_SIZE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_MC_HEADER_SIZE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_FPM_FREE_DIS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 5, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_FPM_FREE_DIS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 5, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_FPM_FREE_DIS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 5, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_FPM_FREE_DIS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 5, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_G9991_FRAG_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 4, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_G9991_FRAG_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 4, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_G9991_FRAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 4, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_G9991_FRAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 4, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_FLAG_1588_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 3, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_FLAG_1588_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 3, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_FLAG_1588_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 3, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_FLAG_1588_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 3, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_COHERENT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 2, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_COHERENT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 2, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_COHERENT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 2, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_COHERENT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 2, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_HN_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 5, 5, r) +#define RDD_BBH_TX_DESCRIPTOR_HN_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 4, 5, 5, v) +#define RDD_BBH_TX_DESCRIPTOR_HN_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 5, 5, r) +#define RDD_BBH_TX_DESCRIPTOR_HN_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 5, 5, v) +#define RDD_BBH_TX_DESCRIPTOR_INGRESS_CONG_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 5, 4, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_INGRESS_CONG_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 5, 4, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_INGRESS_CONG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 4, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_INGRESS_CONG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 4, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_ABS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 5, 3, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_ABS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 5, 3, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_ABS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 3, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_ABS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 3, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 6, 0, 14, r) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 6, 0, 14, v) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_BBH_TX_DESCRIPTOR_ERROR_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_ERROR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_1_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_1_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_CONG_STATE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 4, 2, r) +#define RDD_BBH_TX_DESCRIPTOR_CONG_STATE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 4, 2, v) +#define RDD_BBH_TX_DESCRIPTOR_CONG_STATE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 2, r) +#define RDD_BBH_TX_DESCRIPTOR_CONG_STATE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 2, v) +#define RDD_BBH_TX_DESCRIPTOR_LAN_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 3, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_LAN_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 3, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_LAN_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 3, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_LAN_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 3, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_INGRESS_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 3, 8, r) +#define RDD_BBH_TX_DESCRIPTOR_INGRESS_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 3, 8, v) +#define RDD_BBH_TX_DESCRIPTOR_INGRESS_PORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 8, r) +#define RDD_BBH_TX_DESCRIPTOR_INGRESS_PORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 8, v) +#define RDD_BBH_TX_DESCRIPTOR_FLOW_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 3, 8, r) +#define RDD_BBH_TX_DESCRIPTOR_FLOW_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 3, 8, v) +#define RDD_BBH_TX_DESCRIPTOR_FLOW_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 8, r) +#define RDD_BBH_TX_DESCRIPTOR_FLOW_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 8, v) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 3, 8, r) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 3, 8, v) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_PORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 3, 8, r) +#define RDD_BBH_TX_DESCRIPTOR_SOURCE_PORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 3, 8, v) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_1_OR_ABS_2_READ_G(r, g, idx)GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 0, 19, r) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_1_OR_ABS_2_WRITE_G(v, g, idx)GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 0, 19, v) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_1_OR_ABS_2_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 19, r) +#define RDD_BBH_TX_DESCRIPTOR_BUFFER_NUMBER_1_OR_ABS_2_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 19, v) +#define RDD_BBH_TX_DESCRIPTOR_BN1_FIRST_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 0, 19, r) +#define RDD_BBH_TX_DESCRIPTOR_BN1_FIRST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 8, 0, 19, v) +#define RDD_BBH_TX_DESCRIPTOR_BN1_FIRST_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 19, r) +#define RDD_BBH_TX_DESCRIPTOR_BN1_FIRST_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 19, v) +#define RDD_BBH_TX_DESCRIPTOR_ABS_1_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 10, 0, 11, r) +#define RDD_BBH_TX_DESCRIPTOR_ABS_1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 10, 0, 11, v) +#define RDD_BBH_TX_DESCRIPTOR_ABS_1_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 10, 0, 11, r) +#define RDD_BBH_TX_DESCRIPTOR_ABS_1_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 10, 0, 11, v) +#define RDD_BBH_TX_DESCRIPTOR_AGG_PD_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_AGG_PD_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_AGG_PD_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_AGG_PD_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_0_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 6, 1, r) +#define RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 6, 1, v) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 0, 30, r) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 0, 30, v) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 30, r) +#define RDD_BBH_TX_DESCRIPTOR_PAYLOAD_OFFSET_SOP_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 30, v) +#define RDD_BBH_TX_DESCRIPTOR_SOP_FPM_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 3, 11, r) +#define RDD_BBH_TX_DESCRIPTOR_SOP_FPM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 3, 11, v) +#define RDD_BBH_TX_DESCRIPTOR_SOP_FPM_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 3, 11, r) +#define RDD_BBH_TX_DESCRIPTOR_SOP_FPM_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 3, 11, v) +#define RDD_BBH_TX_DESCRIPTOR_BN_FPM_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 0, 19, r) +#define RDD_BBH_TX_DESCRIPTOR_BN_FPM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 0, 19, v) +#define RDD_BBH_TX_DESCRIPTOR_BN_FPM_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 19, r) +#define RDD_BBH_TX_DESCRIPTOR_BN_FPM_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 19, v) +#define RDD_BBH_TX_DESCRIPTOR_BN_NUM_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 7, 7, r) +#define RDD_BBH_TX_DESCRIPTOR_BN_NUM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 7, 7, v) +#define RDD_BBH_TX_DESCRIPTOR_BN_NUM_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 7, 7, r) +#define RDD_BBH_TX_DESCRIPTOR_BN_NUM_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 7, 7, v) +#define RDD_BBH_TX_DESCRIPTOR_SOP_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 13, 0, 7, r) +#define RDD_BBH_TX_DESCRIPTOR_SOP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 13, 0, 7, v) +#define RDD_BBH_TX_DESCRIPTOR_SOP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 7, r) +#define RDD_BBH_TX_DESCRIPTOR_SOP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 7, v) +#define RDD_BBH_TX_DESCRIPTOR_BN0_FIRST_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 14, r) +#define RDD_BBH_TX_DESCRIPTOR_BN0_FIRST_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 14, v) +#define RDD_BBH_TX_DESCRIPTOR_BN0_FIRST_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_BBH_TX_DESCRIPTOR_BN0_FIRST_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_BBH_TX_DESCRIPTOR_ABS_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 0, 29, r) +#define RDD_BBH_TX_DESCRIPTOR_ABS_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_BBH_TX_DESCRIPTOR_DTS) + 12, 0, 29, v) +#define RDD_BBH_TX_DESCRIPTOR_ABS_0_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 29, r) +#define RDD_BBH_TX_DESCRIPTOR_ABS_0_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 29, v) +/* <<>>CPU_TX_EGRESS_DISPATCHER_CREDIT_TABLE */ + +#define RDD_CPU_TX_EGRESS_DISPATCHER_CREDIT_TABLE_SIZE 3 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_CPU_TX_EGRESS_DISPATCHER_CREDIT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_EGRESS_DISPATCHER_CREDIT_TABLE_DTS; + +extern uint32_t RDD_CPU_TX_EGRESS_DISPATCHER_CREDIT_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_CPU_TX_EGRESS_DISPATCHER_CREDIT_TABLE_PTR(core_id) ( RDD_CPU_TX_EGRESS_DISPATCHER_CREDIT_TABLE_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_CPU_TX_EGRESS_DISPATCHER_CREDIT_TABLE_ADDRESS_ARR[core_id] )) + +/* <<>>BBH_TX_BB_DESTINATION_TABLE */ + +/* >>>RDD_BB_DESTINATION_ENTRY_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t bb_destination ; +#else + uint32_t bb_destination ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BB_DESTINATION_ENTRY_DTS; + +typedef union +{ + uint32_t word_val[1]; + RDD_BB_DESTINATION_ENTRY_DTS fields; +} BB_DESTINATION_ENTRY_STRUCT; +#define RDD_BB_DESTINATION_ENTRY_BB_DESTINATION_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_BB_DESTINATION_ENTRY_DTS), r) +#define RDD_BB_DESTINATION_ENTRY_BB_DESTINATION_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_BB_DESTINATION_ENTRY_DTS), v) +#define RDD_BB_DESTINATION_ENTRY_BB_DESTINATION_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_BB_DESTINATION_ENTRY_BB_DESTINATION_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +/* <<>>CPU_RX_CFE_SRAM_COUNTERS */ + +/* >>>RDD_PACKETS_AND_BYTES_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t packets ; + uint32_t bytes ; +#else + uint32_t packets ; + uint32_t bytes ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PACKETS_AND_BYTES_DTS; + +typedef union +{ + uint32_t word_val[2]; + uint64_t dword_val64[1]; + RDD_PACKETS_AND_BYTES_DTS fields; +} PACKETS_AND_BYTES_STRUCT; +#define RDD_PACKETS_AND_BYTES_PACKETS_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PACKETS_AND_BYTES_DTS), r) +#define RDD_PACKETS_AND_BYTES_PACKETS_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PACKETS_AND_BYTES_DTS), v) +#define RDD_PACKETS_AND_BYTES_PACKETS_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_PACKETS_AND_BYTES_PACKETS_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_PACKETS_AND_BYTES_BYTES_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PACKETS_AND_BYTES_DTS) + 4, r) +#define RDD_PACKETS_AND_BYTES_BYTES_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PACKETS_AND_BYTES_DTS) + 4, v) +#define RDD_PACKETS_AND_BYTES_BYTES_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_PACKETS_AND_BYTES_BYTES_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +/* <<>>CPU_TX_INGRESS_DISPATCHER_CREDIT_TABLE */ + +#define RDD_CPU_TX_INGRESS_DISPATCHER_CREDIT_TABLE_SIZE 3 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_CPU_TX_INGRESS_DISPATCHER_CREDIT_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_INGRESS_DISPATCHER_CREDIT_TABLE_DTS; + +extern uint32_t RDD_CPU_TX_INGRESS_DISPATCHER_CREDIT_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_CPU_TX_INGRESS_DISPATCHER_CREDIT_TABLE_PTR(core_id) ( RDD_CPU_TX_INGRESS_DISPATCHER_CREDIT_TABLE_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_CPU_TX_INGRESS_DISPATCHER_CREDIT_TABLE_ADDRESS_ARR[core_id] )) + +/* <<>>TASK_IDX */ +typedef struct +{ + RDD_BYTES_4_DTS entry; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TASK_IDX_DTS; + +extern uint32_t RDD_TASK_IDX_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_TASK_IDX_PTR(core_id) ( RDD_TASK_IDX_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_TASK_IDX_ADDRESS_ARR[core_id] )) + +/* <<>>CPU_RX_INTERRUPT_SCRATCH */ + +/* >>>RDD_BYTE_1_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint8_t bits ; +#else + uint8_t bits ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BYTE_1_DTS; + +#define RDD_BYTE_1_BITS_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_BYTE_1_DTS), r) +#define RDD_BYTE_1_BITS_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_BYTE_1_DTS), v) +#define RDD_BYTE_1_BITS_READ(r, p) MREAD_8((uint8_t *)p, r) +#define RDD_BYTE_1_BITS_WRITE(v, p) MWRITE_8((uint8_t *)p, v) +/* <<>>CPU_RX_INTERRUPT_ID_DDR_ADDR */ + +#define RDD_CPU_RX_INTERRUPT_ID_DDR_ADDR_SIZE 8 +typedef struct +{ + RDD_BYTE_1_DTS entry[ RDD_CPU_RX_INTERRUPT_ID_DDR_ADDR_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_INTERRUPT_ID_DDR_ADDR_DTS; + +extern uint32_t RDD_CPU_RX_INTERRUPT_ID_DDR_ADDR_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_CPU_RX_INTERRUPT_ID_DDR_ADDR_PTR(core_id) ( RDD_CPU_RX_INTERRUPT_ID_DDR_ADDR_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_CPU_RX_INTERRUPT_ID_DDR_ADDR_ADDRESS_ARR[core_id] )) + +/* <<>>PKT_BUFFER_ALLOC_MAP_TABLE */ + +#define RDD_PKT_BUFFER_ALLOC_MAP_TABLE_SIZE 3 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_PKT_BUFFER_ALLOC_MAP_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PKT_BUFFER_ALLOC_MAP_TABLE_DTS; + +extern uint32_t RDD_PKT_BUFFER_ALLOC_MAP_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_PKT_BUFFER_ALLOC_MAP_TABLE_PTR(core_id) ( RDD_PKT_BUFFER_ALLOC_MAP_TABLE_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_PKT_BUFFER_ALLOC_MAP_TABLE_ADDRESS_ARR[core_id] )) + +/* <<>>CPU_RX_LAST_READ_INDEX */ + +/* >>>RDD_BYTES_2_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint16_t bits ; +#else + uint16_t bits ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BYTES_2_DTS; + +#define RDD_BYTES_2_BITS_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_BYTES_2_DTS), r) +#define RDD_BYTES_2_BITS_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_BYTES_2_DTS), v) +#define RDD_BYTES_2_BITS_READ(r, p) MREAD_16((uint8_t *)p, r) +#define RDD_BYTES_2_BITS_WRITE(v, p) MWRITE_16((uint8_t *)p, v) +/* <<>>SRAM_DUMMY_STORE */ +typedef struct +{ + RDD_BYTE_1_DTS entry; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_SRAM_DUMMY_STORE_DTS; + +extern uint32_t RDD_SRAM_DUMMY_STORE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_SRAM_DUMMY_STORE_PTR(core_id) ( RDD_SRAM_DUMMY_STORE_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_SRAM_DUMMY_STORE_ADDRESS_ARR[core_id] )) + +/* <<>>CPU_TX_CFE_SRAM_COUNTERS */ + +#define RDD_CPU_TX_CFE_SRAM_COUNTERS_SIZE 10 +typedef struct +{ + RDD_PACKETS_AND_BYTES_DTS entry[ RDD_CPU_TX_CFE_SRAM_COUNTERS_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_CFE_SRAM_COUNTERS_DTS; + +extern uint32_t RDD_CPU_TX_CFE_SRAM_COUNTERS_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_CPU_TX_CFE_SRAM_COUNTERS_PTR(core_id) ( RDD_CPU_TX_CFE_SRAM_COUNTERS_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_CPU_TX_CFE_SRAM_COUNTERS_ADDRESS_ARR[core_id] )) + +/* <<>>CPU_RX_BB_REPLY_ADDR_TABLE */ + +#define RDD_CPU_RX_BB_REPLY_ADDR_TABLE_SIZE 2 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_CPU_RX_BB_REPLY_ADDR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_BB_REPLY_ADDR_TABLE_DTS; + +extern uint32_t RDD_CPU_RX_BB_REPLY_ADDR_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_CPU_RX_BB_REPLY_ADDR_TABLE_PTR(core_id) ( RDD_CPU_RX_BB_REPLY_ADDR_TABLE_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_CPU_RX_BB_REPLY_ADDR_TABLE_ADDRESS_ARR[core_id] )) + +/* <<>>CPU_TX_BB_REPLY_ADDR_TABLE */ + +#define RDD_CPU_TX_BB_REPLY_ADDR_TABLE_SIZE 2 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_CPU_TX_BB_REPLY_ADDR_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_BB_REPLY_ADDR_TABLE_DTS; + +extern uint32_t RDD_CPU_TX_BB_REPLY_ADDR_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_CPU_TX_BB_REPLY_ADDR_TABLE_PTR(core_id) ( RDD_CPU_TX_BB_REPLY_ADDR_TABLE_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_CPU_TX_BB_REPLY_ADDR_TABLE_ADDRESS_ARR[core_id] )) + +/* <<>>DS_TM_BBH_TX_EGRESS_COUNTER_TABLE */ + +#define RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_SIZE 8 +typedef struct +{ + RDD_BBH_TX_EGRESS_COUNTER_ENTRY_DTS entry[ RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_DTS; + +extern uint32_t RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_PTR(core_id) ( RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_ADDRESS_ARR[core_id] )) + +/* <<>>REGISTERS_BUFFER */ + +#define RDD_REGISTERS_BUFFER_SIZE 32 +typedef struct +{ + RDD_BYTES_4_DTS entry[ RDD_REGISTERS_BUFFER_SIZE ]; +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_REGISTERS_BUFFER_DTS; + +extern uint32_t RDD_REGISTERS_BUFFER_ADDRESS_ARR[GROUPED_EN_SEGMENTS_NUM]; + +#define RDD_REGISTERS_BUFFER_PTR(core_id) ( RDD_REGISTERS_BUFFER_DTS * )(DEVICE_ADDRESS( rdp_runner_core_addr[core_id] + RDD_REGISTERS_BUFFER_ADDRESS_ARR[core_id] )) + +/* <<>>RX_FLOW_TABLE */ + +/* >>>RDD_RX_FLOW_ENTRY_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint16_t virtual_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t flow_dest :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t cntr_id ; +#else + uint8_t cntr_id ; + uint16_t reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t flow_dest :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t virtual_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_RX_FLOW_ENTRY_DTS; + +#define RDD_RX_FLOW_ENTRY_VIRTUAL_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_RX_FLOW_ENTRY_DTS), 3, 5, r) +#define RDD_RX_FLOW_ENTRY_VIRTUAL_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_RX_FLOW_ENTRY_DTS), 3, 5, v) +#define RDD_RX_FLOW_ENTRY_VIRTUAL_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 5, r) +#define RDD_RX_FLOW_ENTRY_VIRTUAL_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 5, v) +#define RDD_RX_FLOW_ENTRY_FLOW_DEST_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_RX_FLOW_ENTRY_DTS), 2, 1, r) +#define RDD_RX_FLOW_ENTRY_FLOW_DEST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_RX_FLOW_ENTRY_DTS), 2, 1, v) +#define RDD_RX_FLOW_ENTRY_FLOW_DEST_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 1, r) +#define RDD_RX_FLOW_ENTRY_FLOW_DEST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 1, v) +#define RDD_RX_FLOW_ENTRY_EXCEPTION_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_RX_FLOW_ENTRY_DTS), 1, 1, r) +#define RDD_RX_FLOW_ENTRY_EXCEPTION_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_RX_FLOW_ENTRY_DTS), 1, 1, v) +#define RDD_RX_FLOW_ENTRY_EXCEPTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 1, r) +#define RDD_RX_FLOW_ENTRY_EXCEPTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 1, v) +#define RDD_RX_FLOW_ENTRY_CNTR_ID_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_RX_FLOW_ENTRY_DTS) + 1, r) +#define RDD_RX_FLOW_ENTRY_CNTR_ID_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_RX_FLOW_ENTRY_DTS) + 1, v) +#define RDD_RX_FLOW_ENTRY_CNTR_ID_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_RX_FLOW_ENTRY_CNTR_ID_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +/* <<>>RDD_DISP_REOR_VIQ */ +typedef enum +{ + DISP_REOR_VIQ_FIRST = 0, + DISP_REOR_VIQ_BBH_RX0_NORMAL = 0, + DISP_REOR_VIQ_BBH_RX1_NORMAL = 1, + DISP_REOR_VIQ_BBH_RX2_NORMAL = 2, + DISP_REOR_VIQ_BBH_RX3_NORMAL = 3, + DISP_REOR_VIQ_BBH_RX4_NORMAL = 4, + DISP_REOR_VIQ_BBH_RX5_NORMAL = 5, + DISP_REOR_VIQ_BBH_RX0_EXCL = 6, + DISP_REOR_VIQ_BBH_RX1_EXCL = 7, + DISP_REOR_VIQ_BBH_RX2_EXCL = 8, + DISP_REOR_VIQ_BBH_RX3_EXCL = 9, + DISP_REOR_VIQ_BBH_RX4_EXCL = 10, + DISP_REOR_VIQ_BBH_RX5_EXCL = 11, + DISP_REOR_VIQ_CPU_TX_EGRESS = 12, + DISP_REOR_VIQ_CPU_RX_COPY = 13, + DISP_REOR_VIQ_LAST = 13 +} rdd_disp_reor_viq; +/* <<>>RDD_IMAGE_0_CFE_CORE */ +typedef enum +{ + IMAGE_0_CFE_CORE_FIRST = 0, + IMAGE_0_CFE_CORE_CPU_RX_THREAD_NUMBER = 0, + IMAGE_0_CFE_CORE_CPU_TX_THREAD_NUMBER = 1, + IMAGE_0_CFE_CORE_LAST = 1 +} rdd_cfe_core; +/* <<>>RDD_CPU_IF_RDD */ +typedef enum +{ + CPU_IF_RDD_FIRST = 0, + CPU_IF_RDD_DATA = 0, + CPU_IF_RDD_RECYCLE = 1, + CPU_IF_RDD_FEED = 2, + CPU_IF_RDD_LAST = 2 +} rdd_cpu_if_rdd; +/* <<>>RDD_FLOW_DEST */ +typedef enum +{ + FLOW_DEST_FIRST = 0, + FLOW_DEST_ETH_ID = 0, + FLOW_DEST_IPTV_ID = 1, + FLOW_DEST_LAST = 1 +} rdd_flow_dest; +/* <<>>RDD_PACKET_BUFFER_POOL_TABLE_ADDR */ +typedef enum +{ + PACKET_BUFFER_POOL_TABLE_ADDR_FIRST = 2181087232, + PACKET_BUFFER_POOL_TABLE_ADDR_RX = 2181087232, + PACKET_BUFFER_POOL_TABLE_ADDR_TX = 2181099520, + PACKET_BUFFER_POOL_TABLE_ADDR_LAST = 2181099520 +} rdd_packet_buffer_pool_table_addr; +/* <<>>RDD_PACKET_BUFFER_START_TOKEN */ +typedef enum +{ + PACKET_BUFFER_START_TOKEN_FIRST = 384, + PACKET_BUFFER_START_TOKEN_RX = 384, + PACKET_BUFFER_START_TOKEN_TX = 480, + PACKET_BUFFER_START_TOKEN_LAST = 480 +} rdd_packet_buffer_start_token; +/* <<>>RDD_ACTION */ +typedef enum +{ + ACTION_FIRST = 0, + ACTION_FORWARD = 0, + ACTION_TRAP = 1, + ACTION_DROP = 2, + ACTION_MULTICAST = 3, + ACTION_LAST = 3 +} rdd_action; +/* <<>>RDD_LAYER3_IPV6_HEADER */ +typedef enum +{ + LAYER3_IPV6_HEADER_FIRST = 8, + LAYER3_IPV6_HEADER_SRC_IP_OFFSET = 8, + LAYER3_IPV6_HEADER_DST_IP_OFFSET = 24, + LAYER3_IPV6_HEADER_LAST = 24 +} rdd_layer3_ipv6_header; +/* <<>>RDD_LAYER3_HEADER */ +typedef enum +{ + LAYER3_HEADER_FIRST = 0, + LAYER3_HEADER_TRAFIC_CLASS_OFFSET = 0, + LAYER3_HEADER_TOS_OFFSET = 1, + LAYER3_HEADER_FLAGS_OFFSET = 6, + LAYER3_HEADER_HOP_LIMIT_OFFSET = 7, + LAYER3_HEADER_TTL_OFFSET = 8, + LAYER3_HEADER_PROTOCOL_OFFSET = 9, + LAYER3_HEADER_IP_CHECKSUM_OFFSET = 10, + LAYER3_HEADER_SRC_IP_OFFSET = 12, + LAYER3_HEADER_DST_IP_OFFSET = 16, + LAYER3_HEADER_LAST = 16 +} rdd_layer3_header; +/* <<>>RDD_LAYER4_HEADER */ +typedef enum +{ + LAYER4_HEADER_FIRST = 0, + LAYER4_HEADER_SRC_PORT_OFFSET = 0, + LAYER4_HEADER_ESP_SPI_OFFSET = 0, + LAYER4_HEADER_DST_PORT_OFFSET = 2, + LAYER4_HEADER_UDP_CHECKSUM_OFFSET = 6, + LAYER4_HEADER_GRE_CALL_ID_OFFSET = 6, + LAYER4_HEADER_TCP_FLAGS_OFFSET = 13, + LAYER4_HEADER_TCP_CHECKSUM_OFFSET = 16, + LAYER4_HEADER_LAST = 16 +} rdd_layer4_header; +/* <<>>RDD_PARSER_L2_PROTOCOL */ +typedef enum +{ + PARSER_L2_PROTOCOL_FIRST = 1, + PARSER_L2_PROTOCOL_PPPOE_D = 1, + PARSER_L2_PROTOCOL_PPPOE_S = 2, + PARSER_L2_PROTOCOL_USER_DEFINED_0 = 8, + PARSER_L2_PROTOCOL_USER_DEFINED_1 = 9, + PARSER_L2_PROTOCOL_USER_DEFINED_2 = 10, + PARSER_L2_PROTOCOL_USER_DEFINED_3 = 11, + PARSER_L2_PROTOCOL_ARP = 12, + PARSER_L2_PROTOCOL__1588 = 13, + PARSER_L2_PROTOCOL__802_1X = 14, + PARSER_L2_PROTOCOL_MASK = 15, + PARSER_L2_PROTOCOL__802_1AG_CFM = 15, + PARSER_L2_PROTOCOL_LAST = 15 +} rdd_parser_l2_protocol; +/* <<>>RDD_PARSER_L3_PROTOCOL */ +typedef enum +{ + PARSER_L3_PROTOCOL_FIRST = 0, + PARSER_L3_PROTOCOL_OTHER = 0, + PARSER_L3_PROTOCOL_IPV4 = 1, + PARSER_L3_PROTOCOL_IPV6 = 2, + PARSER_L3_PROTOCOL_MASK = 3, + PARSER_L3_PROTOCOL_LAST = 3 +} rdd_parser_l3_protocol; +/* <<>>RDD_PARSER_L4_PROTOCOL */ +typedef enum +{ + PARSER_L4_PROTOCOL_FIRST = 0, + PARSER_L4_PROTOCOL_OTHER = 0, + PARSER_L4_PROTOCOL_TCP = 1, + PARSER_L4_PROTOCOL_UDP = 2, + PARSER_L4_PROTOCOL_IGMP = 3, + PARSER_L4_PROTOCOL_ICMP = 4, + PARSER_L4_PROTOCOL_ICMPV6 = 5, + PARSER_L4_PROTOCOL_ESP = 6, + PARSER_L4_PROTOCOL_GRE = 7, + PARSER_L4_PROTOCOL_USER_DEFINED_0 = 8, + PARSER_L4_PROTOCOL_USER_DEFINED_1 = 9, + PARSER_L4_PROTOCOL_USER_DEFINED_2 = 10, + PARSER_L4_PROTOCOL_USER_DEFINED_3 = 11, + PARSER_L4_PROTOCOL_RESERVED = 12, + PARSER_L4_PROTOCOL_IPV6 = 13, + PARSER_L4_PROTOCOL_AH = 14, + PARSER_L4_PROTOCOL_NOT_PARSED = 15, + PARSER_L4_PROTOCOL_MASK = 15, + PARSER_L4_PROTOCOL_LAST = 15 +} rdd_parser_l4_protocol; +/* <<>>RDD_ACTION_ECN */ +typedef enum +{ + ACTION_ECN_FIRST = 0, + ACTION_ECN_REMARKING_OFFSET = 0, + ACTION_ECN_REMARKING_WIDTH = 2, + ACTION_ECN_LAST = 2 +} rdd_action_ecn; +/* <<>>RDD_ACTION_DSCP */ +typedef enum +{ + ACTION_DSCP_FIRST = 2, + ACTION_DSCP_REMARKING_OFFSET = 2, + ACTION_DSCP_REMARKING_TRAFFIC_CLASS_OFFSET = 4, + ACTION_DSCP_REMARKING_WIDTH = 6, + ACTION_DSCP_REMARKING_TRAFFIC_CLASS_WIDTH = 8, + ACTION_DSCP_LAST = 8 +} rdd_action_dscp; +/* <<>>RDD_ACTION_OUTER */ +typedef enum +{ + ACTION_OUTER_FIRST = 14, + ACTION_OUTER_PBITS_REMARKING_VID_OFFSET = 14, + ACTION_OUTER_LAST = 14 +} rdd_action_outer; +/* <<>>RDD_ACTION_INNER */ +typedef enum +{ + ACTION_INNER_FIRST = 18, + ACTION_INNER_PBITS_REMARKING_VID_OFFSET = 18, + ACTION_INNER_LAST = 18 +} rdd_action_inner; +/* <<>>RDD_ACTION_PBITS */ +typedef enum +{ + ACTION_PBITS_FIRST = 2, + ACTION_PBITS_REMARKING_DSCP_OFFSET = 2, + ACTION_PBITS_REMARKING_PACKET_WIDTH = 3, + ACTION_PBITS_REMARKING_DSCP_WIDTH = 6, + ACTION_PBITS_REMARKING_PACKET_OFFSET = 13, + ACTION_PBITS_LAST = 13 +} rdd_action_pbits; +/* <<>>RDD_ACTION_DS_LITE */ +typedef enum +{ + ACTION_DS_LITE_FIRST = 40, + ACTION_DS_LITE_SIZE = 40, + ACTION_DS_LITE_LAST = 40 +} rdd_action_ds_lite; +/* <<>>RDD_DS_ACTION_ID */ +typedef enum +{ + DS_ACTION_ID_FIRST = 0, + DS_ACTION_ID_TRAP = 0, + DS_ACTION_ID_TTL = 2, + DS_ACTION_ID_DSCP = 4, + DS_ACTION_ID_NAT = 5, + DS_ACTION_ID_GRE = 6, + DS_ACTION_ID_OPBITS = 7, + DS_ACTION_ID_IPBITS = 8, + DS_ACTION_ID_DS_LITE = 9, + DS_ACTION_ID_PPPOE = 10, + DS_ACTION_ID_TOTAL_NUM = 17, + DS_ACTION_ID_LAST = 17 +} rdd_ds_action_id; +/* <<>>RDD_US_ACTION_ID */ +typedef enum +{ + US_ACTION_ID_FIRST = 0, + US_ACTION_ID_TRAP = 0, + US_ACTION_ID_TTL = 2, + US_ACTION_ID_DSCP = 4, + US_ACTION_ID_NAT = 5, + US_ACTION_ID_GRE = 6, + US_ACTION_ID_OPBITS = 7, + US_ACTION_ID_IPBITS = 8, + US_ACTION_ID_DS_LITE = 9, + US_ACTION_ID_PPPOE = 10, + US_ACTION_ID_TOTAL_NUM = 17, + US_ACTION_ID_LAST = 17 +} rdd_us_action_id; +/* <<>>RDD_RDD_VPORT */ +typedef enum +{ + RDD_VPORT_FIRST = 0, + RDD_VPORT_ID_0 = 0, + RDD_VPORT_ID_1 = 1, + RDD_VPORT_ID_2 = 2, + RDD_VPORT_ID_3 = 3, + RDD_VPORT_ID_4 = 4, + RDD_VPORT_ID_5 = 5, + RDD_VPORT_ID_6 = 6, + RDD_VPORT_ID_7 = 7, + RDD_VPORT_ID_8 = 8, + RDD_VPORT_ID_9 = 9, + RDD_VPORT_ID_10 = 10, + RDD_VPORT_ID_11 = 11, + RDD_VPORT_ID_12 = 12, + RDD_VPORT_ID_13 = 13, + RDD_VPORT_ID_14 = 14, + RDD_VPORT_ID_15 = 15, + RDD_VPORT_ID_16 = 16, + RDD_VPORT_ID_17 = 17, + RDD_VPORT_ID_18 = 18, + RDD_VPORT_ID_19 = 19, + RDD_VPORT_ID_20 = 20, + RDD_VPORT_ID_21 = 21, + RDD_VPORT_ID_22 = 22, + RDD_VPORT_ID_23 = 23, + RDD_VPORT_ID_24 = 24, + RDD_VPORT_ID_25 = 25, + RDD_VPORT_ID_26 = 26, + RDD_VPORT_ID_27 = 27, + RDD_VPORT_ID_28 = 28, + RDD_VPORT_ID_29 = 29, + RDD_VPORT_ID_30 = 30, + RDD_VPORT_ID_31 = 31, + RDD_VPORT_ID_32 = 32, + RDD_VPORT_ID_33 = 33, + RDD_VPORT_ID_34 = 34, + RDD_VPORT_ID_35 = 35, + RDD_VPORT_ID_36 = 36, + RDD_VPORT_ID_37 = 37, + RDD_VPORT_ID_38 = 38, + RDD_VPORT_ID_39 = 39, + RDD_VPORT_ID_ANY = 40, + RDD_VPORT_LAST = 40 +} rdd_rdd_vport; +/* <<>>RDD_DSCP_TO */ +typedef enum +{ + DSCP_TO_FIRST = 6, + DSCP_TO_PBITS_SHIFT_OFFSET = 6, + DSCP_TO_LAST = 6 +} rdd_dscp_to; +/* <<>>RDD_RESOLUTION_CONTEXT */ +typedef enum +{ + RESOLUTION_CONTEXT_FIRST = 0, + RESOLUTION_CONTEXT_VIRTUAL_SRC_PORT_OFFSET = 0, + RESOLUTION_CONTEXT_GPE_DMA_OFFSET_WIDTH = 1, + RESOLUTION_CONTEXT_GPE_HEADER_LENGTH_WIDTH = 1, + RESOLUTION_CONTEXT_GPE_HEADER_IH_PTR_WIDTH = 2, + RESOLUTION_CONTEXT_GPE_COMMAND_LIST_PTR_WIDTH = 2, + RESOLUTION_CONTEXT_GPE_PACKET_DRR_PTR_WIDTH = 4, + RESOLUTION_CONTEXT_GPE_HEADER_LENGTH_OFFSET = 6, + RESOLUTION_CONTEXT_GPE_DMA_OFFSET_OFFSET = 7, + RESOLUTION_CONTEXT_GPE_COMMAND_LIST_PTR_OFFSET = 8, + RESOLUTION_CONTEXT_GPE_HEADER_IH_PTR_OFFSET = 10, + RESOLUTION_CONTEXT_GPE_PACKET_DRR_PTR_OFFSET = 12, + RESOLUTION_CONTEXT_LAST = 12 +} rdd_resolution_context; +/* <<>>RDD_BBMSG_TYPE */ +typedef enum +{ + BBMSG_TYPE_FIRST = 0, + BBMSG_TYPE_RUNNER_BBH_RX_FLOW_CONTROL = 0, + BBMSG_TYPE_QM_PD_FIFO_CREDIT_FREE = 0, + BBMSG_TYPE_BBH_TX_PACKET_DESCRIPTOR = 1, + BBMSG_TYPE_RUNNER_SBPM_BUFFER_ALLOC = 1, + BBMSG_TYPE_QM_UPDATE_FIFO_CREDIT_FREE = 1, + BBMSG_TYPE_FPM_BUFFER_ALLOC = 1, + BBMSG_TYPE_FPM_BUFFER_MCAST_INCREMENT = 2, + BBMSG_TYPE_RUNNER_SBPM_MCAST_INC_REQUEST = 2, + BBMSG_TYPE_BBH_TX_NACK = 2, + BBMSG_TYPE_BBH_TX_ACK = 3, + BBMSG_TYPE_FPM_BUFFER_FREE = 3, + BBMSG_TYPE_BBH_SBPM_BUFFER_FREE = 3, + BBMSG_TYPE_BBH_GHOST_DBR = 4, + BBMSG_TYPE_RUNNER_SBPM_CONNECT = 4, + BBMSG_TYPE_RUNNER_SBPM_GET_NEXT = 5, + BBMSG_TYPE_BBH_TX_REPORT_ACK = 5, + BBMSG_TYPE_BBH_SBPM_BUFFER_FREE_WITHOUT_CONTEXT = 6, + BBMSG_TYPE_RUNNER_SBPM_BUFFER_FREE_WITHOUT_CONTEXT = 6, + BBMSG_TYPE_BBH_TX_REPORT_NACK = 7, + BBMSG_TYPE_RUNNER_SBPM_INGRESS_TO_EGRESS = 7, + BBMSG_TYPE_RUNNER_REORDER_PD_WRITE = 8, + BBMSG_TYPE_RUNNER_DISPATCHER_PD_ACK = 9, + BBMSG_TYPE_RUNNER_DISPATCHER_PD_WRITE = 10, + BBMSG_TYPE_RUNNER_REORDER_TOKEN_REQUEST = 11, + BBMSG_TYPE_RUNNER_REORDER_BUFFER_CONNECT = 12, + BBMSG_TYPE_RUNNER_DISPATCHER_WAKEUP_PENDING = 13, + BBMSG_TYPE_RUNNER_REORDER_CONNECT_REQUEST_BUFFER_CONNECTED = 14, + BBMSG_TYPE_RUNNER_REORDER_BUFFER_MULTICAST_CONNECT_REQUEST = 15, + BBMSG_TYPE_BBH_RX_DISPATCHER_PD_WRITE = 24, + BBMSG_TYPE_LAST = 24 +} rdd_bbmsg_type; +/* <<>>RDD_ERR_RX_PD */ +typedef enum +{ + ERR_RX_PD_FIRST = 1, + ERR_RX_PD_NO_SBPM = 1, + ERR_RX_PD_PACKET_TOO_SHORT = 2, + ERR_RX_PD_PACKET_TOO_LONG = 3, + ERR_RX_PD_CRC = 4, + ERR_RX_PD_ENCRYPT = 5, + ERR_RX_PD_NO_SDMA_CHUNK = 6, + ERR_RX_PD_SOP_AFTER_SOP = 7, + ERR_RX_PD_THIRD_FLOW_ARRIVAL = 8, + ERR_RX_PD_LAST = 8 +} rdd_err_rx_pd; +/* <<>>RDD_SBPM_OPCODE */ +typedef enum +{ + SBPM_OPCODE_FIRST = 0, + SBPM_OPCODE_MULTI_GET_NEXT = 0, + SBPM_OPCODE_BN_ALLOC = 1, + SBPM_OPCODE_MCST_INC = 2, + SBPM_OPCODE_BN_FREE_WITH_CONTEXT = 3, + SBPM_OPCODE_BN_CONNECT = 4, + SBPM_OPCODE_GET_NEXT = 5, + SBPM_OPCODE_BN_FREE_WO_CONTEXT = 6, + SBPM_OPCODE_INGRESS_TO_EGRESS = 7, + SBPM_OPCODE_LAST = 7 +} rdd_sbpm_opcode; +/* <<>>RDD_RDD_LAN */ +typedef enum +{ + RDD_LAN_FIRST = 1, + RDD_LAN_BRIDGE_PORT0 = 1, + RDD_LAN_BRIDGE_PORT1 = 2, + RDD_LAN_BRIDGE_PORT2 = 3, + RDD_LAN_BRIDGE_PORT3 = 4, + RDD_LAN_BRIDGE_PORT4 = 5, + RDD_LAN_BRIDGE_PORT5 = 6, + RDD_LAN_LAST = 6 +} rdd_rdd_lan; +/* <<>>RDD_MAC_TYPE */ +typedef enum +{ + MAC_TYPE_FIRST = 0, + MAC_TYPE_EMAC = 0, + MAC_TYPE_GPON = 1, + MAC_TYPE_XGPON = 2, + MAC_TYPE_EPON = 3, + MAC_TYPE_XEPON = 4, + MAC_TYPE_DSL = 5, + MAC_TYPE_AE10G = 6, + MAC_TYPE_AE2P5 = 7, + MAC_TYPE_LAST = 7 +} rdd_mac_type; +/* <<>>RDD_SBPM */ +typedef enum +{ + SBPM_FIRST = 16383, + SBPM_INVALID_BUFFER_NUMBER = 16383, + SBPM_LAST = 16383 +} rdd_sbpm; +/* <<>>RDD_FPM_POOL_ID */ +typedef enum +{ + FPM_POOL_ID_FIRST = 0, + FPM_POOL_ID_EIGHT_BUFFERS = 0, + FPM_POOL_ID_FOUR_BUFFERS = 1, + FPM_POOL_ID_TWO_BUFFERS = 2, + FPM_POOL_ID_ONE_BUFFER = 3, + FPM_POOL_ID_LAST = 3 +} rdd_fpm_pool_id; +/* <<>>RDD_RNR */ +typedef enum +{ + RNR_FIRST = 0, + RNR_CORE0_ID = 0, + RNR_CORE1_ID = 1, + RNR_CORE2_ID = 2, + RNR_CORE3_ID = 3, + RNR_CORE4_ID = 4, + RNR_LAST = 4 +} rdd_rnr; +/* <<>>RDD_BB_ID */ +typedef enum +{ + BB_ID_FIRST = 0, + BB_ID_RNR0 = 0, + BB_ID_RNR1 = 1, + BB_ID_RNR2 = 2, + BB_ID_RNR3 = 3, + BB_ID_RNR4 = 4, + BB_ID_BBHLB = 16, + BB_ID_CNPL_0 = 17, + BB_ID_DISPATCHER_REORDER = 18, + BB_ID_SDMA_COPY = 20, + BB_ID_QM_CP_SDMA = 20, + BB_ID_SDMA0 = 21, + BB_ID_SDMA1 = 22, + BB_ID_FPM = 23, + BB_ID_HASH_0 = 24, + BB_ID_NATC_0 = 25, + BB_ID_QM_RNR_GRID = 27, + BB_ID_QM_BBHTX = 28, + BB_ID_QM_TOP = 29, + BB_ID_QM_CP_MACHINE = 30, + BB_ID_RX_BBH_0 = 31, + BB_ID_TX_LAN = 32, + BB_ID_RX_BBH_1 = 33, + BB_ID_RX_BBH_2 = 35, + BB_ID_TX_COPY = 36, + BB_ID_RX_BBH_3 = 37, + BB_ID_RX_BBH_4 = 39, + BB_ID_RX_BBH_5 = 41, + BB_ID_RX_BBH_6 = 43, + BB_ID_RX_BBH_7 = 45, + BB_ID_RX_DSL = 53, + BB_ID_TX_DSL = 54, + BB_ID_TX_DSL_STAT = 55, + BB_ID_SBPM = 56, + BB_ID_TCAM_0 = 57, + BB_ID_TCAM_1 = 58, + BB_ID_HASH_1 = 59, + BB_ID_NATC_1 = 60, + BB_ID_CNPL_1 = 61, + BB_ID_LAST = 61 +} rdd_bb_id; +/* <<>>RDD_BB_DESTINATION_ENTRY */ +#define BB_DESTINATION_ENTRY_BB_DESTINATION_F_OFFSET 0 +#define BB_DESTINATION_ENTRY_BB_DESTINATION_F_WIDTH 32 +#define BB_DESTINATION_ENTRY_BB_DESTINATION_ENTRY_OFFSET 0 +#define BB_DESTINATION_ENTRY_BB_DESTINATION_OFFSET 0 +#define BB_DESTINATION_ENTRY_BB_DESTINATION_WORD_OFFSET 0 +/* <<>>RDD_CPU_TX_DESCRIPTOR */ +#define CPU_TX_DESCRIPTOR_VALID_F_OFFSET 31 +#define CPU_TX_DESCRIPTOR_VALID_F_WIDTH 1 +#define CPU_TX_DESCRIPTOR_CPU_TX_DESCRIPTOR_OFFSET 0 +#define CPU_TX_DESCRIPTOR_VALID_OFFSET 0 +#define CPU_TX_DESCRIPTOR_VALID_WORD_OFFSET 0 +#define CPU_TX_DESCRIPTOR_VALID_F_OFFSET_MOD8 7 +#define CPU_TX_DESCRIPTOR_VALID_F_OFFSET_MOD16 15 +#define CPU_TX_DESCRIPTOR_FIRST_LEVEL_Q_F_OFFSET 22 +#define CPU_TX_DESCRIPTOR_FIRST_LEVEL_Q_F_WIDTH 9 +#define CPU_TX_DESCRIPTOR_FIRST_LEVEL_Q_OFFSET 0 +#define CPU_TX_DESCRIPTOR_FIRST_LEVEL_Q_WORD_OFFSET 0 +#define CPU_TX_DESCRIPTOR_FIRST_LEVEL_Q_F_OFFSET_MOD16 6 +#define CPU_TX_DESCRIPTOR_ABS_DATA1_F_OFFSET 0 +#define CPU_TX_DESCRIPTOR_ABS_DATA1_F_WIDTH 22 +#define CPU_TX_DESCRIPTOR_ABS_DATA1_OFFSET 0 +#define CPU_TX_DESCRIPTOR_ABS_DATA1_WORD_OFFSET 0 +#define CPU_TX_DESCRIPTOR_ABS_DATA0_F_OFFSET 14 +#define CPU_TX_DESCRIPTOR_ABS_DATA0_F_WIDTH 18 +#define CPU_TX_DESCRIPTOR_ABS_DATA0_OFFSET 4 +#define CPU_TX_DESCRIPTOR_ABS_DATA0_WORD_OFFSET 1 +#define CPU_TX_DESCRIPTOR_PACKET_LENGTH_F_OFFSET 0 +#define CPU_TX_DESCRIPTOR_PACKET_LENGTH_F_WIDTH 14 +#define CPU_TX_DESCRIPTOR_PACKET_LENGTH_OFFSET 6 +#define CPU_TX_DESCRIPTOR_PACKET_LENGTH_WORD_OFFSET 1 +#define CPU_TX_DESCRIPTOR_PACKET_LENGTH_F_OFFSET_MOD16 0 +#define CPU_TX_DESCRIPTOR_DROP_F_OFFSET 31 +#define CPU_TX_DESCRIPTOR_DROP_F_WIDTH 1 +#define CPU_TX_DESCRIPTOR_DROP_OFFSET 8 +#define CPU_TX_DESCRIPTOR_DROP_WORD_OFFSET 2 +#define CPU_TX_DESCRIPTOR_DROP_F_OFFSET_MOD8 7 +#define CPU_TX_DESCRIPTOR_DROP_F_OFFSET_MOD16 15 +#define CPU_TX_DESCRIPTOR_FLAG_1588_F_OFFSET 30 +#define CPU_TX_DESCRIPTOR_FLAG_1588_F_WIDTH 1 +#define CPU_TX_DESCRIPTOR_FLAG_1588_OFFSET 8 +#define CPU_TX_DESCRIPTOR_FLAG_1588_WORD_OFFSET 2 +#define CPU_TX_DESCRIPTOR_FLAG_1588_F_OFFSET_MOD8 6 +#define CPU_TX_DESCRIPTOR_FLAG_1588_F_OFFSET_MOD16 14 +#define CPU_TX_DESCRIPTOR_COLOR_F_OFFSET 29 +#define CPU_TX_DESCRIPTOR_COLOR_F_WIDTH 1 +#define CPU_TX_DESCRIPTOR_COLOR_OFFSET 8 +#define CPU_TX_DESCRIPTOR_COLOR_WORD_OFFSET 2 +#define CPU_TX_DESCRIPTOR_COLOR_F_OFFSET_MOD8 5 +#define CPU_TX_DESCRIPTOR_COLOR_F_OFFSET_MOD16 13 +#define CPU_TX_DESCRIPTOR_DO_NOT_RECYCLE_F_OFFSET 28 +#define CPU_TX_DESCRIPTOR_DO_NOT_RECYCLE_F_WIDTH 1 +#define CPU_TX_DESCRIPTOR_DO_NOT_RECYCLE_OFFSET 8 +#define CPU_TX_DESCRIPTOR_DO_NOT_RECYCLE_WORD_OFFSET 2 +#define CPU_TX_DESCRIPTOR_DO_NOT_RECYCLE_F_OFFSET_MOD8 4 +#define CPU_TX_DESCRIPTOR_DO_NOT_RECYCLE_F_OFFSET_MOD16 12 +#define CPU_TX_DESCRIPTOR_LAN_F_OFFSET 26 +#define CPU_TX_DESCRIPTOR_LAN_F_WIDTH 1 +#define CPU_TX_DESCRIPTOR_LAN_OFFSET 8 +#define CPU_TX_DESCRIPTOR_LAN_WORD_OFFSET 2 +#define CPU_TX_DESCRIPTOR_LAN_F_OFFSET_MOD8 2 +#define CPU_TX_DESCRIPTOR_LAN_F_OFFSET_MOD16 10 +#define CPU_TX_DESCRIPTOR_WAN_FLOW_SOURCE_PORT_F_OFFSET 18 +#define CPU_TX_DESCRIPTOR_WAN_FLOW_SOURCE_PORT_F_WIDTH 8 +#define CPU_TX_DESCRIPTOR_WAN_FLOW_SOURCE_PORT_OFFSET 8 +#define CPU_TX_DESCRIPTOR_WAN_FLOW_SOURCE_PORT_WORD_OFFSET 2 +#define CPU_TX_DESCRIPTOR_WAN_FLOW_SOURCE_PORT_F_OFFSET_MOD16 2 +#define CPU_TX_DESCRIPTOR_BN1_OR_ABS2_OR_1588_F_OFFSET 0 +#define CPU_TX_DESCRIPTOR_BN1_OR_ABS2_OR_1588_F_WIDTH 18 +#define CPU_TX_DESCRIPTOR_BN1_OR_ABS2_OR_1588_OFFSET 8 +#define CPU_TX_DESCRIPTOR_BN1_OR_ABS2_OR_1588_WORD_OFFSET 2 +#define CPU_TX_DESCRIPTOR_AGG_PD_F_OFFSET 31 +#define CPU_TX_DESCRIPTOR_AGG_PD_F_WIDTH 1 +#define CPU_TX_DESCRIPTOR_AGG_PD_OFFSET 12 +#define CPU_TX_DESCRIPTOR_AGG_PD_WORD_OFFSET 3 +#define CPU_TX_DESCRIPTOR_AGG_PD_F_OFFSET_MOD8 7 +#define CPU_TX_DESCRIPTOR_AGG_PD_F_OFFSET_MOD16 15 +#define CPU_TX_DESCRIPTOR_TARGET_MEM_0_F_OFFSET 30 +#define CPU_TX_DESCRIPTOR_TARGET_MEM_0_F_WIDTH 1 +#define CPU_TX_DESCRIPTOR_TARGET_MEM_0_OFFSET 12 +#define CPU_TX_DESCRIPTOR_TARGET_MEM_0_WORD_OFFSET 3 +#define CPU_TX_DESCRIPTOR_TARGET_MEM_0_F_OFFSET_MOD8 6 +#define CPU_TX_DESCRIPTOR_TARGET_MEM_0_F_OFFSET_MOD16 14 +#define CPU_TX_DESCRIPTOR_ABS_F_OFFSET 29 +#define CPU_TX_DESCRIPTOR_ABS_F_WIDTH 1 +#define CPU_TX_DESCRIPTOR_ABS_OFFSET 12 +#define CPU_TX_DESCRIPTOR_ABS_WORD_OFFSET 3 +#define CPU_TX_DESCRIPTOR_ABS_F_OFFSET_MOD8 5 +#define CPU_TX_DESCRIPTOR_ABS_F_OFFSET_MOD16 13 +#define CPU_TX_DESCRIPTOR_PAYLOAD_OFFSET_OR_ABS_1_F_OFFSET 18 +#define CPU_TX_DESCRIPTOR_PAYLOAD_OFFSET_OR_ABS_1_F_WIDTH 11 +#define CPU_TX_DESCRIPTOR_PAYLOAD_OFFSET_OR_ABS_1_OFFSET 12 +#define CPU_TX_DESCRIPTOR_PAYLOAD_OFFSET_OR_ABS_1_WORD_OFFSET 3 +#define CPU_TX_DESCRIPTOR_PAYLOAD_OFFSET_OR_ABS_1_F_OFFSET_MOD16 2 +#define CPU_TX_DESCRIPTOR_BUFFER_NUMBER_0_OR_ABS_0_F_OFFSET 0 +#define CPU_TX_DESCRIPTOR_BUFFER_NUMBER_0_OR_ABS_0_F_WIDTH 18 +#define CPU_TX_DESCRIPTOR_BUFFER_NUMBER_0_OR_ABS_0_OFFSET 12 +#define CPU_TX_DESCRIPTOR_BUFFER_NUMBER_0_OR_ABS_0_WORD_OFFSET 3 + +/* >>>RDD_CPU_TX_DESCRIPTOR_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_data1 :22 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_abs_data1 :22 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_abs_data1 :22 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs_data1 :22 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 1 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t abs_data0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_abs_data0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_abs_data0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_abs_data0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 2 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t do_not_recycle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_flow_source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bn1_or_abs2_or_1588 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_do_not_recycle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_wan_flow_source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t fpm_fallback :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t sbpm_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t bn1_first :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_do_not_recycle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_wan_flow_source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t _ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t _fpm_fallback :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t _sbpm_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t abs2 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_do_not_recycle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_wan_flow_source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_1588 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + }; + }; + /* Union WORD 3 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t payload_offset_or_abs_1 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t buffer_number_0_or_abs_0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sop :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_or_abs_1 union */ + uint32_t bn0_first :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of buffer_number_0_or_abs_0 union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs1 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_or_abs_1 union */ + uint32_t abs0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of buffer_number_0_or_abs_0 union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_payload_offset_or_abs_1 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_buffer_number_0_or_abs_0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; +#else + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t abs_data1 :22 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_abs_data1 :22 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_abs_data1 :22 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_abs_data1 :22 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_first_level_q :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 1 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs_data0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_abs_data0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_abs_data0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_packet_length :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs_data0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 2 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t bn1_or_abs2_or_1588 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t wan_flow_source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t do_not_recycle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t fpm_fallback :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t sbpm_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t bn1_first :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t reserved1_wan_flow_source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_do_not_recycle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t _ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t _fpm_fallback :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t _sbpm_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t abs2 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t reserved2_wan_flow_source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_do_not_recycle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t data_1588 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of bn1_or_abs2_or_1588 union */ + uint32_t reserved3_wan_flow_source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reserved1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_do_not_recycle :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_flag_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_drop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 3 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t buffer_number_0_or_abs_0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t payload_offset_or_abs_1 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t bn0_first :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of buffer_number_0_or_abs_0 union */ + uint32_t sop :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_or_abs_1 union */ + uint32_t reserved1_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t abs0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of buffer_number_0_or_abs_0 union */ + uint32_t abs1 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of payload_offset_or_abs_1 union */ + uint32_t reserved2_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_buffer_number_0_or_abs_0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_payload_offset_or_abs_1 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_target_mem_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_agg_pd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_TX_DESCRIPTOR_DTS; + +typedef union +{ + uint32_t word_val[4]; + uint64_t dword_val64[2]; + RDD_CPU_TX_DESCRIPTOR_DTS fields; +} CPU_TX_DESCRIPTOR_STRUCT; +#define RDD_CPU_TX_DESCRIPTOR_VALID_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS), 7, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_VALID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS), 7, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_FIRST_LEVEL_Q_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS), 6, 9, r) +#define RDD_CPU_TX_DESCRIPTOR_FIRST_LEVEL_Q_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS), 6, 9, v) +#define RDD_CPU_TX_DESCRIPTOR_FIRST_LEVEL_Q_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 6, 9, r) +#define RDD_CPU_TX_DESCRIPTOR_FIRST_LEVEL_Q_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 6, 9, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS_DATA1_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 0, 0, 22, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS_DATA1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 0, 0, 22, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS_DATA1_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 0, 22, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS_DATA1_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 0, 22, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS_DATA0_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 4, 14, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS_DATA0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 4, 14, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS_DATA0_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 14, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS_DATA0_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 14, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_PACKET_LENGTH_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 6, 0, 14, r) +#define RDD_CPU_TX_DESCRIPTOR_PACKET_LENGTH_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 6, 0, 14, v) +#define RDD_CPU_TX_DESCRIPTOR_PACKET_LENGTH_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 14, r) +#define RDD_CPU_TX_DESCRIPTOR_PACKET_LENGTH_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 14, v) +#define RDD_CPU_TX_DESCRIPTOR_DROP_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 7, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_DROP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 7, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_DROP_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_DROP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_FLAG_1588_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 6, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_FLAG_1588_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 6, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_FLAG_1588_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_FLAG_1588_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_COLOR_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 5, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_COLOR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 5, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_COLOR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 5, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_COLOR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 5, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_DO_NOT_RECYCLE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 4, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_DO_NOT_RECYCLE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 4, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_DO_NOT_RECYCLE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 4, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_DO_NOT_RECYCLE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 4, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_LAN_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 2, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_LAN_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 2, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_LAN_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 2, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_LAN_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 2, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_WAN_FLOW_SOURCE_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 2, 8, r) +#define RDD_CPU_TX_DESCRIPTOR_WAN_FLOW_SOURCE_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 2, 8, v) +#define RDD_CPU_TX_DESCRIPTOR_WAN_FLOW_SOURCE_PORT_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 2, 8, r) +#define RDD_CPU_TX_DESCRIPTOR_WAN_FLOW_SOURCE_PORT_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 2, 8, v) +#define RDD_CPU_TX_DESCRIPTOR_BN1_OR_ABS2_OR_1588_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_BN1_OR_ABS2_OR_1588_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_BN1_OR_ABS2_OR_1588_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_BN1_OR_ABS2_OR_1588_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_SSID_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 14, 4, r) +#define RDD_CPU_TX_DESCRIPTOR_SSID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 14, 4, v) +#define RDD_CPU_TX_DESCRIPTOR_SSID_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 14, 4, r) +#define RDD_CPU_TX_DESCRIPTOR_SSID_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 14, 4, v) +#define RDD_CPU_TX_DESCRIPTOR_FPM_FALLBACK_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 5, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_FPM_FALLBACK_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 5, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_FPM_FALLBACK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 5, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_FPM_FALLBACK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 5, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_SBPM_COPY_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 4, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_SBPM_COPY_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 4, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_SBPM_COPY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 4, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_SBPM_COPY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 4, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_BN1_FIRST_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 0, 12, r) +#define RDD_CPU_TX_DESCRIPTOR_BN1_FIRST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 0, 12, v) +#define RDD_CPU_TX_DESCRIPTOR_BN1_FIRST_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 10, 0, 12, r) +#define RDD_CPU_TX_DESCRIPTOR_BN1_FIRST_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 10, 0, 12, v) +#define RDD_CPU_TX_DESCRIPTOR__SSID_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 14, 4, r) +#define RDD_CPU_TX_DESCRIPTOR__SSID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 14, 4, v) +#define RDD_CPU_TX_DESCRIPTOR__SSID_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 14, 4, r) +#define RDD_CPU_TX_DESCRIPTOR__SSID_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 14, 4, v) +#define RDD_CPU_TX_DESCRIPTOR__FPM_FALLBACK_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 5, 1, r) +#define RDD_CPU_TX_DESCRIPTOR__FPM_FALLBACK_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 5, 1, v) +#define RDD_CPU_TX_DESCRIPTOR__FPM_FALLBACK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 5, 1, r) +#define RDD_CPU_TX_DESCRIPTOR__FPM_FALLBACK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 5, 1, v) +#define RDD_CPU_TX_DESCRIPTOR__SBPM_COPY_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 4, 1, r) +#define RDD_CPU_TX_DESCRIPTOR__SBPM_COPY_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 4, 1, v) +#define RDD_CPU_TX_DESCRIPTOR__SBPM_COPY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 10, 4, 1, r) +#define RDD_CPU_TX_DESCRIPTOR__SBPM_COPY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 10, 4, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS2_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 0, 12, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS2_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 10, 0, 12, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS2_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 10, 0, 12, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS2_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 10, 0, 12, v) +#define RDD_CPU_TX_DESCRIPTOR_DATA_1588_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_DATA_1588_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 8, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_DATA_1588_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_DATA_1588_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_AGG_PD_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 7, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_AGG_PD_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 7, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_AGG_PD_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_AGG_PD_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_TARGET_MEM_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 6, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_TARGET_MEM_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 6, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_TARGET_MEM_0_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 6, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_TARGET_MEM_0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 6, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 5, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 5, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 5, 1, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 5, 1, v) +#define RDD_CPU_TX_DESCRIPTOR_PAYLOAD_OFFSET_OR_ABS_1_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 2, 11, r) +#define RDD_CPU_TX_DESCRIPTOR_PAYLOAD_OFFSET_OR_ABS_1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 2, 11, v) +#define RDD_CPU_TX_DESCRIPTOR_PAYLOAD_OFFSET_OR_ABS_1_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 2, 11, r) +#define RDD_CPU_TX_DESCRIPTOR_PAYLOAD_OFFSET_OR_ABS_1_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 2, 11, v) +#define RDD_CPU_TX_DESCRIPTOR_SOP_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 2, 11, r) +#define RDD_CPU_TX_DESCRIPTOR_SOP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 2, 11, v) +#define RDD_CPU_TX_DESCRIPTOR_SOP_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 2, 11, r) +#define RDD_CPU_TX_DESCRIPTOR_SOP_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 2, 11, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS1_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 2, 11, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 2, 11, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS1_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 2, 11, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS1_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 2, 11, v) +#define RDD_CPU_TX_DESCRIPTOR_BUFFER_NUMBER_0_OR_ABS_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_BUFFER_NUMBER_0_OR_ABS_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_BUFFER_NUMBER_0_OR_ABS_0_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_BUFFER_NUMBER_0_OR_ABS_0_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_BN0_FIRST_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_BN0_FIRST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_BN0_FIRST_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_BN0_FIRST_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS0_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_TX_DESCRIPTOR_DTS) + 12, 0, 18, v) +#define RDD_CPU_TX_DESCRIPTOR_ABS0_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 12, 0, 18, r) +#define RDD_CPU_TX_DESCRIPTOR_ABS0_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 12, 0, 18, v) +/* <<>>RDD_PARSE */ +#define PARSE_PARSE_OFFSET 0 +#define PARSE_SUMMARY_OFFSET 0 +#define PARSE_SUMMARY_WORD_OFFSET 0 +#define PARSE_SUMMARY_F_OFFSET_MOD16 0 +#define PARSE_RESULTS_OFFSET 4 +#define PARSE_RESULTS_WORD_OFFSET 1 +#define PARSE_RESULTS_F_OFFSET_MOD16 8 +#define PARSE_L2_LKP_ENTRY_OFFSET 32 +#define PARSE_L2_LKP_ENTRY_WORD_OFFSET 8 +#define PARSE_L2_LKP_ENTRY_F_OFFSET_MOD16 8 +#define PARSE_L3_LKP_ENTRY_OFFSET 48 +#define PARSE_L3_LKP_ENTRY_WORD_OFFSET 12 +#define PARSE_L3_LKP_ENTRY_F_OFFSET_MOD16 8 +#define PARSE_IC_LKP_ENTRY_OFFSET 64 +#define PARSE_IC_LKP_ENTRY_WORD_OFFSET 16 +#define PARSE_IC_LKP_ENTRY_F_OFFSET_MOD16 8 + +/* >>>RDD_PARSE_DTS */ +#define RDD_PARSE_SUMMARY_NUMBER 4 +#define RDD_PARSE_RESULTS_NUMBER 28 +#define RDD_PARSE_L2_LKP_ENTRY_NUMBER 16 +#define RDD_PARSE_L3_LKP_ENTRY_NUMBER 16 +#define RDD_PARSE_IC_LKP_ENTRY_NUMBER 32 + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint8_t summary[RDD_PARSE_SUMMARY_NUMBER]; + uint8_t results[RDD_PARSE_RESULTS_NUMBER]; + uint8_t l2_lkp_entry[RDD_PARSE_L2_LKP_ENTRY_NUMBER]; + uint8_t l3_lkp_entry[RDD_PARSE_L3_LKP_ENTRY_NUMBER]; + uint8_t ic_lkp_entry[RDD_PARSE_IC_LKP_ENTRY_NUMBER]; +#else + uint8_t summary[RDD_PARSE_SUMMARY_NUMBER]; + uint8_t results[RDD_PARSE_RESULTS_NUMBER]; + uint8_t l2_lkp_entry[RDD_PARSE_L2_LKP_ENTRY_NUMBER]; + uint8_t l3_lkp_entry[RDD_PARSE_L3_LKP_ENTRY_NUMBER]; + uint8_t ic_lkp_entry[RDD_PARSE_IC_LKP_ENTRY_NUMBER]; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PARSE_DTS; + +typedef union +{ + uint32_t word_val[24]; + uint64_t dword_val64[12]; + RDD_PARSE_DTS fields; +} PARSE_STRUCT; +#define RDD_PARSE_SUMMARY_READ_G(r, g, idx, i) GROUP_MREAD_I_8(g, idx*sizeof(RDD_PARSE_DTS), i, r) +#define RDD_PARSE_SUMMARY_WRITE_G(v, g, idx, i) GROUP_MWRITE_I_8(g, idx*sizeof(RDD_PARSE_DTS), i, v) +#define RDD_PARSE_SUMMARY_READ(r, p, i) MREAD_I_8((uint8_t *)p, i, r) +#define RDD_PARSE_SUMMARY_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p, i, v) +#define RDD_PARSE_RESULTS_READ_G(r, g, idx, i) GROUP_MREAD_I_8(g, idx*sizeof(RDD_PARSE_DTS) + 4, i, r) +#define RDD_PARSE_RESULTS_WRITE_G(v, g, idx, i) GROUP_MWRITE_I_8(g, idx*sizeof(RDD_PARSE_DTS) + 4, i, v) +#define RDD_PARSE_RESULTS_READ(r, p, i) MREAD_I_8((uint8_t *)p + 4, i, r) +#define RDD_PARSE_RESULTS_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 4, i, v) +#define RDD_PARSE_L2_LKP_ENTRY_READ_G(r, g, idx, i) GROUP_MREAD_I_8(g, idx*sizeof(RDD_PARSE_DTS) + 32, i, r) +#define RDD_PARSE_L2_LKP_ENTRY_WRITE_G(v, g, idx, i) GROUP_MWRITE_I_8(g, idx*sizeof(RDD_PARSE_DTS) + 32, i, v) +#define RDD_PARSE_L2_LKP_ENTRY_READ(r, p, i) MREAD_I_8((uint8_t *)p + 32, i, r) +#define RDD_PARSE_L2_LKP_ENTRY_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 32, i, v) +#define RDD_PARSE_L3_LKP_ENTRY_READ_G(r, g, idx, i) GROUP_MREAD_I_8(g, idx*sizeof(RDD_PARSE_DTS) + 48, i, r) +#define RDD_PARSE_L3_LKP_ENTRY_WRITE_G(v, g, idx, i) GROUP_MWRITE_I_8(g, idx*sizeof(RDD_PARSE_DTS) + 48, i, v) +#define RDD_PARSE_L3_LKP_ENTRY_READ(r, p, i) MREAD_I_8((uint8_t *)p + 48, i, r) +#define RDD_PARSE_L3_LKP_ENTRY_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 48, i, v) +#define RDD_PARSE_IC_LKP_ENTRY_READ_G(r, g, idx, i) GROUP_MREAD_I_8(g, idx*sizeof(RDD_PARSE_DTS) + 64, i, r) +#define RDD_PARSE_IC_LKP_ENTRY_WRITE_G(v, g, idx, i) GROUP_MWRITE_I_8(g, idx*sizeof(RDD_PARSE_DTS) + 64, i, v) +#define RDD_PARSE_IC_LKP_ENTRY_READ(r, p, i) MREAD_I_8((uint8_t *)p + 64, i, r) +#define RDD_PARSE_IC_LKP_ENTRY_WRITE(v, p, i) MWRITE_I_8((uint8_t *)p + 64, i, v) +/* <<>>RDD_PARSER_SUMMARY */ +#define PARSER_SUMMARY_DA_FILTER_MATCH_F_OFFSET 31 +#define PARSER_SUMMARY_DA_FILTER_MATCH_F_WIDTH 1 +#define PARSER_SUMMARY_PARSER_SUMMARY_OFFSET 0 +#define PARSER_SUMMARY_DA_FILTER_MATCH_OFFSET 0 +#define PARSER_SUMMARY_DA_FILTER_MATCH_WORD_OFFSET 0 +#define PARSER_SUMMARY_DA_FILTER_MATCH_F_OFFSET_MOD8 7 +#define PARSER_SUMMARY_DA_FILTER_MATCH_F_OFFSET_MOD16 15 +#define PARSER_SUMMARY_IP_FRAGMENT_F_OFFSET 30 +#define PARSER_SUMMARY_IP_FRAGMENT_F_WIDTH 1 +#define PARSER_SUMMARY_IP_FRAGMENT_OFFSET 0 +#define PARSER_SUMMARY_IP_FRAGMENT_WORD_OFFSET 0 +#define PARSER_SUMMARY_IP_FRAGMENT_F_OFFSET_MOD8 6 +#define PARSER_SUMMARY_IP_FRAGMENT_F_OFFSET_MOD16 14 +#define PARSER_SUMMARY_L4_1588_F_OFFSET 29 +#define PARSER_SUMMARY_L4_1588_F_WIDTH 1 +#define PARSER_SUMMARY_L4_1588_OFFSET 0 +#define PARSER_SUMMARY_L4_1588_WORD_OFFSET 0 +#define PARSER_SUMMARY_L4_1588_F_OFFSET_MOD8 5 +#define PARSER_SUMMARY_L4_1588_F_OFFSET_MOD16 13 +#define PARSER_SUMMARY_TCP_UDP_F_OFFSET 28 +#define PARSER_SUMMARY_TCP_UDP_F_WIDTH 1 +#define PARSER_SUMMARY_TCP_UDP_OFFSET 0 +#define PARSER_SUMMARY_TCP_UDP_WORD_OFFSET 0 +#define PARSER_SUMMARY_TCP_UDP_F_OFFSET_MOD8 4 +#define PARSER_SUMMARY_TCP_UDP_F_OFFSET_MOD16 12 +#define PARSER_SUMMARY_DHCP_F_OFFSET 27 +#define PARSER_SUMMARY_DHCP_F_WIDTH 1 +#define PARSER_SUMMARY_DHCP_OFFSET 0 +#define PARSER_SUMMARY_DHCP_WORD_OFFSET 0 +#define PARSER_SUMMARY_DHCP_F_OFFSET_MOD8 3 +#define PARSER_SUMMARY_DHCP_F_OFFSET_MOD16 11 +#define PARSER_SUMMARY_BROADCAST_F_OFFSET 26 +#define PARSER_SUMMARY_BROADCAST_F_WIDTH 1 +#define PARSER_SUMMARY_BROADCAST_OFFSET 0 +#define PARSER_SUMMARY_BROADCAST_WORD_OFFSET 0 +#define PARSER_SUMMARY_BROADCAST_F_OFFSET_MOD8 2 +#define PARSER_SUMMARY_BROADCAST_F_OFFSET_MOD16 10 +#define PARSER_SUMMARY_MULTICAST_F_OFFSET 25 +#define PARSER_SUMMARY_MULTICAST_F_WIDTH 1 +#define PARSER_SUMMARY_MULTICAST_OFFSET 0 +#define PARSER_SUMMARY_MULTICAST_WORD_OFFSET 0 +#define PARSER_SUMMARY_MULTICAST_F_OFFSET_MOD8 1 +#define PARSER_SUMMARY_MULTICAST_F_OFFSET_MOD16 9 +#define PARSER_SUMMARY_DOS_ATTACK_F_OFFSET 24 +#define PARSER_SUMMARY_DOS_ATTACK_F_WIDTH 1 +#define PARSER_SUMMARY_DOS_ATTACK_OFFSET 0 +#define PARSER_SUMMARY_DOS_ATTACK_WORD_OFFSET 0 +#define PARSER_SUMMARY_DOS_ATTACK_F_OFFSET_MOD8 0 +#define PARSER_SUMMARY_DOS_ATTACK_F_OFFSET_MOD16 8 +#define PARSER_SUMMARY_MC_L3_CTL_F_OFFSET 23 +#define PARSER_SUMMARY_MC_L3_CTL_F_WIDTH 1 +#define PARSER_SUMMARY_MC_L3_CTL_OFFSET 1 +#define PARSER_SUMMARY_MC_L3_CTL_WORD_OFFSET 0 +#define PARSER_SUMMARY_MC_L3_CTL_F_OFFSET_MOD8 7 +#define PARSER_SUMMARY_MC_L3_CTL_F_OFFSET_MOD16 7 +#define PARSER_SUMMARY_IP_LENGTH_ERROR_F_OFFSET 22 +#define PARSER_SUMMARY_IP_LENGTH_ERROR_F_WIDTH 1 +#define PARSER_SUMMARY_IP_LENGTH_ERROR_OFFSET 1 +#define PARSER_SUMMARY_IP_LENGTH_ERROR_WORD_OFFSET 0 +#define PARSER_SUMMARY_IP_LENGTH_ERROR_F_OFFSET_MOD8 6 +#define PARSER_SUMMARY_IP_LENGTH_ERROR_F_OFFSET_MOD16 6 +#define PARSER_SUMMARY_ICMPV6_F_OFFSET 21 +#define PARSER_SUMMARY_ICMPV6_F_WIDTH 1 +#define PARSER_SUMMARY_ICMPV6_OFFSET 1 +#define PARSER_SUMMARY_ICMPV6_WORD_OFFSET 0 +#define PARSER_SUMMARY_ICMPV6_F_OFFSET_MOD8 5 +#define PARSER_SUMMARY_ICMPV6_F_OFFSET_MOD16 5 +#define PARSER_SUMMARY_HEADER_LENGTH_ERROR_F_OFFSET 20 +#define PARSER_SUMMARY_HEADER_LENGTH_ERROR_F_WIDTH 1 +#define PARSER_SUMMARY_HEADER_LENGTH_ERROR_OFFSET 1 +#define PARSER_SUMMARY_HEADER_LENGTH_ERROR_WORD_OFFSET 0 +#define PARSER_SUMMARY_HEADER_LENGTH_ERROR_F_OFFSET_MOD8 4 +#define PARSER_SUMMARY_HEADER_LENGTH_ERROR_F_OFFSET_MOD16 4 +#define PARSER_SUMMARY_CHECKSUM_ERROR_F_OFFSET 19 +#define PARSER_SUMMARY_CHECKSUM_ERROR_F_WIDTH 1 +#define PARSER_SUMMARY_CHECKSUM_ERROR_OFFSET 1 +#define PARSER_SUMMARY_CHECKSUM_ERROR_WORD_OFFSET 0 +#define PARSER_SUMMARY_CHECKSUM_ERROR_F_OFFSET_MOD8 3 +#define PARSER_SUMMARY_CHECKSUM_ERROR_F_OFFSET_MOD16 3 +#define PARSER_SUMMARY_VERSION_MISMATCH_F_OFFSET 18 +#define PARSER_SUMMARY_VERSION_MISMATCH_F_WIDTH 1 +#define PARSER_SUMMARY_VERSION_MISMATCH_OFFSET 1 +#define PARSER_SUMMARY_VERSION_MISMATCH_WORD_OFFSET 0 +#define PARSER_SUMMARY_VERSION_MISMATCH_F_OFFSET_MOD8 2 +#define PARSER_SUMMARY_VERSION_MISMATCH_F_OFFSET_MOD16 2 +#define PARSER_SUMMARY_L3_PROTOCOL_F_OFFSET 16 +#define PARSER_SUMMARY_L3_PROTOCOL_F_WIDTH 2 +#define PARSER_SUMMARY_L3_PROTOCOL_OFFSET 1 +#define PARSER_SUMMARY_L3_PROTOCOL_WORD_OFFSET 0 +#define PARSER_SUMMARY_L3_PROTOCOL_F_OFFSET_MOD8 0 +#define PARSER_SUMMARY_L3_PROTOCOL_F_OFFSET_MOD16 0 +#define PARSER_SUMMARY_IPV6_EXT_HEADER_FILTER_F_OFFSET 15 +#define PARSER_SUMMARY_IPV6_EXT_HEADER_FILTER_F_WIDTH 1 +#define PARSER_SUMMARY_IPV6_EXT_HEADER_FILTER_OFFSET 2 +#define PARSER_SUMMARY_IPV6_EXT_HEADER_FILTER_WORD_OFFSET 0 +#define PARSER_SUMMARY_IPV6_EXT_HEADER_FILTER_F_OFFSET_MOD8 7 +#define PARSER_SUMMARY_IPV6_EXT_HEADER_FILTER_F_OFFSET_MOD16 15 +#define PARSER_SUMMARY_TCP_FLAG_F_OFFSET 14 +#define PARSER_SUMMARY_TCP_FLAG_F_WIDTH 1 +#define PARSER_SUMMARY_TCP_FLAG_OFFSET 2 +#define PARSER_SUMMARY_TCP_FLAG_WORD_OFFSET 0 +#define PARSER_SUMMARY_TCP_FLAG_F_OFFSET_MOD8 6 +#define PARSER_SUMMARY_TCP_FLAG_F_OFFSET_MOD16 14 +#define PARSER_SUMMARY_EXCEPTION_F_OFFSET 13 +#define PARSER_SUMMARY_EXCEPTION_F_WIDTH 1 +#define PARSER_SUMMARY_EXCEPTION_OFFSET 2 +#define PARSER_SUMMARY_EXCEPTION_WORD_OFFSET 0 +#define PARSER_SUMMARY_EXCEPTION_F_OFFSET_MOD8 5 +#define PARSER_SUMMARY_EXCEPTION_F_OFFSET_MOD16 13 +#define PARSER_SUMMARY_IP_MC_L2_F_OFFSET 12 +#define PARSER_SUMMARY_IP_MC_L2_F_WIDTH 1 +#define PARSER_SUMMARY_IP_MC_L2_OFFSET 2 +#define PARSER_SUMMARY_IP_MC_L2_WORD_OFFSET 0 +#define PARSER_SUMMARY_IP_MC_L2_F_OFFSET_MOD8 4 +#define PARSER_SUMMARY_IP_MC_L2_F_OFFSET_MOD16 12 +#define PARSER_SUMMARY_MC_L3_F_OFFSET 11 +#define PARSER_SUMMARY_MC_L3_F_WIDTH 1 +#define PARSER_SUMMARY_MC_L3_OFFSET 2 +#define PARSER_SUMMARY_MC_L3_WORD_OFFSET 0 +#define PARSER_SUMMARY_MC_L3_F_OFFSET_MOD8 3 +#define PARSER_SUMMARY_MC_L3_F_OFFSET_MOD16 11 +#define PARSER_SUMMARY_ERROR_F_OFFSET 10 +#define PARSER_SUMMARY_ERROR_F_WIDTH 1 +#define PARSER_SUMMARY_ERROR_OFFSET 2 +#define PARSER_SUMMARY_ERROR_WORD_OFFSET 0 +#define PARSER_SUMMARY_ERROR_F_OFFSET_MOD8 2 +#define PARSER_SUMMARY_ERROR_F_OFFSET_MOD16 10 +#define PARSER_SUMMARY_TUNNEL_F_OFFSET 9 +#define PARSER_SUMMARY_TUNNEL_F_WIDTH 1 +#define PARSER_SUMMARY_TUNNEL_OFFSET 2 +#define PARSER_SUMMARY_TUNNEL_WORD_OFFSET 0 +#define PARSER_SUMMARY_TUNNEL_F_OFFSET_MOD8 1 +#define PARSER_SUMMARY_TUNNEL_F_OFFSET_MOD16 9 +#define PARSER_SUMMARY__5_TUP_VALID_F_OFFSET 8 +#define PARSER_SUMMARY__5_TUP_VALID_F_WIDTH 1 +#define PARSER_SUMMARY__5_TUP_VALID_OFFSET 2 +#define PARSER_SUMMARY__5_TUP_VALID_WORD_OFFSET 0 +#define PARSER_SUMMARY__5_TUP_VALID_F_OFFSET_MOD8 0 +#define PARSER_SUMMARY__5_TUP_VALID_F_OFFSET_MOD16 8 +#define PARSER_SUMMARY_ETHERNET_VERSION_F_OFFSET 6 +#define PARSER_SUMMARY_ETHERNET_VERSION_F_WIDTH 2 +#define PARSER_SUMMARY_ETHERNET_VERSION_OFFSET 3 +#define PARSER_SUMMARY_ETHERNET_VERSION_WORD_OFFSET 0 +#define PARSER_SUMMARY_ETHERNET_VERSION_F_OFFSET_MOD8 6 +#define PARSER_SUMMARY_ETHERNET_VERSION_F_OFFSET_MOD16 6 +#define PARSER_SUMMARY_DNS_F_OFFSET 5 +#define PARSER_SUMMARY_DNS_F_WIDTH 1 +#define PARSER_SUMMARY_DNS_OFFSET 3 +#define PARSER_SUMMARY_DNS_WORD_OFFSET 0 +#define PARSER_SUMMARY_DNS_F_OFFSET_MOD8 5 +#define PARSER_SUMMARY_DNS_F_OFFSET_MOD16 5 +#define PARSER_SUMMARY_FIRST_IP_FRAGMENT_F_OFFSET 4 +#define PARSER_SUMMARY_FIRST_IP_FRAGMENT_F_WIDTH 1 +#define PARSER_SUMMARY_FIRST_IP_FRAGMENT_OFFSET 3 +#define PARSER_SUMMARY_FIRST_IP_FRAGMENT_WORD_OFFSET 0 +#define PARSER_SUMMARY_FIRST_IP_FRAGMENT_F_OFFSET_MOD8 4 +#define PARSER_SUMMARY_FIRST_IP_FRAGMENT_F_OFFSET_MOD16 4 +#define PARSER_SUMMARY_L2_PROTOCOL_F_OFFSET 0 +#define PARSER_SUMMARY_L2_PROTOCOL_F_WIDTH 4 +#define PARSER_SUMMARY_L2_PROTOCOL_OFFSET 3 +#define PARSER_SUMMARY_L2_PROTOCOL_WORD_OFFSET 0 +#define PARSER_SUMMARY_L2_PROTOCOL_F_OFFSET_MOD8 0 +#define PARSER_SUMMARY_L2_PROTOCOL_F_OFFSET_MOD16 0 + +/* >>>RDD_PARSER_SUMMARY_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t da_filter_match :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_fragment :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l4_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_udp :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhcp :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t broadcast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dos_attack :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mc_l3_ctl :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_length_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t icmpv6 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t header_length_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t checksum_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t version_mismatch :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l3_protocol :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipv6_ext_header_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_mc_l2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mc_l3 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tunnel :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t _5_tup_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ethernet_version :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dns :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t first_ip_fragment :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l2_protocol :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#else + uint32_t l2_protocol :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t first_ip_fragment :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dns :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ethernet_version :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t _5_tup_valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tunnel :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mc_l3 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_mc_l2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_flag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipv6_ext_header_filter :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l3_protocol :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t version_mismatch :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t checksum_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t header_length_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t icmpv6 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_length_error :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mc_l3_ctl :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dos_attack :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t multicast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t broadcast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dhcp :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_udp :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l4_1588 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_fragment :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t da_filter_match :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PARSER_SUMMARY_DTS; + +typedef union +{ + uint32_t word_val[1]; + RDD_PARSER_SUMMARY_DTS fields; +} PARSER_SUMMARY_STRUCT; +#define RDD_PARSER_SUMMARY_DA_FILTER_MATCH_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 7, 1, r) +#define RDD_PARSER_SUMMARY_DA_FILTER_MATCH_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 7, 1, v) +#define RDD_PARSER_SUMMARY_DA_FILTER_MATCH_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_PARSER_SUMMARY_DA_FILTER_MATCH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_PARSER_SUMMARY_IP_FRAGMENT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 6, 1, r) +#define RDD_PARSER_SUMMARY_IP_FRAGMENT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 6, 1, v) +#define RDD_PARSER_SUMMARY_IP_FRAGMENT_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 1, r) +#define RDD_PARSER_SUMMARY_IP_FRAGMENT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 1, v) +#define RDD_PARSER_SUMMARY_L4_1588_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 5, 1, r) +#define RDD_PARSER_SUMMARY_L4_1588_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 5, 1, v) +#define RDD_PARSER_SUMMARY_L4_1588_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 1, r) +#define RDD_PARSER_SUMMARY_L4_1588_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 1, v) +#define RDD_PARSER_SUMMARY_TCP_UDP_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 4, 1, r) +#define RDD_PARSER_SUMMARY_TCP_UDP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 4, 1, v) +#define RDD_PARSER_SUMMARY_TCP_UDP_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 1, r) +#define RDD_PARSER_SUMMARY_TCP_UDP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 1, v) +#define RDD_PARSER_SUMMARY_DHCP_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 3, 1, r) +#define RDD_PARSER_SUMMARY_DHCP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 3, 1, v) +#define RDD_PARSER_SUMMARY_DHCP_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 1, r) +#define RDD_PARSER_SUMMARY_DHCP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 1, v) +#define RDD_PARSER_SUMMARY_BROADCAST_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 2, 1, r) +#define RDD_PARSER_SUMMARY_BROADCAST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 2, 1, v) +#define RDD_PARSER_SUMMARY_BROADCAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 1, r) +#define RDD_PARSER_SUMMARY_BROADCAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 1, v) +#define RDD_PARSER_SUMMARY_MULTICAST_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 1, 1, r) +#define RDD_PARSER_SUMMARY_MULTICAST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 1, 1, v) +#define RDD_PARSER_SUMMARY_MULTICAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 1, r) +#define RDD_PARSER_SUMMARY_MULTICAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 1, v) +#define RDD_PARSER_SUMMARY_DOS_ATTACK_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 0, 1, r) +#define RDD_PARSER_SUMMARY_DOS_ATTACK_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS), 0, 1, v) +#define RDD_PARSER_SUMMARY_DOS_ATTACK_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 1, r) +#define RDD_PARSER_SUMMARY_DOS_ATTACK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 1, v) +#define RDD_PARSER_SUMMARY_MC_L3_CTL_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 7, 1, r) +#define RDD_PARSER_SUMMARY_MC_L3_CTL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 7, 1, v) +#define RDD_PARSER_SUMMARY_MC_L3_CTL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 7, 1, r) +#define RDD_PARSER_SUMMARY_MC_L3_CTL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 7, 1, v) +#define RDD_PARSER_SUMMARY_IP_LENGTH_ERROR_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 6, 1, r) +#define RDD_PARSER_SUMMARY_IP_LENGTH_ERROR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 6, 1, v) +#define RDD_PARSER_SUMMARY_IP_LENGTH_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 6, 1, r) +#define RDD_PARSER_SUMMARY_IP_LENGTH_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 6, 1, v) +#define RDD_PARSER_SUMMARY_ICMPV6_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 5, 1, r) +#define RDD_PARSER_SUMMARY_ICMPV6_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 5, 1, v) +#define RDD_PARSER_SUMMARY_ICMPV6_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 5, 1, r) +#define RDD_PARSER_SUMMARY_ICMPV6_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 5, 1, v) +#define RDD_PARSER_SUMMARY_HEADER_LENGTH_ERROR_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 4, 1, r) +#define RDD_PARSER_SUMMARY_HEADER_LENGTH_ERROR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 4, 1, v) +#define RDD_PARSER_SUMMARY_HEADER_LENGTH_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 4, 1, r) +#define RDD_PARSER_SUMMARY_HEADER_LENGTH_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 4, 1, v) +#define RDD_PARSER_SUMMARY_CHECKSUM_ERROR_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 3, 1, r) +#define RDD_PARSER_SUMMARY_CHECKSUM_ERROR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 3, 1, v) +#define RDD_PARSER_SUMMARY_CHECKSUM_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 3, 1, r) +#define RDD_PARSER_SUMMARY_CHECKSUM_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 3, 1, v) +#define RDD_PARSER_SUMMARY_VERSION_MISMATCH_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 2, 1, r) +#define RDD_PARSER_SUMMARY_VERSION_MISMATCH_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 2, 1, v) +#define RDD_PARSER_SUMMARY_VERSION_MISMATCH_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 2, 1, r) +#define RDD_PARSER_SUMMARY_VERSION_MISMATCH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 2, 1, v) +#define RDD_PARSER_SUMMARY_L3_PROTOCOL_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 0, 2, r) +#define RDD_PARSER_SUMMARY_L3_PROTOCOL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 1, 0, 2, v) +#define RDD_PARSER_SUMMARY_L3_PROTOCOL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 2, r) +#define RDD_PARSER_SUMMARY_L3_PROTOCOL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 2, v) +#define RDD_PARSER_SUMMARY_IPV6_EXT_HEADER_FILTER_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 7, 1, r) +#define RDD_PARSER_SUMMARY_IPV6_EXT_HEADER_FILTER_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 7, 1, v) +#define RDD_PARSER_SUMMARY_IPV6_EXT_HEADER_FILTER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 7, 1, r) +#define RDD_PARSER_SUMMARY_IPV6_EXT_HEADER_FILTER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 7, 1, v) +#define RDD_PARSER_SUMMARY_TCP_FLAG_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 6, 1, r) +#define RDD_PARSER_SUMMARY_TCP_FLAG_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 6, 1, v) +#define RDD_PARSER_SUMMARY_TCP_FLAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 6, 1, r) +#define RDD_PARSER_SUMMARY_TCP_FLAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 6, 1, v) +#define RDD_PARSER_SUMMARY_EXCEPTION_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 5, 1, r) +#define RDD_PARSER_SUMMARY_EXCEPTION_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 5, 1, v) +#define RDD_PARSER_SUMMARY_EXCEPTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 5, 1, r) +#define RDD_PARSER_SUMMARY_EXCEPTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 5, 1, v) +#define RDD_PARSER_SUMMARY_IP_MC_L2_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 4, 1, r) +#define RDD_PARSER_SUMMARY_IP_MC_L2_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 4, 1, v) +#define RDD_PARSER_SUMMARY_IP_MC_L2_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 4, 1, r) +#define RDD_PARSER_SUMMARY_IP_MC_L2_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 4, 1, v) +#define RDD_PARSER_SUMMARY_MC_L3_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 3, 1, r) +#define RDD_PARSER_SUMMARY_MC_L3_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 3, 1, v) +#define RDD_PARSER_SUMMARY_MC_L3_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 3, 1, r) +#define RDD_PARSER_SUMMARY_MC_L3_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 3, 1, v) +#define RDD_PARSER_SUMMARY_ERROR_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 2, 1, r) +#define RDD_PARSER_SUMMARY_ERROR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 2, 1, v) +#define RDD_PARSER_SUMMARY_ERROR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 2, 1, r) +#define RDD_PARSER_SUMMARY_ERROR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 2, 1, v) +#define RDD_PARSER_SUMMARY_TUNNEL_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 1, 1, r) +#define RDD_PARSER_SUMMARY_TUNNEL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 1, 1, v) +#define RDD_PARSER_SUMMARY_TUNNEL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 1, 1, r) +#define RDD_PARSER_SUMMARY_TUNNEL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 1, 1, v) +#define RDD_PARSER_SUMMARY__5_TUP_VALID_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 0, 1, r) +#define RDD_PARSER_SUMMARY__5_TUP_VALID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 2, 0, 1, v) +#define RDD_PARSER_SUMMARY__5_TUP_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 1, r) +#define RDD_PARSER_SUMMARY__5_TUP_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 1, v) +#define RDD_PARSER_SUMMARY_ETHERNET_VERSION_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 3, 6, 2, r) +#define RDD_PARSER_SUMMARY_ETHERNET_VERSION_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 3, 6, 2, v) +#define RDD_PARSER_SUMMARY_ETHERNET_VERSION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 6, 2, r) +#define RDD_PARSER_SUMMARY_ETHERNET_VERSION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 6, 2, v) +#define RDD_PARSER_SUMMARY_DNS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 3, 5, 1, r) +#define RDD_PARSER_SUMMARY_DNS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 3, 5, 1, v) +#define RDD_PARSER_SUMMARY_DNS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 5, 1, r) +#define RDD_PARSER_SUMMARY_DNS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 5, 1, v) +#define RDD_PARSER_SUMMARY_FIRST_IP_FRAGMENT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 3, 4, 1, r) +#define RDD_PARSER_SUMMARY_FIRST_IP_FRAGMENT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 3, 4, 1, v) +#define RDD_PARSER_SUMMARY_FIRST_IP_FRAGMENT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 4, 1, r) +#define RDD_PARSER_SUMMARY_FIRST_IP_FRAGMENT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 4, 1, v) +#define RDD_PARSER_SUMMARY_L2_PROTOCOL_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 3, 0, 4, r) +#define RDD_PARSER_SUMMARY_L2_PROTOCOL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_SUMMARY_DTS) + 3, 0, 4, v) +#define RDD_PARSER_SUMMARY_L2_PROTOCOL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 4, r) +#define RDD_PARSER_SUMMARY_L2_PROTOCOL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 4, v) +/* <<>>RDD_PARSER_RESULTS */ +#define PARSER_RESULTS_L4_PROTOCOL_F_OFFSET 28 +#define PARSER_RESULTS_L4_PROTOCOL_F_WIDTH 4 +#define PARSER_RESULTS_PARSER_RESULTS_OFFSET 0 +#define PARSER_RESULTS_L4_PROTOCOL_OFFSET 0 +#define PARSER_RESULTS_L4_PROTOCOL_WORD_OFFSET 0 +#define PARSER_RESULTS_L4_PROTOCOL_F_OFFSET_MOD8 4 +#define PARSER_RESULTS_L4_PROTOCOL_F_OFFSET_MOD16 12 +#define PARSER_RESULTS_V6_AH_F_OFFSET 27 +#define PARSER_RESULTS_V6_AH_F_WIDTH 1 +#define PARSER_RESULTS_V6_AH_OFFSET 0 +#define PARSER_RESULTS_V6_AH_WORD_OFFSET 0 +#define PARSER_RESULTS_V6_AH_F_OFFSET_MOD8 3 +#define PARSER_RESULTS_V6_AH_F_OFFSET_MOD16 11 +#define PARSER_RESULTS_V6_DEST_OPT_F_OFFSET 26 +#define PARSER_RESULTS_V6_DEST_OPT_F_WIDTH 1 +#define PARSER_RESULTS_V6_DEST_OPT_OFFSET 0 +#define PARSER_RESULTS_V6_DEST_OPT_WORD_OFFSET 0 +#define PARSER_RESULTS_V6_DEST_OPT_F_OFFSET_MOD8 2 +#define PARSER_RESULTS_V6_DEST_OPT_F_OFFSET_MOD16 10 +#define PARSER_RESULTS_V6_ROUTE_F_OFFSET 25 +#define PARSER_RESULTS_V6_ROUTE_F_WIDTH 1 +#define PARSER_RESULTS_V6_ROUTE_OFFSET 0 +#define PARSER_RESULTS_V6_ROUTE_WORD_OFFSET 0 +#define PARSER_RESULTS_V6_ROUTE_F_OFFSET_MOD8 1 +#define PARSER_RESULTS_V6_ROUTE_F_OFFSET_MOD16 9 +#define PARSER_RESULTS_V6_HOP_F_OFFSET 24 +#define PARSER_RESULTS_V6_HOP_F_WIDTH 1 +#define PARSER_RESULTS_V6_HOP_OFFSET 0 +#define PARSER_RESULTS_V6_HOP_WORD_OFFSET 0 +#define PARSER_RESULTS_V6_HOP_F_OFFSET_MOD8 0 +#define PARSER_RESULTS_V6_HOP_F_OFFSET_MOD16 8 +#define PARSER_RESULTS_TCP_FLAGS_F_OFFSET 16 +#define PARSER_RESULTS_TCP_FLAGS_F_WIDTH 8 +#define PARSER_RESULTS_TCP_FLAGS_OFFSET 1 +#define PARSER_RESULTS_TCP_FLAGS_WORD_OFFSET 0 +#define PARSER_RESULTS_TCP_FLAGS_F_OFFSET_MOD16 0 +#define PARSER_RESULTS_LAYER3_OFFSET_F_OFFSET 8 +#define PARSER_RESULTS_LAYER3_OFFSET_F_WIDTH 8 +#define PARSER_RESULTS_LAYER3_OFFSET_OFFSET 2 +#define PARSER_RESULTS_LAYER3_OFFSET_WORD_OFFSET 0 +#define PARSER_RESULTS_LAYER3_OFFSET_F_OFFSET_MOD16 8 +#define PARSER_RESULTS_LAYER4_OFFSET_F_OFFSET 0 +#define PARSER_RESULTS_LAYER4_OFFSET_F_WIDTH 8 +#define PARSER_RESULTS_LAYER4_OFFSET_OFFSET 3 +#define PARSER_RESULTS_LAYER4_OFFSET_WORD_OFFSET 0 +#define PARSER_RESULTS_LAYER4_OFFSET_F_OFFSET_MOD16 0 +#define PARSER_RESULTS_OUTER_VLAN_F_OFFSET 16 +#define PARSER_RESULTS_OUTER_VLAN_F_WIDTH 16 +#define PARSER_RESULTS_OUTER_VLAN_OFFSET 4 +#define PARSER_RESULTS_OUTER_VLAN_WORD_OFFSET 1 +#define PARSER_RESULTS_MAC_DA1_2_F_OFFSET 0 +#define PARSER_RESULTS_MAC_DA1_2_F_WIDTH 16 +#define PARSER_RESULTS_MAC_DA1_2_OFFSET 6 +#define PARSER_RESULTS_MAC_DA1_2_WORD_OFFSET 1 +#define PARSER_RESULTS_MAC_DA3_6_F_OFFSET 0 +#define PARSER_RESULTS_MAC_DA3_6_F_WIDTH 32 +#define PARSER_RESULTS_MAC_DA3_6_OFFSET 8 +#define PARSER_RESULTS_MAC_DA3_6_WORD_OFFSET 2 +#define PARSER_RESULTS_INNER_VLAN_F_OFFSET 16 +#define PARSER_RESULTS_INNER_VLAN_F_WIDTH 16 +#define PARSER_RESULTS_INNER_VLAN_OFFSET 12 +#define PARSER_RESULTS_INNER_VLAN_WORD_OFFSET 3 +#define PARSER_RESULTS_MAC_SA1_2_F_OFFSET 0 +#define PARSER_RESULTS_MAC_SA1_2_F_WIDTH 16 +#define PARSER_RESULTS_MAC_SA1_2_OFFSET 14 +#define PARSER_RESULTS_MAC_SA1_2_WORD_OFFSET 3 +#define PARSER_RESULTS_MAC_SA3_6_F_OFFSET 0 +#define PARSER_RESULTS_MAC_SA3_6_F_WIDTH 32 +#define PARSER_RESULTS_MAC_SA3_6_OFFSET 16 +#define PARSER_RESULTS_MAC_SA3_6_WORD_OFFSET 4 +#define PARSER_RESULTS_ICMPV6_TYPE_F_OFFSET 24 +#define PARSER_RESULTS_ICMPV6_TYPE_F_WIDTH 8 +#define PARSER_RESULTS_ICMPV6_TYPE_OFFSET 20 +#define PARSER_RESULTS_ICMPV6_TYPE_WORD_OFFSET 5 +#define PARSER_RESULTS_ICMPV6_TYPE_F_OFFSET_MOD16 8 +#define PARSER_RESULTS_IP_TTL_F_OFFSET 16 +#define PARSER_RESULTS_IP_TTL_F_WIDTH 8 +#define PARSER_RESULTS_IP_TTL_OFFSET 21 +#define PARSER_RESULTS_IP_TTL_WORD_OFFSET 5 +#define PARSER_RESULTS_IP_TTL_F_OFFSET_MOD16 0 +#define PARSER_RESULTS_IP_LENGTH_F_OFFSET 0 +#define PARSER_RESULTS_IP_LENGTH_F_WIDTH 16 +#define PARSER_RESULTS_IP_LENGTH_OFFSET 22 +#define PARSER_RESULTS_IP_LENGTH_WORD_OFFSET 5 +#define PARSER_RESULTS_IP_FILTER_MATCH_F_OFFSET 31 +#define PARSER_RESULTS_IP_FILTER_MATCH_F_WIDTH 1 +#define PARSER_RESULTS_IP_FILTER_MATCH_OFFSET 24 +#define PARSER_RESULTS_IP_FILTER_MATCH_WORD_OFFSET 6 +#define PARSER_RESULTS_IP_FILTER_MATCH_F_OFFSET_MOD8 7 +#define PARSER_RESULTS_IP_FILTER_MATCH_F_OFFSET_MOD16 15 +#define PARSER_RESULTS_IP_FILTER_NUM_F_OFFSET 30 +#define PARSER_RESULTS_IP_FILTER_NUM_F_WIDTH 1 +#define PARSER_RESULTS_IP_FILTER_NUM_OFFSET 24 +#define PARSER_RESULTS_IP_FILTER_NUM_WORD_OFFSET 6 +#define PARSER_RESULTS_IP_FILTER_NUM_F_OFFSET_MOD8 6 +#define PARSER_RESULTS_IP_FILTER_NUM_F_OFFSET_MOD16 14 +#define PARSER_RESULTS_P_TAG_F_OFFSET 29 +#define PARSER_RESULTS_P_TAG_F_WIDTH 1 +#define PARSER_RESULTS_P_TAG_OFFSET 24 +#define PARSER_RESULTS_P_TAG_WORD_OFFSET 6 +#define PARSER_RESULTS_P_TAG_F_OFFSET_MOD8 5 +#define PARSER_RESULTS_P_TAG_F_OFFSET_MOD16 13 +#define PARSER_RESULTS_VID_FILTER_HIT_F_OFFSET 28 +#define PARSER_RESULTS_VID_FILTER_HIT_F_WIDTH 1 +#define PARSER_RESULTS_VID_FILTER_HIT_OFFSET 24 +#define PARSER_RESULTS_VID_FILTER_HIT_WORD_OFFSET 6 +#define PARSER_RESULTS_VID_FILTER_HIT_F_OFFSET_MOD8 4 +#define PARSER_RESULTS_VID_FILTER_HIT_F_OFFSET_MOD16 12 +#define PARSER_RESULTS_DA_FILTER_NUMBER_F_OFFSET 24 +#define PARSER_RESULTS_DA_FILTER_NUMBER_F_WIDTH 4 +#define PARSER_RESULTS_DA_FILTER_NUMBER_OFFSET 24 +#define PARSER_RESULTS_DA_FILTER_NUMBER_WORD_OFFSET 6 +#define PARSER_RESULTS_DA_FILTER_NUMBER_F_OFFSET_MOD8 0 +#define PARSER_RESULTS_DA_FILTER_NUMBER_F_OFFSET_MOD16 8 +#define PARSER_RESULTS_TAG_TYPE_F_OFFSET 22 +#define PARSER_RESULTS_TAG_TYPE_F_WIDTH 2 +#define PARSER_RESULTS_TAG_TYPE_OFFSET 25 +#define PARSER_RESULTS_TAG_TYPE_WORD_OFFSET 6 +#define PARSER_RESULTS_TAG_TYPE_F_OFFSET_MOD8 6 +#define PARSER_RESULTS_TAG_TYPE_F_OFFSET_MOD16 6 +#define PARSER_RESULTS_TPID_VLAN_0_F_OFFSET 19 +#define PARSER_RESULTS_TPID_VLAN_0_F_WIDTH 3 +#define PARSER_RESULTS_TPID_VLAN_0_OFFSET 25 +#define PARSER_RESULTS_TPID_VLAN_0_WORD_OFFSET 6 +#define PARSER_RESULTS_TPID_VLAN_0_F_OFFSET_MOD8 3 +#define PARSER_RESULTS_TPID_VLAN_0_F_OFFSET_MOD16 3 +#define PARSER_RESULTS_TPID_VLAN_1_F_OFFSET 16 +#define PARSER_RESULTS_TPID_VLAN_1_F_WIDTH 3 +#define PARSER_RESULTS_TPID_VLAN_1_OFFSET 25 +#define PARSER_RESULTS_TPID_VLAN_1_WORD_OFFSET 6 +#define PARSER_RESULTS_TPID_VLAN_1_F_OFFSET_MOD8 0 +#define PARSER_RESULTS_TPID_VLAN_1_F_OFFSET_MOD16 0 +#define PARSER_RESULTS_VID_FILTER_MATCH_F_OFFSET 12 +#define PARSER_RESULTS_VID_FILTER_MATCH_F_WIDTH 4 +#define PARSER_RESULTS_VID_FILTER_MATCH_OFFSET 26 +#define PARSER_RESULTS_VID_FILTER_MATCH_WORD_OFFSET 6 +#define PARSER_RESULTS_VID_FILTER_MATCH_F_OFFSET_MOD8 4 +#define PARSER_RESULTS_VID_FILTER_MATCH_F_OFFSET_MOD16 12 +#define PARSER_RESULTS_DOS_ATTACK_REASON_F_OFFSET 8 +#define PARSER_RESULTS_DOS_ATTACK_REASON_F_WIDTH 4 +#define PARSER_RESULTS_DOS_ATTACK_REASON_OFFSET 26 +#define PARSER_RESULTS_DOS_ATTACK_REASON_WORD_OFFSET 6 +#define PARSER_RESULTS_DOS_ATTACK_REASON_F_OFFSET_MOD8 0 +#define PARSER_RESULTS_DOS_ATTACK_REASON_F_OFFSET_MOD16 8 +#define PARSER_RESULTS_LAYER2_ADDRESS_F_OFFSET 0 +#define PARSER_RESULTS_LAYER2_ADDRESS_F_WIDTH 8 +#define PARSER_RESULTS_LAYER2_ADDRESS_OFFSET 27 +#define PARSER_RESULTS_LAYER2_ADDRESS_WORD_OFFSET 6 +#define PARSER_RESULTS_LAYER2_ADDRESS_F_OFFSET_MOD16 0 + +/* >>>RDD_PARSER_RESULTS_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t l4_protocol :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /*defined by rdd_parser_l4_protocol enumeration*/ + uint32_t v6_ah :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t v6_dest_opt :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t v6_route :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t v6_hop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t tcp_flags ; + uint8_t layer3_offset ; + uint8_t layer4_offset ; + uint16_t outer_vlan ; + uint16_t mac_da1_2 ; + uint32_t mac_da3_6 ; + uint16_t inner_vlan ; + uint16_t mac_sa1_2 ; + uint32_t mac_sa3_6 ; + uint8_t icmpv6_type ; + uint8_t ip_ttl ; + uint16_t ip_length ; + uint32_t ip_filter_match :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_filter_num :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t p_tag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vid_filter_hit :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t da_filter_number :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tag_type :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tpid_vlan_0 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tpid_vlan_1 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vid_filter_match :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dos_attack_reason :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t layer2_address ; +#else + uint8_t layer4_offset ; + uint8_t layer3_offset ; + uint8_t tcp_flags ; + uint32_t v6_hop :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t v6_route :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t v6_dest_opt :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t v6_ah :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t l4_protocol :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /*defined by rdd_parser_l4_protocol enumeration*/ + uint16_t mac_da1_2 ; + uint16_t outer_vlan ; + uint32_t mac_da3_6 ; + uint16_t mac_sa1_2 ; + uint16_t inner_vlan ; + uint32_t mac_sa3_6 ; + uint16_t ip_length ; + uint8_t ip_ttl ; + uint8_t icmpv6_type ; + uint8_t layer2_address ; + uint32_t dos_attack_reason :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vid_filter_match :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tpid_vlan_1 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tpid_vlan_0 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tag_type :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t da_filter_number :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vid_filter_hit :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t p_tag :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_filter_num :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ip_filter_match :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PARSER_RESULTS_DTS; + +typedef union +{ + uint32_t word_val[7]; + uint64_t dword_val64[3]; + RDD_PARSER_RESULTS_DTS fields; +} PARSER_RESULTS_STRUCT; +#define RDD_PARSER_RESULTS_L4_PROTOCOL_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS), 4, 4, r) /*defined by rdd_parser_l4_protocol enumeration*/ +#define RDD_PARSER_RESULTS_L4_PROTOCOL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS), 4, 4, v) /*defined by rdd_parser_l4_protocol enumeration*/ +#define RDD_PARSER_RESULTS_L4_PROTOCOL_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 4, 4, r) /*defined by rdd_parser_l4_protocol enumeration*/ +#define RDD_PARSER_RESULTS_L4_PROTOCOL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 4, 4, v) /*defined by rdd_parser_l4_protocol enumeration*/ +#define RDD_PARSER_RESULTS_V6_AH_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS), 3, 1, r) +#define RDD_PARSER_RESULTS_V6_AH_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS), 3, 1, v) +#define RDD_PARSER_RESULTS_V6_AH_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 1, r) +#define RDD_PARSER_RESULTS_V6_AH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 1, v) +#define RDD_PARSER_RESULTS_V6_DEST_OPT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS), 2, 1, r) +#define RDD_PARSER_RESULTS_V6_DEST_OPT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS), 2, 1, v) +#define RDD_PARSER_RESULTS_V6_DEST_OPT_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 1, r) +#define RDD_PARSER_RESULTS_V6_DEST_OPT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 1, v) +#define RDD_PARSER_RESULTS_V6_ROUTE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS), 1, 1, r) +#define RDD_PARSER_RESULTS_V6_ROUTE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS), 1, 1, v) +#define RDD_PARSER_RESULTS_V6_ROUTE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 1, 1, r) +#define RDD_PARSER_RESULTS_V6_ROUTE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 1, 1, v) +#define RDD_PARSER_RESULTS_V6_HOP_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS), 0, 1, r) +#define RDD_PARSER_RESULTS_V6_HOP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS), 0, 1, v) +#define RDD_PARSER_RESULTS_V6_HOP_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 1, r) +#define RDD_PARSER_RESULTS_V6_HOP_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 1, v) +#define RDD_PARSER_RESULTS_TCP_FLAGS_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 1, r) +#define RDD_PARSER_RESULTS_TCP_FLAGS_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 1, v) +#define RDD_PARSER_RESULTS_TCP_FLAGS_READ(r, p) MREAD_8((uint8_t *)p + 1, r) +#define RDD_PARSER_RESULTS_TCP_FLAGS_WRITE(v, p) MWRITE_8((uint8_t *)p + 1, v) +#define RDD_PARSER_RESULTS_LAYER3_OFFSET_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 2, r) +#define RDD_PARSER_RESULTS_LAYER3_OFFSET_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 2, v) +#define RDD_PARSER_RESULTS_LAYER3_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 2, r) +#define RDD_PARSER_RESULTS_LAYER3_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 2, v) +#define RDD_PARSER_RESULTS_LAYER4_OFFSET_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 3, r) +#define RDD_PARSER_RESULTS_LAYER4_OFFSET_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 3, v) +#define RDD_PARSER_RESULTS_LAYER4_OFFSET_READ(r, p) MREAD_8((uint8_t *)p + 3, r) +#define RDD_PARSER_RESULTS_LAYER4_OFFSET_WRITE(v, p) MWRITE_8((uint8_t *)p + 3, v) +#define RDD_PARSER_RESULTS_OUTER_VLAN_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 4, r) +#define RDD_PARSER_RESULTS_OUTER_VLAN_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 4, v) +#define RDD_PARSER_RESULTS_OUTER_VLAN_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_PARSER_RESULTS_OUTER_VLAN_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_PARSER_RESULTS_MAC_DA1_2_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 6, r) +#define RDD_PARSER_RESULTS_MAC_DA1_2_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 6, v) +#define RDD_PARSER_RESULTS_MAC_DA1_2_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_PARSER_RESULTS_MAC_DA1_2_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_PARSER_RESULTS_MAC_DA3_6_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 8, r) +#define RDD_PARSER_RESULTS_MAC_DA3_6_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 8, v) +#define RDD_PARSER_RESULTS_MAC_DA3_6_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_PARSER_RESULTS_MAC_DA3_6_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_PARSER_RESULTS_INNER_VLAN_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 12, r) +#define RDD_PARSER_RESULTS_INNER_VLAN_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 12, v) +#define RDD_PARSER_RESULTS_INNER_VLAN_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_PARSER_RESULTS_INNER_VLAN_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_PARSER_RESULTS_MAC_SA1_2_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 14, r) +#define RDD_PARSER_RESULTS_MAC_SA1_2_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 14, v) +#define RDD_PARSER_RESULTS_MAC_SA1_2_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_PARSER_RESULTS_MAC_SA1_2_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_PARSER_RESULTS_MAC_SA3_6_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 16, r) +#define RDD_PARSER_RESULTS_MAC_SA3_6_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 16, v) +#define RDD_PARSER_RESULTS_MAC_SA3_6_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_PARSER_RESULTS_MAC_SA3_6_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +#define RDD_PARSER_RESULTS_ICMPV6_TYPE_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 20, r) +#define RDD_PARSER_RESULTS_ICMPV6_TYPE_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 20, v) +#define RDD_PARSER_RESULTS_ICMPV6_TYPE_READ(r, p) MREAD_8((uint8_t *)p + 20, r) +#define RDD_PARSER_RESULTS_ICMPV6_TYPE_WRITE(v, p) MWRITE_8((uint8_t *)p + 20, v) +#define RDD_PARSER_RESULTS_IP_TTL_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 21, r) +#define RDD_PARSER_RESULTS_IP_TTL_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 21, v) +#define RDD_PARSER_RESULTS_IP_TTL_READ(r, p) MREAD_8((uint8_t *)p + 21, r) +#define RDD_PARSER_RESULTS_IP_TTL_WRITE(v, p) MWRITE_8((uint8_t *)p + 21, v) +#define RDD_PARSER_RESULTS_IP_LENGTH_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 22, r) +#define RDD_PARSER_RESULTS_IP_LENGTH_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 22, v) +#define RDD_PARSER_RESULTS_IP_LENGTH_READ(r, p) MREAD_16((uint8_t *)p + 22, r) +#define RDD_PARSER_RESULTS_IP_LENGTH_WRITE(v, p) MWRITE_16((uint8_t *)p + 22, v) +#define RDD_PARSER_RESULTS_IP_FILTER_MATCH_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 24, 7, 1, r) +#define RDD_PARSER_RESULTS_IP_FILTER_MATCH_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 24, 7, 1, v) +#define RDD_PARSER_RESULTS_IP_FILTER_MATCH_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 24, 7, 1, r) +#define RDD_PARSER_RESULTS_IP_FILTER_MATCH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 24, 7, 1, v) +#define RDD_PARSER_RESULTS_IP_FILTER_NUM_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 24, 6, 1, r) +#define RDD_PARSER_RESULTS_IP_FILTER_NUM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 24, 6, 1, v) +#define RDD_PARSER_RESULTS_IP_FILTER_NUM_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 24, 6, 1, r) +#define RDD_PARSER_RESULTS_IP_FILTER_NUM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 24, 6, 1, v) +#define RDD_PARSER_RESULTS_P_TAG_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 24, 5, 1, r) +#define RDD_PARSER_RESULTS_P_TAG_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 24, 5, 1, v) +#define RDD_PARSER_RESULTS_P_TAG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 24, 5, 1, r) +#define RDD_PARSER_RESULTS_P_TAG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 24, 5, 1, v) +#define RDD_PARSER_RESULTS_VID_FILTER_HIT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 24, 4, 1, r) +#define RDD_PARSER_RESULTS_VID_FILTER_HIT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 24, 4, 1, v) +#define RDD_PARSER_RESULTS_VID_FILTER_HIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 24, 4, 1, r) +#define RDD_PARSER_RESULTS_VID_FILTER_HIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 24, 4, 1, v) +#define RDD_PARSER_RESULTS_DA_FILTER_NUMBER_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 24, 0, 4, r) +#define RDD_PARSER_RESULTS_DA_FILTER_NUMBER_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 24, 0, 4, v) +#define RDD_PARSER_RESULTS_DA_FILTER_NUMBER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 24, 0, 4, r) +#define RDD_PARSER_RESULTS_DA_FILTER_NUMBER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 24, 0, 4, v) +#define RDD_PARSER_RESULTS_TAG_TYPE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 25, 6, 2, r) +#define RDD_PARSER_RESULTS_TAG_TYPE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 25, 6, 2, v) +#define RDD_PARSER_RESULTS_TAG_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 25, 6, 2, r) +#define RDD_PARSER_RESULTS_TAG_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 25, 6, 2, v) +#define RDD_PARSER_RESULTS_TPID_VLAN_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 25, 3, 3, r) +#define RDD_PARSER_RESULTS_TPID_VLAN_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 25, 3, 3, v) +#define RDD_PARSER_RESULTS_TPID_VLAN_0_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 25, 3, 3, r) +#define RDD_PARSER_RESULTS_TPID_VLAN_0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 25, 3, 3, v) +#define RDD_PARSER_RESULTS_TPID_VLAN_1_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 25, 0, 3, r) +#define RDD_PARSER_RESULTS_TPID_VLAN_1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 25, 0, 3, v) +#define RDD_PARSER_RESULTS_TPID_VLAN_1_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 25, 0, 3, r) +#define RDD_PARSER_RESULTS_TPID_VLAN_1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 25, 0, 3, v) +#define RDD_PARSER_RESULTS_VID_FILTER_MATCH_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 26, 4, 4, r) +#define RDD_PARSER_RESULTS_VID_FILTER_MATCH_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 26, 4, 4, v) +#define RDD_PARSER_RESULTS_VID_FILTER_MATCH_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 26, 4, 4, r) +#define RDD_PARSER_RESULTS_VID_FILTER_MATCH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 26, 4, 4, v) +#define RDD_PARSER_RESULTS_DOS_ATTACK_REASON_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 26, 0, 4, r) +#define RDD_PARSER_RESULTS_DOS_ATTACK_REASON_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 26, 0, 4, v) +#define RDD_PARSER_RESULTS_DOS_ATTACK_REASON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 26, 0, 4, r) +#define RDD_PARSER_RESULTS_DOS_ATTACK_REASON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 26, 0, 4, v) +#define RDD_PARSER_RESULTS_LAYER2_ADDRESS_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 27, r) +#define RDD_PARSER_RESULTS_LAYER2_ADDRESS_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PARSER_RESULTS_DTS) + 27, v) +#define RDD_PARSER_RESULTS_LAYER2_ADDRESS_READ(r, p) MREAD_8((uint8_t *)p + 27, r) +#define RDD_PARSER_RESULTS_LAYER2_ADDRESS_WRITE(v, p) MWRITE_8((uint8_t *)p + 27, v) +/* <<>>RDD_PARSER_L2_LKP_ENTRY */ +#define PARSER_L2_LKP_ENTRY_DA_CRC_F_OFFSET 0 +#define PARSER_L2_LKP_ENTRY_DA_CRC_F_WIDTH 32 +#define PARSER_L2_LKP_ENTRY_PARSER_L2_LKP_ENTRY_OFFSET 0 +#define PARSER_L2_LKP_ENTRY_DA_CRC_OFFSET 0 +#define PARSER_L2_LKP_ENTRY_DA_CRC_WORD_OFFSET 0 +#define PARSER_L2_LKP_ENTRY_SA_CRC_F_OFFSET 0 +#define PARSER_L2_LKP_ENTRY_SA_CRC_F_WIDTH 32 +#define PARSER_L2_LKP_ENTRY_SA_CRC_OFFSET 4 +#define PARSER_L2_LKP_ENTRY_SA_CRC_WORD_OFFSET 1 +#define PARSER_L2_LKP_ENTRY_VLAN_ETH_TYPE_CRC_F_OFFSET 0 +#define PARSER_L2_LKP_ENTRY_VLAN_ETH_TYPE_CRC_F_WIDTH 32 +#define PARSER_L2_LKP_ENTRY_VLAN_ETH_TYPE_CRC_OFFSET 8 +#define PARSER_L2_LKP_ENTRY_VLAN_ETH_TYPE_CRC_WORD_OFFSET 2 +#define PARSER_L2_LKP_ENTRY_TOS_F_OFFSET 24 +#define PARSER_L2_LKP_ENTRY_TOS_F_WIDTH 8 +#define PARSER_L2_LKP_ENTRY_TOS_OFFSET 12 +#define PARSER_L2_LKP_ENTRY_TOS_WORD_OFFSET 3 +#define PARSER_L2_LKP_ENTRY_TOS_F_OFFSET_MOD16 8 +#define PARSER_L2_LKP_ENTRY_LOOKUP_PORT_F_OFFSET 19 +#define PARSER_L2_LKP_ENTRY_LOOKUP_PORT_F_WIDTH 5 +#define PARSER_L2_LKP_ENTRY_LOOKUP_PORT_OFFSET 13 +#define PARSER_L2_LKP_ENTRY_LOOKUP_PORT_WORD_OFFSET 3 +#define PARSER_L2_LKP_ENTRY_LOOKUP_PORT_F_OFFSET_MOD8 3 +#define PARSER_L2_LKP_ENTRY_LOOKUP_PORT_F_OFFSET_MOD16 3 +#define PARSER_L2_LKP_ENTRY_VLANS_NUM_F_OFFSET 16 +#define PARSER_L2_LKP_ENTRY_VLANS_NUM_F_WIDTH 3 +#define PARSER_L2_LKP_ENTRY_VLANS_NUM_OFFSET 13 +#define PARSER_L2_LKP_ENTRY_VLANS_NUM_WORD_OFFSET 3 +#define PARSER_L2_LKP_ENTRY_VLANS_NUM_F_OFFSET_MOD8 0 +#define PARSER_L2_LKP_ENTRY_VLANS_NUM_F_OFFSET_MOD16 0 +#define PARSER_L2_LKP_ENTRY_VALID_F_OFFSET 15 +#define PARSER_L2_LKP_ENTRY_VALID_F_WIDTH 1 +#define PARSER_L2_LKP_ENTRY_VALID_OFFSET 14 +#define PARSER_L2_LKP_ENTRY_VALID_WORD_OFFSET 3 +#define PARSER_L2_LKP_ENTRY_VALID_F_OFFSET_MOD8 7 +#define PARSER_L2_LKP_ENTRY_VALID_F_OFFSET_MOD16 15 +#define PARSER_L2_LKP_ENTRY_TCP_PURE_ACK_F_OFFSET 14 +#define PARSER_L2_LKP_ENTRY_TCP_PURE_ACK_F_WIDTH 1 +#define PARSER_L2_LKP_ENTRY_TCP_PURE_ACK_OFFSET 14 +#define PARSER_L2_LKP_ENTRY_TCP_PURE_ACK_WORD_OFFSET 3 +#define PARSER_L2_LKP_ENTRY_TCP_PURE_ACK_F_OFFSET_MOD8 6 +#define PARSER_L2_LKP_ENTRY_TCP_PURE_ACK_F_OFFSET_MOD16 14 +#define PARSER_L2_LKP_ENTRY_VAR_LEN_CTX_F_OFFSET 0 +#define PARSER_L2_LKP_ENTRY_VAR_LEN_CTX_F_WIDTH 4 +#define PARSER_L2_LKP_ENTRY_VAR_LEN_CTX_OFFSET 15 +#define PARSER_L2_LKP_ENTRY_VAR_LEN_CTX_WORD_OFFSET 3 +#define PARSER_L2_LKP_ENTRY_VAR_LEN_CTX_F_OFFSET_MOD8 0 +#define PARSER_L2_LKP_ENTRY_VAR_LEN_CTX_F_OFFSET_MOD16 0 + +/* >>>RDD_PARSER_L2_LKP_ENTRY_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t da_crc ; + uint32_t sa_crc ; + uint32_t vlan_eth_type_crc ; + uint8_t tos ; + uint32_t lookup_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vlans_num :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_pure_ack :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t var_len_ctx :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#else + uint32_t da_crc ; + uint32_t sa_crc ; + uint32_t vlan_eth_type_crc ; + uint32_t var_len_ctx :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_pure_ack :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vlans_num :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lookup_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t tos ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PARSER_L2_LKP_ENTRY_DTS; + +typedef union +{ + uint32_t word_val[4]; + uint64_t dword_val64[2]; + RDD_PARSER_L2_LKP_ENTRY_DTS fields; +} PARSER_L2_LKP_ENTRY_STRUCT; +#define RDD_PARSER_L2_LKP_ENTRY_DA_CRC_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS), r) +#define RDD_PARSER_L2_LKP_ENTRY_DA_CRC_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS), v) +#define RDD_PARSER_L2_LKP_ENTRY_DA_CRC_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_PARSER_L2_LKP_ENTRY_DA_CRC_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_PARSER_L2_LKP_ENTRY_SA_CRC_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 4, r) +#define RDD_PARSER_L2_LKP_ENTRY_SA_CRC_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 4, v) +#define RDD_PARSER_L2_LKP_ENTRY_SA_CRC_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_PARSER_L2_LKP_ENTRY_SA_CRC_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_PARSER_L2_LKP_ENTRY_VLAN_ETH_TYPE_CRC_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 8, r) +#define RDD_PARSER_L2_LKP_ENTRY_VLAN_ETH_TYPE_CRC_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 8, v) +#define RDD_PARSER_L2_LKP_ENTRY_VLAN_ETH_TYPE_CRC_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_PARSER_L2_LKP_ENTRY_VLAN_ETH_TYPE_CRC_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_PARSER_L2_LKP_ENTRY_TOS_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 12, r) +#define RDD_PARSER_L2_LKP_ENTRY_TOS_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 12, v) +#define RDD_PARSER_L2_LKP_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 12, r) +#define RDD_PARSER_L2_LKP_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 12, v) +#define RDD_PARSER_L2_LKP_ENTRY_LOOKUP_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 13, 3, 5, r) +#define RDD_PARSER_L2_LKP_ENTRY_LOOKUP_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 13, 3, 5, v) +#define RDD_PARSER_L2_LKP_ENTRY_LOOKUP_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 3, 5, r) +#define RDD_PARSER_L2_LKP_ENTRY_LOOKUP_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 3, 5, v) +#define RDD_PARSER_L2_LKP_ENTRY_VLANS_NUM_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 13, 0, 3, r) +#define RDD_PARSER_L2_LKP_ENTRY_VLANS_NUM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 13, 0, 3, v) +#define RDD_PARSER_L2_LKP_ENTRY_VLANS_NUM_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 3, r) +#define RDD_PARSER_L2_LKP_ENTRY_VLANS_NUM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 3, v) +#define RDD_PARSER_L2_LKP_ENTRY_VALID_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 14, 7, 1, r) +#define RDD_PARSER_L2_LKP_ENTRY_VALID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 14, 7, 1, v) +#define RDD_PARSER_L2_LKP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 14, 7, 1, r) +#define RDD_PARSER_L2_LKP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 14, 7, 1, v) +#define RDD_PARSER_L2_LKP_ENTRY_TCP_PURE_ACK_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 14, 6, 1, r) +#define RDD_PARSER_L2_LKP_ENTRY_TCP_PURE_ACK_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 14, 6, 1, v) +#define RDD_PARSER_L2_LKP_ENTRY_TCP_PURE_ACK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 14, 6, 1, r) +#define RDD_PARSER_L2_LKP_ENTRY_TCP_PURE_ACK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 14, 6, 1, v) +#define RDD_PARSER_L2_LKP_ENTRY_VAR_LEN_CTX_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 15, 0, 4, r) +#define RDD_PARSER_L2_LKP_ENTRY_VAR_LEN_CTX_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L2_LKP_ENTRY_DTS) + 15, 0, 4, v) +#define RDD_PARSER_L2_LKP_ENTRY_VAR_LEN_CTX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 15, 0, 4, r) +#define RDD_PARSER_L2_LKP_ENTRY_VAR_LEN_CTX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 15, 0, 4, v) +/* <<>>RDD_PARSER_L3_LKP_ENTRY */ +#define PARSER_L3_LKP_ENTRY_SOURCE_IP_F_OFFSET 0 +#define PARSER_L3_LKP_ENTRY_SOURCE_IP_F_WIDTH 32 +#define PARSER_L3_LKP_ENTRY_PARSER_L3_LKP_ENTRY_OFFSET 0 +#define PARSER_L3_LKP_ENTRY_SOURCE_IP_OFFSET 0 +#define PARSER_L3_LKP_ENTRY_SOURCE_IP_WORD_OFFSET 0 +#define PARSER_L3_LKP_ENTRY_DESTINATION_IP_F_OFFSET 0 +#define PARSER_L3_LKP_ENTRY_DESTINATION_IP_F_WIDTH 32 +#define PARSER_L3_LKP_ENTRY_DESTINATION_IP_OFFSET 4 +#define PARSER_L3_LKP_ENTRY_DESTINATION_IP_WORD_OFFSET 1 +#define PARSER_L3_LKP_ENTRY_SOURCE_PORT_F_OFFSET 16 +#define PARSER_L3_LKP_ENTRY_SOURCE_PORT_F_WIDTH 16 +#define PARSER_L3_LKP_ENTRY_SOURCE_PORT_OFFSET 8 +#define PARSER_L3_LKP_ENTRY_SOURCE_PORT_WORD_OFFSET 2 +#define PARSER_L3_LKP_ENTRY_DESTINATION_PORT_F_OFFSET 0 +#define PARSER_L3_LKP_ENTRY_DESTINATION_PORT_F_WIDTH 16 +#define PARSER_L3_LKP_ENTRY_DESTINATION_PORT_OFFSET 10 +#define PARSER_L3_LKP_ENTRY_DESTINATION_PORT_WORD_OFFSET 2 +#define PARSER_L3_LKP_ENTRY_TOS_F_OFFSET 24 +#define PARSER_L3_LKP_ENTRY_TOS_F_WIDTH 8 +#define PARSER_L3_LKP_ENTRY_TOS_OFFSET 12 +#define PARSER_L3_LKP_ENTRY_TOS_WORD_OFFSET 3 +#define PARSER_L3_LKP_ENTRY_TOS_F_OFFSET_MOD16 8 +#define PARSER_L3_LKP_ENTRY_LOOKUP_PORT_F_OFFSET 19 +#define PARSER_L3_LKP_ENTRY_LOOKUP_PORT_F_WIDTH 5 +#define PARSER_L3_LKP_ENTRY_LOOKUP_PORT_OFFSET 13 +#define PARSER_L3_LKP_ENTRY_LOOKUP_PORT_WORD_OFFSET 3 +#define PARSER_L3_LKP_ENTRY_LOOKUP_PORT_F_OFFSET_MOD8 3 +#define PARSER_L3_LKP_ENTRY_LOOKUP_PORT_F_OFFSET_MOD16 3 +#define PARSER_L3_LKP_ENTRY_VLANS_NUM_F_OFFSET 16 +#define PARSER_L3_LKP_ENTRY_VLANS_NUM_F_WIDTH 3 +#define PARSER_L3_LKP_ENTRY_VLANS_NUM_OFFSET 13 +#define PARSER_L3_LKP_ENTRY_VLANS_NUM_WORD_OFFSET 3 +#define PARSER_L3_LKP_ENTRY_VLANS_NUM_F_OFFSET_MOD8 0 +#define PARSER_L3_LKP_ENTRY_VLANS_NUM_F_OFFSET_MOD16 0 +#define PARSER_L3_LKP_ENTRY_VALID_F_OFFSET 15 +#define PARSER_L3_LKP_ENTRY_VALID_F_WIDTH 1 +#define PARSER_L3_LKP_ENTRY_VALID_OFFSET 14 +#define PARSER_L3_LKP_ENTRY_VALID_WORD_OFFSET 3 +#define PARSER_L3_LKP_ENTRY_VALID_F_OFFSET_MOD8 7 +#define PARSER_L3_LKP_ENTRY_VALID_F_OFFSET_MOD16 15 +#define PARSER_L3_LKP_ENTRY_TCP_PURE_ACK_F_OFFSET 14 +#define PARSER_L3_LKP_ENTRY_TCP_PURE_ACK_F_WIDTH 1 +#define PARSER_L3_LKP_ENTRY_TCP_PURE_ACK_OFFSET 14 +#define PARSER_L3_LKP_ENTRY_TCP_PURE_ACK_WORD_OFFSET 3 +#define PARSER_L3_LKP_ENTRY_TCP_PURE_ACK_F_OFFSET_MOD8 6 +#define PARSER_L3_LKP_ENTRY_TCP_PURE_ACK_F_OFFSET_MOD16 14 +#define PARSER_L3_LKP_ENTRY_IPV6_F_OFFSET 13 +#define PARSER_L3_LKP_ENTRY_IPV6_F_WIDTH 1 +#define PARSER_L3_LKP_ENTRY_IPV6_OFFSET 14 +#define PARSER_L3_LKP_ENTRY_IPV6_WORD_OFFSET 3 +#define PARSER_L3_LKP_ENTRY_IPV6_F_OFFSET_MOD8 5 +#define PARSER_L3_LKP_ENTRY_IPV6_F_OFFSET_MOD16 13 +#define PARSER_L3_LKP_ENTRY_CTX_EXT_F_OFFSET 12 +#define PARSER_L3_LKP_ENTRY_CTX_EXT_F_WIDTH 1 +#define PARSER_L3_LKP_ENTRY_CTX_EXT_OFFSET 14 +#define PARSER_L3_LKP_ENTRY_CTX_EXT_WORD_OFFSET 3 +#define PARSER_L3_LKP_ENTRY_CTX_EXT_F_OFFSET_MOD8 4 +#define PARSER_L3_LKP_ENTRY_CTX_EXT_F_OFFSET_MOD16 12 +#define PARSER_L3_LKP_ENTRY_PROTOCOL_F_OFFSET 4 +#define PARSER_L3_LKP_ENTRY_PROTOCOL_F_WIDTH 8 +#define PARSER_L3_LKP_ENTRY_PROTOCOL_OFFSET 14 +#define PARSER_L3_LKP_ENTRY_PROTOCOL_WORD_OFFSET 3 +#define PARSER_L3_LKP_ENTRY_PROTOCOL_F_OFFSET_MOD16 4 +#define PARSER_L3_LKP_ENTRY_VAR_LEN_CTX_F_OFFSET 0 +#define PARSER_L3_LKP_ENTRY_VAR_LEN_CTX_F_WIDTH 4 +#define PARSER_L3_LKP_ENTRY_VAR_LEN_CTX_OFFSET 15 +#define PARSER_L3_LKP_ENTRY_VAR_LEN_CTX_WORD_OFFSET 3 +#define PARSER_L3_LKP_ENTRY_VAR_LEN_CTX_F_OFFSET_MOD8 0 +#define PARSER_L3_LKP_ENTRY_VAR_LEN_CTX_F_OFFSET_MOD16 0 + +/* >>>RDD_PARSER_L3_LKP_ENTRY_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t source_ip ; + uint32_t destination_ip ; + uint16_t source_port ; + uint16_t destination_port ; + uint8_t tos ; + uint32_t lookup_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vlans_num :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_pure_ack :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipv6 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ctx_ext :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t protocol :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /*defined by rdd_parser_l3_protocol enumeration*/ + uint32_t var_len_ctx :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#else + uint32_t source_ip ; + uint32_t destination_ip ; + uint16_t destination_port ; + uint16_t source_port ; + uint32_t var_len_ctx :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t protocol :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /*defined by rdd_parser_l3_protocol enumeration*/ + uint32_t ctx_ext :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipv6 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tcp_pure_ack :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t valid :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vlans_num :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lookup_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t tos ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PARSER_L3_LKP_ENTRY_DTS; + +typedef union +{ + uint32_t word_val[4]; + uint64_t dword_val64[2]; + RDD_PARSER_L3_LKP_ENTRY_DTS fields; +} PARSER_L3_LKP_ENTRY_STRUCT; +#define RDD_PARSER_L3_LKP_ENTRY_SOURCE_IP_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS), r) +#define RDD_PARSER_L3_LKP_ENTRY_SOURCE_IP_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS), v) +#define RDD_PARSER_L3_LKP_ENTRY_SOURCE_IP_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_PARSER_L3_LKP_ENTRY_SOURCE_IP_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_PARSER_L3_LKP_ENTRY_DESTINATION_IP_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 4, r) +#define RDD_PARSER_L3_LKP_ENTRY_DESTINATION_IP_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 4, v) +#define RDD_PARSER_L3_LKP_ENTRY_DESTINATION_IP_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_PARSER_L3_LKP_ENTRY_DESTINATION_IP_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_PARSER_L3_LKP_ENTRY_SOURCE_PORT_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 8, r) +#define RDD_PARSER_L3_LKP_ENTRY_SOURCE_PORT_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 8, v) +#define RDD_PARSER_L3_LKP_ENTRY_SOURCE_PORT_READ(r, p) MREAD_16((uint8_t *)p + 8, r) +#define RDD_PARSER_L3_LKP_ENTRY_SOURCE_PORT_WRITE(v, p) MWRITE_16((uint8_t *)p + 8, v) +#define RDD_PARSER_L3_LKP_ENTRY_DESTINATION_PORT_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 10, r) +#define RDD_PARSER_L3_LKP_ENTRY_DESTINATION_PORT_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 10, v) +#define RDD_PARSER_L3_LKP_ENTRY_DESTINATION_PORT_READ(r, p) MREAD_16((uint8_t *)p + 10, r) +#define RDD_PARSER_L3_LKP_ENTRY_DESTINATION_PORT_WRITE(v, p) MWRITE_16((uint8_t *)p + 10, v) +#define RDD_PARSER_L3_LKP_ENTRY_TOS_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 12, r) +#define RDD_PARSER_L3_LKP_ENTRY_TOS_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 12, v) +#define RDD_PARSER_L3_LKP_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 12, r) +#define RDD_PARSER_L3_LKP_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 12, v) +#define RDD_PARSER_L3_LKP_ENTRY_LOOKUP_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 13, 3, 5, r) +#define RDD_PARSER_L3_LKP_ENTRY_LOOKUP_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 13, 3, 5, v) +#define RDD_PARSER_L3_LKP_ENTRY_LOOKUP_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 3, 5, r) +#define RDD_PARSER_L3_LKP_ENTRY_LOOKUP_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 3, 5, v) +#define RDD_PARSER_L3_LKP_ENTRY_VLANS_NUM_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 13, 0, 3, r) +#define RDD_PARSER_L3_LKP_ENTRY_VLANS_NUM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 13, 0, 3, v) +#define RDD_PARSER_L3_LKP_ENTRY_VLANS_NUM_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 13, 0, 3, r) +#define RDD_PARSER_L3_LKP_ENTRY_VLANS_NUM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 13, 0, 3, v) +#define RDD_PARSER_L3_LKP_ENTRY_VALID_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 14, 7, 1, r) +#define RDD_PARSER_L3_LKP_ENTRY_VALID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 14, 7, 1, v) +#define RDD_PARSER_L3_LKP_ENTRY_VALID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 14, 7, 1, r) +#define RDD_PARSER_L3_LKP_ENTRY_VALID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 14, 7, 1, v) +#define RDD_PARSER_L3_LKP_ENTRY_TCP_PURE_ACK_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 14, 6, 1, r) +#define RDD_PARSER_L3_LKP_ENTRY_TCP_PURE_ACK_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 14, 6, 1, v) +#define RDD_PARSER_L3_LKP_ENTRY_TCP_PURE_ACK_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 14, 6, 1, r) +#define RDD_PARSER_L3_LKP_ENTRY_TCP_PURE_ACK_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 14, 6, 1, v) +#define RDD_PARSER_L3_LKP_ENTRY_IPV6_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 14, 5, 1, r) +#define RDD_PARSER_L3_LKP_ENTRY_IPV6_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 14, 5, 1, v) +#define RDD_PARSER_L3_LKP_ENTRY_IPV6_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 14, 5, 1, r) +#define RDD_PARSER_L3_LKP_ENTRY_IPV6_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 14, 5, 1, v) +#define RDD_PARSER_L3_LKP_ENTRY_CTX_EXT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 14, 4, 1, r) +#define RDD_PARSER_L3_LKP_ENTRY_CTX_EXT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 14, 4, 1, v) +#define RDD_PARSER_L3_LKP_ENTRY_CTX_EXT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 14, 4, 1, r) +#define RDD_PARSER_L3_LKP_ENTRY_CTX_EXT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 14, 4, 1, v) +#define RDD_PARSER_L3_LKP_ENTRY_PROTOCOL_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 14, 4, 8, r) /*defined by rdd_parser_l3_protocol enumeration*/ +#define RDD_PARSER_L3_LKP_ENTRY_PROTOCOL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 14, 4, 8, v) /*defined by rdd_parser_l3_protocol enumeration*/ +#define RDD_PARSER_L3_LKP_ENTRY_PROTOCOL_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 14, 4, 8, r) /*defined by rdd_parser_l3_protocol enumeration*/ +#define RDD_PARSER_L3_LKP_ENTRY_PROTOCOL_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 14, 4, 8, v) /*defined by rdd_parser_l3_protocol enumeration*/ +#define RDD_PARSER_L3_LKP_ENTRY_VAR_LEN_CTX_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 15, 0, 4, r) +#define RDD_PARSER_L3_LKP_ENTRY_VAR_LEN_CTX_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_L3_LKP_ENTRY_DTS) + 15, 0, 4, v) +#define RDD_PARSER_L3_LKP_ENTRY_VAR_LEN_CTX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 15, 0, 4, r) +#define RDD_PARSER_L3_LKP_ENTRY_VAR_LEN_CTX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 15, 0, 4, v) +/* <<>>RDD_PARSER_IC_LKP_ENTRY */ +#define PARSER_IC_LKP_ENTRY_DA_CRC_F_OFFSET 0 +#define PARSER_IC_LKP_ENTRY_DA_CRC_F_WIDTH 32 +#define PARSER_IC_LKP_ENTRY_PARSER_IC_LKP_ENTRY_OFFSET 0 +#define PARSER_IC_LKP_ENTRY_DA_CRC_OFFSET 0 +#define PARSER_IC_LKP_ENTRY_DA_CRC_WORD_OFFSET 0 +#define PARSER_IC_LKP_ENTRY_SA_CRC_F_OFFSET 0 +#define PARSER_IC_LKP_ENTRY_SA_CRC_F_WIDTH 32 +#define PARSER_IC_LKP_ENTRY_SA_CRC_OFFSET 4 +#define PARSER_IC_LKP_ENTRY_SA_CRC_WORD_OFFSET 1 +#define PARSER_IC_LKP_ENTRY_SOURCE_IP_F_OFFSET 0 +#define PARSER_IC_LKP_ENTRY_SOURCE_IP_F_WIDTH 32 +#define PARSER_IC_LKP_ENTRY_SOURCE_IP_OFFSET 8 +#define PARSER_IC_LKP_ENTRY_SOURCE_IP_WORD_OFFSET 2 +#define PARSER_IC_LKP_ENTRY_DESTINATION_IP_F_OFFSET 0 +#define PARSER_IC_LKP_ENTRY_DESTINATION_IP_F_WIDTH 32 +#define PARSER_IC_LKP_ENTRY_DESTINATION_IP_OFFSET 12 +#define PARSER_IC_LKP_ENTRY_DESTINATION_IP_WORD_OFFSET 3 +#define PARSER_IC_LKP_ENTRY_SOURCE_PORT_F_OFFSET 16 +#define PARSER_IC_LKP_ENTRY_SOURCE_PORT_F_WIDTH 16 +#define PARSER_IC_LKP_ENTRY_SOURCE_PORT_OFFSET 16 +#define PARSER_IC_LKP_ENTRY_SOURCE_PORT_WORD_OFFSET 4 +#define PARSER_IC_LKP_ENTRY_DESTINATION_PORT_F_OFFSET 0 +#define PARSER_IC_LKP_ENTRY_DESTINATION_PORT_F_WIDTH 16 +#define PARSER_IC_LKP_ENTRY_DESTINATION_PORT_OFFSET 18 +#define PARSER_IC_LKP_ENTRY_DESTINATION_PORT_WORD_OFFSET 4 +#define PARSER_IC_LKP_ENTRY_ETHERNET_TYPE_F_OFFSET 16 +#define PARSER_IC_LKP_ENTRY_ETHERNET_TYPE_F_WIDTH 16 +#define PARSER_IC_LKP_ENTRY_ETHERNET_TYPE_OFFSET 20 +#define PARSER_IC_LKP_ENTRY_ETHERNET_TYPE_WORD_OFFSET 5 +#define PARSER_IC_LKP_ENTRY_PROTOCOL_F_OFFSET 8 +#define PARSER_IC_LKP_ENTRY_PROTOCOL_F_WIDTH 8 +#define PARSER_IC_LKP_ENTRY_PROTOCOL_OFFSET 22 +#define PARSER_IC_LKP_ENTRY_PROTOCOL_WORD_OFFSET 5 +#define PARSER_IC_LKP_ENTRY_PROTOCOL_F_OFFSET_MOD16 8 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_0_F_OFFSET 5 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_0_F_WIDTH 3 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_0_OFFSET 23 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_0_WORD_OFFSET 5 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_0_F_OFFSET_MOD8 5 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_0_F_OFFSET_MOD16 5 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_1_F_OFFSET 2 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_1_F_WIDTH 3 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_1_OFFSET 23 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_1_WORD_OFFSET 5 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_1_F_OFFSET_MOD8 2 +#define PARSER_IC_LKP_ENTRY_TPID_VLAN_1_F_OFFSET_MOD16 2 +#define PARSER_IC_LKP_ENTRY_IPV6_F_OFFSET 1 +#define PARSER_IC_LKP_ENTRY_IPV6_F_WIDTH 1 +#define PARSER_IC_LKP_ENTRY_IPV6_OFFSET 23 +#define PARSER_IC_LKP_ENTRY_IPV6_WORD_OFFSET 5 +#define PARSER_IC_LKP_ENTRY_IPV6_F_OFFSET_MOD8 1 +#define PARSER_IC_LKP_ENTRY_IPV6_F_OFFSET_MOD16 1 +#define PARSER_IC_LKP_ENTRY_IPV4_F_OFFSET 0 +#define PARSER_IC_LKP_ENTRY_IPV4_F_WIDTH 1 +#define PARSER_IC_LKP_ENTRY_IPV4_OFFSET 23 +#define PARSER_IC_LKP_ENTRY_IPV4_WORD_OFFSET 5 +#define PARSER_IC_LKP_ENTRY_IPV4_F_OFFSET_MOD8 0 +#define PARSER_IC_LKP_ENTRY_IPV4_F_OFFSET_MOD16 0 +#define PARSER_IC_LKP_ENTRY_OUTER_PBIT_F_OFFSET 29 +#define PARSER_IC_LKP_ENTRY_OUTER_PBIT_F_WIDTH 3 +#define PARSER_IC_LKP_ENTRY_OUTER_PBIT_OFFSET 24 +#define PARSER_IC_LKP_ENTRY_OUTER_PBIT_WORD_OFFSET 6 +#define PARSER_IC_LKP_ENTRY_OUTER_PBIT_F_OFFSET_MOD8 5 +#define PARSER_IC_LKP_ENTRY_OUTER_PBIT_F_OFFSET_MOD16 13 +#define PARSER_IC_LKP_ENTRY_OUTER_CFI_F_OFFSET 28 +#define PARSER_IC_LKP_ENTRY_OUTER_CFI_F_WIDTH 1 +#define PARSER_IC_LKP_ENTRY_OUTER_CFI_OFFSET 24 +#define PARSER_IC_LKP_ENTRY_OUTER_CFI_WORD_OFFSET 6 +#define PARSER_IC_LKP_ENTRY_OUTER_CFI_F_OFFSET_MOD8 4 +#define PARSER_IC_LKP_ENTRY_OUTER_CFI_F_OFFSET_MOD16 12 +#define PARSER_IC_LKP_ENTRY_OUTER_VID_F_OFFSET 16 +#define PARSER_IC_LKP_ENTRY_OUTER_VID_F_WIDTH 12 +#define PARSER_IC_LKP_ENTRY_OUTER_VID_OFFSET 24 +#define PARSER_IC_LKP_ENTRY_OUTER_VID_WORD_OFFSET 6 +#define PARSER_IC_LKP_ENTRY_OUTER_VID_F_OFFSET_MOD16 0 +#define PARSER_IC_LKP_ENTRY_INNER_PBIT_F_OFFSET 13 +#define PARSER_IC_LKP_ENTRY_INNER_PBIT_F_WIDTH 3 +#define PARSER_IC_LKP_ENTRY_INNER_PBIT_OFFSET 26 +#define PARSER_IC_LKP_ENTRY_INNER_PBIT_WORD_OFFSET 6 +#define PARSER_IC_LKP_ENTRY_INNER_PBIT_F_OFFSET_MOD8 5 +#define PARSER_IC_LKP_ENTRY_INNER_PBIT_F_OFFSET_MOD16 13 +#define PARSER_IC_LKP_ENTRY_INNER_CFI_F_OFFSET 12 +#define PARSER_IC_LKP_ENTRY_INNER_CFI_F_WIDTH 1 +#define PARSER_IC_LKP_ENTRY_INNER_CFI_OFFSET 26 +#define PARSER_IC_LKP_ENTRY_INNER_CFI_WORD_OFFSET 6 +#define PARSER_IC_LKP_ENTRY_INNER_CFI_F_OFFSET_MOD8 4 +#define PARSER_IC_LKP_ENTRY_INNER_CFI_F_OFFSET_MOD16 12 +#define PARSER_IC_LKP_ENTRY_INNER_VID_F_OFFSET 0 +#define PARSER_IC_LKP_ENTRY_INNER_VID_F_WIDTH 12 +#define PARSER_IC_LKP_ENTRY_INNER_VID_OFFSET 26 +#define PARSER_IC_LKP_ENTRY_INNER_VID_WORD_OFFSET 6 +#define PARSER_IC_LKP_ENTRY_INNER_VID_F_OFFSET_MOD16 0 +#define PARSER_IC_LKP_ENTRY_LOOKUP_PORT_F_OFFSET 19 +#define PARSER_IC_LKP_ENTRY_LOOKUP_PORT_F_WIDTH 5 +#define PARSER_IC_LKP_ENTRY_LOOKUP_PORT_OFFSET 29 +#define PARSER_IC_LKP_ENTRY_LOOKUP_PORT_WORD_OFFSET 7 +#define PARSER_IC_LKP_ENTRY_LOOKUP_PORT_F_OFFSET_MOD8 3 +#define PARSER_IC_LKP_ENTRY_LOOKUP_PORT_F_OFFSET_MOD16 3 +#define PARSER_IC_LKP_ENTRY_VLANS_NUM_F_OFFSET 16 +#define PARSER_IC_LKP_ENTRY_VLANS_NUM_F_WIDTH 3 +#define PARSER_IC_LKP_ENTRY_VLANS_NUM_OFFSET 29 +#define PARSER_IC_LKP_ENTRY_VLANS_NUM_WORD_OFFSET 7 +#define PARSER_IC_LKP_ENTRY_VLANS_NUM_F_OFFSET_MOD8 0 +#define PARSER_IC_LKP_ENTRY_VLANS_NUM_F_OFFSET_MOD16 0 +#define PARSER_IC_LKP_ENTRY_TOS_F_OFFSET 8 +#define PARSER_IC_LKP_ENTRY_TOS_F_WIDTH 8 +#define PARSER_IC_LKP_ENTRY_TOS_OFFSET 30 +#define PARSER_IC_LKP_ENTRY_TOS_WORD_OFFSET 7 +#define PARSER_IC_LKP_ENTRY_TOS_F_OFFSET_MOD16 8 + +/* >>>RDD_PARSER_IC_LKP_ENTRY_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t da_crc ; + uint32_t sa_crc ; + uint32_t source_ip ; + uint32_t destination_ip ; + uint16_t source_port ; + uint16_t destination_port ; + uint16_t ethernet_type ; + uint8_t protocol ; + uint32_t tpid_vlan_0 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tpid_vlan_1 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipv6 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipv4 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_pbit :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_cfi :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_vid :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_pbit :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_cfi :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_vid :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved2 ; + uint32_t lookup_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vlans_num :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t tos ; + uint8_t reserved3 ; +#else + uint32_t da_crc ; + uint32_t sa_crc ; + uint32_t source_ip ; + uint32_t destination_ip ; + uint16_t destination_port ; + uint16_t source_port ; + uint32_t ipv4 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ipv6 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tpid_vlan_1 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t tpid_vlan_0 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t protocol ; + uint16_t ethernet_type ; + uint32_t inner_vid :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_cfi :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t inner_pbit :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_vid :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_cfi :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t outer_pbit :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved3 ; + uint8_t tos ; + uint32_t vlans_num :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lookup_port :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved2 ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PARSER_IC_LKP_ENTRY_DTS; + +typedef union +{ + uint32_t word_val[8]; + uint64_t dword_val64[4]; + RDD_PARSER_IC_LKP_ENTRY_DTS fields; +} PARSER_IC_LKP_ENTRY_STRUCT; +#define RDD_PARSER_IC_LKP_ENTRY_DA_CRC_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS), r) +#define RDD_PARSER_IC_LKP_ENTRY_DA_CRC_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS), v) +#define RDD_PARSER_IC_LKP_ENTRY_DA_CRC_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_PARSER_IC_LKP_ENTRY_DA_CRC_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_PARSER_IC_LKP_ENTRY_SA_CRC_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 4, r) +#define RDD_PARSER_IC_LKP_ENTRY_SA_CRC_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 4, v) +#define RDD_PARSER_IC_LKP_ENTRY_SA_CRC_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_PARSER_IC_LKP_ENTRY_SA_CRC_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_PARSER_IC_LKP_ENTRY_SOURCE_IP_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 8, r) +#define RDD_PARSER_IC_LKP_ENTRY_SOURCE_IP_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 8, v) +#define RDD_PARSER_IC_LKP_ENTRY_SOURCE_IP_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_PARSER_IC_LKP_ENTRY_SOURCE_IP_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_PARSER_IC_LKP_ENTRY_DESTINATION_IP_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 12, r) +#define RDD_PARSER_IC_LKP_ENTRY_DESTINATION_IP_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 12, v) +#define RDD_PARSER_IC_LKP_ENTRY_DESTINATION_IP_READ(r, p) MREAD_32((uint8_t *)p + 12, r) +#define RDD_PARSER_IC_LKP_ENTRY_DESTINATION_IP_WRITE(v, p) MWRITE_32((uint8_t *)p + 12, v) +#define RDD_PARSER_IC_LKP_ENTRY_SOURCE_PORT_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 16, r) +#define RDD_PARSER_IC_LKP_ENTRY_SOURCE_PORT_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 16, v) +#define RDD_PARSER_IC_LKP_ENTRY_SOURCE_PORT_READ(r, p) MREAD_16((uint8_t *)p + 16, r) +#define RDD_PARSER_IC_LKP_ENTRY_SOURCE_PORT_WRITE(v, p) MWRITE_16((uint8_t *)p + 16, v) +#define RDD_PARSER_IC_LKP_ENTRY_DESTINATION_PORT_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 18, r) +#define RDD_PARSER_IC_LKP_ENTRY_DESTINATION_PORT_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 18, v) +#define RDD_PARSER_IC_LKP_ENTRY_DESTINATION_PORT_READ(r, p) MREAD_16((uint8_t *)p + 18, r) +#define RDD_PARSER_IC_LKP_ENTRY_DESTINATION_PORT_WRITE(v, p) MWRITE_16((uint8_t *)p + 18, v) +#define RDD_PARSER_IC_LKP_ENTRY_ETHERNET_TYPE_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 20, r) +#define RDD_PARSER_IC_LKP_ENTRY_ETHERNET_TYPE_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 20, v) +#define RDD_PARSER_IC_LKP_ENTRY_ETHERNET_TYPE_READ(r, p) MREAD_16((uint8_t *)p + 20, r) +#define RDD_PARSER_IC_LKP_ENTRY_ETHERNET_TYPE_WRITE(v, p) MWRITE_16((uint8_t *)p + 20, v) +#define RDD_PARSER_IC_LKP_ENTRY_PROTOCOL_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 22, r) +#define RDD_PARSER_IC_LKP_ENTRY_PROTOCOL_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 22, v) +#define RDD_PARSER_IC_LKP_ENTRY_PROTOCOL_READ(r, p) MREAD_8((uint8_t *)p + 22, r) +#define RDD_PARSER_IC_LKP_ENTRY_PROTOCOL_WRITE(v, p) MWRITE_8((uint8_t *)p + 22, v) +#define RDD_PARSER_IC_LKP_ENTRY_TPID_VLAN_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 23, 5, 3, r) +#define RDD_PARSER_IC_LKP_ENTRY_TPID_VLAN_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 23, 5, 3, v) +#define RDD_PARSER_IC_LKP_ENTRY_TPID_VLAN_0_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 23, 5, 3, r) +#define RDD_PARSER_IC_LKP_ENTRY_TPID_VLAN_0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 23, 5, 3, v) +#define RDD_PARSER_IC_LKP_ENTRY_TPID_VLAN_1_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 23, 2, 3, r) +#define RDD_PARSER_IC_LKP_ENTRY_TPID_VLAN_1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 23, 2, 3, v) +#define RDD_PARSER_IC_LKP_ENTRY_TPID_VLAN_1_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 23, 2, 3, r) +#define RDD_PARSER_IC_LKP_ENTRY_TPID_VLAN_1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 23, 2, 3, v) +#define RDD_PARSER_IC_LKP_ENTRY_IPV6_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 23, 1, 1, r) +#define RDD_PARSER_IC_LKP_ENTRY_IPV6_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 23, 1, 1, v) +#define RDD_PARSER_IC_LKP_ENTRY_IPV6_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 23, 1, 1, r) +#define RDD_PARSER_IC_LKP_ENTRY_IPV6_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 23, 1, 1, v) +#define RDD_PARSER_IC_LKP_ENTRY_IPV4_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 23, 0, 1, r) +#define RDD_PARSER_IC_LKP_ENTRY_IPV4_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 23, 0, 1, v) +#define RDD_PARSER_IC_LKP_ENTRY_IPV4_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 23, 0, 1, r) +#define RDD_PARSER_IC_LKP_ENTRY_IPV4_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 23, 0, 1, v) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_PBIT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 24, 5, 3, r) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_PBIT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 24, 5, 3, v) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_PBIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 24, 5, 3, r) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_PBIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 24, 5, 3, v) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_CFI_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 24, 4, 1, r) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_CFI_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 24, 4, 1, v) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_CFI_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 24, 4, 1, r) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_CFI_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 24, 4, 1, v) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_VID_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 24, 0, 12, r) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_VID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 24, 0, 12, v) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_VID_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 24, 0, 12, r) +#define RDD_PARSER_IC_LKP_ENTRY_OUTER_VID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 24, 0, 12, v) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_PBIT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 26, 5, 3, r) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_PBIT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 26, 5, 3, v) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_PBIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 26, 5, 3, r) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_PBIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 26, 5, 3, v) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_CFI_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 26, 4, 1, r) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_CFI_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 26, 4, 1, v) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_CFI_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 26, 4, 1, r) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_CFI_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 26, 4, 1, v) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_VID_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 26, 0, 12, r) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_VID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 26, 0, 12, v) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_VID_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 26, 0, 12, r) +#define RDD_PARSER_IC_LKP_ENTRY_INNER_VID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 26, 0, 12, v) +#define RDD_PARSER_IC_LKP_ENTRY_LOOKUP_PORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 29, 3, 5, r) +#define RDD_PARSER_IC_LKP_ENTRY_LOOKUP_PORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 29, 3, 5, v) +#define RDD_PARSER_IC_LKP_ENTRY_LOOKUP_PORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 29, 3, 5, r) +#define RDD_PARSER_IC_LKP_ENTRY_LOOKUP_PORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 29, 3, 5, v) +#define RDD_PARSER_IC_LKP_ENTRY_VLANS_NUM_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 29, 0, 3, r) +#define RDD_PARSER_IC_LKP_ENTRY_VLANS_NUM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 29, 0, 3, v) +#define RDD_PARSER_IC_LKP_ENTRY_VLANS_NUM_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 29, 0, 3, r) +#define RDD_PARSER_IC_LKP_ENTRY_VLANS_NUM_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 29, 0, 3, v) +#define RDD_PARSER_IC_LKP_ENTRY_TOS_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 30, r) +#define RDD_PARSER_IC_LKP_ENTRY_TOS_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_PARSER_IC_LKP_ENTRY_DTS) + 30, v) +#define RDD_PARSER_IC_LKP_ENTRY_TOS_READ(r, p) MREAD_8((uint8_t *)p + 30, r) +#define RDD_PARSER_IC_LKP_ENTRY_TOS_WRITE(v, p) MWRITE_8((uint8_t *)p + 30, v) +/* <<>>RDD_NATC_CONTROL_ENTRY */ +#define NATC_CONTROL_ENTRY_DONE_F_OFFSET 31 +#define NATC_CONTROL_ENTRY_DONE_F_WIDTH 1 +#define NATC_CONTROL_ENTRY_NATC_CONTROL_ENTRY_OFFSET 0 +#define NATC_CONTROL_ENTRY_DONE_OFFSET 0 +#define NATC_CONTROL_ENTRY_DONE_WORD_OFFSET 0 +#define NATC_CONTROL_ENTRY_DONE_F_OFFSET_MOD8 7 +#define NATC_CONTROL_ENTRY_DONE_F_OFFSET_MOD16 15 +#define NATC_CONTROL_ENTRY_NATC_HIT_F_OFFSET 30 +#define NATC_CONTROL_ENTRY_NATC_HIT_F_WIDTH 1 +#define NATC_CONTROL_ENTRY_NATC_HIT_OFFSET 0 +#define NATC_CONTROL_ENTRY_NATC_HIT_WORD_OFFSET 0 +#define NATC_CONTROL_ENTRY_NATC_HIT_F_OFFSET_MOD8 6 +#define NATC_CONTROL_ENTRY_NATC_HIT_F_OFFSET_MOD16 14 +#define NATC_CONTROL_ENTRY_CACHE_HIT_F_OFFSET 29 +#define NATC_CONTROL_ENTRY_CACHE_HIT_F_WIDTH 1 +#define NATC_CONTROL_ENTRY_CACHE_HIT_OFFSET 0 +#define NATC_CONTROL_ENTRY_CACHE_HIT_WORD_OFFSET 0 +#define NATC_CONTROL_ENTRY_CACHE_HIT_F_OFFSET_MOD8 5 +#define NATC_CONTROL_ENTRY_CACHE_HIT_F_OFFSET_MOD16 13 +#define NATC_CONTROL_ENTRY_HW_RESERVED0_F_OFFSET 24 +#define NATC_CONTROL_ENTRY_HW_RESERVED0_F_WIDTH 5 +#define NATC_CONTROL_ENTRY_HW_RESERVED0_OFFSET 0 +#define NATC_CONTROL_ENTRY_HW_RESERVED0_WORD_OFFSET 0 +#define NATC_CONTROL_ENTRY_HW_RESERVED0_F_OFFSET_MOD8 0 +#define NATC_CONTROL_ENTRY_HW_RESERVED0_F_OFFSET_MOD16 8 +#define NATC_CONTROL_ENTRY_HAS_ITER_F_OFFSET 20 +#define NATC_CONTROL_ENTRY_HAS_ITER_F_WIDTH 4 +#define NATC_CONTROL_ENTRY_HAS_ITER_OFFSET 1 +#define NATC_CONTROL_ENTRY_HAS_ITER_WORD_OFFSET 0 +#define NATC_CONTROL_ENTRY_HAS_ITER_F_OFFSET_MOD8 4 +#define NATC_CONTROL_ENTRY_HAS_ITER_F_OFFSET_MOD16 4 +#define NATC_CONTROL_ENTRY_HW_RESERVED1_F_OFFSET 18 +#define NATC_CONTROL_ENTRY_HW_RESERVED1_F_WIDTH 2 +#define NATC_CONTROL_ENTRY_HW_RESERVED1_OFFSET 1 +#define NATC_CONTROL_ENTRY_HW_RESERVED1_WORD_OFFSET 0 +#define NATC_CONTROL_ENTRY_HW_RESERVED1_F_OFFSET_MOD8 2 +#define NATC_CONTROL_ENTRY_HW_RESERVED1_F_OFFSET_MOD16 2 +#define NATC_CONTROL_ENTRY_HASH_VAL_F_OFFSET 0 +#define NATC_CONTROL_ENTRY_HASH_VAL_F_WIDTH 18 +#define NATC_CONTROL_ENTRY_HASH_VAL_OFFSET 0 +#define NATC_CONTROL_ENTRY_HASH_VAL_WORD_OFFSET 0 +#define NATC_CONTROL_ENTRY_HW_RESERVED2_F_OFFSET 0 +#define NATC_CONTROL_ENTRY_HW_RESERVED2_F_WIDTH 32 +#define NATC_CONTROL_ENTRY_HW_RESERVED2_OFFSET 4 +#define NATC_CONTROL_ENTRY_HW_RESERVED2_WORD_OFFSET 1 + +/* >>>RDD_NATC_CONTROL_ENTRY_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t done :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t natc_hit :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cache_hit :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hw_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t has_iter :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hw_reserved1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hash_val :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hw_reserved2 ; +#else + uint32_t hash_val :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hw_reserved1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t has_iter :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hw_reserved0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cache_hit :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t natc_hit :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t done :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t hw_reserved2 ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NATC_CONTROL_ENTRY_DTS; + +typedef union +{ + uint32_t word_val[2]; + uint64_t dword_val64[1]; + RDD_NATC_CONTROL_ENTRY_DTS fields; +} NATC_CONTROL_ENTRY_STRUCT; +#define RDD_NATC_CONTROL_ENTRY_DONE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS), 7, 1, r) +#define RDD_NATC_CONTROL_ENTRY_DONE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS), 7, 1, v) +#define RDD_NATC_CONTROL_ENTRY_DONE_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 7, 1, r) +#define RDD_NATC_CONTROL_ENTRY_DONE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 7, 1, v) +#define RDD_NATC_CONTROL_ENTRY_NATC_HIT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS), 6, 1, r) +#define RDD_NATC_CONTROL_ENTRY_NATC_HIT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS), 6, 1, v) +#define RDD_NATC_CONTROL_ENTRY_NATC_HIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 1, r) +#define RDD_NATC_CONTROL_ENTRY_NATC_HIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 1, v) +#define RDD_NATC_CONTROL_ENTRY_CACHE_HIT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS), 5, 1, r) +#define RDD_NATC_CONTROL_ENTRY_CACHE_HIT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS), 5, 1, v) +#define RDD_NATC_CONTROL_ENTRY_CACHE_HIT_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 5, 1, r) +#define RDD_NATC_CONTROL_ENTRY_CACHE_HIT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 5, 1, v) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS), 0, 5, r) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS), 0, 5, v) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED0_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 0, 5, r) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 0, 5, v) +#define RDD_NATC_CONTROL_ENTRY_HAS_ITER_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS) + 1, 4, 4, r) +#define RDD_NATC_CONTROL_ENTRY_HAS_ITER_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS) + 1, 4, 4, v) +#define RDD_NATC_CONTROL_ENTRY_HAS_ITER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 4, 4, r) +#define RDD_NATC_CONTROL_ENTRY_HAS_ITER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 4, 4, v) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED1_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS) + 1, 2, 2, r) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS) + 1, 2, 2, v) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED1_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 2, 2, r) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 2, 2, v) +#define RDD_NATC_CONTROL_ENTRY_HASH_VAL_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS) + 0, 0, 18, r) +#define RDD_NATC_CONTROL_ENTRY_HASH_VAL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS) + 0, 0, 18, v) +#define RDD_NATC_CONTROL_ENTRY_HASH_VAL_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 0, 18, r) +#define RDD_NATC_CONTROL_ENTRY_HASH_VAL_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 0, 18, v) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED2_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS) + 4, r) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED2_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_NATC_CONTROL_ENTRY_DTS) + 4, v) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED2_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_NATC_CONTROL_ENTRY_HW_RESERVED2_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +/* <<>>RDD_NATC_COUNTERS_ENTRY */ +#define NATC_COUNTERS_ENTRY_HIT_COUNTER_F_OFFSET 0 +#define NATC_COUNTERS_ENTRY_HIT_COUNTER_F_WIDTH 32 +#define NATC_COUNTERS_ENTRY_NATC_COUNTERS_ENTRY_OFFSET 0 +#define NATC_COUNTERS_ENTRY_HIT_COUNTER_OFFSET 0 +#define NATC_COUNTERS_ENTRY_HIT_COUNTER_WORD_OFFSET 0 +#define NATC_COUNTERS_ENTRY_BYTES_COUNTER_F_OFFSET 0 +#define NATC_COUNTERS_ENTRY_BYTES_COUNTER_F_WIDTH 32 +#define NATC_COUNTERS_ENTRY_BYTES_COUNTER_OFFSET 4 +#define NATC_COUNTERS_ENTRY_BYTES_COUNTER_WORD_OFFSET 1 + +/* >>>RDD_NATC_COUNTERS_ENTRY_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t hit_counter ; + uint32_t bytes_counter ; +#else + uint32_t hit_counter ; + uint32_t bytes_counter ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_NATC_COUNTERS_ENTRY_DTS; + +typedef union +{ + uint32_t word_val[2]; + uint64_t dword_val64[1]; + RDD_NATC_COUNTERS_ENTRY_DTS fields; +} NATC_COUNTERS_ENTRY_STRUCT; +#define RDD_NATC_COUNTERS_ENTRY_HIT_COUNTER_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_NATC_COUNTERS_ENTRY_DTS), r) +#define RDD_NATC_COUNTERS_ENTRY_HIT_COUNTER_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_NATC_COUNTERS_ENTRY_DTS), v) +#define RDD_NATC_COUNTERS_ENTRY_HIT_COUNTER_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_NATC_COUNTERS_ENTRY_HIT_COUNTER_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_NATC_COUNTERS_ENTRY_BYTES_COUNTER_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_NATC_COUNTERS_ENTRY_DTS) + 4, r) +#define RDD_NATC_COUNTERS_ENTRY_BYTES_COUNTER_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_NATC_COUNTERS_ENTRY_DTS) + 4, v) +#define RDD_NATC_COUNTERS_ENTRY_BYTES_COUNTER_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_NATC_COUNTERS_ENTRY_BYTES_COUNTER_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +/* <<>>RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE */ +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL0_F_OFFSET 0 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL0_F_WIDTH 2 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL0_OFFSET 3 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL0_WORD_OFFSET 0 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL0_F_OFFSET_MOD8 0 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL0_F_OFFSET_MOD16 0 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL1_F_OFFSET 30 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL1_F_WIDTH 2 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL1_OFFSET 4 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL1_WORD_OFFSET 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL1_F_OFFSET_MOD8 6 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL1_F_OFFSET_MOD16 14 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_BYTES_POPPED_F_OFFSET 16 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_BYTES_POPPED_F_WIDTH 14 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_BYTES_POPPED_OFFSET 4 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_BYTES_POPPED_WORD_OFFSET 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_BYTES_POPPED_F_OFFSET_MOD16 0 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_AGG_F_OFFSET 15 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_AGG_F_WIDTH 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_AGG_OFFSET 6 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_AGG_WORD_OFFSET 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_AGG_F_OFFSET_MOD8 7 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_AGG_F_OFFSET_MOD16 15 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM0_F_OFFSET 14 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM0_F_WIDTH 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM0_OFFSET 6 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM0_WORD_OFFSET 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM0_F_OFFSET_MOD8 6 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM0_F_OFFSET_MOD16 14 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_ABS_F_OFFSET 13 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_ABS_F_WIDTH 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_ABS_OFFSET 6 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_ABS_WORD_OFFSET 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_ABS_F_OFFSET_MOD8 5 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_ABS_F_OFFSET_MOD16 13 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM1_F_OFFSET 12 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM1_F_WIDTH 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM1_OFFSET 6 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM1_WORD_OFFSET 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM1_F_OFFSET_MOD8 4 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM1_F_OFFSET_MOD16 12 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_QUEUE_NUMBER_F_OFFSET 0 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_QUEUE_NUMBER_F_WIDTH 9 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_QUEUE_NUMBER_OFFSET 6 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_QUEUE_NUMBER_WORD_OFFSET 1 +#define BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_QUEUE_NUMBER_F_OFFSET_MOD16 0 + +/* >>>RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t reserved0 :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fpm_pool0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fpm_pool1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bytes_popped :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t queue_number :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#else + uint32_t fpm_pool0 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :30 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t queue_number :9 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem1 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t target_mem0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t agg :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bytes_popped :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fpm_pool1 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS; + +typedef union +{ + uint32_t word_val[2]; + uint64_t dword_val64[1]; + RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS fields; +} BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_STRUCT; +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 3, 0, 2, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 3, 0, 2, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL0_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 2, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 2, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL1_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 4, 6, 2, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 4, 6, 2, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL1_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 4, 6, 2, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_FPM_POOL1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 4, 6, 2, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_BYTES_POPPED_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 4, 0, 14, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_BYTES_POPPED_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 4, 0, 14, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_BYTES_POPPED_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 4, 0, 14, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_BYTES_POPPED_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 4, 0, 14, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_AGG_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 6, 7, 1, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_AGG_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 6, 7, 1, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_AGG_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 7, 1, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_AGG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 7, 1, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM0_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 6, 6, 1, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 6, 6, 1, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM0_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 6, 1, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM0_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 6, 1, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_ABS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 6, 5, 1, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_ABS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 6, 5, 1, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_ABS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 5, 1, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_ABS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 5, 1, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM1_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 6, 4, 1, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM1_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 6, 4, 1, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM1_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 4, 1, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_TARGET_MEM1_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 4, 1, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_QUEUE_NUMBER_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 6, 0, 9, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_QUEUE_NUMBER_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_DTS) + 6, 0, 9, v) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_QUEUE_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 0, 9, r) +#define RDD_BBMSG_RNR_TO_QM_PD_FIFO_CREDIT_FREE_QUEUE_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 0, 9, v) +/* <<>>RDD_HASH_RESULT */ +#define HASH_RESULT_MATCH_F_OFFSET 30 +#define HASH_RESULT_MATCH_F_WIDTH 2 +#define HASH_RESULT_HASH_RESULT_OFFSET 0 +#define HASH_RESULT_MATCH_OFFSET 0 +#define HASH_RESULT_MATCH_WORD_OFFSET 0 +#define HASH_RESULT_MATCH_F_OFFSET_MOD8 6 +#define HASH_RESULT_MATCH_F_OFFSET_MOD16 14 +#define HASH_RESULT_MATCH_INDEX_F_OFFSET 19 +#define HASH_RESULT_MATCH_INDEX_F_WIDTH 11 +#define HASH_RESULT_MATCH_INDEX_OFFSET 0 +#define HASH_RESULT_MATCH_INDEX_WORD_OFFSET 0 +#define HASH_RESULT_MATCH_INDEX_F_OFFSET_MOD16 3 +#define HASH_RESULT_MATCH_ENGINE_F_OFFSET 17 +#define HASH_RESULT_MATCH_ENGINE_F_WIDTH 2 +#define HASH_RESULT_MATCH_ENGINE_OFFSET 1 +#define HASH_RESULT_MATCH_ENGINE_WORD_OFFSET 0 +#define HASH_RESULT_MATCH_ENGINE_F_OFFSET_MOD8 1 +#define HASH_RESULT_MATCH_ENGINE_F_OFFSET_MOD16 1 +#define HASH_RESULT_CONTEXT0_32_47_F_OFFSET 0 +#define HASH_RESULT_CONTEXT0_32_47_F_WIDTH 16 +#define HASH_RESULT_CONTEXT0_32_47_OFFSET 2 +#define HASH_RESULT_CONTEXT0_32_47_WORD_OFFSET 0 +#define HASH_RESULT_CONTEXT0_0_31_F_OFFSET 0 +#define HASH_RESULT_CONTEXT0_0_31_F_WIDTH 32 +#define HASH_RESULT_CONTEXT0_0_31_OFFSET 4 +#define HASH_RESULT_CONTEXT0_0_31_WORD_OFFSET 1 +#define HASH_RESULT_CONTEXT1_16_47_F_OFFSET 0 +#define HASH_RESULT_CONTEXT1_16_47_F_WIDTH 32 +#define HASH_RESULT_CONTEXT1_16_47_OFFSET 8 +#define HASH_RESULT_CONTEXT1_16_47_WORD_OFFSET 2 +#define HASH_RESULT_CONTEXT1_0_15_F_OFFSET 16 +#define HASH_RESULT_CONTEXT1_0_15_F_WIDTH 16 +#define HASH_RESULT_CONTEXT1_0_15_OFFSET 12 +#define HASH_RESULT_CONTEXT1_0_15_WORD_OFFSET 3 +#define HASH_RESULT_CONTEXT2_32_47_F_OFFSET 0 +#define HASH_RESULT_CONTEXT2_32_47_F_WIDTH 16 +#define HASH_RESULT_CONTEXT2_32_47_OFFSET 14 +#define HASH_RESULT_CONTEXT2_32_47_WORD_OFFSET 3 +#define HASH_RESULT_CONTEXT2_0_31_F_OFFSET 0 +#define HASH_RESULT_CONTEXT2_0_31_F_WIDTH 32 +#define HASH_RESULT_CONTEXT2_0_31_OFFSET 16 +#define HASH_RESULT_CONTEXT2_0_31_WORD_OFFSET 4 + +/* >>>RDD_HASH_RESULT_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t match :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t match_index :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t match_engine :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t context0_32_47 ; + uint32_t context0_0_31 ; + uint32_t context1_16_47 ; + uint16_t context1_0_15 ; + uint16_t context2_32_47 ; + uint32_t context2_0_31 ; + uint32_t reserved_1 ; +#else + uint16_t context0_32_47 ; + uint32_t reserved_0 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t match_engine :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t match_index :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t match :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t context0_0_31 ; + uint32_t context1_16_47 ; + uint16_t context2_32_47 ; + uint16_t context1_0_15 ; + uint32_t context2_0_31 ; + uint32_t reserved_1 ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_HASH_RESULT_DTS; + +typedef union +{ + uint32_t word_val[6]; + uint64_t dword_val64[3]; + RDD_HASH_RESULT_DTS fields; +} HASH_RESULT_STRUCT; +#define RDD_HASH_RESULT_MATCH_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_HASH_RESULT_DTS), 6, 2, r) +#define RDD_HASH_RESULT_MATCH_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_HASH_RESULT_DTS), 6, 2, v) +#define RDD_HASH_RESULT_MATCH_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 6, 2, r) +#define RDD_HASH_RESULT_MATCH_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 6, 2, v) +#define RDD_HASH_RESULT_MATCH_INDEX_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_HASH_RESULT_DTS), 3, 11, r) +#define RDD_HASH_RESULT_MATCH_INDEX_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_HASH_RESULT_DTS), 3, 11, v) +#define RDD_HASH_RESULT_MATCH_INDEX_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 3, 11, r) +#define RDD_HASH_RESULT_MATCH_INDEX_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 3, 11, v) +#define RDD_HASH_RESULT_MATCH_ENGINE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 1, 1, 2, r) +#define RDD_HASH_RESULT_MATCH_ENGINE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 1, 1, 2, v) +#define RDD_HASH_RESULT_MATCH_ENGINE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 1, 2, r) +#define RDD_HASH_RESULT_MATCH_ENGINE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 1, 2, v) +#define RDD_HASH_RESULT_CONTEXT0_32_47_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 2, r) +#define RDD_HASH_RESULT_CONTEXT0_32_47_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 2, v) +#define RDD_HASH_RESULT_CONTEXT0_32_47_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_HASH_RESULT_CONTEXT0_32_47_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_HASH_RESULT_CONTEXT0_0_31_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 4, r) +#define RDD_HASH_RESULT_CONTEXT0_0_31_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 4, v) +#define RDD_HASH_RESULT_CONTEXT0_0_31_READ(r, p) MREAD_32((uint8_t *)p + 4, r) +#define RDD_HASH_RESULT_CONTEXT0_0_31_WRITE(v, p) MWRITE_32((uint8_t *)p + 4, v) +#define RDD_HASH_RESULT_CONTEXT1_16_47_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 8, r) +#define RDD_HASH_RESULT_CONTEXT1_16_47_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 8, v) +#define RDD_HASH_RESULT_CONTEXT1_16_47_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_HASH_RESULT_CONTEXT1_16_47_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_HASH_RESULT_CONTEXT1_0_15_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 12, r) +#define RDD_HASH_RESULT_CONTEXT1_0_15_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 12, v) +#define RDD_HASH_RESULT_CONTEXT1_0_15_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_HASH_RESULT_CONTEXT1_0_15_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_HASH_RESULT_CONTEXT2_32_47_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 14, r) +#define RDD_HASH_RESULT_CONTEXT2_32_47_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 14, v) +#define RDD_HASH_RESULT_CONTEXT2_32_47_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_HASH_RESULT_CONTEXT2_32_47_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_HASH_RESULT_CONTEXT2_0_31_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 16, r) +#define RDD_HASH_RESULT_CONTEXT2_0_31_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_HASH_RESULT_DTS) + 16, v) +#define RDD_HASH_RESULT_CONTEXT2_0_31_READ(r, p) MREAD_32((uint8_t *)p + 16, r) +#define RDD_HASH_RESULT_CONTEXT2_0_31_WRITE(v, p) MWRITE_32((uint8_t *)p + 16, v) +/* <<>>RDD_TRACE_EVENT */ +#define TRACE_EVENT_TIMESTAMP_F_OFFSET 20 +#define TRACE_EVENT_TIMESTAMP_F_WIDTH 12 +#define TRACE_EVENT_TRACE_EVENT_OFFSET 0 +#define TRACE_EVENT_TIMESTAMP_OFFSET 0 +#define TRACE_EVENT_TIMESTAMP_WORD_OFFSET 0 +#define TRACE_EVENT_TIMESTAMP_F_OFFSET_MOD16 4 +#define TRACE_EVENT_EVENT_ID_F_OFFSET 18 +#define TRACE_EVENT_EVENT_ID_F_WIDTH 2 +#define TRACE_EVENT_EVENT_ID_OFFSET 1 +#define TRACE_EVENT_EVENT_ID_WORD_OFFSET 0 +#define TRACE_EVENT_EVENT_ID_F_OFFSET_MOD8 2 +#define TRACE_EVENT_EVENT_ID_F_OFFSET_MOD16 2 +#define TRACE_EVENT_TRACE_EVENT_INFO_F_OFFSET 0 +#define TRACE_EVENT_TRACE_EVENT_INFO_F_WIDTH 18 +#define TRACE_EVENT_TRACE_EVENT_INFO_OFFSET 0 +#define TRACE_EVENT_TRACE_EVENT_INFO_WORD_OFFSET 0 + +/* >>>RDD_TRACE_EVENT_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t timestamp :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t event_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t trace_event_info :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_timestamp :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_event_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t incoming_task_num :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t task_pc :13 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_timestamp :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_event_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t incoming_bbhrx_src_addr :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t dma_wr :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t dma_rd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t dma_wr_reply :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t ramrd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t parser :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t bbhtx :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t bbhrx_async :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t bbhrx_sync :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t cpu :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t fw_self :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t fw :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t timer :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_timestamp :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_event_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t acc_type :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + }; + }; +#else + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t trace_event_info :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t event_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t timestamp :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t incoming_task_num :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t reserved :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t task_pc :13 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t reserved1_event_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_timestamp :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t incoming_bbhrx_src_addr :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t dma_wr :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t dma_rd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t dma_wr_reply :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t ramrd :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t parser :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t bbhtx :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t bbhrx_async :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t bbhrx_sync :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t cpu :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t fw_self :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t fw :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t timer :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t reserved2_event_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_timestamp :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved2 :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t acc_type :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of trace_event_info union */ + uint32_t reserved3_event_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_timestamp :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_TRACE_EVENT_DTS; + +typedef union +{ + uint32_t word_val[1]; + RDD_TRACE_EVENT_DTS fields; +} TRACE_EVENT_STRUCT; +#define RDD_TRACE_EVENT_TIMESTAMP_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_TRACE_EVENT_DTS), 4, 12, r) +#define RDD_TRACE_EVENT_TIMESTAMP_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_TRACE_EVENT_DTS), 4, 12, v) +#define RDD_TRACE_EVENT_TIMESTAMP_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 4, 12, r) +#define RDD_TRACE_EVENT_TIMESTAMP_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 4, 12, v) +#define RDD_TRACE_EVENT_EVENT_ID_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 1, 2, 2, r) +#define RDD_TRACE_EVENT_EVENT_ID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 1, 2, 2, v) +#define RDD_TRACE_EVENT_EVENT_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 2, 2, r) +#define RDD_TRACE_EVENT_EVENT_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 2, 2, v) +#define RDD_TRACE_EVENT_TRACE_EVENT_INFO_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 0, 0, 18, r) +#define RDD_TRACE_EVENT_TRACE_EVENT_INFO_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 0, 0, 18, v) +#define RDD_TRACE_EVENT_TRACE_EVENT_INFO_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 0, 18, r) +#define RDD_TRACE_EVENT_TRACE_EVENT_INFO_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 0, 18, v) +#define RDD_TRACE_EVENT_INCOMING_TASK_NUM_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 0, 14, 4, r) +#define RDD_TRACE_EVENT_INCOMING_TASK_NUM_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 0, 14, 4, v) +#define RDD_TRACE_EVENT_INCOMING_TASK_NUM_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 14, 4, r) +#define RDD_TRACE_EVENT_INCOMING_TASK_NUM_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 14, 4, v) +#define RDD_TRACE_EVENT_TASK_PC_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 0, 13, r) +#define RDD_TRACE_EVENT_TASK_PC_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 0, 13, v) +#define RDD_TRACE_EVENT_TASK_PC_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 13, r) +#define RDD_TRACE_EVENT_TASK_PC_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 13, v) +#define RDD_TRACE_EVENT_INCOMING_BBHRX_SRC_ADDR_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 0, 12, 6, r) +#define RDD_TRACE_EVENT_INCOMING_BBHRX_SRC_ADDR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 0, 12, 6, v) +#define RDD_TRACE_EVENT_INCOMING_BBHRX_SRC_ADDR_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 0, 12, 6, r) +#define RDD_TRACE_EVENT_INCOMING_BBHRX_SRC_ADDR_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 0, 12, 6, v) +#define RDD_TRACE_EVENT_DMA_WR_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 3, 1, r) +#define RDD_TRACE_EVENT_DMA_WR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 3, 1, v) +#define RDD_TRACE_EVENT_DMA_WR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 3, 1, r) +#define RDD_TRACE_EVENT_DMA_WR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 3, 1, v) +#define RDD_TRACE_EVENT_DMA_RD_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 2, 1, r) +#define RDD_TRACE_EVENT_DMA_RD_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 2, 1, v) +#define RDD_TRACE_EVENT_DMA_RD_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 2, 1, r) +#define RDD_TRACE_EVENT_DMA_RD_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 2, 1, v) +#define RDD_TRACE_EVENT_DMA_WR_REPLY_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 1, 1, r) +#define RDD_TRACE_EVENT_DMA_WR_REPLY_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 1, 1, v) +#define RDD_TRACE_EVENT_DMA_WR_REPLY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 1, 1, r) +#define RDD_TRACE_EVENT_DMA_WR_REPLY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 1, 1, v) +#define RDD_TRACE_EVENT_RAMRD_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 0, 1, r) +#define RDD_TRACE_EVENT_RAMRD_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 0, 1, v) +#define RDD_TRACE_EVENT_RAMRD_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 1, r) +#define RDD_TRACE_EVENT_RAMRD_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 1, v) +#define RDD_TRACE_EVENT_PARSER_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 7, 1, r) +#define RDD_TRACE_EVENT_PARSER_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 7, 1, v) +#define RDD_TRACE_EVENT_PARSER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 7, 1, r) +#define RDD_TRACE_EVENT_PARSER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 7, 1, v) +#define RDD_TRACE_EVENT_BBHTX_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 6, 1, r) +#define RDD_TRACE_EVENT_BBHTX_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 6, 1, v) +#define RDD_TRACE_EVENT_BBHTX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 6, 1, r) +#define RDD_TRACE_EVENT_BBHTX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 6, 1, v) +#define RDD_TRACE_EVENT_BBHRX_ASYNC_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 5, 1, r) +#define RDD_TRACE_EVENT_BBHRX_ASYNC_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 5, 1, v) +#define RDD_TRACE_EVENT_BBHRX_ASYNC_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 5, 1, r) +#define RDD_TRACE_EVENT_BBHRX_ASYNC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 5, 1, v) +#define RDD_TRACE_EVENT_BBHRX_SYNC_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 4, 1, r) +#define RDD_TRACE_EVENT_BBHRX_SYNC_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 4, 1, v) +#define RDD_TRACE_EVENT_BBHRX_SYNC_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 4, 1, r) +#define RDD_TRACE_EVENT_BBHRX_SYNC_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 4, 1, v) +#define RDD_TRACE_EVENT_CPU_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 3, 1, r) +#define RDD_TRACE_EVENT_CPU_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 3, 1, v) +#define RDD_TRACE_EVENT_CPU_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 3, 1, r) +#define RDD_TRACE_EVENT_CPU_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 3, 1, v) +#define RDD_TRACE_EVENT_FW_SELF_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 2, 1, r) +#define RDD_TRACE_EVENT_FW_SELF_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 2, 1, v) +#define RDD_TRACE_EVENT_FW_SELF_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 2, 1, r) +#define RDD_TRACE_EVENT_FW_SELF_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 2, 1, v) +#define RDD_TRACE_EVENT_FW_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 1, 1, r) +#define RDD_TRACE_EVENT_FW_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 1, 1, v) +#define RDD_TRACE_EVENT_FW_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 1, 1, r) +#define RDD_TRACE_EVENT_FW_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 1, 1, v) +#define RDD_TRACE_EVENT_TIMER_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 0, 1, r) +#define RDD_TRACE_EVENT_TIMER_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 3, 0, 1, v) +#define RDD_TRACE_EVENT_TIMER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 1, r) +#define RDD_TRACE_EVENT_TIMER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 1, v) +#define RDD_TRACE_EVENT_ACC_TYPE_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 0, 12, r) +#define RDD_TRACE_EVENT_ACC_TYPE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_TRACE_EVENT_DTS) + 2, 0, 12, v) +#define RDD_TRACE_EVENT_ACC_TYPE_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 2, 0, 12, r) +#define RDD_TRACE_EVENT_ACC_TYPE_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 2, 0, 12, v) +/* <<>>RDD_CPU_RX_DESCRIPTOR */ +#define CPU_RX_DESCRIPTOR_CPU_RX_DATA_PTR0_UNION_F_OFFSET 0 +#define CPU_RX_DESCRIPTOR_CPU_RX_DATA_PTR0_UNION_F_WIDTH 32 +#define CPU_RX_DESCRIPTOR_CPU_RX_DATA_PTR0_UNION_OFFSET 0 +#define CPU_RX_DESCRIPTOR_CPU_RX_DATA_PTR0_UNION_WORD_OFFSET 0 +#define CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_HI_F_OFFSET 24 +#define CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_HI_F_WIDTH 8 +#define CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_HI_OFFSET 4 +#define CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_HI_WORD_OFFSET 1 +#define CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_HI_F_OFFSET_MOD16 8 +#define CPU_RX_DESCRIPTOR_ABS_F_OFFSET 16 +#define CPU_RX_DESCRIPTOR_ABS_F_WIDTH 1 +#define CPU_RX_DESCRIPTOR_ABS_OFFSET 5 +#define CPU_RX_DESCRIPTOR_ABS_WORD_OFFSET 1 +#define CPU_RX_DESCRIPTOR_ABS_F_OFFSET_MOD8 0 +#define CPU_RX_DESCRIPTOR_ABS_F_OFFSET_MOD16 0 +#define CPU_RX_DESCRIPTOR_PLEN_F_OFFSET 2 +#define CPU_RX_DESCRIPTOR_PLEN_F_WIDTH 14 +#define CPU_RX_DESCRIPTOR_PLEN_OFFSET 6 +#define CPU_RX_DESCRIPTOR_PLEN_WORD_OFFSET 1 +#define CPU_RX_DESCRIPTOR_PLEN_F_OFFSET_MOD16 2 +#define CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_F_OFFSET 1 +#define CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_F_WIDTH 1 +#define CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_OFFSET 7 +#define CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_WORD_OFFSET 1 +#define CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_F_OFFSET_MOD8 1 +#define CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_F_OFFSET_MOD16 1 +#define CPU_RX_DESCRIPTOR_IS_SRC_LAN_F_OFFSET 31 +#define CPU_RX_DESCRIPTOR_IS_SRC_LAN_F_WIDTH 1 +#define CPU_RX_DESCRIPTOR_IS_SRC_LAN_OFFSET 8 +#define CPU_RX_DESCRIPTOR_IS_SRC_LAN_WORD_OFFSET 2 +#define CPU_RX_DESCRIPTOR_IS_SRC_LAN_F_OFFSET_MOD8 7 +#define CPU_RX_DESCRIPTOR_IS_SRC_LAN_F_OFFSET_MOD16 15 +#define CPU_RX_DESCRIPTOR_COLOR_F_OFFSET 30 +#define CPU_RX_DESCRIPTOR_COLOR_F_WIDTH 1 +#define CPU_RX_DESCRIPTOR_COLOR_OFFSET 8 +#define CPU_RX_DESCRIPTOR_COLOR_WORD_OFFSET 2 +#define CPU_RX_DESCRIPTOR_COLOR_F_OFFSET_MOD8 6 +#define CPU_RX_DESCRIPTOR_COLOR_F_OFFSET_MOD16 14 +#define CPU_RX_DESCRIPTOR_VPORT_F_OFFSET 25 +#define CPU_RX_DESCRIPTOR_VPORT_F_WIDTH 5 +#define CPU_RX_DESCRIPTOR_VPORT_OFFSET 8 +#define CPU_RX_DESCRIPTOR_VPORT_WORD_OFFSET 2 +#define CPU_RX_DESCRIPTOR_VPORT_F_OFFSET_MOD8 1 +#define CPU_RX_DESCRIPTOR_VPORT_F_OFFSET_MOD16 9 +#define CPU_RX_DESCRIPTOR_CPU_RX_SRC_UNION_F_OFFSET 13 +#define CPU_RX_DESCRIPTOR_CPU_RX_SRC_UNION_F_WIDTH 12 +#define CPU_RX_DESCRIPTOR_CPU_RX_SRC_UNION_OFFSET 8 +#define CPU_RX_DESCRIPTOR_CPU_RX_SRC_UNION_WORD_OFFSET 2 +#define CPU_RX_DESCRIPTOR_CPU_RX_SRC_UNION_F_OFFSET_MOD16 13 +#define CPU_RX_DESCRIPTOR_DATA_OFFSET_F_OFFSET 6 +#define CPU_RX_DESCRIPTOR_DATA_OFFSET_F_WIDTH 7 +#define CPU_RX_DESCRIPTOR_DATA_OFFSET_OFFSET 10 +#define CPU_RX_DESCRIPTOR_DATA_OFFSET_WORD_OFFSET 2 +#define CPU_RX_DESCRIPTOR_DATA_OFFSET_F_OFFSET_MOD8 6 +#define CPU_RX_DESCRIPTOR_DATA_OFFSET_F_OFFSET_MOD16 6 +#define CPU_RX_DESCRIPTOR_REASON_F_OFFSET 0 +#define CPU_RX_DESCRIPTOR_REASON_F_WIDTH 6 +#define CPU_RX_DESCRIPTOR_REASON_OFFSET 11 +#define CPU_RX_DESCRIPTOR_REASON_WORD_OFFSET 2 +#define CPU_RX_DESCRIPTOR_REASON_F_OFFSET_MOD8 0 +#define CPU_RX_DESCRIPTOR_REASON_F_OFFSET_MOD16 0 +#define CPU_RX_DESCRIPTOR_IS_EXCEPTION_F_OFFSET 31 +#define CPU_RX_DESCRIPTOR_IS_EXCEPTION_F_WIDTH 1 +#define CPU_RX_DESCRIPTOR_IS_EXCEPTION_OFFSET 12 +#define CPU_RX_DESCRIPTOR_IS_EXCEPTION_WORD_OFFSET 3 +#define CPU_RX_DESCRIPTOR_IS_EXCEPTION_F_OFFSET_MOD8 7 +#define CPU_RX_DESCRIPTOR_IS_EXCEPTION_F_OFFSET_MOD16 15 +#define CPU_RX_DESCRIPTOR_IS_RX_OFFLOAD_F_OFFSET 30 +#define CPU_RX_DESCRIPTOR_IS_RX_OFFLOAD_F_WIDTH 1 +#define CPU_RX_DESCRIPTOR_IS_RX_OFFLOAD_OFFSET 12 +#define CPU_RX_DESCRIPTOR_IS_RX_OFFLOAD_WORD_OFFSET 3 +#define CPU_RX_DESCRIPTOR_IS_RX_OFFLOAD_F_OFFSET_MOD8 6 +#define CPU_RX_DESCRIPTOR_IS_RX_OFFLOAD_F_OFFSET_MOD16 14 +#define CPU_RX_DESCRIPTOR_IS_UCAST_F_OFFSET 29 +#define CPU_RX_DESCRIPTOR_IS_UCAST_F_WIDTH 1 +#define CPU_RX_DESCRIPTOR_IS_UCAST_OFFSET 12 +#define CPU_RX_DESCRIPTOR_IS_UCAST_WORD_OFFSET 3 +#define CPU_RX_DESCRIPTOR_IS_UCAST_F_OFFSET_MOD8 5 +#define CPU_RX_DESCRIPTOR_IS_UCAST_F_OFFSET_MOD16 13 +#define CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_UNION_F_OFFSET 16 +#define CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_UNION_F_WIDTH 13 +#define CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_UNION_OFFSET 12 +#define CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_UNION_WORD_OFFSET 3 +#define CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_UNION_F_OFFSET_MOD16 0 +#define CPU_RX_DESCRIPTOR_CPU_RX_METADATA_UNION_F_OFFSET 0 +#define CPU_RX_DESCRIPTOR_CPU_RX_METADATA_UNION_F_WIDTH 16 +#define CPU_RX_DESCRIPTOR_CPU_RX_METADATA_UNION_OFFSET 14 +#define CPU_RX_DESCRIPTOR_CPU_RX_METADATA_UNION_WORD_OFFSET 3 + +/* >>>RDD_CPU_RX_DESCRIPTOR_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t cpu_rx_data_ptr0_union ; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t host_buffer_data_ptr_low ; /* Member of cpu_rx_data_ptr0_union union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t fpm_idx :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_data_ptr0_union union */ + uint32_t reserved0 :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_data_ptr0_union union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t bn0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_data_ptr0_union union */ + uint32_t reserved9 :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_data_ptr0_union union */ + }; + }; + /* Union WORD 1 */ + union{ + /* Sub Union 0 */ + struct{ + uint8_t host_buffer_data_ptr_hi ; + uint32_t reserved1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t plen :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_chksum_verified :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint8_t reserved1_host_buffer_data_ptr_hi ; + uint32_t reserved1_reserved1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_plen :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_is_chksum_verified :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint8_t reserved2_host_buffer_data_ptr_hi ; + uint32_t reserved2_reserved1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_plen :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_is_chksum_verified :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint8_t reserved3_host_buffer_data_ptr_hi ; + uint32_t reserved3_reserved1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_plen :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_is_chksum_verified :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 2 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t is_src_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t vport :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_rx_src_union :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t data_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_is_src_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_vport :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_flow_id :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_src_union union */ + uint32_t reserved1_data_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_is_src_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_vport :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_src_union union */ + uint32_t reserved2_data_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_is_src_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_vport :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_src_union union */ + uint32_t reserved4 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_src_union union */ + uint32_t reserved3_data_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 3 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t is_exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_rx_offload :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_ucast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mcast_tx_prio_union :13 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint16_t cpu_rx_metadata_union ; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_is_exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_is_rx_offload :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_is_ucast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t mcast_tx_prio :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t reserved5 :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint16_t dst_ssid_vector ; /* Member of cpu_rx_metadata_union union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_is_exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_is_rx_offload :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_is_ucast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved6 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t metadata_0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t reserved7 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint16_t metadata_1 ; /* Member of cpu_rx_metadata_union union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_is_exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_is_rx_offload :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_is_ucast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t omci_enc_key_index :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t reserved8 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint8_t egress_queue ; /* Member of cpu_rx_metadata_union union */ + uint8_t wan_flow ; /* Member of cpu_rx_metadata_union union */ + }; + }; +#else + /* Union WORD 0 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t cpu_rx_data_ptr0_union ; /* This is a field union */ + }; + /* Sub Union 1 */ + struct{ + uint32_t host_buffer_data_ptr_low ; /* Member of cpu_rx_data_ptr0_union union */ + }; + /* Sub Union 2 */ + struct{ + uint32_t fpm_idx :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_data_ptr0_union union */ + uint32_t reserved0 :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_data_ptr0_union union */ + }; + /* Sub Union 3 */ + struct{ + uint32_t bn0 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_data_ptr0_union union */ + uint32_t reserved9 :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_data_ptr0_union union */ + }; + }; + /* Union WORD 1 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_chksum_verified :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t plen :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t host_buffer_data_ptr_hi ; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_is_chksum_verified :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_plen :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_reserved1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved1_host_buffer_data_ptr_hi ; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_is_chksum_verified :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_plen :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_reserved1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved2_host_buffer_data_ptr_hi ; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_reserved2 :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_is_chksum_verified :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_plen :14 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_abs :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_reserved1 :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t reserved3_host_buffer_data_ptr_hi ; + }; + }; + /* Union WORD 2 */ + union{ + /* Sub Union 0 */ + struct{ + uint32_t reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t cpu_rx_src_union :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t vport :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_src_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint32_t reserved1_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_data_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t wan_flow_id :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_src_union union */ + uint32_t reserved1_vport :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_is_src_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint32_t reserved2_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_data_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_src_union union */ + uint32_t reserved2_vport :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_is_src_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint32_t reserved3_reason :6 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_data_offset :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_src_union union */ + uint32_t reserved4 :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of cpu_rx_src_union union */ + uint32_t reserved3_vport :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_color :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_is_src_lan :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; + /* Union WORD 3 */ + union{ + /* Sub Union 0 */ + struct{ + uint16_t cpu_rx_metadata_union ; /* This is a field union */ + uint32_t mcast_tx_prio_union :13 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* This is a field union */ + uint32_t is_ucast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_rx_offload :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t is_exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 1 */ + struct{ + uint16_t dst_ssid_vector ; /* Member of cpu_rx_metadata_union union */ + uint32_t mcast_tx_prio :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t reserved5 :10 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t reserved1_is_ucast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_is_rx_offload :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved1_is_exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 2 */ + struct{ + uint16_t metadata_1 ; /* Member of cpu_rx_metadata_union union */ + uint32_t reserved6 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t metadata_0 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t reserved7 :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t reserved2_is_ucast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_is_rx_offload :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2_is_exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + /* Sub Union 3 */ + struct{ + uint8_t egress_queue ; /* Member of cpu_rx_metadata_union union */ + uint8_t wan_flow ; /* Member of cpu_rx_metadata_union union */ + uint32_t omci_enc_key_index :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t reserved8 :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; /* Member of mcast_tx_prio_union union */ + uint32_t reserved3_is_ucast :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_is_rx_offload :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved3_is_exception :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; + }; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RX_DESCRIPTOR_DTS; + +typedef union +{ + uint32_t word_val[4]; + uint64_t dword_val64[2]; + RDD_CPU_RX_DESCRIPTOR_DTS fields; +} CPU_RX_DESCRIPTOR_STRUCT; +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_DATA_PTR0_UNION_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS), r) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_DATA_PTR0_UNION_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS), v) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_DATA_PTR0_UNION_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_DATA_PTR0_UNION_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_LOW_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS), r) +#define RDD_CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_LOW_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS), v) +#define RDD_CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_LOW_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_CPU_RX_DESCRIPTOR_FPM_IDX_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS), 14, 18, r) +#define RDD_CPU_RX_DESCRIPTOR_FPM_IDX_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS), 14, 18, v) +#define RDD_CPU_RX_DESCRIPTOR_FPM_IDX_READ(r, p) FIELD_MREAD_32((uint8_t *)p, 14, 18, r) +#define RDD_CPU_RX_DESCRIPTOR_FPM_IDX_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p, 14, 18, v) +#define RDD_CPU_RX_DESCRIPTOR_BN0_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS), 14, 18, r) +#define RDD_CPU_RX_DESCRIPTOR_BN0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS), 14, 18, v) +#define RDD_CPU_RX_DESCRIPTOR_BN0_READ(r, p) FIELD_MREAD_32((uint8_t *)p, 14, 18, r) +#define RDD_CPU_RX_DESCRIPTOR_BN0_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p, 14, 18, v) +#define RDD_CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_HI_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 4, r) +#define RDD_CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_HI_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 4, v) +#define RDD_CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_HI_READ(r, p) MREAD_8((uint8_t *)p + 4, r) +#define RDD_CPU_RX_DESCRIPTOR_HOST_BUFFER_DATA_PTR_HI_WRITE(v, p) MWRITE_8((uint8_t *)p + 4, v) +#define RDD_CPU_RX_DESCRIPTOR_ABS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 5, 0, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_ABS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 5, 0, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_ABS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 5, 0, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_ABS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 5, 0, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_PLEN_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 6, 2, 14, r) +#define RDD_CPU_RX_DESCRIPTOR_PLEN_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 6, 2, 14, v) +#define RDD_CPU_RX_DESCRIPTOR_PLEN_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 6, 2, 14, r) +#define RDD_CPU_RX_DESCRIPTOR_PLEN_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 6, 2, 14, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 7, 1, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 7, 1, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 1, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_CHKSUM_VERIFIED_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 1, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_SRC_LAN_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 7, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_SRC_LAN_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 7, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_SRC_LAN_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 7, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_SRC_LAN_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 7, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_COLOR_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 6, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_COLOR_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 6, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_COLOR_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 6, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_COLOR_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 6, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_VPORT_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 1, 5, r) +#define RDD_CPU_RX_DESCRIPTOR_VPORT_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 1, 5, v) +#define RDD_CPU_RX_DESCRIPTOR_VPORT_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 8, 1, 5, r) +#define RDD_CPU_RX_DESCRIPTOR_VPORT_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 8, 1, 5, v) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_SRC_UNION_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 13, 12, r) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_SRC_UNION_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 13, 12, v) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_SRC_UNION_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 13, 12, r) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_SRC_UNION_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 13, 12, v) +#define RDD_CPU_RX_DESCRIPTOR_WAN_FLOW_ID_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 13, 12, r) +#define RDD_CPU_RX_DESCRIPTOR_WAN_FLOW_ID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 13, 12, v) +#define RDD_CPU_RX_DESCRIPTOR_WAN_FLOW_ID_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 8, 13, 12, r) +#define RDD_CPU_RX_DESCRIPTOR_WAN_FLOW_ID_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 8, 13, 12, v) +#define RDD_CPU_RX_DESCRIPTOR_SSID_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 5, 4, r) +#define RDD_CPU_RX_DESCRIPTOR_SSID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 8, 5, 4, v) +#define RDD_CPU_RX_DESCRIPTOR_SSID_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 8, 5, 4, r) +#define RDD_CPU_RX_DESCRIPTOR_SSID_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 8, 5, 4, v) +#define RDD_CPU_RX_DESCRIPTOR_DATA_OFFSET_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 10, 6, 7, r) +#define RDD_CPU_RX_DESCRIPTOR_DATA_OFFSET_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 10, 6, 7, v) +#define RDD_CPU_RX_DESCRIPTOR_DATA_OFFSET_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 10, 6, 7, r) +#define RDD_CPU_RX_DESCRIPTOR_DATA_OFFSET_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 10, 6, 7, v) +#define RDD_CPU_RX_DESCRIPTOR_REASON_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 11, 0, 6, r) +#define RDD_CPU_RX_DESCRIPTOR_REASON_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 11, 0, 6, v) +#define RDD_CPU_RX_DESCRIPTOR_REASON_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 11, 0, 6, r) +#define RDD_CPU_RX_DESCRIPTOR_REASON_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 11, 0, 6, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_EXCEPTION_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 7, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_EXCEPTION_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 7, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_EXCEPTION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 7, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_EXCEPTION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 7, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_RX_OFFLOAD_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 6, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_RX_OFFLOAD_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 6, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_RX_OFFLOAD_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 6, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_RX_OFFLOAD_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 6, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_UCAST_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 5, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_UCAST_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 5, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_IS_UCAST_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 5, 1, r) +#define RDD_CPU_RX_DESCRIPTOR_IS_UCAST_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 5, 1, v) +#define RDD_CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_UNION_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 0, 13, r) +#define RDD_CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_UNION_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 0, 13, v) +#define RDD_CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_UNION_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 0, 13, r) +#define RDD_CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_UNION_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 0, 13, v) +#define RDD_CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 2, 3, r) +#define RDD_CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 2, 3, v) +#define RDD_CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 2, 3, r) +#define RDD_CPU_RX_DESCRIPTOR_MCAST_TX_PRIO_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 2, 3, v) +#define RDD_CPU_RX_DESCRIPTOR_METADATA_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 5, 5, r) +#define RDD_CPU_RX_DESCRIPTOR_METADATA_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 5, 5, v) +#define RDD_CPU_RX_DESCRIPTOR_METADATA_0_READ(r, p) FIELD_MREAD_16((uint8_t *)p + 12, 5, 5, r) +#define RDD_CPU_RX_DESCRIPTOR_METADATA_0_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p + 12, 5, 5, v) +#define RDD_CPU_RX_DESCRIPTOR_OMCI_ENC_KEY_INDEX_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 3, 2, r) +#define RDD_CPU_RX_DESCRIPTOR_OMCI_ENC_KEY_INDEX_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 12, 3, 2, v) +#define RDD_CPU_RX_DESCRIPTOR_OMCI_ENC_KEY_INDEX_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 12, 3, 2, r) +#define RDD_CPU_RX_DESCRIPTOR_OMCI_ENC_KEY_INDEX_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 12, 3, 2, v) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_METADATA_UNION_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 14, r) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_METADATA_UNION_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 14, v) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_METADATA_UNION_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_CPU_RX_DESCRIPTOR_CPU_RX_METADATA_UNION_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_CPU_RX_DESCRIPTOR_DST_SSID_VECTOR_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 14, r) +#define RDD_CPU_RX_DESCRIPTOR_DST_SSID_VECTOR_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 14, v) +#define RDD_CPU_RX_DESCRIPTOR_DST_SSID_VECTOR_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_CPU_RX_DESCRIPTOR_DST_SSID_VECTOR_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_CPU_RX_DESCRIPTOR_METADATA_1_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 14, r) +#define RDD_CPU_RX_DESCRIPTOR_METADATA_1_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 14, v) +#define RDD_CPU_RX_DESCRIPTOR_METADATA_1_READ(r, p) MREAD_16((uint8_t *)p + 14, r) +#define RDD_CPU_RX_DESCRIPTOR_METADATA_1_WRITE(v, p) MWRITE_16((uint8_t *)p + 14, v) +#define RDD_CPU_RX_DESCRIPTOR_EGRESS_QUEUE_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 14, r) +#define RDD_CPU_RX_DESCRIPTOR_EGRESS_QUEUE_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 14, v) +#define RDD_CPU_RX_DESCRIPTOR_EGRESS_QUEUE_READ(r, p) MREAD_8((uint8_t *)p + 14, r) +#define RDD_CPU_RX_DESCRIPTOR_EGRESS_QUEUE_WRITE(v, p) MWRITE_8((uint8_t *)p + 14, v) +#define RDD_CPU_RX_DESCRIPTOR_WAN_FLOW_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 15, r) +#define RDD_CPU_RX_DESCRIPTOR_WAN_FLOW_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_CPU_RX_DESCRIPTOR_DTS) + 15, v) +#define RDD_CPU_RX_DESCRIPTOR_WAN_FLOW_READ(r, p) MREAD_8((uint8_t *)p + 15, r) +#define RDD_CPU_RX_DESCRIPTOR_WAN_FLOW_WRITE(v, p) MWRITE_8((uint8_t *)p + 15, v) +/* <<>>RDD_CPU_FEED_DESCRIPTOR */ +#define CPU_FEED_DESCRIPTOR_PTR_LOW_F_OFFSET 0 +#define CPU_FEED_DESCRIPTOR_PTR_LOW_F_WIDTH 32 +#define CPU_FEED_DESCRIPTOR_CPU_FEED_DESCRIPTOR_OFFSET 0 +#define CPU_FEED_DESCRIPTOR_PTR_LOW_OFFSET 0 +#define CPU_FEED_DESCRIPTOR_PTR_LOW_WORD_OFFSET 0 +#define CPU_FEED_DESCRIPTOR_TYPE_F_OFFSET 8 +#define CPU_FEED_DESCRIPTOR_TYPE_F_WIDTH 1 +#define CPU_FEED_DESCRIPTOR_TYPE_OFFSET 6 +#define CPU_FEED_DESCRIPTOR_TYPE_WORD_OFFSET 1 +#define CPU_FEED_DESCRIPTOR_TYPE_F_OFFSET_MOD8 0 +#define CPU_FEED_DESCRIPTOR_TYPE_F_OFFSET_MOD16 8 +#define CPU_FEED_DESCRIPTOR_PTR_HI_F_OFFSET 0 +#define CPU_FEED_DESCRIPTOR_PTR_HI_F_WIDTH 8 +#define CPU_FEED_DESCRIPTOR_PTR_HI_OFFSET 7 +#define CPU_FEED_DESCRIPTOR_PTR_HI_WORD_OFFSET 1 +#define CPU_FEED_DESCRIPTOR_PTR_HI_F_OFFSET_MOD16 0 + +/* >>>RDD_CPU_FEED_DESCRIPTOR_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t ptr_low ; + uint32_t reserved0 :23 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t type :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t ptr_hi ; +#else + uint32_t ptr_low ; + uint8_t ptr_hi ; + uint32_t type :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved0 :23 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_FEED_DESCRIPTOR_DTS; + +typedef union +{ + uint32_t word_val[2]; + uint64_t dword_val64[1]; + RDD_CPU_FEED_DESCRIPTOR_DTS fields; +} CPU_FEED_DESCRIPTOR_STRUCT; +#define RDD_CPU_FEED_DESCRIPTOR_PTR_LOW_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_CPU_FEED_DESCRIPTOR_DTS), r) +#define RDD_CPU_FEED_DESCRIPTOR_PTR_LOW_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_CPU_FEED_DESCRIPTOR_DTS), v) +#define RDD_CPU_FEED_DESCRIPTOR_PTR_LOW_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_CPU_FEED_DESCRIPTOR_PTR_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_CPU_FEED_DESCRIPTOR_TYPE_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_FEED_DESCRIPTOR_DTS) + 6, 0, 1, r) +#define RDD_CPU_FEED_DESCRIPTOR_TYPE_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_FEED_DESCRIPTOR_DTS) + 6, 0, 1, v) +#define RDD_CPU_FEED_DESCRIPTOR_TYPE_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 6, 0, 1, r) +#define RDD_CPU_FEED_DESCRIPTOR_TYPE_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 6, 0, 1, v) +#define RDD_CPU_FEED_DESCRIPTOR_PTR_HI_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_CPU_FEED_DESCRIPTOR_DTS) + 7, r) +#define RDD_CPU_FEED_DESCRIPTOR_PTR_HI_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_CPU_FEED_DESCRIPTOR_DTS) + 7, v) +#define RDD_CPU_FEED_DESCRIPTOR_PTR_HI_READ(r, p) MREAD_8((uint8_t *)p + 7, r) +#define RDD_CPU_FEED_DESCRIPTOR_PTR_HI_WRITE(v, p) MWRITE_8((uint8_t *)p + 7, v) +/* <<>>RDD_CPU_RING_DESCRIPTOR */ +#define CPU_RING_DESCRIPTOR_SIZE_OF_ENTRY_F_OFFSET 27 +#define CPU_RING_DESCRIPTOR_SIZE_OF_ENTRY_F_WIDTH 5 +#define CPU_RING_DESCRIPTOR_CPU_RING_DESCRIPTOR_OFFSET 0 +#define CPU_RING_DESCRIPTOR_SIZE_OF_ENTRY_OFFSET 0 +#define CPU_RING_DESCRIPTOR_SIZE_OF_ENTRY_WORD_OFFSET 0 +#define CPU_RING_DESCRIPTOR_SIZE_OF_ENTRY_F_OFFSET_MOD8 3 +#define CPU_RING_DESCRIPTOR_SIZE_OF_ENTRY_F_OFFSET_MOD16 11 +#define CPU_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_F_OFFSET 16 +#define CPU_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_F_WIDTH 11 +#define CPU_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_OFFSET 0 +#define CPU_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_WORD_OFFSET 0 +#define CPU_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_F_OFFSET_MOD16 0 +#define CPU_RING_DESCRIPTOR_INTERRUPT_ID_F_OFFSET 0 +#define CPU_RING_DESCRIPTOR_INTERRUPT_ID_F_WIDTH 16 +#define CPU_RING_DESCRIPTOR_INTERRUPT_ID_OFFSET 2 +#define CPU_RING_DESCRIPTOR_INTERRUPT_ID_WORD_OFFSET 0 +#define CPU_RING_DESCRIPTOR_DROP_COUNTER_F_OFFSET 16 +#define CPU_RING_DESCRIPTOR_DROP_COUNTER_F_WIDTH 16 +#define CPU_RING_DESCRIPTOR_DROP_COUNTER_OFFSET 4 +#define CPU_RING_DESCRIPTOR_DROP_COUNTER_WORD_OFFSET 1 +#define CPU_RING_DESCRIPTOR_WRITE_IDX_F_OFFSET 0 +#define CPU_RING_DESCRIPTOR_WRITE_IDX_F_WIDTH 16 +#define CPU_RING_DESCRIPTOR_WRITE_IDX_OFFSET 6 +#define CPU_RING_DESCRIPTOR_WRITE_IDX_WORD_OFFSET 1 +#define CPU_RING_DESCRIPTOR_BASE_ADDR_LOW_F_OFFSET 0 +#define CPU_RING_DESCRIPTOR_BASE_ADDR_LOW_F_WIDTH 32 +#define CPU_RING_DESCRIPTOR_BASE_ADDR_LOW_OFFSET 8 +#define CPU_RING_DESCRIPTOR_BASE_ADDR_LOW_WORD_OFFSET 2 +#define CPU_RING_DESCRIPTOR_READ_IDX_F_OFFSET 16 +#define CPU_RING_DESCRIPTOR_READ_IDX_F_WIDTH 16 +#define CPU_RING_DESCRIPTOR_READ_IDX_OFFSET 12 +#define CPU_RING_DESCRIPTOR_READ_IDX_WORD_OFFSET 3 +#define CPU_RING_DESCRIPTOR_BASE_ADDR_HIGH_F_OFFSET 0 +#define CPU_RING_DESCRIPTOR_BASE_ADDR_HIGH_F_WIDTH 8 +#define CPU_RING_DESCRIPTOR_BASE_ADDR_HIGH_OFFSET 15 +#define CPU_RING_DESCRIPTOR_BASE_ADDR_HIGH_WORD_OFFSET 3 +#define CPU_RING_DESCRIPTOR_BASE_ADDR_HIGH_F_OFFSET_MOD16 0 + +/* >>>RDD_CPU_RING_DESCRIPTOR_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t size_of_entry :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t number_of_entries :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t interrupt_id ; + uint16_t drop_counter ; + uint16_t write_idx ; + uint32_t base_addr_low ; + uint16_t read_idx ; + uint8_t reserved0 ; + uint8_t base_addr_high ; +#else + uint16_t interrupt_id ; + uint32_t number_of_entries :11 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t size_of_entry :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint16_t write_idx ; + uint16_t drop_counter ; + uint32_t base_addr_low ; + uint8_t base_addr_high ; + uint8_t reserved0 ; + uint16_t read_idx ; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_CPU_RING_DESCRIPTOR_DTS; + +typedef union +{ + uint32_t word_val[4]; + uint64_t dword_val64[2]; + RDD_CPU_RING_DESCRIPTOR_DTS fields; +} CPU_RING_DESCRIPTOR_STRUCT; +#define RDD_CPU_RING_DESCRIPTOR_SIZE_OF_ENTRY_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS), 3, 5, r) +#define RDD_CPU_RING_DESCRIPTOR_SIZE_OF_ENTRY_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS), 3, 5, v) +#define RDD_CPU_RING_DESCRIPTOR_SIZE_OF_ENTRY_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 5, r) +#define RDD_CPU_RING_DESCRIPTOR_SIZE_OF_ENTRY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 5, v) +#define RDD_CPU_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS), 0, 11, r) +#define RDD_CPU_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS), 0, 11, v) +#define RDD_CPU_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 0, 11, r) +#define RDD_CPU_RING_DESCRIPTOR_NUMBER_OF_ENTRIES_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 0, 11, v) +#define RDD_CPU_RING_DESCRIPTOR_INTERRUPT_ID_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 2, r) +#define RDD_CPU_RING_DESCRIPTOR_INTERRUPT_ID_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 2, v) +#define RDD_CPU_RING_DESCRIPTOR_INTERRUPT_ID_READ(r, p) MREAD_16((uint8_t *)p + 2, r) +#define RDD_CPU_RING_DESCRIPTOR_INTERRUPT_ID_WRITE(v, p) MWRITE_16((uint8_t *)p + 2, v) +#define RDD_CPU_RING_DESCRIPTOR_DROP_COUNTER_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 4, r) +#define RDD_CPU_RING_DESCRIPTOR_DROP_COUNTER_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 4, v) +#define RDD_CPU_RING_DESCRIPTOR_DROP_COUNTER_READ(r, p) MREAD_16((uint8_t *)p + 4, r) +#define RDD_CPU_RING_DESCRIPTOR_DROP_COUNTER_WRITE(v, p) MWRITE_16((uint8_t *)p + 4, v) +#define RDD_CPU_RING_DESCRIPTOR_WRITE_IDX_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 6, r) +#define RDD_CPU_RING_DESCRIPTOR_WRITE_IDX_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 6, v) +#define RDD_CPU_RING_DESCRIPTOR_WRITE_IDX_READ(r, p) MREAD_16((uint8_t *)p + 6, r) +#define RDD_CPU_RING_DESCRIPTOR_WRITE_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p + 6, v) +#define RDD_CPU_RING_DESCRIPTOR_BASE_ADDR_LOW_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 8, r) +#define RDD_CPU_RING_DESCRIPTOR_BASE_ADDR_LOW_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 8, v) +#define RDD_CPU_RING_DESCRIPTOR_BASE_ADDR_LOW_READ(r, p) MREAD_32((uint8_t *)p + 8, r) +#define RDD_CPU_RING_DESCRIPTOR_BASE_ADDR_LOW_WRITE(v, p) MWRITE_32((uint8_t *)p + 8, v) +#define RDD_CPU_RING_DESCRIPTOR_READ_IDX_READ_G(r, g, idx) GROUP_MREAD_16(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 12, r) +#define RDD_CPU_RING_DESCRIPTOR_READ_IDX_WRITE_G(v, g, idx) GROUP_MWRITE_16(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 12, v) +#define RDD_CPU_RING_DESCRIPTOR_READ_IDX_READ(r, p) MREAD_16((uint8_t *)p + 12, r) +#define RDD_CPU_RING_DESCRIPTOR_READ_IDX_WRITE(v, p) MWRITE_16((uint8_t *)p + 12, v) +#define RDD_CPU_RING_DESCRIPTOR_BASE_ADDR_HIGH_READ_G(r, g, idx) GROUP_MREAD_8(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 15, r) +#define RDD_CPU_RING_DESCRIPTOR_BASE_ADDR_HIGH_WRITE_G(v, g, idx) GROUP_MWRITE_8(g, idx*sizeof(RDD_CPU_RING_DESCRIPTOR_DTS) + 15, v) +#define RDD_CPU_RING_DESCRIPTOR_BASE_ADDR_HIGH_READ(r, p) MREAD_8((uint8_t *)p + 15, r) +#define RDD_CPU_RING_DESCRIPTOR_BASE_ADDR_HIGH_WRITE(v, p) MWRITE_8((uint8_t *)p + 15, v) +/* <<>>RDD_PERIPHERALS_STS */ +#define PERIPHERALS_STS_SCHEDULER_DEBUG_F_OFFSET 27 +#define PERIPHERALS_STS_SCHEDULER_DEBUG_F_WIDTH 5 +#define PERIPHERALS_STS_PERIPHERALS_STS_OFFSET 0 +#define PERIPHERALS_STS_SCHEDULER_DEBUG_OFFSET 0 +#define PERIPHERALS_STS_SCHEDULER_DEBUG_WORD_OFFSET 0 +#define PERIPHERALS_STS_SCHEDULER_DEBUG_F_OFFSET_MOD8 3 +#define PERIPHERALS_STS_SCHEDULER_DEBUG_F_OFFSET_MOD16 11 +#define PERIPHERALS_STS_NEXT_THREAD_IS_READY_F_OFFSET 26 +#define PERIPHERALS_STS_NEXT_THREAD_IS_READY_F_WIDTH 1 +#define PERIPHERALS_STS_NEXT_THREAD_IS_READY_OFFSET 0 +#define PERIPHERALS_STS_NEXT_THREAD_IS_READY_WORD_OFFSET 0 +#define PERIPHERALS_STS_NEXT_THREAD_IS_READY_F_OFFSET_MOD8 2 +#define PERIPHERALS_STS_NEXT_THREAD_IS_READY_F_OFFSET_MOD16 10 +#define PERIPHERALS_STS_NEXT_THREAD_NUMBER_F_OFFSET 21 +#define PERIPHERALS_STS_NEXT_THREAD_NUMBER_F_WIDTH 5 +#define PERIPHERALS_STS_NEXT_THREAD_NUMBER_OFFSET 0 +#define PERIPHERALS_STS_NEXT_THREAD_NUMBER_WORD_OFFSET 0 +#define PERIPHERALS_STS_NEXT_THREAD_NUMBER_F_OFFSET_MOD8 5 +#define PERIPHERALS_STS_NEXT_THREAD_NUMBER_F_OFFSET_MOD16 5 +#define PERIPHERALS_STS_CURRENT_THREAD_NUMBER_F_OFFSET 16 +#define PERIPHERALS_STS_CURRENT_THREAD_NUMBER_F_WIDTH 5 +#define PERIPHERALS_STS_CURRENT_THREAD_NUMBER_OFFSET 1 +#define PERIPHERALS_STS_CURRENT_THREAD_NUMBER_WORD_OFFSET 0 +#define PERIPHERALS_STS_CURRENT_THREAD_NUMBER_F_OFFSET_MOD8 0 +#define PERIPHERALS_STS_CURRENT_THREAD_NUMBER_F_OFFSET_MOD16 0 +#define PERIPHERALS_STS_TIMER_1_STATUS_F_OFFSET 12 +#define PERIPHERALS_STS_TIMER_1_STATUS_F_WIDTH 1 +#define PERIPHERALS_STS_TIMER_1_STATUS_OFFSET 2 +#define PERIPHERALS_STS_TIMER_1_STATUS_WORD_OFFSET 0 +#define PERIPHERALS_STS_TIMER_1_STATUS_F_OFFSET_MOD8 4 +#define PERIPHERALS_STS_TIMER_1_STATUS_F_OFFSET_MOD16 12 +#define PERIPHERALS_STS_TIMER_0_STATUS_F_OFFSET 11 +#define PERIPHERALS_STS_TIMER_0_STATUS_F_WIDTH 1 +#define PERIPHERALS_STS_TIMER_0_STATUS_OFFSET 2 +#define PERIPHERALS_STS_TIMER_0_STATUS_WORD_OFFSET 0 +#define PERIPHERALS_STS_TIMER_0_STATUS_F_OFFSET_MOD8 3 +#define PERIPHERALS_STS_TIMER_0_STATUS_F_OFFSET_MOD16 11 +#define PERIPHERALS_STS_RAM_READ_COMMAND_FIFO_FULL_F_OFFSET 8 +#define PERIPHERALS_STS_RAM_READ_COMMAND_FIFO_FULL_F_WIDTH 1 +#define PERIPHERALS_STS_RAM_READ_COMMAND_FIFO_FULL_OFFSET 2 +#define PERIPHERALS_STS_RAM_READ_COMMAND_FIFO_FULL_WORD_OFFSET 0 +#define PERIPHERALS_STS_RAM_READ_COMMAND_FIFO_FULL_F_OFFSET_MOD8 0 +#define PERIPHERALS_STS_RAM_READ_COMMAND_FIFO_FULL_F_OFFSET_MOD16 8 +#define PERIPHERALS_STS_QUAD_ID_F_OFFSET 6 +#define PERIPHERALS_STS_QUAD_ID_F_WIDTH 2 +#define PERIPHERALS_STS_QUAD_ID_OFFSET 3 +#define PERIPHERALS_STS_QUAD_ID_WORD_OFFSET 0 +#define PERIPHERALS_STS_QUAD_ID_F_OFFSET_MOD8 6 +#define PERIPHERALS_STS_QUAD_ID_F_OFFSET_MOD16 6 +#define PERIPHERALS_STS_CORE_ID_F_OFFSET 4 +#define PERIPHERALS_STS_CORE_ID_F_WIDTH 2 +#define PERIPHERALS_STS_CORE_ID_OFFSET 3 +#define PERIPHERALS_STS_CORE_ID_WORD_OFFSET 0 +#define PERIPHERALS_STS_CORE_ID_F_OFFSET_MOD8 4 +#define PERIPHERALS_STS_CORE_ID_F_OFFSET_MOD16 4 +#define PERIPHERALS_STS_BB_MESSAGE_PENDING_F_OFFSET 3 +#define PERIPHERALS_STS_BB_MESSAGE_PENDING_F_WIDTH 1 +#define PERIPHERALS_STS_BB_MESSAGE_PENDING_OFFSET 3 +#define PERIPHERALS_STS_BB_MESSAGE_PENDING_WORD_OFFSET 0 +#define PERIPHERALS_STS_BB_MESSAGE_PENDING_F_OFFSET_MOD8 3 +#define PERIPHERALS_STS_BB_MESSAGE_PENDING_F_OFFSET_MOD16 3 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_IS_EMPTY_F_OFFSET 2 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_IS_EMPTY_F_WIDTH 1 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_IS_EMPTY_OFFSET 3 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_IS_EMPTY_WORD_OFFSET 0 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_IS_EMPTY_F_OFFSET_MOD8 2 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_IS_EMPTY_F_OFFSET_MOD16 2 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_FULL_F_OFFSET 1 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_FULL_F_WIDTH 1 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_FULL_OFFSET 3 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_FULL_WORD_OFFSET 0 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_FULL_F_OFFSET_MOD8 1 +#define PERIPHERALS_STS_BBTX_COMMAND_FIFO_FULL_F_OFFSET_MOD16 1 +#define PERIPHERALS_STS_DMA_COMMAND_FIFO_FULL_F_OFFSET 0 +#define PERIPHERALS_STS_DMA_COMMAND_FIFO_FULL_F_WIDTH 1 +#define PERIPHERALS_STS_DMA_COMMAND_FIFO_FULL_OFFSET 3 +#define PERIPHERALS_STS_DMA_COMMAND_FIFO_FULL_WORD_OFFSET 0 +#define PERIPHERALS_STS_DMA_COMMAND_FIFO_FULL_F_OFFSET_MOD8 0 +#define PERIPHERALS_STS_DMA_COMMAND_FIFO_FULL_F_OFFSET_MOD16 0 + +/* >>>RDD_PERIPHERALS_STS_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t scheduler_debug :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t next_thread_is_ready :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t next_thread_number :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t current_thread_number :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_1 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t timer_1_status :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t timer_0_status :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_2 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ram_read_command_fifo_full :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t quad_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t core_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bb_message_pending :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbtx_command_fifo_is_empty :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbtx_command_fifo_full :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t dma_command_fifo_full :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#else + uint32_t dma_command_fifo_full :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbtx_command_fifo_full :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bbtx_command_fifo_is_empty :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bb_message_pending :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t core_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t quad_id :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ram_read_command_fifo_full :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_2 :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t timer_0_status :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t timer_1_status :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved_1 :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t current_thread_number :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t next_thread_number :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t next_thread_is_ready :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t scheduler_debug :5 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_PERIPHERALS_STS_DTS; + +typedef union +{ + uint32_t word_val[1]; + RDD_PERIPHERALS_STS_DTS fields; +} PERIPHERALS_STS_STRUCT; +#define RDD_PERIPHERALS_STS_SCHEDULER_DEBUG_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS), 3, 5, r) +#define RDD_PERIPHERALS_STS_SCHEDULER_DEBUG_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS), 3, 5, v) +#define RDD_PERIPHERALS_STS_SCHEDULER_DEBUG_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 3, 5, r) +#define RDD_PERIPHERALS_STS_SCHEDULER_DEBUG_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 3, 5, v) +#define RDD_PERIPHERALS_STS_NEXT_THREAD_IS_READY_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS), 2, 1, r) +#define RDD_PERIPHERALS_STS_NEXT_THREAD_IS_READY_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS), 2, 1, v) +#define RDD_PERIPHERALS_STS_NEXT_THREAD_IS_READY_READ(r, p) FIELD_MREAD_8((uint8_t *)p, 2, 1, r) +#define RDD_PERIPHERALS_STS_NEXT_THREAD_IS_READY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p, 2, 1, v) +#define RDD_PERIPHERALS_STS_NEXT_THREAD_NUMBER_READ_G(r, g, idx) GROUP_FIELD_MREAD_16(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS), 5, 5, r) +#define RDD_PERIPHERALS_STS_NEXT_THREAD_NUMBER_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_16(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS), 5, 5, v) +#define RDD_PERIPHERALS_STS_NEXT_THREAD_NUMBER_READ(r, p) FIELD_MREAD_16((uint8_t *)p, 5, 5, r) +#define RDD_PERIPHERALS_STS_NEXT_THREAD_NUMBER_WRITE(v, p) FIELD_MWRITE_16((uint8_t *)p, 5, 5, v) +#define RDD_PERIPHERALS_STS_CURRENT_THREAD_NUMBER_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 1, 0, 5, r) +#define RDD_PERIPHERALS_STS_CURRENT_THREAD_NUMBER_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 1, 0, 5, v) +#define RDD_PERIPHERALS_STS_CURRENT_THREAD_NUMBER_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 1, 0, 5, r) +#define RDD_PERIPHERALS_STS_CURRENT_THREAD_NUMBER_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 1, 0, 5, v) +#define RDD_PERIPHERALS_STS_TIMER_1_STATUS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 2, 4, 1, r) +#define RDD_PERIPHERALS_STS_TIMER_1_STATUS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 2, 4, 1, v) +#define RDD_PERIPHERALS_STS_TIMER_1_STATUS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 4, 1, r) +#define RDD_PERIPHERALS_STS_TIMER_1_STATUS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 4, 1, v) +#define RDD_PERIPHERALS_STS_TIMER_0_STATUS_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 2, 3, 1, r) +#define RDD_PERIPHERALS_STS_TIMER_0_STATUS_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 2, 3, 1, v) +#define RDD_PERIPHERALS_STS_TIMER_0_STATUS_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 3, 1, r) +#define RDD_PERIPHERALS_STS_TIMER_0_STATUS_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 3, 1, v) +#define RDD_PERIPHERALS_STS_RAM_READ_COMMAND_FIFO_FULL_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 2, 0, 1, r) +#define RDD_PERIPHERALS_STS_RAM_READ_COMMAND_FIFO_FULL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 2, 0, 1, v) +#define RDD_PERIPHERALS_STS_RAM_READ_COMMAND_FIFO_FULL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 2, 0, 1, r) +#define RDD_PERIPHERALS_STS_RAM_READ_COMMAND_FIFO_FULL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 2, 0, 1, v) +#define RDD_PERIPHERALS_STS_QUAD_ID_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 6, 2, r) +#define RDD_PERIPHERALS_STS_QUAD_ID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 6, 2, v) +#define RDD_PERIPHERALS_STS_QUAD_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 6, 2, r) +#define RDD_PERIPHERALS_STS_QUAD_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 6, 2, v) +#define RDD_PERIPHERALS_STS_CORE_ID_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 4, 2, r) +#define RDD_PERIPHERALS_STS_CORE_ID_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 4, 2, v) +#define RDD_PERIPHERALS_STS_CORE_ID_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 4, 2, r) +#define RDD_PERIPHERALS_STS_CORE_ID_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 4, 2, v) +#define RDD_PERIPHERALS_STS_BB_MESSAGE_PENDING_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 3, 1, r) +#define RDD_PERIPHERALS_STS_BB_MESSAGE_PENDING_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 3, 1, v) +#define RDD_PERIPHERALS_STS_BB_MESSAGE_PENDING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 3, 1, r) +#define RDD_PERIPHERALS_STS_BB_MESSAGE_PENDING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 3, 1, v) +#define RDD_PERIPHERALS_STS_BBTX_COMMAND_FIFO_IS_EMPTY_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 2, 1, r) +#define RDD_PERIPHERALS_STS_BBTX_COMMAND_FIFO_IS_EMPTY_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 2, 1, v) +#define RDD_PERIPHERALS_STS_BBTX_COMMAND_FIFO_IS_EMPTY_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 2, 1, r) +#define RDD_PERIPHERALS_STS_BBTX_COMMAND_FIFO_IS_EMPTY_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 2, 1, v) +#define RDD_PERIPHERALS_STS_BBTX_COMMAND_FIFO_FULL_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 1, 1, r) +#define RDD_PERIPHERALS_STS_BBTX_COMMAND_FIFO_FULL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 1, 1, v) +#define RDD_PERIPHERALS_STS_BBTX_COMMAND_FIFO_FULL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 1, 1, r) +#define RDD_PERIPHERALS_STS_BBTX_COMMAND_FIFO_FULL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 1, 1, v) +#define RDD_PERIPHERALS_STS_DMA_COMMAND_FIFO_FULL_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 0, 1, r) +#define RDD_PERIPHERALS_STS_DMA_COMMAND_FIFO_FULL_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_PERIPHERALS_STS_DTS) + 3, 0, 1, v) +#define RDD_PERIPHERALS_STS_DMA_COMMAND_FIFO_FULL_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 3, 0, 1, r) +#define RDD_PERIPHERALS_STS_DMA_COMMAND_FIFO_FULL_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 3, 0, 1, v) +/* <<>>RDD_HASH_COMMAND */ +#define HASH_COMMAND_KEY_1_F_OFFSET 0 +#define HASH_COMMAND_KEY_1_F_WIDTH 32 +#define HASH_COMMAND_HASH_COMMAND_OFFSET 0 +#define HASH_COMMAND_KEY_1_OFFSET 0 +#define HASH_COMMAND_KEY_1_WORD_OFFSET 0 +#define HASH_COMMAND_KEY_0_F_OFFSET 4 +#define HASH_COMMAND_KEY_0_F_WIDTH 28 +#define HASH_COMMAND_KEY_0_OFFSET 4 +#define HASH_COMMAND_KEY_0_WORD_OFFSET 1 +#define HASH_COMMAND_CONFIGURATION_F_OFFSET 1 +#define HASH_COMMAND_CONFIGURATION_F_WIDTH 3 +#define HASH_COMMAND_CONFIGURATION_OFFSET 7 +#define HASH_COMMAND_CONFIGURATION_WORD_OFFSET 1 +#define HASH_COMMAND_CONFIGURATION_F_OFFSET_MOD8 1 +#define HASH_COMMAND_CONFIGURATION_F_OFFSET_MOD16 1 +#define HASH_COMMAND_AGING_F_OFFSET 0 +#define HASH_COMMAND_AGING_F_WIDTH 1 +#define HASH_COMMAND_AGING_OFFSET 7 +#define HASH_COMMAND_AGING_WORD_OFFSET 1 +#define HASH_COMMAND_AGING_F_OFFSET_MOD8 0 +#define HASH_COMMAND_AGING_F_OFFSET_MOD16 0 + +/* >>>RDD_HASH_COMMAND_DTS */ + +typedef struct +{ +#ifndef FIRMWARE_LITTLE_ENDIAN + uint32_t key_1 ; + uint32_t key_0 :28 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t configuration :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t aging :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#else + uint32_t key_1 ; + uint32_t aging :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t configuration :3 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t key_0 :28 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#endif +} +__PACKING_ATTRIBUTE_STRUCT_END__ RDD_HASH_COMMAND_DTS; + +typedef union +{ + uint32_t word_val[2]; + uint64_t dword_val64[1]; + RDD_HASH_COMMAND_DTS fields; +} HASH_COMMAND_STRUCT; +#define RDD_HASH_COMMAND_KEY_1_READ_G(r, g, idx) GROUP_MREAD_32(g, idx*sizeof(RDD_HASH_COMMAND_DTS), r) +#define RDD_HASH_COMMAND_KEY_1_WRITE_G(v, g, idx) GROUP_MWRITE_32(g, idx*sizeof(RDD_HASH_COMMAND_DTS), v) +#define RDD_HASH_COMMAND_KEY_1_READ(r, p) MREAD_32((uint8_t *)p, r) +#define RDD_HASH_COMMAND_KEY_1_WRITE(v, p) MWRITE_32((uint8_t *)p, v) +#define RDD_HASH_COMMAND_KEY_0_READ_G(r, g, idx) GROUP_FIELD_MREAD_32(g, idx*sizeof(RDD_HASH_COMMAND_DTS) + 4, 4, 28, r) +#define RDD_HASH_COMMAND_KEY_0_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_32(g, idx*sizeof(RDD_HASH_COMMAND_DTS) + 4, 4, 28, v) +#define RDD_HASH_COMMAND_KEY_0_READ(r, p) FIELD_MREAD_32((uint8_t *)p + 4, 4, 28, r) +#define RDD_HASH_COMMAND_KEY_0_WRITE(v, p) FIELD_MWRITE_32((uint8_t *)p + 4, 4, 28, v) +#define RDD_HASH_COMMAND_CONFIGURATION_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_HASH_COMMAND_DTS) + 7, 1, 3, r) +#define RDD_HASH_COMMAND_CONFIGURATION_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_HASH_COMMAND_DTS) + 7, 1, 3, v) +#define RDD_HASH_COMMAND_CONFIGURATION_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 1, 3, r) +#define RDD_HASH_COMMAND_CONFIGURATION_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 1, 3, v) +#define RDD_HASH_COMMAND_AGING_READ_G(r, g, idx) GROUP_FIELD_MREAD_8(g, idx*sizeof(RDD_HASH_COMMAND_DTS) + 7, 0, 1, r) +#define RDD_HASH_COMMAND_AGING_WRITE_G(v, g, idx) GROUP_FIELD_MWRITE_8(g, idx*sizeof(RDD_HASH_COMMAND_DTS) + 7, 0, 1, v) +#define RDD_HASH_COMMAND_AGING_READ(r, p) FIELD_MREAD_8((uint8_t *)p + 7, 0, 1, r) +#define RDD_HASH_COMMAND_AGING_WRITE(v, p) FIELD_MWRITE_8((uint8_t *)p + 7, 0, 1, v) +/* << +#include "bdmf_shell.h" +#include "bdmf_interface.h" +#include +#include "ru.h" + + +#define _1BITS_MAX_VAL_ (1U<<1) +#define _2BITS_MAX_VAL_ (1U<<2) +#define _3BITS_MAX_VAL_ (1U<<3) +#define _4BITS_MAX_VAL_ (1U<<4) +#define _5BITS_MAX_VAL_ (1U<<5) +#define _6BITS_MAX_VAL_ (1U<<6) +#define _7BITS_MAX_VAL_ (1U<<7) +#define _9BITS_MAX_VAL_ (1U<<9) +#define _10BITS_MAX_VAL_ (1U<<10) +#define _11BITS_MAX_VAL_ (1U<<11) +#define _12BITS_MAX_VAL_ (1U<<12) +#define _13BITS_MAX_VAL_ (1U<<13) +#define _14BITS_MAX_VAL_ (1U<<14) +#define _15BITS_MAX_VAL_ (1U<<15) +#define _17BITS_MAX_VAL_ (1U<<17) +#define _18BITS_MAX_VAL_ (1U<<18) +#define _19BITS_MAX_VAL_ (1U<<19) +#define _20BITS_MAX_VAL_ (1U<<20) +#define _21BITS_MAX_VAL_ (1U<<21) +#define _22BITS_MAX_VAL_ (1U<<22) +#define _23BITS_MAX_VAL_ (1U<<23) +#define _24BITS_MAX_VAL_ (1U<<24) +#define _25BITS_MAX_VAL_ (1U<<25) +#define _26BITS_MAX_VAL_ (1U<<26) +#define _27BITS_MAX_VAL_ (1U<<27) +#define _28BITS_MAX_VAL_ (1U<<28) +#define _29BITS_MAX_VAL_ (1U<<29) +#define _30BITS_MAX_VAL_ (1U<<30) +#define _31BITS_MAX_VAL_ (1U<<31) +#define _32BITS_MAX_VAL_ (0xFFFFFFFF) + + +typedef enum +{ + bdmf_test_method_low, + bdmf_test_method_mid, + bdmf_test_method_high, +} +bdmf_test_method; + +uint32_t gtmv(bdmf_test_method method, uint8_t bits); + + +static inline void ag_ru_block_addr_print(int block_idx) +{ + int addr_idx; + for (addr_idx = 0; addr_idx < RU_ALL_BLOCKS[block_idx]->addr_count; addr_idx++) + { + bdmf_trace("block %s[%d] address = 0x%lx\n", RU_ALL_BLOCKS[block_idx]->name, addr_idx, + RU_ALL_BLOCKS[block_idx]->addr[addr_idx]); + } +} + +static inline void ag_ru_blocks_data_print(void) +{ + int block_idx; + for (block_idx = 0; block_idx < RU_BLK_COUNT; block_idx++) + { + ag_ru_block_addr_print(block_idx); + } +} +#endif diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_psram.c b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_psram.c new file mode 100644 index 0000000000..c4697da1da --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_psram.c @@ -0,0 +1,125 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#include "rdp_common.h" +#include "xrdp_drv_drivers_common_ag.h" +#include "xrdp_drv_psram.h" + +bdmf_error_t ag_drv_psram_memory_data_set(uint32_t psram_enrty, const psram_memory_data *memory_data) +{ + int i; +#ifdef VALIDATE_PARMS + if(!memory_data) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_PARM), BDMF_ERR_PARM); + return BDMF_ERR_PARM; + } + if((psram_enrty >= 1536)) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_RANGE), BDMF_ERR_RANGE); + return BDMF_ERR_RANGE; + } +#endif + + for (i = 0; i < 32; i++) + RU_REG_RAM_WRITE(0, psram_enrty *32 + i, PSRAM, MEMORY_DATA, memory_data->memory_data[i]); +#if 0 + RU_REG_RAM_WRITE(0, psram_enrty *32 + 0, PSRAM, MEMORY_DATA, memory_data->memory_data[0]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 1, PSRAM, MEMORY_DATA, memory_data->memory_data[1]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 2, PSRAM, MEMORY_DATA, memory_data->memory_data[2]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 3, PSRAM, MEMORY_DATA, memory_data->memory_data[3]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 4, PSRAM, MEMORY_DATA, memory_data->memory_data[4]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 5, PSRAM, MEMORY_DATA, memory_data->memory_data[5]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 6, PSRAM, MEMORY_DATA, memory_data->memory_data[6]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 7, PSRAM, MEMORY_DATA, memory_data->memory_data[7]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 8, PSRAM, MEMORY_DATA, memory_data->memory_data[8]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 9, PSRAM, MEMORY_DATA, memory_data->memory_data[9]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 10, PSRAM, MEMORY_DATA, memory_data->memory_data[10]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 11, PSRAM, MEMORY_DATA, memory_data->memory_data[11]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 12, PSRAM, MEMORY_DATA, memory_data->memory_data[12]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 13, PSRAM, MEMORY_DATA, memory_data->memory_data[13]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 14, PSRAM, MEMORY_DATA, memory_data->memory_data[14]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 15, PSRAM, MEMORY_DATA, memory_data->memory_data[15]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 16, PSRAM, MEMORY_DATA, memory_data->memory_data[16]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 17, PSRAM, MEMORY_DATA, memory_data->memory_data[17]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 18, PSRAM, MEMORY_DATA, memory_data->memory_data[18]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 19, PSRAM, MEMORY_DATA, memory_data->memory_data[19]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 20, PSRAM, MEMORY_DATA, memory_data->memory_data[20]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 21, PSRAM, MEMORY_DATA, memory_data->memory_data[21]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 22, PSRAM, MEMORY_DATA, memory_data->memory_data[22]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 23, PSRAM, MEMORY_DATA, memory_data->memory_data[23]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 24, PSRAM, MEMORY_DATA, memory_data->memory_data[24]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 25, PSRAM, MEMORY_DATA, memory_data->memory_data[25]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 26, PSRAM, MEMORY_DATA, memory_data->memory_data[26]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 27, PSRAM, MEMORY_DATA, memory_data->memory_data[27]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 28, PSRAM, MEMORY_DATA, memory_data->memory_data[28]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 29, PSRAM, MEMORY_DATA, memory_data->memory_data[29]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 30, PSRAM, MEMORY_DATA, memory_data->memory_data[30]); + RU_REG_RAM_WRITE(0, psram_enrty *32 + 31, PSRAM, MEMORY_DATA, memory_data->memory_data[31]); +#endif + + return BDMF_ERR_OK; +} + +bdmf_error_t ag_drv_psram_memory_data_get(uint32_t psram_enrty, psram_memory_data *memory_data) +{ + int i; +#ifdef VALIDATE_PARMS + if(!memory_data) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_PARM), BDMF_ERR_PARM); + return BDMF_ERR_PARM; + } + if((psram_enrty >= 1536)) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_RANGE), BDMF_ERR_RANGE); + return BDMF_ERR_RANGE; + } +#endif + + for (i = 0; i < 32; i++) + RU_REG_RAM_READ(0, psram_enrty *32 + i, PSRAM, MEMORY_DATA, memory_data->memory_data[i]); + +#if 0 + RU_REG_RAM_READ(0, psram_enrty *32 + 0, PSRAM, MEMORY_DATA, memory_data->memory_data[0]); + RU_REG_RAM_READ(0, psram_enrty *32 + 1, PSRAM, MEMORY_DATA, memory_data->memory_data[1]); + RU_REG_RAM_READ(0, psram_enrty *32 + 2, PSRAM, MEMORY_DATA, memory_data->memory_data[2]); + RU_REG_RAM_READ(0, psram_enrty *32 + 3, PSRAM, MEMORY_DATA, memory_data->memory_data[3]); + RU_REG_RAM_READ(0, psram_enrty *32 + 4, PSRAM, MEMORY_DATA, memory_data->memory_data[4]); + RU_REG_RAM_READ(0, psram_enrty *32 + 5, PSRAM, MEMORY_DATA, memory_data->memory_data[5]); + RU_REG_RAM_READ(0, psram_enrty *32 + 6, PSRAM, MEMORY_DATA, memory_data->memory_data[6]); + RU_REG_RAM_READ(0, psram_enrty *32 + 7, PSRAM, MEMORY_DATA, memory_data->memory_data[7]); + RU_REG_RAM_READ(0, psram_enrty *32 + 8, PSRAM, MEMORY_DATA, memory_data->memory_data[8]); + RU_REG_RAM_READ(0, psram_enrty *32 + 9, PSRAM, MEMORY_DATA, memory_data->memory_data[9]); + RU_REG_RAM_READ(0, psram_enrty *32 + 10, PSRAM, MEMORY_DATA, memory_data->memory_data[10]); + RU_REG_RAM_READ(0, psram_enrty *32 + 11, PSRAM, MEMORY_DATA, memory_data->memory_data[11]); + RU_REG_RAM_READ(0, psram_enrty *32 + 12, PSRAM, MEMORY_DATA, memory_data->memory_data[12]); + RU_REG_RAM_READ(0, psram_enrty *32 + 13, PSRAM, MEMORY_DATA, memory_data->memory_data[13]); + RU_REG_RAM_READ(0, psram_enrty *32 + 14, PSRAM, MEMORY_DATA, memory_data->memory_data[14]); + RU_REG_RAM_READ(0, psram_enrty *32 + 15, PSRAM, MEMORY_DATA, memory_data->memory_data[15]); + RU_REG_RAM_READ(0, psram_enrty *32 + 16, PSRAM, MEMORY_DATA, memory_data->memory_data[16]); + RU_REG_RAM_READ(0, psram_enrty *32 + 17, PSRAM, MEMORY_DATA, memory_data->memory_data[17]); + RU_REG_RAM_READ(0, psram_enrty *32 + 18, PSRAM, MEMORY_DATA, memory_data->memory_data[18]); + RU_REG_RAM_READ(0, psram_enrty *32 + 19, PSRAM, MEMORY_DATA, memory_data->memory_data[19]); + RU_REG_RAM_READ(0, psram_enrty *32 + 20, PSRAM, MEMORY_DATA, memory_data->memory_data[20]); + RU_REG_RAM_READ(0, psram_enrty *32 + 21, PSRAM, MEMORY_DATA, memory_data->memory_data[21]); + RU_REG_RAM_READ(0, psram_enrty *32 + 22, PSRAM, MEMORY_DATA, memory_data->memory_data[22]); + RU_REG_RAM_READ(0, psram_enrty *32 + 23, PSRAM, MEMORY_DATA, memory_data->memory_data[23]); + RU_REG_RAM_READ(0, psram_enrty *32 + 24, PSRAM, MEMORY_DATA, memory_data->memory_data[24]); + RU_REG_RAM_READ(0, psram_enrty *32 + 25, PSRAM, MEMORY_DATA, memory_data->memory_data[25]); + RU_REG_RAM_READ(0, psram_enrty *32 + 26, PSRAM, MEMORY_DATA, memory_data->memory_data[26]); + RU_REG_RAM_READ(0, psram_enrty *32 + 27, PSRAM, MEMORY_DATA, memory_data->memory_data[27]); + RU_REG_RAM_READ(0, psram_enrty *32 + 28, PSRAM, MEMORY_DATA, memory_data->memory_data[28]); + RU_REG_RAM_READ(0, psram_enrty *32 + 29, PSRAM, MEMORY_DATA, memory_data->memory_data[29]); + RU_REG_RAM_READ(0, psram_enrty *32 + 30, PSRAM, MEMORY_DATA, memory_data->memory_data[30]); + RU_REG_RAM_READ(0, psram_enrty *32 + 31, PSRAM, MEMORY_DATA, memory_data->memory_data[31]); +#endif + + return BDMF_ERR_OK; +} + diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_psram.h b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_psram.h new file mode 100644 index 0000000000..9a6dcddcfa --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_psram.h @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#ifndef _XRDP_DRV_PSRAM_H_ +#define _XRDP_DRV_PSRAM_H_ + +#include "access_macros.h" +#include "bdmf_interface.h" +#include "rdp_common.h" + + +/**************************************************************************************************/ +/* data: data - data */ +/**************************************************************************************************/ +typedef struct +{ + uint32_t memory_data[32]; +} psram_memory_data; + + +bdmf_error_t ag_drv_psram_memory_data_set(uint32_t psram_enrty, const psram_memory_data *memory_data); +bdmf_error_t ag_drv_psram_memory_data_get(uint32_t psram_enrty, psram_memory_data *memory_data); +#endif + diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_rnr_regs.c b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_rnr_regs.c new file mode 100644 index 0000000000..8b131fb4c7 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_rnr_regs.c @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#include "rdp_common.h" +#include "xrdp_drv_drivers_common_ag.h" +#include "xrdp_drv_rnr_regs.h" + +#define BLOCK_ADDR_COUNT_BITS 3 +#define BLOCK_ADDR_COUNT (1<= BLOCK_ADDR_COUNT) || + (thread_num >= _4BITS_MAX_VAL_)) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_RANGE), BDMF_ERR_RANGE); + return BDMF_ERR_RANGE; + } +#endif + + reg_cfg_cpu_wakeup = RU_FIELD_SET(rnr_id, RNR_REGS, CFG_CPU_WAKEUP, THREAD_NUM, reg_cfg_cpu_wakeup, thread_num); + + RU_REG_WRITE(rnr_id, RNR_REGS, CFG_CPU_WAKEUP, reg_cfg_cpu_wakeup); + + return BDMF_ERR_OK; +} + diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_rnr_regs.h b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_rnr_regs.h new file mode 100644 index 0000000000..17f9592bd0 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_rnr_regs.h @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#ifndef _XRDP_DRV_RNR_REGS_H_ +#define _XRDP_DRV_RNR_REGS_H_ + +#include "access_macros.h" +#include "bdmf_interface.h" +#include "rdp_common.h" + + +bdmf_error_t ag_drv_rnr_regs_cfg_cpu_wakeup_set(uint8_t rnr_id, uint8_t thread_num); + +#endif + diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_sbpm.c b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_sbpm.c new file mode 100644 index 0000000000..050daa5f99 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_sbpm.c @@ -0,0 +1,194 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#include "rdp_common.h" +#include "xrdp_drv_drivers_common_ag.h" +#include "xrdp_drv_sbpm.h" + +bdmf_error_t ag_drv_sbpm_regs_bn_alloc_set(uint8_t sa) +{ + uint32_t reg_regs_bn_alloc=0; + +#ifdef VALIDATE_PARMS + if((sa >= _6BITS_MAX_VAL_)) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_RANGE), BDMF_ERR_RANGE); + return BDMF_ERR_RANGE; + } +#endif + + reg_regs_bn_alloc = RU_FIELD_SET(0, SBPM, REGS_BN_ALLOC, SA, reg_regs_bn_alloc, sa); + + RU_REG_WRITE(0, SBPM, REGS_BN_ALLOC, reg_regs_bn_alloc); + + return BDMF_ERR_OK; +} + +bdmf_error_t ag_drv_sbpm_regs_bn_alloc_rply_get(sbpm_regs_bn_alloc_rply *regs_bn_alloc_rply) +{ + uint32_t reg_regs_bn_alloc_rply; + +#ifdef VALIDATE_PARMS + if(!regs_bn_alloc_rply) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_PARM), BDMF_ERR_PARM); + return BDMF_ERR_PARM; + } +#endif + + RU_REG_READ(0, SBPM, REGS_BN_ALLOC_RPLY, reg_regs_bn_alloc_rply); + + regs_bn_alloc_rply->alloc_bn_valid = RU_FIELD_GET(0, SBPM, REGS_BN_ALLOC_RPLY, ALLOC_BN_VALID, reg_regs_bn_alloc_rply); + regs_bn_alloc_rply->alloc_bn = RU_FIELD_GET(0, SBPM, REGS_BN_ALLOC_RPLY, ALLOC_BN, reg_regs_bn_alloc_rply); + regs_bn_alloc_rply->ack = RU_FIELD_GET(0, SBPM, REGS_BN_ALLOC_RPLY, ACK, reg_regs_bn_alloc_rply); + regs_bn_alloc_rply->nack = RU_FIELD_GET(0, SBPM, REGS_BN_ALLOC_RPLY, NACK, reg_regs_bn_alloc_rply); + regs_bn_alloc_rply->excl_high = RU_FIELD_GET(0, SBPM, REGS_BN_ALLOC_RPLY, EXCL_HIGH, reg_regs_bn_alloc_rply); + regs_bn_alloc_rply->excl_low = RU_FIELD_GET(0, SBPM, REGS_BN_ALLOC_RPLY, EXCL_LOW, reg_regs_bn_alloc_rply); + regs_bn_alloc_rply->busy = RU_FIELD_GET(0, SBPM, REGS_BN_ALLOC_RPLY, BUSY, reg_regs_bn_alloc_rply); + regs_bn_alloc_rply->rdy = RU_FIELD_GET(0, SBPM, REGS_BN_ALLOC_RPLY, RDY, reg_regs_bn_alloc_rply); + + return BDMF_ERR_OK; +} + +bdmf_error_t ag_drv_sbpm_regs_bn_connect_set(uint16_t bn, bdmf_boolean ack_req, bdmf_boolean wr_req, uint16_t pointed_bn) +{ + uint32_t reg_regs_bn_connect=0; + +#ifdef VALIDATE_PARMS + if((bn >= _14BITS_MAX_VAL_) || + (ack_req >= _1BITS_MAX_VAL_) || + (wr_req >= _1BITS_MAX_VAL_) || + (pointed_bn >= _14BITS_MAX_VAL_)) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_RANGE), BDMF_ERR_RANGE); + return BDMF_ERR_RANGE; + } +#endif + + reg_regs_bn_connect = RU_FIELD_SET(0, SBPM, REGS_BN_CONNECT, BN, reg_regs_bn_connect, bn); + reg_regs_bn_connect = RU_FIELD_SET(0, SBPM, REGS_BN_CONNECT, ACK_REQ, reg_regs_bn_connect, ack_req); + reg_regs_bn_connect = RU_FIELD_SET(0, SBPM, REGS_BN_CONNECT, WR_REQ, reg_regs_bn_connect, wr_req); + reg_regs_bn_connect = RU_FIELD_SET(0, SBPM, REGS_BN_CONNECT, POINTED_BN, reg_regs_bn_connect, pointed_bn); + + RU_REG_WRITE(0, SBPM, REGS_BN_CONNECT, reg_regs_bn_connect); + + return BDMF_ERR_OK; +} + +bdmf_error_t ag_drv_sbpm_regs_bn_connect_rply_get(bdmf_boolean *connect_ack, bdmf_boolean *busy, bdmf_boolean *rdy) +{ + uint32_t reg_regs_bn_connect_rply; + +#ifdef VALIDATE_PARMS + if(!connect_ack || !busy || !rdy) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_PARM), BDMF_ERR_PARM); + return BDMF_ERR_PARM; + } +#endif + + RU_REG_READ(0, SBPM, REGS_BN_CONNECT_RPLY, reg_regs_bn_connect_rply); + + *connect_ack = RU_FIELD_GET(0, SBPM, REGS_BN_CONNECT_RPLY, CONNECT_ACK, reg_regs_bn_connect_rply); + *busy = RU_FIELD_GET(0, SBPM, REGS_BN_CONNECT_RPLY, BUSY, reg_regs_bn_connect_rply); + *rdy = RU_FIELD_GET(0, SBPM, REGS_BN_CONNECT_RPLY, RDY, reg_regs_bn_connect_rply); + + return BDMF_ERR_OK; +} + +bdmf_error_t ag_drv_sbpm_regs_get_next_set(uint16_t bn) +{ + uint32_t reg_regs_get_next=0; + +#ifdef VALIDATE_PARMS + if((bn >= _14BITS_MAX_VAL_)) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_RANGE), BDMF_ERR_RANGE); + return BDMF_ERR_RANGE; + } +#endif + + reg_regs_get_next = RU_FIELD_SET(0, SBPM, REGS_GET_NEXT, BN, reg_regs_get_next, bn); + + RU_REG_WRITE(0, SBPM, REGS_GET_NEXT, reg_regs_get_next); + + return BDMF_ERR_OK; +} + +bdmf_error_t ag_drv_sbpm_regs_get_next_rply_get(sbpm_regs_get_next_rply *regs_get_next_rply) +{ + uint32_t reg_regs_get_next_rply; + +#ifdef VALIDATE_PARMS + if(!regs_get_next_rply) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_PARM), BDMF_ERR_PARM); + return BDMF_ERR_PARM; + } +#endif + + RU_REG_READ(0, SBPM, REGS_GET_NEXT_RPLY, reg_regs_get_next_rply); + + regs_get_next_rply->bn_valid = RU_FIELD_GET(0, SBPM, REGS_GET_NEXT_RPLY, BN_VALID, reg_regs_get_next_rply); + regs_get_next_rply->next_bn = RU_FIELD_GET(0, SBPM, REGS_GET_NEXT_RPLY, NEXT_BN, reg_regs_get_next_rply); + regs_get_next_rply->bn_null = RU_FIELD_GET(0, SBPM, REGS_GET_NEXT_RPLY, BN_NULL, reg_regs_get_next_rply); + regs_get_next_rply->mcnt_val = RU_FIELD_GET(0, SBPM, REGS_GET_NEXT_RPLY, MCNT_VAL, reg_regs_get_next_rply); + regs_get_next_rply->busy = RU_FIELD_GET(0, SBPM, REGS_GET_NEXT_RPLY, BUSY, reg_regs_get_next_rply); + regs_get_next_rply->rdy = RU_FIELD_GET(0, SBPM, REGS_GET_NEXT_RPLY, RDY, reg_regs_get_next_rply); + + return BDMF_ERR_OK; +} + +bdmf_error_t ag_drv_sbpm_regs_bn_free_without_contxt_set(uint16_t head_bn, uint8_t sa, bdmf_boolean ack_req) +{ + uint32_t reg_regs_bn_free_without_contxt=0; + +#ifdef VALIDATE_PARMS + if((head_bn >= _14BITS_MAX_VAL_) || + (sa >= _6BITS_MAX_VAL_) || + (ack_req >= _1BITS_MAX_VAL_)) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_RANGE), BDMF_ERR_RANGE); + return BDMF_ERR_RANGE; + } +#endif + + reg_regs_bn_free_without_contxt = RU_FIELD_SET(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT, HEAD_BN, reg_regs_bn_free_without_contxt, head_bn); + reg_regs_bn_free_without_contxt = RU_FIELD_SET(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT, SA, reg_regs_bn_free_without_contxt, sa); + reg_regs_bn_free_without_contxt = RU_FIELD_SET(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT, ACK_REQ, reg_regs_bn_free_without_contxt, ack_req); + + RU_REG_WRITE(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT, reg_regs_bn_free_without_contxt); + + return BDMF_ERR_OK; +} + +bdmf_error_t ag_drv_sbpm_regs_bn_free_without_contxt_rply_get(sbpm_regs_bn_free_without_contxt_rply *regs_bn_free_without_contxt_rply) +{ + uint32_t reg_regs_bn_free_without_contxt_rply; + +#ifdef VALIDATE_PARMS + if(!regs_bn_free_without_contxt_rply) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_PARM), BDMF_ERR_PARM); + return BDMF_ERR_PARM; + } +#endif + + RU_REG_READ(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT_RPLY, reg_regs_bn_free_without_contxt_rply); + + regs_bn_free_without_contxt_rply->free_ack = RU_FIELD_GET(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT_RPLY, FREE_ACK, reg_regs_bn_free_without_contxt_rply); + regs_bn_free_without_contxt_rply->ack_stat = RU_FIELD_GET(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT_RPLY, ACK_STAT, reg_regs_bn_free_without_contxt_rply); + regs_bn_free_without_contxt_rply->nack_stat = RU_FIELD_GET(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT_RPLY, NACK_STAT, reg_regs_bn_free_without_contxt_rply); + regs_bn_free_without_contxt_rply->excl_high_stat = RU_FIELD_GET(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT_RPLY, EXCL_HIGH_STAT, reg_regs_bn_free_without_contxt_rply); + regs_bn_free_without_contxt_rply->excl_low_stat = RU_FIELD_GET(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT_RPLY, EXCL_LOW_STAT, reg_regs_bn_free_without_contxt_rply); + regs_bn_free_without_contxt_rply->bsy = RU_FIELD_GET(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT_RPLY, BSY, reg_regs_bn_free_without_contxt_rply); + regs_bn_free_without_contxt_rply->rdy = RU_FIELD_GET(0, SBPM, REGS_BN_FREE_WITHOUT_CONTXT_RPLY, RDY, reg_regs_bn_free_without_contxt_rply); + + return BDMF_ERR_OK; +} + diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_sbpm.h b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_sbpm.h new file mode 100644 index 0000000000..168ab9f320 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_sbpm.h @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#ifndef _XRDP_DRV_SBPM_H_ +#define _XRDP_DRV_SBPM_H_ + +#include "access_macros.h" +#include "bdmf_interface.h" +#include "rdp_common.h" + + +/**************************************************************************************************/ +/* alloc_bn_valid: alloc_bn_valid - alloc_bn_valid */ +/* alloc_bn: alloc_bn - alloc_bn */ +/* ack: ack - ack */ +/* nack: nack - nack */ +/* excl_high: excl_high - Exclusive bit is indication of Exclusive_high status of client with rel */ +/* ated Alloc request */ +/* excl_low: excl_low - Exclusive bit is indication of Exclusive_low status of client with relate */ +/* d Alloc request */ +/* busy: busy - busy */ +/* rdy: rdy - rdy */ +/**************************************************************************************************/ +typedef struct +{ + bdmf_boolean alloc_bn_valid; + uint16_t alloc_bn; + bdmf_boolean ack; + bdmf_boolean nack; + bdmf_boolean excl_high; + bdmf_boolean excl_low; + bdmf_boolean busy; + bdmf_boolean rdy; +} sbpm_regs_bn_alloc_rply; + + +/**************************************************************************************************/ +/* bn_valid: bn_valid - Used for validation of Next BN reply */ +/* next_bn: next_bn - Next BN - reply of Get_next command */ +/* bn_null: bn_null - Next BN is null indication */ +/* mcnt_val: mcnt_val - mcst cnt val */ +/* busy: busy - Get Next command is busy */ +/* rdy: rdy - Get Next command is ready */ +/**************************************************************************************************/ +typedef struct +{ + bdmf_boolean bn_valid; + uint16_t next_bn; + bdmf_boolean bn_null; + uint8_t mcnt_val; + bdmf_boolean busy; + bdmf_boolean rdy; +} sbpm_regs_get_next_rply; + + +/**************************************************************************************************/ +/* free_ack: free_ack - Acknowledge on Free command */ +/* ack_stat: ack_stat - ACK status of CPU */ +/* nack_stat: nack_stat - NACK status of CPU */ +/* excl_high_stat: excl_high_stat - Exclusive_high status of CPU */ +/* excl_low_stat: excl_low_stat - Exclusive_low status of CPU */ +/* bsy: bsy - Busy bit of command (command is currently in execution) */ +/* rdy: rdy - Ready bit of command (ready for new command execution) */ +/**************************************************************************************************/ +typedef struct +{ + bdmf_boolean free_ack; + bdmf_boolean ack_stat; + bdmf_boolean nack_stat; + bdmf_boolean excl_high_stat; + bdmf_boolean excl_low_stat; + bdmf_boolean bsy; + bdmf_boolean rdy; +} sbpm_regs_bn_free_without_contxt_rply; + + +bdmf_error_t ag_drv_sbpm_regs_bn_alloc_set(uint8_t sa); +bdmf_error_t ag_drv_sbpm_regs_bn_alloc_rply_get( + sbpm_regs_bn_alloc_rply *regs_bn_alloc_rply); +bdmf_error_t ag_drv_sbpm_regs_bn_connect_set(uint16_t bn, bdmf_boolean ack_req, + bdmf_boolean wr_req, uint16_t pointed_bn); +bdmf_error_t ag_drv_sbpm_regs_bn_connect_rply_get(bdmf_boolean *connect_ack, + bdmf_boolean *busy, bdmf_boolean *rdy); +bdmf_error_t ag_drv_sbpm_regs_get_next_set(uint16_t bn); +bdmf_error_t ag_drv_sbpm_regs_get_next_rply_get( + sbpm_regs_get_next_rply *regs_get_next_rply); +bdmf_error_t ag_drv_sbpm_regs_bn_free_without_contxt_set(uint16_t head_bn, + uint8_t sa, bdmf_boolean ack_req); +bdmf_error_t ag_drv_sbpm_regs_bn_free_without_contxt_rply_get( + sbpm_regs_bn_free_without_contxt_rply *regs_bn_free_without_contxt_rply); + +#endif + diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_unimac_rdp.c b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_unimac_rdp.c new file mode 100644 index 0000000000..a0bbb7c6d3 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_unimac_rdp.c @@ -0,0 +1,148 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#include "rdp_common.h" +#include "xrdp_drv_drivers_common_ag.h" +#include "xrdp_drv_unimac_rdp.h" + +#define BLOCK_ADDR_COUNT_BITS 3 +#define BLOCK_ADDR_COUNT (1<= BLOCK_ADDR_COUNT) || + (command_config->runt_filter_dis >= _1BITS_MAX_VAL_) || + (command_config->oob_efc_disab >= _1BITS_MAX_VAL_) || + (command_config->ignore_tx_pause >= _1BITS_MAX_VAL_) || + (command_config->fd_tx_urun_fix_en >= _1BITS_MAX_VAL_) || + (command_config->line_loopback >= _1BITS_MAX_VAL_) || + (command_config->no_lgth_check >= _1BITS_MAX_VAL_) || + (command_config->cntl_frm_ena >= _1BITS_MAX_VAL_) || + (command_config->ena_ext_config >= _1BITS_MAX_VAL_) || + (command_config->en_internal_tx_crs >= _1BITS_MAX_VAL_) || + (command_config->bypass_oob_efc_synchronizer >= _1BITS_MAX_VAL_) || + (command_config->oob_efc_mode >= _1BITS_MAX_VAL_) || + (command_config->sw_override_rx >= _1BITS_MAX_VAL_) || + (command_config->sw_override_tx >= _1BITS_MAX_VAL_) || + (command_config->mac_loop_con >= _1BITS_MAX_VAL_) || + (command_config->loop_ena >= _1BITS_MAX_VAL_) || + (command_config->fcs_corrupt_urun_en >= _1BITS_MAX_VAL_) || + (command_config->sw_reset >= _1BITS_MAX_VAL_) || + (command_config->overflow_en >= _1BITS_MAX_VAL_) || + (command_config->rx_low_latency_en >= _1BITS_MAX_VAL_) || + (command_config->hd_ena >= _1BITS_MAX_VAL_) || + (command_config->tx_addr_ins >= _1BITS_MAX_VAL_) || + (command_config->pause_ignore >= _1BITS_MAX_VAL_) || + (command_config->pause_fwd >= _1BITS_MAX_VAL_) || + (command_config->crc_fwd >= _1BITS_MAX_VAL_) || + (command_config->pad_en >= _1BITS_MAX_VAL_) || + (command_config->promis_en >= _1BITS_MAX_VAL_) || + (command_config->eth_speed >= _2BITS_MAX_VAL_) || + (command_config->rx_ena >= _1BITS_MAX_VAL_) || + (command_config->tx_ena >= _1BITS_MAX_VAL_)) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_RANGE), BDMF_ERR_RANGE); + return BDMF_ERR_RANGE; + } +#endif + + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, RUNT_FILTER_DIS, reg_command_config, command_config->runt_filter_dis); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, OOB_EFC_DISAB, reg_command_config, command_config->oob_efc_disab); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, IGNORE_TX_PAUSE, reg_command_config, command_config->ignore_tx_pause); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, FD_TX_URUN_FIX_EN, reg_command_config, command_config->fd_tx_urun_fix_en); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, LINE_LOOPBACK, reg_command_config, command_config->line_loopback); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, NO_LGTH_CHECK, reg_command_config, command_config->no_lgth_check); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, CNTL_FRM_ENA, reg_command_config, command_config->cntl_frm_ena); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, ENA_EXT_CONFIG, reg_command_config, command_config->ena_ext_config); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, EN_INTERNAL_TX_CRS, reg_command_config, command_config->en_internal_tx_crs); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, BYPASS_OOB_EFC_SYNCHRONIZER, reg_command_config, command_config->bypass_oob_efc_synchronizer); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, OOB_EFC_MODE, reg_command_config, command_config->oob_efc_mode); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, SW_OVERRIDE_RX, reg_command_config, command_config->sw_override_rx); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, SW_OVERRIDE_TX, reg_command_config, command_config->sw_override_tx); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, MAC_LOOP_CON, reg_command_config, command_config->mac_loop_con); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, LOOP_ENA, reg_command_config, command_config->loop_ena); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, FCS_CORRUPT_URUN_EN, reg_command_config, command_config->fcs_corrupt_urun_en); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, SW_RESET, reg_command_config, command_config->sw_reset); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, OVERFLOW_EN, reg_command_config, command_config->overflow_en); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, RX_LOW_LATENCY_EN, reg_command_config, command_config->rx_low_latency_en); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, HD_ENA, reg_command_config, command_config->hd_ena); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, TX_ADDR_INS, reg_command_config, command_config->tx_addr_ins); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, PAUSE_IGNORE, reg_command_config, command_config->pause_ignore); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, PAUSE_FWD, reg_command_config, command_config->pause_fwd); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, CRC_FWD, reg_command_config, command_config->crc_fwd); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, PAD_EN, reg_command_config, command_config->pad_en); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, PROMIS_EN, reg_command_config, command_config->promis_en); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, ETH_SPEED, reg_command_config, command_config->eth_speed); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, RX_ENA, reg_command_config, command_config->rx_ena); + reg_command_config = RU_FIELD_SET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, TX_ENA, reg_command_config, command_config->tx_ena); + + RU_REG_WRITE(umac_id, UNIMAC_RDP, COMMAND_CONFIG, reg_command_config); + + return BDMF_ERR_OK; +} + +bdmf_error_t ag_drv_unimac_rdp_command_config_get(uint8_t umac_id, unimac_rdp_command_config *command_config) +{ + uint32_t reg_command_config; + +#ifdef VALIDATE_PARMS + if(!command_config) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_PARM), BDMF_ERR_PARM); + return BDMF_ERR_PARM; + } + if((umac_id >= BLOCK_ADDR_COUNT)) + { + bdmf_trace("ERROR driver %s:%u| err=%s (%d)\n", __FILE__, __LINE__, bdmf_strerror(BDMF_ERR_RANGE), BDMF_ERR_RANGE); + return BDMF_ERR_RANGE; + } +#endif + + RU_REG_READ(umac_id, UNIMAC_RDP, COMMAND_CONFIG, reg_command_config); + + command_config->runt_filter_dis = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, RUNT_FILTER_DIS, reg_command_config); + command_config->oob_efc_disab = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, OOB_EFC_DISAB, reg_command_config); + command_config->ignore_tx_pause = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, IGNORE_TX_PAUSE, reg_command_config); + command_config->fd_tx_urun_fix_en = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, FD_TX_URUN_FIX_EN, reg_command_config); + command_config->line_loopback = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, LINE_LOOPBACK, reg_command_config); + command_config->no_lgth_check = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, NO_LGTH_CHECK, reg_command_config); + command_config->cntl_frm_ena = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, CNTL_FRM_ENA, reg_command_config); + command_config->ena_ext_config = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, ENA_EXT_CONFIG, reg_command_config); + command_config->en_internal_tx_crs = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, EN_INTERNAL_TX_CRS, reg_command_config); + command_config->bypass_oob_efc_synchronizer = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, BYPASS_OOB_EFC_SYNCHRONIZER, reg_command_config); + command_config->oob_efc_mode = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, OOB_EFC_MODE, reg_command_config); + command_config->sw_override_rx = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, SW_OVERRIDE_RX, reg_command_config); + command_config->sw_override_tx = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, SW_OVERRIDE_TX, reg_command_config); + command_config->mac_loop_con = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, MAC_LOOP_CON, reg_command_config); + command_config->loop_ena = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, LOOP_ENA, reg_command_config); + command_config->fcs_corrupt_urun_en = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, FCS_CORRUPT_URUN_EN, reg_command_config); + command_config->sw_reset = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, SW_RESET, reg_command_config); + command_config->overflow_en = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, OVERFLOW_EN, reg_command_config); + command_config->rx_low_latency_en = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, RX_LOW_LATENCY_EN, reg_command_config); + command_config->hd_ena = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, HD_ENA, reg_command_config); + command_config->tx_addr_ins = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, TX_ADDR_INS, reg_command_config); + command_config->pause_ignore = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, PAUSE_IGNORE, reg_command_config); + command_config->pause_fwd = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, PAUSE_FWD, reg_command_config); + command_config->crc_fwd = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, CRC_FWD, reg_command_config); + command_config->pad_en = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, PAD_EN, reg_command_config); + command_config->promis_en = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, PROMIS_EN, reg_command_config); + command_config->eth_speed = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, ETH_SPEED, reg_command_config); + command_config->rx_ena = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, RX_ENA, reg_command_config); + command_config->tx_ena = RU_FIELD_GET(umac_id, UNIMAC_RDP, COMMAND_CONFIG, TX_ENA, reg_command_config); + + return BDMF_ERR_OK; +} + diff --git a/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_unimac_rdp.h b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_unimac_rdp.h new file mode 100644 index 0000000000..cb63043224 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bcm63146/xrdp_drv_unimac_rdp.h @@ -0,0 +1,203 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom + All Rights Reserved + + +*/ + +#ifndef _XRDP_DRV_UNIMAC_RDP_H_ +#define _XRDP_DRV_UNIMAC_RDP_H_ + +#include "access_macros.h" +#include "bdmf_interface.h" +#include "rdp_common.h" + + +/**************************************************************************************************/ +/* runt_filter_dis: - When set, disable runt filtering. */ +/* oob_efc_disab: - When this bit is set, out-of-band egress flow control will be disabled. When */ +/* this bit is 0 (out-of-band egress flow control enabled) and input pin ext_tx_f */ +/* low_control is 1, frame transmissions may be stopped - see OOB_EFC_MODE for det */ +/* ails. +Out-of-band egress flow control operation is similar to halting the trans */ +/* mit datapath due to reception of a Pause Frame with a non-zero timer value. Thi */ +/* s bit however has no effect on regular Rx Pause Frame based egress flow control */ +/* . */ +/* ignore_tx_pause: - Ignores the back pressure signaling from the system and hence no Tx pause */ +/* generation, when set. */ +/* fd_tx_urun_fix_en: - Tx Underflow detection can be improved by accounting for residue bytes i */ +/* n 128b to 8b convertor. The fix is valid only for full duplex mode and can */ +/* be enabled by setting this bit. */ +/* line_loopback: - Enable Line Loopback i.e. MAC FIFO side loopback (RX to TX) when set to '1', */ +/* normal operation when set to '0' (Reset value). */ +/* no_lgth_check: - Payload Length Check Disable. When set to '0', the Core checks the frame's p */ +/* ayload length with the Frame +Length/Type field, when set to '1'(Reset value), t */ +/* he payload length check is disabled. */ +/* cntl_frm_ena: - MAC Control Frame Enable. When set to '1', MAC Control frames with any +Opcod */ +/* e other than 0x0001 are accepted and forward to the Client interface. +When set */ +/* to '0' (Reset value), MAC Control frames with any Opcode other +than 0x0001 are */ +/* silently discarded. */ +/* ena_ext_config: - Enable Configuration with External Pins. When set to '0' (Reset value) +the */ +/* Core speed and Mode is programmed with the register bits ETH_SPEED(1:0) +and */ +/* HD_ENA. When set to '1', the Core is configured with the pins +set_speed(1:0) */ +/* and set_duplex. */ +/* en_internal_tx_crs: - If enabled, then CRS input to Unimac is ORed with tds[8] (tx data valid */ +/* output). This is helpful when TX CRS is disabled inside PHY. */ +/* bypass_oob_efc_synchronizer: - 1=> bypass the OOB external flow control signal synchronizer, */ +/* to e.g. reduce latency. In this case it is assumed/required that */ +/* Unimac input ext_tx_flow_control is already in tx_clk clock domai */ +/* n (so there is no need to synchronize it) +0=> locally synchronize */ +/* the OOB egress flow control signal to tx_clk. In this case it is */ +/* assumed/required that ext_tx_flow_control is glitchless (e.g. re */ +/* gistered in its native clock domain). */ +/* oob_efc_mode: - 0=> strict/full OOB egress backpressure mode: +- pause frames and PFC frames, */ +/* as well as regular packets, are all affected by Unimac input ext_tx_flow_control */ +/* , as long as OOB_EFC_DISAB is 0 +- in this mode, OOB backpressure will be active */ +/* as long as ext_tx_flow_control is asserted and i_oob_efc_disab is 0, regardless */ +/* of whether the MAC operates in half duplex mode or full duplex mode +1=> legacy m */ +/* ode: +- ext_tx_flow_control does not affect (does not prevent) transmission of Pa */ +/* use and PFC frames, i.e. in this mode OOB egress backpressure may only affect tr */ +/* ansmission of regular packets +- OOB egress backpressure is fully disabled (ignor */ +/* ed) when the MAC operates in half duplex mode. */ +/* sw_override_rx: - If set, enables the SW programmed Rx pause capability config bits to overwr */ +/* ite the auto negotiated Rx pause capabilities when ena_ext_config (autoconfig) */ +/* is set. +If cleared, and when ena_ext_config (autoconfig) is set, then SW prog */ +/* rammed Rx pause capability config bits has no effect over auto negotiated capa */ +/* bilities. */ +/* sw_override_tx: - If set, enables the SW programmed Tx pause capability config bits to overwr */ +/* ite the auto negotiated Tx pause capabilities when ena_ext_config (autoconfig) */ +/* is set. +If cleared, and when ena_ext_config (autoconfig) is set, then SW prog */ +/* rammed Tx pause capability config bits has no effect over auto negotiated capa */ +/* bilities. */ +/* mac_loop_con: - Transmit packets to PHY while in MAC local loopback, when set to '1', otherwi */ +/* se transmit to PHY is disabled (normal operation), +when set to '0' (Reset value) */ +/* . */ +/* loop_ena: - Enable GMII/MII loopback (TX to RX) when set to '1', normal operation when set to */ +/* '0' (Reset value). */ +/* fcs_corrupt_urun_en: - Corrupt Tx FCS, on underrun, when set to '1', No FCS corruption when s */ +/* et to '0' (Reset value). */ +/* sw_reset: - Software Reset Command. When asserted, the TX and RX are +disabled. Config regist */ +/* ers are not affected by sw reset. Write a 0 to de-assert the sw reset. */ +/* overflow_en: - If set, enables Rx FIFO overflow logic. In this case, the RXFIFO_STAT[1] regis */ +/* ter bit is not operational (always set to 0). +If cleared, disables RX FIFO overfl */ +/* ow logic. In this case, the RXFIFO_STAT[1] register bit is operational (Sticky se */ +/* t when overrun occurs, clearable only by SW_Reset). */ +/* rx_low_latency_en: - This works only when runt filter is disabled. It reduces the receive lat */ +/* ency by 48 MAC clock time. */ +/* hd_ena: - Half duplex enable. When set to '1', enables half duplex mode, when set +to '0', th */ +/* e MAC operates in full duplex mode. +Ignored at ethernet speeds 1G/2.5G or when the reg */ +/* ister ENA_EXT_CONFIG is set to '1'. */ +/* tx_addr_ins: - Set MAC address on transmit. If enabled (Set to '1') the MAC overwrites +the s */ +/* ource MAC address with the programmed MAC address in registers MAC_0 +and MAC_1. */ +/* If disabled (Set to reset value '0'), the source MAC address +received from the t */ +/* ransmit application transmitted is not modified by the MAC. */ +/* pause_ignore: - Ignore Pause Frame Quanta. If enabled (Set to '1') received pause frames +are */ +/* ignored by the MAC. When disabled (Set to reset value '0') the transmit +proces */ +/* s is stopped for the amount of time specified in the pause quanta +received with */ +/* in the pause frame. */ +/* pause_fwd: - Terminate/Forward Pause Frames. If enabled (Set to '1') pause frames are +forwar */ +/* ded to the user application. If disabled (Set to reset value '0'), +pause frames a */ +/* re terminated and discarded in the MAC. */ +/* crc_fwd: - Terminate/Forward Received CRC. If enabled (1) the CRC field of received +frames a */ +/* re transmitted to the user application. +If disabled (Set to reset value '0') the CRC */ +/* field is stripped from the frame. +Note: If padding function (bit PAD_EN set to '1') i */ +/* s enabled. CRC_FWD is +ignored and the CRC field is checked and always terminated and */ +/* removed. */ +/* pad_en: - Enable/Disable Frame Padding. If enabled (Set to '1'), then padding is removed from */ +/* the received frame before it is transmitted to the user +application. If disabled (set */ +/* to reset value '0'), then no padding is removed on receive by the MAC. +This bit has */ +/* no effect on Tx padding and hence Transmit always pad runts to guarantee a minimum fra */ +/* me size of 64 octets. */ +/* promis_en: - Enable/Disable MAC promiscuous operation. When asserted (Set to '1'), +all frame */ +/* s are received without Unicast address filtering. */ +/* eth_speed: - Set MAC speed. Ignored when the register bit ENA_EXT_CONFIG is set to '1'. When */ +/* the Register bit ENA_EXT_CONFIG is set to '0', used to set the core mode of operat */ +/* ion: 00: Enable 10Mbps Ethernet mode 01: Enable 100Mbps Ethernet mode 10: Enable Gi */ +/* gabit Ethernet mode 11: Enable 2.5Gigabit Ethernet mode */ +/* rx_ena: - Enable/Disable MAC receive path. When set to '0' (Reset value), the MAC +receive fu */ +/* nction is disable. When set to '1', the MAC receive function is enabled. */ +/* tx_ena: - Enable/Disable MAC transmit path for data packets & pause/pfc packets sent in the n */ +/* ormal data path. +Pause/pfc packets generated internally are allowed if ignore_tx_pause */ +/* is not set. When set to '0' (Reset value), the MAC +transmit function is disable. Wh */ +/* en set to '1', the MAC transmit function is enabled. */ +/**************************************************************************************************/ +typedef struct +{ + bdmf_boolean runt_filter_dis; + bdmf_boolean oob_efc_disab; + bdmf_boolean ignore_tx_pause; + bdmf_boolean fd_tx_urun_fix_en; + bdmf_boolean line_loopback; + bdmf_boolean no_lgth_check; + bdmf_boolean cntl_frm_ena; + bdmf_boolean ena_ext_config; + bdmf_boolean en_internal_tx_crs; + bdmf_boolean bypass_oob_efc_synchronizer; + bdmf_boolean oob_efc_mode; + bdmf_boolean sw_override_rx; + bdmf_boolean sw_override_tx; + bdmf_boolean mac_loop_con; + bdmf_boolean loop_ena; + bdmf_boolean fcs_corrupt_urun_en; + bdmf_boolean sw_reset; + bdmf_boolean overflow_en; + bdmf_boolean rx_low_latency_en; + bdmf_boolean hd_ena; + bdmf_boolean tx_addr_ins; + bdmf_boolean pause_ignore; + bdmf_boolean pause_fwd; + bdmf_boolean crc_fwd; + bdmf_boolean pad_en; + bdmf_boolean promis_en; + uint8_t eth_speed; + bdmf_boolean rx_ena; + bdmf_boolean tx_ena; +} unimac_rdp_command_config; + + +bdmf_error_t ag_drv_unimac_rdp_command_config_set(uint8_t umac_id, + const unimac_rdp_command_config *command_config); +bdmf_error_t ag_drv_unimac_rdp_command_config_get(uint8_t umac_id, + unimac_rdp_command_config *command_config); + +#endif + diff --git a/arch/arm/mach-bcmbca/xrdp/bdmf_data_types.h b/arch/arm/mach-bcmbca/xrdp/bdmf_data_types.h new file mode 100644 index 0000000000..69f5ad6a0e --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bdmf_data_types.h @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* + * + */ + +/******************************************************************** + * bdmf_types.h + * + * Broadcom Device Management Framework - built-in attribute types + * + ********************************************************************/ + + +#ifndef BDMF_DATA_TYPES_H_ +#define BDMF_DATA_TYPES_H_ +#include + +/* Signed integer */ +typedef int64_t bdmf_number; + +/* Index. Signed to allow special values. Long enough to enable + * casting to pointer */ + +typedef long bdmf_index; +typedef unsigned long bdmf_ptr; + +#define BDMF_INDEX_UNASSIGNED (-1) /*< "Unassigned" bdmf_index value */ +#define BDMF_INDEX_ANY (-2) /*< "Any" bdmf_index value */ + +/* String */ +typedef char *bdmf_string; + +/* Ethernet address */ +typedef struct { + uint8_t b[6]; /*< Address bytes */ +} bdmf_mac_t; + +/* Check if MAC address is zero + * param[in] ip IP address + */ +static inline int bdmf_mac_is_zero(const bdmf_mac_t *mac) +{ + return (!mac->b[0] && !mac->b[1] && !mac->b[2] && + !mac->b[3] && !mac->b[4] && !mac->b[5]); +} + +/* Enumeration value */ +typedef long bdmf_enum; + +/* Boolean value */ +typedef char bdmf_boolean; + +/* IP address family */ +typedef enum { + bdmf_ip_family_ipv4, + bdmf_ip_family_ipv6 +} bdmf_ip_family; + +/* IPv4 address */ +typedef uint32_t bdmf_ipv4; + +/* IPv6 address */ +typedef struct { + uint8_t data[16]; +} bdmf_ipv6_t; + +/* IPv4 or IPv6 address */ +typedef struct { + bdmf_ip_family family; /*< Address family: IPv4 / IPv6 */ + union { + bdmf_ipv4 ipv4; /*< IPv4 address */ + bdmf_ipv6_t ipv6; /*< IPv6 address */ + } addr; +} bdmf_ip_t; + +/* Check if IPv6 address is zero + * param[in] ip IPv6 address + */ +static inline int bdmf_ipv6_is_zero(const bdmf_ipv6_t *ipv6) +{ + uint32_t *ipv6_as_int = (uint32_t *)ipv6; + return (!ipv6_as_int[0] && !ipv6_as_int[1] && + !ipv6_as_int[2] && !ipv6_as_int[3]); +} + +/* Check if IP address is zero + * param[in] ip IP address + */ +static inline int bdmf_ip_is_zero(const bdmf_ip_t *ip) +{ + if (ip->family == bdmf_ip_family_ipv4) + return !ip->addr.ipv4; + return bdmf_ipv6_is_zero(&ip->addr.ipv6); +} + +/* Compare IP addresses + * param[in] ip IP address + * param[in] ip2 IP address + */ +static inline int bdmf_ip_cmp(const bdmf_ip_t *ip, const bdmf_ip_t *ip2) +{ + uint32_t *ipv6_as_int, *ipv6_as_int2; + + if (ip->family != ip2->family) + return -1; + if (ip->family == bdmf_ip_family_ipv4) + return ip->addr.ipv4 != ip2->addr.ipv4; + + ipv6_as_int = (uint32_t *)&ip->addr.ipv6; + ipv6_as_int2 = (uint32_t *)&ip2->addr.ipv6; + return (!(ipv6_as_int[0] == ipv6_as_int2[0] && + ipv6_as_int[1] == ipv6_as_int2[1] && + ipv6_as_int[2] == ipv6_as_int2[2] && + ipv6_as_int[3] == ipv6_as_int2[3])); +} + +#if defined(CONFIG_PHYS_64BIT) +typedef uint64_t bdmf_phys_addr_t; +#else +typedef uint32_t bdmf_phys_addr_t; +#endif + +#endif /* BDMF_DATA_TYPES_H_ */ diff --git a/arch/arm/mach-bcmbca/xrdp/bdmf_errno.h b/arch/arm/mach-bcmbca/xrdp/bdmf_errno.h new file mode 100644 index 0000000000..cc159a96c0 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bdmf_errno.h @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* + * + */ + +/******************************************************************* + * bdmf_errno.h + * + * BDMF framework - generic error codes + *******************************************************************/ + +#ifndef BDMF_ERRNO_H +#define BDMF_ERRNO_H + +/* Generic error codes */ +typedef enum { + BDMF_ERR_OK = 0, /**< OK */ + BDMF_ERR_PARM = -1, /**< Error in parameters */ + BDMF_ERR_NOMEM = -2, /**< No memory */ + BDMF_ERR_NORES = -3, /**< No resources */ + BDMF_ERR_INTERNAL = -4, /**< Internal error */ + BDMF_ERR_NOENT = -5, /**< Entry doesn't exist */ + BDMF_ERR_NODEV = -6, /**< Device doesn't exist */ + BDMF_ERR_ALREADY = -7, /**< Entry already exists */ + BDMF_ERR_RANGE = -8, /**< Out of range */ + BDMF_ERR_PERM = -9, /**< No permission to perform an operation */ + BDMF_ERR_NOT_SUPPORTED = -10, /**< Operation is not supported */ + BDMF_ERR_PARSE = -11, /**< Parsing error */ + BDMF_ERR_INVALID_OP = -12, /**< Invalid operation */ + BDMF_ERR_IO = -13, /**< I/O error */ + BDMF_ERR_STATE = -14, /**< Object is in bad state */ + BDMF_ERR_DELETED = -15, /**< Object is deleted */ + BDMF_ERR_TOO_MANY = -16, /**< Too many objects */ + BDMF_ERR_NOT_LINKED = -17, /**< Objects are not linked */ + BDMF_ERR_NO_MORE = -18, /**< No more entries */ + BDMF_ERR_OVERFLOW = -19, /**< Buffer overflow */ + BDMF_ERR_COMM_FAIL = -20, /**< Communication failure */ + BDMF_ERR_NOT_CONNECTED = -21, /**< No connection with the target system */ + BDMF_ERR_SYSCALL_ERR = -22, /**< System call returned error */ + BDMF_ERR_MSG_ERROR = -23, /**< Received message is insane */ + BDMF_ERR_TOO_MANY_REQS = -24, /**< Too many outstanding requests */ + BDMF_ERR_NO_MSG_SERVER = -25, /**< Remote delivery error. No message server. */ + BDMF_ERR_NO_LOCAL_SUBS = -26, /**< Local subsystem is not set */ + BDMF_ERR_NO_SUBS = -27, /**< Subsystem is not recognised */ + BDMF_ERR_INTR = -28, /**< Operation interrupted */ + BDMF_ERR_HIST_RES_MISMATCH= -29, /**< History result mismatch */ + BDMF_ERR_MORE = -30, /**< More work to do */ + BDMF_ERR_IGNORE = -31, /**< Ignore the error */ + BDMF_ERR_LAST = -100, /**< Last generic error */ +} bdmf_error_t; + +/* Register error code range + * \param[in] from - From number. Must be negative + * \param[in] to - To number. Must be negative >from + * \param[in] p_strerr - Callback that returns error string + * + * \returns BDMF_ERR_OK - OK\n + * BDMF_ERR_PARM - error in parameters\n + * BDMF_ERR_NOMEM - no memory + * BDMF_ERR_ALREADY - (from, to) range overlaps with existing range + */ +bdmf_error_t bdmf_error_range_register(int from, int to, + const char *(*p_strerr)(int err)); + +/* Unregister error code range + * \param[in] from - From number. Must be negative + * \param[in] to - To number. Must be negative >from + * + * \returns BDMF_ERR_OK - OK\n + * BDMF_ERR_PARM - error in parameters\n + * BDMF_ERR_NOENT - (from, to) range is not registered + */ +bdmf_error_t bdmf_error_range_unregister(int from, int to); + +/* Convert error code to error string + * \param[in] err - Error code. One of bdmf_error_t constants or additional + * codes registered using bdmf_error_register() + * \returns Error string + */ +const char *bdmf_strerror(int err); + +#endif /* #ifndef BDMF_ERRNO_H */ + diff --git a/arch/arm/mach-bcmbca/xrdp/bdmf_interface.h b/arch/arm/mach-bcmbca/xrdp/bdmf_interface.h new file mode 100644 index 0000000000..a0ee9a2e27 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bdmf_interface.h @@ -0,0 +1,942 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* + * + */ + +#ifndef _BDMF_INTERFACE_H_ +#define _BDMF_INTERFACE_H_ + +#define BDMF_MAX_MEM_SEGS 4 + +#include +#include + +#ifndef MAX +#define MAX(a, b) ((a) < (b) ? (b) : (a)) +#endif +#ifndef MIN +#define MIN(a, b) ((a) >= (b) ? (b) : (a)) +#endif +#ifndef ARRAY_LENGTH +#define ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0])) +#endif + +/* Managed object type handle */ +typedef struct bdmf_type *bdmf_type_handle; + +/* Managed object */ +typedef struct bdmf_object *bdmf_object_handle; + +/* Inter-object link */ +typedef struct bdmf_link *bdmf_link_handle; + +/* Handle that can represent different things */ +typedef void *bdmf_handle; + +/* Multi-attribute transaction handle link */ +typedef bdmf_object_handle bdmf_mattr_handle; + +/* Object's attribute handle */ +typedef uint16_t bdmf_attr_id; + +#define BDMF_MAX_INFO_NAME_LENGTH 32 +#define BDMF_MAX_INFO_HELP_LENGTH 128 + +#define BDMF_TYPE_MAGIC (('b'<<24) | ('d'<<16) | ('m'<<8) | 't') +#define BDMF_OBJECT_MAGIC (('b'<<24) | ('d'<<16) | ('m'<<8) | 'o') +#define BDMF_MATTR_MAGIC (('b'<<24) | ('d'<<16) | ('m'<<8) | 'a') +#define BDMF_LINK_MAGIC (('b'<<24) | ('d'<<16) | ('m'<<8) | 'l') +#define BDMF_INVALID_MAGIC (('~'<<24) | ('d'<<16) | ('m'<<8) | 'f') + +/* Object type information */ +typedef struct bdmf_type_info +{ + char name[BDMF_MAX_INFO_NAME_LENGTH]; /**< Object type name */ + char help[BDMF_MAX_INFO_HELP_LENGTH]; /**< Object type description */ + int n_objects; /**< Number of managed objects */ + int n_attrs; /**< Number of attributes */ +} bdmf_type_info_t; + + +/* Managed object type iterator. + * The function returns the first or the next registered object type handle. + * + * The handle returned by bdmf_type_get_next function must be + * released by passing it as a parameter to bdmf_type_get_next or bdmf_type_put() + * + * \param[in] drv - previous type handle. NULL=get first + * \return next type handle or NULL if end of list is reached. + */ +bdmf_type_handle bdmf_type_get_next(bdmf_type_handle drv); + + +/** Get managed object type handle given its name + * The handle must be released using bdmf_put() function. + * + * \param[in] name - Managed object type name. The name can be followed by + * "@subsystem" to identify type located at specific subsystem + * \param[out] pdrv - type handle or NULL if object type with the requested + * name is not found. It is guaranteed that *drv contains + * valid handle if bdmf_type_find_get function returns 0. + * \return 0 - OK, <0 - error + */ +int bdmf_type_find_get(const char *name, bdmf_type_handle *pdrv); + + +/* Lock managed object type handle + * + * The handle must be released using bdmf_put() function. + * + * \param[in] drv - Managed object type handle + */ +void bdmf_type_get(bdmf_type_handle drv); + + +/* Release managed object type handle. + * The function "unlocks" the handle by decrementing usecount in the + * underlying structure. Following this call the handle may become invalid. + * + * \param[in] drv - Managed object type handle + * \return void + */ +void bdmf_type_put(bdmf_type_handle drv); + + +/* Get managed object type info + * + * \param[in] drv - Managed object type handle + * \param[out] info - Managed object type info + * \return 0 - OK, <0 - error + */ +int bdmf_type_info(bdmf_type_handle drv, bdmf_type_info_t *info); + + +/* Get number of attributes supported by managed object type + * + * \param[in] drv - Managed object type handle + * \return number of attributes + */ +int bdmf_type_num_attrs(bdmf_type_handle drv); + +typedef struct bdmf_mattr bdmf_mattr_t; + +/** Create a new managed object using parameters in attribute descriptor string + * + * \param[in] drv - Managed object type handle + * \param[in] owner - Object owner. If NULL, framework tries to identify owner + * using attributes + * \param[in] attr - An ASCII string of attribute values to be set for the new + * object. The string is comma-delimited list in format + * name=value. + * \param[out] pmo - New managed object handle + * \return 0 - OK, <0 - error + */ +int bdmf_new_and_configure(bdmf_type_handle drv, + bdmf_object_handle owner, const char *attr, + bdmf_object_handle *pmo); + +/** Create a new managed object using parameters in attribute set + * \param[in] drv - Managed object type handle + * \param[in] owner - Object owner. If NULL, framework tries to identify owner + * using attributes + * \param[in] mattr - attribute set in the same format as in bdmf_mattr_set(). + * mattr is freed automatically. + * \param[out] pmo - New managed object handle + * \return 0 - OK, <0 - error + */ +int bdmf_new_and_set(bdmf_type_handle drv, + bdmf_object_handle owner, bdmf_mattr_handle mattr, + bdmf_object_handle *pmo); + + +/** Destroy managed object + * + * \param[out] mo - Managed object handle + * \return 0 - OK, <0 - error + */ +int bdmf_destroy(bdmf_object_handle mo); + + +/** Find managed object + * + * When no longer needed, the managed object handle must be released by + * bdmf_put() function. + * + * \param[in] drv - Managed object type handle + * \param[in] owner - Object's owner (parent). If not set, the framework tries + * to identify the parent using attributes in the discr + * string. + * \param[in] discr - List of attributes with values in the same format as in + * bdmf_configure(). + * attrs string is passed transparently to the driver and + * must be sufficient to uniquely identify the object. + * discr string can contain also attributes necessary to + * identify object's parent, parent's parent, etc. + * \param[out] pmo - Managed object handle + * \return 0 - OK, <0 - error + */ +int bdmf_find_get(bdmf_type_handle drv, + bdmf_object_handle owner, const char *discr, + bdmf_object_handle *pmo); + + +/** Find managed object + * + * When no longer needed, the managed object handle must be released by + * bdmf_put() function. + * + * \param[in] drv - Managed object type handle + * \param[in] owner - Object's owner (parent). If not set, the framework tries + * to identify the parent using attributes in the discr + * string. + * \param[in] mattr - Set of attributes with values in the same format as in + * bdmf_mattr_set() + * attributes in the set must be sufficient to uniquely + * identify the object. + * \param[out] pmo - Managed object handle + * \return 0 - OK, <0 - error + */ +int bdmf_find_get_by_set(bdmf_type_handle drv, + bdmf_object_handle owner, const bdmf_mattr_t *mattr, + bdmf_object_handle *pmo); + + +/** Lock managed object, by increasing its use count. + * + * An object cannot be destroyed unless its use count is zero. + * When no longer needed, the managed object handle must be released by + * bdmf_put() function. + * + * \param[in] mo - Managed object handle + * \return void + */ +void bdmf_get(bdmf_object_handle mo); + + +/** Find managed object given its type name and attributes. + * + * The function combines bdmf_type_find_get() and bdmf_find_get() . + * When no longer needed, the managed object handle must be released by + * bdmf_put() function. + * + * \param[in] discr - Object discriminator: + * type name followed by optional "/attribute_string" + * whereas attr_string is in the same format as in + * bdmf_new_and_configure()., This string is passed + * transparently to the driver and must be sufficient to + * uniquely identify the object. Note that type name can + * contain "@location" to identify remote subsystem + * implementing the type. If "@location" is omitted, any + * location is assumed. + * \param[out] pmo - Managed object handle + * \return 0 - OK, <0 - error + */ +int bdmf_find_get_by_name(const char *discr, bdmf_object_handle *pmo); + + +/** Release managed object handle locked by one of bdmf_get(), + * bdmf_find_get(), bdmf_find_get_by_name(), bdmf_get_next() + * + * Following ddmf_put call the object handle can become invalid. + * + * \param[in] mo - Managed object handle + */ +void bdmf_put(bdmf_object_handle mo); + + +/** Managed object iterator. + * + * Get next managed object. + * + * \param[in] drv - Managed object type handle + * \param[in] mo - Current managed object or NULL + * \param[in] filter - Optional filter string in the same format as in + * bdmf_configure. Can be NULL + * \return 0 - next object not found, otherwise - next object handle + */ +bdmf_object_handle bdmf_get_next(bdmf_type_handle drv, + bdmf_object_handle mo, const char *filter); + + +/** Get object name + * \param[in] mo - Current managed object or NULL + * \return object name + */ +const char *bdmf_object_name(bdmf_object_handle mo); + + +/** Child iterator. + * + * Get next child. + * + * \param[in] owner - Owner's handle + * \param[in] type - Optional type name. + * If !=NULL, only childs of the given type are iterated. + * \param[in] mo - Current managed object or NULL + * \return 0 - next object not found, otherwise - next object handle + */ +bdmf_object_handle bdmf_get_next_child(bdmf_object_handle owner, + const char *type, bdmf_object_handle mo); + +/** Check if objects are linked. + * + * One of the objects is a "downstream" object + * and the other is "upstream". + * + * \param[in] ds - Downstream object handle + * \param[in] us - Upstream object handle + * \param[out] plink - Optional link pointer. + * In case of mux-mux link, link pointer is returned + * \return 1 - link found, 0 - link not found. + */ +int bdmf_is_linked(bdmf_object_handle ds, bdmf_object_handle us, + bdmf_link_handle *plink); + + +/** Link managed objects together to form a path. + * + * One of the objects is a "downstream" object + * and the other is "upstream". + * + * \param[in] ds - Downstream object handle + * \param[in] us - Upstream object handle + * \param[in] attrs - Optional attribute string. + * This string is passed to objects' link_up, link_down + * callbacks + * \return 0 - OK, <0 - error + */ +int bdmf_link(bdmf_object_handle ds, + bdmf_object_handle us, const char *attrs); + + +/** Unlink managed objects from each other + * + * \param[in] ds - Downstream object handle + * \param[in] us - Upstream object handle + * \return 0 - OK, <0 - error + */ +int bdmf_unlink(bdmf_object_handle ds, bdmf_object_handle us); + + +/** Upstream link iterator + * + * \param[in] mo - Managed object + * \param[in] prev - Previous upstream link handle. NULL = get first + * \return next us link handle or NULL + */ +bdmf_link_handle bdmf_get_next_us_link(bdmf_object_handle mo, + bdmf_link_handle prev); + + +/** Downstream link iterator + * + * \param[in] mo - Managed object + * \param[in] prev - Previous downstream link handle. NULL = get first + * \return next ds link handle or NULL + */ +bdmf_link_handle bdmf_get_next_ds_link(bdmf_object_handle mo, + bdmf_link_handle prev); + + + +/** Map DS link to object + * + * \param[in] ds_link + * \return object handle + */ +bdmf_object_handle bdmf_ds_link_to_object(bdmf_link_handle ds_link); + + +/** Map US link to object + * + * \param[in] us_link + * \return object handle + */ +bdmf_object_handle bdmf_us_link_to_object(bdmf_link_handle us_link); + +/** Get an object help string + * + * \param[in] drv - Managed object type handle + * \param[in] what - Optional string identifying help chapter. + * \param[out] buffer - Buffer where help info should be stored + * \param[in] size - Buffer size + * \return 0 - OK, <0 - error + */ +int bdmf_help(bdmf_type_handle drv, + const char *what, char *buffer, uint32_t size); + + + +/** Get object owner. + * + * \param[in] mo Managed object + * \param[out] owner Object owner + */ +void bdmf_get_owner(const bdmf_object_handle mo, bdmf_object_handle *owner); + + +/* Attribute types. + * Note that the list can be extended by registered aggregate and custom types. + */ +typedef enum { + bdmf_attr_number, /* Numeric attribute */ + bdmf_attr_string, /* 0-terminated string */ + bdmf_attr_buffer, /* Buffer with binary data */ + bdmf_attr_pointer, /* A pointer */ + bdmf_attr_object, /* Object reference */ + bdmf_attr_ether_addr, /* 6-byte Ethernet h/w address */ + bdmf_attr_ip_addr, /* 4-byte IPv4 address or 16-byte IPv6 address */ + bdmf_attr_ipv4_addr, /* 4-byte IPv4 address */ + bdmf_attr_ipv6_addr, /* 16-byte IPv6 address */ + bdmf_attr_boolean, /* boolean. default(first) value = true (1) */ + bdmf_attr_enum, /* enumeration with list of values in static table */ + bdmf_attr_dyn_enum, /* dynamic enumeration with list of values + * generated by callback */ + bdmf_attr_enum_mask, /* Bitmask containg multiple enum values */ + bdmf_attr_aggregate, /* aggregate type: "structure" consisting of + * multiple attributes */ + bdmf_attr_custom, /* user-defined type */ + bdmf_attr_last_type +} bdmf_attr_type_t; + +/** Attribute information */ +typedef struct bdmf_attr_info { + char name[BDMF_MAX_INFO_NAME_LENGTH]; /* Attribute name */ + char help[BDMF_MAX_INFO_HELP_LENGTH]; /* Attribute description */ + bdmf_attr_type_t type; /* Attribute type */ + uint16_t size; /* Attribute size */ + uint16_t array_size; /* Attribute array dimension */ +} bdmf_attr_info_t; + +/** Find attribute by its name + * \param[in] drv - Managed object type handle + * \param[in] name - Attribute name + * \param[out] p_attr - Attribute handle + * \return 0 - OK + * BDMF_ERR_NOENT - no attribute with such name + * BDMF_ERR_PERM - no permission + * BDMF_ERR_PARM - error in parameters + */ +int bdmf_attr_by_name(bdmf_type_handle drv, + const char *name, bdmf_attr_id *p_attr); + + +/** Get attribute info + * \param[in] drv - Managed object type handle + * \param[in] attr - Attribute handle + * \param[out] info - Attribute info + * \return 0 - OK, <0 - error + */ +int bdmf_attr_info(bdmf_type_handle drv, + bdmf_attr_id attr, bdmf_attr_info_t *info); + + +/** Get attribute array element value as number. + * The function can be used for numeric, enum and ipv4 attributes. + * + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[in] index - Array element index + * \param[out] pva - Attribute value + * \return 0 - OK, <0 - error + */ +int bdmf_attrelem_get_as_num(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, bdmf_index index, + bdmf_number *pval); + + +/** Set attribute array element value as number. + * The function can be used for numeric, enum and ipv4 attributes. + * + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[in] index - Array element index + * \param[in] val - Attribute value + * \return 0 - OK, <0 - error + */ +int bdmf_attrelem_set_as_num(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, bdmf_index index, + bdmf_number val); + + +/** Get attribute array element value in string (external) format. + * + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[in] index - Array element index + * \param[out] buffer - Buffer for output string + * \param[in] size - Buffer size + * \return 0 - OK, <0 - error + */ +int bdmf_attrelem_get_as_string(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, bdmf_index index, + char *buffer, uint32_t size); + + +/** Set attribute array element using value in string (external) format. + * + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[in] index - Array element index + * \param[in] val - Value in external format - 0-terminated string + * \return 0 - OK, <0 - error + */ +int bdmf_attrelem_set_as_string(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, bdmf_index index, + const char *val); + + +/** Get attribute array element value as binary array. + * + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[in] index - Array element index + * \param[out] buffer - Buffer where attribute value is returned + * \param[in] size - Buffer size + * \return >=0 - number of bytes copied, <0 - error code + */ +int bdmf_attrelem_get_as_buf(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, bdmf_index index, + void *buffer, uint32_t size); + + +/** Set attribute array element value from binary array. + * + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[in] index - Array element index + * \param[in] buffer - Buffer containing value + * \param[in] size - Buffer size + * \return >=0 - number of bytes copied, <0 - error code + */ +int bdmf_attrelem_set_as_buf(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, bdmf_index index, + const void *buffer, uint32_t size); + + +/** Get scalar attribute value as number. + * + * The function can be used for numeric, enum and ipv4 attributes. + * + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] att - Attribute handle + * \param[out] pval - Attribute value + * \return 0 - OK, <0 - error + */ +static inline int bdmf_attr_get_as_num(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, bdmf_number *pval) +{ + return bdmf_attrelem_get_as_num(mo_or_mattr, attr, -1, pval); +} + +/** Set scalar attribute value as number. + * + * The function can be used for numeric, enum and ipv4 attributes. + * + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[in] val - Attribute value + * \return 0 - OK, <0 - error + */ +static inline int bdmf_attr_set_as_num(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, bdmf_number val) +{ + return bdmf_attrelem_set_as_num(mo_or_mattr, attr, -1, val); +} + +/** Get scalar attribute value as string (external value). + * + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[out] buffer - Buffer for output string + * \param[in] size - Buffer size + * \return 0 - OK, <0 - error + */ +static inline int bdmf_attr_get_as_string(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, char *buffer, + uint32_t size) +{ + return bdmf_attrelem_get_as_string(mo_or_mattr, attr, -1, buffer, size); +} + +/** Set attribute value from string (external value). + * + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[in] val - Value in external format - 0-terminated string + * \return 0 - OK, <0 - error + */ +static inline int bdmf_attr_set_as_string(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, const char *val) +{ + return bdmf_attrelem_set_as_string(mo_or_mattr, attr, -1, val); +} + +/** Get scalar attribute value as binary array + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[out] buffer - Buffer where attribute value is returned + * \param[in] size - Buffer size + * \return >=0 - number of bytes copied, <0 - error code + */ +static inline int bdmf_attr_get_as_buf(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, void *buffer, + uint32_t size) +{ + return bdmf_attrelem_get_as_buf(mo_or_mattr, attr, -1, buffer, size); +} + +/** Set scalar attribute value from binary array + * \param[in] mo_or_mattr - Managed object or mattr handle + * \param[in] attr - Attribute handle + * \param[in] buffer - Buffer containing value + * \param[in] size - Buffer size + * \return >=0 - number of bytes copied, <0 - error code + */ +static inline int bdmf_attr_set_as_buf(bdmf_object_handle mo_or_mattr, + bdmf_attr_id attr, const void *buffer, + uint32_t size) +{ + return bdmf_attrelem_set_as_buf(mo_or_mattr, attr, -1, buffer, size); +} + + +/** Add attribute array element value as number. + * + * The function can be used for dynamic arrays of numeric, enum and ipv4 + * attributes. + * + * \param[in] mo - Managed object handle + * \param[in] attr - Attribute handle + * \param[in, out] index - Array element index (handle). On input may + * contain a hint + * \param[in] val - Attribute value + * \return 0 - OK, <0 - error + */ +int bdmf_attrelem_add_as_num(bdmf_object_handle mo, bdmf_attr_id attr, + bdmf_index *index, bdmf_number val); + + +/** Add attribute array element value as string. + * + * \param[in] mo - Managed object handle + * \param[in] attr - Attribute handle + * \param[in, out] index - Array element index (handle). On input may + * contain a hint + * \param[in] val - Value in external format - 0-terminated string + * \return 0 - OK, <0 - error + */ +int bdmf_attrelem_add_as_string(bdmf_object_handle mo, bdmf_attr_id attr, + bdmf_index *index, const char *val); + + +/** Add attribute array element value as buffer. + * + * \param[in] mo - Managed object handle + * \param[in] attr - Attribute handle + * \param[in, out] index - Array element index (handle). On input may + * contain a hint + * \param[in] buffer - Buffer containing value + * \param[in] size - Buffer size + * \return >=0 - number of bytes copied, <0 - error code + */ +int bdmf_attrelem_add_as_buf(bdmf_object_handle mo, bdmf_attr_id attr, + bdmf_index *index, const void *buffer, + uint32_t size); + + +/** Delete attribute array element + * + * The function can be used for dynamic arrays. + * + * \param[in] mo - Managed object handle + * \param[in] attr - Attribute handle + * \param[in] index - Array element index (handle) + * \return 0 - OK, <0 - error + */ +int bdmf_attrelem_delete(bdmf_object_handle mo, bdmf_attr_id attr, + bdmf_index index); + + +/** Get next attribute array index + * + * \param[in] mo - Managed object handle + * \param[in] attr - Attribute handle + * \param[in, out] index - Array element index (handle). Seed with + * BDMF_INDEX_UNASSIGNED for get-first + * \return 0 - OK, = BDMF_ERR_NOENT - no more entries + */ +int bdmf_attrelem_get_next(bdmf_object_handle mo, bdmf_attr_id attr, + bdmf_index *index); + + +/** Find attribute array element index given its value in internal format. + * + * \param[in] mo - Managed object handle + * \param[in] attr - Attribute handle + * \param[in, out] buffer - Buffer containing search value or partial + * search value. Can be updated. + * \param[in, out] index - Array element index (handle). On input may + * contain a hint + * \param[in] size - Buffer size + * \return >=0 - number of bytes copied, <0 - error code + */ +int bdmf_attrelem_find(bdmf_object_handle mo, bdmf_attr_id attr, + bdmf_index *index, void *buffer, uint32_t size); + + +/** Find attribute array element index given its value as string. + * + * \param[in] mo - Managed object handle + * \param[in] attr - Attribute handle + * \param[in, out] index - Array element index (handle). On input may + * contain a hint + * \param[in] val - Value in external format - 0-terminated string + * \return 0 - OK, <0 - error + */ +int bdmf_attrelem_find_by_string(bdmf_object_handle mo, bdmf_attr_id attr, + bdmf_index *index, const char *val); + + +/** Set a number of attributes in a single call. + * + * The attributes and values are passed as a comma-delimted + * ASCII string of name=value pairs.\n + * For enum attrubutes "=value" can be omitted. In this case + * the 1st enum value is assumed. For example, if "bool_attr" is + * boolean attribute, specifying "bool_attr" in the attribute string without value + * means settings its value "=true", because "true" is the 1st value of "boolean" + * enumeration.\n + * For aggregate attributes the value must be surrounded by "{}" brackets and + * has the following format:\n + * aggr_attr1={field_name1=value1,field_name2=value2}\n + * Nested "{} brackets are allowed to accommodate the case of aggregate attribute's + * field itself being an aggregate.\n + * + * Example of attribute string:\n + * attr1=25,attr2=string1,attr3=enum_value3,attr4="string 4",enum_attr5,aggr_attr1={f1=v1,f2=v2}\n + * + * \param[in] mo - Managed object handle + * \param[in] set - Comma delimited list of name=value pairs + * \return 0 - OK, <0 - error + */ +int bdmf_configure(bdmf_object_handle mo, const char *set); + + +/** mattr operation */ +typedef enum { + bdmf_attr_op_any, /* Set/Get attribute */ + bdmf_attr_op_set, /* Set attribute */ + bdmf_attr_op_get, /* Get attribute */ +} bdmf_attr_op_t; + +/** Attribute value */ +typedef struct { + bdmf_attr_type_t val_type; /* value type */ + union { + bdmf_number num; /* number , boolean, enum */ + const char *s; /* Value in string format */ + bdmf_number *pnum; /* Pointer to value for "get_as_num" + * operation */ + /* Raw buffer format */ + struct { + void *ptr; + uint16_t len; + } buf; + } x; +} bdmf_attr_val_t; + +/* mattr set entry */ +typedef struct bdmf_mattr_entry { + bdmf_attr_id aid; /* Attribute id */ + bdmf_index index; /* Array index */ + bdmf_attr_val_t val; /* Value */ +} bdmf_mattr_entry_t; + +/** Attribute set. + * All fields in this structure are internal and should not be touched + * by the drivers; + */ +struct bdmf_mattr +{ + uint32_t magic; /* Magic number to distinguish from other entities */ + bdmf_attr_op_t oper; /* Mattr operation */ + bdmf_type_handle drv; /* Type handle */ + int max_entries; /* Max number of entries in entries[] array */ + int num_entries; /* Current number of entries in entries[] array */ + int dynamic; /* 1=allocated dynamically */ + bdmf_mattr_entry_t entries[0]; /**< Mattr entries */ +}; + + +static inline bdmf_mattr_t *bdmf_mattr_init(bdmf_mattr_t *mattr, bdmf_type_handle drv) +{ + mattr->drv = drv; + mattr->magic=BDMF_MATTR_MAGIC; + mattr->num_entries = 0; + mattr->max_entries = bdmf_type_num_attrs(drv); + mattr->oper = bdmf_attr_op_any; + mattr->dynamic = 0; + return mattr; +} + +/** Declare mattr descriptor + * \param[in] name - Variable name to declare of type (bdmf_mattr_t *) + * \param[in] op - Operation + * \param[in] drv - Type for which the set is created (FFU) + */ +#define BDMF_MATTR(name, drv) \ + struct { \ + bdmf_mattr_t hdr; \ + bdmf_mattr_entry_t entries[bdmf_type_num_attrs(drv)]; \ + } __ ## name; \ + bdmf_mattr_handle name = (bdmf_object_handle)bdmf_mattr_init( \ + (bdmf_mattr_t *)&__ ## name, drv) + + +/** Allocate mattr descriptor. + * + * This function provides an alternative to BDMF_MATTR macro. + * Unlike BDMF_MATTR which allocates mattr descriptor on the stack, + * bdmf_mattr_alloc() uses dynamic memory allocation. + * Descriptor allocated by bdmf_mattr_alloc() must be released + * using bdmf_free() + * \param[in] drv - Object type mattr block will be used for + * \return mattr block pointer or NULL if no memory + */ +bdmf_mattr_handle bdmf_mattr_alloc(bdmf_type_handle drv); + +/** Set a number of object attributes in a single call. + * + * \param[in] mo - Managed object handle + * \param[in] mattr - Attribute set. + * The set is released automatically. + * \return 0 - OK, <0 - error + */ +int bdmf_mattr_set(bdmf_object_handle mo, bdmf_mattr_handle mattr); + +/** Get a number of object attributes in a single call. + * + * \param[in] mo - Managed object handle + * \param[in] mattr - Attribute set to be fetched + * \return 0 - OK, <0 - error + */ +int bdmf_mattr_get(bdmf_object_handle mo, bdmf_mattr_handle mattr); + +/** Release mattr chain + * + * \param[in] mattr - Mattr to be released + */ +void bdmf_mattr_free(bdmf_mattr_handle mattr); + +/** Trace levels + */ +typedef enum +{ + bdmf_trace_level_none, /* Tracing is disabled */ + bdmf_trace_level_error, /* Trace errors only */ + bdmf_trace_level_info, /* Trace errors and info, including + * configuration changes */ + bdmf_trace_level_debug, /* Trace everything */ +} bdmf_trace_level_t; + +#ifndef BDMF_NO_TRACE + +/** Global trace level (\ref bdmf_trace_level_t) */ +extern int bdmf_global_trace_level; + +/* Add trace entry + * \param[in] fmt - printf-like format + */ +void bdmf_trace(const char *fmt, ...) __attribute__((format(printf, 1, 2))); + +/** Print error trace conditional on global trace level + * \param[in] fmt - printf-like format + * \param[in] args - 0 or more parameters + */ +#define BDMF_TRACE_ERR(fmt, args...) \ + do { \ + if (bdmf_global_trace_level >= bdmf_trace_level_error) \ + bdmf_trace("ERR: %s#%d: " fmt, __FUNCTION__, \ + __LINE__, ## args); \ + } while(0) + + +/** Print info trace conditional on global trace level + * \param[in] fmt - printf-like format + * \param[in] args - 0 or more parameters + */ +#define BDMF_TRACE_INFO(fmt, args...) \ + do { \ + if (bdmf_global_trace_level >= bdmf_trace_level_info) \ + bdmf_trace("INF: %s#%d: " fmt, __FUNCTION__, \ + __LINE__, ## args); \ + } while(0) + + +/** Print info or error trace conditional on global trace level and return + * \param[in] rc - return code. 0=info trace, !=0-error trace + * \param[in] fmt - printf-like format + * \param[in] args - 0 or more parameters + */ +#define BDMF_TRACE_RET(rc, fmt, args...) \ + do { \ + if (rc) \ + BDMF_TRACE_ERR("status:%s " fmt, bdmf_strerror(rc), \ + ## args); \ + else \ + BDMF_TRACE_INFO("success " fmt, ## args); \ + return (rc); \ + } while(0) + + +#ifdef BDMF_DEBUG + +/** Print debug trace conditional on global trace level + * \param[in] fmt - printf-like format + * \param[in] args - 0 or more parameters + */ +#define BDMF_TRACE_DBG(fmt, args...) \ + do { \ + if (bdmf_global_trace_level >= bdmf_trace_level_debug) \ + bdmf_trace("DBG: %s#%d: " fmt, __FUNCTION__, \ + __LINE__, ## args); \ + } while(0) + +#else /* #ifdef BDMF_DEBUG */ + +#define BDMF_TRACE_DBG(fmt, args...) + +#endif /* #ifdef BDMF_DEBUG */ + +#else /* #ifdef BDMF_NO_TRACE */ +#define BDMF_TRACE_RET(rc, fmt, args...) do { return rc; } while (0) +#define BDMF_TRACE_INFO(fmt, args...) +#define BDMF_TRACE_ERR(fmt, args...) +#define BDMF_TRACE_DBG(fmt, args...) +#define bdmf_trace printf +#endif + +/** Acquire global lock. + * The functions takes ownership of global recursive mutex. + * Typically it is used to protect multiple operations in the same transaction. + * For example, read-modify-write. \n + * There is no need to check return code if calling task doesn't expect signals. + * The global lock is recursive. That is, + * - a task can take the lock it owns multiple times. + * - if task B tries to take the lock held by task A - it blocks + * - lock can only be released by the task that owns it + * \return 0 - OK \n + * BDMF_ERR_INTR - interrupted by signal + */ +int bdmf_lock(void); + +/** Release global lock. + * Release global lock acquired by bdmf_lock() call. + */ +void bdmf_unlock(void); + +#endif /* _BDMF_INTERFACE_H_ */ diff --git a/arch/arm/mach-bcmbca/xrdp/bdmf_session.h b/arch/arm/mach-bcmbca/xrdp/bdmf_session.h new file mode 100644 index 0000000000..a039af7876 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bdmf_session.h @@ -0,0 +1,247 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* + * + */ + +/******************************************************************* + * bdmf_session.h + * + * BL framework - management session + * + *******************************************************************/ + +#ifndef BDMF_SESSION_H + +#define BDMF_SESSION_H + +#include +#include + +/** Access rights */ +typedef enum { + BDMF_ACCESS_GUEST, /* Guest. Doesn't have access to commands and + * directories registered with ADMIN rights */ + BDMF_ACCESS_ADMIN, /* Administrator: full access */ + BDMF_ACCESS_DEBUG, /* Administrator: full access + extended debug + * features */ +} bdmf_access_right_t; + +/** Line edit mode */ +typedef enum { + BDMF_LINE_EDIT_DEFAULT, /* Enable line editing and history if + * CONFIG_EDITLINE is defined, disable otherwise */ + BDMF_LINE_EDIT_ENABLE, /* Enable line editing. Requires CONFIG_EDITLINE + * define and libedit-dev library */ + BDMF_LINE_EDIT_DISABLE, /* Disable line editing and history */ +} bdmf_line_edit_mode_t; + +/** Hex dump format */ +typedef enum { + BDMF_HEX_DUMP_FORMAT_DEFAULT, /* Default format of hex dump */ + BDMF_HEX_DUMP_FORMAT_BYTE, /* Hex dump format of separate bytes */ +} bdmf_hex_dump_format_t; + +/* Management session handle */ +typedef struct bdmf_session bdmf_session; + +/* Management session handle */ +typedef struct bdmf_session *bdmf_session_handle; + +/** Session parameters structure. + * See \ref bdmf_session_open + */ +typedef struct bdmf_session_parm { + const char *name; /**< Session name */ + void *user_priv; /**< Private user's data */ + + /** Session's output function. NULL=use write(stdout) + * returns the number of bytes written or <0 if error + */ + int (*write)(bdmf_session_handle session, const char *buf, uint32_t size); + + /** Session line input function. NULL=use default(stdin[+line edit) */ + char *(*gets)(bdmf_session_handle session, char *buf, uint32_t size); + + /** Access rights */ + bdmf_access_right_t access_right; + + /** Line editing mode */ + bdmf_line_edit_mode_t line_edit_mode; + + /** Extra data size to be allocated along with session control block. + * The extra data is accessible using bdmf_session_data(). + */ + uint32_t extra_size; + + /** Hex dump format */ + bdmf_hex_dump_format_t hex_dump_format; +} bdmf_session_parm_t; + + +/** Open management session + * + * Monitor supports multiple simultaneous sessions with different + * access rights. + * + * \param[in] parm - Session parameters. Must not be allocated on the stack. + * \param[out] p_session - Session handle + * \return 0 = ok, <0 = error code + */ +int bdmf_session_open(const bdmf_session_parm_t *parm, + bdmf_session_handle *p_session); + + +/** Close management session. + * \param[in] session - Session handle + */ +void bdmf_session_close(bdmf_session_handle session); + + +/** Write function. + * Write buffer to the current session. + * \param[in] session - Session handle. NULL=use stdout + * \param[in] buf - output buffer + * \param[in] size - number of bytes to be written + * \return >=0 - number of bytes written. <0 - output error + */ +int bdmf_session_write(bdmf_session_handle session, const char *buf, + uint32_t size); + + +/** Read line + * \param[in] session - Session handle. NULL=use default + * \param[in,out] buf - input buffer + * \param[in] size - buf size + * \return buf if successful, NULL if EOF or error + */ +char *bdmf_session_gets(bdmf_session_handle session, char *buf, uint32_t size); + + +/** Print function. + * Prints in the context of current session. + * \param[in] session - Session handle. NULL=use stdout + * \param[in] format - print format - as in printf + */ +void bdmf_session_print(bdmf_session_handle session, const char *format, ...) +#ifndef BDMF_SESSION_DISABLE_FORMAT_CHECK +__attribute__((format(printf, 2, 3))) +#endif +; + + +/** Print function. + * Prints in the context of current session. + * \param[in] session - Session handle. NULL=use stdout + * \param[in] format - print format - as in printf + * \param[in] ap - parameters list. Undefined after the call + */ +void bdmf_session_vprint(bdmf_session_handle session, const char *format, + va_list ap); + +/** Print buffer in hexadecimal format + * \param[in] session - Session handle. NULL=use stdout + * \param[in] buffer - Buffer address + * \param[in] offset - Start offset in the buffer + * \param[in] count - Number of bytes to dump + */ +void bdmf_session_hexdump(bdmf_session_handle session, void *buffer, + uint32_t offset, uint32_t count); + +/** Get extra data associated with the session + * \param[in] session - Session handle. NULL=default session + * \return extra_data pointer or NULL if there is no extra data + */ +void *bdmf_session_data(bdmf_session_handle session); + + +/** Get user_priv provided in session parameters when it was registered + * \param[in] session - Session handle. NULL=default session + * \return usr_priv value + */ +void *bdmf_session_user_priv(bdmf_session_handle session); + + +/** Set user_priv provided in session parameters when it was registered + * \param[in] session - Session handle. NULL=default session + * \param[in] usr_priv - user_priv value + * \return old usr_priv value + */ +void *bdmf_session_user_priv_set(bdmf_session_handle session, void *user_priv); + + +/** Get session name + * \param[in] session - Session handle. NULL=use stdin + * \return session name + */ +const char *bdmf_session_name(bdmf_session_handle session); + + +/** Get session access rights + * \param[in] session - Session handle. NULL=default debug session + * \return session access right + */ +bdmf_access_right_t bdmf_session_access_right(bdmf_session_handle session); + + +/** Context extension + * + * - if no command - display list of command or extend command + * - if prev char is " " + * - if positional and next parm is enum - show/extends list of matching values + * - else - show/extend list of unused parameters + * else + * - if entering value and enum - show/extends list of matching values + * - else - show/extend list of matching unused parameters + * + * \param[in] session - Session handle + * \param[in] input_string - String to be parsed + * \param[out] insert_str - String to insert at cursor position + * \param[in] insert_size - Insert buffer size + * \return =0 - OK; -EINVAL - parsing error + */ +int bdmf_extend(bdmf_session_handle session, char *input_string, + char *insert_str, uint32_t insert_size); + + +#ifdef BDMF_INTERNAL + +#define BDMF_SESSION_OUTBUF_LEN 2048 + +/* editline functionality */ +/* If libedit is included - it takes precedence */ +#ifdef CONFIG_LIBEDIT +#include +#undef CONFIG_LINENOISE +#endif /* #ifdef CONFIG_LIBEDIT */ + +#ifdef CONFIG_LINENOISE +#include +#endif + +/* Management session structure */ +struct bdmf_session { + bdmf_session *next; + bdmf_session_parm_t parms; + uint32_t magic; +#define BDMF_SESSION_MAGIC (('s'<<24)|('e'<<16)|('s'<<8)|'s') +#define BDMF_SESSION_MAGIC_DEL (('s'<<24)|('e'<<16)|('s'<<8)|'~') + + /* Line editing and history support */ +#ifdef CONFIG_LIBEDIT + EditLine *el; + History *history; + HistEvent histevent; +#endif +#ifdef CONFIG_LINENOISE + linenoiseSession *ln_session; +#endif + char outbuf[BDMF_SESSION_OUTBUF_LEN]; + + /* Followed by session data */ +}; +#endif + +#endif /* #ifndef BDMF_SESSION_H */ diff --git a/arch/arm/mach-bcmbca/xrdp/bdmf_shell.h b/arch/arm/mach-bcmbca/xrdp/bdmf_shell.h new file mode 100644 index 0000000000..5a422b3e16 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bdmf_shell.h @@ -0,0 +1,597 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* + * + */ + +/******************************************************************* + * bdmf_shell.h + * + * BL framework - shell API + * + *******************************************************************/ + +#ifndef BDMF_MON_H + +#define BDMF_MON_H + +#include +#include + +/** \defgroup bdmf_mon Broadlight Monitor Module (CLI) + * Broadlight Monitor is used for all configuration and status monitoring.\n + * It doesn't have built-in scripting capabilities (logical expressions, loops), + * but can be used in combination with any available scripting language.\n + * Broadlight Monitor replaces Broadlight Shell and supports the following features:\n + * - parameter number and type validation (simplifies command handlers development) + * - parameter value range checking + * - mandatory and optional parameters + * - positional and named parameters + * - parameters with default values + * - enum parameters can have arbitrary values + * - automatic command help generation + * - automatic or user-defined command shortcuts + * - command handlers return completion status to enable scripting + * - multiple sessions + * - session access rights + * - extendible. Supports user-defined parameter types + * - relatively low stack usage + * @{ + */ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define BDMFMON_MAX_SEARCH_SUBSTR_LENGTH 80 + +/** Monitor entry handle + */ +typedef struct bdmfmon_entry *bdmfmon_handle_t; + +/* if BDMFMON_PARM_USERIO flag is set: + low_val: t_userscanf_f function + high_val: t_userprintf_f function +*/ + +/** Function parameter structure */ +typedef struct bdmfmon_cmd_parm bdmfmon_cmd_parm_t; + +/** Parameter type */ +typedef enum +{ + BDMFMON_PARM_NONE, + BDMFMON_PARM_DECIMAL, /**< Decimal number */ + BDMFMON_PARM_DECIMAL64, /**< Signed 64-bit decimal */ + BDMFMON_PARM_UDECIMAL, /**< Unsigned decimal number */ + BDMFMON_PARM_UDECIMAL64, /**< Unsigned 64-bit decimal number */ + BDMFMON_PARM_HEX, /**< Hexadecimal number */ + BDMFMON_PARM_HEX64, /**< 64-bit hexadecimal number */ + BDMFMON_PARM_NUMBER, /**< Decimal number or hex number prefixed by 0x */ + BDMFMON_PARM_NUMBER64, /**< 64bit decimal number or hex number prefixed by 0x */ + BDMFMON_PARM_UNUMBER, /**< Unsigned decimal number or hex number prefixed by 0x */ + BDMFMON_PARM_UNUMBER64, /**< Unsigned 64bit decimal number or hex number prefixed by 0x */ + BDMFMON_PARM_STRING, /**< String */ + BDMFMON_PARM_ENUM, /**< Enumeration */ + BDMFMON_PARM_IP, /**< IP address n.n.n.n */ + BDMFMON_PARM_IPV6, /**< IPv6 address */ + BDMFMON_PARM_MAC, /**< MAC address xx:xx:xx:xx:xx:xx */ + BDMFMON_PARM_BUFFER, /**< Byte array */ + + BDMFMON_PARM_USERDEF /**< User-defined parameter. User must provide scan_cb */ +} bdmfmon_parm_type_t; + +/** Enum attribute value. + * + * Enum values is an array of bdmfmon_enum_val_t terminated by element with name==NULL + * + */ +typedef struct bdmfmon_enum_val +{ + const char *name; /**< Enum symbolic name */ + long val; /**< Enum internal value */ + bdmfmon_cmd_parm_t *parms; /**< Extension parameter table for enum-selector */ +} bdmfmon_enum_val_t; +#define BDMFMON_MAX_ENUM_VALUES 128 /**< Max number of enum values */ +#define BDMFMON_ENUM_LAST { NULL, 0} /**< Last entry in enum table */ + +/** Boolean values (true/false, yes/no, on/off) + * + */ +extern bdmfmon_enum_val_t bdmfmon_enum_bool_table[]; + +/* Monitor data types */ +typedef long bdmfmon_number; /**< Type underlying BDMFMON_PARM_NUMBER, BDMFMON_PARM_DECIMAL */ +typedef long bdmfmon_unumber; /**< Type underlying BDMFMON_PARM_HEX, BDMFMON_PARM_UDECIMAL */ +typedef long bdmfmon_number64; /**< Type underlying BDMFMON_PARM_NUMBER64, BDMFMON_PARM_DECIMAL64 */ +typedef long bdmfmon_unumber64; /**< Type underlying BDMFMON_PARM_HEX64, BDMFMON_PARM_UDECIMAL64 */ + +/** Parameter value */ +typedef union bdmfmon_parm_value +{ + long number; /**< Signed number */ + unsigned long unumber; /**< Unsigned number */ + long long number64; /**< Signed 64-bit number */ + unsigned long long unumber64; /**< Unsigned 64-bit number */ + char *string; /**< 0-terminated string */ + double d; /**< Double-precision floating point number */ + char mac[6]; /**< MAC address */ +} bdmfmon_parm_value_t; + +/** User-defined scan function. + * The function is used for parsing user-defined parameter types + * Returns: 0-ok, <=error + * + */ +typedef int (*bdmfmon_scan_cb_t)(const bdmfmon_cmd_parm_t *parm, bdmfmon_parm_value_t *value, + const char *string_val); + +/** User-defined print function. + * The function is used for printing user-defined parameter types + * + */ +typedef void (*bdmfmon_format_cb_t)(const bdmfmon_cmd_parm_t *parm, bdmfmon_parm_value_t value, + char *buffer, int size); + + +/** Function parameter structure */ +struct bdmfmon_cmd_parm +{ + const char *name; /**< Parameter name. Shouldn't be allocated on stack! */ + const char *description; /**< Parameter description. Shouldn't be allocated on stack! */ + bdmfmon_parm_type_t type; /**< Parameter type */ + uint8_t flags; /**< Combination of BDMFMON_PARM_xx flags */ +#define BDMFMON_PARM_FLAG_OPTIONAL 0x01 /**< Parameter is optional */ +#define BDMFMON_PARM_FLAG_DEFVAL 0x02 /**< Default value is set */ +#define BDMFMON_PARM_FLAG_RANGE 0x04 /**< Range is set */ +#define BDMFMON_PARM_FLAG_ENUM_EOL_SEPARATOR 0x08 /**< Use new line as enum separator */ +#define BDMFMON_PARM_FLAG_EOL 0x20 /**< String from the current parser position till EOL */ +#define BDMFMON_PARM_FLAG_SELECTOR 0x40 /**< Parameter selects other parameters */ +#define BDMFMON_PARM_FLAG_ASSIGNED 0x80 /**< Internal flag: parameter is assigned */ + + bdmfmon_number low_val; /**< Low val for range checking */ + bdmfmon_number hi_val; /**< Hi val for range checking */ + bdmfmon_parm_value_t value; /**< Value */ + bdmfmon_enum_val_t *enum_table; /**< Table containing { enum_name, enum_value } pairs */ + bdmfmon_scan_cb_t scan_cb; /**< User-defined scan function for BDMFMON_PARM_USERDEF parameter type */ + bdmfmon_format_cb_t format_cb; /**< User-defined format function for BDMFMON_PARM_USERDEF parameter type */ + uint32_t max_array_size; /**< Max array size for array-parameter */ + uint32_t array_size; /**< Actual array size for array-parameter */ + bdmfmon_parm_value_t *values; /**< Array values */ + void *user_data; /**< User data - passed transparently to command handler */ +}; + +/** Command parameter list terminator */ +#define BDMFMON_PARM_LIST_TERMINATOR { .name=NULL, .type=BDMFMON_PARM_NONE } + +/** Helper macro: make simple parameter + * \param[in] _name Parameter name + * \param[in] _descr Parameter description + * \param[in] _type Parameter type + * \param[in] _flags Parameter flags + */ +#define BDMFMON_MAKE_PARM(_name, _descr, _type, _flags) \ + { .name=(_name), .description=(_descr), .type=(_type), .flags=(_flags) } + +/** Helper macro: make simple parameter + * \param[in] _name Parameter name + * \param[in] _descr Parameter description + * \param[in] _type Parameter type + * \param[in] _flags Parameter flags + * \param[in] _size Max array size + * \param[in] _values Array values buffer + */ +#define BDMFMON_MAKE_PARM_ARRAY(_name, _descr, _type, _flags, _size, _values) \ + { .name=(_name), .description=(_descr), .type=(_type), .flags=(_flags),\ + .max_array_size=(_size), .values=(_values) } + +/** Helper macro: make range parameter + * \param[in] _name Parameter name + * \param[in] _descr Parameter description + * \param[in] _type Parameter type + * \param[in] _flags Parameter flags + * \param[in] _min Min value + * \param[in] _max Max value + */ +#define BDMFMON_MAKE_PARM_RANGE(_name, _descr, _type, _flags, _min, _max) \ + { .name=(_name), .description=(_descr), .type=(_type), .flags=(_flags) | BDMFMON_PARM_FLAG_RANGE, \ + .low_val=(_min), .hi_val=(_max) } + +/** Helper macro: make parameter with default value + * \param[in] _name Parameter name + * \param[in] _descr Parameter description + * \param[in] _type Parameter type + * \param[in] _flags Parameter flags + * \param[in] _dft Default value + */ +#define BDMFMON_MAKE_PARM_DEFVAL(_name, _descr, _type, _flags, _dft) \ + { .name=(_name), .description=(_descr), .type=(_type), .flags=(_flags) | BDMFMON_PARM_FLAG_DEFVAL, \ + .value = {_dft} } + +/** Helper macro: make range parameter with default value + * \param[in] _name Parameter name + * \param[in] _descr Parameter description + * \param[in] _type Parameter type + * \param[in] _flags Parameter flags + * \param[in] _min Min value + * \param[in] _max Max value + * \param[in] _dft Default value + */ +#define BDMFMON_MAKE_PARM_RANGE_DEFVAL(_name, _descr, _type, _flags, _min, _max, _dft) \ + { .name=(_name), .description=(_descr), .type=(_type), \ + .flags=(_flags) | BDMFMON_PARM_FLAG_RANGE | BDMFMON_PARM_FLAG_DEFVAL, \ + .low_val=(_min), .hi_val=(_max), .value = {_dft} } + +/** Helper macro: make enum parameter + * \param[in] _name Parameter name + * \param[in] _descr Parameter description + * \param[in] _values Enum values table + * \param[in] _flags Parameter flags + */ +#define BDMFMON_MAKE_PARM_ENUM(_name, _descr, _values, _flags) \ + { .name=(_name), .description=(_descr), .type=BDMFMON_PARM_ENUM, .flags=(_flags), .enum_table=(_values)} + +/** Helper macro: make enum parameter with default value + * \param[in] _name Parameter name + * \param[in] _descr Parameter description + * \param[in] _values Enum values table + * \param[in] _flags Parameter flags + * \param[in] _dft Default value + */ +#define BDMFMON_MAKE_PARM_ENUM_DEFVAL(_name, _descr, _values, _flags, _dft) \ + { .name=(_name), .description=(_descr), .type=BDMFMON_PARM_ENUM, .flags=(_flags) | BDMFMON_PARM_FLAG_DEFVAL,\ + .enum_table=(_values), .value={.string=_dft} } + +/** Helper macro: make enum-selector parameter + * \param[in] _name Parameter name + * \param[in] _descr Parameter description + * \param[in] _values Selector values table + * \param[in] _flags Parameter flags + */ +#define BDMFMON_MAKE_PARM_SELECTOR(_name, _descr, _values, _flags) \ + { .name=(_name), .description=(_descr), .type=BDMFMON_PARM_ENUM, \ + .flags=(_flags) | BDMFMON_PARM_FLAG_SELECTOR | BDMFMON_PARM_FLAG_ENUM_EOL_SEPARATOR, \ + .enum_table=(_values) } + +/** Helper macro: make buffer parameter + * \param[in] _name Parameter name + * \param[in] _descr Parameter description + * \param[in] _flags Parameter flags + * \param[in] _buf Memory buffer associated with the parameter + * \param[in] _size Buffer size + */ +#define BDMFMON_MAKE_PARM_BUFFER(_name, _descr, _flags, _buf, _size) \ + { .name=(_name), .description=(_descr), .type=BDMFMON_PARM_BUFFER, \ + .flags=(_flags), .value.buffer = {.start = _buf, .curr = _buf, .len = _size} } + +/** Register command without parameters helper */ +#define BDMFMON_MAKE_CMD_NOPARM(dir, cmd, help, cb) \ + bdmfmon_cmd_add(dir, cmd, cb, help, BDMF_ACCESS_ADMIN, NULL, NULL) + +/** Register command helper */ +#define BDMFMON_MAKE_CMD(dir, cmd, help, cb, parms...) \ +{ \ + static bdmfmon_cmd_parm_t cmd_parms[]={ \ + parms, \ + BDMFMON_PARM_LIST_TERMINATOR \ + }; \ + bdmfmon_cmd_add(dir, cmd, cb, help, BDMF_ACCESS_ADMIN, NULL, cmd_parms); \ +} + +/** Optional custom directory handlers */ +typedef void (*bdmfmon_dir_enter_leave_cb)(bdmf_session_handle session, bdmfmon_handle_t dir, int is_enter); + +/** Optional command or directory help callback + * \param[in] session Session handle + * \param[in] h Command or directory handle + * \param[in] parms Parameter(s) - the rest of the command string. + * Can be used for example to get help on individual parameters + */ +typedef void (*bdmfmon_help_cb_t)(bdmf_session_handle session, bdmfmon_handle_t h, const char *parms); + +/** Optional parameter extend callback + * \param[in] session Session handle + * \param[in] parm CLI parameter + * \param[in] partial_value Parameter value entered so far + * \param[out] insert_str String to be inserted in input string + * \param[in] insert_size insert_str buffer size + * \returns 0=OK or error code + */ +typedef int (*bdmfmon_parm_extend_cb_t)(bdmf_session_handle session, bdmfmon_cmd_parm_t *parm, + const char *partial_value, char *insert_str, uint32_t insert_size); + +/** Extra parameters of monitor directory. + * See \ref bdmfmon_dir_add + * + */ +typedef struct bdmfmon_dir_extra_parm +{ + void *user_priv; /**< private data passed to enter_leave_cb */ + bdmfmon_dir_enter_leave_cb enter_leave_cb; /**< callback function to be called when session enters/leavs the directory */ + bdmfmon_help_cb_t help_cb; /**< Help function called to print directory help instead of the automatic help */ +} bdmfmon_dir_extra_parm_t; + + +/** Extra parameters of monitor command. + * See \ref bdmfmon_cmd_add + * + */ +typedef struct bdmfmon_cmd_extra_parm +{ + bdmfmon_help_cb_t help_cb; /**< Optional help callback. Can be used for more sophisticated help, e.g., help for specific parameters */ + uint32_t flags; /**< Command flags */ +#define BDMFMON_CMD_FLAG_NO_NAME_PARMS 0x00000001 /**< No named parms. Positional only. Can be useful if parameter value can contain ',' */ + void (*free_parms)(bdmfmon_cmd_parm_t *parms); /**< Optional user-defined free */ + uint32_t num_parm_extend; /**< Number of entries in parm_extend[] array */ + bdmfmon_parm_extend_cb_t parm_extend[]; /**< Optional parameter extend callbacks */ +} bdmfmon_cmd_extra_parm_t; + + +/** Monitor command handler prototype */ +typedef int (*bdmfmon_cmd_cb_t)(bdmf_session_handle session, const bdmfmon_cmd_parm_t parm[], uint16_t n_parms); + + +/** Add subdirectory to the parent directory + * + * \param[in] parent Parent directory handle. NULL=root + * \param[in] name Directory name + * \param[in] help Help string + * \param[in] access_right Access rights + * \param[in] extras Optional directory descriptor. Mustn't be allocated on the stack. + * \return new directory handle or NULL in case of failure + */ +bdmfmon_handle_t bdmfmon_dir_add(bdmfmon_handle_t parent, const char *name, + const char *help, bdmf_access_right_t access_right, + const bdmfmon_dir_extra_parm_t *extras); + + +/** Scan directory tree and look for directory named "name". + * + * \param[in] parent Directory sub-tree root. NULL=root + * \param[in] name Name of directory to be found + * \return directory handle if found or NULL if not found + */ +bdmfmon_handle_t bdmfmon_dir_find(bdmfmon_handle_t parent, const char *name ); + + +/** Scan directory tree and look for command named "name". + * + * \param[in] parent Directory sub-tree root. NULL=root + * \param[in] name Name of command to be found + * \return command handle if found or NULL if not found + */ +bdmfmon_handle_t bdmfmon_cmd_find(bdmfmon_handle_t parent, const char *name ); + + +/** Get token name + * \param[in] token Directory or command token + * \return directory token name + */ +const char *bdmfmon_token_name(bdmfmon_handle_t token); + +/** Find the CLI parameter with the specified name (case insensitive). + * \param[in] session CLI session + * \param[in] name Parameter name + * \return The CLI parameter that was found, or NULL if not found + */ +bdmfmon_cmd_parm_t *bdmfmon_find_named_parm(bdmf_session_handle session, const char *name); + +/** Find the first CLI parameter whose name starts with the specified string (case insensitive). + * \param[in] session CLI session + * \param[in] prefix Parameter name prefix + * \return The CLI parameter that was found, or NULL if not found + */ +bdmfmon_cmd_parm_t *bdmfmon_find_parm_by_prefix(bdmf_session_handle session, const char *prefix); + +/** Open monitor session + * + * Monitor supports multiple simultaneous sessions with different + * access rights. + * Note that there already is a default session with full administrative rights, + * that takes input from stdin and outputs to stdout. + * \param[in] parm Session parameters. Must not be allocated on the stack. + * \param[out] p_session Session handle + * \return + * 0 =OK\n + * <0 =error code + */ +int bdmfmon_session_open(const bdmf_session_parm_t *parm, bdmf_session_handle *p_session); + +/** Close monitor session. + * \param[in] session Session handle + */ +void bdmfmon_session_close(bdmf_session_handle session ); + +/** Add CLI command + * + * \param[in] dir Handle of directory to add command to. NULL=root + * \param[in] name Command name + * \param[in] cmd_cb Command handler + * \param[in] help Help string + * \param[in] access_right Access rights + * \param[in] extras Optional extras + * \param[in] parms Optional parameters array. Must not be allocated on the stack! + * If parms!=NULL, the last parameter in the array must have name==NULL. + * \return + * 0 =OK\n + * <0 =error code + */ +int bdmfmon_cmd_add(bdmfmon_handle_t dir, const char *name, bdmfmon_cmd_cb_t cmd_cb, + const char *help, bdmf_access_right_t access_right, + const bdmfmon_cmd_extra_parm_t *extras, bdmfmon_cmd_parm_t parms[]); + + +/** Destroy token (command or directory) + * \param[in] token Directory or command token. NULL=root + */ +void bdmfmon_token_destroy(bdmfmon_handle_t token); + +/** Parse and execute input string. + * input_string can contain multiple commands delimited by ';' + * + * \param[in] session Session handle + * \param[in] input_string String to be parsed + * \return + * =0 - OK \n + * -EINVAL - parsing error\n + * other - return code - as returned from command handler. + * It is recommended to return -EINTR to interrupt monitor loop. + */ +int bdmfmon_parse(bdmf_session_handle session, char *input_string); + +/** Read input and parse iteratively until EOF or bdmfmon_is_stopped() + * + * \param[in] session Session handle + * \return + * =0 - OK \n + */ +int bdmfmon_driver(bdmf_session_handle session); + +/** Stop monitor driver. + * The function stops \ref bdmfmon_driver + * \param[in] session Session handle + */ +void bdmfmon_stop(bdmf_session_handle session); + +/** Returns 1 if monitor session is stopped + * \param[in] session Session handle + * \returns 1 if monitor session stopped by bdmfmon_stop()\n + * 0 otherwise + */ +int bdmfmon_is_stopped(bdmf_session_handle session); + +/** Get current directory for the session, + * \param[in] session Session handle + * \return The current directory handle + */ +bdmfmon_handle_t bdmfmon_dir_get(bdmf_session_handle session ); + +/** Set current directory for the session. + * \param[in] session Session handle + * \param[in] dir Directory that should become current + * \return + * =0 - OK + * <0 - error + */ +int bdmfmon_dir_set(bdmf_session_handle session, bdmfmon_handle_t dir); + +/** Get parameter number given its name. + * The function is intended for use by command handlers + * \param[in] session Session handle + * \param[in] parm_name Parameter name + * \return + * >=0 - parameter number\n + * <0 - parameter with this name doesn't exist + */ +int bdmfmon_parm_number(bdmf_session_handle session, const char *parm_name); + +/** Get parameter by name + * The function is intended for use by command handlers + * \param[in] session Session handle + * \param[in] parm_name Parameter name + * \return + * parameter pointer or NULL if not found + */ +bdmfmon_cmd_parm_t *bdmfmon_parm_get(bdmf_session_handle session, const char *parm_name); + +/** Check if parameter is set + * The function is intended for use by command handlers + * \param[in] session Session handle + * \param[in] parm_number Parameter number + * \return + * TRUE if parameter is set, FALSE otherwise + */ +int bdmfmon_parm_is_set(bdmf_session_handle session, int parm_number); + +/** Check if parameter is set + * \param[in] session Session handle + * \param[in] parm_number Parameter number + * \return + * 0 if parameter is set\n + * BCM_ERR_NOENT if parameter is not set + * BCM_ERR_PARM if parm_number is invalid + */ +int bdmfmon_parm_check(bdmf_session_handle session, int parm_number); + + +/** Get enum's string value given its internal value + * \param[in] table Enum table + * \param[in] value Internal value + * \return + * enum string value or NULL if internal value is invalid + */ +static inline const char *bdmfmon_enum_stringval(const bdmfmon_enum_val_t table[], long value) +{ + while(table->name) + { + if (table->val==value) + return table->name; + ++table; + } + return NULL; +} + + +/** Get enum's parameter string value given its internal value + * \param[in] session Session handle + * \param[in] parm_number Parameter number + * \param[in] value Internal value + * \return + * enum string value or NULL if parameter is not enum or + * internal value is invalid + */ +const char *bdmfmon_enum_parm_stringval(bdmf_session_handle session, int parm_number, long value); + + +/** Print CLI parameter value + * \param[in] session Session handle + * \param[in] parm Parameter + */ +void bdmfmon_parm_print(bdmf_session_handle session, const bdmfmon_cmd_parm_t *parm); + + +/** strncpy flavour that always add 0 terminator + * \param[in] dst Destination string + * \param[in] src Source string + * \param[in] dst_size Destination buffer size + * \return dst + */ +static inline char *bdmfmon_strncpy(char *dst, const char *src, uint32_t dst_size) +{ + strncpy(dst, src, dst_size-1); + dst[dst_size-1] = 0; + return dst; +} + + +/** strncat flavour that limits size of destination buffer + * \param[in] dst Destination string + * \param[in] src Source string + * \param[in] dst_size Destination buffer size + * \return dst + */ +static inline char *bdmfmon_strncat(char *dst, const char *src, uint32_t dst_size) +{ + uint32_t dst_len = strlen(dst); + return strncat(dst, src, dst_size-dst_len-1); +} + + +/** strdup + * \param[in] str Destination string + * \return dynamically allocated string replica. Caller must release + */ +char *bdmfmon_strdup(const char *str); + +/* Redefine bdmfmon_session_print --> bdmfmon_print */ +#define bdmfmon_print bdmf_session_print + +#ifdef __cplusplus +} +#endif + +/** @} end bcm_cli group */ + +#endif /* #ifndef BDMF_MON_H */ diff --git a/arch/arm/mach-bcmbca/xrdp/bdmf_system.h b/arch/arm/mach-bcmbca/xrdp/bdmf_system.h new file mode 100644 index 0000000000..f3c19a17f3 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/bdmf_system.h @@ -0,0 +1,307 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* + * + */ + +#ifndef _BDMF_SYSTEM_H_ +#define _BDMF_SYSTEM_H_ + +#include +#include +#include +#include +#define BDMFSYS_STDIO +#include +#include + +#include +#include + +#define bdmf_sort(base, num, size, cmp_func, swap_func) \ + qsort(base, num, size, cmp_func) + +#ifndef __PACKING_ATTRIBUTE_STRUCT_END__ +#define __PACKING_ATTRIBUTE_STRUCT_END__ __attribute__ ((packed)) +#endif +#ifndef __PACKING_ATTRIBUTE_FIELD_LEVEL__ +#define __PACKING_ATTRIBUTE_FIELD_LEVEL__ +#endif + +#define BDMF_RX_CSUM_VERIFIED_MASK 0x01 +#define BDMF_RX_CSUM_VERIFIED_SHIFT 0 +#define SECONDS_TO_USEC 1000000 + +extern uint32_t jiffies; + +/* runner reserved ddr tables */ +#define __exit_refok +#define __init + +/* Allocate/release memory */ +bdmf_phys_addr_t rsv_virt_to_phys(volatile void *vir_addr); +void *rsv_phys_to_virt(bdmf_phys_addr_t phys_addr); +void *bdmf_alloc_rsv(int size, bdmf_phys_addr_t *phys_addr); +void *bdmf_rsv_mem_init(void); +void bdmf_rsv_mem_destroy(void); +void bdmf_rsv_mem_stats(void); + +static inline void *bdmf_alloc(size_t size) +{ + return malloc(size); +} + +static inline void *bdmf_calloc(size_t size) +{ + void *p = bdmf_alloc(size); + if (p) + memset(p, 0, size); + return p; +} + +static inline void bdmf_free(void *p) +{ + free(p); +} + +#define bdmf_alloc_uncached(size, phys_addr_p) bdmf_alloc_rsv(size, phys_addr_p) +#define bdmf_free_uncached(_virt_p, _phys_addr, _size) do { } while(0) + +/* Input/Output */ +#define bdmf_print(format,args...) printf(format, ## args) +#define bdmf_vprint(format,ap) vprintf(format, ap) +#define bdmf_print_error(format,args...) \ + bdmf_print("***Error in %s:%d>"format, __FUNCTION__, __LINE__, ## args) + + +/* Task-aware (recursive) mutex + * The same task can take the same mutex multiple times. + * However, if task B attempts to take mutex that is already taken by task A, + * it will block + */ +typedef struct { int initialized; char b[128]; } bdmf_ta_mutex; +void bdmf_ta_mutex_init(bdmf_ta_mutex *pmutex); +int bdmf_ta_mutex_lock(bdmf_ta_mutex *pmutex); +void bdmf_ta_mutex_unlock(bdmf_ta_mutex *pmutex); +void bdmf_ta_mutex_delete(bdmf_ta_mutex *pmutex); + +#define __BDMF_TA_MUTEX_INITIALIZER(lock) {.initialized = 0} + +typedef bdmf_ta_mutex bdmf_reent_fastlock; +#define bdmf_reent_fastlock_init(plock) bdmf_ta_mutex_init(plock) +#define bdmf_reent_fastlock_lock(plock) bdmf_ta_mutex_lock(plock) +#define bdmf_reent_fastlock_unlock(plock) bdmf_ta_mutex_unlock(plock) + +typedef struct { int initialized; int locked; } bdmf_simple_mutex; +static inline void bdmf_simple_mutex_init(bdmf_simple_mutex *pmutex) +{ + pmutex->locked = 0; + pmutex->initialized = 1; +} + +static inline int bdmf_simple_mutex_lock(const char *func, int line, + bdmf_simple_mutex *pmutex) +{ + if (!pmutex->initialized) + bdmf_simple_mutex_init(pmutex); + if (pmutex->locked) + bdmf_print("%s:%d> LOCK APPLIED WHEN INTERRUPTS LOCKED (expect " + "re-entrant?)!!!\n", func, line); + + pmutex->locked = 1; + + return 0; +} + +static inline void bdmf_simple_mutex_unlock(const char *func, int line, bdmf_simple_mutex *pmutex) +{ + if (!pmutex->initialized) + bdmf_simple_mutex_init(pmutex); + + if (!pmutex->locked) + bdmf_print("%s:%d> UNLOCK APPLIED WHEN INTERRUPTS " + "UNLOCKED!!!\n", func, line); + + pmutex->locked = 0; +} + +static inline void bdmf_simple_mutex_delete(bdmf_simple_mutex *pmutex) +{ + pmutex->locked = 0; + pmutex->initialized = 0; +} + +#define __BDMF_SIMPLE_MUTEX_INITIALIZER(lock) {.initialized = 0} + +/* Fast lock/unlock */ +typedef bdmf_simple_mutex bdmf_fastlock; +#define DEFINE_BDMF_FASTLOCK(lock) \ + bdmf_fastlock lock = __BDMF_SIMPLE_MUTEX_INITIALIZER(lock) +#define bdmf_fastlock_init(plock) bdmf_simple_mutex_init(plock) +#define bdmf_fastlock_lock(plock) \ + bdmf_simple_mutex_lock(__FUNCTION__, __LINE__, plock) +#define bdmf_fastlock_unlock(plock) \ + bdmf_simple_mutex_unlock(__FUNCTION__, __LINE__, plock) +#define bdmf_fastlock_lock_irq(plock, flags) \ + do { \ + bdmf_simple_mutex_lock(__FUNCTION__, __LINE__, plock); \ + flags = 0; \ + } while (flags) +#define bdmf_fastlock_unlock_irq(plock, flags) \ + bdmf_simple_mutex_unlock(__FUNCTION__, __LINE__, plock) + +/* mmap shared area */ +void *bdmf_mmap(const char *fname, uint32_t size); + +/* IRQ handling */ +typedef int (*f_bdmf_irq_cb)(int irq, void *data); +#define BDMFSYS_IRQ__NUM_OF 64 +int bdmf_irq_connect(int irq, f_bdmf_irq_cb cb, void *data); +int bdmf_irq_free(int irq, f_bdmf_irq_cb cb, void *data); +void bdmf_irq_raise(int irq); + +/* + * dcache + */ +#define BCM_MAX_PKT_LEN 2048 /* For simulation only */ + +static inline void bdmf_dcache_flush(unsigned long addr __attribute__((unused)), + unsigned long size __attribute__((unused))) +{ +} + +static inline void bdmf_dcache_inv(unsigned long addr __attribute__((unused)), + unsigned long size __attribute__((unused))) +{ +} + +/*----------------------------------------------------------------------- + * Timers + * todo: add "real" timer mapping + *----------------------------------------------------------------------*/ + +/** timer handle */ +typedef struct bdmf_timer bdmf_timer_t; + +/** timer callback function + * \param[in] timer - timer that has expired + * \param[in] priv - private cookie passed in bdmf_timer_init() + */ +typedef void (*bdmf_timer_cb_t)(bdmf_timer_t *timer, unsigned long priv); + +struct bdmf_timer { + unsigned long priv; + bdmf_timer_cb_t cb; +}; + +/** Initialize timer + * \param[in] timer - timer handle + * \param[in] cb - callback to be called upon expiration + * \param[in] priv - private cooke to be passed to cb() + */ +void bdmf_timer_init(bdmf_timer_t *timer, bdmf_timer_cb_t cb, + unsigned long priv); + +/** Start timer + * \param[in] timer - timer handle that has been initialized using + * bdmf_timer_init() + * \param[in] ticks - number of ticks from now to expiration + * \returns 0=OK or error code <0 + */ +int bdmf_timer_start(bdmf_timer_t *timer, uint32_t ticks); + +/** stop timer + * \param[in] timer - timer to be stopped + * The function is safe to call even if timer is not running + */ +void bdmf_timer_stop(bdmf_timer_t *timer); + +/** Delete timer + * \param[in] timer - timer to be deleted + * The timer is stopped if running + */ +void bdmf_timer_delete(bdmf_timer_t *timer); + +/** Convert ms to ticks + * \param[in] ms - ms + * \returns timer ticks + */ +uint32_t bdmf_ms_to_ticks(uint32_t ms); + + + +#define BDMF_IRQ_NONE 0 /* IRQ is not from this device */ +#define BDMF_IRQ_HANDLED 1 /* IRQ has been handled */ + +#define BDMF_IRQF_DISABLED 1 /* Interrupt is disabled after connect */ + +#ifdef XRDP +typedef int (*int_cb_t)(int irq, void *priv); +typedef struct { + int irq; + int_cb_t int_cb; + void *priv; +} bdmf_int_parm_t; +#endif + +#define MAX_INT_NUM 32 + +/** Connect system interrupt + * \param[in] irq - IRQ number + * \param[in] cpu - CPU number (for SMP) + * \param[in] flags - IRQ flags + * \param[in] isr - ISR + * \param[in] name - device name + * \param[in] priv - Private cookie + * \returns 0=OK, <0- error + */ +int bdmf_int_connect(int irq, int cpu, int flags, + int (*isr)(int irq, void *priv), const char *name, + void *priv); + +/** Disconnect system interrupt + * \param[in] irq - IRQ number + * \param[in] priv - Private cookie passed in bdmf_int_connect() + * \returns 0=OK, <0- error + */ +void bdmf_int_disconnect(int irq, void *priv); + +/** Unmask IRQ + * \param[in] irq - IRQ + */ +static inline void bdmf_int_enable(int irq __attribute__((unused))) +{ +} + +/** Mask IRQ + * \param[in] irq - IRQ + */ +static inline void bdmf_int_disable(int irq __attribute__((unused))) +{ +} + +/*----------------------------------------------------------------------- + * Endian-related macros and constants. + * + * __BYTE_ORDER define is set by GCC compilation environment. + * No need to do anything here. + * The following must be defined: + * __BYTE_ORDER + * __LITTLE_ENDIAN + * __BIG_ENDIAN + * __bswap_16(x) + * __bswap_32(x) + * + *----------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------- + * A few defines to make porting of linux drivers into BDMF smoother + *----------------------------------------------------------------------*/ +struct module; +#define __user +#define __init +#define __exit + +#endif /* _BDMF_SYSTEM_H_ */ diff --git a/arch/arm/mach-bcmbca/xrdp/data_path_init_basic.c b/arch/arm/mach-bcmbca/xrdp/data_path_init_basic.c new file mode 100644 index 0000000000..738138c166 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/data_path_init_basic.c @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + + */ + + +#include "rdd.h" + +#include "data_path_init_basic.h" + +dpi_params_t *p_dpi_cfg; + +uintptr_t rdp_runner_core_addr[GROUPED_EN_SEGMENTS_NUM]; + +static const access_log_tuple_t init_data[] = { + #include "data_path_init_basic_data.h" + { (ACCESS_LOG_OP_STOP << 24), 0 } +}; + +int data_path_init_basic(dpi_params_t *dpi_params) +{ + int rc = 0; + + p_dpi_cfg = dpi_params; + + printf("%s: Restore HW configuration\n", __func__); + rc = access_log_restore(init_data); + printf("%s: Restore HW configuration done. rc=%d\n", __func__, rc); + + return rc; +} + diff --git a/arch/arm/mach-bcmbca/xrdp/data_path_init_basic.h b/arch/arm/mach-bcmbca/xrdp/data_path_init_basic.h new file mode 100644 index 0000000000..4876ec001d --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/data_path_init_basic.h @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + + */ + +#ifndef _DATA_PATH_INIT_BASIC_ +#define _DATA_PATH_INIT_BASIC_ + +#ifndef XRDP +#define XRDP +#endif + +/* includes */ +#include "bdmf_data_types.h" +#include "rdp_common.h" + +/* functions */ +int data_path_init(dpi_params_t *dpi_params); +int data_path_init_basic(dpi_params_t *dpi_params); +#endif + diff --git a/arch/arm/mach-bcmbca/xrdp/packing.h b/arch/arm/mach-bcmbca/xrdp/packing.h new file mode 100644 index 0000000000..deaa86e5c4 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/packing.h @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2012 Broadcom + */ +/* +* +*/ + +#ifndef __PACKING_H_ +#define __PACKING_H_ + +#define __PACKING_ATTRIBUTE_STRUCT_END__ __attribute__ ((packed)) +#define __PACKING_ATTRIBUTE_FIELD_LEVEL__ + +#endif + diff --git a/arch/arm/mach-bcmbca/xrdp/rdd.h b/arch/arm/mach-bcmbca/xrdp/rdd.h new file mode 100644 index 0000000000..4a2e848cf1 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd.h @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +#ifndef _RDD_H_ +#define _RDD_H_ + +#include + +#ifndef __PACKING_ATTRIBUTE_STRUCT_END__ +#include "packing.h" +#endif +#include "rdpa_types.h" +#include "rdpa_cpu_basic.h" + +#include "access_macros.h" + +#include "rdd_data_structures_auto.h" +#include "rdd_platform.h" + +/* task addresses labels from fw compilation */ +#ifndef CONFIG_BCMBCA_XRDP_GPL +#include "rdd_runner_labels.h" +#include "rdd_runner_defs_auto.h" +#endif + + +#endif /* _RDD_H_ */ + diff --git a/arch/arm/mach-bcmbca/xrdp/rdd_common.c b/arch/arm/mach-bcmbca/xrdp/rdd_common.c new file mode 100644 index 0000000000..cd37d0a8c9 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd_common.c @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + +#include "rdd.h" +#include "rdd_runner_proj_defs.h" + +#define LAYER2_HEADER_COPY_DST_OFFSET_ARRAY(var, offset) \ + uint16_t var[] = { \ + [0] = offset - 2, \ + [1] = offset - 10, \ + [2] = offset - 10, \ + [3] = offset - 18, \ + [4] = offset - 18, \ + [5] = offset - 2, \ + [6] = offset - 2, \ + [7] = offset - 10, \ + [8] = offset - 10, \ + [9] = offset - 18, \ + [10] = offset + 6, \ + [11] = offset - 2, \ + [12] = offset - 2, \ + [13] = offset - 10, \ + [14] = offset - 10, \ + [15] = offset + 6, \ + [16] = offset + 6, \ + [17] = offset - 2, \ + [18] = offset - 2, \ + [19] = offset - 10, \ + [20] = offset + 14, \ + [21] = offset + 6, \ + [22] = offset + 6, \ + [23] = offset - 2, \ + [24] = offset - 2, \ + [25] = offset + 14, \ + [26] = offset + 14, \ + [27] = offset + 6, \ + [28] = offset + 6, \ + [29] = offset - 2, \ + } + + +static void __rdd_rx_flow_cfg(uint32_t flow_index, rdd_flow_dest destination, + rdd_rdd_vport vport, uint32_t counter_id) +{ + RDD_RX_FLOW_ENTRY_VIRTUAL_PORT_WRITE_G(vport, + RDD_RX_FLOW_TABLE_ADDRESS_ARR, flow_index); +} + +void rdd_rx_flow_cfg(uint32_t flow_index, rdd_flow_dest destination, + rdd_rdd_vport vport, uint32_t counter_id) +{ + + RDD_BTRACE("flow_index = %d, destination = %d, vport = %d, counter_id " + "= %d, first_time %d\n", flow_index, destination, vport, + counter_id, first_time); + + __rdd_rx_flow_cfg(flow_index, destination, vport, counter_id); +} + diff --git a/arch/arm/mach-bcmbca/xrdp/rdd_common.h b/arch/arm/mach-bcmbca/xrdp/rdd_common.h new file mode 100644 index 0000000000..c665fe2995 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd_common.h @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2014 Broadcom + */ +/* + +*/ + +#ifndef _RDD_COMMON_H +#define _RDD_COMMON_H + +#include "rdp_platform.h" +#include "rdd_defs.h" + +typedef enum +{ + WANBIT, + LANBIT, + ERRORBIT +} wan_or_lan_pd_bit_t; + +#if defined(CONFIG_PHYS_64BIT) +/* 64 bit*/ +#define GET_ADDR_HIGH_LOW(msb_addr, lsb_addr, phys_ring_address) \ + lsb_addr = phys_ring_address & 0xFFFFFFFF; \ + msb_addr = phys_ring_address >> 32; +#else +/* 32 bit */ +#define GET_ADDR_HIGH_LOW(msb_addr, lsb_addr, phys_ring_address) \ + lsb_addr = ((uint32_t)phys_ring_address & 0xFFFFFFFF); \ + msb_addr = 0; +#endif + +#define PORT_OR_WAN_FLOW_TO_TX_FLOW(port , dir) (dir == rdpa_dir_us \ + ? WANBIT << RDD_LOG2_NUM_OF_WAN_FLOWS | port \ + : LANBIT << RDD_LOG2_NUM_OF_WAN_FLOWS | port) + +#define RUNNER_CORE_CONTEXT_ADDRESS(rnr_idx) DEVICE_ADDRESS(RU_BLK(RNR_CNTXT).addr[rnr_idx] + RU_REG_OFFSET(RNR_CNTXT, MEM_ENTRY)) +#define PACKET_BUFFER_PD_PTR(base_addr, task_number) (base_addr + (task_number * sizeof(RDD_PACKET_BUFFER_DTS))) + +#define LAYER2_HEADER_COPY_ROUTINE_ARRAY(var, image, prefix) \ + uint16_t var[] = { \ + [0] = ADDRESS_OF(image, prefix##_14_bytes_8_bytes_align), \ + [1] = ADDRESS_OF(image, prefix##_18_bytes_8_bytes_align), \ + [2] = ADDRESS_OF(image, prefix##_22_bytes_8_bytes_align), \ + [3] = ADDRESS_OF(image, prefix##_26_bytes_8_bytes_align), \ + [4] = ADDRESS_OF(image, prefix##_30_bytes_8_bytes_align), \ + [5] = ADDRESS_OF(image, prefix##_14_bytes_4_bytes_align), \ + [6] = ADDRESS_OF(image, prefix##_18_bytes_4_bytes_align), \ + [7] = ADDRESS_OF(image, prefix##_22_bytes_4_bytes_align), \ + [8] = ADDRESS_OF(image, prefix##_26_bytes_4_bytes_align), \ + [9] = ADDRESS_OF(image, prefix##_30_bytes_4_bytes_align), \ + [10] = ADDRESS_OF(image, prefix##_14_bytes_8_bytes_align), \ + [11] = ADDRESS_OF(image, prefix##_18_bytes_8_bytes_align), \ + [12] = ADDRESS_OF(image, prefix##_22_bytes_8_bytes_align), \ + [13] = ADDRESS_OF(image, prefix##_26_bytes_8_bytes_align), \ + [14] = ADDRESS_OF(image, prefix##_30_bytes_8_bytes_align), \ + [15] = ADDRESS_OF(image, prefix##_14_bytes_4_bytes_align), \ + [16] = ADDRESS_OF(image, prefix##_18_bytes_4_bytes_align), \ + [17] = ADDRESS_OF(image, prefix##_22_bytes_4_bytes_align), \ + [18] = ADDRESS_OF(image, prefix##_26_bytes_4_bytes_align), \ + [19] = ADDRESS_OF(image, prefix##_30_bytes_4_bytes_align), \ + [20] = ADDRESS_OF(image, prefix##_14_bytes_8_bytes_align), \ + [21] = ADDRESS_OF(image, prefix##_18_bytes_8_bytes_align), \ + [22] = ADDRESS_OF(image, prefix##_22_bytes_8_bytes_align), \ + [23] = ADDRESS_OF(image, prefix##_26_bytes_8_bytes_align), \ + [24] = ADDRESS_OF(image, prefix##_30_bytes_8_bytes_align), \ + [25] = ADDRESS_OF(image, prefix##_14_bytes_4_bytes_align), \ + [26] = ADDRESS_OF(image, prefix##_18_bytes_4_bytes_align), \ + [27] = ADDRESS_OF(image, prefix##_22_bytes_4_bytes_align), \ + [28] = ADDRESS_OF(image, prefix##_26_bytes_4_bytes_align), \ + [29] = ADDRESS_OF(image, prefix##_30_bytes_4_bytes_align), \ + } + +#define ANY_VID 0xFFFF + +/* RX APIs*/ +void rdd_rx_flow_cfg(uint32_t flow_index, rdd_flow_dest destination, + rdd_rdd_vport vport, uint32_t cntr_id); +void rdd_mac_type_cfg(rdd_mac_type wan_mac_type); + +/* TX APIs*/ +void rdd_tx_flow_enable(uint16_t port_or_wan_flow, rdpa_traffic_dir dir, + bdmf_boolean enable); + +#endif /* _RDD_COMMON_H */ diff --git a/arch/arm/mach-bcmbca/xrdp/rdd_cpu_rx.c b/arch/arm/mach-bcmbca/xrdp/rdd_cpu_rx.c new file mode 100644 index 0000000000..3aa129a476 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd_cpu_rx.c @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom Corporation + All Rights Reserved + + +*/ + +#include "rdd_cpu_rx.h" + + + + diff --git a/arch/arm/mach-bcmbca/xrdp/rdd_cpu_rx.h b/arch/arm/mach-bcmbca/xrdp/rdd_cpu_rx.h new file mode 100644 index 0000000000..ab2e579a07 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd_cpu_rx.h @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom Corporation + All Rights Reserved + + +*/ + +#ifndef _RDD_CPU_RX_H_ +#define _RDD_CPU_RX_H_ + +#include "bdmf_errno.h" +#include "rdd.h" + +#define HOST_BUFFER_SIZE 2048 +#define RING_INTERRUPT_THRESHOLD_MAX ((1 << 16) - 1) +#define CPU_RING_SIZE_32_RESOLUTION 5 +#define CPU_RING_SIZE_64_RESOLUTION 6 + +#endif /* _RDD_CPU_RX_H_ */ + diff --git a/arch/arm/mach-bcmbca/xrdp/rdd_cpu_tx.h b/arch/arm/mach-bcmbca/xrdp/rdd_cpu_tx.h new file mode 100644 index 0000000000..4b3cebf4a1 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd_cpu_tx.h @@ -0,0 +1,105 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2015 Broadcom Corporation + All Rights Reserved + + +*/ + +#ifndef _RDD_CPU_TX_H_ +#define _RDD_CPU_TX_H_ + + +typedef struct { + void *sysb; /* Buffer pointer */ + void *data; /* Buffer pointer */ + uint32_t fpm_bn; /* Buffer number */ + uint16_t offset; /* Buffer offset */ + uint16_t length; /* Buffer length */ + uint8_t abs_flag:1; /* ABS/FPM */ + uint8_t sbpm_copy:1; /* copy to SBPM/FPM */ + uint8_t fpm_fallback:1; /* if no SBPM copy to FPM */ + uint8_t reserve:5; +} pbuf_t; + + +typedef union { + uint32_t bn1_or_abs2_or_1588 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t data_1588 :18 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#ifndef FIRMWARE_LITTLE_ENDIAN + struct { + uint32_t ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fpm_fallback :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sbpm_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t bn1_or_abs2 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; +#else + struct { + uint32_t bn1_or_abs2 :12 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t sbpm_copy :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t fpm_fallback :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t ssid :4 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; +#endif +#ifndef FIRMWARE_LITTLE_ENDIAN + struct { + uint32_t lag_index :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t reserved2 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; +#else + struct { + uint32_t reserved2 :16 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint32_t lag_index :2 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; +#endif +} cpu_tx_bn1_or_abs2_or_1588; + + +typedef union { + uint8_t wan_flow_source_port :8 __PACKING_ATTRIBUTE_FIELD_LEVEL__; +#ifndef FIRMWARE_LITTLE_ENDIAN + struct { + uint8_t is_vport :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t flow_or_port_id :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; +#else + struct { + uint8_t flow_or_port_id :7 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + uint8_t is_vport :1 __PACKING_ATTRIBUTE_FIELD_LEVEL__; + }; +#endif +} cpu_tx_wan_flow_source_port; + +typedef union { + uint32_t pkt_buf_ptr_low :32; /* 32 lsb of pointer to abs buffer */ +#ifndef FIRMWARE_LITTLE_ENDIAN + struct { + uint32_t fpm_bn0 :18; /* fpm number */ + uint32_t fpm_sop :11; /* start of packet offset */ + uint32_t reserved0 :3; + }; +#else + struct { + uint32_t reserved0 :3; + uint32_t fpm_sop :11; /* start of packet offset */ + uint32_t fpm_bn0 :18; /* fpm number */ + }; +#endif +} pkt_buf_ptr_low_or_fpm_t; + +typedef union { + uint32_t sk_buf_ptr_low :32; +#ifndef FIRMWARE_LITTLE_ENDIAN + struct { + uint32_t data_1558 :18; /* reserved for 1558 data */ + uint32_t reserved1 :14; + }; +#else + struct { + uint32_t data_1558 :18; /* reserved for 1558 data */ + uint32_t reserved1 :14; + }; +#endif +} sk_buf_ptr_low_or_data_1588_t; + +#endif /* _RDD_CPU_TX_H_ */ diff --git a/arch/arm/mach-bcmbca/xrdp/rdd_cpu_tx_ring.c b/arch/arm/mach-bcmbca/xrdp/rdd_cpu_tx_ring.c new file mode 100644 index 0000000000..1b88f38184 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd_cpu_tx_ring.c @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +/* + * cpu_tx_ring.c + */ + +#include "rdd.h" +#include "rdd_cpu_tx_ring.h" +#include "bdmf_errno.h" +#include "bdmf_session.h" +#include "rdp_mm.h" +#if defined(CONFIG_BCMBCA_XRDP_GPL) +#include "xrdp_drv_rnr_regs.h" +#else +#include "xrdp_drv_rnr_regs_ag.h" +#endif + +#define XRDP_USLEEP(_a) udelay(_a) +#define XRDP_ERR_MSG(args...) printf(args) + +static RDD_BBH_TX_RING_TABLE_DTS *bbh_pd_table = NULL; +static RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_DTS *counters_table = NULL; +static RDD_BBH_TX_BB_DESTINATION_TABLE_DTS *bb_dest_table = NULL; +static int tx_pd_idx; +static uint8_t bbh_ingress_counter[8]; + +#define RDD_CPU_TX_MAX_ITERS 2 +#define RDD_CPU_TX_ITER_DELAY 1000 +#define QM_QUEUE_INDEX_DS_FIRST QM_QUEUE_DS_START + +#define RDD_CPU_TX_MAX_BUF_SIZE 2048 + +static int __rdd_cpu_tx_poll(uint8_t tx_port) +{ + volatile RDD_CPU_TX_DESCRIPTOR_DTS *tx_pd; + volatile RDD_BBH_TX_EGRESS_COUNTER_ENTRY_DTS *counters_id; + int old_packet_size, iter, egress_counter_val; + uint8_t *p; + + if (!bbh_pd_table) { /* First call ? */ + bbh_pd_table = RDD_BBH_TX_RING_TABLE_PTR( + get_runner_idx(cfe_core_runner_image)); + counters_table = RDD_DS_TM_BBH_TX_EGRESS_COUNTER_TABLE_PTR( + get_runner_idx(cfe_core_runner_image)); + bb_dest_table = RDD_BBH_TX_BB_DESTINATION_TABLE_PTR( + get_runner_idx(cfe_core_runner_image)); + } + + tx_pd = (volatile RDD_CPU_TX_DESCRIPTOR_DTS *)&bbh_pd_table->entry; + + counters_id = (volatile RDD_BBH_TX_EGRESS_COUNTER_ENTRY_DTS *)&counters_table->entry[0]; + + /* Wait until TX_PD becomes available */ + RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_READ(old_packet_size, tx_pd); + + /* Wait until BBH is available*/ + p = (uint8_t *)counters_id; + + /* in 6858 (XRDP_BBH_PER_LAN_PORT)egress counters are in 64 bit alignment), + * in other 1 byte */ +#if defined(XRDP_BBH_PER_LAN_PORT) + p = p + (tx_port * EGRESS_COUNTER_SIZE); +#else + p = p + tx_port; +#endif + + RDD_BBH_TX_EGRESS_COUNTER_ENTRY_COUNTER_READ(egress_counter_val, p); + + for (iter = 0; ((old_packet_size!=0) || + ((bbh_ingress_counter[tx_port] - egress_counter_val) >= 8)) && + (iter < RDD_CPU_TX_MAX_ITERS); iter++) { + XRDP_USLEEP(RDD_CPU_TX_ITER_DELAY); + RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_READ(old_packet_size, tx_pd); + RDD_BBH_TX_EGRESS_COUNTER_ENTRY_COUNTER_READ(egress_counter_val, p); + } + if (iter == RDD_CPU_TX_MAX_ITERS) { + printf("non empty at index %d or bbh full(ingress=%d, " + "egress=%d,diff=%d)\n", tx_pd_idx, + bbh_ingress_counter[tx_port], egress_counter_val, + bbh_ingress_counter[tx_port] - egress_counter_val); + return BDMF_ERR_INTERNAL; + } + + return BDMF_ERR_OK; +} + +static uint32_t __rdd_cpu_tx_get_bb_id(uint8_t tx_port) +{ +#ifdef CONFIG_BCM96858 + switch (tx_port) + { + case 0: + return BB_ID_TX_BBH_4; + case 1: + return BB_ID_TX_BBH_1; + case 2: + return BB_ID_TX_BBH_2; + case 3: + return BB_ID_TX_BBH_3; + case 4: + return BB_ID_TX_BBH_0; + case 5: + return BB_ID_TX_BBH_5; + case 6: + return BB_ID_TX_BBH_6; + case 7: + return BB_ID_TX_BBH_7; + default: + return BB_ID_TX_BBH_0; + } +#else + return (BB_ID_TX_LAN + (tx_port << 6)); +#endif +} + +#define MIN_PACKET_LENGTH_WITHOUT_CRC 60 + +#if defined(CONFIG_BCM63146) +int rdd_cpu_tx_new(uint8_t *buffer, uint32_t length, uint8_t tx_port) +{ + volatile RDD_CPU_TX_DESCRIPTOR_DTS *tx_pd; + volatile RDD_BB_DESTINATION_ENTRY_DTS *bb_dest; + uint32_t bb_id; + uint32_t *tx_buffer_ptr = (uint32_t *)PACKET_BUFFER_POOL_TABLE_ADDR_TX; + int rc; + + if (length >= RDD_CPU_TX_MAX_BUF_SIZE) { + printf("ERR: can't transmit buffer with length %u longer " + "than %d\n", length, RDD_CPU_TX_MAX_BUF_SIZE); + return BDMF_ERR_PARM; + } + + rc = __rdd_cpu_tx_poll(tx_port); + if (rc) + return rc; + + tx_pd = (volatile RDD_CPU_TX_DESCRIPTOR_DTS *)&bbh_pd_table->entry; + bb_dest = (volatile RDD_BB_DESTINATION_ENTRY_DTS *)&bb_dest_table->entry; + + /* copy buffer to the fix location */ + memcpy(tx_buffer_ptr, buffer, length); + FLUSH_RANGE(tx_buffer_ptr, length); + + /* complete TX descriptor */ + RDD_BBH_TX_DESCRIPTOR_LAST_WRITE(1, tx_pd); + RDD_BBH_TX_DESCRIPTOR_ABS_WRITE(1, tx_pd); + RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_0_WRITE(1, tx_pd); + RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_1_WRITE(1, tx_pd); + + bb_id = __rdd_cpu_tx_get_bb_id(tx_port); + RDD_BB_DESTINATION_ENTRY_BB_DESTINATION_WRITE(bb_id, bb_dest); + + /* must be latest write */ + if (unlikely(length < MIN_PACKET_LENGTH_WITHOUT_CRC)) + length = MIN_PACKET_LENGTH_WITHOUT_CRC; + RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_WRITE(length, tx_pd); + + WMB(); + + /* update ingress counter */ + bbh_ingress_counter[tx_port] += 1; + ag_drv_rnr_regs_cfg_cpu_wakeup_set( + get_runner_idx(cfe_core_runner_image), + IMAGE_0_CFE_CORE_CPU_TX_THREAD_NUMBER); + + return BDMF_ERR_OK; +} +#endif + +int rdd_cpu_tx(uint32_t length, uint16_t bn0, uint16_t bn1, uint8_t bns_num, + uint8_t tx_port) +{ + volatile RDD_CPU_TX_DESCRIPTOR_DTS *tx_pd; + volatile RDD_BB_DESTINATION_ENTRY_DTS *bb_dest; + uint32_t bb_id; + int rc; + + if (length >= RDD_CPU_TX_MAX_BUF_SIZE) { + printf("ERR: can't transmit buffer with length %u longer " + "than %d\n", length, RDD_CPU_TX_MAX_BUF_SIZE); + return BDMF_ERR_PARM; + } + + rc = __rdd_cpu_tx_poll(tx_port); + if (rc) + return rc; + + tx_pd = (volatile RDD_CPU_TX_DESCRIPTOR_DTS *)&bbh_pd_table->entry; + bb_dest = (volatile RDD_BB_DESTINATION_ENTRY_DTS *)&bb_dest_table->entry; + + /* transmit */ + memset((void *)tx_pd, 0, sizeof(*tx_pd)); + RDD_BBH_TX_DESCRIPTOR_SOF_WRITE(0, tx_pd); + RDD_BBH_TX_DESCRIPTOR_LAST_WRITE(1, tx_pd); + RDD_BBH_TX_DESCRIPTOR_AGG_PD_WRITE(0, tx_pd); + RDD_BBH_TX_DESCRIPTOR_ABS_WRITE(0, tx_pd); + RDD_BBH_TX_DESCRIPTOR_SOP_WRITE(0, tx_pd); + RDD_BBH_TX_DESCRIPTOR_BN0_FIRST_WRITE(bn0, tx_pd); + RDD_BBH_TX_DESCRIPTOR_BN1_FIRST_WRITE(bn1, tx_pd); + RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_0_WRITE(1, tx_pd); + RDD_BBH_TX_DESCRIPTOR_TARGET_MEM_1_WRITE(1, tx_pd); + RDD_BBH_TX_DESCRIPTOR_BN_NUM_WRITE(bns_num, tx_pd); + + bb_id = __rdd_cpu_tx_get_bb_id(tx_port); + RDD_BB_DESTINATION_ENTRY_BB_DESTINATION_WRITE(bb_id, bb_dest); + + /* must be latest write */ + if (unlikely(length < MIN_PACKET_LENGTH_WITHOUT_CRC)) + length = MIN_PACKET_LENGTH_WITHOUT_CRC; + RDD_BBH_TX_DESCRIPTOR_PACKET_LENGTH_WRITE(length, tx_pd); + + /* update ingress counter */ + bbh_ingress_counter[tx_port] += 1; + ag_drv_rnr_regs_cfg_cpu_wakeup_set( + get_runner_idx(cfe_core_runner_image), + IMAGE_0_CFE_CORE_CPU_TX_THREAD_NUMBER); + + return BDMF_ERR_OK; +} + diff --git a/arch/arm/mach-bcmbca/xrdp/rdd_cpu_tx_ring.h b/arch/arm/mach-bcmbca/xrdp/rdd_cpu_tx_ring.h new file mode 100644 index 0000000000..d3848051dd --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd_cpu_tx_ring.h @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +/* + * cpu_tx_ring.h + */ + +#ifndef _CPU_TX_RING_H_ +#define _CPU_TX_RING_H_ + + +#if defined(CONFIG_BCM63146) +int rdd_cpu_tx_new(uint8_t *buffer, uint32_t length, uint8_t tx_port); +#endif +int rdd_cpu_tx(uint32_t length, uint16_t bn0, uint16_t bn1, uint8_t bns_num, uint8_t tx_port); + + +#endif /* _CPU_TX_RING_H_ */ diff --git a/arch/arm/mach-bcmbca/xrdp/rdd_defs.h b/arch/arm/mach-bcmbca/xrdp/rdd_defs.h new file mode 100644 index 0000000000..bbb85a5787 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd_defs.h @@ -0,0 +1,263 @@ +/* + <:copyright-BRCM:2014-2016:DUAL/GPL:standard + + Copyright (c) 2014-2016 Broadcom + All Rights Reserved + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, as published by + the Free Software Foundation (the "GPL"). + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + + A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +:> +*/ + +#ifndef _RDD_DEFS_H +#define _RDD_DEFS_H + +#include "rdpa_types.h" +#include "rdpa_cpu_basic.h" +#include "rdd_runner_proj_defs.h" +#include "rdd_map_auto.h" + +#define ADDRESS_OF(image, task_name) image##_##task_name + +#define RDD_LAYER2_HEADER_MINIMUM_LENGTH 14 +#define RDD_MAX_WAN_FLOW 255 +#define RDD_NUM_OF_WAN_FLOWS 256 +#define RDD_LOG2_NUM_OF_WAN_FLOWS 8 +#define RX_FLOW_CONTEXTS_NUMBER (256 + 64) +#define TX_FLOW_CONTEXTS_NUMBER RX_FLOW_CONTEXTS_NUMBER +#define IPTV_CTX_ENTRY_IDX_NULL 0x0 +#define RDD_PACKET_HEADROOM_OFFSET 18 +#define RDD_CONTEXT_TABLE_SIZE (64 * 1024) + +#define THREAD_WAKEUP_REQUEST(x) (((x) << 4) + 1) + +#define RDD_PHYS_PORT_WAN_PON rdpa_emac__num_of + +typedef uint32_t rdd_vport_id_t; +typedef uint32_t rdd_emac_id_vector_t; +typedef unsigned long long rdd_vport_vector_t; +typedef uint32_t rdd_wan_channel_id_t; + +typedef enum { + rdd_wan_gpon = 0, + rdd_wan_epon = 1, + rdd_wan_ae = 2, +} +rdd_wan_mode_t; + +typedef enum { + RDD_TX_QUEUE_0 = 0, + RDD_TX_QUEUE_1 = 1, + RDD_TX_QUEUE_2 = 2, + RDD_TX_QUEUE_3 = 3, + RDD_TX_QUEUE_4 = 4, + RDD_TX_QUEUE_5 = 5, + RDD_TX_QUEUE_6 = 6, + RDD_TX_QUEUE_7 = 7, + RDD_TX_QUEUE_LAST = 7, + RDD_TX_QUEUE_NUMBER = RDD_TX_QUEUE_LAST + 1, +} rdd_tx_queue_id_t; + +typedef struct { + uint32_t rate; + uint32_t limit; +} rdd_rate_limit_params_t; + +typedef struct { + uint32_t sustain_budget; + rdd_rate_limit_params_t peak_budget; + uint32_t peak_weight; +} rdd_rate_cntrl_params_t; + +typedef enum { + RDD_RATE_LIMITER_PORT_0 = 0, + RDD_RATE_LIMITER_PORT_1 = 1, + RDD_RATE_LIMITER_PORT_2 = 2, + RDD_RATE_LIMITER_PORT_3 = 3, + RDD_RATE_LIMITER_PORT_4 = 4, + RDD_RATE_LIMITER_PORT_5 = 5, + RDD_RATE_LIMITER_PORT_6 = 6, + RDD_RATE_LIMITER_SERVICE_QUEUE_0 = 6, + RDD_RATE_LIMITER_PORT_7 = 7, + RDD_RATE_LIMITER_PORT_8 = 8, + RDD_RATE_LIMITER_PORT_9 = 9, + RDD_RATE_LIMITER_PORT_10 = 10, + RDD_RATE_LIMITER_PORT_11 = 11, + RDD_RATE_LIMITER_PORT_12 = 12, + RDD_RATE_LIMITER_PORT_13 = 13, + RDD_RATE_LIMITER_SERVICE_QUEUE_7 = 13, + RDD_RATE_LIMITER_PORT_14 = 14, + RDD_RATE_LIMITER_SERVICE_QUEUE_OVERALL = 14, + RDD_RATE_LIMITER_PORT_15 = 15, + RDD_RATE_LIMITER_PORT_LAST = 15, + RDD_RATE_LIMITER_DISABLED = 16, +} rdd_rate_limiter_t; + +typedef enum { + RDD_QUEUE_PROFILE_0 = 0, + RDD_QUEUE_PROFILE_1, + RDD_QUEUE_PROFILE_2, + RDD_QUEUE_PROFILE_3, + RDD_QUEUE_PROFILE_4, + RDD_QUEUE_PROFILE_5, + RDD_QUEUE_PROFILE_6, + RDD_QUEUE_PROFILE_7, + RDD_QUEUE_PROFILE_DISABLED = 8, +} rdd_queue_profile_id_t; + +typedef enum { + RDD_TPID_ID_0 = 0, + RDD_TPID_ID_1, + RDD_TPID_ID_2, + RDD_TPID_ID_3, + RDD_TPID_ID_4, + RDD_TPID_ID_5, + RDD_TPID_ID_6, + RDD_TPID_ID_7, +} rdd_tpid_id_t; + +/* alias for backward compatibility */ +typedef rdd_tpid_id_t rdd_tpid_id; + +typedef struct { + uint32_t min_threshold; + uint32_t max_threshold; + uint32_t max_drop_probability; +} rdd_prio_class_thresholds_t; + +typedef struct { + rdd_prio_class_thresholds_t high_priority_class; + rdd_prio_class_thresholds_t low_priority_class; + bdmf_boolean us_flow_control_mode; /* 0 for disabled, 1 for enabled */ +} rdd_queue_profile_t; + +/* tm - common definitions */ +#define EXPONENT_LIST_LEN 4 +#define MANTISSA_LEN 14 +#define EXPONENT_LEN 2 +#define RL_MAX_BUCKET_SIZE \ + (((1 << MANTISSA_LEN) - 1) << exponent_list[EXPONENT_LIST_LEN - 1]) + +typedef uint8_t quantum_number_t; + +typedef enum { + RDD_SCHED_TYPE_BASIC, + RDD_SCHED_TYPE_COMPLEX, +} rdpa_rdd_sched_type_t; + +typedef enum { + RDD_RL_TYPE_BASIC, + RDD_RL_TYPE_COMPLEX, +} rdpa_rdd_rl_type_t; + +typedef struct { + uint8_t exponent; + uint16_t mantissa; +} rdd_rl_float_t; + +/* find the first core of module_idx */ +static inline int get_runner_idx(rdp_runner_image_e module_idx) +{ + int i; + + for (i = 0; i < NUM_OF_RUNNER_CORES; ++i) + if (rdp_core_to_image_map[i] == module_idx) + return i; + + return NUM_OF_RUNNER_CORES; +} + +/* returns the i'th bit in a vector */ +static inline int get_location_of_bit_in_mask(uint8_t idx, uint32_t mask) +{ + uint8_t i, count = 0; + + for (i = 0; i < 32; ++i) { + if (mask & 1) + count++; + if (idx == count) + return i; + mask = mask >> 1; + } + return (-1); +} + +/* count the number of bits in a vector */ +static inline uint8_t asserted_bits_count_get(uint32_t mask) +{ + uint8_t i, count = 0; + + for (i = 0; i < 32; ++i) { + if (mask & 1) + count++; + mask = mask >> 1; + } + return count; +} + +static inline rdd_rl_float_t rdd_rate_limiter_get_floating_point_rep( + uint32_t fixed_point, uint32_t *exponent_list) +{ + rdd_rl_float_t floating_point = {}; + uint32_t i; + + for (i = EXPONENT_LIST_LEN - 1; i > 0; i--) { + if (fixed_point > (((1 << MANTISSA_LEN) - 1) << + exponent_list[i - 1])) { + floating_point.exponent = i; + break; + } + } + floating_point.mantissa = fixed_point >> + exponent_list[floating_point.exponent]; + if ((exponent_list[floating_point.exponent] > 0) && + ((fixed_point >> (exponent_list[floating_point.exponent] - 1)) & 1)) + floating_point.mantissa++; + + return floating_point; +} + +static inline uint32_t rdd_rate_to_alloc_unit(uint32_t rate, uint32_t period) +{ + return ((rate + ((1000000 / period) / 2)) / (1000000 / period)); +} + +typedef struct { + uint32_t good_tx_packet; + uint16_t error_tx_packets_discard; +} rdd_service_queue_pm_counters_t; + +typedef struct { + uint32_t rx_packets; + uint32_t tx_packets; + uint32_t rx_bytes; + uint32_t tx_bytes; + uint32_t crc_err; + uint32_t rx_drop_pkt; +} rdd_vport_pm_counters_t; + +typedef struct { + uint8_t to_lan; + uint8_t tx_flow; /**< US: Gem Flow or LLID ; DS : VPORT */ + rdd_vport_id_t egress_port; + rdpa_qos_method qos_method; + uint8_t priority; + rdpa_forward_action action; /**< forward/drop/cpu */ +} rdd_ic_context_t; + +#define RDD_TRACE(fmt, args...) do { } while (0) +#define RDD_BTRACE(fmt, args...) do { } while (0) + +#endif /* _RDD_DEFS_H */ diff --git a/arch/arm/mach-bcmbca/xrdp/rdd_init.h b/arch/arm/mach-bcmbca/xrdp/rdd_init.h new file mode 100644 index 0000000000..a039b15488 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd_init.h @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +#ifndef _RDD_INIT_H +#define _RDD_INIT_H + +typedef struct +{ + uint8_t *ddr0_runner_base_ptr; + int is_basic; +} rdd_init_params_t; + +int rdd_init(void); +void rdd_exit(void); + +int rdd_data_structures_init(rdd_init_params_t *init_params); + + +#endif /* _RDD_INIT_H */ diff --git a/arch/arm/mach-bcmbca/xrdp/rdd_platform.h b/arch/arm/mach-bcmbca/xrdp/rdd_platform.h new file mode 100644 index 0000000000..33de52251d --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdd_platform.h @@ -0,0 +1,172 @@ +/* + <:copyright-BRCM:2013-2016:DUAL/GPL:standard + + Copyright (c) 2013-2016 Broadcom + All Rights Reserved + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, as published by + the Free Software Foundation (the "GPL"). + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + + A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + :> + */ + +#ifndef _RDD_PLATFORM_H +#define _RDD_PLATFORM_H + +#include "rdd_map_auto.h" +#include "rdd_common.h" + +#if defined(XRDP_BBH_PER_LAN_PORT) +#define EGRESS_COUNTER_SIZE 8 +#else +#define EGRESS_COUNTER_SIZE 1 +#endif + +extern uintptr_t rdp_runner_core_addr[]; + +#define RDD_VIRT_TO_PHYS(_addr) \ + virt_to_phys((const volatile void *)(uintptr_t)_addr) +#define RDD_PHYS_TO_VIRT(_addr) phys_to_virt(_addr) +#define RDD_RSV_VIRT_TO_PHYS(_addr) \ + RDD_VIRT_TO_PHYS((volatile void *)(uintptr_t)_addr) +#define RDD_RSV_PHYS_TO_VIRT(_addr) RDD_PHYS_TO_VIRT(_addr) + +typedef enum { + rdd_size_8, + rdd_size_16, + rdd_size_32, +} rdd_entry_size_t; + +typedef struct rdd_module { + int (*init)(const struct rdd_module *); + uint32_t context_offset; + uint32_t context_size; + uint32_t res_offset; + uint32_t *cfg_ptr; + void *params; +} rdd_module_t; + +static inline void _rdd_module_init(rdd_module_t *module) +{ + if (module->init) + module->init(module); +} + +static inline void _rdd_i_write(uint32_t *addr_arr, uint32_t addr, uint32_t val, + uint32_t i, rdd_entry_size_t size) +{ + uint32_t *entry; + int mem_id; + + for (mem_id = 0; mem_id < GROUPED_EN_SEGMENTS_NUM; mem_id++) { + if (addr_arr[mem_id] == INVALID_TABLE_ADDRESS) + continue; + + entry = (uint32_t *)(DEVICE_ADDRESS(( + rdp_runner_core_addr[mem_id] + + addr_arr[mem_id]) + addr)); + switch (size) { + case rdd_size_32: + MWRITE_I_32(entry, i, val); + break; + case rdd_size_16: + MWRITE_I_16(entry, i, val); + break; + default: + MWRITE_I_8(entry, i, val); + break; + } + } +} + +static inline uint32_t _rdd_i_read(uint32_t *addr_arr, uint32_t addr, + uint32_t i, rdd_entry_size_t size) +{ + uint32_t *entry; + int mem_id; + + for (mem_id = 0; mem_id < GROUPED_EN_SEGMENTS_NUM; mem_id++) { + if (addr_arr[mem_id] == INVALID_TABLE_ADDRESS) + continue; + + entry = (uint32_t *)(DEVICE_ADDRESS(( + rdp_runner_core_addr[mem_id] + + addr_arr[mem_id]) + addr)); + switch (size) { + case rdd_size_32: + return MGET_I_32(entry, i); + case rdd_size_16: + return MGET_I_16(entry, i); + default: + return MGET_I_8(entry, i); + } + } + return 0; +} + +static inline void _rdd_field_write(uint32_t *addr_arr, uint32_t addr, + uint32_t val, uint32_t lsb, uint32_t width, + rdd_entry_size_t size) +{ + uint32_t *entry; + int mem_id; + + for (mem_id = 0; mem_id < GROUPED_EN_SEGMENTS_NUM; mem_id++) { + if (addr_arr[mem_id] == INVALID_TABLE_ADDRESS) + continue; + + entry = (uint32_t *)(DEVICE_ADDRESS(( + rdp_runner_core_addr[mem_id] + + addr_arr[mem_id]) + addr)); + switch (size) { + case rdd_size_32: + FIELD_MWRITE_32(entry, lsb, width, val); + break; + case rdd_size_16: + FIELD_MWRITE_16(entry, lsb, width, val); + break; + default: + FIELD_MWRITE_8(entry, lsb, width, val); + break; + } + } +} + +static inline uint32_t _rdd_field_read(uint32_t *addr_arr, uint32_t addr, + uint32_t lsb, uint32_t width, + rdd_entry_size_t size) +{ + uint32_t *entry; + int mem_id; + + for (mem_id = 0; mem_id < GROUPED_EN_SEGMENTS_NUM; mem_id++) { + if (addr_arr[mem_id] == INVALID_TABLE_ADDRESS) + continue; + + entry = (uint32_t *)(DEVICE_ADDRESS(( + rdp_runner_core_addr[mem_id] + + addr_arr[mem_id]) + addr)); + switch (size) { + case rdd_size_32: + return FIELD_MGET_32(entry, lsb, width); + case rdd_size_16: + return FIELD_MGET_16(entry, lsb, width); + default: + return FIELD_MGET_8(entry, lsb, width); + } + } + return 0; +} +#endif + diff --git a/arch/arm/mach-bcmbca/xrdp/rdp_common.h b/arch/arm/mach-bcmbca/xrdp/rdp_common.h new file mode 100644 index 0000000000..2edfec263f --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdp_common.h @@ -0,0 +1,216 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +#ifndef RDP_COMMON_H_INCLUDED +#define RDP_COMMON_H_INCLUDED + +#include "rdp_platform.h" +#include "rdd.h" +#include "access_macros.h" + +/* default values for PARSER */ +#define PARSER_TCP_CTL_FLAGS 0x07 +#define PARSER_EXCP_IP_HDR_LEN_ERR (1 << 0) +#define PARSER_EXCP_CHKSUM_ERR (1 << 1) +#define PARSER_EXCP_ETH_MULCST (1 << 2) +#define PARSER_EXCP_IP_MULCST (1 << 3) +#define PARSER_EXCP_DISABLE_IP_LEN_ERR (1 << 4) +#define PARSER_EXCP_DISABLE_IP_VER_TEST (1 << 5) +/* defines the protocol of ppp_code_1 (1 - IPv6, 0 - IPv4) in + * register PPP_IP_Protocol_Code */ +#define PARSER_EXCP_PPP_CODE_1_PROTOCOL (1 << 7) +#define PARSER_EXCP_IP_L2_MULCST (1 << 10) +#define PARSER_EXCP_L4_INV_5_TUPPLE (1 << 11) +#define PARSER_EXCP_UDP_1588 (1 << 12) +#define PARSER_EXCP_DHCP (1 << 13) +/* MAC_SPOF bit is located in bit [3] on the eng_conf register (ENG) */ +#define PARSER_EXCP_MAC_SPOOF (1 << 3) +#define PARSER_EXCP_STATUS_BITS \ + (PARSER_EXCP_IP_HDR_LEN_ERR | PARSER_EXCP_CHKSUM_ERR | \ + PARSER_EXCP_ETH_MULCST | PARSER_EXCP_IP_MULCST | \ + PARSER_EXCP_PPP_CODE_1_PROTOCOL | PARSER_EXCP_IP_L2_MULCST | \ + PARSER_EXCP_L4_INV_5_TUPPLE | PARSER_EXCP_UDP_1588 | PARSER_EXCP_DHCP) +/* eng_conf register default configuration*/ +#define PARSER_AH_DETECTION 0x18000 | PARSER_EXCP_MAC_SPOOF +#define PARSER_PPP_PROTOCOL_CODE_0_IPV4 0x21 +#define PARSER_PPP_PROTOCOL_CODE_1_IPV6 0x57 +#define PARSER_IP_PROTOCOL_IPIP 4 +/* Profile 0 for DS, profile 1 for US */ +#define PARSER_PROFILE_US 0x02 + +typedef enum { + DMA_BUFSIZE_128 = 0, + DMA_BUFSIZE_256 = 1, + DMA_BUFSIZE_512 = 2, + DMA_BUFSIZE_1024 = 3, + DMA_BUFSIZE_2048 = 4, +} drv_rnr_dma_bufsize_t; + +typedef enum ddr_buf_size_e { + BUF_256 = 0, + BUF_512, + BUF_1K, + BUF_2K, + BUF_4K +} ddr_buf_size_e; + +void lookup_bbh_tx_bufsz_by_fpm_bufsz(uint32_t *fpm_bufsize, + uint8_t *bbh_tx_bufsize); +void lookup_dma_bufsz_by_fpm_bufsz(uint32_t *fpm_bufsz, uint8_t *dma_bufsz); + +typedef struct { + uint32_t low; + uint8_t high; +} ddr_addr; + +typedef enum { + bcm_tag_opcode0, + bcm_tag_opcode1 +} bcm_tag_t; + +typedef enum { + hash_max_16_entries_per_engine, + hash_max_32_entries_per_engine, + hash_max_64_entries_per_engine, + hash_max_128_entries_per_engine, + hash_max_256_entries_per_engine, + hash_max_512_entries_per_engine, + hash_max_1k_entries_per_engine, + hash_max_1_5k_entries_per_engine, +} tbl_size_e; + +typedef struct { + uint32_t mtu_size; + uint32_t headroom_size; + bcm_tag_t bcmsw_tag; + /* runner tables DDR base address */ + ddr_addr rdp_phy_ddr_rnr_tables_base; + /* runner tables DDR0 virtual base address */ + void *rdp_ddr_rnr_tables_base_virt; + /* fpm pool DDR0 virtual base address for unicast packets */ + void *rdp_ddr_pkt_base_virt; + uint32_t enabled_port_map; + uint32_t runner_freq; /* rdp block clock */ + uint32_t fpm_buf_size; + int xfi_port; + uint32_t bbh_id_gbe_wan; /* bbh_id for gbe port */ + /* define the number of queue for DS queues */ + uint16_t number_of_ds_queues; + /* define the number of queue for US queues */ + uint16_t number_of_us_queues; + /* define the number of queue for SERVICE queues */ + uint16_t number_of_service_queues; +#ifdef G9991 + rdpa_emac system_port; + uint32_t g9991_port_vec; + uint32_t g9991_bbh_vec; +#endif + bdmf_boolean dpu_split_scheduling_mode; + tbl_size_e iptv_table_size; + tbl_size_e arl_table_size; +} dpi_params_t; + +typedef struct bbh_to_dma_x { + bbh_id_e bbh_id; + dma_id_e dma_id; +} bbh_to_dma_x_t; + +/* QM queue index */ +typedef uint16_t rdp_qm_queue_idx_t; + +/* FPM pool id */ +typedef enum { + FPM_POOL_ID_0 = 0, + FPM_POOL_ID_1 = 1, + FPM_POOL_ID_2 = 2, + FPM_POOL_ID_3 = 3, +} fpm_pool_id_e; + +/* FPM user group */ +typedef enum { + FPM_DS_UG = 0, + FPM_US_UG = 1, + FPM_WLAN_UG = 2, + FPM_ALL_PASS_UG = 3, +} fpm_ug_id_e; + +/* Peripheral */ +typedef enum { + QM_PERIPH_ID_ETH0 = 0, + QM_PERIPH_ID_ETH1 = 1, + QM_PERIPH_ID_ETH2 = 2, + QM_PERIPH_ID_ETH3 = 3, + QM_PERIPH_ID_GPON = 4, + QM_PERIPH_ID_EPON = 5, + + QM_PERIPH_ID__NUM_OF = 6 +} qm_periph_id_e; + +typedef enum ddr_byte_res_e { + RES_1B = 0, + RES_2B +} ddr_byte_res_e; + +typedef enum natc_tbl_id_e { + NATC_TBL0_ID = 0, + NATC_TBL1_ID, + NATC_TBL2_ID, + NATC_TBL3_ID, + NATC_TBL4_ID, + NATC_TBL5_ID, + NATC_TBL6_ID, + NATC_TBL7_ID, + NATC_TBL_ID_LAST = NATC_TBL7_ID, +} natc_tbl_id_e; + +typedef enum natc_eng_id_e { + NATC_ENG0_ID = 0, + NATC_ENG1_ID, + NATC_ENG2_ID, + NATC_ENG3_ID, + NATC_ENG_ID_LAST = NATC_ENG3_ID, +} natc_eng_id_e; + +typedef enum ubus_mstr_id_e { + UBUS_MSTR0_ID = 0, + UBUS_MSTR1_ID, + UBUS_MSTR_ID_LAST = UBUS_MSTR1_ID, +} ubus_mstr_id_e; + +typedef enum xlif_channel_id_e { + CHANNEL0_ID = 0, + CHANNEL1_ID, + CHANNEL2_ID, + CHANNEL3_ID, + CHANNEL4_ID, + CHANNEL5_ID, + CHANNEL6_ID, + CHANNEL7_ID, + CHANNEL_ID_LAST = CHANNEL7_ID, +} xlif_channel_id_e; + +#define BB_ID_CPU0 (BB_ID_LAST + 1) +#define BB_ID_CPU1 (BB_ID_LAST + 2) +#define BB_ID_CPU2 (BB_ID_LAST + 3) + +/* HASH key masks */ +/* IPTV */ +#define HASH_TABLE_IPTV_KEY_MASK_LO 0xFFFFFFFF /* 32bit key */ +/* Only 12 bits of internal context are used */ +#define HASH_TABLE_IPTV_KEY_MASK_HI 0x0000FFFF + +/* ARL */ +#define HASH_TABLE_ARL_KEY_MASK_LO 0xFFFFFFFF /* 60bit key */ +#define HASH_TABLE_ARL_KEY_MASK_HI 0xFFFFFFF + +/* Bridge and VLAN */ +#define HASH_TABLE_BRIDGE_AND_VLAN_LKP_MASK_LO 0x000FFFFF /* 20bit key */ +#define HASH_TABLE_BRIDGE_AND_VLAN_LKP_MASK_HI 0x0 + +#endif /* RDP_COMMON_H_INCLUDED */ + diff --git a/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring.c b/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring.c new file mode 100644 index 0000000000..751c08eb6c --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring.c @@ -0,0 +1,198 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + + */ + +/* This file contains the implementation of the Runner CPU ring interface */ + +#include "rdp_cpu_ring.h" +#include "rdd_cpu_rx.h" +#include "rdp_cpu_ring_inline.h" +#include "rdp_mm.h" +#include "bdmf_system.h" + +/* reason statistics for US/DS */ +int stats_reason[2][rdpa_cpu_reason__num_of] = {}; +EXPORT_SYMBOL(stats_reason); + +#define RW_INDEX_SIZE (sizeof(uint16_t)) + +#ifndef CONFIG_BCMBCA_XRDP_GPL +#include "rdd_ag_cpu_rx.h" +#include "rdp_drv_sbpm.h" +#else +#include "rdpa_gpl_sbpm.h" +#endif + +static int GetPdFromRamFifo(uint32_t *word0, uint32_t *word1, uint32_t *word2, + uint32_t *word3) +{ + static int idx = 0; +#if defined(CONFIG_BCM63146) + static int prev_idx = 0; + volatile uint32_t *desc_addr = (uint32_t *)RDD_SRAM_PD_FIFO_PTR(0); + volatile uint32_t *prev_desc_addr = (uint32_t *)RDD_SRAM_PD_FIFO_PTR(0); + RDD_CPU_RX_LAST_READ_INDEX_DTS *last_read_idx_ptr = RDD_CPU_RX_LAST_READ_INDEX_PTR(0); + CPU_RX_DESCRIPTOR prev_rx_desc; + + desc_addr += idx; + *word2 = swap4bytes(*(desc_addr + 2)); + *word3 = swap4bytes(*(desc_addr + 3)); + *word1 = swap4bytes(*(desc_addr + 1)); + *word0 = swap4bytes(*(desc_addr)); + + if ((*word2 == 0) || (*word1 == 0)) + return BDMF_ERR_NO_MORE; + + /* need to invalidate cache for the previous buffer, or else + * HW cache eviction might corrupt the next RX packet that uses + * the same buffer */ + if (likely(prev_idx != idx)) { + prev_desc_addr += prev_idx; + prev_rx_desc.word0 = swap4bytes(*(prev_desc_addr)); + prev_rx_desc.word1 = swap4bytes(*(prev_desc_addr + 1)); + INV_RANGE(prev_rx_desc.word0, prev_rx_desc.fpm.packet_length); + } + prev_idx = idx; + + MWRITE_16(last_read_idx_ptr, ((uintptr_t)desc_addr & 0xffff)); + idx = (idx + 4) % (RDD_SRAM_PD_FIFO_SIZE * 4); +#else + static int total_rx_packets = 0; + + INV_RANGE((uintptr_t)RDD_SRAM_PD_FIFO_ADDRESS_ARR[0] , (64 * 16)); + + GROUP_MREAD_32(RDD_SRAM_PD_FIFO_ADDRESS_ARR, (idx + 0)*sizeof(uint32_t), + (*word0)); + GROUP_MREAD_32(RDD_SRAM_PD_FIFO_ADDRESS_ARR, (idx + 1)*sizeof(uint32_t), + (*word1)); + GROUP_MREAD_32(RDD_SRAM_PD_FIFO_ADDRESS_ARR, (idx + 2)*sizeof(uint32_t), + (*word2)); + GROUP_MREAD_32(RDD_SRAM_PD_FIFO_ADDRESS_ARR, (idx + 3)*sizeof(uint32_t), + (*word3)); + + if (*word1 == 0) + return BDMF_ERR_NO_MORE; + + total_rx_packets++; + GROUP_MWRITE_32(RDD_SRAM_PD_FIFO_ADDRESS_ARR, + (idx + 3)*sizeof(uint32_t), 0); + GROUP_MWRITE_32(RDD_SRAM_PD_FIFO_ADDRESS_ARR, + (idx + 2)*sizeof(uint32_t), 0); + /* for 63146, we need first 2 PDs to free buffer back */ + GROUP_MWRITE_32(RDD_SRAM_PD_FIFO_ADDRESS_ARR, + (idx + 1)*sizeof(uint32_t), 0); + GROUP_MWRITE_32(RDD_SRAM_PD_FIFO_ADDRESS_ARR, + (idx + 0)*sizeof(uint32_t), 0); + + idx = (idx + 4) % (64 * 4); +#endif + return 0; +} + +static inline int ReadPacketFromFpmFwDirect(CPU_RX_PARAMS *rx_params) +{ + CPU_RX_DESCRIPTOR rx_desc; + int ret; +#if !defined(CONFIG_BCM63146) + uint32_t bn0; +#endif + +#ifdef CONFIG_BCM_CACHE_COHERENCY + /* Before accessing the descriptors must do barrier */ + dma_rmb(); +#endif + + ret = GetPdFromRamFifo(&rx_desc.word0, &rx_desc.word1, &rx_desc.word2, + &rx_desc.word3); + if (ret == BDMF_ERR_NO_MORE) + return BDMF_ERR_NO_MORE; + + rx_params->packet_size = rx_desc.fpm.packet_length; + +#if defined(CONFIG_BCM63146) + rx_params->data_ptr = (uint8_t *)((uintptr_t)rx_desc.word0); +#else + bn0 = rx_desc.sbpm.bn0; + + ret = drv_sbpm_copy_list(bn0, &rx_params->data_ptr[0]); + if (ret != 0) { + printf("copy sbpm failed\n"); + return BDMF_ERR_NO_MORE; + } + ret = drv_sbpm_free_list(bn0); + if (ret != 0) { + printf("free sbpm failed\n"); + return BDMF_ERR_NO_MORE; + } +#endif + + /* The place of data_ofset is the same in all structures in this union + * we could use any.*/ + rx_params->data_offset = rx_desc.wan.data_offset; + rx_params->src_bridge_port = rx_desc.wan.source_port; + + if (rx_desc.cpu_vport.vport >= RDD_CPU_VPORT_FIRST && + rx_desc.cpu_vport.vport <= RDD_CPU_VPORT_LAST) + rx_params->dst_ssid = rx_desc.cpu_vport.ssid; + else if (!rx_desc.wan.is_src_lan) + rx_params->flow_id = rx_desc.wan.wan_flow_id; + rx_params->reason = (rdpa_cpu_reason)rx_desc.wan.reason; +#ifdef CONFIG_CPU_REDIRECT_MODE_SUPPORT + if (rx_params->reason == rdpa_cpu_rx_reason_cpu_redirect) { + rx_params->cpu_redirect_egress_queue = rx_desc.cpu_redirect.egress_queue; + rx_params->cpu_redirect_wan_flow = rx_desc.cpu_redirect.wan_flow; + } +#endif + rx_params->is_ucast = rx_desc.is_ucast; + rx_params->is_exception = rx_desc.is_exception; + rx_params->is_rx_offload = rx_desc.is_rx_offload; + rx_params->mcast_tx_prio = rx_desc.mcast_tx_prio; + + if (rx_desc.wl_nic.is_chain) { + /* Re-construct metadata to comply rdd_fc_context_t for wl_nic. */ + uint16_t metadata_1 = rx_desc.wl_nic.iq_prio << 8 | rx_desc.wl_nic.chain_id; + uint8_t metadata_0 = (1 << 3) | rx_desc.wl_nic.tx_prio; + + rx_params->wl_metadata = metadata_0 << 10 | metadata_1; + } else + rx_params->wl_metadata = rx_desc.wl_metadata; + + return 0; +} + +/* this API copies the next available packet from ring to given pointer */ +int rdp_cpu_ring_read_packet_copy(uint32_t ring_id, CPU_RX_PARAMS *rxParams) +{ +#if !defined(CONFIG_BCM63146) + void *client_pdata; +#endif + uint32_t ret = 0; + + /* Data offset field is field ONLY in CFE driver on BCM6858 + * To ensure correct work of another platforms the data offset field + * should be zeroed */ + rxParams->data_offset = 0; + +#if !defined(CONFIG_BCM63146) + client_pdata = (void*)rxParams->data_ptr; +#endif + + ret = ReadPacketFromFpmFwDirect(rxParams); + if (ret) + goto exit; + + /* Assign the data buffer back to ring */ + INV_RANGE((rxParams->data_ptr + rxParams->data_offset), rxParams->packet_size); + +exit: + +#if !defined(CONFIG_BCM63146) + rxParams->data_ptr = client_pdata; +#endif + return ret; +} + diff --git a/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring.h b/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring.h new file mode 100644 index 0000000000..e6e94e40df --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring.h @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + +*/ + +/**************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains the implementation of the Runner CPU ring interface */ +/* */ +/******************************************************************************/ + +#ifndef _RDP_CPU_RING_H_ +#define _RDP_CPU_RING_H_ + +#include "rdp_subsystem_common.h" + +#include "rdpa_types.h" +#include "rdd.h" +#include "rdp_cpu_ring_defs.h" + + +typedef struct { + uint8_t *data_ptr; + uint8_t data_offset; + uint16_t packet_size; + uint16_t flow_id; + uint16_t reason; + uint16_t src_bridge_port; + uint16_t dst_ssid; + uint32_t wl_metadata; + uint16_t ptp_index; + uint16_t free_index; + uint8_t is_rx_offload; + uint8_t is_ipsec_upstream; + uint8_t is_ucast; + uint8_t is_exception; + uint8_t is_csum_verified; + uint8_t mcast_tx_prio; +} CPU_RX_PARAMS; + +int rdp_cpu_ring_read_packet_copy(uint32_t ringId, CPU_RX_PARAMS *rxParams); + +#endif /* _RDP_CPU_RING_H_ */ diff --git a/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring_defs.h b/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring_defs.h new file mode 100644 index 0000000000..e7493b6a1f --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring_defs.h @@ -0,0 +1,301 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + * + */ + + +#ifndef _RDP_CPU_RING_DEFS_H +#define _RDP_CPU_RING_DEFS_H + +#include "access_macros.h" + +#ifndef _BYTE_ORDER_LITTLE_ENDIAN_ +typedef struct +{ + union { + struct { + uint32_t word0; + uint32_t word1; + }; + struct { + uint32_t host_buffer_data_ptr_low; /* total 40 bits for address */ + uint32_t host_buffer_data_ptr_hi:8; + uint32_t reserved0:7; + uint32_t abs:1; + uint32_t packet_length:14; + uint32_t is_chksum_verified:1; + uint32_t reserved2:1; + } abs; + struct { + uint32_t fpm_idx:18; + uint32_t reserved0:14; + uint32_t reserved1:15; + uint32_t abs:1; + uint32_t packet_length:14; + uint32_t is_chksum_verified:1; + uint32_t reserved2:1; + } fpm; + struct { + uint32_t bn0:18; + uint32_t reserved0:14; + uint32_t reserved1:15; + uint32_t abs:1; + uint32_t packet_length:14; + uint32_t is_chksum_verified:1; + uint32_t reserved2:1; + } sbpm; + }; + + union { + uint32_t word2; + struct { + uint32_t is_src_lan:1; + uint32_t reserved7:1; + uint32_t source_port:5; + uint32_t wan_flow_id:12; /* WAN Flow / DSL flags */ + uint32_t data_offset:7; + uint32_t reason:6; + } wan; + struct { + uint32_t is_src_lan:1; + uint32_t reserved7:1; + uint32_t source_port:5; /* LAN */ + uint32_t reserved3:12; + uint32_t data_offset:7; + uint32_t reason:6; + } lan; + struct { + uint32_t is_src_lan:1; + uint32_t reserved7:1; + uint32_t vport:5; + uint32_t ssid:4; + uint32_t reserved4:8; + uint32_t data_offset:7; + uint32_t reason:6; + } cpu_vport; /* (e.g. WLAN) */ + }; + + union { + uint32_t word3; + struct { + uint16_t is_exception:1; + uint16_t is_rx_offload:1; + uint16_t is_ucast:1; + uint16_t mcast_tx_prio:3; + uint16_t reserved5:10; + union { + uint16_t dst_ssid_vector; /* For WLAN multicast */ + uint16_t wl_metadata; /* For WLAN multicast */ + struct { + uint16_t reserved8:2; + uint16_t is_chain:1; + uint16_t tx_prio:3; + uint16_t reserved9:1; + uint16_t iq_prio:1; + uint16_t chain_id:8; + } wl_nic; + struct { + uint16_t reserved10:2; + uint16_t is_chain:1; + uint16_t tx_prio:3; + uint16_t flow_ring_idx:10; + } wl_dongle; + struct { + uint16_t reserved11:2; + uint16_t metadata_0:4; /* For WLAN: is_chain:1, tx_prio:3 */ + uint16_t metadata_1:10; /* For WLAN NIC: rsv:1, iq_prio:1, chain_id:1; Dongle: flow_ring_idx:10 */ + } metadata; +#ifdef CONFIG_CPU_REDIRECT_MODE_SUPPORT + struct { + uint16_t egress_queue:8; + uint16_t wan_flow:8; + } cpu_redirect; +#endif + }; + }; + }; +} +CPU_RX_DESCRIPTOR; + +typedef struct +{ + union { + struct { + uint32_t word0; + uint32_t word1; + }; + struct { + uint32_t host_buffer_data_ptr_low; /* total 40 bits for address */ + uint32_t reserved:23; + uint32_t abs:1; + uint32_t host_buffer_data_ptr_hi:8; + } abs; + }; +} +CPU_FEED_DESCRIPTOR; + +typedef struct +{ + union { + struct { + uint32_t word0; + uint32_t word1; + }; + struct { + uint32_t host_buffer_data_ptr_low; /* total 40 bits for address */ + uint32_t reserved:22; + uint32_t from_feed_ring:1; + uint32_t abs:1; + uint32_t host_buffer_data_ptr_hi:8; + } abs; + }; +} +CPU_RECYCLE_DESCRIPTOR; +#else +typedef struct +{ + union { + struct { + uint32_t word0; + uint32_t word1; + }; + struct { + uint32_t host_buffer_data_ptr_low; /* total 40 bits for address */ + uint32_t reserved2:1; + uint32_t is_chksum_verified:1; + uint32_t packet_length:14; + uint32_t abs:1; + uint32_t reserved0:7; + uint32_t host_buffer_data_ptr_hi:8; + } abs; + struct { + uint32_t reserved0:14; + uint32_t fpm_idx:18; + uint32_t reserved2:1; + uint32_t is_chksum_verified:1; + uint32_t packet_length:14; + uint32_t abs:1; + uint32_t reserved1:15; + } fpm; + struct { + uint32_t reserved0:14; + uint32_t bn0:18; + uint32_t reserved2:1; + uint32_t is_chksum_verified:1; + uint32_t packet_length:14; + uint32_t abs:1; + uint32_t reserved1:15; + } sbpm; + }; + union { + uint32_t word2; + struct { + uint32_t reason:6; + uint32_t data_offset:7; + uint32_t wan_flow_id:12; /* WAN Flow / DSL flags */ + uint32_t source_port:5; + uint32_t reserved7:1; + uint32_t is_src_lan:1; + } wan; + struct { + uint32_t reason:6; + uint32_t data_offset:7; + uint32_t reserved3:12; + uint32_t source_port:5; /* LAN */ + uint32_t reserved7:1; + uint32_t is_src_lan:1; + } lan; + struct { + uint32_t reason:6; + uint32_t data_offset:7; + uint32_t reserved4:8; + uint32_t ssid:4; + uint32_t vport:5; + uint32_t reserved7:1; + uint32_t is_src_lan:1; + } cpu_vport; + }; + + union { + uint32_t word3; + struct { + union { + uint16_t dst_ssid_vector; /* For WLAN multicast */ + uint16_t wl_metadata; /* For WLAN multicast */ + struct { + uint16_t metadata_1:10; /* For WLAN NIC: rsv:1, iq_prio:1, chain_id:1; Dongle: flow_ring_idx:10 */ + uint16_t metadata_0:4; /* For WLAN: is_chain:1, tx_prio:3 */ + uint16_t reserved11:2; + } metadata; + struct { + uint16_t flow_ring_idx:10; + uint16_t tx_prio:3; + uint16_t is_chain:1; + uint16_t reserved10:2; + } wl_dongle; + struct { + uint16_t chain_id:8; + uint16_t iq_prio:1; + uint16_t reserved9:1; + uint16_t tx_prio:3; + uint16_t is_chain:1; + uint16_t reserved8:2; + } wl_nic; +#ifdef CONFIG_CPU_REDIRECT_MODE_SUPPORT + struct { + uint16_t wan_flow:8; + uint16_t egress_queue:8; + } cpu_redirect; +#endif + }; + uint16_t reserved5:10; + uint16_t mcast_tx_prio:3; + uint16_t is_ucast:1; + uint16_t is_rx_offload:1; + uint16_t is_exception:1; + }; + }; +} +CPU_RX_DESCRIPTOR; + +typedef struct +{ + union { + struct { + uint32_t word0; + uint32_t word1; + }; + struct { + uint32_t host_buffer_data_ptr_low; /* total 40 bits for address */ + uint32_t host_buffer_data_ptr_hi:8; + uint32_t abs:1; + uint32_t reserved:23; + } abs; + }; +} +CPU_FEED_DESCRIPTOR; + +typedef struct +{ + union { + struct { + uint32_t word0; + uint32_t word1; + }; + struct { + uint32_t host_buffer_data_ptr_low; /* total 40 bits for address */ + uint32_t host_buffer_data_ptr_hi:8; + uint32_t abs:1; + uint32_t from_feed_ring:1; + uint32_t reserved:22; + } abs; + }; +} +CPU_RECYCLE_DESCRIPTOR; + +#endif + +#endif /*_RDP_CPU_RING_DEFS_H */ diff --git a/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring_inline.h b/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring_inline.h new file mode 100644 index 0000000000..08495b10ff --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdp_cpu_ring_inline.h @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + + */ + +#ifndef _RDP_CPU_RING_INLINE_H_ +#define _RDP_CPU_RING_INLINE_H_ + + + +#endif /* _RDP_CPU_RING_INLINE_H_ */ diff --git a/arch/arm/mach-bcmbca/xrdp/rdp_mm.h b/arch/arm/mach-bcmbca/xrdp/rdp_mm.h new file mode 100644 index 0000000000..ec188ebdea --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdp_mm.h @@ -0,0 +1,142 @@ +/* + <:copyright-BRCM:2014-2016:DUAL/GPL:standard + + Copyright (c) 2014-2016 Broadcom + All Rights Reserved + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License, version 2, as published by + the Free Software Foundation (the "GPL"). + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + + A copy of the GPL is available at http://www.broadcom.com/licenses/GPLv2.php, or by + writing to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + :> +*/ + +/******************************************************************************/ +/* */ +/* File Description: */ +/* */ +/* This file contains inline functions for runner host memory management */ +/* */ +/******************************************************************************/ +#ifndef _RDP_MM_H_ +#define _RDP_MM_H_ +#include +#include "bdmf_data_types.h" + +#define VIRT_TO_PHYS(_addr) ((uintptr_t)_addr) +#define PHYS_TO_CACHED(_addr) ((void *)((uintptr_t)_addr)) +#define PHYS_TO_UNCACHED(_addr) ((void *)((uintptr_t)_addr)) + +#define CACHED_FREE(_ptr) free(_ptr) + +#define KMALLOC(_size, _align) memalign(_align, _size) +#define KFREE(_ptr) free(_ptr) + +#if defined(CONFIG_BCM6858) || defined(CONFIG_BCM63146) || \ + defined(CONFIG_BCM6846) || defined(CONFIG_BCM6856) || \ + defined(CONFIG_BCM6878) +#define DMA_CACHE_LINE 64 +#else +#define DMA_CACHE_LINE 32 +#endif + +#define FLUSH_RANGE(s,l) ({ \ + unsigned long start, end; \ + start = ((unsigned long)(s))&~(DMA_CACHE_LINE-1); \ + end = (((unsigned long)(s)+(l)) + \ + DMA_CACHE_LINE - 1)&~(DMA_CACHE_LINE-1); \ + flush_dcache_range(start, end); }) + +#define INV_RANGE(s,l) ({ \ + unsigned long start, end; \ + start = ((unsigned long)(s))&~(DMA_CACHE_LINE-1); \ + end = (((unsigned long)(s)+(l)) + \ + DMA_CACHE_LINE - 1)&~(DMA_CACHE_LINE-1); \ + invalidate_dcache_range(start, end); }) + +#define BCM_PKTBUF_SIZE 2048 + +#define rdp_mm_aligned_alloc(_size, _phy_addr_p) \ + __rdp_mm_aligned_alloc((_size), (_phy_addr_p), GFP_DMA) +#define rdp_mm_aligned_alloc_atomic(_size, _phy_addr_p) \ + __rdp_mm_aligned_alloc((_size), (_phy_addr_p), GFP_ATOMIC) + +static inline void *__rdp_mm_aligned_alloc(uint32_t size, + bdmf_phys_addr_t *phy_addr_p, + gfp_t gfp) +{ + dma_addr_t phy_addr; + uint32_t size_padded_aligned; + dma_addr_t *mem; + + /* must be multiple of pointer size */ + size_padded_aligned = (size + (sizeof(dma_addr_t) << 1) - 1) & + ~(sizeof(dma_addr_t) - 1); + mem = (dma_addr_t *)consistent_alloc(gfp, size_padded_aligned, &phy_addr); + if (unlikely(mem == NULL)) + return NULL; + + mem[(size_padded_aligned / sizeof(dma_addr_t)) - 1] = phy_addr; + *phy_addr_p = (bdmf_phys_addr_t)phy_addr; + return (void *)mem; +} + +static inline void rdp_mm_aligned_free(void *ptr, uint32_t size) +{ + uint32_t size_padded_aligned; + dma_addr_t *mem = ptr, phy_addr; + + size_padded_aligned = (size + (sizeof(dma_addr_t) << 1) - 1) & + ~(sizeof(dma_addr_t) - 1); + phy_addr = mem[(size_padded_aligned / sizeof(dma_addr_t)) - 1]; + consistent_free(ptr, size_padded_aligned, phy_addr); +} + +static inline void rdp_mm_setl_context(void *__to, unsigned int __val, + unsigned int __n) +{ + volatile unsigned int *dst = (volatile unsigned int *)__to; + int i; + + for (i = 0; i < (__n / 4); i++, dst++) { + if ((i & 0x3) == 3) + continue; + *dst = __val; /* DSL */ + } +} + +static inline void rdp_mm_setl(void *__to, unsigned int __val, unsigned int __n) +{ + volatile unsigned int *dst = (volatile unsigned int *)__to; + int i; + + for (i = 0; i < (__n / 4); i++, dst++) + *dst = __val; /* DSL */ +} + +static inline void rdp_mm_cpyl_context(void *__to, void *__from, + unsigned int __n) +{ + volatile unsigned int * src = (unsigned int *)__from; + volatile unsigned int * dst = (unsigned int *)__to; + int i, n = __n / 4; + + for (i = 0; i < n; i++, src++, dst++) { + if ((i & 0x3) == 3) + continue; + + *dst = swap4bytes(*src); + } +} + +#endif diff --git a/arch/arm/mach-bcmbca/xrdp/rdp_platform.c b/arch/arm/mach-bcmbca/xrdp/rdp_platform.c new file mode 100644 index 0000000000..f3ed4497b8 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdp_platform.c @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +#include "rdp_common.h" +#ifndef __PACKING_ATTRIBUTE_STRUCT_END__ +#include "packing.h" +#endif +#include "rdd_data_structures_auto.h" + +#ifdef CONFIG_BCM6858 + +int reg_id[32] = {[8] = 0, [9] = 1, [10] = 2, [11] = 4, [12] = 5, [13] = 6, [14] = 8, [15] = 9, [16] = 10, [17] = 12, [18] = 13, [19] = 14, [20] = 16, [21] = 17, [22] = 18, + [23] = 20, [24] = 21, [25] = 22, [26] = 24, [27] = 25, [28] = 26, [29] = 28, [30] = 29, [31] = 30}; +#else +#if !defined(CONFIG_BCM63146) && !defined(CONFIG_BCM6878) +int reg_id[32]={[8]=0, [9]=1, [10]=2, [11]=3, [12]=4, [13]=5, [14]=6, [15]=7, [16]=8, [17]=9, [18]=10, [19]=11, [20]=12, [21]=13, [22]=14, + [23]=15, [24]=16, [25]=17, [26]=18, [27]=19, [28]=20, [29]=21, [30]=22, [31]=23}; +#else +int reg_id[32]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}; +#endif //DUAL_ISSUE +#endif + diff --git a/arch/arm/mach-bcmbca/xrdp/rdp_platform.h b/arch/arm/mach-bcmbca/xrdp/rdp_platform.h new file mode 100644 index 0000000000..6686d3a964 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdp_platform.h @@ -0,0 +1,502 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +#ifndef RDP_PLATFORM_H_INCLUDED +#define RDP_PLATFORM_H_INCLUDED + + +#define MAX_NUM_OF_QUEUES_IN_SCHED 32 + +/* SBPM */ +#define SBPM_BASE_ADDRESS 0 +#define SBPM_INIT_OFFSET (SBPM_MAX_BUFFER_NUMBER) +#define SBPM_MAX_NUM_OF_BNS (SBPM_MAX_BUFFER_NUMBER + 1) + + +typedef enum rnr_quad_id_e { + RNR_QUAD0_ID = 0, + RNR_QUAD_ID_LAST = RNR_QUAD0_ID, + NUM_OF_RNR_QUADS = RNR_QUAD_ID_LAST + 1, +} rnr_quad_id_e; + +#if defined(CONFIG_BCM6858) + +#define RNR_FREQ_IN_MHZ 1000 +#define UBUS_SLV_FREQ_IN_MHZ 500 +#define NUM_OF_CORES_IN_QUAD 4 +#define DRV_PARSER_MASKED_DA_FILTER_NUM 2 +#define DRV_PARSER_DA_FILTER_NUM 9 +#define NUM_OF_RNR_WITH_PROFILING 16 + +/* DISP CONGESTION */ +#define DIS_REOR_CONGESTION_THRESHOLD 450 +#define DIS_REOR_LINKED_LIST_BUFFER_NUM 1024 +#define NUM_OF_PROCESSING_TASKS 96 + +/* BBH_RX */ +#define DRV_BBH_RX_MAXIMAL_PACKET_HEADER_OFFSET 127 + +/* BBH_TX */ +#define BBH_TX_DS_PD_FIFO_SIZE_0 8 +#define BBH_TX_DS_PD_FIFO_SIZE_1 8 + +/* HASH */ +#define HASH_NUM_OF_ENGINES 2 +#define HASH_NUM_OF_ENGINES_LOG2 1 +#define HASH_NUM_OF_EFFECTIVE_ENGINES 2 +#define HASH_NUM_OF_ENTRIES_IN_RAM 2048 + +#define IS_WAN_TX_PORT(bbh_id) (bbh_id == BBH_ID_PON) +#define IS_SDMA(dma_id) (dma_id > DMA1_ID) +#define IS_DMA(dma_id) (dma_id <= DMA1_ID) +#define IS_PROCESSING_RUNNER_IMAGE(i) (rdp_core_to_image_map[i] == processing_runner_image) +#define IS_DS_TM_RUNNER_IMAGE(i) (rdp_core_to_image_map[i] == ds_tm_runner_image) + +/* NATC */ +#define NATC_CACHE_ENTRIES_NUM 512 + +/* TCAM table size (entries) */ +#define RDP_TCAM_TABLE_SIZE 512 +/* Number of TCAM engines */ +#define RDP_TCAM_NUM_ENGINES 2 + +/* Max number of queues supported by QM */ +#define QM_NUM_QUEUES 288 + +typedef enum dma_id_e +{ + DMA0_ID = 0, + DMA1_ID, + SDMA0_ID, + SDMA1_ID, + DMA_NUM, + DMA_ID_FIRST = DMA0_ID, +} dma_id_e; + +typedef enum bbh_id_e +{ + BBH_ID_0 = 0, /* XLMAC1_0_RGMII */ + BBH_ID_1, /* XLMAC0_1_2p5G */ + BBH_ID_2, /* XLMAC0_2_1G */ + BBH_ID_3, /* XLMAC0_3_1G */ + BBH_ID_4, /* XLMAC0_0_10G */ + BBH_ID_5, /* XLMAC1_1_RGMII */ + BBH_ID_6, /* XLMAC1_2_RGMII */ + BBH_ID_7, /* XLMAC1_3_RGMII */ + BBH_ID_PON, + BBH_ID_NUM, + BBH_ID_FIRST = BBH_ID_0, + BBH_ID_LAST = BBH_ID_PON, + BBH_ID_LAST_XLMAC = BBH_ID_7, + BBH_ID_NULL = BBH_ID_NUM +} bbh_id_e; + + +/* SBPM */ + +#define SBPM_MAX_BUFFER_NUMBER 0xFFF + + +/**********************************************************************************************************/ +#elif defined(CONFIG_BCM6846) + +#define RNR_FREQ_IN_MHZ 1400 +#define UBUS_SLV_FREQ_IN_MHZ 466 +#define NUM_OF_CORES_IN_QUAD 3 +#define DRV_PARSER_MASKED_DA_FILTER_NUM 2 +#define DRV_PARSER_DA_FILTER_NUM 9 +#define NUM_OF_RNR_WITH_PROFILING 3 + +#define IS_WAN_TX_PORT(bbh_id) (bbh_id == BBH_TX_WAN_ID) +#define IS_WAN_RX_PORT(bbh_id) (bbh_id == BBH_ID_PON) +#define IS_SDMA(dma_id) (dma_id > DMA0_ID) +#define IS_DMA(dma_id) (dma_id <= DMA0_ID) +#define IS_PROCESSING_RUNNER_IMAGE(i) ((rdp_core_to_image_map[i] == processing0_runner_image) || (rdp_core_to_image_map[i] == processing1_runner_image)) +#define IS_DS_TM_RUNNER_IMAGE(i) (rdp_core_to_image_map[i] == ds_tm_runner_image) + +/* NATC */ +#define NATC_CACHE_ENTRIES_NUM 512 + +/* DISP CONGESTION */ +#define DIS_REOR_CONGESTION_THRESHOLD 200 +#define DIS_REOR_LINKED_LIST_BUFFER_NUM 512 +#define NUM_OF_PROCESSING_TASKS 12 + +/* SBPM */ + +#define SBPM_MAX_BUFFER_NUMBER 0x5FF + + +/* BBH_RX */ +#define DRV_BBH_RX_MAXIMAL_PACKET_HEADER_OFFSET 63 +#define BBH_FREQUENCY (466770000) /* 466.77 MHz */ + +/* BBH_TX */ +#define BBH_TX_DS_PD_FIFO_SIZE_0 7 +#define BBH_TX_DS_PD_FIFO_SIZE_1 7 + +/* HASH */ +#define HASH_NUM_OF_ENGINES 2 +#define HASH_NUM_OF_ENGINES_LOG2 1 +#define HASH_NUM_OF_EFFECTIVE_ENGINES 2 + +/* TCAM table size (entries) */ +#define RDP_TCAM_TABLE_SIZE 256 +/* Number of TCAM engines */ +#define RDP_TCAM_NUM_ENGINES 1 + +/* Max number of queues supported by QM */ +#define QM_NUM_QUEUES 96 +/* Max number of EPON queues supported by QM */ +#define QM_NUM_EPON_QUEUES 8 +/* Max number of reported queues supported by QM */ +#define QM_NUM_REPORTED_QUEUES 32 + +typedef enum bbh_id_e +{ + BBH_ID_0 = 0, + BBH_ID_1, + BBH_ID_2, + BBH_ID_3, + BBH_ID_4, + BBH_ID_PON, + BBH_ID_NUM, + BBH_ID_FIRST = BBH_ID_0, + BBH_ID_LAST = BBH_ID_PON, + BBH_ID_NULL = BBH_ID_NUM +} bbh_id_e; + +typedef enum dma_id_e +{ + DMA0_ID = 0, + SDMA0_ID, + DMA_NUM, + DMA_ID_FIRST = DMA0_ID, +} dma_id_e; + +/**********************************************************************************************************/ + +#elif defined(CONFIG_BCM6878) +#define RNR_FREQ_IN_MHZ 1000 +#define UBUS_SLV_FREQ_IN_MHZ 466 +#define NUM_OF_CORES_IN_QUAD 3 +#define DRV_PARSER_MASKED_DA_FILTER_NUM 2 +#define DRV_PARSER_DA_FILTER_NUM 9 +#define NUM_OF_RNR_WITH_PROFILING 3 + +#define IS_WAN_TX_PORT(bbh_id) (bbh_id == BBH_TX_WAN_ID) +#define IS_WAN_RX_PORT(bbh_id) (bbh_id == BBH_ID_PON) +#define IS_SDMA(dma_id) (dma_id > DMA0_ID) +#define IS_DMA(dma_id) (dma_id <= DMA0_ID) +#define IS_PROCESSING_RUNNER_IMAGE(i) ((rdp_core_to_image_map[i] == processing0_runner_image) || (rdp_core_to_image_map[i] == processing1_runner_image)) +#define IS_DS_TM_RUNNER_IMAGE(i) (rdp_core_to_image_map[i] == ds_tm_runner_image) + + +/* NATC */ +#define NATC_CACHE_ENTRIES_NUM 512 + +/* DISP CONGESTION */ +#define DIS_REOR_CONGESTION_THRESHOLD 100 +#define DIS_REOR_LINKED_LIST_BUFFER_NUM 256 +#define NUM_OF_PROCESSING_TASKS 12 + +/* BBH_RX */ +#define DRV_BBH_RX_MAXIMAL_PACKET_HEADER_OFFSET 63 +#define BBH_FREQUENCY (466770000) /* 466.77 MHz */ + +/* BBH_TX */ +#define BBH_TX_DS_PD_FIFO_SIZE_0 7 +#define BBH_TX_DS_PD_FIFO_SIZE_1 7 + +/* HASH */ +#define HASH_NUM_OF_ENGINES 2 +#define HASH_NUM_OF_ENGINES_LOG2 1 +#define HASH_NUM_OF_EFFECTIVE_ENGINES 2 + +/* TCAM table size (entries) */ +#define RDP_TCAM_TABLE_SIZE 256 +/* Number of TCAM engines */ +#define RDP_TCAM_NUM_ENGINES 1 + +/* Max number of queues supported by QM */ +#define QM_NUM_QUEUES 128 +/* Max number of EPON queues supported by QM */ +#define QM_NUM_EPON_QUEUES 8 +/* Max number of reported queues supported by QM */ +#define QM_NUM_REPORTED_QUEUES 32 + +typedef enum bbh_id_e +{ + BBH_ID_0 = 0, + BBH_ID_1, + BBH_ID_2, + BBH_ID_3, + BBH_ID_4, + BBH_ID_PON, + BBH_ID_NUM, + BBH_ID_FIRST = BBH_ID_0, + BBH_ID_LAST = BBH_ID_PON, + BBH_ID_NULL = BBH_ID_NUM +} bbh_id_e; + +typedef enum dma_id_e +{ + DMA0_ID = 0, + DMA_NUM, + DMA_ID_FIRST = DMA0_ID, +} dma_id_e; + +typedef enum bbh_tx_id_e +{ + BBH_TX_ID_LAN = 0, + BBH_TX_ID_PON, + BBH_TX_ID_NUM, + BBH_TX_ID_FIRST = BBH_TX_ID_LAN, + BBH_TX_ID_LAST = BBH_TX_ID_PON, + BBH_TX_ID_NULL = BBH_TX_ID_NUM +} bbh_tx_id_e; + +/* SBPM */ +#define SBPM_MAX_BUFFER_NUMBER 0x3FF + + + +#elif defined(CONFIG_BCM6856) + +#define RNR_FREQ_IN_MHZ 1400 +#define UBUS_SLV_FREQ_IN_MHZ 500 +#define NUM_OF_CORES_IN_QUAD 4 +#define DRV_PARSER_MASKED_DA_FILTER_NUM 2 +#define DRV_PARSER_DA_FILTER_NUM 9 +#define NUM_OF_RNR_WITH_PROFILING 8 + +#define IS_WAN_TX_PORT(bbh_id) (bbh_id == BBH_TX_WAN_ID) +#define IS_SDMA(dma_id) (dma_id > DMA0_ID) +#define IS_DMA(dma_id) (dma_id <= DMA0_ID) +#define IS_PROCESSING_RUNNER_IMAGE(i) ((rdp_core_to_image_map[i] == processing0_runner_image) || (rdp_core_to_image_map[i] == processing1_runner_image) || (rdp_core_to_image_map[i] == processing2_runner_image) || (rdp_core_to_image_map[i] == processing3_runner_image)) +#define IS_DS_TM_RUNNER_IMAGE(i) (rdp_core_to_image_map[i] == ds_tm_runner_image) + +/* NATC */ +#define NATC_CACHE_ENTRIES_NUM 512 + +/* DISP CONGESTION */ +#define DIS_REOR_CONGESTION_THRESHOLD 200 +#define DIS_REOR_LINKED_LIST_BUFFER_NUM 1024 +#define NUM_OF_PROCESSING_TASKS 32 + +/* SBPM */ +#define SBPM_UG0_BN_THRESHOLD 0x3FF + +/* BBH_RX */ +#define DRV_BBH_RX_MAXIMAL_PACKET_HEADER_OFFSET 63 +#define BBH_FREQUENCY (500*1000000) /* 500 MHz */ + +/* BBH_TX */ +#define BBH_TX_DS_PD_FIFO_SIZE_0 7 +#define BBH_TX_DS_PD_FIFO_SIZE_1 7 + +/* HASH */ +#define HASH_NUM_OF_ENGINES 4 +#define HASH_NUM_OF_ENGINES_LOG2 2 +#define HASH_NUM_OF_EFFECTIVE_ENGINES 4 +#define HASH_NUM_OF_ENTRIES_IN_RAM 6144 + +/* TCAM table size (entries) */ +#define RDP_TCAM_TABLE_SIZE 256 +/* Number of TCAM engines */ +#define RDP_TCAM_NUM_ENGINES 2 + +/* Max number of queues supported by QM */ +#define QM_NUM_QUEUES 160 +/* Max number of reported queues supported by QM */ +#define QM_NUM_REPORTED_QUEUES 128 + +typedef enum dma_id_e +{ + DMA0_ID = 0, + DMA1_ID, + SDMA0_ID, + SDMA1_ID, + DMA_NUM, + DMA_ID_FIRST = DMA0_ID, +} dma_id_e; + +typedef enum bbh_id_e +{ + BBH_ID_0 = 0, + BBH_ID_1, + BBH_ID_2, + BBH_ID_3, + BBH_ID_4, + BBH_ID_5, + BBH_ID_PON, + BBH_ID_NUM, + BBH_ID_FIRST = BBH_ID_0, + BBH_ID_LAST = BBH_ID_PON, + BBH_ID_NULL = BBH_ID_NUM +} bbh_id_e; + +typedef enum bbh_tx_id_e +{ + BBH_TX_ID_LAN = 0, + BBH_TX_ID_PON, + BBH_TX_ID_NUM, + BBH_TX_ID_FIRST = BBH_TX_ID_LAN, + BBH_TX_ID_LAST = BBH_TX_ID_PON, + BBH_TX_ID_NULL = BBH_TX_ID_NUM +} bbh_tx_id_e; + +#elif defined(CONFIG_BCM63146) + +#define RNR_FREQ_IN_MHZ 1250 +/* TBD63146. Need for CONFIG_BCM63146 */ +#define UBUS_SLV_FREQ_IN_MHZ 560 +/* TBD below */ +#define NUM_OF_CORES_IN_QUAD 3 +#define DRV_PARSER_MASKED_DA_FILTER_NUM 2 +#define DRV_PARSER_DA_FILTER_NUM 9 +#define NUM_OF_RNR_WITH_PROFILING 3 + +/* IS_WAN_TX_PORT and IS_WAN_RX_PORT identify TX WAN ports for DSL only (NOT Ethernet) */ +#define IS_WAN_TX_PORT(bbh_id) (bbh_id == BBH_TX_ID_DSL) +#define IS_WAN_RX_PORT(bbh_id) (bbh_id == BBH_ID_DSL) +/* IS_DS_WAN_PORT and IS_US_WAN_PORT identify ALL (DS/US respectively) WAN ports */ +/* TBD63146. Identify Ethernet WAN */ +#define IS_DS_WAN_PORT(bbh_id) (bbh_id == BBH_ID_DSL) +#define IS_US_WAN_PORT(bbh_id) (bbh_id == BBH_TX_ID_DSL) +#define IS_PROCESSING_RUNNER_IMAGE(i) \ + ((rdp_core_to_image_map[i] == processing0_runner_image) || \ + (rdp_core_to_image_map[i] == processing1_runner_image) || \ + (rdp_core_to_image_map[i] == processing2_runner_image)) +#define IS_DS_TM_RUNNER_IMAGE(i) (rdp_core_to_image_map[i] == ds_tm_runner_image) +#define IS_US_TM_RUNNER_IMAGE(i) (rdp_core_to_image_map[i] == us_tm_runner_image) + +/* NATC */ +#define NATC_CACHE_ENTRIES_NUM 1024 + +/* DISP CONGESTION */ +#define DIS_REOR_CONGESTION_THRESHOLD 200 +#define DIS_REOR_LINKED_LIST_BUFFER_NUM 512 +#define NUM_OF_PROCESSING_TASKS 32 + +/* SBPM */ +/* the real physical limit is 0x5FF */ +#define SBPM_MAX_BUFFER_NUMBER 0x17F +#define SBPM_UG0_BN_THRESHOLD 0x15F +#define SBPM_UG1_BN_THRESHOLD 0x23 + +/* BBH_RX */ +#define DRV_BBH_RX_MAXIMAL_PACKET_HEADER_OFFSET 127 +/* TBD63146. Need for BCM63146 */ +#define BBH_FREQUENCY (560*1000000) /* 560 MHz */ + +/* BBH_TX */ +#define BBH_TX_DS_PD_FIFO_SIZE_0 7 +#define BBH_TX_DS_PD_FIFO_SIZE_1 7 + +/* HASH */ +#define HASH_NUM_OF_ENGINES 2 +#define HASH_NUM_OF_ENGINES_LOG2 1 +#define HASH_NUM_OF_EFFECTIVE_ENGINES 2 + +/* TCAM table size (entries) */ +#define RDP_TCAM_TABLE_SIZE 256 +/* Number of TCAM engines */ +#define RDP_TCAM_NUM_ENGINES 2 + +/* Max number of queues supported by QM */ +#define QM_NUM_QUEUES 128 + +typedef enum dma_id_e { + DMA0_ID = 0, + DMA1_ID, + DMA_NUM, + DMA_ID_FIRST = DMA0_ID, +} dma_id_e; + +typedef enum bbh_id_e { + /* RX */ + /* RX BBH_ID needs to be the same as DISP_REOR_VIQ defined in + * project_data_structures.xml or else bbh_rx configuration will break */ + BBH_ID_0 = 0, + BBH_ID_1, + BBH_ID_2, + BBH_ID_3, + BBH_ID_4, + BBH_ID_5, + BBH_ID_6_2P5G, + BBH_ID_7_5G, + BBH_ID_DSL, + BBH_ID_NUM, + BBH_ID_FIRST = BBH_ID_0, + BBH_ID_NUM_LAN = BBH_ID_7_5G, + BBH_ID_LAST = BBH_ID_DSL, + BBH_ID_NULL = BBH_ID_NUM, +} bbh_id_e; + +typedef enum bbh_tx_id_e { + BBH_TX_ID_LAN = 0, + BBH_ID_QM_COPY, + BBH_TX_ID_DSL, + BBH_TX_ID_NUM, + BBH_TX_ID_FIRST = BBH_TX_ID_LAN, + BBH_TX_ID_LAST = BBH_TX_ID_DSL, + BBH_TX_ID_NULL = BBH_ID_NULL, +} bbh_tx_id_e; + +typedef enum dma_target_e { + DMA_TARGET_DMA = 0, + DMA_TARGET_SDMA, + DMA_TARGET_NUM, + DMA_TARGET_FIRST = DMA_TARGET_DMA, +} dma_target_e; + +/* some change of definition for easy to compilation */ +#define BBH_ID_PON BBH_ID_DSL +#define BB_ID_RX_PON BB_ID_RX_DSL +#define BB_ID_TX_PON_ETH_PD BB_ID_TX_DSL +#define BB_ID_TX_PON_ETH_STAT BB_ID_TX_DSL_STAT + +#define SDMA_U_THRESH_IN_BBH_LAN_VALUE (0x2) +#define SDMA_U_THRESH_OUT_BBH_LAN_VALUE (0x1) + +#define SDMA_U_THRESH_IN_BBH_5G_VALUE (0x3) +#define SDMA_U_THRESH_OUT_BBH_5G_VALUE (0x2) + +#define SDMA_U_THRESH_IN_BBH_2P5G_VALUE (0x3) +#define SDMA_U_THRESH_OUT_BBH_2P5G_VALUE (0x2) + +#define SDMA_U_THRESH_IN_BBH_DSL_VALUE (0x6) +#define SDMA_U_THRESH_OUT_BBH_DSL_VALUE (0x4) + +#define SDMA_STRICT_PRI_RX_BBH_LAN_VALUE (0x4) +#define SDMA_STRICT_PRI_RX_BBH_5G_VALUE (0x04) +#define SDMA_STRICT_PRI_RX_BBH_2P5G_VALUE (0x04) +#define SDMA_STRICT_PRI_RX_BBH_DSL_VALUE (0x4) + +#define SDMA_STRICT_PRI_TX_BBH_LAN_VALUE (0x04) +#define DMA_STRICT_PRI_TX_BBH_LAN_VALUE (0x08) +#define SDMA_STRICT_PRI_TX_BBH_COPY_VALUE (0x04) +#define DMA_STRICT_PRI_TX_BBH_COPY_VALUE (0x08) +#define SDMA_STRICT_PRI_TX_BBH_DSL_VALUE (0x04) +#define DMA_STRICT_PRI_TX_BBH_DSL_VALUE (0x08) + +#define SDMA_RR_WEIGHT_RX_BBH_LAN_VALUE (0x00) +#define SDMA_RR_WEIGHT_RX_BBH_5G_VALUE (0x00) +#define SDMA_RR_WEIGHT_RX_BBH_2P5G_VALUE (0x00) +#define SDMA_RR_WEIGHT_RX_BBH_DSL_VALUE (0x00) + +#define SDMA_RR_WEIGHT_TX_BBH_LAN_VALUE (0x00) +#define DMA_RR_WEIGHT_TX_BBH_LAN_VALUE (0x00) +#define SDMA_RR_WEIGHT_TX_BBH_COPY_VALUE (0x00) +#define DMA_RR_WEIGHT_TX_BBH_COPY_VALUE (0x00) +#define SDMA_RR_WEIGHT_TX_BBH_DSL_VALUE (0x00) +#define DMA_RR_WEIGHT_TX_BBH_DSL_VALUE (0x00) +#endif + +#endif diff --git a/arch/arm/mach-bcmbca/xrdp/rdp_subsystem_common.h b/arch/arm/mach-bcmbca/xrdp/rdp_subsystem_common.h new file mode 100644 index 0000000000..c2c93ec85b --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdp_subsystem_common.h @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2012 Broadcom + */ +/* +* +*/ + +#ifndef __RDP_SUBSYSTEM_COMMON__ +#define __RDP_SUBSYSTEM_COMMON__ + +/* #include "bcm_hwdefs.h" */ + +#endif diff --git a/arch/arm/mach-bcmbca/xrdp/rdpa_cpu_basic.h b/arch/arm/mach-bcmbca/xrdp/rdpa_cpu_basic.h new file mode 100644 index 0000000000..c72924e1fc --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdpa_cpu_basic.h @@ -0,0 +1,208 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* +* +*/ + + +#ifndef RDPA_CPU_BASIC_H_ +#define RDPA_CPU_BASIC_H_ + +/** CPU trap reasons */ +typedef enum { + rdpa_cpu_reason_min = 0, + rdpa_cpu_rx_reason_oam = 0, /**< OAM packet */ + rdpa_cpu_rx_reason_omci = 1, /**< OMCI packet */ + rdpa_cpu_rx_reason_flow = 2, + rdpa_cpu_rx_reason_mcast = 3, /**< Multicat packet */ + rdpa_cpu_rx_reason_bcast = 4, /**< Broadcast packet */ + rdpa_cpu_rx_reason_igmp = 5, /**< Igmp packet */ + rdpa_cpu_rx_reason_icmpv6 = 6, /**< Icmpv6 packet */ + rdpa_cpu_rx_reason_mac_trap_0 = 7, + rdpa_cpu_rx_reason_mac_trap_1 = 8, + rdpa_cpu_rx_reason_mac_trap_2 = 9, + rdpa_cpu_rx_reason_mac_trap_3 = 10, + rdpa_cpu_rx_reason_dhcp = 11, /**< DHCP packet */ + rdpa_cpu_rx_reason_non_tcp_udp = 12, /**< Packet is non TCP or UDP */ + rdpa_cpu_rx_reason_local_ip = 13, /**< CPU ingress packet copy */ + rdpa_cpu_rx_reason_hdr_err = 14, /**< Packet with IP header error */ + rdpa_cpu_rx_reason_sa_moved = 15, /**< SA move indication*/ + rdpa_cpu_rx_reason_unknown_sa = 16, /**< Unknown SA indication */ + rdpa_cpu_rx_reason_unknown_da = 17, /**< Unknown DA indication */ + rdpa_cpu_rx_reason_ip_frag = 18, /**< Packet is fragmented */ + rdpa_cpu_rx_reason_mac_spoofing = 19, /**< Mac spoofing \XRDP_LIMITED */ + rdpa_cpu_rx_reason_direct_flow = 20, /**< Direct flow */ + rdpa_cpu_rx_reason_mcast_miss = 21, /**< Multicast flow lookup miss */ + rdpa_cpu_rx_reason_ipsec = 22, /**< IPSec RX offload */ + rdpa_cpu_rx_reason_reserved_0 = 23, /* */ + rdpa_cpu_rx_reason_reserved_1 = 24, /* */ + rdpa_cpu_rx_reason_reserved_2 = 25, /* */ + rdpa_cpu_rx_reason_l2cp = 26, /* \XRDP_LIMITED */ + rdpa_cpu_rx_reason_cpu_mirroring = 27, /* */ + rdpa_cpu_rx_reason_etype_udef_0 = 28, /**< User defined ethertype 1 */ + rdpa_cpu_rx_reason_etype_udef_1 = 29, /**< User defined ethertype 2 */ + rdpa_cpu_rx_reason_etype_udef_2 = 30, /**< User defined ethertype 3 */ + rdpa_cpu_rx_reason_etype_udef_3 = 31, /**< User defined ethertype 4 */ + rdpa_cpu_rx_reason_etype_pppoe_d = 32, /**< PPPoE Discovery */ + rdpa_cpu_rx_reason_etype_pppoe_s = 33, /**< PPPoE Source */ + rdpa_cpu_rx_reason_etype_arp = 34, /**< Packet with ethertype Arp */ + rdpa_cpu_rx_reason_etype_ptp_1588 = 35, /**< Packet with ethertype 1588 */ + rdpa_cpu_rx_reason_etype_802_1x = 36, /**< Packet with ethertype 802_1x */ + rdpa_cpu_rx_reason_etype_802_1ag_cfm = 37, /**< Packet with ethertype v801 Lag CFG*/ + rdpa_cpu_rx_reason_pci_ip_flow_miss_1 = 38, /**< DHD PCI flow miss radio 1 */ + rdpa_cpu_rx_reason_pci_ip_flow_miss_2 = 39, /**< DHD PCI flow miss radio 2 */ + rdpa_cpu_rx_reason_pci_ip_flow_miss_3 = 40, /**< DHD PCI flow miss radio 3 */ + rdpa_cpu_rx_reason_ip_flow_miss = 41, /**< Flow miss indication */ + rdpa_cpu_rx_reason_tcp_flags = 42, /**< TCP flag indication */ + rdpa_cpu_rx_reason_ttl_expired = 43, /**< TTL expired indication */ + rdpa_cpu_rx_reason_mtu_exceeded = 44, /**< MTU exceeded indication */ + rdpa_cpu_rx_reason_l4_icmp = 45, /**< layer-4 ICMP protocol */ + rdpa_cpu_rx_reason_l4_esp = 46, /**< layer-4 ESP protocol */ + rdpa_cpu_rx_reason_l4_gre = 47, /**< layer-4 GRE protocol */ + rdpa_cpu_rx_reason_l4_ah = 48, /**< layer-4 AH protocol */ + rdpa_cpu_rx_reason_parser_error = 49, /**< Error when parsing packet \XRDP_LIMITED */ + rdpa_cpu_rx_reason_l4_ipv6 = 50, /**< layer-4 IPV6 protocol */ + rdpa_cpu_rx_reason_l4_udef_0 = 51, /**< User defined layer-4 1 */ + rdpa_cpu_rx_reason_l4_udef_1 = 52, /**< User defined layer-4 2 */ + rdpa_cpu_rx_reason_l4_udef_2 = 53, /**< User defined layer-4 3 */ + rdpa_cpu_rx_reason_l4_udef_3 = 54, /**< User defined layer-4 4 */ + rdpa_cpu_rx_reason_cpu_redirect = 55, /**< CPU redirect */ + rdpa_cpu_rx_reason_udef_0 = 56, /**< User defined 1 */ + rdpa_cpu_rx_reason_udef_1 = 57, /**< User defined 2 */ + rdpa_cpu_rx_reason_udef_2 = 58, /**< User defined 3 */ + rdpa_cpu_rx_reason_udef_3 = 59, /**< User defined 4 */ + rdpa_cpu_rx_reason_udef_4 = 60, /**< User defined 5 */ + rdpa_cpu_rx_reason_udef_5 = 61, /**< User defined 6 */ + rdpa_cpu_rx_reason_udef_6 = 62, /**< User defined 7 */ + rdpa_cpu_rx_reason_udef_7 = 63, /**< User defined 8 */ + rdpa_cpu_reason__num_of +} rdpa_cpu_reason; + +#if defined(CONFIG_BCM_REASON_TO_SKB_MARK) || defined(BCM_REASON_TO_SKB_MARK) +#define WEB_ACCESS_IC_TRAP_REASON rdpa_cpu_rx_reason_udef_6 +#define WEB_ACCESS_SKB_MARK_PORT 0x5A +#endif + +#if defined(CONFIG_BCM_DSL_XRDP) || defined(CONFIG_BCM_DSL_RDP) +#define rdpa_cpu_rx_reason_hit_trap_high rdpa_cpu_rx_reason_udef_4 +#define rdpa_cpu_rx_reason_hit_trap_low rdpa_cpu_rx_reason_udef_5 +#define rdpa_cpu_rx_reason_ingqos rdpa_cpu_rx_reason_udef_6 +#define RDPACTL_IC_TRAP_REASON_HIGH \ + (rdpa_cpu_rx_reason_ingqos - rdpa_cpu_rx_reason_udef_0) +#define rdpa_cpu_rx_reason_tcpspdtst rdpa_cpu_rx_reason_udef_7 +#else +#define rdpa_cpu_rx_reason_tcpspdtst rdpa_cpu_rx_reason_udef_7 +#endif + +/** CPU port */ +typedef enum { + rdpa_cpu_port_first = 0, + rdpa_cpu0 = rdpa_cpu_port_first, + rdpa_cpu_host = rdpa_cpu0, /**< Host RX */ + rdpa_cpu1, + rdpa_cpu_xtm = rdpa_cpu1, /**< XTM RX */ + rdpa_cpu2, + rdpa_cpu3, + rdpa_cpu4, + rdpa_cpu_wlan0 = rdpa_cpu4, /**< WLAN 0 TX */ + rdpa_cpu5, + rdpa_cpu_wlan1 = rdpa_cpu5, + rdpa_cpu6, + rdpa_cpu_wlan2 = rdpa_cpu6, + rdpa_cpu_port__num_of, + rdpa_cpu_none +} rdpa_cpu_port; + +#define RDPA_CPU_MAX_QUEUES 8 /* Max number of queues on host port */ + +/** TC */ +#define RDPA_CPU_TC_DEFAULT 0 +#define RDPA_CPU_TC_NUM 8 + +/** CPU reason table indicies */ +#define CPU_REASON_LAN_TABLE_INDEX 0 +#define CPU_REASON_WAN0_TABLE_INDEX 0 +#define CPU_REASON_WAN1_TABLE_INDEX 1 + +/** @} end of cpu Doxygen group */ + +/** TC definition */ +typedef enum { + rdpa_cpu_tc0 = 0, + rdpa_cpu_tc1 = 1, + rdpa_cpu_tc2 = 2, + rdpa_cpu_tc3 = 3, + rdpa_cpu_tc4 = 4, + rdpa_cpu_tc5 = 5, + rdpa_cpu_tc6 = 6, + rdpa_cpu_tc7 = 7, + rdpa_cpu_tc__num_of, +} rdpa_cpu_tc; + +/** CPU tx packet insertion point */ +typedef enum { + /* Egress port and priority are specified explicitly. This is the + * most common mode */ + rdpa_cpu_tx_port = 0, + /* Egress port and priority are specified explicitly. This is the most + * common mode same as rdpa_cpu_tx_egress*/ + rdpa_cpu_tx_egress = 0, + /* Before bridge forwarding decision, before classification */ + rdpa_cpu_tx_bridge = 1, + /* Before bridge forwarding decision, before classification same as + * rdpa_cpu_tx_bridge*/ + rdpa_cpu_tx_ingress = 1, + + rdpa_cpu_tx_entry__num_of /**< Number of CPU TX entries */ +} rdpa_cpu_tx_method; + +/** Extra data that can be passed along with the packet to be transmitted */ +typedef struct { + rdpa_cpu_tx_method method; /* Packet transmit method */ + /* Destination port for method=port, source port for method=bridge */ + rdpa_if port; + rdpa_cpu_port cpu_port; /* CPU object index */ + uint8_t ssid; /* SSID, in use when port is wlan */ + uint8_t lag_index; /* lag_index, in use when port is an SF2 port */ + + union { + /* queue_id in the following substructures must overlap */ + struct { + uint32_t queue_id; /* Egress queue id */ + } lan; + + struct { + uint32_t queue_id; /* Egress queue id. method=port only */ + /* Destination flow for method=port, Source flow for + * method=bridge,port=wan */ + rdpa_flow flow; + } wan; + + uint32_t oam_data; /* Extra data entry-specific */ + } x; + uint32_t data; /* data pointer or FPM/BPM hw token */ + uint16_t data_offset; /* data offset inside pointer */ + uint16_t data_size; /* size of actuall data */ + + union { + struct { + /* when set, indicates that a Speed Service Setup packet + * is being transmitted */ + uint8_t is_spdsvc_setup_packet:1; + /* BOOL flag, TRUE=never lock QM access, only for send + * dying gasp. Default should be FALSE!! */ + uint8_t no_lock:1; + uint8_t reserved:6; + } bits; + uint8_t flags; + }; + rdpa_discard_prty drop_precedence; /* Indicates drop precedence */ + uint32_t spdt_so_mark; /* Socket mark for Speed Test */ +#ifdef CONFIG_BCM_PTP_1588 + uint32_t ptp_info; +#endif +} rdpa_cpu_tx_info_t; + +#endif /* RDPA_CPU_BASIC_H_ */ diff --git a/arch/arm/mach-bcmbca/xrdp/rdpa_gpl_sbpm.c b/arch/arm/mach-bcmbca/xrdp/rdpa_gpl_sbpm.c new file mode 100644 index 0000000000..df65e25aaa --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdpa_gpl_sbpm.c @@ -0,0 +1,306 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* + +*/ + +/*****************************************************************************/ +/* */ +/* Include files */ +/* */ +/*****************************************************************************/ + +#include "rdpa_gpl_sbpm.h" +#include "rdp_common.h" +#include "rdp_subsystem_common.h" +#include "XRDP_AG.h" +#if defined(CONFIG_BCM63146) +#if defined(CONFIG_BCMBCA_XRDP_GPL) +#include "xrdp_drv_psram.h" +#include "xrdp_drv_sbpm.h" +#else +#include "xrdp_drv_psram_ag.h" +#include "xrdp_drv_sbpm_ag.h" +#endif +#else +#include "xrdp_drv_psram_mem_ag.h" +#endif + +#define SBPM_MAX_NUM_OF_ITERS 1000 + +#ifndef MIN +#define MIN(a, b) ((a) >= (b) ? (b) : (a)) +#endif + +static int drv_sbpm_connect_single(uint16_t bn, uint16_t next_bn) +{ + int rc, num_of_iters; + bdmf_boolean connect_ack, busy, rdy; + + rc = ag_drv_sbpm_regs_bn_connect_set(bn, 1, 0, next_bn); + if (rc) + return rc; + for (num_of_iters = 0; num_of_iters < SBPM_MAX_NUM_OF_ITERS; + num_of_iters++) { + rc = ag_drv_sbpm_regs_bn_connect_rply_get(&connect_ack, &busy, + &rdy); + if (rc) + return rc; + if (rdy && connect_ack) + break; + } + if (num_of_iters == SBPM_MAX_NUM_OF_ITERS) + return BDMF_ERR_INTERNAL; + return 0; +} + +static bdmf_error_t drv_sbpm_copy_buf_to_bn(uint16_t bn, uint32_t headroom, + uint8_t *data, uint32_t size) +{ +#ifdef CONFIG_BCM_PON_XRDP + psram_mem_memory_data _data = {}; + + memcpy((uint8_t *)(&_data) + headroom, data, + MIN(size, SBPM_BUF_SIZE - headroom)); + return ag_drv_psram_mem_memory_data_set(bn, &_data); +#else + psram_memory_data _data = {}; + + memcpy((uint8_t *)(&_data) + headroom, data, + MIN(size, SBPM_BUF_SIZE - headroom)); + return ag_drv_psram_memory_data_set(bn, &_data); +#endif +} + +static bdmf_error_t drv_sbpm_alloc_single(uint32_t size, uint32_t headroom, + uint8_t *data, uint16_t *bn) +{ + int rc, num_of_iters; + sbpm_regs_bn_alloc_rply reply; + + rc = ag_drv_sbpm_regs_bn_alloc_set(30); + if (rc) + goto error; + for (num_of_iters = 0; num_of_iters < SBPM_MAX_NUM_OF_ITERS; + num_of_iters++) { + rc = ag_drv_sbpm_regs_bn_alloc_rply_get(&reply); + if (rc) + goto error; + if (reply.rdy && reply.alloc_bn_valid) + break; + } + if (num_of_iters == SBPM_MAX_NUM_OF_ITERS) { + printf("%s: alloc single 5 (%d)\n", __FUNCTION__, rc); + rc = BDMF_ERR_INTERNAL; + goto error; + } + + drv_sbpm_copy_buf_to_bn(reply.alloc_bn, headroom, data, size); + *bn = reply.alloc_bn; + return 0; + +error: + *bn = SBPM_INVALID_BUFFER_NUMBER; + return rc; +} + +bdmf_error_t drv_sbpm_alloc_list(uint32_t size, uint32_t headroom, uint8_t *data, + uint16_t *bn0, uint16_t *bn1, uint8_t *bns_num) +{ + + uint16_t head_bn = SBPM_INVALID_BUFFER_NUMBER, new_bn, curr_bn; + int rc = 0, _size, sbpm_buf_size_wo_headroom; + uint8_t _bns_num = 1; + + _size = (int)size; + sbpm_buf_size_wo_headroom = SBPM_BUF_SIZE - headroom; + + /* Allocate first; then in loop, copy and allocate next as long + * as needed. */ + rc = drv_sbpm_alloc_single(_size, headroom, data, &head_bn); + if (rc) + goto error; + if (_size <= sbpm_buf_size_wo_headroom) { + /* We are done, short packet */ + new_bn = head_bn; /* Last BN = head BN */ + goto exit; + } + + for (_size -= sbpm_buf_size_wo_headroom, + data += sbpm_buf_size_wo_headroom, curr_bn = head_bn; + _size > 0; + _size -= SBPM_BUF_SIZE, data += SBPM_BUF_SIZE, curr_bn = new_bn) { + rc = drv_sbpm_alloc_single(_size, 0, data, &new_bn); + if (rc) + goto error; + rc = drv_sbpm_connect_single(curr_bn, new_bn); + if (rc) { + drv_sbpm_free_list(new_bn); + goto error; + } + _bns_num++; + } + +exit: + + if (bn0) + *bn0 = head_bn; + if (bn1) + *bn1 = new_bn; + if (bns_num) + *bns_num = _bns_num; + return 0; + +error: + if (head_bn != SBPM_INVALID_BUFFER_NUMBER) + drv_sbpm_free_list(head_bn); + + if (bn0) + *bn0 = SBPM_INVALID_BUFFER_NUMBER; + if (bn1) + *bn1 = SBPM_INVALID_BUFFER_NUMBER; + if (bns_num) + *bns_num = 0; + return rc; +} + +bdmf_error_t drv_sbpm_free_list(uint16_t head_bn) +{ + int rc, num_of_iters; + sbpm_regs_bn_free_without_contxt_rply reply; + + rc = ag_drv_sbpm_regs_bn_free_without_contxt_set(head_bn, 18, 1); + if (rc) + return rc; + for (num_of_iters = 0; num_of_iters < SBPM_MAX_NUM_OF_ITERS; + num_of_iters++) { + rc = ag_drv_sbpm_regs_bn_free_without_contxt_rply_get(&reply); + if (rc) + return rc; + if (reply.rdy) + break; + } + if (reply.free_ack == 0) { + bdmf_trace("coudlnt release bn =%d free_ack=0\n", head_bn); + return BDMF_ERR_INTERNAL; + } + + if (num_of_iters == SBPM_MAX_NUM_OF_ITERS) { + bdmf_trace("coudlnt release bn=%d max_iter\n", head_bn); + return BDMF_ERR_INTERNAL; + } + + return 0; +} + +uint16_t drv_sbpm_get_next_bn(int16_t bn) +{ + int rc; + sbpm_regs_get_next_rply next_rply = {}; + uint32_t next_bn = SBPM_INVALID_BUFFER_NUMBER; + + rc = ag_drv_sbpm_regs_get_next_set(bn); + while (!rc) { + rc = ag_drv_sbpm_regs_get_next_rply_get(&next_rply); + if (!next_rply.busy) + break; + } + if (rc) + return SBPM_INVALID_BUFFER_NUMBER; + + if (next_rply.bn_valid) { + if (!next_rply.bn_null) + next_bn = next_rply.next_bn; + } + else + bdmf_trace(" ### BN_NULL (0x%x)\n", next_rply.next_bn); + + if (next_rply.mcnt_val != 0) + bdmf_trace("bn: %d, mcast value: %d\n", bn, next_rply.mcnt_val); + + return next_bn; +} + +/* this funnction copy single sbpm to buffer */ +#ifdef CONFIG_BCM_PON_XRDP +void drv_sbpm_copy_single(psram_mem_memory_data *memory_data, int first, + uint8_t *dest_buffer, uint32_t *dest_index) +#else +void drv_sbpm_copy_single(psram_memory_data *memory_data, int first, + uint8_t *dest_buffer, uint32_t *dest_index) +#endif +{ + int i = 0; + uint32_t swapped; + + if (first) { + /* this is a case to skip headroom in first sbpm header */ + i = 5; + swapped = ((memory_data->memory_data[4] >> 24) & 0xff) | + ((memory_data->memory_data[4] >> 8) & 0xff00) | + ((memory_data->memory_data[4] << 8) & 0xff0000) | + ((memory_data->memory_data[4] << 24) & 0xff000000); + dest_buffer[*dest_index + 1] = swapped & 0xff; + dest_buffer[*dest_index] = (swapped >> 8) & 0xff; + *dest_index +=2; + } + + + for (; i < 32;i++) { + swapped = ((memory_data->memory_data[i] >> 24) & 0xff) | + ((memory_data->memory_data[i] >> 8) & 0xff00) | + ((memory_data->memory_data[i] << 8) & 0xff0000) | + ((memory_data->memory_data[i] << 24) & 0xff000000); + + dest_buffer[*dest_index + 3] = swapped& 0xff; + dest_buffer[*dest_index + 2] = (swapped >> 8) & 0xff; + dest_buffer[*dest_index + 1] = (swapped >> 16) & 0xff; + dest_buffer[*dest_index + 0] = (swapped >> 24) & 0xff; + *dest_index +=4; + } +} + +/* this funnction copy list of sbpm to buffer */ +bdmf_error_t drv_sbpm_copy_list(uint16_t bn, uint8_t *dest_buffer) +{ + uint16_t next_bn; + int i; + uint32_t dest_index = 0; +#ifdef CONFIG_BCM_PON_XRDP + psram_mem_memory_data memory_data; +#else + psram_memory_data memory_data; +#endif + +#ifdef CONFIG_BCM_PON_XRDP + ag_drv_psram_mem_memory_data_get(bn, &memory_data); +#else + ag_drv_psram_memory_data_get(bn, &memory_data); +#endif + drv_sbpm_copy_single(&memory_data, 1, &dest_buffer[0], &dest_index); + + + for (i = 0; i < SBPM_MAX_NUM_OF_BNS; i++) { + next_bn = drv_sbpm_get_next_bn(bn); + if (next_bn == SBPM_INVALID_BUFFER_NUMBER) + break; + + bn = next_bn; +#ifdef CONFIG_BCM_PON_XRDP + ag_drv_psram_mem_memory_data_get(bn, &memory_data); +#else + ag_drv_psram_memory_data_get(bn, &memory_data); +#endif + drv_sbpm_copy_single(&memory_data, 0, &dest_buffer[0], + &dest_index); + } + if (i == SBPM_MAX_NUM_OF_BNS) { + bdmf_trace("===== BAD LIST ALLOCATED, STOP SCANNING...., " + "original bn is %d\n", bn); + return BDMF_ERR_INTERNAL; + } + return 0; +} + diff --git a/arch/arm/mach-bcmbca/xrdp/rdpa_gpl_sbpm.h b/arch/arm/mach-bcmbca/xrdp/rdpa_gpl_sbpm.h new file mode 100644 index 0000000000..025385aa09 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdpa_gpl_sbpm.h @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2019 Broadcom + */ +/* + +*/ + +#ifndef _RDP_DRV_SBPM_H_ +#define _RDP_DRV_SBPM_H_ + +#include +#include + +#define SBPM_BUF_SIZE 128 + +bdmf_error_t drv_sbpm_copy_list(uint16_t bn, uint8_t *dest_buffer); +bdmf_error_t drv_sbpm_alloc_list(uint32_t size, uint32_t headroom, + uint8_t *data, uint16_t *bn0, uint16_t *bn1, + uint8_t *bns_num); +bdmf_error_t drv_sbpm_free_list(uint16_t head_bn); + +#endif diff --git a/arch/arm/mach-bcmbca/xrdp/rdpa_types.h b/arch/arm/mach-bcmbca/xrdp/rdpa_types.h new file mode 100644 index 0000000000..62f775ee91 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/rdpa_types.h @@ -0,0 +1,899 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2013 Broadcom + */ +/* + * + */ + + +#ifndef _RDPA_TYPES_H_ +#define _RDPA_TYPES_H_ + +#include + +/** Traffic direction */ +typedef enum { + rdpa_dir_ds, /* Downstream */ + rdpa_dir_us /* Upstream */ +} rdpa_traffic_dir; + +/* Direction + index, Underlying structure for rdpa_dir_index aggregate */ +typedef struct { + rdpa_traffic_dir dir; /* Traffic direction */ + bdmf_index index; /* Index */ +} rdpa_dir_index_t; + +/* PPPoE header */ +typedef struct { + uint32_t session; /* PPPoE session ID */ +} rdpa_pppoe_t; + +/* PBIT */ +typedef uint8_t rdpa_pbit; + +/* DSCP */ +typedef uint8_t rdpa_dscp; + +/* DSCP pbit dei */ +typedef struct { + uint8_t pbit; /* pbit */ + uint8_t dei; /* pbit */ +} rdpa_pbit_dei_t; + +/* Priority */ +typedef uint8_t rdpa_prty; + +/** TCONT index */ +typedef uint8_t rdpa_tcont; + +/* Dual Stack lite tunnel ID */ +/* this enum is the only modification needed in order to add more than + * one tunnel */ +typedef enum { + rdpa_ds_lite_tunnel_0, + rdpa_ds_lite_max_tunnel_id = rdpa_ds_lite_tunnel_0 +} rdpa_ds_lite_tunnel_id; + +/* GEM flow ID (internal index) */ +typedef uint16_t rdpa_gem; + +/* Ethernet/GEM flow ID */ +typedef uint16_t rdpa_flow; + +/* not used by xDSL WAN Mode. flows 1-15 are used by DSL WAN modes for 16 + * channels in multiples upto 255. + * Any other values would collide with the DSL WAN flows. + * values 0x0, 0x10, 0x20... are unused. */ +#define GBE_WAN_FLOW_ID 0 + + +/* UNASSIGNED value */ +#define RDPA_VALUE_UNASSIGNED ((unsigned)-1) +#define RDPA_VALUE_UNMATCHED RDPA_VALUE_UNASSIGNED + +/* ANY value */ +#define RDPA_VALUE_ANY ((unsigned)-2) + +/* VID/PBIT/DEI */ +#define RDPA_VID_UNTAGGED ((unsigned)-3) +#define RDPA_MAX_VID 4095 +#define RDPA_MAX_PBIT 7 +#define RDPA_MAX_DEI 1 + +/* Layer-4 PROTOCOL definitions */ +#define RDPA_INVALID_PROTOCOL (0xFF) + +/* TPID Detect. + * A set of TPID values, both pre- and user-defined, + * used to apply tagging classification rules on incoming + * traffic. Accordingly, every packet is classified as Single + * or Double tagged. */ +typedef enum { + rdpa_tpid_detect_0x8100, /* Pre-Defined, 0x8100 */ + rdpa_tpid_detect_0x88A8, /* Pre-Defined, 0x88A8 */ + rdpa_tpid_detect_0x9100, /* Pre-Defined, 0x9100 */ + rdpa_tpid_detect_0x9200, /* Pre-Defined, 0x9200 */ + + rdpa_tpid_detect_udef_1, /* User-Defined, #1 */ + rdpa_tpid_detect_udef_2, /* User-Defined, #2 */ + + rdpa_tpid_detect__num_of +} rdpa_tpid_detect_t; + + +/* Forwarding action */ +typedef enum { + rdpa_forward_action_none = 0, /* ACL */ + rdpa_forward_action_forward = 1, /* Forward */ + rdpa_forward_action_host = 2, /* Trap to the host */ + rdpa_forward_action_drop = 4, /* Discard */ + rdpa_forward_action_flood = 8, /* Flood, for DA lookup only */ + /* Skip - used for generic filter for increment counter action only */ + rdpa_forward_action_skip = 16 +} rdpa_forward_action; + +/** Filtering action */ +typedef enum { + rdpa_filter_action_allow, /* Allow through */ + rdpa_filter_action_deny /* Block packet */ +} rdpa_filter_action; + +/** QoS mapping method */ +typedef enum { + rdpa_qos_method_flow, /**< Flow-based QoS mapping */ + rdpa_qos_method_pbit /**< Pbit-based QoS mapping */ +} rdpa_qos_method; + +/** Allow frame types */ +typedef enum +{ + rdpa_port_allow_any, /**< Allow tagged and untagged frames */ + rdpa_port_allow_tagged, /**< Allow tagged frames only */ + rdpa_port_allow_untagged, /**< Allow untagged frames only */ +} rdpa_port_frame_allow; + +/** Forwarding mode */ +typedef enum +{ + rdpa_forwarding_mode_pkt, /**< Packet-based forwarding */ + rdpa_forwarding_mode_flow, /**< Flow-based forwarding */ +} rdpa_forwarding_mode; + +/** DS Ethernet flow classification mode */ +typedef enum +{ + rdpa_classify_mode_pkt, /**< Packet-based classification */ + rdpa_classify_mode_flow, /**< Flow-based classification */ +} rdpa_classify_mode; + +/** Discard priority */ +typedef enum +{ + rdpa_discard_prty_low, /**< Low priority for Ingress QoS: traffic dropped under high ingress congestion */ + rdpa_discard_prty_high /**< High priority for Ingress QoS: traffic passed under high ingress congresion */ +} rdpa_discard_prty; + +/** Flow destination */ +typedef enum +{ + rdpa_flow_dest_none, /**< Not set */ + + rdpa_flow_dest_iptv, /**< IPTV */ + rdpa_flow_dest_eth, /**< Flow */ + rdpa_flow_dest_omci, /**< OMCI */ + + rdpa_flow_dest__num_of, /* Number of values in rdpa_flow_destination enum */ +} rdpa_flow_destination; + +/** WAN technology */ +typedef enum +{ + rdpa_wan_none, /**< Not configured */ + rdpa_wan_gpon, /**< GPON */ + rdpa_wan_xgpon, /**< XGPON */ + rdpa_wan_epon, /**< EPON */ + rdpa_wan_xepon, /**< XEPON */ + rdpa_wan_gbe, /**< GbE */ + rdpa_wan_dsl, /**< xDSL */ + rdpa_wan_type__num_of +} rdpa_wan_type; + +/** Link speed */ +typedef enum +{ + rdpa_speed_none, /**< Not configured */ + rdpa_speed_100m, /**< Speed of 100 Mega */ + rdpa_speed_1g, /**< Speed of 1 Giga */ + rdpa_speed_2_5g, /**< Speed of 2.5 Giga */ + rdpa_speed_5g, /**< Speed of 5 Giga */ + rdpa_speed_10g, /**< Speed of 10 Giga */ +} rdpa_speed_type; + +/** Simple statistics */ +typedef struct +{ + uint32_t packets; /**< Packets */ + uint32_t bytes; /**< Bytes */ +} rdpa_stat_t; + +/** Generic 1-way statistics */ +typedef struct +{ + rdpa_stat_t passed; /**< Passed statistics */ + rdpa_stat_t discarded; /**< Discarded statistics */ +} rdpa_stat_1way_t; + +/** Tx+Rx statistics */ +typedef struct +{ + rdpa_stat_1way_t tx; /**< Transmit statistics */ + rdpa_stat_1way_t rx; /**< Receive statistics */ +} rdpa_stat_tx_rx_t; + +/** Tx+Rx statistics for passed packets + bytes */ +typedef struct +{ + rdpa_stat_t tx; /**< Transmit statistics */ + rdpa_stat_t rx; /**< Receive statistics */ +} rdpa_stat_tx_rx_valid_t; + +/** RDPA interface (port). + * The enum includes physical and virtual ports that + * can appear in bridging / routing rules as ingress or egress interface. + * The port list does not include VLAN-based virtual interfaces and tunnels. + * Aggregation ports, such as PCI and SWITCH, can be used in 2-level scheduling. + */ +typedef enum +{ + rdpa_if_first, /*< First interface */ + + /** WAN ports */ + rdpa_if_wan0 = rdpa_if_first, /**< WAN0 port */ + rdpa_if_wan1, /**< WAN1 port */ + rdpa_if_wan2, /**< WAN2 port */ + rdpa_if_wan_max = rdpa_if_wan2, + /** LAN ports */ + rdpa_if_lan0, /**< LAN0 port */ + rdpa_if_lan1, /**< LAN1 port */ + rdpa_if_lan2, /**< LAN2 port */ + rdpa_if_lan3, /**< LAN3 port */ + rdpa_if_lan4, /**< LAN4 port */ + rdpa_if_lan5, /**< LAN5 port */ + rdpa_if_lan6, /**< LAN6 port */ + rdpa_if_lan7, /**< LAN7 port */ +#if defined(BCM_DSL_RDP) || defined(BCM_DSL_XRDP) + rdpa_if_lan_max = rdpa_if_lan7, +#else /* DSL Platforms */ + rdpa_if_lan8, /**< LAN8 port */ + rdpa_if_lan9, /**< LAN9 port */ + rdpa_if_lan10, /**< LAN10 port */ + rdpa_if_lan11, /**< LAN11 port */ + rdpa_if_lan12, /**< LAN12 port */ + rdpa_if_lan13, /**< LAN13 port */ + rdpa_if_lan14, /**< LAN14 port */ + rdpa_if_lan15, /**< LAN15 port */ + rdpa_if_lan16, /**< LAN16 port */ + rdpa_if_lan17, /**< LAN17 port */ + rdpa_if_lan18, /**< LAN18 port */ + rdpa_if_lan19, /**< LAN19 port */ + rdpa_if_lan20, /**< LAN20 port */ + rdpa_if_lan21, /**< LAN21 port */ +#ifdef G9991 + rdpa_if_lan22, /**< LAN22 port */ + rdpa_if_lan23, /**< LAN23 port */ + rdpa_if_lan24, /**< LAN24 port */ + rdpa_if_lan25, /**< LAN25 port */ + rdpa_if_lan26, /**< LAN26 port */ + rdpa_if_lan27, /**< LAN27 port */ + rdpa_if_lan28, /**< LAN28 port */ + rdpa_if_lan29, /**< LAN29 port */ + rdpa_if_lan_max = rdpa_if_lan29, +#else + rdpa_if_lan_max = rdpa_if_lan21, +#endif +#endif /* PON Platforms */ + /** Special ports */ + rdpa_if_lag0, /**< Physical emac0 port */ + rdpa_if_lag1, /**< Physical emac1 port */ + rdpa_if_lag2, /**< Physical emac2 port */ + rdpa_if_lag3, /**< Physical emac3 port */ + rdpa_if_lag4, /**< Physical emac4 port */ + rdpa_if_lag_max = rdpa_if_lag4, + + /** Switch aggregate port */ + rdpa_if_switch, /**< LAN switch port */ + +#ifndef XRDP + /** CPU ports for WLAN usage (local termination) */ + rdpa_if_wlan0, + rdpa_if_cpu_first = rdpa_if_wlan0, + rdpa_if_wlan1, + rdpa_if_wlan_last = rdpa_if_wlan1, + /** CPU (local termination) */ + rdpa_if_cpu, /**< CPU port (local termination) */ + + rdpa_if_max_mcast_port = rdpa_if_cpu, /* only above ports could be part of mcast egress port mask */ + + /** Wi-Fi logical ports (SSIDs) */ + rdpa_if_ssid0, /**< Wi-Fi: SSID0 */ + rdpa_if_ssid1, /**< Wi-Fi: SSID1 */ + rdpa_if_ssid2, /**< Wi-Fi: SSID2 */ + rdpa_if_ssid3, /**< Wi-Fi: SSID3 */ + rdpa_if_ssid4, /**< Wi-Fi: SSID4 */ + rdpa_if_ssid5, /**< Wi-Fi: SSID5 */ + rdpa_if_ssid6, /**< Wi-Fi: SSID6 */ + rdpa_if_ssid7, /**< Wi-Fi: SSID7 */ + rdpa_if_ssid8, /**< Wi-Fi: SSID8 */ + rdpa_if_ssid9, /**< Wi-Fi: SSID9 */ + rdpa_if_ssid10, /**< Wi-Fi: SSID10 */ + rdpa_if_ssid11, /**< Wi-Fi: SSID11 */ + rdpa_if_ssid12, /**< Wi-Fi: SSID12 */ + rdpa_if_ssid13, /**< Wi-Fi: SSID13 */ + rdpa_if_ssid14, /**< Wi-Fi: SSID14 */ + rdpa_if_ssid15, /**< Wi-Fi: SSID15 */ + rdpa_if_cpu_last = rdpa_if_ssid15, +#else + /** CPU ports (local termination) */ + rdpa_if_cpu0, /**< CPU0 port (local termination) */ + rdpa_if_cpu_first = rdpa_if_cpu0, + rdpa_if_cpu = rdpa_if_cpu0, + rdpa_if_max_mcast_port = rdpa_if_cpu, /* only above ports could be part of mcast egress port mask */ + rdpa_if_cpu1, /**< CPU1 port (local termination) */ + rdpa_if_cpu2, /**< CPU2 port (local termination) */ + rdpa_if_cpu3, /**< CPU3 port (local termination) */ + rdpa_if_wlan0, /**< CPU port (local termination) reserved for WLAN0 */ + rdpa_if_wlan1, /**< CPU port (local termination) reserved for WLAN1 */ + rdpa_if_wlan2, /**< CPU port (local termination) reserved for WLAN2 */ + rdpa_if_wlan_last = rdpa_if_wlan2, + rdpa_if_cpu_last = rdpa_if_wlan2, +#endif + + rdpa_if_bond0, /**< Virtual Port bonding interface 0 */ + rdpa_if_bond1, /**< Virtual Port bonding interface 1 */ + rdpa_if_bond2, /**< Virtual Port bonding interface 2 */ + rdpa_if_bond_max = rdpa_if_bond2, + rdpa_if_any, /**< Any Port */ + + + rdpa_if__number_of, + + rdpa_if_none /**< No port */ + +} rdpa_if; + +typedef enum +{ + rdpa_wlan_ssid0, + rdpa_wlan_ssid1, + rdpa_wlan_ssid2, + rdpa_wlan_ssid3, + rdpa_wlan_ssid4, + rdpa_wlan_ssid5, + rdpa_wlan_ssid6, + rdpa_wlan_ssid7, + rdpa_wlan_ssid8, + rdpa_wlan_ssid9, + rdpa_wlan_ssid10, + rdpa_wlan_ssid11, + rdpa_wlan_ssid12, + rdpa_wlan_ssid13, + rdpa_wlan_ssid14, + rdpa_wlan_ssid15, +} rdpa_wlan_ssid; + +/** EMAC id */ +typedef enum +{ + rdpa_emac0, /**< EMAC0 */ + rdpa_emac1, /**< EMAC1 */ + rdpa_emac2, /**< EMAC2 */ + rdpa_emac3, /**< EMAC3 */ + rdpa_emac4, /**< EMAC4 */ + rdpa_emac5, /**< EMAC5 */ + rdpa_emac6, /**< EMAC6 */ + rdpa_emac7, /**< EMAC7 */ + rdpa_emac__num_of, /* Max number of EMACs */ + rdpa_emac_none, /**< Indicates virtual port */ +} rdpa_emac; + +/** EMAC mode */ +typedef enum +{ + rdpa_emac_mode_sgmii, /**< SGMII */ + rdpa_emac_mode_hisgmii, /**< HISGMII */ + rdpa_emac_mode_qsgmii, /**< QSGMII */ + rdpa_emac_mode_ss_smii, /**< SS SMII */ + rdpa_emac_mode_rgmii, /**< RGMII */ + rdpa_emac_mode_mii, /**< MII */ + rdpa_emac_mode_tmii, /**< TMII */ + + rdpa_emac_mode__num_of, /* Number of EMAC modes */ +} rdpa_emac_mode; + + +/** EMAC rates */ +typedef enum +{ + rdpa_emac_rate_10m, /**< 10 Mbps */ + rdpa_emac_rate_100m, /**< 100 Mbps */ + rdpa_emac_rate_1g, /**< 1 Gbps */ + rdpa_emac_rate_2_5g, /**< 2.5 Gbps */ + + rdpa_emac_rate__num_of, /* Number of rates */ +} rdpa_emac_rate; + +/** EMAC configuration */ +typedef struct +{ + char loopback; /**< 1 = line loopback */ + rdpa_emac_rate rate; /**< EMAC rate */ + char generate_crc; /**< 1 = generate CRC */ + char full_duplex; /**< 1 = full duplex */ + char pad_short; /**< 1 = pad short frames */ + char allow_too_long;/**< 1 = allow long frames */ + char check_length; /**< 1 = check frame length */ + uint32_t preamble_length; /**< Preamble length */ + uint32_t back2back_gap; /**< Back2Back inter-packet gap */ + uint32_t non_back2back_gap; /**< Non Back2Back inter-packet gap */ + uint32_t min_interframe_gap; /**< Min inter-frame gap */ + char rx_flow_control;/**< 1 = enable RX flow control */ + char tx_flow_control;/**< 1 = enable TX flow control */ +} rdpa_emac_cfg_t; + +/** RX RMON counters. + * Underlying type for emac_rx_stat aggregate type. + */ +typedef struct +{ + uint32_t byte; /**< Receive Byte Counter */ + uint32_t packet; /**< Receive Packet Counter */ + uint32_t frame_64; /**< Receive 64 Byte Frame Counter */ + uint32_t frame_65_127; /**< Receive 65 to 127 Byte Frame Counter */ + uint32_t frame_128_255; /**< Receive 128 to 255 Byte Frame Counter */ + uint32_t frame_256_511; /**< Receive 256 to 511 Byte Frame Counter */ + uint32_t frame_512_1023; /**< Receive 512 to 1023 Byte Frame Counter */ + uint32_t frame_1024_1518; /**< Receive 1024 to 1518 Byte Frame Counter */ + uint32_t frame_1519_mtu; /**< Receive 1519 to MTU Frame Counter */ + uint32_t multicast_packet; /**< Receive Multicast Packet */ + uint32_t broadcast_packet; /**< Receive Broadcast Packet */ + uint32_t unicast_packet; /**< Receive Unicast Packet */ + uint32_t alignment_error; /**< Receive Alignment error */ + uint32_t frame_length_error;/**< Receive Frame Length Error Counter */ + uint32_t code_error; /**< Receive Code Error Counter */ + uint32_t carrier_sense_error;/**< Receive Carrier sense error */ + uint32_t fcs_error; /**< Receive FCS Error Counter */ + uint32_t control_frame; /**< Receive Control Frame Counter */ + uint32_t pause_control_frame;/**< Receive Pause Control Frame */ + uint32_t unknown_opcode; /**< Receive Unknown opcode */ + uint32_t undersize_packet; /**< Receive Undersize Packet */ + uint32_t oversize_packet; /**< Receive Oversize Packet */ + uint32_t fragments; /**< Receive Fragments */ + uint32_t jabber; /**< Receive Jabber counter */ + uint32_t overflow; /**< Receive Overflow counter */ +} rdpa_emac_rx_stat_t; + +/** Tx RMON counters. + * Underlying type for emac_tx_stat aggregate type. + */ +typedef struct +{ + uint32_t byte; /**< Transmit Byte Counter */ + uint32_t packet; /**< Transmit Packet Counter */ + uint32_t frame_64; /**< Transmit 64 Byte Frame Counter */ + uint32_t frame_65_127; /**< Transmit 65 to 127 Byte Frame Counter */ + uint32_t frame_128_255; /**< Transmit 128 to 255 Byte Frame Counter */ + uint32_t frame_256_511; /**< Transmit 256 to 511 Byte Frame Counter */ + uint32_t frame_512_1023; /**< Transmit 512 to 1023 Byte Frame Counter */ + uint32_t frame_1024_1518; /**< Transmit 1024 to 1518 Byte Frame Counter */ + uint32_t frame_1519_mtu; /**< Transmit 1519 to MTU Frame Counter */ + uint32_t fcs_error; /**< Transmit FCS Error */ + uint32_t multicast_packet; /**< Transmit Multicast Packet */ + uint32_t broadcast_packet; /**< Transmit Broadcast Packet */ + uint32_t unicast_packet; /**< Transmit Unicast Packet */ + uint32_t excessive_collision; /**< Transmit Excessive collision counter */ + uint32_t late_collision; /**< Transmit Late collision counter */ + uint32_t single_collision; /**< Transmit Single collision frame counter */ + uint32_t multiple_collision;/**< Transmit Multiple collision frame counter */ + uint32_t total_collision; /**< Transmit Total Collision Counter */ + uint32_t pause_control_frame; /**< Transmit PAUSE Control Frame */ + uint32_t deferral_packet; /**< Transmit Deferral Packet */ + uint32_t excessive_deferral_packet; /**< Transmit Excessive Deferral Packet */ + uint32_t jabber_frame; /**< Transmit Jabber Frame */ + uint32_t control_frame; /**< Transmit Control Frame */ + uint32_t oversize_frame; /**< Transmit Oversize Frame counter */ + uint32_t undersize_frame; /**< Transmit Undersize Frame */ + uint32_t fragments_frame; /**< Transmit Fragments Frame counter */ + uint32_t error; /**< Transmission errors*/ + uint32_t underrun; /**< Transmission underrun */ +} rdpa_emac_tx_stat_t; + +/** Emac statistics */ +typedef struct +{ + rdpa_emac_rx_stat_t rx; /**< Emac Receive Statistics */ + rdpa_emac_tx_stat_t tx; /**< Emac Transmit Statistics */ +} rdpa_emac_stat_t; + +/** RDPA EMAC mask + * A combination of \ref rdpa_emac_id constants. + */ +typedef unsigned int rdpa_emacs; + +/** RDPA emac mask. + * \param[in] __emac EMAC + * \return EMAC - Mask representation + */ +static inline rdpa_emacs rdpa_emac_id(rdpa_emac __emac) +{ + return 1 << (__emac); +} + +/** RDPA port mask + * A combination of \ref rdpa_if_id constants. + */ +typedef uint64_t rdpa_ports __attribute__((aligned(8))); + +/** RDPA interface (port) mask. + * Can be combined in rdpa_ports mask to specify multiple ports in the same operation. + * \param[in] __if Interface + * \return Interface - Mask representation + */ +static inline rdpa_ports rdpa_if_id(rdpa_if __if) +{ + return 1LL << (__if); +} + +/** All WAN ports */ +#define RDPA_PORT_ALL_WAN (rdpa_if_id(rdpa_if_wan0) | rdpa_if_id(rdpa_if_wan1) | rdpa_if_id(rdpa_if_wan2)) + +/** Check if interface is WAN interface + * \param[in] __if Interface + * \return 1 WAN, 0 otherwise + */ +static inline int rdpa_if_is_wan(rdpa_if __if) +{ + return (RDPA_PORT_ALL_WAN & rdpa_if_id(__if)) ? 1 : 0; +} + +/** Map a given WAN type to the corresponding WAN interface per the platform support. + * \param[in] __wan WAN type + * \return Interface (rdpa_if_wan0/1/2) or rdpa_if_none if wan_type is not supported on the platform + */ +static inline rdpa_if rdpa_wan_type_to_if(rdpa_wan_type __wan) +{ +#if defined(CONFIG_BCM63146) + switch (__wan) { + case rdpa_wan_gbe : + return (rdpa_if_wan0); + case rdpa_wan_dsl : + return (rdpa_if_wan1); + default : + return (rdpa_if_none); + } +#else /* PON Platforms */ + switch (__wan) { + case rdpa_wan_gpon : + case rdpa_wan_xgpon : + case rdpa_wan_epon : + case rdpa_wan_xepon : + return (rdpa_if_wan0); + case rdpa_wan_gbe : +#ifdef CONFIG_MULTI_WAN_SUPPORT + return (rdpa_if_wan1); +#else + return (rdpa_if_wan0); +#endif + default : + return (rdpa_if_none); + } +#endif /* PON Platforms */ +} + +/** All LAN MACs */ +#ifndef XRDP +#define RDPA_PORT_ALL_LOOKUP_PORTS \ + (rdpa_if_id(rdpa_if_wan0) | rdpa_if_id(rdpa_if_lan0) | rdpa_if_id(rdpa_if_lan1) | rdpa_if_id(rdpa_if_lan2) | \ + rdpa_if_id(rdpa_if_lan3) | rdpa_if_id(rdpa_if_lan4)) +#endif +/** All LAN MACs */ +#ifdef G9991 +#define RDPA_PORT_ALL_LAN_MACS \ + (rdpa_if_id(rdpa_if_lan0) | rdpa_if_id(rdpa_if_lan1) | rdpa_if_id(rdpa_if_lan2) | \ + rdpa_if_id(rdpa_if_lan3) | rdpa_if_id(rdpa_if_lan4) | rdpa_if_id(rdpa_if_lan5) | \ + rdpa_if_id(rdpa_if_lan6) | rdpa_if_id(rdpa_if_lan7) | rdpa_if_id(rdpa_if_lan8) | \ + rdpa_if_id(rdpa_if_lan9) | rdpa_if_id(rdpa_if_lan10) | rdpa_if_id(rdpa_if_lan11) | \ + rdpa_if_id(rdpa_if_lan12) | rdpa_if_id(rdpa_if_lan13) | rdpa_if_id(rdpa_if_lan14) | \ + rdpa_if_id(rdpa_if_lan15) | rdpa_if_id(rdpa_if_lan16) | rdpa_if_id(rdpa_if_lan17) | \ + rdpa_if_id(rdpa_if_lan18) | rdpa_if_id(rdpa_if_lan19) | rdpa_if_id(rdpa_if_lan20) | \ + rdpa_if_id(rdpa_if_lan21) | rdpa_if_id(rdpa_if_lan22) | rdpa_if_id(rdpa_if_lan23) | \ + rdpa_if_id(rdpa_if_lan24) | rdpa_if_id(rdpa_if_lan25) | rdpa_if_id(rdpa_if_lan26) | \ + rdpa_if_id(rdpa_if_lan27) | rdpa_if_id(rdpa_if_lan28) | rdpa_if_id(rdpa_if_lan29)) +#elif defined(BCM_DSL_RDP) || defined(BCM_DSL_XRDP) +#define RDPA_PORT_ALL_LAN_MACS \ + (rdpa_if_id(rdpa_if_lan0) | rdpa_if_id(rdpa_if_lan1) | rdpa_if_id(rdpa_if_lan2) | \ + rdpa_if_id(rdpa_if_lan3) | rdpa_if_id(rdpa_if_lan4) | rdpa_if_id(rdpa_if_lan5) | \ + rdpa_if_id(rdpa_if_lan6) | rdpa_if_id(rdpa_if_lan7)) +#else +#define RDPA_PORT_ALL_LAN_MACS \ + (rdpa_if_id(rdpa_if_lan0) | rdpa_if_id(rdpa_if_lan1) | rdpa_if_id(rdpa_if_lan2) | \ + rdpa_if_id(rdpa_if_lan3) | rdpa_if_id(rdpa_if_lan4) | rdpa_if_id(rdpa_if_lan5) | \ + rdpa_if_id(rdpa_if_lan6) | rdpa_if_id(rdpa_if_lan7) | rdpa_if_id(rdpa_if_lan8) | \ + rdpa_if_id(rdpa_if_lan9) | rdpa_if_id(rdpa_if_lan10) | rdpa_if_id(rdpa_if_lan11) | \ + rdpa_if_id(rdpa_if_lan12) | rdpa_if_id(rdpa_if_lan13) | rdpa_if_id(rdpa_if_lan14) | \ + rdpa_if_id(rdpa_if_lan15) | rdpa_if_id(rdpa_if_lan16) | rdpa_if_id(rdpa_if_lan17) | \ + rdpa_if_id(rdpa_if_lan18) | rdpa_if_id(rdpa_if_lan19) | rdpa_if_id(rdpa_if_lan20) | \ + rdpa_if_id(rdpa_if_lan21)) +#endif + +/** All physical ports */ +#define RDPA_PORT_LAG_AND_SWITCH_PORTS \ + (rdpa_if_id(rdpa_if_lag0) | rdpa_if_id(rdpa_if_lag1) | rdpa_if_id(rdpa_if_lag2) | \ + rdpa_if_id(rdpa_if_lag3) | rdpa_if_id(rdpa_if_lag4) | rdpa_if_id(rdpa_if_switch)) + +/** All EMACs */ +#ifndef XRDP +#define RDPA_PORT_ALL_EMACS \ + (rdpa_emac_id(rdpa_emac0) | rdpa_emac_id(rdpa_emac1) | rdpa_emac_id(rdpa_emac2) | \ + rdpa_emac_id(rdpa_emac3) | rdpa_emac_id(rdpa_emac4) | rdpa_emac_id(rdpa_emac5)) +#else +#define RDPA_PORT_ALL_EMACS \ + (rdpa_emac_id(rdpa_emac0) | rdpa_emac_id(rdpa_emac1) | rdpa_emac_id(rdpa_emac2) | \ + rdpa_emac_id(rdpa_emac3) | rdpa_emac_id(rdpa_emac4) | rdpa_emac_id(rdpa_emac5) |\ + rdpa_emac_id(rdpa_emac6)) +#endif + +/** All LAN ports */ +#define RDPA_PORT_ALL_LAN (RDPA_PORT_ALL_LAN_MACS) +/** All LAN ports and physical */ +#define RDPA_PORT_ALL_LAN_AND_LAG (RDPA_PORT_ALL_LAN_MACS | RDPA_PORT_LAG_AND_SWITCH_PORTS) + +/** Check if interface is LAN interface (LAN EMAC port or LAN switch port, not including Wi-Fi ports) + * \param[in] __if Interface + * \return 1 LAN (port or switch), 0 otherwise + */ +static inline int rdpa_if_is_lan(rdpa_if __if) +{ + return (RDPA_PORT_ALL_LAN & rdpa_if_id(__if)) ? 1 : 0; +} + +/** Check if interface is LAN interface (LAN EMAC port, not including WiFi ports) + * \param[in] __if Interface + * \return 1 LAN , 0 otherwise + */ +static inline int rdpa_if_is_lan_mac(rdpa_if __if) +{ + return (RDPA_PORT_ALL_LAN_MACS & rdpa_if_id(__if)) ? 1 : 0; +} + +/** Check if interface is LAN interface (LAN EMAC port or physical port) + * \param[in] __if Interface + * \return 1 LAN (port or phisical), 0 otherwise + */ +static inline int rdpa_if_is_lan_lag_and_switch(rdpa_if __if) +{ + return (RDPA_PORT_ALL_LAN_AND_LAG & rdpa_if_id(__if)) ? 1 : 0; +} + + +/** Check if interface is LAG interface (physical port) + * \param[in] __if Interface + * \return 1 LAN (port or phisical), 0 otherwise + */ +static inline int rdpa_if_is_lag_and_switch(rdpa_if __if) +{ + return (RDPA_PORT_LAG_AND_SWITCH_PORTS & rdpa_if_id(__if)) ? 1 : 0; +} + +/** All WLAN ports */ +#ifdef XRDP +#define RDPA_PORT_ALL_WLAN \ + (rdpa_if_id(rdpa_if_wlan0) | rdpa_if_id(rdpa_if_wlan1) | rdpa_if_id(rdpa_if_wlan2)) +#else +#define RDPA_PORT_ALL_WLAN \ + (rdpa_if_id(rdpa_if_wlan0) | rdpa_if_id(rdpa_if_wlan1)) +#endif + +/** Check if interface is WLAN (PCI port) + * \param[in] __if Interface + * \return 1 if WLAN port, 0 otherwise + */ +static inline int rdpa_if_is_wlan(rdpa_if __if) +{ + return (RDPA_PORT_ALL_WLAN & rdpa_if_id(__if)) ? 1 : 0; +} + +#if defined(CONFIG_BCM_PON_XRDP) || defined(BCM_DSL_XRDP) +#define WL_NUM_OF_SSID_PER_UNIT 16 +#else +#define WL_NUM_OF_SSID_PER_UNIT 8 +#endif /* CONFIG_BCM_PON */ + +/** All Bond ports */ +#define RDPA_PORT_ALL_BOND \ + (rdpa_if_id(rdpa_if_bond0) | rdpa_if_id(rdpa_if_bond1) | rdpa_if_id(rdpa_if_bond2)) + +/** Check if interface is Bonded + * \param[in] __if Interface + * \return 1 if Bond port, 0 otherwise + */ +static inline int rdpa_if_is_bond(rdpa_if __if) +{ + return (RDPA_PORT_ALL_BOND & rdpa_if_id(__if)) ? 1 : 0; +} + + +#ifndef XRDP +/** All WiFi virtual interfaces */ +#define RDPA_PORT_ALL_SSIDS \ + (rdpa_if_id(rdpa_if_ssid0) | rdpa_if_id(rdpa_if_ssid1) | rdpa_if_id(rdpa_if_ssid2) | rdpa_if_id(rdpa_if_ssid3) | \ + rdpa_if_id(rdpa_if_ssid4) | rdpa_if_id(rdpa_if_ssid5) | rdpa_if_id(rdpa_if_ssid6) | rdpa_if_id(rdpa_if_ssid7) | \ + rdpa_if_id(rdpa_if_ssid8) | rdpa_if_id(rdpa_if_ssid9) | rdpa_if_id(rdpa_if_ssid10) | rdpa_if_id(rdpa_if_ssid11) | \ + rdpa_if_id(rdpa_if_ssid12) | rdpa_if_id(rdpa_if_ssid13) | rdpa_if_id(rdpa_if_ssid14) | rdpa_if_id(rdpa_if_ssid15)) + +/** Check if interface is Wi-Fi SSID + * \param[in] __if Interface + * \return 1 Wi-Fi SSID, 0 otherwise + */ +static inline int rdpa_if_is_wifi(rdpa_if __if) +{ + return (RDPA_PORT_ALL_SSIDS & rdpa_if_id(__if)) ? 1 : 0; +} +#else +static inline int rdpa_if_is_wifi(rdpa_if __if) +{ + return rdpa_if_is_wlan(__if); +} +#endif + +static inline int rdpa_if_is_cpu_port(rdpa_if __if) +{ + return __if >= rdpa_if_cpu_first && __if <= rdpa_if_cpu_last; +} + +/** Check if interface is either LAN interface (LAN EMAC port or LAN switch port) or Wi-Fi SSID + * \param[in] __if Interface + * \return 1 LAN interface or Wi-Fi SSID, 0 otherwise + */ +static inline int rdpa_if_is_lan_or_wifi(rdpa_if __if) +{ + return rdpa_if_is_lan(__if) || rdpa_if_is_wifi(__if); +} + +/** Check if interface is either LAN interface (LAN EMAC port or LAN switch port) or WLAN (PCI port) + * \param[in] __if Interface + * \return 1 LAN interface or WLAN, 0 otherwise + */ +static inline int rdpa_if_is_lan_or_cpu(rdpa_if __if) +{ + return rdpa_if_is_lan(__if) || rdpa_if_is_cpu_port(__if); +} + +/** Check if interface is CPU and not WLAN (PCI port) + * \param[in] __if Interface + * \return 1 if pure CPU, 0 otherwise + */ +static inline int rdpa_if_is_cpu_not_wlan(rdpa_if __if) +{ + return rdpa_if_is_cpu_port(__if) && (!rdpa_if_is_wlan(__if)); +} + + +/** All MACs */ +#define RDPA_PORT_ALL_MACS (RDPA_PORT_ALL_LAN_MACS | RDPA_PORT_ALL_WAN) + +/** Check if port mask contains single port + * \param[in] ports Port Mask + * \return 1 if mask contains a single port , 0 otherwise + */ +static inline int rdpa_port_is_single(rdpa_ports ports) +{ + return (ports & (ports - 1)) == 0; +} + +/** Check if port mask contains wan0 port + * \param[in] ports Port Mask + * \return 1 if mask contains a wan0 port , 0 otherwise + */ +static inline int rdpa_ports_contains_wan0_if(rdpa_ports ports) +{ + return ports & rdpa_if_id(rdpa_if_wan0); /* FIXME - MULTI-WAN XPON */ +} + +/** System operation mode */ +typedef enum +{ + rdpa_method_prv, /**< Used to configure system in Provision mode */ + rdpa_method_fc, /**< Used to configure system in Flow Cache mode */ +} rdpa_operation_mode; + +/** IPTV entries lookup method */ +typedef enum +{ + iptv_lookup_method_mac, /**< Perform IPTV entry lookup by MAC address (L2) */ + iptv_lookup_method_mac_vid, /**< Perform IPTV entry lookup by MAC address and VID (L2) */ + iptv_lookup_method_group_ip, /**< Perform IPTV entry lookup by Multicast Group IP address (IGMPv2/MLDv1) */ + iptv_lookup_method_group_ip_src_ip, /**< Perform IPTV entry lookup by Multicast Group IP and Source IP + addresses (IGMPv3/MLDv2). Source IP address is optional. */ + iptv_lookup_method_group_ip_src_ip_vid /**< Perform IPTV entry lookup by Multicast Group IP and Source IP + addresses and VID. Source IP address is optional. */ +} rdpa_iptv_lookup_method; + +/** EPON mode */ +typedef enum +{ + rdpa_epon_none, /**< not EPON mode */ + rdpa_epon_ctc, /**< CTC OAM mode */ + rdpa_epon_cuc, /**< CUC OAM mode */ + rdpa_epon_dpoe, /**< DPOE OAM mode */ + rdpa_epon_bcm, /**< BCM OAM mode */ + rdpa_epon_ctc_dyn, /**< CTC OAM dynamic mode */ + rdpa_epon_cuc_dyn, /**< CUC OAM dynamic mode */ + rdpa_epon_last, +} rdpa_epon_mode; + +/** Packet offset type */ +typedef enum +{ + RDPA_OFFSET_L2, /**< Offset of L2 header */ + RDPA_OFFSET_L3, /**< Offset of L3 header */ + RDPA_OFFSET_L4, /**< Offset of L4 header */ +} rdpa_offset_t; + +/* BPM buffer size */ +typedef enum +{ + RDPA_BPM_BUFFER_2K = 2048, + RDPA_BPM_BUFFER_2_5K = 2560, + RDPA_BPM_BUFFER_4K = 4096, + RDPA_BPM_BUFFER_16K = 16384, +} rdpa_bpm_buffer_size_t; + +/** WiFi Acceleration type */ +typedef enum +{ + RDPA_WL_ACCEL_NONE = 0, /**< Acceleration disabled */ + RDPA_WL_ACCEL_WFD, /**< WFD Acceleration type */ + RDPA_WL_ACCEL_DHD_OFFLOAD /**< DHD Offload Acceleration type */ +} rdpa_wl_accel_t; + +/** CPU ring type */ +typedef enum { + rdpa_ring_data = 0, /**< Data ring */ + rdpa_ring_recycle = 1, /**< Recycle ring */ + rdpa_ring_feed = 2, /**< Feed ring */ + rdpa_ring_cpu_tx = 3, /**< Cpu tx PD ring */ +} rdpa_ring_type_t; + +typedef enum { + rdpa_proto_filter_ipv4, + rdpa_proto_filter_ipv6, + rdpa_proto_filter_pppoe, + rdpa_proto_filter_non_ip, + rdpa_proto_filter_any, + rdpa_proto_filter_last = rdpa_proto_filter_any, +} rdpa_proto_filter_t; + +/** Protocol Filters mask, defines allowed protocols */ +typedef enum { + rdpa_proto_filter_ipv4_mask = (1 << rdpa_proto_filter_ipv4), /**< Allow IPv4 traffic */ + rdpa_proto_filter_ipv6_mask = (1 << rdpa_proto_filter_ipv6), /**< Allow IPv6 traffic */ + rdpa_proto_filter_pppoe_mask = (1 << rdpa_proto_filter_pppoe), /**< Allow PPPoE traffic */ + rdpa_proto_filter_non_ip_mask = (1 << rdpa_proto_filter_non_ip), /**< Allow Non-IP traffic */ + rdpa_proto_filter_any_mask = (1 << rdpa_proto_filter_any), /**< Allow any traffic */ +} rdpa_proto_filter_fields; + +typedef uint32_t rdpa_proto_filters_mask_t; /**< Mask of \ref rdpa_proto_filter_fields (enabled protocols) */ + +/** @} end of types Doxygen group */ + +typedef struct +{ + int src; + int dest; +} int2int_map_t; + +static inline int int2int_map(int2int_map_t *map, int src, int last) +{ + for (; map->src != last && map->src != src; map++) + ; + return map->dest; +} + +static inline int int2int_map_r(int2int_map_t *map, int src, int last) +{ + for (; map->src != last && map->dest != src; map++) + ; + return map->src; +} + +typedef enum +{ + RDPA_FLOW_UNKNOWN, + RDPA_FLOW_TUPLE_L3, + RDPA_FLOW_TUPLE_L2, + RDPA_FLOW_MC, +} rdpa_flow_t; + +#endif /* _RDPA_TYPES_H_ */ + diff --git a/arch/arm/mach-bcmbca/xrdp/ru.c b/arch/arm/mach-bcmbca/xrdp/ru.c new file mode 100644 index 0000000000..11dfb6fc27 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/ru.c @@ -0,0 +1,394 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + Copyright (c) 2014 Broadcom + All Rights Reserved + + +*/ +/** + * \brief Register Utilities functional implementation + */ +#include +#include "ru.h" +#include "ru_config.h" + + +void *memset_write32(void *block, int c, uint32_t size) +{ + return memset(block, c, size); +} + +extern const ru_block_rec *RU_ALL_BLOCKS[]; + +/****************************************************************************** + * Find by name utilities + ******************************************************************************/ +const ru_block_rec *ru_block_name_find(const char *name) +{ + int blk_idx = 0; + const ru_block_rec *blk = RU_ALL_BLOCKS[blk_idx]; + + while (blk) { + if (strcmp(blk->name, name) == 0) + break; + blk = RU_ALL_BLOCKS[++blk_idx]; + } + return blk; +} + + +const ru_reg_rec *ru_reg_name_find(ru_block_inst blk_inst, + const ru_block_rec *block, + const char *name) +{ + int i; + const ru_reg_rec *reg = NULL; + + for (i = 0; i < block->reg_count; i++) { + if (strcmp(block->regs[i]->name, name) == 0) { + reg = block->regs[i]; + break; + } + } + return reg; +} + +#if RU_INCLUDE_FIELD_DB +const ru_field_rec *ru_field_name_find(const ru_reg_rec *reg, const char *name) +{ + int i; + const ru_field_rec *fld = NULL; + + for (i = 0; i < reg->field_count; i++) { + if (strcmp(reg->fields[i]->name, name) == 0) { + fld = reg->fields[i]; + break; + } + } + return fld; +} +#endif + + +/****************************************************************************** + * Find by register address + ******************************************************************************/ +int ru_block_addr_find(uint32_t addr, + ru_block_inst *blk_inst, + const ru_block_rec **block) +{ + int rc = -1; + ru_block_inst blk_idx = 0; + const ru_block_rec *blk = RU_ALL_BLOCKS[blk_idx]; + uint32_t reg_idx; + + while (blk) { + for (*blk_inst = 0; *blk_inst < blk->addr_count; (*blk_inst)++) { + for (reg_idx = 0; reg_idx < blk->reg_count; reg_idx++) { + if ((blk->regs[reg_idx]->addr + + blk->addr[*blk_inst]) == addr) { + *block = blk; + return 0; + } + } + } + blk = RU_ALL_BLOCKS[++blk_idx]; + } + + return rc; +} + + +int ru_reg_addr_find(uint32_t addr, ru_block_inst *blk_inst, + const ru_block_rec **block, + const ru_reg_rec **reg) +{ + int rc = -1; + ru_block_inst blk_idx = 0; + const ru_block_rec *blk = RU_ALL_BLOCKS[blk_idx]; + uint32_t reg_idx; + + while (blk) { + for (*blk_inst = 0; *blk_inst < blk->addr_count; (*blk_inst)++) { + for (reg_idx = 0; reg_idx < blk->reg_count; reg_idx++) { + if ((blk->regs[reg_idx]->addr + + blk->addr[*blk_inst]) == addr) { + *block = blk; + *reg = blk->regs[reg_idx]; + return 0; + } + } + } + blk = RU_ALL_BLOCKS[++blk_idx]; + } + + return rc; +} + + +/****************************************************************************** + * Print parsed register value + ******************************************************************************/ +int ru_reg_print(ru_block_inst blk_inst, + const ru_block_rec *block, + const ru_reg_rec *reg, + uint32_t value) +{ +#if RU_INCLUDE_FIELD_DB + int i; +#endif + + RU_PRINT("%s.%s[%d]@0x%lX+%lX: 0x%08X\n", block->name, reg->name, + blk_inst, block->addr[blk_inst], reg->addr, value); + +#if RU_INCLUDE_FIELD_DB + for (i = 0; i < reg->field_count; i++) { + RU_PRINT("\t%s[%d:%d]: 0x%X\n", reg->fields[i]->name, + reg->fields[i]->shift + reg->fields[i]->bits - 1, + reg->fields[i]->shift, + ru_field_get(blk_inst, block, reg, reg->fields[i], + value)); + } +#endif + return 0; +} + + +int ru_reg_addr_print(uint32_t addr, uint32_t value) +{ + ru_block_inst blk_inst; + const ru_block_rec *block; + const ru_reg_rec *reg; + int rc; + + if (!(rc = ru_reg_addr_find(addr, &blk_inst, &block, ®))) + ru_reg_print(blk_inst, block, reg, value); + + return rc; +} + + +int ru_reg_name_print(ru_block_inst blk_inst, const char *bname, + const char *rname, uint32_t value) +{ + const ru_block_rec *block; + const ru_reg_rec *reg; + int rc = -1; + + block = ru_block_name_find(bname); + if (block) { + reg = ru_reg_name_find(blk_inst, block, rname); + if (reg) + rc = ru_reg_print(blk_inst, block, reg, value); + } + + return rc; +} + +#if RU_FIELD_CHECK_ENABLE +static uint8_t ru_field_check_enable; +#endif + +#if RU_OFFLINE_TEST +static uint32_t ru_reg_space[RU_REG_COUNT]; +static uint32_t **ru_mem_reg_space[RU_BLK_COUNT]; +#endif + +void ru_field_bounds_check_enable(int enable) +{ +#if RU_FIELD_CHECK_ENABLE + ru_field_check_enable = enable; +#endif /* RU_FIELD_CHECK_ENABLE */ +} + + +/****************************************************************************** + * Register access functions + ******************************************************************************/ + + +#if !RU_EXTERNAL_REGISTER_ADDRESSING +int __ru_reg_write(const char *func, const int line, ru_block_inst blk_inst, + const ru_block_rec *blk, const ru_reg_rec *reg, uint32_t val) +{ + RU_DBG("RU_REG_WRITE from %s:%d, block:%s, reg:%s, val:%x\n", func, + line, blk->name, reg->name, val); +#if RU_OFFLINE_TEST + ru_reg_space[reg->log_idx] = val; +#else + WRITE_32(blk->addr[blk_inst] + reg->addr, val); +#endif /* RU_OFFLINE_TEST */ + return 0; +} +#endif /* !RU_EXTERNAL_REGISTER_ADDRESSING */ + + +#if !RU_EXTERNAL_REGISTER_ADDRESSING +uint32_t __ru_reg_read(const char *func, const int line, ru_block_inst blk_inst, + const ru_block_rec *blk, const ru_reg_rec *reg) +{ +#if RU_OFFLINE_TEST + return ru_reg_space[reg->log_idx]; +#else + uint32_t rv; + + READ_32(blk->addr[blk_inst] + reg->addr, rv); + + RU_DBG("RU_REG_READ from %s:%d, block:%s\n", func, line, blk->name); + return rv; +#endif /* RU_OFFLINE_TEST */ +} +#endif /* !RU_EXTERNAL_REGISTER_ADDRESSING */ + +#if RU_OFFLINE_TEST +int ru_block_idx_find(const char *name) +{ + int blk_idx = 0; + const ru_block_rec *blk = RU_ALL_BLOCKS[blk_idx]; + + while (blk) { + if (strcmp(blk->name, name) == 0) + break; + blk = RU_ALL_BLOCKS[++blk_idx]; + } + return blk_idx; +} + +int ru_reg_idx_find(const ru_block_rec *blk, const char *name) +{ + int i; + + for (i = 0; i < blk->reg_count; i++) { + if (strcmp(blk->regs[i]->name, name) == 0) + break; + } + return i; +} + +uint32_t *ru_reg_mem_area(const ru_block_rec *blk, const ru_reg_rec *reg) +{ + int blk_idx = ru_block_idx_find(blk->name); + int reg_idx = ru_reg_idx_find(blk, reg->name); + /* Per-register pointer array */ + uint32_t **blk_reg_areas = ru_mem_reg_space[blk_idx]; + + if (!blk_reg_areas[reg_idx]) { + printf("%s: %s.%s No ram. blk_idx=%d reg_idx=%d\n", + __FUNCTION__, blk->name, reg->name, blk_idx, reg_idx); + } + return blk_reg_areas[reg_idx]; +} +#endif + +#if !RU_EXTERNAL_REGISTER_ADDRESSING +int __ru_reg_ram_write(const char *func, const int line, ru_block_inst blk_inst, + ru_ram_addr ram_addr, const ru_block_rec *blk, + const ru_reg_rec *reg, uint32_t val) +{ +#if RU_OFFLINE_TEST + uint32_t *mem_area = ru_reg_mem_area(blk, reg); +#endif + + RU_DBG("RU_REG_RAM_WRITE from %s:%d, block:%s\n", func, line, blk->name); + printf("RU_REG_RAM_WRITE from %s:%d, block:%s\n", func, line, blk->name); + +#if RU_OFFLINE_TEST + if (mem_area) + mem_area[reg->ram_count*blk_inst + ram_addr] = val; + else + printf("%s->%s: can't write %s.%s. No ram\n", func, + __FUNCTION__, blk->name, reg->name); +#else + WRITE_32(blk->addr[blk_inst] + reg->addr + (reg->offset * ram_addr), val); + + printf("%s:%d:writing to addr 0x%08x\n", __func__, __LINE__, + reg->addr + (reg->offset * ram_addr)); +#endif /* RU_OFFLINE_TEST */ + return 0; +} +#endif /* !RU_EXTERNAL_REGISTER_ADDRESSING */ + + +#if !RU_EXTERNAL_REGISTER_ADDRESSING +uint32_t __ru_reg_ram_read(const char *func, const int line, + ru_block_inst blk_inst, ru_ram_addr ram_addr, + const ru_block_rec *blk, const ru_reg_rec *reg) +{ + uint32_t rv; +#if RU_OFFLINE_TEST + uint32_t *mem_area = ru_reg_mem_area(blk, reg); + if (mem_area) + rv = mem_area[reg->ram_count*blk_inst + ram_addr]; + else { + printf("%s->%s: can't read %s.%s. No ram\n", func, __func__, + blk->name, reg->name); + rv = 0; + } +#else + READ_32(blk->addr[blk_inst] + reg->addr + (reg->offset * ram_addr), rv); + + RU_DBG("RU_REG_RAM_READ from %s:%d, block:%s\n", func, line, blk->name); +#endif /* RU_OFFLINE_TEST */ + return rv; +} +#endif /* !RU_EXTERNAL_REGISTER_ADDRESSING */ + + +uint32_t __ru_field_set(const char *func, const int line, + ru_block_inst blk_inst, const ru_block_rec *blk, + const ru_reg_rec *reg, const ru_field_rec *fld, + uint32_t reg_val, uint32_t fld_val) +{ +#if RU_FIELD_CHECK_ENABLE + if (ru_field_check_enable) { + if (fld_val > (fld->mask >> fld->shift)) { + RU_ASSERT(); + RU_PRINT("ASSERT: Field value out of range. Max %u, " + "attempted %u\n", (fld->mask >> fld->shift), + fld_val); + RU_PRINT(" In field: %s.%s.%s\n", blk->name, reg->name, + fld->name); + return reg_val; + } + } +#endif /* RU_FIELD_CHECK_ENABLE */ + RU_DBG("RU_FIELD_SET from %s:%d, field:%s, reg_val:%x, field_val:%x\n", + func, line, fld->name, reg_val, fld_val); + + return FIELD_SET_(reg_val, fld->mask, fld->shift, fld_val); +} + + +uint32_t __ru_field_get(const char *func, const int line, + ru_block_inst blk_inst, const ru_block_rec *blk, + const ru_reg_rec *reg, const ru_field_rec *fld, + uint32_t reg_val) +{ + RU_DBG("RU_FIELD_GET from %s:%d, field:%s\n", func, line, fld->name); + return FIELD_GET_(reg_val, fld->mask, fld->shift); +} + + +void __ru_field_write(const char *func, const int line, ru_block_inst blk_inst, + const ru_block_rec *blk, const ru_reg_rec *reg, + const ru_field_rec *fld, uint32_t fld_val) +{ + uint32_t rv; + + rv = __ru_reg_read(func, line, blk_inst, blk, reg); + rv = __ru_field_set(func, line, blk_inst, blk, reg, fld, rv, fld_val); + __ru_reg_write(func, line, blk_inst, blk, reg, rv); +} + + +uint32_t __ru_field_read(const char *func, const int line, + ru_block_inst blk_inst, const ru_block_rec *blk, + const ru_reg_rec *reg, const ru_field_rec *fld) +{ + uint32_t rv; + + rv = __ru_reg_read(func, line, blk_inst, blk, reg); + return __ru_field_get(func, line, blk_inst, blk, reg, fld, rv); +} + +/* End of file ru.c */ diff --git a/arch/arm/mach-bcmbca/xrdp/ru.h b/arch/arm/mach-bcmbca/xrdp/ru.h new file mode 100644 index 0000000000..bdab67e84a --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/ru.h @@ -0,0 +1,496 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ +#ifndef _RU_H_ +#define _RU_H_ +/** + * \brief Register tracking utilities + * + * The register track module provides functionality to comprehensively debug + * register level transactions. It is a slow interface that should be used in + * parallel to standard direct read/write transactions. The module can parse + * registers into easy read field format. Registers may be looked up by name + * or address. + * + */ + +#include +#include "ru_config.h" +#include "ru_types.h" +#include "ru_chip.h" + +#include "access_macros.h" +void *memset_write32 (void *block, int c, uint32_t size); + +/****************************************************************************** + * Find by name utilities + ******************************************************************************/ + +#define FIELD_SET_(reg,mask,shift,fld) (((reg) & ~(mask)) | ((fld) << (shift))) +#define FIELD_GET_(reg,mask,shift) (((reg) & (mask)) >> (shift)) + + +/** + * \brief Get block info by name + * + * This function fetches a block info structure by the name of the block. The + * block name should be in the exact format of the register specification. If + * no block is found matching the given name NULL is returned. + * + * \param name Block to look up + * + * \return + * Block info structure if found, NULL if block does not exist + */ +extern +const ru_block_rec *ru_block_name_find(const char *name); + + +/** + * \brief Get register info by name + * + * This function fetches a register info structure given the info of the block + * and the register name. Names must exactly match the register specification, + * the register name should not have the block name prepended. If no matching + * register is found for the supplied block NULL is returned. + * + * \param blk_inst Block instance + * \param block Block to search + * \param name Register name to lookup + * + * \return + * Register info structure if found, NULL if register does not exist + */ +extern +const ru_reg_rec *ru_reg_name_find(ru_block_inst blk_inst, + const ru_block_rec *block, + const char *name); + + +/** + * \brief Get field info by name + * + * This function fetches a field info structure given the info of the register + * and the name of the field. The name should exactly match the register + * specification, without block or register name prepended. If no matching + * field is found for the supplied register NULL is returned. + * + * \param reg Register to search + * \param name Field name to lookup + * + * \return + * Field info structure if found, NULL if field does not exist + */ +extern +const ru_field_rec *ru_field_name_find(const ru_reg_rec *reg, const char *name); + + +/****************************************************************************** + * Find by register address + ******************************************************************************/ + +/** + * \brief Get a block info by address + * + * This function fetches a block record by address. The address may be anywhere + * within the register space of the block. If found the block record is + * assigned to the supplied container. + * + * \param[in] addr Address to lookup + * \param[out] blk_inst Container for found instance number + * \param[out] block Container for found block + * + * \return + * 0 if successful, -1 if failed + */ +extern +int ru_block_addr_find(uint32_t addr, + ru_block_inst *blk_inst, + const ru_block_rec **block); + + +/** + * \brief Get block and register info by address + * + * This function fetches a block and register record by address. The found + * records are assigned to the supplied container. + * + * \param[in] addr Address to lookup + * \param[out] blk_inst Container for found instance number + * \param[out] block Container for found block + * \param[out] reg Container for foudn register + * + * \return + * 0 if successful, -1 if failed + */ +extern +int ru_reg_addr_find(uint32_t addr, + ru_block_inst *blk_inst, + const ru_block_rec **block, + const ru_reg_rec **reg); + + +/****************************************************************************** + * Print parsed register value + ******************************************************************************/ + +/** + * \brief Parse and print a register from records + * + * This function parses a register into its individual fields and prints the + * formatted output to stdout. The function is supplied the block and register + * info records for the register to print. + * + * \param blk_inst Block instance number + * \param block Block for regsiter + * \param reg Register to print + * \param value Register value + * + * \return + * 0 if successful, -1 if failed + */ +extern +int ru_reg_print(ru_block_inst blk_inst, + const ru_block_rec *block, + const ru_reg_rec *reg, + uint32_t value); + + +/** + * \brief Parse and print a register from address + * + * This function parses a register into its individual fields and prints the + * formatted output to stdout. The function is supplied the address of the + * register to print. + * + * \param addr Register address + * \param value Register value + * + * \return + * 0 if successful, -1 if failed + */ +extern +int ru_reg_addr_print(uint32_t addr, uint32_t value); + + +/** + * \brief Parse and print a register from names + * + * This function parses a register into its individual fields and prints the + * formatted output to stdout. The function is supplied the names of the block + * and register to print. + * + * \param blk_inst Block instance number + * \param bname Name of block + * \param rname Name of register + * \param value Register value + * + * \return + * 0 if successful, -1 if failed + */ +extern +int ru_reg_name_print(ru_block_inst blk_inst, + const char *bname, + const char *rname, + uint32_t value); + + +/****************************************************************************** + * Register logging and debugging functions + ******************************************************************************/ +/** + * \brief Enable or disable field bounds checking + * + * This function enables or disables the field bounds check down when a register + * field is set. The checking will still be compiled in but simply bypassed. + * To fully bypass bounds checking disable RU_FIELD_CHECK_ENABLE. + * + * \param enable Enable or disable bounds checking + * + * \return + * None + */ +extern +void ru_field_bounds_check_enable(int enable); + + +/****************************************************************************** + * Register access functions + ******************************************************************************/ + +/** + * \brief Write a register + * + * This function writes a value to a register. If debugging is enabled the + * written value may be logged. + * + * \param blk_inst Block instance number + * \param blk Register block record + * \param reg Register record + * \param val Value to write + * + * \return + * 0 if successful + */ +extern +int __ru_reg_write(const char *func, const int line, + ru_block_inst blk_inst, + const ru_block_rec *blk, + const ru_reg_rec *reg, + uint32_t val); +#define ru_reg_write(blk_inst, blk, reg, val) \ + __ru_reg_write(__FUNCTION__, __LINE__, blk_inst, blk, reg, val) +#if !RU_FUNCTION_REG_ACCESS +#define RU_REG_WRITE(i, b, r, v) \ + WRITE_32(RU_BLK(b).addr[i] + RU_REG_OFFSET(b, r), v) +#else +#define RU_REG_WRITE(i, b, r, v) ru_reg_write(i, &RU_BLK(b), &RU_REG(b, r), v) +#endif + + +/** + * \brief Read a register + * + * This function reads a register. If debugging is enabled the value read may + * be logged. + * + * \param blk_inst Block instance number + * \param blk Register block record + * \param reg Register record + * \param val Read back register value + * + * \return + * 0 if successful + */ +extern +uint32_t __ru_reg_read(const char *func, const int line, + ru_block_inst blk_inst, + const ru_block_rec *blk, + const ru_reg_rec *reg); +#define ru_reg_read(blk_inst, blk, reg) \ + __ru_reg_read(__FUNCTION__, __LINE__, blk_inst, blk, reg) +#if !RU_FUNCTION_REG_ACCESS +#define RU_REG_READ(i, b, r, reg) \ + READ_32(RU_BLK(b).addr[i] + RU_REG_OFFSET(b, r), reg) +#else +#define RU_REG_READ(i, b, r, reg) \ + ((reg) = ru_reg_read(i, &RU_BLK(b), &RU_REG(b, r))) +#endif + + +/** + * \brief Write a RAM mapped register + * + * This function writes a instace of a RAM mapped register (i.e. a RAM that is + * an indexable table of identical registers). If debugging is enabled the + * value written value may be logged. + * + * \param blk_inst Block instance number + * \param ram_addr RAM address, aligned to the size of the register + * \param blk Register block record + * \param reg Register record + * \param val Value to write + * + * \return + * 0 if successful + */ +extern +int __ru_reg_ram_write(const char *func, const int line, + ru_block_inst blk_inst, + ru_ram_addr ram_addr, + const ru_block_rec *blk, + const ru_reg_rec *reg, + uint32_t val); +#define ru_reg_ram_write(blk_inst, ram_addr, blk, reg, val) \ + __ru_reg_ram_write(__func__, __LINE__, blk_inst, ram_addr, blk, reg, val) +#if !RU_FUNCTION_REG_ACCESS +#define RU_REG_RAM_WRITE(i, a, b, r, v) \ + WRITE_32(RU_BLK(b).addr[i] + RU_REG_OFFSET(b,r) + \ + (RU_REG(b, r).offset*(a)), v) +#else +#define RU_REG_RAM_WRITE(i, a, b, r, v) \ + ru_reg_ram_write(i, a, &RU_BLK(b), &RU_REG(b, r), v) +#endif + + +/** + * \brief Read a RAM mapped register + * + * This function reads a instace of a RAM mapped register (i.e. a RAM that is an + * indexable table of identical registers). If debugging is enabled the value + * read may be logged. + * + * \param blk_inst Block instance number + * \param ram_addr RAM address, aligned to the size of the register + * \param blk Register block record + * \param reg Register record + * \param val Read back register value + * + * \return + * 0 if successful + */ +extern +uint32_t __ru_reg_ram_read(const char *func, const int line, + ru_block_inst blk_inst, + ru_ram_addr ram_addr, + const ru_block_rec *blk, + const ru_reg_rec *reg); +#define ru_reg_ram_read(blk_inst, ram_addr, blk, reg) \ + __ru_reg_ram_read(__FUNCTION__, __LINE__, blk_inst, ram_addr, blk, reg) +#if !RU_FUNCTION_REG_ACCESS +#define RU_REG_RAM_READ(i, a, b, r, var) \ + READ_32(RU_BLK(b).addr[i] + RU_REG_OFFSET(b,r) + \ + (RU_REG(b, r).offset*(a)), var) +#else +#define RU_REG_RAM_READ(i, a, b, r, var) \ + ((var) = ru_reg_ram_read(i, a, &RU_BLK(b), &RU_REG(b, r))) +#endif + + +/** + * \brief Set a register field + * + * This function sets a field in a register. The value if applied to the + * supplied old register value and returned. If debbuging is enabled an + * assertion will be raised if the field is out of range with range being + * determined by the width of the field. If the field is out of range it will + * not be set and the original old value will be returned. + * + * \param blk_inst Block instance number + * \param blk Register block record + * \param reg Register record + * \param fld Register field record + * \param reg_val Old register value to write in to + * \param fld_val Field value to write + * + * \return + * val with new field value applied + */ +extern +uint32_t __ru_field_set(const char *func, const int line, + ru_block_inst blk_inst, + const ru_block_rec *blk, + const ru_reg_rec *reg, + const ru_field_rec *fld, + uint32_t reg_val, + uint32_t fld_val); +#define ru_field_set(blk_inst, blk, reg, fld, reg_val, fld_val) \ + __ru_field_set(__func__, __LINE__, blk_inst, blk, reg, \ + fld, reg_val, fld_val) +#if !RU_FUNCTION_REG_ACCESS +#define RU_FIELD_SET(i, b, r, f, rv, fv) \ + (((rv) & ~RU_FLD_MASK(b, r, f)) | (fv << RU_FLD_SHIFT(b, r, f))) +#else +#define RU_FIELD_SET(i, b, r, f, rv, fv) \ + ru_field_set(i, &RU_BLK(b), &RU_REG(b, r), &RU_FLD(b, r, f), rv, fv) +#endif + + +/** + * \brief Get a register field + * + * This function gets a field in a register. The value returned is justified to + * bit [0]. This function does not support any debug features. + * + * \param blk_inst Block instance number + * \param blk Register block record + * \param reg Register record + * \param fld Register field record + * \param reg_val Old register value to read from + * + * \return + * Bit [0] justified field value + */ +extern +uint32_t __ru_field_get(const char *func, const int line, + ru_block_inst blk_inst, + const ru_block_rec *blk, + const ru_reg_rec *reg, + const ru_field_rec *fld, + uint32_t reg_val); +#define ru_field_get(blk_inst, blk, reg, fld, reg_val) \ + __ru_field_get(__FUNCTION__, __LINE__, blk_inst, blk, reg, fld, reg_val) +#if !RU_FUNCTION_REG_ACCESS +#define RU_FIELD_GET(i, b, r, f, rv) \ + (((rv) & RU_FLD_MASK(b, r, f)) >> RU_FLD_SHIFT(b, r, f)) +#else +#define RU_FIELD_GET(i, b, r, f, rv) \ + ru_field_get(i, &RU_BLK(b), &RU_REG(b, r), &RU_FLD(b, r, f), rv) +#endif + + +/** + * \brief Write a field in a register + * + * This function performs a read modify write action on a given register setting + * the desired field in the process. The same logging and field checking applies + * as ru_reg_write, ru_reg_read, and ru_field_set. This function should be used + * when it is desirable to only write a single field in a register. + * + * \param blk_inst Block instance number + * \param blk Register block record + * \param reg Register record + * \param fld Register field record + * \param fld_val Field value to write + * + * \return + * None + */ +extern +void __ru_field_write(const char *func, const int line, + ru_block_inst blk_inst, + const ru_block_rec *blk, + const ru_reg_rec *reg, + const ru_field_rec *fld, + uint32_t fld_val); +#define ru_field_write(blk_inst, blk, reg, fld, fld_val) \ + __ru_field_write(__func__, __LINE__, blk_inst, blk, reg, fld, fld_val) +#if !RU_FUNCTION_REG_ACCESS +#define RU_FIELD_WRITE(i, b, r, f, fv) \ + do { \ + uint32_t rv; \ + rv = RU_REG_READ(i, b, r); \ + rv = RU_FIELD_SET(i, b, r, f, rv, fv); \ + RU_REG_WRITE(i, b, r, v); \ + } while (0) +#else +#define RU_FIELD_WRITE(i, b, r, f,fv) \ + ru_field_write(i, &RU_BLK(b), &RU_REG(b, r), &RU_FLD(b, r, f), fv) +#endif + + +/** + * \brief Read a field from a register + * + * This function reads a register and returns a given field. The same logging + * as ru_reg_read applies. This function should be called when on a single + * field is required from a register. + * + * \param blk_inst Block instance number + * \param blk Register block record + * \param reg Register record + * \param fld Register field record + * + * \return + * Bit [0] justified field value + */ +extern +uint32_t __ru_field_read(const char *func, const int line, + ru_block_inst blk_inst, + const ru_block_rec *blk, + const ru_reg_rec *reg, + const ru_field_rec *fld); +#define ru_field_read(blk_inst, blk, reg, fld) \ + __ru_field_read(__FUNCTION__, __LINE__, blk_inst, blk, reg, fld) +#if !RU_FUNCTION_REG_ACCESS +#define RU_FIELD_READ(i, b, r, f) RU_FIELD_GET(i, b, r, f, RU_REG_READ(i, b, r)) +#else +#define RU_FIELD_READ(i, b, r, f) \ + ru_field_read(i, &RU_BLK(b), &RU_REG(b, r), &RU_FLD(b, r, f)) +#endif + +#endif /* End of file _RU_H_ */ diff --git a/arch/arm/mach-bcmbca/xrdp/ru_config.h b/arch/arm/mach-bcmbca/xrdp/ru_config.h new file mode 100644 index 0000000000..aa0549c63d --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/ru_config.h @@ -0,0 +1,123 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ +/** + * \brief Register Utility configuration and common includes + */ +#ifndef _RU_CONFIG_H_ +#define _RU_CONFIG_H_ + +#ifndef RU_USE_STDC +#define RU_USE_STDC 0 +#endif + +#if RU_USE_STDC +/* These include files are required by the library */ +#include +#include +#include +#endif + +/****************************************************************************** + * Optimizations + ******************************************************************************/ + +/* Register access bypasses function interface and error checking instead + generating register accesses as inline memory dereference. This must be used + with RU_EXTERNAL_REGISTER_ADDRESSING and RU_OFFLINE_TEST disabled. */ +#ifndef RU_FUNCTION_REG_ACCESS +#define RU_FUNCTION_REG_ACCESS 0 +#endif + +#ifndef RU_FUNCTION_REG_ACCESS_DBG +#define RU_FUNCTION_REG_ACCESS_DBG 0 +#endif + +/* Remove field bounds checking from RU_FIELD_SET. This may be disabled once + software has stabilized and bounds checking begins to hurt performance. */ +#ifndef RU_FIELD_CHECK_ENABLE +#define RU_FIELD_CHECK_ENABLE 1 +#endif + +/* Include title and description strings from RBD. Note, this will take up a + very large amount of RAM on bigger systems. */ +#ifndef RU_INCLUDE_DESC +#define RU_INCLUDE_DESC RU_FUNCTION_REG_ACCESS +#endif + +/* Include field defitions in the register database */ +#ifndef RU_INCLUDE_FIELD_DB +#define RU_INCLUDE_FIELD_DB RU_FUNCTION_REG_ACCESS +#endif + +/* Include read/write access field in database */ +#ifndef RU_INCLUDE_ACCESS +#define RU_INCLUDE_ACCESS RU_FUNCTION_REG_ACCESS +#endif + +/****************************************************************************** + * Logging + ******************************************************************************/ + +/* Number of register accesses in the register logging ring buffer */ +#ifndef RU_LOG_SIZE +#define RU_LOG_SIZE 65536 +#endif + +/* Number of unique logging rules that may be used at any time */ +#ifndef RU_RULE_POOL_SIZE +#define RU_RULE_POOL_SIZE 256 +#endif + +/****************************************************************************** + * Print and error + ******************************************************************************/ + +/* Optional assert function to call when field bounds checking fails or logging + rule allocation fails. Print function will also be called when this + occurs. */ +#define RU_ASSERT() + +/* Print function to use for register logging output. */ +#if RU_USE_STDC +#define RU_PRINT(...) printf(__VA_ARGS__) +#elif !defined(NO_BDMF_HANDLE) +#define RU_PRINT(...) do { } while (0) +#endif + +#if RU_FUNCTION_REG_ACCESS_DBG +#define RU_DBG RU_PRINT +#else +#define RU_DBG(...) do { } while (0) +#endif + +/****************************************************************************** + * Test and miscellaneous + ******************************************************************************/ + +/* Registers are directly accessed as pointers to RAM using base and offset + calculations from the block and register records. If register access is + redirected over another bus set this to 0 and implement new versions of + ru_reg_write and ru_reg_read. */ +#ifndef RU_EXTERNAL_REGISTER_ADDRESSING +#define RU_EXTERNAL_REGISTER_ADDRESSING 0 +#endif + +/* Register access is redirected to an internal buffer for testing functions + when hardware access is not available. It is only meaningful if + RU_DIRECT_REGISTER_ADDRESSING is enabled. */ +#ifndef RU_OFFLINE_TEST +#define RU_OFFLINE_TEST 0 +#endif + +/* Set this to 1 to include a stub main function for simple compile checks */ +#ifndef RU_TEST_COMPILE_STUB +#define RU_TEST_COMPILE_STUB 0 +#endif + +#endif /* End of file _RU_CONFIG_H_ */ + diff --git a/arch/arm/mach-bcmbca/xrdp/ru_types.h b/arch/arm/mach-bcmbca/xrdp/ru_types.h new file mode 100644 index 0000000000..9b63ab01c2 --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/ru_types.h @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2015 Broadcom + */ +/* + +*/ + +#ifndef _RU_TYPES_H_ +#define _RU_TYPES_H_ +/** + * \brief Register tracking type definitions + * + * The register track module provides functionality to comprehensively debug + * register level transactions. It is a slow interface that should be used in + * parallel to standard direct read/write transactions. The module can parse + * registers into easy read field format. Registers may be looked up by name + * or address. + * + */ +#include +#include "ru_config.h" + +typedef enum { + ru_access_read = 0x01, /*< Read only */ + ru_access_write = 0x02, /*< Write only */ + ru_access_rw = 0x03 /*< Read/write */ +} ru_access; + +typedef struct { + const char *name; /*< Name of field from reg spec */ +#if RU_INCLUDE_DESC + const char *title; /*< Short title of the field */ + const char *desc; /*< Detail description */ +#endif + uint32_t mask; /*< Field bit mask */ + uint32_t align; /*< Unknown, used by register macro */ + uint32_t bits; /*< Field bit width */ + uint32_t shift; /*< Field bit offset */ +#if RU_INCLUDE_ACCESS + ru_access access; /*< Field read/write access */ +#endif +} ru_field_rec; /*< Field info record */ + +typedef struct { + const char *name; /*< Name of register from reg spec */ +#if RU_INCLUDE_DESC + const char *title; /*< Short title of the register */ + const char *desc; /*< Detail description */ +#endif + unsigned long addr; /*< Block relative register address */ + uint32_t ram_count; /*< RAM addresses, 0 for std register */ + uint32_t offset; /*< Offset of next index in RAM types */ + uint32_t log_idx; /*< Register ID for debug logging */ +#if RU_INCLUDE_ACCESS + ru_access access; /*< Register read/write access */ +#endif +#if RU_INCLUDE_FIELD_DB + uint32_t field_count; /*< Number of fields, private */ + const ru_field_rec **fields; /*< All fields for register, private */ +#endif +} ru_reg_rec; /*< Register info record */ + +typedef struct { + const char *name; /*< Name of the block */ + unsigned long *addr; /*< Block base addresses */ + uint8_t addr_count; /*< Number of block instances */ + uint32_t reg_count; /*< Number of registers, private */ + const ru_reg_rec **regs; /*< All registers for block, private */ +} ru_block_rec; /*< Info for a block instance */ + +typedef enum +{ + ru_log_none = 0x00, /*< Do not log */ + ru_log_read = 0x01, /*< Log read access only */ + ru_log_write = 0x02, /*< Log write access only */ + ru_log_both = 0x03 /*< Log both read and write */ +} ru_log_type; /*< Access logging type */ + +typedef enum { + ru_op_equal, /*< (Register & Mask) == Value */ + ru_op_not_equal, /*< (Register & Mask) != Value */ + ru_op_greater_than, /*< (Register & Mask) > Value */ + ru_op_less_than /*< (Register & Mask) < Value */ +} ru_log_op; /*< Logging comparator operation */ + +#define RU_BLK(b) b##_BLOCK +#define RU_REG(b, r) b##_##r##_REG +#define RU_REG_OFFSET(b, r) b##_##r##_REG_OFFSET +#define RU_REG_RAM_CNT(b, r) b##_##r##_REG_RAM_CNT +#define RU_FLD(b, r, f) b##_##r##_##f##_FIELD +#define RU_FLD_MASK(b, r, f) b##_##r##_##f##_FIELD_MASK +#define RU_FLD_SHIFT(b,r,f) b##_##r##_##f##_FIELD_SHIFT + +typedef uint8_t ru_block_inst; /*< Multiple block instance index */ +typedef uint32_t ru_ram_addr; /*< Index for RAM mapped registers */ + +#endif /* End of file _RU_TYPES_H_ */ diff --git a/arch/arm/mach-bcmbca/xrdp/xrdp_full/Makefile b/arch/arm/mach-bcmbca/xrdp/xrdp_full/Makefile new file mode 100755 index 0000000000..914c2aed9a --- /dev/null +++ b/arch/arm/mach-bcmbca/xrdp/xrdp_full/Makefile @@ -0,0 +1,95 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +CUR_DIR := $(dir $(lastword $(MAKEFILE_LIST))) +BLD_DIR = $(shell pwd) +BLD_DIR :=$(subst /bootloaders/, /bootloaders/,$(BLD_DIR))$ +BLD_DIR :=$(word 1,$(BLD_DIR)) +TOP_DIR :=$(BLD_DIR)/rdp +PROJECT_DIR := $(TOP_DIR)/projects/XRDP_CFE2 +CHIP_ID := $(patsubst "bcm%",%,$(CONFIG_SYS_SOC)) + +KBUILD_CPPFLAGS += -DBCM$(CHIP_ID) -DXRDP_CFE -D_CFE_REDUCED_XRDP_ +KBUILD_CPPFLAGS += -include common.h -I$(BLD_DIR)/shared/opensource/include/bcm963xx +PROJ_DRV_SRC_LIST := $(PROJECT_DIR)/BCM$(CHIP_ID)_A0_UBOOT_sources.list +PROJ_FW_SRC_LIST := $(PROJECT_DIR)/BCM$(CHIP_ID)_A0_fw_sources.list + +LN = ln -sf +RM = rm -f + +ifneq ($(findstring _$(strip $(CHIP_ID))_,_63146_),) +KBUILD_CPPFLAGS += -DBCM_DSL_XRDP +else +KBUILD_CPPFLAGS += -DBCM_PON_XRDP +endif + +ifneq ($(findstring _$(strip $(CHIP_ID))_,_6878_63146_),) +KBUILD_CPPFLAGS += -DDUAL_ISSUE +endif + +ifneq ($(findstring _$(strip $(CHIP_ID))_,_63146_),) +KBUILD_CPPFLAGS += -DXRDP_RGEN6 + +# temporary +KBUILD_CPPFLAGS += -DCONFIG_BRCM_IKOS +endif + +obj-y += xrdp_full.o + +xrdp_full-objs := XRDP_BAC_IF_AG.o XRDP_BBH_RX_AG.o +xrdp_full-objs += XRDP_BBH_TX_AG.o XRDP_CNPL_AG.o XRDP_DMA_AG.o +xrdp_full-objs += XRDP_DQM_AG.o XRDP_DSPTCHR_AG.o XRDP_FPM_AG.o +xrdp_full-objs += XRDP_HASH_AG.o XRDP_NATC_AG.o XRDP_NATC_CFG_AG.o +xrdp_full-objs += XRDP_NATC_CTRS_AG.o XRDP_NATC_DDR_CFG_AG.o XRDP_NATC_ENG_AG.o +xrdp_full-objs += XRDP_NATC_INDIR_AG.o XRDP_QM_AG.o XRDP_RNR_CNTXT_AG.o +xrdp_full-objs += XRDP_RNR_INST_AG.o XRDP_RNR_MEM_AG.o XRDP_RNR_PRED_AG.o +xrdp_full-objs += XRDP_RNR_REGS_AG.o XRDP_RNR_QUAD_AG.o XRDP_TCAM_AG.o +xrdp_full-objs += XRDP_UBUS_MSTR_AG.o XRDP_UBUS_SLV_AG.o XRDP_UNIMAC_MISC_AG.o +xrdp_full-objs += XRDP_PSRAM_AG.o XRDP_SBPM_AG.o XRDP_UNIMAC_RDP_AG.o + +xrdp_full-objs += rdd_init.o rdd_runner_tasks_auto.o rdp_common.o +xrdp_full-objs += rdd_ag_cpu_rx.o +xrdp_full-objs += rdp_drv_bbh_rx.o rdp_drv_bbh_tx.o rdp_drv_dis_reor.o +xrdp_full-objs += rdp_drv_dma.o rdp_drv_rnr.o rdp_drv_sbpm.o + +xrdp_full-objs += xrdp_drv_bac_if_ag.o xrdp_drv_bbh_rx_ag.o xrdp_drv_bbh_tx_ag.o +xrdp_full-objs += xrdp_drv_cnpl_ag.o xrdp_drv_dma_ag.o xrdp_drv_dqm_ag.o +xrdp_full-objs += xrdp_drv_dsptchr_ag.o xrdp_drv_unimac_misc_ag.o +xrdp_full-objs += xrdp_drv_fpm_ag.o xrdp_drv_hash_ag.o xrdp_drv_natc_ag.o +xrdp_full-objs += xrdp_drv_natc_ctrs_ag.o xrdp_drv_natc_ddr_cfg_ag.o +xrdp_full-objs += xrdp_drv_natc_eng_ag.o xrdp_drv_natc_indir_ag.o +xrdp_full-objs += xrdp_drv_qm_ag.o xrdp_drv_rnr_cntxt_ag.o +xrdp_full-objs += xrdp_drv_rnr_inst_ag.o xrdp_drv_rnr_mem_ag.o +xrdp_full-objs += xrdp_drv_rnr_pred_ag.o xrdp_drv_rnr_quad_ag.o +xrdp_full-objs += xrdp_drv_rnr_regs_ag.o xrdp_drv_tcam_ag.o +xrdp_full-objs += xrdp_drv_ubus_mstr_ag.o xrdp_drv_ubus_slv_ag.o +xrdp_full-objs += xrdp_drv_psram_ag.o xrdp_drv_sbpm_ag.o +xrdp_full-objs += xrdp_drv_unimac_rdp_ag.o + +xrdp_full-objs += fw_binary_auto.o predict_runner_fw_0.o runner_fw_0.o + +xrdp_full-objs += data_path_init.o + + +prepare_xrdp_links: + @echo "got here!! prepare_xrdp_links" + $(foreach src,$(shell grep "\.h" $(PROJ_FW_SRC_LIST) | grep -v "^#" | grep -v "Makefile"),$(shell $(LN) $(TOP_DIR)/$(src) $(CUR_DIR))) + $(foreach src,$(shell grep "drivers/rdd" $(PROJ_DRV_SRC_LIST) | grep -v "^#" | grep -v "Makefile"),$(shell $(LN) $(TOP_DIR)/$(src) $(CUR_DIR))) + $(foreach src,$(shell grep "firmware/.*\.h" $(PROJ_DRV_SRC_LIST) | grep -v "^#" | grep -v "Makefile"),$(shell $(LN) $(TOP_DIR)/$(src) $(CUR_DIR))) + $(foreach src,$(shell grep "firmware/.*rdd_.*\.c" $(PROJ_DRV_SRC_LIST) | grep -v "^#" | grep -v "Makefile"),$(shell $(LN) $(TOP_DIR)/$(src) $(CUR_DIR))) + $(foreach src,$(shell grep "drivers/rdp_subsystem" $(PROJ_DRV_SRC_LIST) | grep -v "^#" | grep -v "Makefile"),$(shell $(LN) $(TOP_DIR)/$(src) $(CUR_DIR))) + $(foreach src,$(shell grep "firmware_bin/" $(PROJ_DRV_SRC_LIST) | grep -v "^#" | grep -v "Makefile"),$(shell $(LN) $(TOP_DIR)/$(src) $(CUR_DIR))) + $(foreach src,$(shell grep "rdp_drv" $(PROJ_DRV_SRC_LIST) | grep -v "^#" | grep -v "Makefile"),$(shell $(LN) $(TOP_DIR)/$(src) $(CUR_DIR))) + $(foreach src,$(shell grep "drivers/bdmf" $(PROJ_DRV_SRC_LIST) | grep -v "^#" | grep -v "Makefile" | grep -v "*.c"),$(shell $(LN) $(TOP_DIR)/$(src) $(CUR_DIR))) + $(foreach src,$(shell grep "drivers/rdpa_gpl/include" $(PROJ_DRV_SRC_LIST) | grep -v "^#" | grep -v "Makefile"),$(shell $(LN) $(TOP_DIR)/$(src) $(CUR_DIR))) +# $(foreach src,$(shell ls *.[c,h]),$(shell if [[ ! -f $(src) ]]; then $(RM) $(src); fi)) + + +$(obj)/xrdp_full.o: prepare_xrdp_links + + +# FIXME!! how to add clean. we can simply delete all the .c/.h +clean-files += $(CUR_DIR)/*.c $(CUR_DIR)/*.h + diff --git a/board/broadcom/bcmbca/Kconfig b/board/broadcom/bcmbca/Kconfig new file mode 100644 index 0000000000..3beae8b4d8 --- /dev/null +++ b/board/broadcom/bcmbca/Kconfig @@ -0,0 +1,130 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + +config SYS_VENDOR + default "broadcom" + +config SYS_BOARD + default "bcmbca" + +if TARGET_BCM963158 +config SYS_CONFIG_NAME + default "bcm963158" +endif + +if TARGET_BCM96858 +config SYS_CONFIG_NAME + default "bcm96858" +endif + +if TARGET_BCM96856 +config SYS_CONFIG_NAME + default "bcm96856" +endif + +if TARGET_BCM963178 +config SYS_CONFIG_NAME + default "bcm963178" +endif + +if TARGET_BCM947622 +config SYS_CONFIG_NAME + default "bcm947622" +endif + +if TARGET_BCM96756 +config SYS_CONFIG_NAME + default "bcm96756" +endif + +if TARGET_BCM96846 +config SYS_CONFIG_NAME + default "bcm96846" +endif + +if TARGET_BCM96878 +config SYS_CONFIG_NAME + default "bcm96878" +endif + +if TARGET_BCM96855 +config SYS_CONFIG_NAME + default "bcm96855" +endif + +if TARGET_BCM94908 +config SYS_CONFIG_NAME + default "bcm94908" +endif + +if TARGET_BCM94912 +config SYS_CONFIG_NAME + default "bcm94912" +endif + +if TARGET_BCM963146 +config SYS_CONFIG_NAME + default "bcm963146" +endif + +if TARGET_BCM963138 +config SYS_CONFIG_NAME + default "bcm963138" +endif + +if TARGET_BCM963148 +config SYS_CONFIG_NAME + default "bcm963148" +endif + +config BCMBCA_HTTPD + bool "Support HTTPD server" + depends on NET + +config BCMBCA_IKOS + bool "IKOS" + depends on !CONFIG_SYS_ARCH_TIMER + help + Enable IKOS build + +config BCMBCA_BOARD_SPECIFIC_DT + bool "Load board specific device tree for uboot" + +config BCMBCA_UPDATE_MCB_IN_ENV + bool "Auto update MCB selector in environment" + depends on BCMBCA_BOARD_SPECIFIC_DT + default y + +config BCMBCA_BOARD_SDK + bool "Support board sdk" + default y + +config BCMBCA_EARLY_ABORT_JTAG_UNLOCK + bool "Unlocks JTAG in early abort. Hazardous: Use in debug/development mode only" + help + JTAG unlock is a debug feature helping to unbrick board if booted to BOOTROM secure mode + +#Hopefully temporary home for this driver +#since we need this in tpl, we can't have it under misc +config BCM_BOOTSTATE + bool "Enable support for Broadcom Bootstate Driver" + help + If you say Y here, you will get support broadcom bootstate + mechanism + +config BCMBCA_EXTRA_BOARD_OBJECTS + string "Space Seperated List of Extra board/broadcom/bcmbca objects to build" + help + To add additional files to the uboot proper in the board/broadcom/bcmbca directory + add the names of the .o files in a space-separated list + +config BCMBCA_BOARD_TK_PROG + bool "Build Turnkey Programming SPL Version" + default n + +config BCMBCA_BUTTON + bool "button support for broadcom board" + depends on DM + default y diff --git a/board/broadcom/bcmbca/Makefile b/board/broadcom/bcmbca/Makefile new file mode 100644 index 0000000000..378dfb999a --- /dev/null +++ b/board/broadcom/bcmbca/Makefile @@ -0,0 +1,65 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + + +# ccflags-y += -save-temps + +ifndef CONFIG_SPL_BUILD +# u-boot proper +CFLAGS_board.o := $(if $(BUILD_TAG),-DBUILD_TAG='"$(BUILD_TAG)"') +obj-y += board.o +obj-y += spl_env.o +obj-$(CONFIG_BCMBCA_BOARD_SDK) += board_sdk.o +obj-y += bca_common.o +obj-$(CONFIG_BCMBCA_BOARD_SDK) += sdk_test_commands.o +obj-$(CONFIG_BCMBCA_PMC) += pmc_commands.o +obj-$(CONFIG_BCMBCA_HTTPD) += httpd/ +obj-$(CONFIG_BCM_BOOTSTATE) += bcm_bootstate.o +obj-$(CONFIG_BCMBCA_BOARD_SDK) += board_secure.o +obj-$(CONFIG_BCMBCA_BOARD_SDK) += board_secure_sdk.o +obj-$(CONFIG_BCMBCA_BOARD_SDK) += board_secure_utils.o +obj-$(CONFIG_BCMBCA_BOARD_SDK) += board_secure_fit.o +obj-$(CONFIG_BCMBCA_BOARD_SDK) += mini-gmp/ +obj-$(CONFIG_BCMBCA_BUTTON) += bcmbca_button.o reset_button.o +obj-y += $(subst ",,$(CONFIG_BCMBCA_EXTRA_BOARD_OBJECTS)) +endif + +ifndef CONFIG_TPL_BUILD +# SPL +ifndef CONFIG_BCMBCA_BOARD_TK_PROG +# Standard SPL +obj-$(CONFIG_SPL_BUILD) += boot_blob.o +obj-$(CONFIG_SPL_BUILD) += boot_flash.o +obj-$(CONFIG_SPL_BUILD) += board_spl.o +CFLAGS_board_spl.o := $(if $(BUILD_TAG),-DBUILD_TAG='"$(BUILD_TAG)"') +obj-$(CONFIG_SPL_BUILD) += spl_env.o +obj-$(CONFIG_SPL_BUILD) += early_abort.o +obj-$(CONFIG_SPL_BUILD) += board_secure.o +obj-$(CONFIG_SPL_BUILD) += board_secure_spl.o +else +# TK SPL +ifdef CONFIG_BCMBCA_BOARD_TK_PROG +obj-$(CONFIG_SPL_BUILD) += board_tk_prog.o +obj-$(CONFIG_SPL_BUILD) += board_secure.o +obj-$(CONFIG_SPL_BUILD) += board_secure_utils.o +obj-$(CONFIG_SPL_BUILD) += board_secure_spl.o +obj-$(CONFIG_SPL_BUILD) += mini-gmp/ +endif +endif +endif + +# TPL +obj-$(CONFIG_TPL_BUILD) += board_tpl.o +CFLAGS_board_tpl.o := $(if $(BUILD_TAG),-DBUILD_TAG='"$(BUILD_TAG)"') +obj-$(CONFIG_TPL_BUILD) += bca_common.o +obj-$(CONFIG_TPL_BUILD) += spl_env.o +bootstate-$(CONFIG_BCM_BOOTSTATE) += bcm_bootstate.o +obj-$(CONFIG_TPL_BUILD) += $(bootstate-y) +obj-$(CONFIG_BCMBCA_IKOS) += board_ikos.o +obj-$(CONFIG_TPL_BUILD) += board_secure.o +obj-$(CONFIG_TPL_BUILD) += board_secure_tpl.o +obj-$(CONFIG_TPL_BUILD) += board_secure_fit.o +obj-$(CONFIG_TPL_BUILD) += board_secure_utils.o +obj-$(CONFIG_TPL_BUILD) += mini-gmp/ diff --git a/board/broadcom/bcmbca/bca_common.c b/board/broadcom/bcmbca/bca_common.c new file mode 100644 index 0000000000..d5584453a2 --- /dev/null +++ b/board/broadcom/bcmbca/bca_common.c @@ -0,0 +1,213 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include "bca_common.h" + +#define CLI_CB_NUM 8 + +struct cli_job_cb +{ + unsigned long last_time; + unsigned long time_period; + void (*job_cb)(void); +}; + +static unsigned long registred_cb_count = 0; +static struct cli_job_cb cli_job_cb_arr[CLI_CB_NUM]; + +void init_cli_cb_arr(void) +{ + memset(cli_job_cb_arr, 0, sizeof(struct cli_job_cb)*CLI_CB_NUM); +} + +void register_cli_job_cb(unsigned long time_period, void (*job_cb)(void)) +{ + int i; + for(i=0; i= cli_job_cb_arr[i].time_period) + { + cli_job_cb_arr[i].job_cb(); + cli_job_cb_arr[i].last_time = get_timer(0); + } + } + } + } +} + +int suffix2shift(char suffix) +{ + if (suffix == 'K') + { + return(10); + } else if (suffix == 'M') + { + return(20); + } else if (suffix == 'G') + { + return(30); + } + return(0); +} + +/** + * parse_env_nums - get named environment value of format FIELD=n1,n2,n3.... + * @buffer: pointer environment variable to parse + * @maxargs: max number of arguments to parse + * @args: pointer to array of unsigned longs for numeric arguments + * @suffixes: pointer to array of chars for suffix characters + * + * returns: + * number of arguments total if successful + * 0 if not found + */ +int parse_env_nums(const char *buffer, const int maxargs, unsigned long *args, char *suffixes) +{ + int ret = 0; + char *b = NULL; + char *p; + int i; + int l; + char *tok; + if (NULL != buffer) + { + l = strlen(buffer); + b = malloc(l+1); + strncpy(b, buffer, l+1); + p = b; + for (i = 0 ; i < maxargs ; i++) + { + tok = strtok(p,","); + p = NULL; + if (NULL != tok) + { + char *cp = NULL; + args[i] = simple_strtoul(tok, &cp, 0); + suffixes[i] = '\0'; + if (NULL != cp) + { + if (isalpha(*cp) && (NULL != suffixes)) + { + suffixes[i] = toupper(*cp); + } + } + ret++; + } + else + { + break; + } + + } + } + if (b) free(b); + return(ret); +} + + +/** + * parse_env_string_plus_nums - get named environment value of format FIELD=name:n1,n2,n3.... + * @buffer: pointer environment variable to parse + * @name: pointer to buffer to which name will be copied [ caller is required to free this pointer ] + * @maxargs: max number of arguments to parse + * @args: pointer to array of unsigned longs for numeric arguments + * @suffixes: pointer to array of chars for suffix characters + * + * returns: + * number of arguments total (name + args) if successful + * 0 if not found + */ +int parse_env_string_plus_nums(const char *buffer, char **name, const int maxargs, unsigned long *args, char *suffixes) +{ + int ret = 0; + char *b; + int i; + int l; + char *tok; + if (NULL != buffer) + { + l = strlen(buffer); + b = malloc(l+1); + strncpy(b, buffer, l+1); + tok = strtok(b,":"); + *name = tok; + ret++; + for (i = 0 ; i < maxargs ; i++) + { + tok = strtok(NULL,","); + if (NULL != tok) + { + char *cp = NULL; + args[i] = simple_strtoul(tok, &cp, 0); + suffixes[i] = '\0'; + if (NULL != cp) + { + if (isalpha(*cp) && (NULL != suffixes)) + { + suffixes[i] = toupper(*cp); + } + } + ret++; + } + else + { + break; + } + + } + } + return(ret); +} + diff --git a/board/broadcom/bcmbca/bcm_bootstate.c b/board/broadcom/bcmbca/bcm_bootstate.c new file mode 100644 index 0000000000..aa8fb46290 --- /dev/null +++ b/board/broadcom/bcmbca/bcm_bootstate.c @@ -0,0 +1,251 @@ +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "bcm_bootstate.h" + +DECLARE_GLOBAL_DATA_PTR; + +#define CHECK_NULL(ptr) ptr != NULL //|| init_regs() + +typedef void (*set_boot_reason_p)(uint32_t value); +typedef void (*clear_boot_reason_p)(void); +typedef uint32_t (*get_boot_reason_p)(void); + +struct spi_reset_reason +{ + uint32_t *glb_cntrl; + uint32_t *flash_cntrl; + uint32_t *profile; + +}; +typedef struct boot_state_data +{ + uint32_t *reset_status; + union + { + volatile uint32_t *reset_reason; + struct spi_reset_reason srr; + }; + set_boot_reason_p set_boot_reason; + get_boot_reason_p get_boot_reason; + clear_boot_reason_p clear_boot_reason; + +}boot_state_data; + +boot_state_data __attribute__((section(".data"))) b_state_data; + +int bcmbca_get_reset_status(void) +{ + int resetStatus = -1; + if(CHECK_NULL((b_state_data.reset_status))) + { + resetStatus = *b_state_data.reset_status & RESET_STATUS_MASK; + } + return resetStatus; +} +unsigned long i=0; +static void bcmbca_set_boot_reason_v1(uint32_t value) +{ + + if(CHECK_NULL((b_state_data.srr.glb_cntrl))) + { + *b_state_data.srr.glb_cntrl |= DO_NOT_RESET_ON_WATCHDOG; + if(CHECK_NULL((b_state_data.srr.profile))) + { + *b_state_data.srr.profile = value; + } + } + +} +static void bcmbca_set_boot_reason_v2(uint32_t value) +{ + uint32_t tmp_val; + int retries=0; + + if(CHECK_NULL((b_state_data.reset_reason))) + { + while(retries++ < 255) + { + tmp_val=*b_state_data.reset_reason; + dsb(); + *b_state_data.reset_reason=value; + dsb(); + tmp_val=*b_state_data.reset_reason; + if(tmp_val == value) + break; + } + if(retries > 1) + printf("current value %d value to write %d retried [%d] times to write the reset_reason %s\n", tmp_val, value, retries, (tmp_val == value) ? "success":"fail"); + } +} + +void bcmbca_set_boot_reason(uint32_t value) +{ + if(CHECK_NULL(b_state_data.set_boot_reason)) + { + b_state_data.set_boot_reason(value); + } +} + + +static void bcmbca_clear_boot_reason_v1(void) +{ + if(CHECK_NULL((b_state_data.srr.glb_cntrl))) + { + *b_state_data.srr.glb_cntrl &= ~DO_NOT_RESET_ON_WATCHDOG; + if(CHECK_NULL((b_state_data.srr.flash_cntrl))) + { + *b_state_data.srr.flash_cntrl = FLASH_CNTRL_RESET_VAL; + } + if(CHECK_NULL((b_state_data.srr.profile))) + { + *b_state_data.srr.profile = 0; + } + } +} +static void bcmbca_clear_boot_reason_v2(void) +{ + uint32_t tmp_val; + int retries=0; + if(CHECK_NULL((b_state_data.reset_reason))) + { + while(retries++ < 255) + { + tmp_val=*b_state_data.reset_reason; + dsb(); + *b_state_data.reset_reason &= ~(0x1ffff); + dsb(); + tmp_val=*b_state_data.reset_reason; + if((tmp_val & (0x1ffff)) == 0) + break; + } + if(retries > 1) + printf("retried [%d] times to clear the reset_reason %s\n", retries, ((tmp_val & (0x1ffff)) == 0) ? "success":"fail"); + } +} + +void bcmbca_clear_boot_reason(void) +{ + if(CHECK_NULL((b_state_data.clear_boot_reason))) + { + b_state_data.clear_boot_reason(); + } +} + +static uint32_t bcmbca_get_boot_reason_v1(void) +{ +uint32_t rc=-1; + + if(CHECK_NULL((b_state_data.srr.profile))) + { + rc=(*b_state_data.reset_status & SW_RESET_STATUS) != 0 ? *b_state_data.srr.profile & 0x1ffff:-1; + } +return rc; +} +static uint32_t bcmbca_get_boot_reason_v2(void) +{ +uint32_t rc=-1; + + //boot reason is only good in case of sw reset + if((b_state_data.reset_reason != NULL && b_state_data.reset_status != NULL)) + { + rc=(*b_state_data.reset_status & SW_RESET_STATUS) != 0 ? *b_state_data.reset_reason & 0x1ffff:-1; + } +return rc; +} + +uint32_t bcmbca_get_boot_reason(void) +{ +int rc=-1; + if(CHECK_NULL((b_state_data.get_boot_reason))) + { + rc = b_state_data.get_boot_reason(); + } +return rc; +} + + +static int bootstate_v1_probe(struct udevice *dev) +{ + struct resource res; + int ret=0; + b_state_data.clear_boot_reason = bcmbca_clear_boot_reason_v1; + b_state_data.set_boot_reason = bcmbca_set_boot_reason_v1; + b_state_data.get_boot_reason = bcmbca_get_boot_reason_v1; + ret = dev_read_resource_byname(dev, "reset_status", &res); + if (!ret) { + b_state_data.reset_status=devm_ioremap(dev, res.start, resource_size(&res)); + } + ret = dev_read_resource_byname(dev, "global_control", &res); + if (!ret) { + b_state_data.srr.glb_cntrl=devm_ioremap(dev, res.start, resource_size(&res)); + } + ret = dev_read_resource_byname(dev, "flash_control", &res); + if (!ret) { + b_state_data.srr.flash_cntrl=devm_ioremap(dev, res.start, resource_size(&res)); + } + ret = dev_read_resource_byname(dev, "mode_control", &res); + if (!ret) { + b_state_data.srr.profile=devm_ioremap(dev, res.start, resource_size(&res)); + } +return 0; +} +static int bootstate_v2_probe(struct udevice *dev) +{ + struct resource res; + int ret=0; + b_state_data.clear_boot_reason = bcmbca_clear_boot_reason_v2; + b_state_data.set_boot_reason = bcmbca_set_boot_reason_v2; + b_state_data.get_boot_reason = bcmbca_get_boot_reason_v2; + + ret = dev_read_resource_byname(dev, "reset_status", &res); + if (!ret) { + b_state_data.reset_status=devm_ioremap(dev, res.start, resource_size(&res)); + } + ret = dev_read_resource_byname(dev, "reset_reason", &res); + if (!ret) { + b_state_data.reset_reason=devm_ioremap(dev, res.start, resource_size(&res)); + } +return 0; +} + +static const struct udevice_id bootstate_v1_ids[] = { + { .compatible = "brcm,bcmbca-bootstate-v1" }, + { } +}; +static const struct udevice_id bootstate_v2_ids[] = { + { .compatible = "brcm,bcmbca-bootstate-v2" }, + { } +}; + +U_BOOT_DRIVER(bootstate_v1_drv) = { + .name = "bcm_bootsate_v1", + .id = UCLASS_NOP, + .of_match = bootstate_v1_ids, + .probe = bootstate_v1_probe, +}; +U_BOOT_DRIVER(bootstate_v2_drv) = { + .name = "bcm_bootsate_v2", + .id = UCLASS_NOP, + .of_match = bootstate_v2_ids, + .probe = bootstate_v2_probe, +}; + +void bca_bootstate_probe(void) +{ + struct udevice *dev; + + memset(&b_state_data, '\0', sizeof(b_state_data)); + + //for (uclass_first_device_check(UCLASS_MISC, &dev); dev; uclass_next_device_check(&dev)); + + uclass_get_device_by_driver(UCLASS_NOP, DM_GET_DRIVER(bootstate_v2_drv), &dev); + uclass_get_device_by_driver(UCLASS_NOP, DM_GET_DRIVER(bootstate_v1_drv), &dev); +} diff --git a/board/broadcom/bcmbca/bcm_bootstate.h b/board/broadcom/bcmbca/bcm_bootstate.h new file mode 100644 index 0000000000..a42c46ae80 --- /dev/null +++ b/board/broadcom/bcmbca/bcm_bootstate.h @@ -0,0 +1,30 @@ +#include + +#define BOOT_STATE_VERSION_1 0x01 +#define BOOT_STATE_VERSION_2 0x02 + +#define DO_NOT_RESET_ON_WATCHDOG (1<<22) +#define FLASH_CNTRL_RESET_VAL 0x050b + +#define PCIE_RESET_STATUS 0x10000000 +#define SW_RESET_STATUS 0x20000000 +#define HW_RESET_STATUS 0x40000000 +#define POR_RESET_STATUS 0x80000000 +#define RESET_STATUS_MASK 0xF0000000 + +#define BCM_BOOT_REASON_REBOOT (0x00000000) +#define BCM_BOOT_REASON_ACTIVATE (0x00000001) +#define BCM_BOOT_REASON_PANIC (0x00000002) +#define BCM_BOOT_REASON_WATCHDOG (0x00000004) + +#define BCM_BOOT_PHASE_MASK (0x000000F0) +#define BCM_BOOT_PHASE_UBOOT (0x00000010) +#define BCM_BOOT_PHASE_LINUX_START (0x00000020) +#define BCM_BOOT_PHASE_LINUX_RUN (0x00000030) + +int bcmbca_get_reset_status(void); +void bcmbca_set_boot_reason(uint32_t value); +void bcmbca_clear_boot_reason(void); +uint32_t bcmbca_get_boot_reason(void); +void bca_bootstate_probe(void); + diff --git a/board/broadcom/bcmbca/bcm_uboot_lockdown.c b/board/broadcom/bcmbca/bcm_uboot_lockdown.c new file mode 100644 index 0000000000..1ea6be7137 --- /dev/null +++ b/board/broadcom/bcmbca/bcm_uboot_lockdown.c @@ -0,0 +1,202 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * (C) Copyright 2020 Broadcom Corporation + * Joel Peshkin, Broadcom Corporation, joel.peshkin@broadcom.com + */ + +#define DEBUG +#define USE_FIXED_PASSWORD 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +static const char *null_env = "\0\0\0\0"; + +#define BCM_LOCKDOWN_MAX_ENV_NAME 64 +#define BCM_LOCKDOWN_MAX_ENV_VALUE 520 +/* also limit with CONFIG_ENV_SIZE */ + +static void lock_env_add_safe(char *name, char *val, char *safe, int max); + +/* + * lock_env_add_safe: Add environment variable only if its value is strictly alphanumeric or + * alphanumeric plus a specific set of characters + */ +static void lock_env_add_safe(char *name, char *val, char *safe, int max) +{ + int l; + int i; + char v[2]; + v[1] = '\0'; + l = strlen(val); + if (l > max) { + return; + } + for (i = 0; i < l; i++) { + v[0] = val[i]; + if (!(isalnum(val[i]) || (NULL != strstr(safe, v)))) { + /* printf("rejected '%s'='%s'\n",name,val); */ + return; + } + } + env_set(name, val); +} + +int env_override_import(void *ep) +{ + char sha_env_str[SHA256_SUM_LEN * 4 + 1]; /* enough room for salt */ + char password[32]; + char salt[32] = {0}; + char dnum[16] = {0}; + u8 sha_env[SHA256_SUM_LEN]; + char *cp = ((char *)ep) + 4; /* skip length field */ + char *delim; + int once = 0; + int size = 0; + int i,j; + int node,len; + env_import((void *)null_env, 0); + env_set("overridden", "true"); + /* Iterate over stored environment variables and only import them if they are trusted */ + while (*cp != '\0') { + delim = strstr(cp, "="); + if (delim && (delim <= cp + BCM_LOCKDOWN_MAX_ENV_NAME) + && (delim <= ep + CONFIG_ENV_SIZE)) { + *delim = '\0'; + delim++; + if (strlen(delim) > BCM_LOCKDOWN_MAX_ENV_VALUE) { + break; + } + /* if we made it this far, *cp and *delim point to name and value */ + + if ((strcmp(cp, "IMAGE") == 0) + || (strcmp(cp, "MCB") == 0) + || (strcmp(cp, "ethaddr") == 0)) { + /* These are OK as long as they contain only alphanumeric plus : */ + lock_env_add_safe(cp, delim, ":,", 32); + } else if (strcmp(cp, "env_boot_magic") == 0) { + /* env_boot_magic is safe but can have '@' */ + lock_env_add_safe(cp, delim, "@,", 32); + } else if (strcmp(cp, "once") == 0) { + /* "once" can be stores as "once=true" + * otherwise, we will need to set it to a fixed script later + */ + if (strcmp(delim, "true") == 0) { + once = 1; + env_set(cp, delim); + } + } else if (strncmp(cp, "rdp", 3) == 0) { + lock_env_add_safe(cp, delim, "", 6); + } else if (strcmp(cp, "nummacaddrs") == 0) { + lock_env_add_safe(cp, delim, "_", 32); + } else if (strcmp(cp, "boardid") == 0) { + lock_env_add_safe(cp, delim, "_", 32); + } else { + /* printf("skipped '%s'='%s'\n",cp,delim); */ + } + + /* done with conditional import */ + cp = delim + strlen(delim) + 1; + } else { + break; + } + } + + /* Boot command can only be set from this (signed) code and will not accept arbitrary values */ + env_set("bootdelay", "5"); + env_set("bootcmd", "printenv; run once ; sdk boot_img"); + + /* If we haven't stored the value of "once" as "true" yet, we want it to be a script of commands + * to be executed once. At a minimum, after an image is programmed, we need to save the environment + * including the env_boot_magic variable one time to reflect the physical flash offset of the environment + * redundant copies + */ + if (once == 0) { + env_set("once", "setenv once true; saveenv"); + } + // gd->flags |= GD_FLG_DISABLE_CONSOLE; + + node = fdt_path_offset(gd->fdt_blob, "/trust/serial_num"); + if (node < 0) { + printf("no serial number node in uboot DTB\n"); + } else { + unsigned long sn = 0; + len = 0; + cp = NULL; + cp = (char *)fdt_getprop(gd->fdt_blob, node, "value", &len); + printf("full serial number: "); + for (i = 0; i < len ; i++) { + printf("%02x",cp[i]); + } + printf("\n"); + if (len) { + for (i = 0 ; i < 6 ; i++) { + sn = (sn << 8) | (long)(cp[len-6+i]); + } + printf("decimal serial number: %ld\n",sn); + sprintf(dnum,"%ld",sn); + env_set("decimal_serial_num", dnum); + } + } + + /* Now set bootstopkeysha256 */ + + /* In this example, password is being set to a fixed value. More likely, you will want to set it to + * something like the base64 of the last 6 bytes of the sha256 of a secret concatenated with the serial + * number + */ + + size = SHA256_SUM_LEN; + j = 0; + + node = fdt_path_offset(gd->fdt_blob, "/trust/key_cli_seed"); + +#ifndef USE_FIXED_PASSWORD + if (node < 0) { + printf("no cli seed node in uboot DTB\n"); + } else { + char combined[256]; + long long pass; + char cset[] = "abcdefghijk#mnopqrstuvwxyzABCDEFGHIJKLMN-PQRSTUVWXYZ@!23456789_*"; + len = 0; + cp = NULL; + cp = (char *)fdt_getprop(gd->fdt_blob, node, "value", &len); + strncpy(combined,cp,256); + strncat(combined,dnum,256); + hash_block("sha256", (const void *)combined, + strlen(combined), sha_env, &size); + memcpy(&pass, sha_env, sizeof(pass)); + for (i = 0 ; i < 8 ; i++) { + password[i] = cset[ (pass >> (6 * i) ) & 0x3f ]; + } + password[8] = 0; + printf("OBVIOUSLY -- REMOVE THIS PRINT\npassword set to %s\n",password); + } +#endif + + +#ifdef USE_FIXED_PASSWORD + strcpy(salt, "S4lt3d@"); + strcpy(password, salt); + strcat(password, "test54321"); +#endif + + hash_block("sha256", (const void *)password, + strlen(password), sha_env, &size); + j = sprintf(sha_env_str,"%s:",salt); + for (i = 0; i < SHA256_SUM_LEN; i++) { + j += sprintf(&sha_env_str[j], "%02x", sha_env[i]); + } + + env_set("bootstopkeysha256", sha_env_str); + return 1; +} diff --git a/board/broadcom/bcmbca/bcmbca_button.c b/board/broadcom/bcmbca/bcmbca_button.c new file mode 100644 index 0000000000..76f6817fd0 --- /dev/null +++ b/board/broadcom/bcmbca/bcmbca_button.c @@ -0,0 +1,708 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2020 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include +#include "bcmbca_button.h" + +DECLARE_GLOBAL_DATA_PTR; + +#define BCA_GPIO_ACTIVE_HIGH (0x0 << 1) +#define BCA_GPIO_ACTIVE_LOW (0x1 << 1) + +#define CONSUMER_NAME "ext_irq" +#define BTN_EVENT_NUM 3 + +#define PRINT_ACT_NAME "print" +#define PRINT_ACT_NAME_UBOOT "print_uboot" + +#define PRESS_EVENT "press" +#define HOLD_EVENT "hold" +#define RELEASE_EVENT "release" + +#define MAX_BTN_HOOKS_PER_TRIG 5 +#define MAX_BTN_HOOKS_PER_BTN (MAX_BTN_HOOKS_PER_TRIG * 3) + +typedef enum { + PB_BUTTON_0, + PB_BUTTON_1, + PB_BUTTON_2, + PB_BUTTON_MAX +} PB_BUTTON_ID; + +#define BTN_EV_PRESSED 0x1 +#define BTN_EV_HOLD 0x2 +#define BTN_EV_RELEASED 0x4 +#define BTN_POLLFREQ 100 /* in ms */ + +// Main button structure: +typedef struct _BtnInfo { + PB_BUTTON_ID btnId; + struct gpio_desc gd; + int active; + u32 lastPressTime; + u32 lastHoldTime; + u32 lastReleaseTime; + spinlock_t lock; + u32 events; + u32 act_registered; + u32 longest_holdevt; + void *poll; + char name[32]; + bool (*isDown)(struct _BtnInfo *btnInfo); +} BtnInfo; + +typedef struct { + buttonNotifyHook_t hook; + unsigned long timeout; // in ms; + void *param; + int done; +} pushButtonHookInfo_t; + +typedef int (*registerBtnHook)(PB_BUTTON_ID btn, + buttonNotifyHook_t hook, + unsigned long timeInMs, + void *param); + +struct button_action { + char *action_name; + buttonNotifyHook_t btn_hook; +}; + +struct button_events { + char *btn_event; + registerBtnHook reg_hook; +}; + +static pushButtonHookInfo_t btnPressedInfo[PB_BUTTON_MAX][MAX_BTN_HOOKS_PER_TRIG] = {}; +static pushButtonHookInfo_t btnHeldInfo[PB_BUTTON_MAX][MAX_BTN_HOOKS_PER_TRIG] = {}; +static pushButtonHookInfo_t btnReleasedInfo[PB_BUTTON_MAX][MAX_BTN_HOOKS_PER_TRIG] = {}; +static int btnPressTime[PB_BUTTON_MAX] = {}; + +static BtnInfo btnInfo[PB_BUTTON_MAX] = {}; + +static void reset_hooks_array(PB_BUTTON_ID btn) +{ + int j; + + for (j = 0; j < MAX_BTN_HOOKS_PER_TRIG; j++) { + btnPressedInfo[btn][j].done = 0; + btnHeldInfo[btn][j].done = 0; + btnReleasedInfo[btn][j].done = 0; + } +} + +static BtnInfo *find_btn_info(const char *name) +{ + int i; + + for (i = 0 ; i < PB_BUTTON_MAX; i++) { + if (!strcmp(name, btnInfo[i].name)) + return &btnInfo[i]; + } + return NULL; +} + +static BtnInfo *find_btn_info_by_id(PB_BUTTON_ID btn) +{ + int i; + + for (i = 0; i < PB_BUTTON_MAX; i++) { + if (btnInfo[i].btnId == btn) + return &btnInfo[i]; + } + return NULL; +} + +static void do_button(PB_BUTTON_ID btn, + unsigned long currentTime, + pushButtonHookInfo_t (*actions_arr)[MAX_BTN_HOOKS_PER_TRIG]) +{ + unsigned long timeInMs; + pushButtonHookInfo_t *pInfo; + int callIdx; + int callInfoIdx = 0; + pushButtonHookInfo_t callInfo[MAX_BTN_HOOKS_PER_TRIG] = {}; + unsigned long flags; + int idx; + + if (unlikely(btn >= PB_BUTTON_MAX)) { + printk(KERN_ERR "%s: unrecognized button id (%d)\n", + __func__, btn); + return; + } + + timeInMs = currentTime - btnPressTime[btn]; + + spin_lock_irqsave(&lock, flags); + for (idx = 0; idx < MAX_BTN_HOOKS_PER_TRIG; idx++) { + pInfo = &actions_arr[btn][idx]; + if (pInfo->done) + continue; + + if (pInfo->hook) { + if (pInfo->timeout) { + if (pInfo->timeout > timeInMs) + continue; + } + callInfo[callInfoIdx] = *pInfo; + pInfo->done = 1; + callInfoIdx++; + } + } + spin_unlock_irqrestore(&lock, flags); + + for (callIdx = 0; callIdx < callInfoIdx; callIdx++) + callInfo[callIdx].hook(timeInMs, callInfo[callIdx].param); + +} + +void do_button_release(PB_BUTTON_ID btn, unsigned long currentTime) +{ + int idx; + unsigned long timeInMs; + unsigned long flags; + int callIdx; + int callInfoIdx = 0; + pushButtonHookInfo_t callInfo[MAX_BTN_HOOKS_PER_TRIG] = {}; + + if (unlikely(btn >= PB_BUTTON_MAX)) { + printk(KERN_ERR "%s: unrecognized button id (%d)\n", __func__, btn); + return; + } + + timeInMs = currentTime - btnPressTime[btn]; + + spin_lock_irqsave(&lock, flags); + for (idx = 0; idx < MAX_BTN_HOOKS_PER_TRIG; idx++) { + pushButtonHookInfo_t *pNewInfo = &btnReleasedInfo[btn][idx]; + + if (!pNewInfo->hook || pNewInfo->timeout > timeInMs) + continue; + if (callInfoIdx == 0 || pNewInfo->timeout == callInfo[0].timeout) { + callInfo[callInfoIdx] = *pNewInfo; + callInfoIdx++; + } else if (pNewInfo->timeout > callInfo[0].timeout) { + callInfo[0] = *pNewInfo; + callInfoIdx = 1; + } + } + spin_unlock_irqrestore(&lock, flags); + + for (callIdx = 0; callIdx < callInfoIdx; callIdx++) + callInfo[callIdx].hook(timeInMs, callInfo[callIdx].param); +} + +static int insert_to_array(buttonNotifyHook_t hook, + unsigned long timeInMs, + void *param, + pushButtonHookInfo_t *pHookArray) +{ + int idx; + pushButtonHookInfo_t *pInfo; + + if (pHookArray[MAX_BTN_HOOKS_PER_TRIG - 1].hook) { + printk(KERN_ERR "%s: to many entries\n", __func__); + return -1; + } + for (idx = 0; idx < MAX_BTN_HOOKS_PER_TRIG; idx++) { + pInfo = &pHookArray[idx]; + if (!pInfo->hook) { // inserting at end + pInfo->hook = hook; + pInfo->timeout = timeInMs; + pInfo->param = param; + return idx; + } + } + return -1; +} + +static int register_button_press_notify_hook(PB_BUTTON_ID btn, + buttonNotifyHook_t hook, + unsigned long timeInMs, + void *param) +{ + unsigned long flags; + int idx; + + if (unlikely(btn >= PB_BUTTON_MAX)) { + printk(KERN_ERR "%s: unrecognized button id (%d)\n", __func__, btn); + return -1; + } + if (unlikely(!hook)) { + printk(KERN_ERR "%s: cannot register NULL hook\n", __func__); + return -1; + } + + spin_lock_irqsave(&lock, flags); + idx = insert_to_array(hook, timeInMs, param, btnPressedInfo[btn]); + spin_unlock_irqrestore(&lock, flags); + if (unlikely(idx < 0)) { + printk(KERN_ERR "%s: Could not insert notify hook %pF (out of room)\n", + __func__, hook); + return -1; + } + + return 0; +} + +static int register_button_hold_notify_hook(PB_BUTTON_ID btn, + buttonNotifyHook_t hook, + unsigned long timeInMs, + void *param) +{ + int idx; + unsigned long flags; + BtnInfo *button = NULL; + + if (unlikely(btn >= PB_BUTTON_MAX)) { + printk(KERN_ERR "%s: unrecognized button id (%d)\n", __func__, btn); + return -1; + } + if (unlikely(!hook)) { + printk(KERN_ERR "%s: cannot register NULL hook\n", __func__); + return -1; + } + button = find_btn_info_by_id(btn); + if (unlikely(!button)) { + printk(KERN_ERR "%s: cannot find the button info for id %d\n", __func__, btn); + return -1; + } + + spin_lock_irqsave(&lock, flags); + idx = insert_to_array(hook, timeInMs, param, btnHeldInfo[btn]); + if (timeInMs > button->longest_holdevt) + button->longest_holdevt = timeInMs; + spin_unlock_irqrestore(&lock, flags); + if (unlikely(idx < 0)) { + printk(KERN_ERR "%s: Could not insert notify hook %pF (out of room)\n", __func__, hook); + return -1; + } + + return 0; +} + +static int register_button_release_notify_hook(PB_BUTTON_ID btn, + buttonNotifyHook_t hook, + unsigned long timeInMs, + void *param) +{ + int idx; + unsigned long flags; + BtnInfo *button = NULL; + + if (unlikely(btn >= PB_BUTTON_MAX)) { + printk(KERN_ERR "%s: unrecognized button id (%d)\n", __func__, btn); + return -1; + } + if (unlikely(!hook)) { + printk(KERN_ERR "%s: cannot register NULL hook\n", __func__); + return -1; + } + button = find_btn_info_by_id(btn); + if (unlikely(!button)) { + printk(KERN_ERR "%s: cannot find the button info for id %d\n", __func__, btn); + return -1; + } + + spin_lock_irqsave(&lock, flags); + idx = insert_to_array(hook, timeInMs, param, btnReleasedInfo[btn]); + if (timeInMs > button->longest_holdevt) + button->longest_holdevt = timeInMs; + spin_unlock_irqrestore(&lock, flags); + if (unlikely(idx < 0)) { + printk(KERN_ERR "%s: Could not insert notify hook %pF (out of room)\n", __func__, hook); + return -1; + } + + return 0; +} + +/***************************************************************************/ +// BP_BTN_ACTION_PRINT +static void btn_hook_print(unsigned long timeInMs, void *param) +{ + printk("%s\n", (char *)param); +} + +/*************************************************************************** + * Function Name: btn_do_press + * Description : This is called when a press has been detected. + * Parameters : arg: a pointer to a BtnInfo structure + ***************************************************************************/ +static void btn_do_press(BtnInfo *btn, unsigned long currentTime) +{ + unsigned long flags; + + spin_lock_irqsave(&lock, flags); + + reset_hooks_array(btn->btnId); + btnPressTime[btn->btnId] = currentTime; + btn->events &= ~BTN_EV_PRESSED; + + spin_unlock_irqrestore(&lock, flags); + + do_button(btn->btnId, currentTime, btnPressedInfo); +} + +/*************************************************************************** + * Function Name: btn_do_release + * Description : This is called when a release has been detected + * Parameters : arg: a pointer to a BtnInfo structure + ***************************************************************************/ +static void btn_do_release(BtnInfo *btn, unsigned long currentTime) +{ + btn->events &= ~(BTN_EV_RELEASED | BTN_EV_HOLD); + do_button_release(btn->btnId, currentTime); +} + +/*************************************************************************** + * Function Name: btn_do_hold + * Description : This is called when a button hold is detected + * Parameters : arg: a pointer to a BtnInfo structure + ***************************************************************************/ +static void btn_do_hold(BtnInfo *btn, unsigned long currentTime) +{ + btn->events &= ~BTN_EV_HOLD; + do_button(btn->btnId, currentTime, btnHeldInfo); +} + +static int __btn_poll(BtnInfo *btn) +{ + unsigned long currentTime = get_timer(0); + unsigned long flags; + + spin_lock_irqsave(&btn->lock, flags); + if (btn->active) { + if (btn->isDown(btn)) { + btn->lastHoldTime = currentTime; + btn->events |= BTN_EV_HOLD; + btn_do_hold(btn, btn->lastHoldTime); + } else { + btn->lastReleaseTime = currentTime; + btn->active = 0; + btn->events |= BTN_EV_RELEASED; + btn_do_release(btn, btn->lastReleaseTime); + } + } else { + if (btn->isDown(btn)) { + btn->active = 1; + btn->lastPressTime = currentTime; + btn->events |= BTN_EV_PRESSED; + btn_do_press(btn, btn->lastPressTime); + } + } + + spin_unlock_irqrestore(&btn->lock, flags); + + return btn->active; +} + +/*************************************************************************** + * Function Name: btn_poll + * Description : This is the polling function. It checks each button + and act on if event timeout occurs. It should be called by + u-boot periodic function such as cli_loop + * Return : positive if any button is active + ***************************************************************************/ +int btn_poll(void) +{ + BtnInfo *btn; + int i, rc = 0; + + for (i = PB_BUTTON_0; i < PB_BUTTON_MAX; i++) { + btn = &btnInfo[i]; + if (btn->poll && btn->act_registered) + rc |= __btn_poll(btn); + } + + return rc; +} + +/*************************************************************************** + * Function Name: btn_poll_block + * Description : This function keep polling the button until all button is + released. It can be called during the boot to any special + button event before entering the cli + ***************************************************************************/ +void btn_poll_block(void) +{ + int rc = 1; + + while (rc) + rc = btn_poll(); +} + +/*************************************************************************** + * Function Name: btn_is_gpio_btn_down + * Description : This a the check to see if a gpio-based button is down + based on the gpio level + * Parameters : arg: a pointer to a BtnInfo structure + * Returns : 1 if the button is down + ***************************************************************************/ +static bool btn_is_gpio_btn_down(BtnInfo *btn) +{ + return dm_gpio_get_value(&btn->gd); +} + +static struct button_events btn_events[BTN_EVENT_NUM] = { + {PRESS_EVENT, register_button_press_notify_hook}, + {HOLD_EVENT, register_button_hold_notify_hook}, + {RELEASE_EVENT, register_button_release_notify_hook} +}; + +static registerBtnHook get_register_hook_fnc(const char *event_name) +{ + int i; + + for (i = 0; i < BTN_EVENT_NUM; i++) { + if (!strcmp(event_name, btn_events[i].btn_event)) + return btn_events[i].reg_hook; + } + return NULL; +} + +static int read_button_event_action_params(ofnode btn_event_np, const char *action_name, + u32 *ptimeout, void** pparam) +{ + const char *print_string = NULL, *cmd_string = NULL; + char *action_name_cmd; + + if (!strcmp(action_name, PRINT_ACT_NAME) + || !strcmp(action_name, PRINT_ACT_NAME_UBOOT)) { + print_string = ofnode_read_string(btn_event_np, action_name); + if (print_string == NULL) + return -1; + *pparam = strndup(print_string, strlen(print_string)); + } else { + if (ofnode_read_u32(btn_event_np, action_name, ptimeout)) + return -1; + *ptimeout *= 1000; + + /* check if _cmd command string is defined */ + action_name_cmd = malloc(sizeof(action_name) + 8); + sprintf(action_name_cmd, "%s_cmd", action_name); + cmd_string = ofnode_read_string(btn_event_np, action_name_cmd); + if (cmd_string) + *pparam = strndup(cmd_string, strlen(cmd_string)); + free(action_name_cmd); + } + + return 0; +} + +static int register_button_event_action(const char *button_name, ofnode event_np, + buttonNotifyHook_t hook, u32 timeout, void* param) +{ + registerBtnHook btn_hook_register = NULL; + BtnInfo *btn_info = NULL; + + btn_hook_register = + get_register_hook_fnc(ofnode_get_name(event_np)); + if (!btn_hook_register) + return -1; + + btn_info = find_btn_info(button_name); + if (!btn_info) + return -1; + + if (btn_hook_register(btn_info->btnId, hook, timeout, param)) + return -1; + else + btn_info->act_registered =1; + + return 0; +} + + +int register_button_action(const char *button_name, const char *action_name, + buttonNotifyHook_t hook) +{ + ofnode btn_np, btn_event_np; + u32 timeout = 0; + void *param = NULL; + + btn_np = ofnode_by_compatible(ofnode_null(), "brcm,buttons"); + if (!ofnode_valid(btn_np)) + return -ENODEV; + + btn_np = ofnode_find_subnode(btn_np, button_name); + if (!ofnode_valid(btn_np)) + return -ENODEV; + + ofnode_for_each_subnode(btn_event_np, btn_np) { + if (read_button_event_action_params(btn_event_np, action_name, + &timeout, ¶m)) + continue; + + if (register_button_event_action(button_name, btn_event_np, hook, + timeout, param)) + return -ENOENT; + } + + return 0; +} + +int register_button_action_for_event(const char *button_name, const char* event_name, + const char *action_name, buttonNotifyHook_t hook) +{ + ofnode btn_np, btn_event_np; + u32 timeout = 0; + void *param = NULL; + const void *fdt = gd->fdt_blob; + int node_offset, prop_offset; + const void *value; + const char *propname; + int len, num_action = 0; + + btn_np = ofnode_by_compatible(ofnode_null(), "brcm,buttons"); + if (!ofnode_valid(btn_np)) + return -ENODEV; + + btn_np = ofnode_find_subnode(btn_np, button_name); + if (!ofnode_valid(btn_np)) + return -ENODEV; + + btn_event_np = ofnode_find_subnode(btn_np, event_name); + if (!ofnode_valid(btn_np)) + return -ENODEV; + + if (action_name) { + if (!read_button_event_action_params(btn_event_np, action_name, + &timeout, ¶m)) { + if (register_button_event_action(button_name, btn_event_np, hook, + timeout, param)) + return -ENOENT; + else + num_action++; + } + } else { + /* no action_name specified, enumerate all the actions properties */ + node_offset = ofnode_to_offset(btn_event_np); + for (prop_offset = fdt_first_property_offset(fdt, node_offset); + prop_offset > 0; + prop_offset = fdt_next_property_offset(fdt, prop_offset)) { + value = fdt_getprop_by_offset(fdt, prop_offset, + &propname, &len); + if (!value) + continue; + /* skip if the property is the action cmd string */ + len = strlen(propname); + if (strncmp(&propname[len-4], "_cmd", 4) == 0) + continue; + + if (read_button_event_action_params(btn_event_np, propname, + &timeout, ¶m)) + continue; + + if (register_button_event_action(button_name, btn_event_np, hook, + timeout, param)) + return -ENOENT; + else + num_action++; + } + } + + return num_action; +} + +static int bcmbca_button_probe(struct udevice *dev) +{ + ofnode btn_np; + int ret; + int i = 0; + struct ofnode_phandle_args params; + + dev_for_each_subnode(btn_np, dev) { + memset(&btnInfo[i], 0x0, sizeof(BtnInfo)); + + spin_lock_init(&btnInfo[i].lock); + strncpy(btnInfo[i].name, ofnode_get_name(btn_np), 32); + + btnInfo[i].btnId = i; + btnInfo[i].active = 0; + btnInfo[i].events = 0; + + btnInfo[i].poll = btn_poll; + btnInfo[i].isDown = btn_is_gpio_btn_down; + + ret = ofnode_parse_phandle_with_args(btn_np, CONSUMER_NAME, NULL, 3, 0, + ¶ms); + if (ret) { + dev_err(dev, "%s property not found ret %d\n", CONSUMER_NAME, ret); + continue; + } + + ret = uclass_first_device(UCLASS_GPIO, &btnInfo[i].gd.dev); + if (ret) { + dev_err(dev, "Failed to get GPIO device ret %d\n", ret); + return ret; + } + + if (params.args[1] & BCA_GPIO_ACTIVE_LOW) { + params.args[1] &= ~BCA_GPIO_ACTIVE_LOW; + params.args[1] |= GPIO_ACTIVE_LOW; + } + ret = gpio_xlate_offs_flags(btnInfo[i].gd.dev, &btnInfo[i].gd, + ¶ms); + if (ret) { + dev_err(dev, "gpio_xlate_offs_flags returned failure %d\n", ret); + continue; + } + btnInfo[i].gd.flags |= GPIOD_IS_IN; + + ret = dm_gpio_request(&btnInfo[i].gd, CONSUMER_NAME); + if (ret) { + dev_err(dev, "Failed to request GPIO %d ret %d\n", + btnInfo[i].gd.offset, ret); + continue; + } + + dm_gpio_set_dir(&btnInfo[i].gd); + if (ret) { + dev_err(dev, "Failed to set GPIO %d direction ret %d\n", + btnInfo[i].gd.offset, ret); + continue; + } + + ret = register_button_action(ofnode_get_name(btn_np), PRINT_ACT_NAME_UBOOT, + btn_hook_print); + if (ret < 0) { + register_button_action(ofnode_get_name(btn_np), PRINT_ACT_NAME, + btn_hook_print); + } + + i++; + if (i == PB_BUTTON_MAX) { + dev_err(dev, "max number %d of button reached!\n", i); + break; + } + } + + return 0; +} + +static struct udevice_id const bcmbca_button_of_match[] = { + { .compatible = "brcm,buttons" }, + {} +}; + +U_BOOT_DRIVER(bcmbca_button) = { + .name = "bcm-bca-button", + .id = UCLASS_NOP, + .of_match = bcmbca_button_of_match, + .probe = bcmbca_button_probe, +}; + +void bcmbca_button_init(void) +{ + struct udevice *dev; + + uclass_get_device_by_driver(UCLASS_NOP, DM_GET_DRIVER(bcmbca_button), + &dev); +} diff --git a/board/broadcom/bcmbca/board.c b/board/broadcom/bcmbca/board.c new file mode 100644 index 0000000000..66da9b63fe --- /dev/null +++ b/board/broadcom/bcmbca/board.c @@ -0,0 +1,256 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#if defined(CONFIG_ARM64) +#include +#else +#include +#include +#endif +#include "bca_common.h" +#if defined(CONFIG_BCMBCA_PMC) +#include "pmc_drv.h" +#endif +#if defined(CONFIG_BCMBCA_BUTTON) +#include "bcmbca_button.h" +#endif +#include + +#if defined(CONFIG_BCM_BCA_LED) +void bca_led_probe(void); +#endif + +void bcmbca_xrdp_eth_init(void); + + +#if defined(CONFIG_BCM_BOOTSTATE) +void bca_bootstate_probe(void); +#endif + +DECLARE_GLOBAL_DATA_PTR; + +__weak void boot_secondary_cpu(unsigned long vector) +{ +} + +__weak int set_cpu_freq(int freqMHz) +{ + return 0; +} +/* overrideable callback to insert within board _init */ +__weak int board_sdk_init_e(void) +{ + return 0; +} + +#if !defined(CONFIG_TPL_ATF) && !defined(CONFIG_ARM64) +void smp_set_core_boot_addr(unsigned long addr, int corenr) +{ +} + +static void __waitloop(void) +{ + while(!GPIO->GeneralPurpose) + wfi(); + /* do nonsecure entry */ + __asm__(".arch_extension sec"); + __asm__("mov ip, %0" : : "r" (GPIO->GeneralPurpose)); + __asm__("smc #0"); +} + +void(*__waitloop_rel)(void) = (void(*)(void))CONFIG_SMP_PEN_ADDR; + +void smp_waitloop(unsigned previous_address) +{ +#ifdef CONFIG_ARM_CORTEX_A15_CVE_2017_5715 + u32 acr; + + /* Enable invalidates of BTB for secondary cpu */ + asm volatile ("mrc p15, 0, %0, c1, c0, 1" : "=r" (acr)); + acr |= 0x1; + v7_arch_cp15_set_acr(acr, 0, 0, 0, 0); +#endif + __waitloop_rel(); +} +#endif + +#if defined(CONFIG_SPI_FLASH) && defined(CONFIG_DM_SPI_FLASH) +void board_spinor_init(void) +{ + struct udevice *dev; + int ret; + + debug("SPI NOR enabled in configuration, checking for device\n"); + ret = uclass_get_device_by_driver(UCLASS_SPI_FLASH, DM_GET_DRIVER(spi_flash_std), &dev); + if (ret) + debug("SPI NOR failed to initialize. (error %d)\n", ret); + else + mtd_probe_devices(); +} +#endif + +int board_init(void) +{ +#if !defined(CONFIG_TPL_ATF) + unsigned long vector; +#endif + board_sdk_init_e(); + +#if defined(CONFIG_BCM_BCA_LED) + bca_led_probe(); +#endif + +#if defined(CONFIG_BCMBCA_PMC) + pmc_init(); +#endif + + print_chipinfo(); +#if defined(BUILD_TAG) + printf("$Uboot: "BUILD_TAG" $\n"); +#endif + +#if !defined(CONFIG_TPL_ATF) +#if defined(CONFIG_ARM64) + vector = (unsigned long)&_start; +#else + vector = (unsigned long)_smp_pen; + GPIO->GeneralPurpose = 0; + memcpy(__waitloop_rel, __waitloop, 0x1000); + flush_dcache_range((unsigned long)__waitloop_rel, (unsigned long)__waitloop_rel + 0x1000); +#endif + boot_secondary_cpu(vector); +#endif +#if defined(CONFIG_BCM_BOOTSTATE) + bca_bootstate_probe(); +#endif +#if defined(CONFIG_BCMBCA_BUTTON) + bcmbca_button_init(); + reset_button_init(); +#endif +#if defined(CONFIG_SPI_FLASH) && defined(CONFIG_DM_SPI_FLASH) + board_spinor_init(); +#endif + return 0; +} + +int board_fix_fdt(void * fdt_addr) +{ + return 0; +} + +void board_nand_init(void) +{ + struct udevice *dev; + int ret; + int device = 0; + +#if defined(CONFIG_NAND_BRCMNAND) + debug("parallel NAND enabled in configuration, checking for device\n"); + ret = uclass_get_device_by_driver(UCLASS_MTD, DM_GET_DRIVER(brcm_nand), &dev); + if (ret < 0) + debug("parallel NAND failed to initialize. (error %d)\n", ret); + else + device++; +#endif + +#if defined(CONFIG_MTD_SPI_NAND) + debug("SPI NAND enabled in configuration, checking for device\n"); + ret = uclass_get_device_by_driver(UCLASS_MTD, DM_GET_DRIVER(spinand), &dev); + if (ret < 0) + debug("SPI NAND failed to initialize. (error %d)\n", ret); + else + { + struct mtd_info *mtd = dev_get_uclass_priv(dev); + nand_register(device, mtd); + } +#endif + +} +__weak int ft_board_setup(void *blob, bd_t *bd) +{ + return 0; +} + +__weak int board_sdk_late_init_e(void) +{ + return 0; +} + +__weak int board_sdk_late_init_l(void) +{ + return 0; +} + +int board_late_init(void) +{ + board_sdk_late_init_e(); + + init_cli_cb_arr(); + cli_jobs_cb = run_cli_jobs; + +#ifdef CONFIG_BCMBCA_XRDP_ETH + register_cli_job_cb(0, bcmbca_xrdp_eth_init); +#endif + +#if defined(CONFIG_BCMBCA_BUTTON) + register_cli_job_cb(100, btn_poll); +#endif + board_sdk_late_init_l(); + return 0; +} + + +/* FIXME FIXME FIXME + * This file has a few things that are common to spl and tpl ( move to board_spltpl.c ) + * and a few things that are universal to uboot on bcmbca devices (keep here) + * and a few things that are specific to the reference SDK's conventions for environment, flash layout, etc.. (move to bcmbca_uboot.c) + */ + +__weak hook_dram_init(void) +{ +} + + +int dram_init(void) +{ + if (fdtdec_setup_mem_size_base() != 0) + printf("fdtdec_setup_mem_size_base() has failed\n"); + else { + hook_dram_init(); +#if defined(CONFIG_ARM64) + /* update memory size in mmu table*/ + mem_map[0].virt = mem_map[0].phys = gd->ram_base; + mem_map[0].size = gd->ram_size; +#endif + } + return 0; +} + +int dram_init_banksize(void) +{ + fdtdec_setup_memory_banksize(); + + hook_dram_init(); + return 0; +} + +int print_cpuinfo(void) +{ + return 0; +} + +__weak void board_mtdparts_default(const char **mtdids, const char **mtdparts) +{ +} diff --git a/board/broadcom/bcmbca/board_ikos.c b/board/broadcom/bcmbca/board_ikos.c new file mode 100644 index 0000000000..798754fabf --- /dev/null +++ b/board/broadcom/bcmbca/board_ikos.c @@ -0,0 +1,150 @@ +#include +#include +#include +#include +#include +#include "tpl_params.h" +#include "bcm_secure.h" +#include "boot_blob.h" +#include "otp_map_cmn.h" +#ifdef CONFIG_ARMV7_NONSEC +#include +#include +#endif + + +DECLARE_GLOBAL_DATA_PTR; + +typedef void __noreturn(*image_entry_t) (void *); + +/* Override function for ikos implementation */ + +#if defined(CONFIG_SPL_BUILD) + +#if defined(CONFIG_TPL_BUILD) +int tpl_ram_load_image(struct spl_image_info *spl_image, + struct spl_boot_device *bootdev) +{ + printf("ikos set tpl image entry to u-boot directly\n"); + + spl_image->os = IH_OS_U_BOOT; + spl_image->entry_point = (image_entry_t)CONFIG_SYS_TEXT_BASE; + + return 0; +} + +int get_raw_metadata(void *buffer, struct ubispl_info *info, int n) +{ + return 0; +} + +u32 spl_boot_device(void) +{ + return BOOT_DEVICE_RAM; +} + +SPL_LOAD_IMAGE_METHOD("RAM", 0, BOOT_DEVICE_RAM, tpl_ram_load_image); +#else +void start_tpl(tpl_params *parms) +{ + typedef void __noreturn(*image_entry_t) (void *); + image_entry_t image_entry = + (image_entry_t) CONFIG_TPL_TEXT_BASE; + void *new_params = (void*)TPL_PARAMS_ADDR; + + memcpy(new_params, parms, sizeof(tpl_params)); + + cleanup_before_linux(); + image_entry((void *)new_params); +} + +void * load_spl_env(void *buffer) +{ +} +#endif + +int nand_is_bad_block(unsigned int blk) +{ + /* simulatioin/ikos enironment does not support spare area */ + return 0; +} + +void early_abort(void) +{ + +} +#else + +int last_stage_init(void) +{ +#ifdef CONFIG_ARM64 + +#else + unsigned long machid = 0xffffffff; +#ifdef CONFIG_MACH_TYPE + machid = CONFIG_MACH_TYPE; +#endif + printf("Booting Linux...\n"); + + armv7_init_nonsec(); + cleanup_before_linux(); + secure_ram_addr(_do_nonsec_entry)((void*)0x00108000, + 0, machid, 0x03000000); +#endif + + return 0; +} + +void *board_fdt_blob_setup(void) +{ + /* DTB is backdoor loaded */ + return (void *)0x03000000; +} + +uint32_t env_boot_magic_search_size(void) +{ + return 256*1024; +} + +static int do_linux_ikos(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + run_command("env set -f fdt_high 0xFFFFFFFFFFFFFFFF", 0); + /* back door load fit image at 0x3000000 in IKOS*/ + run_command("bootm 0x3000000#conf_linux", 0); + + return 0; +} + +U_BOOT_CMD( + boot_linux_ikos, 1, 1, do_linux_ikos, + "IKOS boot linux from backdoor loaded fit image ", + "" +); + +#endif + +otp_hw_cmn_err_t otp_hw_read(otp_hw_cmn_t *dev, + u32 addr, + otp_hw_cmn_row_conf_t* row_conf, + u32* data, + u32 size) +{ + *data = 0; + return 0; +} + +void bcm_sec_init(void) +{ +} + +int bcm_sec_do(bcm_sec_ctx_t ctx, bcm_sec_cb_arg_t arg[SEC_CTRL_ARG_MAX]) +{ + return 0; +} + +#if !defined(CONFIG_SYS_ARCH_TIMER) +ulong get_tbclk(void) +{ + return CONFIG_SYS_HZ; +} +#endif diff --git a/board/broadcom/bcmbca/board_sdk.c b/board/broadcom/bcmbca/board_sdk.c new file mode 100644 index 0000000000..88756b9560 --- /dev/null +++ b/board/broadcom/bcmbca/board_sdk.c @@ -0,0 +1,462 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include + + +#include +#include +#include +#include +#include +#include +#include "bca_common.h" +#include "bcm_bootstate.h" +#include "httpd/bcmbca_net.h" +#include +#include "bcm_secure.h" +#include "bcm_otp.h" + +void bcmbca_xrdp_eth_init(void); +int board_init_flash_parts(int erase_img_part); + +DECLARE_GLOBAL_DATA_PTR; + + + +typedef struct _bcm_board_fixup_fdt_data_ { + char node[512]; + char prop[512]; + size_t size; + char val[1]; +} bcm_board_fixup_fdt_data_t; + + + +static bcm_board_fixup_fdt_data_t** __fdt_fixup_tbl; +static bcm_board_fixup_fdt_data_t** __fdt_fixup_tbl_end; + +static void bcm_board_fdt_fixup_release(void) +{ + bcm_board_fixup_fdt_data_t **tbl = __fdt_fixup_tbl; + assert(__fdt_fixup_tbl_end || __fdt_fixup_tbl_end); + while((unsigned long)tbl < (unsigned long)__fdt_fixup_tbl_end) { + if (*tbl) { + free(*tbl); + } + tbl++; + } + free(__fdt_fixup_tbl); + __fdt_fixup_tbl = NULL; + __fdt_fixup_tbl_end = NULL; +} + +static int bcm_board_fdt_fixup_set(const char* node, + const char* prop, + void* val, + unsigned int size) +{ + int rc = -1; + void * new_ptr; + unsigned int tbl_len; + bcm_board_fixup_fdt_data_t * fdt_dat; + assert (strlen(node) < 512 && strlen(prop) < 512); + tbl_len = (!__fdt_fixup_tbl)? 0 : + (__fdt_fixup_tbl_end -__fdt_fixup_tbl); + new_ptr = realloc(__fdt_fixup_tbl, + sizeof(bcm_board_fixup_fdt_data_t*) * (tbl_len + 1)); + if (!new_ptr) { + goto __out_of_mem; + } + __fdt_fixup_tbl = new_ptr; + __fdt_fixup_tbl_end = __fdt_fixup_tbl + tbl_len; + + fdt_dat = (bcm_board_fixup_fdt_data_t*)malloc( + sizeof(bcm_board_fixup_fdt_data_t)+size); + if (!fdt_dat) { + goto __out_of_mem; + } + memset(fdt_dat, 0, sizeof(bcm_board_fixup_fdt_data_t) + size); + memcpy(fdt_dat->val, val, size); + strncpy(fdt_dat->node, node, 512); + strncpy(fdt_dat->prop, prop, 512); + fdt_dat->size = size; + *__fdt_fixup_tbl_end++ = fdt_dat; + rc = 0; +__out_of_mem: + return rc; +} + +int bcm_board_boot_fit_fdt_fixup(void* fdt) +{ + int rc = -1, off = 0, len = 0; + const char* val; + uint32_t ui_val; + if (!fdt) { + goto err; + } + off = fdt_path_offset(fdt, "/brcm_sec_hashes/rootfs/hash-1"); + if (off < 0) { + if(bcm_sec_state() == SEC_STATE_UNSEC) { + return 0; + } + goto err; + } + val = fdt_getprop(fdt, off, "value", &len); + if (bcm_board_fdt_fixup_set("/", BRCM_ROOTFS_SHA256_PROP, val, len)) { + goto err; + } + off = fdt_path_offset(fdt, "/brcm_sec_hashes/rootfs"); + if (off < 0) { + goto err; + } + val = fdt_getprop(fdt, off, "size", &len); + /*the value returned as be BE. Must turn to cpu */ + ui_val = fdt32_to_cpu(*(uint32_t*)val); + if (bcm_board_fdt_fixup_set("/", BRCM_ROOTFS_IMGLEN_PROP, &ui_val, len)) { + goto err; + } + rc = 0; +err: + if (rc) { + printf("ERROR:Unable to add a fixup to FDT\n"); + bcm_board_fdt_fixup_release(); + } + return rc; +} + +int bcm_board_boot_bootstate_fdt_fixup(void* fdt) +{ + int rc = -1, node = 0, len = 0; + int *val = NULL; + + if (!gd->fdt_blob) + { + goto error; + } + + node = fdt_path_offset(gd->fdt_blob, "/chosen"); + if (node < 0) + { + goto error; + } + + val = (int *)fdt_getprop(gd->fdt_blob, node, "active_image", &len); + if (!val || !*val) + { + goto error; + } + + if (bcm_board_fdt_fixup_set("/chosen", "active_image", val, len)) + { + goto error; + } + + rc = 0; +error: + if (rc) + { + printf("ERROR:Unable to add bootstate fixup to FDT\n"); + bcm_board_fdt_fixup_release(); + } + return rc; +} + +// add to this function all fixups we need before booting +// to linux (for now). +// FIT is an input fdt if ignored then it is ommitted +int bcm_board_boot_fdt_fixup(void* fdt) +{ + int rc = bcm_board_boot_fit_fdt_fixup(fdt) | bcm_board_boot_bootstate_fdt_fixup(fdt); + return rc; +} + +#ifdef CONFIG_OF_BOARD_SETUP +//uboot callback +int ft_board_setup(void *blob, bd_t *bd) +{ + int rc = 0; + bcm_board_fixup_fdt_data_t *fdt_data; + bcm_board_fixup_fdt_data_t **tbl = __fdt_fixup_tbl; + assert(__fdt_fixup_tbl || __fdt_fixup_tbl_end); + while((unsigned long)tbl < (unsigned long)__fdt_fixup_tbl_end) { + if (*tbl) { + fdt_data = *tbl; + rc |= fdt_find_and_setprop(blob, fdt_data->node, fdt_data->prop, + fdt_data->val, fdt_data->size, 1); + } + tbl++; + } + return rc; +} +#endif +#if defined(CONFIG_BCM_BOOTSTATE) +static void bcmbca_bootstate_reached_uboot(void) +{ + bcmbca_clear_boot_reason(); + unregister_cli_job_cb(bcmbca_bootstate_reached_uboot); +} +#endif + +#if defined(CONFIG_SYS_MTDPARTS_RUNTIME) + +#define LINUX_NAND_MTD_ID "brcmnand.0" +#define LINUX_SPINAND_MTD_ID "spi1.0" +#define UBOOT_NAND_MTD_ID "nand0" +#define LINUX_SPINOR_MTD_ID "spi-nor.0" + +static char bcmbca_def_mtd_ids[128] = {0}; +static char bcmbca_def_mtd_parts[512] = {0}; +static char bcmbca_linux_mtd_ids[128] = {0}; + +void board_mtdparts_default(const char **mtdids, const char **mtdparts) +{ + /* use first mtd device as default. For nand and spi nand driver, + * u-boot uses nand0, nand1 and etc as its mtd id + */ + struct mtd_info *mtd = get_mtd_device_nm(UBOOT_NAND_MTD_ID); + if (!IS_ERR_OR_NULL(mtd)) { + /* check driver name to see if it is spi nand or parallel nand */ + if (strcmp(mtd->dev->driver->name, "spi_nand") == 0) { + sprintf(bcmbca_def_mtd_ids, "nand0=%s", LINUX_SPINAND_MTD_ID); + sprintf(bcmbca_def_mtd_parts, "%s:%lld(loader)", + LINUX_SPINAND_MTD_ID, (long long)env_boot_magic_search_size()); + sprintf(bcmbca_linux_mtd_ids, "%s", LINUX_SPINAND_MTD_ID); + } else if (strcmp(mtd->dev->driver->name, "brcm-nand") == 0) { + sprintf(bcmbca_def_mtd_ids, "nand0=%s", LINUX_NAND_MTD_ID); + sprintf(bcmbca_def_mtd_parts, "%s:%lld(loader)", + LINUX_NAND_MTD_ID, (long long)env_boot_magic_search_size()); + sprintf(bcmbca_linux_mtd_ids, "%s", LINUX_NAND_MTD_ID); + } else { + printf("Unsupported driver %s!\n", mtd->dev->driver->name); + return; + } + } else { + mtd = get_mtd_device_nm(SPIFLASH_MTDNAME); + if (!IS_ERR_OR_NULL(mtd)) { + sprintf(bcmbca_def_mtd_ids, "nor0=%s", LINUX_SPINOR_MTD_ID); + sprintf(bcmbca_def_mtd_parts, "%s:%lld(loader)", + LINUX_SPINOR_MTD_ID, (long long)env_boot_magic_search_size()); + put_mtd_device(mtd); + } + } + *mtdids = bcmbca_def_mtd_ids; + *mtdparts = bcmbca_def_mtd_parts; +} +#endif + +#ifdef CONFIG_BCMBCA_UPDATE_MCB_IN_ENV +#include "spl_ddrinit.h" + +static int update_memcfg(void) +{ + + if (env_get("boardid") == NULL) + printf("ERROR: boardid is not defined in uboot environment \nPlease use uboot command \'setenv boardid [board name]\' to set boardid\n"); + else + { + const uint32_t* memcfg; + uint32_t fdt_mcb, env_mcb; + int offset = fdt_path_offset(gd->fdt_blob, "/memory_controller"); + if (offset < 0) + { + printf("Can't find /memory_controller node in board Device Tree\n"); + return -1; + } + memcfg = fdt_getprop(gd->fdt_blob, offset, "memcfg", NULL); + if (memcfg == NULL) + { + printf("Can't find memcfg parameter in Device Tree\n"); + return -1; + } + fdt_mcb = be32_to_cpu(*memcfg); + env_mcb = env_get_hex("MCB", 0); + + if (!env_mcb || ((fdt_mcb!=env_mcb) && !(env_mcb&BP_DDR_CONFIG_OVERRIDE))) + { + printf("Updating MCB environment from 0x%x to 0x%x\n", env_mcb, fdt_mcb); + env_set_hex("MCB", fdt_mcb); + env_save(); + printf("Memory Configuration Changed -- REBOOT NEEDED\n"); + } + } + + return 0; +} +#endif + +int board_sdk_late_init_e(void) +{ + bcm_sec_init(); + bcm_sec_cb_arg_t cb_args[SEC_CTRL_ARG_MAX] = {0}; + cb_args[SEC_CTRL_ARG_KEY].arg[0].ctrl = SEC_CTRL_KEY_GET; + cb_args[SEC_CTRL_ARG_KEY].arg[1].ctrl = SEC_CTRL_KEY_CHAIN_RSA; + cb_args[SEC_CTRL_ARG_KEY].arg[1].ctrl_arg = (void*)gd->fdt_blob; + cb_args[SEC_CTRL_ARG_KEY].arg[2].ctrl = SEC_CTRL_KEY_CHAIN_AES; + cb_args[SEC_CTRL_ARG_KEY].arg[2].ctrl_arg = (void*)gd->fdt_blob; + bcm_sec_do(SEC_SET, cb_args); +#if 0 + bcm_sec_key_arg_t* _keys; + bcm_sec_get_active_aes_key(&_keys); + if (_keys) { + int i; + for (i = 0; i < _keys->len; i++ ) { + printf("Got key %s %llx %llx %llx %llx \n",_keys->aes[i].id, + ((u64*)_keys->aes[i].key)[0], + ((u64*)_keys->aes[i].key)[1], + ((u64*)_keys->aes[i].key)[2], + ((u64*)_keys->aes[i].key)[3]); + } + + } +#endif + printf("Now we are in UBOOT proper\n"); + + return 0; +} + +int board_sdk_init_e(void) +{ + if (bcm_otp_init()) { + hang(); + } +} + +int board_sdk_late_init_l(void) +{ + char *cp; + int node, len; + +#ifdef CONFIG_BCMBCA_UPDATE_MCB_IN_ENV + update_memcfg(); +#endif + +#ifdef CONFIG_BCMBCA_HTTPD + if(!httpd_check_net_env()) + register_cli_job_cb(0, http_poll); +#endif + +#if defined(CONFIG_BCM_BOOTSTATE) + register_cli_job_cb(0, bcmbca_bootstate_reached_uboot); +#endif + + node = fdt_path_offset(gd->fdt_blob, "/chosen"); + if (node < 0) { + printf("Can't find /chosen node in cboot DTB\n"); + return node; + } + cp = (char *)fdt_getprop(gd->fdt_blob, node, "boot_device", &len); + if (cp) { + printf("boot_device is %s\n",cp); + } + + board_init_flash_parts(0); + + return(0); +} + +int board_init_flash_parts(int erase_img_part) +{ + char *cp; + char *media = NULL; + int n = 0; + int ret = -1; +#if defined(CONFIG_CMD_MTDPARTS) || defined(CONFIG_CMD_GPT) + cp = env_get("IMAGE"); + if (NULL != cp) + { + unsigned long iargs[4]; + char units[4]; + n = parse_env_string_plus_nums(cp, &media, 4, iargs, units); +#ifdef CONFIG_CMD_MTDPARTS + if( strcasecmp(media, FLASH_DEV_STR_NAND) == 0 ) { + char *mparts; + int ncommas = 0; + mparts = env_get("mtdparts"); + while (mparts && (*mparts != '\0')) { + /* count the commas in mtdparts */ + if (*mparts == ',') { + ncommas++; + } + mparts++; + } + /* only update mtdparts from IMAGE if IMAGE is specified and mtdparts has 0 or 1 + * commas -- either 1 or 2 devices defined */ + if ((ncommas < 2 ) && ((n == 3) || (n == 2))) { + char cmd[64]; + struct mtd_info *mtd; + long long image_start; + long long image_max; + long long image_end = 0; + image_start = ((long long)iargs[0]) << suffix2shift(units[0]) ; + if ( n == 3) { + image_end = ((long long)iargs[1]) << suffix2shift(units[1]) ; + } + mtd_probe_devices(); + mtd = get_mtd_device_nm("nand0"); + if (IS_ERR_OR_NULL(mtd)) + { + printf("cant get mtd nand0\n"); + } + image_max = mtd->size - 8 * mtd->erasesize; + put_mtd_device(mtd); + if ((n == 2) || (image_end < 1) || (image_end > image_max)) { + image_end = image_max; + printf("adjusted to skip last 8 blocks\n"); + } + + /* Initialize mtd parts */ + printf("image in %s from %lld to %lld\n",media,image_start,image_end); + run_command("mtdparts delall",0); + + /* Set key mtd env variables */ + env_set("mtdids", bcmbca_def_mtd_ids); + sprintf(cmd, "%s:%lld(loader),%lld@%lld(image)", + bcmbca_linux_mtd_ids, + image_start, + image_end-image_start, + image_start); + env_set("mtdparts", cmd); + run_command("mtdparts",0); + + /* erase image partition if required */ + if (erase_img_part) { + printf("WARNING: Erasing image partition!\n"); + sprintf(cmd,"mtd erase image"); + run_command(cmd,0); + } + ret = 0; + } + } +#endif /* CONFIG_CMD_MTDPARTS */ + +#ifdef CONFIG_CMD_GPT + if( strcasecmp(media, FLASH_DEV_STR_EMMC) == 0 ) { + /* Setup default partitions */ + char * partitions = NULL; + if( run_command("env exists default_partitions",0) == 0 ) { + run_command("part list mmc 0 curr_parts",0); + partitions=env_get("curr_parts"); + if( (strlen(partitions) <= 1) || erase_img_part) { + if( erase_img_part ) + printf("WARNING: Reformatting eMMC image partitions!\n"); + else + printf("Bootstrap Image Detected!, Setting default eMMC partitions!\n"); + + run_command("gpt write mmc 0 $default_partitions", 0); + run_command("gpt verify mmc 0 $default_partitions", 0); + } + ret = 0; + } + } +#endif /* CONFIG_CMD_GPT */ + free(media); + } +#endif + return ret; +} + diff --git a/board/broadcom/bcmbca/board_secure.c b/board/broadcom/bcmbca/board_secure.c new file mode 100644 index 0000000000..1a9eea15ff --- /dev/null +++ b/board/broadcom/bcmbca/board_secure.c @@ -0,0 +1,499 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 Broadcom Ltd. + */ +#include +#include +#include +#include +#include +#include +#include +#include "u-boot/rsa.h" +#include "u-boot/rsa-mod-exp.h" +#include +#include +#include "bcm_secure.h" +#include "bcm_otp.h" +#include + + +/* callback can be called early in before relocation and + * before bss zero loop */ +static bcm_sec_t s_bcm_sec __attribute__((section(".data"))) = {0}; + + +static inline void copy_append(bcm_sec_ctrl_arg_t* d, bcm_sec_ctrl_arg_t* s, u32 len) +{ + int i,j; + for(i = 0; i < len; i++) { + if (!s[i].ctrl) { + continue; + } + for(j = 0; j < len; j++) { + if ( (u32)d[j].ctrl == (u32)s[i].ctrl || + !((u32)d[j].ctrl) ) { + d[j].ctrl = s[i].ctrl; + d[j].ctrl_arg = s[i].ctrl_arg; + break; + } + } + } +} + + +static void bcm_sec_set_args(bcm_sec_t *sec, bcm_sec_cb_arg_t args[SEC_CTRL_ARG_MAX]) +{ + int i; + for (i = 0; i < SEC_CTRL_ARG_MAX; i++) { + copy_append(sec->cb[i].arg, + args[i].arg, SEC_CTRL_RUN_ORDER_MAX); + } +} + + + +static bcm_sec_ctrl_arg_t* bcm_sec_get_ctrl_arg(bcm_sec_t* sec, + bcm_sec_ctrl_arg_t* ctrl, + bcm_sec_ctrl_arg_num_t ctrl_id) +{ + int i; + bcm_sec_ctrl_arg_t *c; + bcm_sec_ctrl_arg_t *res = NULL; + c = sec->cb[ctrl_id].arg; + for(i = 0; i < SEC_CTRL_RUN_ORDER_MAX; i++) { + if (!c[i].ctrl) { + continue; + } + if ( (u32)c[i].ctrl == (u32)ctrl->ctrl) { + res = &c[i]; + break; + } + } + return res; +} + +int bcm_sec_update_ctrl_arg(bcm_sec_ctrl_arg_t* arg, + bcm_sec_ctrl_arg_num_t ctrl) +{ + bcm_sec_ctrl_arg_t *_arg = bcm_sec_get_ctrl_arg(bcm_sec(), arg, ctrl); + if (!_arg) { + return -1; + } + if (ctrl == SEC_CTRL_ARG_KEY && ( + (_arg->ctrl == SEC_CTRL_KEY_CHAIN_AES) || (_arg->ctrl == SEC_CTRL_KEY_CHAIN_ENCKEY) || (_arg->ctrl == SEC_CTRL_KEY_EXPORT_ITEM)) ) { + ((bcm_sec_key_arg_t*)_arg->ctrl_arg)->arg = arg->ctrl_arg; + } else { + _arg->ctrl_arg = arg->ctrl_arg; + } + return 0; +} + +/* based on the content of theotp field returns state - unsec, mfg or fld*/ +static int bcm_sec_boot_state(bcm_sec_state_t* sec_state) +{ + otp_hw_ctl_data_t ctl_data = { + .addr = SOTP_MAP_FLD_ROE, + .status = OTP_HW_CMN_STATUS_ROW_DATA_VALID + }; + otp_hw_cmn_ctl_cmd_t cmd = { + .ctl = OTP_HW_CMN_CTL_STATUS , + .data = (uintptr_t)&ctl_data, + .size = sizeof(ctl_data) + }; + int rc = -1; + u32 *btrm_en = NULL, + *btrm_cust_en = NULL, + *cust_mid = NULL, size = 0, res = 0; + *sec_state = SEC_STATE_UNSEC; + if (bcm_otp_read(OTP_MAP_CUST_BTRM_BOOT_ENABLE, &btrm_cust_en, &size) || + bcm_otp_read(OTP_MAP_BRCM_BTRM_BOOT_ENABLE, &btrm_en, &size) || + bcm_otp_read(OTP_MAP_CUST_MFG_MRKTID, &cust_mid, &size)) { + goto err; + } + if ( !(*btrm_en) || !(*btrm_cust_en)) { + goto done; + } + *sec_state = SEC_STATE_GEN3_MFG; + if ( !(*cust_mid) ) { + goto done; + } + + if (bcm_otp_ctl(BCM_SOTP_MAP, &cmd, &res)) { + goto err; + } + if (!(res&OTP_HW_CMN_STATUS_ROW_DATA_VALID) ) { + /*printf("%s ek: 0x%x \n",__FUNCTION__,*(u32*)BCM_SECBT_CRED_AES);*/ + if (!*((u32*)BCM_SECBT_CRED_AES)) { + goto done; + } + } + res = 0; + ctl_data.addr = SOTP_MAP_FLD_HMID; + if (bcm_otp_ctl(BCM_SOTP_MAP, &cmd, &res)) { + goto err; + } + if (!(res&OTP_HW_CMN_STATUS_ROW_DATA_VALID)) { + /*printf("%s pub: 0x%x \n",__FUNCTION__,*(u32*)BCM_SECBT_CRED_MOD);*/ + if (! *((u32*)BCM_SECBT_CRED_MOD)) { + goto done; + } + } + *sec_state = SEC_STATE_GEN3_FLD; +done: + rc = 0; +err: + return rc; +} + +int bcm_sec_set_sec_ser_num( char * ser_num, u32 ser_num_size) +{ + int rc = -1; + + /* Commit the new secure serial number to S/OTP */ + rc = bcm_otp_write(SOTP_MAP_SER_NUM, ser_num, ser_num_size); + if(rc) { + printf("%s: ERROR! Failed to commit secure serial number! rc:%d\n", __FUNCTION__, rc); + } + return rc; +} + +int bcm_sec_get_sec_ser_num( char * ser_num, u32 ser_num_size) +{ + int rc = -1; + u32 * pdata = NULL; + u32 size = 0; + u32 num_words = 0; + + /* Get secure serial number fields from S/OTP */ + rc = bcm_otp_read(SOTP_MAP_SER_NUM, &pdata, &size); + + if( rc == OTP_HW_CMN_ERR_KEY_EMPTY ) + { + memset(ser_num, 0x0, ser_num_size); + return OTP_HW_CMN_OK; + } + + /* If retrieval fails, check dtb for exported value */ + if( rc ) { + int node; + node = fdt_path_offset(gd->fdt_blob, "/trust/serial_num"); + if (node >= 0) { + char * cp = NULL; + cp = (char *)fdt_getprop(gd->fdt_blob, node, "value", &size); + if (cp) { + memcpy(ser_num, cp, (size>ser_num_size?ser_num_size:size)); + rc = 0; + } + } + if(rc) { + printf("%s: ERROR! Failed to retrieve secure serial number! rc:%d\n", __FUNCTION__, rc); + } + } else { + memcpy(ser_num, pdata, (size>ser_num_size?ser_num_size:size)); + } + return rc; +} + +int bcm_sec_set_dev_spec_key( char * dev_spec_key, u32 dev_spec_key_size) +{ + int rc = -1; + + /* Commit the new device specific key to S/OTP */ + rc = bcm_otp_write(SOTP_MAP_KEY_DEV_SPECIFIC, dev_spec_key, dev_spec_key_size); + if(rc) { + printf("%s: ERROR! Failed to commit secure serial number! rc:%d\n", __FUNCTION__, rc); + } + return rc; +} + +int bcm_sec_get_dev_spec_key( char * dev_spec_key, u32 dev_spec_key_size) +{ + int rc = -1; + u32 * pdata = NULL; + u32 size = 0; + u32 num_words = 0; + + /* Get device specific from S/OTP */ + rc = bcm_otp_read(SOTP_MAP_KEY_DEV_SPECIFIC, &pdata, &size); + + if( rc == OTP_HW_CMN_ERR_KEY_EMPTY ) + { + memset(dev_spec_key, 0x0, dev_spec_key_size); + return OTP_HW_CMN_OK; + } + + if(rc) { + printf("%s: ERROR! Failed to retrieve secure serial number! rc:%d\n", __FUNCTION__, rc); + } else { + memcpy(dev_spec_key, pdata, (size>dev_spec_key_size?dev_spec_key_size:size)); + } + return rc; +} + +#define ANTI_ROLLBACK_LVL_NUMBITS 2 +#define ANTI_ROLLBACK_LVL_MASK ((1 << ANTI_ROLLBACK_LVL_NUMBITS)-1) +#define ANTI_ROLLBACK_LVL_SHIFT ANTI_ROLLBACK_LVL_NUMBITS +static int bcm_sec_antirollback_lvl_ctl( u32 * lvl, int write ) +{ + int rc = -1; + u32 * pdata = NULL; + u32 size = 0; + u32 current_lvl = 0; + u32 num_lvls_word = sizeof(u32)*8/ANTI_ROLLBACK_LVL_NUMBITS; + u32 num_words = 0; + u32 i,j,tmp_lvl; + + /* Get anti_rollback fields from S/OTP */ + rc = bcm_otp_read(SOTP_MAP_ANTI_ROLLBACK, &pdata, &size); + if (rc) { + printf("%s: ERROR! Failed to retrieve anti-rollback level data! rc:%d\n", + __FUNCTION__, rc); + goto finish_read; + } + + /* Calculate level */ + num_words = size/sizeof(u32); + for( i=0; i num_words * num_lvls_word ) { //FIXME BOUNDARY + printf("%s: ERROR! Requested anti-rollback level %d is higher than maximum %d\n", __FUNCTION__, tmp_lvl, num_words * num_lvls_word ); + rc = -1; + goto finish; + } + + /* Encode new rollback level */ + for( i=0; i= num_lvls_word ) + { + /* adjust level */ + tmp_lvl -= num_lvls_word; + + /* If current word is filled continue to next word */ + if( pdata[i] == 0xFFFFFFFF ) + continue; + else + pdata[i] = 0xFFFFFFFF; + } + else + { + /* Selectively fill the row according to level */ + while( tmp_lvl ) + { + pdata[i] |= ANTI_ROLLBACK_LVL_MASK << ((tmp_lvl-1)*ANTI_ROLLBACK_LVL_SHIFT); + tmp_lvl--; + } + } + if( tmp_lvl == 0 ) + break; + } + + /* Commit the new anti-rollback level to S/OTP */ + rc = bcm_otp_write(SOTP_MAP_ANTI_ROLLBACK, pdata, size); + if(rc) { + printf("%s: ERROR! Failed to commit anti-rollback level data! rc:%d\n", __FUNCTION__, rc); + goto finish; + } + } else { + *lvl = current_lvl; + } +finish: + return rc; +} + +int bcm_sec_get_antirollback_lvl( u32 * lvl) +{ + return(bcm_sec_antirollback_lvl_ctl( lvl, 0 )); +} +int bcm_sec_set_antirollback_lvl( u32 lvl) +{ + return(bcm_sec_antirollback_lvl_ctl( &lvl, 1 )); +} +/* assigns a number to a callback to be run ascending order in bcm_sec_do*/ +static void bcm_set_cb_order(bcm_sec_ctrl_arg_num_t ord_arg[SEC_CTRL_ARG_MAX]) +{ + bcm_sec_ctrl_arg_num_t *ord = bcm_sec()->ord; + if (ord_arg) { + memcpy(ord, ord_arg, + SEC_CTRL_ARG_MAX*sizeof(bcm_sec_ctrl_arg_num_t)); + } else { + int i; + for (i = 0; i < SEC_CTRL_ARG_MAX; i++) { + ord[i] = i; + } + } +} + +bcm_sec_t* bcm_sec(void) +{ + return &s_bcm_sec; +} + + +bcm_sec_state_t bcm_sec_state(void) +{ + return bcm_sec()->state; +} + +void bcm_sec_get_active_aes_key(u8** key) +{ + *key = bcm_sec()->key.ek; +} + +void bcm_sec_set_active_aes_key(u8* key) +{ + bcm_sec()->key.ek = key; +} + +u8* bcm_sec_get_active_pub_key(void) +{ + return bcm_sec()->key.pub; +} + +u8* bcm_sec_set_active_pub_key(u8 * key) +{ + bcm_sec()->key.pub = key; +} + +__weak void bcm_sec_clean_secmem(bcm_sec_t* sec) +{ + +} + +__weak int bcm_sec_btrm_key_info(bcm_sec_t* sec) +{ + /* Set root keys */ + memcpy(sec->key.rsa_pub, (void*)BCM_SECBT_CRED_MOD, + RSA2048_BYTES); + memcpy(sec->key.aes_ek, (void*)BCM_SECBT_CRED_AES, + BCM_SECBT_AES_CBC128_EK_LEN); + memcpy(sec->key.aes_ek + BCM_SECBT_AES_CBC128_EK_LEN, + (void*)BCM_SECBT_CRED_AES_IV, BCM_SECBT_AES_CBC128_EK_LEN); + + /* Set active keys */ + sec->key.pub = sec->key.rsa_pub; + sec->key.ek = sec->key.aes_ek; + + /* Clear delegation config */ + sec->delg_cfg_obj = NULL; + + return 0; +} + +void bcm_sec_clean_keys(bcm_sec_t* sec) +{ + if (sec->key.ek) { + memset(sec->key.ek, 0, BCM_SECBT_AES_CBC128_EK_LEN*2); + } + memset(&sec->key, 0, sizeof(bcm_sec_key_t)); +} + +/* should be overridden by the implementation */ +__weak void bcm_sec_cb_init(bcm_sec_t* obj) +{ + +} + +__weak void bcm_sec_init(void) +{ + bcm_sec_t* sec = bcm_sec(); + bcm_sec_cb_init(sec); + bcm_set_cb_order(NULL); + bcm_sec_boot_state(&sec->state); + switch (sec->state) { + case SEC_STATE_GEN3_MFG: + printf("Board is MFG secure\n"); + break; + case SEC_STATE_GEN3_FLD: + printf("Board is FLD secure\n"); + break; + default: + printf("Board is non secure\n"); + } +} + +__weak int bcm_sec_do(bcm_sec_ctx_t ctx, bcm_sec_cb_arg_t arg[SEC_CTRL_ARG_MAX]) +{ + int rc = -1, i, j; + bcm_sec_t *sec = bcm_sec(); + bcm_sec_ctrl_cb_t *__cb; + bcm_sec_ctrl_arg_t *cb_arg; + if (arg) { + bcm_sec_set_args(sec, arg); + } + /* This is a 2 step function. eg SEC_LEVEL_NONE->SEC_LEVEL_INIT->FINAL LEVEL(see below) . + */ + if (ctx & SEC_SCHED_CLR) { + sec->sched_ctx = SEC_NONE; + return rc; + } + + if (sec->sched_ctx & SEC_SET_SCHED) { + /* continuing with schedule level*/ + ctx = (sec->sched_ctx & (~SEC_SET_SCHED)); + } else if (ctx & SEC_SET_SCHED) { + sec->sched_ctx = ctx; + //debug("SEC *** SCHEDULED \n"); + return rc; + } + for (j = 0; j < SEC_CTRL_ARG_MAX; j++) { + __cb = &sec->cb[sec->ord[j]]; + if (!__cb->cb) { + continue; + } + cb_arg = __cb->arg; + for (i = 0; i < SEC_CTRL_RUN_ORDER_MAX; i++) { +#if DEBUG + if (cb_arg[i].ctrl) { + printf("SEC *** DO %d CTRL %d parm 0x%x\n", j, + cb_arg[i].ctrl, + cb_arg[i].ctrl_arg); + } +#endif + if (__cb->cb(sec, cb_arg[i].ctrl, cb_arg[i].ctrl_arg)) { + cb_arg[i].ctrl = 0; + cb_arg[i].ctrl_arg = NULL; + goto err; + } + cb_arg[i].ctrl = 0; + cb_arg[i].ctrl_arg = NULL; + } + } + sec->curr_ctx = ctx; + rc = 0; +err: + return rc; +} + +void bcm_sec_deinit(void) +{ + bcm_sec_clean_secmem(&s_bcm_sec); + bcm_sec_clean_keys(&s_bcm_sec); + memset(&s_bcm_sec, 0, sizeof(bcm_sec_t)); +} + +void bcm_sec_abort(void) +{ + bcm_sec_deinit(); + WATCHDOG_RESET(); + /* we never return if watchdog wasn't enabled */ + hang(); +} diff --git a/board/broadcom/bcmbca/board_secure_fit.c b/board/broadcom/bcmbca/board_secure_fit.c new file mode 100644 index 0000000000..ce4cd46ee8 --- /dev/null +++ b/board/broadcom/bcmbca/board_secure_fit.c @@ -0,0 +1,172 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 Broadcom Ltd. + */ +#include +#include +#include +#include +#include +#include +#include +#include "tpl_params.h" +#include "spl_env.h" +#include "u-boot/rsa.h" +#include "u-boot/rsa-mod-exp.h" +#include +#include +#include +#include "bcm_secure.h" + +#define FIT_PAD_MAX_SIZE 0x1000 +#define BCM_TAG_FIT_HDR_SEC_DELG_REC 0x44454c47 // DELG +#define BCM_TAG_FIT_HDR_SEC_SIGNATURE 0x46495453 // FITS +#define BCM_TAG_FIT_HDR_SEC_PUBKEY 0x46495450 // FITP +#define BCM_FIT_HDR_MAX_RECORDS 4 +#define BCM_FIT_HDR_MIN_HDR_SIZE (RSA2048_BYTES+sizeof(u32)) + + +int bcm_tag_fit_hdr_validate(const u8 *fit, u32 size, + u32 hdr_size, u8* master_pub) +{ + int rc = -1; + u32 tag = 0, cnt = 0; + u8 sig[RSA2048_BYTES]; + u8 *p = (u8*)fit + size; + u8 *pmax = p; + u8 key_buf[RSA2048_BYTES]; + const u8 *key = master_pub; + struct image_sign_info im; + +#if defined (CONFIG_TPL_BUILD) + u32 sdr_plus_sig_size = 0; + int sdr_verified = 0; +#endif + + if (hdr_size < BCM_FIT_HDR_MIN_HDR_SIZE) { + goto err; + } + + im.checksum = image_get_checksum_algo("sha256,"); + if (!im.checksum) { + printf("ERROR: couldn't get checksum algo\n"); + goto err; + } + while (cnt < BCM_FIT_HDR_MAX_RECORDS && (p - pmax) < hdr_size) { + memcpy(&tag, p, sizeof(u32)); + switch ( tag ) { +#if defined (CONFIG_TPL_BUILD) + case BCM_TAG_FIT_HDR_SEC_DELG_REC: + rc = bcm_sec_delg_process_sdr(p, pmax+hdr_size-1, &sdr_plus_sig_size); + if( rc ) { + printf("ERROR: SDR verification failed!\n"); + return rc; + } else { + /* SDR valid, swap in new pub key */ + key = bcm_sec_get_active_pub_key(); + p += sdr_plus_sig_size; + sdr_verified = 1; + } + break; +#endif /* defined (CONFIG_TPL_BUILD) */ + case BCM_TAG_FIT_HDR_SEC_SIGNATURE: + memcpy(sig, p + sizeof(u32), RSA2048_BYTES); + debug("\nVerifying Signature; 4 leading bytes 0x%x verifying with key 0x%x\n",*(u32*)sig, *(u32*)key); + if (!bcm_sec_rsa_verify(fit, size, sig, RSA2048_BYTES, key, &im )) { + rc = 0; +#if defined (CONFIG_TPL_BUILD) + /* Upon FIT hdr & sdr authentication success, check sec node */ + if( sdr_verified ) { + rc = bcm_sec_delg_process_sec_node(fit); + if( rc ) { + printf("ERROR: Security Node verification failed!\n"); + } + } +#endif /* defined (CONFIG_TPL_BUILD) */ + return rc; + } + p += sizeof(u32) + RSA2048_BYTES; + break; + case BCM_TAG_FIT_HDR_SEC_PUBKEY: +#if defined (CONFIG_TPL_BUILD) + if( !sdr_verified ) +#endif + { + memcpy(key_buf, p + sizeof(u32), RSA2048_BYTES); + memcpy(sig, p + sizeof(u32) + RSA2048_BYTES , RSA2048_BYTES); + debug("\nGot Key and Signature, 4 leading bytes: key 0x%x sig 0x%x\n", + *(u32*)key_buf, *(u32*)sig); + if (!bcm_sec_rsa_verify(key_buf, RSA2048_BYTES, sig, RSA2048_BYTES, master_pub, &im )) { + key = key_buf; + } else { + printf("The key 0x%x can't be verified\n", *(u32*)key_buf); + } + + p += sizeof(u32) + RSA2048_BYTES*2; + cnt++; + } + break; + default: + p++; + } + } +err: + return rc; +} + +ulong bcm_sec_get_reqd_load_size( void * fit ) +{ + return( fdt_totalsize(fit) + FIT_PAD_MAX_SIZE ); +} + +int bcm_sec_validate_fit(void* fit, u32 max_image_size) +{ + int rc = -1; + ulong size = fdt_totalsize(fit); + bcm_sec_state_t st = bcm_sec_state(); + + if (FIT_PAD_MAX_SIZE > max_image_size) { + printf("ERROR: FIT image is too short to process\n"); + goto _die; + } + + u8* key = bcm_sec_get_active_pub_key(); + if (!key) { + if((st == SEC_STATE_UNSEC)) { + rc = 0; + } + goto _die; + } + + rc = bcm_tag_fit_hdr_validate(fit, size, FIT_PAD_MAX_SIZE, (u8*)key); + if (rc) { + goto _die; + } + rc = 0; + printf("FIT Header Authentication Successfull!\n"); +_die: + if(rc ) { + printf("FAILED to authenticate FIT header!!! \n"); + if(st & SEC_STATE_SECURE) { + bcm_sec_abort(); + } + } + return rc; +} + +u8* bcm_util_get_fdt_prop_data(void* fdt, char* path, char *prop, int* len) +{ + u8* d = NULL; + int node = fdt_path_offset (fdt, path); + if(node < 0) { + debug("ERROR: unable to find path fdt %s \n", path); + goto err; + } + d = (u8*)fdt_getprop(fdt, node, prop, len); + if (!d) { + debug("ERROR: unable to get %s\n", prop); + goto err; + } +err : + return d; +} diff --git a/board/broadcom/bcmbca/board_secure_sdk.c b/board/broadcom/bcmbca/board_secure_sdk.c new file mode 100644 index 0000000000..bf3e3f8c75 --- /dev/null +++ b/board/broadcom/bcmbca/board_secure_sdk.c @@ -0,0 +1,133 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 Broadcom Ltd. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include "tpl_params.h" +#include "spl_env.h" +#include "bcm_secure.h" +#include "bcm_otp.h" +#include "u-boot/rsa.h" +#include "u-boot/rsa-mod-exp.h" +#include +#include +#include + +#define NODE_NAME_LEN 128 + +static int sec_key_ctrl(bcm_sec_t *sec, bcm_sec_ctrl_t ctrl, void* arg) +{ + int rc = 0; + switch(ctrl) { + case SEC_CTRL_KEY_GET: + { + if ( !(sec->state & SEC_STATE_SECURE)) { + u8* env_key = bcm_util_env_var2bin("brcm_pub_testkey", RSA2048_BYTES); + /* We've got test key; try to authenticate with it + * Only works in non-secure mode + * */ + if (!env_key) { + debug("No Key in environment \n"); + } else { + memcpy(sec->key.rsa_pub, env_key, RSA2048_BYTES); + sec->key.pub = sec->key.rsa_pub; + } + } + } + break; + case SEC_CTRL_KEY_CHAIN_RSA: + if(sec->state & SEC_STATE_SECURE) { + int len = 0; + u8 * k; + int off; + off = fdt_path_offset(arg, "/trust/brcm_pub_key"); + if (off < 0) { + printf("ERROR: Can't find /trust/brcm_pub_key node in boot DTB!\n"); + } + k = (char*)(fdt_getprop(arg, off, "value", &len)); + if (!k || len != RSA2048_BYTES) { + rc = -1; + printf("ERROR: length %d \n", len); + break ; + } else { + memcpy(sec->key.rsa_pub, k, RSA2048_BYTES); + sec->key.pub = sec->key.rsa_pub; + } + + } + break; + case SEC_CTRL_KEY_CHAIN_AES: + if(sec->state & SEC_STATE_SECURE) { + int len = 0, alloc_len = 0; + char *_keys_prop[2] = {FIT_AES1, FIT_AES2}; + bcm_sec_key_arg_t *aes_arg; + int off; + u8* aes1,aes2; + char key_node[NODE_NAME_LEN]; + + /* Get aes1 */ + snprintf(key_node,NODE_NAME_LEN, "/trust/%s", _keys_prop[0]); + off = fdt_path_offset(arg, key_node); + if (off < 0) { + printf("INFO: Can't find %s node in boot DTB!\n", key_node); + break; + } + aes1 = (char*)(fdt_getprop(arg, off, "value", &len)); + if (aes1 && len != BCM_SECBT_AES_CBC128_EK_LEN*2) { + break; + } + + /* Get aes2 */ + snprintf(key_node,NODE_NAME_LEN, "/trust/%s", _keys_prop[1]); + off = fdt_path_offset(arg, key_node); + if (off < 0) { + printf("INFO: Can't find %s node in boot DTB!\n", key_node); + break; + } + aes2 = (char*)(fdt_getprop(arg, off, "value", &len)); + if (aes2 && len != BCM_SECBT_AES_CBC128_EK_LEN*2) { + break; + } + + alloc_len = sizeof(bcm_sec_key_arg_t) + + (aes1 && aes2) ? sizeof(bcm_sec_key_aes_arg_t)*2 : sizeof(bcm_sec_key_aes_arg_t); + aes_arg = malloc(alloc_len); + if (!aes_arg) { + break; + } + memset(aes_arg, 0, alloc_len); + if (aes1) { + //printf("Got %s 0x%x\n" , _keys_prop[0], *(u32*)aes1); + strcpy(aes_arg->aes[aes_arg->len].id,_keys_prop[0]); + memcpy(aes_arg->aes[aes_arg->len].key, aes1, BCM_SECBT_AES_CBC128_EK_LEN*2); + aes_arg->len++; + } + if (aes2) { + strcpy(aes_arg->aes[aes_arg->len].id, _keys_prop[1]); + memcpy(aes_arg->aes[aes_arg->len].key, aes2, BCM_SECBT_AES_CBC128_EK_LEN*2); + //printf("Got %s 0x%x\n" , _keys_prop[1], *(u32*)aes2); + aes_arg->len++; + } + sec->key.ch_ek = aes_arg; + } + break; + case SEC_CTRL_KEY_CLEAN_ALL: + bcm_sec_clean_keys(sec); + break; + default: + break; + } + return rc; +} + +void bcm_sec_cb_init(bcm_sec_t* sec) +{ + sec->cb[SEC_CTRL_ARG_KEY].cb = sec_key_ctrl; +} diff --git a/board/broadcom/bcmbca/board_secure_spl.c b/board/broadcom/bcmbca/board_secure_spl.c new file mode 100644 index 0000000000..a67718c2f0 --- /dev/null +++ b/board/broadcom/bcmbca/board_secure_spl.c @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 Broadcom Ltd. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include "tpl_params.h" +#include "bcm_secure.h" +#include "bcm_otp.h" +#include +#include "u-boot/rsa.h" +#include "u-boot/rsa-mod-exp.h" +#include +#include + +void bcm_sec_clean_secmem(bcm_sec_t* sec) +{ + if ( sec->state & SEC_STATE_SECURE) { + memset((void*)bcm_secbt_args(), 0, sizeof(bcm_secbt_args_t)); + } +} + +/* prevent zerofying by bss loop since we are called early in before relocation*/ + +static int sec_otp_ctrl(bcm_sec_t* sec, bcm_sec_ctrl_t ctrl, void* arg) +{ + switch(ctrl) { + case SEC_CTRL_SOTP_LOCK_ALL: +/* + * disable sensitive blocks for sec slave + * and non-sec master*/ + { + if (bcm_sotp_ctl_perm(OTP_HW_CMN_CTL_LOCK, + OTP_HW_CMN_CTL_LOCK_ALL, NULL) == OTP_MAP_CMN_ERR_UNSP) { + printf("WARNING: lock is not supported\n"); + } + } + break; + default: + break; + } + return 0; +} + +static int sec_key_ctrl(bcm_sec_t *sec, bcm_sec_ctrl_t ctrl, void* arg) +{ + switch(ctrl) { + case SEC_CTRL_KEY_GET: + if ( sec->state & SEC_STATE_SECURE) { + bcm_sec_btrm_key_info(sec); + } + break; + case SEC_CTRL_KEY_CLEAN_ALL: + bcm_sec_clean_secmem(sec); + bcm_sec_clean_keys(sec); + break; + default: + break; + } + return 0; +} + +void bcm_sec_cb_init(bcm_sec_t* sec) +{ + sec->cb[SEC_CTRL_ARG_KEY].cb = sec_key_ctrl; + sec->cb[SEC_CTRL_ARG_SOTP].cb = sec_otp_ctrl; +} diff --git a/board/broadcom/bcmbca/board_secure_tpl.c b/board/broadcom/bcmbca/board_secure_tpl.c new file mode 100644 index 0000000000..82a7cc7aa4 --- /dev/null +++ b/board/broadcom/bcmbca/board_secure_tpl.c @@ -0,0 +1,1410 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 Broadcom Ltd. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include "tpl_params.h" +#include "spl_env.h" +#include "bcm_secure.h" +#include "bcm_otp.h" +#include "bcm_rng.h" +#include +#include "u-boot/rsa.h" +#include "u-boot/rsa-mod-exp.h" +#include +#include +#include +#include "mini-gmp/mini-gmp.h" +#include "mini-gmp/mini-mpq.h" + +#define NODE_NAME_LEN 128 +#define BCM_SEC_MAX_ENCODED_KEYS 10 +#define BCM_SEC_MAX_EXPORTED_ITEMS 5 +#define DELG_SEC_FIT_NODE_PATH "/security" +#define DELG_SEC_FIT_NODE_SIG "signature" +#define DELG_SEC_POL_PATH "/security_policy" +#define DELG_SEC_POL_DELGID "delegate_id" +#define DELG_SEC_POL_MINTPLV "min_tpl_compatibility" +#define DELG_SEC_POL_AES_KEY_PATH "/security_policy/key-aes" +#define DELG_SEC_POL_AES_KEY_ENC_ALGO "algo" +#define DELG_SEC_POL_AES_KEY_DATA "data" +#define DELG_SEC_POL_ANTI_ROLLBACK_PATH "/security_policy/anti-rollback" +#define DELG_SEC_POL_SEC_RESTRICT_PATH "/security_policy/sec_restriction" +#define DELG_SEC_POL_STATUS "status" +#define DELG_SEC_POL_STATUS_DISABLED "disabled" +#define DELG_SEC_POL_NEW_ANTIROLLBCK "new_antirollback" +#define DELG_SEC_POL_ANTIROLLBCK_LIM "antirollback_limit" +#define DELG_SEC_POL_HW_STATE_PATH "/security_policy/sec_restriction/hw_state" +#define DELG_HW_STATE_PATH "/trust/hw_state" +#define DELG_ANTI_ROLLBACK_PATH "/trust/anti-rollback" +#define DELG_ENC_KEYS_PATH "/trust/encoded_keys" +#define DELG_ENC_KEYS_NAME "key_name" +#define DELG_ENC_KEYS_PERM "permission" +#define DELG_ENC_KEYS_SIZE "size" +#define DELG_ENC_KEYS_DATA DELG_SEC_POL_AES_KEY_DATA +#define DELG_ENC_KEYS_LDADDR "load_addr" +#define DELG_ENC_KEYS_ALGO DELG_SEC_POL_AES_KEY_ENC_ALGO +#define DELG_ENC_KEYS_PERMSEC "secure" +#define DELG_ENC_KEYS_PERMNONSEC "nonsecure" +#define DELG_TRUST_NODE_PATH "/trust" +#define DELG_TRUST_NODE "trust" +#define DELG_SEC_POL_SEC_EXPORT_PATH "/security_policy/sec_restriction/sec_exports" +#define DELG_SEC_ALLOWED_EXPORTS "allowed_exports" +#define DELG_SEC_EXPORT_PATH "/trust/sec_exports" +#define DELG_EXP_ITEM_NAME "item_name" +#define DELG_EXP_ITEM_ID "item_sec_id" +#define DELG_EXP_ITEM_LENGTH "length" +#define DELG_EXP_ITEM_SALT "salt" +#define DELG_EXP_ITEM_ALGO DELG_SEC_POL_AES_KEY_ENC_ALGO + +static int sec_add_export_item_fdt( u8 * fdt, bcm_sec_export_item_t* item ); +static int bcm_sec_set_sotp_hw_state(u8* fit, int node, bcm_sec_cb_arg_t* sotp_st_arg); +static int bcm_sec_set_rng_hw_state(u8* fit, int node, bcm_sec_cb_arg_t* rng_st_arg); + +typedef struct sec_exp_item_otp_map { + char item_id[NODE_NAME_LEN]; + otp_map_feat_t otp_feat; +} sec_exp_item_otp_map_t; + +sec_exp_item_otp_map_t exp_item_otp_map[] = { + { "SEC_ITEM_KEY_DEV_SPECIFIC" , SOTP_MAP_KEY_DEV_SPECIFIC}, + { "SEC_ITEM_SER_NUM" , SOTP_MAP_SER_NUM}, + { "" , OTP_MAP_MAX} +}; + +void bcm_sec_clean_secmem(bcm_sec_t* sec) +{ + if ( sec->state & SEC_STATE_SECURE) { + memset((void*)bcm_secbt_args(), 0, sizeof(bcm_secbt_args_t)); + } +} + +static int sec_otp_ctrl(bcm_sec_t* sec, bcm_sec_ctrl_t ctrl, void* arg) +{ + switch(ctrl) { + case SEC_CTRL_SOTP_LOCK_ALL: + /* Lock access to all otp keycontent including register access to the controller for both secure/non-secure masters*/ + { + if (bcm_sotp_ctl_perm(OTP_HW_CMN_CTL_LOCK, + OTP_HW_CMN_CTL_LOCK_ALL, NULL) == OTP_MAP_CMN_ERR_UNSP) { + printf("WARNING: lock is not supported\n"); + } + } + break; + + case SEC_CTRL_SOTP_UNLOCK_SOTP_UNSEC_PROV: { + /* + * unlock non secure masters in provisioning mode --> readlock all nonzero rows + */ + if (bcm_sotp_ctl_perm(OTP_HW_CMN_CTL_UNLOCK, + OTP_HW_CMN_CTL_LOCK_NS_PROV, NULL) == OTP_MAP_CMN_ERR_UNSP) { + printf("WARNING: unlock is not supported\n"); + } + break; + } + break; + + case SEC_CTRL_SOTP_UNLOCK_SOTP_UNSEC: { + /* + * unlock non secure masters + */ + if (bcm_sotp_ctl_perm(OTP_HW_CMN_CTL_UNLOCK, + OTP_HW_CMN_CTL_LOCK_NS, NULL) == OTP_MAP_CMN_ERR_UNSP) { + printf("WARNING: unlock is not supported\n"); + } + break; + } + break; + case SEC_CTRL_SOTP_UNLOCK_SOTP_SEC: { + /* unlock secure masters*/ + if (bcm_sotp_ctl_perm(OTP_HW_CMN_CTL_UNLOCK, + OTP_HW_CMN_CTL_LOCK_S, NULL) == OTP_MAP_CMN_ERR_UNSP) { + printf("WARNING: unlock is not supported\n"); + } + } + break; + default: + break; + } + return 0; +} + +static int sec_rng_ctrl(bcm_sec_t* sec, bcm_sec_ctrl_t ctrl, void* arg) +{ + switch(ctrl) { + + case SEC_CTRL_RNG_LOCK_ALL: + rng_pac_lock(RNG_PERM_DISABLE_ALL); + break; + + case SEC_CTRL_RNG_UNLOCK_RNG_UNSEC: + rng_pac_lock(RNG_PERM_NSEC_ENABLE); + break; + case SEC_CTRL_RNG_UNLOCK_RNG_SEC: + rng_pac_lock(RNG_PERM_SEC_ENABLE); + break; + default: + break; + } + return 0; +} + +static int sec_add_fdt_node( u8 * fdt, char * path, char * nodename) +{ + int node = -1; + printf("INFO: Creating %s/%s\n", path, nodename); + /* + * Parameters: Node path, new node to be appended to the path. + */ + node = fdt_path_offset (fdt, path); + if (node < 0) { + /* + * Not found or something else bad happened. + */ + printf ("libfdt fdt_path_offset() returned %s\n", + fdt_strerror(node)); + return -1; + } + node = fdt_add_subnode(fdt, node, nodename); + if (node < 0) { + printf ("libfdt fdt_add_subnode(): %s\n", + fdt_strerror(node)); + return -1; + } + return node; +} + +static int sec_get_export_item( char * item_id, u8 ** data, u32 * size ) +{ + int i = 0; + int rc = -1; + + while( exp_item_otp_map[i].item_id ) { + if( (strncasecmp(exp_item_otp_map[i].item_id, item_id, NODE_NAME_LEN) == 0)) + { + printf("INFO: Found matching item for %s = %d\n", item_id, + exp_item_otp_map[i].otp_feat); + break; + } + i++; + } + if( exp_item_otp_map[i].otp_feat != OTP_MAP_MAX ) + rc = bcm_otp_read(exp_item_otp_map[i].otp_feat, (u32**)data, size); + + return rc; +} + +static int sec_salt_hash_item( u8 * item_src, int size_src, + u8* item_dest, int size_dst, + char * algo, int salt) +{ + char * temp_buff; + char * buf_ptr; + char * dst_ptr; + + /* Allocate temp mem of src size + size of 32-bit salt */ + temp_buff = malloc(size_src + sizeof(int)); + if (!temp_buff) { + printf("ERROR: Cannot allocate memory tempbuff\n"); + return -1; + } + + /* Init buffer pointers */ + buf_ptr = (char*)temp_buff; + dst_ptr = (char*)item_dest; + + //TODO: Support other algorithms rather than just sha256 + if( (size_dst % SHA256_SUM_LEN) || size_dst > 2*SHA256_SUM_LEN ) { + printf("ERROR: Unsupported final item size %d for hashing!\n", size_dst); + return -1; + } + + /* First pass, get first 256bits of obfuscated item data */ + if( salt ) { + memcpy(buf_ptr, &salt, sizeof(int)); + buf_ptr += sizeof(int); + } + memcpy(buf_ptr, item_src, size_src); + + //TODO: Handle other algorigthms, hardcoding to sha256 + bcm_sec_digest( temp_buff, size_src + sizeof(int), dst_ptr, "sha256"); + dst_ptr += SHA256_SUM_LEN; + + /* 2nd pass, get 2nd 256bits of obfuscated item data, reverse order of salting */ + if( size_dst > SHA256_SUM_LEN ) { + buf_ptr = temp_buff; + memcpy(buf_ptr, item_src, size_src); + buf_ptr += size_src; + if( salt ) { + memcpy(buf_ptr, &salt, sizeof(int)); + buf_ptr += sizeof(u32); + } + //TODO: Handle other algorigthms, hardcoding to sha256 + bcm_sec_digest(temp_buff, size_src + sizeof(int), dst_ptr, "sha256"); + } + free(temp_buff); + return 0; +} + +static int sec_add_export_item_fdt( u8 * fdt, bcm_sec_export_item_t* item ) +{ + int node = -1; + char node_name[NODE_NAME_LEN]; + int ret = -1; + u8 * temp_buff = NULL; + u8 * pdata = NULL; + u32 data_size = 0; + + /* Get the exported item */ + if( !item->value ) { + /* Get items */ + if( !item->id || !item->len ) { + printf("INFO: Skipping exported item %s %s %d\n", item->name, item->id, item->len); + ret = 0; + goto err; + } + + /* Get the item */ + ret = sec_get_export_item( item->id, &pdata, &data_size ); + if( ret ) { + printf("INFO: Cannot retrieve export item %s! Skipping!\n", item->name); + ret = 0; + goto err; + } + + /* Allocate memory for value */ + temp_buff = malloc(item->len); + if (!temp_buff) { + printf("ERROR: Cannot allocate memory for export item\n"); + ret = -1; + goto err; + } + memset(temp_buff,0,item->len); + + /* Salt and/or hash the item */ + if( item->algo ) { + ret = sec_salt_hash_item( (u8*) pdata, data_size, temp_buff, item->len, item->algo, item->salt ); + if( ret ) { + printf("INFO: Cannot salt/hash item %s! Skipping!\n", item->name); + ret = 0; + goto err; + } + } else { + memcpy(temp_buff, pdata, (data_size>item->len?item->len:data_size)); + } + + /* Set value */ + item->value = temp_buff; + } + + /* Create /trust node if it doesnt exits */ + node = fdt_path_offset (fdt, DELG_TRUST_NODE_PATH); + if(node < 0) { + node = sec_add_fdt_node( fdt, "/", DELG_TRUST_NODE); + if( node < 0) { + printf("ERROR: Could not create %s node!\n", DELG_TRUST_NODE_PATH); + ret = -1; + goto err; + } + } + + /* Add item node */ + snprintf(node_name,NODE_NAME_LEN,item->name); + node = sec_add_fdt_node( fdt, DELG_TRUST_NODE_PATH, node_name); + if( node < 0 ) { + printf("ERROR: Could not add %s node to %s!\n", + node_name, DELG_TRUST_NODE_PATH); + ret = -1; + goto err; + } + printf("INFO: Adding exported item node %s to dtb, size:%d\n", node_name, item->len); + + /* Add the item value */ + ret = fdt_setprop(fdt, node, "value", item->value, item->len); + if( ret ) { + printf("ERROR: Could net set value for %s/%s\n",DELG_TRUST_NODE_PATH,node_name); + goto err; + } + + /* Set the export flag */ + if( !ret && item->exp_flag ) { + ret = fdt_setprop(fdt, node, "export", "yes", strlen("yes")+1); + if( ret ) { + printf("ERROR: Could not set %s/%s/export\n",DELG_TRUST_NODE_PATH,node_name); + goto err; + } + } +err: + if( temp_buff ) + free(temp_buff); + + return ret; +} + +static int sec_add_decoded_key_fdt( u8 * fdt, char* key_name, u8 * key_val, int key_len) +{ + int node = -1; + char key_node_name[NODE_NAME_LEN]; + int ret = -1; + + node = fdt_path_offset (fdt, DELG_TRUST_NODE_PATH); + /* Create /trust node if it doesnt exits */ + if(node < 0) { + node = sec_add_fdt_node( fdt, "/", DELG_TRUST_NODE); + if( node < 0) { + printf("ERROR: Could not create %s node!\n", DELG_TRUST_NODE_PATH); + return -1; + } + } + + /* Add key node */ + snprintf(key_node_name,NODE_NAME_LEN,"key_%s", key_name); + node = sec_add_fdt_node( fdt, DELG_TRUST_NODE_PATH, key_node_name); + if( node < 0 ) { + printf("ERROR: Could not add %s node to %s!\n", + key_node_name, DELG_TRUST_NODE_PATH); + return -1; + } + + ret = fdt_setprop(fdt, node, "value", key_val, key_len); + if( ret ) + printf("ERROR: Could net set value for %s/%s\n",DELG_TRUST_NODE_PATH,key_node_name); + + return ret; +} + +static int sec_key_ctrl(bcm_sec_t *sec, bcm_sec_ctrl_t ctrl, void * arg) +{ + int rc = 0; + u8* ek_iv = NULL; + u8* key_data = NULL; + switch(ctrl) { + case SEC_CTRL_KEY_GET: + { + if ( sec->state & SEC_STATE_SECURE) { + bcm_sec_btrm_key_info(sec); + } else { + u8* env_key = bcm_util_env_var2bin("brcm_pub_testkey", RSA2048_BYTES); + /* We've got test key; try to authenticate with it + * Only works in non-secure mode + * */ + if (!env_key) { + debug("No Key in environment \n"); + } else { + memcpy(sec->key.rsa_pub, env_key, RSA2048_BYTES); + sec->key.pub = sec->key.rsa_pub; + } + } + } + break; + case SEC_CTRL_KEY_CHAIN_RSA: + if (sec->state&SEC_STATE_SECURE) { + bcm_sec_export_item_t item; + u32 lvl = 0; + item.salt = 0; + item.algo = NULL; + item.exp_flag = 1; + + bcm_sec_get_antirollback_lvl(&lvl); + lvl = cpu_to_be32(lvl); + item.name = "antirollback_lvl"; + item.len = sizeof(u32); + item.value = (u8*)&lvl; + rc = sec_add_export_item_fdt(arg, &item); + + if( rc == 0 ) { + item.name = "brcm_pub_key"; + item.len = RSA2048_BYTES; + item.value = sec->key.pub; + rc = sec_add_export_item_fdt(arg, &item); + if (!sec->key.pub || rc ) { + rc = -1; + printf("ERROR: unable to chain pub_key\n"); + } + } + } + break; + case SEC_CTRL_KEY_EXPORT_ITEM: + if (sec->state&SEC_STATE_SECURE) { + int i; + bcm_sec_key_arg_t* sec_arg = arg; + for (i = 0; ilen; i++) { + sec_add_export_item_fdt(sec_arg->arg, + &sec_arg->item[i]); + } + } + break; + + case SEC_CTRL_KEY_CHAIN_ENCKEY: + if (sec->state&SEC_STATE_SECURE) { + int i; + bcm_sec_key_arg_t* sec_arg = arg; + for (i = 0; ilen; i++) { + /* Decrypt encoded key */ + bcm_sec_get_active_aes_key(&ek_iv); + /* FIXME: Compare un-enc and enc sizes to figure out malloc length ( we are assuming enc > un-enc ) */ + key_data = malloc(sec_arg->enc_key[i].size_enc); + if (!key_data) { + printf("ERROR: Cannot allocate memory for decoded key size %d!\n", sec_arg->enc_key[i].size_enc); + return -1; + } + memcpy(key_data, sec_arg->enc_key[i].data, sec_arg->enc_key[i].size_enc); + bcm_sec_aes_cbc128((u8*)ek_iv, (u8*)ek_iv + AES128_KEY_LENGTH, key_data, sec_arg->enc_key[i].size_enc,0); + debug("KEYDECRYPT: encr:0x%08x key:0x%08x decr:0x%08x\n", *(u32*)sec_arg->enc_key[i].data, *(u32*)ek_iv, *(u32*)key_data); + + /* If no permissions are set, assume secure key */ + if( !sec_arg->enc_key[i].perm || + (strcasecmp(sec_arg->enc_key[i].perm, DELG_ENC_KEYS_PERMSEC) == 0) ) { + /* For secure keys see if there is a load address */ + if( sec_arg->enc_key[i].load_addr ) { + printf("INFO: copying key %s to %p\n", + sec_arg->enc_key[i].name,(void*)sec_arg->enc_key[i].load_addr); + printf("INFO: copying to load addr disabled for now!\n"); + //memcpy((void*)sec_arg->enc_key[i].load_addr, key_data, sec_arg->enc_key[i].size); + } else { + printf("INFO: No load address specified for secure key %s! Ignoring\n", sec_arg->enc_key[i].name); + } + } else { + /* For non-secure keys add them to dtb */ + sec_add_decoded_key_fdt(sec_arg->arg, + sec_arg->enc_key[i].name, + key_data, + sec_arg->enc_key[i].size); + } + free(key_data); + key_data = NULL; + } + } + break; + case SEC_CTRL_KEY_CHAIN_AES: + if (sec->state&SEC_STATE_SECURE) { + int i; + bcm_sec_export_item_t item; + bcm_sec_key_arg_t* sec_arg = arg; + item.salt = 0; + item.algo = NULL; + item.exp_flag = 0; + for (i = 0; i< sec_arg->len; i++) { + item.name = sec_arg->aes[i].id; + item.len = BCM_SECBT_AES_CBC128_EK_LEN*2; + item.value = sec_arg->aes[i].key; + if (sec_add_export_item_fdt(sec_arg->arg, &item)) { + rc = -1; + printf("ERROR: unable to chain aes_key\n"); + } + } + } + break; + case SEC_CTRL_KEY_CLEAN_SEC_MEM: + memset((void*)bcm_secbt_args(),0, sizeof(bcm_secbt_args_t)); + break; + case SEC_CTRL_KEY_CLEAN_ALL: + bcm_sec_clean_secmem(sec); + bcm_sec_clean_keys(sec); + break; + default: + break; + } + return rc; +} + +void bcm_sec_cb_init(bcm_sec_t* sec) +{ + sec->cb[SEC_CTRL_ARG_KEY].cb = sec_key_ctrl; + sec->cb[SEC_CTRL_ARG_SOTP].cb = sec_otp_ctrl; + sec->cb[SEC_CTRL_ARG_RNG].cb = sec_rng_ctrl; +} + +void bcm_sec_get_root_aes_key(u8** key) +{ + *key = bcm_sec()->key.aes_ek; +} + +u8* bcm_sec_get_root_pub_key(void) +{ + return bcm_sec()->key.rsa_pub; +} + +static void bcm_sec_set_delg_cfg( bcm_sec_delg_cfg * cfg ) +{ + bcm_sec()->delg_cfg_obj = cfg; +} + +bcm_sec_delg_cfg * bcm_sec_get_delg_cfg(void) +{ + return bcm_sec()->delg_cfg_obj; +} + +bcm_sec_export_item_t bcm_sec_exported_items[BCM_SEC_MAX_EXPORTED_ITEMS]; +static int bcm_sec_process_exports(u8 * fit_hdr, bcm_sec_cb_arg_t* key_args) +{ + u8 * fit_ptr = NULL; + bcm_sec_delg_cfg* delg_cfg = bcm_sec_get_delg_cfg(); + char * allowed_exports = NULL; + bcm_sec_key_arg_t * item_list; + int sec_export_offset = -1; + int exp_item_offset = -1; + int count = 0; + int ndepth = 0; + int * value = NULL; + + /* IF delegations are active then sec_exports in security + * policy control delegate requested exports */ + if( delg_cfg && delg_cfg->delg_id ) + { + fit_ptr = delg_cfg->sec_policy_fit; + sec_export_offset = fdt_path_offset (fit_ptr, DELG_SEC_POL_SEC_EXPORT_PATH); + if (sec_export_offset < 0) { + debug("INFO: Could not find %s in security policy\n", DELG_SEC_POL_SEC_EXPORT_PATH); + } else { + /* Check if sec_export_offset is disabled */ + value = (int*)fdt_getprop((void *)fit_ptr, sec_export_offset, DELG_SEC_POL_STATUS, NULL); + if (value && (strcasecmp((const char*)value, DELG_SEC_POL_STATUS_DISABLED) == 0)){ + printf("INFO: Found DISABLED %s in security policy\n", DELG_SEC_POL_SEC_EXPORT_PATH); + sec_export_offset = -1; + } else { + printf("INFO: Found %s in security policy\n", DELG_SEC_POL_SEC_EXPORT_PATH); + } + allowed_exports = (char*)fdt_getprop((void *)fit_ptr, sec_export_offset, DELG_SEC_ALLOWED_EXPORTS, NULL); + if( !allowed_exports || strlen((const char*)allowed_exports) == 0 ) { + /* No exports allowed */ + sec_export_offset = -1; + } + } + } + /* If no policy export node or if policy export is disabled, simply return */ + if( sec_export_offset < 0 ) { + return 0; + } + + /* Check delegate's requested exports */ + if( fit_hdr ) { + delg_cfg = NULL; + fit_ptr = fit_hdr; + sec_export_offset = fdt_path_offset (fit_ptr, DELG_SEC_EXPORT_PATH); + if (sec_export_offset < 0) { + debug("INFO: Could not find %s in fit\n", DELG_SEC_EXPORT_PATH); + return 0; + } else { + /* Check if sec_export_offset is disabled */ + value = (int*)fdt_getprop((void *)fit_ptr, sec_export_offset, DELG_SEC_POL_STATUS, NULL); + if (value && (strcasecmp((const char*)value, DELG_SEC_POL_STATUS_DISABLED) == 0)){ + printf("INFO: Found DISABLED %s in fit\n", DELG_SEC_EXPORT_PATH); + sec_export_offset = -1; + } else { + printf("INFO: Found %s in fit\n", DELG_SEC_EXPORT_PATH); + } + } + } + + if (sec_export_offset) { + /* Process all image subnodes */ + for (ndepth = 0, count = 0, + exp_item_offset = fdt_next_node(fit_hdr, sec_export_offset, &ndepth); + (exp_item_offset >= 0) && (ndepth > 0); + exp_item_offset = fdt_next_node(fit_hdr, exp_item_offset, &ndepth)) { + if (ndepth == 1) { + /* + * Direct child node of the sec_export parent node, + * i.e. item node. + */ + + /* Get key name */ + bcm_sec_exported_items[count].value = NULL; + bcm_sec_exported_items[count].name = (char*)fdt_getprop((void *)fit_hdr, exp_item_offset, DELG_EXP_ITEM_NAME, NULL); + bcm_sec_exported_items[count].id = (char*)fdt_getprop((void *)fit_hdr, exp_item_offset, DELG_EXP_ITEM_ID, NULL); + value = (int*)fdt_getprop((void *)fit_hdr, exp_item_offset, DELG_EXP_ITEM_LENGTH, NULL); + + if( !bcm_sec_exported_items[count].name || !bcm_sec_exported_items[count].id || !value ) + continue; + + printf("INFO: Found item:%s id:%s in fit\n", bcm_sec_exported_items[count].name, bcm_sec_exported_items[count].id); + /* Check if requested item is allowed to be exported */ + if( !strstr(allowed_exports, bcm_sec_exported_items[count].id)) + continue; + + bcm_sec_exported_items[count].len = be32_to_cpu(*value); + if( !bcm_sec_exported_items[count].len) + continue; + + /* Get optional 32-bit salt */ + value = (int*)fdt_getprop((void *)fit_hdr, exp_item_offset, DELG_EXP_ITEM_SALT, NULL); + if( value ) + bcm_sec_exported_items[count].salt = be32_to_cpu(*value); + + /* Get optional hashing algorithm */ + bcm_sec_exported_items[count].algo = (char*)fdt_getprop((void *)fit_hdr, exp_item_offset, DELG_EXP_ITEM_ALGO, NULL); + bcm_sec_exported_items[count].exp_flag = 1; + + count++; + + if( count >= BCM_SEC_MAX_EXPORTED_ITEMS ) { + printf("INFO: Max secure export item limit of %d items reached! Ignoring other items!\n", BCM_SEC_MAX_EXPORTED_ITEMS); + break; + } + } + } + } + + if( count ) { + item_list = malloc(sizeof(bcm_sec_key_arg_t)); + if (!item_list) { + printf("ERROR: Cannot allocate memory for exported item list!\n"); + return -1; + } + item_list->len = count; + item_list->item = &bcm_sec_exported_items[0]; + key_args->arg[2].ctrl = SEC_CTRL_KEY_EXPORT_ITEM; + key_args->arg[2].ctrl_arg = item_list; + } + return 0; +} + +static int bcm_sec_get_antirollback_node( u8 * fit, char * path, int * req_antirollback, int * antirollback_limit) +{ + /* Get key-owners antirollback update node from policy */ + int * value = NULL; + int nodeoffset = fdt_path_offset((void *)fit, path); + if( nodeoffset < 0 ) { + printf("INFO: %s node NOT found!\n", path); + } else { + /* Check if node is disabled */ + value = (int*)fdt_getprop((void *)fit, nodeoffset, DELG_SEC_POL_STATUS, NULL); + if (value && (strcasecmp((const char*)value, DELG_SEC_POL_STATUS_DISABLED) == 0)) { + nodeoffset = -1; + printf("INFO: Disabled %s node found!\n", path); + } else { + printf("INFO: %s node found !\n", path); + /* retrieve anti=rollback settings */ + value = (int*)fdt_getprop((void *)fit, nodeoffset, DELG_SEC_POL_NEW_ANTIROLLBCK, NULL); + if (value && req_antirollback ) + *req_antirollback = be32_to_cpu(*value); + + value = (int*)fdt_getprop((void *)fit, nodeoffset, DELG_SEC_POL_ANTIROLLBCK_LIM, NULL); + if (value && antirollback_limit ) + *antirollback_limit = be32_to_cpu(*value); + } + } + return nodeoffset; +} + +static int bcm_sec_process_antirollback( u8 * fit_hdr) +{ + /* Process rollback update node for both key-owner and delegate. + * key-owner's rollback update node can limit the rollback levels that + * can be updated by delegate */ + u32 pol_req_antirollback = 0; + u32 pol_antirollback_limit = 0; + u32 delg_req_antirollback = 0; + u32 commit_antirollback = 0; + u32 current_antirollback = 0; + u32 delg_maximum_antirollback = 0; + int nodeoffset_pol = -1; + int nodeoffset_fit = -1; + bcm_sec_delg_cfg * delg_cfg = NULL; + int ret = -1; + + /* Get current anti-rollback level */ + bcm_sec_get_antirollback_lvl(¤t_antirollback); + + /* Check if delegations are active, get key-owners antirollback settings */ + delg_cfg = bcm_sec_get_delg_cfg(); + if( delg_cfg && delg_cfg->delg_id ) { + /* Get maximum rollback valid for this delegation */ + delg_maximum_antirollback = delg_cfg->max_antirollback; + + /* Get key-owners antirollback update node from policy */ + nodeoffset_pol = bcm_sec_get_antirollback_node((void *)delg_cfg->sec_policy_fit, DELG_SEC_POL_ANTI_ROLLBACK_PATH, + (int*)&pol_req_antirollback, (int*)&pol_antirollback_limit); + } + + /* Get delegates antirollback update node from main FIT hdr */ + if( fit_hdr ) { + nodeoffset_pol = bcm_sec_get_antirollback_node((void *)fit_hdr, DELG_ANTI_ROLLBACK_PATH, + (int*)&delg_req_antirollback, NULL); + } + + /* Early return if no node found */ + if ((nodeoffset_pol < 0) && (nodeoffset_fit < 0)) { + return 0; + } + + printf("INFO: ko_rb:%d kp_lim:%d delg_rb:%d max:%d curr:%d\n", + pol_req_antirollback, pol_antirollback_limit, delg_req_antirollback, + delg_maximum_antirollback, current_antirollback); + + /* Verify key-owners requested antirollback */ + if( pol_req_antirollback ) { + if( pol_req_antirollback > delg_maximum_antirollback ) { + printf("ERROR: Invalid security policy requested antirollback:%d, Max:%d\n", + pol_req_antirollback, delg_maximum_antirollback); + return ret; + } + } + + /* Ensure that key-owner's anti-rollback limit for delegate's falls within the max allowable */ + if( !pol_antirollback_limit || (pol_antirollback_limit > delg_maximum_antirollback) ) + pol_antirollback_limit = delg_maximum_antirollback; + + + /* Verify delegates requested antirollback */ + if( delg_req_antirollback && pol_antirollback_limit ) { + if( delg_req_antirollback > pol_antirollback_limit) { + printf("INFO: Invalid FIT requested antirollback:%d, Max:%d\n", + delg_req_antirollback, pol_antirollback_limit); + delg_req_antirollback = 0; + } + } + + /* Figure out the antirollback level to commit */ + if (delg_req_antirollback > pol_req_antirollback) + commit_antirollback = delg_req_antirollback; + else + commit_antirollback = pol_req_antirollback; + + /* Do boundary checks */ + if( !commit_antirollback || (commit_antirollback <= current_antirollback) ) { + printf("INFO: Not committing requested anti_rollback level %d! Min:%d\n", + commit_antirollback,current_antirollback); + ret = 0; + } else { + /* commit the antirollback */ + printf("INFO: Committing antirollback level:%d\n", commit_antirollback); + ret = bcm_sec_set_antirollback_lvl(commit_antirollback); + } + + return ret; +} + +static int bcm_sec_process_hw_state(u8 * fit_hdr, bcm_sec_cb_arg_t* sotp_st_arg, bcm_sec_cb_arg_t* rng_st_arg) +{ + int * value = 0; + u8 * fit_ptr = NULL; + bcm_sec_state_t st = bcm_sec_state(); + bcm_sec_delg_cfg* delg_cfg = bcm_sec_get_delg_cfg(); + int node = -1; + + /* IF delegations are active then hw_state in security + * policy overrides delegate specified state */ + if( delg_cfg && delg_cfg->delg_id ) + { + fit_ptr = delg_cfg->sec_policy_fit; + node = fdt_path_offset (fit_ptr, DELG_SEC_POL_HW_STATE_PATH); + if (node < 0) { + debug("INFO: Could not find %s node in security policy\n", DELG_SEC_POL_HW_STATE_PATH); + } else { + /* Check if node is disabled */ + value = (int*)fdt_getprop((void *)fit_ptr, node, DELG_SEC_POL_STATUS, NULL); + if (value && (strcasecmp((const char*)value, DELG_SEC_POL_STATUS_DISABLED) == 0)){ + printf("INFO: Found DISABLED %s node in security policy\n", DELG_SEC_POL_HW_STATE_PATH); + node = -1; + } else { + printf("INFO: Found %s node in security policy\n", DELG_SEC_POL_HW_STATE_PATH); + } + } + } + + /* Check delegate's specified hw_state */ + if( (node < 0) && fit_hdr ) { + delg_cfg = NULL; + fit_ptr = fit_hdr; + node = fdt_path_offset (fit_ptr, DELG_HW_STATE_PATH); + if (node < 0) { + debug("INFO: Could not find %s node in fit\n", DELG_HW_STATE_PATH); + node = -1; + } else { + /* Check if node is disabled */ + value = (int*)fdt_getprop((void *)fit_ptr, node, DELG_SEC_POL_STATUS, NULL); + if (value && (strcasecmp((const char*)value, DELG_SEC_POL_STATUS_DISABLED) == 0)){ + printf("INFO: Found DISABLED %s node in fit\n", DELG_HW_STATE_PATH); + node = -1; + } else { + printf("INFO: Found %s node in fit\n", DELG_HW_STATE_PATH); + } + } + } + + /* Set the default hw state */ + /* If in secure mode and sotp-lock not specified --> LOCK by default + * If in NON-secure mode and sotp-lock not specified --> UNLOCK by default */ + /* If in secure mode and rng-lock not specified --> LOCK by default + * If in NON-secure mode and rng-lock not specified --> UNLOCK by default */ + if(st == SEC_STATE_SECURE) { + sotp_st_arg->arg[0].ctrl = SEC_CTRL_SOTP_LOCK_ALL; + rng_st_arg->arg[0].ctrl = SEC_CTRL_RNG_LOCK_ALL; + } else { + sotp_st_arg->arg[0].ctrl = SEC_CTRL_SOTP_UNLOCK_SOTP_UNSEC; + rng_st_arg->arg[0].ctrl = SEC_CTRL_RNG_UNLOCK_RNG_UNSEC; + } + + if( node >= 0 ) { + /* set hw state from node */ + bcm_sec_set_sotp_hw_state(fit_ptr, node, sotp_st_arg); + bcm_sec_set_rng_hw_state(fit_ptr, node, rng_st_arg); + } + return 0; +} + +static int bcm_sec_delg_pre_process_restrictions(u8 * policy_fdt, u8 * fit_hdr) +{ + /* TODO: Pre Process s/w restrictions here */ + return 0; +} + +bcm_sec_enc_key_arg_t bcm_sec_encoded_keys[BCM_SEC_MAX_ENCODED_KEYS]; + +static int bcm_sec_process_encoded_keys(u8 * fit_hdr, bcm_sec_cb_arg_t* key_args) +{ + /* TODO: Encoded keys could be present in security node or outside security node. + * Keys inside security node will be encrypted via the root aes key. Keys outside + * the security node will be encrypted via the active (delegated) aes key. + * These keys will have security permissions. These keys need to be added to the + * key_chain so that they can be exported to the next level of software in + * spl_perform_fixups */ + int enc_keys_offset = -1; + int key_offset = -1; + int count = 0; + int ndepth = 0; + int * value = NULL; + bcm_sec_key_arg_t *enc_keys; + bcm_sec_delg_cfg* delg_cfg = bcm_sec_get_delg_cfg(); + + /* Process key-owners encoded keys in security node if present + * These keys are encrypted using ROE */ + if( delg_cfg && delg_cfg->delg_id ) + { + /* TODO: Handle key-owners encoded keys */ + } + + /* Process delegates encoded keys in FIT header + * These keys are encrypted using the active AES key */ + enc_keys_offset = fdt_path_offset (fit_hdr, DELG_ENC_KEYS_PATH); + if (enc_keys_offset < 0) { + debug("INFO: Could not find %s node in fit\n", DELG_ENC_KEYS_PATH); + return 0; + } else { + /* Process all image subnodes */ + for (ndepth = 0, count = 0, + key_offset = fdt_next_node(fit_hdr, enc_keys_offset, &ndepth); + (key_offset >= 0) && (ndepth > 0); + key_offset = fdt_next_node(fit_hdr, key_offset, &ndepth)) { + if (ndepth == 1) { + /* + * Direct child node of the encoded_keys parent node, + * i.e. key node. + */ + + /* Get key name */ + bcm_sec_encoded_keys[count].name = (char*)fdt_getprop((void *)fit_hdr, key_offset, DELG_ENC_KEYS_NAME, NULL); + if (bcm_sec_encoded_keys[count].name == NULL) + { + printf("INFO: Can't find %s parameter in key node under %s \n", DELG_ENC_KEYS_NAME, + DELG_ENC_KEYS_PATH); + continue; + } + printf("INFO: Found key %s in under %s\n", bcm_sec_encoded_keys[count].name, DELG_ENC_KEYS_PATH); + + /* Get unencrypted size */ + value = (int*)fdt_getprop((void *)fit_hdr, key_offset, DELG_ENC_KEYS_SIZE, NULL); + if( value ) { + bcm_sec_encoded_keys[count].size = be32_to_cpu(*value); + } else { + printf("INFO: Unencrypted size for key %s is not specified! Skipping Key!\n", + bcm_sec_encoded_keys[count].name); + continue; + } + + /* Get keydata */ + value = (int*)fdt_getprop((void *)fit_hdr, key_offset, DELG_ENC_KEYS_DATA, (int*)&bcm_sec_encoded_keys[count].size_enc); + if( value && bcm_sec_encoded_keys[count].size_enc ) { + bcm_sec_encoded_keys[count].data = (u8*)value; + } else { + printf("INFO: Key data for key %s not found! Skipping Key!\n", + bcm_sec_encoded_keys[count].name); + continue; + } + + /* Get load address (optional) */ + value = (int*)fdt_getprop((void *)fit_hdr, key_offset, DELG_ENC_KEYS_LDADDR, NULL); + if( value ) + bcm_sec_encoded_keys[count].load_addr = be64_to_cpu(*value); + + /* Get load permissions and enc algorithm (optional) */ + bcm_sec_encoded_keys[count].perm = (char*)fdt_getprop((void *)fit_hdr, key_offset, DELG_ENC_KEYS_PERM, NULL); + bcm_sec_encoded_keys[count].algo = (char*)fdt_getprop((void *)fit_hdr, key_offset, DELG_ENC_KEYS_ALGO, NULL); + count++; + + if( count >= BCM_SEC_MAX_ENCODED_KEYS ) { + printf("INFO: Max encoded key limit of %d keys reached! Ignoring other keys!\n", BCM_SEC_MAX_ENCODED_KEYS); + break; + } + } + } + } + + /* Add detected keys */ + if( count ) { + enc_keys = malloc(sizeof(bcm_sec_key_arg_t)); + if (!enc_keys) { + printf("ERROR: Cannot allocate memory for encoded key ring!\n"); + return -1; + } + enc_keys->len = count; + enc_keys->enc_key = &bcm_sec_encoded_keys[0]; + key_args->arg[1].ctrl = SEC_CTRL_KEY_CHAIN_ENCKEY; + key_args->arg[1].ctrl_arg = enc_keys; + } + return 0; +} + +static int bcm_sec_delg_process_policy(u8 * policy_fdt, u8 * fit_hdr ) +{ + u32 * value; + u32 pol_delg_id; + u32 min_tpl_version; + char * key_enc_alg; + u8 * key_data; + int key_len; + int nodeoffset = 0; + bcm_sec_delg_cfg * delg_cfg = NULL; + int ret = -1; + + /* Get delegation config */ + delg_cfg = bcm_sec_get_delg_cfg(); + if( !delg_cfg ) { + printf("ERROR: Delegation configuration not found!\n"); + return ret; + } + + /* Get security policy node */ + nodeoffset = fdt_path_offset((void *)policy_fdt, DELG_SEC_POL_PATH); + if( nodeoffset < 0 ) { + printf("ERROR: %s node not found in security policy!\n", DELG_SEC_POL_PATH); + return ret; + } + + /* Get delegate id */ + value = (u32*)fdt_getprop((void *)policy_fdt, nodeoffset, DELG_SEC_POL_DELGID, NULL); + if (value == NULL) + { + printf("Can't find %s parameter in %s\n", DELG_SEC_POL_DELGID, + DELG_SEC_POL_PATH); + return ret; + } + pol_delg_id = be32_to_cpu(*value); + if( pol_delg_id != delg_cfg->delg_id ) { + printf("ERROR: delegate ID mismatch! %d != %d !\n", delg_cfg->delg_id, pol_delg_id); + return ret; + } + + /* get min tpl version */ + value = (u32*)fdt_getprop((void *)policy_fdt, nodeoffset, DELG_SEC_POL_MINTPLV, NULL); + if (value == NULL) + { + printf("Can't find %s parameter in %s\n", DELG_SEC_POL_MINTPLV, + DELG_SEC_POL_PATH); + return 0; + } + + //TODO: Compare TPL version to something + min_tpl_version = be32_to_cpu(*value); + + + /* 1 - Get delegated AES key (MANDATORY) */ + nodeoffset = fdt_path_offset((void *)policy_fdt, DELG_SEC_POL_AES_KEY_PATH); + if( nodeoffset < 0 ) { + printf("ERROR: %s node not found in bundle!\n", DELG_SEC_POL_AES_KEY_PATH); + return ret; + } + + /* Get encryption algorithm */ + value = (u32*)fdt_getprop((void *)policy_fdt, nodeoffset, DELG_SEC_POL_AES_KEY_ENC_ALGO, NULL); + if (value == NULL) + { + printf("Can't find %s parameter in %s\n", DELG_SEC_POL_AES_KEY_ENC_ALGO, + DELG_SEC_POL_AES_KEY_PATH); + return ret; + } + + // TODO: Support other encryption algorithms + key_enc_alg = (char*)value; + + /* Get key data */ + value = (u32*)fdt_getprop((void *)policy_fdt, nodeoffset, DELG_SEC_POL_AES_KEY_DATA, &key_len); + if (value == NULL) + { + printf("Can't find %s parameter in %s\n", DELG_SEC_POL_AES_KEY_DATA, + DELG_SEC_POL_AES_KEY_PATH); + return ret; + } + printf("Found potential Encrypted AES Key: KAES:0x%08x len:%d\n", + *(u32*)value, key_len); + + /* Decypt delegates aes key using ROE */ + u8* ek_iv = NULL; + bcm_sec_get_root_aes_key(&ek_iv); + key_data = malloc(key_len); + if (!key_data) { + printf("ERROR: Cannot allocate memory for decoded delegated key!\n"); + return -1; + } + memcpy(key_data, (u8*)value, key_len); + debug("Decrypting del_enc_key: ROE:0x%08x, KAES:0x%08x len:%d\n", + *(u32*)ek_iv, *(u32*)value, key_len); + bcm_sec_aes_cbc128((u8*)ek_iv, (u8*)ek_iv + AES128_KEY_LENGTH, key_data, key_len,0); + + /* Copy key to our delg config */ + memcpy(delg_cfg->aes_ek, (void*)key_data, + BCM_SECBT_AES_CBC128_EK_LEN); + memcpy(delg_cfg->aes_ek + BCM_SECBT_AES_CBC128_EK_LEN, + (void*)(key_data+BCM_SECBT_AES_CBC128_EK_LEN), BCM_SECBT_AES_CBC128_EK_LEN); + free(key_data); + key_data = NULL; + + debug("Decrypted AES_EK: 0x%08x AES_IV: 0x%08x\n", + *(u32*)delg_cfg->aes_ek, + *(u32*)(delg_cfg->aes_ek + BCM_SECBT_AES_CBC128_EK_LEN)); + + bcm_sec_set_active_aes_key(delg_cfg->aes_ek); + + /* Save our pointer to our policy for later use */ + delg_cfg->sec_policy_fit = policy_fdt; + + /* TODO:Handle sec restrictions */ + bcm_sec_delg_pre_process_restrictions(policy_fdt, fit_hdr); + + ret = 0; + + return ret; + +} + +int bcm_sec_delg_process_sec_node(u8 * fit) +{ + size_t size = 0; + int nodeoffset = 0; + ulong * sec_policy_ptr = NULL; + u8 * sig_sec_fit_delg = NULL; + int sig_len = 0; + int ret = -1; + u8* krot_pub = bcm_sec_get_root_pub_key(); + struct image_sign_info im; + + /* Setup signing structures */ + im.checksum = image_get_checksum_algo("sha256,"); + if (!im.checksum) { + printf("ERROR: couldn't get checksum algo\n"); + return ret; + } + + nodeoffset = fdt_path_offset((void *)fit, DELG_SEC_FIT_NODE_PATH); + if( nodeoffset < 0 ) { + printf("ERROR: %s node not found in FIT!\n", DELG_SEC_FIT_NODE_PATH); + return ret; + } + + /* Get security policy dtb */ + fit_image_get_data_and_size((void *)fit, nodeoffset, (const void**)&sec_policy_ptr, &size); + if( !size ) { + printf("ERROR: sec policy data not found!\n"); + return ret; + } + + /* Get signature */ + sig_sec_fit_delg = (u8*)fdt_getprop( (void *)fit, nodeoffset, DELG_SEC_FIT_NODE_SIG, &sig_len); + if( !sig_sec_fit_delg) { + printf("ERROR: %s not found in %s !\n", DELG_SEC_FIT_NODE_SIG, + DELG_SEC_FIT_NODE_PATH); + return ret; + } + + /* Verify signature */ + printf("Found potential Security Node: Policy:0x%08x Sig:0x%08x Size:%d\n", + *(u32*)sec_policy_ptr, *(u32*)sig_sec_fit_delg, (u32)size); + + ret = bcm_sec_rsa_verify((u8*)sec_policy_ptr, + size, + sig_sec_fit_delg, + RSA2048_BYTES, krot_pub, &im ); + + if( ret == 0 ) { + printf("Security Node Authentication Successfull!\n"); + /* Process policy */ + ret = bcm_sec_delg_process_policy((u8*)sec_policy_ptr, fit); + } else { + printf("ERROR: Security Node Authentication FAILS!"); + ret = -1; + } + return ret; + +} + +int bcm_sec_delg_process_sdr( u8 * psdr, u8 * hdr_end, u32 * sdr_plus_sig_size) +{ + int rc = -1; + u32 lvl = 0; + u32 delegateId = 0; + u32 max_anti_rollback_lvl = 0; + u8* sdr_start = psdr; + unsigned long long sdr_size = 0; + u8* sig_sec_rec_delg = NULL; + u8* krsa_delg_pub = NULL; + u8* krot_pub = bcm_sec_get_root_pub_key(); + struct image_sign_info im; + bcm_sec_delg_cfg * delg_cfg = NULL; + + /* Setup signing structures */ + im.checksum = image_get_checksum_algo("sha256,"); + if (!im.checksum) { + printf("ERROR: couldn't get checksum algo\n"); + goto err; + } + + /* parse sdr fields */ + psdr += sizeof(u32); + delegateId = *(u32*)psdr; + psdr += sizeof(u32); + max_anti_rollback_lvl = *(u32*)psdr; + psdr += sizeof(u32); + krsa_delg_pub = psdr; + psdr += RSA2048_BYTES; + sig_sec_rec_delg = psdr; + sdr_size = (unsigned long long )(psdr - sdr_start); // Check this + *sdr_plus_sig_size = sdr_size + RSA2048_BYTES; + + printf("Found potential SDR: delg_id:%d maxrollbck:%d size:%llu\n", + delegateId, max_anti_rollback_lvl, sdr_size); + + printf("Found potential SDR: PubKey:0x%08x Sig:0x%08x\n", + *(u32*)krsa_delg_pub, *(u32*)sig_sec_rec_delg); + + /* Check if SDR + signature have crossed our search boundary */ + if ( ((u8*)psdr + *sdr_plus_sig_size-1) > hdr_end ) { + printf("ERROR: Corrupted SDR, search exceeds boundary 0x%p > 0x%p\n", + (u8*)psdr + RSA2048_BYTES-1, hdr_end); + goto err; + } + + /* Check if delegateID is valid */ + if( !delegateId ) { + printf("ERROR: Invalid Delegate ID %d\n", delegateId); + goto err; + } + + /* Check if anti-rollback is valid */ + rc = bcm_sec_get_antirollback_lvl(&lvl); + if( (lvl > max_anti_rollback_lvl) || rc ) { + printf("ERROR: Expired delegated credentials detected curr(%d) > max(%d) rc:%d\n", + lvl, max_anti_rollback_lvl, rc); + rc = -1; + goto err; + } + + + /* Authenticate sdr signature */ + rc = bcm_sec_rsa_verify(sdr_start, + sdr_size, + sig_sec_rec_delg, + RSA2048_BYTES, krot_pub, &im ); + if( rc == 0 ) { + printf("SDR Authentication Successfull!\n"); + /* Commit all fields to our structures */ + delg_cfg = malloc(sizeof(bcm_sec_delg_cfg)); //TODO: Where to free this? + if (!delg_cfg) { + printf("ERROR: Cannot allocate memory for delegation config!\n"); + rc = -1; + goto err; + } + delg_cfg->delg_id = delegateId; + delg_cfg->max_antirollback = max_anti_rollback_lvl; + memcpy(delg_cfg->rsa_pub, krsa_delg_pub, BCM_SECBT_RSA2048_MOD_LEN); + + /* Commit delegation config */ + bcm_sec_set_delg_cfg( delg_cfg ); + + /* Set active public key */ + bcm_sec_set_active_pub_key( (u8*)delg_cfg->rsa_pub ); + + } else { + printf("ERROR: SDR Authentication FAILS!\n"); + rc = -1; + } + +err: + return rc; +} + +/* returns heap allocated key*/ +static int fdt_key_decrypt(void* fit, int node, const char* prop, + const u8* ek_iv, u8* aes) +{ + int rc = -1, len = 0; + assert(BCM_SECBT_AES_CBC128_EK_LEN == AES128_KEY_LENGTH); + const u8* key = fdt_getprop(fit, node, prop, &len); + if (!key || ((len-1)%(AES128_KEY_LENGTH*2))) { + if (key) { + printf("Error: Invalid size for %s must be at least %d including iv \n",prop ,AES128_KEY_LENGTH*2); + } + goto err; + } + if (bcm_util_hex2u32((const char*)key, aes) < 0) { + goto err; + } + bcm_sec_aes_cbc128((u8*)ek_iv, (u8*)ek_iv + AES128_KEY_LENGTH, aes, (len-1)/2, 0); + rc = 0; +err: + return rc; +} + +static int bcm_sec_fit_key_chain(void* fit, int node, bcm_sec_key_arg_t** aes ) +{ + int rc = -1, len = 0; + u8* ek_iv = NULL; + bcm_sec_key_aes_arg_t* _aes = NULL; + bcm_sec_key_arg_t* aes_arg = NULL; + char *_keys_prop[2] = {FIT_AES1, FIT_AES2}; + bcm_sec_get_active_aes_key(&ek_iv); + if (!ek_iv) { + goto err; + } + aes_arg = malloc(sizeof(bcm_sec_key_arg_t)); + _aes = malloc(sizeof(bcm_sec_key_aes_arg_t)*2); + if (!aes_arg || !_aes) { + goto err; + } + memset(aes_arg, 0, sizeof(bcm_sec_key_arg_t)); + memset(_aes, 0, sizeof(bcm_sec_key_arg_t)*2); + aes_arg->aes = _aes; + + if (fdt_key_decrypt(fit, node, _keys_prop[0], ek_iv, _aes[0].key)) { + free(_aes); + free(aes_arg); + goto err; + } + strcpy(_aes[0].id, _keys_prop[0]); + aes_arg->len++; + if (!fdt_key_decrypt(fit, node, _keys_prop[1], _aes[0].key, _aes[1].key)) { + if (fdt_getprop(fit, node, "dont-flush-aes1", &len)) { + /* will chain aes1-key along with dev key */ + strcpy(_aes[1].id, _keys_prop[1]); + aes_arg->len++; + } else { + strcpy(_aes[0].id, _keys_prop[1]); + memcpy(_aes[0].key, _aes[1].key, AES128_KEY_LENGTH*2); + memset(_aes[1].key, AES128_KEY_LENGTH*2, 0); + } + } + *aes = aes_arg; + rc = 0; +err: + return rc; +} + +static int bcm_sec_set_sotp_hw_state(u8* fit, int node, bcm_sec_cb_arg_t* sotp_st_arg) { + + int * value = NULL; + int len; + + /* Set sotp hardware state */ + value = (int*)fdt_getprop(fit, node, "sotp-lock", &len); + if( value ) { + if (strncmp((const char*)value, "all", 3) == 0) { + /* Lock access for all masters */ + sotp_st_arg->arg[0].ctrl = SEC_CTRL_SOTP_LOCK_ALL; + } else if( strncmp((const char*)value, "none", 4) == 0 ) { + /* Lock access for none ( unlocked for all masters ) */ + sotp_st_arg->arg[0].ctrl = SEC_CTRL_SOTP_UNLOCK_SOTP_UNSEC; + } else if( strncmp((const char*)value, "prov", 4) == 0 ) { + /* Provisioning mode, Lock access for none, lock non-zero rows */ + sotp_st_arg->arg[0].ctrl = SEC_CTRL_SOTP_UNLOCK_SOTP_UNSEC_PROV; + } else { + /* Lock access for non secure masters only ( unlocked for secure masters only )*/ + sotp_st_arg->arg[0].ctrl = SEC_CTRL_SOTP_UNLOCK_SOTP_SEC; + } + } + return 0; +} + +static int bcm_sec_set_rng_hw_state(u8* fit, int node, bcm_sec_cb_arg_t* rng_st_arg) { + + int * value = NULL; + int len; + + /* Set rng hardware state */ + value = (int*)fdt_getprop(fit, node, "rng-lock", &len); + if( value ) { + if(strncmp((const char*)value, "all", 3) == 0) { + /* Lock access for all masters */ + rng_st_arg->arg[0].ctrl = SEC_CTRL_RNG_LOCK_ALL; + } else if( strncmp((const char*)value, "none", 4) == 0 ) { + /* Lock access for none ( unlocked for all masters ) */ + rng_st_arg->arg[0].ctrl = SEC_CTRL_RNG_UNLOCK_RNG_UNSEC; + } else { + /* Lock access for non secure masters only ( unlocked for secure masters only )*/ + rng_st_arg->arg[0].ctrl = SEC_CTRL_RNG_UNLOCK_RNG_SEC; + } + } + return 0; +} + +int bcm_sec_fit(void* fit) +{ + bcm_sec_key_arg_t *aes; + int node = -1; +/*trust/dont-lock-sotp ==> otherwise, lock SOTP before passing control + +trust/dont-flush-aes1 ==> otherwise, wipe out the aes key before passing control +trust/aes1-key = hex-string ==> use original AES key to decrypt this string, wipe the original key,*/ + bcm_sec_cb_arg_t cb_args[SEC_CTRL_ARG_MAX] = {0}; + bcm_sec_cb_arg_t* karg = &cb_args[SEC_CTRL_ARG_KEY]; + bcm_sec_cb_arg_t* sarg = &cb_args[SEC_CTRL_ARG_SOTP]; + bcm_sec_cb_arg_t* rarg = &cb_args[SEC_CTRL_ARG_RNG]; + bcm_sec_delg_cfg* delg_cfg = bcm_sec_get_delg_cfg(); + + /* Chain keys if required */ + /* when enumerated later 0 - will be run first + * 1- second and so on.for both s_ctrl and k_ctrl + */ + karg->arg[0].ctrl = SEC_CTRL_KEY_CHAIN_RSA; + karg->arg[3].ctrl = SEC_CTRL_KEY_CLEAN_ALL; + + if( delg_cfg && delg_cfg->delg_id ) { + /* If delegated credentials are in play then do not pass aes1/aes2 + * and instead process encoded keys in FIT and security node */ + bcm_sec_process_encoded_keys(fit, karg); + } else { + node = fdt_path_offset (fit, "/trust"); + if (node < 0) { + /* No trust node */ + goto done; + } + /* aes1 aka aes1 + * aes2 gets decrypted by aes1, aes1 gets decrypted by ROE aka truste bootrom key + * */ + if (!bcm_sec_fit_key_chain(fit, node, &aes)) { + karg->arg[1].ctrl = SEC_CTRL_KEY_CHAIN_AES; + karg->arg[1].ctrl_arg = aes; + } + } + + /* Configure anti-rollback levels */ + bcm_sec_process_antirollback(fit); + + /* Export secure items */ + bcm_sec_process_exports(fit, karg); + +done: + /* Set hw states */ + bcm_sec_process_hw_state(fit, sarg, rarg); + + bcm_sec_do(SEC_SET_SCHED, cb_args); + return 0; + +} diff --git a/board/broadcom/bcmbca/board_secure_utils.c b/board/broadcom/bcmbca/board_secure_utils.c new file mode 100644 index 0000000000..bfef25f74f --- /dev/null +++ b/board/broadcom/bcmbca/board_secure_utils.c @@ -0,0 +1,299 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2020 Broadcom Ltd. + */ +#include +#include +#include +#include +#include +#include +#include +#include "tpl_params.h" +#include "spl_env.h" +#include "bcm_secure.h" +#include "u-boot/rsa.h" +#include "u-boot/rsa-mod-exp.h" +#include +#include +#include +#include "mini-gmp/mini-gmp.h" +#include "mini-gmp/mini-mpq.h" + +#ifdef BCM_SEC_KEY_OBFUSCATION + +static int sec_gen_key(u8* key) +{ + // setup bootlut + // A sketch + int i, rc = -1; + /* secure mailbox */ + volatile u32 *rng = 0xff800b00; + /* enable an RNG default was 0x11 <<*/ + rng[(0x80>>2)] = (0x1|(0x11<<13)); + /* if count not 0 and not empty */ + while((rng[(0xa4>>2)]>>31) > 0 || rng[(0xa4>>2)] < 8 ); + if ((rng[(0xa4>>2)]&0xff)) { + u32 key[8]; + /* Collect words*/ + for (i = 0; i < 8; i++ ) { + key[i] = rng[(0xa0>>2)]; + } + rc = 0; + } + return rc; +} + +int sec_mbox_set(u8* key) +{ + // setup bootlut + // A sketch + int i; + /* secure mailbox */ + volatile u32 *bootlut = 0xffff0000; + /* Collect words*/ + for (i = 0; i < 8; i++ ) { + bootlut[i] = key[i]; + } + bootlut[(0x40>>2)] = 0xdd; +} + + +int sec_mbox_get(u8* key) +{ + // setup bootlut + // A sketch + int i; + /* secure mailbox */ + volatile u32 *bootlut = 0xffff0000; + /* Collect words*/ + for (i = 0; i < 8; i++ ) { + key[i] = bootlut[i]; + } +} +u8* obfuscate(const u8* s, + u32 len) +{ + u8 ses_key[AES128_KEY_LENGTH*2]; + /*Get aes */ + /* After this line only secure master could write to the mailbox register*/ + u8* dat = malloc(len); + if (dat && !sec_gen_key(ses_key)) { + memcpy(dat, s, len); + bcm_sec_aes_cbc128(ses_key, ses_key+AES128_KEY_LENGTH, dat, len, 1); + sec_set_mbox(ses_key); + return dat; + } + if (dat) { + free(dat); + } + return NULL; +} + +u8* deobfuscate(u8* s, + u32 len) +{ + u8 ses_key[AES128_KEY_LENGTH*2]; + /*Get aes */ + /* After this line only secure master could write to the mailbox register*/ + sec_get_mbox(ses_key); + bcm_sec_aes_cbc128(ses_key, ses_key+AES128_KEY_LENGTH, s, len, 0); + return s; +} +#endif + + +#if defined (CONFIG_TPL_BUILD) +extern tpl_params * tplparams; + +static inline char* __get_ev(const char* nm) +{ + char* k = NULL; + if (!tplparams) { + return NULL; + } + k = find_spl_env_val(tplparams->environment, nm); + if (!k) { + return NULL; + } + return k; +} + +#else + +static inline char* __get_ev(const char* nm) +{ + return env_get(nm); +} + +#endif +int bcm_util_hex2u32(const char* s, u8* d) +{ + int len; + u32* u = (u32*)d ; + char buf[sizeof(u32)*2 + sizeof(u8)] = {0}; + char* pmax, *p = (char*)s; + if (!p || !d) { + return -1; + } + + len = strlen(p); + len -= (len%sizeof(u32)); + pmax = (char*)s + len; + while(p < pmax ) { + memcpy(buf, p, sizeof(u32)*2); + *u++ = ntohl(simple_strtoul((const char*)buf, NULL, 16)); + //printf("\n %x %s \n",new_key[j-1],buf); + p += sizeof(u32)*2; + } + return len/2; +} + +u8* bcm_util_env_var2bin(const char* id, u32 len ) +{ + char* p = NULL, *pmax; + u8 *data = NULL; + char buf[sizeof(u32)*2+sizeof(u8)] = {0}; + int j = 0 ; + p = __get_ev(id); + if (!p) { + debug("No key\n"); + return NULL; + } + pmax = p + strlen((const char*)p); + if (pmax-p != len*2) { + printf("ERROR: invalid length for %s;must be %d got only %d\n", + id, len*2, (u32)(pmax - p)); + return NULL; + } + data = malloc(len); + if (!data) { + return NULL; + } + while(p < pmax ) { + memcpy(buf, p, sizeof(u32)*2); + ((u32*)data)[j++] = ntohl(simple_strtoul((const char*)buf, NULL, 16)); + //printf("\n %x %s \n",new_key[j-1],buf); + p += sizeof(u32)*2; + } + return data; +} + +void bcm_sec_aes_cbc128(u8 *key, u8 *iv, u8* txt, + u32 length, u32 flag) +{ + u32 num_aes_blocks; + u8 key_schedule[AES128_EXPAND_KEY_LENGTH]; + aes_expand_key(key, AES128_KEY_LENGTH, key_schedule); + num_aes_blocks = (length + AES128_KEY_LENGTH - 1) / AES128_KEY_LENGTH; + flag? aes_cbc_encrypt_blocks(AES128_KEY_LENGTH, key_schedule, iv, txt, txt, num_aes_blocks) : + aes_cbc_decrypt_blocks(AES128_KEY_LENGTH, key_schedule, iv, txt, txt, num_aes_blocks); +} + +static inline void checksum_sha256(const u8 *obj, + u32 len, u8* hash) +{ + sha256_context ctx; + sha256_starts(&ctx); + sha256_update(&ctx, obj, len); + sha256_finish(&ctx, hash); +} + +static int rsa_get_params(const u8* modulus, + u32 modulus_size, + unsigned long *n0inv, + u8 *rr) +{ + size_t wcnt; + int rc = 0; + mpz_t _inv, _n0inv, + _r_sqrd, _key, _2_32, _2, _2_x; + + mpz_init (_n0inv); + mpz_init (_inv); + mpz_init (_r_sqrd); + mpz_init (_key); + mpz_init (_2); + mpz_init (_2_32); + mpz_init (_2_x); + mpz_set_ui (_2, 2); + mpz_import(_key , modulus_size, 1, sizeof(u8), 0, 0, modulus); + mpz_pow_ui(_2_32, _2, 32); + /* Calculate an inverse for _key and 2^32 */ + if ( mpz_invert(_inv, _key, _2_32) == 0) { + rc = -1; + goto err; + } + /*subtract to get negative of _inv*/ + mpz_sub(_n0inv, _2_32, _inv); + + mpz_export(n0inv, &wcnt, 1, sizeof(unsigned long), -1, 0, _n0inv); + + /*printf(" wcnt;--- n0inv: %lu \n \t 0x%u\n", wcnt, *n0inv);*/ + /* RSA2048_BYTES converted to bits then multipled by 2 + to square [2^(RSA2048_BYTES*8)]^2 + */ + mpz_pow_ui(_2_x, _2, modulus_size*8*2); + /* modulo division to get an r-squared */ + mpz_mod(_r_sqrd, _2_x, _key); + + mpz_export(rr, &wcnt, 1, modulus_size, 1, 0, _r_sqrd); + //dbg_hex(rr, RSA2048_BYTES, "R squared:"); +err: + mpz_clear (_n0inv); + mpz_clear (_inv); + mpz_clear (_r_sqrd); + mpz_clear (_key); + mpz_clear (_2); + mpz_clear (_2_32); + mpz_clear (_2_x); + return rc; + +} + + +void bcm_sec_digest(const u8 *data, u32 len, u8* digest, char* algo) +{ + //TODO: Support other algo, currently Ignoring algo and defaulting to sha256 + checksum_sha256(data, len, digest); +} + +int bcm_sec_rsa_verify(const u8 *obj, + u32 obj_len, const u8* sig, + u32 sig_len, const u8 *pub, + struct image_sign_info *im ) +{ + int rc = -1; + struct key_prop rsa_prop ; + u8 hash[SHA256_SUM_LEN] = {0}; + u8 rr[RSA2048_BYTES*2] = {0}; + u8 sig_dec[RSA2048_BYTES] = {0}; + unsigned long n0inv = 0; + checksum_sha256(obj, obj_len, hash); + rc = rsa_get_params(pub, RSA2048_BYTES, &n0inv, rr); + if (rc) { + printf("ERROR: rsa arguments\n"); + goto err; + } + + rsa_prop.modulus = pub; + rsa_prop.n0inv = n0inv; + rsa_prop.rr = rr; + rsa_prop.num_bits = RSA2048_BYTES*8; + rsa_prop.exp_len = 4; + rsa_prop.public_exponent = NULL; + rc = rsa_mod_exp_sw(sig, sig_len, &rsa_prop, sig_dec); + if (rc) { + printf("ERROR: rsa decryption\n"); + goto err; + } + //dbg_hex(sig_dec, RSA2048_BYTES, " Sig Decrypted :"); + //dbg_hex(hash, SHA256_SUM_LEN, " hash :"); + rc = padding_pss_verify(im, sig_dec, RSA2048_BYTES, hash, SHA256_SUM_LEN); +err: + memset(sig_dec, 0, RSA2048_BYTES); + memset(hash, 0, SHA256_SUM_LEN); + memset(rr, 0, RSA2048_BYTES*2); + memset(&rsa_prop, 0, sizeof(struct key_prop)); + return rc; +} diff --git a/board/broadcom/bcmbca/board_spl.c b/board/broadcom/bcmbca/board_spl.c new file mode 100644 index 0000000000..9b9deaef8e --- /dev/null +++ b/board/broadcom/bcmbca/board_spl.c @@ -0,0 +1,203 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include +#include +#include "spl_ddrinit.h" +#include +#if defined(CONFIG_BCMBCA_DDRC) +#include "asm/arch/ddr.h" +#endif +#include "boot_blob.h" +#include "boot_flash.h" +#include "tpl_params.h" +#include "spl_env.h" +#include "early_abort.h" +#include "bcm_secure.h" + +DECLARE_GLOBAL_DATA_PTR; + +tpl_params tplparams; + +void spl_board_deinit(void); + +static void setup_tpl_parms(tpl_params *parms) +{ + tplparams.environment = NULL; + /* tplparams.early_flags = boot_params; */ +#if defined(CONFIG_BCMBCA_DDRC) + tplparams.ddr_size = get_ddr_size(); +#else + tplparams.ddr_size = 64*1024*1024; +#endif + tplparams.boot_device = bcmbca_get_boot_device(); + parms->environment = load_spl_env((void*)TPL_ENV_ADDR); +} + +/* spl load and start tpl. never return */ +__weak void start_tpl(tpl_params *parms) +{ + typedef void __noreturn(*image_entry_t) (void *); + image_entry_t image_entry = + (image_entry_t) CONFIG_TPL_TEXT_BASE; + void *new_params = (void*)TPL_PARAMS_ADDR; + int size = CONFIG_TPL_MAX_SIZE; + + memcpy(new_params, parms, sizeof(tpl_params)); + + if (load_boot_blob(TPL_TABLE_MAGIC, 0x0, (void *)CONFIG_TPL_TEXT_BASE, + &size) == 0) { + spl_board_deinit(); + image_entry((void *)new_params); + } + + /* disable mmu/dcache to enable loading of uboot to memory by jtag if needed */ + dcache_disable(); + hang(); +} + +__weak void arch_cpu_deinit() +{ + +} + +int board_fit_config_name_match(const char *name) +{ + return 0; +} + +u32 spl_boot_device(void) +{ + return BOOT_DEVICE_NONE; +} + +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) +int reserve_mmu(void) +{ +#if defined(CONFIG_BRCM_SPL_MEMC_SRAM) + /* enable 64KB sram in MEMC controller for MMU table */ + MEMC->SRAM_REMAP_CTRL = (CONFIG_SYS_PAGETBL_BASE | 0x00000040); + MEMC->SRAM_REMAP_CTRL |= 0x2; + MEMC->SRAM_REMAP_CTRL; +#endif + + gd->arch.tlb_addr = CONFIG_SYS_PAGETBL_BASE; + gd->arch.tlb_size = CONFIG_SYS_PAGETBL_SIZE; + + return 0; +} +#endif + +#ifdef CONFIG_BCMBCA_LDO_TRIM +static void bcmbca_set_ldo_trim(void) +{ + u32 trim = 0; + + bcm_otp_get_ldo_trim(&trim); + if (trim) { + printf("Apply trim code 0x%x reg 0x%x from otp to LDO controller...\n", + trim, (trim<LdoCtl = + (trim<miscStrapBus); + if (bcm_otp_init()) { + hang(); + } + + bcm_sec_init(); +#if defined(BUILD_TAG) + printf("$SPL: "BUILD_TAG" $\n"); +#endif + early_abort(); + + +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) + reserve_mmu(); + enable_caches(); +#endif +} + +void spl_board_deinit(void) +{ + /* + * even thought the name says linux but it does everything needed for + * boot to the next image: flush and disable cache, disable mmu + */ + cleanup_before_linux(); + + arch_cpu_deinit(); + +#if defined(CONFIG_BRCM_SPL_MEMC_SRAM) + /* disable 64KB sram in MEMC controller for MMU table */ + MEMC->SRAM_REMAP_CTRL = 0; + MEMC->SRAM_REMAP_CTRL; +#endif +} + +void spl_board_init(void) +{ + early_abort_t* ea_info; + +#ifdef CONFIG_BCMBCA_LDO_TRIM + bcmbca_set_ldo_trim(); +#endif + boot_flash_init(); + + ea_info = early_abort_info(); + +#ifdef CONFIG_BCMBCA_EARLY_ABORT_JTAG_UNLOCK + printf("WARNING -- JTAG UNLOCK IS ENABLED\n"); +#endif +#if defined(CONFIG_BCMBCA_DDRC) + { + uint32_t mcb_sel = 0, + mcb_mode = 0; + if ((ea_info->status&SPL_EA_DDR_MCB_SEL)) { + mcb_mode = (SPL_DDR_INIT_MCB_OVRD|SPL_DDR_INIT_MCB_SEL); + mcb_sel = ea_info->data; + } else if ((ea_info->status&(SPL_EA_DDR3_SAFE_MODE))) { + mcb_mode = (SPL_DDR_INIT_MCB_OVRD|SPL_DDR_INIT_DDR3_SAFE_MODE); + } else if ((ea_info->status&SPL_EA_DDR4_SAFE_MODE)) { + mcb_mode = (SPL_DDR_INIT_MCB_OVRD|SPL_DDR_INIT_DDR4_SAFE_MODE); + } + /*printf("\nGot mcb_mode 0x%x\n",mcb_mode);*/ + spl_ddrinit(mcb_mode, mcb_sel); + } +#endif + + if ((ea_info->status&(SPL_EA_IMAGE_FB))) { + tplparams.early_flags = SPL_EA_IMAGE_FB; + }else if ((ea_info->status&SPL_EA_IMAGE_RECOV)) { + tplparams.early_flags = SPL_EA_IMAGE_RECOV; + } + if ((ea_info->status&SPL_EA_IGNORE_BOARDID)) { + tplparams.early_flags |= SPL_EA_IGNORE_BOARDID; + } + /* printf("\nGot TPL flags 0x%x\n",tplparams.early_flags); */ + setup_tpl_parms(&tplparams); + + start_tpl(&tplparams); +} diff --git a/board/broadcom/bcmbca/board_tk_prog.c b/board/broadcom/bcmbca/board_tk_prog.c new file mode 100644 index 0000000000..46548bcc5f --- /dev/null +++ b/board/broadcom/bcmbca/board_tk_prog.c @@ -0,0 +1,101 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include +#include "asm/arch/ddr.h" +#include "bcm_secure.h" +#include "bcm_otp.h" + +DECLARE_GLOBAL_DATA_PTR; + + +void spl_board_deinit(void); + +__weak void arch_cpu_deinit() +{ + +} + +u32 spl_boot_device(void) +{ + return BOOT_DEVICE_NONE; +} +__weak void spl_ddrinit_prepare(void) +{ +} + +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) +int reserve_mmu(void) +{ +#if defined(CONFIG_BRCM_SPL_MEMC_SRAM) + /* enable 64KB sram in MEMC controller for MMU table */ + MEMC->SRAM_REMAP_CTRL = (CONFIG_SYS_PAGETBL_BASE | 0x00000040); + MEMC->SRAM_REMAP_CTRL |= 0x2; + MEMC->SRAM_REMAP_CTRL; +#endif + gd->arch.tlb_addr = CONFIG_SYS_PAGETBL_BASE; + gd->arch.tlb_size = CONFIG_SYS_PAGETBL_SIZE; + + return 0; +} +#endif + +extern int sec_tk(); +extern void sec_tk_find_keystore(); +void board_init_f(ulong dummy) +{ +#if defined(CONFIG_ARCH_CPU_INIT) + arch_cpu_init(); +#endif +#if defined(CONFIG_SYS_ARCH_TIMER) + timer_init(); +#endif + if (spl_early_init()) + hang(); + + + /* UART clocks enabled and gd valid - init serial console */ + preloader_console_init(); + printf(" TK OTP/SOTP \n"); + +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) + reserve_mmu(); + enable_caches(); +#endif + sec_tk_find_keystore(); +} + +void spl_board_deinit(void) +{ + /* + * even thought the name says linux but it does everything needed for + * boot to the next image: flush and disable cache, disable mmu + */ + cleanup_before_linux(); + + arch_cpu_deinit(); + +#if defined(CONFIG_BRCM_SPL_MEMC_SRAM) + /* disable 64KB sram in MEMC controller for MMU table */ + MEMC->SRAM_REMAP_CTRL = 0; + MEMC->SRAM_REMAP_CTRL; +#endif +} + +void spl_board_init(void) +{ + bcm_otp_init(); + bcm_sec_init(); + bcm_sec_cb_arg_t cb_args[SEC_CTRL_ARG_MAX] = {0}; + cb_args[SEC_CTRL_ARG_KEY].arg[0].ctrl = SEC_CTRL_KEY_GET; + bcm_sec_do(SEC_SET, cb_args); + sec_tk(); + bcm_sec_deinit(); + while(1); +} diff --git a/board/broadcom/bcmbca/board_tpl.c b/board/broadcom/bcmbca/board_tpl.c new file mode 100644 index 0000000000..6c219ba6da --- /dev/null +++ b/board/broadcom/bcmbca/board_tpl.c @@ -0,0 +1,644 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ +#define DEBUG +#include +#include +#include +#include +#if defined(CONFIG_ARM64) +#include +#endif + +#include "spl_ddrinit.h" +#include "bcmbca_nand_spl.h" +#include "bca_common.h" +#include "bca_sdk.h" +#include "bcm_bootstate.h" +#include +#include +#include "early_abort.h" +#include "tpl_params.h" +#include "spl_env.h" +#include +#include +#include "bcmbca-dtsetup.h" +#include "bcm_secure.h" + +DECLARE_GLOBAL_DATA_PTR; + +tpl_params __attribute__((section(".data"))) * tplparams = NULL; + +static struct bcasdk_ctx sdk_ctx = {}; + +static void update_uboot_fdt_sdk(void *fdt_addr); +void save_boot_params_ret(void); +static int get_fit_load_vol_id(void *info); +static void update_uboot_fdt_sdk(void *fdt_addr) +{ + int offset; + + offset=fdt_path_offset (fdt_addr, "/chosen"); + if(offset >= 0) + { + if (sdk_ctx.last_reset_reason >= 0) { + if(fdt_setprop_u32(fdt_addr, offset, "reset_reason", sdk_ctx.last_reset_reason)) + { + printf("Could not set reset reason node in the fdt, device may not boot properly\n"); + } + } + if(fdt_setprop_u32(fdt_addr, offset, "active_image", sdk_ctx.active_image)) + { + printf("Could not set image node in the fdt, device may not boot properly\n"); + } + } +} + +__weak void boost_cpu_clock(void) +{ + +} + +/* called from start.S. No stack use. */ +void save_boot_params(void* params) +{ + tplparams = (tpl_params*)params; + save_boot_params_ret(); +} + +#if !defined(CONFIG_BCMBCA_IKOS) +void spl_perform_fixups(struct spl_image_info *spl_image) +{ + bcm_sec_delg_cfg * delg_cfg = NULL; + + update_uboot_fdt(spl_image->fdt_addr, tplparams); + update_uboot_fdt_sdk(spl_image->fdt_addr); + bcm_sec_ctrl_arg_t arg = {.ctrl = SEC_CTRL_KEY_CHAIN_RSA, + .ctrl_arg = spl_image->fdt_addr} ; + bcm_sec_update_ctrl_arg(&arg, SEC_CTRL_ARG_KEY); + + /* Check if delegation is active inorder to pass encoded keys */ + delg_cfg = bcm_sec_get_delg_cfg(); + if( delg_cfg && delg_cfg->delg_id ) { + arg.ctrl = SEC_CTRL_KEY_CHAIN_ENCKEY; + } else { + arg.ctrl = SEC_CTRL_KEY_CHAIN_AES; + } + bcm_sec_update_ctrl_arg(&arg, SEC_CTRL_ARG_KEY); + + /* Check if delegation is active to pass export items */ + if( delg_cfg && delg_cfg->delg_id ) { + arg.ctrl = SEC_CTRL_KEY_EXPORT_ITEM; + bcm_sec_update_ctrl_arg(&arg, SEC_CTRL_ARG_KEY); + } + bcm_sec_do(SEC_SET, NULL); +} +#endif + +#if defined(CONFIG_MMC) +#define MMC_DEV_NUM 0 +#if defined(CONFIG_SUPPORT_EMMC_BOOT) +u32 spl_boot_mode(const u32 boot_device) +{ + return MMCSD_MODE_RAW; +} +#endif + +#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION +static int board_tpl_load_mmc_part(struct blk_desc *bd, disk_partition_t * info, void * buffer) +{ + int ret = 0; + unsigned long count; + unsigned long sector = info->start; + unsigned long num_blocks = info->size; + + /* read image header to find the image size & load address */ + count = blk_dread(bd, sector, num_blocks, buffer); + printf("%s: read sector %lx, count=%lu\n", __FUNCTION__, sector, count); + if (count == 0) { + ret = -EIO; + } + return ret; +} + +int spl_boot_partition(const u32 boot_device) +{ + int fit_part_id = 0; + disk_partition_t info; + + fit_part_id = get_fit_load_vol_id((void*)&info); + + return fit_part_id; +} +#endif +#endif /* CONFIG_MMC */ + +char *imgdev_name = NULL; +#if !defined(CONFIG_BCMBCA_IKOS) +void board_boot_order(u32 *spl_boot_list) +{ + int i=0; + + unsigned long iargs[4]; + char units[4]; + int n; + n = parse_env_string_plus_nums(find_spl_env_val + (tplparams->environment, "IMAGE"), &imgdev_name, + 4, iargs, units); + if (n > 0) { + printf("IMAGE is %s\n", imgdev_name); + +#if defined(CONFIG_NAND_BRCMNAND) || defined(CONFIG_MTD_SPI_NAND) + if (strcmp(imgdev_name,"NAND") == 0) { + spl_boot_list[i++] = BOOT_DEVICE_BOARD; + } +#endif + +#if defined(CONFIG_MMC) + if (strcmp(imgdev_name,"EMMC") == 0) { + spl_boot_list[i++] = BOOT_DEVICE_MMC1; + } +#endif + +#if defined(CONFIG_TPL_SPI_FLASH_SUPPORT) + if (strcmp(imgdev_name,"SPINOR") == 0) { + spl_boot_list[i++] = BOOT_DEVICE_NOR; + } +#endif + + } else { + printf("IMAGE environment variable not found in env at %p!\n", tplparams->environment); + } + + + spl_boot_list[i++] = BOOT_DEVICE_NONE; +} +#endif + +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) +int reserve_mmu(void) +{ + gd->arch.tlb_addr = CONFIG_SYS_PAGETBL_BASE; + gd->arch.tlb_size = CONFIG_SYS_PAGETBL_SIZE; + + return 0; +} + +/* + * flush and invalid cache before launch u-boot. + * this function is called by board_init_r after u-boot image loaded. + */ +void spl_board_prepare_for_boot(void) +{ + cleanup_before_linux(); +} +#endif +void board_init_f(ulong dummy) +{ +#if defined(CONFIG_ARCH_CPU_INIT) + arch_cpu_init(); +#endif + +#if defined(CONFIG_SYS_ARCH_TIMER) + timer_init(); +#endif + +#if !defined(CONFIG_ARM64) + spl_set_bd(); +#endif + + if (spl_early_init()) + hang(); + + /* UART clocks enabled and gd valid - init serial console */ + preloader_console_init(); + + dram_init(); + +#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) + reserve_mmu(); + enable_caches(); +#endif + + if (tplparams->environment != (void*)(TPL_ENV_ADDR)) { + printf("Invalid environment address 0x%p! Should be 0x%x.\n", + tplparams->environment, TPL_ENV_ADDR); + hang(); + } + + if (bcm_otp_init()) { + hang(); + } + bcm_sec_init(); + bcm_sec_cb_arg_t cb_args[SEC_CTRL_ARG_MAX] = {0}; + cb_args[SEC_CTRL_ARG_KEY].arg[0].ctrl = SEC_CTRL_KEY_GET; + bcm_sec_do(SEC_SET, cb_args); +#if defined(BUILD_TAG) + printf("$TPL: "BUILD_TAG" $\n"); +#endif + +#if defined(CONFIG_BCM_BOOTSTATE) + bca_bootstate_probe(); +#endif +} + +int dram_init(void) +{ + gd->ram_base = 0x0; + gd->ram_size = min(PHYS_SDRAM_1_SIZE, ((u64) tplparams->ddr_size << 20)); + gd->bd->bi_dram[0].start = 0x00; + gd->bd->bi_dram[0].size = gd->ram_size; + +#if defined(CONFIG_ARM64) + /* update memory size in mmu table*/ + mem_map[0].virt = mem_map[0].phys = gd->ram_base; + mem_map[0].size = gd->ram_size; +#endif + return 0; +} + +void spl_board_init(void) +{ +#if defined(CONFIG_BCMBCA_PMC) + pmc_initmode(); +#endif +#if !defined(CONFIG_BCMBCA_IKOS) + boost_cpu_clock(); +#endif +} + +int board_fit_config_name_match(const char *name) +{ +#ifdef CONFIG_BCMBCA_BOARD_SPECIFIC_DT + static char *boardid = NULL; + + if(!boardid && !(tplparams->early_flags & SPL_EA_IGNORE_BOARDID)) + boardid = find_spl_env_val(tplparams->environment, "boardid"); + + return strcasecmp(boardid, name); +#else + return 0; +#endif //#ifdef CONFIG_BCMBCA_BOARD_SPECIFIC_DT +} + +struct image_header *spl_get_load_buffer(ssize_t offset, size_t size) +{ + return (struct image_header *)CONFIG_SPL_LOAD_FIT_ADDRESS; +} + +#ifdef CONFIG_NAND +static ulong tpl_load_read(struct spl_load_info *load, ulong sector, + ulong count, void *buf) +{ + debug("%s: sector %lx, count %lx, buf %p\n", __func__, sector, count, + buf); + if(buf != (void *)sector) + memcpy(buf, (void *)sector, count); + + return count; +} + +// TBD +struct metadata_s { +}; + +__weak int get_raw_metadata(void *buffer, struct ubispl_info *info, int n) +{ + int r = 0; + int v; +#if defined(CONFIG_MMC) + struct mmc *mmc; + struct blk_desc *bd; +#endif + struct ubispl_load volume; + int volmap[] = { METADATA_VOL_ID_1, METADATA_VOL_ID_2, -1 }; + v = volmap[n]; + if (v >= 0) { + if (strcmp(imgdev_name,"NAND") == 0) { + volume.vol_id = v; + volume.load_addr = buffer; + if (0 > ubispl_load_volumes((struct ubispl_info *)info, &volume, 1)) { + return (-1); + } +#if defined(CONFIG_MMC) + } else if (strcmp(imgdev_name,"EMMC") == 0) { + mmc = find_mmc_device(0); + bd = mmc_get_blk_desc(mmc); + memset(info, 0, sizeof(disk_partition_t)); + if( part_get_info(bd, v, (disk_partition_t *)info) ) { + printf("Error: Invalid gpt partition %d\n", v); + return (-1); + } else { +#if defined(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION) + if( board_tpl_load_mmc_part(bd, info, buffer) < 0) { + printf("Error: Read from gpt partition %d failed!\n", v); + return (-1); + } +#endif + } +#endif + } + r = 1; + } + return (r); +} + +/* FIXME -- break into + * get_raw_metatdata() just fetch metadata copy N into a buffer + * validate_metadata() given buffer, return committed and valid + * get_reboot_volatile_flags() + * set_reboot_volatile_flags() + * get_fit_load_id() -- combine above to return volid or partid + */ +static int get_fit_load_vol_id(void *info) +//static int get_fit_load_vol_id(struct ubispl_info *info) +{ + int fit_vol_id = IMAGE_VOL_ID_1; + int selected_img_idx = 1; + char *cp; + int valid[2] = { 0, 0 }; + int seq[2] = { -1, -1 }; + int committed = 1; + int r; + int v = 0; + int boot_strap_detected = 0; + volatile int imgmap[ACTIVE_IMGIDX_MAX+1] = { -1, IMAGE_VOL_ID_1, IMAGE_VOL_ID_2 }; + while (1 == 1) { + cp = (char *)spl_get_load_buffer(0, 0); + r = get_raw_metadata(cp, info, v); + if (0 == r) { + /* no more copies */ + printf("no metadata -- using defaults\n"); + boot_strap_detected = 1; + break; + } else if (r < 0) { + /* read error on copy */ + v++; + continue; + } + if (0 == validate_metadata(cp, valid, &committed, seq)) { + break; + } + printf("metadata copy %d crc bad\n", v); + v++; + } + + if ((valid[0] == 0) && (valid[1] == 1)) { + selected_img_idx = 2; + } else if ((valid[0] == 1) && (valid[1] == 0)) { + selected_img_idx = 1; + } else { + if( committed ) + selected_img_idx = committed; + } + + sdk_ctx.last_reset_reason = 0; +#if defined(CONFIG_BCM_BOOTSTATE) + r = bcmbca_get_reset_status(); + printf("RESET STATUS is 0x%x\n",r); + if (r & SW_RESET_STATUS) { +#if defined(CONFIG_BCM63138) + /* there's a hardware bug in the 63138 where a power-up boot reports a software reset, + check for power-up value in register and if so set to zero */ + if ((bcmbca_get_boot_reason() & 0xFFFF) == 0x22ff) + { + bcmbca_set_boot_reason(0); + } +#endif + sdk_ctx.last_reset_reason = bcmbca_get_boot_reason(); + printf("BOOT REASON is 0x%x\n",sdk_ctx.last_reset_reason); + } + bcmbca_set_boot_reason((sdk_ctx.last_reset_reason << 16) | BCM_BOOT_REASON_WATCHDOG | BCM_BOOT_PHASE_UBOOT); +#endif + + /* TODO -- if boot_once is set AND nonselected image is valid, switch selected image AND clear boot once */ + if (valid[0] && valid[1] && ((sdk_ctx.last_reset_reason & BCM_BOOT_REASON_ACTIVATE) || (tplparams->early_flags & SPL_EA_IMAGE_FB))) + { + selected_img_idx = 3 - committed; + } + + /* now look up volume ID for the selected image */ + fit_vol_id = imgmap[selected_img_idx]; + if( boot_strap_detected ) { + printf("SELECTED BOOTSTRAP Image FIT_VOL_ID is %d\n", fit_vol_id); + sdk_ctx.active_image = ACTIVE_IMGIDX_BOOTSTRAP; + } else { + printf("SELECTED Image %d FIT_VOL_ID is %d\n",selected_img_idx, fit_vol_id); + sdk_ctx.active_image = selected_img_idx; + } + return fit_vol_id; +} + +static int log2exact(uint32_t num) +{ + int r = 0; + while (num > 1) { + r++; + num = num >> 1; + } + return(r); +} + +#if !defined(CONFIG_BCMBCA_IKOS) +/* This function is called after entire FIT header has been read into memory */ +void board_spl_fit_pre_load(struct spl_image_info * image_info, + struct spl_load_info *load_info, void * fit, ulong start_sector, ulong sector_count) +{ + uint64_t loaded_size = sector_count * load_info->bl_len; + uint64_t required_size = bcm_sec_get_reqd_load_size(fit); + + /* In the case where entire FIT image may not have been loaded to memory + * at once, we may have a case where we havent loaded enough blocks to get + * the FIT signature */ + if( loaded_size < required_size ) { + /* Read required size */ + sector_count = load_info->read(load_info, start_sector, + (required_size/load_info->bl_len) + (required_size%load_info->bl_len?1:0), fit); + debug("fit read sector %lx, sectors=%d, dst=%p, count=%lu, size=0x%lx\n", + start_sector, + (required_size/load_info->bl_len) + (required_size%load_info->bl_len?1:0), + fit, sector_count, required_size); + loaded_size = sector_count * load_info->bl_len; + } + + /* Authenticate FIT header and set security settings */ + bcm_sec_validate_fit(fit, loaded_size); + bcm_sec_fit(fit); +} +#endif + +__weak int tpl_load_image(struct spl_image_info *spl_image, + struct spl_boot_device *bootdev) +{ + int ret = -1; + struct ubispl_info info; + struct ubispl_load volume; + int page_size; + void *fit = spl_get_load_buffer(0, 0); + uint64_t image_start = 1024 * 1024; + uint64_t image_end = (uint64_t)(-1); + uint64_t totalsize; + int log2_pebsize; + char *name; + unsigned long iargs[4]; + char units[4]; + int n; + + /* For NAND devices, determine image_start and image_end */ + n = parse_env_string_plus_nums(find_spl_env_val + (tplparams->environment, "IMAGE"), &name, + 4, iargs, units); + if (n > 0) { + if (n > 1) { + image_start = + ((uint64_t) iargs[0]) << suffix2shift(units[0]); + + } + if (n > 2) { + image_end = + (uint64_t) iargs[1] << suffix2shift(units[1]); + } + } + free(name); + +#ifdef CONFIG_SPL_NAND_SUPPORT + nand_init(); +#endif + + info.read = nand_spl_read_block; + info.peb_size = nand_spl_get_blk_size(); + log2_pebsize = log2exact(info.peb_size); + page_size = nand_spl_get_page_size(); + + info.ubi = (struct ubi_scan_info *)CONFIG_SPL_UBI_INFO_ADDR; + info.fastmap = IS_ENABLED(CONFIG_MTD_UBI_FASTMAP); + + info.peb_offset = image_start >> log2_pebsize; + /* vid_offset and leb_start of page_size and 2*page_size respectively are dictated by ubinize with no subpage writes required */ + info.vid_offset = page_size; + info.leb_start = 2 * page_size ; + totalsize = nand_spl_get_total_size(); + if (image_end == (uint64_t) (-1)) { + image_end = totalsize; + } else if (image_end > totalsize) { + image_end = totalsize - 8 * info.peb_size; + printf("INFO: IMAGE specified beyond flash size... using flash up to the end for image\n"); + } + info.peb_count = (image_end >> log2_pebsize) - info.peb_offset; + debug("image from %lld to %lld\n",image_start, image_end); + + volume.vol_id = get_fit_load_vol_id(&info); + volume.load_addr = fit; + + ret = ubispl_load_volumes(&info, &volume, 1); + + if (!ret && (image_get_magic(fit) == FDT_MAGIC)) { + struct spl_load_info load; + debug("Found FIT format U-Boot\n"); + + load.bl_len = 1; + load.read = tpl_load_read; + ret = spl_load_simple_fit(spl_image, &load, (long)fit, fit); + } + +#ifdef CONFIG_SPL_NAND_SUPPORT + nand_deselect(); +#endif + + return ret; +} + +SPL_LOAD_IMAGE_METHOD("NAND", 0, BOOT_DEVICE_BOARD, tpl_load_image); +#endif /* CONFIG_NAND */ +#if defined(CONFIG_TPL_SPI_FLASH_SUPPORT) +static ulong spl_spi_fit_read(struct spl_load_info *load, ulong sector, + ulong count, void *buf) +{ + ulong ret; + size_t retlen; + struct mtd_info *mtd = load->dev; + + ret = mtd_read(mtd, sector, count, &retlen, buf); + if (!ret) + return retlen; + else + return 0; +} + +static int tpl_spinor_load_image(struct spl_image_info *spl_image, + struct spl_boot_device *bootdev) +{ + int ret = -1; + char *name; + int n; + unsigned long iargs[4]; + unsigned long image_start; + int use_spinor = 0; + char units[4]; + struct udevice *dev; + struct mtd_info *mtd; + size_t retlen; + void *fit = spl_get_load_buffer(0, 0); + + n = parse_env_string_plus_nums(find_spl_env_val + (tplparams->environment, "IMAGE"), &name, + 4, iargs, units); + if (n > 0) { + debug("IMAGE is %s\n",name); + if (strcmp(name,"SPINOR") == 0) { + use_spinor = 1; + if (n > 1) { + image_start = iargs[0]<< suffix2shift(units[0]); + + } + } + } + free(name); + if (!use_spinor){ + debug("Lack of SPINOR image env setting.\n"); + goto done; + } + + ret = uclass_get_device_by_driver(UCLASS_SPI_FLASH, DM_GET_DRIVER(spi_flash_std), &dev); + if (ret){ + debug("SPI NOR failed to initialize. (error %d)\n", ret); + goto done; + } + mtd = get_mtd_device_nm(SPIFLASH_MTDNAME); + if (IS_ERR_OR_NULL(mtd)){ + debug("%s:MTD device %s not found, ret %ld\n",__func__, SPIFLASH_MTDNAME, + PTR_ERR(mtd)); + ret = -1; + goto done; + } + + /* Load u-boot, mkimage header is 64 bytes. */ + ret = mtd_read(mtd, image_start, sizeof(struct image_header), &retlen,fit); + if (ret) { + debug("%s: Failed to read from SPI flash (err=%d)\n", __func__, ret); + goto done; + } + if (image_get_magic(fit) == FDT_MAGIC) { + struct spl_load_info load; + + debug("Found FIT format U-Boot\n"); + load.dev = mtd; + load.priv = NULL; + load.filename = NULL; + load.bl_len = 1; + load.read = spl_spi_fit_read; + debug("spl_load_simple_fit from %d\n",image_start); + ret = spl_load_simple_fit(spl_image, &load, image_start, fit); + + //spi nor, hard code active_image to 1 + sdk_ctx.active_image = 1; + } +done: + put_mtd_device(mtd); + return ret; +} + +SPL_LOAD_IMAGE_METHOD("SPI", 0, BOOT_DEVICE_NOR, tpl_spinor_load_image); +#endif + diff --git a/board/broadcom/bcmbca/boot_blob.c b/board/broadcom/bcmbca/boot_blob.c new file mode 100644 index 0000000000..80ceb318dc --- /dev/null +++ b/board/broadcom/bcmbca/boot_blob.c @@ -0,0 +1,237 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +/* define DEBUG before common.h to enable debug macro */ +#define DEBUG +#include +#include +#include +#include +#include "boot_blob.h" +#include "boot_flash.h" +#include "spl_env.h" + +/* overlay entry table */ +#include "generated/hashtable.h" + +static int search_blob_in_hash(uint32_t magic, uint32_t sel, int *len, + uint8_t * sha256) +{ + struct overlays entry; + int i = 0, offset = -1; + + do { + entry = ovl[i]; + if (entry.ovltype == 0) + break; + + if (entry.ovltype == magic && entry.selector == sel) { + offset = entry.offset; + memcpy(sha256, entry.sha, 32); + *len = entry.size; + break; + } + i++; + + } while (1); + + if (offset == -1) + printf("blob not found for magic 0x%x sel 0x%x!\n", magic, sel); + + return offset; +} + +static int validate_blob_sha256_digest(void *buf, int size, void *pdigest) +{ + uint8_t out[32]; + sha256_context ctx; + sha256_starts(&ctx); + sha256_update(&ctx, buf, size); + sha256_finish(&ctx, out); + return memcmp(pdigest, out, 32); +} + +static struct magic_search_s { + uint32_t index; + uint32_t last; + uint32_t length; + uint32_t dpfe_fs; /* dpfe blob fast search */ + uint32_t magics[BOOT_BLOB_MAX_MAGIC_NUMS][BOOT_BLOB_MAX_MAGIC_SEARCH + 1]; +} magic_search; + +static void init_find_magic(void) +{ + int col, i; + uint32_t e; + printf("FFinit "); + if (magic_search.last != 0) { + return; + } + i = 0; + while ((e = ovl[i].ovltype) != 0) { + for (col = 0; col < BOOT_BLOB_MAX_MAGIC_NUMS; col++) { + if (magic_search.magics[col][0] == e) { + break; + } else if (magic_search.magics[col][0] == 0) { + magic_search.magics[col][0] = e; + break; + } + } + i++; + } + printf("done\n"); + +} + +static int is_magic_match(uint32_t magic) +{ + /* DPFE blob maigc last nibble is the segment id. Ignore it */ + if ( IS_DPFE_MAGIC(magic_search.last)) + return ((magic_search.last&DPFE_MAGIC_MASK) + == (magic&DPFE_MAGIC_MASK)); + else + return (magic_search.last == magic); +} + +static uint32_t find_magic(uint32_t magic) +{ + boot_blob_hdr hdr; + uint32_t found; + uint32_t end_addr = BOOT_BLOB_SEARCH_END_ADDR; + + if (!is_magic_match(magic)) { + init_find_magic(); + magic_search.index = BOOT_BLOB_SEARCH_START_ADDR; + } + + /* TODO start with cached offsets if already located ... */ + /* debug("look for magic number 0x%x starting at address 0x%x\n", */ + /* magic, magic_search.index); */ + while (magic_search.index < end_addr) { + /* For DPFE segment blobs, all the segments are concontinous + * in the flash. So the subsequent segment will be at least + * at current addr + segment size. so we skip the search for + * current segment to redcue read on boot blocks + */ + if (IS_DPFE_MAGIC(magic_search.last) && magic == (magic_search.last+1) + && magic_search.dpfe_fs) { + magic_search.index += ROUND(magic_search.length + sizeof(hdr), + BOOT_BLOB_SEARCH_BOUNDARY); + /* printf("magic 0x%x skip current dpfe blob, quick search at 0x%x\n", + magic, magic_search.index);*/ + } + + hdr.length = hdr.magic = 0; + /* if read fail, we hit bad block and revert back to 4k search */ + if (read_boot_device(magic_search.index, &hdr, sizeof(hdr)) < 0) + magic_search.dpfe_fs = 0; + + /* TODO cache other magic numbers location while searching ... */ + found = magic_search.index; + + /* Return magic if we found it */ + if (hdr.magic == magic) { + debug("find magic number 0x%x at address 0x%x\n", + magic, found); + magic_search.last = hdr.magic; + magic_search.length = hdr.length; + if (IS_DPFE_MAGIC(magic_search.last)) + magic_search.dpfe_fs = 1; + return found; + } else { + magic_search.dpfe_fs = 0; + } + + /* Update search index to point to next entry */ + magic_search.index += BOOT_BLOB_SEARCH_BOUNDARY; + } + return ~0; +} + +static int read_blob_from_flash(uint32_t magic, uint32_t offset, void *data, + int len, uint8_t * digest) +{ + uint32_t entry; + int ret = -1; + + while ((entry = find_magic(magic)) < BOOT_BLOB_SEARCH_END_ADDR) { + printf("reading blob from 0x%x offset 0x%x len %d\n", entry, offset, len); + read_boot_device(entry + offset, data, len); + ret = validate_blob_sha256_digest(data, len, digest); + if (ret == 0) { + debug("digest sha256 OK\n"); + return BOOT_BLOB_SUCCESS; + } else { + debug("digest sha256 mismatch\n"); + magic_search.index += BOOT_BLOB_SEARCH_BOUNDARY; + magic_search.dpfe_fs = 0; + } + } + + return BOOT_BLOB_MAGIC_NOT_FOUND; +} + +int load_boot_blob(uint32_t magic, uint32_t sel, void *data, int* len) +{ + int offset; + int size; + unsigned char digest[32]; + + /* find out the offset of the blob from the hash table first */ + if ((offset = search_blob_in_hash(magic, sel, &size, digest)) < 0) + return BOOT_BLOB_NOT_IN_HASTTBL; + + if (size > *len) { + printf("buffer too small\n"); + return BOOT_BLOB_INVALID_PARAM; + } + + *len = size; + /* find out the first the blob with the magic number from flash */ + return read_blob_from_flash(magic, offset, data, size, digest); +} + +__weak void * load_spl_env(void *buffer) +{ + uint32_t entry; + uint32_t len; + uint32_t crc; + uint32_t got; + env_t *ep; + while ((entry = + find_magic(UBOOT_ENV_MAGIC)) < BOOT_BLOB_SEARCH_END_ADDR) { + uint32_t *d = (uint32_t *) buffer; + read_boot_device(entry, d, 8); + len = d[1]; + if (len > BOOT_BLOB_MAX_ENV_SIZE) { + continue; + } + read_boot_device(entry, d, len + 12); + ep = (env_t *)(d+2); + memcpy(&crc, &ep->crc, sizeof(crc)); + + got = crc32(0, ep->data, len-4); + + if (got != crc) { + debug("CRC mismatch len = %d\n",len); + debug("computed %x \n",got); + debug("expected %x \n",crc); + magic_search.index += BOOT_BLOB_SEARCH_BOUNDARY; + } else { + return(buffer); + } + } + return(NULL); +} + + +struct overlays* get_boot_blob_hash_entry(int i) +{ + + if (i >= sizeof(ovl)/sizeof(struct overlays)) + return NULL; + else + return &ovl[i]; +} diff --git a/board/broadcom/bcmbca/boot_flash.c b/board/broadcom/bcmbca/boot_flash.c new file mode 100644 index 0000000000..c00b82ff73 --- /dev/null +++ b/board/broadcom/bcmbca/boot_flash.c @@ -0,0 +1,101 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ +#include +#include +#include +#include "boot_flash.h" + +#ifdef CONFIG_MMC +#define MMC_DEV_NUM 0 +#define MMC_BOOT_HWPART 1 +#define MMC_USERDATA_PART 0 +#endif + +/* for emmc and spi flash*/ +void* flash_dev; + +int boot_flash_init(void) +{ + flash_dev = NULL; +#ifdef CONFIG_NAND + nand_init(); +#endif + +#if defined(CONFIG_MMC) && defined(CONFIG_SUPPORT_EMMC_BOOT) + struct mmc *mmc; + int ret; + ret = mmc_initialize(NULL); + if(ret) { + printf("MMC Initialization Failed!!\n"); + hang(); + } + + mmc = find_mmc_device(MMC_DEV_NUM); + mmc_init(mmc); +#endif + +#if defined(CONFIG_SPL_SPI_FLASH_SUPPORT) + struct udevice *dev; + struct mtd_info *mtd; + int ret = -1; + + ret = uclass_get_device_by_driver(UCLASS_SPI_FLASH, DM_GET_DRIVER(spi_flash_std), &dev); + if (ret){ + debug("SPI NOR failed to initialize. (error %d)\n", ret); + hang(); + } + mtd = get_mtd_device_nm(SPIFLASH_MTDNAME); + if (IS_ERR_OR_NULL(mtd)){ + printf("%s:MTD device %s not found, ret %ld\n",__func__, SPIFLASH_MTDNAME, + PTR_ERR(mtd)); + hang(); + } + else + flash_dev = mtd; +#endif + return 0; +} +/* return number of bytes read if success, negative value if fail */ +int read_boot_device(uint32_t address, void *data, int len) +{ + int ret; +#if defined(CONFIG_SPL_SPI_FLASH_SUPPORT) + size_t retlen; + debug("read_boot_device:address=%d,len=%d\n",address,len); + if ( flash_dev != NULL){ + ret = mtd_read(flash_dev, address, len, &retlen, data); + if ( ret == 0) + ret = retlen; + else{ + debug("%s: Failed to read from SPI flash (err=%d)\n", __func__, ret); + ret = -1; + } + } + else + ret = -1; +#endif + +#ifdef CONFIG_NAND + /* unfortunately nand spl api does not return the length.. */ + ret = nand_spl_load_image(address, len, data); + if (ret == 0) + ret = len; + else + ret = -1; +#endif + +#if defined(CONFIG_MMC) && defined(CONFIG_SUPPORT_EMMC_BOOT) + blk_select_hwpart_devnum(IF_TYPE_MMC, MMC_DEV_NUM, MMC_BOOT_HWPART); + /* Unfortunately mmc_spl_load_image has no return code */ + mmc_spl_load_image(address, len, data); + ret = len; + blk_select_hwpart_devnum(IF_TYPE_MMC, MMC_DEV_NUM, MMC_USERDATA_PART); +#endif + +#if defined(CONFIG_SPL_XIP_SUPPORT) + memcpy((uint8_t*)data, (uint8_t*)(address+NOR_XIP_BASE_ADDR), len); +#endif + return ret; +} diff --git a/board/broadcom/bcmbca/early_abort.c b/board/broadcom/bcmbca/early_abort.c new file mode 100644 index 0000000000..74bc65d770 --- /dev/null +++ b/board/broadcom/bcmbca/early_abort.c @@ -0,0 +1,207 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include +#include +#include +#include +#include "early_abort.h" +#include "bcm_secure.h" +#include "spl_ddrinit.h" + +static early_abort_t ea __attribute__((section(".data"))); + +static char _get_char(void) +{ + return tstc() ? getc():'\0'; +} + +static void _flush_chars(void) +{ + mdelay(1500); + while(_get_char() != '\0'); +} + +static int catch_early_abort(void) +{ + /* listen for .5 s to catch */ + uint32_t tm = SPL_EA_CATCH_TM_MS; + do { + if( _get_char() == 'a') { + return 0; + } + mdelay(1); + } while(--tm); + return 1; +} + +static void early_abort_menu(void) +{ + const char *menu = "Use enter to confirm input menu selection\r\n" + "go - continue\r\n" + "ddr - mcb override(hex) or DDR safe mode.\r\n" + "\tddr (3|4) safe modes;\r\n" + "\tddr passes selector value \r\n" + "r - Boot Fallback; 1 - recovery\r\n" + "bid - Ignore boardid while booting\r\n"; + const char *menu_cont = + "mcb - List all the mcb selectors\r\n" +#ifdef CONFIG_BCMBCA_EARLY_ABORT_JTAG_UNLOCK + "jtag - Unlock JTAG\r\n" +#endif + "h - halt\r\n"; + + printf("%s", menu); + printf("%s", menu_cont); +} + +static int _get_chars(char brk, char b[128]) +{ + char *s = b; + do { + char c = _get_char(); + if (c == '\0' || (!isalpha(c) && !isdigit(c) && c != brk && !isspace(c))) { + continue; + } + if (c == brk) { + break; + } + putc(c); + *s++ = c; + } while(s - b < 127); + *s = '\0'; + return s-b; +} + + +static inline char* _skpchr(const char* s, char c) +{ + char* p = (char*)s; + while(*p == c ) { p++; } + return p; +} +/* given the char c and tok - search for the pattern: + * c<(tok)|\0*> + * + * */ +static char* _strchr_not_tok(const char* s, char c, char tok) +{ + char *p = (char*)s; + if (*p == c) { + goto done ; + } + p = _skpchr(p, tok); + if (p == s) { + return NULL; + } +done: + return (*p == c && (*(p+1) =='\0' || isspace(*(p+1))))? p : NULL; +} + +__weak void early_abort(void) +{ + unsigned long tm = SPL_EA_TM_MS; + spl_ea_status_t ddr_flags = SPL_EA_NONE, + ignore_boardid = SPL_EA_NONE, + image_flags = SPL_EA_NONE; + int chno = 0; + /* This function called early so avoiding usage of BS as much as possible. + * Stack MUST BE available + * Using global pointer to convei + * early abort status + * */ + if (catch_early_abort()) { + return; + } + /* print menu */ + memset(&ea, 0, sizeof(ea)); + early_abort_menu(); + _flush_chars(); + do { + char cbuf[128]; + char* sel = cbuf; + mdelay(1); + if (!serial_tstc()) { + continue; + } + chno = _get_chars('\r', sel); + sel = _skpchr(sel, ' '); + if (!strncmp(sel, "ddr", 3)) { + /* grab hex for selector */ + char * p = _strchr_not_tok(sel + 3, '3', ' '); + if (p) { + ddr_flags = SPL_EA_DDR3_SAFE_MODE; + printf("\r\nSafe Mode - DDR%c\n",*p); + } else { + p = _strchr_not_tok(sel + 3, '4', ' '); + if (p) { + ddr_flags = SPL_EA_DDR4_SAFE_MODE; + printf("\r\nSafe Mode - DDR%c\n",*p); + } else { + char * p = sel + 3; + unsigned long val; + p = _skpchr(p, ' '); + val = simple_strtoul(p, NULL, 16); + if (val != -EINVAL) { + ddr_flags = SPL_EA_DDR_MCB_SEL; + ea.data = val; + printf("\r\nMCB selector 0x%lx\r\n", val); + } else { + ddr_flags = SPL_EA_DDR3_SAFE_MODE; + printf("\r\nSafe Mode - DDR3\r\n"); + } + } + } + } else if (!strncmp(sel,"go", 2)) { + /*done get out*/ + break; + } else if (*sel == 'r') { + char * p = _strchr_not_tok(sel + 1 , '1', ' '); + image_flags = p && *p=='1'? + SPL_EA_IMAGE_RECOV : SPL_EA_IMAGE_FB; + printf("\r\nBoot Image: %s \r\n", + (image_flags&SPL_EA_IMAGE_RECOV)?"Recovery":"Fallback"); + } else if (*sel == 'h') { + /*resetting timeout; + * started polling almost infinitely*/ + tm = -1; + printf("\r\nHalted\r\n"); +#ifdef CONFIG_BCMBCA_EARLY_ABORT_JTAG_UNLOCK + } else if (*sel == 'j'|| !strncmp(sel,"jtag", 4)) { + bcm_sec_cb_arg_t cb_args[SEC_CTRL_ARG_MAX] = {0}; + cb_args[SEC_CTRL_ARG_SOTP].arg[0].ctrl = SEC_CTRL_SOTP_LOCK_ALL; + cb_args[SEC_CTRL_ARG_KEY].arg[0].ctrl = SEC_CTRL_KEY_CLEAN_ALL; + bcm_sec_do(SEC_SET, cb_args); + BCM_SEC_UNLOCK_JTAG; + ea.status |= SPL_EA_JTAG_UNLOCK; + printf("\r\nUnlocked\r\n"); +#endif + } else if (!strncmp(sel, "bid", 3)) { + ignore_boardid = SPL_EA_IGNORE_BOARDID; + printf("\r\nIgnore boardid while booting\r\n"); + } else if (!strncmp(sel, "mcb", 3)) { +#ifdef CONFIG_BCMBCA_DDRC + spl_list_mcb_sel(); +#endif + } else if (chno){ + + putc('\r'); + do { + putc(' '); + } while(--chno); + putc('\r'); + } + + } while(--tm); + if (ddr_flags || image_flags || ignore_boardid) { + ea.status |= (ddr_flags|image_flags|ignore_boardid); + } + /*printf("Time out counter at %lu\n",tm);*/ +} + +early_abort_t* early_abort_info() +{ + return &ea; +} diff --git a/board/broadcom/bcmbca/flashback.c b/board/broadcom/bcmbca/flashback.c new file mode 100644 index 0000000000..40cc0791a9 --- /dev/null +++ b/board/broadcom/bcmbca/flashback.c @@ -0,0 +1,105 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright 2019 Broadcom Ltd. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "bca_common.h" +#include "bca_sdk.h" +#include "spl_env.h" + +struct recovery_chunks { + int flashpage; // page in flash + int size; // number of bytes before fill + int type; // 0x0= fill with 0xff, 0x1 = fill with 0x00, 0x7fffffff = END +}; + +DECLARE_GLOBAL_DATA_PTR; + +static int erase(struct mtd_info *mtd, int first, int blocks); + +static int erase(struct mtd_info *mtd, int first, int blocks) +{ + struct erase_info erase_op = { }; + int ret; + + erase_op.mtd = mtd; + erase_op.addr = first * mtd->erasesize; + erase_op.len = blocks * mtd->erasesize; + erase_op.scrub = 0; + printf("Erasing %d blocks from block %d\n", blocks, first); + + while (erase_op.len) { + ret = mtd_erase(mtd, &erase_op); + + /* Abort if its not a bad block error */ + if (ret != -EIO) + break; + + printf("Skipping bad block at 0x%08llx\n", erase_op.fail_addr); + + /* Skip bad block and continue behind it */ + erase_op.len -= erase_op.fail_addr - erase_op.addr; + erase_op.len -= mtd->erasesize; + erase_op.addr = erase_op.fail_addr + mtd->erasesize; + } + + if (ret && ret != -EIO) + ret = -1; + else + ret = 0; + return (ret); +}; + + +static int do_flashback(cmd_tbl_t * cmdtp, int flag, int argc, + char *const argv[]); +static int do_flashback(cmd_tbl_t * cmdtp, int flag, int argc, + char *const argv[]) +{ + struct mtd_info *mtd = NULL; + struct recovery_chunks *recovery_chunks_list = CONFIG_SYS_LOAD_ADDR; + long offset; + int i; + size_t sz = 0; + int blocks, pages; + int ret = 0; + char *bp; + int chunk; + mtd = get_mtd_device_nm("nand0"); + blocks = (mtd->size / mtd->erasesize); + pages = (mtd->erasesize / mtd->writesize); + erase(mtd, 0, blocks); + chunk = 0; + bp = &recovery_chunks_list[blocks * pages + 1]; + while (recovery_chunks_list[chunk].type < 0x1000) { + i = mtd_write(mtd, + recovery_chunks_list[chunk].flashpage * + mtd->writesize, mtd->writesize, &sz, bp); + bp += recovery_chunks_list[chunk].size; + chunk++; + printf("%d ", chunk); + } + put_mtd_device(mtd); + return(0); +} + +static char usage[] = "line 1...\n" "line 2...\n"; + +U_BOOT_CMD_WITH_SUBCMDS(flashback_ops, "flashback commands", usage, + U_BOOT_SUBCMD_MKENT(go_flashback, 1, 0, do_flashback) + ); + + diff --git a/board/broadcom/bcmbca/httpd/Makefile b/board/broadcom/bcmbca/httpd/Makefile new file mode 100644 index 0000000000..d5edf9d929 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/Makefile @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2019 Broadcom Ltd +# + + +# ccflags-y += -save-temps + +obj-$(CONFIG_BCMBCA_HTTPD) += bcmbca_net.o +obj-$(CONFIG_BCMBCA_HTTPD) += httpd.o +obj-$(CONFIG_BCMBCA_HTTPD) += uip.o +obj-$(CONFIG_BCMBCA_HTTPD) += uip_arch.o +obj-$(CONFIG_BCMBCA_HTTPD) += uip_arp.o + + diff --git a/board/broadcom/bcmbca/httpd/bcmbca_net.c b/board/broadcom/bcmbca/httpd/bcmbca_net.c new file mode 100644 index 0000000000..6fe242c80e --- /dev/null +++ b/board/broadcom/bcmbca/httpd/bcmbca_net.c @@ -0,0 +1,296 @@ +#include +#include +#include +#include +#include + +#include "uipopt.h" +#include "uip.h" +#include "uip_arp.h" +#include "httpd.h" +#include "bca_sdk.h" +#include "bca_common.h" + +typedef enum +{ + HTTP_IMG_UPGRADE_IDLE, + HTTP_IMG_UPGRADE_INPROGRESS, + HTTP_IMG_UPGRADE_OK, + HTTP_IMG_UPGRADE_WAIT_RESET, + HTTP_IMG_UPGRADE_FAIL, +} HTTP_IMG_UPGRADE_STATE; + +static HTTP_IMG_UPGRADE_STATE http_upgrade_state = HTTP_IMG_UPGRADE_IDLE; +static uint64_t httpd_reset_wait_start_ticks = 0; +static uint64_t httpd_reset_wait_timeout_sec = 0; + +extern int (*ip_tap)(uchar *in_packet, int len, struct ip_udp_hdr *ip); + +#define HTTPD_RESET_WAIT_SEC 3 /* Amount of seconds to wait before triggering device reset */ +#define IPPROTO_TCP 6 /* Trasmission Control Protocol */ + +extern void (*jobs_func)(void); + +void send_httpd(void) +{ + volatile uchar *tmpbuf; + uchar *tx_packet; + int i; + + tx_packet = net_get_async_tx_pkt_buf(); + tmpbuf = tx_packet; + + for(i = 0; i < 40 + UIP_LLH_LEN; i++) + tmpbuf[i] = uip_buf[i]; + + for(; i < uip_len; i++) + tmpbuf[i] = uip_appdata[i - 40 - UIP_LLH_LEN]; + + net_send_packet(tx_packet, uip_len); +} + +int httpd_check_net_env(void) +{ + char eth_addr[6]; + + if(!env_get("ipaddr")) + { + printf("HTTPD: ipaddr not defined\n"); + return -1; + } + + if(!env_get("netmask")) + { + printf("HTTPD: netmask not defined\n"); + return -1; + } + + if(!eth_env_get_enetaddr("ethaddr",eth_addr)) + { + printf("HTTPD: ethaddr not defined\n"); + return -1; + } + printf("HTTPD: ready for starting\n"); + return 0; +} + +void httpd_start(void) +{ + struct uip_eth_addr eaddr; + unsigned short ip[2]; + char eth_addr[6]; + char *ip_addr = NULL, *net_mask = NULL; + + uip_init(); + + ip_addr = env_get("ipaddr"); + if(ip_addr) + { + net_ip = string_to_ip(ip_addr); + } + else + { + printf("httpd_start: ipaddr not defined\n"); + return; + } + net_mask = env_get("netmask"); + if(net_mask) + { + net_netmask = string_to_ip(net_mask); + } + else + { + printf("httpd_start: netmask not defined\n"); + return; + } + + ip[0] = net_ip.s_addr & 0x0000FFFF; + ip[1] = (net_ip.s_addr & 0xFFFF0000) >> 16; + uip_sethostaddr(ip); + + ip[0] = net_netmask.s_addr & 0x0000FFFF; + ip[1] = (net_netmask.s_addr & 0xFFFF0000) >> 16; + + uip_setnetmask(ip); + + if(eth_env_get_enetaddr("ethaddr",eth_addr)) + { + memcpy(net_ethaddr, eth_addr, 6); + } + else + { + printf("httpd_start: ethaddr not defined\n"); + return; + } + memcpy(eaddr.addr, net_ethaddr, 6); + uip_setethaddr(eaddr); + + uip_listen(HTONS(80)); +} + +int httpd_poll_post_process(void) +{ + /* Handle device reset after succesfull image upgrade */ + if( http_upgrade_state == HTTP_IMG_UPGRADE_WAIT_RESET ) + { + if( get_ticks() - httpd_reset_wait_start_ticks > httpd_reset_wait_timeout_sec * get_tbclk()) + do_reset(NULL, 0, 0, NULL); + } +} + +int http_rcv(uchar *in_packet, int len, struct ip_udp_hdr *ip) +{ + if(ip->ip_p == IPPROTO_TCP) + { + if(len > sizeof(uip_buf)) + { + printf("TCP/IP packet len %d > uip buffer %d\n", len, sizeof(uip_buf)); + return 1; + } + memcpy(uip_buf, in_packet, len); + uip_arp_ipin(); + uip_input(); + if(uip_len > 0) + { + uip_arp_out(); + send_httpd(); + } + + if( uip_aborted() && (http_upgrade_state != HTTP_IMG_UPGRADE_WAIT_RESET) ) + http_upgrade_state = HTTP_IMG_UPGRADE_IDLE; + + /* If upgrade succeeded, reset after sending confirmation page */ + if( http_upgrade_state > HTTP_IMG_UPGRADE_INPROGRESS ) + { + /* Issue reset after sending update page if upgrade was good */ + switch(http_upgrade_state) + { + case HTTP_IMG_UPGRADE_OK: + /* Prepare to close TCP connection */ + uip_close(); + /* Set state to waiting for reset */ + http_upgrade_state = HTTP_IMG_UPGRADE_WAIT_RESET; + /* Arm the reset counter */ + httpd_reset_wait_start_ticks = get_ticks(); + httpd_reset_wait_timeout_sec = HTTPD_RESET_WAIT_SEC; + printk("Resetting in %d seconds....\n", httpd_reset_wait_timeout_sec); + break; + + case HTTP_IMG_UPGRADE_WAIT_RESET: + /* Do nothing */ + break; + + default: + http_upgrade_state = HTTP_IMG_UPGRADE_IDLE; + break; + } + } + + return 1; + } + return 0; +} + +STREAM_UPGRADE_STATUS http_get_upgrade_status(void) +{ + if( http_upgrade_state == HTTP_IMG_UPGRADE_FAIL ) + return STREAM_UPGRADE_ERR; + else + return STREAM_UPGRADE_OK; + +} + +STREAM_TRANSFER_STATUS http_update_image(char *data, unsigned int len, STREAM_TRANSFER_STATE state) +{ + static char* upload_addr = NULL; + static char* orig_upload_addr = NULL; + char * s = NULL; + int ret = -1; + + if( state == TRANSFER_START ) { + if( http_upgrade_state == HTTP_IMG_UPGRADE_IDLE ) { + /* pre-set load_addr */ + s = env_get("loadaddr"); + if (s != NULL) + upload_addr = simple_strtoul(s, NULL, 16); + else + upload_addr = load_addr; + + orig_upload_addr = upload_addr; + http_upgrade_state = HTTP_IMG_UPGRADE_INPROGRESS; + printf("%s: downloading image to 0x%p\n ", __FUNCTION__, orig_upload_addr); + } else { + printf("%s: ERROR: Image Upgrade already in progress! Ignoring Upgrade request!p\n", __FUNCTION__); + return STOP_STREAM_DATA; + } + } + + if( upload_addr ) { + memcpy(upload_addr, data, len); + upload_addr += len; + } + + if( state == TRANSFER_END ) + { + int img_index = get_img_index_for_upgrade(0); + ret = flash_upgrade_img_bundle(orig_upload_addr, img_index, NULL); + upload_addr = NULL; + orig_upload_addr = NULL; + + if( ret ) { + printf("ERROR: HTTP Image upgrade failed!!\n"); + http_upgrade_state = HTTP_IMG_UPGRADE_FAIL; + } else { + printf("INFO: HTTP Image upgrade successfull!!\n"); + //FIXME: Check boot once flag before committing? + commit_image( img_index ); + http_upgrade_state = HTTP_IMG_UPGRADE_OK; + } + } + + return NEXT_STREAM_DATA; +} + +void http_poll(void) +{ + int ret; + struct udevice *current; + static int uip_initalized = 0; + + current = eth_get_dev(); + + if(!current || !eth_is_active(current)) + { + net_init(); + if (eth_is_on_demand_init()) + { + eth_halt(); + eth_set_current(); + ret = eth_init(); + if (ret < 0) { + eth_halt(); + unregister_cli_job_cb(http_poll); + printf("HTTPD: no network interface found, failed to init network\n"); + return; + } + } + else + { + eth_init_state_only(); + } + } + + if(!uip_initalized) + { + httpd_start(); + handle_data_stream = http_update_image; + get_stream_upgrade_status = http_get_upgrade_status; + ip_tap = http_rcv; + uip_initalized = 1; + } + + eth_rx(); + httpd_poll_post_process(); +} + + diff --git a/board/broadcom/bcmbca/httpd/bcmbca_net.h b/board/broadcom/bcmbca/httpd/bcmbca_net.h new file mode 100644 index 0000000000..4788ac9558 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/bcmbca_net.h @@ -0,0 +1,7 @@ +#ifndef __BCMBCA_NET_H__ +#define __BCMBCA_NET_H__ + +void http_poll(void); +int httpd_check_net_env(void); + +#endif /* __BCMBCA_NET_H__ */ diff --git a/board/broadcom/bcmbca/httpd/fs.h b/board/broadcom/bcmbca/httpd/fs.h new file mode 100644 index 0000000000..2d9693bff0 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/fs.h @@ -0,0 +1,80 @@ +/** + * \addtogroup httpd + * @{ + */ + +/** + * \file + * HTTP server read-only file system header file. + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2001, Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + * $Id: fs.h,v 1.6.2.3 2003/10/07 13:22:27 adam Exp $ + */ +#ifndef __FS_H__ +#define __FS_H__ + +#include "uip.h" + +/** + * An open file in the read-only file system. + */ +struct fs_file { + char *data; /**< The actual file data. */ + int len; /**< The length of the file data. */ +}; + +/** + * Open a file in the read-only file system. + * + * \param name The name of the file. + * + * \param file The file pointer, which must be allocated by caller and + * will be filled in by the function. + */ +int fs_open(const char *name, struct fs_file *file); + +#ifdef FS_STATISTICS +#if FS_STATISTICS == 1 +u16_t fs_count(char *name); +#endif /* FS_STATISTICS */ +#endif /* FS_STATISTICS */ + +/** + * Initialize the read-only file system. + */ +void fs_init(void); + +#endif /* __FS_H__ */ diff --git a/board/broadcom/bcmbca/httpd/html/404.html b/board/broadcom/bcmbca/httpd/html/404.html new file mode 100644 index 0000000000..3b79efd535 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/html/404.html @@ -0,0 +1,14 @@ + + + + + Page not found + + + +
+

Page not found

+

The page you were looking for doesn't exist!

+
+ + diff --git a/board/broadcom/bcmbca/httpd/html/fail.html b/board/broadcom/bcmbca/httpd/html/fail.html new file mode 100644 index 0000000000..0cd83559d3 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/html/fail.html @@ -0,0 +1,26 @@ + + + + + Update failed + + + +
+

Update failed

+

Please click on refresh button of your browser to go back to the upload page.
Check U-Boot console for any errors.

+
+ + + diff --git a/board/broadcom/bcmbca/httpd/html/flashing.html b/board/broadcom/bcmbca/httpd/html/flashing.html new file mode 100644 index 0000000000..4b86066328 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/html/flashing.html @@ -0,0 +1,18 @@ + + + + + Update in progress + + + + +
+

Update in progress

+

Your file was successfully uploaded! Update is in progress and you should wait for automatic reset of the device.
Update time depends on image size and may take up to a few minutes. You can close this page.

+
+
+ + diff --git a/board/broadcom/bcmbca/httpd/html/index.html b/board/broadcom/bcmbca/httpd/html/index.html new file mode 100644 index 0000000000..4869107c8c --- /dev/null +++ b/board/broadcom/bcmbca/httpd/html/index.html @@ -0,0 +1,15 @@ + + + + + Software update + + + +
+

Software update

+

You are going to upload new software to the device.
Choose a proper file from your local hard drive and click "Update software" button.
Please, do not power off the device during update, if everything goes well, the device will restart.

+
+
+ + diff --git a/board/broadcom/bcmbca/httpd/httpd.c b/board/broadcom/bcmbca/httpd/httpd.c new file mode 100644 index 0000000000..bf07e10118 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/httpd.c @@ -0,0 +1,527 @@ +#include "uip.h" +#include "httpd.h" +#include "fs.h" + +#include "generated/index.h" +#include "generated/flashing.h" +#include "generated/fail.h" +#include "generated/404.h" + +#define STATE_NONE 0 // empty state (waiting for request...) +#define STATE_FILE_REQUEST 1 // remote host sent GET request +#define STATE_UPLOAD_REQUEST 2 // remote host sent POST request + +#define HTTPD_USE_STATIC_MEM 1 // Do not use dynamic memory allocation for interim values + +// ASCII characters +#define ISO_G 0x47 // GET +#define ISO_E 0x45 +#define ISO_T 0x54 +#define ISO_P 0x50 // POST +#define ISO_O 0x4f +#define ISO_S 0x53 +#define ISO_T 0x54 +#define ISO_slash 0x2f // control and other characters +#define ISO_space 0x20 +#define ISO_nl 0x0a +#define ISO_cr 0x0d +#define ISO_tab 0x09 + +// we use this so that we can do without the ctype library +#define is_digit(c) ((c) >= '0' && (c) <= '9') + +// debug +//#define DEBUG_UIP + + +// http app state +struct httpd_state *hs; + +static int webfailsafe_post_done = 0; +static int webfailsafe_upload_failed = 0; +static int data_start_found = 0; + +int webfailsafe_is_running = 0; +int webfailsafe_ready_for_upgrade = 0; + +STREAM_TRANSFER_STATUS (*handle_data_stream)(char *data_stream_ptr, unsigned int len, STREAM_TRANSFER_STATE state) = NULL; +STREAM_UPGRADE_STATUS (*get_stream_upgrade_status)(void) = NULL; + +static unsigned char post_packet_counter = 0; +static unsigned char packets_per_hash = 0; + +// 0x0D -> CR 0x0A -> LF +static char eol[3] = { 0x0d, 0x0a, 0x00 }; +static char eol2[5] = { 0x0d, 0x0a, 0x0d, 0x0a, 0x00 }; + +#if HTTPD_USE_STATIC_MEM +#define HTTPD_STATIC_MEM_SZ 200 +static char boundary_value[HTTPD_STATIC_MEM_SZ]; +#else +static char *boundary_value; +#endif + +// str to int +static int atoi(const char *s){ + int i = 0; + + while(is_digit(*s)){ + i = i * 10 + *(s++) - '0'; + } + + return(i); +} + +// print downloading progress +static void httpd_download_progress(void){ + + if (packets_per_hash++ == 100) + { + putc('#'); + packets_per_hash = 0; + post_packet_counter++; + } + + if(post_packet_counter == 39){ + puts("\n "); + post_packet_counter = 0; + } +} + +// reset app state +static void httpd_state_reset(void){ + hs->state = STATE_NONE; + hs->count = 0; + hs->dataptr = 0; + hs->upload = 0; + hs->upload_total = 0; + + data_start_found = 0; + post_packet_counter = 0; + +#if HTTPD_USE_STATIC_MEM + memset(boundary_value, 0, HTTPD_STATIC_MEM_SZ); +#else + if(boundary_value){ + free(boundary_value); + } +#endif + +} + +// find and get first chunk of data +static int httpd_findandstore_firstchunk(void){ + char *start = NULL; + char *end = NULL; + +#if !HTTPD_USE_STATIC_MEM + if(!boundary_value){ + return(0); + } +#endif + + // chek if we have data in packet + start = (char *)strstr((char *)uip_appdata, (char *)boundary_value); + + if(start){ + // ok, we have data in this packet! + // find upgrade type + + end = (char *)strstr((char *)start, "name=\"firmware\""); + + if(end){ + printf("Starting update software\n"); + } else { + printf("input name not found!\n"); + return(0); + } + + end = NULL; + + // find start position of the data! + end = (char *)strstr((char *)start, eol2); + + if(end){ + if((end - (char *)uip_appdata) < uip_len){ + // move pointer over CR LF CR LF + end += 4; + + // how much data we expect? + // last part (magic value 6): [CR][LF](boundary length)[-][-][CR][LF] + hs->upload_total = hs->upload_total - (int)(end - start) - strlen(boundary_value) - 6; + + printf("Upload file size: %d bytes\n", hs->upload_total); + + // We need to check if file which we are going to download + // has correct size (for every type of upgrade) + + printf("Loading: "); + + // how much data we are storing now? + hs->upload = (unsigned int)(uip_len - (end - (char *)uip_appdata)); + + if(handle_data_stream(end, hs->upload, TRANSFER_START) == STOP_STREAM_DATA) + { + httpd_state_reset(); + uip_abort(); + return 0; + } + + httpd_download_progress(); + + return(1); + + } + } else { + printf("couldn't find start of data!\n"); + } + + } + + return(0); +} + +// called for http server app +void httpd_appcall(void){ + struct fs_file fsfile; + unsigned int i; + + switch(uip_conn->lport){ + case HTONS(80): + // app state + hs = (struct httpd_state *)(uip_conn->appstate); + + // closed connection + if(uip_closed()){ + httpd_state_reset(); + uip_close(); + return; + } + + // aborted connection or time out occured + if(uip_aborted() || uip_timedout()){ + httpd_state_reset(); + uip_abort(); + return; + } + + // if we are pooled + if(uip_poll()){ + if(hs->count++ >= 100){ + httpd_state_reset(); + uip_abort(); + } + return; + } + + // new connection + if(uip_connected()){ + httpd_state_reset(); + return; + } + + // new data in STATE_NONE + if(uip_newdata() && hs->state == STATE_NONE){ + // GET or POST request? + if(uip_appdata[0] == ISO_G && uip_appdata[1] == ISO_E && uip_appdata[2] == ISO_T && (uip_appdata[3] == ISO_space || uip_appdata[3] == ISO_tab)){ + hs->state = STATE_FILE_REQUEST; + } else if(uip_appdata[0] == ISO_P && uip_appdata[1] == ISO_O && uip_appdata[2] == ISO_S && uip_appdata[3] == ISO_T && (uip_appdata[4] == ISO_space || uip_appdata[4] == ISO_tab)){ + hs->state = STATE_UPLOAD_REQUEST; + } + + // anything else -> abort the connection! + if(hs->state == STATE_NONE){ + httpd_state_reset(); + uip_abort(); + return; + } + + // get file or firmware upload? + if(hs->state == STATE_FILE_REQUEST){ + + // we are looking for GET file name + for(i = 4; i < 30; i++){ + if(uip_appdata[i] == ISO_space || uip_appdata[i] == ISO_cr || uip_appdata[i] == ISO_nl || uip_appdata[i] == ISO_tab){ + uip_appdata[i] = 0; + i = 0; + break; + } + } + + if(i != 0){ + printf("request file name too long!\n"); + httpd_state_reset(); + uip_abort(); + return; + } + + printf("Request for: "); + printf("%s\n", &uip_appdata[4]); + + // request for / + if((uip_appdata[4] == ISO_slash && uip_appdata[5] == 0) || !strcmp(&uip_appdata[4], "/index.html")){ + fsfile.data = (char*)index_html; + fsfile.len = sizeof(index_html); + } else { + // check if we have requested file + fsfile.data = (char*)__404_html; + fsfile.len = sizeof(__404_html); + } + + hs->state = STATE_FILE_REQUEST; + hs->dataptr = (u8_t *)fsfile.data; + hs->upload = fsfile.len; + + // send first (and maybe the last) chunk of data + uip_send(hs->dataptr, (hs->upload > uip_mss() ? uip_mss() : hs->upload)); + return; + + } else if(hs->state == STATE_UPLOAD_REQUEST){ + char *start = NULL; + char *end = NULL; + + // end bufor data with NULL + uip_appdata[uip_len] = '\0'; + + /* + * We got first packet with POST request + * + * Some browsers don't include first chunk of data in the first + * POST request packet (like Google Chrome, IE and Safari)! + * So we must now find two values: + * - Content-Length + * - boundary + * Headers with these values can be in any order! + * If we don't find these values in first packet, connection will be aborted! + * + */ + + // Content-Length pos + start = (char *)strstr((char*)uip_appdata, "Content-Length:"); + + if(start){ + start += sizeof("Content-Length:"); + + // find end of the line with "Content-Length:" + end = (char *)strstr(start, eol); + + if(end){ + + hs->upload_total = atoi(start); +#ifdef DEBUG_UIP + printf("Expecting %d bytes in body request message\n", hs->upload_total); +#endif + + } else { + printf("couldn't find 'Content-Length'!\n"); + httpd_state_reset(); + uip_abort(); + return; + } + + } else { + printf("couldn't find 'Content-Length'!\n"); + httpd_state_reset(); + uip_abort(); + return; + } + + // we don't support very small files (< 10 KB) + if(hs->upload_total < 10240){ + printf("request for upload < 10 KB data!\n"); + httpd_state_reset(); + uip_abort(); + return; + } + + // boundary value + start = NULL; + end = NULL; + + start = (char *)strstr((char *)uip_appdata, "boundary="); + + if(start){ + // move pointer over "boundary=" + start += 9; + + // find end of line with boundary value + end = (char *)strstr((char *)start, eol); + + if(end){ + +#if !HTTPD_USE_STATIC_MEM + // malloc space for boundary value + '--' and '\0' + boundary_value = (char*)malloc(end - start + 3); +#endif + if(boundary_value){ + + memcpy(&boundary_value[2], start, end - start); + + // add -- at the begin and 0 at the end + boundary_value[0] = '-'; + boundary_value[1] = '-'; + boundary_value[end - start + 2] = 0; + +#ifdef DEBUG_UIP + printf("Found boundary value: \"%s\"\n", boundary_value); +#endif + + } else { + printf("couldn't allocate memory for boundary!\n"); + httpd_state_reset(); + uip_abort(); + return; + } + + } else { + printf("couldn't find boundary!\n"); + httpd_state_reset(); + uip_abort(); + return; + } + } else { + printf("couldn't find boundary!\n"); + httpd_state_reset(); + uip_abort(); + return; + } + + /* + * OK, if we are here, it means that we found + * Content-Length and boundary values in headers + * + * We can now try to 'allocate memory' and + * find beginning of the data in first packet + */ + + if(httpd_findandstore_firstchunk()){ + data_start_found = 1; + } else { + data_start_found = 0; + } + + return; + + } /* else if(hs->state == STATE_UPLOAD_REQUEST) */ + + } /* uip_newdata() && hs->state == STATE_NONE */ + + // if we got ACK from remote host + if(uip_acked()){ + // if we are in STATE_FILE_REQUEST state + if(hs->state == STATE_FILE_REQUEST){ + // data which we send last time was received (we got ACK) + // if we send everything last time -> gently close the connection + if(hs->upload <= uip_mss()){ + // post upload completed? + if(webfailsafe_post_done){ + if(!webfailsafe_upload_failed){ + webfailsafe_ready_for_upgrade = 1; + } + + webfailsafe_post_done = 0; + webfailsafe_upload_failed = 0; + } + + httpd_state_reset(); + uip_close(); + return; + } + + // otherwise, send another chunk of data + // last time we sent uip_conn->len size of data + hs->dataptr += uip_conn->len; + hs->upload -= uip_conn->len; + + uip_send(hs->dataptr, (hs->upload > uip_mss() ? uip_mss() : hs->upload)); + } + + return; + + } + + // if we need to retransmit + if(uip_rexmit()){ + // if we are in STATE_FILE_REQUEST state + if(hs->state == STATE_FILE_REQUEST){ + // send again chunk of data without changing pointer and length of data left to send + uip_send(hs->dataptr, (hs->upload > uip_mss() ? uip_mss() : hs->upload)); + } + + return; + + } + + // if we got new data frome remote host + if(uip_newdata()){ + // if we are in STATE_UPLOAD_REQUEST state + if(hs->state == STATE_UPLOAD_REQUEST){ + // end bufor data with NULL + uip_appdata[uip_len] = '\0'; + + // do we have to find start of data? + if(!data_start_found){ + + if(!httpd_findandstore_firstchunk()){ + printf("couldn't find start of data in next packet!\n"); + httpd_state_reset(); + uip_abort(); + return; + } else { + data_start_found = 1; + } + return; + } + + hs->upload += (unsigned int)uip_len; + + if(!webfailsafe_upload_failed){ + if(handle_data_stream((char*)uip_appdata, uip_len, (hs->upload >= hs->upload_total) ? TRANSFER_END : TRANSFER_CONTINUE) == STOP_STREAM_DATA) + { + httpd_state_reset(); + uip_abort(); + return; + } + } + + httpd_download_progress(); + + // if we have collected all data + if(hs->upload >= hs->upload_total){ + // end of post upload + webfailsafe_post_done = 1; + + // Check if upgrade failed + if( get_stream_upgrade_status() == STREAM_UPGRADE_ERR ) + webfailsafe_upload_failed = 1; + else + webfailsafe_upload_failed = 0; + + // which website will be returned + if(!webfailsafe_upload_failed){ + fsfile.data = (char*)flashing_html; + fsfile.len = sizeof(flashing_html); + } else { + fsfile.data = (char*)fail_html; + fsfile.len = sizeof(fail_html); + } + httpd_state_reset(); + hs->state = STATE_FILE_REQUEST; + hs->dataptr = (u8_t *)fsfile.data; + hs->upload = fsfile.len; + + uip_send(hs->dataptr, (hs->upload > uip_mss() ? uip_mss() : hs->upload)); + } + } + return; + } + break; + + default: + // we shouldn't get here... we are listening only on port 80 + uip_abort(); + break; + } +} + + diff --git a/board/broadcom/bcmbca/httpd/httpd.h b/board/broadcom/bcmbca/httpd/httpd.h new file mode 100644 index 0000000000..6063f7f127 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/httpd.h @@ -0,0 +1,98 @@ +/** + * \addtogroup httpd + * @{ + */ + +/** + * \file + * HTTP server header file. + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: httpd.h,v 1.4.2.3 2003/10/06 22:56:44 adam Exp $ + * + */ + +#ifndef __HTTPD_H__ +#define __HTTPD_H__ + +typedef enum +{ + TRANSFER_START, + TRANSFER_CONTINUE, + TRANSFER_END +} STREAM_TRANSFER_STATE; + +typedef enum +{ + NEXT_STREAM_DATA, + STOP_STREAM_DATA +} STREAM_TRANSFER_STATUS; + +typedef enum +{ + STREAM_UPGRADE_OK, + STREAM_UPGRADE_ERR +} STREAM_UPGRADE_STATUS; + +void httpd_appcall(void); + +/* UIP_APPCALL: the name of the application function. This function + must return void and take no arguments (i.e., C type "void + appfunc(void)"). */ +#ifndef UIP_APPCALL +#define UIP_APPCALL httpd_appcall +#endif + +struct httpd_state { + unsigned long state; + unsigned long count; + u8_t *dataptr; + unsigned long upload; + unsigned long upload_total; +}; + +/* UIP_APPSTATE_SIZE: The size of the application-specific state + stored in the uip_conn structure. */ +#ifndef UIP_APPSTATE_SIZE +#define UIP_APPSTATE_SIZE (sizeof(struct httpd_state)) +#endif + +//#define FS_STATISTICS 1 + +extern struct httpd_state *hs; + +extern STREAM_TRANSFER_STATUS (*handle_data_stream)(char *data_stream_ptr, unsigned int len, STREAM_TRANSFER_STATE state); +extern STREAM_UPGRADE_STATUS (*get_stream_upgrade_status)(void); + +#endif /* __HTTPD_H__ */ diff --git a/board/broadcom/bcmbca/httpd/uip.c b/board/broadcom/bcmbca/httpd/uip.c new file mode 100644 index 0000000000..5eae70dbae --- /dev/null +++ b/board/broadcom/bcmbca/httpd/uip.c @@ -0,0 +1,1508 @@ +/** + * \addtogroup uip + * @{ + */ + +/** + * \file + * The uIP TCP/IP stack code. + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2001-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip.c,v 1.62.2.10 2003/10/07 13:23:01 adam Exp $ + * + */ + +/* +This is a small implementation of the IP and TCP protocols (as well as +some basic ICMP stuff). The implementation couples the IP, TCP and the +application layers very tightly. To keep the size of the compiled code +down, this code also features heavy usage of the goto statement. + +The principle is that we have a small buffer, called the uip_buf, in +which the device driver puts an incoming packet. The TCP/IP stack +parses the headers in the packet, and calls upon the application. If +the remote host has sent data to the application, this data is present +in the uip_buf and the application read the data from there. It is up +to the application to put this data into a byte stream if needed. The +application will not be fed with data that is out of sequence. + +If the application whishes to send data to the peer, it should put its +data into the uip_buf, 40 bytes from the start of the buffer. The +TCP/IP stack will calculate the checksums, and fill in the necessary +header fields and finally send the packet back to the peer. +*/ + +#include "uip.h" +#include "uipopt.h" +#include "uip_arch.h" +#include "uip_arp.h" +/*-----------------------------------------------------------------------------------*/ +/* Variable definitions. */ + + +/* The IP address of this host. If it is defined to be fixed (by setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set here. Otherwise, the address */ +#if UIP_FIXEDADDR > 0 +const unsigned short int uip_hostaddr[2] = + {HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1), + HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)}; +const unsigned short int uip_arp_draddr[2] = + {HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1), + HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)}; +const unsigned short int uip_arp_netmask[2] = + {HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1), + HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)}; +#else +unsigned short int uip_hostaddr[2]; +unsigned short int uip_arp_draddr[2], uip_arp_netmask[2]; +#endif /* UIP_FIXEDADDR */ + +struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0, + UIP_ETHADDR1, + UIP_ETHADDR2, + UIP_ETHADDR3, + UIP_ETHADDR4, + UIP_ETHADDR5}}; + + +u8_t uip_buf[UIP_BUFSIZE+4]; /* The packet buffer that contains + incoming packets. */ +volatile u8_t *uip_appdata; /* The uip_appdata pointer points to + application data. */ +volatile u8_t *uip_sappdata; /* The uip_appdata pointer points to the + application data which is to be sent. */ +#if UIP_URGDATA > 0 +volatile u8_t *uip_urgdata; /* The uip_urgdata pointer points to + urgent data (out-of-band data), if + present. */ +volatile u8_t uip_urglen, uip_surglen; +#endif /* UIP_URGDATA > 0 */ + +volatile unsigned short int uip_len, uip_slen; + /* The uip_len is either 8 or 16 bits, + depending on the maximum packet + size. */ + +volatile u8_t uip_flags; /* The uip_flags variable is used for + communication between the TCP/IP stack + and the application program. */ +struct uip_conn *uip_conn; /* uip_conn always points to the current + connection. */ + +struct uip_conn uip_conns[UIP_CONNS]; + /* The uip_conns array holds all TCP + connections. */ +unsigned short int uip_listenports[UIP_LISTENPORTS]; + /* The uip_listenports list all currently + listning ports. */ +#if UIP_UDP +struct uip_udp_conn *uip_udp_conn; +struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; +#endif /* UIP_UDP */ + + +static unsigned short int ipid; /* Ths ipid variable is an increasing + number that is used for the IP ID + field. */ + +static u8_t iss[4]; /* The iss variable is used for the TCP + initial sequence number. */ + +#if UIP_ACTIVE_OPEN +static unsigned short int lastport; /* Keeps track of the last port used for + a new connection. */ +#endif /* UIP_ACTIVE_OPEN */ + +/* Temporary variables. */ +volatile u8_t uip_acc32[4]; +static u8_t c, opt; +static unsigned short int tmp16; + +/* Structures and definitions. */ +#define TCP_FIN 0x01 +#define TCP_SYN 0x02 +#define TCP_RST 0x04 +#define TCP_PSH 0x08 +#define TCP_ACK 0x10 +#define TCP_URG 0x20 +#define TCP_CTL 0x3f + +#define ICMP_ECHO_REPLY 0 +#define ICMP_ECHO 8 + +/* Macros. */ +#define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) +#define FBUF ((uip_tcpip_hdr *)&uip_reassbuf[0]) +#define ICMPBUF ((uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN]) +#define UDPBUF ((uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN]) + +#if UIP_STATISTICS == 1 +struct uip_stats uip_stat; +#define UIP_STAT(s) s +#else +#define UIP_STAT(s) +#endif /* UIP_STATISTICS == 1 */ + +#if UIP_LOGGING == 1 +extern void puts(const char *s); +#define UIP_LOG(m) puts(m) +#else +#define UIP_LOG(m) +#endif /* UIP_LOGGING == 1 */ + +/*-----------------------------------------------------------------------------------*/ +void +uip_init(void) +{ + for(c = 0; c < UIP_LISTENPORTS; ++c) { + uip_listenports[c] = 0; + } + for(c = 0; c < UIP_CONNS; ++c) { + uip_conns[c].tcpstateflags = CLOSED; + } +#if UIP_ACTIVE_OPEN + lastport = 1024; +#endif /* UIP_ACTIVE_OPEN */ + +#if UIP_UDP + for(c = 0; c < UIP_UDP_CONNS; ++c) { + uip_udp_conns[c].lport = 0; + } +#endif /* UIP_UDP */ + + + /* IPv4 initialization. */ +#if UIP_FIXEDADDR == 0 + uip_hostaddr[0] = uip_hostaddr[1] = 0; +#endif /* UIP_FIXEDADDR */ + +} +/*-----------------------------------------------------------------------------------*/ +#if UIP_ACTIVE_OPEN +struct uip_conn * +uip_connect(unsigned short int *ripaddr, unsigned short int rport) +{ + register struct uip_conn *conn, *cconn; + + /* Find an unused local port. */ + again: + ++lastport; + + if(lastport >= 32000) { + lastport = 4096; + } + + /* Check if this port is already in use, and if so try to find + another one. */ + for(c = 0; c < UIP_CONNS; ++c) { + conn = &uip_conns[c]; + if(conn->tcpstateflags != CLOSED && + conn->lport == htons(lastport)) { + goto again; + } + } + + + conn = 0; + for(c = 0; c < UIP_CONNS; ++c) { + cconn = &uip_conns[c]; + if(cconn->tcpstateflags == CLOSED) { + conn = cconn; + break; + } + if(cconn->tcpstateflags == TIME_WAIT) { + if(conn == 0 || + cconn->timer > uip_conn->timer) { + conn = cconn; + } + } + } + + if(conn == 0) { + return 0; + } + + conn->tcpstateflags = SYN_SENT; + + conn->snd_nxt[0] = iss[0]; + conn->snd_nxt[1] = iss[1]; + conn->snd_nxt[2] = iss[2]; + conn->snd_nxt[3] = iss[3]; + + conn->initialmss = conn->mss = UIP_TCP_MSS; + + conn->len = 1; /* TCP length of the SYN is one. */ + conn->nrtx = 0; + conn->timer = 1; /* Send the SYN next time around. */ + conn->rto = UIP_RTO; + conn->sa = 0; + conn->sv = 16; + conn->lport = htons(lastport); + conn->rport = rport; + conn->ripaddr[0] = ripaddr[0]; + conn->ripaddr[1] = ripaddr[1]; + + return conn; +} +#endif /* UIP_ACTIVE_OPEN */ +/*-----------------------------------------------------------------------------------*/ +#if UIP_UDP +struct uip_udp_conn * +uip_udp_new(unsigned short int *ripaddr, unsigned short int rport) +{ + register struct uip_udp_conn *conn; + + /* Find an unused local port. */ + again: + ++lastport; + + if(lastport >= 32000) { + lastport = 4096; + } + + for(c = 0; c < UIP_UDP_CONNS; ++c) { + if(uip_udp_conns[c].lport == lastport) { + goto again; + } + } + + + conn = 0; + for(c = 0; c < UIP_UDP_CONNS; ++c) { + if(uip_udp_conns[c].lport == 0) { + conn = &uip_udp_conns[c]; + break; + } + } + + if(conn == 0) { + return 0; + } + + conn->lport = HTONS(lastport); + conn->rport = HTONS(rport); + conn->ripaddr[0] = ripaddr[0]; + conn->ripaddr[1] = ripaddr[1]; + + return conn; +} +#endif /* UIP_UDP */ +/*-----------------------------------------------------------------------------------*/ +void +uip_unlisten(unsigned short int port) +{ + for(c = 0; c < UIP_LISTENPORTS; ++c) { + if(uip_listenports[c] == port) { + uip_listenports[c] = 0; + return; + } + } +} +/*-----------------------------------------------------------------------------------*/ +void +uip_listen(unsigned short int port) +{ + for(c = 0; c < UIP_LISTENPORTS; ++c) { + if(uip_listenports[c] == 0) { + uip_listenports[c] = port; + return; + } + } +} +/*-----------------------------------------------------------------------------------*/ +/* XXX: IP fragment reassembly: not well-tested. */ + +#if UIP_REASSEMBLY +#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN) +static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; +static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)]; +static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f, + 0x0f, 0x07, 0x03, 0x01}; +static unsigned short int uip_reasslen; +static u8_t uip_reassflags; +#define UIP_REASS_FLAG_LASTFRAG 0x01 +static u8_t uip_reasstmr; + +#define IP_HLEN 20 +#define IP_MF 0x20 + +static u8_t +uip_reass(void) +{ + unsigned short int offset, len; + unsigned short int i; + + /* If ip_reasstmr is zero, no packet is present in the buffer, so we + write the IP header of the fragment into the reassembly + buffer. The timer is updated with the maximum age. */ + if(uip_reasstmr == 0) { + memcpy(uip_reassbuf, &BUF->vhl, IP_HLEN); + uip_reasstmr = UIP_REASS_MAXAGE; + uip_reassflags = 0; + /* Clear the bitmap. */ + memset(uip_reassbitmap, sizeof(uip_reassbitmap), 0); + } + + /* Check if the incoming fragment matches the one currently present + in the reasembly buffer. If so, we proceed with copying the + fragment into the buffer. */ + if(BUF->srcipaddr[0] == FBUF->srcipaddr[0] && + BUF->srcipaddr[1] == FBUF->srcipaddr[1] && + BUF->destipaddr[0] == FBUF->destipaddr[0] && + BUF->destipaddr[1] == FBUF->destipaddr[1] && + BUF->ipid[0] == FBUF->ipid[0] && + BUF->ipid[1] == FBUF->ipid[1]) { + + len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4; + offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8; + + /* If the offset or the offset + fragment length overflows the + reassembly buffer, we discard the entire packet. */ + if(offset > UIP_REASS_BUFSIZE || + offset + len > UIP_REASS_BUFSIZE) { + uip_reasstmr = 0; + goto nullreturn; + } + + /* Copy the fragment into the reassembly buffer, at the right + offset. */ + memcpy(&uip_reassbuf[IP_HLEN + offset], + (char *)BUF + (int)((BUF->vhl & 0x0f) * 4), + len); + + /* Update the bitmap. */ + if(offset / (8 * 8) == (offset + len) / (8 * 8)) { + /* If the two endpoints are in the same byte, we only update + that byte. */ + + uip_reassbitmap[offset / (8 * 8)] |= + bitmap_bits[(offset / 8 ) & 7] & + ~bitmap_bits[((offset + len) / 8 ) & 7]; + } else { + /* If the two endpoints are in different bytes, we update the + bytes in the endpoints and fill the stuff inbetween with + 0xff. */ + uip_reassbitmap[offset / (8 * 8)] |= + bitmap_bits[(offset / 8 ) & 7]; + for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) { + uip_reassbitmap[i] = 0xff; + } + uip_reassbitmap[(offset + len) / (8 * 8)] |= + ~bitmap_bits[((offset + len) / 8 ) & 7]; + } + + /* If this fragment has the More Fragments flag set to zero, we + know that this is the last fragment, so we can calculate the + size of the entire packet. We also set the + IP_REASS_FLAG_LASTFRAG flag to indicate that we have received + the final fragment. */ + + if((BUF->ipoffset[0] & IP_MF) == 0) { + uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; + uip_reasslen = offset + len; + } + + /* Finally, we check if we have a full packet in the buffer. We do + this by checking if we have the last fragment and if all bits + in the bitmap are set. */ + if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) { + /* Check all bytes up to and including all but the last byte in + the bitmap. */ + for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) { + if(uip_reassbitmap[i] != 0xff) { + goto nullreturn; + } + } + /* Check the last byte in the bitmap. It should contain just the + right amount of bits. */ + if(uip_reassbitmap[uip_reasslen / (8 * 8)] != + (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) { + goto nullreturn; + } + + /* If we have come this far, we have a full packet in the + buffer, so we allocate a pbuf and copy the packet into it. We + also reset the timer. */ + uip_reasstmr = 0; + memcpy(BUF, FBUF, uip_reasslen); + + /* Pretend to be a "normal" (i.e., not fragmented) IP packet + from now on. */ + BUF->ipoffset[0] = BUF->ipoffset[1] = 0; + BUF->len[0] = uip_reasslen >> 8; + BUF->len[1] = uip_reasslen & 0xff; + BUF->ipchksum = 0; + BUF->ipchksum = ~(uip_ipchksum()); + + return uip_reasslen; + } + } + + nullreturn: + return 0; +} +#endif /* UIP_REASSEMBL */ +/*-----------------------------------------------------------------------------------*/ +static void +uip_add_rcv_nxt(unsigned short int n) +{ + uip_add32(uip_conn->rcv_nxt, n); + uip_conn->rcv_nxt[0] = uip_acc32[0]; + uip_conn->rcv_nxt[1] = uip_acc32[1]; + uip_conn->rcv_nxt[2] = uip_acc32[2]; + uip_conn->rcv_nxt[3] = uip_acc32[3]; +} +/*-----------------------------------------------------------------------------------*/ +void +uip_process(u8_t flag) +{ + register struct uip_conn *uip_connr = uip_conn; + + uip_appdata = &uip_buf[40 + UIP_LLH_LEN]; + + /* Check if we were invoked because of the perodic timer fireing. */ + if(flag == UIP_TIMER) { +#if UIP_REASSEMBLY + if(uip_reasstmr != 0) { + --uip_reasstmr; + } +#endif /* UIP_REASSEMBLY */ + /* Increase the initial sequence number. */ + if(++iss[3] == 0) { + if(++iss[2] == 0) { + if(++iss[1] == 0) { + ++iss[0]; + } + } + } + uip_len = 0; + if(uip_connr->tcpstateflags == TIME_WAIT || + uip_connr->tcpstateflags == FIN_WAIT_2) { + ++(uip_connr->timer); + if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) { + uip_connr->tcpstateflags = CLOSED; + } + } else if(uip_connr->tcpstateflags != CLOSED) { + /* If the connection has outstanding data, we increase the + connection's timer and see if it has reached the RTO value + in which case we retransmit. */ + if(uip_outstanding(uip_connr)) { + if(uip_connr->timer-- == 0) { + if(uip_connr->nrtx == UIP_MAXRTX || + ((uip_connr->tcpstateflags == SYN_SENT || + uip_connr->tcpstateflags == SYN_RCVD) && + uip_connr->nrtx == UIP_MAXSYNRTX)) { + uip_connr->tcpstateflags = CLOSED; + + /* We call UIP_APPCALL() with uip_flags set to + UIP_TIMEDOUT to inform the application that the + connection has timed out. */ + uip_flags = UIP_TIMEDOUT; + UIP_APPCALL(); + + /* We also send a reset packet to the remote host. */ + BUF->flags = TCP_RST | TCP_ACK; + goto tcp_send_nodata; + } + + /* Exponential backoff. */ + uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4? + 4: + uip_connr->nrtx); + ++(uip_connr->nrtx); + + /* Ok, so we need to retransmit. We do this differently + depending on which state we are in. In ESTABLISHED, we + call upon the application so that it may prepare the + data for the retransmit. In SYN_RCVD, we resend the + SYNACK that we sent earlier and in LAST_ACK we have to + retransmit our FINACK. */ + UIP_STAT(++uip_stat.tcp.rexmit); + switch(uip_connr->tcpstateflags & TS_MASK) { + case SYN_RCVD: + /* In the SYN_RCVD state, we should retransmit our + SYNACK. */ + goto tcp_send_synack; + +#if UIP_ACTIVE_OPEN + case SYN_SENT: + /* In the SYN_SENT state, we retransmit out SYN. */ + BUF->flags = 0; + goto tcp_send_syn; +#endif /* UIP_ACTIVE_OPEN */ + + case ESTABLISHED: + /* In the ESTABLISHED state, we call upon the application + to do the actual retransmit after which we jump into + the code for sending out the packet (the apprexmit + label). */ + uip_len = 0; + uip_slen = 0; + uip_flags = UIP_REXMIT; + UIP_APPCALL(); + goto apprexmit; + + case FIN_WAIT_1: + case CLOSING: + case LAST_ACK: + /* In all these states we should retransmit a FINACK. */ + goto tcp_send_finack; + + } + } + } else if((uip_connr->tcpstateflags & TS_MASK) == ESTABLISHED) { + /* If there was no need for a retransmission, we poll the + application for new data. */ + uip_len = 0; + uip_slen = 0; + uip_flags = UIP_POLL; + UIP_APPCALL(); + goto appsend; + } + } + goto drop; + } +#if UIP_UDP + if(flag == UIP_UDP_TIMER) { + if(uip_udp_conn->lport != 0) { + uip_appdata = &uip_buf[UIP_LLH_LEN + 28]; + uip_len = uip_slen = 0; + uip_flags = UIP_POLL; + UIP_UDP_APPCALL(); + goto udp_send; + } else { + goto drop; + } + } +#endif + + /* This is where the input processing starts. */ + UIP_STAT(++uip_stat.ip.recv); + + + /* Start of IPv4 input header processing code. */ + + /* Check validity of the IP header. */ + if(BUF->vhl != 0x45) { /* IP version and header length. */ + UIP_STAT(++uip_stat.ip.drop); + UIP_STAT(++uip_stat.ip.vhlerr); + UIP_LOG("ip: invalid version or header length."); + goto drop; + } + + /* Check the size of the packet. If the size reported to us in + uip_len doesn't match the size reported in the IP header, there + has been a transmission error and we drop the packet. */ + + if(BUF->len[0] != (uip_len >> 8)) { /* IP length, high byte. */ + uip_len = (uip_len & 0xff) | (BUF->len[0] << 8); + } + if(BUF->len[1] != (uip_len & 0xff)) { /* IP length, low byte. */ + uip_len = (uip_len & 0xff00) | BUF->len[1]; + } + + /* Check the fragment flag. */ + if((BUF->ipoffset[0] & 0x3f) != 0 || + BUF->ipoffset[1] != 0) { +#if UIP_REASSEMBLY + uip_len = uip_reass(); + if(uip_len == 0) { + goto drop; + } +#else + UIP_STAT(++uip_stat.ip.drop); + UIP_STAT(++uip_stat.ip.fragerr); + UIP_LOG("ip: fragment dropped."); + goto drop; +#endif /* UIP_REASSEMBLY */ + } + + /* If we are configured to use ping IP address configuration and + hasn't been assigned an IP address yet, we accept all ICMP + packets. */ +#if UIP_PINGADDRCONF + if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) { + if(BUF->proto == UIP_PROTO_ICMP) { + UIP_LOG("ip: possible ping config packet received."); + goto icmp_input; + } else { + UIP_LOG("ip: packet dropped since no address assigned."); + goto drop; + } + } +#endif /* UIP_PINGADDRCONF */ + + /* Check if the packet is destined for our IP address. */ + if(BUF->destipaddr[0] != uip_hostaddr[0]) { + UIP_STAT(++uip_stat.ip.drop); + //UIP_LOG("ip: packet not for us."); + goto drop; + } + if(BUF->destipaddr[1] != uip_hostaddr[1]) { + UIP_STAT(++uip_stat.ip.drop); + //UIP_LOG("ip: packet not for us."); + goto drop; + } + + if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header + checksum. */ + UIP_STAT(++uip_stat.ip.drop); + UIP_STAT(++uip_stat.ip.chkerr); + UIP_LOG("ip: bad checksum."); + goto drop; + } + + if(BUF->proto == UIP_PROTO_TCP) /* Check for TCP packet. If so, jump + to the tcp_input label. */ + goto tcp_input; + +#if UIP_UDP + if(BUF->proto == UIP_PROTO_UDP) + goto udp_input; +#endif /* UIP_UDP */ + + if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from + here. */ + UIP_STAT(++uip_stat.ip.drop); + UIP_STAT(++uip_stat.ip.protoerr); + UIP_LOG("ip: neither tcp nor icmp."); + goto drop; + } + + //icmp_input: + UIP_STAT(++uip_stat.icmp.recv); + + /* ICMP echo (i.e., ping) processing. This is simple, we only change + the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP + checksum before we return the packet. */ + if(ICMPBUF->type != ICMP_ECHO) { + UIP_STAT(++uip_stat.icmp.drop); + UIP_STAT(++uip_stat.icmp.typeerr); + UIP_LOG("icmp: not icmp echo."); + goto drop; + } + + /* If we are configured to use ping IP address assignment, we use + the destination IP address of this ping packet and assign it to + ourself. */ +#if UIP_PINGADDRCONF + if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) { + uip_hostaddr[0] = BUF->destipaddr[0]; + uip_hostaddr[1] = BUF->destipaddr[1]; + } +#endif /* UIP_PINGADDRCONF */ + + ICMPBUF->type = ICMP_ECHO_REPLY; + + if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) { + ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1; + } else { + ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8); + } + + /* Swap IP addresses. */ + tmp16 = BUF->destipaddr[0]; + BUF->destipaddr[0] = BUF->srcipaddr[0]; + BUF->srcipaddr[0] = tmp16; + tmp16 = BUF->destipaddr[1]; + BUF->destipaddr[1] = BUF->srcipaddr[1]; + BUF->srcipaddr[1] = tmp16; + + UIP_STAT(++uip_stat.icmp.sent); + goto send; + + /* End of IPv4 input header processing code. */ + + +#if UIP_UDP + /* UDP input processing. */ + udp_input: + /* UDP processing is really just a hack. We don't do anything to the + UDP/IP headers, but let the UDP application do all the hard + work. If the application sets uip_slen, it has a packet to + send. */ +#if UIP_UDP_CHECKSUMS + if(uip_udpchksum() != 0xffff) { + UIP_STAT(++uip_stat.udp.drop); + UIP_STAT(++uip_stat.udp.chkerr); + UIP_LOG("udp: bad checksum."); + goto drop; + } +#endif /* UIP_UDP_CHECKSUMS */ + + /* Demultiplex this UDP packet between the UDP "connections". */ + for(uip_udp_conn = &uip_udp_conns[0]; + uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS]; + ++uip_udp_conn) { + if(uip_udp_conn->lport != 0 && + UDPBUF->destport == uip_udp_conn->lport && + (uip_udp_conn->rport == 0 || + UDPBUF->srcport == uip_udp_conn->rport) && + BUF->srcipaddr[0] == uip_udp_conn->ripaddr[0] && + BUF->srcipaddr[1] == uip_udp_conn->ripaddr[1]) { + goto udp_found; + } + } + goto drop; + + udp_found: + uip_len = uip_len - 28; + uip_appdata = &uip_buf[UIP_LLH_LEN + 28]; + uip_flags = UIP_NEWDATA; + uip_slen = 0; + UIP_UDP_APPCALL(); + udp_send: + if(uip_slen == 0) { + goto drop; + } + uip_len = uip_slen + 28; + + BUF->len[0] = (uip_len >> 8); + BUF->len[1] = (uip_len & 0xff); + + BUF->proto = UIP_PROTO_UDP; + + UDPBUF->udplen = HTONS(uip_slen + 8); + UDPBUF->udpchksum = 0; +#if UIP_UDP_CHECKSUMS + /* Calculate UDP checksum. */ + UDPBUF->udpchksum = ~(uip_udpchksum()); + if(UDPBUF->udpchksum == 0) { + UDPBUF->udpchksum = 0xffff; + } +#endif /* UIP_UDP_CHECKSUMS */ + + BUF->srcport = uip_udp_conn->lport; + BUF->destport = uip_udp_conn->rport; + + BUF->srcipaddr[0] = uip_hostaddr[0]; + BUF->srcipaddr[1] = uip_hostaddr[1]; + BUF->destipaddr[0] = uip_udp_conn->ripaddr[0]; + BUF->destipaddr[1] = uip_udp_conn->ripaddr[1]; + + uip_appdata = &uip_buf[UIP_LLH_LEN + 40]; + goto ip_send_nolen; +#endif /* UIP_UDP */ + + /* TCP input processing. */ + tcp_input: + UIP_STAT(++uip_stat.tcp.recv); + + /* Start of TCP input header processing code. */ + if(uip_tcpchksum() != 0xffff) { /* Compute and check the TCP + checksum. */ + UIP_STAT(++uip_stat.tcp.drop); + UIP_STAT(++uip_stat.tcp.chkerr); + UIP_LOG("tcp: bad checksum."); + goto drop; + } + /* Demultiplex this segment. */ + /* First check any active connections. */ + for(uip_connr = &uip_conns[0]; uip_connr < &uip_conns[UIP_CONNS]; ++uip_connr) { + if(uip_connr->tcpstateflags != CLOSED && + BUF->destport == uip_connr->lport && + BUF->srcport == uip_connr->rport && + BUF->srcipaddr[0] == uip_connr->ripaddr[0] && + BUF->srcipaddr[1] == uip_connr->ripaddr[1]) { + goto found; + } + } + + /* If we didn't find and active connection that expected the packet, + either this packet is an old duplicate, or this is a SYN packet + destined for a connection in LISTEN. If the SYN flag isn't set, + it is an old packet and we send a RST. */ + if((BUF->flags & TCP_CTL) != TCP_SYN) + goto reset; + + tmp16 = BUF->destport; + /* Next, check listening connections. */ + for(c = 0; c < UIP_LISTENPORTS; ++c) { + if(tmp16 == uip_listenports[c]) + goto found_listen; + } + + /* No matching connection found, so we send a RST packet. */ + UIP_STAT(++uip_stat.tcp.synrst); + reset: + + /* We do not send resets in response to resets. */ + if(BUF->flags & TCP_RST) + goto drop; + + UIP_STAT(++uip_stat.tcp.rst); + + BUF->flags = TCP_RST | TCP_ACK; + uip_len = 40; + BUF->tcpoffset = 5 << 4; + + /* Flip the seqno and ackno fields in the TCP header. */ + c = BUF->seqno[3]; + BUF->seqno[3] = BUF->ackno[3]; + BUF->ackno[3] = c; + + c = BUF->seqno[2]; + BUF->seqno[2] = BUF->ackno[2]; + BUF->ackno[2] = c; + + c = BUF->seqno[1]; + BUF->seqno[1] = BUF->ackno[1]; + BUF->ackno[1] = c; + + c = BUF->seqno[0]; + BUF->seqno[0] = BUF->ackno[0]; + BUF->ackno[0] = c; + + /* We also have to increase the sequence number we are + acknowledging. If the least significant byte overflowed, we need + to propagate the carry to the other bytes as well. */ + if(++BUF->ackno[3] == 0) { + if(++BUF->ackno[2] == 0) { + if(++BUF->ackno[1] == 0) { + ++BUF->ackno[0]; + } + } + } + + /* Swap port numbers. */ + tmp16 = BUF->srcport; + BUF->srcport = BUF->destport; + BUF->destport = tmp16; + + /* Swap IP addresses. */ + tmp16 = BUF->destipaddr[0]; + BUF->destipaddr[0] = BUF->srcipaddr[0]; + BUF->srcipaddr[0] = tmp16; + tmp16 = BUF->destipaddr[1]; + BUF->destipaddr[1] = BUF->srcipaddr[1]; + BUF->srcipaddr[1] = tmp16; + + + /* And send out the RST packet! */ + goto tcp_send_noconn; + + /* This label will be jumped to if we matched the incoming packet + with a connection in LISTEN. In that case, we should create a new + connection and send a SYNACK in return. */ + found_listen: + /* First we check if there are any connections avaliable. Unused + connections are kept in the same table as used connections, but + unused ones have the tcpstate set to CLOSED. Also, connections in + TIME_WAIT are kept track of and we'll use the oldest one if no + CLOSED connections are found. Thanks to Eddie C. Dost for a very + nice algorithm for the TIME_WAIT search. */ + uip_connr = 0; + for(c = 0; c < UIP_CONNS; ++c) { + if(uip_conns[c].tcpstateflags == CLOSED) { + uip_connr = &uip_conns[c]; + break; + } + if(uip_conns[c].tcpstateflags == TIME_WAIT) { + if(uip_connr == 0 || + uip_conns[c].timer > uip_connr->timer) { + uip_connr = &uip_conns[c]; + } + } + } + + if(uip_connr == 0) { + /* All connections are used already, we drop packet and hope that + the remote end will retransmit the packet at a time when we + have more spare connections. */ + UIP_STAT(++uip_stat.tcp.syndrop); + UIP_LOG("tcp: found no unused connections."); + goto drop; + } + uip_conn = uip_connr; + + /* Fill in the necessary fields for the new connection. */ + uip_connr->rto = uip_connr->timer = UIP_RTO; + uip_connr->sa = 0; + uip_connr->sv = 4; + uip_connr->nrtx = 0; + uip_connr->lport = BUF->destport; + uip_connr->rport = BUF->srcport; + uip_connr->ripaddr[0] = BUF->srcipaddr[0]; + uip_connr->ripaddr[1] = BUF->srcipaddr[1]; + uip_connr->tcpstateflags = SYN_RCVD; + + uip_connr->snd_nxt[0] = iss[0]; + uip_connr->snd_nxt[1] = iss[1]; + uip_connr->snd_nxt[2] = iss[2]; + uip_connr->snd_nxt[3] = iss[3]; + uip_connr->len = 1; + + /* rcv_nxt should be the seqno from the incoming packet + 1. */ + uip_connr->rcv_nxt[3] = BUF->seqno[3]; + uip_connr->rcv_nxt[2] = BUF->seqno[2]; + uip_connr->rcv_nxt[1] = BUF->seqno[1]; + uip_connr->rcv_nxt[0] = BUF->seqno[0]; + uip_add_rcv_nxt(1); + + /* Parse the TCP MSS option, if present. */ + if((BUF->tcpoffset & 0xf0) > 0x50) { + for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { + opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c]; + if(opt == 0x00) { + /* End of options. */ + break; + } else if(opt == 0x01) { + ++c; + /* NOP option. */ + } else if(opt == 0x02 && + uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0x04) { + /* An MSS option with the right option length. */ + tmp16 = ((unsigned short int)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | + (unsigned short int)uip_buf[40 + UIP_LLH_LEN + 3 + c]; + uip_connr->initialmss = uip_connr->mss = + tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; + + /* And we are done processing options. */ + break; + } else { + /* All other options have a length field, so that we easily + can skip past them. */ + if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { + /* If the length field is zero, the options are malformed + and we don't process them further. */ + break; + } + c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; + } + } + } + + /* Our response will be a SYNACK. */ +#if UIP_ACTIVE_OPEN + tcp_send_synack: + BUF->flags = TCP_ACK; + + tcp_send_syn: + BUF->flags |= TCP_SYN; +#else /* UIP_ACTIVE_OPEN */ + tcp_send_synack: + BUF->flags = TCP_SYN | TCP_ACK; +#endif /* UIP_ACTIVE_OPEN */ + + /* We send out the TCP Maximum Segment Size option with our + SYNACK. */ + BUF->optdata[0] = 2; + BUF->optdata[1] = 4; + BUF->optdata[2] = (UIP_TCP_MSS) / 256; + BUF->optdata[3] = (UIP_TCP_MSS) & 255; + uip_len = 44; + BUF->tcpoffset = 6 << 4; + goto tcp_send; + + /* This label will be jumped to if we found an active connection. */ + found: + uip_conn = uip_connr; + uip_flags = 0; + + /* We do a very naive form of TCP reset processing; we just accept + any RST and kill our connection. We should in fact check if the + sequence number of this reset is wihtin our advertised window + before we accept the reset. */ + if(BUF->flags & TCP_RST) { + uip_connr->tcpstateflags = CLOSED; + UIP_LOG("tcp: got reset, aborting connection."); + uip_flags = UIP_ABORT; + UIP_APPCALL(); + goto drop; + } + /* Calculated the length of the data, if the application has sent + any data to us. */ + c = (BUF->tcpoffset >> 4) << 2; + /* uip_len will contain the length of the actual TCP data. This is + calculated by subtracing the length of the TCP header (in + c) and the length of the IP header (20 bytes). */ + uip_len = uip_len - c - 20; + + /* First, check if the sequence number of the incoming packet is + what we're expecting next. If not, we send out an ACK with the + correct numbers in. */ + if(uip_len > 0 && + (BUF->seqno[0] != uip_connr->rcv_nxt[0] || + BUF->seqno[1] != uip_connr->rcv_nxt[1] || + BUF->seqno[2] != uip_connr->rcv_nxt[2] || + BUF->seqno[3] != uip_connr->rcv_nxt[3])) { + goto tcp_send_ack; + } + + /* Next, check if the incoming segment acknowledges any outstanding + data. If so, we update the sequence number, reset the length of + the outstanding data, calculate RTT estimations, and reset the + retransmission timer. */ + if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) { + uip_add32(uip_connr->snd_nxt, uip_connr->len); + if(BUF->ackno[0] == uip_acc32[0] && + BUF->ackno[1] == uip_acc32[1] && + BUF->ackno[2] == uip_acc32[2] && + BUF->ackno[3] == uip_acc32[3]) { + /* Update sequence number. */ + uip_connr->snd_nxt[0] = uip_acc32[0]; + uip_connr->snd_nxt[1] = uip_acc32[1]; + uip_connr->snd_nxt[2] = uip_acc32[2]; + uip_connr->snd_nxt[3] = uip_acc32[3]; + + + /* Do RTT estimation, unless we have done retransmissions. */ + if(uip_connr->nrtx == 0) { + signed char m; + m = uip_connr->rto - uip_connr->timer; + /* This is taken directly from VJs original code in his paper */ + m = m - (uip_connr->sa >> 3); + uip_connr->sa += m; + if(m < 0) { + m = -m; + } + m = m - (uip_connr->sv >> 2); + uip_connr->sv += m; + uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv; + + } + /* Set the acknowledged flag. */ + uip_flags = UIP_ACKDATA; + /* Reset the retransmission timer. */ + uip_connr->timer = uip_connr->rto; + } + + } + + /* Do different things depending on in what state the connection is. */ + switch(uip_connr->tcpstateflags & TS_MASK) { + /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not + implemented, since we force the application to close when the + peer sends a FIN (hence the application goes directly from + ESTABLISHED to LAST_ACK). */ + case SYN_RCVD: + /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and + we are waiting for an ACK that acknowledges the data we sent + out the last time. Therefore, we want to have the UIP_ACKDATA + flag set. If so, we enter the ESTABLISHED state. */ + if(uip_flags & UIP_ACKDATA) { + uip_connr->tcpstateflags = ESTABLISHED; + uip_flags = UIP_CONNECTED; + uip_connr->len = 0; + if(uip_len > 0) { + uip_flags |= UIP_NEWDATA; + uip_add_rcv_nxt(uip_len); + } + uip_slen = 0; + UIP_APPCALL(); + goto appsend; + } + goto drop; +#if UIP_ACTIVE_OPEN + case SYN_SENT: + /* In SYN_SENT, we wait for a SYNACK that is sent in response to + our SYN. The rcv_nxt is set to sequence number in the SYNACK + plus one, and we send an ACK. We move into the ESTABLISHED + state. */ + if((uip_flags & UIP_ACKDATA) && + BUF->flags == (TCP_SYN | TCP_ACK)) { + + /* Parse the TCP MSS option, if present. */ + if((BUF->tcpoffset & 0xf0) > 0x50) { + for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) { + opt = uip_buf[40 + UIP_LLH_LEN + c]; + if(opt == 0x00) { + /* End of options. */ + break; + } else if(opt == 0x01) { + ++c; + /* NOP option. */ + } else if(opt == 0x02 && + uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0x04) { + /* An MSS option with the right option length. */ + tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) | + uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c]; + uip_connr->initialmss = + uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16; + + /* And we are done processing options. */ + break; + } else { + /* All other options have a length field, so that we easily + can skip past them. */ + if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) { + /* If the length field is zero, the options are malformed + and we don't process them further. */ + break; + } + c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c]; + } + } + } + uip_connr->tcpstateflags = ESTABLISHED; + uip_connr->rcv_nxt[0] = BUF->seqno[0]; + uip_connr->rcv_nxt[1] = BUF->seqno[1]; + uip_connr->rcv_nxt[2] = BUF->seqno[2]; + uip_connr->rcv_nxt[3] = BUF->seqno[3]; + uip_add_rcv_nxt(1); + uip_flags = UIP_CONNECTED | UIP_NEWDATA; + uip_connr->len = 0; + uip_len = 0; + uip_slen = 0; + UIP_APPCALL(); + goto appsend; + } + goto reset; +#endif /* UIP_ACTIVE_OPEN */ + + case ESTABLISHED: + /* In the ESTABLISHED state, we call upon the application to feed + data into the uip_buf. If the UIP_ACKDATA flag is set, the + application should put new data into the buffer, otherwise we are + retransmitting an old segment, and the application should put that + data into the buffer. + + If the incoming packet is a FIN, we should close the connection on + this side as well, and we send out a FIN and enter the LAST_ACK + state. We require that there is no outstanding data; otherwise the + sequence numbers will be screwed up. */ + + if(BUF->flags & TCP_FIN) { + if(uip_outstanding(uip_connr)) { + goto drop; + } + uip_add_rcv_nxt(1 + uip_len); + uip_flags = UIP_CLOSE; + if(uip_len > 0) { + uip_flags |= UIP_NEWDATA; + } + UIP_APPCALL(); + uip_connr->len = 1; + uip_connr->tcpstateflags = LAST_ACK; + uip_connr->nrtx = 0; + tcp_send_finack: + BUF->flags = TCP_FIN | TCP_ACK; + goto tcp_send_nodata; + } + + /* Check the URG flag. If this is set, the segment carries urgent + data that we must pass to the application. */ + if(BUF->flags & TCP_URG) { +#if UIP_URGDATA > 0 + uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1]; + if(uip_urglen > uip_len) { + /* There is more urgent data in the next segment to come. */ + uip_urglen = uip_len; + } + uip_add_rcv_nxt(uip_urglen); + uip_len -= uip_urglen; + uip_urgdata = uip_appdata; + uip_appdata += uip_urglen; + } else { + uip_urglen = 0; +#endif /* UIP_URGDATA > 0 */ + uip_appdata += (BUF->urgp[0] << 8) | BUF->urgp[1]; + uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1]; + } + + + /* If uip_len > 0 we have TCP data in the packet, and we flag this + by setting the UIP_NEWDATA flag and update the sequence number + we acknowledge. If the application has stopped the dataflow + using uip_stop(), we must not accept any data packets from the + remote host. */ + if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) { + uip_flags |= UIP_NEWDATA; + uip_add_rcv_nxt(uip_len); + } + + /* Check if the available buffer space advertised by the other end + is smaller than the initial MSS for this connection. If so, we + set the current MSS to the window size to ensure that the + application does not send more data than the other end can + handle. + + If the remote host advertises a zero window, we set the MSS to + the initial MSS so that the application will send an entire MSS + of data. This data will not be acknowledged by the receiver, + and the application will retransmit it. This is called the + "persistent timer" and uses the retransmission mechanim. + */ + tmp16 = ((unsigned short int)BUF->wnd[0] << 8) + (unsigned short int)BUF->wnd[1]; + if(tmp16 > uip_connr->initialmss || + tmp16 == 0) { + tmp16 = uip_connr->initialmss; + } + uip_connr->mss = tmp16; + + /* If this packet constitutes an ACK for outstanding data (flagged + by the UIP_ACKDATA flag, we should call the application since it + might want to send more data. If the incoming packet had data + from the peer (as flagged by the UIP_NEWDATA flag), the + application must also be notified. + + When the application is called, the global variable uip_len + contains the length of the incoming data. The application can + access the incoming data through the global pointer + uip_appdata, which usually points 40 bytes into the uip_buf + array. + + If the application wishes to send any data, this data should be + put into the uip_appdata and the length of the data should be + put into uip_len. If the application don't have any data to + send, uip_len must be set to 0. */ + if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) { + uip_slen = 0; + UIP_APPCALL(); + + appsend: + + if(uip_flags & UIP_ABORT) { + uip_slen = 0; + uip_connr->tcpstateflags = CLOSED; + BUF->flags = TCP_RST | TCP_ACK; + goto tcp_send_nodata; + } + + if(uip_flags & UIP_CLOSE) { + uip_slen = 0; + uip_connr->len = 1; + uip_connr->tcpstateflags = FIN_WAIT_1; + uip_connr->nrtx = 0; + BUF->flags = TCP_FIN | TCP_ACK; + goto tcp_send_nodata; + } + + /* If uip_slen > 0, the application has data to be sent. */ + if(uip_slen > 0) { + + /* If the connection has acknowledged data, the contents of + the ->len variable should be discarded. */ + if((uip_flags & UIP_ACKDATA) != 0) { + uip_connr->len = 0; + } + + /* If the ->len variable is non-zero the connection has + already data in transit and cannot send anymore right + now. */ + if(uip_connr->len == 0) { + + /* The application cannot send more than what is allowed by + the mss (the minumum of the MSS and the available + window). */ + if(uip_slen > uip_connr->mss) { + uip_slen = uip_connr->mss; + } + + /* Remember how much data we send out now so that we know + when everything has been acknowledged. */ + uip_connr->len = uip_slen; + } else { + + /* If the application already had unacknowledged data, we + make sure that the application does not send (i.e., + retransmit) out more than it previously sent out. */ + uip_slen = uip_connr->len; + } + } else { + uip_connr->len = 0; + } + uip_connr->nrtx = 0; + apprexmit: + uip_appdata = uip_sappdata; + + /* If the application has data to be sent, or if the incoming + packet had new data in it, we must send out a packet. */ + if(uip_slen > 0 && uip_connr->len > 0) { + /* Add the length of the IP and TCP headers. */ + uip_len = uip_connr->len + UIP_TCPIP_HLEN; + /* We always set the ACK flag in response packets. */ + BUF->flags = TCP_ACK | TCP_PSH; + /* Send the packet. */ + goto tcp_send_noopts; + } + /* If there is no data to send, just send out a pure ACK if + there is newdata. */ + if(uip_flags & UIP_NEWDATA) { + uip_len = UIP_TCPIP_HLEN; + BUF->flags = TCP_ACK; + goto tcp_send_noopts; + } + } + goto drop; + case LAST_ACK: + /* We can close this connection if the peer has acknowledged our + FIN. This is indicated by the UIP_ACKDATA flag. */ + if(uip_flags & UIP_ACKDATA) { + uip_connr->tcpstateflags = CLOSED; + uip_flags = UIP_CLOSE; + UIP_APPCALL(); + } + break; + + case FIN_WAIT_1: + /* The application has closed the connection, but the remote host + hasn't closed its end yet. Thus we do nothing but wait for a + FIN from the other side. */ + if(uip_len > 0) { + uip_add_rcv_nxt(uip_len); + } + if(BUF->flags & TCP_FIN) { + if(uip_flags & UIP_ACKDATA) { + uip_connr->tcpstateflags = TIME_WAIT; + uip_connr->timer = 0; + uip_connr->len = 0; + } else { + uip_connr->tcpstateflags = CLOSING; + } + uip_add_rcv_nxt(1); + uip_flags = UIP_CLOSE; + UIP_APPCALL(); + goto tcp_send_ack; + } else if(uip_flags & UIP_ACKDATA) { + uip_connr->tcpstateflags = FIN_WAIT_2; + uip_connr->len = 0; + goto drop; + } + if(uip_len > 0) { + goto tcp_send_ack; + } + goto drop; + + case FIN_WAIT_2: + if(uip_len > 0) { + uip_add_rcv_nxt(uip_len); + } + if(BUF->flags & TCP_FIN) { + uip_connr->tcpstateflags = TIME_WAIT; + uip_connr->timer = 0; + uip_add_rcv_nxt(1); + uip_flags = UIP_CLOSE; + UIP_APPCALL(); + goto tcp_send_ack; + } + if(uip_len > 0) { + goto tcp_send_ack; + } + goto drop; + + case TIME_WAIT: + goto tcp_send_ack; + + case CLOSING: + if(uip_flags & UIP_ACKDATA) { + uip_connr->tcpstateflags = TIME_WAIT; + uip_connr->timer = 0; + } + } + goto drop; + + + /* We jump here when we are ready to send the packet, and just want + to set the appropriate TCP sequence numbers in the TCP header. */ + tcp_send_ack: + BUF->flags = TCP_ACK; + tcp_send_nodata: + uip_len = 40; + tcp_send_noopts: + BUF->tcpoffset = 5 << 4; + tcp_send: + /* We're done with the input processing. We are now ready to send a + reply. Our job is to fill in all the fields of the TCP and IP + headers before calculating the checksum and finally send the + packet. */ + BUF->ackno[0] = uip_connr->rcv_nxt[0]; + BUF->ackno[1] = uip_connr->rcv_nxt[1]; + BUF->ackno[2] = uip_connr->rcv_nxt[2]; + BUF->ackno[3] = uip_connr->rcv_nxt[3]; + + BUF->seqno[0] = uip_connr->snd_nxt[0]; + BUF->seqno[1] = uip_connr->snd_nxt[1]; + BUF->seqno[2] = uip_connr->snd_nxt[2]; + BUF->seqno[3] = uip_connr->snd_nxt[3]; + + BUF->proto = UIP_PROTO_TCP; + + BUF->srcport = uip_connr->lport; + BUF->destport = uip_connr->rport; + + BUF->srcipaddr[0] = uip_hostaddr[0]; + BUF->srcipaddr[1] = uip_hostaddr[1]; + BUF->destipaddr[0] = uip_connr->ripaddr[0]; + BUF->destipaddr[1] = uip_connr->ripaddr[1]; + + + if(uip_connr->tcpstateflags & UIP_STOPPED) { + /* If the connection has issued uip_stop(), we advertise a zero + window so that the remote host will stop sending data. */ + BUF->wnd[0] = BUF->wnd[1] = 0; + } else { + BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8); + BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff); + } + + tcp_send_noconn: + + BUF->len[0] = (uip_len >> 8); + BUF->len[1] = (uip_len & 0xff); + + /* Calculate TCP checksum. */ + BUF->tcpchksum = 0; + BUF->tcpchksum = ~(uip_tcpchksum()); + + //ip_send_nolen: + + BUF->vhl = 0x45; + BUF->tos = 0; + BUF->ipoffset[0] = BUF->ipoffset[1] = 0; + BUF->ttl = UIP_TTL; + ++ipid; + BUF->ipid[0] = ipid >> 8; + BUF->ipid[1] = ipid & 0xff; + + /* Calculate IP checksum. */ + BUF->ipchksum = 0; + BUF->ipchksum = ~(uip_ipchksum()); + + UIP_STAT(++uip_stat.tcp.sent); + send: + UIP_STAT(++uip_stat.ip.sent); + /* Return and let the caller do the actual transmission. */ + return; + drop: + uip_len = 0; + return; +} +/*-----------------------------------------------------------------------------------*/ +/*unsigned short int +htons(unsigned short int val) +{ + return HTONS(val); +}*/ +/*-----------------------------------------------------------------------------------*/ +/** @} */ diff --git a/board/broadcom/bcmbca/httpd/uip.h b/board/broadcom/bcmbca/httpd/uip.h new file mode 100644 index 0000000000..6012de7be0 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/uip.h @@ -0,0 +1,1066 @@ +/** + * \addtogroup uip + * @{ + */ + +/** + * \file + * Header file for the uIP TCP/IP stack. + * \author Adam Dunkels + * + * The uIP TCP/IP stack header file contains definitions for a number + * of C macros that are used by uIP programs as well as internal uIP + * structures, TCP/IP header structures and function declarations. + * + */ + + +/* + * Copyright (c) 2001-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip.h,v 1.36.2.7 2003/10/07 13:47:51 adam Exp $ + * + */ + +#ifndef __UIP_H__ +#define __UIP_H__ +#include +#include +#include +#include +#include + + +#include "uipopt.h" + +/*-----------------------------------------------------------------------------------*/ +/* First, the functions that should be called from the + * system. Initialization, the periodic timer and incoming packets are + * handled by the following three functions. + */ + +/** + * \defgroup uipconffunc uIP configuration functions + * @{ + * + * The uIP configuration functions are used for setting run-time + * parameters in uIP such as IP addresses. + */ + +/** + * Set the IP address of this host. + * + * The IP address is represented as a 4-byte array where the first + * octet of the IP address is put in the first member of the 4-byte + * array. + * + * \param addr A pointer to a 4-byte representation of the IP address. + * + * \hideinitializer + */ +#define uip_sethostaddr(addr) do { uip_hostaddr[0] = addr[0]; \ + uip_hostaddr[1] = addr[1]; } while(0) + +/** + * Get the IP address of this host. + * + * The IP address is represented as a 4-byte array where the first + * octet of the IP address is put in the first member of the 4-byte + * array. + * + * \param addr A pointer to a 4-byte array that will be filled in with + * the currently configured IP address. + * + * \hideinitializer + */ +#define uip_gethostaddr(addr) do { addr[0] = uip_hostaddr[0]; \ + addr[1] = uip_hostaddr[1]; } while(0) + +/** @} */ + +/** + * \defgroup uipinit uIP initialization functions + * @{ + * + * The uIP initialization functions are used for booting uIP. + */ + +/** + * uIP initialization function. + * + * This function should be called at boot up to initilize the uIP + * TCP/IP stack. + */ +void uip_init(void); + +/** @} */ + +/** + * \defgroup uipdevfunc uIP device driver functions + * @{ + * + * These functions are used by a network device driver for interacting + * with uIP. + */ + +/** + * Process an incoming packet. + * + * This function should be called when the device driver has received + * a packet from the network. The packet from the device driver must + * be present in the uip_buf buffer, and the length of the packet + * should be placed in the uip_len variable. + * + * When the function returns, there may be an outbound packet placed + * in the uip_buf packet buffer. If so, the uip_len variable is set to + * the length of the packet. If no packet is to be sent out, the + * uip_len variable is set to 0. + * + * The usual way of calling the function is presented by the source + * code below. + \code + uip_len = devicedriver_poll(); + if(uip_len > 0) { + uip_input(); + if(uip_len > 0) { + devicedriver_send(); + } + } + \endcode + * + * \note If you are writing a uIP device driver that needs ARP + * (Address Resolution Protocol), e.g., when running uIP over + * Ethernet, you will need to call the uIP ARP code before calling + * this function: + \code + #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) + uip_len = ethernet_devicedrver_poll(); + if(uip_len > 0) { + if(BUF->type == HTONS(UIP_ETHTYPE_IP)) { + uip_arp_ipin(); + uip_input(); + if(uip_len > 0) { + uip_arp_out(); + ethernet_devicedriver_send(); + } + } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) { + uip_arp_arpin(); + if(uip_len > 0) { + ethernet_devicedriver_send(); + } + } + \endcode + * + * \hideinitializer + */ +#define uip_input() uip_process(UIP_DATA) + +/** + * Periodic processing for a connection identified by its number. + * + * This function does the necessary periodic processing (timers, + * polling) for a uIP TCP conneciton, and should be called when the + * periodic uIP timer goes off. It should be called for every + * connection, regardless of whether they are open of closed. + * + * When the function returns, it may have an outbound packet waiting + * for service in the uIP packet buffer, and if so the uip_len + * variable is set to a value larger than zero. The device driver + * should be called to send out the packet. + * + * The ususal way of calling the function is through a for() loop like + * this: + \code + for(i = 0; i < UIP_CONNS; ++i) { + uip_periodic(i); + if(uip_len > 0) { + devicedriver_send(); + } + } + \endcode + * + * \note If you are writing a uIP device driver that needs ARP + * (Address Resolution Protocol), e.g., when running uIP over + * Ethernet, you will need to call the uip_arp_out() function before + * calling the device driver: + \code + for(i = 0; i < UIP_CONNS; ++i) { + uip_periodic(i); + if(uip_len > 0) { + uip_arp_out(); + ethernet_devicedriver_send(); + } + } + \endcode + * + * \param conn The number of the connection which is to be periodically polled. + * + * \hideinitializer + */ +#define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \ + uip_process(UIP_TIMER); } while (0) + +/** + * Periodic processing for a connection identified by a pointer to its structure. + * + * Same as uip_periodic() but takes a pointer to the actual uip_conn + * struct instead of an integer as its argument. This function can be + * used to force periodic processing of a specific connection. + * + * \param conn A pointer to the uip_conn struct for the connection to + * be processed. + * + * \hideinitializer + */ +#define uip_periodic_conn(conn) do { uip_conn = conn; \ + uip_process(UIP_TIMER); } while (0) + +#if UIP_UDP +/** + * Periodic processing for a UDP connection identified by its number. + * + * This function is essentially the same as uip_prerioic(), but for + * UDP connections. It is called in a similar fashion as the + * uip_periodic() function: + \code + for(i = 0; i < UIP_UDP_CONNS; i++) { + uip_udp_periodic(i); + if(uip_len > 0) { + devicedriver_send(); + } + } + \endcode + * + * \note As for the uip_periodic() function, special care has to be + * taken when using uIP together with ARP and Ethernet: + \code + for(i = 0; i < UIP_UDP_CONNS; i++) { + uip_udp_periodic(i); + if(uip_len > 0) { + uip_arp_out(); + ethernet_devicedriver_send(); + } + } + \endcode + * + * \param conn The number of the UDP connection to be processed. + * + * \hideinitializer + */ +#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \ + uip_process(UIP_UDP_TIMER); } while (0) + +/** + * Periodic processing for a UDP connection identified by a pointer to + * its structure. + * + * Same as uip_udp_periodic() but takes a pointer to the actual + * uip_conn struct instead of an integer as its argument. This + * function can be used to force periodic processing of a specific + * connection. + * + * \param conn A pointer to the uip_udp_conn struct for the connection + * to be processed. + * + * \hideinitializer + */ +#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \ + uip_process(UIP_UDP_TIMER); } while (0) + + +#endif /* UIP_UDP */ + +/** + * The uIP packet buffer. + * + * The uip_buf array is used to hold incoming and outgoing + * packets. The device driver should place incoming data into this + * buffer. When sending data, the device driver should read the link + * level headers and the TCP/IP headers from this buffer. The size of + * the link level headers is configured by the UIP_LLH_LEN define. + * + * \note The application data need not be placed in this buffer, so + * the device driver must read it from the place pointed to by the + * uip_appdata pointer as illustrated by the following example: + \code + void + devicedriver_send(void) + { + hwsend(&uip_buf[0], UIP_LLH_LEN); + hwsend(&uip_buf[UIP_LLH_LEN], 40); + hwsend(uip_appdata, uip_len - 40 - UIP_LLH_LEN); + } + \endcode + */ +extern u8_t uip_buf[UIP_BUFSIZE+4]; + +/** @} */ + +/*-----------------------------------------------------------------------------------*/ +/* Functions that are used by the uIP application program. Opening and + * closing connections, sending and receiving data, etc. is all + * handled by the functions below. +*/ +/** + * \defgroup uipappfunc uIP application functions + * @{ + * + * Functions used by an application running of top of uIP. + */ + +/** + * Start listening to the specified port. + * + * \note Since this function expects the port number in network byte + * order, a conversion using HTONS() or htons() is necessary. + * + \code + uip_listen(HTONS(80)); + \endcode + * + * \param port A 16-bit port number in network byte order. + */ +void uip_listen(u16_t port); + +/** + * Stop listening to the specified port. + * + * \note Since this function expects the port number in network byte + * order, a conversion using HTONS() or htons() is necessary. + * + \code + uip_unlisten(HTONS(80)); + \endcode + * + * \param port A 16-bit port number in network byte order. + */ +void uip_unlisten(u16_t port); + +/** + * Connect to a remote host using TCP. + * + * This function is used to start a new connection to the specified + * port on the specied host. It allocates a new connection identifier, + * sets the connection to the SYN_SENT state and sets the + * retransmission timer to 0. This will cause a TCP SYN segment to be + * sent out the next time this connection is periodically processed, + * which usually is done within 0.5 seconds after the call to + * uip_connect(). + * + * \note This function is avaliable only if support for active open + * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. + * + * \note Since this function requires the port number to be in network + * byte order, a convertion using HTONS() or htons() is necessary. + * + \code + u16_t ipaddr[2]; + + uip_ipaddr(ipaddr, 192,168,1,2); + uip_connect(ipaddr, HTONS(80)); + \endcode + * + * \param ripaddr A pointer to a 4-byte array representing the IP + * address of the remote hot. + * + * \param port A 16-bit port number in network byte order. + * + * \return A pointer to the uIP connection identifier for the new connection, + * or NULL if no connection could be allocated. + * + */ +struct uip_conn *uip_connect(u16_t *ripaddr, u16_t port); + + + +/** + * \internal + * + * Check if a connection has outstanding (i.e., unacknowledged) data. + * + * \param conn A pointer to the uip_conn structure for the connection. + * + * \hideinitializer + */ +#define uip_outstanding(conn) ((conn)->len) + +/** + * Send data on the current connection. + * + * This function is used to send out a single segment of TCP + * data. Only applications that have been invoked by uIP for event + * processing can send data. + * + * The amount of data that actually is sent out after a call to this + * funcion is determined by the maximum amount of data TCP allows. uIP + * will automatically crop the data so that only the appropriate + * amount of data is sent. The function uip_mss() can be used to query + * uIP for the amount of data that actually will be sent. + * + * \note This function does not guarantee that the sent data will + * arrive at the destination. If the data is lost in the network, the + * application will be invoked with the uip_rexmit() event being + * set. The application will then have to resend the data using this + * function. + * + * \param data A pointer to the data which is to be sent. + * + * \param len The maximum amount of data bytes to be sent. + * + * \hideinitializer + */ +#define uip_send(data, len) do { uip_sappdata = (data); uip_slen = (len);} while(0) + +/** + * The length of any incoming data that is currently avaliable (if avaliable) + * in the uip_appdata buffer. + * + * The test function uip_data() must first be used to check if there + * is any data available at all. + * + * \hideinitializer + */ +#define uip_datalen() uip_len + +/** + * The length of any out-of-band data (urgent data) that has arrived + * on the connection. + * + * \note The configuration parameter UIP_URGDATA must be set for this + * function to be enabled. + * + * \hideinitializer + */ +#define uip_urgdatalen() uip_urglen + +/** + * Close the current connection. + * + * This function will close the current connection in a nice way. + * + * \hideinitializer + */ +#define uip_close() (uip_flags = UIP_CLOSE) + +/** + * Abort the current connection. + * + * This function will abort (reset) the current connection, and is + * usually used when an error has occured that prevents using the + * uip_close() function. + * + * \hideinitializer + */ +#define uip_abort() (uip_flags = UIP_ABORT) + +/** + * Tell the sending host to stop sending data. + * + * This function will close our receiver's window so that we stop + * receiving data for the current connection. + * + * \hideinitializer + */ +#define uip_stop() (uip_conn->tcpstateflags |= UIP_STOPPED) + +/** + * Find out if the current connection has been previously stopped with + * uip_stop(). + * + * \hideinitializer + */ +#define uip_stopped(conn) ((conn)->tcpstateflags & UIP_STOPPED) + +/** + * Restart the current connection, if is has previously been stopped + * with uip_stop(). + * + * This function will open the receiver's window again so that we + * start receiving data for the current connection. + * + * \hideinitializer + */ +#define uip_restart() do { uip_flags |= UIP_NEWDATA; \ + uip_conn->tcpstateflags &= ~UIP_STOPPED; \ + } while(0) + + +/* uIP tests that can be made to determine in what state the current + connection is, and what the application function should do. */ + +/** + * Is new incoming data available? + * + * Will reduce to non-zero if there is new data for the application + * present at the uip_appdata pointer. The size of the data is + * avaliable through the uip_len variable. + * + * \hideinitializer + */ +#define uip_newdata() (uip_flags & UIP_NEWDATA) + +/** + * Has previously sent data been acknowledged? + * + * Will reduce to non-zero if the previously sent data has been + * acknowledged by the remote host. This means that the application + * can send new data. + * + * \hideinitializer + */ +#define uip_acked() (uip_flags & UIP_ACKDATA) + +/** + * Has the connection just been connected? + * + * Reduces to non-zero if the current connection has been connected to + * a remote host. This will happen both if the connection has been + * actively opened (with uip_connect()) or passively opened (with + * uip_listen()). + * + * \hideinitializer + */ +#define uip_connected() (uip_flags & UIP_CONNECTED) + +/** + * Has the connection been closed by the other end? + * + * Is non-zero if the connection has been closed by the remote + * host. The application may then do the necessary clean-ups. + * + * \hideinitializer + */ +#define uip_closed() (uip_flags & UIP_CLOSE) + +/** + * Has the connection been aborted by the other end? + * + * Non-zero if the current connection has been aborted (reset) by the + * remote host. + * + * \hideinitializer + */ +#define uip_aborted() (uip_flags & UIP_ABORT) + +/** + * Has the connection timed out? + * + * Non-zero if the current connection has been aborted due to too many + * retransmissions. + * + * \hideinitializer + */ +#define uip_timedout() (uip_flags & UIP_TIMEDOUT) + +/** + * Do we need to retransmit previously data? + * + * Reduces to non-zero if the previously sent data has been lost in + * the network, and the application should retransmit it. The + * application should send the exact same data as it did the last + * time, using the uip_send() function. + * + * \hideinitializer + */ +#define uip_rexmit() (uip_flags & UIP_REXMIT) + +/** + * Is the connection being polled by uIP? + * + * Is non-zero if the reason the application is invoked is that the + * current connection has been idle for a while and should be + * polled. + * + * The polling event can be used for sending data without having to + * wait for the remote host to send data. + * + * \hideinitializer + */ +#define uip_poll() (uip_flags & UIP_POLL) + +/** + * Get the initial maxium segment size (MSS) of the current + * connection. + * + * \hideinitializer + */ +#define uip_initialmss() (uip_conn->initialmss) + +/** + * Get the current maxium segment size that can be sent on the current + * connection. + * + * The current maxiumum segment size that can be sent on the + * connection is computed from the receiver's window and the MSS of + * the connection (which also is available by calling + * uip_initialmss()). + * + * \hideinitializer + */ +#define uip_mss() (uip_conn->mss) + +/** + * Set up a new UDP connection. + * + * \param ripaddr A pointer to a 4-byte structure representing the IP + * address of the remote host. + * + * \param rport The remote port number in network byte order. + * + * \return The uip_udp_conn structure for the new connection or NULL + * if no connection could be allocated. + */ +struct uip_udp_conn *uip_udp_new(u16_t *ripaddr, u16_t rport); + +/** + * Removed a UDP connection. + * + * \param conn A pointer to the uip_udp_conn structure for the connection. + * + * \hideinitializer + */ +#define uip_udp_remove(conn) (conn)->lport = 0 + +/** + * Send a UDP datagram of length len on the current connection. + * + * This function can only be called in response to a UDP event (poll + * or newdata). The data must be present in the uip_buf buffer, at the + * place pointed to by the uip_appdata pointer. + * + * \param len The length of the data in the uip_buf buffer. + * + * \hideinitializer + */ +#define uip_udp_send(len) uip_slen = (len) + +/** @} */ + +/* uIP convenience and converting functions. */ + +/** + * \defgroup uipconvfunc uIP conversion functions + * @{ + * + * These functions can be used for converting between different data + * formats used by uIP. + */ + +/** + * Pack an IP address into a 4-byte array which is used by uIP to + * represent IP addresses. + * + * Example: + \code + u16_t ipaddr[2]; + + uip_ipaddr(&ipaddr, 192,168,1,2); + \endcode + * + * \param addr A pointer to a 4-byte array that will be filled in with + * the IP addres. + * \param addr0 The first octet of the IP address. + * \param addr1 The second octet of the IP address. + * \param addr2 The third octet of the IP address. + * \param addr3 The forth octet of the IP address. + * + * \hideinitializer + */ +#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \ + (addr)[0] = HTONS(((addr0) << 8) | (addr1)); \ + (addr)[1] = HTONS(((addr2) << 8) | (addr3)); \ + } while(0) + +/** + * Convert 16-bit quantity from host byte order to network byte order. + * + * This macro is primarily used for converting constants from host + * byte order to network byte order. For converting variables to + * network byte order, use the htons() function instead. + * + * \hideinitializer + */ +#ifndef HTONS +# if BYTE_ORDER == BIG_ENDIAN +# define HTONS(n) (n) +# else /* BYTE_ORDER == BIG_ENDIAN */ +# define HTONS(n) ((((u16_t)((n) & 0xff)) << 8) | (((n) & 0xff00) >> 8)) +# endif /* BYTE_ORDER == BIG_ENDIAN */ +#endif /* HTONS */ + +/** + * Convert 16-bit quantity from host byte order to network byte order. + * + * This function is primarily used for converting variables from host + * byte order to network byte order. For converting constants to + * network byte order, use the HTONS() macro instead. + */ +#ifndef htons +u16_t htons(u16_t val); +#endif /* htons */ + +/** @} */ + +/** + * Pointer to the application data in the packet buffer. + * + * This pointer points to the application data when the application is + * called. If the application wishes to send data, the application may + * use this space to write the data into before calling uip_send(). + */ +extern volatile u8_t *uip_appdata; +extern volatile u8_t *uip_sappdata; + +#if UIP_URGDATA > 0 +/* u8_t *uip_urgdata: + * + * This pointer points to any urgent data that has been received. Only + * present if compiled with support for urgent data (UIP_URGDATA). + */ +extern volatile u8_t *uip_urgdata; +#endif /* UIP_URGDATA > 0 */ + + +/* u[8|16]_t uip_len: + * + * When the application is called, uip_len contains the length of any + * new data that has been received from the remote host. The + * application should set this variable to the size of any data that + * the application wishes to send. When the network device driver + * output function is called, uip_len should contain the length of the + * outgoing packet. + */ +extern volatile u16_t uip_len, uip_slen; + +#if UIP_URGDATA > 0 +extern volatile u8_t uip_urglen, uip_surglen; +#endif /* UIP_URGDATA > 0 */ + + +/** + * Representation of a uIP TCP connection. + * + * The uip_conn structure is used for identifying a connection. All + * but one field in the structure are to be considered read-only by an + * application. The only exception is the appstate field whos purpose + * is to let the application store application-specific state (e.g., + * file pointers) for the connection. The size of this field is + * configured in the "uipopt.h" header file. + */ +struct uip_conn { + u16_t ripaddr[2]; /**< The IP address of the remote host. */ + + u16_t lport; /**< The local TCP port, in network byte order. */ + u16_t rport; /**< The local remote TCP port, in network byte + order. */ + + u8_t rcv_nxt[4]; /**< The sequence number that we expect to + receive next. */ + u8_t snd_nxt[4]; /**< The sequence number that was last sent by + us. */ + u16_t len; /**< Length of the data that was previously sent. */ + u16_t mss; /**< Current maximum segment size for the + connection. */ + u16_t initialmss; /**< Initial maximum segment size for the + connection. */ + u8_t sa; /**< Retransmission time-out calculation state + variable. */ + u8_t sv; /**< Retransmission time-out calculation state + variable. */ + u16_t rto; /**< Retransmission time-out. */ + u16_t tcpstateflags; /**< TCP state and flags. */ + u16_t timer; /**< The retransmission timer. */ + u16_t nrtx; /**< The number of retransmissions for the last + segment sent. */ + + /** The application state. */ + u8_t appstate[UIP_APPSTATE_SIZE]; +}; + + +/* Pointer to the current connection. */ +extern struct uip_conn *uip_conn; +/* The array containing all uIP connections. */ +extern struct uip_conn uip_conns[UIP_CONNS]; +/** + * \addtogroup uiparch + * @{ + */ + +/** + * 4-byte array used for the 32-bit sequence number calculations. + */ +extern volatile u8_t uip_acc32[4]; + +/** @} */ + + +#if UIP_UDP +/** + * Representation of a uIP UDP connection. + */ +struct uip_udp_conn { + u16_t ripaddr[2]; /**< The IP address of the remote peer. */ + u16_t lport; /**< The local port number in network byte order. */ + u16_t rport; /**< The remote port number in network byte order. */ +}; + +extern struct uip_udp_conn *uip_udp_conn; +extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; +#endif /* UIP_UDP */ + +/** + * The structure holding the TCP/IP statistics that are gathered if + * UIP_STATISTICS is set to 1. + * + */ +struct uip_stats { + struct { + uip_stats_t drop; /**< Number of dropped packets at the IP + layer. */ + uip_stats_t recv; /**< Number of received packets at the IP + layer. */ + uip_stats_t sent; /**< Number of sent packets at the IP + layer. */ + uip_stats_t vhlerr; /**< Number of packets dropped due to wrong + IP version or header length. */ + uip_stats_t hblenerr; /**< Number of packets dropped due to wrong + IP length, high byte. */ + uip_stats_t lblenerr; /**< Number of packets dropped due to wrong + IP length, low byte. */ + uip_stats_t fragerr; /**< Number of packets dropped since they + were IP fragments. */ + uip_stats_t chkerr; /**< Number of packets dropped due to IP + checksum errors. */ + uip_stats_t protoerr; /**< Number of packets dropped since they + were neither ICMP, UDP nor TCP. */ + } ip; /**< IP statistics. */ + struct { + uip_stats_t drop; /**< Number of dropped ICMP packets. */ + uip_stats_t recv; /**< Number of received ICMP packets. */ + uip_stats_t sent; /**< Number of sent ICMP packets. */ + uip_stats_t typeerr; /**< Number of ICMP packets with a wrong + type. */ + } icmp; /**< ICMP statistics. */ + struct { + uip_stats_t drop; /**< Number of dropped TCP segments. */ + uip_stats_t recv; /**< Number of recived TCP segments. */ + uip_stats_t sent; /**< Number of sent TCP segments. */ + uip_stats_t chkerr; /**< Number of TCP segments with a bad + checksum. */ + uip_stats_t ackerr; /**< Number of TCP segments with a bad ACK + number. */ + uip_stats_t rst; /**< Number of recevied TCP RST (reset) segments. */ + uip_stats_t rexmit; /**< Number of retransmitted TCP segments. */ + uip_stats_t syndrop; /**< Number of dropped SYNs due to too few + connections was avaliable. */ + uip_stats_t synrst; /**< Number of SYNs for closed ports, + triggering a RST. */ + } tcp; /**< TCP statistics. */ +}; + +/** + * The uIP TCP/IP statistics. + * + * This is the variable in which the uIP TCP/IP statistics are gathered. + */ +extern struct uip_stats uip_stat; + + +/*-----------------------------------------------------------------------------------*/ +/* All the stuff below this point is internal to uIP and should not be + * used directly by an application or by a device driver. + */ +/*-----------------------------------------------------------------------------------*/ +/* u8_t uip_flags: + * + * When the application is called, uip_flags will contain the flags + * that are defined in this file. Please read below for more + * infomation. + */ +extern volatile u8_t uip_flags; + +/* The following flags may be set in the global variable uip_flags + before calling the application callback. The UIP_ACKDATA and + UIP_NEWDATA flags may both be set at the same time, whereas the + others are mutualy exclusive. Note that these flags should *NOT* be + accessed directly, but through the uIP functions/macros. */ + +#define UIP_ACKDATA 1 /* Signifies that the outstanding data was + acked and the application should send + out new data instead of retransmitting + the last data. */ +#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent + us new data. */ +#define UIP_REXMIT 4 /* Tells the application to retransmit the + data that was last sent. */ +#define UIP_POLL 8 /* Used for polling the application, to + check if the application has data that + it wants to send. */ +#define UIP_CLOSE 16 /* The remote host has closed the + connection, thus the connection has + gone away. Or the application signals + that it wants to close the + connection. */ +#define UIP_ABORT 32 /* The remote host has aborted the + connection, thus the connection has + gone away. Or the application signals + that it wants to abort the + connection. */ +#define UIP_CONNECTED 64 /* We have got a connection from a remote + host and have set up a new connection + for it, or an active connection has + been successfully established. */ + +#define UIP_TIMEDOUT 128 /* The connection has been aborted due to + too many retransmissions. */ + + +/* uip_process(flag): + * + * The actual uIP function which does all the work. + */ +void uip_process(u8_t flag); + +/* The following flags are passed as an argument to the uip_process() + function. They are used to distinguish between the two cases where + uip_process() is called. It can be called either because we have + incoming data that should be processed, or because the periodic + timer has fired. */ + +#define UIP_DATA 1 /* Tells uIP that there is incoming data in + the uip_buf buffer. The length of the + data is stored in the global variable + uip_len. */ +#define UIP_TIMER 2 /* Tells uIP that the periodic timer has + fired. */ +#if UIP_UDP +#define UIP_UDP_TIMER 3 +#endif /* UIP_UDP */ + +/* The TCP states used in the uip_conn->tcpstateflags. */ +#define CLOSED 0 +#define SYN_RCVD 1 +#define SYN_SENT 2 +#define ESTABLISHED 3 +#define FIN_WAIT_1 4 +#define FIN_WAIT_2 5 +#define CLOSING 6 +#define TIME_WAIT 7 +#define LAST_ACK 8 +#define TS_MASK 15 + +#define UIP_STOPPED 16 + +#define UIP_TCPIP_HLEN 40 + +/* The TCP and IP headers. */ +typedef struct { + /* IP header. */ + u8_t vhl, + tos, + len[2], + ipid[2], + ipoffset[2], + ttl, + proto; + u16_t ipchksum; + u16_t srcipaddr[2], + destipaddr[2]; + + /* TCP header. */ + u16_t srcport, + destport; + u8_t seqno[4], + ackno[4], + tcpoffset, + flags, + wnd[2]; + u16_t tcpchksum; + u8_t urgp[2]; + u8_t optdata[4]; +} uip_tcpip_hdr; + +/* The ICMP and IP headers. */ +typedef struct { + /* IP header. */ + u8_t vhl, + tos, + len[2], + ipid[2], + ipoffset[2], + ttl, + proto; + u16_t ipchksum; + u16_t srcipaddr[2], + destipaddr[2]; + /* ICMP (echo) header. */ + u8_t type, icode; + u16_t icmpchksum; + u16_t id, seqno; +} uip_icmpip_hdr; + + +/* The UDP and IP headers. */ +typedef struct { + /* IP header. */ + u8_t vhl, + tos, + len[2], + ipid[2], + ipoffset[2], + ttl, + proto; + u16_t ipchksum; + u16_t srcipaddr[2], + destipaddr[2]; + + /* UDP header. */ + u16_t srcport, + destport; + u16_t udplen; + u16_t udpchksum; +} uip_udpip_hdr; + +#define UIP_PROTO_ICMP 1 +#define UIP_PROTO_TCP 6 +#define UIP_PROTO_UDP 17 + +#if UIP_FIXEDADDR +extern const u16_t uip_hostaddr[2]; +#else /* UIP_FIXEDADDR */ +extern u16_t uip_hostaddr[2]; +#endif /* UIP_FIXEDADDR */ + +#endif /* __UIP_H__ */ + + +/** @} */ + diff --git a/board/broadcom/bcmbca/httpd/uip_arch.c b/board/broadcom/bcmbca/httpd/uip_arch.c new file mode 100644 index 0000000000..cb3952bf73 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/uip_arch.c @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip_arch.c,v 1.2.2.1 2003/10/04 22:54:17 adam Exp $ + * + */ + + +#include "uip.h" +#include "uip_arch.h" + +#define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) +#define IP_PROTO_TCP 6 + +/*-----------------------------------------------------------------------------------*/ +void +uip_add32(u8_t *op32, u16_t op16) +{ + + uip_acc32[3] = op32[3] + (op16 & 0xff); + uip_acc32[2] = op32[2] + (op16 >> 8); + uip_acc32[1] = op32[1]; + uip_acc32[0] = op32[0]; + + if(uip_acc32[2] < (op16 >> 8)) { + ++uip_acc32[1]; + if(uip_acc32[1] == 0) { + ++uip_acc32[0]; + } + } + + + if(uip_acc32[3] < (op16 & 0xff)) { + ++uip_acc32[2]; + if(uip_acc32[2] == 0) { + ++uip_acc32[1]; + if(uip_acc32[1] == 0) { + ++uip_acc32[0]; + } + } + } +} +/*-----------------------------------------------------------------------------------*/ +u16_t +uip_chksum(u16_t *sdata, u16_t len) +{ + u16_t acc; + + for(acc = 0; len > 1; len -= 2) { + acc += *sdata; + if(acc < *sdata) { + /* Overflow, so we add the carry to acc (i.e., increase by + one). */ + ++acc; + } + ++sdata; + } + + /* add up any odd byte */ + if(len == 1) { + acc += htons(((u16_t)(*(u8_t *)sdata)) << 8); + if(acc < htons(((u16_t)(*(u8_t *)sdata)) << 8)) { + ++acc; + } + } + + return acc; +} +/*-----------------------------------------------------------------------------------*/ +u16_t +uip_ipchksum(void) +{ + return uip_chksum((u16_t *)&uip_buf[UIP_LLH_LEN], 20); +} +/*-----------------------------------------------------------------------------------*/ +u16_t +uip_tcpchksum(void) +{ + u16_t hsum, sum; + + + /* Compute the checksum of the TCP header. */ + hsum = uip_chksum((u16_t *)&uip_buf[20 + UIP_LLH_LEN], 20); + + /* Compute the checksum of the data in the TCP packet and add it to + the TCP header checksum. */ + sum = uip_chksum((u16_t *)uip_appdata, + (u16_t)(((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - 40))); + + if((sum += hsum) < hsum) { + ++sum; + } + + if((sum += BUF->srcipaddr[0]) < BUF->srcipaddr[0]) { + ++sum; + } + if((sum += BUF->srcipaddr[1]) < BUF->srcipaddr[1]) { + ++sum; + } + if((sum += BUF->destipaddr[0]) < BUF->destipaddr[0]) { + ++sum; + } + if((sum += BUF->destipaddr[1]) < BUF->destipaddr[1]) { + ++sum; + } + if((sum += (u16_t)htons((u16_t)IP_PROTO_TCP)) < (u16_t)htons((u16_t)IP_PROTO_TCP)) { + ++sum; + } + + hsum = (u16_t)htons((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - 20); + + if((sum += hsum) < hsum) { + ++sum; + } + + return sum; +} +/*-----------------------------------------------------------------------------------*/ diff --git a/board/broadcom/bcmbca/httpd/uip_arch.h b/board/broadcom/bcmbca/httpd/uip_arch.h new file mode 100644 index 0000000000..947d84cf17 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/uip_arch.h @@ -0,0 +1,130 @@ +/** + * \defgroup uiparch Architecture specific uIP functions + * @{ + * + * The functions in the architecture specific module implement the IP + * check sum and 32-bit additions. + * + * The IP checksum calculation is the most computationally expensive + * operation in the TCP/IP stack and it therefore pays off to + * implement this in efficient assembler. The purpose of the uip-arch + * module is to let the checksum functions to be implemented in + * architecture specific assembler. + * + */ + +/** + * \file + * Declarations of architecture specific functions. + * \author Adam Dunkels + */ + +/* + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip_arch.h,v 1.1.2.2 2003/10/06 15:10:22 adam Exp $ + * + */ + +#ifndef __UIP_ARCH_H__ +#define __UIP_ARCH_H__ + +#include "uip.h" + +/** + * Carry out a 32-bit addition. + * + * Because not all architectures for which uIP is intended has native + * 32-bit arithmetic, uIP uses an external C function for doing the + * required 32-bit additions in the TCP protocol processing. This + * function should add the two arguments and place the result in the + * global variable uip_acc32. + * + * \note The 32-bit integer pointed to by the op32 parameter and the + * result in the uip_acc32 variable are in network byte order (big + * endian). + * + * \param op32 A pointer to a 4-byte array representing a 32-bit + * integer in network byte order (big endian). + * + * \param op16 A 16-bit integer in host byte order. + */ +void uip_add32(u8_t *op32, u16_t op16); + +/** + * Calculate the Internet checksum over a buffer. + * + * The Internet checksum is the one's complement of the one's + * complement sum of all 16-bit words in the buffer. + * + * See RFC1071. + * + * \note This function is not called in the current version of uIP, + * but future versions might make use of it. + * + * \param buf A pointer to the buffer over which the checksum is to be + * computed. + * + * \param len The length of the buffer over which the checksum is to + * be computed. + * + * \return The Internet checksum of the buffer. + */ +u16_t uip_chksum(u16_t *buf, u16_t len); + +/** + * Calculate the IP header checksum of the packet header in uip_buf. + * + * The IP header checksum is the Internet checksum of the 20 bytes of + * the IP header. + * + * \return The IP header checksum of the IP header in the uip_buf + * buffer. + */ +u16_t uip_ipchksum(void); + +/** + * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. + * + * The TCP checksum is the Internet checksum of data contents of the + * TCP segment, and a pseudo-header as defined in RFC793. + * + * \note The uip_appdata pointer that points to the packet data may + * point anywhere in memory, so it is not possible to simply calculate + * the Internet checksum of the contents of the uip_buf buffer. + * + * \return The TCP checksum of the TCP segment in uip_buf and pointed + * to by uip_appdata. + */ +u16_t uip_tcpchksum(void); + +/** @} */ + +#endif /* __UIP_ARCH_H__ */ diff --git a/board/broadcom/bcmbca/httpd/uip_arp.c b/board/broadcom/bcmbca/httpd/uip_arp.c new file mode 100644 index 0000000000..9226b667e4 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/uip_arp.c @@ -0,0 +1,393 @@ +/** + * \addtogroup uip + * @{ + */ + +/** + * \defgroup uiparp uIP Address Resolution Protocol + * @{ + * + * The Address Resolution Protocol ARP is used for mapping between IP + * addresses and link level addresses such as the Ethernet MAC + * addresses. ARP uses broadcast queries to ask for the link level + * address of a known IP address and the host which is configured with + * the IP address for which the query was meant, will respond with its + * link level address. + * + * \note This ARP implementation only supports Ethernet. + */ + +/** + * \file + * Implementation of the ARP Address Resolution Protocol. + * \author Adam Dunkels + * + */ + +/* + * Copyright (c) 2001-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip_arp.c,v 1.7.2.3 2003/10/06 22:42:30 adam Exp $ + * + */ + + +#include "uip_arp.h" + +struct arp_header { + struct uip_eth_hdr ethhdr; + u16_t hwtype; + u16_t protocol; + u8_t hwlen; + u8_t protolen; + u16_t opcode; + struct uip_eth_addr shwaddr; + u16_t sipaddr[2]; + struct uip_eth_addr dhwaddr; + u16_t dipaddr[2]; +}; + +struct ethip_hdr { + struct uip_eth_hdr ethhdr; + /* IP header. */ + u8_t vhl, + tos, + len[2], + ipid[2], + ipoffset[2], + ttl, + proto; + u16_t ipchksum; + u16_t srcipaddr[2], + destipaddr[2]; +}; + +#define ARP_REQUEST 1 +#define ARP_REPLY 2 + +#define ARP_HWTYPE_ETH 1 + +struct arp_entry { + u16_t ipaddr[2]; + struct uip_eth_addr ethaddr; + u8_t time; +}; + +extern struct uip_eth_addr uip_ethadd; + +static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; +static u16_t ipaddr[2]; +static u8_t i, c; + +static u8_t arptime; +static u8_t tmpage; + +#define BUF ((struct arp_header *)&uip_buf[0]) +#define IPBUF ((struct ethip_hdr *)&uip_buf[0]) +/*-----------------------------------------------------------------------------------*/ +/** + * Initialize the ARP module. + * + */ +/*-----------------------------------------------------------------------------------*/ +void +uip_arp_init(void) +{ + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + memset(arp_table[i].ipaddr, 0, 4); + } +} +/*-----------------------------------------------------------------------------------*/ +/** + * Periodic ARP processing function. + * + * This function performs periodic timer processing in the ARP module + * and should be called at regular intervals. The recommended interval + * is 10 seconds between the calls. + * + */ +/*-----------------------------------------------------------------------------------*/ +void +uip_arp_timer(void) +{ + struct arp_entry *tabptr; + + ++arptime; + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + tabptr = &arp_table[i]; + if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 && + arptime - tabptr->time >= UIP_ARP_MAXAGE) { + memset(tabptr->ipaddr, 0, 4); + } + } + +} +/*-----------------------------------------------------------------------------------*/ +static void +uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr) +{ + register struct arp_entry *tabptr = 0; + /* Walk through the ARP mapping table and try to find an entry to + update. If none is found, the IP -> MAC address mapping is + inserted in the ARP table. */ + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + + tabptr = &arp_table[i]; + /* Only check those entries that are actually in use. */ + if(tabptr->ipaddr[0] != 0 && + tabptr->ipaddr[1] != 0) { + + /* Check if the source IP address of the incoming packet matches + the IP address in this ARP table entry. */ + if(ipaddr[0] == tabptr->ipaddr[0] && + ipaddr[1] == tabptr->ipaddr[1]) { + + /* An old entry found, update this and return. */ + memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); + tabptr->time = arptime; + + return; + } + } + } + + /* If we get here, no existing ARP table entry was found, so we + create one. */ + + /* First, we try to find an unused entry in the ARP table. */ + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + tabptr = &arp_table[i]; + if(tabptr->ipaddr[0] == 0 && + tabptr->ipaddr[1] == 0) { + break; + } + } + + /* If no unused entry is found, we try to find the oldest entry and + throw it away. */ + if(i == UIP_ARPTAB_SIZE) { + tmpage = 0; + c = 0; + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + tabptr = &arp_table[i]; + if(arptime - tabptr->time > tmpage) { + tmpage = arptime - tabptr->time; + c = i; + } + } + i = c; + } + + /* Now, i is the ARP table entry which we will fill with the new + information. */ + memcpy(tabptr->ipaddr, ipaddr, 4); + memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); + tabptr->time = arptime; +} +/*-----------------------------------------------------------------------------------*/ +/** + * ARP processing for incoming IP packets + * + * This function should be called by the device driver when an IP + * packet has been received. The function will check if the address is + * in the ARP cache, and if so the ARP cache entry will be + * refreshed. If no ARP cache entry was found, a new one is created. + * If IP address is not from local network it comes with MAC of default + * gatway we save both in ARP cache. + * + * This function expects an IP packet with a prepended Ethernet header + * in the uip_buf[] buffer, and the length of the packet in the global + * variable uip_len. + */ +/*-----------------------------------------------------------------------------------*/ +void +uip_arp_ipin(void) +{ + uip_len -= sizeof(struct uip_eth_hdr); + uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src)); + return; +} +/*-----------------------------------------------------------------------------------*/ +/** + * ARP processing for incoming ARP packets. + * + * This function should be called by the device driver when an ARP + * packet has been received. The function will act differently + * depending on the ARP packet type: if it is a reply for a request + * that we previously sent out, the ARP cache will be filled in with + * the values from the ARP reply. If the incoming ARP packet is an ARP + * request for our IP address, an ARP reply packet is created and put + * into the uip_buf[] buffer. + * + * When the function returns, the value of the global variable uip_len + * indicates whether the device driver should send out a packet or + * not. If uip_len is zero, no packet should be sent. If uip_len is + * non-zero, it contains the length of the outbound packet that is + * present in the uip_buf[] buffer. + * + * This function expects an ARP packet with a prepended Ethernet + * header in the uip_buf[] buffer, and the length of the packet in the + * global variable uip_len. + */ +/*-----------------------------------------------------------------------------------*/ +void +uip_arp_arpin(void) +{ + + if(uip_len < sizeof(struct arp_header)) { + uip_len = 0; + return; + } + + uip_len = 0; + + switch(BUF->opcode) { + case HTONS(ARP_REQUEST): + /* ARP request. If it asked for our address, we send out a + reply. */ + if(BUF->dipaddr[0] == uip_hostaddr[0] && + BUF->dipaddr[1] == uip_hostaddr[1]) { + /* The reply opcode is 2. */ + BUF->opcode = HTONS(2); + + memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6); + memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); + memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); + memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6); + + BUF->dipaddr[0] = BUF->sipaddr[0]; + BUF->dipaddr[1] = BUF->sipaddr[1]; + BUF->sipaddr[0] = uip_hostaddr[0]; + BUF->sipaddr[1] = uip_hostaddr[1]; + + BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); + uip_len = sizeof(struct arp_header); + } + break; + case HTONS(ARP_REPLY): + /* ARP reply. We insert or update the ARP table if it was meant + for us. */ + if(BUF->dipaddr[0] == uip_hostaddr[0] && + BUF->dipaddr[1] == uip_hostaddr[1]) { + + uip_arp_update(BUF->sipaddr, &BUF->shwaddr); + } + break; + } + + return; +} +/*-----------------------------------------------------------------------------------*/ +/** + * Prepend Ethernet header to an outbound IP packet and see if we need + * to send out an ARP request. + * + * This function should be called before sending out an IP packet. The + * function checks the destination IP address of the IP packet to see + * what Ethernet MAC address that should be used as a destination MAC + * address on the Ethernet. + * + * If the destination IP address is in the local network (determined + * by logical ANDing of netmask and our IP address), the function + * checks the ARP cache to see if an entry for the destination IP + * address is found. If so, an Ethernet header is prepended and the + * function returns. If no ARP cache entry is found for the + * destination IP address, the packet in the uip_buf[] is replaced by + * an ARP request packet for the IP address. The IP packet is dropped + * and it is assumed that they higher level protocols (e.g., TCP) + * eventually will retransmit the dropped packet. + * + * If the destination IP address is not on the local network, the IP + * address of the default router is used instead. + * + * When the function returns, a packet is present in the uip_buf[] + * buffer, and the length of the packet is in the global variable + * uip_len. + */ +/*-----------------------------------------------------------------------------------*/ +void +uip_arp_out(void) +{ + struct arp_entry *tabptr = 0; + + /* Find the destination IP address in the ARP table and construct + the Ethernet header. If the destination IP address isn't on the + local network host IP address and default gatway MAC already learned + from previous incoming TCP/IP packet. + */ + + ipaddr[0] = IPBUF->destipaddr[0]; + ipaddr[1] = IPBUF->destipaddr[1]; + + for(i = 0; i < UIP_ARPTAB_SIZE; ++i) { + tabptr = &arp_table[i]; + if(ipaddr[0] == tabptr->ipaddr[0] && + ipaddr[1] == tabptr->ipaddr[1]) + break; + } + + if(i == UIP_ARPTAB_SIZE) { + /* The destination address was not in our ARP table, so we + overwrite the IP packet with an ARP request. */ + + memset(BUF->ethhdr.dest.addr, 0xff, 6); + memset(BUF->dhwaddr.addr, 0x00, 6); + memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6); + memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6); + + BUF->dipaddr[0] = ipaddr[0]; + BUF->dipaddr[1] = ipaddr[1]; + BUF->sipaddr[0] = uip_hostaddr[0]; + BUF->sipaddr[1] = uip_hostaddr[1]; + BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */ + BUF->hwtype = HTONS(ARP_HWTYPE_ETH); + BUF->protocol = HTONS(UIP_ETHTYPE_IP); + BUF->hwlen = 6; + BUF->protolen = 4; + BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP); + + uip_appdata = &uip_buf[40 + UIP_LLH_LEN]; + + uip_len = sizeof(struct arp_header); + return; + } + + /* Build an ethernet header. */ + memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6); + memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6); + + IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP); + + uip_len += sizeof(struct uip_eth_hdr); +} +/*-----------------------------------------------------------------------------------*/ + +/** @} */ +/** @} */ diff --git a/board/broadcom/bcmbca/httpd/uip_arp.h b/board/broadcom/bcmbca/httpd/uip_arp.h new file mode 100644 index 0000000000..0371cd6731 --- /dev/null +++ b/board/broadcom/bcmbca/httpd/uip_arp.h @@ -0,0 +1,201 @@ +/** + * \addtogroup uip + * @{ + */ + +/** + * \addtogroup uiparp + * @{ + */ + +/** + * \file + * Macros and definitions for the ARP module. + * \author Adam Dunkels + */ + + +/* + * Copyright (c) 2001-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uip_arp.h,v 1.3.2.2 2003/10/06 15:10:22 adam Exp $ + * + */ + +#ifndef __UIP_ARP_H__ +#define __UIP_ARP_H__ + +#include "uip.h" + + +/** + * Representation of a 48-bit Ethernet address. + */ +struct uip_eth_addr { + u8_t addr[6]; +}; + +extern struct uip_eth_addr uip_ethaddr; + +/** + * The Ethernet header. + */ +struct uip_eth_hdr { + struct uip_eth_addr dest; + struct uip_eth_addr src; + u16_t type; +}; + +#define UIP_ETHTYPE_ARP 0x0806 +#define UIP_ETHTYPE_IP 0x0800 +#define UIP_ETHTYPE_IP6 0x86dd + + +/* The uip_arp_init() function must be called before any of the other + ARP functions. */ +void uip_arp_init(void); + +/* The uip_arp_ipin() function should be called whenever an IP packet + arrives from the Ethernet. This function refreshes the ARP table or + inserts a new mapping if none exists. The function assumes that an + IP packet with an Ethernet header is present in the uip_buf buffer + and that the length of the packet is in the uip_len variable. */ +void uip_arp_ipin(void); + +/* The uip_arp_arpin() should be called when an ARP packet is received + by the Ethernet driver. This function also assumes that the + Ethernet frame is present in the uip_buf buffer. When the + uip_arp_arpin() function returns, the contents of the uip_buf + buffer should be sent out on the Ethernet if the uip_len variable + is > 0. */ +void uip_arp_arpin(void); + +/* The uip_arp_out() function should be called when an IP packet + should be sent out on the Ethernet. This function creates an + Ethernet header before the IP header in the uip_buf buffer. The + Ethernet header will have the correct Ethernet MAC destination + address filled in if an ARP table entry for the destination IP + address (or the IP address of the default router) is present. If no + such table entry is found, the IP packet is overwritten with an ARP + request and we rely on TCP to retransmit the packet that was + overwritten. In any case, the uip_len variable holds the length of + the Ethernet frame that should be transmitted. */ +void uip_arp_out(void); + +/* The uip_arp_timer() function should be called every ten seconds. It + is responsible for flushing old entries in the ARP table. */ +void uip_arp_timer(void); + +/** @} */ + +/** + * \addtogroup uipconffunc + * @{ + */ + +/** + * Set the default router's IP address. + * + * \param addr A pointer to a 4-byte array containing the IP address + * of the default router. + * + * \hideinitializer + */ +#define uip_setdraddr(addr) do { uip_arp_draddr[0] = addr[0]; \ + uip_arp_draddr[1] = addr[1]; } while(0) + +/** + * Set the netmask. + * + * \param addr A pointer to a 4-byte array containing the IP address + * of the netmask. + * + * \hideinitializer + */ +#define uip_setnetmask(addr) do { uip_arp_netmask[0] = addr[0]; \ + uip_arp_netmask[1] = addr[1]; } while(0) + + +/** + * Get the default router's IP address. + * + * \param addr A pointer to a 4-byte array that will be filled in with + * the IP address of the default router. + * + * \hideinitializer + */ +#define uip_getdraddr(addr) do { addr[0] = uip_arp_draddr[0]; \ + addr[1] = uip_arp_draddr[1]; } while(0) + +/** + * Get the netmask. + * + * \param addr A pointer to a 4-byte array that will be filled in with + * the value of the netmask. + * + * \hideinitializer + */ +#define uip_getnetmask(addr) do { addr[0] = uip_arp_netmask[0]; \ + addr[1] = uip_arp_netmask[1]; } while(0) + + +/** + * Specifiy the Ethernet MAC address. + * + * The ARP code needs to know the MAC address of the Ethernet card in + * order to be able to respond to ARP queries and to generate working + * Ethernet headers. + * + * \note This macro only specifies the Ethernet MAC address to the ARP + * code. It cannot be used to change the MAC address of the Ethernet + * card. + * + * \param eaddr A pointer to a struct uip_eth_addr containing the + * Ethernet MAC address of the Ethernet card. + * + * \hideinitializer + */ +#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \ + uip_ethaddr.addr[1] = eaddr.addr[1];\ + uip_ethaddr.addr[2] = eaddr.addr[2];\ + uip_ethaddr.addr[3] = eaddr.addr[3];\ + uip_ethaddr.addr[4] = eaddr.addr[4];\ + uip_ethaddr.addr[5] = eaddr.addr[5];} while(0) + +/** @} */ + +/** + * \internal Internal variables that are set using the macros + * uip_setdraddr and uip_setnetmask. + */ +extern u16_t uip_arp_draddr[2], uip_arp_netmask[2]; +#endif /* __UIP_ARP_H__ */ + + diff --git a/board/broadcom/bcmbca/httpd/uipopt.h b/board/broadcom/bcmbca/httpd/uipopt.h new file mode 100644 index 0000000000..57984cbbec --- /dev/null +++ b/board/broadcom/bcmbca/httpd/uipopt.h @@ -0,0 +1,559 @@ +/** + * \defgroup uipopt Configuration options for uIP + * @{ + * + * uIP is configured using the per-project configuration file + * "uipopt.h". This file contains all compile-time options for uIP and + * should be tweaked to match each specific project. The uIP + * distribution contains a documented example "uipopt.h" that can be + * copied and modified for each project. + */ + +/** + * \file + * Configuration options for uIP. + * \author Adam Dunkels + * + * This file is used for tweaking various configuration options for + * uIP. You should make a copy of this file into one of your project's + * directories instead of editing this example "uipopt.h" file that + * comes with the uIP distribution. + */ + +/* + * Copyright (c) 2001-2003, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This file is part of the uIP TCP/IP stack. + * + * $Id: uipopt.h,v 1.16.2.5 2003/10/07 13:22:51 adam Exp $ + * + */ + +#ifndef __UIPOPT_H__ +#define __UIPOPT_H__ + +/*------------------------------------------------------------------------------*/ +/** + * \defgroup uipopttypedef uIP type definitions + * @{ + */ + +/** + * The 8-bit unsigned data type. + * + * This may have to be tweaked for your particular compiler. "unsigned + * char" works for most compilers. + */ +typedef unsigned char u8_t; + +/** + * The 16-bit unsigned data type. + * + * This may have to be tweaked for your particular compiler. "unsigned + * short" works for most compilers. + */ +typedef unsigned short u16_t; + +/** + * The statistics data type. + * + * This datatype determines how high the statistics counters are able + * to count. + */ +typedef unsigned short uip_stats_t; + +/** @} */ + +/*------------------------------------------------------------------------------*/ + +/** + * \defgroup uipoptstaticconf Static configuration options + * @{ + * + * These configuration options can be used for setting the IP address + * settings statically, but only if UIP_FIXEDADDR is set to 1. The + * configuration options for a specific node includes IP address, + * netmask and default router as well as the Ethernet address. The + * netmask, default router and Ethernet address are appliciable only + * if uIP should be run over Ethernet. + * + * All of these should be changed to suit your project. +*/ + +/** + * Determines if uIP should use a fixed IP address or not. + * + * If uIP should use a fixed IP address, the settings are set in the + * uipopt.h file. If not, the macros uip_sethostaddr(), + * uip_setdraddr() and uip_setnetmask() should be used instead. + * + * \hideinitializer + */ +#define UIP_FIXEDADDR 0 + +/** + * Ping IP address asignment. + * + * uIP uses a "ping" packets for setting its own IP address if this + * option is set. If so, uIP will start with an empty IP address and + * the destination IP address of the first incoming "ping" (ICMP echo) + * packet will be used for setting the hosts IP address. + * + * \note This works only if UIP_FIXEDADDR is 0. + * + * \hideinitializer + */ +#define UIP_PINGADDRCONF 0 + +#define UIP_IPADDR0 192 /**< The first octet of the IP address of + this uIP node, if UIP_FIXEDADDR is + 1. \hideinitializer */ +#define UIP_IPADDR1 168 /**< The second octet of the IP address of + this uIP node, if UIP_FIXEDADDR is + 1. \hideinitializer */ +#define UIP_IPADDR2 0 /**< The third octet of the IP address of + this uIP node, if UIP_FIXEDADDR is + 1. \hideinitializer */ +#define UIP_IPADDR3 250 /**< The fourth octet of the IP address of + this uIP node, if UIP_FIXEDADDR is + 1. \hideinitializer */ + +#define UIP_NETMASK0 255 /**< The first octet of the netmask of + this uIP node, if UIP_FIXEDADDR is + 1. \hideinitializer */ +#define UIP_NETMASK1 255 /**< The second octet of the netmask of + this uIP node, if UIP_FIXEDADDR is + 1. \hideinitializer */ +#define UIP_NETMASK2 255 /**< The third octet of the netmask of + this uIP node, if UIP_FIXEDADDR is + 1. \hideinitializer */ +#define UIP_NETMASK3 0 /**< The fourth octet of the netmask of + this uIP node, if UIP_FIXEDADDR is + 1. \hideinitializer */ + +#define UIP_DRIPADDR0 192 /**< The first octet of the IP address of + the default router, if UIP_FIXEDADDR is + 1. \hideinitializer */ +#define UIP_DRIPADDR1 168 /**< The second octet of the IP address of + the default router, if UIP_FIXEDADDR is + 1. \hideinitializer */ +#define UIP_DRIPADDR2 0 /**< The third octet of the IP address of + the default router, if UIP_FIXEDADDR is + 1. \hideinitializer */ +#define UIP_DRIPADDR3 1 /**< The fourth octet of the IP address of + the default router, if UIP_FIXEDADDR is + 1. \hideinitializer */ + +/** + * Specifies if the uIP ARP module should be compiled with a fixed + * Ethernet MAC address or not. + * + * If this configuration option is 0, the macro uip_setethaddr() can + * be used to specify the Ethernet address at run-time. + * + * \hideinitializer + */ +#define UIP_FIXEDETHADDR 0 + +#define UIP_ETHADDR0 0x00 /**< The first octet of the Ethernet + address if UIP_FIXEDETHADDR is + 1. \hideinitializer */ +#define UIP_ETHADDR1 0xbd /**< The second octet of the Ethernet + address if UIP_FIXEDETHADDR is + 1. \hideinitializer */ +#define UIP_ETHADDR2 0x3b /**< The third octet of the Ethernet + address if UIP_FIXEDETHADDR is + 1. \hideinitializer */ +#define UIP_ETHADDR3 0x33 /**< The fourth octet of the Ethernet + address if UIP_FIXEDETHADDR is + 1. \hideinitializer */ +#define UIP_ETHADDR4 0x05 /**< The fifth octet of the Ethernet + address if UIP_FIXEDETHADDR is + 1. \hideinitializer */ +#define UIP_ETHADDR5 0x71 /**< The sixth octet of the Ethernet + address if UIP_FIXEDETHADDR is + 1. \hideinitializer */ + +/** @} */ +/*------------------------------------------------------------------------------*/ +/** + * \defgroup uipoptip IP configuration options + * @{ + * + */ +/** + * The IP TTL (time to live) of IP packets sent by uIP. + * + * This should normally not be changed. + */ +#define UIP_TTL 255 + +/** + * Turn on support for IP packet reassembly. + * + * uIP supports reassembly of fragmented IP packets. This features + * requires an additonal amount of RAM to hold the reassembly buffer + * and the reassembly code size is approximately 700 bytes. The + * reassembly buffer is of the same size as the uip_buf buffer + * (configured by UIP_BUFSIZE). + * + * \note IP packet reassembly is not heavily tested. + * + * \hideinitializer + */ +#define UIP_REASSEMBLY 0 + +/** + * The maximum time an IP fragment should wait in the reassembly + * buffer before it is dropped. + * + */ +#define UIP_REASS_MAXAGE 40 + +/** @} */ + +/*------------------------------------------------------------------------------*/ +/** + * \defgroup uipoptudp UDP configuration options + * @{ + * + * \note The UDP support in uIP is still not entirely complete; there + * is no support for sending or receiving broadcast or multicast + * packets, but it works well enough to support a number of vital + * applications such as DNS queries, though + */ + +/** + * Toggles wether UDP support should be compiled in or not. + * + * \hideinitializer + */ +#define UIP_UDP 0 + +/** + * Toggles if UDP checksums should be used or not. + * + * \note Support for UDP checksums is currently not included in uIP, + * so this option has no function. + * + * \hideinitializer + */ +#define UIP_UDP_CHECKSUMS 0 + +/** + * The maximum amount of concurrent UDP connections. + * + * \hideinitializer + */ +#define UIP_UDP_CONNS 10 + +/** + * The name of the function that should be called when UDP datagrams arrive. + * + * \hideinitializer + */ +#define UIP_UDP_APPCALL udp_appcall + +/** @} */ +/*------------------------------------------------------------------------------*/ +/** + * \defgroup uipopttcp TCP configuration options + * @{ + */ + +/** + * Determines if support for opening connections from uIP should be + * compiled in. + * + * If the applications that are running on top of uIP for this project + * do not need to open outgoing TCP connections, this configration + * option can be turned off to reduce the code size of uIP. + * + * \hideinitializer + */ +#define UIP_ACTIVE_OPEN 0 + +/** + * The maximum number of simultaneously open TCP connections. + * + * Since the TCP connections are statically allocated, turning this + * configuration knob down results in less RAM used. Each TCP + * connection requires approximatly 30 bytes of memory. + * + * \hideinitializer + */ +#define UIP_CONNS 2 + +/** + * The maximum number of simultaneously listening TCP ports. + * + * Each listening TCP port requires 2 bytes of memory. + * + * \hideinitializer + */ +#define UIP_LISTENPORTS 1 + +/** + * The size of the advertised receiver's window. + * + * Should be set low (i.e., to the size of the uip_buf buffer) is the + * application is slow to process incoming data, or high (32768 bytes) + * if the application processes data quickly. + * + * \hideinitializer + */ +//#define UIP_RECEIVE_WINDOW 32768 +#define UIP_RECEIVE_WINDOW 3000 + +/** + * Determines if support for TCP urgent data notification should be + * compiled in. + * + * Urgent data (out-of-band data) is a rarely used TCP feature that + * very seldom would be required. + * + * \hideinitializer + */ +//#define UIP_URGDATA 0 +#define UIP_URGDATA 1 + +/** + * The initial retransmission timeout counted in timer pulses. + * + * This should not be changed. + */ +#define UIP_RTO 3 + +/** + * The maximum number of times a segment should be retransmitted + * before the connection should be aborted. + * + * This should not be changed. + */ +#define UIP_MAXRTX 8 + +/** + * The maximum number of times a SYN segment should be retransmitted + * before a connection request should be deemed to have been + * unsuccessful. + * + * This should not need to be changed. + */ +#define UIP_MAXSYNRTX 3 + +/** + * The TCP maximum segment size. + * + * This is should not be to set to more than UIP_BUFSIZE - UIP_LLH_LEN - 40. + */ +#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - 40) + +/** + * How long a connection should stay in the TIME_WAIT state. + * + * This configiration option has no real implication, and it should be + * left untouched. + */ +#define UIP_TIME_WAIT_TIMEOUT 120 + + +/** @} */ +/*------------------------------------------------------------------------------*/ +/** + * \defgroup uipoptarp ARP configuration options + * @{ + */ + +/** + * The size of the ARP table. + * + * This option should be set to a larger value if this uIP node will + * have many connections from the local network. + * + * \hideinitializer + */ +#define UIP_ARPTAB_SIZE 2 + +/** + * The maxium age of ARP table entries measured in 10ths of seconds. + * + * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD + * default). + */ +#define UIP_ARP_MAXAGE 120 + +/** @} */ + +/*------------------------------------------------------------------------------*/ + +/** + * \defgroup uipoptgeneral General configuration options + * @{ + */ + +/** + * The size of the uIP packet buffer. + * + * The uIP packet buffer should not be smaller than 60 bytes, and does + * not need to be larger than 1500 bytes. Lower size results in lower + * TCP throughput, larger size results in higher TCP throughput. + * + * \hideinitializer + */ +#define UIP_BUFSIZE 1500 + + +/** + * Determines if statistics support should be compiled in. + * + * The statistics is useful for debugging and to show the user. + * + * \hideinitializer + */ +#define UIP_STATISTICS 0 + +/** + * Determines if logging of certain events should be compiled in. + * + * This is useful mostly for debugging. The function uip_log() + * must be implemented to suit the architecture of the project, if + * logging is turned on. + * + * \hideinitializer + */ +#define UIP_LOGGING 1 + +/** + * Print out a uIP log message. + * + * This function must be implemented by the module that uses uIP, and + * is called by uIP whenever a log message is generated. + */ +void uip_log(char *msg); + +/** + * The link level header length. + * + * This is the offset into the uip_buf where the IP header can be + * found. For Ethernet, this should be set to 14. For SLIP, this + * should be set to 0. + * + * \hideinitializer + */ +#define UIP_LLH_LEN 14 + + +/** @} */ +/*------------------------------------------------------------------------------*/ +/** + * \defgroup uipoptcpu CPU architecture configuration + * @{ + * + * The CPU architecture configuration is where the endianess of the + * CPU on which uIP is to be run is specified. Most CPUs today are + * little endian, and the most notable exception are the Motorolas + * which are big endian. The BYTE_ORDER macro should be changed to + * reflect the CPU architecture on which uIP is to be run. + */ +#ifndef LITTLE_ENDIAN +#define LITTLE_ENDIAN 3412 +#endif /* LITTLE_ENDIAN */ +#ifndef BIG_ENDIAN +#define BIG_ENDIAN 1234 +#endif /* BIGE_ENDIAN */ + +/** + * The byte order of the CPU architecture on which uIP is to be run. + * + * This option can be either BIG_ENDIAN (Motorola byte order) or + * LITTLE_ENDIAN (Intel byte order). + * + * \hideinitializer + */ +/*#ifndef BYTE_ORDER*/ +#define BYTE_ORDER LITTLE_ENDIAN +/*#endif*/ /* BYTE_ORDER */ + +/** @} */ +/*------------------------------------------------------------------------------*/ + +/** + * \defgroup uipoptapp Appication specific configurations + * @{ + * + * An uIP application is implemented using a single application + * function that is called by uIP whenever a TCP/IP event occurs. The + * name of this function must be registered with uIP at compile time + * using the UIP_APPCALL definition. + * + * uIP applications can store the application state within the + * uip_conn structure by specifying the size of the application + * structure with the UIP_APPSTATE_SIZE macro. + * + * The file containing the definitions must be included in the + * uipopt.h file. + * + * The following example illustrates how this can look. + \code + +void httpd_appcall(void); +#define UIP_APPCALL httpd_appcall + +struct httpd_state { + u8_t state; + u16_t count; + char *dataptr; + char *script; +}; +#define UIP_APPSTATE_SIZE (sizeof(struct httpd_state)) + \endcode + */ + +/** + * \var #define UIP_APPCALL + * + * The name of the application function that uIP should call in + * response to TCP/IP events. + * + */ + +/** + * \var #define UIP_APPSTATE_SIZE + * + * The size of the application state that is to be stored in the + * uip_conn structure. + */ +/** @} */ + +/* Include the header file for the application program that should be + used. If you don't use the example web server, you should change + this. */ +#include "httpd.h" + + +#endif /* __UIPOPT_H__ */ diff --git a/board/broadcom/bcmbca/mini-gmp/Makefile b/board/broadcom/bcmbca/mini-gmp/Makefile new file mode 100644 index 0000000000..d3c61139bd --- /dev/null +++ b/board/broadcom/bcmbca/mini-gmp/Makefile @@ -0,0 +1,2 @@ +ccflags-y += -DMINI_GMP_DONT_USE_FLOAT_H +obj-y += mini-gmp.o mini-mpq.o diff --git a/board/broadcom/bcmbca/mini-gmp/mini-gmp.c b/board/broadcom/bcmbca/mini-gmp/mini-gmp.c new file mode 100644 index 0000000000..2755705d62 --- /dev/null +++ b/board/broadcom/bcmbca/mini-gmp/mini-gmp.c @@ -0,0 +1,4597 @@ +/* mini-gmp, a minimalistic implementation of a GNU GMP subset. + + Contributed to the GNU project by Niels Möller + +Copyright 1991-1997, 1999-2019 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. */ + +/* NOTE: All functions in this file which are not declared in + mini-gmp.h are internal, and are not intended to be compatible + neither with GMP nor with future versions of mini-gmp. */ + +/* Much of the material copied from GMP files, including: gmp-impl.h, + longlong.h, mpn/generic/add_n.c, mpn/generic/addmul_1.c, + mpn/generic/lshift.c, mpn/generic/mul_1.c, + mpn/generic/mul_basecase.c, mpn/generic/rshift.c, + mpn/generic/sbpi1_div_qr.c, mpn/generic/sub_n.c, + mpn/generic/submul_1.c. */ +#if defined (CONFIG_ARM64) || defined (CONFIG_ARM) +#include +#include +#include +#include +#include +#include +#include +#define CHAR_BIT 8 +extern void bcm_sec_abort(void); +#define abort bcm_sec_abort + +#if defined (CONFIG_ARM64) + +typedef unsigned long long addr_t; +#else +typedef unsigned long addr_t; +#endif + +#else +#include +#include +#include +#include +#include +#include +#endif + +#include "mini-gmp.h" + +#if !defined(MINI_GMP_DONT_USE_FLOAT_H) +#include +#endif + + +/* Macros */ +#define GMP_LIMB_BITS (sizeof(mp_limb_t) * CHAR_BIT) + +#define GMP_LIMB_MAX ((mp_limb_t) ~ (mp_limb_t) 0) +#define GMP_LIMB_HIGHBIT ((mp_limb_t) 1 << (GMP_LIMB_BITS - 1)) + +#define GMP_HLIMB_BIT ((mp_limb_t) 1 << (GMP_LIMB_BITS / 2)) +#define GMP_LLIMB_MASK (GMP_HLIMB_BIT - 1) + +#define GMP_ULONG_BITS (sizeof(unsigned long) * CHAR_BIT) +#define GMP_ULONG_HIGHBIT ((unsigned long) 1 << (GMP_ULONG_BITS - 1)) + +#define GMP_ABS(x) ((x) >= 0 ? (x) : -(x)) +#define GMP_NEG_CAST(T,x) (-((T)((x) + 1) - 1)) + +#define GMP_MIN(a, b) ((a) < (b) ? (a) : (b)) +#define GMP_MAX(a, b) ((a) > (b) ? (a) : (b)) + +#define GMP_CMP(a,b) (((a) > (b)) - ((a) < (b))) + +#if defined(DBL_MANT_DIG) && FLT_RADIX == 2 +#define GMP_DBL_MANT_BITS DBL_MANT_DIG +#else +#define GMP_DBL_MANT_BITS (53) +#endif + +/* Return non-zero if xp,xsize and yp,ysize overlap. + If xp+xsize<=yp there's no overlap, or if yp+ysize<=xp there's no + overlap. If both these are false, there's an overlap. */ +#define GMP_MPN_OVERLAP_P(xp, xsize, yp, ysize) \ + ((xp) + (xsize) > (yp) && (yp) + (ysize) > (xp)) + +#define gmp_assert_nocarry(x) do { \ + mp_limb_t __cy = (x); \ + assert (__cy == 0); \ + } while (0) + +#define gmp_clz(count, x) do { \ + mp_limb_t __clz_x = (x); \ + unsigned __clz_c = 0; \ + int LOCAL_SHIFT_BITS = 8; \ + if (GMP_LIMB_BITS > LOCAL_SHIFT_BITS) \ + for (; \ + (__clz_x & ((mp_limb_t) 0xff << (GMP_LIMB_BITS - 8))) == 0; \ + __clz_c += 8) \ + { __clz_x <<= LOCAL_SHIFT_BITS; } \ + for (; (__clz_x & GMP_LIMB_HIGHBIT) == 0; __clz_c++) \ + __clz_x <<= 1; \ + (count) = __clz_c; \ + } while (0) + +#define gmp_ctz(count, x) do { \ + mp_limb_t __ctz_x = (x); \ + unsigned __ctz_c = 0; \ + gmp_clz (__ctz_c, __ctz_x & - __ctz_x); \ + (count) = GMP_LIMB_BITS - 1 - __ctz_c; \ + } while (0) + +#define gmp_add_ssaaaa(sh, sl, ah, al, bh, bl) \ + do { \ + mp_limb_t __x; \ + __x = (al) + (bl); \ + (sh) = (ah) + (bh) + (__x < (al)); \ + (sl) = __x; \ + } while (0) + +#define gmp_sub_ddmmss(sh, sl, ah, al, bh, bl) \ + do { \ + mp_limb_t __x; \ + __x = (al) - (bl); \ + (sh) = (ah) - (bh) - ((al) < (bl)); \ + (sl) = __x; \ + } while (0) + +#define gmp_umul_ppmm(w1, w0, u, v) \ + do { \ + int LOCAL_GMP_LIMB_BITS = GMP_LIMB_BITS; \ + if (sizeof(unsigned int) * CHAR_BIT >= 2 * GMP_LIMB_BITS) \ + { \ + unsigned int __ww = (unsigned int) (u) * (v); \ + w0 = (mp_limb_t) __ww; \ + w1 = (mp_limb_t) (__ww >> LOCAL_GMP_LIMB_BITS); \ + } \ + else if (GMP_ULONG_BITS >= 2 * GMP_LIMB_BITS) \ + { \ + unsigned long int __ww = (unsigned long int) (u) * (v); \ + w0 = (mp_limb_t) __ww; \ + w1 = (mp_limb_t) (__ww >> LOCAL_GMP_LIMB_BITS); \ + } \ + else { \ + mp_limb_t __x0, __x1, __x2, __x3; \ + unsigned __ul, __vl, __uh, __vh; \ + mp_limb_t __u = (u), __v = (v); \ + \ + __ul = __u & GMP_LLIMB_MASK; \ + __uh = __u >> (GMP_LIMB_BITS / 2); \ + __vl = __v & GMP_LLIMB_MASK; \ + __vh = __v >> (GMP_LIMB_BITS / 2); \ + \ + __x0 = (mp_limb_t) __ul * __vl; \ + __x1 = (mp_limb_t) __ul * __vh; \ + __x2 = (mp_limb_t) __uh * __vl; \ + __x3 = (mp_limb_t) __uh * __vh; \ + \ + __x1 += __x0 >> (GMP_LIMB_BITS / 2);/* this can't give carry */ \ + __x1 += __x2; /* but this indeed can */ \ + if (__x1 < __x2) /* did we get it? */ \ + __x3 += GMP_HLIMB_BIT; /* yes, add it in the proper pos. */ \ + \ + (w1) = __x3 + (__x1 >> (GMP_LIMB_BITS / 2)); \ + (w0) = (__x1 << (GMP_LIMB_BITS / 2)) + (__x0 & GMP_LLIMB_MASK); \ + } \ + } while (0) + +#define gmp_udiv_qrnnd_preinv(q, r, nh, nl, d, di) \ + do { \ + mp_limb_t _qh, _ql, _r, _mask; \ + gmp_umul_ppmm (_qh, _ql, (nh), (di)); \ + gmp_add_ssaaaa (_qh, _ql, _qh, _ql, (nh) + 1, (nl)); \ + _r = (nl) - _qh * (d); \ + _mask = -(mp_limb_t) (_r > _ql); /* both > and >= are OK */ \ + _qh += _mask; \ + _r += _mask & (d); \ + if (_r >= (d)) \ + { \ + _r -= (d); \ + _qh++; \ + } \ + \ + (r) = _r; \ + (q) = _qh; \ + } while (0) + +#define gmp_udiv_qr_3by2(q, r1, r0, n2, n1, n0, d1, d0, dinv) \ + do { \ + mp_limb_t _q0, _t1, _t0, _mask; \ + gmp_umul_ppmm ((q), _q0, (n2), (dinv)); \ + gmp_add_ssaaaa ((q), _q0, (q), _q0, (n2), (n1)); \ + \ + /* Compute the two most significant limbs of n - q'd */ \ + (r1) = (n1) - (d1) * (q); \ + gmp_sub_ddmmss ((r1), (r0), (r1), (n0), (d1), (d0)); \ + gmp_umul_ppmm (_t1, _t0, (d0), (q)); \ + gmp_sub_ddmmss ((r1), (r0), (r1), (r0), _t1, _t0); \ + (q)++; \ + \ + /* Conditionally adjust q and the remainders */ \ + _mask = - (mp_limb_t) ((r1) >= _q0); \ + (q) += _mask; \ + gmp_add_ssaaaa ((r1), (r0), (r1), (r0), _mask & (d1), _mask & (d0)); \ + if ((r1) >= (d1)) \ + { \ + if ((r1) > (d1) || (r0) >= (d0)) \ + { \ + (q)++; \ + gmp_sub_ddmmss ((r1), (r0), (r1), (r0), (d1), (d0)); \ + } \ + } \ + } while (0) + +/* Swap macros. */ +#define MP_LIMB_T_SWAP(x, y) \ + do { \ + mp_limb_t __mp_limb_t_swap__tmp = (x); \ + (x) = (y); \ + (y) = __mp_limb_t_swap__tmp; \ + } while (0) +#define MP_SIZE_T_SWAP(x, y) \ + do { \ + mp_size_t __mp_size_t_swap__tmp = (x); \ + (x) = (y); \ + (y) = __mp_size_t_swap__tmp; \ + } while (0) +#define MP_BITCNT_T_SWAP(x,y) \ + do { \ + mp_bitcnt_t __mp_bitcnt_t_swap__tmp = (x); \ + (x) = (y); \ + (y) = __mp_bitcnt_t_swap__tmp; \ + } while (0) +#define MP_PTR_SWAP(x, y) \ + do { \ + mp_ptr __mp_ptr_swap__tmp = (x); \ + (x) = (y); \ + (y) = __mp_ptr_swap__tmp; \ + } while (0) +#define MP_SRCPTR_SWAP(x, y) \ + do { \ + mp_srcptr __mp_srcptr_swap__tmp = (x); \ + (x) = (y); \ + (y) = __mp_srcptr_swap__tmp; \ + } while (0) + +#define MPN_PTR_SWAP(xp,xs, yp,ys) \ + do { \ + MP_PTR_SWAP (xp, yp); \ + MP_SIZE_T_SWAP (xs, ys); \ + } while(0) +#define MPN_SRCPTR_SWAP(xp,xs, yp,ys) \ + do { \ + MP_SRCPTR_SWAP (xp, yp); \ + MP_SIZE_T_SWAP (xs, ys); \ + } while(0) + +#define MPZ_PTR_SWAP(x, y) \ + do { \ + mpz_ptr __mpz_ptr_swap__tmp = (x); \ + (x) = (y); \ + (y) = __mpz_ptr_swap__tmp; \ + } while (0) +#define MPZ_SRCPTR_SWAP(x, y) \ + do { \ + mpz_srcptr __mpz_srcptr_swap__tmp = (x); \ + (x) = (y); \ + (y) = __mpz_srcptr_swap__tmp; \ + } while (0) + +const int mp_bits_per_limb = GMP_LIMB_BITS; + + +/* Memory allocation and other helper functions. */ +static void +gmp_die (const char *msg) +{ + printf ("%s\n", msg); + abort(); +} + +static void +gmp_default_free (void *p, size_t unused_size) +{ + free ((void*)((addr_t*)p-1)); +} + +static void * +gmp_default_alloc (size_t size) +{ + void *p; + + assert (size > 0); + + p = malloc (size+sizeof(void*)); + if (!p) + gmp_die("gmp_default_alloc: Virtual memory exhausted."); + *(addr_t *)p = (addr_t)p+size; + return (void*)((addr_t *)p + 1); +} + +static void * +gmp_default_realloc (void *old, size_t unused_old_size, size_t new_size) +{ + void * p; + addr_t *_blk = (addr_t*)old - 1; + + p = gmp_default_alloc (new_size); + + if (!p) + gmp_die("gmp_default_realloc: Virtual memory exhausted."); + /*debug("reallocating old size 0x%x new size 0x%x\n", (*_blk - (addr_t)_blk), new_size);*/ + memcpy(p, old, *_blk - (addr_t)_blk); + + gmp_default_free(old, 0); + + return p; +} + + +static void * (*gmp_allocate_func) (size_t) = gmp_default_alloc; +static void * (*gmp_reallocate_func) (void *, size_t, size_t) = gmp_default_realloc; +static void (*gmp_free_func) (void *, size_t) = gmp_default_free; + +void +mp_get_memory_functions (void *(**alloc_func) (size_t), + void *(**realloc_func) (void *, size_t, size_t), + void (**free_func) (void *, size_t)) +{ + if (alloc_func) + *alloc_func = gmp_allocate_func; + + if (realloc_func) + *realloc_func = gmp_reallocate_func; + + if (free_func) + *free_func = gmp_free_func; +} + +void +mp_set_memory_functions (void *(*alloc_func) (size_t), + void *(*realloc_func) (void *, size_t, size_t), + void (*free_func) (void *, size_t)) +{ + if (!alloc_func) + alloc_func = gmp_default_alloc; + if (!realloc_func) + realloc_func = gmp_default_realloc; + if (!free_func) + free_func = gmp_default_free; + + gmp_allocate_func = alloc_func; + gmp_reallocate_func = realloc_func; + gmp_free_func = free_func; +} + +#define gmp_xalloc(size) ((*gmp_allocate_func)((size))) +#define gmp_free(p) ((*gmp_free_func) ((p), 0)) + +static mp_ptr +gmp_xalloc_limbs (mp_size_t size) +{ + return (mp_ptr) gmp_xalloc (size * sizeof (mp_limb_t)); +} + +static mp_ptr +gmp_xrealloc_limbs (mp_ptr old, mp_size_t size) +{ + assert (size > 0); + return (mp_ptr) (*gmp_reallocate_func) (old, 0, size * sizeof (mp_limb_t)); +} + + +/* MPN interface */ + +void +mpn_copyi (mp_ptr d, mp_srcptr s, mp_size_t n) +{ + mp_size_t i; + for (i = 0; i < n; i++) + d[i] = s[i]; +} + +void +mpn_copyd (mp_ptr d, mp_srcptr s, mp_size_t n) +{ + while (--n >= 0) + d[n] = s[n]; +} + +int +mpn_cmp (mp_srcptr ap, mp_srcptr bp, mp_size_t n) +{ + while (--n >= 0) + { + if (ap[n] != bp[n]) + return ap[n] > bp[n] ? 1 : -1; + } + return 0; +} + +static int +mpn_cmp4 (mp_srcptr ap, mp_size_t an, mp_srcptr bp, mp_size_t bn) +{ + if (an != bn) + return an < bn ? -1 : 1; + else + return mpn_cmp (ap, bp, an); +} + +static mp_size_t +mpn_normalized_size (mp_srcptr xp, mp_size_t n) +{ + while (n > 0 && xp[n-1] == 0) + --n; + return n; +} + +int +mpn_zero_p(mp_srcptr rp, mp_size_t n) +{ + return mpn_normalized_size (rp, n) == 0; +} + +void +mpn_zero (mp_ptr rp, mp_size_t n) +{ + while (--n >= 0) + rp[n] = 0; +} + +mp_limb_t +mpn_add_1 (mp_ptr rp, mp_srcptr ap, mp_size_t n, mp_limb_t b) +{ + mp_size_t i; + + assert (n > 0); + i = 0; + do + { + mp_limb_t r = ap[i] + b; + /* Carry out */ + b = (r < b); + rp[i] = r; + } + while (++i < n); + + return b; +} + +mp_limb_t +mpn_add_n (mp_ptr rp, mp_srcptr ap, mp_srcptr bp, mp_size_t n) +{ + mp_size_t i; + mp_limb_t cy; + + for (i = 0, cy = 0; i < n; i++) + { + mp_limb_t a, b, r; + a = ap[i]; b = bp[i]; + r = a + cy; + cy = (r < cy); + r += b; + cy += (r < b); + rp[i] = r; + } + return cy; +} + +mp_limb_t +mpn_add (mp_ptr rp, mp_srcptr ap, mp_size_t an, mp_srcptr bp, mp_size_t bn) +{ + mp_limb_t cy; + + assert (an >= bn); + + cy = mpn_add_n (rp, ap, bp, bn); + if (an > bn) + cy = mpn_add_1 (rp + bn, ap + bn, an - bn, cy); + return cy; +} + +mp_limb_t +mpn_sub_1 (mp_ptr rp, mp_srcptr ap, mp_size_t n, mp_limb_t b) +{ + mp_size_t i; + + assert (n > 0); + + i = 0; + do + { + mp_limb_t a = ap[i]; + /* Carry out */ + mp_limb_t cy = a < b; + rp[i] = a - b; + b = cy; + } + while (++i < n); + + return b; +} + +mp_limb_t +mpn_sub_n (mp_ptr rp, mp_srcptr ap, mp_srcptr bp, mp_size_t n) +{ + mp_size_t i; + mp_limb_t cy; + + for (i = 0, cy = 0; i < n; i++) + { + mp_limb_t a, b; + a = ap[i]; b = bp[i]; + b += cy; + cy = (b < cy); + cy += (a < b); + rp[i] = a - b; + } + return cy; +} + +mp_limb_t +mpn_sub (mp_ptr rp, mp_srcptr ap, mp_size_t an, mp_srcptr bp, mp_size_t bn) +{ + mp_limb_t cy; + + assert (an >= bn); + + cy = mpn_sub_n (rp, ap, bp, bn); + if (an > bn) + cy = mpn_sub_1 (rp + bn, ap + bn, an - bn, cy); + return cy; +} + +mp_limb_t +mpn_mul_1 (mp_ptr rp, mp_srcptr up, mp_size_t n, mp_limb_t vl) +{ + mp_limb_t ul, cl, hpl, lpl; + + assert (n >= 1); + + cl = 0; + do + { + ul = *up++; + gmp_umul_ppmm (hpl, lpl, ul, vl); + + lpl += cl; + cl = (lpl < cl) + hpl; + + *rp++ = lpl; + } + while (--n != 0); + + return cl; +} + +mp_limb_t +mpn_addmul_1 (mp_ptr rp, mp_srcptr up, mp_size_t n, mp_limb_t vl) +{ + mp_limb_t ul, cl, hpl, lpl, rl; + + assert (n >= 1); + + cl = 0; + do + { + ul = *up++; + gmp_umul_ppmm (hpl, lpl, ul, vl); + + lpl += cl; + cl = (lpl < cl) + hpl; + + rl = *rp; + lpl = rl + lpl; + cl += lpl < rl; + *rp++ = lpl; + } + while (--n != 0); + + return cl; +} + +mp_limb_t +mpn_submul_1 (mp_ptr rp, mp_srcptr up, mp_size_t n, mp_limb_t vl) +{ + mp_limb_t ul, cl, hpl, lpl, rl; + + assert (n >= 1); + + cl = 0; + do + { + ul = *up++; + gmp_umul_ppmm (hpl, lpl, ul, vl); + + lpl += cl; + cl = (lpl < cl) + hpl; + + rl = *rp; + lpl = rl - lpl; + cl += lpl > rl; + *rp++ = lpl; + } + while (--n != 0); + + return cl; +} + +mp_limb_t +mpn_mul (mp_ptr rp, mp_srcptr up, mp_size_t un, mp_srcptr vp, mp_size_t vn) +{ + assert (un >= vn); + assert (vn >= 1); + assert (!GMP_MPN_OVERLAP_P(rp, un + vn, up, un)); + assert (!GMP_MPN_OVERLAP_P(rp, un + vn, vp, vn)); + + /* We first multiply by the low order limb. This result can be + stored, not added, to rp. We also avoid a loop for zeroing this + way. */ + + rp[un] = mpn_mul_1 (rp, up, un, vp[0]); + + /* Now accumulate the product of up[] and the next higher limb from + vp[]. */ + + while (--vn >= 1) + { + rp += 1, vp += 1; + rp[un] = mpn_addmul_1 (rp, up, un, vp[0]); + } + return rp[un]; +} + +void +mpn_mul_n (mp_ptr rp, mp_srcptr ap, mp_srcptr bp, mp_size_t n) +{ + mpn_mul (rp, ap, n, bp, n); +} + +void +mpn_sqr (mp_ptr rp, mp_srcptr ap, mp_size_t n) +{ + mpn_mul (rp, ap, n, ap, n); +} + +mp_limb_t +mpn_lshift (mp_ptr rp, mp_srcptr up, mp_size_t n, unsigned int cnt) +{ + mp_limb_t high_limb, low_limb; + unsigned int tnc; + mp_limb_t retval; + + assert (n >= 1); + assert (cnt >= 1); + assert (cnt < GMP_LIMB_BITS); + + up += n; + rp += n; + + tnc = GMP_LIMB_BITS - cnt; + low_limb = *--up; + retval = low_limb >> tnc; + high_limb = (low_limb << cnt); + + while (--n != 0) + { + low_limb = *--up; + *--rp = high_limb | (low_limb >> tnc); + high_limb = (low_limb << cnt); + } + *--rp = high_limb; + + return retval; +} + +mp_limb_t +mpn_rshift (mp_ptr rp, mp_srcptr up, mp_size_t n, unsigned int cnt) +{ + mp_limb_t high_limb, low_limb; + unsigned int tnc; + mp_limb_t retval; + + assert (n >= 1); + assert (cnt >= 1); + assert (cnt < GMP_LIMB_BITS); + + tnc = GMP_LIMB_BITS - cnt; + high_limb = *up++; + retval = (high_limb << tnc); + low_limb = high_limb >> cnt; + + while (--n != 0) + { + high_limb = *up++; + *rp++ = low_limb | (high_limb << tnc); + low_limb = high_limb >> cnt; + } + *rp = low_limb; + + return retval; +} + +static mp_bitcnt_t +mpn_common_scan (mp_limb_t limb, mp_size_t i, mp_srcptr up, mp_size_t un, + mp_limb_t ux) +{ + unsigned cnt; + + assert (ux == 0 || ux == GMP_LIMB_MAX); + assert (0 <= i && i <= un ); + + while (limb == 0) + { + i++; + if (i == un) + return (ux == 0 ? ~(mp_bitcnt_t) 0 : un * GMP_LIMB_BITS); + limb = ux ^ up[i]; + } + gmp_ctz (cnt, limb); + return (mp_bitcnt_t) i * GMP_LIMB_BITS + cnt; +} + +mp_bitcnt_t +mpn_scan1 (mp_srcptr ptr, mp_bitcnt_t bit) +{ + mp_size_t i; + i = bit / GMP_LIMB_BITS; + + return mpn_common_scan ( ptr[i] & (GMP_LIMB_MAX << (bit % GMP_LIMB_BITS)), + i, ptr, i, 0); +} + +mp_bitcnt_t +mpn_scan0 (mp_srcptr ptr, mp_bitcnt_t bit) +{ + mp_size_t i; + i = bit / GMP_LIMB_BITS; + + return mpn_common_scan (~ptr[i] & (GMP_LIMB_MAX << (bit % GMP_LIMB_BITS)), + i, ptr, i, GMP_LIMB_MAX); +} + +void +mpn_com (mp_ptr rp, mp_srcptr up, mp_size_t n) +{ + while (--n >= 0) + *rp++ = ~ *up++; +} + +mp_limb_t +mpn_neg (mp_ptr rp, mp_srcptr up, mp_size_t n) +{ + while (*up == 0) + { + *rp = 0; + if (!--n) + return 0; + ++up; ++rp; + } + *rp = - *up; + mpn_com (++rp, ++up, --n); + return 1; +} + + +/* MPN division interface. */ + +/* The 3/2 inverse is defined as + + m = floor( (B^3-1) / (B u1 + u0)) - B +*/ +mp_limb_t +mpn_invert_3by2 (mp_limb_t u1, mp_limb_t u0) +{ + mp_limb_t r, m; + + { + mp_limb_t p, ql; + unsigned ul, uh, qh; + + /* For notation, let b denote the half-limb base, so that B = b^2. + Split u1 = b uh + ul. */ + ul = u1 & GMP_LLIMB_MASK; + uh = u1 >> (GMP_LIMB_BITS / 2); + + /* Approximation of the high half of quotient. Differs from the 2/1 + inverse of the half limb uh, since we have already subtracted + u0. */ + qh = (u1 ^ GMP_LIMB_MAX) / uh; + + /* Adjust to get a half-limb 3/2 inverse, i.e., we want + + qh' = floor( (b^3 - 1) / u) - b = floor ((b^3 - b u - 1) / u + = floor( (b (~u) + b-1) / u), + + and the remainder + + r = b (~u) + b-1 - qh (b uh + ul) + = b (~u - qh uh) + b-1 - qh ul + + Subtraction of qh ul may underflow, which implies adjustments. + But by normalization, 2 u >= B > qh ul, so we need to adjust by + at most 2. + */ + + r = ((~u1 - (mp_limb_t) qh * uh) << (GMP_LIMB_BITS / 2)) | GMP_LLIMB_MASK; + + p = (mp_limb_t) qh * ul; + /* Adjustment steps taken from udiv_qrnnd_c */ + if (r < p) + { + qh--; + r += u1; + if (r >= u1) /* i.e. we didn't get carry when adding to r */ + if (r < p) + { + qh--; + r += u1; + } + } + r -= p; + + /* Low half of the quotient is + + ql = floor ( (b r + b-1) / u1). + + This is a 3/2 division (on half-limbs), for which qh is a + suitable inverse. */ + + p = (r >> (GMP_LIMB_BITS / 2)) * qh + r; + /* Unlike full-limb 3/2, we can add 1 without overflow. For this to + work, it is essential that ql is a full mp_limb_t. */ + ql = (p >> (GMP_LIMB_BITS / 2)) + 1; + + /* By the 3/2 trick, we don't need the high half limb. */ + r = (r << (GMP_LIMB_BITS / 2)) + GMP_LLIMB_MASK - ql * u1; + + if (r >= (GMP_LIMB_MAX & (p << (GMP_LIMB_BITS / 2)))) + { + ql--; + r += u1; + } + m = ((mp_limb_t) qh << (GMP_LIMB_BITS / 2)) + ql; + if (r >= u1) + { + m++; + r -= u1; + } + } + + /* Now m is the 2/1 inverse of u1. If u0 > 0, adjust it to become a + 3/2 inverse. */ + if (u0 > 0) + { + mp_limb_t th, tl; + r = ~r; + r += u0; + if (r < u0) + { + m--; + if (r >= u1) + { + m--; + r -= u1; + } + r -= u1; + } + gmp_umul_ppmm (th, tl, u0, m); + r += th; + if (r < th) + { + m--; + m -= ((r > u1) | ((r == u1) & (tl > u0))); + } + } + + return m; +} + +struct gmp_div_inverse +{ + /* Normalization shift count. */ + unsigned shift; + /* Normalized divisor (d0 unused for mpn_div_qr_1) */ + mp_limb_t d1, d0; + /* Inverse, for 2/1 or 3/2. */ + mp_limb_t di; +}; + +static void +mpn_div_qr_1_invert (struct gmp_div_inverse *inv, mp_limb_t d) +{ + unsigned shift; + + assert (d > 0); + gmp_clz (shift, d); + inv->shift = shift; + inv->d1 = d << shift; + inv->di = mpn_invert_limb (inv->d1); +} + +static void +mpn_div_qr_2_invert (struct gmp_div_inverse *inv, + mp_limb_t d1, mp_limb_t d0) +{ + unsigned shift; + + assert (d1 > 0); + gmp_clz (shift, d1); + inv->shift = shift; + if (shift > 0) + { + d1 = (d1 << shift) | (d0 >> (GMP_LIMB_BITS - shift)); + d0 <<= shift; + } + inv->d1 = d1; + inv->d0 = d0; + inv->di = mpn_invert_3by2 (d1, d0); +} + +static void +mpn_div_qr_invert (struct gmp_div_inverse *inv, + mp_srcptr dp, mp_size_t dn) +{ + assert (dn > 0); + + if (dn == 1) + mpn_div_qr_1_invert (inv, dp[0]); + else if (dn == 2) + mpn_div_qr_2_invert (inv, dp[1], dp[0]); + else + { + unsigned shift; + mp_limb_t d1, d0; + + d1 = dp[dn-1]; + d0 = dp[dn-2]; + assert (d1 > 0); + gmp_clz (shift, d1); + inv->shift = shift; + if (shift > 0) + { + d1 = (d1 << shift) | (d0 >> (GMP_LIMB_BITS - shift)); + d0 = (d0 << shift) | (dp[dn-3] >> (GMP_LIMB_BITS - shift)); + } + inv->d1 = d1; + inv->d0 = d0; + inv->di = mpn_invert_3by2 (d1, d0); + } +} + +/* Not matching current public gmp interface, rather corresponding to + the sbpi1_div_* functions. */ +static mp_limb_t +mpn_div_qr_1_preinv (mp_ptr qp, mp_srcptr np, mp_size_t nn, + const struct gmp_div_inverse *inv) +{ + mp_limb_t d, di; + mp_limb_t r; + mp_ptr tp = NULL; + + if (inv->shift > 0) + { + /* Shift, reusing qp area if possible. In-place shift if qp == np. */ + tp = qp ? qp : gmp_xalloc_limbs (nn); + r = mpn_lshift (tp, np, nn, inv->shift); + np = tp; + } + else + r = 0; + + d = inv->d1; + di = inv->di; + while (--nn >= 0) + { + mp_limb_t q; + + gmp_udiv_qrnnd_preinv (q, r, r, np[nn], d, di); + if (qp) + qp[nn] = q; + } + if ((inv->shift > 0) && (tp != qp)) + gmp_free (tp); + + return r >> inv->shift; +} + +static void +mpn_div_qr_2_preinv (mp_ptr qp, mp_ptr np, mp_size_t nn, + const struct gmp_div_inverse *inv) +{ + unsigned shift; + mp_size_t i; + mp_limb_t d1, d0, di, r1, r0; + + assert (nn >= 2); + shift = inv->shift; + d1 = inv->d1; + d0 = inv->d0; + di = inv->di; + + if (shift > 0) + r1 = mpn_lshift (np, np, nn, shift); + else + r1 = 0; + + r0 = np[nn - 1]; + + i = nn - 2; + do + { + mp_limb_t n0, q; + n0 = np[i]; + gmp_udiv_qr_3by2 (q, r1, r0, r1, r0, n0, d1, d0, di); + + if (qp) + qp[i] = q; + } + while (--i >= 0); + + if (shift > 0) + { + assert ((r0 & (GMP_LIMB_MAX >> (GMP_LIMB_BITS - shift))) == 0); + r0 = (r0 >> shift) | (r1 << (GMP_LIMB_BITS - shift)); + r1 >>= shift; + } + + np[1] = r1; + np[0] = r0; +} + +static void +mpn_div_qr_pi1 (mp_ptr qp, + mp_ptr np, mp_size_t nn, mp_limb_t n1, + mp_srcptr dp, mp_size_t dn, + mp_limb_t dinv) +{ + mp_size_t i; + + mp_limb_t d1, d0; + mp_limb_t cy, cy1; + mp_limb_t q; + + assert (dn > 2); + assert (nn >= dn); + + d1 = dp[dn - 1]; + d0 = dp[dn - 2]; + + assert ((d1 & GMP_LIMB_HIGHBIT) != 0); + /* Iteration variable is the index of the q limb. + * + * We divide + * by + */ + + i = nn - dn; + do + { + mp_limb_t n0 = np[dn-1+i]; + + if (n1 == d1 && n0 == d0) + { + q = GMP_LIMB_MAX; + mpn_submul_1 (np+i, dp, dn, q); + n1 = np[dn-1+i]; /* update n1, last loop's value will now be invalid */ + } + else + { + gmp_udiv_qr_3by2 (q, n1, n0, n1, n0, np[dn-2+i], d1, d0, dinv); + + cy = mpn_submul_1 (np + i, dp, dn-2, q); + + cy1 = n0 < cy; + n0 = n0 - cy; + cy = n1 < cy1; + n1 = n1 - cy1; + np[dn-2+i] = n0; + + if (cy != 0) + { + n1 += d1 + mpn_add_n (np + i, np + i, dp, dn - 1); + q--; + } + } + + if (qp) + qp[i] = q; + } + while (--i >= 0); + + np[dn - 1] = n1; +} + +static void +mpn_div_qr_preinv (mp_ptr qp, mp_ptr np, mp_size_t nn, + mp_srcptr dp, mp_size_t dn, + const struct gmp_div_inverse *inv) +{ + assert (dn > 0); + assert (nn >= dn); + + if (dn == 1) + np[0] = mpn_div_qr_1_preinv (qp, np, nn, inv); + else if (dn == 2) + mpn_div_qr_2_preinv (qp, np, nn, inv); + else + { + mp_limb_t nh; + unsigned shift; + + assert (inv->d1 == dp[dn-1]); + assert (inv->d0 == dp[dn-2]); + assert ((inv->d1 & GMP_LIMB_HIGHBIT) != 0); + + shift = inv->shift; + if (shift > 0) + nh = mpn_lshift (np, np, nn, shift); + else + nh = 0; + + mpn_div_qr_pi1 (qp, np, nn, nh, dp, dn, inv->di); + + if (shift > 0) + gmp_assert_nocarry (mpn_rshift (np, np, dn, shift)); + } +} + +static void +mpn_div_qr (mp_ptr qp, mp_ptr np, mp_size_t nn, mp_srcptr dp, mp_size_t dn) +{ + struct gmp_div_inverse inv; + mp_ptr tp = NULL; + + assert (dn > 0); + assert (nn >= dn); + + mpn_div_qr_invert (&inv, dp, dn); + if (dn > 2 && inv.shift > 0) + { + tp = gmp_xalloc_limbs (dn); + gmp_assert_nocarry (mpn_lshift (tp, dp, dn, inv.shift)); + dp = tp; + } + mpn_div_qr_preinv (qp, np, nn, dp, dn, &inv); + if (tp) + gmp_free (tp); +} + + +/* MPN base conversion. */ +static unsigned +mpn_base_power_of_two_p (unsigned b) +{ + switch (b) + { + case 2: return 1; + case 4: return 2; + case 8: return 3; + case 16: return 4; + case 32: return 5; + case 64: return 6; + case 128: return 7; + case 256: return 8; + default: return 0; + } +} + +struct mpn_base_info +{ + /* bb is the largest power of the base which fits in one limb, and + exp is the corresponding exponent. */ + unsigned exp; + mp_limb_t bb; +}; + +static void +mpn_get_base_info (struct mpn_base_info *info, mp_limb_t b) +{ + mp_limb_t m; + mp_limb_t p; + unsigned exp; + + m = GMP_LIMB_MAX / b; + for (exp = 1, p = b; p <= m; exp++) + p *= b; + + info->exp = exp; + info->bb = p; +} + +static mp_bitcnt_t +mpn_limb_size_in_base_2 (mp_limb_t u) +{ + unsigned shift; + + assert (u > 0); + gmp_clz (shift, u); + return GMP_LIMB_BITS - shift; +} + +static size_t +mpn_get_str_bits (unsigned char *sp, unsigned bits, mp_srcptr up, mp_size_t un) +{ + unsigned char mask; + size_t sn, j; + mp_size_t i; + unsigned shift; + + sn = ((un - 1) * GMP_LIMB_BITS + mpn_limb_size_in_base_2 (up[un-1]) + + bits - 1) / bits; + + mask = (1U << bits) - 1; + + for (i = 0, j = sn, shift = 0; j-- > 0;) + { + unsigned char digit = up[i] >> shift; + + shift += bits; + + if (shift >= GMP_LIMB_BITS && ++i < un) + { + shift -= GMP_LIMB_BITS; + digit |= up[i] << (bits - shift); + } + sp[j] = digit & mask; + } + return sn; +} + +/* We generate digits from the least significant end, and reverse at + the end. */ +static size_t +mpn_limb_get_str (unsigned char *sp, mp_limb_t w, + const struct gmp_div_inverse *binv) +{ + mp_size_t i; + for (i = 0; w > 0; i++) + { + mp_limb_t h, l, r; + + h = w >> (GMP_LIMB_BITS - binv->shift); + l = w << binv->shift; + + gmp_udiv_qrnnd_preinv (w, r, h, l, binv->d1, binv->di); + assert ((r & (GMP_LIMB_MAX >> (GMP_LIMB_BITS - binv->shift))) == 0); + r >>= binv->shift; + + sp[i] = r; + } + return i; +} + +static size_t +mpn_get_str_other (unsigned char *sp, + int base, const struct mpn_base_info *info, + mp_ptr up, mp_size_t un) +{ + struct gmp_div_inverse binv; + size_t sn; + size_t i; + + mpn_div_qr_1_invert (&binv, base); + + sn = 0; + + if (un > 1) + { + struct gmp_div_inverse bbinv; + mpn_div_qr_1_invert (&bbinv, info->bb); + + do + { + mp_limb_t w; + size_t done; + w = mpn_div_qr_1_preinv (up, up, un, &bbinv); + un -= (up[un-1] == 0); + done = mpn_limb_get_str (sp + sn, w, &binv); + + for (sn += done; done < info->exp; done++) + sp[sn++] = 0; + } + while (un > 1); + } + sn += mpn_limb_get_str (sp + sn, up[0], &binv); + + /* Reverse order */ + for (i = 0; 2*i + 1 < sn; i++) + { + unsigned char t = sp[i]; + sp[i] = sp[sn - i - 1]; + sp[sn - i - 1] = t; + } + + return sn; +} + +size_t +mpn_get_str (unsigned char *sp, int base, mp_ptr up, mp_size_t un) +{ + unsigned bits; + + assert (un > 0); + assert (up[un-1] > 0); + + bits = mpn_base_power_of_two_p (base); + if (bits) + return mpn_get_str_bits (sp, bits, up, un); + else + { + struct mpn_base_info info; + + mpn_get_base_info (&info, base); + return mpn_get_str_other (sp, base, &info, up, un); + } +} + +static mp_size_t +mpn_set_str_bits (mp_ptr rp, const unsigned char *sp, size_t sn, + unsigned bits) +{ + mp_size_t rn; + size_t j; + unsigned shift; + + for (j = sn, rn = 0, shift = 0; j-- > 0; ) + { + if (shift == 0) + { + rp[rn++] = sp[j]; + shift += bits; + } + else + { + rp[rn-1] |= (mp_limb_t) sp[j] << shift; + shift += bits; + if (shift >= GMP_LIMB_BITS) + { + shift -= GMP_LIMB_BITS; + if (shift > 0) + rp[rn++] = (mp_limb_t) sp[j] >> (bits - shift); + } + } + } + rn = mpn_normalized_size (rp, rn); + return rn; +} + +/* Result is usually normalized, except for all-zero input, in which + case a single zero limb is written at *RP, and 1 is returned. */ +static mp_size_t +mpn_set_str_other (mp_ptr rp, const unsigned char *sp, size_t sn, + mp_limb_t b, const struct mpn_base_info *info) +{ + mp_size_t rn; + mp_limb_t w; + unsigned k; + size_t j; + + assert (sn > 0); + + k = 1 + (sn - 1) % info->exp; + + j = 0; + w = sp[j++]; + while (--k != 0) + w = w * b + sp[j++]; + + rp[0] = w; + + for (rn = 1; j < sn;) + { + mp_limb_t cy; + + w = sp[j++]; + for (k = 1; k < info->exp; k++) + w = w * b + sp[j++]; + + cy = mpn_mul_1 (rp, rp, rn, info->bb); + cy += mpn_add_1 (rp, rp, rn, w); + if (cy > 0) + rp[rn++] = cy; + } + assert (j == sn); + + return rn; +} + +mp_size_t +mpn_set_str (mp_ptr rp, const unsigned char *sp, size_t sn, int base) +{ + unsigned bits; + + if (sn == 0) + return 0; + + bits = mpn_base_power_of_two_p (base); + if (bits) + return mpn_set_str_bits (rp, sp, sn, bits); + else + { + struct mpn_base_info info; + + mpn_get_base_info (&info, base); + return mpn_set_str_other (rp, sp, sn, base, &info); + } +} + + +/* MPZ interface */ +void +mpz_init (mpz_t r) +{ + static const mp_limb_t dummy_limb = GMP_LIMB_MAX & 0xc1a0; + + r->_mp_alloc = 0; + r->_mp_size = 0; + r->_mp_d = (mp_ptr) &dummy_limb; +} + +/* The utility of this function is a bit limited, since many functions + assigns the result variable using mpz_swap. */ +void +mpz_init2 (mpz_t r, mp_bitcnt_t bits) +{ + mp_size_t rn; + + bits -= (bits != 0); /* Round down, except if 0 */ + rn = 1 + bits / GMP_LIMB_BITS; + + r->_mp_alloc = rn; + r->_mp_size = 0; + r->_mp_d = gmp_xalloc_limbs (rn); +} + +void +mpz_clear (mpz_t r) +{ + if (r->_mp_alloc) + gmp_free (r->_mp_d); +} + +static mp_ptr +mpz_realloc (mpz_t r, mp_size_t size) +{ + size = GMP_MAX (size, 1); + + if (r->_mp_alloc) + r->_mp_d = gmp_xrealloc_limbs (r->_mp_d, size); + else + r->_mp_d = gmp_xalloc_limbs (size); + r->_mp_alloc = size; + + if (GMP_ABS (r->_mp_size) > size) + r->_mp_size = 0; + + return r->_mp_d; +} + +/* Realloc for an mpz_t WHAT if it has less than NEEDED limbs. */ +#define MPZ_REALLOC(z,n) ((n) > (z)->_mp_alloc \ + ? mpz_realloc(z,n) \ + : (z)->_mp_d) + +/* MPZ assignment and basic conversions. */ +void +mpz_set_si (mpz_t r, signed long int x) +{ + if (x >= 0) + mpz_set_ui (r, x); + else /* (x < 0) */ + if (GMP_LIMB_BITS < GMP_ULONG_BITS) + { + mpz_set_ui (r, GMP_NEG_CAST (unsigned long int, x)); + mpz_neg (r, r); + } + else + { + r->_mp_size = -1; + MPZ_REALLOC (r, 1)[0] = GMP_NEG_CAST (unsigned long int, x); + } +} + +void +mpz_set_ui (mpz_t r, unsigned long int x) +{ + if (x > 0) + { + r->_mp_size = 1; + MPZ_REALLOC (r, 1)[0] = x; + if (GMP_LIMB_BITS < GMP_ULONG_BITS) + { + int LOCAL_GMP_LIMB_BITS = GMP_LIMB_BITS; + while (x >>= LOCAL_GMP_LIMB_BITS) + { + ++ r->_mp_size; + MPZ_REALLOC (r, r->_mp_size)[r->_mp_size - 1] = x; + } + } + } + else + r->_mp_size = 0; +} + +void +mpz_set (mpz_t r, const mpz_t x) +{ + /* Allow the NOP r == x */ + if (r != x) + { + mp_size_t n; + mp_ptr rp; + + n = GMP_ABS (x->_mp_size); + rp = MPZ_REALLOC (r, n); + + mpn_copyi (rp, x->_mp_d, n); + r->_mp_size = x->_mp_size; + } +} + +void +mpz_init_set_si (mpz_t r, signed long int x) +{ + mpz_init (r); + mpz_set_si (r, x); +} + +void +mpz_init_set_ui (mpz_t r, unsigned long int x) +{ + mpz_init (r); + mpz_set_ui (r, x); +} + +void +mpz_init_set (mpz_t r, const mpz_t x) +{ + mpz_init (r); + mpz_set (r, x); +} + +int +mpz_fits_slong_p (const mpz_t u) +{ + return (LONG_MAX + LONG_MIN == 0 || mpz_cmp_ui (u, LONG_MAX) <= 0) && + mpz_cmpabs_ui (u, GMP_NEG_CAST (unsigned long int, LONG_MIN)) <= 0; +} + +static int +mpn_absfits_ulong_p (mp_srcptr up, mp_size_t un) +{ + int ulongsize = GMP_ULONG_BITS / GMP_LIMB_BITS; + mp_limb_t ulongrem = 0; + + if (GMP_ULONG_BITS % GMP_LIMB_BITS != 0) + ulongrem = (mp_limb_t) (ULONG_MAX >> GMP_LIMB_BITS * ulongsize) + 1; + + return un <= ulongsize || (up[ulongsize] < ulongrem && un == ulongsize + 1); +} + +int +mpz_fits_ulong_p (const mpz_t u) +{ + mp_size_t us = u->_mp_size; + + return us >= 0 && mpn_absfits_ulong_p (u->_mp_d, us); +} + +long int +mpz_get_si (const mpz_t u) +{ + unsigned long r = mpz_get_ui (u); + unsigned long c = -LONG_MAX - LONG_MIN; + + if (u->_mp_size < 0) + /* This expression is necessary to properly handle -LONG_MIN */ + return -(long) c - (long) ((r - c) & LONG_MAX); + else + return (long) (r & LONG_MAX); +} + +unsigned long int +mpz_get_ui (const mpz_t u) +{ + if (GMP_LIMB_BITS < GMP_ULONG_BITS) + { + int LOCAL_GMP_LIMB_BITS = GMP_LIMB_BITS; + unsigned long r = 0; + mp_size_t n = GMP_ABS (u->_mp_size); + n = GMP_MIN (n, 1 + (mp_size_t) (GMP_ULONG_BITS - 1) / GMP_LIMB_BITS); + while (--n >= 0) + r = (r << LOCAL_GMP_LIMB_BITS) + u->_mp_d[n]; + return r; + } + + return u->_mp_size == 0 ? 0 : u->_mp_d[0]; +} + +size_t +mpz_size (const mpz_t u) +{ + return GMP_ABS (u->_mp_size); +} + +mp_limb_t +mpz_getlimbn (const mpz_t u, mp_size_t n) +{ + if (n >= 0 && n < GMP_ABS (u->_mp_size)) + return u->_mp_d[n]; + else + return 0; +} + +void +mpz_realloc2 (mpz_t x, mp_bitcnt_t n) +{ + mpz_realloc (x, 1 + (n - (n != 0)) / GMP_LIMB_BITS); +} + +mp_srcptr +mpz_limbs_read (mpz_srcptr x) +{ + return x->_mp_d; +} + +mp_ptr +mpz_limbs_modify (mpz_t x, mp_size_t n) +{ + assert (n > 0); + return MPZ_REALLOC (x, n); +} + +mp_ptr +mpz_limbs_write (mpz_t x, mp_size_t n) +{ + return mpz_limbs_modify (x, n); +} + +void +mpz_limbs_finish (mpz_t x, mp_size_t xs) +{ + mp_size_t xn; + xn = mpn_normalized_size (x->_mp_d, GMP_ABS (xs)); + x->_mp_size = xs < 0 ? -xn : xn; +} + +static mpz_srcptr +mpz_roinit_normal_n (mpz_t x, mp_srcptr xp, mp_size_t xs) +{ + x->_mp_alloc = 0; + x->_mp_d = (mp_ptr) xp; + x->_mp_size = xs; + return x; +} + +mpz_srcptr +mpz_roinit_n (mpz_t x, mp_srcptr xp, mp_size_t xs) +{ + mpz_roinit_normal_n (x, xp, xs); + mpz_limbs_finish (x, xs); + return x; +} + + +/* Conversions and comparison to double. */ +void +mpz_set_d (mpz_t r, double x) +{ + int sign; + mp_ptr rp; + mp_size_t rn, i; + double B; + double Bi; + mp_limb_t f; + + /* x != x is true when x is a NaN, and x == x * 0.5 is true when x is + zero or infinity. */ + if (x != x || x == x * 0.5) + { + r->_mp_size = 0; + return; + } + + sign = x < 0.0 ; + if (sign) + x = - x; + + if (x < 1.0) + { + r->_mp_size = 0; + return; + } + B = 4.0 * (double) (GMP_LIMB_HIGHBIT >> 1); + Bi = 1.0 / B; + for (rn = 1; x >= B; rn++) + x *= Bi; + + rp = MPZ_REALLOC (r, rn); + + f = (mp_limb_t) x; + x -= f; + assert (x < 1.0); + i = rn-1; + rp[i] = f; + while (--i >= 0) + { + x = B * x; + f = (mp_limb_t) x; + x -= f; + assert (x < 1.0); + rp[i] = f; + } + + r->_mp_size = sign ? - rn : rn; +} + +void +mpz_init_set_d (mpz_t r, double x) +{ + mpz_init (r); + mpz_set_d (r, x); +} + +double +mpz_get_d (const mpz_t u) +{ + int m; + mp_limb_t l; + mp_size_t un; + double x; + double B = 4.0 * (double) (GMP_LIMB_HIGHBIT >> 1); + + un = GMP_ABS (u->_mp_size); + + if (un == 0) + return 0.0; + + l = u->_mp_d[--un]; + gmp_clz (m, l); + m = m + GMP_DBL_MANT_BITS - GMP_LIMB_BITS; + if (m < 0) + l &= GMP_LIMB_MAX << -m; + + for (x = l; --un >= 0;) + { + x = B*x; + if (m > 0) { + l = u->_mp_d[un]; + m -= GMP_LIMB_BITS; + if (m < 0) + l &= GMP_LIMB_MAX << -m; + x += l; + } + } + + if (u->_mp_size < 0) + x = -x; + + return x; +} + +int +mpz_cmpabs_d (const mpz_t x, double d) +{ + mp_size_t xn; + double B, Bi; + mp_size_t i; + + xn = x->_mp_size; + d = GMP_ABS (d); + + if (xn != 0) + { + xn = GMP_ABS (xn); + + B = 4.0 * (double) (GMP_LIMB_HIGHBIT >> 1); + Bi = 1.0 / B; + + /* Scale d so it can be compared with the top limb. */ + for (i = 1; i < xn; i++) + d *= Bi; + + if (d >= B) + return -1; + + /* Compare floor(d) to top limb, subtract and cancel when equal. */ + for (i = xn; i-- > 0;) + { + mp_limb_t f, xl; + + f = (mp_limb_t) d; + xl = x->_mp_d[i]; + if (xl > f) + return 1; + else if (xl < f) + return -1; + d = B * (d - f); + } + } + return - (d > 0.0); +} + +int +mpz_cmp_d (const mpz_t x, double d) +{ + if (x->_mp_size < 0) + { + if (d >= 0.0) + return -1; + else + return -mpz_cmpabs_d (x, d); + } + else + { + if (d < 0.0) + return 1; + else + return mpz_cmpabs_d (x, d); + } +} + + +/* MPZ comparisons and the like. */ +int +mpz_sgn (const mpz_t u) +{ + return GMP_CMP (u->_mp_size, 0); +} + +int +mpz_cmp_si (const mpz_t u, long v) +{ + mp_size_t usize = u->_mp_size; + + if (v >= 0) + return mpz_cmp_ui (u, v); + else if (usize >= 0) + return 1; + else + return - mpz_cmpabs_ui (u, GMP_NEG_CAST (unsigned long int, v)); +} + +int +mpz_cmp_ui (const mpz_t u, unsigned long v) +{ + mp_size_t usize = u->_mp_size; + + if (usize < 0) + return -1; + else + return mpz_cmpabs_ui (u, v); +} + +int +mpz_cmp (const mpz_t a, const mpz_t b) +{ + mp_size_t asize = a->_mp_size; + mp_size_t bsize = b->_mp_size; + + if (asize != bsize) + return (asize < bsize) ? -1 : 1; + else if (asize >= 0) + return mpn_cmp (a->_mp_d, b->_mp_d, asize); + else + return mpn_cmp (b->_mp_d, a->_mp_d, -asize); +} + +int +mpz_cmpabs_ui (const mpz_t u, unsigned long v) +{ + mp_size_t un = GMP_ABS (u->_mp_size); + + if (! mpn_absfits_ulong_p (u->_mp_d, un)) + return 1; + else + { + unsigned long uu = mpz_get_ui (u); + return GMP_CMP(uu, v); + } +} + +int +mpz_cmpabs (const mpz_t u, const mpz_t v) +{ + return mpn_cmp4 (u->_mp_d, GMP_ABS (u->_mp_size), + v->_mp_d, GMP_ABS (v->_mp_size)); +} + +void +mpz_abs (mpz_t r, const mpz_t u) +{ + mpz_set (r, u); + r->_mp_size = GMP_ABS (r->_mp_size); +} + +void +mpz_neg (mpz_t r, const mpz_t u) +{ + mpz_set (r, u); + r->_mp_size = -r->_mp_size; +} + +void +mpz_swap (mpz_t u, mpz_t v) +{ + MP_SIZE_T_SWAP (u->_mp_size, v->_mp_size); + MP_SIZE_T_SWAP (u->_mp_alloc, v->_mp_alloc); + MP_PTR_SWAP (u->_mp_d, v->_mp_d); +} + + +/* MPZ addition and subtraction */ + + +void +mpz_add_ui (mpz_t r, const mpz_t a, unsigned long b) +{ + mpz_t bb; + mpz_init_set_ui (bb, b); + mpz_add (r, a, bb); + mpz_clear (bb); +} + +void +mpz_sub_ui (mpz_t r, const mpz_t a, unsigned long b) +{ + mpz_ui_sub (r, b, a); + mpz_neg (r, r); +} + +void +mpz_ui_sub (mpz_t r, unsigned long a, const mpz_t b) +{ + mpz_neg (r, b); + mpz_add_ui (r, r, a); +} + +static mp_size_t +mpz_abs_add (mpz_t r, const mpz_t a, const mpz_t b) +{ + mp_size_t an = GMP_ABS (a->_mp_size); + mp_size_t bn = GMP_ABS (b->_mp_size); + mp_ptr rp; + mp_limb_t cy; + + if (an < bn) + { + MPZ_SRCPTR_SWAP (a, b); + MP_SIZE_T_SWAP (an, bn); + } + + rp = MPZ_REALLOC (r, an + 1); + cy = mpn_add (rp, a->_mp_d, an, b->_mp_d, bn); + + rp[an] = cy; + + return an + cy; +} + +static mp_size_t +mpz_abs_sub (mpz_t r, const mpz_t a, const mpz_t b) +{ + mp_size_t an = GMP_ABS (a->_mp_size); + mp_size_t bn = GMP_ABS (b->_mp_size); + int cmp; + mp_ptr rp; + + cmp = mpn_cmp4 (a->_mp_d, an, b->_mp_d, bn); + if (cmp > 0) + { + rp = MPZ_REALLOC (r, an); + gmp_assert_nocarry (mpn_sub (rp, a->_mp_d, an, b->_mp_d, bn)); + return mpn_normalized_size (rp, an); + } + else if (cmp < 0) + { + rp = MPZ_REALLOC (r, bn); + gmp_assert_nocarry (mpn_sub (rp, b->_mp_d, bn, a->_mp_d, an)); + return -mpn_normalized_size (rp, bn); + } + else + return 0; +} + +void +mpz_add (mpz_t r, const mpz_t a, const mpz_t b) +{ + mp_size_t rn; + + if ( (a->_mp_size ^ b->_mp_size) >= 0) + rn = mpz_abs_add (r, a, b); + else + rn = mpz_abs_sub (r, a, b); + + r->_mp_size = a->_mp_size >= 0 ? rn : - rn; +} + +void +mpz_sub (mpz_t r, const mpz_t a, const mpz_t b) +{ + mp_size_t rn; + + if ( (a->_mp_size ^ b->_mp_size) >= 0) + rn = mpz_abs_sub (r, a, b); + else + rn = mpz_abs_add (r, a, b); + + r->_mp_size = a->_mp_size >= 0 ? rn : - rn; +} + + +/* MPZ multiplication */ +void +mpz_mul_si (mpz_t r, const mpz_t u, long int v) +{ + if (v < 0) + { + mpz_mul_ui (r, u, GMP_NEG_CAST (unsigned long int, v)); + mpz_neg (r, r); + } + else + mpz_mul_ui (r, u, v); +} + +void +mpz_mul_ui (mpz_t r, const mpz_t u, unsigned long int v) +{ + mpz_t vv; + mpz_init_set_ui (vv, v); + mpz_mul (r, u, vv); + mpz_clear (vv); + return; +} + +void +mpz_mul (mpz_t r, const mpz_t u, const mpz_t v) +{ + int sign; + mp_size_t un, vn, rn; + mpz_t t; + mp_ptr tp; + + un = u->_mp_size; + vn = v->_mp_size; + + if (un == 0 || vn == 0) + { + r->_mp_size = 0; + return; + } + + sign = (un ^ vn) < 0; + + un = GMP_ABS (un); + vn = GMP_ABS (vn); + + mpz_init2 (t, (un + vn) * GMP_LIMB_BITS); + + tp = t->_mp_d; + if (un >= vn) + mpn_mul (tp, u->_mp_d, un, v->_mp_d, vn); + else + mpn_mul (tp, v->_mp_d, vn, u->_mp_d, un); + + rn = un + vn; + rn -= tp[rn-1] == 0; + + t->_mp_size = sign ? - rn : rn; + mpz_swap (r, t); + mpz_clear (t); +} + +void +mpz_mul_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t bits) +{ + mp_size_t un, rn; + mp_size_t limbs; + unsigned shift; + mp_ptr rp; + + un = GMP_ABS (u->_mp_size); + if (un == 0) + { + r->_mp_size = 0; + return; + } + + limbs = bits / GMP_LIMB_BITS; + shift = bits % GMP_LIMB_BITS; + + rn = un + limbs + (shift > 0); + rp = MPZ_REALLOC (r, rn); + if (shift > 0) + { + mp_limb_t cy = mpn_lshift (rp + limbs, u->_mp_d, un, shift); + rp[rn-1] = cy; + rn -= (cy == 0); + } + else + mpn_copyd (rp + limbs, u->_mp_d, un); + + mpn_zero (rp, limbs); + + r->_mp_size = (u->_mp_size < 0) ? - rn : rn; +} + +void +mpz_addmul_ui (mpz_t r, const mpz_t u, unsigned long int v) +{ + mpz_t t; + mpz_init_set_ui (t, v); + mpz_mul (t, u, t); + mpz_add (r, r, t); + mpz_clear (t); +} + +void +mpz_submul_ui (mpz_t r, const mpz_t u, unsigned long int v) +{ + mpz_t t; + mpz_init_set_ui (t, v); + mpz_mul (t, u, t); + mpz_sub (r, r, t); + mpz_clear (t); +} + +void +mpz_addmul (mpz_t r, const mpz_t u, const mpz_t v) +{ + mpz_t t; + mpz_init (t); + mpz_mul (t, u, v); + mpz_add (r, r, t); + mpz_clear (t); +} + +void +mpz_submul (mpz_t r, const mpz_t u, const mpz_t v) +{ + mpz_t t; + mpz_init (t); + mpz_mul (t, u, v); + mpz_sub (r, r, t); + mpz_clear (t); +} + + +/* MPZ division */ +enum mpz_div_round_mode { GMP_DIV_FLOOR, GMP_DIV_CEIL, GMP_DIV_TRUNC }; + +/* Allows q or r to be zero. Returns 1 iff remainder is non-zero. */ +static int +mpz_div_qr (mpz_t q, mpz_t r, + const mpz_t n, const mpz_t d, enum mpz_div_round_mode mode) +{ + mp_size_t ns, ds, nn, dn, qs; + ns = n->_mp_size; + ds = d->_mp_size; + + if (ds == 0) + gmp_die("mpz_div_qr: Divide by zero."); + + if (ns == 0) + { + if (q) + q->_mp_size = 0; + if (r) + r->_mp_size = 0; + return 0; + } + + nn = GMP_ABS (ns); + dn = GMP_ABS (ds); + + qs = ds ^ ns; + + if (nn < dn) + { + if (mode == GMP_DIV_CEIL && qs >= 0) + { + /* q = 1, r = n - d */ + if (r) + mpz_sub (r, n, d); + if (q) + mpz_set_ui (q, 1); + } + else if (mode == GMP_DIV_FLOOR && qs < 0) + { + /* q = -1, r = n + d */ + if (r) + mpz_add (r, n, d); + if (q) + mpz_set_si (q, -1); + } + else + { + /* q = 0, r = d */ + if (r) + mpz_set (r, n); + if (q) + q->_mp_size = 0; + } + return 1; + } + else + { + mp_ptr np, qp; + mp_size_t qn, rn; + mpz_t tq, tr; + + mpz_init_set (tr, n); + np = tr->_mp_d; + + qn = nn - dn + 1; + + if (q) + { + mpz_init2 (tq, qn * GMP_LIMB_BITS); + qp = tq->_mp_d; + } + else + qp = NULL; + + mpn_div_qr (qp, np, nn, d->_mp_d, dn); + + if (qp) + { + qn -= (qp[qn-1] == 0); + + tq->_mp_size = qs < 0 ? -qn : qn; + } + rn = mpn_normalized_size (np, dn); + tr->_mp_size = ns < 0 ? - rn : rn; + + if (mode == GMP_DIV_FLOOR && qs < 0 && rn != 0) + { + if (q) + mpz_sub_ui (tq, tq, 1); + if (r) + mpz_add (tr, tr, d); + } + else if (mode == GMP_DIV_CEIL && qs >= 0 && rn != 0) + { + if (q) + mpz_add_ui (tq, tq, 1); + if (r) + mpz_sub (tr, tr, d); + } + + if (q) + { + mpz_swap (tq, q); + mpz_clear (tq); + } + if (r) + mpz_swap (tr, r); + + mpz_clear (tr); + + return rn != 0; + } +} + +void +mpz_cdiv_qr (mpz_t q, mpz_t r, const mpz_t n, const mpz_t d) +{ + mpz_div_qr (q, r, n, d, GMP_DIV_CEIL); +} + +void +mpz_fdiv_qr (mpz_t q, mpz_t r, const mpz_t n, const mpz_t d) +{ + mpz_div_qr (q, r, n, d, GMP_DIV_FLOOR); +} + +void +mpz_tdiv_qr (mpz_t q, mpz_t r, const mpz_t n, const mpz_t d) +{ + mpz_div_qr (q, r, n, d, GMP_DIV_TRUNC); +} + +void +mpz_cdiv_q (mpz_t q, const mpz_t n, const mpz_t d) +{ + mpz_div_qr (q, NULL, n, d, GMP_DIV_CEIL); +} + +void +mpz_fdiv_q (mpz_t q, const mpz_t n, const mpz_t d) +{ + mpz_div_qr (q, NULL, n, d, GMP_DIV_FLOOR); +} + +void +mpz_tdiv_q (mpz_t q, const mpz_t n, const mpz_t d) +{ + mpz_div_qr (q, NULL, n, d, GMP_DIV_TRUNC); +} + +void +mpz_cdiv_r (mpz_t r, const mpz_t n, const mpz_t d) +{ + mpz_div_qr (NULL, r, n, d, GMP_DIV_CEIL); +} + +void +mpz_fdiv_r (mpz_t r, const mpz_t n, const mpz_t d) +{ + mpz_div_qr (NULL, r, n, d, GMP_DIV_FLOOR); +} + +void +mpz_tdiv_r (mpz_t r, const mpz_t n, const mpz_t d) +{ + mpz_div_qr (NULL, r, n, d, GMP_DIV_TRUNC); +} + +void +mpz_mod (mpz_t r, const mpz_t n, const mpz_t d) +{ + mpz_div_qr (NULL, r, n, d, d->_mp_size >= 0 ? GMP_DIV_FLOOR : GMP_DIV_CEIL); +} + +static void +mpz_div_q_2exp (mpz_t q, const mpz_t u, mp_bitcnt_t bit_index, + enum mpz_div_round_mode mode) +{ + mp_size_t un, qn; + mp_size_t limb_cnt; + mp_ptr qp; + int adjust; + + un = u->_mp_size; + if (un == 0) + { + q->_mp_size = 0; + return; + } + limb_cnt = bit_index / GMP_LIMB_BITS; + qn = GMP_ABS (un) - limb_cnt; + bit_index %= GMP_LIMB_BITS; + + if (mode == ((un > 0) ? GMP_DIV_CEIL : GMP_DIV_FLOOR)) /* un != 0 here. */ + /* Note: Below, the final indexing at limb_cnt is valid because at + that point we have qn > 0. */ + adjust = (qn <= 0 + || !mpn_zero_p (u->_mp_d, limb_cnt) + || (u->_mp_d[limb_cnt] + & (((mp_limb_t) 1 << bit_index) - 1))); + else + adjust = 0; + + if (qn <= 0) + qn = 0; + else + { + qp = MPZ_REALLOC (q, qn); + + if (bit_index != 0) + { + mpn_rshift (qp, u->_mp_d + limb_cnt, qn, bit_index); + qn -= qp[qn - 1] == 0; + } + else + { + mpn_copyi (qp, u->_mp_d + limb_cnt, qn); + } + } + + q->_mp_size = qn; + + if (adjust) + mpz_add_ui (q, q, 1); + if (un < 0) + mpz_neg (q, q); +} + +static void +mpz_div_r_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t bit_index, + enum mpz_div_round_mode mode) +{ + mp_size_t us, un, rn; + mp_ptr rp; + mp_limb_t mask; + + us = u->_mp_size; + if (us == 0 || bit_index == 0) + { + r->_mp_size = 0; + return; + } + rn = (bit_index + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; + assert (rn > 0); + + rp = MPZ_REALLOC (r, rn); + un = GMP_ABS (us); + + mask = GMP_LIMB_MAX >> (rn * GMP_LIMB_BITS - bit_index); + + if (rn > un) + { + /* Quotient (with truncation) is zero, and remainder is + non-zero */ + if (mode == ((us > 0) ? GMP_DIV_CEIL : GMP_DIV_FLOOR)) /* us != 0 here. */ + { + /* Have to negate and sign extend. */ + mp_size_t i; + + gmp_assert_nocarry (! mpn_neg (rp, u->_mp_d, un)); + for (i = un; i < rn - 1; i++) + rp[i] = GMP_LIMB_MAX; + + rp[rn-1] = mask; + us = -us; + } + else + { + /* Just copy */ + if (r != u) + mpn_copyi (rp, u->_mp_d, un); + + rn = un; + } + } + else + { + if (r != u) + mpn_copyi (rp, u->_mp_d, rn - 1); + + rp[rn-1] = u->_mp_d[rn-1] & mask; + + if (mode == ((us > 0) ? GMP_DIV_CEIL : GMP_DIV_FLOOR)) /* us != 0 here. */ + { + /* If r != 0, compute 2^{bit_count} - r. */ + mpn_neg (rp, rp, rn); + + rp[rn-1] &= mask; + + /* us is not used for anything else, so we can modify it + here to indicate flipped sign. */ + us = -us; + } + } + rn = mpn_normalized_size (rp, rn); + r->_mp_size = us < 0 ? -rn : rn; +} + +void +mpz_cdiv_q_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t cnt) +{ + mpz_div_q_2exp (r, u, cnt, GMP_DIV_CEIL); +} + +void +mpz_fdiv_q_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t cnt) +{ + mpz_div_q_2exp (r, u, cnt, GMP_DIV_FLOOR); +} + +void +mpz_tdiv_q_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t cnt) +{ + mpz_div_q_2exp (r, u, cnt, GMP_DIV_TRUNC); +} + +void +mpz_cdiv_r_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t cnt) +{ + mpz_div_r_2exp (r, u, cnt, GMP_DIV_CEIL); +} + +void +mpz_fdiv_r_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t cnt) +{ + mpz_div_r_2exp (r, u, cnt, GMP_DIV_FLOOR); +} + +void +mpz_tdiv_r_2exp (mpz_t r, const mpz_t u, mp_bitcnt_t cnt) +{ + mpz_div_r_2exp (r, u, cnt, GMP_DIV_TRUNC); +} + +void +mpz_divexact (mpz_t q, const mpz_t n, const mpz_t d) +{ + gmp_assert_nocarry (mpz_div_qr (q, NULL, n, d, GMP_DIV_TRUNC)); +} + +int +mpz_divisible_p (const mpz_t n, const mpz_t d) +{ + return mpz_div_qr (NULL, NULL, n, d, GMP_DIV_TRUNC) == 0; +} + +int +mpz_congruent_p (const mpz_t a, const mpz_t b, const mpz_t m) +{ + mpz_t t; + int res; + + /* a == b (mod 0) iff a == b */ + if (mpz_sgn (m) == 0) + return (mpz_cmp (a, b) == 0); + + mpz_init (t); + mpz_sub (t, a, b); + res = mpz_divisible_p (t, m); + mpz_clear (t); + + return res; +} + +static unsigned long +mpz_div_qr_ui (mpz_t q, mpz_t r, + const mpz_t n, unsigned long d, enum mpz_div_round_mode mode) +{ + unsigned long ret; + mpz_t rr, dd; + + mpz_init (rr); + mpz_init_set_ui (dd, d); + mpz_div_qr (q, rr, n, dd, mode); + mpz_clear (dd); + ret = mpz_get_ui (rr); + + if (r) + mpz_swap (r, rr); + mpz_clear (rr); + + return ret; +} + +unsigned long +mpz_cdiv_qr_ui (mpz_t q, mpz_t r, const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (q, r, n, d, GMP_DIV_CEIL); +} + +unsigned long +mpz_fdiv_qr_ui (mpz_t q, mpz_t r, const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (q, r, n, d, GMP_DIV_FLOOR); +} + +unsigned long +mpz_tdiv_qr_ui (mpz_t q, mpz_t r, const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (q, r, n, d, GMP_DIV_TRUNC); +} + +unsigned long +mpz_cdiv_q_ui (mpz_t q, const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (q, NULL, n, d, GMP_DIV_CEIL); +} + +unsigned long +mpz_fdiv_q_ui (mpz_t q, const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (q, NULL, n, d, GMP_DIV_FLOOR); +} + +unsigned long +mpz_tdiv_q_ui (mpz_t q, const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (q, NULL, n, d, GMP_DIV_TRUNC); +} + +unsigned long +mpz_cdiv_r_ui (mpz_t r, const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (NULL, r, n, d, GMP_DIV_CEIL); +} +unsigned long +mpz_fdiv_r_ui (mpz_t r, const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (NULL, r, n, d, GMP_DIV_FLOOR); +} +unsigned long +mpz_tdiv_r_ui (mpz_t r, const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (NULL, r, n, d, GMP_DIV_TRUNC); +} + +unsigned long +mpz_cdiv_ui (const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (NULL, NULL, n, d, GMP_DIV_CEIL); +} + +unsigned long +mpz_fdiv_ui (const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (NULL, NULL, n, d, GMP_DIV_FLOOR); +} + +unsigned long +mpz_tdiv_ui (const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (NULL, NULL, n, d, GMP_DIV_TRUNC); +} + +unsigned long +mpz_mod_ui (mpz_t r, const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (NULL, r, n, d, GMP_DIV_FLOOR); +} + +void +mpz_divexact_ui (mpz_t q, const mpz_t n, unsigned long d) +{ + gmp_assert_nocarry (mpz_div_qr_ui (q, NULL, n, d, GMP_DIV_TRUNC)); +} + +int +mpz_divisible_ui_p (const mpz_t n, unsigned long d) +{ + return mpz_div_qr_ui (NULL, NULL, n, d, GMP_DIV_TRUNC) == 0; +} + + +/* GCD */ +static mp_limb_t +mpn_gcd_11 (mp_limb_t u, mp_limb_t v) +{ + unsigned shift; + + assert ( (u | v) > 0); + + if (u == 0) + return v; + else if (v == 0) + return u; + + gmp_ctz (shift, u | v); + + u >>= shift; + v >>= shift; + + if ( (u & 1) == 0) + MP_LIMB_T_SWAP (u, v); + + while ( (v & 1) == 0) + v >>= 1; + + while (u != v) + { + if (u > v) + { + u -= v; + do + u >>= 1; + while ( (u & 1) == 0); + } + else + { + v -= u; + do + v >>= 1; + while ( (v & 1) == 0); + } + } + return u << shift; +} + +unsigned long +mpz_gcd_ui (mpz_t g, const mpz_t u, unsigned long v) +{ + mpz_t t; + mpz_init_set_ui(t, v); + mpz_gcd (t, u, t); + if (v > 0) + v = mpz_get_ui (t); + + if (g) + mpz_swap (t, g); + + mpz_clear (t); + + return v; +} + +static mp_bitcnt_t +mpz_make_odd (mpz_t r) +{ + mp_bitcnt_t shift; + + assert (r->_mp_size > 0); + /* Count trailing zeros, equivalent to mpn_scan1, because we know that there is a 1 */ + shift = mpn_common_scan (r->_mp_d[0], 0, r->_mp_d, 0, 0); + mpz_tdiv_q_2exp (r, r, shift); + + return shift; +} + +void +mpz_gcd (mpz_t g, const mpz_t u, const mpz_t v) +{ + mpz_t tu, tv; + mp_bitcnt_t uz, vz, gz; + + if (u->_mp_size == 0) + { + mpz_abs (g, v); + return; + } + if (v->_mp_size == 0) + { + mpz_abs (g, u); + return; + } + + mpz_init (tu); + mpz_init (tv); + + mpz_abs (tu, u); + uz = mpz_make_odd (tu); + mpz_abs (tv, v); + vz = mpz_make_odd (tv); + gz = GMP_MIN (uz, vz); + + if (tu->_mp_size < tv->_mp_size) + mpz_swap (tu, tv); + + mpz_tdiv_r (tu, tu, tv); + if (tu->_mp_size == 0) + { + mpz_swap (g, tv); + } + else + for (;;) + { + int c; + + mpz_make_odd (tu); + c = mpz_cmp (tu, tv); + if (c == 0) + { + mpz_swap (g, tu); + break; + } + if (c < 0) + mpz_swap (tu, tv); + + if (tv->_mp_size == 1) + { + mp_limb_t vl = tv->_mp_d[0]; + mp_limb_t ul = mpz_tdiv_ui (tu, vl); + mpz_set_ui (g, mpn_gcd_11 (ul, vl)); + break; + } + mpz_sub (tu, tu, tv); + } + mpz_clear (tu); + mpz_clear (tv); + mpz_mul_2exp (g, g, gz); +} + +void +mpz_gcdext (mpz_t g, mpz_t s, mpz_t t, const mpz_t u, const mpz_t v) +{ + mpz_t tu, tv, s0, s1, t0, t1; + mp_bitcnt_t uz, vz, gz; + mp_bitcnt_t power; + + if (u->_mp_size == 0) + { + /* g = 0 u + sgn(v) v */ + signed long sign = mpz_sgn (v); + mpz_abs (g, v); + if (s) + s->_mp_size = 0; + if (t) + mpz_set_si (t, sign); + return; + } + + if (v->_mp_size == 0) + { + /* g = sgn(u) u + 0 v */ + signed long sign = mpz_sgn (u); + mpz_abs (g, u); + if (s) + mpz_set_si (s, sign); + if (t) + t->_mp_size = 0; + return; + } + + mpz_init (tu); + mpz_init (tv); + mpz_init (s0); + mpz_init (s1); + mpz_init (t0); + mpz_init (t1); + + mpz_abs (tu, u); + uz = mpz_make_odd (tu); + mpz_abs (tv, v); + vz = mpz_make_odd (tv); + gz = GMP_MIN (uz, vz); + + uz -= gz; + vz -= gz; + + /* Cofactors corresponding to odd gcd. gz handled later. */ + if (tu->_mp_size < tv->_mp_size) + { + mpz_swap (tu, tv); + MPZ_SRCPTR_SWAP (u, v); + MPZ_PTR_SWAP (s, t); + MP_BITCNT_T_SWAP (uz, vz); + } + + /* Maintain + * + * u = t0 tu + t1 tv + * v = s0 tu + s1 tv + * + * where u and v denote the inputs with common factors of two + * eliminated, and det (s0, t0; s1, t1) = 2^p. Then + * + * 2^p tu = s1 u - t1 v + * 2^p tv = -s0 u + t0 v + */ + + /* After initial division, tu = q tv + tu', we have + * + * u = 2^uz (tu' + q tv) + * v = 2^vz tv + * + * or + * + * t0 = 2^uz, t1 = 2^uz q + * s0 = 0, s1 = 2^vz + */ + + mpz_setbit (t0, uz); + mpz_tdiv_qr (t1, tu, tu, tv); + mpz_mul_2exp (t1, t1, uz); + + mpz_setbit (s1, vz); + power = uz + vz; + + if (tu->_mp_size > 0) + { + mp_bitcnt_t shift; + shift = mpz_make_odd (tu); + mpz_mul_2exp (t0, t0, shift); + mpz_mul_2exp (s0, s0, shift); + power += shift; + + for (;;) + { + int c; + c = mpz_cmp (tu, tv); + if (c == 0) + break; + + if (c < 0) + { + /* tv = tv' + tu + * + * u = t0 tu + t1 (tv' + tu) = (t0 + t1) tu + t1 tv' + * v = s0 tu + s1 (tv' + tu) = (s0 + s1) tu + s1 tv' */ + + mpz_sub (tv, tv, tu); + mpz_add (t0, t0, t1); + mpz_add (s0, s0, s1); + + shift = mpz_make_odd (tv); + mpz_mul_2exp (t1, t1, shift); + mpz_mul_2exp (s1, s1, shift); + } + else + { + mpz_sub (tu, tu, tv); + mpz_add (t1, t0, t1); + mpz_add (s1, s0, s1); + + shift = mpz_make_odd (tu); + mpz_mul_2exp (t0, t0, shift); + mpz_mul_2exp (s0, s0, shift); + } + power += shift; + } + } + + /* Now tv = odd part of gcd, and -s0 and t0 are corresponding + cofactors. */ + + mpz_mul_2exp (tv, tv, gz); + mpz_neg (s0, s0); + + /* 2^p g = s0 u + t0 v. Eliminate one factor of two at a time. To + adjust cofactors, we need u / g and v / g */ + + mpz_divexact (s1, v, tv); + mpz_abs (s1, s1); + mpz_divexact (t1, u, tv); + mpz_abs (t1, t1); + + while (power-- > 0) + { + /* s0 u + t0 v = (s0 - v/g) u - (t0 + u/g) v */ + if (mpz_odd_p (s0) || mpz_odd_p (t0)) + { + mpz_sub (s0, s0, s1); + mpz_add (t0, t0, t1); + } + assert (mpz_even_p (t0) && mpz_even_p (s0)); + mpz_tdiv_q_2exp (s0, s0, 1); + mpz_tdiv_q_2exp (t0, t0, 1); + } + + /* Arrange so that |s| < |u| / 2g */ + mpz_add (s1, s0, s1); + if (mpz_cmpabs (s0, s1) > 0) + { + mpz_swap (s0, s1); + mpz_sub (t0, t0, t1); + } + if (u->_mp_size < 0) + mpz_neg (s0, s0); + if (v->_mp_size < 0) + mpz_neg (t0, t0); + + mpz_swap (g, tv); + if (s) + mpz_swap (s, s0); + if (t) + mpz_swap (t, t0); + + mpz_clear (tu); + mpz_clear (tv); + mpz_clear (s0); + mpz_clear (s1); + mpz_clear (t0); + mpz_clear (t1); +} + +void +mpz_lcm (mpz_t r, const mpz_t u, const mpz_t v) +{ + mpz_t g; + + if (u->_mp_size == 0 || v->_mp_size == 0) + { + r->_mp_size = 0; + return; + } + + mpz_init (g); + + mpz_gcd (g, u, v); + mpz_divexact (g, u, g); + mpz_mul (r, g, v); + + mpz_clear (g); + mpz_abs (r, r); +} + +void +mpz_lcm_ui (mpz_t r, const mpz_t u, unsigned long v) +{ + if (v == 0 || u->_mp_size == 0) + { + r->_mp_size = 0; + return; + } + + v /= mpz_gcd_ui (NULL, u, v); + mpz_mul_ui (r, u, v); + + mpz_abs (r, r); +} + +int +mpz_invert (mpz_t r, const mpz_t u, const mpz_t m) +{ + mpz_t g, tr; + int invertible; + + if (u->_mp_size == 0 || mpz_cmpabs_ui (m, 1) <= 0) + return 0; + + mpz_init (g); + mpz_init (tr); + + mpz_gcdext (g, tr, NULL, u, m); + invertible = (mpz_cmp_ui (g, 1) == 0); + + if (invertible) + { + if (tr->_mp_size < 0) + { + if (m->_mp_size >= 0) + mpz_add (tr, tr, m); + else + mpz_sub (tr, tr, m); + } + mpz_swap (r, tr); + } + + mpz_clear (g); + mpz_clear (tr); + return invertible; +} + + +/* Higher level operations (sqrt, pow and root) */ + +void +mpz_pow_ui (mpz_t r, const mpz_t b, unsigned long e) +{ + unsigned long bit; + mpz_t tr; + mpz_init_set_ui (tr, 1); + + bit = GMP_ULONG_HIGHBIT; + do + { + mpz_mul (tr, tr, tr); + if (e & bit) + mpz_mul (tr, tr, b); + bit >>= 1; + } + while (bit > 0); + + mpz_swap (r, tr); + mpz_clear (tr); +} + +void +mpz_ui_pow_ui (mpz_t r, unsigned long blimb, unsigned long e) +{ + mpz_t b; + + mpz_init_set_ui (b, blimb); + mpz_pow_ui (r, b, e); + mpz_clear (b); +} + +void +mpz_powm (mpz_t r, const mpz_t b, const mpz_t e, const mpz_t m) +{ + mpz_t tr; + mpz_t base; + mp_size_t en, mn; + mp_srcptr mp; + struct gmp_div_inverse minv; + unsigned shift; + mp_ptr tp = NULL; + + en = GMP_ABS (e->_mp_size); + mn = GMP_ABS (m->_mp_size); + if (mn == 0) + gmp_die ("mpz_powm: Zero modulo."); + + if (en == 0) + { + mpz_set_ui (r, 1); + return; + } + + mp = m->_mp_d; + mpn_div_qr_invert (&minv, mp, mn); + shift = minv.shift; + + if (shift > 0) + { + /* To avoid shifts, we do all our reductions, except the final + one, using a *normalized* m. */ + minv.shift = 0; + + tp = gmp_xalloc_limbs (mn); + gmp_assert_nocarry (mpn_lshift (tp, mp, mn, shift)); + mp = tp; + } + + mpz_init (base); + + if (e->_mp_size < 0) + { + if (!mpz_invert (base, b, m)) + gmp_die ("mpz_powm: Negative exponent and non-invertible base."); + } + else + { + mp_size_t bn; + mpz_abs (base, b); + + bn = base->_mp_size; + if (bn >= mn) + { + mpn_div_qr_preinv (NULL, base->_mp_d, base->_mp_size, mp, mn, &minv); + bn = mn; + } + + /* We have reduced the absolute value. Now take care of the + sign. Note that we get zero represented non-canonically as + m. */ + if (b->_mp_size < 0) + { + mp_ptr bp = MPZ_REALLOC (base, mn); + gmp_assert_nocarry (mpn_sub (bp, mp, mn, bp, bn)); + bn = mn; + } + base->_mp_size = mpn_normalized_size (base->_mp_d, bn); + } + mpz_init_set_ui (tr, 1); + + while (--en >= 0) + { + mp_limb_t w = e->_mp_d[en]; + mp_limb_t bit; + + bit = GMP_LIMB_HIGHBIT; + do + { + mpz_mul (tr, tr, tr); + if (w & bit) + mpz_mul (tr, tr, base); + if (tr->_mp_size > mn) + { + mpn_div_qr_preinv (NULL, tr->_mp_d, tr->_mp_size, mp, mn, &minv); + tr->_mp_size = mpn_normalized_size (tr->_mp_d, mn); + } + bit >>= 1; + } + while (bit > 0); + } + + /* Final reduction */ + if (tr->_mp_size >= mn) + { + minv.shift = shift; + mpn_div_qr_preinv (NULL, tr->_mp_d, tr->_mp_size, mp, mn, &minv); + tr->_mp_size = mpn_normalized_size (tr->_mp_d, mn); + } + if (tp) + gmp_free (tp); + + mpz_swap (r, tr); + mpz_clear (tr); + mpz_clear (base); +} + +void +mpz_powm_ui (mpz_t r, const mpz_t b, unsigned long elimb, const mpz_t m) +{ + mpz_t e; + + mpz_init_set_ui (e, elimb); + mpz_powm (r, b, e, m); + mpz_clear (e); +} + +/* x=trunc(y^(1/z)), r=y-x^z */ +void +mpz_rootrem (mpz_t x, mpz_t r, const mpz_t y, unsigned long z) +{ + int sgn; + mpz_t t, u; + + sgn = y->_mp_size < 0; + if ((~z & sgn) != 0) + gmp_die ("mpz_rootrem: Negative argument, with even root."); + if (z == 0) + gmp_die ("mpz_rootrem: Zeroth root."); + + if (mpz_cmpabs_ui (y, 1) <= 0) { + if (x) + mpz_set (x, y); + if (r) + r->_mp_size = 0; + return; + } + + mpz_init (u); + mpz_init (t); + mpz_setbit (t, mpz_sizeinbase (y, 2) / z + 1); + + if (z == 2) /* simplify sqrt loop: z-1 == 1 */ + do { + mpz_swap (u, t); /* u = x */ + mpz_tdiv_q (t, y, u); /* t = y/x */ + mpz_add (t, t, u); /* t = y/x + x */ + mpz_tdiv_q_2exp (t, t, 1); /* x'= (y/x + x)/2 */ + } while (mpz_cmpabs (t, u) < 0); /* |x'| < |x| */ + else /* z != 2 */ { + mpz_t v; + + mpz_init (v); + if (sgn) + mpz_neg (t, t); + + do { + mpz_swap (u, t); /* u = x */ + mpz_pow_ui (t, u, z - 1); /* t = x^(z-1) */ + mpz_tdiv_q (t, y, t); /* t = y/x^(z-1) */ + mpz_mul_ui (v, u, z - 1); /* v = x*(z-1) */ + mpz_add (t, t, v); /* t = y/x^(z-1) + x*(z-1) */ + mpz_tdiv_q_ui (t, t, z); /* x'=(y/x^(z-1) + x*(z-1))/z */ + } while (mpz_cmpabs (t, u) < 0); /* |x'| < |x| */ + + mpz_clear (v); + } + + if (r) { + mpz_pow_ui (t, u, z); + mpz_sub (r, y, t); + } + if (x) + mpz_swap (x, u); + mpz_clear (u); + mpz_clear (t); +} + +int +mpz_root (mpz_t x, const mpz_t y, unsigned long z) +{ + int res; + mpz_t r; + + mpz_init (r); + mpz_rootrem (x, r, y, z); + res = r->_mp_size == 0; + mpz_clear (r); + + return res; +} + +/* Compute s = floor(sqrt(u)) and r = u - s^2. Allows r == NULL */ +void +mpz_sqrtrem (mpz_t s, mpz_t r, const mpz_t u) +{ + mpz_rootrem (s, r, u, 2); +} + +void +mpz_sqrt (mpz_t s, const mpz_t u) +{ + mpz_rootrem (s, NULL, u, 2); +} + +int +mpz_perfect_square_p (const mpz_t u) +{ + if (u->_mp_size <= 0) + return (u->_mp_size == 0); + else + return mpz_root (NULL, u, 2); +} + +int +mpn_perfect_square_p (mp_srcptr p, mp_size_t n) +{ + mpz_t t; + + assert (n > 0); + assert (p [n-1] != 0); + return mpz_root (NULL, mpz_roinit_normal_n (t, p, n), 2); +} + +mp_size_t +mpn_sqrtrem (mp_ptr sp, mp_ptr rp, mp_srcptr p, mp_size_t n) +{ + mpz_t s, r, u; + mp_size_t res; + + assert (n > 0); + assert (p [n-1] != 0); + + mpz_init (r); + mpz_init (s); + mpz_rootrem (s, r, mpz_roinit_normal_n (u, p, n), 2); + + assert (s->_mp_size == (n+1)/2); + mpn_copyd (sp, s->_mp_d, s->_mp_size); + mpz_clear (s); + res = r->_mp_size; + if (rp) + mpn_copyd (rp, r->_mp_d, res); + mpz_clear (r); + return res; +} + +/* Combinatorics */ + +void +mpz_mfac_uiui (mpz_t x, unsigned long n, unsigned long m) +{ + mpz_set_ui (x, n + (n == 0)); + if (m + 1 < 2) return; + while (n > m + 1) + mpz_mul_ui (x, x, n -= m); +} + +void +mpz_2fac_ui (mpz_t x, unsigned long n) +{ + mpz_mfac_uiui (x, n, 2); +} + +void +mpz_fac_ui (mpz_t x, unsigned long n) +{ + mpz_mfac_uiui (x, n, 1); +} + +void +mpz_bin_uiui (mpz_t r, unsigned long n, unsigned long k) +{ + mpz_t t; + + mpz_set_ui (r, k <= n); + + if (k > (n >> 1)) + k = (k <= n) ? n - k : 0; + + mpz_init (t); + mpz_fac_ui (t, k); + + for (; k > 0; --k) + mpz_mul_ui (r, r, n--); + + mpz_divexact (r, r, t); + mpz_clear (t); +} + + +/* Primality testing */ + +/* Computes Kronecker (a/b) with odd b, a!=0 and GCD(a,b) = 1 */ +/* Adapted from JACOBI_BASE_METHOD==4 in mpn/generic/jacbase.c */ +static int +gmp_jacobi_coprime (mp_limb_t a, mp_limb_t b) +{ + int c, bit = 0; + + assert (b & 1); + assert (a != 0); + /* assert (mpn_gcd_11 (a, b) == 1); */ + + /* Below, we represent a and b shifted right so that the least + significant one bit is implicit. */ + b >>= 1; + + gmp_ctz(c, a); + a >>= 1; + + do + { + a >>= c; + /* (2/b) = -1 if b = 3 or 5 mod 8 */ + bit ^= c & (b ^ (b >> 1)); + if (a < b) + { + bit ^= a & b; + a = b - a; + b -= a; + } + else + { + a -= b; + assert (a != 0); + } + + gmp_ctz(c, a); + ++c; + } + while (b > 0); + + return bit & 1 ? -1 : 1; +} + +static void +gmp_lucas_step_k_2k (mpz_t V, mpz_t Qk, const mpz_t n) +{ + mpz_mod (Qk, Qk, n); + /* V_{2k} <- V_k ^ 2 - 2Q^k */ + mpz_mul (V, V, V); + mpz_submul_ui (V, Qk, 2); + mpz_tdiv_r (V, V, n); + /* Q^{2k} = (Q^k)^2 */ + mpz_mul (Qk, Qk, Qk); +} + +/* Computes V_k, Q^k (mod n) for the Lucas' sequence */ +/* with P=1, Q=Q; k = (n>>b0)|1. */ +/* Requires an odd n > 4; b0 > 0; -2*Q must not overflow a long */ +/* Returns (U_k == 0) and sets V=V_k and Qk=Q^k. */ +static int +gmp_lucas_mod (mpz_t V, mpz_t Qk, long Q, + mp_bitcnt_t b0, const mpz_t n) +{ + mp_bitcnt_t bs; + mpz_t U; + int res; + + assert (b0 > 0); + assert (Q <= - (LONG_MIN / 2)); + assert (Q >= - (LONG_MAX / 2)); + assert (mpz_cmp_ui (n, 4) > 0); + assert (mpz_odd_p (n)); + + mpz_init_set_ui (U, 1); /* U1 = 1 */ + mpz_set_ui (V, 1); /* V1 = 1 */ + mpz_set_si (Qk, Q); + + for (bs = mpz_sizeinbase (n, 2) - 1; --bs >= b0;) + { + /* U_{2k} <- U_k * V_k */ + mpz_mul (U, U, V); + /* V_{2k} <- V_k ^ 2 - 2Q^k */ + /* Q^{2k} = (Q^k)^2 */ + gmp_lucas_step_k_2k (V, Qk, n); + + /* A step k->k+1 is performed if the bit in $n$ is 1 */ + /* mpz_tstbit(n,bs) or the the bit is 0 in $n$ but */ + /* should be 1 in $n+1$ (bs == b0) */ + if (b0 == bs || mpz_tstbit (n, bs)) + { + /* Q^{k+1} <- Q^k * Q */ + mpz_mul_si (Qk, Qk, Q); + /* U_{k+1} <- (U_k + V_k) / 2 */ + mpz_swap (U, V); /* Keep in V the old value of U_k */ + mpz_add (U, U, V); + /* We have to compute U/2, so we need an even value, */ + /* equivalent (mod n) */ + if (mpz_odd_p (U)) + mpz_add (U, U, n); + mpz_tdiv_q_2exp (U, U, 1); + /* V_{k+1} <-(D*U_k + V_k) / 2 = + U_{k+1} + (D-1)/2*U_k = U_{k+1} - 2Q*U_k */ + mpz_mul_si (V, V, -2*Q); + mpz_add (V, U, V); + mpz_tdiv_r (V, V, n); + } + mpz_tdiv_r (U, U, n); + } + + res = U->_mp_size == 0; + mpz_clear (U); + return res; +} + +/* Performs strong Lucas' test on x, with parameters suggested */ +/* for the BPSW test. Qk is only passed to recycle a variable. */ +/* Requires GCD (x,6) = 1.*/ +static int +gmp_stronglucas (const mpz_t x, mpz_t Qk) +{ + mp_bitcnt_t b0; + mpz_t V, n; + mp_limb_t maxD, D; /* The absolute value is stored. */ + long Q; + mp_limb_t tl; + + /* Test on the absolute value. */ + mpz_roinit_normal_n (n, x->_mp_d, GMP_ABS (x->_mp_size)); + + assert (mpz_odd_p (n)); + /* assert (mpz_gcd_ui (NULL, n, 6) == 1); */ + if (mpz_root (Qk, n, 2)) + return 0; /* A square is composite. */ + + /* Check Ds up to square root (in case, n is prime) + or avoid overflows */ + maxD = (Qk->_mp_size == 1) ? Qk->_mp_d [0] - 1 : GMP_LIMB_MAX; + + D = 3; + /* Search a D such that (D/n) = -1 in the sequence 5,-7,9,-11,.. */ + /* For those Ds we have (D/n) = (n/|D|) */ + do + { + if (D >= maxD) + return 1 + (D != GMP_LIMB_MAX); /* (1 + ! ~ D) */ + D += 2; + tl = mpz_tdiv_ui (n, D); + if (tl == 0) + return 0; + } + while (gmp_jacobi_coprime (tl, D) == 1); + + mpz_init (V); + + /* n-(D/n) = n+1 = d*2^{b0}, with d = (n>>b0) | 1 */ + b0 = mpz_scan0 (n, 0); + + /* D= P^2 - 4Q; P = 1; Q = (1-D)/4 */ + Q = (D & 2) ? (long) (D >> 2) + 1 : -(long) (D >> 2); + + if (! gmp_lucas_mod (V, Qk, Q, b0, n)) /* If Ud != 0 */ + while (V->_mp_size != 0 && --b0 != 0) /* while Vk != 0 */ + /* V <- V ^ 2 - 2Q^k */ + /* Q^{2k} = (Q^k)^2 */ + gmp_lucas_step_k_2k (V, Qk, n); + + mpz_clear (V); + return (b0 != 0); +} + +static int +gmp_millerrabin (const mpz_t n, const mpz_t nm1, mpz_t y, + const mpz_t q, mp_bitcnt_t k) +{ + assert (k > 0); + + /* Caller must initialize y to the base. */ + mpz_powm (y, y, q, n); + + if (mpz_cmp_ui (y, 1) == 0 || mpz_cmp (y, nm1) == 0) + return 1; + + while (--k > 0) + { + mpz_powm_ui (y, y, 2, n); + if (mpz_cmp (y, nm1) == 0) + return 1; + /* y == 1 means that the previous y was a non-trivial square root + of 1 (mod n). y == 0 means that n is a power of the base. + In either case, n is not prime. */ + if (mpz_cmp_ui (y, 1) <= 0) + return 0; + } + return 0; +} + +/* This product is 0xc0cfd797, and fits in 32 bits. */ +#define GMP_PRIME_PRODUCT \ + (3UL*5UL*7UL*11UL*13UL*17UL*19UL*23UL*29UL) + +/* Bit (p+1)/2 is set, for each odd prime <= 61 */ +#define GMP_PRIME_MASK 0xc96996dcUL + +int +mpz_probab_prime_p (const mpz_t n, int reps) +{ + mpz_t nm1; + mpz_t q; + mpz_t y; + mp_bitcnt_t k; + int is_prime; + int j; + + /* Note that we use the absolute value of n only, for compatibility + with the real GMP. */ + if (mpz_even_p (n)) + return (mpz_cmpabs_ui (n, 2) == 0) ? 2 : 0; + + /* Above test excludes n == 0 */ + assert (n->_mp_size != 0); + + if (mpz_cmpabs_ui (n, 64) < 0) + return (GMP_PRIME_MASK >> (n->_mp_d[0] >> 1)) & 2; + + if (mpz_gcd_ui (NULL, n, GMP_PRIME_PRODUCT) != 1) + return 0; + + /* All prime factors are >= 31. */ + if (mpz_cmpabs_ui (n, 31*31) < 0) + return 2; + + mpz_init (nm1); + mpz_init (q); + + /* Find q and k, where q is odd and n = 1 + 2**k * q. */ + mpz_abs (nm1, n); + nm1->_mp_d[0] -= 1; + k = mpz_scan1 (nm1, 0); + mpz_tdiv_q_2exp (q, nm1, k); + + /* BPSW test */ + mpz_init_set_ui (y, 2); + is_prime = gmp_millerrabin (n, nm1, y, q, k) && gmp_stronglucas (n, y); + reps -= 24; /* skip the first 24 repetitions */ + + /* Use Miller-Rabin, with a deterministic sequence of bases, a[j] = + j^2 + j + 41 using Euler's polynomial. We potentially stop early, + if a[j] >= n - 1. Since n >= 31*31, this can happen only if reps > + 30 (a[30] == 971 > 31*31 == 961). */ + + for (j = 0; is_prime & (j < reps); j++) + { + mpz_set_ui (y, (unsigned long) j*j+j+41); + if (mpz_cmp (y, nm1) >= 0) + { + /* Don't try any further bases. This "early" break does not affect + the result for any reasonable reps value (<=5000 was tested) */ + assert (j >= 30); + break; + } + is_prime = gmp_millerrabin (n, nm1, y, q, k); + } + mpz_clear (nm1); + mpz_clear (q); + mpz_clear (y); + + return is_prime; +} + + +/* Logical operations and bit manipulation. */ + +/* Numbers are treated as if represented in two's complement (and + infinitely sign extended). For a negative values we get the two's + complement from -x = ~x + 1, where ~ is bitwise complement. + Negation transforms + + xxxx10...0 + + into + + yyyy10...0 + + where yyyy is the bitwise complement of xxxx. So least significant + bits, up to and including the first one bit, are unchanged, and + the more significant bits are all complemented. + + To change a bit from zero to one in a negative number, subtract the + corresponding power of two from the absolute value. This can never + underflow. To change a bit from one to zero, add the corresponding + power of two, and this might overflow. E.g., if x = -001111, the + two's complement is 110001. Clearing the least significant bit, we + get two's complement 110000, and -010000. */ + +int +mpz_tstbit (const mpz_t d, mp_bitcnt_t bit_index) +{ + mp_size_t limb_index; + unsigned shift; + mp_size_t ds; + mp_size_t dn; + mp_limb_t w; + int bit; + + ds = d->_mp_size; + dn = GMP_ABS (ds); + limb_index = bit_index / GMP_LIMB_BITS; + if (limb_index >= dn) + return ds < 0; + + shift = bit_index % GMP_LIMB_BITS; + w = d->_mp_d[limb_index]; + bit = (w >> shift) & 1; + + if (ds < 0) + { + /* d < 0. Check if any of the bits below is set: If so, our bit + must be complemented. */ + if (shift > 0 && (mp_limb_t) (w << (GMP_LIMB_BITS - shift)) > 0) + return bit ^ 1; + while (--limb_index >= 0) + if (d->_mp_d[limb_index] > 0) + return bit ^ 1; + } + return bit; +} + +static void +mpz_abs_add_bit (mpz_t d, mp_bitcnt_t bit_index) +{ + mp_size_t dn, limb_index; + mp_limb_t bit; + mp_ptr dp; + + dn = GMP_ABS (d->_mp_size); + + limb_index = bit_index / GMP_LIMB_BITS; + bit = (mp_limb_t) 1 << (bit_index % GMP_LIMB_BITS); + + if (limb_index >= dn) + { + mp_size_t i; + /* The bit should be set outside of the end of the number. + We have to increase the size of the number. */ + dp = MPZ_REALLOC (d, limb_index + 1); + + dp[limb_index] = bit; + for (i = dn; i < limb_index; i++) + dp[i] = 0; + dn = limb_index + 1; + } + else + { + mp_limb_t cy; + + dp = d->_mp_d; + + cy = mpn_add_1 (dp + limb_index, dp + limb_index, dn - limb_index, bit); + if (cy > 0) + { + dp = MPZ_REALLOC (d, dn + 1); + dp[dn++] = cy; + } + } + + d->_mp_size = (d->_mp_size < 0) ? - dn : dn; +} + +static void +mpz_abs_sub_bit (mpz_t d, mp_bitcnt_t bit_index) +{ + mp_size_t dn, limb_index; + mp_ptr dp; + mp_limb_t bit; + + dn = GMP_ABS (d->_mp_size); + dp = d->_mp_d; + + limb_index = bit_index / GMP_LIMB_BITS; + bit = (mp_limb_t) 1 << (bit_index % GMP_LIMB_BITS); + + assert (limb_index < dn); + + gmp_assert_nocarry (mpn_sub_1 (dp + limb_index, dp + limb_index, + dn - limb_index, bit)); + dn = mpn_normalized_size (dp, dn); + d->_mp_size = (d->_mp_size < 0) ? - dn : dn; +} + +void +mpz_setbit (mpz_t d, mp_bitcnt_t bit_index) +{ + if (!mpz_tstbit (d, bit_index)) + { + if (d->_mp_size >= 0) + mpz_abs_add_bit (d, bit_index); + else + mpz_abs_sub_bit (d, bit_index); + } +} + +void +mpz_clrbit (mpz_t d, mp_bitcnt_t bit_index) +{ + if (mpz_tstbit (d, bit_index)) + { + if (d->_mp_size >= 0) + mpz_abs_sub_bit (d, bit_index); + else + mpz_abs_add_bit (d, bit_index); + } +} + +void +mpz_combit (mpz_t d, mp_bitcnt_t bit_index) +{ + if (mpz_tstbit (d, bit_index) ^ (d->_mp_size < 0)) + mpz_abs_sub_bit (d, bit_index); + else + mpz_abs_add_bit (d, bit_index); +} + +void +mpz_com (mpz_t r, const mpz_t u) +{ + mpz_add_ui (r, u, 1); + mpz_neg (r, r); +} + +void +mpz_and (mpz_t r, const mpz_t u, const mpz_t v) +{ + mp_size_t un, vn, rn, i; + mp_ptr up, vp, rp; + + mp_limb_t ux, vx, rx; + mp_limb_t uc, vc, rc; + mp_limb_t ul, vl, rl; + + un = GMP_ABS (u->_mp_size); + vn = GMP_ABS (v->_mp_size); + if (un < vn) + { + MPZ_SRCPTR_SWAP (u, v); + MP_SIZE_T_SWAP (un, vn); + } + if (vn == 0) + { + r->_mp_size = 0; + return; + } + + uc = u->_mp_size < 0; + vc = v->_mp_size < 0; + rc = uc & vc; + + ux = -uc; + vx = -vc; + rx = -rc; + + /* If the smaller input is positive, higher limbs don't matter. */ + rn = vx ? un : vn; + + rp = MPZ_REALLOC (r, rn + (mp_size_t) rc); + + up = u->_mp_d; + vp = v->_mp_d; + + i = 0; + do + { + ul = (up[i] ^ ux) + uc; + uc = ul < uc; + + vl = (vp[i] ^ vx) + vc; + vc = vl < vc; + + rl = ( (ul & vl) ^ rx) + rc; + rc = rl < rc; + rp[i] = rl; + } + while (++i < vn); + assert (vc == 0); + + for (; i < rn; i++) + { + ul = (up[i] ^ ux) + uc; + uc = ul < uc; + + rl = ( (ul & vx) ^ rx) + rc; + rc = rl < rc; + rp[i] = rl; + } + if (rc) + rp[rn++] = rc; + else + rn = mpn_normalized_size (rp, rn); + + r->_mp_size = rx ? -rn : rn; +} + +void +mpz_ior (mpz_t r, const mpz_t u, const mpz_t v) +{ + mp_size_t un, vn, rn, i; + mp_ptr up, vp, rp; + + mp_limb_t ux, vx, rx; + mp_limb_t uc, vc, rc; + mp_limb_t ul, vl, rl; + + un = GMP_ABS (u->_mp_size); + vn = GMP_ABS (v->_mp_size); + if (un < vn) + { + MPZ_SRCPTR_SWAP (u, v); + MP_SIZE_T_SWAP (un, vn); + } + if (vn == 0) + { + mpz_set (r, u); + return; + } + + uc = u->_mp_size < 0; + vc = v->_mp_size < 0; + rc = uc | vc; + + ux = -uc; + vx = -vc; + rx = -rc; + + /* If the smaller input is negative, by sign extension higher limbs + don't matter. */ + rn = vx ? vn : un; + + rp = MPZ_REALLOC (r, rn + (mp_size_t) rc); + + up = u->_mp_d; + vp = v->_mp_d; + + i = 0; + do + { + ul = (up[i] ^ ux) + uc; + uc = ul < uc; + + vl = (vp[i] ^ vx) + vc; + vc = vl < vc; + + rl = ( (ul | vl) ^ rx) + rc; + rc = rl < rc; + rp[i] = rl; + } + while (++i < vn); + assert (vc == 0); + + for (; i < rn; i++) + { + ul = (up[i] ^ ux) + uc; + uc = ul < uc; + + rl = ( (ul | vx) ^ rx) + rc; + rc = rl < rc; + rp[i] = rl; + } + if (rc) + rp[rn++] = rc; + else + rn = mpn_normalized_size (rp, rn); + + r->_mp_size = rx ? -rn : rn; +} + +void +mpz_xor (mpz_t r, const mpz_t u, const mpz_t v) +{ + mp_size_t un, vn, i; + mp_ptr up, vp, rp; + + mp_limb_t ux, vx, rx; + mp_limb_t uc, vc, rc; + mp_limb_t ul, vl, rl; + + un = GMP_ABS (u->_mp_size); + vn = GMP_ABS (v->_mp_size); + if (un < vn) + { + MPZ_SRCPTR_SWAP (u, v); + MP_SIZE_T_SWAP (un, vn); + } + if (vn == 0) + { + mpz_set (r, u); + return; + } + + uc = u->_mp_size < 0; + vc = v->_mp_size < 0; + rc = uc ^ vc; + + ux = -uc; + vx = -vc; + rx = -rc; + + rp = MPZ_REALLOC (r, un + (mp_size_t) rc); + + up = u->_mp_d; + vp = v->_mp_d; + + i = 0; + do + { + ul = (up[i] ^ ux) + uc; + uc = ul < uc; + + vl = (vp[i] ^ vx) + vc; + vc = vl < vc; + + rl = (ul ^ vl ^ rx) + rc; + rc = rl < rc; + rp[i] = rl; + } + while (++i < vn); + assert (vc == 0); + + for (; i < un; i++) + { + ul = (up[i] ^ ux) + uc; + uc = ul < uc; + + rl = (ul ^ ux) + rc; + rc = rl < rc; + rp[i] = rl; + } + if (rc) + rp[un++] = rc; + else + un = mpn_normalized_size (rp, un); + + r->_mp_size = rx ? -un : un; +} + +static unsigned +gmp_popcount_limb (mp_limb_t x) +{ + unsigned c; + + /* Do 16 bits at a time, to avoid limb-sized constants. */ + int LOCAL_SHIFT_BITS = 16; + for (c = 0; x > 0;) + { + unsigned w = x - ((x >> 1) & 0x5555); + w = ((w >> 2) & 0x3333) + (w & 0x3333); + w = (w >> 4) + w; + w = ((w >> 8) & 0x000f) + (w & 0x000f); + c += w; + if (GMP_LIMB_BITS > LOCAL_SHIFT_BITS) + x >>= LOCAL_SHIFT_BITS; + else + x = 0; + } + return c; +} + +mp_bitcnt_t +mpn_popcount (mp_srcptr p, mp_size_t n) +{ + mp_size_t i; + mp_bitcnt_t c; + + for (c = 0, i = 0; i < n; i++) + c += gmp_popcount_limb (p[i]); + + return c; +} + +mp_bitcnt_t +mpz_popcount (const mpz_t u) +{ + mp_size_t un; + + un = u->_mp_size; + + if (un < 0) + return ~(mp_bitcnt_t) 0; + + return mpn_popcount (u->_mp_d, un); +} + +mp_bitcnt_t +mpz_hamdist (const mpz_t u, const mpz_t v) +{ + mp_size_t un, vn, i; + mp_limb_t uc, vc, ul, vl, comp; + mp_srcptr up, vp; + mp_bitcnt_t c; + + un = u->_mp_size; + vn = v->_mp_size; + + if ( (un ^ vn) < 0) + return ~(mp_bitcnt_t) 0; + + comp = - (uc = vc = (un < 0)); + if (uc) + { + assert (vn < 0); + un = -un; + vn = -vn; + } + + up = u->_mp_d; + vp = v->_mp_d; + + if (un < vn) + MPN_SRCPTR_SWAP (up, un, vp, vn); + + for (i = 0, c = 0; i < vn; i++) + { + ul = (up[i] ^ comp) + uc; + uc = ul < uc; + + vl = (vp[i] ^ comp) + vc; + vc = vl < vc; + + c += gmp_popcount_limb (ul ^ vl); + } + assert (vc == 0); + + for (; i < un; i++) + { + ul = (up[i] ^ comp) + uc; + uc = ul < uc; + + c += gmp_popcount_limb (ul ^ comp); + } + + return c; +} + +mp_bitcnt_t +mpz_scan1 (const mpz_t u, mp_bitcnt_t starting_bit) +{ + mp_ptr up; + mp_size_t us, un, i; + mp_limb_t limb, ux; + + us = u->_mp_size; + un = GMP_ABS (us); + i = starting_bit / GMP_LIMB_BITS; + + /* Past the end there's no 1 bits for u>=0, or an immediate 1 bit + for u<0. Notice this test picks up any u==0 too. */ + if (i >= un) + return (us >= 0 ? ~(mp_bitcnt_t) 0 : starting_bit); + + up = u->_mp_d; + ux = 0; + limb = up[i]; + + if (starting_bit != 0) + { + if (us < 0) + { + ux = mpn_zero_p (up, i); + limb = ~ limb + ux; + ux = - (mp_limb_t) (limb >= ux); + } + + /* Mask to 0 all bits before starting_bit, thus ignoring them. */ + limb &= GMP_LIMB_MAX << (starting_bit % GMP_LIMB_BITS); + } + + return mpn_common_scan (limb, i, up, un, ux); +} + +mp_bitcnt_t +mpz_scan0 (const mpz_t u, mp_bitcnt_t starting_bit) +{ + mp_ptr up; + mp_size_t us, un, i; + mp_limb_t limb, ux; + + us = u->_mp_size; + ux = - (mp_limb_t) (us >= 0); + un = GMP_ABS (us); + i = starting_bit / GMP_LIMB_BITS; + + /* When past end, there's an immediate 0 bit for u>=0, or no 0 bits for + u<0. Notice this test picks up all cases of u==0 too. */ + if (i >= un) + return (ux ? starting_bit : ~(mp_bitcnt_t) 0); + + up = u->_mp_d; + limb = up[i] ^ ux; + + if (ux == 0) + limb -= mpn_zero_p (up, i); /* limb = ~(~limb + zero_p) */ + + /* Mask all bits before starting_bit, thus ignoring them. */ + limb &= GMP_LIMB_MAX << (starting_bit % GMP_LIMB_BITS); + + return mpn_common_scan (limb, i, up, un, ux); +} + + +/* MPZ base conversion. */ + +size_t +mpz_sizeinbase (const mpz_t u, int base) +{ + mp_size_t un; + mp_srcptr up; + mp_ptr tp; + mp_bitcnt_t bits; + struct gmp_div_inverse bi; + size_t ndigits; + + assert (base >= 2); + assert (base <= 62); + + un = GMP_ABS (u->_mp_size); + if (un == 0) + return 1; + + up = u->_mp_d; + + bits = (un - 1) * GMP_LIMB_BITS + mpn_limb_size_in_base_2 (up[un-1]); + switch (base) + { + case 2: + return bits; + case 4: + return (bits + 1) / 2; + case 8: + return (bits + 2) / 3; + case 16: + return (bits + 3) / 4; + case 32: + return (bits + 4) / 5; + /* FIXME: Do something more clever for the common case of base + 10. */ + } + + tp = gmp_xalloc_limbs (un); + mpn_copyi (tp, up, un); + mpn_div_qr_1_invert (&bi, base); + + ndigits = 0; + do + { + ndigits++; + mpn_div_qr_1_preinv (tp, tp, un, &bi); + un -= (tp[un-1] == 0); + } + while (un > 0); + + gmp_free (tp); + return ndigits; +} + +char * +mpz_get_str (char *sp, int base, const mpz_t u) +{ + unsigned bits; + const char *digits; + mp_size_t un; + size_t i, sn; + + digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + if (base > 1) + { + if (base <= 36) + digits = "0123456789abcdefghijklmnopqrstuvwxyz"; + else if (base > 62) + return NULL; + } + else if (base >= -1) + base = 10; + else + { + base = -base; + if (base > 36) + return NULL; + } + + sn = 1 + mpz_sizeinbase (u, base); + if (!sp) + sp = (char *) gmp_xalloc (1 + sn); + + un = GMP_ABS (u->_mp_size); + + if (un == 0) + { + sp[0] = '0'; + sp[1] = '\0'; + return sp; + } + + i = 0; + + if (u->_mp_size < 0) + sp[i++] = '-'; + + bits = mpn_base_power_of_two_p (base); + + if (bits) + /* Not modified in this case. */ + sn = i + mpn_get_str_bits ((unsigned char *) sp + i, bits, u->_mp_d, un); + else + { + struct mpn_base_info info; + mp_ptr tp; + + mpn_get_base_info (&info, base); + tp = gmp_xalloc_limbs (un); + mpn_copyi (tp, u->_mp_d, un); + + sn = i + mpn_get_str_other ((unsigned char *) sp + i, base, &info, tp, un); + gmp_free (tp); + } + + for (; i < sn; i++) + sp[i] = digits[(unsigned char) sp[i]]; + + sp[sn] = '\0'; + return sp; +} + +int +mpz_set_str (mpz_t r, const char *sp, int base) +{ + unsigned bits, value_of_a; + mp_size_t rn, alloc; + mp_ptr rp; + size_t dn; + int sign; + unsigned char *dp; + + assert (base == 0 || (base >= 2 && base <= 62)); + + while (isspace( (unsigned char) *sp)) + sp++; + + sign = (*sp == '-'); + sp += sign; + + if (base == 0) + { + if (sp[0] == '0') + { + if (sp[1] == 'x' || sp[1] == 'X') + { + base = 16; + sp += 2; + } + else if (sp[1] == 'b' || sp[1] == 'B') + { + base = 2; + sp += 2; + } + else + base = 8; + } + else + base = 10; + } + + if (!*sp) + { + r->_mp_size = 0; + return -1; + } + dp = (unsigned char *) gmp_xalloc (strlen (sp)); + + value_of_a = (base > 36) ? 36 : 10; + for (dn = 0; *sp; sp++) + { + unsigned digit; + + if (isspace ((unsigned char) *sp)) + continue; + else if (*sp >= '0' && *sp <= '9') + digit = *sp - '0'; + else if (*sp >= 'a' && *sp <= 'z') + digit = *sp - 'a' + value_of_a; + else if (*sp >= 'A' && *sp <= 'Z') + digit = *sp - 'A' + 10; + else + digit = base; /* fail */ + + if (digit >= (unsigned) base) + { + gmp_free (dp); + r->_mp_size = 0; + return -1; + } + + dp[dn++] = digit; + } + + if (!dn) + { + gmp_free (dp); + r->_mp_size = 0; + return -1; + } + bits = mpn_base_power_of_two_p (base); + + if (bits > 0) + { + alloc = (dn * bits + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; + rp = MPZ_REALLOC (r, alloc); + rn = mpn_set_str_bits (rp, dp, dn, bits); + } + else + { + struct mpn_base_info info; + mpn_get_base_info (&info, base); + alloc = (dn + info.exp - 1) / info.exp; + rp = MPZ_REALLOC (r, alloc); + rn = mpn_set_str_other (rp, dp, dn, base, &info); + /* Normalization, needed for all-zero input. */ + assert (rn > 0); + rn -= rp[rn-1] == 0; + } + assert (rn <= alloc); + gmp_free (dp); + + r->_mp_size = sign ? - rn : rn; + + return 0; +} + +int +mpz_init_set_str (mpz_t r, const char *sp, int base) +{ + mpz_init (r); + return mpz_set_str (r, sp, base); +} +#if 0 +size_t +mpz_out_str (FILE *stream, int base, const mpz_t x) +{ + char *str; + size_t len; + + str = mpz_get_str (NULL, base, x); + len = strlen (str); + len = fwrite (str, 1, len, stream); + gmp_free (str); + return len; +} +#endif + +static int +gmp_detect_endian (void) +{ + static const int i = 2; + const unsigned char *p = (const unsigned char *) &i; + return 1 - *p; +} + +/* Import and export. Does not support nails. */ +void +mpz_import (mpz_t r, size_t count, int order, size_t size, int endian, + size_t nails, const void *src) +{ + const unsigned char *p; + ptrdiff_t word_step; + mp_ptr rp; + mp_size_t rn; + + /* The current (partial) limb. */ + mp_limb_t limb; + /* The number of bytes already copied to this limb (starting from + the low end). */ + size_t bytes; + /* The index where the limb should be stored, when completed. */ + mp_size_t i; + + if (nails != 0) + gmp_die ("mpz_import: Nails not supported."); + + assert (order == 1 || order == -1); + assert (endian >= -1 && endian <= 1); + + if (endian == 0) + endian = gmp_detect_endian (); + + p = (unsigned char *) src; + + word_step = (order != endian) ? 2 * size : 0; + + /* Process bytes from the least significant end, so point p at the + least significant word. */ + if (order == 1) + { + p += size * (count - 1); + word_step = - word_step; + } + + /* And at least significant byte of that word. */ + if (endian == 1) + p += (size - 1); + + rn = (size * count + sizeof(mp_limb_t) - 1) / sizeof(mp_limb_t); + rp = MPZ_REALLOC (r, rn); + + for (limb = 0, bytes = 0, i = 0; count > 0; count--, p += word_step) + { + size_t j; + for (j = 0; j < size; j++, p -= (ptrdiff_t) endian) + { + limb |= (mp_limb_t) *p << (bytes++ * CHAR_BIT); + if (bytes == sizeof(mp_limb_t)) + { + rp[i++] = limb; + bytes = 0; + limb = 0; + } + } + } + assert (i + (bytes > 0) == rn); + if (limb != 0) + rp[i++] = limb; + else + i = mpn_normalized_size (rp, i); + + r->_mp_size = i; +} + +void * +mpz_export (void *r, size_t *countp, int order, size_t size, int endian, + size_t nails, const mpz_t u) +{ + size_t count; + mp_size_t un; + + if (nails != 0) + gmp_die ("mpz_import: Nails not supported."); + + assert (order == 1 || order == -1); + assert (endian >= -1 && endian <= 1); + assert (size > 0 || u->_mp_size == 0); + + un = u->_mp_size; + count = 0; + if (un != 0) + { + size_t k; + unsigned char *p; + ptrdiff_t word_step; + /* The current (partial) limb. */ + mp_limb_t limb; + /* The number of bytes left to to in this limb. */ + size_t bytes; + /* The index where the limb was read. */ + mp_size_t i; + + un = GMP_ABS (un); + + /* Count bytes in top limb. */ + limb = u->_mp_d[un-1]; + assert (limb != 0); + + k = (GMP_LIMB_BITS <= CHAR_BIT); + if (!k) + { + do { + int LOCAL_CHAR_BIT = CHAR_BIT; + k++; limb >>= LOCAL_CHAR_BIT; + } while (limb != 0); + } + /* else limb = 0; */ + + count = (k + (un-1) * sizeof (mp_limb_t) + size - 1) / size; + + if (!r) + r = gmp_xalloc (count * size); + + if (endian == 0) + endian = gmp_detect_endian (); + + p = (unsigned char *) r; + + word_step = (order != endian) ? 2 * size : 0; + + /* Process bytes from the least significant end, so point p at the + least significant word. */ + if (order == 1) + { + p += size * (count - 1); + word_step = - word_step; + } + + /* And at least significant byte of that word. */ + if (endian == 1) + p += (size - 1); + + for (bytes = 0, i = 0, k = 0; k < count; k++, p += word_step) + { + size_t j; + for (j = 0; j < size; ++j, p -= (ptrdiff_t) endian) + { + if (sizeof (mp_limb_t) == 1) + { + if (i < un) + *p = u->_mp_d[i++]; + else + *p = 0; + } + else + { + int LOCAL_CHAR_BIT = CHAR_BIT; + if (bytes == 0) + { + if (i < un) + limb = u->_mp_d[i++]; + bytes = sizeof (mp_limb_t); + } + *p = limb; + limb >>= LOCAL_CHAR_BIT; + bytes--; + } + } + } + assert (i == un); + assert (k == count); + } + + if (countp) + *countp = count; + + return r; +} diff --git a/board/broadcom/bcmbca/mini-gmp/mini-gmp.h b/board/broadcom/bcmbca/mini-gmp/mini-gmp.h new file mode 100644 index 0000000000..360d3e7d59 --- /dev/null +++ b/board/broadcom/bcmbca/mini-gmp/mini-gmp.h @@ -0,0 +1,304 @@ +/* mini-gmp, a minimalistic implementation of a GNU GMP subset. + +Copyright 2011-2015, 2017, 2019 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. */ + +/* About mini-gmp: This is a minimal implementation of a subset of the + GMP interface. It is intended for inclusion into applications which + have modest bignums needs, as a fallback when the real GMP library + is not installed. + + This file defines the public interface. */ + +#ifndef __MINI_GMP_H__ +#define __MINI_GMP_H__ + +/* For size_t */ +#include + +#if defined (__cplusplus) +extern "C" { +#endif + +void mp_set_memory_functions (void *(*) (size_t), + void *(*) (void *, size_t, size_t), + void (*) (void *, size_t)); + +void mp_get_memory_functions (void *(**) (size_t), + void *(**) (void *, size_t, size_t), + void (**) (void *, size_t)); + +#ifndef MINI_GMP_LIMB_TYPE +#define MINI_GMP_LIMB_TYPE long +#endif + +typedef unsigned MINI_GMP_LIMB_TYPE mp_limb_t; +typedef long mp_size_t; +typedef unsigned long mp_bitcnt_t; + +typedef mp_limb_t *mp_ptr; +typedef const mp_limb_t *mp_srcptr; + +typedef struct +{ + int _mp_alloc; /* Number of *limbs* allocated and pointed + to by the _mp_d field. */ + int _mp_size; /* abs(_mp_size) is the number of limbs the + last field points to. If _mp_size is + negative this is a negative number. */ + mp_limb_t *_mp_d; /* Pointer to the limbs. */ +} __mpz_struct; + +typedef __mpz_struct mpz_t[1]; + +typedef __mpz_struct *mpz_ptr; +typedef const __mpz_struct *mpz_srcptr; + +extern const int mp_bits_per_limb; + +void mpn_copyi (mp_ptr, mp_srcptr, mp_size_t); +void mpn_copyd (mp_ptr, mp_srcptr, mp_size_t); +void mpn_zero (mp_ptr, mp_size_t); + +int mpn_cmp (mp_srcptr, mp_srcptr, mp_size_t); +int mpn_zero_p (mp_srcptr, mp_size_t); + +mp_limb_t mpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); +mp_limb_t mpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +mp_limb_t mpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); + +mp_limb_t mpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); +mp_limb_t mpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +mp_limb_t mpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); + +mp_limb_t mpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); +mp_limb_t mpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); +mp_limb_t mpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); + +mp_limb_t mpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); +void mpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); +void mpn_sqr (mp_ptr, mp_srcptr, mp_size_t); +int mpn_perfect_square_p (mp_srcptr, mp_size_t); +mp_size_t mpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t); + +mp_limb_t mpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int); +mp_limb_t mpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int); + +mp_bitcnt_t mpn_scan0 (mp_srcptr, mp_bitcnt_t); +mp_bitcnt_t mpn_scan1 (mp_srcptr, mp_bitcnt_t); + +void mpn_com (mp_ptr, mp_srcptr, mp_size_t); +mp_limb_t mpn_neg (mp_ptr, mp_srcptr, mp_size_t); + +mp_bitcnt_t mpn_popcount (mp_srcptr, mp_size_t); + +mp_limb_t mpn_invert_3by2 (mp_limb_t, mp_limb_t); +#define mpn_invert_limb(x) mpn_invert_3by2 ((x), 0) + +size_t mpn_get_str (unsigned char *, int, mp_ptr, mp_size_t); +mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int); + +void mpz_init (mpz_t); +void mpz_init2 (mpz_t, mp_bitcnt_t); +void mpz_clear (mpz_t); + +#define mpz_odd_p(z) (((z)->_mp_size != 0) & (int) (z)->_mp_d[0]) +#define mpz_even_p(z) (! mpz_odd_p (z)) + +int mpz_sgn (const mpz_t); +int mpz_cmp_si (const mpz_t, long); +int mpz_cmp_ui (const mpz_t, unsigned long); +int mpz_cmp (const mpz_t, const mpz_t); +int mpz_cmpabs_ui (const mpz_t, unsigned long); +int mpz_cmpabs (const mpz_t, const mpz_t); +int mpz_cmp_d (const mpz_t, double); +int mpz_cmpabs_d (const mpz_t, double); + +void mpz_abs (mpz_t, const mpz_t); +void mpz_neg (mpz_t, const mpz_t); +void mpz_swap (mpz_t, mpz_t); + +void mpz_add_ui (mpz_t, const mpz_t, unsigned long); +void mpz_add (mpz_t, const mpz_t, const mpz_t); +void mpz_sub_ui (mpz_t, const mpz_t, unsigned long); +void mpz_ui_sub (mpz_t, unsigned long, const mpz_t); +void mpz_sub (mpz_t, const mpz_t, const mpz_t); + +void mpz_mul_si (mpz_t, const mpz_t, long int); +void mpz_mul_ui (mpz_t, const mpz_t, unsigned long int); +void mpz_mul (mpz_t, const mpz_t, const mpz_t); +void mpz_mul_2exp (mpz_t, const mpz_t, mp_bitcnt_t); +void mpz_addmul_ui (mpz_t, const mpz_t, unsigned long int); +void mpz_addmul (mpz_t, const mpz_t, const mpz_t); +void mpz_submul_ui (mpz_t, const mpz_t, unsigned long int); +void mpz_submul (mpz_t, const mpz_t, const mpz_t); + +void mpz_cdiv_qr (mpz_t, mpz_t, const mpz_t, const mpz_t); +void mpz_fdiv_qr (mpz_t, mpz_t, const mpz_t, const mpz_t); +void mpz_tdiv_qr (mpz_t, mpz_t, const mpz_t, const mpz_t); +void mpz_cdiv_q (mpz_t, const mpz_t, const mpz_t); +void mpz_fdiv_q (mpz_t, const mpz_t, const mpz_t); +void mpz_tdiv_q (mpz_t, const mpz_t, const mpz_t); +void mpz_cdiv_r (mpz_t, const mpz_t, const mpz_t); +void mpz_fdiv_r (mpz_t, const mpz_t, const mpz_t); +void mpz_tdiv_r (mpz_t, const mpz_t, const mpz_t); + +void mpz_cdiv_q_2exp (mpz_t, const mpz_t, mp_bitcnt_t); +void mpz_fdiv_q_2exp (mpz_t, const mpz_t, mp_bitcnt_t); +void mpz_tdiv_q_2exp (mpz_t, const mpz_t, mp_bitcnt_t); +void mpz_cdiv_r_2exp (mpz_t, const mpz_t, mp_bitcnt_t); +void mpz_fdiv_r_2exp (mpz_t, const mpz_t, mp_bitcnt_t); +void mpz_tdiv_r_2exp (mpz_t, const mpz_t, mp_bitcnt_t); + +void mpz_mod (mpz_t, const mpz_t, const mpz_t); + +void mpz_divexact (mpz_t, const mpz_t, const mpz_t); + +int mpz_divisible_p (const mpz_t, const mpz_t); +int mpz_congruent_p (const mpz_t, const mpz_t, const mpz_t); + +unsigned long mpz_cdiv_qr_ui (mpz_t, mpz_t, const mpz_t, unsigned long); +unsigned long mpz_fdiv_qr_ui (mpz_t, mpz_t, const mpz_t, unsigned long); +unsigned long mpz_tdiv_qr_ui (mpz_t, mpz_t, const mpz_t, unsigned long); +unsigned long mpz_cdiv_q_ui (mpz_t, const mpz_t, unsigned long); +unsigned long mpz_fdiv_q_ui (mpz_t, const mpz_t, unsigned long); +unsigned long mpz_tdiv_q_ui (mpz_t, const mpz_t, unsigned long); +unsigned long mpz_cdiv_r_ui (mpz_t, const mpz_t, unsigned long); +unsigned long mpz_fdiv_r_ui (mpz_t, const mpz_t, unsigned long); +unsigned long mpz_tdiv_r_ui (mpz_t, const mpz_t, unsigned long); +unsigned long mpz_cdiv_ui (const mpz_t, unsigned long); +unsigned long mpz_fdiv_ui (const mpz_t, unsigned long); +unsigned long mpz_tdiv_ui (const mpz_t, unsigned long); + +unsigned long mpz_mod_ui (mpz_t, const mpz_t, unsigned long); + +void mpz_divexact_ui (mpz_t, const mpz_t, unsigned long); + +int mpz_divisible_ui_p (const mpz_t, unsigned long); + +unsigned long mpz_gcd_ui (mpz_t, const mpz_t, unsigned long); +void mpz_gcd (mpz_t, const mpz_t, const mpz_t); +void mpz_gcdext (mpz_t, mpz_t, mpz_t, const mpz_t, const mpz_t); +void mpz_lcm_ui (mpz_t, const mpz_t, unsigned long); +void mpz_lcm (mpz_t, const mpz_t, const mpz_t); +int mpz_invert (mpz_t, const mpz_t, const mpz_t); + +void mpz_sqrtrem (mpz_t, mpz_t, const mpz_t); +void mpz_sqrt (mpz_t, const mpz_t); +int mpz_perfect_square_p (const mpz_t); + +void mpz_pow_ui (mpz_t, const mpz_t, unsigned long); +void mpz_ui_pow_ui (mpz_t, unsigned long, unsigned long); +void mpz_powm (mpz_t, const mpz_t, const mpz_t, const mpz_t); +void mpz_powm_ui (mpz_t, const mpz_t, unsigned long, const mpz_t); + +void mpz_rootrem (mpz_t, mpz_t, const mpz_t, unsigned long); +int mpz_root (mpz_t, const mpz_t, unsigned long); + +void mpz_fac_ui (mpz_t, unsigned long); +void mpz_2fac_ui (mpz_t, unsigned long); +void mpz_mfac_uiui (mpz_t, unsigned long, unsigned long); +void mpz_bin_uiui (mpz_t, unsigned long, unsigned long); + +int mpz_probab_prime_p (const mpz_t, int); + +int mpz_tstbit (const mpz_t, mp_bitcnt_t); +void mpz_setbit (mpz_t, mp_bitcnt_t); +void mpz_clrbit (mpz_t, mp_bitcnt_t); +void mpz_combit (mpz_t, mp_bitcnt_t); + +void mpz_com (mpz_t, const mpz_t); +void mpz_and (mpz_t, const mpz_t, const mpz_t); +void mpz_ior (mpz_t, const mpz_t, const mpz_t); +void mpz_xor (mpz_t, const mpz_t, const mpz_t); + +mp_bitcnt_t mpz_popcount (const mpz_t); +mp_bitcnt_t mpz_hamdist (const mpz_t, const mpz_t); +mp_bitcnt_t mpz_scan0 (const mpz_t, mp_bitcnt_t); +mp_bitcnt_t mpz_scan1 (const mpz_t, mp_bitcnt_t); + +int mpz_fits_slong_p (const mpz_t); +int mpz_fits_ulong_p (const mpz_t); +long int mpz_get_si (const mpz_t); +unsigned long int mpz_get_ui (const mpz_t); +double mpz_get_d (const mpz_t); +size_t mpz_size (const mpz_t); +mp_limb_t mpz_getlimbn (const mpz_t, mp_size_t); + +void mpz_realloc2 (mpz_t, mp_bitcnt_t); +mp_srcptr mpz_limbs_read (mpz_srcptr); +mp_ptr mpz_limbs_modify (mpz_t, mp_size_t); +mp_ptr mpz_limbs_write (mpz_t, mp_size_t); +void mpz_limbs_finish (mpz_t, mp_size_t); +mpz_srcptr mpz_roinit_n (mpz_t, mp_srcptr, mp_size_t); + +#define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }} + +void mpz_set_si (mpz_t, signed long int); +void mpz_set_ui (mpz_t, unsigned long int); +void mpz_set (mpz_t, const mpz_t); +void mpz_set_d (mpz_t, double); + +void mpz_init_set_si (mpz_t, signed long int); +void mpz_init_set_ui (mpz_t, unsigned long int); +void mpz_init_set (mpz_t, const mpz_t); +void mpz_init_set_d (mpz_t, double); + +size_t mpz_sizeinbase (const mpz_t, int); +char *mpz_get_str (char *, int, const mpz_t); +int mpz_set_str (mpz_t, const char *, int); +int mpz_init_set_str (mpz_t, const char *, int); +#if 0 +/* This long list taken from gmp.h. */ +/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4, + defines EOF but not FILE. */ +#if defined (FILE) \ + || defined (H_STDIO) \ + || defined (_H_STDIO) /* AIX */ \ + || defined (_STDIO_H) /* glibc, Sun, SCO */ \ + || defined (_STDIO_H_) /* BSD, OSF */ \ + || defined (__STDIO_H) /* Borland */ \ + || defined (__STDIO_H__) /* IRIX */ \ + || defined (_STDIO_INCLUDED) /* HPUX */ \ + || defined (__dj_include_stdio_h_) /* DJGPP */ \ + || defined (_FILE_DEFINED) /* Microsoft */ \ + || defined (__STDIO__) /* Apple MPW MrC */ \ + || defined (_MSL_STDIO_H) /* Metrowerks */ \ + || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ + || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \ + || defined (__STDIO_LOADED) /* VMS */ +size_t mpz_out_str (FILE *, int, const mpz_t); +#endif +#endif +void mpz_import (mpz_t, size_t, int, size_t, int, size_t, const void *); +void *mpz_export (void *, size_t *, int, size_t, int, size_t, const mpz_t); + +#if defined (__cplusplus) +} +#endif +#endif /* __MINI_GMP_H__ */ diff --git a/board/broadcom/bcmbca/mini-gmp/mini-mpq.c b/board/broadcom/bcmbca/mini-gmp/mini-mpq.c new file mode 100644 index 0000000000..c303c20111 --- /dev/null +++ b/board/broadcom/bcmbca/mini-gmp/mini-mpq.c @@ -0,0 +1,568 @@ +/* mini-mpq, a minimalistic implementation of a GNU GMP subset. + + Contributed to the GNU project by Marco Bodrato + + Acknowledgment: special thanks to Bradley Lucier for his comments + to the preliminary version of this code. + +Copyright 2018, 2019 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. */ +#if defined (CONFIG_ARM64) || defined (CONFIG_ARM) +#include +#include +#include +#include +#include +#include +#include +#define CHAR_BIT 8 +extern void bcm_sec_abort(void); +#define abort bcm_sec_abort +#else +#include +#include +#include +#include +#include +#endif + +#include "mini-mpq.h" +#ifndef GMP_LIMB_HIGHBIT +#define GMP_LIMB_MAX ((mp_limb_t) ~ (mp_limb_t) 0) +/* Define macros and static functions already defined by mini-gmp.c */ +#define GMP_LIMB_BITS (sizeof(mp_limb_t) * CHAR_BIT) +#define GMP_LIMB_HIGHBIT ((mp_limb_t) 1 << (GMP_LIMB_BITS - 1)) +#define GMP_NEG_CAST(T,x) (-((T)((x) + 1) - 1)) +#define GMP_MIN(a, b) ((a) < (b) ? (a) : (b)) + +extern void sec_abort(void); + +static mpz_srcptr +mpz_roinit_normal_n (mpz_t x, mp_srcptr xp, mp_size_t xs) +{ + x->_mp_alloc = 0; + x->_mp_d = (mp_ptr) xp; + x->_mp_size = xs; + return x; +} + +static void +gmp_die (const char *msg) +{ + printf ( "%s\n", msg); + abort(); +} +#endif + + +/* MPQ helper functions */ +static mpq_srcptr +mpq_roinit_normal_nn (mpq_t x, mp_srcptr np, mp_size_t ns, + mp_srcptr dp, mp_size_t ds) +{ + mpz_roinit_normal_n (mpq_numref(x), np, ns); + mpz_roinit_normal_n (mpq_denref(x), dp, ds); + return x; +} + +static mpq_srcptr +mpq_roinit_zz (mpq_t x, mpz_srcptr n, mpz_srcptr d) +{ + return mpq_roinit_normal_nn (x, n->_mp_d, n->_mp_size, + d->_mp_d, d->_mp_size); +} + +static void +mpq_nan_init (mpq_t x) +{ + mpz_init (mpq_numref (x)); + mpz_init (mpq_denref (x)); +} + +void +mpq_init (mpq_t x) +{ + mpz_init (mpq_numref (x)); + mpz_init_set_ui (mpq_denref (x), 1); +} + +void +mpq_clear (mpq_t x) +{ + mpz_clear (mpq_numref (x)); + mpz_clear (mpq_denref (x)); +} + +static void +mpq_canonical_sign (mpq_t r) +{ + int cmp = mpq_denref (r)->_mp_size; + if (cmp <= 0) + { + if (cmp == 0) + gmp_die("mpq: Fraction with zero denominator."); + mpz_neg (mpq_denref (r), mpq_denref (r)); + mpz_neg (mpq_numref (r), mpq_numref (r)); + } +} + +static void +mpq_helper_canonicalize (mpq_t r, const mpz_t num, const mpz_t den, mpz_t g) +{ + if (num->_mp_size == 0) + mpq_set_ui (r, 0, 1); + else + { + mpz_gcd (g, num, den); + mpz_tdiv_q (mpq_numref (r), num, g); + mpz_tdiv_q (mpq_denref (r), den, g); + mpq_canonical_sign (r); + } +} + +void +mpq_canonicalize (mpq_t r) +{ + mpz_t t; + + mpz_init (t); + mpq_helper_canonicalize (r, mpq_numref (r), mpq_denref (r), t); + mpz_clear (t); +} + +void +mpq_swap (mpq_t a, mpq_t b) +{ + mpz_swap (mpq_numref (a), mpq_numref (b)); + mpz_swap (mpq_denref (a), mpq_denref (b)); +} + + +/* MPQ assignment and conversions. */ +void +mpz_set_q (mpz_t r, const mpq_t q) +{ + mpz_tdiv_q (r, mpq_numref (q), mpq_denref (q)); +} + +void +mpq_set (mpq_t r, const mpq_t q) +{ + mpz_set (mpq_numref (r), mpq_numref (q)); + mpz_set (mpq_denref (r), mpq_denref (q)); +} + +void +mpq_set_ui (mpq_t r, unsigned long n, unsigned long d) +{ + mpz_set_ui (mpq_numref (r), n); + mpz_set_ui (mpq_denref (r), d); +} + +void +mpq_set_si (mpq_t r, signed long n, unsigned long d) +{ + mpz_set_si (mpq_numref (r), n); + mpz_set_ui (mpq_denref (r), d); +} + +void +mpq_set_z (mpq_t r, const mpz_t n) +{ + mpz_set_ui (mpq_denref (r), 1); + mpz_set (mpq_numref (r), n); +} + +void +mpq_set_num (mpq_t r, const mpz_t z) +{ + mpz_set (mpq_numref (r), z); +} + +void +mpq_set_den (mpq_t r, const mpz_t z) +{ + mpz_set (mpq_denref (r), z); +} + +void +mpq_get_num (mpz_t r, const mpq_t q) +{ + mpz_set (r, mpq_numref (q)); +} + +void +mpq_get_den (mpz_t r, const mpq_t q) +{ + mpz_set (r, mpq_denref (q)); +} + + +/* MPQ comparisons and the like. */ +int +mpq_cmp (const mpq_t a, const mpq_t b) +{ + mpz_t t1, t2; + int res; + + mpz_init (t1); + mpz_init (t2); + mpz_mul (t1, mpq_numref (a), mpq_denref (b)); + mpz_mul (t2, mpq_numref (b), mpq_denref (a)); + res = mpz_cmp (t1, t2); + mpz_clear (t1); + mpz_clear (t2); + + return res; +} + +int +mpq_cmp_z (const mpq_t a, const mpz_t b) +{ + mpz_t t; + int res; + + mpz_init (t); + mpz_mul (t, b, mpq_denref (a)); + res = mpz_cmp (mpq_numref (a), t); + mpz_clear (t); + + return res; +} + +int +mpq_equal (const mpq_t a, const mpq_t b) +{ + return (mpz_cmp (mpq_numref (a), mpq_numref (b)) == 0) && + (mpz_cmp (mpq_denref (a), mpq_denref (b)) == 0); +} + +int +mpq_cmp_ui (const mpq_t q, unsigned long n, unsigned long d) +{ + mpq_t t; + assert (d != 0); + if (ULONG_MAX <= GMP_LIMB_MAX) { + mp_limb_t nl = n, dl = d; + return mpq_cmp (q, mpq_roinit_normal_nn (t, &nl, n != 0, &dl, 1)); + } else { + int ret; + + mpq_init (t); + mpq_set_ui (t, n, d); + ret = mpq_cmp (q, t); + mpq_clear (t); + + return ret; + } +} + +int +mpq_cmp_si (const mpq_t q, signed long n, unsigned long d) +{ + assert (d != 0); + + if (n >= 0) + return mpq_cmp_ui (q, n, d); + else + { + mpq_t t; + + if (ULONG_MAX <= GMP_LIMB_MAX) + { + mp_limb_t nl = GMP_NEG_CAST (unsigned long, n), dl = d; + return mpq_cmp (q, mpq_roinit_normal_nn (t, &nl, -1, &dl, 1)); + } + else + { + unsigned long l_n = GMP_NEG_CAST (unsigned long, n); + + mpq_roinit_normal_nn (t, mpq_numref (q)->_mp_d, - mpq_numref (q)->_mp_size, + mpq_denref (q)->_mp_d, mpq_denref (q)->_mp_size); + return - mpq_cmp_ui (t, l_n, d); + } + } +} + +int +mpq_sgn (const mpq_t a) +{ + return mpz_sgn (mpq_numref (a)); +} + + +/* MPQ arithmetic. */ +void +mpq_abs (mpq_t r, const mpq_t q) +{ + mpz_abs (mpq_numref (r), mpq_numref (q)); + mpz_set (mpq_denref (r), mpq_denref (q)); +} + +void +mpq_neg (mpq_t r, const mpq_t q) +{ + mpz_neg (mpq_numref (r), mpq_numref (q)); + mpz_set (mpq_denref (r), mpq_denref (q)); +} + +void +mpq_add (mpq_t r, const mpq_t a, const mpq_t b) +{ + mpz_t t; + + mpz_init (t); + mpz_gcd (t, mpq_denref (a), mpq_denref (b)); + if (mpz_cmp_ui (t, 1) == 0) + { + mpz_mul (t, mpq_numref (a), mpq_denref (b)); + mpz_addmul (t, mpq_numref (b), mpq_denref (a)); + mpz_mul (mpq_denref (r), mpq_denref (a), mpq_denref (b)); + mpz_swap (mpq_numref (r), t); + } + else + { + mpz_t x, y; + mpz_init (x); + mpz_init (y); + + mpz_tdiv_q (x, mpq_denref (b), t); + mpz_tdiv_q (y, mpq_denref (a), t); + mpz_mul (x, mpq_numref (a), x); + mpz_addmul (x, mpq_numref (b), y); + + mpz_gcd (t, x, t); + mpz_tdiv_q (mpq_numref (r), x, t); + mpz_tdiv_q (x, mpq_denref (b), t); + mpz_mul (mpq_denref (r), x, y); + + mpz_clear (x); + mpz_clear (y); + } + mpz_clear (t); +} + +void +mpq_sub (mpq_t r, const mpq_t a, const mpq_t b) +{ + mpq_t t; + + mpq_roinit_normal_nn (t, mpq_numref (b)->_mp_d, - mpq_numref (b)->_mp_size, + mpq_denref (b)->_mp_d, mpq_denref (b)->_mp_size); + mpq_add (r, a, t); +} + +void +mpq_div (mpq_t r, const mpq_t a, const mpq_t b) +{ + mpq_t t; + mpq_mul (r, a, mpq_roinit_zz (t, mpq_denref (b), mpq_numref (b))); +} + +void +mpq_mul (mpq_t r, const mpq_t a, const mpq_t b) +{ + mpq_t t; + mpq_nan_init (t); + + if (a != b) { + mpz_t g; + + mpz_init (g); + mpq_helper_canonicalize (t, mpq_numref (a), mpq_denref (b), g); + mpq_helper_canonicalize (r, mpq_numref (b), mpq_denref (a), g); + mpz_clear (g); + + a = r; + b = t; + } + + mpz_mul (mpq_numref (r), mpq_numref (a), mpq_numref (b)); + mpz_mul (mpq_denref (r), mpq_denref (a), mpq_denref (b)); + mpq_clear (t); +} + +void +mpq_div_2exp (mpq_t r, const mpq_t q, mp_bitcnt_t e) +{ + mp_bitcnt_t z = mpz_scan1 (mpq_numref (q), 0); + z = GMP_MIN (z, e); + mpz_mul_2exp (mpq_denref (r), mpq_denref (q), e - z); + mpz_tdiv_q_2exp (mpq_numref (r), mpq_numref (q), z); +} + +void +mpq_mul_2exp (mpq_t r, const mpq_t q, mp_bitcnt_t e) +{ + mp_bitcnt_t z = mpz_scan1 (mpq_denref (q), 0); + z = GMP_MIN (z, e); + mpz_mul_2exp (mpq_numref (r), mpq_numref (q), e - z); + mpz_tdiv_q_2exp (mpq_denref (r), mpq_denref (q), z); +} + +void +mpq_inv (mpq_t r, const mpq_t q) +{ + mpq_set (r, q); + mpz_swap (mpq_denref (r), mpq_numref (r)); + mpq_canonical_sign (r); +} + + +/* MPQ to/from double. */ +void +mpq_set_d (mpq_t r, double x) +{ + mpz_set_ui (mpq_denref (r), 1); + + /* x != x is true when x is a NaN, and x == x * 0.5 is true when x is + zero or infinity. */ + if (x == x * 0.5 || x != x) + mpq_numref (r)->_mp_size = 0; + else + { + double B; + mp_bitcnt_t e; + + B = 4.0 * (double) (GMP_LIMB_HIGHBIT >> 1); + for (e = 0; x != x + 0.5; e += GMP_LIMB_BITS) + x *= B; + + mpz_set_d (mpq_numref (r), x); + mpq_div_2exp (r, r, e); + } +} + +double +mpq_get_d (const mpq_t u) +{ + mp_bitcnt_t ne, de, ee; + mpz_t z; + double B, ret; + + ne = mpz_sizeinbase (mpq_numref (u), 2); + de = mpz_sizeinbase (mpq_denref (u), 2); + + ee = CHAR_BIT * sizeof (double); + if (de == 1 || ne > de + ee) + ee = 0; + else + ee = (ee + de - ne) / GMP_LIMB_BITS + 1; + + mpz_init (z); + mpz_mul_2exp (z, mpq_numref (u), ee * GMP_LIMB_BITS); + mpz_tdiv_q (z, z, mpq_denref (u)); + ret = mpz_get_d (z); + mpz_clear (z); + + B = 4.0 * (double) (GMP_LIMB_HIGHBIT >> 1); + for (B = 1 / B; ee != 0; --ee) + ret *= B; + + return ret; +} + + +/* MPQ and strings/streams. */ +char * +mpq_get_str (char *sp, int base, const mpq_t q) +{ + char *res; + char *rden; + size_t len; + + res = mpz_get_str (sp, base, mpq_numref (q)); + if (res == NULL || mpz_cmp_ui (mpq_denref (q), 1) == 0) + return res; + + len = strlen (res) + 1; + rden = sp ? sp + len : NULL; + rden = mpz_get_str (rden, base, mpq_denref (q)); + assert (rden != NULL); + + if (sp == NULL) { + void * (*gmp_reallocate_func) (void *, size_t, size_t); + void (*gmp_free_func) (void *, size_t); + size_t lden; + + mp_get_memory_functions (NULL, &gmp_reallocate_func, &gmp_free_func); + lden = strlen (rden) + 1; + res = (char *) gmp_reallocate_func (res, 0, (lden + len) * sizeof (char)); + memcpy (res + len, rden, lden); + gmp_free_func (rden, 0); + } + + res [len - 1] = '/'; + return res; +} +#if 0 +size_t +mpq_out_str (FILE *stream, int base, const mpq_t x) +{ + char * str; + size_t len; + void (*gmp_free_func) (void *, size_t); + + str = mpq_get_str (NULL, base, x); + len = strlen (str); + len = fwrite (str, 1, len, stream); + mp_get_memory_functions (NULL, NULL, &gmp_free_func); + gmp_free_func (str, 0); + return len; +} +#endif +int +mpq_set_str (mpq_t r, const char *sp, int base) +{ + const char *slash; + + slash = strchr (sp, '/'); + if (slash == NULL) { + mpz_set_ui (mpq_denref(r), 1); + return mpz_set_str (mpq_numref(r), sp, base); + } else { + char *num; + size_t numlen; + int ret; + void * (*gmp_allocate_func) (size_t); + void (*gmp_free_func) (void *, size_t); + + mp_get_memory_functions (&gmp_allocate_func, NULL, &gmp_free_func); + numlen = slash - sp; + num = (char *) gmp_allocate_func ((numlen + 1) * sizeof (char)); + memcpy (num, sp, numlen); + num[numlen] = '\0'; + ret = mpz_set_str (mpq_numref(r), num, base); + gmp_free_func (num, 0); + + if (ret != 0) + return ret; + + return mpz_set_str (mpq_denref(r), slash + 1, base); + } +} diff --git a/board/broadcom/bcmbca/mini-gmp/mini-mpq.h b/board/broadcom/bcmbca/mini-gmp/mini-mpq.h new file mode 100644 index 0000000000..2a7a2c6122 --- /dev/null +++ b/board/broadcom/bcmbca/mini-gmp/mini-mpq.h @@ -0,0 +1,114 @@ +/* mini-mpq, a minimalistic implementation of a GNU GMP subset. + +Copyright 2018, 2019 Free Software Foundation, Inc. + +This file is part of the GNU MP Library. + +The GNU MP Library is free software; you can redistribute it and/or modify +it under the terms of either: + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at your + option) any later version. + +or + + * the GNU General Public License as published by the Free Software + Foundation; either version 2 of the License, or (at your option) any + later version. + +or both in parallel, as here. + +The GNU MP Library is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library. If not, +see https://www.gnu.org/licenses/. */ + +/* Header */ + +#ifndef __MINI_MPQ_H__ +#define __MINI_MPQ_H__ + +#include "mini-gmp.h" + +#if defined (__cplusplus) +extern "C" { +#endif + +typedef struct +{ + __mpz_struct _mp_num; + __mpz_struct _mp_den; +} __mpq_struct; + +typedef __mpq_struct mpq_t[1]; + +typedef const __mpq_struct *mpq_srcptr; +typedef __mpq_struct *mpq_ptr; + +#define mpq_numref(Q) (&((Q)->_mp_num)) +#define mpq_denref(Q) (&((Q)->_mp_den)) + +void mpq_abs (mpq_t, const mpq_t); +void mpq_add (mpq_t, const mpq_t, const mpq_t); +void mpq_canonicalize (mpq_t); +void mpq_clear (mpq_t); +int mpq_cmp (const mpq_t, const mpq_t); +int mpq_cmp_si (const mpq_t, signed long, unsigned long); +int mpq_cmp_ui (const mpq_t, unsigned long, unsigned long); +int mpq_cmp_z (const mpq_t, const mpz_t); +void mpq_div (mpq_t, const mpq_t, const mpq_t); +void mpq_div_2exp (mpq_t, const mpq_t, mp_bitcnt_t); +int mpq_equal (const mpq_t, const mpq_t); +double mpq_get_d (const mpq_t); +void mpq_get_den (mpz_t, const mpq_t); +void mpq_get_num (mpz_t, const mpq_t); +char * mpq_get_str (char *, int, const mpq_t q); +void mpq_init (mpq_t); +void mpq_inv (mpq_t, const mpq_t); +void mpq_mul (mpq_t, const mpq_t, const mpq_t); +void mpq_mul_2exp (mpq_t, const mpq_t, mp_bitcnt_t); +void mpq_neg (mpq_t, const mpq_t); +void mpq_set (mpq_t, const mpq_t); +void mpq_set_d (mpq_t, double); +void mpq_set_den (mpq_t, const mpz_t); +void mpq_set_num (mpq_t, const mpz_t); +void mpq_set_si (mpq_t, signed long, unsigned long); +int mpq_set_str (mpq_t, const char *, int); +void mpq_set_ui (mpq_t, unsigned long, unsigned long); +void mpq_set_z (mpq_t, const mpz_t); +int mpq_sgn (const mpq_t); +void mpq_sub (mpq_t, const mpq_t, const mpq_t); +void mpq_swap (mpq_t, mpq_t); +#if 0 +/* This long list taken from gmp.h. */ +/* For reference, "defined(EOF)" cannot be used here. In g++ 2.95.4, + defines EOF but not FILE. */ +#if defined (FILE) \ + || defined (H_STDIO) \ + || defined (_H_STDIO) /* AIX */ \ + || defined (_STDIO_H) /* glibc, Sun, SCO */ \ + || defined (_STDIO_H_) /* BSD, OSF */ \ + || defined (__STDIO_H) /* Borland */ \ + || defined (__STDIO_H__) /* IRIX */ \ + || defined (_STDIO_INCLUDED) /* HPUX */ \ + || defined (__dj_include_stdio_h_) /* DJGPP */ \ + || defined (_FILE_DEFINED) /* Microsoft */ \ + || defined (__STDIO__) /* Apple MPW MrC */ \ + || defined (_MSL_STDIO_H) /* Metrowerks */ \ + || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ + || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \ + || defined (__STDIO_LOADED) /* VMS */ +size_t mpq_out_str (FILE *, int, const mpq_t); +#endif +#endif +void mpz_set_q (mpz_t, const mpq_t); + +#if defined (__cplusplus) +} +#endif +#endif /* __MINI_MPQ_H__ */ diff --git a/board/broadcom/bcmbca/pmc_commands.c b/board/broadcom/bcmbca/pmc_commands.c new file mode 100644 index 0000000000..dd7f3fad91 --- /dev/null +++ b/board/broadcom/bcmbca/pmc_commands.c @@ -0,0 +1,304 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2019 + * Broadcom Corp + */ + +#include +#include +#include +#include "spl_env.h" +#include "pmc_drv.h" + +#ifdef PMC_ON_HOSTCPU +#define PMCcmd(...) -1 +#else +extern int PMCcmd(int arg[4]); +#endif + +DECLARE_GLOBAL_DATA_PTR; + +enum { + PMCFW_CODE, + PMCFW_DATA, + PMCFW_TYPES +}; + +static int is_pmcfw_loaded(int type) +{ + const char *path[PMCFW_TYPES] = { + "/fit-images/pmcfw_code", + "/fit-images/pmcfw_data" + }; + int offset = fdt_path_offset(gd->fdt_blob, path[type]); + const uint32_t *load_addr, *size; + + if (offset < 0) return 0; + load_addr = fdt_getprop(gd->fdt_blob, offset, "load-addr", NULL); + if (!load_addr) return 0; + size = fdt_getprop(gd->fdt_blob, offset, "size", NULL); + if (!size) return 0; + printf("pmc firmware %s has been loaded to 0x%x, size=%uB\n", + (type ? "data" : "code"), + be32_to_cpu(*load_addr), be32_to_cpu(*size)); + + return 1; +} + +int is_pmcfw_code_loaded(void) +{ + return is_pmcfw_loaded(PMCFW_CODE); +} + +int is_pmcfw_data_loaded(void) +{ + return is_pmcfw_loaded(PMCFW_DATA); +} + +// return 1 if the environment variable avs_disable=1 +int getAVSConfig(void) +{ + char *disable = NULL; + int offset = fdt_path_offset(gd->fdt_blob, "/chosen"); + + if (offset < 0) return 0; + disable = fdt_getprop(gd->fdt_blob, offset, ENV_AVS_DISABLE, NULL); + if (!disable) return 0; + + return *disable == '1'; +} + +static void setAVSConfig(int new) +{ + int old = getAVSConfig(); + + if (old == new) return; + + if (!env_set(ENV_AVS_DISABLE, new ? "1" : NULL) && !env_save()) + printf("Reboot to use new " ENV_AVS_DISABLE "=%d\n", new); +} + +static int +do_pmc_sc_avs(cmd_tbl_t * cmdtp, int flag, int argc, char *const argv[]) +{ +#if IS_BCMCHIP(4908) || IS_BCMCHIP(63158) || IS_BCMCHIP(63178) || \ + IS_BCMCHIP(47622) || IS_BCMCHIP(63146) || IS_BCMCHIP(4912) || \ + IS_BCMCHIP(6756) + int pmc[4]; + static const char *disables[] = {"0", "disable", "false", "off"}; + int res, i; + + if (argc < 2) { + res = getAVSConfig(); + printf("AVS %sdisabled by environment\n", res ? "" : "not "); + return CMD_RET_SUCCESS; + } + + if (!strcmp(argv[1], "show")) { + memset((void*)pmc, 0, sizeof(pmc)); + /* Try to know the AVS disable state */ + pmc[0] = 20; // cmdGetAvsDisableState defined in pmc/command.h + res = PMCcmd(pmc); + if (!res) + printf("AVS %s\n", pmc[2] ? "Disabled" : "Enabled"); + else + printf("failed to get AVS state, res=%d\n", res); + return CMD_RET_SUCCESS; + } + + res = 0; + for (i = 0; i < sizeof disables / sizeof disables[0]; i++) + if (!strcmp(argv[1], disables[i])) { + res = 1; + break; + } + + setAVSConfig(res); +#else + printf("not supported\n"); +#endif + return CMD_RET_SUCCESS; +} + +static int +do_pmc_sc_closeavs(cmd_tbl_t * cmdtp, int flag, int argc, char *const argv[]) +{ +#if IS_BCMCHIP(63138) || IS_BCMCHIP(63148) || IS_BCMCHIP(4908) || \ + IS_BCMCHIP(63158) || defined(PMC_IMPL_3_X) + int res; + uint32_t island = 0; + uint16_t margin_mv_slow; + uint16_t margin_mv_fast; + uint16_t maximum_mv = 0; + uint16_t minimum_mv = 0; + + if (!(argc == 4 || argc == 3 +#if IS_BCMCHIP(63158) || defined(PMC_IMPL_3_X) + || argc == 6 || argc == 5 +#endif + )) { + printf("invalid number of parameters\n"); + return CMD_RET_SUCCESS; + } + + switch (argc) { + case 3: + case 5: + margin_mv_slow = (uint16_t)simple_strtol(argv[1], NULL, 0); + margin_mv_fast = (uint16_t)simple_strtol(argv[2], NULL, 0); + if (argc == 3) + break; + maximum_mv = (uint16_t)simple_strtol(argv[3], NULL, 0); + minimum_mv = (uint16_t)simple_strtol(argv[4], NULL, 0); + break; + case 4: + case 6: + island = (uint32_t)simple_strtol(argv[1], NULL, 0); + margin_mv_slow = (uint16_t)simple_strtol(argv[2], NULL, 0); + margin_mv_fast = (uint16_t)simple_strtol(argv[3], NULL, 0); + if (argc == 4) + break; + maximum_mv = (uint16_t)simple_strtol(argv[4], NULL, 0); + minimum_mv = (uint16_t)simple_strtol(argv[5], NULL, 0); + break; + } + + if (minimum_mv && maximum_mv && (minimum_mv > maximum_mv)) { + printf("invalid parameters: min %d > max %d " + "and not firmware default\n", + minimum_mv, maximum_mv); + return CMD_RET_SUCCESS; + } + + printf("closeavs with [island %d] margin_mv slow %d fast %d" +#if IS_BCMCHIP(63158) || defined(PMC_IMPL_3_X) + "\n [max_mv %d min_mv %d (0 means using firmware default)]" +#endif + " ...\n", island, (short) margin_mv_slow, (short) margin_mv_fast +#if IS_BCMCHIP(63158) || defined(PMC_IMPL_3_X) + , maximum_mv, minimum_mv +#endif + ); + + res = CloseAVS(island, margin_mv_slow, margin_mv_fast, maximum_mv, minimum_mv); + printf("%sed, res=%d\n", res ? "fail" : "succeed", res); +#else + printf("not supported\n"); +#endif + return CMD_RET_SUCCESS; +} + +static int +do_pmc_sc_cmd(cmd_tbl_t * cmdtp, int flag, int argc, char *const argv[]) +{ + int i, res, cmd[4] = { 0 }; + + for (i = 0; (i < sizeof(cmd)/sizeof(cmd[0])) && (i+1 < argc); i++) + cmd[i] = simple_strtol(argv[i+1], NULL, 0); + + res = PMCcmd(cmd); + printf("res=%d rsp=[%08x %08x %08x %08x]\n", + res, cmd[0], cmd[1], cmd[2], cmd[3]); + + return CMD_RET_SUCCESS; +} + +static int +do_pmc_sc_log(cmd_tbl_t * cmdtp, int flag, int argc, char *const argv[]) +{ +#if defined(PMC_RAM_BOOT) && (defined(PMC_SHARED_MEMORY) || defined(PMC_IMPL_3_X)) + int log_type = 0; + + if (argc > 1) + log_type = simple_strtol(argv[1], NULL, 0); + pmc_log(log_type); +#endif + return CMD_RET_SUCCESS; +} + +static int get_pvtmon_result(int select, int island, int * val) +{ + int res, adc = -1; + + res = GetPVT(select, island, &adc); + if (!res) + *val = pmc_convert_pvtmon(select, adc); + return res; +} + +static int +do_pmc_sc_pvtmon(cmd_tbl_t * cmdtp, int flag, int argc, char *const argv[]) +{ + int select = 0; + int island = 0; + int res, val; + + if (argc > 1) + select = simple_strtol(argv[1], NULL, 0); + + if (select < 0 || select > 7) { + printf("invalid value for select, must be in 0 ~ 7\n"); + return CMD_RET_SUCCESS; + } + + if (argc > 2) + island = simple_strtol(argv[2], NULL, 0); + + printf("get pvtmon select %d island %d ... ", select, island); + res = get_pvtmon_result(select, island, &val); + if (res) + printf("failed, res=%d\n", res); + else + printf("value %d.%03d %c\n", + val/1000, (val > 0 ? val : -val)%1000, + select ? 'V' : 'C'); + return CMD_RET_SUCCESS; +} + +static int +do_pmc_sc_tracktemp(cmd_tbl_t * cmdtp, int flag, int argc, char *const argv[]) +{ + char *p = argc > 1 ? argv[1] : NULL; + int res, status = 1; + + if (!p || !strcmp(p, "status")) { + res = pmc_get_tracktemp(&status); + + if (res) + printf("failed to get tracktemp status, res=%d\n", res); + else + printf("tracktemp is %s\n", status ? "on" : "off"); + + return CMD_RET_SUCCESS; + } + + if (!strcmp(p, "off")) status = 0; + + res = pmc_set_tracktemp(status); + if (res) + printf("failed to set tracktemp %s, res=%d\n", + status ? "on" : "off", res); + return CMD_RET_SUCCESS; +} + +static char pmc_usage[] = +"{avs | closeavs | cmd | log | pvtmon | tracktemp}\n" +" - avs [enable | disable | show]\n" +" - closeavs [] " +#if IS_BCMCHIP(63158) || defined(PMC_IMPL_3_X) + " [ ]" +#endif + "\n" +" - cmd [ [ []]]\n" +" - log []\n" +" - pvtmon [ \n" + "\n" + "This tool takes a key=value input file (same as would a `printenv' show) and replaces the environment boot_magic_env in an existing image with the new environment.\n" + "\n" + "\tThe input file is in format:\n" + "\t\tkey1=value1\n" + "\t\tkey2=value2\n" + "\t\t...\n" + "\tEmpty lines are skipped, and lines with a # in the first\n" + "\tcolumn are treated as comments (also skipped).\n" + "\t-V : print version information and exit\n" + "\n" + "If the input file is \"-\", data is read from standard input\n", + exec_name); +} + + +static struct option long_opts[] = { + {0,0,0,0}, +}; + +long int xstrtol(const char *s) +{ + long int tmp; + + errno = 0; + tmp = strtol(s, NULL, 0); + if (!errno) + return tmp; + + if (errno == ERANGE) + fprintf(stderr, "Bad integer format: %s\n", s); + else + fprintf(stderr, "Error while parsing %s: %s\n", s, + strerror(errno)); + + exit(EXIT_FAILURE); +} + +static int check_excluded(char *evar, int max) +{ + int i = 0; + int n; + while (NULL != exclude[i]) { + n = strlen(exclude[i]); + if (0 == strncmp(evar, exclude[i], n < max ? n : max)) + { + return(1); + } + i++; + } + return(0); +} + +int main(int argc, char **argv) +{ + uint32_t crc, havecrc, targetendian_crc; + const char *input_img_filename = NULL,*txt_filename = NULL; + int input_img_fd, txt_fd; + char *dataptr = NULL, *envptr; + char *filebuf = NULL; + unsigned int filesize = 0, envsize = 0, datasize = 0, tmpdatasize = 0; + int bigendian = 0; + unsigned char padbyte = 0xff; + uint32_t header[3]; + int offsets[16]; + int found = 0; + int i; + + int option; + int ret = EXIT_SUCCESS; + + struct stat txt_file_stat; + struct stat input_img_file_stat; + unsigned img_filesize = 0; + + int fp, ep; + const char *prg; + + prg = basename(argv[0]); + + /* Turn off getopt()'s internal error message */ + opterr = 0; + + /* Parse the cmdline */ + while ((option = getopt_long(argc, argv, "hV",long_opts,NULL)) != -1) { + switch (option) { + case 'h': + usage(prg); + return EXIT_SUCCESS; + case 'V': + printf("%s version %s\n", prg, PLAIN_VERSION); + return EXIT_SUCCESS; + case ':': + fprintf(stderr, "Missing argument for option -%c\n", + optopt); + usage(prg); + return EXIT_FAILURE; + case 0: + break; + default: + fprintf(stderr, "Wrong option -%c\n", optopt); + usage(prg); + return EXIT_FAILURE; + } + } + + if (argc > optind) { + input_img_filename = argv[optind]; + input_img_fd = open(input_img_filename, O_RDWR); + ret = fstat(input_img_fd, &input_img_file_stat); + if (ret == -1) { + fprintf(stderr, "Can't stat() on \"%s\": %s\n", + input_img_filename, strerror(errno)); + return EXIT_FAILURE; + } + + img_filesize = input_img_file_stat.st_size; + } else { + fprintf(stderr,"finame is required\n"); + exit(1); + } + + for (i = 0 ; i < img_filesize ; i += 4096) { + lseek(input_img_fd, i, SEEK_SET); + read(input_img_fd, header, sizeof(header)); + if ( UBOOT_ENV_MAGIC == header[0] ) { + printf("found magic at %x size %d\n",i,header[1]); + } else { + continue; + } + tmpdatasize = header[1]; + if (tmpdatasize > 65536) { + fprintf(stderr,"datasize > 64K not allowed\n"); + exit(1); + } + if (dataptr == NULL) { + dataptr = malloc(tmpdatasize + 4); + } else { + dataptr = realloc(dataptr,tmpdatasize + 4); + } + lseek(input_img_fd, i+8, SEEK_SET); + read(input_img_fd, dataptr, tmpdatasize + 4); + crc = crc32(0, (const unsigned char *)dataptr+4, tmpdatasize-4); + havecrc = header[2]; + if (crc == havecrc) { + printf("CRC ok\n"); + offsets[found++] = i; + datasize = tmpdatasize; + } else { + printf("CRC FAIL\n"); + } + } + + /* Check datasize and allocate the data */ + if (datasize == 0) { + fprintf(stderr, "No header found\n"); + return EXIT_FAILURE; + } + + /* + * envptr points to the beginning of the actual environment (after the + * crc and possible `redundant' byte + */ + envsize = datasize - CRC_SIZE; + envptr = dataptr + CRC_SIZE; + + /* Pad the environment with the padding byte */ + memset(envptr, padbyte, envsize); + + /* Open the input file ... */ + if (optind+1 < argc ) { + txt_filename = argv[optind+1]; + txt_fd = open(txt_filename, O_RDONLY); + if (txt_fd == -1) { + fprintf(stderr, "Can't open \"%s\": %s\n", + txt_filename, strerror(errno)); + return EXIT_FAILURE; + } + /* ... and check it */ + ret = fstat(txt_fd, &txt_file_stat); + if (ret == -1) { + fprintf(stderr, "Can't stat() on \"%s\": %s\n", + txt_filename, strerror(errno)); + return EXIT_FAILURE; + } + + filesize = txt_file_stat.st_size; + + filebuf = mmap(NULL, sizeof(*envptr) * filesize, PROT_READ, + MAP_PRIVATE, txt_fd, 0); + if (filebuf == MAP_FAILED) { + fprintf(stderr, "mmap (%zu bytes) failed: %s\n", + sizeof(*envptr) * filesize, + strerror(errno)); + fprintf(stderr, "Falling back to read()\n"); + + filebuf = malloc(sizeof(*envptr) * filesize); + ret = read(txt_fd, filebuf, sizeof(*envptr) * filesize); + if (ret != sizeof(*envptr) * filesize) { + fprintf(stderr, "Can't read the whole input file (%zu bytes): %s\n", + sizeof(*envptr) * filesize, + strerror(errno)); + + return EXIT_FAILURE; + } + } + ret = close(txt_fd); + } + + /* Parse a byte at time until reaching the file OR until the environment fills + * up. Check ep against envsize - 1 to allow for extra trailing '\0'. */ + for (fp = 0, ep = 0 ; fp < filesize && ep < envsize - 1; fp++) { + if (filebuf[fp] == '\n') { + if (fp == 0 || filebuf[fp-1] == '\n') { + /* + * Skip empty lines. + */ + continue; + } else if (filebuf[fp-1] == '\\') { + /* + * Embedded newline in a variable. + * + * The backslash was added to the envptr; rewind + * and replace it with a newline + */ + ep--; + envptr[ep++] = '\n'; + } else { + /* End of a variable */ + envptr[ep++] = '\0'; + } + } else if ((fp == 0 || filebuf[fp-1] == '\n') && (filebuf[fp] == '#' || check_excluded(&filebuf[fp],filesize-fp) != 0)) { + /* Comment or excluded, skip the line. */ + while (++fp < filesize && filebuf[fp] != '\n') + continue; + } else { + envptr[ep++] = filebuf[fp]; + } + } + /* If there are more bytes in the file still, it means the env filled up + * before parsing the whole file. Eat comments & whitespace here to see if + * there was anything meaning full left in the file, and if so, throw a error + * and exit. */ + for( ; fp < filesize; fp++ ) + { + if (filebuf[fp] == '\n') { + if (fp == 0 || filebuf[fp-1] == '\n') { + /* Ignore blank lines */ + continue; + } + } else if ((fp == 0 || filebuf[fp-1] == '\n') && filebuf[fp] == '#') { + while (++fp < filesize && filebuf[fp] != '\n') + continue; + } else { + fprintf(stderr, "The environment file is too large for the target environment storage\n"); + return EXIT_FAILURE; + } + } + /* + * Make sure there is a final '\0' + * And do it again on the next byte to mark the end of the environment. + */ + if (envptr[ep-1] != '\0') { + envptr[ep++] = '\0'; + /* + * The text file doesn't have an ending newline. We need to + * check the env size again to make sure we have room for two \0 + */ + if (ep >= envsize) { + fprintf(stderr, "The environment file is too large for the target environment storage\n"); + return EXIT_FAILURE; + } + envptr[ep] = '\0'; + } else { + envptr[ep] = '\0'; + } + + /* Computes the CRC and put it at the beginning of the data */ + crc = crc32(0, (const unsigned char *)envptr, envsize); + targetendian_crc = bigendian ? cpu_to_be32(crc) : cpu_to_le32(crc); + + memcpy(dataptr, &targetendian_crc, sizeof(targetendian_crc)); + for (i = 0 ; i < found ; i++) { + + lseek(input_img_fd, offsets[i]+8, SEEK_SET); + if (write(input_img_fd, dataptr, datasize) != + sizeof(*dataptr) * datasize) { + fprintf(stderr, "write() failed: %s\n", strerror(errno)); + return EXIT_FAILURE; + } + } + + ret = close(input_img_fd); + + return ret; +}